PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : tikz: (shape links) pfeil mit text (shape rechts) - wie?



KlausImMai
17-04-2009, 18:55
Hallo,

ich versuche eine Assoziation mit tikz zu zeichnen.

...Text
X ------> Y

X ist ein Stern, y ist eine Wolke.
Über dem Pfeil befindet sich ein Text.

Meine Fragen:
1. Wie füge ich den Text über den Pfeil ein?
2. Wie mache ich, dass der Pfeil sich bei einem längeren Wort mit streckt?
(3. Wie mache ich die Schrift dieses Textes kleiner?)

Hier meine vergeblichen Versuche:



\documentclass[a4paper]{article}
\usepackage{german}
\usepackage[latin1]{inputenc}

\usepackage{tikz}

\usetikzlibrary{%
arrows,%
shapes.misc,%
shapes.arrows,%
chains,%
matrix,%
positioning,%
scopes,%
decorations.pathmorphing,%
shadows%
}
\usetikzlibrary{er}
\usetikzlibrary{trees}
\usetikzlibrary{shapes.symbols}

\begin{document}

%Beispiel 1
\begin{tikzpicture}
[nodes={draw}]
\node[star,star points=4,star point ratio=0.8](eins) {eins};
\node[cloud,cloud ignores aspect](zwei) [right=of eins]{zwei};
\draw [->] (eins.east) to (zwei.west);
\node [draw=none,above=8pt] at (0,1) {Assoziation};
\end{tikzpicture}

%Beispiel 2
\begin{tikzpicture}
[nodes={draw}]
\node[star,star points=4,star point ratio=0.8](eins) {eins};
\node[cloud,cloud ignores aspect](zwei) [right=of eins]{zwei};
\draw [->] (eins.east) to (zwei.west);
\draw (eins) -- node [midway] {Assoziation} (zwei);
\end{tikzpicture}

\end{document}


Im zweiten Beispiel wird ein Kästchen um das Wort gelegt, was ich nicht will. Ich weiß aber nicht, wie man es vermeidet.

Viele Grüße,

Klaus

Stefan_K
17-04-2009, 19:24
Hallo Klaus,

in Beispiel 2 könntest Du die draw-Option auf none setzen sowie die Option above angeben, den Text durch \tiny verkleinern und ggf. den Abstand der nodes relativ zueinander ändern, beispielsweise also:

\begin{tikzpicture}
[nodes={draw}]
\node[star,star points=4,star point ratio=0.8](eins) {eins};
\node[cloud,cloud ignores aspect](zwei)
[right=1.6cm of eins]{zwei};
\draw [->] (eins.east) to (zwei.west);
\draw (eins) -- node [midway,above,draw=none]
{\tiny Assoziation} (zwei);
\end{tikzpicture}

Viele Grüße,

Stefan

KlausImMai
17-04-2009, 19:39
Hallo Stefan,

ja, das ist eine Lösung, so funktioniert es.

Herzlichen Dank!

Wenn ich den rechten shape weiter nach rechts rücken möchte, muss ich da absolute Positionierungen nehmen (ich nehme an Stichwort "anchor" - das müsste ich aber noch nachlesen), oder gibt es da eine Automatik?


Viele Grüße,

Klaus

rais
17-04-2009, 21:32
Moin moin,


Wenn ich den rechten shape weiter nach rechts rücken möchte,
spontan käme mir da sowas


%Beispiel 2
\newcommand*\mytext{\small Assoziation}
\newlength\foo
\settowidth\foo{M\mytext}
\begin{tikzpicture}[nodes={draw}, >=latex]
\node[star,star points=4,star point ratio=0.8](eins) {eins};
\node[cloud,cloud ignores aspect](zwei) [right=\the\foo of eins]{zwei};
\draw [->] (eins.east) to (zwei.west);
\draw (eins) -- node [midway,above,draw=none] {\mytext} (zwei);
\end{tikzpicture}
in den Sinn;-)

MfG

KlausImMai
18-04-2009, 07:23
Rainer, das ist perfekt!

Herzlichen Dank!

Klaus