TikZ externalize 无法识别更改

TikZ externalize 无法识别更改

在 Debian 上使用 XeTeX(xelatex) [我使用 pdflatex 也遇到了同样的问题] 我试图使用 tikz external 节省一些编译时间。但是,除非我删除相应的文件,否则图表永远不会更新。否则我会得到

===== 图像“figures/mwe-figure0”是最新的。======

即使我改变了一些东西,例如标签或坐标

\pgfversion 给了我2.10

母语:

\documentclass{scrartcl}
\usepackage[english]{babel}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize[prefix=figures/]
\tikzset{external/system call={%
xelatex \tikzexternalcheckshellescape
-halt-on-error -shell-escape -interaction=batchmode
-jobname "\image" "\texsource"}}
\begin{document}
\begin{tikzpicture}
\node (f) at (0,0){d};
\end{tikzpicture}
\end{document}

有趣的是,当我添加

\tikzset{external/up to date check=md5}

我得到了序言

!软件包 pgfkeys 错误:我不知道密钥“/tikz/external/up to date check
”,我将忽略它。也许你拼错了。

这可能是什么原因造成的?

PS:如果它给您提供任何见解,*.dpth 文件是空的。

答案1

我已经有一个自动识别更改的实现,并且我认为它适用于所有具有外部化功能的 pgf 版本。只需将以下内容添加到您的序言中:

\usepackage{filemod}
\newcommand{\includetikz}[2]{%
  \tikzsetnextfilename{#2}%
  \filemodCmp{#1#2.tikz}{#1tikz_external/#2.pdf}%
    {\tikzset{external/remake next}}{}%
  \input{#1#2.tikz}%
}

您可以通过以下代码包含 tikz 文件:

\begin{figure}[pt!]
  \centering
  \footnotesize\includetikz{figures/}{testfigure}
  \caption{testcaption}
  \label{fig:testlabel}
\end{figure}

您不需要,\footnotesize但我通常就是这样包含图表的。

相关内容