如果按下RStudio中“Rnw”文件中的“编译PDF”按钮,执行的命令是什么?

时间:2017-04-11 08:36:39

标签: r rstudio knitr sweave

当我按下我自己的R脚本在RStudio中的.Rnw文件上按编译PDF 按钮时,我想再次复制正在发生的事情。

例如,我使用File>在RStudio中创建一个新的.Rnw文件。新文件> R Sweave。它看起来像这样:

\documentclass{article}

\begin{document}
\SweaveOpts{concordance=TRUE}

<<echo=F, results=tex>>=
library(xtable)
xtable(mtcars)
@

\end{document}

我插入了一个带有 alt + cmd + i 的块,并使用自动完成功能来设置块选项。因此我假设我使用默认设置做了所有事情,因为RStudio认为它是。当我按编译PDF 时,一切都可以正常工作。但是当我执行时:

knitr::knit2pdf("Sweave-test.Rnw")

我收到错误“看来你正在使用特定于Sweave的语法”。因此,还需要额外的步骤。

到目前为止我想出的是:

library(knitr)
tempfile1 <- tempfile(fileext=".Rnw")
Sweave2knitr(file = "input.Rnw", output = tempfile1)
tempfile2 <- tempfile(fileext=".tex")
knit(tempfile1, output=tempfile2)
tools::texi2pdf(tempfile2, clean=T)
system(paste("open", sub(".tex", ".pdf", basename(tempfile2))))

(我认为最后一行是OSX特定的。)

我很想知道RStudio究竟做了什么。我查看了RStudio github page,但不知道在哪里找到命令。其他Stackoverlow问题显示有轻微的differences between what the button does and knit2pdf。似乎问题是asked over and over again,也与 Knit Html 按钮有关。它可能使用knitr包中的函数,markdownrmarkdown包,来自texi2pdf包的tools,来自Sweave的{​​{1}} {1}}包或utils。我不知道......

相关问题(所有人都得到了一些相当含糊的答案):

目前我正在使用RStudio 1.0.136。

1 个答案:

答案 0 :(得分:0)

我怀疑将Rnw文件转换为tex文件然后调用pdflatex.exe将其从tex文件转换为pdf文件只是Sweave。

Sweave("Sweave-test.Rnw")
system("pdflatex.exe Sweave-test.tex")

如果您未找到File Sweave.sty,则需要在MiKTeX选项中添加此文件的路径,请参阅here