我一直在使用knitr来生成一些非常复杂的PDF。在我的一台机器上,knit2pdf开始引起我的问题,我无法弄清楚原因。 knit2pdf继续在我的其他机器上工作。
我的典型设置是:
test.Rnw
\documentclass{article}
\begin{document}
This is a test
\end{document}
R命令
knit2pdf(input = "latex/test.Rnw", output = 'latex/knit2pdf', clean = TRUE)
但是,我收到以下错误消息:
knit2pdf(input =“latex / test2.Rnw”,output ='latex / knit2pdf',clean = TRUE)
处理文件:latex / test2.Rnw
| ................................................. ................ | 没有R代码的100%普通文本输出文件:latex / knit2pdf
[1]“latex / knit2pdf.pdf”警告信息:运行命令 '“C:\ PROGRA~1 \ MIKTEX~1.9 \ miktex \ bin \ x64 \ texify.exe”--quiet --pdf “knit2pdf” - max-iterations = 20 -I “C:/PROGRA~1/R/R-33~1.2/share/texmf/tex/latex” - 我 “C:/PROGRA~1/R/R-33~1.2/share/texmf/bibtex/bst”'状态为1
并且knit2pdf.pdf的内容是:
article [] graphicx [] color fgcolorrgb0.345,0.345,0.345 [1] [RGB] 0.686,0.059,0.5691 [1] [RGB] 0.192,0.494,0.81 [1] [RGB] 0.678,0.584,0.6861 [1] [RGB] 0,0,01 [1] [RGB] 0.345,0.345,0.3451 [1] [RGB] 0.1framed kframetotalleftmargin @setminipage @ end @ of @ kframe shadecolorrgb.97, .97,.97 messagecolorrgb0,0,0 warningcolorrgb1,0,1 errorcolorrgb1, 0,0 knitrout alltt upquote.styupquote文件这是一个测试
我已经设法获得了我需要的输出(使用How to create multiple PDFs with different content from a single data frame?中的示例),但工作量远远超过调用knit2pdf。
filename <- "texi2pdf"
f_tex <- paste0("latex/", filename, ".tex")
f_pdf <- paste0("latex/", filename, ".pdf")
knit("latex/test.Rnw", output = f_tex)
tools::texi2pdf(file = f_tex, clean = TRUE, quiet = FALSE)
file.rename(from = paste0(filename, ".pdf"), to = f_pdf)
在这种情况下,PDF输出(texi2pdf.pdf)简单,正确,
这是一个测试
我正在运行R 3.3.2并且所有软件包都是最新的。
答案 0 :(得分:1)
Yihui Xie static pattern rule概述的解决方案是使用'.tex'附加输出文件
即
knit2pdf(input = "latex/test.Rnw", output = 'latex/knit2pdf.tex', clean = TRUE)
我正在运行knitr v1.11,它不需要这个,但是后来的版本会这样做。