
Ich möchte mit tikZ einen kompletten Graphen zeichnen. Zuerst die Knoten, dann die Linien vom ersten Knoten zu den anderen, dann die Linien vom zweiten Knoten zu den restlichen und so weiter. Alle diese Schritte funktionieren mit foreach-Schleifen und jede einzelne Zeichnung soll Schritt für Schritt mit der Beamer-Funktion \visible<..> erscheinen. Meine Idee war, einen globalen LaTeX-Zähler zu verwenden, der alle Schritte über alle foreach-Schleifen hinweg zählt.
\documentclass[10pt,ngerman]{beamer}
\usepackage{tikz}
\newcounter{steps}
\begin{document}
\begin{frame}{Complete Graph}
\begin{tikzpicture}[
kreis/.style={circle, draw, minimum size=1.5cm},
]
\foreach [count=\i] \letter in {A,...,F}{%
% \stepcounter{steps}
\visible<\thesteps->{%
\node [kreis] (\letter) at (\i*60+30:2.5) {\huge{\letter}};
}
}
\end{tikzpicture}
\end{frame}
\end{document}
Das MWE kompiliert, aber wenn ich den Kommentar entferne, läuft Texmaker in einer Endlosschleife. Warum?
Antwort1
Du erhöhst den Zähler immer so weit, dass eine weitere Folie eingefügt wird, weil die Folie mehrmals „ausgeführt“ wird. beamer
Für solche Situationen hat die Klasse einen Befehl \resetcounteronoverlays
. Die Verwendung dieses Befehls behebt dein Problem.
\documentclass[10pt,ngerman]{beamer}
\usepackage{tikz}
\newcounter{steps}
\resetcounteronoverlays{steps}
\begin{document}
\begin{frame}{Complete Graph}
\begin{tikzpicture}[
kreis/.style={circle, draw, minimum size=1.5cm},
]
\foreach [count=\i] \letter in {A,...,F}{%
\stepcounter{steps}
\visible<\thesteps->{%
\node [kreis] (\letter) at (\i*60+30:2.5) {\huge{\letter}};
}
}
\end{tikzpicture}
\end{frame}
\end{document}
Ich würde das allerdings sowieso anders zeichnen.
\documentclass[10pt,ngerman]{beamer}
\usepackage{tikz}
\usetikzlibrary{overlay-beamer-styles}
\begin{document}
\begin{frame}{Complete Graph}
\begin{tikzpicture}[
kreis/.style={circle, draw, minimum size=1.5cm},
]
\foreach [count=\i] \letter in {A,...,F}{%
{%
\node[visible on=<\i->] [kreis] (\letter) at (\i*60+30:2.5) {\huge{\letter}};
}
}
\end{tikzpicture}
\end{frame}
\end{document}