请参阅以下 MWE。
\documentclass{article}
\usepackage{minted, tikz}
\usepackage{fontspec}
\setmainfont{Arial}
\usetikzlibrary{external}
\tikzset{external/system call={%
xelatex \tikzexternalcheckshellescape
-halt-on-error -interaction=batchmode
-jobname "\image" "\texsource"}}
\tikzexternalize
\begin{document}
\begin{tikzpicture}
\draw (0,0) --(1,2);
\end{tikzpicture}
\end{document}
如果我尝试使用以下命令进行编译
xelatex -shell-escape bug.tex
我收到以下错误
This is XeTeX, Version 3.1415926-2.2-0.9995.2 (TeX Live 2009/Debian)
entering extended mode
! Package tikz Error: Sorry, the system call 'xelatex -halt-on-error -interacti
on=batchmode -jobname "bug-figure0" "\def\tikzexternalrealjob{bug}\input{bug}"'
did NOT result in a usable output file 'bug-figure0' (expected one of .pdf:.jp
g:.jpeg:.png:). Please verify that you have enabled system calls. For pdflatex,
this is 'pdflatex -shell-escape'. Sometimes it is also named 'write 18' or som
ething like that. Or maybe the command simply failed? Error messages can be fou
nd in 'bug-figure0.log'. If you continue now, I'll try to typeset the picture.
See the tikz package documentation for explanation.
Type H <return> for immediate help.
...
l.15 \end{tikzpicture}
笔记:
使用 Debian squeeze 版的 Tex Live 2009 进行测试。版本
minted
(不在 Tex Live 2009 中) 为 v1.7 (当前版本)。删除
\tikzexternalize
、\usepackage{minted}
或 tikz 图片中的任意一个都
可以消除错误。\tikzset
在寻找让 tikz externalize 与 xelatex 协同工作的方法时,我发现了里面的神奇咒语 。它一直有效,直到我开始使用 minted。xelatex
是因为 而需要fontspec
,并且fontspec
是
因为 而需要Arial
。如果没有\setmainfont{Arial}
和\usepackage{fontspec}
,该示例将编译为pdflatex -shell-escape bug.tex
xelatex
奇怪的是,由于我添加了\tikzset
一些东西,它仍然在某些地方有用
。我之所以使用是
Arial
因为期刊的要求太过疯狂。我意识到我
不需要使用它,因此也不需要使用xelatex
。由于pdflatex
此示例运行良好,因此整个问题对我来说都消失了。但是,这
对我来说仍然像是一个错误,因此发布。错误出现在外部化文件中,这里默认为
bug-figure0
。bug-figure0.log
! Package minted Error: You must invoke LaTeX with the -shell-escape flag.
在我看来,由于
某种原因,minted 和 tikz externalize 正在相互碰撞。
答案1
也许尚未准备好的一个原因是您的接受率。
运行后出现xelatex --shell-escape bug.tex
错误信息给出提示:
Error messages can be found in 'bug-figure0.log'
在此文件中你会发现以下提示:
Package ifplatform Warning:
shell escape is disabled, so I can only detect \ifwindows.
! Package minted Error: You must invoke LaTeX with the -shell-escape flag.
此错误表明该选项shell-escape
不会被继承。
为了避免错误,您必须/tikz/external/system call
指定--shell-escape
这里是例子:
\documentclass{article}
\usepackage{minted, tikz}
\usepackage{fontspec}
\setmainfont{Arial}
\usetikzlibrary{external}
\tikzset{
external/system call={%
xelatex \tikzexternalcheckshellescape
-halt-on-error -interaction=batchmode --shell-escape
-jobname "\image" "\texsource"}}
\tikzexternalize
\begin{document}
\begin{tikzpicture}
\draw (0,0) --(1,2);
\end{tikzpicture}
\end{document}