![如何绘制带有线条和侧括号的矩阵?](https://linux22.com/image/466643/%E5%A6%82%E4%BD%95%E7%BB%98%E5%88%B6%E5%B8%A6%E6%9C%89%E7%BA%BF%E6%9D%A1%E5%92%8C%E4%BE%A7%E6%8B%AC%E5%8F%B7%E7%9A%84%E7%9F%A9%E9%98%B5%EF%BC%9F.png)
我想生成如下图所示的内容。我目前有以下内容,但如您所见,并不完整。您知道如何做到这一点吗?
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{mleftright}
\usepackage{mathtools}
\begin{document}
\begin{align*}
\overbrace{
\mleft[
\begin{array}
\mat{A}_1 \mid \mat{A}_2
\end{array}
\mright]}_{\mat{A}}
\overbrace{
\mleft[
\begin{array}{c|c}
\mat{S}_1 & \mat{S}_2 \\
\hline
\mat{S}_3 & \mat{S}_4
\end{array}
\mright]}_{\mat{S}}
\end{align*}
\end{document}
答案1
可能需要进行一些微调,您绝对应该阅读文档nicematrix
。但这是您发布的第二个矩阵的示例。
\documentclass{article}
\usepackage{amsmath,nicematrix}
\begin{document}
\[
\begin{bNiceArray}[last-col,margin]{w{c}{7em}|w{c}{3.5em}}
\\
(\mathbf{G}+\mathbf{R})\mathbf{U} & \mathbf{R}\mathbf{P}-\mathbf{C} & \hspace*{8pt} m_1 \\
\\
\hline
\Block{5-1}{\mathbf{U}} \\
\\
& \mathbf{P} & \hspace*{8pt} m_2\\
\\
&
\CodeAfter
\UnderBrace[yshift=5pt]{1-1}{8-1}{m_2}
\UnderBrace[yshift=5pt]{1-2}{8-2}{m_1}
\SubMatrix.{1-1}{3-2}\}[right-xshift=8pt]
\SubMatrix.{4-1}{8-2}\}[right-xshift=8pt]
\end{bNiceArray}
\]
\end{document}
快速解释:
bNiceArray
指定您要将其放在括号中。使用版本...Array
而不是版本...Matrix
可以让您更好地控制列规范(我们使用)。last-col
允许您添加最后一列外部括号内。(我们将m_1
和放在这里m_2
。)margin
留出一点余地,否则就会\hline
碰到括号。- 列说明符
w{c}{7em}
放置一个宽度固定、宽度为 7em 且内容居中的列。- 您也可以使用一些空列来获取水平间距;我选择这种方式是为了减少打字/计数。
- 请注意最后一列是不是包含在色谱柱规范中。
- 包含空白行以用于垂直间距。
m_1
在和前面插入了额外的空格m_2
以容纳括号(稍后放入\SubMatrix
块中)。\CodeAfter
允许您额外标记矩阵。- 用来
\SubMatrix
放置额外的分隔符,例如垂直括号(阅读文档以了解语法);额外的是将括号推到方括号之外;这就是为什么我们必须在andxshift
前面添加空格。m_1
m_2
- 用于
\UnderBrace
在列之间放置水平括号。阅读文档以了解语法。我添加了一个额外的内容,yshift
以使其更接近您问题中的间距。
- 用来