程序包 PGF 数学错误:未知运算符“o”或“of”

程序包 PGF 数学错误:未知运算符“o”或“of”

当我尝试使用below=语法将一个节点放置在另一个节点上方时,出现了一个无用的错误。

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \node[] (node1) at (0, 0) {Node 1};
  \node[
    below = 5pt of node1
  ] (node2) {Node 2};
\end{tikzpicture}
\end{document}

错误信息是:

Package PGF Math Error: Unknown operator 'o' or 'of' (in '5pt of node1').

如何将节点与其他节点关联放置而不出现错误消息?

答案1

<placement>=<distance> of <node>.<anchor>语法仅适用于高级positioning库。部分

  • distance
  • of <node>.<anchor>都是可选的
    • .<anchor>也是。

待放置节点的键取决于内部设置,具体如下表所示。第三列显示省略部分时的默认值<placement>。(无符号键只是键的更易理解版本。)anchor<anchor>.<anchor>positioning <placement>anchor

 <placement>    anchor        .<anchor>
——————————————————————————————————————————
 above          south         .south
 left           east          .west
 below          north         .south
 right          west          .east
––––––––––––––––––––––––––––––––––––––––––
 base left      base east     .base west
 base right     base west     .base east
 mid left       mid east      .mid west
 mid right      mid west      .mid east
––––––––––––––––––––––––––––––––––––––––––
 above left     south west    .north east
 above right    south east    .north west
 below left     north west    .south east
 below right    north east    .south west

如果没有给出,则采用<distance>的值。node distance

请注意,对于底部的四个,<distance>部分可以由组成。 (对于由库增强的键也是<vertical distance> and <horizontal distance>如此。)node distancepositioning

on grid选项将两个锚点(待放置节点和引用的锚点.<anchor>)设置为,.center以便将节点放置在网格中。

最后两段所涵盖的主题在PGF 手册在第 16.5.3 节“高级放置选项”中,第 185 页。

示例(带positioning库)

代码

\documentclass[tikz,border=2pt]{standalone}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[nodes=draw]
  \node (node1) at (0, 0) {Node 1};
  \node[below=5pt of node1] (node2) {Node 2};
\end{tikzpicture}
\end{document}

示例(不含positioning库)

如果没有positioning库,可以通过组合来实现

  • 旧的<placement>=<distance>
  • 钥匙at=<node>.<opposite anchor>

其中是上表的<opposite anchor>对应部分。.<anchor>

anchor没有库的情况下也设置了正确的部分positioning

代码

\documentclass[tikz,border=2pt]{standalone}
\begin{document}
\begin{tikzpicture}[nodes=draw]
  \node (node1) at (0, 0) {Node 1};
  \node[below=5pt,at=(node1.south)] (node2) {Node 2};
\end{tikzpicture}
\end{document}

输出

在此处输入图片描述

答案2

缺少定位库:

\usetikzlibrary{positioning}

相关内容