Tikz: Node, seitlich versetzten, genau zwischen zwei anderen Nodes positionieren Thema ist als GELÖST markiert

Tabellen und Grafiken erstellen und anordnen


Zoid
Forum-Century
Forum-Century
Beiträge: 104
Registriert: Do 12. Mär 2020, 13:48

Tikz: Node, seitlich versetzten, genau zwischen zwei anderen Nodes positionieren

Beitrag von Zoid »

Moin moin,

ich würde gerne ein Ablaufdiagramm erstellen. Nun habe ich neben dem Hauptablaufpfad, welcher senkrecht verläuft, auch noch Nebenpfade, die in den Hauptpfad einmünden sollen. Leider werden die Verbindungdspfeile in horizontaler Richtung nicht gerade, was an der Positionierung der seitlichen Node liegt. Ich habe zwar über midway den Mittelpunkt einer Verbindungslinie im Hauptpfad definieren können, doch leider weiß nicht, wie ich die seitliche Node mti Hilfe dieser Koordinate positionieren kann bzw. den horizontalen Pfeil gerade hinbekommen kann.
Umständliche Erklärung, daher hier ein Bild:

Unbenannt.PNG
Unbenannt.PNG (11.22 KiB) 3968 mal betrachtet

Und der Quellcode:

\documentclass[ngerman,12pt,a4paper,toc=listof,parskip=full,singlespacing=true]{scrreprt}
\usepackage{tikz}	% Ablaufdiagramme
\usetikzlibrary{fit,matrix,shapes.geometric,arrows,positioning}	% =


\begin{document}
\tikzstyle{box}=[rectangle,draw, text width=11em, text centered, minimum height=2em]	
\tikzstyle{boxlight}=[rectangle, text width=5em, text centered, minimum height=4em]
\tikzstyle{line} = [draw, -latex']

\begin{figure}[h]
\centering
\begin{tikzpicture}[node distance = 5mm and 10mm,font=\footnotesize]
	% Place nodes
	\node[box](step2){Text Text Text Text Text };
		\node[box, right= of step2,yshift=-0.65cm](step2b){Text Text };
	%\node[box,below= of step2](step3){Beschichtung Furnierlagen mit Klebstoff};
	\node[box,below= of step2](step4){Text Text Text Text Text Text };

% Draw edges
\path[line](step2) -- coordinate[midway](mx) (step4);
	\path [line](step2b) -- (mx);	

\end{tikzpicture}
\end{figure}
\end{document}

Würde mich freuen, wenn jemand einen Rat hat.

Vielen Dank un viele Grüße :wink:


Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Re: Tikz: Node, seitlich versetzten, genau zwischen zwei anderen Nodes positionieren

Beitrag von Bartman »

Die Platzierung der Box rechts der Koordinate auf der Mitte des Pfades hätte nicht genug Abstand zu den anderen Boxen. Um das zu vermeiden, kann man einen der Anker auf der rechten Seite einer Box in die Positionsbestimmung einbinden.

\documentclass[tikz, border=5pt]{standalone}
\usetikzlibrary{arrows.meta,positioning}

% \tikzstyle ist veraltet
\tikzset{
    box/.style={draw, text width=11em, align=center, minimum height=2em},
    boxlight/.style={draw, text width=5em, align=center, minimum height=4em},
    line/.style={-{Latex[scale=.8]}}
}

\begin{document}
\begin{tikzpicture}[node distance = 5mm and 10mm, font=\footnotesize]
    % Place nodes
    \node [box] (step2) {Text Text Text Text Text};
    %\node [box, below= of step2](step3){Beschichtung Furnierlagen mit Klebstoff};
    \node [box, below=of step2] (step4) {Text Text Text Text Text Text};
    \draw [line] (step2) -- coordinate (mx) (step4);
    \node [box, right=of mx-|step2.south east] (step2b) {Text Text};
    \draw [line] (step2b) -- (mx);
% Hilfestellung, um die Positionsbestimmung besser zu verstehen
%    \draw [red, thick] 
%        (mx) -| (step2.south east)
%        (mx-|step2.south east) circle [radius=3pt]
%    ;
\end{tikzpicture}
\end{document}

Zoid
Forum-Century
Forum-Century
Beiträge: 104
Registriert: Do 12. Mär 2020, 13:48

Re: Tikz: Node, seitlich versetzten, genau zwischen zwei anderen Nodes positionieren

Beitrag von Zoid »

Das hat geklappt, vielen Dank.
Allerdings muss man daran denken, dass die Koordinaten erstellt werden, bevor sie abgerufen werden. Daher ist eine strenge unterteilung in Nodes und Lines nicht möglich, sofern eine Koordinate für Nodes erst in Lines definiert wird.


cis
Forum-Anfänger
Forum-Anfänger
Beiträge: 47
Registriert: Mi 22. Jul 2020, 20:14

Re: Tikz: Node, seitlich versetzten, genau zwischen zwei anderen Nodes positionieren

Beitrag von cis »

Ich finde das Beispiel durchaus unübersichtlich für ein Minimalbeispiel.

Aber die Syntax macht m.E. wenig Sinn:

\path[line](step2) -- coordinate[midway](mx) (step4);

ob das midway drin steht oder nicht, macht keinen Unterschied.

Vermutlich ist sowas gesucht:

\path[line, red](step2) -- (step4)  coordinate[pos=0.5](mx);

Ansonsten nimm eben eine TikZ-Matrix, wenn das Ganze automatisiert werden soll.


Zoid
Forum-Century
Forum-Century
Beiträge: 104
Registriert: Do 12. Mär 2020, 13:48

Re: Tikz: Node, seitlich versetzten, genau zwischen zwei anderen Nodes positionieren

Beitrag von Zoid »

cis hat geschrieben:
Mi 11. Nov 2020, 15:34

Ich finde das Beispiel durchaus unübersichtlich für ein Minimalbeispiel.

Was könnte ich verbessern?

cis hat geschrieben:
Mi 11. Nov 2020, 15:34

ob das midway drin steht oder nicht, macht keinen Unterschied.

Wurde da jetzt nicht einfach das "midway" gegen "pos=0.5" ausgetauscht und der Block ans Ende verschoben? Meine Interpretation wäre, dass ich mit midway die halbe Strecke angibt. Wenn ich nur 40 % der Strecke haben wollen würde, dann müsste ich mir pos arbeiten.

cis hat geschrieben:
Mi 11. Nov 2020, 15:34

Ansonsten nimm eben eine TikZ-Matrix, wenn das Ganze automatisiert werden soll.

Wäre hier keine Option. Meine Frage stellt einen kleinen Teil eines relativ großen Fließdiagramms dar. Aber soweit habe ich es hinbekommen.


cis
Forum-Anfänger
Forum-Anfänger
Beiträge: 47
Registriert: Mi 22. Jul 2020, 20:14

Re: Tikz: Node, seitlich versetzten, genau zwischen zwei anderen Nodes positionieren

Beitrag von cis »

Zoid hat geschrieben:
Fr 13. Nov 2020, 21:40

Wäre hier keine Option. Meine Frage stellt einen kleinen Teil eines relativ großen Fließdiagramms dar. Aber soweit habe ich es hinbekommen.

Dann ist es aber vielleicht generell ganz sinnvoll ein Tool zu verwenden, anstelle der Einzelpositionierung vieler nodes; z.B. die TikZ-matrix.


Zoid
Forum-Century
Forum-Century
Beiträge: 104
Registriert: Do 12. Mär 2020, 13:48

Re: Tikz: Node, seitlich versetzten, genau zwischen zwei anderen Nodes positionieren

Beitrag von Zoid »

cis hat geschrieben:
Mo 16. Nov 2020, 14:16

Dann ist es aber vielleicht generell ganz sinnvoll ein Tool zu verwenden, anstelle der Einzelpositionierung vieler nodes; z.B. die TikZ-matrix.

Gibt es denn dafür eine Anleitung oder Erklärung? Ich habe die Matrix bisher nur als Matrix benutzt, nicht aber als Ablaufdiagramm. Unter "flow chart" finde ich in der Anleitung nichts.


Gast

Beitrag von Gast »

  • Flowchart

  • Letztes Beispiel im Abschnitt 20.6 Examples in der Dokumentation von pgf/TikZ


Zoid
Forum-Century
Forum-Century
Beiträge: 104
Registriert: Do 12. Mär 2020, 13:48

Re: Tikz: Node, seitlich versetzten, genau zwischen zwei anderen Nodes positionieren

Beitrag von Zoid »

Vielen Dank, das wird dann mal direkt im Latex-Ordner abgespeichert :D


Antworten