当我按下我自己的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
包中的函数,markdown
,rmarkdown
包,来自texi2pdf
包的tools
,来自Sweave
的{{1}} {1}}包或utils
。我不知道......
相关问题(所有人都得到了一些相当含糊的答案):
目前我正在使用RStudio 1.0.136。
答案 0 :(得分:0)
我怀疑将Rnw文件转换为tex文件然后调用pdflatex.exe将其从tex文件转换为pdf文件只是Sweave。
Sweave("Sweave-test.Rnw")
system("pdflatex.exe Sweave-test.tex")
如果您未找到File Sweave.sty,则需要在MiKTeX选项中添加此文件的路径,请参阅here。