Knitr не компилирует PDF: "Ошибка в инструментах :: file_path_as_absolute (output_file)"

Я создал отчет в уценке и использую функцию render() для компиляции кода в PDF файл. Он работал отлично месяц назад, но когда я запускаю код сейчас, он дает мне ошибку:

Latexmk: Это латексмк, Джон Коллинз, 22 апреля 2016 года, версия: 4.45. Результат: выход /Medborgerskabstabeller99.pdf

Ошибка в инструментах :: file_path_as_absolute (output_file): файл 'output/Medborgerskabstabeller99.pdf' не существует

Команда render, которую я использую для создания PDF, выглядит так:

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

Прежде всего, "Latexmk" -message раньше не появлялся, когда работал код.

Во-вторых, я не знаю, почему в нем говорится, что "Medborgerskabstabeller99.pdf" не существует, когда сказано выше, что он просто создал файл.

Любые предложения по этой проблеме будут высоко оценены!

Ответы

Ответ 1

Лучшим решением является использование 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

Ответ 2

У меня была похожая проблема. После поиска в интернете я нашел решение в сообществе r studio

Кажется, ошибка связана с версией 1.9 rmarkdown, поэтому решение - вернуться к версии 1.8.

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

После переустановки, когда вы попытаетесь снова связать, вероятно, вам будет предложено установить какой-то пакет от Miktex. Если у вас есть какие-либо проблемы, проверьте правильность зеркала. Надеюсь это поможет.

Ответ 3

Тем временем проблема, кажется, исправлена в версии для разработки 1.10.11:

devtools::install_github('rstudio/rmarkdown')

Ответ 4

Просто комментарий к выходу вопрос, как я застрял с этим, тоже: outfile должен быть абсолютный путь. Я думаю, что dir.exists() выглядит в локальном рабочем каталоге. Использование ".\\" в начале помогло в моем случае. В paste0(".\\",outfile,".pdf") это будет использовать paste0(".\\",outfile,".pdf").

Ответ 5

Если вы используете MikTex, возможно, вам не хватает некоторых пакетов (установлены базовые пакеты Miktex). Просто скомпилируйте ваш текстовый файл, чтобы найти недостающие пакеты (ошибки компиляции) и установить их. Тогда свяжите свой документ RMD, и это должно работать.