Как выровнять элементы двух матриц по горизонтали?

Как выровнять элементы двух матриц по горизонтали?

Я хотел бы расположить две матрицы друг под другом так, чтобы столбцы матриц также отображались друг под другом. Пример того, что я хотел бы иметь:

  |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

Расширяя решение Мико, сложность использования bmatrixзаключается в том, что скобки становятся шире по мере того, как они становятся выше. Я использую savebox для измерения ширины без необходимости вводить код дважды.

\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}

демо

Связанный контент