Tikz 矩阵部分周围的括号

Tikz 矩阵部分周围的括号

给定以下矩阵,我如何更改括号以仅包含矩阵的数字,就像我在下图中潦草地写出的那样?

在此处输入图片描述

\documentclass[border=5pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}

\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}

\begin{tikzpicture}

\matrix(m) [matrix of math nodes, 
         left delimiter=(,right delimiter={)}, nodes={minimum size=1cm, outer sep=0pt, text height=1.5ex, text depth=.25ex}]
{
\phantom{} & I & II & III & IV \\
A & 15 & 3 & 30 & 20 \\
B & 20 & 2 & 20 & 30\\
C & 40 & 20 & 10 & 40 \\
D & 5 & 30 & 40 & 40 \\
};

\end{tikzpicture}
\end{document}

答案1

left delimeter可以将and选项right delimeter赋予任何具有标准锚点的节点。因此,你可以用分隔符将任何 tikz 节点括起来。

例如,你可以用 fit 库定义一个适合所需子矩阵的节点:

\documentclass[border=5pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{mathtools}

\usepackage{tikz}
\usetikzlibrary{matrix}
\usetikzlibrary{fit}

\begin{document}
\begin{tikzpicture}[
    add paren/.style={
      left delimiter={(},
      right delimiter={)}, 
    }
  ]

  \matrix(m) [matrix of math nodes, 
    add paren,
    nodes={minimum size=1cm, outer sep=0pt, text height=1.5ex, text depth=.25ex}
  ]
  {
      & I  & II & III & IV \\
    A & 15 & 3  & 30  & 20 \\
    B & 20 & 2  & 20  & 30 \\
    C & 40 & 20 & 10  & 40 \\
    D & 5  & 30 & 40  & 40 \\
  };

  \node[fit=(m-3-3) (m-5-5), add paren] (submatrix) {};

\end{tikzpicture}
\end{document}

结果并不完全令人满意:

在此处输入图片描述

您可以使用 sumbmatrix 节点中的负内分离来修复它:

\node[fit=(m-3-3) (m-5-5), add paren, inner xsep=-1ex] (submatrix) {};

在此处输入图片描述

或者通过使用矩阵定义中的不同选项:

\documentclass[border=5pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{mathtools}

\usepackage{tikz}
\usetikzlibrary{matrix}
\usetikzlibrary{fit}

\begin{document}
\begin{tikzpicture}[
    add paren/.style={
      left delimiter={(},
      right delimiter={)}, 
    }
  ]

  \matrix(m) [matrix of math nodes, 
    add paren,
    column sep={1cm,between origins},
    row sep={1cm,between origins},
  ]
  {
      & I  & II & III & IV \\
    A & 15 & 3  & 30  & 20 \\
    B & 20 & 2  & 20  & 30 \\
    C & 40 & 20 & 10  & 40 \\
    D & 5  & 30 & 40  & 40 \\
  };

  \node[fit=(m-3-3) (m-5-5), add paren, inner sep=0pt] (submatrix) {};

\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

由于您已经使用过 TiZ 来实现你的矩阵,这里有一个使用nicematrix包的解决方案(它加载并使用 Ti韓國語:

矩阵内的矩阵

\documentclass[border=3.14mm]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,nicematrix}

\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}

$\begin{pNiceMatrix}[columns-width = 20pt,margin=5pt,cell-space-limits = 10pt]
    \phantom{} & I & II & III & IV \\
    A & 15 & 3 & 30 & 20 \\
    B & 20 & 2 & 20 & 30\\
    C & 40 & 20 & 10 & 40 \\
    D & 5 & 30 & 40 & 40
    \CodeAfter\SubMatrix({2-2}{5-5})
\end{pNiceMatrix}$

\end{document}

请注意,您可能必须至少编译两次才能看到最终结果(一次用于定义节点,另一次用于相应绘制)。

相关内容