Добавление вертикальных линий вокруг векторов-строк в блочных матрицах

Добавление вертикальных линий вокруг векторов-строк в блочных матрицах

Я хотел бы создать блочную матрицу 3x3 с макетом, показанным на левом рисунке ниже. Матрица разделена вектором-стркой d-e-fи вектором-столбцом b-e-h(то есть eпредставляет собой подматрицу 1x1). Я хотел бы добавить две горизонтальные и две вертикальные линии, чтобы разделить 9 блоков (4 матрицы, 4 вектора, 1 скаляр).

Я использую NiceArrayкомандыnicematrixупаковка, которые работают так, как и предполагалось, если я использую двухстрочные блоки (см. левую матрицу ниже). Однако, когда я пытаюсь набрать вектор строки d-e-fс помощью однострочных блоков (т. е. изменяя \Block{2-2}{d}на \Block{1-2}{d}и т. д.), вертикальные линии разрываются (см. пример справа). Добавление/удаление \hlineкоманд не влияет на вертикальные линии. Я использую TeX Live 2019 nicematrixверсии 3.7.

Есть ли способ сохранить вертикальные линии вокруг подматрицы, eне используя двухстрочные блоки?

введите описание изображения здесь

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

Обновление: в конечном итоге я хотел бы заменить a... iформулами, представляющими подматрицы, например A_{00}, a_{01}^\mathsf{T}, и т. д. Я также хотел бы проиллюстрировать, что aи iявляются квадратными матрицами, но cи gне обязательно являются квадратными.

Вот пример вывода с реалистичными значениями:

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

введите описание изображения здесь

решение1

Похоже на то, что предложил @leandriis в своем комментарии. Ваши блоки симулируются с большим пространством вокруг подматрицы:

Редактировать:

Учитывая содержание матрицы, которое вы указали в отредактированном вопросе

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

Примечание: пустые строки и столбцы добавляются для подчеркивания, где размерность подматрицы больше 1 x 1. Если в этом нет необходимости, просто удалите их.

введите описание изображения здесь

решение2

Оказывается, это ошибка в текущей версии пакета nicematrix. Это было исправлено в версии 3.8 (2020-01-02) и доступно на CTAN.

Если по какой-то причине вы застряли на старой версии, ошибку можно обойти, добавив \vlineв конец затронутых ячеек. Применение этого к минимальному рабочему примеру дает желаемый результат:

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

введите описание изображения здесь

решение3

Вариант решения:

\documentclass{article}
\usepackage{amsmath} %

\begin{document}


\[ \renewcommand{\arraystretch}{1.4}
  \left[\,\:\begin{matrix}
     a & \vrule & b & \vrule & c \\
    \hline
     d & \vrule & e & \vrule & f \\
    \hline
     g & \vrule & h &\vrule & i
    \end{matrix}
\,\: \right]
\]

\end{document} 

введите описание изображения здесь

Связанный контент