LaTeX Extra > LaTeX Pakete > Flowchart


1. flowchart

Das flowchart Paket (2015/03/19 3.3) stellt die für die Erstellung eines Programmablaufplans benötigten Symbole bereit.[1] Die Flussdiagramme (flowcharts) können dabei nicht nur der Veranschaulichung eines Computerprogramms, sondern auch für die Darstellung von Arbeitsabläufen und Prozessen oder Handlungsanweisungen dienen. Für die Erstellung gibt es eine Auswahl an genormten Figuren die zur Darstellung von immer wieder vorkommenden Elementen verwendet werden.

1.1 Paket einbinden

Das Paket wird mit \usepackage{flowchart} eingebunden und bindet seinerseits die Pakete makeshape und tikz ein, sowie die tikz Bibliothek shapes ein. Das Paket verfügt zur Zeit über keine Optionen.

1.2 Symbole

Von den Pfeilen abgesehen beinhaltet das Paket fünf festgelegt Symbole. Die Symbole werden unter anderem auch als Elemente, Sinnbilder beziehungsweise Figuren bezeichnet.

Terminal Symbol Flowchart Beispiel in TikZ LaTeX terminal Ein Haltepunkt im Flussdiagramm, dabei kann es sich um einen Start- beziehungsweise Endpunkt handeln, oder um eine Halt beziehungsweise eine Unterbrechung im Ablauf.
Unterprogramm Symbol Flowchart Beispiel in TikZ LaTeX predproc Damit werden Unterprogramme in das Diagramm eingefügt.
Verzweigungen Symbol Flowchart Beispiel in TikZ LaTeX decision Dieses Element dient dazu Verzweigungen beziehungsweise Entscheidungen darzustellen.
Operation Symbol Flowchart Beispiel in TikZ LaTeX process Beschreibt eine Tätigkeit.
Speicher Symbol Flowchart Beispiel in TikZ LaTeX storage Ein- oder Ausgabe jede Art von Speicher.

Die einzelnen Symbole werden mithilfe des \node Befehls innerhalb einer tikzpicture Umgebung angeordnet.

\node (Knoten) at (X,Y) [draw, SYMBOL, weitere Optionen] {Inhalt};

Über die weiteren Optionen können unter anderem eine Mindestgröße (minimum width, minimum height), die Farbe (Vorder- und Hintergrund) und die Ausrichtung des Textes festgelegt werden.

\documentclass[margin=1cm]{standalone}
\usepackage[utf8]{inputenc}
%...
\usepackage{flowchart}
%...
\begin{document}
%...
\begin{tikzpicture}[font={\sf}]
\node (startpunkt) at (0,8) [draw, terminal,
minimum width=2cm, minimum height=0.5cm, fill=red!50] {Terminal};

\node (unterprogramm) at (0,6.5) [draw, predproc, align=left,
minimum width=2cm, fill=blue!50] {Unter- \\[0.2cm] programm}; 
\node (test) at (0,4) [draw, decision,align=left,
minimum width=2cm, minimum height=1cm, fill=yellow!25] {Verzweigung};

\node (prozess) at (0,1.5) [draw, process,align=left,
minimum width=2cm,
minimum height=1cm, fill=green!30] {Operation};

\node (speicher) at (0,0) [draw, storage,
minimum width=2cm,
minimum height=1cm, fill=brown!20] {Speicher};
\end{tikzpicture}
%...
\end{document}
Die fünf Basis Elemente eines Flowcharts mit verschiedenen Optionen.

1.3 Beispiel

Das nachfolgende Beispiel zeigt den systematischen Ablauf einer Altersprüfung. Dazu wurden zuerst die Symbole gesetzt und am Ende die entsprechenden Pfeile eingefügt. Zusätzlich wurden zwei Hilfspunkte eingefügt um die optische Wirkung der letzten zwei Pfeil zu verbessern.

\documentclass[margin=1cm]{standalone}
\usepackage[utf8]{inputenc}
%...
\usepackage{flowchart}
%...
\begin{document}
%...
\begin{tikzpicture}[font ={\sf \small}, scale=0.75]
% Die Elemente 
 \node (start) at (0,0) [draw, terminal,
minimum width=2cm,
minimum height=0.5cm] {Start};

\node (alter) at (0,-2) [draw, predproc, align=left,
minimum width=2cm,
minimum height=1cm] {Alter \\ bestimmen};

\node (check) at (0,-5) [draw, decision,align=left,
minimum width=2cm,
minimum height=1cm] {Alter $<$ 18?};

\node (jung) at (-2,-7) [draw, process,align=left,
minimum width=2cm,
minimum height=1cm] {Zutritt \\ verweigern};

\node (alt) at (2,-7) [draw, process,align=left,
minimum width=2cm,
minimum height=1cm] {Zutritt \\ gewähren};

 \node (stop) at (0,-9) [draw, terminal,
minimum width=2cm,
minimum height=0.5cm] {Stop};

% Hilfspunkte 
\coordinate (point1) at (-2,-9) {};
\coordinate (point2) at (2,-9) {};

%Pfeile
\draw[->] (start) -- (alter);
\draw[->] (alter) -- (check);
\draw[->] (check) -| node[above]{Ja} (jung);
\draw[->] (check) -| node[above]{Nein} (alt);

\draw[->] (jung) -- (point1) -- (stop);
\draw[->] (alt) -- (point2) -- (stop);

\end{tikzpicture}
%...
\end{document}
Altersprüfung als Flowchart Diagramm in LaTeX gesetzt.

2. Mehr Symbole

Neben den fünf im flowchart Paket enthaltenen Symbolen werden viele weitere im Alltag verwendet. Am einfachsten lassen sich all jene Symbole umsetzen bei denen es bereits die passende geometrische Form (shape) als fertigen Befehl gibt. Standardmäßig sind nur Rechtecke und Kreise in tikz direkt verfügbar. Durch das Einbinden von zusätzlichen Bibliotheken wie shapes.geometric, shapes.symbols und shapes.misc lässt sich die nutzbare Anzahl an geometrischen Formen deutlich erhöhen. Die nachfolgende Tabelle beinhaltet mehrere Beispiele für zusätzliche flowchart Symbole. Das komplett Beispiel ist im Anhang.

2.1 neue Symbole erstellen

SymbolBeschreibungBibliothekDefinition
Input Output Symbol Flowchart Beispiel in TikZ LaTeX input
Ein- und Ausgabe von Daten.
shapes.geometric
\tikzset{ input/.style={
        draw,
        fill=olive!30,
        trapezium,
        trapezium left angle=60,
        trapezium right angle=120,
        align=left
    }
}
Preparation Symbol Flowchart Beispiel in TikZ LaTeX preparation
Vorbereitung. Arbeitsschritte die vor der tatsächlichen Arbeit stattfinden.
shapes.misc
\tikzset{
preparation/.style={
        draw,
        fill=magenta!30,
        chamfered rectangle,
        chamfered rectangle xsep=2cm,
        align=left
    }
}
Document Symbol Flowchart Beispiel in TikZ LaTeX document
Stellt die Eingabe oder Ausgabe eines Dokuments dar.
shapes.symbols
\tikzset{
document/.style={ 
        draw,
        fill=lime!50,
        tape,
        tape bend top=none,
        align=left
    }
}
Manual Operation Symbol Flowchart Beispiel in TikZ LaTeX manual operation
Dieser Arbeitsschritt erfolgt manuell.
shapes.geometric
\tikzset{
manualop/.style={
        draw,
        fill=orange!50,
        trapezium,
        shape border rotate=180,
        text width=2cm,
        align=center
    }
}
Connector Symbol Flowchart Beispiel in TikZ LaTeX connector
Verbindet verschiedene Elemente miteinander.
--
\tikzset{
connection/.style={
        draw,
        fill=yellow!50,
        circle,
        radius=5pt,
        align=center
    }
}
Merge Symbol Flowchart Beispiel in TikZ LaTeX merge
Kombiniert mehrere Pfade zu einem einzigen.
--
\tikzset{
merge/.style={
        draw,
        fill=cyan!30,
        isosceles triangle,
        isosceles triangle apex angle=60,
        shape border rotate=-90,
        align=center
    }
}

Literatur

[1]
The flowchart package Flowchart Shapes for TikZ, Adrian P. Robson, 19 March 2015

Anhang

\documentclass[margin=1cm]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric,shapes.symbols,shapes.misc}

\tikzset{
    input/.style={ 
        draw,
        fill=olive!30,
        trapezium,
        trapezium left angle=60,
        trapezium right angle=120,
        align=left
    },
    preparation/.style={ 
        draw,
        fill=magenta!30,
        chamfered rectangle,
        chamfered rectangle xsep=2cm,
        align=left
    },
    document/.style={ 
        draw,
        fill=lime!50,
        tape,
        tape bend top=none,
        align=left
    },
    manualop/.style={ 
        draw,
        fill=orange!50,
        trapezium,
        shape border rotate=180,
        text width=2cm,
        align=center,
    },
    connection/.style={
        draw,
        fill=yellow!50,
        circle,
        radius=5pt,
        align=center
    },
    merge/.style={
        draw,
        fill=cyan!30,
        isosceles triangle,
        isosceles triangle apex angle=60,
        shape border rotate=-90,
        align=center
    },
}

\begin{document}
\begin{tikzpicture}[font={\sf}]
\node[input] (input) at (0,7.5) {Input};
\node[preparation] (preparation) at (0,6) {Preparation};
\node[document] (document) at (0,4.5) {Document};
\node[manualop] (manualop) at (0,3) {Manual Operation};
\node[connection] (connection) at (0,1.5) {A};
\node[merge] at (0,0) (merge) {Merge};
\end{tikzpicture}
\end{document}
Neue Flowchart Symbole