如何创建一个带有行和列标记的矩阵(在右侧)?

如何创建一个带有行和列标记的矩阵(在右侧)?

我想创建一个带有行和列标签的矩阵。我希望矩阵元素右对齐,行标签显示在矩阵右侧,列标签显示在矩阵上方。我尝试过:

\documentclass{article}

\usepackage[T1]{fontenc}
\usepackage[american,ngerman]{babel}

\begin{document}
% does work:
$\bordermatrix{%
 & 1 & 2 \cr
1 & x1 & x2 \cr
2 & x3 & x423 \cr
3 & x5 & x6
}$
% does not work (see error below):
% $\bordermatrix*{%
%   x1&x2&1\cr
%   x3&x4&2\cr
%   x5&x6&3\cr
%   1&2 6 }$
\end{document}

% ERROR: Misplaced alignment tab character &.

% --- TeX said ---
% l.17   x1&
%           x2&1\cr
% --- HELP ---
% The special character &, which should be used only to separate items
% in an array or tabular environment, appeared in ordinary text. You
% probably meant to type \&.

为了至少让行标签显示在矩阵的正确一侧,我想使用带星号的版本\bordermatrix,但那行不通(与 Voss 的数学模式指南中给出的相反)。此外,矩阵条目未右对齐。我该如何创建这样的矩阵?有没有办法用 做到这一点amsmath

更新

感谢 Werner 提供的链接,一个简单的例子如下:

\documentclass{article}
\usepackage{blkarray}
\newcommand{\matindex}[1]{\mbox{\scriptsize#1}}
\begin{document}
\[
  A=\begin{blockarray}{rrl}
    \matindex{1} & \matindex{2} & \\
    \begin{block}{(rr)l}
      \,100 & b\phantom{\,} & \matindex{row 1} \\
      2 & 12 & \matindex{row 2} \\
      e & f &  \matindex{ABDC} \\
    \end{block}
  \end{blockarray}
\]
\end{document}

这只是一个快速的破解,以在括号和矩阵条目之间获得更多的水平空间。

答案1

以下是在顶部(对于列)和右侧(对于行)插入矩阵索引的一种方法:

在此处输入图片描述

\documentclass{article}
\usepackage{blkarray}% http://ctan.org/pkg/blkarray
\newcommand{\matindex}[1]{\mbox{\scriptsize#1}}% Matrix index
\begin{document}
\[
  A=\begin{blockarray}{c@{\hspace{5pt}}rr@{\hspace{5pt}}cl}
    & \matindex{1} & \matindex{2} & & \\
    \begin{block}{(c@{\hspace{5pt}}rr@{\hspace{5pt}}c)l}
      & 100 &  b & & \matindex{row 1} \\
      &   2 & 12 & & \matindex{row 2} \\
      &   e &  f & & \matindex{ABDC} \\
    \end{block}
  \end{blockarray}
\]
\end{document}

为了改善矩阵与周围括号之间的间距,请在任一侧插入一个额外的列。此外,使用说明@{...}符指定准确的列间隙。在上面的示例中,c添加了两个“虚拟”输入列,中间有一个\hspace{5pt}间隙。

答案2

这是一个{pNiceMatrix}使用 的解决方案nicematrix

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\NiceMatrixOptions
  {
    code-for-first-row = $\small$ , 
    code-for-last-col = $\small$ 
  }

$A = \begin{pNiceMatrix}[first-row,last-col,margin,r]
 1  & 2 \\
100 & b  & \text{row } 1 \\
  2 & 12 & \text{row } 2 \\
  e & f  & \text{ABDC}
\end{pNiceMatrix}$

\end{document}

您需要多次编译(因为nicematrix在后台使用 PGF/Tikz 节点)。

上述代码的输出

相关内容