如何从命令行构建 Knitr 文档

如何从命令行构建 Knitr 文档

我想从命令行编译 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,加载SweaveRnw(knitr)模块,在两种情况下自动将“R Noweb”(.Rnw)导出为 LaTeX,以及 LaTeX 文件的所有编译步骤。

另一种可能性是使用 Rstudio 编辑 .Rnw 文件,只需按下带有“编译 PDF”标签的 PDF 图标即可。值得一提的是,您还可以在此处使用 Rmarkdown 文件(.Rmd 扩展名),它提供了 markdown 的简化文本语法,但也可以转换为 LaTeX PDF。在这种情况下,编译图标的更改是通过下拉菜单“Knit”完成的,您可以在其中选择“Knit to PDF”,含义显而易见。

警告:没有 R 块选项的 MWE 选项可以使用和函数同样地进行编译 Sweaveknit但每个函数都有特定的块选项:某些选项不能与一起使用,knitr并且许多knitr选项不能与较旧的一起使用Sweave,因此实际上最好使用knitr

答案2

knitr 包有一个实用程序knit2pdf。假设您已安装 R,则 R 命令将是

# within R
knitr::knit2pdf('my_file.Rnw')

在 shell 中,这将是

$
Rscript -e "knitr::knit2pdf('my_file.Rnw')"

相关内容