Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Emacs、ESS、pandoc模式和polymode从Rmd文件创建pdf?_Emacs_Knitr_R Markdown_Ess - Fatal编程技术网

如何使用Emacs、ESS、pandoc模式和polymode从Rmd文件创建pdf?

如何使用Emacs、ESS、pandoc模式和polymode从Rmd文件创建pdf?,emacs,knitr,r-markdown,ess,Emacs,Knitr,R Markdown,Ess,这是一个“经典”Rmd文件的改编,我想使用Emacs(Emacs Speak Statistics)和polymode将其编织成pdf。我找不到正确的命令来执行此操作。关于polymode的文档很少。我正在使用Emacs社会科学入门工具包 使用M-n w和M-n w设置/更换织布机。对于ESS,您可能应该使用knitr-ESSweaver,因为它使用当前的*R*过程 您可以使用中的rmarkdown::render()编织一个.Rmd文件,只需一个命令即可标记并呈现输出文件(PDF、Word、H

这是一个“经典”Rmd文件的改编,我想使用Emacs(Emacs Speak Statistics)和polymode将其编织成pdf。我找不到正确的命令来执行此操作。关于polymode的文档很少。我正在使用Emacs社会科学入门工具包


使用M-n w和M-n w设置/更换织布机。对于ESS,您可能应该使用
knitr-ESS
weaver,因为它使用当前的
*R*
过程

您可以使用中的
rmarkdown::render()
编织一个
.Rmd
文件,只需一个命令即可标记并呈现输出文件(PDF、Word、HTML等)

我不确定ESS中是否已经包含了对
rmarkdown
工作流的支持(我正尝试涉猎elisp),因此我编写了一个调用
rmarkdown::render()
,并允许自定义
rmarkdown::render()
带有前缀arg的函数调用的输入(例如,
C-u

;;spa/rmd渲染
;; 全局历史记录列表允许Emacs“记住”最后一个
;; 在minibuffer中呈现命令并建议作为建议。
(defvar rmd render history nil“spa/rmd render的历史记录列表”)
(除水疗/rmd渲染(arg)
“将当前Rmd文件呈现为PDF输出。
使用前缀arg,在minibuffer中编辑R命令“
(交互式“P”)
;生成默认的R render命令
(setq rcmd(concat“rmarkdown::render”(““缓冲区文件名””,”
“输出_dir=”../reports',”
“输出格式=‘pdf_文档’”))
;检查前缀参数
(如果arg
(项目
;使用最后一个命令作为默认值(如果不是nil)
(setq上一个历史记录(汽车rmd渲染历史记录))
(如果是上一个历史记录
(setq rcmd先前历史记录)
零)
;允许用户修改rcmd
(setq rcmd)
(从minibuffer“Run:“rcmd nil nil'rmd渲染历史记录”读取)
)
;在没有前缀arg的情况下,将默认rcmd添加到历史记录中
(setq rmd渲染历史记录(添加到历史记录“rmd渲染历史记录rcmd”))
;构建并评估shell命令
(setq命令(concat“echo\”rcmd“\”R--vanilla)
(编译命令)
(定义键多模式模式映射(kbd“C-C r”)“spa/rmd渲染)
请注意,我有一些特定的参数设置,如
output\u dir='../reports'
,但可以轻松定制elisp以满足您的需要

在init文件中,只需从
.Rmd
文件中输入
C-C-r
(或
C-u C-C-r
以不同的格式、位置等进行渲染)。该命令将打开一个新窗口,其中包含一个名为
*compilation*
的缓冲区,任何错误都将出现


这肯定可以改进,我很乐意听取建议。

文件是sb_ex.Rmd。我使用M-nw选择knitr-ESS,然后选择M-nw,但结果是一个错误:
>库(knitr);knit('sb_ex.Rmd',output='sb_ex[weaved].md')库中错误(knitr):没有名为'knitr'的包
它在Windows中不工作,但在Mac OSX中工作。唯一的问题是,当我尝试使用
M-ne
使用pandoc导出pdf时,我无法将pdf格式视为一个选项。然后,我使用pandoc模式在Emacs菜单中创建一个pdf。@sbac,
没有名为'knitr`
的包表明您应该安装这个包,在ESS
C-C-e I
中安装它,然后
library(knitr)
和u都设置好了。我有一个类似的问题,我仍然没有得到pdf或HTML。Pandoc在选项中显示,但没有输出。如果它与你一起工作,你可以更新你的文章,对这个工作流程有更多的解释,它对其他人也一定有用。@博士,你需要安装你的pandoc才能工作。如果不起作用,请转到
*polymode weave*
缓冲区。它应该显示pandoc错误,如果有的话。所以我喜欢这个概念,但它不适合我,我是一个差劲的elisp程序员。在我看来,问题在于命令是用双引号发送到R的,因此R将其解释为字符串文本。(我在窗户上)真的。报价是我机器上的问题。现在,通过编辑代码中的一行代码进行修复:
(setq命令(concat“echo”rcmd“| R--vanilla”)
对于未来的读者,如果您不需要很多定制,使用polymode的内置功能会更简单
M-n E
选择exporter,然后
M-n E
将r标记文档导出到所需格式。
---
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)
```