答案1
我建议的解决方案是blkarray
:
\documentclass{article}
\usepackage{blkarray, bigstrut}
\begin{document}
\[
\left[\begin{blockarray}{ccccccc}
0 & 0 & 0 & 0 & 0 & 1 & 0 \bigstrut[t]\\
0 & 0 & 0 & 0 & 0 & 0 & 1 \\
\begin{block}{cc[ccc]cc}
0 & 0 & & & & 0 & 0 \\
0 & 0 & \BAmulticolumn{3}{c}{A_c-B_cK_c} & 0 & 0 \\
0 & 0 & & & & 0 & 0 \\
\end{block}
0 & 0 & 1 & 2 & 3 & 0 & 0 \\
0 & 0 & 4 & 5 & 6 & 0 & 0 \\[-2ex]
\end{blockarray}\right]
\]%
\end{document}
答案2
与。{bNiceMatrix}
nicematrix
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
$\begin{bNiceMatrix}[columns-width=4mm]
0 & 0 & 0 & 0 & 0 & 1 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 1 \\
0 & 0 & \Block{3-3}{A_c-B_cK_c}
& & & 0 & 0 \\
0 & 0 & & & & 0 & 0 \\
0 & 0 & & & & 0 & 0 \\
0 & 0 & 1 & 2 & 3 & 0 & 0 \\
0 & 0 & 4 & 5 & 6 & 0 & 0 \\
\CodeAfter
\SubMatrix[{3-3}{5-5}]
\end{bNiceMatrix}$
\end{document}
您需要多次编译(因为nicematrix
在后台使用 PGF/Tikz 节点)。
答案3
一个想法是“猜测”适当数量的额外列间空间以容纳相当大的A_c-B_cK_c
。我尝试了一下,发现 3pt 适合标准字体和 10pt 大小。
\documentclass{article}
\usepackage{amsmath,mathtools}
\begin{document}
\[
\addtolength{\arraycolsep}{3pt}
\begin{bmatrix}
0 & 0 & \begin{matrix} 0 & 0 & 0 \end{matrix} & 1 & 0 \\
0 & 0 & \begin{matrix} 0 & 0 & 0 \end{matrix} & 0 & 1 \\
\begin{matrix} 0 \\ 0 \\ 0 \end{matrix} &
\begin{matrix} 0 \\ 0 \\ 0 \end{matrix} &
\hidewidth\begin{bmatrix}
\\
A_c-B_cK_c \\
\\
\end{bmatrix}\hidewidth &
\begin{matrix} 0 \\ 0 \\ 0 \end{matrix} &
\begin{matrix} 0 \\ 0 \\ 0 \end{matrix} \\
0 & 0 & \begin{matrix} 1 & 2 & 3 \end{matrix} & 0 & 0 \\
0 & 0 & \begin{matrix} 4 & 5 & 6 \end{matrix} & 0 & 0 \\
\end{bmatrix}
\]
\end{document}
在\hidewidth
任一侧,就间距而言,中心块都是“不可见的”,但仍然是打印的。