如何在循环期间更改列表选项?

如何在循环期间更改列表选项?

我目前有一个 beamer 演示文稿,使用 forloop 包,它基本上看起来像这样:

\documentclass{beamer}

\usepackage{forloop}

\begin{document}

\newcounter{ctr}
\newcounter{gulp}

\forLoop{1}{3}{ctr}{

    \ifnum\thectr=1
        \def \endvalue {2}
    \else
        \def \endvalue {1}
    \fi

    \forLoop{1}{\endvalue}{gulp}{
        \begin{frame}{Plan}
            \begin{itemize}[]
                \item {\ifnum\thectr=1\ifnum\thegulp=2\color{red}\fi\fi 1 }
                \item {\ifnum\thectr=2\color{red}\fi 2 }
                \item {\ifnum\thectr=3\color{red}\fi 3 }
            \end{itemize}
        \end{frame}
    }

    \ifnum\thectr=1 { \begin{frame}{All about 1}\end{frame} } \fi

    \ifnum\thectr=2 { \begin{frame}{All about 2}\end{frame} } \fi

    \ifnum\thectr=3 { \begin{frame}{All about 3}\end{frame} } \fi
}

\end{document}

所以我的结构是这样的:我解释计划,然后展示我正在执行的计划项目,展开该项目,重复直到完成。但是,我想更改列表选项,以便计划幻灯片第一次出现时(ctr=1,gulp=1)它将采用不同的格式(具体来说,[<+->],或项目的增量显示。)

我怎样才能用条件更改格式?我尝试了一些方法,例如,

\begin{frame}{Plan}
  \ifnum\thectr=1\ifnum\thegulp=1\begin{itemize}[<+->]\fi
  \else \begin{itemize}[]\fi
  \item {\ifnum\thectr=1\ifnum\thegulp=2\color{red}\fi\fi 1 }

\ifnum\thectr=1\ifnum\thegulp=1\def \listformat { <+-> }
\else \def \listformat { } \fi
\begin{itemize[\listformat]}

所以,伙计们,谁能告诉我[可能非常明显的]方法吗?

答案1

您可以使用覆盖规范和\againframe命令做任何您想做的事情。首先,按如下方式格式化列表:

\begin{enumerate}[<+-| alert@+>]
\item collect underpants
\item ...
\item profit!
\end{enumerate}

规范+-规定,每项应自动将暂停计数器加一,并从此步骤开始显示该项目。规范alert@+规定,应\alert在当前暂停时显示该项目,但之后不显示。这相当于:

\begin{enumerate}
\item<1- | alert@1> collect underpants
\item<2- | alert@2> ...
\item<3- | alert@3> profit!
\end{enumerate}

其次,如果您使用label=myframe选项标记一个框架,您可以稍后通过键入 来返回它\againframe{myframe}。您可以将其与叠加规范相结合,以立即显示一个框架的一张幻灯片(或几张幻灯片),稍后显示其他幻灯片。例如:

\begin{frame}<1>[label=myframe] \only<1>{foo} \only<2>{bar} \end{frame}
% displays slide 1 of this frame only

\begin{frame} stuff about foo \end{frame}

\againframe<2>{myframe} % now display slide 2 only

\begin{frame} stuff about bar \end{frame}

把它们放在一起得到以下结果:

\documentclass{beamer}
\begin{document}

\begin{frame}<1>[label=theplan]{The Plan}
\begin{enumerate}[<+-| alert@+>]
\item collect underpants
\item ...
\item profit!
\end{enumerate}
\end{frame}

\begin{frame}{Step 1: Collect Underpants}
\end{frame}

\againframe<2>{theplan}

\begin{frame}{Step 2: ...}
\end{frame}

\againframe<3>{theplan}

\begin{frame}{Step 3: Profit!}
\end{frame}

\end{document}

示例代码输出

相关内容