我想从命令行编译 knitr 文档。使用 Sweave,序列
R CMD Sweave my_sweave_file.Rnw
latex my_sweave_file.tex
latex my_sweave_file.tex
dvips my_sweave_file.dvi
ps2pdf my_sweave_file.ps
构建我想要发布的最终 pdf 文件。knitr 的相应构建顺序是什么?
谢谢!
答案1
使用命令行Sweave
:
实际上,对于这样的简单文档,只需要两个步骤my_sweave_file.Rnw
:
\documentclass{article}
\begin{document}
Some text
<<RTest>>=
2+2
@
\end{document}
从命令行就足够了:
R CMD Sweave my_sweave_file.Rnw
pdflatex my_sweave_file.tex
甚至只有一个:
R CMD Sweave --pdf my_sweave_file.Rnw
如果您有交叉引用(\ref
或\cite
命令、目录、索引、词汇表等),这将不够,因此您还必须使用 .tex
适当的工具编译生成的文件并pdlatex
根据需要重新运行。请参阅自动文档编译工具如果您在编译序列中遇到一些问题。
使用命令行knitr
:
可以使用以下方法编译一份简单文档:
Rscript -e "library(knitr); knit('my_sweave_file.Rnw')"
pdflatex my_sweave_file.tex
显然,在复杂的Latex文档中,您需要添加一些如上所述的编译步骤。
无需命令行
为了完整起见,编译 LateX+R 文档的一种简单方法是直接使用 LyX 而不是 LaTeX,加载Sweave
或 Rnw(knitr)
模块,在两种情况下自动将“R Noweb”(.Rnw
)导出为 LaTeX,以及 LaTeX 文件的所有编译步骤。
另一种可能性是使用 Rstudio 编辑 .Rnw 文件,只需按下带有“编译 PDF”标签的 PDF 图标即可。值得一提的是,您还可以在此处使用 Rmarkdown 文件(.Rmd 扩展名),它提供了 markdown 的简化文本语法,但也可以转换为 LaTeX PDF。在这种情况下,编译图标的更改是通过下拉菜单“Knit”完成的,您可以在其中选择“Knit to PDF”,含义显而易见。
警告:没有 R 块选项的 MWE 选项可以使用和函数同样地进行编译 Sweave
,knit
但每个函数都有特定的块选项:某些选项不能与一起使用,knitr
并且许多knitr
选项不能与较旧的一起使用Sweave
,因此实际上最好使用knitr
。
答案2
knitr 包有一个实用程序knit2pdf
。假设您已安装 R,则 R 命令将是
# within R
knitr::knit2pdf('my_file.Rnw')
在 shell 中,这将是
$
Rscript -e "knitr::knit2pdf('my_file.Rnw')"