TikZ:什么影响使用“below of=”语法放置的节点之间的空间?

TikZ:什么影响使用“below of=”语法放置的节点之间的空间?

TikZ 如何决定在这两个节点之间放置多少空间:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
  \node (a) {A};
  \node [below of=a] (b) {B};
  \draw (a.north west) rectangle (a.south east);
  \draw (b.north west) rectangle (b.south east);
\end{tikzpicture}
\end{document}

我该如何改变它?我添加了一些矩形来说明节点的范围。

当然,我可以进行更多控制,如下所示:

\begin{tikzpicture}
  \node (a) {A};
  \node at (a.south) [anchor=north] (b) {B};
  \draw (a.north west) rectangle (a.south east);
  \draw (b.north west) rectangle (b.south east);
\end{tikzpicture}

然后只需添加我想要的空间,(a.south)但这不太语义化,而且更加繁琐。

必须有一种方法可以全局改变与库一起放置的节点之间的空间positioning......

为了澄清起见,我想具体说明一下节点之间的分离而不是节点中心之间的距离。这是因为我的节点 y 高度不同,我想让它们有统一的距离之间他们。

答案1

您正在加载positioning库但随后使用below of=...,但是库提供了语法below=<optional length> of ...,而 below ofTikZ 核心已经提供了语法。

尝试这样做:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
  \node (a) {A};
  \node [below=1cm of a] (b) {B};
  \draw (a.north west) rectangle (a.south east);
  \draw (b.north west) rectangle (b.south east);
\end{tikzpicture}
\end{document}

答案2

以下是您可能会用到的内容:\tikzset命令和node distance选项。请注意,我通过指定节点形状并告诉 tikz 绘制形状来绘制矩形。

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{positioning}
\tikzset{my node/.style={node distance=1cm,shape=rectangle}}

\begin{document}

\begin{tikzpicture}
  \node[draw=red,my node] (a) {A};
  \node[draw=blue,my node,below=of a] (b) {B};
\end{tikzpicture}

\end{document}

您还可以指定图片或特定节点开头的节点距离:\tikzpicture[node distance=1cm]\node[node distance=1cm]

答案3

答案在手册中:16.5.3 高级放置选项(pgfmanual 的 CVS 版本,但我认为您可以在经典手册中找到这一段)。

手册中给出的示例是:((参见马丁的回答)

\documentclass[11pt]{article}
\usepackage{tikz}
\usetikzlibrary{%
  arrows,
  positioning
}

\begin{document}

\begin{tikzpicture}[every node/.style=draw,scale=2]
  \draw[help lines] (0,0) grid (2,2);
  \node (some node) at (1,1) {some node};
  \node (other node) [above=1cm of some node] {\tiny above=1cm of some node};
  \draw [<->] (some node.north) -- (other node.south)
                                node [midway,right,draw=none] {1cm};
\end{tikzpicture}

\end{document} 

重要的 :

加载此库后,上部或左上部等选项的行为会有所不同。加载定位库后,上部选项不会将简单的 ⟨dimension⟩ 作为其参数。相反,它(也)可以接受更复杂的 ⟨specification⟩ 作为参数。此 ⟨specification⟩ 具有以下一般形式:它以可选的 ⟨shifting part⟩ 开头,后跟可选的 ⟨of-part⟩。

备注:您可以改用节点之间的距离,使用中心之间的距离:您需要使用选项on grid。手册给出了

\begin{tikzpicture}[every node/.style=draw]
  \draw[help lines] (0,0) grid (2,3);
  %  Not gridded
  \node (a1) at (0,0) {not gridded};
  \node (b1) [above=1cm of a1] {fooy};
  \node (c1) [above=1cm of b1] {a};
  %  gridded
  \node (a2) at (2,0) {gridded};
  \node (b2) [on grid,above=1cm of a2] {fooy};
  \node (c2) [on grid,above=1cm of b2] {a};
\end{tikzpicture}

但另一种可能性是使用node distance(参见 Frederic 的回答)。语法不同above=of ...

\begin{tikzpicture}[every node/.style=draw,node distance=5mm]
  \draw[help lines] (0,0) grid (2,3);
  %  Not gridded
  \node (a1) at (0,0) {not gridded};
  \node (b1) [above=of a1] {fooy};
  \node (c1) [above=of b1] {a};
  %  gridded
  \begin{scope}[on grid]
    \node (a2) at (2,0) {gridded};
    \node (b2) [above=of a2] {fooy};
    \node (c2) [above=of b2] {a};
  \end{scope}
\end{tikzpicture}

最后说明:我不喜欢positioning第一个参数:我使用第一个版本的 Tikz 并 重新定义了一些选项。第二个参数是:使用和的positioning图片不容易缩放。positioningnode distance

相关内容