Deklarieren von Knoten in einem \draw-Befehl relativ zu anderen Knoten

Deklarieren von Knoten in einem \draw-Befehl relativ zu anderen Knoten

Warum funktioniert die auskommentierte Zeile nicht? Ich möchte einen Knoten (eigentlich einen anonymen) platzieren, der in einem \draw-Befehl deklariert ist.

\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}

Bildbeschreibung hier eingeben

Antwort1

Versuchen Sie das folgende 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}

Bildbeschreibung hier eingeben

Koordinaten können nicht „gebootet“ werden ... zuerst müssen Sie sie definieren und dann verwenden. Vergleichen Sie die letzte Zeile in Ihrem und meinem MWE.

Antwort2

Das ist fast das, was Sie wollen. Der Fehler besteht darin, dass der Abstand von 1 cm vom Mittelpunkt des ersten Knotens aus berechnet wird (so dass im Beispiel die beiden rechten Knoten nicht richtig ausgerichtet sind).

 \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}

In gewissem Sinne ist es also möglich, anonyme Knoten zu zeichnen. Das Problem besteht darin, dass dies nur für zwei Knoten funktioniert, da Sie den Startpunkt für einen nachfolgenden Pfad ändern müssten, was nicht möglich ist, wenn der Knoten anonym ist.

verwandte Informationen