knitr / rmarkdown / Latex: как сделать перекрестные ссылки на рисунки и таблицы в 2 разных файлах pdf? - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь написать научную статью и связанные с ней дополнительные материалы полностью на RStudio с помощью rmarkdown.

Кажется очевидным, что книга - это способ перейти к перекрестной ссылке между файлами (https://stackoverflow.com/a/38884378/576684), но я также хотел бы иметь возможность ссылаться на цифры, полученные в одном файле PDF, в другом документе.

Хотя мой латекс со временем сильно заржавел, я думаю, что этого можно достичь следующим образом:

  1. скомпилируйте текст статьи и текст SuppMat в первый раз, используя rmarkdown :: render ()
  2. , скомпилируйте эти файлы tex из командной строки, чтобы сохранить соответствующий файл .aux с их ссылками(отсутствующие ссылки не будут решены в это время)
  3. перекомпилировать 2 текстовых файла из командной строки в другой раз, где все ссылки теперь должны быть разрешены

Это разумный способчтобы сделать это? я пропускаю что-то более простое? В любом случае, это требует:

  • различная нумерация цифр в каждом файле PDFile (закрывается https://stackoverflow.com/a/51337664/576684)
  • , чтобы rmarkdown не мог уничтожить файлы .aux (кажется, что pandoc не позволяет этого, поэтому необходимо создать файл aux с использованием автономного латекса)
  • указать латексу использовать дополнительный файл .aux, если он найден (возможно, используя header-includes: в заголовке YAML).как мне этого добиться?

Большое спасибо за помощь!

1 Ответ

0 голосов
/ 27 сентября 2018

Оказывается, что пакет xr - это один из способов: https://texblog.org/2016/08/23/adding-references-from-an-external-file/

, поэтому он работает от R:

rmarkdown::render("myarticle_ms.Rmd", 
                  bookdown::pdf_book(base_format=rticles::plos_article),
                  clean=FALSE)

rmarkdown::render("myarticle_SM.Rmd", 
                  bookdown::pdf_book(base_format=rticles::plos_article),
                  clean=FALSE)

tinytex::pdflatex("myarticle_ms.tex", clean=FALSE)
tinytex::pdflatex("myarticle_SM.tex", clean=FALSE)

tinytex::pdflatex("myarticle_ms.tex")
tinytex::pdflatex("myarticle_SM.tex")

со следующим в заголовке YAML myarticle_ms.Rmd (и соответствующий заголовок файла SuppMat):

header-includes:
  \usepackage{xr} \externaldocument{myarticle_SM}

Надеюсь, что это облегчит жизнь нескольким другим:)

...