在 PGF/TikZ 手册中,有时我会看到 选项right of=somenode
而不是right=of somenode
。它们看起来非常相似,但效果不同。使用后一个选项定位的节点之间的距离是边界到边界的,如手册中所述。但是,使用第一个选项,距离似乎更短。我在手册中找不到对第一个选项的任何解释。
我的问题是:这两个选项有什么区别?手册中是否有我遗漏的解释?
答案1
手册中根本没有描述该right of
密钥(至少我找不到)。事实上,这些密钥已被弃用。该文件pgf/frontendlayer/tikz/tikz.code.tex
包含以下代码:
% The following are deprecated:
\tikzoption{above of}{\tikz@of{#1}{90}}%
\tikzoption{below of}{\tikz@of{#1}{-90}}%
\tikzoption{left of}{\tikz@of{#1}{180}}%
\tikzoption{right of}{\tikz@of{#1}{0}}%
\tikzoption{above left of}{\tikz@of{#1}{135}}%
\tikzoption{below left of}{\tikz@of{#1}{-135}}%
\tikzoption{above right of}{\tikz@of{#1}{45}}%
\tikzoption{below right of}{\tikz@of{#1}{-45}}%
\def\tikz@of#1#2{%
\def\tikz@anchor{center}%
\let\tikz@do@auto@anchor=\relax%
\tikz@addtransform{%
\expandafter\tikz@extract@node@dist\tikz@node@distance and\pgf@stop%
\pgftransformshift{\pgfpointpolar{#2}{\tikz@extracted@node@distance}}}%
\def\tikz@node@at{\pgfpointanchor{#1}{center}}}
\def\tikz@extract@node@dist#1and#2\pgf@stop{%
\def\tikz@extracted@node@distance{#1}}
也就是说,新节点的中心远离node distance
旧节点的中心锚点(其中仅node distance
使用第一个数字)。如果您尝试使用宽节点,就会明白为什么此选项被弃用:
\begin{tikzpicture}
\node (a) {loooooooooooooooooooooooooooooong};
\node[right of=a,font=\bfseries,blue] (b) {node b};
\end{tikzpicture}
另一方面,将从节点的东锚点right=of
测量(默认为 1cm)node distance
A到节点的西锚点b:
请注意,为了使用该right=of ⟨node⟩
语法,您需要positioning
通过包含 TikZ 库\usetikzlibrary{positioning}
。