如何防止由于列表项的行高变化而导致投影仪的对齐方式发生变化?

如何防止由于列表项的行高变化而导致投影仪的对齐方式发生变化?

考虑这个简单的设置:

\documentclass{beamer}

\begin{document}
  \begin{frame}
    \begin{block}{The One}
      \begin{itemize}
        \item \only<1>{This is a tall row.}
              \only<2>{This one is ganglier.}
      \end{itemize}
    \end{block}

    \begin{block}{The Other}
      Just a regular block that should stay where it is.
    \end{block}
  \end{frame}
\end{document}

现在的问题是,计算出的框高度显然发生了变化(请注意,高行没有“深”字母,而瘦长的行有),并且块的对齐方式不同。这会产生糟糕的幻灯片过渡效果:

在此处输入图片描述

我当前的解决办法是增加\phantom{g}高行。

有没有一种不那么棘手的解决方案,最好是可以全局消除这种影响的解决方案?

注意:这确实不是在没有周围列表的情况下发生!也就是说,如果你有

\begin{block}{The One}
    \only<1>{This is a tall row.}
    \only<2>{This one is ganglier.}
\end{block}

我们得到:

在此处输入图片描述

答案1

这是一个众所周知的(并且有文档记录;参见beamer文档第 9.5 节)叠加效果,恐怕没有通用的解决方案。两种可能的解决方案是使用\struts 代替\items 或使用overprintoverlayarea环境:

\documentclass{beamer}

\begin{document}
  \begin{frame}
    \begin{block}{The One}
      \begin{itemize}
        \item \only<1>{\strut This is a tall row.}
              \only<2>{\strut This one is ganglier.}
      \end{itemize}
    \end{block}

    \begin{block}{The Other}
      Just a regular block that should stay where it is.
    \end{block}

    \begin{block}{The One}
    \begin{overprint}
      \begin{itemize}
        \item \only<1>{This is a tall row.}
              \only<2>{This one is ganglier.}
      \end{itemize}
    \end{overprint}
    \end{block}

    \begin{block}{The Other}
      Just a regular block that should stay where it is.
    \end{block}

  \end{frame}
\end{document}

在此处输入图片描述

相关内容