
Eu gostaria de produzir uma matriz de blocos 3x3 com o layout mostrado na figura abaixo à esquerda. A matriz é dividida por um vetor linha d-e-f
e um vetor coluna b-e-h
(portanto, e
representa uma submatriz 1x1). Gostaria de adicionar duas linhas horizontais e duas verticais para separar os 9 blocos (4 matrizes, 4 vetores, 1 escalar).
Estou usando os NiceArray
comandos donicematrix
pacote, que funcionam conforme o esperado se eu usar blocos de duas linhas (veja a matriz esquerda abaixo). Entretanto, quando tento compor o vetor linha d-e-f
usando blocos de uma linha (ou seja, mudando \Block{2-2}{d}
para \Block{1-2}{d}
e assim por diante), as linhas verticais se quebram (veja o exemplo à direita). Adicionar/remover \hline
comandos não tem efeito nas linhas verticais. Estou usando o TeX Live 2019 com nicematrix
versão 3.7.
Existe uma maneira de manter linhas verticais em torno da submatriz e
sem usar blocos de duas linhas?
\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}
Atualização: em última análise, gostaria de substituir a
... i
por fórmulas que representam as submatrizes, por exemplo A_{00}
, , a_{01}^\mathsf{T}
, etc. Também gostaria de ilustrar isso a
e i
são matrizes quadradas, mas c
não g
são necessariamente quadradas.
Aqui está um exemplo de saída com 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}
Responder1
Semelhante ao sugerido @leandriis em seu comentário. Seus blocos são simulados com mais espaço ao redor da submatriz:
Editar:
Considerando o conteúdo da matriz conforme fornecido na pergunta 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: linhas e colunas vazias são adicionadas para enfatizar onde a submatriz de dimensão é maior que 1 x 1
. Se isso não for necessário, simplesmente descarte-os.
Responder2
Acontece que este é um bug na versão atual do nicematrix
pacote. Isso foi corrigido na versão 3.8 (02/01/2020) e está disponível no CTAN.
Se você estiver preso a uma versão mais antiga por algum motivo, o bug pode ser contornado adicionando \vline
no final das células afetadas. Aplicar isso no exemplo de trabalho mínimo fornece o resultado desejado:
\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}