【问题标题】:knit2pdf(): knit and latex passesknit2pdf():针织和乳胶通行证
【发布时间】:2014-02-24 22:57:57
【问题描述】:

我正在使用knit2pdf("book.Rnw", quiet=TRUE) 来编译一个书籍项目 工作室。编织步骤需要很长时间(我还没有使用缓存),当 有新的参考资料、数字、交叉参考资料等。它需要几个 解决它们,即使 .Rnw 文件没有更改。

我想要的是 knit2pdf 的等效或扩展,它允许 knit=FALSE 禁止重新生成 .tex 文件,或者 一个选项latex.passes= 请求额外运行tools::texi2pdf

我查看了 knit2pdf 中的代码,它有点太不透明,无法允许 此功能的简单补丁。

【问题讨论】:

  • 如何在不更改 Rnw 文件的情况下添加新引用? texi2pdf 应该根据需要自动运行多次以整理所有引用。你能更详细地描述你的工作流程吗?这里发生了一些奇怪的事情。

标签: r latex knitr rstudio


【解决方案1】:

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"))
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多