我正在尝试让右括号覆盖整个矩阵,就像 `\overbrace' 一样。有办法吗?
\documentclass[reqno,12pt]{amsart}
\usepackage{amsmath,mathtools,amssymb}
\usepackage[top=2cm,left=2cm,right=2cm]{geometry}
\author{something}
\title{something}
\begin{document}
\maketitle
\section{something}
\begin{equation}
\mathbf{G}=\overbrace{\begin{bmatrix}
0&0&0&0&0\\
0&0&0&0&0\\
0.271&0&0&0&0\\
0.498&0.271&0&0&0\\
0.687&0.498&0.271&0&0\\
0.845&0.687&0.498&0.271&0\\
0.977&0.845&0.687&0.498&0.271\\
1.087&0.977&0.845&0.687&0.498\\
1.179&1.087&0.977&0.845&0.687\\
1.256&1.179&1.087&0.977&0.845
\end{bmatrix}}^{\text{something 1}} \Biggr\rbrace
\text{something 2}
\end{equation}
\end{document}
类似于 的东西\right\rbrace
。不幸的是,你不能\right
单独使用。这里有一个解决方法tex.stackexchange.com/q/130798/156344如果有人能告诉我如何将那里使用的 TeX 转换为 LateX,我将非常感激。
答案1
以下是您可以使用 (≥ 6.4,截至 2021-11-23) 做{bNiceMatrix}
的事情nicematrix
:
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\[ \mathbf{G} =
\begin{bNiceMatrix}
0&0&0&0&0\\
0&0&0&0&0\\
0.271&0&0&0&0\\
0.498&0.271&0&0&0\\
0.687&0.498&0.271&0&0\\
0.845&0.687&0.498&0.271&0\\
0.977&0.845&0.687&0.498&0.271\\
1.087&0.977&0.845&0.687&0.498\\
1.179&1.087&0.977&0.845&0.687\\
1.256&1.179&1.087&0.977&0.845
\CodeAfter
\OverBrace{1-1}{10-5}{\text{something 1}}[yshift=1mm,shorten]
\SubMatrix{.}{1-1}{10-5}{\}}[right-xshift=1mm,extra-height=-1mm]
\end{bNiceMatrix}\quad \text{something 2}\]
\end{document}
您需要多次编译(因为nicematrix
在后台使用 PGF/Tikz 节点)。
答案2
按照您的风格写作:
\documentclass[reqno,12pt]{amsart}
\usepackage{amsmath,mathtools,amssymb}
\usepackage[top=2cm,left=2cm,right=2cm]{geometry}
\author{something}
\title{something}
\begin{document}
\maketitle
\section{something}
\begin{equation}
\newcommand\yourmatrix{\begin{bmatrix}
0&0&0&0&0\\
0&0&0&0&0\\
0.271&0&0&0&0\\
0.498&0.271&0&0&0\\
0.687&0.498&0.271&0&0\\
0.845&0.687&0.498&0.271&0\\
0.977&0.845&0.687&0.498&0.271\\
1.087&0.977&0.845&0.687&0.498\\
1.179&1.087&0.977&0.845&0.687\\
1.256&1.179&1.087&0.977&0.845
\end{bmatrix}}
\mathbf{G}=\overbrace{\yourmatrix}^{\text{something 1}}\left.\vphantom{\yourmatrix}\right\}{\scriptstyle\text{something 2}}
\end{equation}
\end{document}
这样,垂直括号是好的,但有它有点痛苦。水平括号并不好,因为它会将整个矩阵分组(使用括号)。考虑一些在矩阵上的括号以及类似的问题。
这是对它的一个很好的修改,但有点过头了。实际上,如果你按照这种方式,你就无法避免定义宏。
\documentclass[varwidth]{standalone}
\usepackage{amsmath,mathtools,amssymb}
\begin{document}
\begin{equation}
\newcommand\yourmatrix{\begin{matrix}
0&0&0&0&0\\
0&0&0&0&0\\
0.271&0&0&0&0\\
0.498&0.271&0&0&0\\
0.687&0.498&0.271&0&0\\
0.845&0.687&0.498&0.271&0\\
0.977&0.845&0.687&0.498&0.271\\
1.087&0.977&0.845&0.687&0.498\\
1.179&1.087&0.977&0.845&0.687\\
1.256&1.179&1.087&0.977&0.845
\end{matrix}}
\mathbf{G}=\left[\vphantom{\yourmatrix}\right.\overbrace{\yourmatrix}^{\text{something 1}}\left.\vphantom{\yourmatrix}\right]\left.\vphantom{\yourmatrix}\right\}{\scriptstyle\text{something 2}}
\end{equation}
\end{document}
使用savebox
(希望我理解正确——如果不对,请纠正我)
\documentclass[varwidth]{standalone}
\usepackage{amsmath,mathtools,amssymb}
\newsavebox{\yourmatrix}
\begin{document}
\begin{equation}
\sbox{\yourmatrix}{$\begin{matrix}
0&0&0&0&0\\
0&0&0&0&0\\
0.271&0&0&0&0\\
0.498&0.271&0&0&0\\
0.687&0.498&0.271&0&0\\
0.845&0.687&0.498&0.271&0\\
0.977&0.845&0.687&0.498&0.271\\
1.087&0.977&0.845&0.687&0.498\\
1.179&1.087&0.977&0.845&0.687\\
1.256&1.179&1.087&0.977&0.845
\end{matrix}$}
\mathbf{G}=\left[\vphantom{\usebox{\yourmatrix}}\right.\overbrace{\usebox{\yourmatrix}}^{\text{something 1}}\left.\vphantom{\usebox{\yourmatrix}}\right]\left.\vphantom{\usebox{\yourmatrix}}\right\}{\scriptstyle\text{something 2}}
\end{equation}
\end{document}
(与上面输出相同)
答案3
保存框基本上是预先格式化的文本,因此比扩展宏更快。更重要的是,可以直接提取宽度、高度和深度。
\documentclass[varwidth]{standalone}
\usepackage{amsmath,mathtools,amssymb}
\newsavebox{\yourmatrix}
\savebox{\yourmatrix}{$\begin{matrix}
0&0&0&0&0\\
0&0&0&0&0\\
0.271&0&0&0&0\\
0.498&0.271&0&0&0\\
0.687&0.498&0.271&0&0\\
0.845&0.687&0.498&0.271&0\\
0.977&0.845&0.687&0.498&0.271\\
1.087&0.977&0.845&0.687&0.498\\
1.179&1.087&0.977&0.845&0.687\\
1.256&1.179&1.087&0.977&0.845
\end{matrix}$}
\newcommand{\vphantombox}[1]{\vrule width0pt height\ht#1 depth\dp#1}
\begin{document}
\begin{equation}
\mathbf{G}=\left[\vphantombox\yourmatrix\right.\overbrace{\usebox\yourmatrix}^{\text{something 1}}\left.\vphantombox\yourmatrix\right]\left.\vphantombox\yourmatrix\right\}{\scriptstyle\text{something 2}}
\end{equation}
\end{document}