投影仪中的覆盖:用不同的颜色逐项列出项目

投影仪中的覆盖:用不同的颜色逐项列出项目

我在使用 Beamer 时遇到了问题。我尝试使用包含不同颜色项目的列表,每次只显示一个。

这是我的 MWE:

\documentclass{beamer}
\usetheme{Warsaw}

\newcommand\coloreditem[1]{\setbeamercolor{item projected}{bg=#1}\item}

\begin{document}
\begin{frame}
\begin{itemize}[<+->]
  \coloreditem{red} First
  \coloreditem{blue} Then
  \coloreditem{green} Now
  \coloreditem{orange} Last
  \end{itemize}
\end{frame}
\end{document}

它有 4 页,项目符号数量递增。但是,项目全部来自第一种颜色:

MWE 第 4 页

通过更换

\begin{itemize}[<+->]

\begin{itemize}

我只得到一页,但颜色正确

期望结果

您知道为什么这不起作用吗?最好的方法是什么?

答案1

要清楚地了解它为什么不起作用,您可能需要深入研究 beamer。我猜 \item 与其后的文本断开了,而这些文本应该显示在同一张幻灯片上。解决这个问题的一种方法是将它们放在一个命令中。下面是一个版本,其中 \citem{color}{text} 打印彩色项目符号,然后打印文本。带星号的版本一个接一个地出现。

\documentclass{beamer}
\usetheme{Warsaw}

\makeatletter
\def\citem{\@ifstar\c@itemstar\c@item}
\def\c@item#1#2{\c@@item[#1]{#2}}
\def\c@itemstar#1#2{\uncover<+->{\c@@item[#1]{#2}}}
\def \c@@item[#1]#2{\setbeamercolor{item}{fg=#1} \item #2}
\makeatother

\begin{document}
%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\begin{itemize}
  \citem{red}{First}
  \citem{blue}{Then}
  \citem{green}{Now}
  \citem{orange}{Last}
\end{itemize}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\begin{itemize}
  \citem*{red}{First}
  \citem*{blue}{Then}
  \citem*{green}{Now}
  \citem*{orange}{Last}
\end{itemize}
\end{frame}

\end{document}

最好也有一个默认颜色。现在 color 命令会更改默认值,并且 \item 打印的下一个项目符号也具有相同的值。可以通过让 color 参数为可选来实现。

相关内容