使用 minted 包在文档中写入 LaTeX 代码片段时出错

使用 minted 包在文档中写入 LaTeX 代码片段时出错

我想在文档中编写 LaTeX 代码片段,因此我加载了 minted 包。但在编译时,弹出以下错误:

!软件包 minted 错误:您必须使用 -shell-escape 标志调用 LaTeX。请参阅 minted 软件包文档以了解解释。

请帮助我解决这个问题!

提前致谢!

答案1

由于 minted 包需要访问 shell,因此应在编辑器中允许这样做。为此,您必须在编辑器-shell-escape中将 LaTex、PdfLaTex、XeLaTex 和 LuaLaTex 添加到命令列表中。在“TexWorks”中,通过进入“选项 > 配置 TexWorks > 命令”修改这些命令,通过添加以下命令更改以下命令-shell-escape

latex.exe -shell-escape -src -interaction=nonstopmode %.tex
pdflatex.exe -shell-escape -synctex=1 -interaction=nonstopmode %.tex
xelatex.exe -shell-escape -synctex=1 -interaction=nonstopmode %.tex
lualatex.exe -shell-escape -synctex=1 -interaction=nonstopmode %.tex

启用了 pdflatex 和 shellescape 的 TeXworks

在此处输入图片描述

\write18 enabled一旦上述操作在文件上运行,控制台就会显示

或者

您还可以将代码保存在 tex 文件中(假设您将其命名为testMinted.tex),然后通过进入文件所在的文件夹(假设它在C:\Users\uqapourm\Desktop\testMinted)并pdflatex.exe -shell-escape -synctex=1 -interaction=nonstopmode testMinted.tex在命令行中运行来从命令行对其进行编译。

安全

有时,能够从 tex 文件内部运行外部命令很有用:例如,它允许外部化某些排版,或使用 bibtex 等外部工具。这可通过 tex\write18原语实现。

The problem is that it allows for almost everything.

tex 文件旨在便于携带,因此在编译第三方文件时不必担心任何安全问题。因此默认情况下,此原语是禁用的。

如果用户需要使用它,他需要明确地告诉编译器他信任该文件的作者并且与 shell 进行交互,这正是可选参数的意义所在--shell-escape

多年来\write18一直被用作操作系统的后门。从语法上讲,TeX 将其视为写入文件,但register 18实际上将其视为预先打开的文件并执行命令。

“不受限制”write18意味着您可以执行任何命令,因此如果您允许这样做并运行某人发送的 TeX 文件,它可能会执行任意代码,将您的密码文件通过电子邮件发送给垃圾邮件机器人或其他什么。

这显然是一种安全风险,但是有些命令自然是 Tex 发行版的一部分,您可能希望始终允许它们(例如图像和字体转换),因此 web2c 允许您(或默认的 texlive 维护者)设置一组“允许的、安全的”命令,并且允许这些命令在受限模式下运行。

第三种选择是根本不执行命令\write18

“restricted \write18 enabled”是什么意思,为什么 TexLive 一直报告它?

如何在 TeXworks 中启用 shell-escape?

附言

有时,您需要清除缓存才能使包正常工作。这会减慢操作速度,但可以避免错误。为此,请将选项添加到\usepackage[cache=false]{minted}

相关内容