大小不等的矩阵堆栈

大小不等的矩阵堆栈

我必须写出两个矩阵方程的列表。它们几乎完全相同,但其中一个矩阵中的元素比另一个矩阵中的元素稍大,这使其看起来很糟糕。

\begin{align}
  \begin{pmatrix}
    -\id & \id \\
     \id & -\id \\
  \end{pmatrix}  u = 0 \\
  \begin{pmatrix}
    \id &   \id \\
     \id &  \id
  \end{pmatrix}  v = 0 
\end{align}

有没有一种简单而优雅的方法可以让两个矩阵的大小匹配?我发现,但情况比我的情况复杂得多。有没有更简单的?

答案1

我提出两个版本,我更喜欢第二个版本。

这些calc包仅对第一个解决方案是必要的。一般来说,永远不要align在没有对齐点的情况下使用。

\documentclass{article}
\usepackage{amsmath,calc}
\newcommand{\id}{\mathrm{id}}
\newcommand{\cid}{\makebox[\widthof{$-\id$}]{$\id$}}
\begin{document}
\begin{align}
\begin{pmatrix}
  -\id & \id \\
   \id & -\id \\
\end{pmatrix}  u &= 0 \\
\begin{pmatrix}
  \cid &  \cid \\
  \cid &  \cid
\end{pmatrix}  v &= 0 
\end{align}
A different version
\begin{gather}
\begin{pmatrix}
  -\id & \id \\
   \id & -\id \\
\end{pmatrix}  u = 0 \\
\begin{pmatrix}
  \id &  \id \\
  \id &  \id
\end{pmatrix}  v = 0 
\end{gather}

\end{document}

在此处输入图片描述

答案2

这里有两个解决方案,但远非完美。我使用 定义的矩阵环境的变体,它允许指定矩阵中的对齐,并且我在需要时mathtools修改 的值。\arraycolsep

我还定义了一个数学运算符,它可以纠正中和\nid之间的间距,这是不好的。id-\id

\documentclass{article}
\usepackage{textcomp} \usepackage{mathtools}
\usepackage[showframe]{geometry}
\DeclareMathOperator{\id}{{id}}
\newcommand*\nid{\ensuremath{-{\id}}}%
\newcommand*\varnid{\ensuremath{\mskip-5mu-{\id}}}
\newcommand*\varid{\ensuremath{\mskip-5mu\phantom{-}{\id}}}%

\begin{document}

\begin{align}
  \begin{pmatrix*}[r]
  \varnid & \id \\
  \id & \nid \\
  \end{pmatrix*} u = 0 \\
  \setlength\arraycolsep{0.9em}
  \begin{pmatrix*}[r]
  \varid & \id \\
  \id & \id
  \end{pmatrix*} v = 0 \\
  \setlength\arraycolsep{1.1em}
  \begin{pmatrix*}[r]
  \id & \id \\
  \id & \id
  \end{pmatrix*} v = 0
\end{align}

\end{document} 

在此处输入图片描述

答案3

该软件包nicematrix有专门用于解决此类问题的工具。具体来说,有一个环境{NiceMatrixBlock},其键auto-columns-width用于对给定范围内矩阵的所有列施加相同的宽度。但是,您需要进行多次编译。

\documentclass{article}
\usepackage{nicematrix}

\DeclareMathOperator{\id}{{id}}

\begin{document}

\begin{NiceMatrixBlock}[auto-columns-width]
\NiceMatrixOptions{right-margin=2pt}

\begin{align}
  \begin{pNiceMatrix}[r]
  -\id & \id \\
  \id & -\id \\
  \end{pNiceMatrix} u = 0 \\
  \begin{pNiceMatrix}[r]
  \id & \id \\
  \id & \id
  \end{pNiceMatrix} v = 0 \\
  \begin{pNiceMatrix}[r]
  \id & \id \\
  \id & \id
  \end{pNiceMatrix} v = 0
\end{align}

\end{NiceMatrixBlock}


\end{document} 

上述代码的输出

相关内容