LaTeX-Zähler in TikZ-Foreach-Schleife mit Beamer

LaTeX-Zähler in TikZ-Foreach-Schleife mit Beamer

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? Bildbeschreibung hier eingeben

Antwort1

Du erhöhst den Zähler immer so weit, dass eine weitere Folie eingefügt wird, weil die Folie mehrmals „ausgeführt“ wird. beamerFü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}

Bildbeschreibung hier eingeben

verwandte Informationen