
Me gustaría producir una matriz de bloques de 3x3 con el diseño que se muestra en la figura de la izquierda a continuación. La matriz está dividida por un vector de fila d-e-f
y un vector de columna b-e-h
(por lo que e
representa una submatriz de 1x1). Me gustaría agregar dos líneas horizontales y dos verticales para separar los 9 bloques (4 matrices, 4 vectores, 1 escalar).
Estoy usando los NiceArray
comandos delnicematrix
paquete, que funcionan según lo previsto si uso bloques de dos filas (consulte la matriz de la izquierda a continuación). Sin embargo, cuando intento componer el vector de fila d-e-f
usando bloques de una fila (es decir, cambiando \Block{2-2}{d}
a \Block{1-2}{d}
, etc.), las líneas verticales se rompen (consulte el ejemplo de la derecha). Agregar/eliminar \hline
comandos no tiene ningún efecto en las líneas verticales. Estoy usando TeX Live 2019 con nicematrix
la versión 3.7.
¿Hay alguna manera de mantener líneas verticales alrededor de la submatriz e
sin usar bloques de dos filas?
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\[
\begin{pNiceArray}{cc|c|cc}[margin]
\Block{2-2}{a} & & \Block{2-1}{b} & \Block{2-2}{c} & \\
& & & & \\\hline
\Block{2-2}{d} & & \Block{2-1}{e} & \Block{2-2}{f} & \\
& & & & \\\hline
\Block{2-2}{g} & & \Block{2-1}{h} & \Block{2-2}{i} & \\
& & & & \\
\end{pNiceArray}
\quad
\begin{pNiceArray}{cc|c|cc}[margin]
\Block{2-2}{a} & & \Block{2-1}{b} & \Block{2-2}{c} & \\
& & & & \\
\Block{1-2}{d} & & \Block{1-1}{e} & \Block{1-2}{f} & \\\hline
\Block{2-2}{g} & & \Block{2-1}{h} & \Block{2-2}{i} & \\
& & & & \\
\end{pNiceArray}
\]
\end{document}
Actualización: en última instancia, me gustaría sustituir a
... i
con fórmulas que representen las submatrices, por ejemplo A_{00}
, a_{01}^\mathsf{T}
, etc. También me gustaría ilustrar eso a
y i
son matrices cuadradas pero c
y g
no son necesariamente cuadradas.
A continuación se muestra un resultado de ejemplo con valores realistas:
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\setlength{\extrarowheight}{1mm}
\setlength{\arraycolsep}{8pt}
\[
\begin{pNiceArray}{ccc|c|ccccc}[margin]
\Block{3-3}{A_{00}} & & & \Block{3-1}{a_{01}} & \Block{3-4}{A_{20}^\mathsf{T}} & & & \\
& & & & & & & \\
& & & & & & & \\ \hline
% I'd like to use the following line but it doesn't work as expected:
%\Block{1-3}{a_{01}^\mathsf{T}} & & & \Block{1-1}{0} & \Block{1-4}{a_{21}^\mathsf{T}} & & & \\
% two-row blocks are fine:
\Block{2-3}{a_{01}^\mathsf{T}} & & & \Block{2-1}{0} & \Block{2-4}{a_{21}^\mathsf{T}} & & & \\
& & & & & & & \\ \hline
\Block{4-3}{A_{20}} & & & \Block{4-1}{a_{21}} & \Block{4-4}{A_{22}} & & & \\
& & & & & & & \\
& & & & & & & \\
& & & & & & & \\
\end{pNiceArray}
\]
\end{document}
Respuesta1
Similar a lo sugerido @leandriis en su comentario. Tus bloques se simulan con más espacio alrededor de la submatriz:
Editar:
Teniendo en cuenta el contenido de la matriz como lo proporcionó en la pregunta editada
\documentclass{article}
\usepackage{array,
makecell} % new
\begin{document}
\[\setcellgapes{3pt}
\makegapedcells
\left(
\begin{array}{ccc|c|ccc}
& && && & \\
& A_{00} && a_{01} && A_{20}^T & \\
& && && & \\ \hline
& a_{01}^T && 0 && f & \\ \hline
& && && & \\
& A_{20} && a_{21} && A_{22}^T & \\
& && && & \\
\end{array}\right)
\]
\end{document}
Nota: se agregan filas y columnas vacías para enfatizar dónde la submatriz de dimensión es mayor que 1 x 1
. Si esto no es necesario, simplemente elimínelos.
Respuesta2
Resulta que se trata de un error en la versión actual del nicematrix
paquete. Esto se solucionó en la versión 3.8 (2020-01-02) y está disponible en CTAN.
Si por alguna razón está atascado con una versión anterior, el error se puede solucionar agregando \vline
al final de las celdas afectadas. Aplicar esto en el ejemplo de trabajo mínimo da el resultado deseado:
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\setlength{\extrarowheight}{1mm}
\setlength{\arraycolsep}{8pt}
\[
\begin{pNiceArray}{ccc|c|ccccc}[margin]
\Block{3-3}{A_{00}} & & & \Block{3-1}{a_{01}} & \Block{3-4}{A_{20}^\mathsf{T}} & & & \\
& & & & & & & \\
& & & & & & & \\ \hline
\Block{1-3}{a_{01}^\mathsf{T}} & & \vline & \Block{1-1}{0} \vline & \Block{1-4}{a_{21}^\mathsf{T}} & & & \\\hline
\Block{4-3}{A_{20}} & & & \Block{4-1}{a_{21}} & \Block{4-4}{A_{22}} & & & \\
& & & & & & & \\
& & & & & & & \\
& & & & & & & \\
\end{pNiceArray}
\]
\end{document}