
Я хочу нарисовать полный граф с помощью 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}