TinyTex:在R中运行Latex

教程
Author

吉鸿

Published

September 25, 2018

开始

这篇博客是用TidyTex在Manjaro Linux下的测试报告。

测试环境

⌘+C
sessionInfo()
R version 4.2.1 (2022-06-23)
Platform: aarch64-apple-darwin20 (64-bit)
Running under: macOS 14.3.1

Matrix products: default
LAPACK: /Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
 [1] htmlwidgets_1.6.4 compiler_4.2.1    fastmap_1.1.1     cli_3.6.2        
 [5] tools_4.2.1       htmltools_0.5.7   parallel_4.2.1    rstudioapi_0.15.0
 [9] yaml_2.3.8        rmarkdown_2.25    knitr_1.45        jsonlite_1.8.8   
[13] xfun_0.42         digest_0.6.34     rlang_1.1.3       evaluate_0.23    

删除texlive

这一步最简单的方法就是用软件包管理器搜索”texlive”,把已安装的都删掉。当然还有一些零碎的文件夹,如果是强迫症患者(我),可以都删除掉。在网上找到的最全步骤是:

sudo rm -rf /usr/local/texlive/
sudo rm -rf ~/.texlive*
sudo rm -rf /usr/local/share/texmf
sudo rm -rf /var/lib/texmf
sudo rm -rf /etc/texmf
rm -rf ~/.texlive
find -L /usr/local/bin/ -lname /usr/local/texlive/*/bin/* | xargs rm

不过测试下来,好像我就只有texmf文件夹需要删除。

安装tinytext

我根据yihui的document安装,没发现什么问题。

install.packages('tinytex')
tinytex::install_tinytex(force=TRUE)

安装好之后,R提示说TinyTex被安装在用户目录(/home/USER/.TinyTex),看得见的东西真是舒坦。比起texlive猫在电脑不知道的角落好多了。

编译tex文件

setwd("~/Dropbox/Phd Admission/CV/")
tinytex::xelatex("cv.tex")

出现错误错误: Failed to compile /home/jihong/Dropbox/Phd Admission/CV/cv.tex. See cv.log for more info.

然后我就去目标文件目录(~/Dropbox/Phd Admission/CV/)找cv.log,结果没有。我一拍脑袋,想到在可能在工作目录里,一看果然有。不过除了cv.log,还有一个文件missfont.log。 这里记录了我tex编译中缺少的字体。

安装后,终于编译成功,在目标目录会显示"cv.pdf"。而且速度还是非常快的。

总结与疑问

总体来说,在linux中安装和使用都是非常简单易懂的。唯一的报错就是和文件路径有关。 我是在Rmarkdown里用chunck运行的。在chunck里,我只有把working directory设置到tex文件所在目录才能成功编译,如果在xelatex()中输入文件的完整路径是无法编译,报错说缺少文件。但是我可以直接在R console里面成功运行tinytex::xelatex("~/Dropbox/Phd Admission/CV/cv.tex"),比如这样我是无法运行的:

tinytex::xelatex("/home/jihong/Dropbox/Phd Admission/CV/cv.tex")

而这样是可以的:

setwd("/home/jihong/Dropbox/Phd Admission/CV/")
tinytex::xelatex("cv.tex")
Back to top