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

时间:2013-02-22 21:37:17

标签: r latex rstudio miktex

在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"

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

但仍然要求MikTeX。

Sys.which("pdflatex")
                                         pdflatex 
"C:\\PROGRA~2\\MIKTEX~1.9\\miktex\\bin\\pdflatex.exe" 

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

Sys.setenv("PATH" = paste(Sys.getenv("PATH"),"C:/texlive/2012/bin/win32",sep=":"))

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

Sys.setenv(pdflatex="C:/texlive/2012/bin/win32")

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

Sys.setenv("PATH" = "C:/texlive/2012/bin/win32")

这给了我理想的路径

Sys.which("pdflatex")
                                 pdflatex 
"C:\\texlive\\2012\\bin\\win32\\pdflatex.exe" 

但是,运行texi2dvi失败:

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

2 个答案:

答案 0 :(得分:1)

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

  1. 卸载您当前的MikTeX发行版
  2. 清理注册表(ccleaner工作得很好)
  3. 安装便携式win32 MikTeX发行版
  4. 现在检查您的路径是否再次包含TeXlive bin目录路径 如果您使用pandoc从Rmarkdown或其他降价语言创建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

答案 1 :(得分:0)