\documentclass{beamer}
\begin{document}
\begin{frame}{Motivations}
\begin{itemize}
\item Let's look at picture a and picture b
\end{itemize}
\begin{overlayarea}{\textwidth}{4cm}
\only<1>{
\begin{figure}
\includegraphics[height=4cm]{a.png}
\end{figure}
}
\only<2>{
\begin{figure}
\includegraphics[height=4cm]{b.png}
\end{figure}
}
\only<3->{
%\begin{itemize}
\item Basically, picture a and picture b show a cat.
\item The pictures are taken from different angles.
%\end{itemize}
}
\end{overlayarea}
\end{frame}
\end{document}
在这个演示中,我首先展示“让我们看看图片 a 和图片 b”,然后逐张展示图片 a 和 b。最后在第 3 页,我揭示了总结图片的文字并隐藏了图片。
上述代码无法编译。我认为\item
它在 overlayarea 环境中不起作用。
如果我取消注释\begin{itemize}
,则代码主要可以工作,只是项目之间的距离不相同。
如何使这 3 个项目看起来像在单个列表中,并避免文本抖动?
我阅读了 beamer 手册的第 9.5 章“动态更改文本或图像”,但没有找到有用的提示。
我尝试过了\setlength\topsep{0pt} \setlength\partopsep{0pt}
从如何使用 enumitem 删除 beamer 中 itemize 命令上方的空白但它似乎不起作用。
可以安全地假设最后两项比图片短。
答案1
您的代码无法构建,因为您itemize
在第一次之后结束了您的环境,但您继续在环境之外\item
使用。\item
如果您移动\end{itemize}
到列表末尾,\item
由于overlay
环境原因,您的 s 之间会出现一个空格。避免这种情况的一种方法是overlay
先启动环境,然后将您的itemize
环境放入其中。
\documentclass{beamer}
\begin{document}
\begin{frame}{Motivations}
\begin{overlayarea}{\textwidth}{4cm}
\begin{itemize}
\item Let's look at picture a and picture b
\only<1>{%
\begin{figure}
\includegraphics[height=4cm]{example-image-a}
\end{figure}%
}
\only<2>{%
\begin{figure}
\includegraphics[height=4cm]{example-image-b}
\end{figure}%
}
\only<3->{%
\item Basically, picture a and picture b show a cat.
\item The pictures are taken from different angles.
}
\end{itemize}
\end{overlayarea}
\end{frame}
\end{document}