用字符标记矩阵的行

用字符标记矩阵的行

如何添加标签来索引矩阵的行和列?因为我想对矩阵外面的行进行编号

     \[
    \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功能允许人们记住最近创建的堆栈中的各种数据和维度。因此,由于标签比矩阵内容更宽,因此这里所做的工作如下:

  1. 我设置\fixTABwidth{T}为指示应构建 TABstack,以便所有列的宽度都固定为构建的最大列宽。我还指示应将以文本模式构建的 TABstack 设置为\scriptsize,颜色为蓝色。

  2. 我建立列标签并将其保存在\collabels 然后,我将\colwidth存储在中的列的最大维度保存到宏中\maxTABwidth

  3. 我将行标签堆栈保存为\rowlabels

  4. 到目前为止,标签堆栈都是在文本模式下创建的(它们在数学模式下也同样容易创建)。但现在,我要在\ensurestackMath模式下执行实际矩阵。

  5. 在等号的右侧,我将列标签堆栈堆叠在矩阵本身上。但是,为了在矩阵元素上获得正确的列宽,我只需将矩阵条目之一放置在宽度为 的框中\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}

在此处输入图片描述

相关内容