矩阵旁边的括号

矩阵旁边的括号
\begin{equation}\co_\beta(Au_{d+1})=
\begin{bmatrix}\langle u_1,Au_{d+1}\rangle \\ \vdots \\ \langle u_n,Au_{d+1}\rangle \end{bmatrix}=
\begin{bmatrix}\langle Au_1,u_{d+1}\rangle \\ \vdots \\ \langle Au_n,u_{d+1}\rangle \end{bmatrix}=
\begin{bmatrix}\langle \lambda u_1,u_{d+1}\rangle \\ \vdots \\ \langle \lambda u_d,u_{d+1}\rangle \\ \rule[.5ex]{4.5em}{0.4pt} \\ * \\ \vdots \\ *\end{bmatrix}=
\begin{bmatrix}0 \\ \vdots \\ 0  \\ \rule[.5ex]{1em}{0.4pt} \\ * \\ \vdots \\ *\end{bmatrix}
\begin{tabular}{l}\left.\lefteqn{\phantom{\begin{matrix} 0 \\ \vdots\\ 0 \end{matrix}}}\right\}d\text{ nullen} \\ \left.
\lefteqn{\phantom{\begin{matrix} b_0\\ \ddots\\ b_0\ \end{matrix}}} \right.\end{tabular}\end{equation}

结果是下面的,但有一些错误。有人能告诉我如何正确地将括号与矩阵对齐,并使代码更正确吗?

谢谢

在此处输入图片描述

答案1

首先,我纠正了一些错误。\lefteqn在这里没有任何意义。在数学环境中,使用array而不是表。我还提供了一个基于 TiKz 的解决方案。这是一个 MWE,您应该将其包含在您的问题中。

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{matrix,decorations.pathreplacing,calc}
% from https://tex.stackexchange.com/questions/402462/tikz-equivalent-of-pstricks-commands-ncbar-and-rnode
\newcommand{\tikznode}[2]{%
\ifmmode%
  \tikz[remember picture,baseline=(#1.base),inner sep=0pt] \node (#1) {$#2$};
\else
  \tikz[remember picture,baseline=(#1.base),inner sep=0pt] \node (#1) {#2};%
\fi}

\DeclareMathOperator{\co}{co}
\begin{document}
Without TiKz
\begin{equation}\co_\beta(Au_{d+1})=
\begin{bmatrix}\langle u_1,Au_{d+1}\rangle \\ \vdots \\ \langle u_n,Au_{d+1}\rangle \end{bmatrix}=
\begin{bmatrix}\langle Au_1,u_{d+1}\rangle \\ \vdots \\ \langle Au_n,u_{d+1}\rangle \end{bmatrix}=
\begin{bmatrix}\langle \lambda u_1,u_{d+1}\rangle \\ \vdots \\ \langle \lambda u_d,u_{d+1}\rangle \\ \rule[.5ex]{4.5em}{0.4pt} \\ * \\ \vdots \\ *\end{bmatrix}=
\begin{bmatrix}0 \\ \vdots \\ 0  \\ \rule[.5ex]{1em}{0.4pt} \\ * \\ \vdots \\ *\end{bmatrix}
\begin{array}{l}
\left.\vphantom{\begin{matrix} 0 \\ \vdots\\ 0
\end{matrix}}\right\}d\text{ nullen} \\ \left.
\vphantom{\begin{matrix} b_0\\[0.25cm]  \ddots\\ b_0\ \end{matrix}} \right.\end{array}
\end{equation}

With TiKz
% from https://tex.stackexchange.com/questions/40/how-do-i-label-different-rows-or-columns-of-a-matrix-using-braces/1070#1070
\begin{equation}\co_\beta(Au_{d+1})=
\begin{bmatrix}\langle u_1,Au_{d+1}\rangle \\ \vdots \\ \langle u_n,Au_{d+1}\rangle \end{bmatrix}=
\begin{bmatrix}\langle Au_1,u_{d+1}\rangle \\ \vdots \\ \langle Au_n,u_{d+1}\rangle \end{bmatrix}=
\begin{bmatrix}\langle \lambda u_1,u_{d+1}\rangle \\ \vdots \\ \langle \lambda u_d,u_{d+1}\rangle \\ \rule[.5ex]{4.5em}{0.4pt} \\ * \\ \vdots \\ *\end{bmatrix}=
\begin{bmatrix}\tikznode{x1}{0} \\ \vdots \\ \tikznode{x2}{0}  \\ \rule[.5ex]{1em}{0.4pt} \\ * \\ \vdots \\ *\end{bmatrix}
\tikz[decoration={brace},baseline=(current bounding box.west)]{%
\draw[decorate,transform canvas={yshift=3em},thick] (x1.north) -- (x2.south) node[right=5pt,midway] {$d$ nullen};     }
\end{equation}
\end{document}

在此处输入图片描述

答案2

这是一个解决方案nicematrix(最新版本:2021/02/05 的 5.10)。

我已将最后一个替换{bmatrix}{bNiceMatrix}

\SubMatrix然后,我使用 中的\CodeAfter命令放置了一个括号{bNiceMatrix}.为子矩阵创建一个空白的左分隔符,{1-1}{3-1}指定子矩阵的左上角应为 (1,1),右下角应为 (3,1),并\{使用左括号作为子矩阵的右分隔符,从而生成所需的括号。我使用 中的选项将括号推一点,[right-xshift=0.5em,name=A]然后命名对象A,以便我们稍后可以获取它。

nicematrix然后,我在为大括号创建的 Tikz 节点右侧放置了带有 Tikz 的标签。

\documentclass{article}
\usepackage{nicematrix,tikz}

\DeclareMathOperator{\co}{co}

\begin{document}

\[\co_\beta(Au_{d+1})=
\begin{bmatrix}\langle u_1,Au_{d+1}\rangle \\ \vdots \\ \langle u_n,Au_{d+1}\rangle \end{bmatrix}=
\begin{bmatrix}\langle Au_1,u_{d+1}\rangle \\ \vdots \\ \langle Au_n,u_{d+1}\rangle \end{bmatrix}=
\begin{bmatrix}\langle \lambda u_1,u_{d+1}\rangle \\ \vdots \\ \langle \lambda u_d,u_{d+1}\rangle \\ \rule[.5ex]{4.5em}{0.4pt} \\ * \\ \vdots \\ *\end{bmatrix}=
\begin{bNiceMatrix}
0 \\ \vdots \\ 0  \\ \rule[.5ex]{1em}{0.4pt} \\ * \\ \vdots \\ *
\CodeAfter
\SubMatrix.{1-1}{3-1}\}[right-xshift=0.5em,name=A]
\tikz \node [right] at (A-right.east) {$d$ nullen} ;
\end{bNiceMatrix}\]

\end{document}

您需要多次编译(因为nicematrix使用 PGF/Tikz 节点)。

上述代码的输出

相关内容