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

我在Linux和Windows机器上设置了R。在Windows计算机上,我碰巧同时有MikTeX和TeXlive。由于某些原因,我不想让我打电话给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 = desktop]

但是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

最佳答案

在相似的项目中,我遇到了相同的问题,花了一些时间来理解这些技巧。
即使您清除了路径,MikTeX仍然被选中的事实是由于有些恼人的事实(尤其是对于像我和其他人这样的面向* nix的开发人员而言)安装MikTeX时会设置大量的Windows注册表项。便携式MikTeX(仅Win32)发行版是唯一的异常(exception)。因此,如果您确实需要机载MikTeX,我的建议就是按照我的意愿做:

  • 卸载当前的MikTeX发行版
  • 清理注册表(清理效果很好)
  • 安装便携式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

    关于r - 在Windows上设置R以拾取texlive而不是miktex,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15033615/

    10-12 19:48