TinyTex:在R中运行Latex

开始

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

测试环境

sessionInfo()
## R version 3.5.1 (2018-07-02)
## Platform: x86_64-apple-darwin15.6.0 (64-bit)
## Running under: macOS  10.14.2
## 
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/3.5/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] compiler_3.5.1  magrittr_1.5    bookdown_0.9    tools_3.5.1    
##  [5] htmltools_0.3.6 yaml_2.2.0      Rcpp_1.0.0      stringi_1.3.1  
##  [9] rmarkdown_1.11  blogdown_0.10   knitr_1.21      stringr_1.4.0  
## [13] digest_0.6.18   xfun_0.4        evaluate_0.13

删除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")
张吉鸿
张吉鸿
自由的灵魂

我的研究兴趣是贝叶斯分析和潜变量分析

comments powered by Disqus

相关