更新 beamer 中的矩阵条目

更新 beamer 中的矩阵条目

我正在尝试在 beamer 演示文稿中展示矩阵的行缩减。我想使用覆盖图展示行缩减的连续步骤。以下接近我想要做的。问题是,一旦第一列的所有减号消失(覆盖图 4),右侧的矩阵就会移动。我尝试使用 beamer 用户指南第 9.5 节中关于“动态更改文本或图像”的方法,但在方程环境中似乎都无法overprint正常overlayarea工作。任何提示都很棒!

\begin{frame}{Row-echelon form}
  Reduce the following matrix to row-echelon form.
  \[\begin{bmatrix}
    2 & 1 & -1 & 3 \\
    1 & -1 & 2 & 1 \\
    -4 & 6 & -7 & 1 \\
    2 & 0 & 1 & 3
  \end{bmatrix}
  \onslide<2->
  \to
  \begin{bmatrix}
    1 & -1 & 2 & 1 \\
    \alt<2>{2}{0} & \alt<2>{1}{3} & \alt<2>{-1}{-5} & \alt<2>{3}{1} \\
    \alt<2-3>{-4}{0} & \alt<2-3>{6}{2} & \alt<2-3>{-7}{1} & \alt<2-3>{1}{5} \\
    \alt<2-4>{2}{0} & \alt<2-4>{0}{2} & \alt<2-4>{1}{-3} & \alt<2-4>{3}{1}
  \end{bmatrix}\]
  \action<5>{}
\end{frame}

答案1

一种可能性是使用array具有类型列的环境p{<length>},而不是bmatrix

\documentclass{beamer}
\usepackage{array}

\begin{document}

\begin{frame}{Row-echelon form}
  Reduce the following matrix to row-echelon form.
  \[
\left[
\begin{array}{*{4}{>{\raggedleft\arraybackslash$}p{1.3em}<{$}}}
    2 & 1 & -1 & 3 \\
    1 & -1 & 2 & 1 \\
    -4 & 6 & -7 & 1 \\
    2 & 0 & 1 & 3
  \end{array}
\right]
  \onslide<2->
  \to
\left[
  \begin{array}{*{4}{>{\raggedleft\arraybackslash$}p{1,3em}<{$}}}
    1 & -1 & 2 & 1 \\
    \alt<2>{2}{0} & \alt<2>{1}{3} & \alt<2>{-1}{-5} & \alt<2>{3}{1} \\
    \alt<2-3>{-4}{0} & \alt<2-3>{6}{2} & \alt<2-3>{-7}{1} & \alt<2-3>{1}{5} \\
    \alt<2-4>{2}{0} & \alt<2-4>{0}{2} & \alt<2-4>{1}{-3} & \alt<2-4>{3}{1}
  \end{array}
\right]
\]
  \action<5>{}
\end{frame}

\end{document}

在此处输入图片描述

答案2

您可以通过测量两个替代方案的宽度并使用两个宽度中较大的一个来避免条目移动。为此,我\mathmakeboxlargestof使用这个很好的答案菲利普·古特 (Philippe Goutet) 著。

动画输出

\documentclass{beamer}
\usepackage{calc}
\usepackage{mathtools}
\newlength{\letterwidth}
\newcommand{\mathmakeboxlargestof}[3]{%
    \setlength{\letterwidth}{\maxof{\widthof{$#1$}}{\widthof{$#2$}}}%
    \mathmakebox[\letterwidth]{\vphantom{#1}\vphantom{#2}#3}%
}
\makeatletter
\newcommand\replace{}
\def\replace<#1>#2#3{%
    \alt<#1>{\mathmakeboxlargestof{#2}{#3}{{#2}}}%
            {\mathmakeboxlargestof{#2}{#3}{{#3}}}%
    }
\makeatother

\begin{document}

\begin{frame}{Row-echelon form}
  Reduce the following matrix to row-echelon form.
  \[\begin{bmatrix}
    2 & 1 & -1 & 3 \\
    1 & -1 & 2 & 1 \\
    -4 & 6 & -7 & 1 \\
    2 & 0 & 1 & 3
  \end{bmatrix}
  \onslide<2->
  \to
  \begin{bmatrix}
    1 & -1 & 2 & 1 \\
    \replace<2>{2}{0} & \replace<2>{1}{3} & \replace<2>{-1}{-5} & \replace<2>{3}{1} \\
    \replace<2-3>{-4}{0} & \replace<2-3>{6}{2} & \replace<2-3>{-7}{1} & \replace<2-3>{1}{5} \\
    \replace<2-4>{2}{0} & \replace<2-4>{0}{2} & \replace<2-4>{1}{-3} & \replace<2-4>{3}{1}
  \end{bmatrix}\]
  \action<5>{}
\end{frame}

\end{document}

{}请注意,我在条目#2和周围使用了额外的括号#3;否则减号的间距就不正确。

相关内容