do pgfmanual:

do pgfmanual:

Estou tentando criar um diagrama e gostaria que meus nós fossem alinhados usando a anchor=westopção. Eu preferiria usar o posicionamento relativo para tornar meu diagrama mais flexível às alterações. Aqui está meu exemplo:

\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 como o segundo nó usa o anchor=westestilo definido para cada nó, mas o terceiro nó com o texto mais longo parece estar centralizado abaixo do segundo em vez de estar alinhado à esquerda com ele. Existe uma maneira de realizar o que estou procurando?

Essencialmente, quero o alinhamento do segundo nó sem precisar especificar coordenadas absolutas.

insira a descrição da imagem aqui

Responder1

tente isso

\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}

insira a descrição da imagem aqui

do pgfmanual:

16.5.2 Opções básicas de posicionamento

Infelizmente, embora seja perfeitamente lógico, muitas vezes é bastante contra-intuitivo que, para colocar um nó acima de um determinado ponto, seja necessário especificar a âncora sul. Por este motivo, existem algumas opções úteis que permitem selecionar as âncoras padrão de forma mais intuitiva:

/tikz/above (padrão 0pt)

Faz o mesmo que âncora = sul. Se the for especificado, o nó será adicionalmente deslocado para cima pelo 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>(padrão 0pt) Semelhante ao acima.

/tikz/left=<offset>(padrão 0pt) Semelhante ao acima.

/tikz/right=<offset>(padrão 0pt) Semelhante ao acima.

Responder2

Implicitamente, belowimplica anchor=north(e com below=of n1, a referência é n1.south), leftimplica anchor=east, etc.

Um exemplo (o nó azul mostra que a referência padrão não é n1.center, o nó limão mostra o posicionamento desejado):

\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}

insira a descrição da imagem aqui

informação relacionada