Seite 1 von 1

[Tikz] Kanten bevorzugt horizontal/vertikal zeichnen?

Verfasst: Sa 21. Mai 2011, 12:16
von juk789
Hallo,
gibt es bei Tikz eine Möglichkeit, Kanten bevorzugt horizontal bzw. vertikal zu zeichnen?
Ich habe die Situation, dass ich einen breiten Kasten habe und zwei schmälere darunter. Wenn ich jetzt eine Kante zwischen schmal und breit zeichne, setzt diese automatisch jeweils in der Mitte der beiden Kästen an. Ich fände es aber schöner, wenn die Kante vertikal vom schmalen Kasten nach oben verlaufen würde. Ich kann natürlich manuell den Ansatzpunkt beim breiten Kasten ausprobieren aber das ist sicher keine saubere Lösung.
Gibt es da irgendeine Option, mit der ich das automatisch erreichen kann?
\begin{tikzpicture}[]
\node (a) [minimum width=1cm] {A};
\node (b) [minimum width=1cm, right =of a] {B};
\node (c) [minimum width=6cm, above =2cm of b] {C};
\draw [<-] (a) to (c);
\draw [<-] (b) to (c);
\end{tikzpicture}
Danke!

Edit: Und noch eine kleine Zeichnung die verdeutlicht, was ich will :lol:

Verfasst: Sa 21. Mai 2011, 14:43
von iTob
Die rechteckigen Nodes haben doch Anker, z. B. (a.north) oder (a.south east), an denen kanst du ansetzten und mit |- oder -| statt -- kannst du Ecken zeichenen.
Siehe auch Abschnitt 16.5 „Positioning Nodes“ im Handbuch.

Verfasst: Sa 21. Mai 2011, 14:47
von juk789
Ja, das wäre eine Möglichkeit, parallele Linien zu bekommen, würde aber aufgrund der dann "indirekten" Kantenführung noch seltsamer aussehen als bisher, finde ich. :wink:

Verfasst: Sa 21. Mai 2011, 14:51
von iTob
Ja, ich hab glaube ich auch erst nach dem Antworten verstanden, was du willst :)

Verfasst: Sa 21. Mai 2011, 16:58
von esdd
Hallo,

du kannst die Koordinate mit (a|-c.south) angeben. Das ist der Punkt, wo sich die Parallele zur y-Achse durch (a) und die Parallele zur x-Achse durch (c.south) schneiden.
\documentclass{report}
\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}

\begin{tikzpicture}[every node/.style=draw]
  \node (c) [minimum width=6cm] {C}; 
  \node (a) [minimum width=2cm, below =of c.south west,anchor=north west] {A};
  \node (b) [minimum width=2cm, below =of c.south east,anchor=north east] {B};
  \draw [->] (a)--(a|-c.south); 
  \draw [->] (b)--(b|-c.south); 
\end{tikzpicture} 
\end{document}
In dem Beispiel habe ich zusätzlich die Noden a und b an den Rändern von c ausgrichtet.

Gruß
Elke

Verfasst: Sa 21. Mai 2011, 18:56
von juk789
Genau das, was ich gesucht habe! Da hab ich wohl an der falschen Stelle geschaut.