
我正在使用 Beamer 進行演示,需要使用 \only<.> 和 \boxed{} 的幫助。
我想得到如下效果:
a=b+c
a=b+c
c=d
a=b+d
c=d
a=b+\盒裝{d}
c=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 boxed”而不移動“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
。不幸的是,湯姆·索利德的解決方案在插入額外的間距後看起來很尷尬。
我不確定你\boxed
從哪裡得到(我猜它是由投影機間接加載的),但我發現它在多個包中定義為:
\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
應該來前the=
而不是在它之後。您會注意到在湯姆的範例中,之間的間距A和= 大於= 和之間的間距乙。移動 & 符號可以解決該問題。