在 beamer 中用 `\uncover` 结束一系列 `\only`

在 beamer 中用 `\uncover` 结束一系列 `\only`

在我的beamer演讲中,我经常会遇到这样的情况:tikz在 中嵌入一长段代码\only,如下所示示意图结构:

\foreach\i in {1,...,100} {
   \only<\i>{
        [long piece of code]
   }
}
\only<101>{ some text }

some text出现时,前一个[long piece of code]消失。为了使其保留,我可以这样做:

\foreach\i in {1,...,99} {
   \only<\i>{
        [long piece of code]
   }
}
\uncover<100-> { [long piece of code] }
\only<101> { some text }

但这迫使我复制两遍长代码,既不优雅也不方便。我尝试使用以下\if命令:

 \foreach \i in {1,...,100} {
    \ifnum\i=100%
      \only<\i>%
    \else%
      \uncover<10>%
    \fi%
    {%
       [long piece of code]
    }
    \only<101>{ some text }

但它确实产生了所期望的结果。

我怎样才能使命令只保留最后一个元素?

答案1

您可以将条件叠加规范存储在宏中,然后执行此宏。下面我创建\doit\only\uncover,然后\doit{<long piece of code>}

在此处输入图片描述

\documentclass{beamer}

\usepackage{pgffor}

\begin{document}

\begin{frame}
  \frametitle{Frame title}

  \foreach\i in {1,...,10} {
    \ifnum\i<10
      \def\doit{\only<\i>}
    \else
      \def\doit{\uncover<10->}
    \fi
    \doit{[long piece of code \i]}
  }
  \only<11>{ some text }
\end{frame}

\end{document}

相关内容