当谈到矩阵乘法 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}
这将设置块内的每一列相同的宽度,这可能不是最好的,但却是自动的。