我已经创建了一个如下所示的分块矩阵:
然而,我对以下三件事并不满意:
1)如何将这两条分界线(一条是垂直线,另一条是虚线)改为两条整线?
2) 顶部的“G1”相对于矩阵的左侧部分未完全居中。左侧的“G1”和“G2”相对于矩阵的上部和下部分别未垂直居中。
3)“R左侧的“=”部分未垂直居中。
以下是代码:
\documentclass{article}
\usepackage{amsmath}
\usepackage{blkarray}
\begin{document}
\begin{minipage}{\textwidth}{
$\boldsymbol{R} =
\begin{blockarray}{ccccccccccc}
& & & & G1 & & | & & G2 & \\
& & S_1 & S_2 & ... & S_{n_1} & | & S_{n_1+1} & S_{n_1+2} & ... & S_n \\
\begin{block}{cc(ccccccccc)}
&S_1 & {1} & r_{12} & ... & r_{1n_1} &| & r_{1(n_1+1)} & r_{1(n_1+2)} & ... & r_{1n} \\
G1&S_2 & r_{12} & 1 &...& r_{2n_1} & | & r_{2(n_1+1)} & r_{2(n_1+2)} & ... & r_{2n} \\
&\vdots & \vdots & \vdots &\vdots & \vdots & | &\vdots & \vdots & \vdots &\vdots \\
&S_{n_1} & r_{1n_1} & r_{2n_1} & ... & 1 & | & r_{n_1(n_1+1)} & r_{n_2(n_1+2)}& ... & r_{n_1n} \\
-&-& - & - & - & - & - & - & - & - & -\\
&S_{n1+1} & r_{1(n_1+1)} & r_{2(n_1+1)} & ... & r_{n_1(n_1+1)} & | & r_{(n_1+1)(n_1+1)} & r_{(n_1+1)(n_1+2)} & ... & r_{(n_1+1) n} \\
&S_{n1+2} & r_{1(n_1+2)} & r_{2(n+1+2)} & ... & r_{(n_1+2)(n_1+1)} & | & r_{(n_1+1)(n_1+2)} & r_{(n_1+2)(n_1+2)} & ... & r_{(n_1+2) n} \\
G2 &\vdots & \vdots & \vdots &\vdots & \vdots & | & \vdots &\vdots & \vdots & \vdots \\
&S_n & r_{1n} & r_{2n} &...& r_{n_1 n} & | & r_{(n_1+1)n} & r_{(n_1+2)n} & ... & r_{nn} \\
\end{block}
\end{blockarray}$
}
\end{minipage}
\end{document}
答案1
以下是一个解决方案pst-node
以及一些小的调整:
\documentclass{article}
\usepackage{amsmath}
\setlength\tabcolsep{4pt}
\usepackage{blkarray}
\usepackage{geometry}
\usepackage{pst-node}
\usepackage{auto-pst-pdf}
\begin{document}
\noindent\begin{minipage}{\textwidth}{%
\begin{postscript}
$%\boldsymbol{R} =
\begin{blockarray}{cc*{5}{c}!{\pnode{V1}}*{4}{c}}
& & & \BAmulticolumn{4}{c}{G1} & \BAmulticolumn{4}{c}{G2}\\
& & & S_1 & S_2 & ... & S_{n_1} & S_{n_1+1} & S_{n_1+2} & ... & S_n \\
\begin{block}{c@{\hskip1.5em}c@{}c(*{8}{c})}
\BAmultirow{1em}{$\boldsymbol{R} = $} & &S_1 & {1} & r_{12} & ... & r_{1n_1} & r_{1(n_1+1)} & r_{1(n_1+2)} & ... & r_{1n} \\
& &S_2 & r_{12} & 1 & ...& r_{2n_1} & r_{2(n_1+1)} & r_{2(n_1+2)} & ... & r_{2n} \\
& \raisebox{1ex}{$ G1 $}&\vdots & \vdots & \vdots &\vdots & \vdots &\vdots & \vdots & \vdots &\vdots \\
& &S_{n_1} & r_{1n_1} & r_{2n_1} & ... & 1 & r_{n_1(n_1+1)} & r_{n_2(n_1+2)}& ... & r_{n_1n} \\
& & & \pnode{H1}& & & & & & & \pnode{H2} \\
& &S_{n1+1} & r_{1(n_1+1)} & r_{2(n_1+1)} & ... & r_{n_1(n_1+1)} & r_{(n_1+1)(n_1+1)} & r_{(n_1+1)(n_1+2)} & ... & r_{(n_1+1) n} \\
& &S_{n1+2} & r_{1(n_1+2)} & r_{2(n+1+2)} & ... & r_{(n_1+2)(n_1+1)} & r_{(n_1+1)(n_1+2)} & r_{(n_1+2)(n_1+2)} & ... & r_{(n_1+2) n} \\
& \raisebox{1ex}{$ G2 $} &\vdots & \vdots & \vdots &\vdots & \vdots & \vdots &\vdots & \vdots & \vdots \\
& &S_n & r_{1n} & r_{2n} &...& r_{n_1 n} & r_{(n_1+1)n} & r_{(n_1+2)n} & ... & r_{nn} \\
\end{block}
\begin{block}{c*{6}{c}!{\pnode{V2}}*{4}{c}}
& & & & & & & & & \\
\end{block}
\end{blockarray}$
\psset{linewidth=0.5pt, nodesepA=1ex, nodesepB=1.5ex, linestyle=dashed}
\ncline{V1}{V2}
\ncline[nodesep=-1.25em]{H1}{H2}
\end{postscript}
}
\end{minipage}
\end{document}
答案2
它的输出仍然相当丑陋,但比以前的要好一些。
您应该按照 MYaseen208 的建议使用 tikzmatrix,这样您就可以获得更好的矩阵结果。然后您可以使用\lower8pt\hbox{$R=$}
或任何适当的垂直调整,或者更好的可能是\node at (appropriate coordinate) {$R=$};
\documentclass{article}
\usepackage{amsmath}
\usepackage{blkarray}
\usepackage[margin=0.5in]{geometry}
\begin{document}
\begin{minipage}{\textwidth}{
$\lower8pt\hbox{$\boldsymbol{R} =$}\;\;
\begin{blockarray}{cccccc|cccc}
& & & & G1 & & G2 & \\
& & S_1 & S_2 & \cdots & S_{n_1} & S_{n_1+1} & S_{n_1+2} & \cdots & S_n \\
\begin{block}{cc(cccc|cccc)}
&S_1 & {1} & r_{12} & \cdots & r_{1n_1} & r_{1(n_1+1)} & r_{1(n_1+2)} & \cdots & r_{1n} \\
G1&S_2 & r_{12} & 1 &\cdots& r_{2n_1} & r_{2(n_1+1)} & r_{2(n_1+2)} & \cdots & r_{2n} \\
&\vdots & \vdots & \vdots &\ddots & \vdots & \vdots & \vdots & \ddots &\vdots \\
&S_{n_1} & r_{1n_1} & r_{2n_1} & \cdots & 1 & r_{n_1(n_1+1)} & r_{n_2(n_1+2)}& \cdots & r_{n_1n} \\[2pt]\BAhline
&S_{n_1+1} & r_{1(n_1+1)} & r_{2(n_1+1)} & \cdots & r_{n_1(n_1+1)} & r_{(n_1+1)(n_1+1)} & r_{(n_1+1)(n_1+2)} & \cdots & r_{(n_1+1) n} \\
&S_{n_1+2} & r_{1(n_1+2)} & r_{2(n+1+2)} & \cdots & r_{(n_1+2)(n_1+1)} & r_{(n_1+1)(n_1+2)} & r_{(n_1+2)(n_1+2)} & \cdots & r_{(n_1+2) n} \\
G2 &\vdots & \vdots & \vdots &\ddots & \vdots & \vdots &\vdots & \ddots & \vdots \\
&S_n & r_{1n} & r_{2n} &\cdots& r_{n_1 n} & r_{(n_1+1)n} & r_{(n_1+2)n} & \cdots & r_{nn} \\
\end{block}
\end{blockarray}$
}
\end{minipage}
\end{document}