aus dem pgf-Handbuch:

aus dem pgf-Handbuch:

Ich versuche, ein Diagramm zu erstellen und möchte meine Knoten mit der anchor=westOption linksbündig ausrichten. Ich würde lieber die relative Positionierung verwenden, um mein Diagramm flexibler für Änderungen zu machen. Hier ist mein Beispiel:

\documentclass[11pt]{article}
\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}


\begin{tikzpicture}[%
  every node/.style = {anchor=west}]

\node[fill=red!40, draw] (n0) at (0,0) {Base node} ;
\node[fill=red!40, draw] (n1) at (0,-2) {Node with longer text} ;
\node[fill=red!40, draw] (n2) [below=of n1] {Node with even longer text} ;

\end{tikzpicture}
\end{document}

Beachten Sie, dass der zweite Knoten den für alle Knoten festgelegten Stil verwendet anchor=west, der dritte Knoten mit dem längsten Text jedoch zentriert unter dem zweiten Knoten zu stehen scheint, anstatt linksbündig mit diesem ausgerichtet zu sein. Gibt es eine Möglichkeit, das zu erreichen, wonach ich suche?

Im Wesentlichen möchte ich die Ausrichtung des zweiten Knotens, ohne absolute Koordinaten angeben zu müssen.

Bildbeschreibung hier eingeben

Antwort1

Versuche dies

\documentclass[11pt]{article}
\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}


\begin{tikzpicture}[%
  every node/.style = {anchor=west}]

\node[fill=red!40, draw] (n0) at (0,0) {Base node} ;
\node[fill=red!40, draw] (n1) at (0,-2) {Node with longer text} ;
\node[fill=red!40, draw] (n2) [below=of n1.west, right] {Node with even longer text} ;

\end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

aus dem pgf-Handbuch:

16.5.2 Grundlegende Platzierungsoptionen

Obwohl es vollkommen logisch ist, ist es leider oft eher kontraintuitiv, dass Sie den Südanker angeben müssen, um einen Knoten über einem bestimmten Punkt zu platzieren. Aus diesem Grund gibt es einige nützliche Optionen, mit denen Sie die Standardanker intuitiver auswählen können:

/tikz/above (Standard 0pt)

Macht dasselbe wie anchor=south. Wenn angegeben wird, wird der Knoten zusätzlich um den angegebenen Wert nach oben verschoben.

above \tikz \fill (0,0) circle (2pt) node[above] {above};

above \tikz \fill (0,0) circle (2pt) node[above=2pt] {above};

/tikz/below=<offset>(Standard 0pt) Ähnlich wie oben.

/tikz/left=<offset>(Standard 0pt) Ähnlich wie oben.

/tikz/right=<offset>(Standard 0pt) Ähnlich wie oben.

Antwort2

Implizit belowimpliziert anchor=north(und bei below=of n1ist die Referenz n1.south), leftimpliziert anchor=eastusw.

Ein Beispiel (blauer Knoten zeigt, dass die Standardreferenz nicht ist n1.center, hellgrüner Knoten zeigt die gewünschte Positionierung):

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[every node/.style={anchor=west}]

\node[fill=red!40, draw] (n0) at (0,0) {Base node} ;
\node[fill=red!40, draw] (n1) at (0,-2) {Node with longer text} ;

\node[fill=red!40, draw,below=of n1] (n2) {Node with even longer text} ;

\node[fill=blue!40, draw,below=of n1.center] (n2) {Node with even longer text} 

\node[fill=lime!40, draw,below=of n1.south west,anchor=north west]
 (n2) {Node with even longer text} ;

\end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen