我想要显示矩阵的结构,如下图所示:
以下代码显示了矩阵的结构(不带下括号):
\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
。它们已经在没有图形工具的情况下被使用了。现在您有了怪物,我建议不要保守,而是有效地使用这个怪物。