数组/矩阵指定默认对齐

数组/矩阵指定默认对齐

通常你会写一个类似这样的矩阵

\begin{align*}
    \begin{pmatrix}
        ele1 & ele2 & ele3 \\
        longEle1 & longEle2 & longEle3
    \end{pmatrix}
\end{align*}

矩阵中的元素现在将彼此居中。有了这个小补丁

\makeatletter
\renewcommand*\env@matrix[1][*\c@MaxMatrixCols c]{
    \hskip -\arraycolsep
    \let\@ifnextchar\new@ifnextchar
    \array{#1}
}
\makeatother

可以写出如下矩阵:

\begin{align*}
    \begin{pmatrix}[rrr]
        ele1 & ele2 & ele3 \\
        longEle1 & longEle2 & longEle3
    \end{pmatrix}
\end{align*}

并以此方式指定元素的对齐方式。

现在,我正在寻找一种方法来以某种方式重新定义数组环境中的默认对齐方式(因此对于矩阵也是如此)。

据我所知,它应该位于的声明中的某个地方array.sty,但到目前为止,我还没有找到它。

我在数组文档中只找到了这一段(参见https://www.ctan.org/pkg/array,第 31 页):

@塔巴雷

此宏测试可选括号,然后调用\@@array\@@array[c](默认)。

343〈*package〉344\def\@tabarray{\@ifnextchar[{\@@array}{\@@array[c]}}

但是改变这一行/usr/share/texmf-dist/tex/latex/tools/array.sty(在我的版本中这是第 324 行)并没有帮助。

有人知道怎么做吗?

答案1

这边走:

\makeatletter
\renewcommand*\env@matrix[1][*\c@MaxMatrixCols r]{%
    \hskip -\arraycolsep
    \let\@ifnextchar\new@ifnextchar
    \array{#1}
}
\makeatother

默认情况下,所有列都为类型r,但我们仍然可以指定前言(例如ccc)。

相关内容