
ライブラリを使用しているにもかかわらず、複数の図のうち 1 つだけが再作成されるという問題が発生していますtikz/external
。2 つの図だけで同じ効果を示す 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
。2 つの図の順序を変更してみましたが、違いはありませんでした。ファイル名が の図はscalability-plot-all-sbb-2-optima
常に再作成されますが、もう 1 つの図は で、同じですが になっていますsemilogyaxis
。TikZ
両方のファイルは、5 つの異なる .dat ファイルからデータを読み込む 5 つのaddplot
コマンドにすぎません。ここですべてを示すと、かなりのスペースが必要になるため、次の図を次に示します。リンク.tex
、.tikz
およびファイルを含むディレクトリ構造全体に適用されます.dat
。
addplot を 1 つだけ保持すると、図が再作成されないことがわかりました。これはバグなのか、LaTeX
ディレクトリ構造によって混乱しているのか、それとも単に私のミスなのか疑問に思っています。
答え1
私は LaTeX に関する知識が非常に限られているため、ログ ファイル ( file.log
) を調べて何が問題なのかを特定してみることにしました。画像を再生成する convert コマンドの直後に、次のようなエラーがあることに気付きました。
Overfull \hbox (17.03157pt too wide) in paragraph at lines 1--76
[][]
[]
tikzscale
これにより、私が要求した正確なサイズに画像を拡大縮小することができず、tikzscale
画像のサイズが想定していたものと実際のサイズとの間に不一致が生じていると考えました。実はでした。そこで私がしたのは、これx ラベルと y ラベルの周りの空白を削除するには、回答してください (基本的には、ヘルプを試みてくださいtikzscale
)。
問題は修正されました。Overfull \hbox
警告は表示されなくなり、画像も毎回再生成されなくなりました。ただし、これが想定された動作なのか、バグなのかはわかりません。