1

我正在编写一个使用 LaTeXminted包进行代码格式化的 bookdown 项目。该minted软件包需要pdflatex使用该-shell-escape选项进行调用。

请参阅相关问题Latex shell-escape options in YAML header don't use

我可以通过在文档开头.Rmd放置一个启动块来在单个文件中执行此操作options(tinytex.engine_args = "-shell-escape"),但是当我调用bookdown::render_book("Index.Rmd", output_format = "bookdown::pdf_book").

我尝试pandoc_args: "--pdf-engine-opt=-shell-escape"在输出设置中设置_bookdown.yml文件

output:
  bookdown::pdf_book:
    pandoc_args: "--pdf-engine-opt=-shell-escape"

但这不起作用。

options(tinytex.engine_args="-shell_escape")如果我在运行之前从 R 控制台手动设置,我可以让这本书正确编织bookdown::render_book

library(bookdown)
options(tinytex.engine_args="-shell-escape")
render_book("Index.Rmd", output_format = "bookdown::pdf_book")

但我想知道是否有一种方法可以在每次运行时以tinytex.engine_args编程方式从_bookdown.yml我的文件或类似文件中设置选项。.Rmdbookdown::render_book

4

1 回答 1

1

确实,要执行的相关语句是:

options(tinytex.engine_args="-shell-escape")

自动执行此操作的唯一解决方案似乎是将该行包含在.Rprofile配置文件中,该文件应位于 RStudio 项目的根目录中。因此:

  1. 在您的项目目录中创建一个名为的纯文本文件.Rprofile并插入上面提到的代码行。
  2. 关闭您的项目并使用 RStudio 重新打开它,以在.Rprofile.
  3. 构建你的书,其中包含一些需要该选项的 LaTeX 包(例如minted)。现在,这本书应该可以正确编译了。

其他替代方法,例如在index.Rmd文件内的块中包含相同的代码行不起作用。

于 2022-01-11T18:33:52.530 回答