Сохранять вспомогательные файлы TeX при рендеринге документа rmarkdown

#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 -> Очистить вспомогательный вывод после компиляции не помогает.

Я знаю два варианта обхода этого:

  1. Скомпилируйте файл tex вручную после рендеринга pdf.

  2. Напишите 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: