使用 \only 隐藏内容时避免块中的高度闪烁

使用 \only 隐藏内容时避免块中的高度闪烁

当使用如下结构时,块的高度会在帧之间发生变化。这种变化会分散观众对内容的注意力。如何固定块的高度,使其不会“闪烁”?

\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.}

这种方法的问题在于,它可能会导致行高出现轻微但令人讨厌的差异,这可能会导致整个框架在幻灯片之间“摆动”。如果替换文本有几行长,这个问题会变得更加严重。

为了解决这个问题,您可以使用两个环境:overlayareaoverprint。第一个更灵活,但不太用户友好。

这是一个使用的选项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

相关内容