2014-02-24 40 views
0

我使用knit2pdf("book.Rnw", quiet=TRUE)來編譯 RStudio下的圖書項目。編織步驟需要很長時間(我還沒有使用緩存),並且當有新的引用,圖形,交叉引用等時,需要幾個 通過來解決它們,即使.Rnw文件沒有「沒有改變。knit2pdf():針織和乳膠通票

我想是同等或knit2pdf允許 要麼knit=FALSE打壓.tex文件的再生,或 選項latex.passes=要求的tools::texi2pdf額外運行的擴展。

我已經看過knit2pdf中的代碼,並且允許 爲此功能提供一個簡單補丁有點太不透明。

+0

如何在不更改Rnw文件的情況下添加新引用? texi2pdf應根據需要自動運行多次,以整理所有參考。你能更詳細地描述你的工作流程嗎?一些奇怪的事情正在發生。 – Tyler

回答

0

所有knit2pdf確實生成一個.tex文件,然後調用tools:texi2pdf。如果您正在尋找版本knit2pdf不是首先生成一個.tex文件,它確切地是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")) 
    } 
}