我正在尝试编写以下块矩阵,但我有一些需要帮助来解决的问题。首先,在块矩阵中我写了一些标题,(k_1, k_2 n-k_1-k_2)
它们之间有一条垂直线,我不想保留它。我只需要在块矩阵内部和对角矩阵\lambda_1 \ddots \lambda_1
以及其他矩阵中需要它,我不想在第一行之前即和之前有\lambda_1
空格\lambda_2
。
希望有人能帮助我。这是我编写的代码:
\[
\begin{blockarray}{cc|c|c}
& k_{1}&k_2&n-k_{1}-k_{2}\\
\begin{block}{c(c|c|c)}
&\lambda_1 & & \\
k_1 & \hspace{0.75cm} \ddots \hspace{0.75cm} & & \\
& \hspace{2cm} \lambda_1 & & \\\cline{2-4}
& &\lambda_2 & \\
k_2 & \Phi &\hspace{0.75cm} \ddots \hspace{0.75cm} & \\
& & \hspace{1.5cm} \lambda_2 & \\ \cline{2-4}
& & &\\
n-k_1-k_2 & \Phi & \Phi & \bar{\bar{M}}_3\\
& & &\\
\end{block}
\end{blockarray}
\]
答案1
这是一个解决方案。我们必须使用 10 列,并且booktabs
水平线不能超出括号:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{fourier}
\usepackage{mathtools, blkarray, booktabs}
\begin{document}
\[ \aboverulesep = 0pt \belowrulesep = 0pt
\begin{blockarray}{r*{3}{>{\scriptstyle}c>{\scriptstyle}c@{\enspace}>{\scriptstyle\quad}c}}
& & {k_{1}} & & & k_2& & & \mathclap{n-k_{1}-k_{2}} \\%
\begin{block}{>{\scriptstyle}r(*{2}{ccc|}cc>{\enspace}c<{\enspace})}
&\rule{0pt}{3ex}\:\lambda_1 & & & & & & & & \\
k_1 & & \ddots & & & & & & & \\
& & & \lambda_1 & & & & & & \\
\cmidrule(lr){2-10}
& & & &\lambda_2 & & & & & \\
k_2 & & \Phi & & & \ddots \hspace{0.75cm} & & & & \\
& & & & & & \lambda_2 & \\
\cmidrule(lr){2-10}
& & & & & & & & & \\
n-k_1-k_2 & & \Phi & & & \Phi & &\enspace &\overline{\overline{M}}_3 & \\[0.5ex]
\end{block}
\end{blockarray}
\]
\end{document}
答案2
nicematrix
您可以使用专门设计用于绘制此类矩阵的包。
\documentclass{article}
\usepackage{nicematrix}
\NiceMatrixOptions{code-for-first-row = \scriptstyle , code-for-first-col = \scriptstyle}
\begin{document}
$\begin{pNiceArray}{ccc|ccc|c}[first-row,first-col]
& & k_1 & & & k_2 & & n-k_1-k_2 \\
& \lambda_1 & & & & & & \hspace*{2cm} \\
k_1 & & \Ddots & & & & \\
& & & \lambda_1 & & & \\
\hline
& & & & \lambda_2 & & \\
k_2 & & \Phi & & & \Ddots & &\\
& & & & & & \lambda_2 & \\
\hline
& & & & & & & \\
n-k_1-k_2 & & \Phi & & & \Phi & & \overline{\overline{M}}_3 \\
& & & & & & & \\
\end{pNiceArray}$
\end{document}