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.tex
und 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 tikzexternalize
es 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 tikzexternalize
die relative Position einer Abbildung im Dokument verwendet wird, um darauf zu verweisen.
Eine Möglichkeit, tikzexternalize
Bilder auch dann wiederzuerkennen, wenn sie ihre Position ändern, besteht darin, sie zu benennen (dann tikzexternalize
wird 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 tikzpicture
sie 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 tikzpictures
in 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.