
Beamer を使用してプレゼンテーションを行っていますが、\only<.> と \boxed{} の使用についてサポートが必要です。
次のような効果を得たいです。
a=b+c
a=b+c
c=d
a=b+d
c=d
a=b+\boxed{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
したがって、「c=d」を移動せずに「a=b+d」が表示された後、「d」をボックス化したいと思います。
誰か助けてくれませんか?
答え1
初め:は正しく使用されていませんalign
。環境内に「c=d」と記述しalign
、2 つの方程式を で「接着」する必要があります&
。
2番目:d
との幅の差に応じて「d」を正確に揃える必要があります\boxed{d}
。
解決策は 2 つあります (フレームが中央揃えになっていると仮定)。どちらも機能するはずですが、2 番目の方法の方が優れている理由を説明します。
\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
前にトム=
の例では、1つのと = の間の間隔は、 = とbアンパサンドを移動すると、この問題は解決します。