\pause 扰乱了页面布局

\pause 扰乱了页面布局

我在 beamer 中有一个框架,当我不使用暂停 (\pause) 时,它可以正确编译。但是,当我暂停不同的列表项时,最后的项目不再出现在框架上(实际上,它们在框架可视部分之外)。似乎在包含暂停的情况下,beamer 在计算如何在页面上容纳不同的项目时遇到了一些问题。

知道如何避免这个问题吗?

编辑:一些表现出该问题的源代码:

\documentclass[slidetop,11pt]{beamer}
\linespread{1.2}
\begin{document}

\begin{frame}{Kubo-Greenwood Transport Formalism : Derivation}
Mott Method :
\begin{itemize}
\pause \item Electric field :
\footnotesize
\begin{equation*}
E(t) = E_0 cos(\omega t) u_x
\end{equation*}
\normalsize
\pause \item Coulomb gauge ($E=\delta A / \delta t$) :
\footnotesize
\begin{equation*}
A(t) = -\frac{E_0}{2 i \omega} (e^{i \omega t} - e^{-i \omega t}) u_x
\end{equation*}
\normalsize 
\pause \item First order perturbation of H :
\footnotesize
\begin{equation*}
\delta \widehat{H} (t) = \frac{2e \widehat{P}.A(t)}{2 m} = e \widehat{V}.A(t) = -\frac{e     E_0}{2 i \omega}(e^{i\omega t} - e^{-i \omega t}) \widehat{V}_x
\end{equation*}
\normalsize
\pause \item Transition from a state at t=0 to a state at t :
\footnotesize
\begin{equation*}
p_{nm} (t) = \frac{1}{\hbar^2} \left |\int_0^t d\tau e^{i(E_m-E_n) \tau / \hbar} \langle    m|\delta \widehat{H}(\tau)|n \rangle \right |^2
\end{equation*}
\normalsize
\pause \item At long times :
\footnotesize
\begin{equation*}
\frac{p_{nm}(t)}{t}  = \frac{2 \pi}{\hbar} \left(\frac{e2E_0}{2 \omega}\right)^2 \langle m|\widehat{V}_x|n \rangle \left[ \delta(E_m-E_n+\hbar \omega) +  \delta(E_m-E_n-\hbar     \omega)\right]
\end{equation*}
\normalsize
\end{itemize}
\end{frame}

\end{document}

实际上,多亏了 vanden 的评论,我尽量少提供软件包和评论,我才设法找到了导致此编译错误的原因。使用 \pause 时,是“\linespread{1.2}”命令搞乱了一切。如果没有可用的修复方法,我想我会将其注释掉。

答案1

item 有特殊的语法 -pause出于这个原因,我从未尝试过列表,但我猜这是造成麻烦的原因。尝试删除所有停顿并替换\begin{itemize}

\begin{itemize}[<+->]

这将逐一显示每一项。如需更细粒度的控制,请使用例如以下代码代替上述更改:

\item<3->

要使项目出现在幻灯片 3 及以上。还有其他变体,请参阅 Beamer 用户指南。

答案2

您观察到了这种奇怪的行为!您使用的语法本身没有错——不过,我将在下面解释为什么输出会出错。Neil 建议使用 ,这\begin{itemize}[<+->]是您示例中的一个很好的替代方案\pause。如果您想使用\pause相同的方法,那么有一个简单的解决方法:添加一个空行(或\par有问题的\pauses 将删除额外的垂直空间,即

\pause\item

一切都会好的!

那么,是什么导致了不必要的垂直空间呢?额外的空行消除空格?问题是前面显示的方程式和\item后面显示的方程式的组合\pause:显示后,TeX 进入水平模式,准备构建一行新文本。(这意味着这\lastskip是最后一个水平的skip,即0pt;见下文。)在该行上\pause添加一些s,以 结尾。这已经提供了一个额外的垂直空间。除此之外,还添加了一个(因为位于之后,另见下文)。\pdfliteral\item\par\baselineskip\item\itemsep\lastskip0pt\par

如果没有\pause,这些垂直空格就不会出现:显示的等式后面的行保持为空,因此\par不会添加\baselineskip。此外,最后一个垂直跳过\lastskip现在是\belowdisplayskip(或\belowdisplayshortskip),它大于\itemsep,并且在这种情况下\item设计为不添加。\itemsep

\par为什么 help前面有一个空行(即) \pause?它结束了 TeX 在显示后开始的行,使 TeX 进入垂直模式。该行仍然是空的,因此没有\baselineskip添加!此外,在垂直的模式,\lastskip又是最后一个垂直的跳过\belowdisplay(short)skip。现在\pause会做一些\unskip神奇的事情,这样\pdfliterals 就不会影响\lastskip。然后\item发出另一个\par,但这不会做任何事情,因为 TeX 已经处于垂直模式。最后,\lastskip仍然与没有 相同\pause,因此也\item不会添加\itemsep

总之: \pause 可能在水平模式下(当 TeX 构建行和段落时)会出现问题,但在垂直模式下使用是安全的¹。这就是为什么 a\par之前的 a\pause在某些情况下会有所帮助。


只是为了好玩,这里重新定义了一个,\pause它向前看,\par如果看到一个\item(或一个\par),就会自动插入一个:

\makeatletter
\AtBeginDocument{%
  \let\saved@pause\pause
  \renewcommand\pause{\futurelet\pause@next@char\pause@i}%
  \newcommand\pause@i{%
    \ifx\pause@next@char\par\par\fi
    \ifx\pause@next@char\item\par\fi
    \saved@pause
  }%
}
\makeatother

¹然而,在盒子顶部\vtop,当 TeX 在内部的垂直模式,\pause可以造成问题

相关内容