
Estou fazendo uma apresentação com o Beamer e preciso de ajuda com o uso de \only<.> e \boxed{}.
Eu gostaria de obter o seguinte efeito:
a=b+c
a=b+c
c=d
a=b+d
c=d
a=b+\boxed{d}
c=d
Usei o código a seguir mas não gosto do efeito porque quando coloca a caixa em torno de d ele move também "c=d". Alguém poderia me ajudar a encontrar um código diferente?
\begin{align*}
a=b+\only<1-2>c
\only<3>{d}
\only<4>{\boxed{d}}
\end{align*}
\pause
c=d
Então, eu gostaria de obter o "d box" depois que "a = b + d" aparecer sem mover "c = d".
Alguém poderia me ajudar?
Responder1
Primeiro:você não usa align
corretamente. Você tem que escrever "c=d" dentro do ambiente align
e "colar" as duas equações com um &
.
Segundo:você deve alinhar "d" com precisão correspondendo às diferenças entre a largura de d
e \boxed{d}
.
Existem duas soluções (assumindo que o quadro esteja alinhado ao centro); ambos devem funcionar, mas de alguma forma o segundo é melhor.
\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}
Responder2
O problema aqui é que \boxed{d}
tem uma largura diferente de d
. A solução de Tom Solid, infelizmente, parece estranha com o espaçamento extra inserido.
Não tenho certeza de onde você veio \boxed
(acho que ele é carregado indiretamente pelo beamer), mas descobri que está definido em vários pacotes como:
\newcommand{\boxed}[1]{\fbox{\m@th$\displaystyle#1$}}
(ou seu equivalente). Aprofundando-se nas definições de \fbox
que há espaço extra \fboxsep
ao redor do conteúdo da caixa dentro da caixa mais a largura das linhas que é \fboxrule
. Podemos usar isso para criar um novo comando \bxed
(ou como você preferir chamá-lo) que removerá o espaço que foi adicionado para que a caixa se espalhe para o espaço em branco existente ao redor d
quando for impressa.
\newcommand{\bxed}[1]{\mbox{\kern-\fboxsep\kern-fboxrule\boxed{#1}\kern-\fboxsep\kern-fboxrule}}
Isso deve dar o resultado desejado.
Além disso, o &
ambiente align
deve viranteso =
e não depois dele. Você notará no exemplo de Tom que o espaçamento entreae = é maior que o espaçamento entre = eb. Mover o E comercial corrige esse problema.