如何设置 `bmatrix` 的“列字符宽度”?

如何设置 `bmatrix` 的“列字符宽度”?

请考虑以下矩阵:

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

相关内容