设置R以在Windows上获取texlive而不是miktex

Pat*_*ckT 26 latex r miktex rstudio

在Windows上,我如何指示R调用TeXlive而不是MikTeX?

我已经在我的Linux和Windows机器上设置了R.在我的Windows机器上,我碰巧有MikTeX和TeXlive可用.由于我不打算进入原因,我想让R打电话给TeXlive.此时,R正在接收MikTeX.

我猜我需要在我的Renviron文件中设置TEXINPUTS,或类似的东西.但我无法在网上找到准确的说明.帮助将不胜感激.

更新:以下是我尝试过的不同内容:在PATH中更改TeXlive和MikTeX的顺序.从路径中删除MikTeX.两者都没有奏效,MikTeX仍然被选中.

我找不到R的相关文档,但我确实在RStudio文档中找到了一些提示,所以我试图解决RStudio中的问题.我成功定义了RSTUDIO_PDFLATEX环境变量:

Sys.getenv('RSTUDIO_PDFLATEX')
[1] "C:/texlive/2012/bin/win32"
Run Code Online (Sandbox Code Playgroud)

[参考:http://www.rstudio.com/ide/docs/authoring/latex_program?version = 0.97.312&mode = desktop]

但MikTeX仍然受到欢迎.

Sys.which("pdflatex")
                                         pdflatex 
"C:\\PROGRA~2\\MIKTEX~1.9\\miktex\\bin\\pdflatex.exe" 
Run Code Online (Sandbox Code Playgroud)

更新2:我尝试过的另一件事:虽然texlive已经在我的PATH上了,以防我从R中添加它.

Sys.setenv("PATH" = paste(Sys.getenv("PATH"),"C:/texlive/2012/bin/win32",sep=":"))
Run Code Online (Sandbox Code Playgroud)

我还尝试将Sys.which("pdflatex")返回的pdflatex路径设置为以下内容:

Sys.setenv(pdflatex="C:/texlive/2012/bin/win32")
Run Code Online (Sandbox Code Playgroud)

以及PDFLATEX或"PDFLATEX"的变体,但这没有帮助.除了texlive的路径之外,我还删除了路径中的所有内容:

Sys.setenv("PATH" = "C:/texlive/2012/bin/win32")
Run Code Online (Sandbox Code Playgroud)

这给了我理想的道路

Sys.which("pdflatex")
                                 pdflatex 
"C:\\texlive\\2012\\bin\\win32\\pdflatex.exe" 
Run Code Online (Sandbox Code Playgroud)

但是,运行texi2dvi失败:

tools::texi2pdf(Out)
Error in texi2dvi(file = file, pdf = TRUE, clean = clean, quiet = quiet,  : 
pdflatex is not available
Run Code Online (Sandbox Code Playgroud)

小智 2

我在一个类似的项目中遇到了同样的问题,并花了一些时间来理解其中的技巧。事实上,即使您清理了路径,MikTeX 也会被选中,这是因为在安装 MikTeX 时,设置了相当多的 Windows 注册表项,这有点令人恼火(特别是对于像我和其他人这样的面向 *nix 的开发人员)。便携式 MikTeX(仅限 win32)发行版是唯一的例外。因此,如果您确实需要 MikTeX,我的建议就是按照我的做法:

  1. 卸载当前的 MikTeX 发行版
  2. 清理注册表(ccleaner 效果很好)
  3. 安装便携式 win32 MikTeX 发行版

现在再次检查您的路径是否包含 TeXlive bin 目录路径。
如果您使用 pandoc 从 Rmarkdown 或其他 Markdown 语言创建 pdf 文件,解决路径问题的一种便捷方法是指定选项--latex-engine并添加完整文件路径作为参数。下面是一个可能的命令行,改编自 RStudio IDE:
path/to/pandoc.exe -V papersize=A4 +RTS -K512m -RTS file.utf8.md --to latex --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash-implicit_figures --output file.pdf --template path/to/default.tex --highlight-style tango --latex-engine /path/to/pdflatex.exe --variable geometry:margin=1in