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, чтобы обновить его свойства.