我正在编写一个命令来制作多个分项投影仪幻灯片,其中每个项目都会在下一张幻灯片上显示(但仍然可以看到未来的项目符号)。
不幸的是,它不太管用。项目符号的间距一开始就不正确,甚至直到生成的最后一张幻灯片才显示最后一个项目符号。
我的错误解决方案是使用嵌套的 multido 命令而不是 foreach,因为我需要使用索引。
以下是 MWE:
\documentclass{beamer}
\setbeamertemplate{frametitle}[default][center]
\usepackage{multido, arrayjob, ifthen} %arrays, etc, for the multiSlideItems command
%command for multi-slide lists in beamer
%usage: \multiSlideItems{SlidesTitle}{Pre-listContent}{listLength}{List-as-&-separatedArray}{Post-listContent}
\newcommand{\multiSlideItems}[5]{
\newarray\SlideItems
\readarray{SlideItems}{#4}
\multido{\i=1+1}{#3}{%
{\begin{frame}
\frametitle{#1}
#2 %The pre-list stuff
{\begin{itemize}
{\multido{\ii=1+1}{#3}{%
\ifthenelse{\i<\ii}{%
\item \phantom{\SlideItems(\ii)}}{%
\item \SlideItems(\ii)}}}
\end{itemize}
\ifthenelse{\i<#3}{\phantom{#5}}{#5}} %post-list stuff to display if the list has been fully revealed
\end{frame}}}
}
\begin{document}
\multiSlideItems{X}{}{3}{A&B&C}{}
\end{document}
答案1
你可以让 beamer 为你完成工作:
\documentclass{beamer}
\setbeamertemplate{frametitle}[default][center]
\newenvironment{myitemize}{%
\begingroup
\setbeamercolor{itemize item}{parent=structure}
\setbeamercolor{alerted text}{fg=black}
\setbeamercolor{itemize/enumerate body}{fg=white}
\begin{itemize}[<alert@+->]
}{
\end{itemize}
\endgroup
}
\begin{document}
\begin{frame}
\frametitle{X}
\begin{myitemize}
\item A
\item B
\item C
\end{myitemize}
\end{frame}
\end{document}