TikZ & 外部:无缘无故地重新创建图形

TikZ & 外部:无缘无故地重新创建图形

我遇到了一个问题,尽管使用了tikz/external库,但多个图形中只有一个被重新创建。我创建了一个 MWE,它只用两个图形显示了相同的效果。

下面是我用 编译的主要文件pdflatex -shell-escape file

\documentclass{article}

\usepackage{tikz,pgfplots,tikzscale}
\usetikzlibrary{external}
\tikzexternalize[prefix=figures/]
\pgfplotsset{compat=newest}
\graphicspath{ {./figures/}{./figures-tikz/} }

\newcommand{\figFilename}{}

\begin{document}
  \begin{figure}[t!]
    \renewcommand{\figFilename}{scalability-plot-all-sbb-2-optima}
    \centering
    \tikzpicturedependsonfile{\figFilename.tikz}
    \tikzsetnextfilename{\figFilename}
    \includegraphics[width=\textwidth,axisratio=1]{\figFilename.tikz}
    \caption{Scalability plot for dDE, MPC, dDE$^-$ and a hill climber on the Scalable-Building-Block problem.}
    \label{fig:\figFilename}
  \end{figure}

  \begin{figure}[t!]
    \renewcommand{\figFilename}{scalability-plot-all-sbb-2-optima-log-y}
    \centering
    \tikzpicturedependsonfile{\figFilename.tikz}
    \tikzsetnextfilename{\figFilename}
    \includegraphics[width=\textwidth,axisratio=1]{\figFilename.tikz}
    \caption{Same as in Figure~\ref{fig:scalability-plot-all-sbb-2-optima}, but y axis is in logscale.}
    \label{fig:\figFilename}
  \end{figure}
\end{document}

每次运行 时,第一个图都会重新创建pdflatex。我尝试更改两者的顺序,但没有什么不同——带有文件名的图scalability-plot-all-sbb-2-optima总是会重新创建,即使另一个图是相同的,但带有semilogyaxisTikZ两者的文件都只有五个addplot命令,它们从五个不同的 .dat 文件加载数据。在这里显示所有内容会占用大量空间,所以这里有一个关联整个目录结构,包括.tex.tikz.dat文件。

我发现如果我只保留一个 addplot,则不会重新创建图形。我想知道这是否是一个错误,是否LaTeX被我的目录结构混淆了,或者这是否只是我的一个错误。

答案1

由于我对 LaTeX 的了解有限,我决定检查日志文件 ( file.log) 以找出问题所在。我注意到,在导致图片重新生成的转换命令之后,出现了以下错误:

Overfull \hbox (17.03157pt too wide) in paragraph at lines 1--76
 [][] 
 []

这让我相信它tikzscale无法将图片缩放到我要求的精确尺寸,这导致了两者之间的不匹配。tikzscale图片的预期尺寸与实际尺寸不匹配。实际上所以我做的是按照回答从 x 和 y 标签周围删除空格(基本上尝试帮助tikzscale)。

问题现已修复。Overfull \hbox警告不再出现,图片也不再每次都重新生成。我不知道这是预期的行为还是一个错误。

相关内容