我想创建一个带有行和列标签的矩阵。我希望矩阵元素右对齐,行标签显示在矩阵右侧,列标签显示在矩阵上方。我尝试过:
\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 节点)。