
Ich möchte eine 3x3-Blockmatrix mit einem Layout erstellen, das in der linken Abbildung unten dargestellt ist. Die Matrix ist durch einen Zeilenvektor d-e-f
und einen Spaltenvektor geteilt b-e-h
(stellt also e
eine 1x1-Untermatrix dar). Ich möchte zwei horizontale und zwei vertikale Linien hinzufügen, um die 9 Blöcke (4 Matrizen, 4 Vektoren, 1 Skalar) zu trennen.
Ich verwende die NiceArray
Befehle desnicematrix
Paket, die wie vorgesehen funktionieren, wenn ich zweizeilige Blöcke verwende (siehe linke Matrix unten). Wenn ich jedoch versuche, den Zeilenvektor d-e-f
mit einzeiligen Blöcken zu setzen (also \Block{2-2}{d}
in \Block{1-2}{d}
usw. zu ändern), brechen die vertikalen Linien (siehe Beispiel rechts). Das Hinzufügen/Entfernen der \hline
Befehle hat keine Auswirkungen auf die vertikalen Linien. Ich verwende TeX Live 2019 mit nicematrix
Version 3.7.
Gibt es eine Möglichkeit, vertikale Linien um die Untermatrix herum beizubehalten, e
ohne zweizeilige Blöcke zu verwenden?
\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: letztendlich möchte ich die a
... i
durch Formeln ersetzen, die die Untermatrizen darstellen, z. B. A_{00}
, a_{01}^\mathsf{T}
, usw. Ich möchte auch veranschaulichen, dass a
und i
quadratische Matrizen sind, und aber c
nicht g
unbedingt quadratische Matrizen sind.
Hier ist eine Beispielausgabe mit realistischen Werten:
\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}
Antwort1
Ähnlich wie @leandriis in seinem Kommentar vorgeschlagen hat. Ihre Blöcke werden mit mehr Platz um die Untermatrix simuliert:
Bearbeiten:
Berücksichtigung des Matrixinhalts, wie Sie ihn in der bearbeiteten Frage angegeben haben
\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}
Hinweis: Leere Zeilen und Spalten werden hinzugefügt, um hervorzuheben, wo die Dimensionsuntermatrix größer als ist 1 x 1
. Wenn dies nicht erforderlich ist, lassen Sie sie einfach weg.
Antwort2
Es stellt sich heraus, dass dies ein Fehler in der aktuellen Version des nicematrix
Pakets ist. Dies wurde in Version 3.8 (02.01.2020) behoben und ist auf CTAN verfügbar.
Wenn Sie aus irgendeinem Grund mit einer älteren Version festsitzen, kann der Fehler umgangen werden, indem Sie \vline
am Ende der betroffenen Zellen Folgendes hinzufügen. Wenn Sie dies auf das minimal funktionierende Beispiel anwenden, erhalten Sie die gewünschte Ausgabe:
\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}