Workflow für Projekte mit vielen Tikz-Figuren/Plots

Workflow für Projekte mit vielen Tikz-Figuren/Plots

Ich liebe LaTeX und TikZ für die Erstellung hochwertiger Dokumente. Das Problem ist, dassGroße Projekte erfordern eine ziemlich lange KompilierungszeitUnddas komplizierte TikZ-Figuren/Plots überschreiten schnell die Speichergrenze. Ich kann seinem Problem ausweichen, indem ich verschiedene Abschnitte in meine einfüge main.texund diese konsequenterweise auskommentiere, wenn ich nicht an ihnen arbeite. Ein alternativer Ansatz ist eine Externalisierung meiner TikZ-Figuren/Plots, aber das ist auch nicht optimal, weil ich Plots oft in sequenzieller Reihenfolge auskommentieren und dann jeden Plot in sequenzieller Reihenfolge kompilieren muss. Aber das Kompilieren des gesamten Projekts wird ziemlich problematisch.

Frage: Deshalb möchte ich die beste Vorgehensweise für die Verwaltung großer Projekte mit einer enormen Menge an Ti kennenkZ Figuren/Plots.

Antwort1

Wenn ich Sie richtig verstehe, liegt der Grund dafür, dass tikzexternalizees bei Ihnen nicht funktioniert, darin, dass es durcheinander gerät und Bilder neu kompiliert, wenn Sie die Reihenfolge der Abbildungen ändern, indem Sie Teile auskommentieren. Das Problem scheint hier zu sein, dass tikzexternalizedie relative Position einer Abbildung im Dokument verwendet wird, um darauf zu verweisen.

Eine Möglichkeit, tikzexternalizeBilder auch dann wiederzuerkennen, wenn sie ihre Position ändern, besteht darin, sie zu benennen (dann tikzexternalizewird die Reihenfolge nicht mehr verwendet, um auf Bilder zu verweisen). Vorausgesetzt, Sie laden Ihre TikZ-Bilder aus externen Dateien können Sie beispielsweise folgendermaßen vorgehen:

\newcommand{\inputtikz}[1]{%
  \tikzsetnextfilename{#1}%
  \input{#1.tikz}%
}

und verwenden Sie es dann \inputtikz{name of file}dort, wo Sie Ihre Figur platzieren möchten. Dies bleibt stabil, wenn Sie Ihre Figuren verschieben oder Abschnitte auskommentieren.

Natürlich können Sie auch jede Abbildung manuell benennen \tikzsetnextfilename{name}oder einen anderen Befehl/eine andere Umgebung definieren, die dies übernimmt und für Ihren Arbeitsablauf besser geeignet ist.

Antwort2

In einem solchen Fall würde ich die Umgebung so neu definieren, dass tikzpicturesie nur ein Kommentar ist, während ich mit dem Text oder einem anderen Teil meines Dokuments arbeite, und diese Neudefinition auskommentieren, wenn das Dokument fertig ist oder wenn ich es mit allen darin enthaltenen Abbildungen sehen möchte.

Ich würde auch die alte Definition davon beibehalten, um mit einzelnen tikzpicturesin einer Umgebung namens currenttikzpicture(dieser lange Name nur zur Demonstration) arbeiten zu können.

Code:

\documentclass{article}    
\usepackage{tikz}
\usepackage{verbatim}
\let\oldtikzpicture\tikzpicture
\let\oldendtikzpicture\endtikzpicture
\renewenvironment{tikzpicture}[1][]{\comment}{\endcomment}
\newenvironment{currenttikzpicture}[1][]{\oldtikzpicture[#1]}{\oldendtikzpicture}

\begin{document}
\begin{tikzpicture}[scale=0.5]
\foreach \i in {1,2,...,4}{\draw[-,thick,red]  (\i,0)to[in={\i*10}, out={170-\i*10}]({2*\i},{4*\i+1}) to[in={170-\i*10},out={270-\i*10}] ({2*\i-3},{\i/10})--(\i,0);}
\end{tikzpicture}

\begin{tikzpicture}[scale=0.5]
\foreach \i in {1,2,...,4}{\draw[-,thick,red]  (\i,0)to[in={\i*10}, out={170-\i*10}]({2*\i},{4*\i+1}) to[in={170-\i*10},out={270-\i*10}] ({2*\i-3},{\i/10})--(\i,0);}
\end{tikzpicture}

\begin{tikzpicture}[scale=0.5]
\foreach \i in {1,2,...,4}{\draw[-,thick,red]  (\i,0)to[in={\i*10}, out={170-\i*10}]({2*\i},{4*\i+1}) to[in={170-\i*10},out={270-\i*10}] ({2*\i-3},{\i/10})--(\i,0);}
\end{tikzpicture}

\begin{currenttikzpicture}[scale=0.5]
\foreach \i in {1,2,...,4}{\draw[-,thick,green]  (\i,0)to[in={\i*10}, out={170-\i*10}]({2*\i},{4*\i+1}) to[in={170-\i*10},out={270-\i*10}] ({2*\i-3},{\i/10})--(\i,0);}
\end{currenttikzpicture}



Test
\end{document}

PS: Ich weiß, dass die Zahlen in der Ausgabe nicht an der richtigen Stelle bleiben, aber das stört mich nicht wirklich, solange ich versuche, schneller zu arbeiten.

verwandte Informationen