Knitr不会编译PDF:“工具中的错误:: file_path_as_absolute(output_file)”

时间:2018-01-12 10:22:27

标签: r pdf latex knitr r-markdown

我在markdown中创建了一个报告,并使用函数render()将代码编译成PDF。它在一个月前运行良好,但是当我现在运行代码时,它给了我一个错误:

  

Latexmk:这是Latexmk,John Collins,2016年4月22日,版本:4.45。   创建输出:output / Medborgerskabstabeller99.pdf

     

工具中的错误:: file_path_as_absolute(output_file):   文件'output / Medborgerskabstabeller99.pdf'不存在

我用来创建PDF的渲染命令如下所示:

outfile <- file.path("output",paste0("Medborgerskabstabeller99"))
render(input = "Medborgerskabstabeller.Rmd",
       encoding = "UTF-8",
       output_file = paste0(outfile,".pdf"))

首先,代码工作时,“Latexmk”消息没有出现。

其次,我不知道为什么它说“Medborgerskabstabeller99.pdf”不存在,当它在上面说它刚刚创建了文件时。

对此问题的任何建议都将受到高度赞赏!

5 个答案:

答案 0 :(得分:25)

更好的解决方案似乎是使用tinytex。

install.packages('tinytex')
tinytex::install_tinytex()

如果您必须使用MikTex并已安装它,请打开MikTex控制台并将缺少的包装设置更改为:

Always install missing packages on the fly

如果您尚未安装MikTex,那么在安装时请务必选择:

Install missing packages: Yes

当我最初安装时,我选择了Ask me first,但它会失败。我已经尝试过更改MikTex的设置,以及卸载它,只是为了满足我的需求而更加轻巧的tinytex。

靠近底部的原始线程: https://github.com/rstudio/rmarkdown/issues/1285

答案 1 :(得分:16)

我有类似的问题。在互联网上搜索后,我在community r studio

中找到了解决方案

似乎这个bug与r​​markdown的1.9版本有关,所以解决方法是返回1.8版本

install.packages("devtools")
library(devtools)
install_version("rmarkdown",version=1.8)

重新安装后,当您再次尝试编织时,可能会要求您安装Miktex的一些软件包。如果您有任何问题,请检查是否有合适的镜子。希望这会有所帮助。

答案 2 :(得分:0)

同时,问题似乎在开发版1.10.11中得到修复:

devtools::install_github('rstudio/rmarkdown')

答案 3 :(得分:0)

只需对输出问题进行评论,因为我也对此感到困惑: outfile必须是绝对路径。我认为dir.exists()在本地工作目录中。在我的情况下,在前面使用".\\"有帮助。在您的计算机中,它将使用paste0(".\\",outfile,".pdf")

答案 4 :(得分:0)

如果使用MikTex,您可能会缺少一些软件包(已安装基本的Miktex软件包)。只需编译您的tex文件以找出丢失的软件包(编译错误)并安装它们。然后编织您的rmd文档,它应该可以工作。