Seltsames Verhalten des untergeordneten Knotens innerhalb des Matrixknotens

Seltsames Verhalten des untergeordneten Knotens innerhalb des Matrixknotens

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.

Zwei Bäume nebeneinander

\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 positioningBibliothek right = of …legt implizit fest anchor = west. Dies wird leider an die Knoten innerhalb der Matrix weitergegeben.

Wir könnten zusätzliche positioningSchlüssel für eine Matrix erstellen, die matrix anchoranstelle 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

Bildbeschreibung hier eingeben

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}

verwandte Informationen