
Я хотел бы создать блочную матрицу 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}