Hallo Arjen,
auch da ich TikZ gern mag, und es super finde, dass Du damit anfängst, zeige ich gern mal ein Beispiel. Ich habe neulich auch einen Flowchart erstellt. Ich gehe ungefähr so vor:
- Lade TikZ und Bibliotheken
- Definiere Stile
- Definiere weitere Makros für sich ähnelnde Sachen
- Positioniere Nodes (vorzugsweise einfach als Matrix)
- Zeichne Verbindungspfeile (-> oder to oder edge mit node label)
Alle Punkte "leben" natürlich und werden während der Bearbeitung noch ergänzt. Außer Makros verwende ich noch for-Schleifen zur Code-Optimierung.
Ich gebe mal meinen Code an, und danach ein paar Infos. Das Beispiel ist in Englisch, weil ich es für ein englischsprachiges Buch verfasst hatte, als eines von ca. hundert Beispielen darin.
\documentclass{article}
\usepackage[a4paper,vmargin=3cm]{geometry}
\usepackage{tikz}
\usetikzlibrary{matrix,calc,shapes}
\tikzset{
treenode/.style = {shape=rectangle, rounded corners,
draw, anchor=center,
text width=5em, align=center,
top color=white, bottom color=blue!20,
inner sep=1ex},
decision/.style = {treenode, diamond, inner sep=0pt},
root/.style = {treenode, font=\Large, bottom color=red!30},
env/.style = {treenode, font=\ttfamily\normalsize},
finish/.style = {root, bottom color=green!40}
}
\newcommand{\yes}{edge node [above] {yes}}
\newcommand{\no}{edge node [left] {no}}
\begin{document}
\begin{tikzpicture}[-latex]
\matrix (chart)
[
matrix of nodes,
column sep = 3em,
row sep = 5ex,
column 1/.style = {nodes={decision}},
column 2/.style = {nodes={env}}
]
{
|[root]| Formula & \\
single-line? & equation \\
centered? & gather \\
aligned at relation sign? & align, flalign \\
aligned at several places? & alignat \\
first left, centered,
last right? & multline \\
& & |[decision]| numbered? \\
& & |[treenode]| Add a \texttt{*} & |[finish]| Done \\
};
\draw
(chart-1-1) edge (chart-2-1)
\foreach \x/\y in {2/3, 3/4, 4/5, 5/6} {
(chart-\x-1) \no (chart-\y-1) }
\foreach \x in {2,...,6} {
(chart-\x-1) \yes (chart-\x-2) }
(chart-7-3) \no (chart-8-3)
(chart-8-3) edge (chart-8-4);
\draw
(chart-6-1) -- +(-2,0) |- (chart-1-1)
node[near start,sloped,above] {no, reconsider};
\foreach \x in {2,...,6} {
\draw (chart-\x-2) -| (chart-7-3);}
\draw (chart-7-3) -| (chart-8-4)
node[near start,above] {yes};
\end{tikzpicture}
\end{document}
- Die meisten Chart-Strukturen sind eh rechteckig, da macht eine Matrix das Positionieren einfach. Die Abstände von Zeilen und Spalten kann man immer noch justieren. Einfacher als bei einzeln gesetzten Nodes.
- Sachen, die sich wiederholen, mache ich in for-Schleifen. Es lohnt sich echt, \foreach mal im TikZ-Handbuch anzusehen. Das kannst Du auf der Kommandozeile (Terminal-Fenster oder cmd auf Windows) mit texdoc tikz aufrufen, oder online hier: TikZ.
- Ansonsten mache ich mir gern weitere Makros. Dann braucht man nur an einer Stelle zu ändern, alles passt sich an. Gilt auch für wie oben vererbte Stile.
Stefan