对矩阵中所有至少有一个负项的列设置 \phantom{-}

对矩阵中所有至少有一个负项的列设置 \phantom{-}

我想\phantom{-}向矩阵的每一列添加至少一个-前面带有 的条目。这是一个答案我当前的代码就是基于此。它插入\phantom{-}每一个条目不是负面的,但这不是我真正想要的。

我目前的尝试附在下面。请注意,在没有负数的数组中,它会在每个条目前面插入幻像,从而增加整体宽度。

\documentclass{article}
\usepackage{amsmath}
\usepackage{array}
\usepackage{etoolbox}


\begin{document}
\[
    \begin{bmatrix}
        1 & 2 & 12345 \\
        5 & 2 & 5     \\
        0 & 1 & 1
    \end{bmatrix}
\]

% code that inserts \phantom{-}
\makeatletter
\def\env@matrix[#1]{\hskip -\arraycolsep
    \let\@ifnextchar\new@ifnextchar
    \array{*\c@MaxMatrixCols #1}}
\@tfor\@temp:=\matrix\pmatrix\bmatrix\Bmatrix\vmatrix\Vmatrix\do
{\expandafter\patchcmd\@temp
{\env@matrix}
{\@ifnextchar[
\env@matrix{\env@matrix[C]}}
{}{\FAILED}}
\newcolumntype{C}{>{\CheckSign}c}
\def\CheckSign\ignorespaces{%
\@ifnextchar-{}{\@ifnextchar+{}{\phantom{-}}}}
\makeatother

\[
    \begin{bmatrix}
        1 & 2 & 12345 \\
        5 & 2 & 5     \\
        0 & 1 & 1
    \end{bmatrix}
\]
\end{document}

我的工作示例的输出:

相关内容