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

Tabellen und Grafiken erstellen und anordnen


Zoid
Forum-Century
Forum-Century
Beiträge: 104
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) 941 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:

\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: 2456
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

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

durch

\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.

\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