Package PGF Math Error: Unknown operator `o' or `of'
The <placement>=<distance> of <node>.<anchor>
syntax only works with the advanced positioning
library. The parts
distance
andof <node>.<anchor>
are both optional as.<anchor>
is too.
Depending of <placement>
the anchor
key of the to-be-placed node is internally set according to the following table. The third column shows the default <anchor>
if the .<anchor>
part is omitted. (The sans-positioning
<placement>
key is just a better-to-comprehend version of the anchor
key.)
<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
If no <distance>
is given, the value of node distance
is taken.
Note that for the four bottom ones the <distance>
part can consist of <vertical distance> and <horizontal distance>
. (The same is true for the node distance
key that is enhanced by the positioning
library also.)
The on grid
option sets both anchors (the one of the to-be-placed node as well as the referenced .<anchor>
) to .center
so that the nodes are placed in a grid.
The topics covered by the last two paragraphs are further explained in the PGF manual in section 16.5.3 “Advanced Placement Options”, pp. 185ff.
Example (with positioning
library)
Code
\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}
Example (without positioning
library)
Without the positioning
library this can be achieved by combining
- the old
<placement>=<distance>
and - the
at=<node>.<opposite anchor>
key,
where <opposite anchor>
is the corresponding .<anchor>
of the table above.
The correct anchor
part is set without the positioning
library, too.
Code
\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}
Output
The positioning library is missing:
\usetikzlibrary{positioning}