添加 \pause 后,beamer 中的间距似乎会发生变化

添加 \pause 后,beamer 中的间距似乎会发生变化

beamer当我添加命令时,似乎有时会添加垂直空间\pause;下面是一个例子。有什么方法可以避免这种情况吗?

\documentclass{beamer}
\begin{document}
\begin{frame}
  Without pause:
  \[A\]\[B\]
  Not too much space between displayed equations.
\end{frame}
\begin{frame}
  With pause:
  \[A\]\pause\[B\]
  Too much space between the equations.
\end{frame}
\end{document}

答案1

是的,\pause在您的例子中,在空行上插入了“某些内容”。您可以通过使用“跳回”一行来摆脱它\vspace*{-\baselineskip} \pause

\documentclass{beamer}% http://ctan.org/pkg/beamer
\begin{document}
\begin{frame}
  Without pause:
  \[A\]\[B\]
  Not too much space between displayed equations.
\end{frame}
\begin{frame}
  With pause:
  \[A\]\vspace*{-\baselineskip}\pause\[B\]
  Too much space between the equations.
\end{frame}
\end{document}​

答案2

通常不建议连续使用一个显示的方程式。在这种情况下,你可以这样做

\begin{gather*}
A \\ B
\end{gather*}

问题是\pause在环境中不能可靠地工作amsmath,但你可以使用我的这个答案

\documentclass{beamer}
\makeatletter
\let\save@measuring@true\measuring@true
\def\measuring@true{%
  \save@measuring@true
  \def\beamer@sortzero##1{\beamer@ifnextcharospec{\beamer@sortzeroread{##1}}{}}%
  \def\beamer@sortzeroread##1<##2>{}%
  \def\beamer@finalnospec{}%
  }
\makeatother
\begin{document}
\begin{frame}
  Without pause:
  \begin{gather*}
    A \\
    B
  \end{gather*}
  Not too much space between displayed equations.
\end{frame}
\begin{frame}
  With pause:
  \begin{gather*}
    A \\ \pause
    B
  \end{gather*}
  Same space between the equations.
\end{frame}
\end{document}

我要指出的是,间距与 的间距不同\[A\]\[B\]。一方面,gather不会“看到”该行Without pause很短,因此它会在该行和 之间留出更多垂直空间A。另一方面,A和之间的空间会变小;这可以通过使用而不是 来B调整。(根据您的需要调整。)\\[1ex]\\1ex


如果你想坚持使用两个单独的显示:正如 Werner 所说,在原本空的行上\pause插入一些内容(即一个或两个s),这将提供额外的一个垂直空间。你可以使用以下命令阻止 TeX 放置这个额外的垂直空间\pdfliteral\baselineskip

\par\pause\noindent

而不是\pause\par在第一次显示后结束空行,\noindent在第二次显示之前保持空行空(并且\parskip在中为零beamer);另请参阅我的这个答案了解详情。

相关内容