Счетчики LaTeX в цикле foreach TikZ с проектором

Счетчики LaTeX в цикле foreach TikZ с проектором

Я хочу нарисовать полный граф с помощью tikZ. Сначала узлы, затем линии от первого узла к другим, затем линии от второго узла к оставшимся и так далее. Все эти шаги работают с циклами foreach, и каждый отдельный рисунок должен появляться шаг за шагом с функцией beamer \visible<..>. Моя идея состояла в том, чтобы использовать глобальный счетчик LaTeX для подсчета всех шагов по всем циклам 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}

MWE компилируется, но когда я удаляю комментарий, то texmaker запускается в бесконечном цикле. Почему? введите описание изображения здесь

решение1

Вы всегда увеличиваете счетчик до значения, при котором вставляется еще один слайд, потому что слайд "выполняется" несколько раз. В beamerклассе есть команда для таких ситуаций, \resetcounteronoverlays. Использование этой команды решает вашу проблему.

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

Однако я бы в любом случае нарисовал это по-другому.

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

введите описание изображения здесь

Связанный контент