我正在尝试使用矩阵的上括号和右括号来解释列和行。这是我目前取得的成果:
这是我使用过的代码:
\documentclass{article}
\usepackage{amsmath}
\newcommand\overmat[2]{%
\makebox[0pt][l]{$\smash{\color{white}\overbrace{\phantom{%
\begin{matrix}#2\end{matrix}}}^{\text{\color{black}#1}}}$}#2}
\newcommand\bovermat[2]{%
\makebox[0pt][l]{$\smash{\overbrace{\phantom{%
\begin{matrix}#2\end{matrix}}}^{\text{#1}}}$}#2}
\newcommand\partialphantom{\vphantom{\frac{\partial e_{P,M}}{\partial w_{1,1}}}}
\begin{document}
$
\begin{matrix}
\begin{pmatrix}
\bovermat{$m_1$ colonnes}{\lambda_1 & 0 & \ldots & 0 & 0} & \bovermat{$n - m_1$ colonnes}{ & & & & } \\[0.5em]
%
0 & \lambda_1 & \ldots & 0 & 0 & & & & & \\[0.5em]
%
0 & 0 & \ddots & 0 & 0 & & & \mbox{\Huge U} & & \\[0.5em]
%
0 & 0 & \ldots & \lambda_1 & 0 & & & & & \\[0.5em]
%
0 & 0 & \ldots & 0 & \lambda_1 & & & & & \\[0.5em]
%
& & & & & & & & & \\[0.5em]
%
& & & & & & & & & \\[0.5em]
%
& & \mbox{\Huge O} & & & & & \mbox{\Huge V} & & \\[0.5em]
%
& & & & & & & & & \\[0.5em]
%
& & & & & & & & & \\[0.5em]
\end{pmatrix}
\begin{aligned}
&\left.\begin{matrix}
\partialphantom \\[0.5em]
\partialphantom \\[0.5em]
\partialphantom \\[0.5em]
\partialphantom \\[0.5em]
\partialphantom \\[0.5em]
\end{matrix} \right\} %
m_1 \text{ lignes}\\
&\left.\begin{matrix}
\partialphantom \\[0.5em]
\partialphantom \\[0.5em]
\partialphantom \\[0.5em]
\partialphantom \\[0.5em]
\partialphantom \\[0.5em]
\end{matrix}\right\}%
n - m_1 \text{ lignes}\\
\end{aligned}
\end{matrix}$
\end{document}
现在我唯一的问题是,我希望第一个高价包含到矩阵第一行的最后一个零,第二个括号应该从第一个括号的末尾开始,一直到矩阵的末尾。
然而我完全不知道该如何做。
任何帮助,将不胜感激。
答案1
{NiceMatrix}
这是一个 (≥ 6.4 的 2021-11-23)的解决方案nicematrix
。
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\setcounter{MaxMatrixCols}{11}
\[\begin{NiceMatrix}[columns-width=4mm]
\lambda_1 & 0 & \cdots & 0 & 0 & \NotEmpty \Block{5-5}<\Huge>{U}& & & & \NotEmpty
& \Block{5-1}{\quad m_1 \text{ lignes}}\\
0 & \lambda_1 & \cdots & 0 & 0 & \\
0 & 0 & \smash{\ddots} & 0 & 0 & \\
0 & 0 & \cdots & \lambda_1 & 0 & \\
0 & 0 & \cdots & 0 & \lambda_1 & \\
\Block{5-5}<\Huge>{O} & & & & & \Block{5-5}<\Huge>{V} & & & &
& \Block{5-1}{\quad n-m_1 \text{ lignes}} \\
\\
\\
\\
\\
\CodeAfter
\SubMatrix({1-1}{10-10})
\OverBrace[shorten,yshift=2mm]{1-1}{1-5}{m_1 \text{ colonnes}}
\OverBrace[shorten,yshift=2mm]{1-6}{1-10}{n-m_1 \text{ colonnes}}
\SubMatrix{.}{1-1}{5-10}{\}}[xshift=4mm]
\SubMatrix{.}{6-1}{10-10}{\}}[xshift=4mm]
\end{NiceMatrix}\]
\end{document}
您需要多次编译(因为nicematrix
在后台使用 PGF/Tikz 节点)。
答案2
虽然复杂,但可行。
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[
% some local definitions
\newcommand\explainA{%
\overbrace{%
\hphantom{\begin{matrix}\lambda_1&\lambda_1&\dots&\lambda_1&\lambda_1\end{matrix}}%
}^{\text{$m_1$ colonnes}}%
}
\newcommand{\explainB}{%
\overbrace{%
\hphantom{\begin{matrix}0&0&0&0&0\end{matrix}}%
}^{\text{$n-m_1$ colonnes}}%
}
\newcommand{\explainC}{%
\left.\vphantom{\begin{matrix}0\\0\\\ddots\\0\\0\end{matrix}}\right\}%
\text{\scriptsize$m_1$ lignes}%
}
\newcommand{\explainD}{%
\left.\vphantom{\begin{matrix}0\\0\\0\\0\\0\\0\end{matrix}}\right\}%
\text{\scriptsize$n-m_1$ lignes}%
}
\settowidth{\dimen0}{%
$\begin{pmatrix}\vphantom{\begin{matrix}0\\0\\0\\0\\0\\0\\0\end{matrix}}\end{pmatrix}$%
}
\settowidth{\dimen2}{$\explainB$}
\begin{matrix}
\begin{matrix}\hspace*{0.5\dimen0}\explainA&\explainB\hspace*{0.5\dimen0}\end{matrix}
\\[-0.5ex]
\begin{pmatrix}
\begin{matrix}
\lambda_1 & 0 & \dots & 0 & 0 \\
0 & \lambda_1 & \dots & 0 & 0 \\
0 & 0 & \ddots & 0 & 0 \\
0 & 0 & \dots & \lambda_1 & 0 \\
0 & 0 & \dots & 0 & \lambda_1
\end{matrix}
&
\makebox[\dimen2]{\Huge$U$} \\
\vphantom{\begin{matrix}0\\0\\0\\0\\0\\0\end{matrix}}\text{\Huge$O$} & \text{\Huge$V$}
\end{pmatrix}
&\hspace*{-1em}\begin{matrix} \explainC\hfill \\ \explainD \end{matrix}
\end{matrix}
\]
\end{document}
你可能会喜欢研究它。有两个“猜测”:顶行应该降低的量以及右侧的解释必须向左推的量。
我认为仅写出块矩阵并在文本中给出大小的解释会更简单。