有没有办法设置 mathtools 矩阵的默认对齐?

有没有办法设置 mathtools 矩阵的默认对齐?

我的文档中有很多mathtools矩阵需要右对齐(其他矩阵则需要其他对齐):

\begin{bmatrix*}[r]
  1 & 0 & 0 \\
  7 & 1 & 0 \\
\end{bmatrix*}
...

文档mathtools解释说,smallmatrix环境允许使用 更改默认对齐方式smallmatrix-align=<c,l,r>。是否有这样的选项/命令可以更改显示样式矩阵的默认对齐方式?

答案1

一些魔法!

\documentclass{article}
\usepackage{mathtools}

\makeatletter
\newcommand\patcher[1]{%
  \expandafter\edef\csname#1*\endcsname{%
    \expandafter\expandafter\expandafter\p@tcher\csname#1*\endcsname
  }%
}
\newcommand\p@tcher[4]{\unexpanded{#1#2#3}{r}}
\makeatother

\patcher{bmatrix} % repeat for the other matrix types you need

\begin{document}

\[
\begin{bmatrix*}
111 & 11 & 1 \\
1 & 1 & 11
\end{bmatrix*}
+
\begin{bmatrix*}[c]
111 & 11 & 1 \\
1 & 1 & 11
\end{bmatrix*}
+
\begin{bmatrix*}[l]
111 & 11 & 1 \\
1 & 1 & 11
\end{bmatrix*}
\]

\end{document}

在此处输入图片描述

这个魔术利用了这样一个事实:和朋友的定义bmatrix*本质上是相同的;宏\bmatrix*(仅通过可用\csname)扩展为

\MH_nospace_protected_testopt:n \bmatrix* \\bmatrix* {c}

(六个标记)。因此,内部宏\p@tcher将第四个参数更改为,{r}\patcher使用新的替换文本重建宏。

相关内容