Почему не работает закомментированная строка? Я хотел бы разместить узел (на самом деле анонимный), объявленный в команде \draw.
\documentclass[border=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning, calc}
\begin{document}
\title{arrow test}
\begin{tikzpicture}[>=latex,
font=\sffamily,
]
\node[draw, thin, black, fill=green, rectangle] (P1) at (0cm,0cm){};
\node[draw, thin, black, fill=red, rectangle, right=1cm of P1] (P2){};
\node[draw, thin, black, fill=green, rectangle] (P3) at (0cm,0.5cm){};
\draw[->] (P1) -- (P2);
%\draw[->] (P3) to node[draw, thin, black, fill=red, rectangle, right=1cm of P3](P4){};
\end{tikzpicture}
\end{document}
решение1
Попробуйте следующий MWE:
\documentclass[tikz, border=3mm]{standalone}
\usetikzlibrary{positioning}
\begin{document}
\title{arrow test}
\begin{tikzpicture}[%>=latex,
node distance = 10mm,
box/.style = {rectangle, draw, thin, fill=#1, font=\sffamily},
]
\node[box=green] (P1) at (0cm,0cm) {};
\node[box=red, right=of P1] (P2) {};
\node[box=green] (P3) at (0cm,1cm) {};
\draw[->] (P1) -- (P2);
\draw[->] (P3) node[box=red, right=of P3] (P4) {} -- (P4);
\end{tikzpicture}
\end{document}
Координаты не могут быть "бутстрапированы"... сначала их нужно определить, а потом использовать. Сравните последнюю строку в вашем и моем MWE.
решение2
Это почти то, что вам нужно, недостаток в том, что расстояние в 1 см рассчитывается от центра первого узла (поэтому в примере два правых узла выровнены неправильно).
\documentclass[border=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning, calc}
\begin{document}
\title{arrow test}
\begin{tikzpicture}[>=latex,
font=\sffamily,
]
\node[draw, thin, black, fill=green, rectangle] (P1) at (0cm,0cm){};
\node[draw, thin, black, fill=red, rectangle, right=1cm of P1] (P2){};
\node[draw, thin, black, fill=green,opacity=0.5, rectangle] (P3) at (0cm,0.5cm){};
\draw[->] (P1) -- (P2);
\draw[->] (P3) -- +(1cm,0) node[draw, thin, black, fill=red, rectangle, right] (P4) {};
% \draw[->] (0,0.5cm) node[draw, thin, black, fill=green,opacity=0.5,
% rectangle,left] {} -- +(1cm,0) node[draw, thin, black, fill=red, rectangle,
% right] {};
\end{tikzpicture}
\end{document}
Таким образом, в некотором смысле можно рисовать анонимные узлы, проблема в том, что это работает только для двух узлов, так как для последовательного пути вам пришлось бы изменить начальную точку, что невозможно, если узел анонимный.