ОБНОВИТЬ
В СЗС 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:
(add-hook 'ess-noweb-mode-hook 'my-noweb-hook)
(defun my-noweb-hook ()
(define-key ess-noweb-mode-prefix-map "b"
#'(lambda () (interactive) (TeX-command "BibTeX" 'TeX-master-file)))
(define-key ess-noweb-mode-prefix-map "P"
#'(lambda () (interactive)
(ess-swv-PDF "texi2pdf"))))
Как только это будет сделано, M-n s
свяжет ваш документ, M-n b
скомпонует его и M-n P
обработает с помощью pdflatex.
Обратите внимание, что у Emacs нет простого способа узнать, когда вязание завершено, поэтому вы не можете настроить его на knit & latex за один шаг; Вы должны вручную запустить pdflatex после того, как увидите, что вязание закончено.
Учитывая несколько шагов здесь - Rnw -> Latex -> PDF, я не думаю, что вы можете заставить Synctex сохранить ваши pdf и Rnw файлы для совместной прокрутки, но я был бы рад, если бы я оказался неправ.
Что касается расположения окон, я никогда не смогу заставить их оставаться там, где я хочу. Поэтому, чтобы компенсировать это, я стал достаточно искусным в перетасовке окон и буферов, когда они мне нужны;)
Yihui разместил короткое видео на сайте knitr, демонстрирующее некоторые из них.
rmarkdown::render
(черезshell-command
) на текущемbuffer-file-name
, которая обновит pdf в другом окне.