![Anzeigen von [ ], | usw. in einem TikZ-Matrixknoten](https://rvso.com/image/254367/Anzeigen%20von%20%5B%20%5D%2C%20%7C%20usw.%20in%20einem%20TikZ-Matrixknoten.png)
Ich möchte eine Spektralsequenz mit TikZ setzen, wie indieser Beitrag, aber die Einträge meiner Spektralsequenz enthalten Klammern und vertikale Striche, z. B. [x|...|x]. Wenn ich sie naiv eingebe, erscheint der gesamte Knoten leer. Wie kann ich dieses Problem umgehen?
Der Code, den ich verwende, ist der folgende
\documentclass[a4paper,12pt]{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}
\matrix (m) [matrix of math nodes,
nodes in empty cells,nodes={minimum width=5ex,
minimum height=5ex,outer sep=-5pt},
column sep=1ex,row sep=1ex]{
0 & 0 & 0 & \vdots & \\
0 & [x] & 0 & k & \\
0 & 0 & 0 & \vdots & \\
0 & 0 & 0 & |1| & \\
0 & 0 & [] & 0 & \\
-2 & -1 & 0 & & \\};
\end{tikzpicture}
\end{document}
Beim Versuch, die Zeile einschließlich „|1|“ zu kompilieren, wird ein Fehler zurückgegeben, das „[x]“ scheint jedoch keine Rolle zu spielen, in der Ausgabe wird jedoch nichts angezeigt.
Antwort1
Bei Verwendung der Taste matrix of math nodes
(oder matrix of nodes
) interpretiert TikZ alles zwischen den Und-Zeichen als Inhalt eines Knotens. Wir (die Benutzer) möchten jedoch häufig die Möglichkeit haben, die Darstellung dieser Knoten von Fall zu Fall zu ändern. Bei normaler Verwendung geschieht dies über die Parameter des \node
Befehls. Wir möchten auch gerne ein wenig ändern, wie die Matrix ihre Knoten anordnet. TikZ ermöglicht es uns also, diese Dinge mit einer speziellen Syntax anzugeben, die zuerst in der Zelle auftreten muss. Zwischen dem \node
Befehl und seinem Inhalt werden vertikale Linien eingefügt. Sie können also einen bestimmten Knoten zeichnen, indem Sie schreiben |[draw]|
, und ihn explizit benennen, indem Sie schreiben |(name)|
. Außerdem ist das Und-Zeichen eigentlich ein Befehl, der ein optionales Argument annehmen kann, was zu einem zusätzlichen Abstand zwischen den Zeilen führt (wenn es in der ersten Zeile angegeben wird).
Ihre eckigen Klammern werden also als Zeilensprünge aufgebraucht (und dann ignoriert, da sie nicht in der ersten Zeile stehen) und Ihre vertikalen Linien geraten in die Maschinerie des Knotenbefehls. Um sie zu schützen, müssen Sie sicherstellen, dass das erste Zeichen der Zelle kein Sonderzeichen ist. Schließen Sie entweder den gesamten Inhalt in Klammern ein oder setzen Sie einfach ein a {}
davor.
Hier sind beide Versionen:
\documentclass[a4paper,12pt]{article}
%\url{http://tex.stackexchange.com/q/68600/86}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}
\matrix (m) [matrix of math nodes,
nodes in empty cells,nodes={minimum width=5ex,
minimum height=5ex,outer sep=-5pt},
column sep=1ex,row sep=1ex]{
0 & 0 & 0 & \vdots & \\
0 & {[x]} & 0 & k & \\
0 & 0 & 0 & \vdots & \\
0 & 0 & 0 & {}|1| & \\
0 & 0 & {}[] & 0 & \\
-2 & -1 & 0 & & \\};
\end{tikzpicture}
\end{document}
execute at empty cell={\node {0};}
Um das Eintippen all dieser Nullen zu vermeiden, können Sie übrigens Folgendes verwenden :
\documentclass[a4paper,12pt]{article}
%\url{http://tex.stackexchange.com/q/68600/86}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}
\matrix (m) [matrix of math nodes,
execute at empty cell={\node {0};},nodes={minimum width=5ex,
minimum height=5ex,outer sep=-5pt},
column sep=1ex,row sep=1ex]{
& & & \vdots \\
& {[x]} & & k \\
& & & \vdots \\
& & & {}|1| \\
& & {}[] & \\
-2 & -1 & & {} \\};
\end{tikzpicture}
\end{document}