我想使用 beamer 突出显示算法的操作,并且需要在每次操作后在页面上编辑可视化数据结构。为简单起见,假设我有一个列表。幻灯片如下所示:
---
L: []
---
L: [1]
1. Appended 1 to list
---
L: [1,2]
1. Appended 1 to list
2. Appended 2 to list
---
总共有 3 张幻灯片。我希望 L 位于每张幻灯片上的相同位置,这样当我切换到下一张幻灯片时,其内容就会发生一些变化,并且执行的相应操作会添加到下面。
有没有简单的方法可以实现这样的效果?我完全不知道如何提供这种效果,但如果需要最小模板,那么这里就是:
\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usetheme{Boadilla}
\begin{document}
\begin{frame}
\frametitle{foo}
$L: [1,2]$
\begin{itemize}
\item Appended 1 to list
\item Appended 2 to list
\end{itemize}
\end{frame}
\end{document}
换句话说,我希望通过上述 3 张幻灯片的顺序到达这张幻灯片。
答案1
使用 beamer 命令\only<_range_>{_content_}
或\onslide<_range_>{_content_}
。它们仅显示所_content_
提供的_range_
,例如\only<1>{}
幻灯片 1、\only<2->{}
从 2 开始的所有幻灯片等。
only
和之间的区别onslide
在于输出的呈现:仅表现为代码仅存在于此幻灯片上,而 \onslide 呈现输出,但它仅在提供的幻灯片上可见。
在 itemize 和 enumerate 环境中,您只需在 之后使用这些范围命令\item
,而不需要for
或onslide
。
以下是示例:
\documentclass{beamer}
\begin{document}
\begin{frame}
L: [\only<1>{ }\only<2->{1}\only<3->{, 2}]
\begin{enumerate}
\item<2-> Appended 1 to list
\item<3-> Appended 2 to list
\end{enumerate}
\end{frame}
\end{document}
结果如下: