Я хочу отобразить файл Rmarkdown, для которого требуется параметр -shell-escape
в pdflatex или параметр --pdf-engine-opt=-shell-escape
в pandoc. Я указал pandoc_args: "--pdf-engine-opt=-shell-escape"
в своем заголовке YAML, но rmarkdown :: render (), кажется, вызывает программы в следующем порядке:
- knitr :: knit () to * .md
- преобразование кодировки в * .utf8.md
- pandoc to * .tex (
pandoc mwe.utf8.md --to latex --output mwe.tex ...
)
- 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