经过一番努力,我终于能够渲染我想要的矩阵了。它现在具有正确的“形状”,但看起来不太好看;尤其是括号和矩阵内容之间的间距太小,无论是水平还是垂直。我该如何解决这个问题?有没有办法定义单元格填充?
\documentclass{article}
\usepackage{blkarray}
\usepackage{multirow}
\begin{document}
\begin{equation}
C =
\begin{blockarray}{cccccccc}
& & & & j & & & \\
\begin{block}{c[ccc|c|ccc]} % [I O]
& 1 & & & 0 & 0 & \ldots & 0 \\
& & \ddots & & \vdots & \vdots & & \vdots \\
& & & 1 & 0 & 0 & \ldots & 0 \\
\BAhhline{&-------}
i & \BAmulticolumn{3}{c|}{A_1} & Q_{11} & \multirow{4}{*}{$B_2+b_2$} &
\multirow{4}{*}{$\ldots$} &
\multirow{4}{*}{$B_n+b_n$} \\
\BAhhline{&----}
& \BAmulticolumn{3}{c|}{A_1+a_1} & 0 & \\
& & \vdots & & \vdots & \\
& \BAmulticolumn{3}{c|}{A_n+A_n} & 0 & \\
\end{block}
\end{blockarray}
\end{equation}
\end{document}
答案1
该参数\BAextraheightafterhline
可能可以实现您想要的垂直间距。修改分隔符周围的水平间距有点像暗黑艺术。
\documentclass{article}
\usepackage{blkarray}
\usepackage{multirow}
\begin{document}
\setlength\BAextraheightafterhline{5pt}
\setlength\tabcolsep{15pt}
\begin{equation}
C =
\begin{blockarray}{cccccccc}
& & & & j & & & \\
\begin{block}{c\Left{}{[\;}ccc|c|ccc<{\;}]} % [I O]
& 1 & & & 0 & 0 & \ldots & 0 \\
& & \ddots & & \vdots & \vdots & & \vdots \\
& & & 1 & 0 & 0 & \ldots & 0 \\
\BAhhline{&-------}
i & \BAmulticolumn{3}{c|}{A_1} & Q_{11} & \multirow{4}{*}{$B_2+b_2$} &
\multirow{4}{*}{$\ldots$} &
\multirow{4}{*}{$B_n+b_n$} \\
\BAhhline{&----}
& \BAmulticolumn{3}{c|}{A_1+a_1} & 0 & \\
& & \vdots & & \vdots & \\
& \BAmulticolumn{3}{c|}{A_n+A_n} & 0 & \\
\end{block}
\end{blockarray}
\end{equation}
\end{document}
答案2
以下是您可以使用{bNiceArray}
的操作nicematrix
(您需要多次编译)。
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\[C =
\begin{bNiceArray}[first-row,first-col,margin]{ccc|c|lcr}
& & & & j \\
& 1 & & & 0 & 0 & \Cdots & 0 \\
& & \Ddots & & \Vdots& \Vdots & & \Vdots \\
& & & 1 & 0 & 0 & \Cdots & 0 \\
\Hline
i & \Block{1-3}{A_1} & & & Q_{11} & \Block[name=one]{4-1}{B_2+b_2} & & \Block[name=two]{4-1}{B_n+b_n} \\
\cline{1-4}
& \Block[name=three]{1-3}{A_1+a_1} & & & 0 \\
& & & & \Vdots \\
& \Block[name=four]{1-3}{A_n+A_n} & & & 0 \\
\CodeAfter
\line{one}{two}
\line{three}{four}
\end{bNiceArray}
\]
\end{document}