如何水平對齊兩個矩陣的元素?

如何水平對齊兩個矩陣的元素?

我想將兩個矩陣放置在彼此下方,以便矩陣的列也呈現在彼此下方。我想要的一個例子:

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

示範

相關內容