[Tex/LaTex] Adding vertical lines around row vectors in block matrices

arraysmatricesnicematrix

I would like to produce a 3×3 block matrix with a layout shown in the left figure below. The matrix is split by a row vector d-e-f and a column vector b-e-h (so e represents a 1×1 submatrix). I would like to add two horizontal and two vertical lines to separate the 9 blocks (4 matrices, 4 vectors, 1 scalar).

I am using the NiceArray commands of the nicematrix package, which work as intended if I use two-row blocks (see the left matrix below). However, when I am trying to typeset the row vector d-e-f using one-row blocks (i.e. changing \Block{2-2}{d} to \Block{1-2}{d} and so on), the vertical lines break (see the example on the right). Adding/removing the \hline commands has no effect on the vertical lines. I am using TeX Live 2019 with nicematrix version 3.7.

Is there a way I can keep vertical lines around submatrix e without using two-row blocks?

enter image description here

\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}

Update: ultimately, I'd like to substitute the ai with formulas representing the submatrices, e.g. A_{00}, a_{01}^\mathsf{T}, etc.
I'd also like to illustrate that a and i are square matrices but c and g are not necessarily square ones.

Here is an example output with realistic values:

\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}

enter image description here

Best Answer

Similar as suggested @leandriis in his comment. Your blocks are simulated with more space around submatrix:

Edit:

Considering matrix content as you provided in edited question

\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}

Note: empty rows and column are add for emphasizing where dimension submatrix are bigger than 1 x 1. If this is not necessary, simple dropout them out.

enter image description here

Related Question