在 Latex 中指定块矩阵的维度

在 Latex 中指定块矩阵的维度

我最近开始学习 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}

上述代码的输出

相关内容