knit2pdf():针织和乳胶通过

时间:2014-02-24 22:57:58

标签: r latex knitr rstudio

我正在使用knit2pdf("book.Rnw", quiet=TRUE)来编译一个图书项目 RStudio。编织步骤需要很长时间(我还没有使用缓存),以及什么时候 有新的参考,数字,交叉引用等,它需要几个 传递以解决它们,即使.Rnw文件没有更改。

我想要的是knit2pdf的等效或扩展,它允许 要么knit=FALSE要么禁止再生.tex文件,要么 选项latex.passes=以请求tools::texi2pdf的其他运行。

我查看了knit2pdf中的代码,并且允许它有点太不透明 这个功能的简单补丁。

1 个答案:

答案 0 :(得分:0)

所有knit2pdf都会生成一个.tex文件,然后调用tools:texi2pdf。如果您正在寻找首先生成.tex文件的knit2pdf版本,那么它就是tools::texi2pdf

使用stringr::str_replace,我做了类似的事情并且发现它已经足够了:

knit2pdf_mod <- function(rnw_file) {
    knit2pdf(rnw_file, compiler = "xelatex")
    texi2pdf(file = str_replace(rnw_file, pattern = "Rnw", replacement = "tex"))
}

您可以输入一个for循环,以便根据需要重复texi2pdf步骤。

knit2pdf_mod <- function(rnw_file, latex.passes = 1) {
    knit2pdf(rnw_file, compiler = "xelatex")
    for (i in 1:latex.passes) {
        texi2pdf(file = str_replace(rnw_file, pattern = "Rnw", replacement = "tex"))
    }
}