rmarkdown :: render()不会将-shell-escape选项从pandoc传递给pdflatex

问题描述 投票:1回答:1

我想渲染一个Rmarkdown文件,该文件需要pdflatex中的-shell-escape选项或pandoc中的--pdf-engine-opt=-shell-escape选项。我在YAML标头中指定了pandoc_args: "--pdf-engine-opt=-shell-escape",但rmarkdown :: render()似乎按以下顺序调用程序:

  1. knitr :: knit()到* .md
  2. 将转换编码为* .utf8.md
  3. pandoc到* .tex(pandoc mwe.utf8.md --to latex --output mwe.tex ...
  4. pdflatex到* .pdf(pdflatex mwe.tex

render()在第3步和第4步之间丢失了我的-shell-escape选项,并且由于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")调用pdflatex,因此在R控制台中运行-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")和终端中的$ pandoc mwe.md -o mwe.pdf,将返回正确的PDF。或者,在终端的中间tex文件中运行$ pandoc mwe.md -s -o mwe.tex; pdflatex -shell-escape mwe.tex也会返回正确的PDF。

从:https://upload.wikimedia.org/wikipedia/commons/6/6a/Chi_Recombination_Model_for_Wikipedia.tif获得的TIF图像

我想渲染一个Rmarkdown文件,该文件需要pdflatex中的-shell-escape选项或pandoc中的--pdf-engine-opt = -shell-escape选项。我在...

r-markdown pandoc
1个回答
0
投票
如果相关,我将在MacOS 10.14.6上使用RStudio编译文档并进行编织。希望这会有所帮助!
© www.soinside.com 2019 - 2024. All rights reserved.