Hilfskoordinate will nicht dahin, wo ich will
Ich versuche, ein Pfeil, so wie er in schwarz eingezeichnet ist zu platzieren (er soll zwischen e und f verlaufen, angefangen bei der Linie ausgehend von c).
Ich habe es damit versucht, mit Hilfe von below=of zwei Hilfskoordinaten zu erstellen und den Start des Pfeils auf die zweite Hilfskoordinate (hilfps2) zu setzen.
Ich bin davon ausgegangen, dass sich diese Koordinate on grid zwischen e und f (auf Höhe c) befindet - das tut sie aber nicht.
\node [coord, below=of c] (hilfps) {};
z.B. bin ich davon ausgegangen, dass hilfps auf der Höhe von e platziert wird. Aber es landet direkt unter c. Daher bringt mir die zweite Hilfsvariable auch nichts. Die ist viel zu weit oben.
1. Wie sollte ich vorgehen? Gibt es noch Alternativen zum Erstellen von Hilfskoordinaten mit below=of... ? Ich möchte auch ungern manuell mit yshift einen Offset vorgeben. Wenn das Bild mal größer wird, blicke ich dann nicht mehr durch...
2. Wie ihr im Code sehen könnt, musste ich die node coord h weiter unten platzieren, da bereits vorher auf sie referenziert wird. Jetzt wäre es schön, wenn ich alle nodes eines Typs in einen Block schreiben könnte. So muss ich immer aufpassen, wann ich eine node deklariere- dadurch wird der Code sehr unübersichtlich. Wie kann man das vermeiden?
![alt text][1]
<p><img style="width:100%" src="http://texwelt.de/wissen/upfiles/test_1.PNG" /></p>
\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}
\node [coord, below=of e] (hilf) {};% Hilfskoordinate für definierten Zusatzabstand
\node [coord, below=of c] (hilfps) {};
\node [coord, below=of hilfps] (hilfps2) {};
\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){};
\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 (hilfps)-|(hilfps3);
%über Kreuz
\path (a) -- coordinate(bd-ae) (e);
\path [jump=(b) to (d) over (bd-ae) by 6pt];
\end{scope}
\end{tikzpicture}
\end{document}
[1]: http://texwelt.de/wissen/upfiles/test_1.PNG