![如何设置 `bmatrix` 的“列字符宽度”?](https://linux22.com/image/373348/%E5%A6%82%E4%BD%95%E8%AE%BE%E7%BD%AE%20%60bmatrix%60%20%E7%9A%84%E2%80%9C%E5%88%97%E5%AD%97%E7%AC%A6%E5%AE%BD%E5%BA%A6%E2%80%9D%EF%BC%9F.png)
请考虑以下矩阵:
\begin{equation}
\begin{bmatrix*}[r]
1 & -123 & 1 & 1 \\
2 & 123 & 2 & 12 \\
3 & 12 & 3 & 123 \\
-4 & 0 & 4 & -123
\end{bmatrix*}
\end{equation}
显示时,列的宽度为:[2, 4, 1, 4]
。(我可能在这里误用了“宽度”这个词。但我希望问题很清楚。)
我的问题是:如何强制所有列的“字符宽度”等于 4?
答案1
这是一种方法。但是我认为它看起来不太好看。有些视觉效果与列宽没有直接关系,如果需要的话,应该根据具体情况进行修正。比较这两种方法:
\documentclass{article}
\usepackage{mathtools}
\begin{document}
\begin{equation}
\begin{bmatrix*}[r]
\phantom{-23}1 & -123 & \phantom{-23}1 & 1 \\
2 & 123 & 2 & 12 \\
3 & 12 & 3 & 123 \\
-4 & 0 & 4 & -123
\end{bmatrix*}
\end{equation}
\begin{equation}
\begin{bmatrix*}[r]
1 & -123 & \phantom{-3}1 & 1 \\
2 & 123 & 2 & 12 \\
3 & 12 & 3 & 123 \\
-4 & 0 & 4 & -123
\end{bmatrix*}
\end{equation}
\end{document}
答案2
siunitx
以下是使用该包及其S
列类型的解决方案。例如@Bernard 在他的回答中,我并不认为等宽列宽解决方案有吸引力。
\documentclass{article}
\usepackage{mathtools}
\usepackage{siunitx}
\newcolumntype{T}[1]{S[table-format=#1]}
\begin{document}
\[ \begin{bmatrix*}[r]
1 & -123 & 1 & 1 \\
2 & 123 & 2 & 12 \\
3 & 12 & 3 & 123 \\
-4 & 0 & 4 & -123
\end{bmatrix*} \]
% "-3.0" means: set aside space for minus symbol, 3 digits, and 0 decimals
\[ \left[ \begin{array}{@{} *{4}{T{-3.0}} @{}}
1 & -123 & 1 & 1 \\
2 & 123 & 2 & 12 \\
3 & 12 & 3 & 123 \\
-4 & 0 & 4 & -123
\end{array} \right] \]
\end{document}