
Der untergeordnete Knoten verhält sich innerhalb eines Matrixknotens seltsam. Und er erscheint nur in einem Matrixknoten. Ich weiß, dass es Methoden gibt, ihn in diesem einfachen Fall ohne den Matrixknoten zu zeichnen. Aber im Wesentlichen muss ich das Hasse-Diagramm einer teilweise geordneten Menge zeichnen, bei der jedes Element ein Baum ist. Daher wäre es schön, wenn der Matrixknoten erhalten bliebe. Das seltsame Verhalten ist jedenfalls auch interessant. Man kann auch überprüfenuntergeordneter Knoten, der seltsamerweise nach rechts geneigt istum zu sehen, dass es auch bei Verwendung eines verschachtelten Tikzpicture erscheint. Mir wird vorgeschlagen, für den Fall eines Matrixknotens eine neue Frage zu stellen.
\documentclass[tikz]{standalone}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
[level distance = 10mm]
\node [matrix, label=left:{$T_1$}] (T1)
{
\begin{scope}
[every node/.style={draw, circle, inner sep=1pt, minimum size = 1mm}]
\node {}
child {node {} child {node {}}}
child {node {} child {node {}}}
child {node {} child {node {}}};
\end{scope}\\
};
\node [matrix, right = of T1, label=left:{$T_2$}] (T2)
{
\begin{scope}
[every node/.style={draw, circle, inner sep=1pt, minimum size = 1mm}]
\node {}
child {node {} child {node {}}}
child {node {} child {node {}}}
child {node {} child {node {}}};
\end{scope}\\
};
\end{tikzpicture}
\end{document}
Antwort1
Die positioning
Bibliothek right = of …
legt implizit fest anchor = west
. Dies wird leider an die Knoten innerhalb der Matrix weitergegeben.
Wir könnten zusätzliche positioning
Schlüssel für eine Matrix erstellen, die matrix anchor
anstelle von verwenden anchor
, aber in diesem Fall wäre die einfachste Lösung, für alle Knoten der Matrizen explizit anchor = center
(den Standard) oder centered
(einen Alias für ) festzulegen.anchor = center
Die Baumsyntax von TikZ ist sehr einfach und setzt keine Anker automatisch.
Code
\documentclass[tikz]{standalone}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[
level distance = 10mm,
every matrix/.style={
nodes={draw, circle, inner sep=1pt, minimum size = 1mm, centered}}]
\node [matrix, label=left:{$T_1$}] (T1){
\node {}
child {node {} child {node {}}}
child {node {} child {node {}}}
child {node {} child {node {}}};\\};
\node [matrix, right = of T1, label=left:{$T_2$}] (T2){
\node {}
child {node {} child {node {}}}
child {node {} child {node {}}}
child {node {} child {node {}}};\\};
\end{tikzpicture}
\end{document}
Ausgabe
Antwort2
Ich finde, das Problem scheint damit zusammenzuhängen positioning
. Es gibt einen Workaround wie folgt.
\documentclass[tikz]{standalone}
\usetikzlibrary{positioning,calc}
\begin{document}
\begin{tikzpicture}
[level distance = 10mm]
\node [matrix, label=left:{$T_1$}] (T1)
{
\begin{scope}
[every node/.style={draw, circle, inner sep=1pt, minimum size = 1mm}]
\node [grow=down] {}
child {node {} child {node {}}}
child {node {} child {node {}}}
child {node {} child {node {}}};
\end{scope}\\
};
\node [matrix, label=left:{$T_2$}, matrix anchor=west] at ($(T1.east) + (10mm,0)$) (T2)
{
\begin{scope}
[every node/.style={draw, circle, inner sep=1pt, minimum size = 1mm}]
\node {}
child {node {} child {node {}}}
child {node {} child {node {}}}
child {node {} child {node {}}};
\end{scope}\\
};
\end{tikzpicture}
\end{document}