R tikzDevice: не удается найти LaTeX

Я не могу получить пакет R tikzDevice к бегу. Я установил MiKTex, и у меня нет проблем с созданием таких документов через TeXworks.

К сожалению, экспорт графиков через tikzDevice не работает, например, следующий код отсюда выдает сообщение об ошибке:

library(tikzDevice)
library(ggplot2)
#For some reason, Rstudio needs to know the time zone...
options(tz="CA")
#Dummy data for the plot
y <- exp(seq(1,10,.1))
x <- 1:length(y)
data <- data.frame(x = x, y = y)

#Create a .tex file that will contain your plot as vectors
#You need to set the size of your plot here, if you do it in LaTeX, 
#font consistency with the rest of the document will be lost
tikz(file = "plot_test.tex", width = 5, height = 5)
#Simple plot of the dummy data using LaTeX elements
plot <- ggplot(data, aes(x = x, y = y)) + 
    geom_line() +
    #Space does not appear after Latex
    ggtitle( paste("Fancy \\LaTeX ", "\\hspace{0.01cm} title")) +
    labs( x = "$x$ = Time", y = "$\\Phi$ = Innovation output") +
    theme_bw()
#This line is only necessary if you want to preview the plot right after compiling
print(plot)
#Necessary to close or the tikxDevice .tex file will not be written
dev.off()

Появляется следующее сообщение об ошибке:

Measuring dimensions of: \char77
Error in get_latex_cmd(TeXMetrics$engine) : 
Cannot find LaTeX! Please check your system configuration or manually provide a value for options(tikzLatex)

Я не смог найти обсуждение этой проблемы в Google или здесь, поэтому я был бы признателен за помощь.

1 ответ

Ваш файл LaTex не установлен в вашей библиотеке. В моем случае это файл pdflatex. Вы можете добавить файл pdftex, xetex или luatex.

легкая попытка:

Попробуйте переустановить вашу библиотеку или ваш латекс, если это возможно, это должен быть простой способ очистить установку.

Установите переменную вручную

В Linux:

С

getOption("tikzLatex")

я генерирую вывод

"/usr/bin/pdflatex"

так что это мой путь к латексному файлу, и это то, чего не хватает в вашем случае. Поэтому нам нужно добавить это.

Вы можете проверить, где находится ваш латексный файл, с помощью команды в Терминале:

whereis pdflatex

так что если вы выяснили путь к вашему файлу, вы установите его:

options("tikzLatex"='/usr/bin/pdflatex')

Windows

Я не пользователь Windows, поэтому я могу догадаться, что это так же. Аналогичная команда для поиска вашего файла в Windows where команда, где команда на окнах

Установка вашей переменной должна быть такой же. Было бы хорошо, если бы кто-то мог это подтвердить.

Изменить: решение для Windows предоставляется Мейсон Мэлоун в комментарии к вопросу

Возможно, это слишком поздно, но здесь есть более постоянное и общесистемное решение.

Это для Linux, но общая идея должна работать и для Windows.

Причиной ошибки является то, что R не может найти где pdflatex является. Вы можете сказать R, где находится pdflatex, добавив его каталог в PATH переменная окружения. и вы должны сделать это так, чтобы R мог это видеть.

Во-первых, найдите каталог установки pdflatex. Если вы этого не знаете, но если вы можете скомпилировать латексные файлы, то обычным способом следующая команда скажет вам, где он находится.

which pdflatex

В моем случае приведенная выше команда дает /usr/local/texlive/2018/bin/x86_64-linux/pdflatex, Это означает, что pdflatex и другие латексные двоичные файлы находятся в каталоге /usr/local/texlive/2018/bin/x86_64-linux.

Теперь мы должны добавить это к PATH Переменная окружения, так что любая программа (не только R), которая хочет выполнить pdflatex, может найти его. Мы можем сделать это, обновив PATH для всех программ / пользователей, чтобы увидеть. Выполните следующую команду к этому.

echo "export PATH=\"\$PATH:<pdflatex directory>\"" | sudo tee /etc/profile.d/latex_path.sh

В моем случае мне пришлось выполнить:

echo "export PATH=\"\$PATH:/usr/local/texlive/2018/bin/x86_64-linux\"" | sudo tee /etc/profile.d/latex_path.sh

Чтобы сделать изменения доступными без необходимости выхода и повторного входа, выполните:

source /etc/profile.d/latex_path.sh

Теперь любая программа или пользователь может использовать команду pdflatex.

Возможно, вам придется переустановить tikzDevice в R, чтобы обновить его свойства.

Другие вопросы по тегам