Что именно делает R CMD Sweave --pdf?

Я заметил это в изменениях R 2.14:

R CMD Sweave теперь имеет опцию --pdf для создания PDF-версии обработанного документа Sweave.

Попробовав это, я заметил, что он не только выполнил pdfLaTeX в полученном tex, но и правильно включил ссылки bibTeX и впоследствии очистился. Похоже, очень хороший способ использования Sweave (не говоря уже о том, как легко теперь реализовать всю процедуру в редакторах).

Но что именно это сейчас работает? Я больше не мог найти подробностей. Кажется, Sweave → pdflatex → bibtex → pdflatex → pdflatex не менее?

Ответ 1

Спасибо за вопрос. Я задавался вопросом о коде, который стоит за этим "автоматическим" процессом.

R CMD Sweave --pdf в конечном итоге вызывает tools::texi2dvi, который:

Запустите [s] латекс и бибтекс до тех пор, пока все перекрестные ссылки не будут разрешены и создайте [s] либо файл dvi, либо файл PDF.

(Подробнее см. здесь texi2dvi).

Вот цепочка событий, приводимых в движение вызовом R CMD Sweave --pdf:

  • В исходном файле rcmdfn.c содержится код, который инструктирует R CMD Sweave выполнить utils:::.Sweave() --args" через Rterm.exe.

  • Если --pdf установлено, utils:::.Sweave() вызывает tools::texi2pdf() для обработки файла Sweave.

  • texi2pdf() в свою очередь вызывает tools::texi2dvi().

  • Наконец, texi2dvi() просматривает среду, чтобы узнать, какие инструменты доступны для нее, и выполняет ли описанную работу файл справки, связанный выше.

Ответ 2

Вы можете попытаться выполнить преобразование из Rnw в pdf вручную, и посмотрите, сколько раз соответствующие шаги необходимы для получения того же результата, что и R CMD Sweave.

Ответ 3

Я не знаю много о внутренних работах, но я знаю, что версия RStudio для разработки позволит вам выбирать между knitr и Sweave, а также между pdflatex и xelatex и дает bibtex как вариант.