TikZ - einen Pfeil parallel zu einer Linie zeichen

Schriftbild, Absätze und Auflistungen einstellen


Igeloeffnung
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Mi 4. Mai 2011, 10:36

TikZ - einen Pfeil parallel zu einer Linie zeichen

Beitrag von Igeloeffnung »

Hallo,

ich suche schon einige Zeit nach einer Möglichkeit, einen Pfeil parallel zu einer Linie zu Zeichen. Etwas genauer:

Ich möchte einen Graphen zeichnen, also Nodes und die untereinander mit, z.B. \draw (a) -- (b); verbinden.
Jetzt möchte ich an einigen Verbindungen zwischen den Nodes, einen Pfeil zeichnen, parallel zur Verbindung.

Ich habe schon einiges versucht, aber nichts hat geklappt.

Kann mir da vielleicht jemand helfen ?


Gruß Igel

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Hallo,

bitte erstelle möglichst immer ein Minimalbeispiel. Vielleicht passt der Vorschlag:
\documentclass{scrartcl}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
  \node[draw](a) at (0,0){Node a};
  \node[draw](b) at (0,-2){Node b};
  \path (a)edge(b);
  \draw[-latex] ([xshift=1mm]a.south)--([xshift=1mm]b.north);
\end{tikzpicture}
\end{document}
Gruß
Elke

Igeloeffnung
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Mi 4. Mai 2011, 10:36

Beitrag von Igeloeffnung »

Hallo,
danke für den Tip. Das ist auch schon sehr nah an dem was ich haben möchte. Wenn die Nodes jetzt aber nicht direkt übereinander oder nebeneinander liegen, müsste ich den xshift ja auch wieder per Hand anpassen.
Beispielsweise habe ich hier node (b) etwas verschoben und da klappt sieht es nicht mehr gut aus.
\documentclass{scrartcl}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
  \node[draw](a) at (0,0){Node a};
  \node[draw](b) at (3,-2){Node b};
  \path (a)edge(b);
  \draw[-latex] ([xshift=1mm]a.south)--([xshift=1mm]b.north);
\end{tikzpicture}
\end{document}

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Hallo,

anderer Vorschlag für rechteckige Noden:
\documentclass{scrartcl} 

\usepackage[T1]{fontenc} 
\usepackage[utf8]{inputenc} 

\usepackage{tikz} 

\begin{document} 
\begin{tikzpicture} 
  \node[draw](a) at (0,0){Node a};
  \node[draw](b) at (3,-2){Node b};
  \path (a)edge(b); 
  \path[transform canvas={xshift=2mm},-latex] (a)edge(b);
\end{tikzpicture} 
\end{document} 
Gruß
Elke

Igeloeffnung
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Mi 4. Mai 2011, 10:36

Beitrag von Igeloeffnung »

Hi,

das sieht ja schon ganz gut aus, aber ich hätte dann doch ganz gerne runde nodes. Um ganz genau zu werden, habe ich mal ein Bild angehängt, von dem graph den ich tikz'en möchte.

Gruß Igel
Dateianhänge
graph.png
graph.png (21.64 KiB) 3327 mal betrachtet

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Hallo,

bitte mach das nächste Mal wirklich ein Minimalbeispiel, dann hätte man sofort gewußt, dass die Noden nicht unter- bzw. nebeneinander liegen und Kreise sind.
Hier ist nun noch ein Vorschlag, bei dem du die Länge der Pfeile von Hand anpassen musst:
\documentclass{scrartcl} 

\usepackage[T1]{fontenc} 
\usepackage[utf8]{inputenc} 

\usepackage{tikz}
\usetikzlibrary{calc}

\colorlet{NGray}{black!20}

\newcommand\Parallele[6][]{%
  \coordinate(Mitte)at($(#2)!0.5!(#4)$);%
  \draw[#1]($($(Mitte)!#3!(#2)$)!#6!270:(#2)$)--($($(Mitte)!#5!(#4)$)!#6!90:(#4)$);%
  }
% Syntax:\Parallele[<Optionen wie Pfeilspitze etc.>]%
%                   {<Punkt1>}{<Abstand Parallenmitte bis -ende Richtung Punkt1}%
%                   {<Punkt2>}{<Abstand Parallenmitte bis -ende Richtung Punkt2}%
%                  {<Abstand der Parallele>}
% werden Punkt1 und Punkt2 vertauscht, dann liegt die Parallele auf der anderen Seite

\begin{document} 
\begin{tikzpicture}[every node/.style={draw,circle}] 
  \node(A) at (0,0){A};
  \node[fill=NGray](B) at (2.5,-0.5){B};
  \node[fill=NGray](D) at (2,-2){D};
  \path(A)edge(B)%
          edge(D);
  \Parallele[latex-]{A}{0.8cm}{B}{0.8cm}{2mm}
  \Parallele[-latex]{D}{0.9cm}{A}{0.9cm}{2mm}
\end{tikzpicture}
\end{document}
Gruß
Elke

PS: Damit die Parallele auf der anderen Seite liegt, kann man auch einfach ein Minus vor den Abstand setzen (statt die Punkte zu vertauschen).
\Parallele[-latex]{D}{0.9cm}{A}{0.9cm}{2mm} liefert das gleiche wie \Parallele[latex-]{A}{0.9cm}{D}{0.9cm}{-2mm}
Zuletzt geändert von esdd am Mi 4. Mai 2011, 21:25, insgesamt 1-mal geändert.

Igeloeffnung
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Mi 4. Mai 2011, 10:36

Beitrag von Igeloeffnung »

Hi,

vielen dank, das sieht perfekt aus. und ich verspreche, dass ich das nächste mal ein Minimalbeispiel angebe.

Gruß igel

Antworten