我正在使用 LaTeX beamer 和forloop
-package 创建一个 for 循环,并且我想在里面使用计数器\only-command
。这是一个 MWE(或更像是不起作用的示例):
\documentclass[12pt]{beamer}
\usepackage{forloop}
\begin{document}
\begin{frame}
\begin{center}
\newcounter{slideno}
\forloop{slideno}{1}{\value{slideno} < 20}{
\only<\value{slideno}>{\arabic{slideno}}%
}
\end{center}
\end{frame}
\end{document}
错误信息是:
! LaTeX Error: Command \c@slideno already defined.
Or name \end... illegal, see p.192 of the manual.
现在,这里的帖子[0]告诉我使用这样的计数器\only
应该是可能的,事实上,如果我注释掉 for 循环(并添加\setcounter
),它就会像魔法一样工作。
for 循环对计数器有魔力吗?我能以某种方式规避这个问题吗?
多谢,
卢卡斯
答案1
由于frame
它本身确实以某种方式在每张幻灯片中复制内容,因此\newcounter
在 中frame
包含多张幻灯片的命令当然会导致 的多重定义slideno
,这是错误的。
将\newcounter{slideno}
定义放入序言中(这对于计数器来说始终是一个好主意。)
还有缺失%
的\forloop
\forloop{slideno}{1}{\value{slideno} < 20}{
\only<\value{slideno}>{\arabic{slideno}}%
}
会导致数字向右移动,而
\forloop{slideno}{1}{\value{slideno} < 20}{%
\only<\value{slideno}>{\arabic{slideno}}%
}
将提供“固定”的数字。
\documentclass[12pt]{beamer}
\usepackage{forloop}
\newcounter{slideno}
\begin{document}
\begin{frame}
\begin{center}
\forloop{slideno}{1}{\value{slideno} < 20}{%
\only<\value{slideno}>{\arabic{slideno}}%
}
\end{center}
\end{frame}
\end{document}