我在投影机的 tcolorbox 中有一个项目列表。
\begin{tcolorbox}[title=item list 1]
\begin{itemize}[<+->]
\item 1a
\item 1b
\item 1c
\end{itemize}
\end{tcolorbox}
项目列表 1 中的项目 1a、1b、1c 逐一显示。
假设我想在 tcolorbox 中的同一框架上用另一个项目列表替换前一个项目列表,在揭示列表 1 中的所有项目之后。第二个列表也将逐个项目地揭示。
\begin{tcolorbox}[title=item list 2]
\begin{itemize}[<+->]
\item 2a
\item 2b
\item 2c
\end{itemize}
\end{tcolorbox}
我知道我可以使用类似环境\only<n>
来控制序列,但这意味着我必须手动用 标记列表 1 和 2 中的每个项目\item<n>
。当两个列表很长时(就我的情况而言,列表包含嵌套),这会非常耗时。在 中指定数字时,有没有办法将项目列表作为一个整体来处理\only<n>
。例如,
\begin{frame}{Two lists}
\only<1>{
% first list, expecting the items display one by one
% second list doesn't appear before the first list completely shown
\begin{tcolorbox}[title=item list 2]
\begin{itemize}[<+->]
\item 2a
\item 2b
\item 2c
\end{itemize}
\end{tcolorbox}
}
\only<2>{
% second list, expecting the items display one by one
\begin{tcolorbox}[title=item list 2]
\begin{itemize}[<+->]
\item 2a
\item 2b
\item 2c
\end{itemize}
\end{tcolorbox}
}
\end{frame}
目前,当我使用上面的代码时,beamer 只会显示列表 1 中的第一个项目和列表 2 中的前两个项目。我理解它将 1 和 2 视为\only<n>
两个项目列表中的项目数。
有什么想法可以在不手动计算每个项目并进行标记的情况下实现这一点?
答案1
除了 1 或 2,您还可以指定每个叠加层tcolorbox
应可见的范围。例如,您可以<-3>
指定第一个 tcolorbox 应出现在所有叠加层(包括第 3 个)上,<4->
第二个 tcolorbox 应出现在从第 4 个开始的所有叠加层上。
\documentclass{beamer}
\usepackage{tcolorbox}
\begin{document}
\begin{frame}{Two lists}
\begin{onlyenv}<-3>
\begin{tcolorbox}[title=item list 1]
\begin{itemize}[<+->]
\item 1a
\item 1b
\item 1c
\end{itemize}
\end{tcolorbox}
\end{onlyenv}
\begin{onlyenv}<4->
\begin{tcolorbox}[title=item list 2]
\begin{itemize}[<+->]
\item 2a
\item 2b
\item 2c
\end{itemize}
\end{tcolorbox}
\end{onlyenv}
\end{frame}
\end{document}