Подтвердить что ты не робот

Настройка R для приема texlive, а не miktex в Windows

В Windows, как я могу поручить R вызывать TeXlive вместо MikTeX?

У меня есть R, установленный на моих машинах Linux и Windows. На моих машинах Windows у меня есть как MikTeX, так и TeXlive. По причинам, в которые я не буду входить, мне бы хотелось, чтобы R звонил в TeXlive. В это время R подбирает MikTeX вместо этого.

Я предполагаю, что мне нужно будет установить TEXINPUTS внутри моего файла Renviron или что-то подобное. Но я не смог найти точные инструкции в Интернете. Помощь будет оценена.

UPDATE: Вот несколько вещей, которые я пробовал: изменение порядка TeXlive и MikTeX в PATH. Удаление 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=":"))

Я также попытался установить путь к pdflatex как возвращаемый Sys.which( "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
4b9b3361

Ответ 1

Я столкнулся с той же проблемой в аналогичном проекте и некоторое время разбирался в трюках. Тот факт, что MikTeX выбирается, даже если вы очистили путь, вызвал несколько раздражающий факт (особенно для * nix-ориентированных разработчиков, таких как я и другие), что при установке MikTeX установлено довольно большое количество записей в реестре Windows. Единственным исключением является переносимый дистрибутив MikTeX (только win32). Поэтому, если вам нужен MikTeX на борту, мой совет - просто сделать то, что я сделал:

  • удалите текущий дистрибутив MikTeX
  • очистка реестра (ccleaner хорошо работает)
  • установить переносимый дистрибутив win32 MikTeX

Теперь проверьте, что ваш путь снова включает в себя путь к каталогу TeXlive bin.
Если вы используете pandoc для создания PDF файлов с Rmarkdown или других языков разметки, удобным способом устранения проблем с контентом является указание опции --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