直接从 R 编译 latex

直接从 R 编译 latex

我想找到一种将.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 的一些热心人士的帮助下,出现了两件事:

  1. 使用 R 中的 shell 脚本进行调用的正确方法xelatex是从完整文件名中删除路径。

  2. 不返回控制权的原因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_安装功能。

相关内容