矩阵中跨越重叠列的多个下支撑

矩阵中跨越重叠列的多个下支撑

我想要显示矩阵的结构,如下图所示:

在此处输入图片描述

以下代码显示了矩阵的结构(不带下括号):

\documentclass{standalone}

\usepackage{amsmath}

\begin{document}
$\displaystyle
\begin{pmatrix}
  1 & 1 & \ldots & 1 \\
    & 1 & \ldots & 1 & 1 \\
    &   & \ddots & \\
    &   &        & 1 & \ldots & 1
\end{pmatrix}
$
\end{document}

输出如下:

在此处输入图片描述

如何使用下括号排版所需的矩阵?

答案1

使用 的变体的解决方案\tikzmark

代码

\documentclass[border=5pt]{standalone}

\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing}

\newcommand\tikzmark[2][]{\tikz[remember picture,baseline=(#1.base)]\node[inner sep=0,outer sep=0](#1){#2};}

\begin{document}
$\displaystyle
\begin{pmatrix}
  \tikzmark[1-1]{1} & 1 & \ldots & \tikzmark[1-n]{1} \\[2ex]
    & \tikzmark[2-1]{1} & \ldots & 1 & \tikzmark[2-n]{1} \\[2ex]
    &   & \ddots & \\[2ex]
    &   &        & \tikzmark[n-1]{1} & \ldots & \tikzmark[n-n]{1}
\end{pmatrix}
$
\foreach \i in {1,2,n}
\tikz[remember picture,overlay]\draw[decorate,decoration={brace,amplitude=3pt,mirror}](\i-1.south west)--node[below]{$s$}(\i-n.south east);
\end{document}

输出

在此处输入图片描述


或者完整的 TikZ 解决方案(不使用pmatrix

代码

\documentclass[border=5pt]{standalone}

\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing,matrix}

\begin{document}
\begin{tikzpicture}[every left delimiter/.style={xshift=1ex},every right delimiter/.style={xshift=-1ex}]
  \matrix(m)[matrix of math nodes,
    left delimiter=(,
    right delimiter=),
    row sep=2ex
  ]{
    |[name=1-1]|1 & 1             & \ldots & |[name=1-n]|1                          \\
                  & |[name=2-1]|1 & \ldots & 1             & |[name=2-n]|1          \\
                  &               & \ddots &                                        \\
                  &               &        & |[name=n-1]|1 & \ldots & |[name=n-n]|1 \\
  };
  \foreach \i in {1,2,n}
  \draw[decorate,decoration={brace,amplitude=3pt,mirror}](\i-1.south west)--node[below=1pt]{$s$}(\i-n.south east);
\end{tikzpicture}
\end{document}

输出

在此处输入图片描述

答案2

我对类似问题的另一个答案的变体矩阵中的下支撑

\documentclass{standalone}
\usepackage{amsmath,mathtools}

\newcommand{\blockB}[1]{
  \underbrace{\!\!\begin{matrix}1 & \cdots & 1\end{matrix}\!\!}_{#1\mathstrut}
}

\begin{document}
$
  \begin{pmatrix}
  1 & \mathrlap{\blockB{k}} \\
  & 1 & \mathrlap{\blockB{k}} \\
  && 1 & \mathrlap{\blockB{k}} \\
  &&&& \ddots \\
  &&&&& 1 & \blockB{k}
  \end{pmatrix}
$
\end{document}

在此处输入图片描述

如果想要支架跨越整个块,还需要一些技巧。

\documentclass[border=5]{standalone}
\usepackage{amsmath,mathtools}

\newcommand{\blockC}[1]{
  \,\,\underbrace{\!\!\begin{matrix}1 & 1 & \cdots & 1\end{matrix}\!\!}_{#1\mathstrut}\,\,
}

\begin{document}
$
  \begin{pmatrix}
  \hphantom{1}\mathrlap{\blockC{k}} \\
  & \hphantom{1}\mathrlap{\blockC{k}} \\
  && \hphantom{1}\mathrlap{\blockC{k}} &\hphantom{1} \\
  &&&& \ddots \\
  &&&&& \blockC{k}
  \end{pmatrix}
$
\end{document}

我使用一些\hphantom{1}来确保正确对齐:它们给单元格一些宽度。

在此处输入图片描述

答案3

如果你对泛化不太感兴趣的话,下面是可能的情况:

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\newcommand{\mydots}[1]{\makebox[0pt][l]{$\underbrace{1\ 1\ \cdots\ 1}_{#1}$}}
\begin{document}
\[
  \begin{pmatrix}
    \mydots{s} & \\
    & \hspace*{3em}\mydots{s} & \\
    & & \hspace*{3em}\ddots & \\
    & & & \mydots{s} & \hspace{3em}
  \end{pmatrix}
\]
\end{document}

这个想法是设置具有轻微重叠(不是真正必要的)和适当空间的构造(\underbrace结构) 。r

答案4

我会用简写来稍微整理一下符号

\documentclass{article}
\usepackage{mathtools,bbm}%Use your favorite font for bboard number


\begin{document}
\noindent
If someone defines $\mathbbm{1}$ as all-ones vector,
\[
  \begin{pmatrix}
  1 & \mathbbm{1}^T_k \\
  & 1 & \mathbbm{1}^T_k \\
  && 1 &  \mathbbm{1}^T_k \\
  &&& \ddots & \ddots \\
  &&&& 1 & \mathbbm{1}^T_k
  \end{pmatrix}
\]
\end{document}

在此处输入图片描述

如果您决定加载 TikZ,那么使用这些系列就没有理由了\...dots。它们已经在没有图形工具的情况下被使用了。现在您有了怪物,我建议不要保守,而是有效地使用这个怪物。

相关内容