pgfmanual에서:

pgfmanual에서:

다이어그램을 만들려고 하는데 anchor=west옵션을 사용하여 노드를 왼쪽 정렬하고 싶습니다. 나는 다이어그램을 변경에 더 유연하게 만들기 위해 상대 위치 지정을 사용하는 것을 선호합니다. 내 예는 다음과 같습니다.

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

두 번째 노드가 anchor=west모든 노드에 대해 설정된 스타일을 어떻게 사용하는지 확인하세요. 그러나 가장 긴 텍스트가 있는 세 번째 노드는 두 번째 노드 아래 중앙에 있는 것처럼 보이고 왼쪽으로 정렬됩니다. 내가 찾고 있는 것을 성취할 수 있는 방법이 있나요?

기본적으로 절대 좌표를 지정하지 않고도 두 번째 노드를 정렬하고 싶습니다.

여기에 이미지 설명을 입력하세요

답변1

이 시도

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

여기에 이미지 설명을 입력하세요

pgfmanual에서:

16.5.2 기본 배치 옵션

불행하게도, 완벽하게 논리적이긴 하지만 주어진 지점 위에 노드를 배치하려면 남쪽 앵커를 지정해야 한다는 것은 다소 직관에 반하는 경우가 많습니다. 이러한 이유로 표준 앵커를 보다 직관적으로 선택할 수 있는 몇 가지 유용한 옵션이 있습니다.

/tikz/above (기본값은 0pt)

Anchor=south와 동일합니다. 가 지정되면 노드는 주어진 에 의해 추가로 위쪽으로 이동됩니다.

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

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

/tikz/below=<offset>(기본값 0pt) 위와 비슷합니다.

/tikz/left=<offset>(기본값 0pt) 위와 비슷합니다.

/tikz/right=<offset>(기본값 0pt) 위와 비슷합니다.

답변2

암시적으로, below암시 anchor=north(및 below=of n1참조는 n1.south), left암시 anchor=east

예(파란색 노드는 기본 참조가 가 아님을 표시하고 n1.center, 라임 노드는 원하는 위치 지정을 표시함):

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

여기에 이미지 설명을 입력하세요

관련 정보