
Ich habe den folgenden Code, wie unter den Bildern zu sehen ist. Die Ausgabe, die ich jetzt habe, ist wie das erste Bild unten.
Ich möchte, dass die Ausgabe wie im Bild unten aussieht, mit blauen und roten Pfeilen in der Mitte. Ich schaffe es nicht, die Farben und die Platzierung der Pfeile zu ändern.
Der Code steht weiter unten. Kann mir jemand helfen?
\begin{tabular}{|r|r|r|r|r|r|}
\hline
V & M & V & M & V & M \\ \hline
6 & 4 & NaN & NaN & NaN & NaN \\ \hline
7 & 3 & 5 & 5 \tikzmark{f} & NaN & NaN \\ \hline
NaN & NaN & 8 & \tikzmark{d}{2} \tikzmark{e} & \tikzmark{c}{4} & \tikzmark{b}{6} \\ \hline
NaN & NaN & NaN & NaN & 10 & \tikzmark{a}{0} \\ \hline
\end{tabular}
\begin{tikzpicture}[overlay, remember picture, shorten >=.5pt, shorten <=.5pt]
\draw [->] ({pic cs:a}) [line width=0.35mm, yshift=-1] to ({pic cs:b});
\draw [->] ({pic cs:c}) [line width=0.35mm, yshift=-1] to ({pic cs:d});
\draw [->] ({pic cs:e}) [line width=0.35mm, yshift=-1] to ({pic cs:f});
\end{tikzpicture}
Antwort1
Anstatt zu verwenden, würde ich ein innerhalb eines tikz \tikzmark
verwenden . Da Sie Ihre Einträge in einer tabellarischen Umgebung zeichnen, vereinfacht die Änderung zur Verwendung von tatsächlich den Code.matrix of math nodes
\matrix
matrix of math nodes
Ich werde die Ausgabe und den Code angeben und dann erklären, wie es funktioniert. Zuerst die Ausgabe:
Als nächstes der Code:
\documentclass[border=5mm,tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}[>=stealth,->,shorten >=2pt,looseness=.5,auto]
\matrix (M)[matrix of math nodes,row sep=0mm,column sep=0mm,
nodes=draw, minimum size=12mm]{
V & M & V & M & V & M \\
6 & 4 & NaN & NaN & NaN & NaN \\
7 & 3 & 5 & 5 & NaN & NaN \\
NaN & NaN & 8 & 2 & 4 & 6 \\
NaN & NaN & NaN & NaN & 10 & 0 \\
};
\draw[ultra thick,blue,->] (M-5-6.west) -- (M-4-6.west);
\draw[ultra thick,red,->] (M-5-5.north) -- (M-5-4.north);
\draw[ultra thick,blue,->] (M-4-4.west) -- (M-3-4.west);
\draw[ultra thick,red,->] (M-4-3.north) -- (M-4-2.north);
\draw[ultra thick,blue,->] (M-3-2.west) -- (M-2-2.west);
\end{tikzpicture}
\end{document}
Nun die Erklärung:
Der \matrix (M)
Befehl erstellt eine Matrix mit Koordinaten, die durch angegeben werden (M-<row>-<col>)
, wobei <row>
und <col>
die Zeilen- und Spaltenindizes sind. Wenn Sie stattdessen \matrix (mat)
dann schreiben würden, würden Sie die Koordinaten als bezeichnen (mat-<row>-<col>)
.
Als nächstes können Sie mit north
, south
, west
, north west
usw. einstellen, auf welchen Teil der Matrixzelle sich die Knotenangabe bezieht. Beispielsweise (M-4-3.west)
bezieht sich auf den westlichen Rand des Knotens in Zeile 4 und Spalte 3. Jetzt sollte hoffentlich fast alles klar sein!
Im matrix of math nodes
habe ich eingestellt row sep=0mm,column sep=0mm, nodes=draw, minimum size=12mm
. Dies dient zum Zeichnen Ihres Rasters: Es gibt keine Lücken zwischen den Zeilen und Spalten, jeder Knoten sollte ein Rechteck um sich herum haben und die minimale Zellengröße von 12m
wurde so gewählt, dass sie zum Inhalt der Zellen des OP passt. Persönlich würde ich das Raster nicht zeichnen (die Dokumentation desBuchtabsPaket erklärt, warum Sie vertikale Linien in Tabellen vermeiden sollten), aber es war das, wonach in der Frage gefragt wurde, also....
Wenn Sie möchten, dass das Layout dasselbe ist wie in Ihrem MWE, mit rechteckigen Zellen anstelle der quadratischen Zellen in meinem Code, ändern Sie das minimum size=12mm
in minimum width=12mm
. Um zu zeigen, wie das aussieht, und um die Knotenspezifikationen weiter hervorzuheben, ändern Sie die Zeichenanweisungen in
\draw[ultra thick,blue,->] (M-5-6.south west) -- (M-4-6.south west);
\draw[ultra thick,red,->] (M-5-5.north east) -- (M-5-4.north west);
\draw[ultra thick,blue,->] (M-4-4.south west) -- (M-3-4.south west);
\draw[ultra thick,red,->] (M-4-3.north east) -- (M-4-2.north west);
\draw[ultra thick,blue,->] (M-3-2.south west) -- (M-2-2.south west);
dann mit minimum size=12mm
dir bekommen
BEARBEITEN(Beantwortung von Fragen in den Kommentaren)
Um die Spalten zu schattieren, genügt es, den Matrixoptionen Folgendes every odd column
und folgende Stile hinzuzufügen:every even column
every odd column/.style={nodes={fill=pink}},
every even column/.style={nodes={fill=blue!20!white}},
Wenn diese vorhanden sind, wird Ihr Bild:
Die "doppelten" Linien, die Sie sehen, sind meiner Meinung nach Darstellungsfehler und wahrscheinlich browserabhängig und erscheinen möglicherweise nicht beim Drucken (ich weiß es nicht, ich habe es nicht überprüft). Für das Bild oben habe ich sie sehr schnell eliminiert.ad hocWeise, indem Sie die Zeilen- und Spaltenabstände wie folgt ändern:
row sep=-0.1mm,column sep=-0.1mm