Estoy intentando crear un diagrama y me gustaría que mis nodos quedaran alineados usando la anchor=west
opción. Preferiría utilizar el posicionamiento relativo para que mi diagrama sea más flexible a los cambios. Aquí está mi ejemplo:
\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}
Observe cómo el segundo nodo usa el anchor=west
estilo establecido para cada nodo, pero el tercer nodo con el texto más largo parece estar centrado debajo del segundo en lugar de estar alineado a la izquierda con él. ¿Hay alguna manera de lograr lo que estoy buscando?
Básicamente, quiero alinear el segundo nodo sin tener que especificar coordenadas absolutas.
Respuesta1
prueba esto
\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}
del manual de páginas:
16.5.2 Opciones de ubicación básicas
Desafortunadamente, aunque es perfectamente lógico, a menudo resulta bastante contrario a la intuición que para colocar un nodo sobre un punto determinado, es necesario especificar el ancla sur. Por este motivo, existen algunas opciones útiles que permiten seleccionar los anclajes estándar de forma más intuitiva:
/tikz/above
(0 puntos predeterminados)
Hace lo mismo que ancla=sur. Si se especifica, el nodo se desplaza adicionalmente hacia arriba según el valor dado.
above \tikz \fill (0,0) circle (2pt) node[above] {above};
above \tikz \fill (0,0) circle (2pt) node[above=2pt] {above};
/tikz/below=<offset>
(predeterminado 0pt) Similar al anterior.
/tikz/left=<offset>
(predeterminado 0pt) Similar al anterior.
/tikz/right=<offset>
(predeterminado 0pt) Similar al anterior.
Respuesta2
Implícitamente, below
implica anchor=north
(y con below=of n1
, la referencia es n1.south
), left
implica anchor=east
, etc.
Un ejemplo (el nodo azul muestra que la referencia predeterminada no es n1.center
, el nodo lima muestra la posición deseada):
\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}