我如何才能为矩阵添加一些增强功能

我如何才能为矩阵添加一些增强功能

可能重复:
突出显示矩阵中的元素

\documentclass[12pt,a4paper]{mwrep}
\usepackage{amsmath}
\usepackage[nodisplayskipstretch]{setspace} \setstretch{1.5}
\begin{document}
\begin{equation}
P=
\begin{bmatrix} 0.3 & 0.1 & 0.6 & 0.0 & 0.0 & 0.0 & 0.0 \\
                0.2 & 0.1 & 0.7 & 0.7 & 0.0 & 0.0 & 0.0 \\
                0.3 & 0.4 & 0.3 & 0.0 & 0.0 & 0.0 & 0.0 \\
                0.0 & 0.0 & 0.0 & 0.2 & 0.8 & 0.0 & 0.0 \\
                0.0 & 0.0 & 0.0 & 0.3 & 0.7 & 0.0 & 0.0 \\
                0.0 & 0.4 & 0.1 & 0.0 & 0.0 & 0.2 & 0.3 \\
                0.0 & 0.0 & 0.1 & 0.0 & 0.3 & 0.1 & 0.5
\end{bmatrix}
\end{equation}
\end{document}

这样就生成了好看的矩阵。我需要两个增强功能:
- 矩阵中一些元素周围带有标题的框
- 矩阵上方和左侧的标签(在我的示例中为 1、2、4、3、6、5、7)。

我的想法是在我的矩阵中显示和命名“子矩阵”。如果有更好的方式来显示我想要的内容,你可以更改我的设计。

图片显示了我想要完成的事情:

编辑:
存在问题\usepackage[nodisplayskipstretch]{setspace} \setstretch{1.5}。当我将其与已接受解决方案中的代码一起使用时,矩阵中的垂直空间太大。

答案1

下面我bmatrix按照你的 MWE使用了\brodermatrix\matrix 命令在哪里?,以及我之前的解决方案突出显示矩阵中的元素以达到预期的效果。

由于您在序言中使用\setstretch{1.5},这会导致矩阵中的间距过大,您可以在矩阵内进行局部调整,如下所示。由于此调整是在组内完成的,因此此设置不会影响您代码的其余部分。

在此处输入图片描述

笔记:

  • 这确实需要两次运行:第一次计算框的位置,第二次将其绘制在正确的位置。
  • 由于这是使用tikz,因此您会自动获得固有的所有灵活性tikz,例如线条样式、线条粗细、线条颜色、填充等,其中一些在输出中有所说明。这些可以传递给宏的第一个参数\DrawBox以自定义每个实例,也可以作为默认选项提供以保持一致性。

参考:

代码:

\documentclass[12pt,a4paper]{mwrep}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{calc}

\usepackage[nodisplayskipstretch]{setspace} \setstretch{1.5}

\newcommand{\tikzmark}[1]{\tikz[overlay,remember picture] \node (#1) {};}
\newcommand{\DrawBox}[4][]{%
    \tikz[overlay,remember picture]{%
        \coordinate (TopLeft)     at ($(#2)+(-0.2em,0.9em)$);
        \coordinate (BottomRight) at ($(#3)+(0.2em,-0.3em)$);
        %
        \path (TopLeft); \pgfgetlastxy{\XCoord}{\IgnoreCoord};
        \path (BottomRight); \pgfgetlastxy{\IgnoreCoord}{\YCoord};
        \coordinate (LabelPoint) at ($(\XCoord,\YCoord)!0.5!(BottomRight)$);
        %
        \draw [red,#1] (TopLeft) rectangle (BottomRight);
        \node [below, #1, fill=none, fill opacity=1] at (LabelPoint) {#4};
    }
}


\begin{document}
\begin{equation}\setstretch{1.25}
P=
\begin{bmatrix}
\tikzmark{left1}0.3 & 0.1 & 0.6                  & 0.0                 & 0.0                  & 0.0 & 0.0 \\
                0.2 & 0.1 & 0.7                  & 0.7                 & 0.0                  & 0.0 & 0.0 \\
                0.3 & 0.4 & 0.3\tikzmark{right1} & 0.0                 & 0.0                  & 0.0 & 0.0 \\[12pt]
                0.0 & 0.0 & 0.0                  & \tikzmark{left2}0.2 & 0.8                  & 0.0 & 0.0 \\
                0.0 & 0.0 & 0.0                  &                 0.3 & 0.7\tikzmark{right2} & 0.0 & 0.0 \\[12pt]
                0.0 & 0.4 & 0.1                  &                 0.0 & 0.0                  & 0.2 & 0.3 \\
                0.0 & 0.0 & 0.1                  &                 0.0 & 0.3                  & 0.1 & 0.5
\end{bmatrix}
\end{equation}
\DrawBox[thick, red ]{left1}{right1}{\textcolor{red}{\footnotesize$s^1$}}
\DrawBox[thick, blue, dashed]{left2}{right2}{\textcolor{blue}{\footnotesize$s^2$}}
%-------------
\[\setstretch{1.2}
 \bordermatrix{\text{corner} & c_1 & c_2 & c_3 & c_4 & c_5 & c_6 & c_7\cr
    1&\tikzmark{left1} 0.3 & 0.1 & 0.6                  &                 0.0 & 0.0                  & 0.0 & 0.0\cr
    2&                 0.2 & 0.1 & 0.7                  &                 0.7 & 0.0                  & 0.0 & 0.0\cr
    4&                 0.3 & 0.4 & 0.3\tikzmark{right1} &                 0.0 & 0.0                  & 0.0 & 0.0\cr\cr
    3&                 0.0 & 0.0 & 0.0                  & \tikzmark{left2}0.2 & 9.8                  & 0.0 & 0.0\cr
    6&                 0.0 & 0.0 & 0.0                  &                 0.3 & 0.7\tikzmark{right2} & 0.0 & 0.0\cr\cr
    5&                 0.0 & 0.4 & 0.1                  &                 0.0 & 0.3                  & 0.2 & 0.3\cr
    7&                 0.0 & 0.0 & 0.1                  &                 0.0 & 0.3                  & 0.1 & 0.5
}
\]
\DrawBox[thick, red, dotted ]{left1}{right1}{\textcolor{red}{\footnotesize$s^1$}}
\DrawBox[thick, blue,fill=yellow!10, fill opacity=0.3]{left2}{right2}{\textcolor{blue}{\footnotesize$s^2$}}
\end{document}

相关内容