垂直对齐两个矩阵的元素

垂直对齐两个矩阵的元素

当谈到矩阵乘法 AB=C 时,如果我将 B 放在 C 之上,一切就变得更容易可视化。但是,当实际条目的长度不同时,矩阵 B 和 C 无法垂直对齐。下面是我的代码

    \[
    \begin{aligned}
            &
            \begin{bmatrix}
            1&1&0\\
            1&0&1\\
            1&-1&0\\
            1&0&-1        
            \end{bmatrix} 
            \\
            \begin{bmatrix}
            1&1&1&1\\
            1&0&-1&0\\
            0&1&0&-1
            \end{bmatrix} 
            &
            \begin{bmatrix}
            4&0&0\\
            0&2&0\\
            0&0&2
            \end{bmatrix}     
    \end{aligned}
    \] 

结果如下: 右边的两个矩阵没有正确对齐

现在,我只是想在每个条目后添加一堆来\;增加矩阵的宽度。这种方法可能很方便,但当矩阵很大并且有很多条目时,它肯定不会很好地工作……

有办法解决这个小问题吗?谢谢。

答案1

如果您更喜欢居中对齐,该tabstackengine包允许将所有列宽固定为矩阵中最宽。这样,您只需填充较窄矩阵的单个元素即可使它们达到共同的宽度:

\documentclass{article}
\usepackage{amsmath,tabstackengine}
\setstacktabbedgap{10pt}
\begin{document}
    \[
    \fixTABwidth{T}
    \begin{aligned}
            &
            \bracketMatrixstack{
            1&1&0\\
            1&0&1\\
            1&-1&0\\
            1&0&-1      
            } 
            \\
            \bracketMatrixstack{
            1&1&1&1\\
            1&0&-1&0\\
            0&1&0&-1
            } 
            &
            \bracketMatrixstack{
            4&0&0\\
            0&2&0\\
            0&0&\mkern7mu 2\mkern7mu
            }   
    \end{aligned}
    \] 
\end{document}

在此处输入图片描述

\phantom{-}如果希望右对齐,则需要一个:

\documentclass{article}
\usepackage{amsmath,tabstackengine}
\setstacktabbedgap{10pt}
\begin{document}
    \[
    \fixTABwidth{T}
    \begin{aligned}
            &
            \bracketMatrixstack[r]{
            1&1&0\\
            1&0&1\\
            1&-1&0\\
            1&0&-1      
            } 
            \\
            \bracketMatrixstack[r]{
            1&1&1&1\\
            1&0&-1&0\\
            0&1&0&-1
            } 
            &
            \bracketMatrixstack[r]{
            4&0&0\\
            0&2&0\\
            0&0&\phantom{-}2
            }   
    \end{aligned}
    \] 
\end{document}

在此处输入图片描述

答案2

我建议您(a)加载mathtools包,(b)使用{bmatrix*}[r]环境而不是bmatrix环境,以及(c)\phantom{-}在第三个矩阵的第 2 列和第 3 列中各使用一条指令,以使这些列的宽度与其上方悬停的矩阵的列的宽度相等。

在此处输入图片描述

\documentclass{article}
\usepackage{mathtools} % for 'bmatrix*' env.
\begin{document}
    \[
    \begin{aligned}
            &
            \begin{bmatrix*}[r]
            1&1&0\\
            1&0&1\\
            1&-1&0\\
            1&0&-1      
            \end{bmatrix*}
            \\
            \begin{bmatrix*}[r]
            1&1&1&1\\
            1&0&-1&0\\
            0&1&0&-1
            \end{bmatrix*}
            &
            \begin{bmatrix*}[r]
            4&\phantom{-}0&\phantom{-}0\\
            0&2&0\\
            0&0&2
            \end{bmatrix*}
    \end{aligned}
    \] 
\end{document}

答案3

尝试一下nicematrix

  • 将环境包裹aligned在里面NiceMatrixBlock,并使用选项auto-columns-width
  • 使用bNiceMatrix而不是bmatrix环境,并使用选项R将每个单元格右对齐。

请注意,该选项auto-colums-width对每列使用相同的宽度,因此对于没有

\documentclass{article}
\usepackage{nicematrix}

\begin{document}
$\begin{NiceMatrixBlock}[auto-columns-width]
  \begin{aligned}
    & 
    \begin{bNiceMatrix}[R]
      1 & 1  & 0  \\
      1 & 0  & 1  \\
      1 & -1 & 0  \\
      1 & 0  & -1
    \end{bNiceMatrix}
    \\
    \begin{bNiceMatrix}[R]
      1 & 1 & 1  & 1  \\
      1 & 0 & -1 & 0  \\
      0 & 1 & 0  & -1
    \end{bNiceMatrix}
    &
    \begin{bNiceMatrix}[R]
      4 & 0 & 0 \\
      0 & 2 & 0 \\
      0 & 0 & 2
    \end{bNiceMatrix}
  \end{aligned}
\end{NiceMatrixBlock}$
\end{document}

这将设置块内的每一列相同的宽度,这可能不是最好的,但却是自动的。

在此处输入图片描述

相关内容