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:

Code, hier editierbar zum Übersetzen:
\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}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

Code, hier editierbar zum Übersetzen:
\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}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

gefragt 26 Mai '22, 08:24

AndreGismo's gravatar image

AndreGismo
5961327
Akzeptiert-Rate: 72%

bearbeitet 26 Mai '22, 10:28

1

Stefans Antwort sollte auch Deine Frage beantworten können.

(26 Mai '22, 09:39) Bartman

ahh super, das schaut doch vielversprechend aus, danke für den Link! :)

(26 Mai '22, 09:45) AndreGismo

Der zweite Befehl aus Stefans Antwort muss nur geringfügig angepasst werden, um die gewünschte Ausgabe zu bekommen.

Auch der Abschnitt 13.3.1 "Intersections of Perpendicular Lines" im pgfmanual enthält lesenswertes zum Thema.

Code, hier editierbar zum Übersetzen:
\documentclass[tikz, border=5pt]{standalone}
\usetikzlibrary{positioning,arrows.meta}
\begin{document}
\begin{tikzpicture}[
>=Stealth,
block/.style={
draw,
% rectangle,% Standardeinstellung jedes Knoten
minimum width=1.5cm,
execute at begin node=\strut
}
]
\node[block] (a) {Block a};% at (0,0) ändert hier nichts
% Die Zuweisung von 1 oder 1cm ist die Voreinstellung von node distance.
\node[block, below=of a] (b) {Block b};
\node[block, below=of b] (c) {Block c};
\node[block, right=4cm of b, minimum height=5cm] (d) {Block d};
% Drei Befehle werden durch einen ersetzt.
\path [->]
(b) edge (d)
(c) edge (c-|d.west)
(a) edge (a-|d.west)
;
\end{tikzpicture}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Permanenter link

beantwortet 27 Mai '22, 07:44

Bartman's gravatar image

Bartman
1.6k13
Akzeptiert-Rate: 50%

bearbeitet 27 Mai '22, 08:31

ah verstehe, danke!

(30 Mai '22, 08:11) AndreGismo
Deine Antwort
[Vorschau ausblenden]

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Frage-Themen:

×731
×77
×76
×6
×4

gestellte Frage: 26 Mai '22, 08:24

Frage wurde gesehen: 2,982 Mal

zuletzt geändert: 30 Mai '22, 08:11

Willkommen, erstes Mal hier? Schau mal unter FAQ!

×