垂直对齐多个数组,看起来像带有垂直线分隔符的 pmatrix

垂直对齐多个数组,看起来像带有垂直线分隔符的 pmatrix
\begin{align}
\left(\begin{array}{rrr|rrr}
3&1&-2&1&0&0\\
-1&4&3&0&1&0\\
1&2&-1&0&0&1
\end{array}\right)
\begin{array}{rrr|r}
\\
\text{II+III}\\
\text{3III-I}
\end{array}\\

\left(\begin{array}{rrr|rrr}
3&1&-2&1&0&0\\
0&6&2&0&1&1\\
0&5&-1&-1&0&1
\end{array}\right)
\begin{array}{rrr|r}
\\
\text{}\\
\text{6III-5II}
\end{array}
\end{align}

如果你渲染这个,你会看到两个“数组”的垂直线没有对齐。即使我在每个 \left(... 之前都放一个 &,它仍然对齐得不好,因为单元格宽度不同。因为我使用的是黑曜石, 我只有这些扩展。

答案1

通过添加虚线减号确保所有列的宽度相同,并在右侧)和文本标签之间添加一个对齐点。

在此处输入图片描述

\documentclass{article}

\usepackage{amsmath}

\begin{document}

\begin{align}
\left(\begin{array}{rrr|rrr}
3&\phantom{-}1&-2&\phantom{-}1&\phantom{-}0&\phantom{-}0\\
-1&4&3&0&1&0\\
1&2&-1&0&0&1
\end{array}\right)
  &
\begin{array}{rrr|r}
\\
\text{II+III}\\
\text{3III-I}
\end{array}\\
\left(\begin{array}{rrr|rrr}
\phantom{-}3&\phantom{-}1&-2&\phantom{-}1&\phantom{-}0&\phantom{-}0\\
0&6&2&0&1&1\\
0&5&-1&-1&0&1
\end{array}\right)
  &
\begin{array}{rrr|r}
\\
\text{}\\
\text{6III-5II}
\end{array}
\end{align}

\end{document}

答案2

以下是一些观察结果(无特定顺序):

  • array包提供了一种非常有用的列类型:w,它允许您指定水平对齐方式-- lcr--和固定宽度(此处:有符号的单数整数的宽度)。通过使用w列类型,您将不必输入大量的实例\phantom{-}

  • rrr|r我看不出为次要环境指定 4 列的理由———— array;单列——大概l——就足够了。

  • 您应该使用\mathrm而不是\text来表示辅助数组中的描述符,尤其是+-表示二元运算符。这对于-符号尤其重要,它们将呈现为文本模式连字符,而不是数学“减号”符号。

  • 如果您要使用align环境,请务必指定(使用对齐标记符号&在哪里对齐点应该是这样的。如果不这样做,您将得到右对齐,而这几乎从来不是应该发生的情况。

在此处输入图片描述

\documentclass{article} % or some other suitable document class
\usepackage{amsmath} % for 'align' environment
\usepackage{calc}    % for '\widthof' macro
\usepackage{array}   % for 'w' columnn type and '\newcolumntype' macro
\newcolumntype{W}{w{r}{\widthof{$-1$}}} 

\begin{document}

\begin{align}
&\left( \begin{array}{@{} WWW | WWW @{}}
   3&1&-2&1&0&0\\
  -1&4& 3&0&1&0\\
   1&2&-1&0&0&1
\end{array} \right)
\quad % horizontal distance between the 'array' environments
\begin{array}{@{}l@{}}
   \\
   \mathrm{II+III}\\
   \mathrm{3III-I}
\end{array}\\[\jot]  % end of first row
&\left( \begin{array}{@{} WWW | WWW @{}}
   3&1&-2& 1&0&0\\
   0&6& 2& 0&1&1\\
   0&5&-1&-1&0&1
\end{array} \right)
\quad
\begin{array}{@{}l@{}}
   \\
   \\
   \mathrm{6III-5II}
\end{array}
\end{align}

\end{document}

答案3

以下是您可以使用 做的{pNiceArray}事情nicematrix

\documentclass{article}
\usepackage{nicematrix}


\begin{document}

\begin{NiceMatrixBlock}[auto-columns-width]
\begin{align}
\begin{pNiceArray}{rrr|rrr}[last-col]
3&1&-2&1&0&0 &~\rlap{\text{II+III}}\\
-1&4&3&0&1&0 &~\rlap{\text{3III-I}}\\
1&2&-1&0&0&1
\end{pNiceArray} \\
\begin{pNiceArray}{rrr|rrr}[last-col]
3&1&-2&1&0&0\\
0&6&2&0&1&1\\
0&5&-1&-1&0&1 &~\rlap{\text{6III-5II}}
\end{pNiceArray}
\end{align}
\end{NiceMatrixBlock}

\end{document}

上述代码的输出

答案4

我建议对 F. Pantigny 的出色回答进行修改。

  1. 没有必要使用\rlap

  2. 我将使用行号命令来表示行操作;它简化了输入,并且如果您改变主意也可以轻松修改。

事实上,使用\text{II+III}+ 号会导致错误的间距;更糟糕的是,\text{3III-I}使用连字符而不是减号。\row我定义的命令允许正确使用数学模式,还可以将行号(罗马数字)与系数(如果有)稍微分离。

\documentclass{article}
\usepackage{nicematrix}

\ExplSyntaxOn
\NewDocumentCommand{\row}{m}{\mathop{{}\mathrm{\int_to_Roman:n{#1}}}}
\ExplSyntaxOff
%%% or, maybe
% \NewDocumentCommand{\row}{m}{R_{#1}}


\begin{document}

\begin{NiceMatrixBlock}[auto-columns-width]
\begin{align}
&\begin{pNiceArray}{rrr|rrr}[last-col]
  3 & 1 & -2 & 1 & 0 & 0 \\
 -1 & 4 &  3 & 0 & 1 & 0 &\quad  \row{2} + \row{3} \\
  1 & 2 & -1 & 0 & 0 & 1 &\quad 3\row{3} - \row{1} \\
\end{pNiceArray} \\
&\begin{pNiceArray}{rrr|rrr}[last-col]
  3 & 1 & -2 &  1 & 0 & 0 \\
  0 & 6 &  2 &  0 & 1 & 1 \\
  0 & 5 & -1 & -1 & 0 & 1 &\quad 6\row{3}-5\row{2}
\end{pNiceArray}
\end{align}
\end{NiceMatrixBlock}

\end{document}

在此处输入图片描述

如果我使用第二个可能的定义,通过取消注释并注释掉第一个定义,则输出为,无需任何对代码的其他更改,

在此处输入图片描述

相关内容