为什么 tikzexternalize 会产生这个错误报告?

为什么 tikzexternalize 会产生这个错误报告?

我花了很多时间尝试让 TikZ externalize 工作(在 MiKTeX2.9 上)。因此,我尝试使用 TikZ PGF 手册中的 externalize 运行第一个程序:

\documentclass{article}
% main document, called main.tex
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize % activate!
\begin{document}
\begin{tikzpicture}
\node {root}
child {node {left}}
child {node {right}
child {node {child}}
child {node {child}}
};
\end{tikzpicture}
A simple image is \tikz \fill (0,0) circle(5pt);.
\end{document}

它运行完美,生成一个 PDF 文件,如果我剪掉这两行,它就会打开 PDF 文件(我的 WinEdt 10.1 配置为这样做)

\usetikzlibrary{external}
\tikzexternalize % activate!

但有了这两个它就会产生

! tikz 软件包错误:抱歉,系统调用“pdflatex -halt-on-error -interact ion=batchmode -jobname "MWE-figure0" "\def\tikzexternalrealjob{MWE}\input{MWE}" ”未产生可用的输出文件“MWE-figure0”(预期为 .pdf:.j pg:.jpeg:.png: 之一)。请确认您已启用系统调用。对于 pdflatex ,这是“pdflatex -shell-escape”。有时它也被命名为“write 18”或类似名称。或者命令可能只是失败了?错误消息可以在“MWE-figure0.log”中找到。如果您现在继续,我将尝试排版图片。

这是真正的问题吗?如果是,我该如何避免?

这似乎是一个真正的问题。当我继续(输入 q)时,它实际上会生成一个 pdf,但不会打开它。它报告

抱歉,但 texify.exe 没有成功。

此后,我无法让 externalize 工作。但我不知道我可能犯了什么其他错误。在理解这个错误之前,我不想进一步探究这些错误。

答案1

警告:TeX StackExchange 和其他地方的几个帖子都指出write18存在安全风险。我发现的最完整的讨论是几年前的

对 Texlive 的受限权限模型有哪些分析?

我不了解这些问题,但我可以看到了解这些问题的专家对风险的看法不一致。因此我不会在我的 PDFLaTeX 中保留开关 -enable-write18,尽管没有它 TikZexternalize 将无法工作。

使用 MiKTeX 和 WinEdt,您可以通过进入选项、执行模式、PDFLaTeX 并输入来使上面引用的 TikZ 手册中的程序运行

-enable-write18

在开关中。我不知道是否有任何原因你不能通过将其添加到 PDFTeXify 或其他开关中来做到这一点。

但是,当它以这种方式工作时,它确实要求文件名中没有空格。例如文件名

Revision on conjugation

将阻止编译。请使用

结合修正

相关内容