如何添加标签来索引矩阵的行和列?因为我想对矩阵外面的行进行编号
\[
\begin{array}{lc}
\ Mat_{\varPhi to M} & \left(\begin{array}{@{}ccccc@{}}
1 & 1 & 1 & 1 & 1 \\
0 & 1 & 0 & 0 & 1 \\
0 & 0 & 1 & 0 & 1 \\
0 & 0 & 0 & 1 & 1 \\
0 & 0 & 0 & 0 & 1
\end{array}\right) \\[15pt]
\end{array}
\]
答案1
这是一个使用选项kbordermatrix
:
\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\usepackage{kbordermatrix}% https://kcborder.caltech.edu/TeX/kbordermatrix.sty
\begin{document}
\[
\begin{array}{l@{{}={}}c}
\text{Mat}_{\varphi\text{ to }M} & \left(\begin{array}{@{}ccccc@{}}
1 & 1 & 1 & 1 & 1 \\
0 & 1 & 0 & 0 & 1 \\
0 & 0 & 1 & 0 & 1 \\
0 & 0 & 0 & 1 & 1 \\
0 & 0 & 0 & 0 & 1
\end{array}\right)
\end{array}
\]
\renewcommand{\kbldelim}{(}% Left delimiter
\renewcommand{\kbrdelim}{)}% Right delimiter
\[
\text{Mat}_{\varphi\text{ to }M} = \kbordermatrix{
& c_1 & c_2 & c_3 & c_4 & c_5 \\
r_1 & 1 & 1 & 1 & 1 & 1 \\
r_2 & 0 & 1 & 0 & 0 & 1 \\
r_3 & 0 & 0 & 1 & 0 & 1 \\
r_4 & 0 & 0 & 0 & 1 & 1 \\
r_5 & 0 & 0 & 0 & 0 & 1
}
\]
\end{document}
如需更多选项和样式,包括使用\bordermatrix
,请参阅命令在哪里\matrix
?
答案2
您可以使用blkarray
包裹:
\documentclass[12pt]{report}
\usepackage{blkarray}
\usepackage{amsmath}
\begin{document}
\[
\begin{blockarray}{cccccc}
a & b & c & d & e \\
\begin{block}{(ccccc)c}
1 & 1 & 1 & 1 & 1 & f \\
0 & 1 & 0 & 0 & 1 & g \\
0 & 0 & 1 & 0 & 1 & h \\
0 & 0 & 0 & 1 & 1 & i \\
0 & 0 & 0 & 0 & 1 & j \\
\end{block}
\end{blockarray}
\]
\end{document}
答案3
对于外部的行和列,可以使用nicematrix
:
\documentclass{article}
\usepackage{nicematrix}
\NiceMatrixOptions{
code-for-first-row = \color{blue} ,
code-for-last-row = \color{blue} ,
code-for-first-col = \color{blue} ,
code-for-last-col = \color{blue}
}
\begin{document}
$\begin{pNiceMatrix}[first-row,last-row,first-col,last-col]
& C_1 & C_2 & C_3 & C_4 \\
L_1 & a & b & c & d & L_1 \\
L_2 & e & f & g & h & L_2 \\
L_3 & i & j & k & l & L_3 \\
& C_1 & C_2 & C_3 & C_4 \\
\end{pNiceMatrix}$
\end{document}
答案4
我介绍这个答案,因为它使用了的新功能,该tabstackengine
功能允许人们记住最近创建的堆栈中的各种数据和维度。因此,由于标签比矩阵内容更宽,因此这里所做的工作如下:
我设置
\fixTABwidth{T}
为指示应构建 TABstack,以便所有列的宽度都固定为构建的最大列宽。我还指示应将以文本模式构建的 TABstack 设置为\scriptsize
,颜色为蓝色。我建立列标签并将其保存在
\collabels
和然后,我将\colwidth
存储在中的列的最大维度保存到宏中\maxTABwidth
。我将行标签堆栈保存为
\rowlabels
。到目前为止,标签堆栈都是在文本模式下创建的(它们在数学模式下也同样容易创建)。但现在,我要在
\ensurestackMath
模式下执行实际矩阵。在等号的右侧,我将列标签堆栈堆叠在矩阵本身上。但是,为了在矩阵元素上获得正确的列宽,我只需将矩阵条目之一放置在宽度为 的框中
\colwidth
,该框是列标签堆栈保存的列宽。最后,我重新整理行标签堆栈。
这是 MWE。
\documentclass{article}
\usepackage{tabstackengine}[2016-11-30]
\usepackage{xcolor}
\begin{document}
\[
%\stackText% MUST BE PREVAILING MODE TO GET LABELS IN TEXT
\TABstackTextstyle{\scriptsize\color{blue}}
\fixTABwidth{T}
\savestack\collabels{\tabbedCenterstack{dog & cat& mouse & aardvark & ant}}
\edef\colwidth{\maxTABwd}
\savestack\rowlabels{\tabbedCenterstack[l]{this \\ land \\ is \\ my \\ land!}}
\ensurestackMath{
\textrm{Mat}_{\varphi \mathrm{~to~} M} =
\stackon{%
\parenMatrixstack{
\makebox[\colwidth]{$1$} & 1 & 1 & 1 & 1\\
0 & 1 & 0 & 0 & 1\\
0 & 0 & 1 & 0 & 1\\
0 & 0 & 0 & 1 & 1\\
0 & 0 & 0 & 0 & 1
}%
}{\collabels}
\rowlabels
}
\]
\end{document}