给定以下矩阵,我如何更改括号以仅包含矩阵的数字,就像我在下图中潦草地写出的那样?
\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
由于您已经使用过 Ti钾Z 来实现你的矩阵,这里有一个使用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}
请注意,您可能必须至少编译两次才能看到最终结果(一次用于定义节点,另一次用于相应绘制)。