在我的 beamer 演示中,对齐环境中有三个方程式。首先,它们应该按指定方式呈现。在步骤 2 中,第一个方程式的一部分应该有一个框。在步骤 3 中,第二个方程式的一部分应该有一个框。
问题在于这些框会增加间距并使得下面的内容跳转。
以下是 MWE:
\documentclass{beamer}
\begin{document}
\begin{frame}
\begin{align}
\only<1,3>{\sum a &= b \\ }
\only<2>{\boxed{\sum a} &= b \\ }
\only<1-2>{\sum c &= d\\}
\only<3>{\boxed{\sum c} &= d \\ }
e &= f
\end{align}
\end{frame}
\end{document}
我尝试了 overlayarea 和 overprint,但由于对齐环境(缺少 $),它们给出了错误。你有什么想法吗?
答案1
在这里,我创建了一个补充宏\nulboxed[color]{content}
,它获取内容并将其放置在默认的白色框中。因此,它占用的空间与 相同\boxed
,因为它使用相同的宏。
如果对不对称的左/右空间不满意,也可以在、和项\nulboxed
周围添加包装器。b
d
f
\documentclass{beamer}
\usepackage{xcolor}
\newcommand\nulboxed[2][white]{\textcolor{#1}{\boxed{\color{black}#2}}}
\begin{document}
\begin{frame}
\begin{align}
\only<1,3>{\nulboxed{\sum a} &= b \\ }
\only<2>{\boxed{\sum a} &= b \\ }
\only<1-2>{\nulboxed{\sum c} &= d\\}
\only<3>{\boxed{\sum c} &= d \\ }
\nulboxed{e} &= f
\end{align}
\end{frame}
\end{document}
\nulboxed
正如我上面提到的,如果采用右边的项,它看起来是这样的:
跟进
OP 评论说占用的垂直空间太大。可以通过将以下代码添加到序言中(适用于此 MWE)\smash
将其缩小到其参数的大小来解决这个问题\boxed
\let\svboxed\boxed
\def\boxed#1{\vphantom{#1}\smash{\svboxed{#1}}}
答案2
这里有一种方法,使用\smash
一些空间调整来重新定位元素,以便它们在幻灯片前进时看起来保持在相同的位置。
\documentclass{beamer}
\newcommand{\fixit}{\mkern6mu{}}
\begin{document}
\begin{frame}
\jot=6pt
\begin{align}
\only<1,3>{\fixit \sum a \fixit &= b \\ }
\only<2>{\vphantom{\sum}\smash{\displaystyle\boxed{\sum a}} &= b \\ }
\only<1-2>{\fixit \sum c \fixit &= d\\}
\only<3>{\vphantom{\sum}\smash{\boxed{\sum c}} &= d \\ }
e \fixit &= f
\end{align}
\end{frame}
\end{document}
元素被粉碎,并且使用恢复\boxed
的高度。\sum
\vphantom
这些线条太靠近,因此它们之间的空间(由\jot
(default = 3pt
) 定义)加倍。
为了调整水平位置,插入一个小的箕斗来代替缺失的箱式垂直件;箕斗的宽度是通过实验确定的。