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 of
TikZ 核心已经提供了语法。
尝试这样做:
\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
图片不容易缩放。positioning
node distance