Wie kann man mit tikz einen Pfeil genau horizontal von einem node zum anderen ziehen?
Ich möchte ein Bild mit `tikz` zeichnen. Ich habe links einige nodes untereinander platziert und auf der rechten seite einen größeren, höheren node. Jetzt möchte ich, dass die Pfeile der linken nodes __genau horizontal__ zu dem großen node rechts rüberfliegen. Bis jetzt habe ich das immer nur so auf Augenmaß hingepfuscht.
__Beispiel:__
\documentclass[tikz]{standalone}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[
block/.style={
draw,
rectangle,
minimum width=1.5cm
}
]
\node[block] (a) at (0,0) {Block a};
\node[block, below=1 of a] (b) {Block b};
\node[block, below=1 of b] (c) {Block c};
\node[block, right=4 of b, minimum height=5cm] (d) {Block d};
% der ist exakt
\draw[-stealth] (b) -- (d) node[pos=0.5, above]{\emph{exakt} horizontal};
% der ist gepfuscht
\draw[-stealth] (c.east) -- ([yshift=-1.4cm]d.west) node[pos=0.5, above]
{geschätzt horizontal};
% der hier auch
\draw[-stealth] (a.east) -- (d.116) node[pos=0.5, above]
{geschätzt horizontal};
\end{tikzpicture}
\end{document}
__Frage:__ Gibt es einen eleganteren Weg, `tikz` zu sagen "schieß die Pfeile __exakt__ horizontal rüber, bis sie auf den nächsten Block treffen"?
Dank dem [Link von Bartman](https://texwelt.de/fragen/654/wie-forciere-ich-waagerechte-oder-senkrechte-linien-in-tikz) hab ich schonmal eine vielversprechende Lösung entdeckt.
Aber irgendwie bin ich gerade zu doof, das umzusetzen :(
Beispielsweise würde ich jetzt Zeile 23 im Code:
`\draw[-stealth] (a.east) -- (d.116) node[pos=0.5, above]{geschätzt horizontal};`
ersetzen durch:
`\draw[-stealth] (a.east |- d) -- (d) node[pos=0.5, above]{geschätzt horizontal};`
Dann verschwindet aber der Pfeil von "Block a" zu "Block d" komplett, bzw. der rutscht runter und liegt dann genau auf dem Pfeil von "Block b" nach " Block d".
__EDIT:__ Ich hab jetzt mal hinbekommen, das fühlt sich aber schon arg gepfuscht an: ich habe auf der rechten Seite zwei "unsichtbare" Blöcke, jeweils auf der Höhe von "Block a" und "Block c" erzeugt und anschließend die beiden mit jeweils ihrem unsichtbaren "Partner" verbunden.
Funktioniert zwar und schaut so aus, wie ich es mir erhofft hatte, aber da muss es doch eine schnellere Lösung für geben(?)
__So geht es:__
\documentclass[tikz]{standalone}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[
block/.style={
draw,
rectangle,
minimum width=1.5cm,
execute at begin node=\strut
}
]
\node[block] (a) at (0,0) {Block a};
\node[block, below=1 of a] (b) {Block b};
\node[block, below=1 of b] (c) {Block c};
\node[block, right=4 of b, draw=white] (d) {Block d};
% getrickst
\node[block, above=1 of d, draw=white](astar){};
\node[block, below=1 of d, draw=white](cstar){};
\node[block, right=4 of b, minimum height=4cm]{};
% der ist exakt
\draw[-stealth] (b) -- (d) node[pos=0.5, above]{\emph{exakt} horizontal};
% der ist gepfuscht
\draw[-stealth] (c) -- (cstar) node[pos=0.5, above]
{geschätzt horizontal};
% der hier auch
\draw[-stealth] (a) -- (astar) node[pos=0.5, above]{geschätzt
horizontal};
\end{tikzpicture}
\end{document}