答案1
人们可以简单地使用array
一个小技巧来让块上的字母变得更大。
\documentclass{article}
\usepackage{amsmath}
\newcommand{\Block}[2]{%
\makebox[0pt]{\smash{$\mbox{\LARGE$#1$}_{#2}$}}%
}
\begin{document}
\[
Q=\left[
\begin{array}{@{}cccc|ccc@{}}
1 & 1 & \dots & \multicolumn{1}{c}{1} & 1 & \dots & 1 \\
1 & & & & & & \\
\vdots & & \Block{A}{l\times l} & & & \Block{0}{} & \\
1 & & & & & & \\
\cline{2-7}
1 & & & & & & \\
\vdots & & \Block{0}{} & & & \Block{B}{} & \\
1 & & & & & &
\end{array}
\right]
\]
\end{document}
答案2
您始终可以将一个数组放入另一个数组中,或者使用\multicols
或\multirows
(多行包,返回文本模式)。现在,扩展单元格以适应空间更加困难。
\documentclass{standalone}
\usepackage{amsmath}
\usepackage{multirow}
\begin{document}
$\begin{bmatrix}
1 & 1 & 1 & 1 & \cdots & 1 \\
1 & \multicolumn{5}{c}{\multirow{5}{*}{$\begin{array}{c|c}
{A}_{l\times l} & 0 \\
\hline
0 & B
\end{array}$}}\\
1 \\
1 \\
\vdots \\
1
\end{bmatrix}$
\end{document}
此解决方案与外部矩阵对齐。它使用\raisebox
而不是\multirow
(偏移距离被伪造)。
\documentclass{standalone}
\usepackage{amsmath}
\begin{document}
$\left[ \begin{array}{cccccc}
1 & 1 & 1 & 1 & \cdots & 1 \\
1 & \multicolumn{3}{c|}{} \\
1 & \multicolumn{3}{c|}{A_{l\times l}} & \multicolumn{2}{c}{0} \\
1 & \multicolumn{3}{c|}{} \\
\cline{2-6}
\vdots & \multicolumn{3}{c|}{\raisebox{-1ex}[0pt][0pt]{$0$}} & \multicolumn{2}{c}{\raisebox{-1ex}[0pt][0pt]{$B$}} \\
1 & \multicolumn{3}{c|}{}
\end{array}\right]$
\end{document}
答案3
pstricks
用于垂直线和\booktabs
水平线的解决方案 :
\documentclass{article}
\usepackage{mathtools}
\usepackage{multirow, blkarray, delarray}
\usepackage{booktabs}
\usepackage{pst-node, auto-pst-pdf}
\begin{document}
\begin{postscript}
\[ \begin{bmatrix}
1 & 1 & 1 & 1 \pnode{A} & 1 & \cdots & 1 \\
1 & & & \\
1 & & \mathclap{A} \\[-1ex]
\vdots & & & & & & \\[-1.5ex]
\vdots \\[-2.5ex]
\cmidrule(r){2-7}
\vdots \\[-1.5ex]
\vdots & & & & \multicolumn{3}{c}{\raisebox{1.5ex}{$ B $}}\\
1 & & & \phantom{1}\pnode{B}
\end{bmatrix} \]
\pcline[offset=\arraycolsep, linewidth=0.4pt]{-}(A)(B)
\end{postscript}
\end{document}