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. Open in Online-Editor
\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.
Open in Online-Editor
\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} |
Mit Open in Online-Editor
coord/.style={coordinate, on grid, node distance=6mm and 20mm}, hast Du eingestellt, dass mit Open in Online-Editor
\node [coord, below=of c] (hilfps) {}; das Zentrum der Node Open in Online-Editor
\node [coord, below=of hilfps] (hilfps2) {}; das Zentrum der Node Für andere Nodes in der Open in Online-Editor
node distance=20mm and 30mm, % Vorgaben für Abstände zwischen Nodes in dieser Zeichnung
eingestellt. Damit liegt die Koordinate Eine Möglichkeit wäre die Koordinate Open in Online-Editor
\node [coord, below=of e] (hilf) {};% Hilfskoordinate für definierten Zusatzabstand \node [coord] (hilfps) at (hilf-|c) {}; \node [coord, below= of hilfps] (hilfps2) {}; Wenn Nodes und Koordinaten relativ zueinander positioniert werden, kann man die Reihenfolge von deren Definition naturgemäß nicht beliebig ändern. Im folgenden Bild sind die Hilfspunkte mit farbigen Kreuzen markiert: Den Code habe ich nur ein klein wenig umsortiert: Open in Online-Editor
\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}; \node [coord, right=12mm of h.north] (hilfps3){}; \end{scope} % farbiges Markieren der Hilfspunkte \foreach \coord/\color in {hilf/blue,hilfps/orange,hilfps2/red,hilfps3/black} \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]; \end{scope} \end{tikzpicture} \end{document} beantwortet 25 Okt '16, 10:49 esdd Danke für die Antwort. Das passt soweit. Jetzt versuche ich mich daran (wer hätte es gedacht...) die jump Funktion für eben diese Linie zu nutzen. Diese soll von hilfps2 bis hilfps3 über "Eck" gehen und d,f und e,f, kreuzen. Wie kann ich das "|-" syntax-korrekt in die jump-Funktion einbauen? Oder muss ich mir dazu neue Hilfspunkte definieren?
(25 Okt '16, 12:51)
SF6
Wohl war, aber ich möchte ungern für jede "Kleinigkeit" eine neue Frage beginnen. Oder ist das hier so explizit erwünscht?
(25 Okt '16, 13:12)
SF6
@SF6 Wir wollen hier möglichst eng umrissene Fragen und möglichst wenig ausufernde Diskussionen, in denen sich Fragen immer weiter entwickeln und die Antworten entsprechend angepasst werden müssen. Das wäre eher etwas für ein Diskussionsforum. Stattdessen bevorzugen wir hier eher neue Fragen mit dazu passendem Minimalbeispiel. Falls notwendig, kann ein Link auf eine frühere Frage gesetzt werden.
(25 Okt '16, 13:43)
saputello
|