我最近开始学习 LaTeX,虽然我通过在线查找(尤其是这里)找到了几乎所有问题的答案,但对于我正在撰写的文章,还有一件事我希望能够做到但无法做到:
我希望能够指定矩阵下的维度和“子维度”。为了更清楚起见,让我们看以下示例:
$ D =
\underbracket{\begin{pmatrix}
D_1 & 0 & 0 & & & \\
0 & \ddots & & & {\textrm{\huge 0}} & \\
0 & 0 & D_n & & & \\
& & & & & \\
& \textrm{\huge 0} & & & {\textrm{\huge 0}} & \\
& & & & & \\
\end{pmatrix}}_N $
这给出了一个不错的矩阵,维度 N 被指定为矩阵下方的括号。这很好,但是我想添加第二个括号来指定矩阵正下方(可能在第一个主括号上方)的内部块矩阵的较小维度 n,该维度更短,即我希望它从 1 延伸到 n,而不是一直延伸到矩阵下方。
我愿意接受任何解决方案,但对我来说越简单越好:)
答案1
下面的内容并不是很养眼,但可能正是您想要的:
\documentclass{article}
\usepackage{mathtools}% http://ctan.org/pkg/mathtools
\begin{document}
\[
D =
\underbracket{\begin{pmatrix}
D_1 & 0 & 0 & & & \\
0 & \ddots & & & {\textrm{\huge 0}} & \\
0 & 0 & D_n & & & \\
& & & & & \\
& \textrm{\huge 0} & & & {\textrm{\huge 0}} & \\
& & & & & \\
\end{pmatrix}}_N
\]
\[
D= \underbracket[.4pt]{\left(\begin{array}{@{}c@{\quad}c}
\underbracket[.4pt]{\begin{array}{ccc}
D_1 & \vphantom{\ddots}0 & 0 \\
0 & \ddots & 0 \\
0 & \vphantom{\ddots}0 & D_n
\end{array}}_{n} & \text{\huge 0} \\
\\
\text{\huge 0} & \text{\huge 0}
\end{array}\right)}_{N}
\]
\end{document}
使用\vphantom
确保“内部矩阵”的行高在所有行中都相似(无需实际打印\ddots
)。
我采用了更传统的方法(使用array
),而不是pmatrix
。优点是您可以控制对齐。
答案2
请始终发布显示所有使用过的软件包的完整文档。我找不到underbracket
。似乎有一个虚假的右侧列影响了分隔符的间距,而且我还删除了一些多余的括号。
\documentclass{article}
\usepackage{amsmath}
\begin{document}
$ D =
\begin{pmatrix}
D_1 & 0 & 0 & & \\
0 & \ddots & & & \textrm{\huge 0} \\
0 & 0 & D_n & & & \\
\multicolumn{3}{c}{$\upbracefill$}&\\
\multicolumn{3}{c}{\scriptstyle n}&\\
& & & & \\
& \textrm{\huge 0} & & & \textrm{\huge 0} \\
\multicolumn{6}{c}{$\upbracefill$}\\
\multicolumn{6}{c}{\scriptstyle N}\\
\noalign{\vspace{-2\normalbaselineskip}}
\end{pmatrix} $\vspace{2\normalbaselineskip}
\end{document}
答案3
这实际上与戴维的回答相同,但稍微漂亮一些:
\documentclass{article}
\usepackage{mathtools}
\begin{document}
\[
D =
\begin{pmatrix}
\;D_1 & 0 & 0 & & & \\[-.5ex]
0 & \clap{$\ddots$} & & & \raisebox{-1ex}{\huge 0} & \strut\enspace
\\[4pt]
0 & 0 & D_n & & & \\
\multicolumn{3}{c}{$\upbracefill$}&\\
\multicolumn{3}{c}{\scriptstyle n}&\\
& & & & \\
& \textrm{\huge 0} & & & \textrm{\huge 0} & \\
\multicolumn{6}{c}{$\upbracefill$}\\
\multicolumn{6}{c}{\scriptstyle N}\\
\noalign{\vspace{-2\normalbaselineskip}}
\end{pmatrix}
\vspace{2\normalbaselineskip}
\]
\end{document}
答案4
以下是您可以使用 做的{pNiceMatrix}
事情nicematrix
。
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
$D = \begin{pNiceMatrix}[margin,columns-width=auto,nullify-dots]
D_1 & 0 & 0 & \Block{3-3}<\LARGE>{0} & & \\
0 & \Ddots & 0 \\
0 & 0 & D_n \\
\\
\Block{3-3}<\LARGE>{0} & & & \Block{3-3}<\LARGE>{0} \\
\\
\\
\CodeAfter
\UnderBrace{1-1}{3-3}{n}
\UnderBrace[yshift=2mm]{7-1}{7-6}{N}
\end{pNiceMatrix}$
\end{document}