#r #rstudio #r-markdown #knitr #tinytex
#r #rstudio #r-markdown #knitr #tinytex
Вопрос:
Я рендерю два документа, которые содержат перекрестные ссылки на элементы друг в друге. Для этого я использую пакет LaTeX zref
.
Для zref
работы ему необходим *.aux
файл документов, которые создаются при вызове pdflatex
.
К сожалению, при использовании RStudio и его базового подхода к рендерингу документа (кнопка вязать, Cmd Shift K или rmarkdown::render()
) эти файлы будут удалены после успешной компиляции.
Снятие флажка с глобальной опции Tools -> Global Options -> Sweave -> Очистить вспомогательный вывод после компиляции не помогает.
Я знаю два варианта обхода этого:
-
Скомпилируйте файл tex вручную после рендеринга pdf.
-
Напишите makefile, который это делает.
Но есть ли другой вариант, о котором я не знаю?
Ответ №1:
rmarkdown::render()
в конечном итоге вызывает tinytex::latexmk()
компиляцию промежуточного .tex
файла в .pdf
. Для сохранения вспомогательных файлов вам необходимо tinytex::latexmk(..., clean = FALSE)
. Одним из способов настройки clean = FALSE
является глобальная опция options(tinytex.clean = FALSE)
. Вы можете установить это либо в своем .Rprofile
, либо в фрагменте кода вашего документа Rmd.
Упомянутый вами параметр RStudio предназначен только для документов Sweave ( .Rnw
).
Комментарии:
1. Чувак, я не могу поверить, что это работает. Спасибо! Из-за всего, что происходит вокруг моего RMD (
pandoc
,rmarkdown
,knitr
,tinytex
), я иногда не вижу очевидного.2. Будет ли тот же подход работать для руководства, которое создается с использованием devtools? Я не могу найти файлы tex D: