Я пытаюсь написать отчет, используя уценку R с выводом раздаточного материала Tufte для создания PDF-файла. Мне не удалось разместить ссылки на рисунки в тексте, используя любой из предложенных подходов. Я надеюсь, что кто-то может проиллюстрировать, как я могу это сделать. Буду признателен за любые предложения.
До сих пор я пробовал два широких подхода, описанных в этом ответ переполнения стека.
Вариант 1: базовый подход уценки с использованием \@ref(fig:chunk-label)
. Это приводит к тому, что PDF-файл имеет правильный формат в подписи к рисунку, но ссылка в тексте — @ref(fig:fig-margin).
. Смотрите изображение под скриптом:
```
---
title: "Markdown example"
date: "`r Sys.Date()`"
output:
tufte::tufte_handout:
citation_package: natbib
link-citations: yes
---
```{r setup, include=FALSE}
library(tufte)
```
```{r fig-margin, fig.cap=("MPG vs horsepower, colored by transmission."), fig.height=3.5, fig.margin=TRUE, fig.width=3.5, message=FALSE, cache=FALSE}
library(ggplot2)
mtcars2 <- mtcars
mtcars2$am <- factor(
mtcars$am, labels = c('automatic', 'manual')
)
ggplot(mtcars2, aes(hp, mpg, color = am)) +
geom_point() + geom_smooth() +
theme(legend.position = 'bottom')
```
Insert the figure reference here \@ref(fig:fig-margin).
Здесь скопировано изображение из pdf, но у меня нет точек, чтобы вставить его. Надеюсь, это видно
Я пробовал несколько вариантов формата \@ref(fig:fig-margin)
, например удаление обратной косой черты, но безрезультатно.
Вариант 2: Использование субтитров. В вариантах ответа по ссылке выше Captioner был предложен в качестве решения, и был предоставлен некоторый код.
Я реализовал эту опцию и на этот раз получил правильную встроенную ссылку, но Рисунок 1: часть подписи к рисунку была продублирована (т.е. она гласила Рисунок 1: Рисунок 1: MPG против лошадиных сил и т. д.).
Вот изображение из pdf с использованием подхода Captioner
```
---
title: "Captioner example"
date: "`r Sys.Date()`"
output:
tufte::tufte_handout:
citation_package: natbib
link-citations: yes
---
```{r setup, include=FALSE}
library(tufte)
library(captioner)
# invalidate cache when the tufte version changes
knitr::opts_chunk$set(tidy = FALSE, cache.extra = packageVersion('tufte'))
options(htmltools.dir.version = FALSE)
table_captions <- captioner::captioner()
figure_captions <- captioner::captioner(prefix="Figure.")
fig.cap <- captioner::captioner()
t.ref <- function(label){
stringr::str_extract(table_captions(label), "[^:]*")
}
f.ref <- function(label){
stringr::str_extract(figure_captions(label), "[^:]*")
}
```
```{r fig-margin, fig.cap=figure_captions("fig_one", "MPG vs horsepower, colored by transmission."), fig.height=3.5, fig.margin=TRUE, fig.width=3.5, message=FALSE, cache=FALSE}
library(ggplot2)
mtcars2 <- mtcars
mtcars2$am <- factor(
mtcars$am, labels = c('automatic', 'manual')
)
ggplot(mtcars2, aes(hp, mpg, color = am)) +
geom_point() + geom_smooth() +
theme(legend.position = 'bottom')
```
Insert experiment ref here `r f.ref("fig_one")`.
Я бы предпочел использовать только базовый подход уценки, если это возможно, но если единственный способ сделать это - использовать Captioner, было бы хорошо, если бы кто-то мог посоветовать избавиться от дублирования (я попробовал некоторые корректировки определенных функций в блоке установки, но никто не работал.
Мы будем очень признательны за любые советы. План Б, конечно, просто сделать это вручную.
Заранее спасибо.