我想在 Latex 中创建下面显示的矩阵。
我已经搞清楚了水平花括号,我可以用undermat{}{}
它来做这件事。但是我不知道如何在第 1 行和第 2-4 行周围插入垂直花括号,或者如何在数组下方插入居中标题。
有人可以帮我做到这一点吗?
这是我目前的带有水平花括号的代码。
\documentclass{article}
\newcommand\undermat[2]{%
\makebox[0pt][l]{$\smash{\underbrace{\phantom{%
\begin{matrix}#2\end{matrix}}}_{\text{$#1$}}}$}#2}
\begin{document}
$$
\left [
\begin{array}{cccccccc}
1.2 & 1.4 & 3.2 & 4.1 & 6.3 & 7.1 & 9.4 & 2.5 \\
1.2 & 1.4 & 3.2 & 4.1 & 6.3 & 7.1 & 9.4 & 2.5 \\
1.2 & 1.4 & 3.2 & 4.1 & 6.3 & 7.1 & 9.4 & 2.5 \\
\undermat{T1}{1.2 & 1.4 & 3.2} & \undermat{T2}{1.2 & 1.4 & 3.2} & \undermat{T3}{9.4 & 2.5} \\
\end{array}
\right ]
$$
\end{document}
答案1
这是一种使用常规可扩展括号的方法:
\documentclass{article}
\usepackage{amsmath,lipsum}
\newcommand\undermat[2]{% http://tex.stackexchange.com/a/102468/5764
\makebox[0pt][l]{$\smash{\underbrace{\phantom{%
\begin{matrix}#2\end{matrix}}}_{\text{$#1$}}}$}#2}
\begin{document}
\lipsum*[1]
\[
\begin{array}{@{} c @{}}
\begin{array}{@{} r @{}}
\text{Bias nodes}~\{\hspace{\nulldelimiterspace} \\
\text{Nodes}~\left\{\begin{array}{@{}c@{}}\null\\\null\\\null\end{array}\right.
\end{array}
\left [
\begin{array}{ *{8}{c} }
1.2 & 1.4 & 3.2 & 4.1 & 6.3 & 7.1 & 9.4 & 2.5 \\
1.2 & 1.4 & 3.2 & 4.1 & 6.3 & 7.1 & 9.4 & 2.5 \\
1.2 & 1.4 & 3.2 & 4.1 & 6.3 & 7.1 & 9.4 & 2.5 \\
\undermat{T1}{1.2 & 1.4 & 3.2} & \undermat{T2}{1.2 & 1.4 & 3.2} & \undermat{T3}{9.4 & 2.5} \\
\end{array}
\right ] \\
\mathstrut
\end{array}
\]
\lipsum[2]
\end{document}
注意使用@{}
来消除列间距。您可能希望使用(例如)将左侧构造移近右侧矩阵@{\hspace{-1ex}}
。您的选择。
由于\undermat
集合\underbrace
s 是\smash
ed,它们不会给矩阵添加垂直高度,因此允许\left[
...\right]
构造仅跨越可见的矩阵条目。但是,这可能会导致\undermat
s 遇到等式后面的内容。为了避免这种情况,我们将整个结构放在另一个结构中array
,并在底部添加一个空白行。这允许\smash
ed \undermat
s 有一些空白可以沉入其中。
答案2
这是一个{bNiceMatrix}
使用 的解决方案nicematrix
。
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\[
\begin{bNiceMatrix}[first-col]
\text{\itshape Bias Nodes}\hspace*{4mm} & 1.2 & 1.4 & 3.2 & 4.1 & 6.3 & 7.1 & 9.4 & 2.5 \\
& 1.2 & 1.4 & 3.2 & 4.1 & 6.3 & 7.1 & 9.4 & 2.5 \\
\text{\itshape Nodes}\hspace*{4mm} & 1.2 & 1.4 & 3.2 & 4.1 & 6.3 & 7.1 & 9.4 & 2.5 \\
& 1.2 & 1.4 & 3.2 & 1.2 & 1.4 & 3.2 & 9.4 & 2.5 \\
\CodeAfter
\SubMatrix{\{}{1-1}{1-1}{.}[xshift=1.2mm]
\SubMatrix{\{}{2-1}{4-1}{.}[xshift=1mm]
\UnderBrace{4-1}{4-3}{T_1}[yshift=1mm,shorten]
\UnderBrace{4-4}{4-5}{T_2}[yshift=1mm,shorten]
\UnderBrace{4-6}{4-8}{T_3}[yshift=1mm,shorten]
\end{bNiceMatrix}
\]
\end{document}
您需要多次编译(因为nicematrix
在后台使用 PGF/Tikz 节点)。