我想找到一种将.tex
乳胶文档转换为pdf的编程方法。
我通常会这样做,并且在大多数情况下都有效,即使用:
tools::texi2dvi(latexfile, pdf = TRUE, clean = TRUE)
但是,我现在需要处理包含亚洲字体(中文、日文和韩文)的文档。搜索tex.stackexchange.com导致建议在 tex 文件中包含以下行:
\usepackage{xeCJK}
\setCJKmainfont{MS Mincho} % for \rmfamily
这意味着我需要使用xelatex
来构建 pdf。我尝试过以下主题的变体,但都不起作用。
shell(cmd="xelatex latexfile", mustWork=TRUE, translate=TRUE)
问题:我如何xelatex
以编程方式调用?
附加信息:
- 我使用的是 Windows 7,R2.13-1
xelatex
已安装在我的计算机上,如果我以其他方式调用它(包括通过命令行),它就可以正常工作- 我在 Eclipse 中使用 StatET
答案1
在 StackOverflow 的一些热心人士的帮助下,出现了两件事:
使用 R 中的 shell 脚本进行调用的正确方法
xelatex
是从完整文件名中删除路径。不返回控制权的原因
xelatex
是它在检测到错误时进入交互模式。要解决这个问题,请使用参数--mode=batchmode
:shell(cmd = 粘贴(“xelatex --mode = batchmode”,basename(latexfile)), 必须工作=TRUE,实习生=TRUE,翻译=TRUE)
答案2
您也可以尝试texi2dvi
使用环境变量LATEX=xelatex
(未经测试)。
查看源代码tools::texi2dvi
(第145-147行):
...
latex <- if (pdf)
Sys.getenv("PDFLATEX", "pdflatex")
else Sys.getenv("LATEX", "latex")
...
答案3
我最终得到了以下解决方案:
install.packages("tinytex")
require("tinytex")}
install_tinytex(force = TRUE)
tlmgr_install('montserrat')
xelatex('Report.tex')
此代码安装TinyTex,然后安装字体包蒙特塞拉特和tlmgr_安装功能。