Как создать PDF из файла Rmd, используя Emacs, ESS, pandoc-mode и polymode?
Это адаптация "классического" Rmd-файла, который я хочу связать в формате PDF, используя Emacs (Emacs Speak Statistics) и полимод. Я не могу найти правильные команды для этого. Существует немного документации о многомоде. Я использую Emacs Starter Kit для общественных наук.
---
title: "Untitled"
author: "SB"
date: "Wednesday, February 04, 2015"
output: pdf_document
---
You can embed an R code chunk like this:
```{r}
summary(cars)
```
You can also embed plots, for example:
```{r, echo=FALSE}
plot(cars)
```
2 ответа
Как говорит доктор, используйте Mn w и Mn W, чтобы установить / изменить ткача. С ESS вы, вероятно, должны использовать knitr-ESS
ткач, как он использует ток *R*
процесс.
Ты можешь использовать rmarkdown::render()
из пакета rmarkdown вязать .Rmd
файл для уценки и визуализации выходного файла (PDF, Word, HTML и т. д.) с помощью одной команды!
Я не был уверен, если поддержка rmarkdown
рабочий процесс уже был включен в ESS (и я пытаюсь побаловать себя в elisp), поэтому я написал функцию, которая вызывает rmarkdown::render()
и позволяет настроить входы rmarkdown::render()
вызов функции с префиксом arg (например, C-u
).
;; spa/rmd-render
;; Global history list allows Emacs to "remember" the last
;; render commands and propose as suggestions in the minibuffer.
(defvar rmd-render-history nil "History list for spa/rmd-render.")
(defun spa/rmd-render (arg)
"Render the current Rmd file to PDF output.
With a prefix arg, edit the R command in the minibuffer"
(interactive "P")
;; Build the default R render command
(setq rcmd (concat "rmarkdown::render('" buffer-file-name "',"
"output_dir = '../reports',"
"output_format = 'pdf_document')"))
;; Check for prefix argument
(if arg
(progn
;; Use last command as the default (if non-nil)
(setq prev-history (car rmd-render-history))
(if prev-history
(setq rcmd prev-history)
nil)
;; Allow the user to modify rcmd
(setq rcmd
(read-from-minibuffer "Run: " rcmd nil nil 'rmd-render-history))
)
;; With no prefix arg, add default rcmd to history
(setq rmd-render-history (add-to-history 'rmd-render-history rcmd)))
;; Build and evaluate the shell command
(setq command (concat "echo \"" rcmd "\" | R --vanilla"))
(compile command))
(define-key polymode-mode-map (kbd "C-c r") 'spa/rmd-render)
Обратите внимание, что у меня есть некоторые конкретные настройки параметров, такие как output_dir = '../reports'
но elisp можно легко настроить в соответствии с вашими потребностями.
С этим в вашем файле инициализации, вам нужно всего лишь ввести C-c r
изнутри вашего .Rmd
файл (или C-u C-c r
для рендеринга в другой формат, местоположение и т. д.). Команда откроет новое окно с буфером *compilation*
где любые ошибки появятся.
Это, безусловно, можно улучшить, и я хотел бы услышать предложения.