如何在矩阵的括号内放置下括号来命名块的两侧?
\documentclass[a4paper,12pt]{article}
\usepackage{amsmath}
\usepackage{array}
\begin{document}
.
.
.
\[
\left (
\begin{array}{rrr|rrr}
0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 \\
\end{array}
\right )
\]
\end{document}
我正在大学服务器中编译代码,但无法安装新的软件包。
答案1
这是另一个(不含 TikZ 的)选项:
\documentclass[a4paper,12pt]{article}
\usepackage{amsmath}
\usepackage{array}
\newcommand\undermat[2]{%
\makebox[0pt][l]{$\smash{\underbrace{\phantom{%
\begin{matrix}#2\end{matrix}}}_{\text{$#1$}}}$}#2}
\begin{document}
\[
\left (
\begin{array}{rrr|rrr}
0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 \\
\undermat{A}{0 & 0 & 0} & \undermat{B}{0 & 0 & 0} \\
\end{array}
\right )
\]
\end{document}
答案2
您的代码不是最小工作示例(MWE)(缺少\begin{document}
和\end{document}
。请养成提供一份的习惯。
您确实应该考虑使用\tikzmark
宏来实现这一点。此网站上已经有很多关于此tikz
基于宏的答案。(据我所知,一个基于此宏的包正在完成中安德鲁·史黛西。例如,您可以阅读相关问题:\underbrace 在一个奇怪的地方,跨越数组列您可以根据以下代码进行定制:
\documentclass[a4paper,12pt]{article}
\usepackage{amsmath}
\usepackage{array}
\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing}
\newcommand{\tikzmark}[1]{\tikz[overlay,remember picture,baseline=(#1.base)]
\node (#1) {\strut};}
\begin{document}
\[
\left (
\begin{array}{rrr|rrr}
0 & 0 & 0 &\tikzmark{upper1} 0 & 0 & 0\tikzmark{upper2} \\
0 & 0 & 0 & 0 & 0 & 0 \\
\tikzmark{lower1}0 & 0 & 0\tikzmark{lower2} & 0 & 0 & 0 \\
\end{array}
\right )
\]
\begin{tikzpicture}[overlay, remember picture,decoration={brace,amplitude=5pt}]
\draw[decorate,thick] (lower2.south) -- (lower1.south)
node [midway,below=5pt] {Left block};
\draw[decorate,thick] (upper1.north) -- (upper2.north)
node [midway,above=5pt] {Right block};
\end{tikzpicture}
\end{document}
您必须编译两次才能看到相同的输出。
答案3
这是一个{pNiceArray}
使用 的解决方案nicematrix
。
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\[
\begin{pNiceArray}{rrr|rrr}[margin=1pt]
0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 25 & 0 \\
\CodeAfter
\UnderBrace{3-1}{3-3}{A}[shorten]
\UnderBrace{3-4}{3-6}{B}[shorten]
\end{pNiceArray}
\]
\end{document}