Knitr wont compile PDF: "Error in tools::file_path_as_absolute(output_file)"

21,041

Solution 1

A better solution appears to be to use tinytex.

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

If you have to use MikTex and have it installed already, open the MikTex console and change the missing package setting to:

Always install missing packages on the fly

If you have not installed MikTex yet then on installation make sure to choose:

Install missing packages: Yes

When I originally installed I chose Ask me first and it would fail. I have tried both changing the settings of MikTex, as well as uninstalled it and just settled for tinytex which was a bit more lightweight for my needs.

The original thread with solution near the bottom: https://github.com/rstudio/rmarkdown/issues/1285

Solution 2

I had similar problem. After searching in the internet, I found a solution in community r studio

It seems the bug is related with 1.9 version of rmarkdown, so the solution is to return to 1.8 version

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

After reinstalling, when you try to knit again, probably you will be asked to install some package from Miktex. If you have any problem, check for a proper mirror. Hope this helps.

Share:
21,041
Emilie Kirk
Author by

Emilie Kirk

Updated on April 10, 2020

Comments

  • Emilie Kirk
    Emilie Kirk about 4 years

    I have created a report in markdown and use the function render() to compile the code into a PDF. It worked fine a month ago, but when I run the code now, it gives me an error:

    Latexmk: This is Latexmk, John Collins, 22 April 2016, version: 4.45. Output created: output/Medborgerskabstabeller99.pdf

    Error in tools::file_path_as_absolute(output_file) : file 'output/Medborgerskabstabeller99.pdf' does not exist

    The render command I use to create the PDF looks like this:

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

    First of all, the "Latexmk"-message before did not appear when the code worked.

    Second, I have no clue why it says that "Medborgerskabstabeller99.pdf" doesn't exist, when it says above that it just created the file.

    Any suggestions on the problem will be highly appreciated!