![Beamer 在停顿后将公式装入盒子](https://linux22.com/image/420540/Beamer%20%E5%9C%A8%E5%81%9C%E9%A1%BF%E5%90%8E%E5%B0%86%E5%85%AC%E5%BC%8F%E8%A3%85%E5%85%A5%E7%9B%92%E5%AD%90.png)
我正在与 Beamer 一起做演示,我需要有关 \only<.> 和 \boxed{} 使用的帮助。
我想得到以下效果:
a=b+c
a=b+c
離=d
a=b+d
離=d
a=b+\boxed{d}
離=d
我使用了以下代码,但我不喜欢这种效果,因为当它将框放在 d 周围时,它也会移动“c=d”。有人能帮我找到其他代码吗?
\begin{align*}
a=b+\only<1-2>c
\only<3>{d}
\only<4>{\boxed{d}}
\end{align*}
\pause
c=d
因此,我想在“a=b+d”出现后将“d 装箱”,而不移动“c=d”。
有人能帮助我吗?
答案1
第一的:你没有align
正确使用。你必须在环境中写入“c=d” align
,然后用“粘合”这两个方程式&
。
第二:d
您必须精确对齐“d”以对应于和之间的宽度差异\boxed{d}
。
有两种解决方案(假设框架是居中对齐的);两种方法都应该有效,但不知何故第二种更好。
\documentclass{beamer}
% For both solutions
\usepackage{calc}
% Just for the second solution
\newlength{\firslength}
\settowidth{\firslength}{\boxed{d}}
\newlength{\secondlength}
\settowidth{\secondlength}{d}
\begin{document}
\begin{frame}
% First solution
\begin{align*}
a=&b+\only<1-2>{\hspace*{(\widthof{\boxed{d}}-\widthof{d})/2}c\hspace*{(\widthof{\boxed{d}}-\widthof{d})/2}}%
\only<3>{\hspace*{(\widthof{\boxed{d}}-\widthof{d})/2}d\hspace*{(\widthof{\boxed{d}}-\widthof{d})/2}}%
\only<4>{\boxed{d}}\\%
\uncover<2->{c=&d}%
\end{align*}
% Second solution
\begin{align*}
a=&b+\only<1-2>{\hspace*{\dimexpr(\firslength-\secondlength)/2}c\hspace{\dimexpr(\firslength-\secondlength)/2}}%
\only<3>{\hspace*{\dimexpr(\firslength-\secondlength)/2}d\hspace{\dimexpr(\firslength-\secondlength)/2}}%
\only<4>{\boxed{d}}\\%
\uncover<2->{c=&d}%
\end{align*}
\end{frame}
\end{document}
答案2
这里的问题是\boxed{d}
的宽度与 不同d
。不幸的是,Tom Solid 的解决方案由于插入了额外的间距而看起来很尴尬。
我不确定你\boxed
从哪里得到(我猜它是由 beamer 间接加载的)但我发现它在多个包中定义为:
\newcommand{\boxed}[1]{\fbox{\m@th$\displaystyle#1$}}
(或等效命令)。深入研究 的定义,框内内容周围\fbox
有额外的空间,加上线条的宽度。我们可以使用它来创建一个新命令(或任何你喜欢的称呼),它将删除已添加的空间,以便框在打印时溢出到周围的现有空白处。\fboxsep
\fboxrule
\bxed
d
\newcommand{\bxed}[1]{\mbox{\kern-\fboxsep\kern-fboxrule\boxed{#1}\kern-\fboxsep\kern-fboxrule}}
这应该会产生期望的结果。
此外,&
环境中align
应该前而=
不是在它之后。您会注意到,在 Tom 的例子中,A和 = 大于 = 和之间的间距b。移动“&”符号即可修复该问题。