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}

2 番目のノードanchor=westではすべてのノードに設定されているスタイルが使用されていますが、最も長いテキストを持つ 3 番目のノードは、2 番目のノードの左揃えではなく、2 番目のノードの下に中央揃えになっているようです。私が求めているものを実現する方法はありますか?

基本的に、絶対座標を指定せずに 2 番目のノードの位置合わせをしたいのです。

ここに画像の説明を入力してください

答え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)

アンカー=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=northbelow=of n1n1.southleftanchor=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}

ここに画像の説明を入力してください

関連情報