rmarkdown :: render () не передает опции -shell-escape из pandoc в pdflatex - PullRequest
0 голосов
/ 03 мая 2018

Я хочу отобразить файл Rmarkdown, для которого требуется параметр -shell-escape в pdflatex или параметр --pdf-engine-opt=-shell-escape в pandoc. Я указал pandoc_args: "--pdf-engine-opt=-shell-escape" в своем заголовке YAML, но rmarkdown :: render (), кажется, вызывает программы в следующем порядке:

  1. knitr :: knit () to * .md
  2. преобразование кодировки в * .utf8.md
  3. pandoc to * .tex (pandoc mwe.utf8.md --to latex --output mwe.tex ...)
  4. pdflatex в * .pdf (pdflatex mwe.tex)

render () теряет мой параметр -shell-escape между шагами 3 и 4, и я получаю сообщение об ошибке, так как pdflatex не может передать команду оболочке. Есть ли способ: 1) заставить pandoc выводить файл * .pdf вместо * .tex или 2) передать -shell-escape на pdflatex?

MWE: mwe.Rmd

---
title: "mwe"
header-includes: |
  \usepackage{epstopdf}
  \epstopdfDeclareGraphicsRule{.tif}{png}{.png}{sips -s format png #1 --out \OutputFile}
  \PrependGraphicsExtensions{.tif, .tiff}
output: 
  pdf_document:
    pandoc_args: "--pdf-engine-opt=-shell-escape"
---

![](image.tif)

Запуск $ rmarkdown::render("mwe.Rmd", output_file="mwe.pdf") в консоли R выдает ошибку, поскольку pdflatex не вызывался с -shell-escape:

! Package pdftex.def Error: File `image-tif-converted-to.png' not found.

Error: Failed to compile mwe.tex. See mwe.log for more info.

Выполнение $ knitr::knit("mwe.Rmd") в консоли R, затем $ pandoc mwe.md -o mwe.pdf в терминале возвращает правильный PDF В качестве альтернативы, запуск $ pandoc mwe.md -s -o mwe.tex; pdflatex -shell-escape mwe.tex в промежуточном текстовом файле в терминале также возвращает правильный PDF.

TIF изображение, полученное из: https://upload.wikimedia.org/wikipedia/commons/6/6a/Chi_Recombination_Model_for_Wikipedia.tif

...