如何水平对齐两个矩阵的元素?

如何水平对齐两个矩阵的元素?

我想将两个矩阵放在一起,这样矩阵的列也可以放在一起。下面是我想要的示例:

  |100 200|
A=| 30  3 |
  | 1  119|

b=[ 1   0 ]

我尝试过这个:

\begin{align*}
    A= &\begin{vmatrix}
        100 & 200 \\
        30 & 3\\
        1 & 119
    \end{vmatrix}\\
    b= &\begin{bmatrix}
        1 & 0
    \end{bmatrix}
\end{align*}

...但它只对齐了 = 符号,而不是两个矩阵的列。有什么诀窍吗?提前致谢!

答案1

我认为数字应该在相应的列中右对齐。如果是这样,你可以

  • 使用{vmatrix*}[r]环境并采用适当选择的指令用不可见的零\phantom“填充”行向量中的数字;或者b

  • 加载siunitx包并在环境中使用其S列类型array

在此处输入图片描述

\documentclass{article}
\usepackage{mathtools}% for 'vmatrix*' and 'align*' env.
\usepackage{siunitx}  % for 'S' column type
\begin{document}
\begin{align*}
    A&= \begin{vmatrix*}[r]
        100 & 200 \\
        30 & 3\\
        1 & 119
    \end{vmatrix*}\\
    b&= \begin{vmatrix*}[r]
        \phantom{00}1 & \phantom{00}0
    \end{vmatrix*}
\end{align*}

\begin{align*}
    A&= \left\lvert 
        \begin{array}{@{}*{2}{S[table-format=3.0]}@{}}
        100 & 200 \\
        30 & 3\\
        1 & 119
        \end{array} 
        \right\rvert\\
    b&= \left\lvert 
        \begin{array}{@{}*{2}{S[table-format=3.0]}@{}}
        1 & 0
        \end{array} 
        \right\rvert
\end{align*}
\end{document}

答案2

扩展 Mico 的解决方案,使用起来比较棘手bmatrix,因为括号越长,宽度就越宽。我使用保存框来测量宽度,而不必输入两次代码。

\documentclass{article}
\usepackage{mathtools}% for 'bmatrix*'
\usepackage{array}
\usepackage{collcell}

\newlength{\mywidth}
\settowidth{\mywidth}{$222$}% adjust to fit

\newcommand{\Rcolumn}[1]{\mathmakebox[\mywidth][r]{#1}}
\newcolumntype{R}{>{\collectcell\Rcolumn}c<{\endcollectcell}}

\newsavebox{\tempbox}

\begin{document}
\savebox{\tempbox}{$\displaystyle \begin{bmatrix*}[R]
        100 & 200 \\
        30 & 3\\
        1 & 119
    \end{bmatrix*}$}
\begin{align*}
    A&= \usebox{\tempbox}\\
    b&= \mathmakebox[\wd\tempbox][c]{\begin{bmatrix*}[R]
        1 & 0
    \end{bmatrix*}}
\end{align*}
\end{document}

演示

相关内容