Tikz externaliza en modo borrador

Tikz externaliza en modo borrador

Este es un seguimiento deEl modo borrador en Tikz externalizar oculta gráficos, pero no sin externalizar

Estoy escribiendo un documento largo y la compilación lleva tiempo. Algunas gráficas se incluyen como tikz (exportación desde matlab2tikz) y otras imágenes simplemente se incluyen con \includegraphics. Estoy usando el flujo de trabajo látex -> dvips -> ps2pdf. Para acelerar, el documento está en modo borrador (la mayoría de las veces, no me interesa ver todas las imágenes). Para acelerar tikz, la externalización funciona bien.

Sin embargo, como se explica enEl modo borrador en Tikz externalizar oculta gráficos, pero no sin externalizar, el borrador tikz da como resultado cuadros pequeños. El tamaño original de la figura parece perderse y el documento empieza a moverse bastante.

Recibo las advertencias:

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.

y el resultado es solo una pequeña caja. Parece que está intentando encontrar el tamaño de caja correcto y falla. ¿Existe alguna solución o arreglo para este error?

Mi exteriorización se hace por

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

lo que genera buenas imágenes .eps. Las imágenes generadas están bien y el cuadro tendría el tamaño correcto si se incluye manualmente con \includegraphics{figure0.eps}.


Aquí hay un enfoque para un posible truco. Al principio, incluí mis figuras \subimport{path}{filename.tikz} que ayudan con los subdirectorios, según el paquete import.

Basado en esta idea comencé a reemplazar esta importación con \tikzimport{path}{filename.tikz}contenido

\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}%
}

Esto requiere el ifdraftpaquete y un contador para cada figure namesufijo. La creación de un contador (si no existe) se logra mediante

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

Problemas

  • Esto no es realmente agradable...

  • El prefijo externalizado de tikz está codificado, no tengo idea de cómo extraer el prefijo de los elementos internos de tikz. El prefijo está establecido por \tikzexternalize[prefix=images/tikz/]pero \pgfkeys{/tikz/external/prefix}vuelve vacío.

  • Tengo algunos gráficos que no se externalizan, ya que salen mal si se externalizan. Sería bueno probar para cada llamada, si la externalización está habilitada para cada gráfico.

estoy cansado

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

Pero esta prueba resulta falsa todo el tiempo.

información relacionada