
У меня проблема, когда воссоздается только одна из нескольких фигур, несмотря на использование библиотеки 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
всегда создается заново, хотя другая фигура идентична, но вместо нее стоит semilogyaxis
. TikZ
Файлы для обеих фигур представляют собой всего лишь пять addplot
команд, которые загружают данные из пяти разных файлов .dat. Если бы все здесь было показано, это заняло бы много места, поэтому вотсвязько всей структуре каталогов, включая файлы .tex
, .tikz
и .dat
.
Я обнаружил, что если я сохраняю только один addplot, рисунок не воссоздается. Мне было интересно, является ли это ошибкой, путаницей 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
Предупреждение больше не появляется, и картинка не перегенерируется каждый раз. Я не знаю, ожидаемое ли это поведение или это ошибка.