Рисунок перекрестной ссылки в отдельном файле Rmarkdown (PDF)

Я работаю над проектом с двумя отдельными файлами .Rmd, которые являются частью одного проекта. Один файл содержит в основном текст и уравнения, а другой файл содержит рисунки/графики. Можно ли сопоставить рисунки из второго файла с первым .Rmd файлом?

File_1.Rmd

Следующая формула произвела революцию в автомобилестроении. Он предсказывает пробег на галлон автомобиля в зависимости от его веса.

$$
mpg = f(wt)
$$

Формула показана на рисунке \@ref(fig:File_2.Rmd:plot).

File_2.Rmd

```{r plot}
ggplot(mtcars, aes(wt, mpg)) +
geom_point()
```

Вывод для обоих файлов bookdown::pdf_document2.


person SavedByJESUS    schedule 15.07.2018    source источник


Ответы (1)


Да, это возможно.

Чтобы это работало, вы должны использовать метку фрагмента и установить заголовок рисунка, используя параметр фрагмента fig.cap (например, ```{r foo, fig.cap = "some title"}). Это добавит заголовок и метку к среде рисунка в документе LaTeX, который используется для создания вывода PDF. Метка этой среды рисунка будет меткой фрагмента.

В ссылке необходимо использовать префикс fig. Обратите внимание, что нет необходимости включать в этикетку имя файла .Rmd, содержащего рисунок, на который вы ссылаетесь: достаточно \@ref(fig:foo).

Используя ваш пример, должно работать следующее:

Файл_1.Rmd

Следующая формула произвела революцию в автомобилестроении. Он предсказывает пробег на галлон автомобиля в зависимости от его веса.

$$
mpg = f(wt)
$$

Формула показана на рисунке \@ref(fig:plot).

Файл_2.Rmd

```{r plot, fig.cap = "some title"}
ggplot(mtcars, aes(wt, mpg)) +
geom_point()
```

Более подробное объяснение см. в документации пакета bookdown.

person Martin C. Arnold    schedule 16.07.2018
comment
Я действительно знаю, как работают перекрестные ссылки. Но мне кажется, что вы сделали перекрестную ссылку на график, который находится в том же .Rmd файле, а не в отдельном. Или я что-то упускаю? - person SavedByJESUS; 17.07.2018
comment
Именно так я постоянно делаю перекрестные ссылки в своих проектах bookdown с несколькими .Rmd файлами, и это работает. Возможно, у нас разное понимание термина отдельный в этом контексте? В моем примере File_1.Rmd включает заголовок YAML вместе с кодом примера и ссылкой на график в File_2.Rmd, отдельном документе, принадлежащем тому же проекту bookdown. - person Martin C. Arnold; 17.07.2018
comment
Я думаю, чего мне не хватает в моей работе, так это создания проекта bookdown. Я буду работать над этим. - person SavedByJESUS; 18.07.2018
comment
Меня тоже смущает этот ответ. Где вы указали в File_1.Rmd, что фрагмент plot должен быть найден в File_2.Rmd? - person tellis; 19.07.2018
comment
Как указано в моем ответе, я этого не делаю, потому что в этом нет необходимости. bookdown объединяет вывод всех .Rmd файлов перед созданием .tex документа (который затем используется для создания PDF-файла). - person Martin C. Arnold; 19.07.2018