RStudio обеспечивает способ создания PDF-файла из источника LaTeX + R с помощью Knitr одним нажатием кнопки. Это отлично подходит для проведения воспроизводимых исследований. И я пытаюсь настроить мой Emacs для:
- в левом буфере код LaTeX + R способом Knitr;
- в правом буфере предварительный просмотр PDF;
- одна комбинация клавиш для компиляции.
Если это возможно: как мне это настроить, пожалуйста?
(ESS работает нормально, но я не знаю, как настроить Knitr-way и одну кнопку для компиляции.)
rmarkdown::render
(черезshell-command
) на текущемbuffer-file-name
, которая обновит pdf в другом окне.Ответы:
ОБНОВИТЬ
В СЗС 19.04, то
ess-noweb
иess-swv
библиотеки устарели:Следовательно, мой оригинальный ответ (ниже) больше не применяется. Функции, которые эти библиотеки использовали для обеспечения, теперь предоставляются в режиме polymode, а конфигурация стала проще. Чтобы получить минимальную поддержку, все, что вам нужно, это установить пакеты
ess
,polymode
иpoly-R
(из MELPA или из исходного кода, если вы так работаете).Это оно! Теперь, если вы откроете
Rnw
файл, вы должны увидетьPM-Rnw
флаг на моделине, иPolymode
вверху будет меню. Вы можете ткать свой файл в.tex
файл черезM-n w
(или в меню ПОЛИМОДЫ), и экспортировать его.pdf
черезM-n e
(или в меню). Вам будет предложено для экспортера в первый раз, когда вы это сделаете; Я только что выбралknitr
.ПРИМЕЧАНИЕ: export (
M-n e
) автоматически запускает ваш код, генерирует PDF-файл и отображает его - все сразу. Мне не удалось получить такое поведение «одним щелчком» со старой версией, описанной ниже.Сгенерированные файлы будут иметь слово
-woven
и-exported
добавлены. Если вам это не нравится, вы можете настроить параметрыpolymode-weaver-output-file-format
иpolymode-exporter-output-file-format
.Процесс аналогичен для файлов RMarkdown (
.Rmd
).Полная информация приведена в руководстве по использованию полимодов.
Оригинальный ответ (устарел после ESS 19.04)
Три переменные должны быть установлены:
ess-swv-pdflatex-commands
, в группе настройкиess-sweave
должна быть «pdflatex» в качестве первой команды. т.е. это должно выглядеть примерно так:("pdflatex" "texi2pdf" "make")
ess-swv-processor
в группе настройкиess-R
должно быть значение"knitr"
ess-pdf-viewer-pref
в группе настройкиess
на"emacsclient"
. Предполагается, что вы используете сервер emacs или emacs работает в режиме --daemon. Вам также следует использовать pdf-инструменты, если это вообще возможно, так как это гораздо предпочтительнее встроенного средства просмотра PDF Emacs.Я использую ловушку, чтобы добавить две комбинации клавиш для вызова BibTeX и texi2pdf:
Как только это будет сделано,
M-n s
свяжет ваш документ,M-n b
скомпонует его иM-n P
обработает с помощью pdflatex.Обратите внимание, что у Emacs нет простого способа узнать, когда вязание завершено, поэтому вы не можете настроить его на knit & latex за один шаг; Вы должны вручную запустить pdflatex после того, как увидите, что вязание закончено.
Учитывая несколько шагов здесь - Rnw -> Latex -> PDF, я не думаю, что вы можете заставить Synctex сохранить ваши pdf и Rnw файлы для совместной прокрутки, но я был бы рад, если бы я оказался неправ.
Что касается расположения окон, я никогда не смогу заставить их оставаться там, где я хочу. Поэтому, чтобы компенсировать это, я стал достаточно искусным в перетасовке окон и буферов, когда они мне нужны;)
Yihui разместил короткое видео на сайте knitr, демонстрирующее некоторые из них.
источник
Это комплексное решение. Это создаст и отобразит PDF от Rnw .
В частности это будет:
Процедура пытается завершиться с информативными сообщениями, если один из вышеупомянутых шагов терпит неудачу.
Экземпляр R будет открыт, если необходимо, или текущий используется, чтобы показать процесс вязания.
Вывод LaTeX отправляется в буфер «TeX-output», который также появляется в случае ошибки компиляции.
использование
Meta- x
knit-me
создавать и просматривать PDF.Meta- x
knit-me-clear
удалить промежуточные файлы LaTeX иknit-me
.Библиография требует пакет "biblatex", то есть:
Имя bib-движка (например
bibtex
,biber
) получается при разбореbackend
ключевого слова.\addbibresource
выполняется анализ команды для получения файла библиографии: если файлfoo.bib
новее, чем файл TeX, запускается механизм нагрудника. В связи с этим учитывается только первая\addbibresource
команда, если их много.Настроить
Чтобы просмотреть PDF-файл, установите путь к исполняемому файлу в программе:
Возможно, используйте программу просмотра, такую как SumatraPDF , которая автоматически обновляет PDF при перекомпиляции и не блокирует открытый файл, предотвращая новые компиляции.
Движок LaTeX по умолчанию - это
pdflatex
(предполагается в текущем пути). Настроить с:Конечно, вы можете привязать
knit-me
иknit-me-clear
некоторые удобные ключи.Примечания
Протестировано в Windows MiKTeX, с
biber
иbibtex8
бэкэндами и GNU Emacs 25.1.1.Элисп код
источник