Tikz: Horizontaler Pfeil zwischen Node mit Subnodes und Node unterschiedlicher Größe

Tabellen und Grafiken erstellen und anordnen


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

Tikz: Horizontaler Pfeil zwischen Node mit Subnodes und Node unterschiedlicher Größe

Beitrag von Zoid »

Moin moin,

ich habe eine weitere Frage. Folgdendes Bild zeigt die Augangssituation:

Unbenannt.PNG
Unbenannt.PNG (4.25 KiB) 62 mal betrachtet

Ich würde gerne den horizontalen Verbindungspfeil zwischen den Rändern der Nodes verlaufen lassen. Leider ragt er in die linke Node rein. Meine Lösung ist nur provisorisch, da ich keine horizonatle Linie bekomme, wenn ich den Peil von der großen Node direkt starten lasse. Daher staret er aktuell von einer Subnode in der Node. Der Code zeigt einfacher, was ich meine:

Code: Alles auswählen

\documentclass[ngerman,12pt,a4paper,toc=listof,parskip=full,singlespacing=true]{scrreprt}

\usepackage{biblatex}	
\usepackage{acronym}

\usepackage{tikz}	% Ablaufdiagramme
\usetikzlibrary{fit,matrix,shapes.geometric,arrows.meta,positioning}	% =

\begin{document}

\tikzset{
    box/.style={draw, text width=11em, align=center, minimum height=1em},
    sidebox/.style={draw, text width=10em, align=center, minimum height=1em},
    subbox/.style={draw, text width=4.2em, align=center, minimum height=1em,xshift=-8mm},
    subbox2/.style={draw, text width=9em, align=center, minimum height=1em},
    boxlight/.style={text width=5em, align=center, minimum height=4em},
    line/.style={-{Latex[scale=.8]}}
}

\begin{figure}[h]
\centering
\begin{tikzpicture}[node distance = 5mm and 10mm,font=\footnotesize]

\node[box](step6){Text};

\node[left=of step6,text width=9em,align=center](stepX){Text };
\node [subbox2,below=of stepX] (stepXa) {Text};
\node [subbox2,below=of stepXa] (stepXb) {Text};

\node[draw,fit={(stepX)(stepXa)(stepXb)}](stepXall){};

\draw[line](stepXa) -- (stepXb);
\draw[line](stepX) -- (step6);	

	
\end{tikzpicture}
\caption{Text}
\end{figure}
\end{document}

Hat jemand eine Idee, wie ich den Pfeil in seiner Länge inkürzen kann? Ein Befehl zum horizontalen Verlauf einer Linie würde mir auch helfen.

Vielen Dank und viele Grüße :wink:


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

Re: Tikz: Horizontaler Pfeil zwischen Node mit Subnodes und Node unterschiedlicher Größe

Beitrag von Bartman »

Ersetze

Code: Alles auswählen

\draw[line](stepX) -- (step6);

durch

Code: Alles auswählen

\draw[line](stepXall.east|-step6) -- (step6);

Wahrscheinlich ist Dir der Abschnitt 13.3.1 "Intersections of Perpendicular Lines" in der Dokumentation, der das Thema behandelt, bereits bekannt.

Wenn Du für die oberste der drei eingerahmten Boxen keinen Rahmen haben möchtest, dann kannst Du diesen für diese eine Box abschalten und dennoch den gewünschten Stil auf alle drei anwenden.

Code: Alles auswählen

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

\tikzset{
    box/.style={draw, text width=11em, align=center, minimum height=1em},
    sidebox/.style={draw, text width=10em, align=center, minimum height=1em},
    subbox/.style={draw, text width=4.2em, align=center, minimum height=1em,xshift=-8mm},
    subbox2/.style={draw, text width=9em, align=center, minimum height=1em},
    boxlight/.style={text width=5em, align=center, minimum height=4em},
    line/.style={-{Latex[scale=.8]}}
}

\begin{document}
\begin{tikzpicture}[node distance = 5mm and 10mm, font=\footnotesize]
\node [box] (step6) {Text};

\path [nodes=subbox2]
    node [left=of step6, draw=none] (stepX) {Text}
    node [below=of stepX] (stepXa) {Text}
    node [below=of stepXa] (stepXb) {Text}
;

\node[draw, fit={(stepX)(stepXa)(stepXb)}] (stepXall) {};

\path [line] 
    (stepXa) edge (stepXb)
    (stepXall.east|-step6) edge (step6)
;
\end{tikzpicture}
\end{document}

Antworten