TinyTex:在R中运行Latex
开始
这篇博客是用TidyTex在Manjaro Linux下的测试报告。
测试环境
sessionInfo()
## R version 4.1.1 (2021-08-10)
## Platform: x86_64-apple-darwin17.0 (64-bit)
## Running under: macOS Big Sur 10.16
##
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/4.1/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] bookdown_0.25 digest_0.6.29 R6_2.5.1 jsonlite_1.8.0
## [5] magrittr_2.0.3 evaluate_0.15 blogdown_1.9 stringi_1.7.6
## [9] rlang_1.0.2 cli_3.3.0 rstudioapi_0.13 jquerylib_0.1.4
## [13] bslib_0.3.1 rmarkdown_2.14 tools_4.1.1 stringr_1.4.0
## [17] xfun_0.30 yaml_2.3.5 fastmap_1.1.0 compiler_4.1.1
## [21] htmltools_0.5.2 knitr_1.39 sass_0.4.1
删除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")