TikZ: Pfad überbrücken klappt nicht
Ich habe mir eine Hilfskoordinate hilfps4 definiert um einen Pfad zwischen zwei Punkten zu zeichnen. Dieser soll zwei andere Pfade überbrücken.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,arrows.meta,calc}
\colorlet{lcfree}{green}
\colorlet{lcnorm}{blue}
\colorlet{lccong}{red}
% globale Settings
\tikzset{
base/.style={draw, on grid, align=center, minimum height=4ex},
proc/.style={base, rectangle, text width=10em},
var/.style={base, circle, text width=4ex},
%% Stil für Hilfskoordinaten
coord/.style={coordinate, on grid, node distance=6mm and 20mm},
% Stile für Verbindungslinien
norm/.style={->, draw, lcnorm},
free/.style={->, draw, lcfree},
cong/.style={->, draw, lccong},
% Stil für Kreuzungen von Pfaden
jump/.style args={(#1) to (#2) over (#3) by #4}{
insert path={
let \p1=($(#1)-(#3)$), \n1={veclen(\x1,\y1)},
\n2={atan2(\y1,\x1)}, \n3={abs(#4)}, \n4={#4>0 ?180:-180} in
(#1) -- ($(#1)!\n1-\n3!(#3)$)
arc (\n2:\n2+\n4:\n3) -- (#2)
}
}
}
\begin{document}
\begin{tikzpicture}[%
>={Triangle[angle=60:5pt]},% Form der Pfeilspitzen
node distance=20mm and 30mm, % Vorgaben für Abstände zwischen Nodes in dieser Zeichnung
every join/.style={norm}, % Default linetype for connecting boxes
]
\begin{scope}[nodes=var]
\node (0) {0};
\node [right=of 0] (a) {a};
\node [right=of a] (b) {b};
\node [right=of b] (c) {c};
\node [below=of a] (d) {d};
\node [below=of b] (e) {e};
\end{scope}
\begin{scope}[nodes=coord]
\node [below=of e] (hilf) {};% Hilfskoordinate für definierten Zusatzabstand
\node (hilfps) at (hilf-|c){};
\node [below=of hilfps] (hilfps2) {};
\end{scope}
\begin{scope}[nodes=proc]
\node [below=of hilf] (f) {f};
\node [below=of f] (g) {ggg};
\node (h) at (0|-g) {hhh};
\end{scope}
\node [coord, right=12mm of h.north] (hilfps3){};
\node [coord] (hilfps4) at (hilfps2-|hilfps3){};
% farbiges Markieren der Hilfspunkte
\foreach \coord/\color in {hilf/green,hilfps/orange,hilfps2/black,hilfps3/blue,hilfps4/violet}
\node[\color]at(\coord){x};
\begin{scope}[every path/.append style=free]
\foreach \start/\end in
{a/d,b/e,e/f,0/h,f/g,h/g}
\path(\start)--(\end);
\path (c)|-(f);
\path (d)|-(f);
\path (hilfps2)-|(hilfps3);
%über Kreuz
\path (a) -- coordinate(bd-ae) (e);
\path [jump=(b) to (d) over (bd-ae) by 6pt];
\path (e) -- coordinate(hilfps2hilfps4-ef) (f);
\path [jump=(hilfps2) to (hilfps4) over (hilfps2hilfps4-ef) by 6pt];
\end{scope}
\end{tikzpicture}
\end{document}
1. Das haut leider nicht ganz hin. Kann es an dem Pfad e-f liegen? Die Position der Überbrückung liegt verdächtig in der Mitte zwischen e (center) und f (center). Wie kann ich das Problem lösen?
2. Welcher Befehl sorgt dafür, dass eine weitere Linie zwischen e-f ohne Überbrückung durchgezogen wird?
3. Würde das auch ohne die Hilfskoordinate hilfps4 über "Eck" funktionieren?