PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : tikz: alignement left - wie?



KlausImMai
24-07-2009, 16:49
Hallo,


eine Frage zu dem unten stehenden Beispiel mit PDF.

Wie kann ich die Wörter links akkurat in eine Linie bringen? Ebenso die Wörter rechts? Ich hätte sie gerne wie in einer Tabelle in Spalten geordnet. Ich habe "matrix" mit den notes schon versucht, aber leider vergeblich.

Hier ein Minimalbeispiel:



\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}

\begin{figure}[H]
\centering
\begin{tikzpicture} [nodes={draw},node distance=0.5cm]

\node[rectangle](eins) {\small ein};
\node[cloud,cloud puffs=12,cloud ignores aspect,cloud puff arc=80](zwei)
[right=1cm of eins]{Stichwort 1};

\node[rectangle,below=of eins](drei) {\small einzwei};
\node[cloud,cloud puffs=12,cloud ignores aspect,cloud puff arc=80,below=of
zwei](vier) [right=1cm of drei]{Stichwort 2};

\node[rectangle,below=of drei](fuenf) {\small einzweidrei};
\node[cloud,cloud puffs=12,cloud ignores aspect,cloud puff arc=80,below=of
vier](sechs) [right=1cm of fuenf]{Stichwort 3};

\node[rectangle,below=of fuenf](sieben) {\small
einzweidreivier};
\node[cloud,cloud puffs=12,cloud ignores aspect,cloud puff arc=80,below=of
sechs](acht) [right=1cm of sieben]{Stichwort 4};

\node[rectangle,below=of sieben](neun) {\small
einzweidreivierfuenf};
\node[cloud,cloud puffs=12,cloud ignores aspect,cloud puff arc=80,below=of
acht](zehn) [right=1cm of neun]{Stichwort 5};

\node[draw=none,fill=none,below=of neun](elf) {\ldots};

\draw [->] (eins.east) to (zwei.west);
\draw [->] (drei.east) to (vier.west);
\draw [->] (fuenf.east) to (sechs.west);
\draw [->] (sieben.east) to (acht.west);
\draw [->] (neun.east) to (zehn.west);

\draw [->] (eins.south) to (drei.north);
\draw [->] (drei.south) to (fuenf.north);
\draw [->] (fuenf.south) to (sieben.north);
\draw [->] (sieben.south) to (neun.north);
\draw [->] (neun.south) to (elf.north);

\end{tikzpicture}

\end{figure}

\end{document}



Viele Grüße,

Klaus

KlausImMai
16-08-2009, 11:56
Hat jemand einen Tipp, ein Stichwort, unter dem ich nachschauen kann?

bobmalaria
16-08-2009, 13:35
hi,

matrix sollte eigentlich funktionieren. ich denke der schlüssel ist den anchor=west oder ähnliches zu setzen.

hier habe ich das mal 'hart' codiert, ohne matrix sondern mit coordinaten


\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}

\begin{figure}[H]
\centering
\begin{tikzpicture} [nodes={draw},node distance=0.5cm]

\node at (0,0)[anchor=west,rectangle](eins) {\small ein};
\node at (4,0) [cloud,cloud puffs=12,cloud ignores aspect,cloud puff arc=80](zwei)
[anchor=west]{Stichwort 1};

\node at (0,-1)[anchor=west,rectangle](drei) {\small einzwei};
\node at (4,-1)[cloud,cloud puffs=12,cloud ignores aspect,cloud puff arc=80](vier) [anchor=west]{Stichwort 2};

\node at (0,-2)[rectangle,anchor=west](fuenf) {\small einzweidrei};
\node at (4,-2)[cloud,cloud puffs=12,cloud ignores aspect,cloud puff arc=80](sechs) [anchor=west]{Stichwort 3};

\node at (0,-3)[rectangle,anchor=west](sieben) {\small
einzweidreivier};
\node at (4,-3)[cloud,cloud puffs=12,cloud ignores aspect,cloud puff arc=80](acht) [anchor=west]{Stichwort 4};

\node at (0,-4)[rectangle,anchor=west](neun) {\small
einzweidreivierfuenf};
\node at (4,-4)[cloud,cloud puffs=12,cloud ignores aspect,cloud puff arc=80](zehn) [anchor=west]{Stichwort 5};

\node at (0,-5)[draw=none,fill=none,anchor=west](elf) {\ldots};

\draw [->] (eins.east) to (zwei.west);
\draw [->] (drei.east) to (vier.west);
\draw [->] (fuenf.east) to (sechs.west);
\draw [->] (sieben.east) to (acht.west);
\draw [->] (neun.east) to (zehn.west);

\draw [->] (eins.south) to (drei.north);
\draw [->] (drei.south) to (fuenf.north);
\draw [->] (fuenf.south) to (sieben.north);
\draw [->] (sieben.south) to (neun.north);
\draw [->] (neun.south) to (elf.north);

\end{tikzpicture}

\end{figure}

\end{document}


gruss

KlausImMai
17-08-2009, 19:51
Sehr schön! Ja, sehr gute Idee!

Darauf bin ich nicht gekommen, dass ich das über das feste Positionieren der Notes lösen kann.

Eigentlich sollte das schon die Lösung sein.

Herzlichen Dank,

Klaus

esdd
21-08-2009, 18:51
Hallo,

hier ist noch ein Vorschlag mit matrix:



\documentclass{article}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{tikz}
\usetikzlibrary{shapes.symbols,calc,matrix}

\begin{document}

\tikzset{mycloud/.style={%
cloud,cloud puffs=12,cloud ignores aspect,cloud puff arc=80%
}}

\begin{tikzpicture}
\matrix(M)[%
matrix of nodes,nodes=draw,%
row sep=0.5cm, column sep=0.5cm,%
cells={anchor=west},%
column 2/.style=mycloud%
% column 2/.style={mycloud,anchor=east}% 2.Spalte rechtsbündig
]{%
\small eins&Stichwort 1\\
\small einszwei&Stichwort 2\\
\small einszweidrei&Stichwort 3\\
\small einszweidreivier&Stichwort 4\\
\small einszweidreivierfünf&Stichwort 5\\
|[draw=none]|\ldots&|[draw=none]|\\
};
\path[->] \foreach \n in {1,...,5} {%
\pgfextra{\pgfmathtruncatemacro{\m}{\n+1}}
(M-\n-1) edge (M-\n-2)
edge (M-\m-1)
};
\end{tikzpicture}

\end{document}


Alle Zellen werden linksbündig gesetzt. Alternativ kann aber die 2.Spalte auch rechts ausgerichtet werden.

Gruss
Elke