TikZ & External: figura recriada sem motivo aparente

TikZ & External: figura recriada sem motivo aparente

Estou tendo um problema em que apenas uma das várias figuras é recriada, apesar do uso da tikz/externalbiblioteca. Criei um MWE que mostra o mesmo efeito com apenas duas figuras.

Abaixo está meu arquivo principal que é compilado com 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}

A primeira figura é recriada toda vez que executo o pdflatex. Tentei alterar a ordem dos dois, mas não faz diferença --- a figura com o nome do arquivo scalability-plot-all-sbb-2-optimaé aquela que sempre é recriada, embora a outra figura seja idêntica, mas com um semilogyaxis. Os TikZarquivos de ambos são apenas cinco addplotcomandos que carregam dados de cinco arquivos .dat diferentes. Mostrar tudo aqui ocuparia muito espaço, então aqui está umlinkpara toda a estrutura de diretórios, incluindo os .texarquivos .tikze .dat.

Descobri que se mantiver apenas um addplot, a figura não será recriada. Eu queria saber se isso é um bug, se LaTeXestá confuso com minha estrutura de diretórios ou se é simplesmente um erro da minha parte.

Responder1

Com meu conhecimento muito limitado de LaTeX, decidi inspecionar o arquivo de log ( file.log) para tentar identificar o que deu errado. Percebi que logo após o comando convert que faz com que a imagem seja gerada novamente, ocorreu um erro deste tipo:

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

Isso me levou a acreditar que tikzscalenão era capaz de dimensionar a imagem para o tamanho exato que solicitei, e isso causou uma incompatibilidade entre o que tikzscalepensava ser o tamanho da imagem e qual era o tamanho da imagem.na verdadeera. Então o que fiz foi seguir as instruções listadas emesseresponda para remover o espaço em branco ao redor dos rótulos x e y (basicamente tente ajudar tikzscale).

O problema agora está resolvido. O Overfull \hboxaviso não aparece mais e a imagem não é gerada novamente todas as vezes. Não sei se esse é o comportamento esperado ou se é um bug.

informação relacionada