如何使用 \only 或类似命令在 `align` 环境内对齐内容?

如何使用 \only 或类似命令在 `align` 环境内对齐内容?

请考虑以下 MWE:

\documentclass{beamer}

\usetheme{Copenhagen}

\begin{document}

\begin{frame}
\begin{block}{}
Text.
\begin{align*}
    A&=B\\
    \only<2>{
    &\color{red}{C=D+1-5M\implies E=1}\\
    }
    \uncover<3->{&=C\\}
    \uncover<4->{&=B}
\end{align*}
\end{block}
\end{frame}

\end{document}

问题出在幻灯片 2 上,其位置A=B与幻灯片 1、3 和 5 中的位置不相同:

MWE 输出

我想要红色,因为它是我将在下一步中使用的属性的注释,但是它是唯一一张与其他幻灯片不对齐的幻灯片。

我想要得到以下输出(见幻灯片 2):

我想要的是

我们如何才能不使用类似的命令来实现最后一幅图像\hspace

答案1

为了使元素在幻灯片之间停止闪烁,它们需要具有相同的宽度。可以使用以下组件来确保它们具有相同的宽度eqparbox(经过修改以允许通过 提供数学内容\eqmathbox[<tag>][<align>]{<stuff>})。此外,我使用\alt<os>{<default>}{<other>}放在<default>提供的overlays规范上,<other>否则。

在此处输入图片描述

\documentclass{beamer}

\usetheme{Copenhagen}
\usepackage{eqparbox}
%\usepackage{xparse}% If you have LaTeX2e < 2020-10-01

% https://tex.stackexchange.com/a/34412/5764
\makeatletter
% \eqmathbox[<tag>][<align>]{<math>}
\NewDocumentCommand{\eqmathbox}{o O{c} m}{%
  \IfValueTF{#1}
    {\def\eqmathbox@##1##2{\eqmakebox[#1][#2]{$##1##2$}}}
    {\def\eqmathbox@##1##2{\eqmakebox{$##1##2$}}}
  \mathpalette\eqmathbox@{#3}
}
\makeatother
\begin{document}

\begin{frame}

\begin{block}{}
  Text.
  \begin{align*}
    \eqmathbox[LHS][r]{A} &\eqmathbox[RHS][l]{{} = B} \\
    \alt<2>{\eqmathbox[LHS][r]{\color{red}C = D + 1}}{} &
      \alt<2>{\eqmathbox[RHS][l]{\color{red}{} - 5M \implies E = 1}}{\uncover<3->{= C}} \\
    \uncover<4->{&= D}
  \end{align*}
\end{block}

\end{frame}

\end{document}

相关内容