Tikz externalisieren im Entwurfsmodus

Tikz externalisieren im Entwurfsmodus

Dies ist eine Fortsetzung vonDer Entwurfsmodus in Tikz externalize verbirgt Grafiken, jedoch nicht ohne externalize

Ich schreibe ein langes Dokument und die Kompilierung dauert. Einige Diagramme sind als Tikz enthalten (Export aus matlab2tikz) und andere Bilder sind einfach mit enthalten \includegraphics. Ich verwende den Workflow Latex -> Dvips -> PS2PDF. Zur Beschleunigung befindet sich das Dokument im Entwurfsmodus (meistens bin ich nicht daran interessiert, alle Bilder zu sehen). Zur Beschleunigung von Tikz funktioniert die Externalisierung einwandfrei.

Wie jedoch inDer Entwurfsmodus in Tikz externalize verbirgt Grafiken, jedoch nicht ohne externalize, der Tikz-Entwurf führt zu kleinen Kästchen. Die ursprüngliche Abbildungsgröße scheint verloren zu gehen und das Dokument beginnt sich ziemlich zu bewegen.

Ich erhalte die Warnungen:

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.

und das Ergebnis ist nur eine kleine Box. Es sieht so aus, als würde versucht, die richtige Boxgröße zu finden, und es scheitert. Gibt es eine Problemumgehung oder einen Fix für diesen Fehler?

Meine Externalisierung geschieht durch

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

das gute .eps-Bilder erzeugt. Die erzeugten Bilder sind in Ordnung und die Box hätte die richtige Größe, wenn sie manuell mit eingefügt würde \includegraphics{figure0.eps}.


Hier ist ein Ansatz für einen möglichen Hack. Zuerst habe ich meine Zahlen eingefügt, \subimport{path}{filename.tikz} die bei Unterverzeichnissen helfen, basierend auf dem Paket import.

Basierend auf dieser Idee begann ich, diesen Import durch \tikzimport{path}{filename.tikz}folgendes zu ersetzen:

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

Dazu ist das ifdraftPaket und ein Zähler für jedes figure nameSuffix erforderlich. Das Erstellen eines Zählers (falls dieser nicht vorhanden ist) erfolgt durch

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

Probleme

  • Das ist nicht wirklich schön...

  • das externalisierte Tikz-Präfix ist fest codiert, ich habe keine Ahnung, wie ich das Präfix aus den internen Komponenten von Tikz extrahieren kann. Das Präfix wird gesetzt, kommt \tikzexternalize[prefix=images/tikz/]aber \pgfkeys{/tikz/external/prefix}leer zurück

  • Ich habe einige Grafiken, die nicht externalisiert werden, da sie bei Externalisierung falsch zurückgegeben werden. Es wäre gut, bei jedem Aufruf zu testen, ob die Externalisierung für jedes Diagramm aktiviert ist.

Ich bin müde

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

Aber dieser Test liefert immer ein falsches Ergebnis.

verwandte Informationen