![投影仪对齐时出现 \pause 问题](https://linux22.com/image/233184/%E6%8A%95%E5%BD%B1%E4%BB%AA%E5%AF%B9%E9%BD%90%E6%97%B6%E5%87%BA%E7%8E%B0%20%5Cpause%20%E9%97%AE%E9%A2%98.png)
我有以下代码,(编辑:) 现在没有了aligned
。
\documentclass{beamer}
\mode<presentation> { \setbeamercovered{transparent} }
\begin{document}
\begin{frame}
\[
\begin{cases}
%\begin{aligned}
v(t,x) &= g(t,x), \\
\pause
u(x) &= f(x) %& (x\in\mathbb R)
%\end{aligned}
\end{cases}
\]
\end{frame}
\end{document}
(在问题的第一个版本中,没有任何内容被注释掉。)
它编译得很好,但如果我使用 beamer.cls ,除“u(x)”之外的所有内容都会显示在第一张幻灯片上v 1.70 2007/03/11 18:50:44
。在工作的另一台计算机上,我们安装了旧版本,即v 1.55 2004/10/11 16:09:50
;那里一切都按预期工作:在第一张幻灯片上,完整的第二行以透明样式显示。
如果我使用纯 TeX 也会发生同样的情况\halign
,所以cases
不是罪魁祸首。此外,如果我不使用\setbeamercovered{transparent}
,那么一切都会按预期工作。换句话说,\pause
不能与\setbeamercovered{transparent}
和一起使用\halign
。
这是在和beamer
版本之间引入的一个错误吗?(如果是,那么我很惊讶,因为它认为这是一个相当严重的问题。)有人知道一种解决方法,不需要像马修对我的原始问题的回答那样多的标记吗?1.55
1.70
答案1
从 Beamer 手册中,在用例的中间:
欧几里得发现,他还可以
\pause
在定义和例子之间添加一个。因此,\pause
s 似乎超越了环境,欧几里得发现这非常有用。经过一些实验,他发现\pause
align
仅在环境中不起作用他立即给 Beamer 的作者写了一封电子邮件,但收到了一个礼貌的答复,指出align
做了坏事,而且没有解决办法。另外,Euclid 指出了用户指南的最后一部分,其中描述了一种解决方法。(重点添加)
这是我的解决方法,使用\action
:
\documentclass{beamer}
\mode<presentation> { \setbeamercovered{transparent} }
\begin{document}
\begin{frame}
\[
\begin{cases}
\begin{aligned}
\action<+->{v(t,x) &= g(t,x), \\}
\action<+->{u(x)} &\action<.->{=f(x)} & \action<.->{(x\in\mathbb R)}
\end{aligned}
\end{cases}
\]
\end{frame}
\end{document}
令人惊讶的是,第二行必须将对齐的每个单元格包含在一个动作规范中,而第一行可以只包含一个动作规范(也许这与它默认显示在所有幻灯片上有关)。但我记得 Till 给 Euclid 的建议:
align
做了邪恶的事情,并且没有解决办法。
添加:如果我没记错的话\action
,是通用的\only
。增量覆盖规范<+->
非常值得学习。请参阅 Beamer 手册第 8 节,或者至少是我的 3.06 手册第 8 节:“创建覆盖”。
答案2
最后我跟随约瑟夫的建议,最终找到了一个简单的解决方法:将\beamerorig@set@color
和重新定义\beamerorig@reset@color
到 2007 年之前的状态。使用下面的代码,\pause
s 的工作完全符合预期:
我还用两组真实的幻灯片对此进行了测试,没有发现任何不良的副作用。
\documentclass{beamer}
\mode<presentation> { \setbeamercovered{transparent} }
\setbeamertemplate{navigation symbols}{}
\makeatletter
\def\beamerorig@set@color{%
\pdfliteral{\current@color}%
\aftergroup\reset@color
}
\def\beamerorig@reset@color{\pdfliteral{\current@color}}
\makeatother
\begin{document}
\begin{frame}
\[
\begin{cases}
\begin{aligned}
v(t,x)&= g(t,x), \\ \pause
u(x) &= f(x) & \pause
(x\in\mathbb R)
\end{aligned}
\end{cases}
\]
\end{frame}
\end{document}
因此,很可能“align
做坏事”(见马修的回答\setbeamercovered{transparent}
),但在 2007 年之前,如果使用,这并不相关,所以对我来说,\pause
在 内工作得很好align
。(针对这种情况的修复\setbeamercovered{transparent}
是不是可以发现我的这个答案。
2007 年发生了什么?pdftex.def
发布了 0.04a 版,支持颜色堆栈。为此,使用了\set@color
和的新定义;这就是和在 中的含义。而且看起来这个颜色堆栈版本在 和 朋友中不能正常工作。在上面的代码中,我使用了和的定义形成\reset@color
\beamerorig@set@color
\beamerorig@reset@color
\let
beamerbasecolor.sty
align
\set@color
\reset@color
0.03t 版pdftex.def
。
答案3
如果您不介意使用eqnarray
代替align
,那么您就可以让暂停起作用。至少这是我的经验。
答案4
(因为我遇到了同样的问题,所以再次提出这个问题。)只需\pause
通过增量覆盖规范替换 AMS 环境内部\uncover<+(1)->{...}
就可以很好地工作:
\begin{frame}{Title}
Stuff.\pause
\[
\begin{cases}
\begin{aligned}
v(t,x) &= g(t,x), \\
\uncover<+(1)->{
u(x) &= f(x) \quad (x\in\mathbb R)
}
\end{aligned}
\end{cases}
\]
\pause
More stuff.
\end{frame}