Beamer encaixotando uma fórmula após uma pausa

Beamer encaixotando uma fórmula após uma pausa

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:

  1. a=b+c

  2. a=b+c

    c=d

  3. a=b+d

    c=d

  4. 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 aligncorretamente. Você tem que escrever "c=d" dentro do ambiente aligne "colar" as duas equações com um &.

Segundo:você deve alinhar "d" com precisão correspondendo às diferenças entre a largura de de \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}

insira a descrição da imagem aqui

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 \fboxque há espaço extra \fboxsepao 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 dquando 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 aligndeve 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.

informação relacionada