来自 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}

在此处输入图片描述

相关内容