我有这个相当复杂的矩阵,我正尝试用这个blkarray
包来制作它。
\begin{figure}
\aboverulesep=0pt \belowrulesep=0pt
\center
\begin{blockarray}{cccccccccccc}
& $e_1$ & $e_2$ & $\dots$ & $e_j$ & $\ldots$ & $e_n$ & $e'_1$ & $e'_2$ & $\ldots$ & $e'_j$ & f \\
\cmidrule{2-11}
\begin{block}{c[cccccc|cccc|c]}
& & & & & & & & & & & $0$ \\
& & & $B$ & & & & & & $C$ & & $0$ \\
& & & & & & & & & & & $\vdots$ \\
& & & & & & & & & & & $0$ \\
\cmidrule(l){2-11}
\end{block}
\begin{block}{c[ccccccccccc]}
$r_1$ & $1$ & & & & & & $1$ & & & & $1$ \\
$r_2$ & & $1$ & & & & & & $1$ & & & $1$ \\
$\vdots$ & & & $\ddots$ & & & & & & $\ddots$ & & $\vdots$ \\
$r_j$ & & & & $1$ & & & & & & $1$ & $1$ \\
\end{block}
\end{blockarray}
\end{figure}
我想要的是矩阵用括号括起来,其中列和某些行的标签在括号外。我粘贴的代码不适用于这种情况,因为块声明中的[
s 和]
s 仅适用于该块,因此括号在中间断开。如果我将它们替换为|
,它至少看起来是连续的,但它看起来不太像边框。
如何获得连续边框,且标签位于边框外部?上面的代码可以呈现此效果,但我只想要一对括号。
答案1
我建议使用bigdelim
附带的multirow
:
\documentclass{article}
\usepackage{blkarray, bigdelim, booktabs}
\newcommand{\mc}[1]{\multicolumn{1}{c}{#1}}
\begin{document}
\begin{figure}[!ht]
\aboverulesep=0pt \belowrulesep=0pt
\centering
$ \begin{array}{c@{}c@{}*{6}{c}|*{4}{c}|c@{}c}
& & e_1 & e_2 & \dots & e_j & \ldots & e_n & e'_1 & e'_2 & \ldots & \mc{e'_j }& \mathrm{f} \\
\cmidrule{3-12}
& \ldelim [{9}{*}& & & & & & & & & & & 0 & \rdelim ]{9}{*}\\
& & & & B & & & & & & C & & 0 \\
& & & & & & & & & & & & \vdots \\
& & & & & & & & & & & & 0 \\
\cmidrule{3-12}
r_1 & & 1 & & & & &\mc{} & 1 & & &\mc{} & 1 \\
r_2 & & 1 & & & & &\mc{} & 1 & &\mc{} & \mc{} & 1\\
\vdots & & & & \ddots & & &\mc{} & & & \ddots &\mc{} & \vdots \\
r_j & & & & & 1 & &\mc{} & & & & \mc{1}& 1
\end{array} $
\end{figure}
\end{document}
答案2
您可以使用最新版本nicematrix
(2021-02-22 的 v. 5.11) 来执行此操作。
\documentclass{article}
\usepackage{nicematrix,tikz}
\begin{document}
\setcounter{MaxMatrixCols}{12}
$\begin{bNiceMatrix}[first-row,first-col,left-margin=7pt,xdots/shorten=4pt]
\rule[-7pt]{0pt}{7pt}
& e_1 & e_1 & \Ldots & e_j & \Ldots & e_n & e_1' & e_2' & \Ldots & e_j' \\
& \Block{4-6}{B}
& & & & & & \Block{4-4}{C}
& & & & 0 \\
& & & & & & & & & & & 0 \\
& & & & & & & & & & & \Vdots \\
& & & & & & & & & & & 0 \\\noalign{\vskip1mm}
r_1 & 1 & & & & & & 1 & & & & 1 \\
r_2 & & 1 & & & & & & 1 & & & 1 \\
\Vdots & & & \Ddots & & & & & & \Ddots & & \Vdots \\
r_j & & & & 1 & & & & & & 1 & 1
\CodeAfter
\tikz \draw (5-|1) -| (1-|11) (1-|7) -- (5-|7) ;
\end{bNiceMatrix}$
\end{document}
您需要多次编译(因为nicematrix
使用 PGF/Tikz 节点)。
答案3
只是另一种味道。只有blkarray
。我没有改变你的代码,所以B
和C
没有正确居中。
\documentclass[12pt,a4paper]{article}
\usepackage{blkarray}
\begin{document}
\setlength{\tabcolsep}{2.8pt}
\begin{figure}
\centering
\begin{tabular}{@{\hspace{3ex}}ccccccc @{\hspace{2.5ex}}cccc @{\hspace{3ex}}c}
& $e_1$ & $e_2$ & $\dots$ & $e_j$ & $\ldots$ & $e_n$ & $e'_1$ & $e'_2$ & $\ldots$ & $e'_j$ & f \\
\end{tabular}
\begin{blockarray}{c @{\hspace{1ex}}[ ccccccc cccc@{} ]}
\begin{block*}{ccccccc|cccc|c}
& & & & & & & & & & & $0$ \\
& & & $B$ & & & & & & $C$ & & $0$ \\
& & & & & & & & & & & $\vdots$ \\
& & & & & & & & & & & $0$ \\
\cline{2-11}
\end{block*}
\begin{block*}{cccccccccccc}
$r_1$ & $1$ & & & & & & $1$ & & & & $1$ \\
$r_2$ & & $1$ & & & & & & $1$ & & & $1$ \\
$\vdots$ & & & $\ddots$ & & & & & & $\ddots$ & & $\vdots$ \\
$r_j$ & & & & $1$ & & & & & & $1$ & $1$ \\
\end{block*}
\end{blockarray}
\end{figure}
\end{document