我想要显示矩阵的结构,如下图所示:
可以使用pmatrix
和来完成吗\underbrace
?
我尝试合并pmatrix
并\underbrace
导致编译错误。
\documentclass{standalone}
\usepackage{amsmath}
\begin{document}
$
\begin{pmatrix}
%1 & \underbrace{1 & \cdots & 1}_{k} \\ % compile error!
1 & 1 & \cdots & 1 \\
1 & 1 & 1 & 1
\end{pmatrix}
$
\end{document}
答案1
以下组合\smash[b]
应该有效:
\documentclass{standalone}
\usepackage{amsmath}
\newcommand{\block}[1]{
\underbrace{\begin{matrix}1 & \cdots & 1\end{matrix}}_{#1}
}
\begin{document}
$
\underbrace{
\begin{pmatrix}
1 & \smash[b]{\block{k}} \\
&& 1 & \smash[b]{\block{k}} \\
&&&& \ddots \\
&&&&& 1 & \block{k}
\end{pmatrix}
}_{T}
$
\end{document}
如果您不想在支撑块中留出点的间距,请更改定义:
\documentclass{standalone}
\usepackage{amsmath}
\newcommand{\block}[1]{
\underbrace{1 \cdots 1}_{#1}
}
\begin{document}
$
\underbrace{
\begin{pmatrix}
1 & \smash[b]{\block{k}} \\
&& 1 & \smash[b]{\block{k}} \\
&&&& \ddots \\
&&&&& 1 & \block{k}
\end{pmatrix}
}_{T}
$
\end{document}
为了仅获取分隔符内的下括号,它更加复杂,因为我们不希望在确定分隔符大小时考虑下括号,但我们希望考虑它占用的垂直空间。
\documentclass{standalone}
\usepackage{amsmath}
\newcommand{\block}[1]{
\underbrace{1 \cdots 1}_{#1}
}
\newcommand{\underbracedmatrix}[2]{%
\left(\;
\smash[b]{\underbrace{
\begin{matrix}#1\end{matrix}
}_{#2}}
\;\right)
\vphantom{\underbrace{\begin{matrix}#1\end{matrix}}_{#2}}
}
\begin{document}
$
\underbracedmatrix{
1 & \smash[b]{\block{k}} \\
&& 1 & \smash[b]{\block{k}} \\
&&&& \ddots \\
&&&&& 1 & \block{k}
}{T}
$
\end{document}
答案2
又一次尝试:
\documentclass{article}
\begin{document}
\def\onegroup{1\hskip\arraycolsep\underbrace{1 \hskip\arraycolsep\dots \hskip\arraycolsep 1}_{k}}
\[
\underbrace{
\left(
\begin{array}{cccc}
\onegroup&&&\\
&\onegroup&&\\
&&\ddots&\\
&&&\onegroup
\end{array}
\right)
}_{T}
\]
\end{document}
答案3
尽管@egreg 解决方案似乎足够强大,但这只是另一种风格:
\documentclass{standalone}
\usepackage{amsmath,mathtools}
\newcommand{\sunderb}[2]{
\mathclap{\underbrace{\makebox[#1]{$\cdots$}}_{#2}}
}
\begin{document}
$
\begin{pmatrix}
1 & 1 & 1 & 1\\
1 & 1 & \sunderb{3.5em}{k} & 1 \\
1 & 1 & 1 & 1
\end{pmatrix}
$
\end{document}