PGF/TikZ 中“right of=”和“right=of”之间的区别

PGF/TikZ 中“right of=”和“right=of”之间的区别

在 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 distanceA到节点的西锚点b

正确定位示例

请注意,为了使用该right=of ⟨node⟩语法,您需要positioning通过包含 TikZ 库\usetikzlibrary{positioning}

相关内容