Contadores LaTeX em TikZ foreach-loop com beamer

Contadores LaTeX em TikZ foreach-loop com beamer

Quero desenhar um gráfico completo com tikZ. Primeiro os nós, depois as linhas do primeiro nó para os demais, depois as linhas do segundo nó para os demais e assim por diante. Todas essas etapas funcionam com loops foreach e cada desenho deve aparecer passo a passo com a função beamer \visible<..>. Minha ideia era usar um contador LaTeX global para contar todas as etapas em todos os loops foreach.

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

O MWE compila, mas quando removo o comentário, o texmaker é executado em um loop infinito. Por que? insira a descrição da imagem aqui

Responder1

Você sempre aumenta o contador para um valor em que mais um slide é inserido porque o slide é "executado" várias vezes. A beamerclasse tem um comando para tais situações, \resetcounteronoverlays. Usar este comando corrige seu problema.

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

No entanto, eu desenharia isso de forma diferente de qualquer maneira.

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

insira a descrição da imagem aqui

informação relacionada