如何创建一个数组,元素周围都有垂直和水平括号

如何创建一个数组,元素周围都有垂直和水平括号

我想在 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集合\underbraces 是\smashed,它们不会给矩阵添加垂直高度,因此允许\left[...\right]构造仅跨越可见的矩阵条目。但是,这可能会导致\undermats 遇到等式后面的内容。为了避免这种情况,我们将整个结构放在另一个结构中array,并在底部添加一个空白行。这允许\smashed \undermats 有一些空白可以沉入其中。

答案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 节点)。

上述代码的输出

相关内容