在 beamer \only 中使用 forloop-counter

在 beamer \only 中使用 forloop-counter

我正在使用 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 循环对计数器有魔力吗?我能以某种方式规避这个问题吗?

多谢,

卢卡斯

[0]\only 与 counter、pdfcomment 和 beamer 类一起使用

答案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}

相关内容