我想为beamer
幻灯片一点一点地揭示/绘制一幅图画。我想象在循环\only
内使用\foreach
应该可行,例如:
\documentclass{beamer}
\usepackage{tikz}
\begin{document}
\begin{frame}
\begin{tikzpicture}[every node/.style={draw,circle}]
\node (n0) {$0$};
\foreach \i [evaluate=\i as \j using \i-1] in {1,...,3} {%
\only<\i->{%
\node[right of=n\j] (n\i) {$\i$};
}
}
\end{tikzpicture}
\end{frame}
\end{document}
不幸的是,出现了两个问题。
节点名称出了问题;我收到以下形式的错误
Package pgf Error: No shape named n0.0 is known.
\j
当在的参数中使用时\only
,我收到数百个错误和页面。
这里发生了什么?
答案1
显然,evaluate
不会产生整数,而是浮点数(错误消息暗示了这一点)。使用
\def\j{\the\numexpr\i-1\relax}
而是(当然是在循环内部)\j
以所需的方式计算并解决两个问题。
PGF 有一些宏可以使其变得更好;
\pgfmathtruncatemacro{\j}{\i-1}
有同样的效果。
然而,最优雅的方式是由克劳迪奥·菲安德里诺:
\foreach \i [evaluate=\i as \j using int(\i-1)]