![使用 \only 隐藏内容时避免块中的高度闪烁](https://linux22.com/image/266614/%E4%BD%BF%E7%94%A8%20%5Conly%20%E9%9A%90%E8%97%8F%E5%86%85%E5%AE%B9%E6%97%B6%E9%81%BF%E5%85%8D%E5%9D%97%E4%B8%AD%E7%9A%84%E9%AB%98%E5%BA%A6%E9%97%AA%E7%83%81.png)
当使用如下结构时,块的高度会在帧之间发生变化。这种变化会分散观众对内容的注意力。如何固定块的高度,使其不会“闪烁”?
\documentclass{beamer}
\title{MWE of flickering boxes}
\author{\textsc{Jon Doe}}
\begin{document}
\frame{\titlepage}
\section{Flickering boxheight}
\begin{frame}\frametitle{The upper box flickers}
\begin{block}{\only<1-2>{Examples:} \only<3>{Pausetext:}\only<4>{Examples again:}}<1-4>
\only<1-2,4>{\begin{itemize}
\item<1-2,4> Example 1
\item<2-,4> Example 2
\end{itemize}}
\only<3>{Oneliner}
\end{block}
\begin{block}{Another Box}<3->
Your Adverrtisement could be here
\end{block}
\end{frame}
\end{document}
答案1
来自beamer
文档(部分9.5 动态更改文本或图像,第 84 页):
有时您可能希望框架的某些部分在幻灯片之间动态变化。在框架的每一张幻灯片上,此区域内应显示不同的内容。您可以通过提供
\only
如下命令列表来实现动态更改文本的效果:\only<1>{Initial text.} \only<2>{Replaced by this on second slide.} \only<3>{Replaced again by this on third slide.}
这种方法的问题在于,它可能会导致行高出现轻微但令人讨厌的差异,这可能会导致整个框架在幻灯片之间“摆动”。如果替换文本有几行长,这个问题会变得更加严重。
为了解决这个问题,您可以使用两个环境:
overlayarea
和overprint
。第一个更灵活,但不太用户友好。
这是一个使用的选项overlayarea
:
\documentclass{beamer}
\title{MWE of flickering boxes}
\author{\textsc{Jon Doe}}
\begin{document}
\frame{\titlepage}
\section{Flickering boxheight}
\begin{frame}
\frametitle{The upper box flickers}
\begin{overlayarea}{\linewidth}{5\baselineskip}
\begin{block}{\only<1-2>{Examples:}\only<3>{Pausetext:}\only<4>{Examples again:}}<1-4>
\only<1-2,4>{\begin{itemize}
\item<1-2,4> Example 1
\item<2-,4> Example 2
\end{itemize}}
\only<3>{Oneliner}
\end{block}
\end{overlayarea}
\begin{block}{Another Box}<3->
Your Adverrtisement could be here
\end{block}
\end{frame}
\end{document}
覆盖区域固定为整体\linewidth
,高度为5\baselineskip
。