Tikz externaliza em modo rascunho

Tikz externaliza em modo rascunho

Este é um acompanhamentoO modo rascunho no Tikz externalizar oculta os gráficos, mas não sem externalizar

Estou escrevendo um documento longo e a compilação leva tempo. Alguns gráficos são incluídos como tikz (exportação de matlab2tikz) e outras imagens são simplesmente incluídas em \includegraphics. Estou usando o fluxo de trabalho látex -> dvips -> ps2pdf. Para acelerar, o documento está em modo rascunho (na maioria das vezes, não estou interessado em ver todas as imagens). Para acelerar o tikz, a externalização funciona bem.

No entanto, como explicado emO modo rascunho no Tikz externalizar oculta os gráficos, mas não sem externalizar, o rascunho tikz resulta em pequenas caixas. O tamanho original da figura parece perdido e o documento começa a se mover bastante.

Recebo os avisos:

Package pgf Warning: Missing width for image "pgflastimage" ("images/tikz/figure8") in draft mode.
(pgf)                Using 1cm instead on input line 980.

Package pgf Warning: Missing height for image "pgflastimage" ("images/tikz/figure8") in draft mode.
(pgf)                Using 1cm instead on input line 980.

e o resultado é apenas uma pequena caixa. Parece que ele está tentando encontrar o tamanho correto da caixa e não consegue. Existe uma solução alternativa ou correção para esse bug?

Minha externalização é feita por

\tikzset{external/system call={latex \tikzexternalcheckshellescape -halt-on-error 
-interaction=batchmode -jobname "\image" "\texsource" &&
dvips -o "\image".ps "\image".dvi && ps2eps "\image".ps;}}

que gera boas imagens .eps. As imagens geradas estão boas e a caixa teria o tamanho correto, quando incluída manualmente com \includegraphics{figure0.eps}.


Aqui está uma abordagem para um possível hack. A princípio, incluí meus números com \subimport{path}{filename.tikz} ajuda de subdiretórios, baseados no pacote import.

Com base nesta ideia comecei a substituir esta importação por \tikzimport{path}{filename.tikz}contendo

\newcommand{\tikzimport}[2]{%
\ifdraft{%
  % create counter, increment
  \newstepcounter{\pgfkeysvalueof{/tikz/external/figure name}}%
  % define next filename of externalized tikz file
  \def\mynextfile{images/tikz/%
  \pgfkeysvalueof{/tikz/external/figure name}%
  \arabic{\pgfkeysvalueof{/tikz/external/figure name}}.eps}%
  % check is file is there, then includegraphics the file
  % as we are in draft, this gives a nice box
  \IfFileExists{\mynextfile}{% show tikz
  \includegraphics[scale=1]{\mynextfile}}{% fallback
  \mbox{\nolinkurl{\mynextfile}}
}
}{% nodraft
  \subimport{#1}{#2}%
}

Isso requer o ifdraftpacote e um contador para cada figure namesufixo. A criação de um contador (se não existir) é conseguida por

\makeatletter
\def\newstepcounter#1{%
\@ifundefined{c@#1}{%
\newcounter{#1}}{%
\stepcounter{#1}}%
}
\makeatother

Problemas

  • Isso não é muito legal...

  • o prefixo externalizado do tikz é codificado, não tenho ideia de como extrair o prefixo dos internos do tikz. O prefixo é definido por \tikzexternalize[prefix=images/tikz/]mas \pgfkeys{/tikz/external/prefix}volta vazio

  • Tenho alguns gráficos que não estão sendo externalizados, pois eles retornam errados se forem externalizados. Seria bom testar para cada chamada, se a externalização está habilitada para cada gráfico.

eu cansei

\newif\isexternal
\pgfkeys{/tikz/external/export/.is if=isexternal}
\isexternal
  external
\else
  not external
\fi

Mas esse teste dá resultados falsos o tempo todo.

informação relacionada