我有一个包含值 0 和 1 的矩阵。第一列包含 n_1 个 1 值,其余为 0。第二列以 n_1 个 0 值、n_2 个 1 值开始,其余为 0。我想在矩阵外部制作 {,写入 n_1、n_2 等,但我希望括号 { 扩展到多行。我该怎么做?
\documentclass[11pt]{memoir}
\usepackage{amsmath}
\begin{document}
\begin{align}
\begin{pmatrix}
1 & 0 & 0 & \cdots & 0 & 0 \\
\vdots & \vdots & \vdots & & \vdots & \vdots \\
1 & 0 & 0 & \cdots &0 & 0 \\
0 & 1 & 0 & \cdots &0& 0 \\
\vdots & \vdots & \vdots & &\vdots& \vdots \\
0 & 1 & 0 & \cdots &0& 0 \\
\vdots & \vdots & \vdots & & \vdots &\vdots \\
0 & 0 & 0 & \cdots &0& 1 \\
\vdots & \vdots & \vdots & &\vdots& \vdots \\
0 & 0 & 0 & \cdots &0& 1 \\
\end{pmatrix}
\end{align}
\end{document}
答案1
一个比较 hack 的解决方案:在子矩阵的底行(或者矩阵的第三、第六和最后一行),\vadjust
将东西放在该行之后。
然后使用三行不可见矩阵绘制括号,以获得括号的正确高度 ( \vphantom
)。将其放入\vbox to 0pt
以避免增加插入过孔之间的行跳动\vadjust
。此外,括号向左移动 ( \llap{...\kern.5em}
)。
\documentclass[11pt]{memoir}
\usepackage{amsmath}
\begin{document}
\begin{align}
\newcommand*{\AddLeft}[1]{%
\vadjust{%
\vbox to 0pt{%
\vss
\llap{$%
n_{#1}\left\{
\vphantom{
\begin{matrix}1\\\vdots\\0\end{matrix}
}
\right.\kern-\nulldelimiterspace
\kern0.5em
$}%
\kern0pt
}%
}%
}
\begin{pmatrix}
1 & 0 & 0 & \cdots & 0 & 0 \\
\vdots & \vdots & \vdots & & \vdots & \vdots \\
\AddLeft{1}
1 & 0 & 0 & \cdots & 0 & 0 \\
0 & 1 & 0 & \cdots & 0 & 0 \\
\vdots & \vdots & \vdots & & \vdots & \vdots \\
\AddLeft{2}
0 & 1 & 0 & \cdots & 0 & 0 \\
\vdots & \vdots & \vdots & & \vdots & \vdots \\
0 & 0 & 0 & \cdots & 0 & 1 \\
\vdots & \vdots & \vdots & & \vdots & \vdots \\
\AddLeft{p}
0 & 0 & 0 & \cdots & 0 & 1 \\
\end{pmatrix}
\end{align}
\end{document}
答案2
这是一个使用以下方法解决的解决方案tikz
\documentclass[11pt]{memoir}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{calc,decorations.pathreplacing}
\newcommand\REM[2]{\tikz[remember picture,inner sep=0pt] \node (#1) {#2};}
\begin{document}
\begin{align}
\begin{pmatrix}
\REM{A}{1} & 0 & 0 & \cdots & 0 & 0 \\
\vdots & \vdots & \vdots & & \vdots & \vdots \\
\REM{B}{1} & 0 & 0 & \cdots &0 & 0 \\
\REM{C}{0} & 1 & 0 & \cdots &0& 0 \\
\vdots & \vdots & \vdots & &\vdots& \vdots \\
\REM{D}{0} & 1 & 0 & \cdots &0& 0 \\
\vdots & \vdots & \vdots & & \vdots &\vdots \\
\REM{E}{0} & 0 & 0 & \cdots &0& 1 \\
\vdots & \vdots & \vdots & &\vdots& \vdots \\
\REM{F}{0} & 0 & 0 & \cdots &0& 1 \\
\end{pmatrix}
\begin{tikzpicture}[remember picture,overlay]
\draw[decorate,decoration={brace,mirror}]
($(A)+(-1,0)$) -- ($(B)+(-1,0)$)
node[midway,left=2pt] {$n_1$} ;
\draw[decorate,decoration={brace,mirror}]
($(C)+(-1,0)$) -- ($(D)+(-1,0)$)
node[midway,left=2pt] {$n_2$} ;
\draw[decorate,decoration={brace,mirror}]
($(E)+(-1,0)$) -- ($(F)+(-1,0)$)
node[midway,left=2pt] {$n_p$} ;
\end{tikzpicture}
\end{align}
\end{document}
答案3
不要使用令人困惑的省略号,例如,省略号之后,块1
的最后一个n_2
部分将变为零。实际上,如果可以,请始终避免使用省略号。您的矩阵具有非常独特的结构,并且对读者来说显而易见。当他们知道规则时,他们可以构造矩阵。但他们无法轻松地从构造中读取规则。
以下是一个选项:
\documentclass{article}
\usepackage{,amsfonts,mathtools,bm}
\DeclarePairedDelimiter{\diagfences}{(}{)}
\newcommand{\diag}{\operatorname{diag}\diagfences}
\begin{document}
Let $\bm{1}_{n_i}$ be the vector with all entries are equal to $1$. Then $M$ is defined as
\[
M = \diag{\bm{1}_{n_1},\bm{1}_{n_2},\cdots,\bm{1}_{n_p}}.
\]
\end{document}
答案4
对于一次性显示,这里有一个技巧,利用括号应该和三行矩阵一样高的事实。
\documentclass[11pt]{memoir}
\usepackage{amsmath}
\newcommand{\nrow}[1]{%
\relax
\vcenter to 0pt{%
\vss
\kern-1.5ex
\llap{$#1\left\{\vphantom{\begin{matrix}0\\\vdots\\0\end{matrix}}\right.\kern.75em$}%
\vss
}%
}
\begin{document}
\begin{center}
XXXXXXXXXXXXXXX
\end{center}
\begin{equation}
\hphantom{n_p\kern.75em}
\begin{pmatrix}
1 & 0 & 0 & \cdots & 0 & 0 \\
\nrow{n_1}\vdots & \vdots & \vdots & & \vdots & \vdots \\
1 & 0 & 0 & \cdots & 0 & 0 \\
0 & 1 & 0 & \cdots & 0 & 0 \\
\nrow{n_2}\vdots & \vdots & \vdots & & \vdots & \vdots \\
0 & 1 & 0 & \cdots & 0 & 0 \\
\vdots & \vdots & \vdots & & \vdots & \vdots \\
0 & 0 & 0 & \cdots & 0 & 1 \\
\nrow{n_p}\vdots & \vdots & \vdots & & \vdots & \vdots \\
0 & 0 & 0 & \cdots & 0 & 1 \\
\end{pmatrix}
\end{equation}
\end{document}
X 的字符串只是为了显示良好的居中。