Ich versuche, ein Diagramm im Stil „Mehrere Eingänge, mehrere Ausgänge“ zu zeichnen. Dazu verwende ich Code mit der folgenden Struktur:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\tikzset{packet/.style={rectangle, draw, very thick, minimum size=8mm, rounded corners=1mm, fill=blue!50!white!30}}
\tikzset{mixing/.style={rectangle, draw, very thick, minimum width=35ex, rounded corners=1mm, fill=red!70!orange!30,rotate=90}}
\node[packet] (A) at (0,0) {Node A};
\node[packet] (B) [right=2cm of A] {Node B};
\node[mixing] (pro) at ($(A) !.5! (B) + (0.0,-1.0)$) {Multiple Input Multiple Output process};
\node[packet] (C) at (0.0,-2.1) {Node C};
\node[packet] (D) [right=2cm of C] {Node D};
\draw[->] (A.east) -- (B.west);
\draw[->] (C.east) -- (D.west);
\end{tikzpicture}
\end{document}
Dadurch entsteht das folgende Diagramm:
Ich möchte wissen, wie man die Pfeile so zeichnet, dass der „Multiple Input Multiple Output“-Prozess die Linie halbiert und sie in zwei Teile teilt, sodass ein Pfeil links in den Prozess hineinführt (beispielsweise von Knoten A) und einer rechts hinaus (beispielsweise zu Knoten B).
Ich kenne die Notation, die den Eintritt/Austritt einer Linie in einen Knoten festlegt (etwa name_of_node.180, wobei 180 den Winkel des Eintritts/Austritts zum Knoten relativ zum Mittelpunkt des Knotens angibt), zum Beispiel hierBlockdiagramme Multi-Input - Multi-Output-Komponenten in TikZ
Es ist jedoch möglich, die Ein- und Ausstiegspunkte der Pfeile des „Prozess“-Knotens so zu erzwingen, dass sie auf „Höhe“ mit einem Knotenpaar (A und B oder C und D) liegen. (Im folgenden Diagramm ist es praktisch so, als ob der Prozessknoten die Pfeile halbiert und sie in zwei Hälften teilt, wie bereits erwähnt).
Antwort1
Sie können das senkrechte Koordinatensystem verwenden:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\tikzset{packet/.style={rectangle, draw, very thick, minimum size=8mm, rounded corners=1mm, fill=blue!50!white!30}}
\tikzset{mixing/.style={rectangle, draw, very thick, minimum width=35ex, rounded corners=1mm, fill=red!70!orange!30,rotate=90}}
\node[packet] (A) at (0,0) {Node A};
\node[packet] (B) [right=2cm of A] {Node B};
\node[mixing] (pro) at ($(A) !.5! (B) + (0.0,-1.0)$)
(mult) {Multiple Input Multiple Output process};
\node[packet] (C) at (0.0,-2.1) {Node C};
\node[packet] (D) [right=2cm of C] {Node D};
\draw[->] (A.east) -- (mult.north|-A.east);
\draw[->] (mult.south|-A.east) -- (B.west);
\draw[->] (C.east) -- (mult.north|-C.east);
\draw[->] (mult.south|-C.east) -- (D.west);
\end{tikzpicture}
\end{document}
Eine bessere Alternative ist die Verwendung von:
\draw[->] (A.east) -- (mult.north|-A.east);
\draw[->] (mult.south|-A.east) -- (B.west|-A.east);
\draw[->] (C.east) -- (mult.north|-C.east);
\draw[->] (mult.south|-C.east) -- (D.west|-C.east);