summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/gu
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/gu
Initial commit
Diffstat (limited to 'macros/latex/contrib/gu')
-rw-r--r--macros/latex/contrib/gu/README31
-rw-r--r--macros/latex/contrib/gu/gu.sty958
-rw-r--r--macros/latex/contrib/gu/gudemo.tex480
-rw-r--r--macros/latex/contrib/gu/gudoc.pdfbin0 -> 766552 bytes
-rw-r--r--macros/latex/contrib/gu/gudoc.tex1204
5 files changed, 2673 insertions, 0 deletions
diff --git a/macros/latex/contrib/gu/README b/macros/latex/contrib/gu/README
new file mode 100644
index 0000000000..14ce71173c
--- /dev/null
+++ b/macros/latex/contrib/gu/README
@@ -0,0 +1,31 @@
+gu.sty - Gruppe-Untergruppe-Stammbäume setzen
+
+(Note for English speaking users: see further down for an English version of
+this summary.)
+
+Das Paket gu.sty erleichtert das Setzen von einfachen kristallographischen
+Gruppe-Untergruppe-Schemata im Bärnighausen-Formalismus und/oder
+Lagenfortführungstabellen. Die einzelnen Elemente und Abstände werden
+innerhalb einer neuen Umgebung namens "stammbaum" mittels vorgegebener
+Kommandos definiert. Anschließend werden alle Abstände automatisch berechnet
+und der Stammbaum und/oder die Tabellen ausgegeben. Momentan werden maximal
+zwei Abstiegsschritte unterstützt, eine Erweiterung ist aber relativ
+problemlos möglich. Für Einzelheiten und Dokumentation siehe gudoc.pdf.
+Dieses Paket unterliegt der LaTeX Project Public License, siehe
+http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html für nähere
+Details. Copyright (C) 2006, 2007 Stefan Lange
+
+
+The aim of the package gu.sty is to simplify typesetting of simple
+crystallographic group-subgroup-schemes in the Bärnighausen formalism. It
+defines a new environment "stammbaum", wherein all elements of the scheme
+are defined. Afterwards all necessary dimensions are calculated and the
+scheme is drawn. Currently two steps of symmetry reduction are supported.
+Further documentation is currently only available in German in the file
+gudoc.pdf.
+
+This material is subject to the LaTeX Project Public License. See
+http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html for the
+details of that license.
+
+Copyright (C) 2006, 2007 Stefan Lange \ No newline at end of file
diff --git a/macros/latex/contrib/gu/gu.sty b/macros/latex/contrib/gu/gu.sty
new file mode 100644
index 0000000000..a2b9c771f7
--- /dev/null
+++ b/macros/latex/contrib/gu/gu.sty
@@ -0,0 +1,958 @@
+% This is `gu.sty'
+% Copyright (C) 2006 Stefan Lange, all rights reserved.
+%
+% This package may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2003/12/01 or later.
+%
+%
+% Changelog:
+% 2006-11-20: erste veröffentlichte Version
+% 2006-12-02: kleiner Bugfix (Pfeile rechts wurden bei
+% rblock{eins,zwei,drei}deltax != 0 nicht richtig verschoben)
+% 2007-01-19: weiterer Bugfix: Pfeile von rechts-oben nach links-unten
+% wurden nicht richtig berechnet
+%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{gu}[2007/01/19 Gruppe-Untergruppe-Stammbaeume]
+\typeout{gu.sty, Version 2007-01-19, Paket zum Setzen von
+Gruppe-Untergruppe-Stammbaeumen im Baernighausen-Formalismus}
+\typeout{Copyright (C) 2006, 2007 Stefan Lange}
+\DeclareOption{dvips}{\PassOptionsToPackage{\CurrentOption}{pict2e}}
+\DeclareOption{xdvi}{\PassOptionsToPackage{\CurrentOption}{pict2e}}
+\DeclareOption{pdftex}{\PassOptionsToPackage{\CurrentOption}{pict2e}}
+\DeclareOption{vtex}{\PassOptionsToPackage{\CurrentOption}{pict2e}}
+\DeclareOption{dvipdfm}{\PassOptionsToPackage{\CurrentOption}{pict2e}}
+\DeclareOption{ltxarrows}{\PassOptionsToPackage{\CurrentOption}{pict2e}}
+\DeclareOption{pstarrows}{\PassOptionsToPackage{\CurrentOption}{pict2e}}
+\ProcessOptions\relax
+
+
+\RequirePackage{array}
+\RequirePackage{tabularx}
+\RequirePackage{pict2e}
+\RequirePackage{calc}[2005/08/06] % Infix-Notation für Rechnungen mit Längeneinheiten
+\RequirePackage{fp} % Gleitkomma-Berechnungen
+\RequirePackage{ifthen} % Verzweigungen
+
+\newcolumntype{z}{>{\centering\arraybackslash}X} % zentrierte Spalten
+ % mit fester Breite
+
+\newlength{\@tempvar} % Temporäre Variable
+
+\newboolean{@randbox}
+\newboolean{@lleinsvorhanden}
+\newboolean{@llzweivorhanden}
+\newboolean{@lpeinsvorhanden}
+\newboolean{@lpzweivorhanden}
+\newboolean{@lblockeinsvorhanden}
+\newboolean{@lblockzweivorhanden}
+\newboolean{@lblockdreivorhanden}
+\newboolean{@lseinsvorhanden}
+\newboolean{@lszweivorhanden}
+\newboolean{@rblockeinsvorhanden}
+\newboolean{@rblockzweivorhanden}
+\newboolean{@rblockdreivorhanden}
+\newboolean{@rseinsvorhanden}
+\newboolean{@rszweivorhanden}
+\newboolean{@rpeinsvorhanden}
+\newboolean{@rpzweivorhanden}
+\newboolean{@abstiegeinsvertzentr}
+\newboolean{@abstiegzweivertzentr}
+\newboolean{@kollisiono}
+\newboolean{@kollisionu}
+\newboolean{@kollisionl}
+\newboolean{@kollisionr}
+
+\newcommand{\@variableninitialisieren}{
+\setboolean{@randbox}{false}
+\setboolean{@lleinsvorhanden}{false}
+\setboolean{@llzweivorhanden}{false}
+\setboolean{@lpeinsvorhanden}{false}
+\setboolean{@lpzweivorhanden}{false}
+\setboolean{@lblockeinsvorhanden}{false}
+\setboolean{@lblockzweivorhanden}{false}
+\setboolean{@lblockdreivorhanden}{false}
+\setboolean{@lseinsvorhanden}{false}
+\setboolean{@lszweivorhanden}{false}
+\setboolean{@rblockeinsvorhanden}{false}
+\setboolean{@rblockzweivorhanden}{false}
+\setboolean{@rblockdreivorhanden}{false}
+\setboolean{@rseinsvorhanden}{false}
+\setboolean{@rszweivorhanden}{false}
+\setboolean{@rpeinsvorhanden}{false}
+\setboolean{@rpzweivorhanden}{false}
+\setboolean{@abstiegeinsvertzentr}{false}
+\setboolean{@abstiegzweivertzentr}{true}
+\setboolean{@kollisiono}{false}
+\setboolean{@kollisionu}{false}
+\setboolean{@kollisionl}{false}
+\setboolean{@kollisionr}{false}
+
+
+\newcommand{\@rechtepfeile}{}
+\newcommand{\@lseins}{}
+\newcommand{\@lleins}{}
+\newcommand{\@lpeins}{}
+\newcommand{\@lszwei}{}
+\newcommand{\@llzwei}{}
+\newcommand{\@lpzwei}{}
+\newcommand{\@lblockeins}{}
+\newcommand{\@lblockzwei}{}
+\newcommand{\@lblockdrei}{}
+\newcommand{\@rseins}{}
+\newcommand{\@rszwei}{}
+\newcommand{\@rblockeinsdeltaxem}{}
+\newcommand{\@rblockeins}{}
+\newcommand{\@rblockzweideltaxem}{}
+\newcommand{\@rblockzwei}{}
+\newcommand{\@rblockdreideltaxem}{}
+\newcommand{\@rblockdrei}{}
+\newcommand{\spaltenbreiteem}{}
+\newcommand{\spalteneins}{}
+\newcommand{\spaltenzwei}{}
+\newcommand{\spaltendrei}{}
+\newcommand{\@lpeinsminem}{}
+\newcommand{\@lpzweiminem}{}
+\newcommand{\@lleeryem}{}
+\newcommand{\@rpeinsminem}{}
+\newcommand{\@rpzweiminem}{}
+\newcommand{\@rleeryem}{}
+\newcommand{\@leerxem}{}
+\newcommand{\@kollextrarandxem}{}
+\newcommand{\@kollextrarandyem}{}
+}
+
+
+\newcommand{\@variablenreinitialisieren}{
+\setboolean{@randbox}{false}
+\setboolean{@lleinsvorhanden}{false}
+\setboolean{@llzweivorhanden}{false}
+\setboolean{@lpeinsvorhanden}{false}
+\setboolean{@lpzweivorhanden}{false}
+\setboolean{@lblockeinsvorhanden}{false}
+\setboolean{@lblockzweivorhanden}{false}
+\setboolean{@lblockdreivorhanden}{false}
+\setboolean{@lseinsvorhanden}{false}
+\setboolean{@lszweivorhanden}{false}
+\setboolean{@rblockeinsvorhanden}{false}
+\setboolean{@rblockzweivorhanden}{false}
+\setboolean{@rblockdreivorhanden}{false}
+\setboolean{@rseinsvorhanden}{false}
+\setboolean{@rszweivorhanden}{false}
+\setboolean{@rpeinsvorhanden}{false}
+\setboolean{@rpzweivorhanden}{false}
+\setboolean{@abstiegeinsvertzentr}{false}
+\setboolean{@abstiegzweivertzentr}{true}
+\setboolean{@kollisiono}{false}
+\setboolean{@kollisionu}{false}
+\setboolean{@kollisionl}{false}
+\setboolean{@kollisionr}{false}
+
+\renewcommand{\@rechtepfeile}{}
+\renewcommand{\@lseins}{}
+\renewcommand{\@lleins}{}
+\renewcommand{\@lpeins}{}
+\renewcommand{\@lszwei}{}
+\renewcommand{\@llzwei}{}
+\renewcommand{\@lpzwei}{}
+\renewcommand{\@lblockeins}{}
+\renewcommand{\@lblockzwei}{}
+\renewcommand{\@lblockdrei}{}
+\renewcommand{\@rseins}{}
+\renewcommand{\@rszwei}{}
+\renewcommand{\@rblockeinsdeltaxem}{}
+\renewcommand{\@rblockeins}{}
+\renewcommand{\@rblockzweideltaxem}{}
+\renewcommand{\@rblockzwei}{}
+\renewcommand{\@rblockdreideltaxem}{}
+\renewcommand{\@rblockdrei}{}
+\renewcommand{\spaltenbreiteem}{}
+\renewcommand{\spalteneins}{}
+\renewcommand{\spaltenzwei}{}
+\renewcommand{\spaltendrei}{}
+\renewcommand{\@lpeinsminem}{}
+\renewcommand{\@lpzweiminem}{}
+\renewcommand{\@lleeryem}{}
+\renewcommand{\@rpeinsminem}{}
+\renewcommand{\@rpzweiminem}{}
+\renewcommand{\@rleeryem}{}
+\renewcommand{\@leerxem}{}
+\renewcommand{\@kollextrarandxem}{}
+\renewcommand{\@kollextrarandyem}{}
+}
+
+\newcommand{\@umrechnen}[2]{ % aufrufen mit \@umrechnen{\laenge}{\variable}
+\setlength{\@tempvar}{#1} % rechnet \laenge in sp um und speichert das
+\FPset{#2}{\number\@tempvar} % Ergebnis in \variable
+}
+
+\newcommand{\rpfeileinszwei}[2]{%
+%
+% aufrufen mit \rpfeileinszwei{startkastennr}{endkastennr}
+%
+% Pfeillängen rechts (Länge bezieht sich auf die y-Komponente)
+%
+\ifthenelse{\boolean{@rpeinsvorhanden}}{
+%
+% Berechnung x-Werte der Pfeile rechts
+\FPeval\@rleinsx{\@rblockeinsx+(({#1}-0.5)*\@spaltenbreite)+0.5*\@rblockeinsdeltax}
+% Die Steigung für die nicht-vertikalen Pfeile
+\FPeval\@rpstx{round(({#2}-{#1})*\@spaltenbreite+\@rblockzweideltax-\@rblockeinsdeltax,0)} % Steigungskomponente 1: x
+\FPeval\@rpsty{round(2*\@rpeinsh+\@rseinsh,0)} % Steigungskomponente 2: y
+% Wertebereich der Steigungskomponenten ist nur -1000..+1000
+% so oft durch 10 teilen und runden, bis diese Bedingung erfüllt ist
+%
+\whiledo{\@rpstx > 1000 \OR \@rpstx<-1000 \OR \@rpsty > 1000 \OR \@rpsty < -1000}{
+\FPeval\@rpstx{round(\@rpstx/10,0)}
+\FPeval\@rpsty{round(\@rpsty/10,0)}
+}
+% Die Pfeillänge für schräge Pfeile berechnet sich dadurch automatisch:
+\FPifeq{\@rpstx}{0}
+\FPeval\@rplaenge{\@rpeinsh}
+\else
+\FPeval\@rplaenge{abs(\@rpstx/\@rpsty*\@rpeinsh)} % Pfeillänge
+\fi
+%
+% Koordinaten der restlichen Elemente
+%
+\FPifeq{\@rpstx}{0}
+\FPset\@rpeinsx{\@rleinsx}
+\else
+% \@rplaenge muss mit dem Vorzeichen von \@rpstx multipliziert werden,
+% sonst stimmt die Berechung für schräg von rechts oben nach links unten
+% verlaufende unterbrochene Pfeile nicht! (siehe Bugreport von Leimi)
+% Das Vorzeichen wird durch (\@rpstx/abs(\@rpstx)) bestimmt
+% auch bei Kollisionskontrolle!
+\FPeval\@rpeinsx{\@rleinsx+(\@rpstx/abs(\@rpstx))*\@rplaenge+(\@rseinsh*\@rpstx/\@rpsty)}
+\fi
+
+% Schneidet der Pfeil die Box der Transformationsmatrix?
+% Den ganzen Scheiß nur durchnudeln, wenns überhaupt ein rseins gibt
+\ifthenelse{\boolean{@rseinsvorhanden}}{
+% Fall 1: Schneiden von Ober- oder Unterkante der Box
+% x-Wert berechnen, für y=Oben, Unten der Transformations-Box
+\FPifeq{\@rpstx}{0}
+\FPeval\@kollisionxo{round(\@rleinsx,0)}
+\FPset\@kollisionxu{\@kollisionxo}
+\else
+\FPeval\@kollisionxo{round(\@rleinsx+(\@rpstx/abs(\@rpstx))*\@rplaenge,0)}
+\FPeval\@kollisionxu{round(\@rleinsx+(\@rpstx/abs(\@rpstx))*\@rplaenge+(\@rseinsh*\@rpstx/\@rpsty),0)}
+\fi
+
+% Fall 2: Schneiden von linker oder rechter Kante der Box
+% y-Wert für x=rseinsx
+\FPifeq{\@rpstx}{0}
+{} % nix tun, macht keinen Sinn bei senkrechtem Pfeil
+\else
+\FPeval\@kollisionyl{round(
+(\@rseinsy+\@rseinsh)-(\@rpsty/\@rpstx*(\@rseinsx-(\@rleinsx+(\@rpstx/abs(\@rpstx))*\@rplaenge)))
+,0)}
+% y-Wert für x=rseinsx+rseinsb
+\FPeval\@kollisionyr{round(
+(\@rseinsy+\@rseinsh)-(\@rpsty/\@rpstx*(\@rseinsx+\@rseinsb-(\@rleinsx+(\@rpstx/abs(\@rpstx))*\@rplaenge)))
+,0)}
+\fi
+
+% Kollision ist dann, wenn kollisionxo oder u zwischen \@rseinsx und
+% \@rseinsx+\rtanseinsb liegt incl. evtl.-feintuning
+\FPeval\@kollxuntergr{round(\@rseinsx-\@kollextrarandx,0)}
+\FPeval\@kollxobergr{round(\@rseinsx+\@rseinsb+\@kollextrarandx,0)}
+
+\ifthenelse{\@kollisionxo > \@kollxuntergr \AND \@kollisionxo < \@kollxobergr}
+{\setboolean{@kollisiono}{true}}{}
+\ifthenelse{\@kollisionxu > \@kollxuntergr \AND \@kollisionxu < \@kollxobergr}
+{\setboolean{@kollisionu}{true}}{}
+
+% Kollision ist auch, wenn kollisionyl oder r zwischen rseinsy und
+% rseinsy+rseinsh liegen (incl. evtl Koll.-feintuning)
+%
+% Für senkrechte Pfeile macht diese Abfrage keinen Sinn, in diesem Fall
+% bleibt alles auf false, also nur für rpstx!=0 testen
+\FPifeq{\@rpstx}{0}
+{} % nix tun
+\else
+\FPeval\@kollyuntergr{round(\@rseinsy-\@kollextrarandy,0)}
+\FPeval\@kollyobergr{round(\@rseinsy+\@rseinsh+\@kollextrarandy,0)}
+\ifthenelse{\@kollisionyl > \@kollyuntergr \AND \@kollisionyl < \@kollyobergr}
+{\setboolean{@kollisionl}{true}}{}
+\ifthenelse{\@kollisionyr > \@kollyuntergr \AND \@kollisionyl < \@kollyobergr}
+{\setboolean{@kollisionr}{true}}{}
+\fi
+} % Ende if-Block rseinsvorhanden: Kollisionskontrolle
+{}
+
+\ifthenelse{\boolean{@kollisiono} \OR \boolean{@kollisionu} \OR
+\boolean{@kollisionl} \OR \boolean{@kollisionr}}
+{
+% zeichnen
+\put(\@rleinsx,\@rleinsy){%
+\line(\@rpstx,-\@rpsty){\@rplaenge}%
+}
+\put(\@rpeinsx,\@rpeinsy){%
+\vector(\@rpstx,-\@rpsty){\@rplaenge}%
+}
+% für nächsten Pfeil wieder alles auf false setzen
+\setboolean{@kollisiono}{false}
+\setboolean{@kollisionu}{false}
+\setboolean{@kollisionl}{false}
+\setboolean{@kollisionr}{false}
+}
+% ansonsten einfach durchgehenden Pfeil zeichnen
+{
+\FPifeq{\@rpstx}{0}
+\FPeval\@rplaenge{2*\@rplaenge+\@rseinsh}
+\else
+% Absolutbetrag! (bugreport Leimi)
+\FPeval\@rplaenge{2*\@rplaenge+abs((\@rseinsh*\@rpstx/\@rpsty))}
+\fi
+\put(\@rleinsx,\@rleinsy){%
+\vector(\@rpstx,-\@rpsty){\@rplaenge}%
+}
+}
+}{}
+}
+
+\newcommand{\rpfeilzweidrei}[2]{%
+%
+% aufrufen mit \rpfeilzweidrei{startkastennr}{endkastennr}
+%
+% Pfeillängen rechts (Länge bezieht sich auf die y-Komponente)
+%
+\ifthenelse{\boolean{@rpzweivorhanden}}{
+%
+% Berechnung x-Werte der Pfeile rechts
+\FPeval\@rlzweix{\@rblockzweix+(({#1}-0.5)*\@spaltenbreite)+0.5*\@rblockzweideltax}
+% Die Steigung für die nicht-vertikalen Pfeile
+\FPeval\@rpstx{round(({#2}-{#1})*\@spaltenbreite+\@rblockdreideltax-\@rblockzweideltax,0)} % Steigungskomponente 1: x
+\FPeval\@rpsty{round(2*\@rpzweih+\@rszweih,0)} % Steigungskomponente 2: y
+
+% Wertebereich der Steigungskomponenten ist nur -1000..+1000
+% so oft durch 10 teilen und runden, bis diese Bedingung erfüllt ist
+%
+\whiledo{\@rpstx > 1000 \OR \@rpstx<-1000 \OR \@rpsty > 1000 \OR \@rpsty < -1000}{
+\FPeval\@rpstx{round(\@rpstx/10,0)}
+\FPeval\@rpsty{round(\@rpsty/10,0)}
+}
+% Die Pfeillänge für schräge Pfeile berechnet sich dadurch automatisch:
+\FPifeq{\@rpstx}{0}
+\FPeval\@rplaenge{\@rpzweih}
+\else
+\FPeval\@rplaenge{abs(\@rpstx/\@rpsty*\@rpzweih)} % Pfeillänge
+\fi
+%
+% Koordinaten der restlichen Elemente
+%
+\FPifeq{\@rpstx}{0}
+\FPset\@rpzweix{\@rlzweix}
+\else
+% \@rplaenge muss mit dem Vorzeichen von \@rpstx multipliziert werden,
+% sonst stimmt die Berechung für schräg von rechts oben nach links unten
+% verlaufende unterbrochene Pfeile nicht! (siehe Bugreport von Leimi)
+% Das Vorzeichen wird durch (\@rpstx/abs(\@rpstx)) bestimmt
+% auch bei Kollisionskontrolle!
+\FPeval\@rpzweix{\@rlzweix+(\@rpstx/abs(\@rpstx))*\@rplaenge+(\@rszweih*\@rpstx/\@rpsty)}
+\fi
+% Schneidet der Pfeil die Box der Transformationsmatrix?
+% Den ganzen Scheiß nur durchnudeln, wenns überhaupt ein rszwei gibt
+\ifthenelse{\boolean{@rszweivorhanden}}{
+% Fall 1: Schneiden von Ober- oder Unterkante der Box
+% x-Wert berechnen, für y=Oben, Unten der Transformations-Box
+\FPifeq{\@rpstx}{0}
+\FPeval\@kollisionxo{round(\@rlzweix,0)}
+\FPset\@kollisionxu{\@kollisionxo}
+\else
+\FPeval\@kollisionxo{round(\@rlzweix+(\@rpstx/abs(\@rpstx))*\@rplaenge,0)}
+\FPeval\@kollisionxu{round(\@rlzweix+(\@rpstx/abs(\@rpstx))*\@rplaenge+(\@rszweih*\@rpstx/\@rpsty),0)}
+\fi
+
+% Fall 2: Schneiden von linker oder rechter Kante der Box
+% y-Wert für x=rszweix
+\FPifeq{\@rpstx}{0}
+{} % nix tun, macht keinen Sinn bei senkrechtem Pfeil
+\else
+\FPeval\@kollisionyl{round(
+(\@rszweiy+\@rszweih)-(\@rpsty/\@rpstx*(\@rszweix-(\@rlzweix+(\@rpstx/abs(\@rpstx))*\@rplaenge)))
+,0)}
+% y-Wert für x=rszweix+rszweib
+\FPeval\@kollisionyr{round(
+(\@rszweiy+\@rszweih)-(\@rpsty/\@rpstx*(\@rszweix+\@rszweib-(\@rlzweix+(\@rpstx/abs(\@rpstx))*\@rplaenge)))
+,0)}
+\fi
+
+% Kollision ist dann, wenn kollisionxo oder u zwischen \@rszweix und
+% \@rszweix+\rtanszweib liegt incl. evtl.-feintuning
+\FPeval\@kollxuntergr{round(\@rszweix-\@kollextrarandx,0)}
+\FPeval\@kollxobergr{round(\@rszweix+\@rszweib+\@kollextrarandx,0)}
+
+\ifthenelse{\@kollisionxo > \@kollxuntergr \AND \@kollisionxo < \@kollxobergr}
+{\setboolean{@kollisiono}{true}}{}
+\ifthenelse{\@kollisionxu > \@kollxuntergr \AND \@kollisionxu < \@kollxobergr}
+{\setboolean{@kollisionu}{true}}{}
+
+% Kollision ist auch, wenn kollisionyl oder r zwischen rszweiy und
+% rszweiy+rszweih liegen (incl. evtl Koll.-feintuning)
+%
+% Für senkrechte Pfeile macht diese Abfrage keinen Sinn, in diesem Fall
+% bleibt alles auf false, also nur für rpstx!=0 testen
+\FPifeq{\@rpstx}{0}
+{} % nix tun
+\else
+\FPeval\@kollyuntergr{round(\@rszweiy-\@kollextrarandy,0)}
+\FPeval\@kollyobergr{round(\@rszweiy+\@rszweih+\@kollextrarandy,0)}
+\ifthenelse{\@kollisionyl > \@kollyuntergr \AND \@kollisionyl < \@kollyobergr}
+{\setboolean{@kollisionl}{true}}{}
+\ifthenelse{\@kollisionyr > \@kollyuntergr \AND \@kollisionyl < \@kollyobergr}
+{\setboolean{@kollisionr}{true}}{}
+\fi
+} % Ende if-Block rszweivorhanden: Kollisionskontrolle
+{}
+\ifthenelse{\boolean{@kollisiono} \OR \boolean{@kollisionu} \OR
+\boolean{@kollisionl} \OR \boolean{@kollisionr}}
+{
+% zeichnen
+\put(\@rlzweix,\@rlzweiy){%
+\line(\@rpstx,-\@rpsty){\@rplaenge}%
+}
+\put(\@rpzweix,\@rpzweiy){%
+\vector(\@rpstx,-\@rpsty){\@rplaenge}%
+}
+% für nächsten Pfeil wieder alles auf false setzen
+\setboolean{@kollisiono}{false}
+\setboolean{@kollisionu}{false}
+\setboolean{@kollisionl}{false}
+\setboolean{@kollisionr}{false}
+}
+% ansonsten einfach durchgehenden Pfeil zeichnen
+{
+\FPifeq{\@rpstx}{0}
+\FPeval\@rplaenge{2*\@rplaenge+\@rszweih}
+\else
+% Absolutbetrag! (bugreport Leimi)
+\FPeval\@rplaenge{2*\@rplaenge+abs((\@rszweih*\@rpstx/\@rpsty))}
+\fi
+\put(\@rlzweix,\@rlzweiy){%
+\vector(\@rpstx,-\@rpsty){\@rplaenge}%
+}
+}
+}{}
+}
+
+
+\newcommand{\rechtspfeilsetup}[1]{
+\renewcommand{\@rechtepfeile}{#1}
+}
+
+\newcommand{\labstiegeins}[1]{
+\renewcommand{\@lseins}{#1}
+\@umrechnen{\widthof{\@lseins}}{\@lseinsb} % links, Symbol 1
+\@umrechnen{\totalheightof{\fbox{\@lseins}}}{\@lseinsh} % links, Symbol 1
+\renewcommand{\@lleins}{\line(0,-1){\@lleinsh}}
+\renewcommand{\@lpeins}{\vector(0,-1){\@lpeinsh}}
+}
+
+\newcommand{\labstiegzwei}[1]{
+\renewcommand{\@lszwei}{#1}
+\@umrechnen{\widthof{\@lszwei}}{\@lszweib} % links, Symbol 1
+\@umrechnen{\totalheightof{\fbox{\@lszwei}}}{\@lszweih} % links, Symbol 1
+\renewcommand{\@llzwei}{\line(0,-1){\@llzweih}}
+\renewcommand{\@lpzwei}{\vector(0,-1){\@lpzweih}}
+}
+
+\newcommand{\lverbindungeins}[1]{
+\renewcommand{\@lblockeins}{#1}
+\@umrechnen{\widthof{\@lblockeins}}{\@lblockeinsb}
+\@umrechnen{\totalheightof{\fbox{\@lblockeins}}}{\@lblockeinsh}
+}
+
+\newcommand{\lverbindungzwei}[1]{
+\renewcommand{\@lblockzwei}{#1}
+\@umrechnen{\widthof{\@lblockzwei}}{\@lblockzweib}
+\@umrechnen{\totalheightof{\fbox{\@lblockzwei}}}{\@lblockzweih}
+}
+
+\newcommand{\lverbindungdrei}[1]{
+\renewcommand{\@lblockdrei}{#1}
+\@umrechnen{\widthof{\@lblockdrei}}{\@lblockdreib}
+\@umrechnen{\totalheightof{\fbox{\@lblockdrei}}}{\@lblockdreih}
+}
+
+\newcommand{\rlagentranseins}[1]{
+\renewcommand{\@rseins}{#1}
+\@umrechnen{\widthof{\@rseins}}{\@rseinsb} % rechts, Matrix 1
+\@umrechnen{\totalheightof{\fbox{\@rseins}}}{\@rseinsh} % rechts, Matrix 1
+}
+
+\newcommand{\rlagentranszwei}[1]{
+\renewcommand{\@rszwei}{#1}
+\@umrechnen{\widthof{\@rszwei}}{\@rszweib} % rechts, Matrix 1
+\@umrechnen{\totalheightof{\fbox{\@rszwei}}}{\@rszweih} % rechts, Matrix 1
+}
+
+\newcommand{\rlagentabelleeins}[1]{
+\renewcommand{\@rblockeins}{#1}
+\@umrechnen{\widthof{\@rblockeins}+\@rblockeinsdeltaxem}{\@rblockeinsb} % rechts, Tabelle 1
+\@umrechnen{\totalheightof{\@rblockeins}}{\@rblockeinsh}
+}
+
+\newcommand{\rlagentabellezwei}[1]{
+\renewcommand{\@rblockzwei}{#1}
+\@umrechnen{\widthof{\@rblockzwei}+\@rblockzweideltaxem}{\@rblockzweib} % rechts, Tabelle 1
+\@umrechnen{\totalheightof{\@rblockzwei}}{\@rblockzweih}
+}
+
+\newcommand{\rlagentabelledrei}[1]{
+\renewcommand{\@rblockdrei}{#1}
+\@umrechnen{\widthof{\@rblockdrei}+\@rblockdreideltaxem}{\@rblockdreib} % rechts, Tabelle 1
+\@umrechnen{\totalheightof{\@rblockdrei}}{\@rblockdreih}
+}
+
+\newcommand{\setuprlagentabellen}[7]{
+\renewcommand{\spaltenbreiteem}{#1} % Spaltenbreite, bei Bedarf anpassen
+\renewcommand{\spalteneins}{#2} % Anzahl der Spalten von Tab. 1
+\renewcommand{\spaltenzwei}{#3} % Anzahl der Spalten von Tab. 2
+\renewcommand{\spaltendrei}{#4} % Anzahl der Spalten von Tab. 3
+\@umrechnen{\spaltenbreiteem}{\@spaltenbreite}
+\renewcommand{\@rblockeinsdeltaxem}{#5}
+\@umrechnen{\@rblockeinsdeltaxem}{\@rblockeinsdeltax}
+\renewcommand{\@rblockzweideltaxem}{#6}
+\@umrechnen{\@rblockzweideltaxem}{\@rblockzweideltax}
+\renewcommand{\@rblockdreideltaxem}{#7}
+\@umrechnen{\@rblockdreideltaxem}{\@rblockdreideltax}
+}
+
+\newcommand{\setuplinks}[8]{
+\setboolean{@lblockeinsvorhanden}{#1}
+\renewcommand{\@lpeinsminem}{#2} % Mindestlänge Pfeile/Linien links 1
+\setboolean{@lseinsvorhanden}{#3}
+\setboolean{@lblockzweivorhanden}{#4}
+\renewcommand{\@lpzweiminem}{#5} % Mindestlänge Pfeile/Linien links 2
+\setboolean{@lszweivorhanden}{#6}
+\setboolean{@lblockdreivorhanden}{#7}
+\renewcommand{\@lleeryem}{#8} % vertikale Abstände, linke Spalte
+\@umrechnen{\@lpeinsminem}{\@lpeinsmin} % Mindestlänge Linie/Pfeil1 links, in sp
+\@umrechnen{\@lpzweiminem}{\@lpzweimin} % Mindestlänge Linie/Pfeil2 links, in sp
+\@umrechnen{\@lleeryem}{\@lleery} % links, Abstände in y, in sp
+\ifthenelse{\NOT \@lpeinsmin > 0}{
+\setboolean{@lleinsvorhanden}{false}
+\setboolean{@lpeinsvorhanden}{false}}{
+\setboolean{@lleinsvorhanden}{true}
+\setboolean{@lpeinsvorhanden}{true}
+}
+\ifthenelse{\NOT \@lpzweimin > 0}{
+\setboolean{@llzweivorhanden}{false}
+\setboolean{@lpzweivorhanden}{false}}{
+\setboolean{@llzweivorhanden}{true}
+\setboolean{@lpzweivorhanden}{true}
+}
+}
+
+\newcommand{\setuprechts}[8]{
+\setboolean{@rblockeinsvorhanden}{#1}
+\renewcommand{\@rpeinsminem}{#2}
+\setboolean{@rseinsvorhanden}{#3}
+\setboolean{@rblockzweivorhanden}{#4}
+\renewcommand{\@rpzweiminem}{#5}
+\setboolean{@rszweivorhanden}{#6}
+\setboolean{@rblockdreivorhanden}{#7}
+\renewcommand{\@rleeryem}{#8}
+\@umrechnen{\@rpeinsminem}{\@rpeinsmin} % rechts, Pfeilhöhen/längen, in sp
+\@umrechnen{\@rpzweiminem}{\@rpzweimin} % rechts, Pfeilhöhen/längen, in sp
+\@umrechnen{\@rleeryem}{\@rleery} % rechts, Abstände in y, in sp
+\ifthenelse{\NOT \@rpeinsmin > 0}{
+\setboolean{@rpeinsvorhanden}{false}
+}{
+\setboolean{@rpeinsvorhanden}{true}
+}
+\ifthenelse{\NOT \@rpzweimin > 0}{
+\setboolean{@rpzweivorhanden}{false}
+}{
+\setboolean{@rpzweivorhanden}{true}
+}
+}
+
+\newcommand{\setupdivers}[6]{
+\renewcommand{\@leerxem}{#1} % horizontaler Abstand der beiden Spalten
+\@umrechnen{\@leerxem}{\@leerx} % Abstand links <-> rechts, in sp
+\renewcommand{\@kollextrarandxem}{#2} % Extraabstand x für Kollisionskontrolle
+\@umrechnen{\@kollextrarandxem}{\@kollextrarandx}
+\renewcommand{\@kollextrarandyem}{#3} % Extraabstand y für Kollisionskontrolle
+\@umrechnen{\@kollextrarandyem}{\@kollextrarandy}
+\setboolean{@abstiegeinsvertzentr}{#4}
+\setboolean{@abstiegzweivertzentr}{#5}
+\setboolean{@randbox}{#6}
+}
+
+% schöne inline-Brüche
+\providecommand{\nfrac}[2]{\leavevmode\kern.1em%
+\raise.5ex\hbox{\scriptsize #1}%
+\kern-.1em/\kern-.15em%
+\lower.25ex\hbox{\scriptsize #2}}
+% Ein paar Abkürzungen für häufige Brüche
+\providecommand{\eh}{\ensuremath{\nfrac{1}{2}}}
+\providecommand{\ed}{\ensuremath{\nfrac{1}{3}}}
+\providecommand{\ev}{\ensuremath{\nfrac{1}{4}}}
+\providecommand{\es}{\ensuremath{\nfrac{1}{6}}}
+\providecommand{\zd}{\ensuremath{\nfrac{2}{3}}}
+\providecommand{\dv}{\ensuremath{\nfrac{3}{4}}}
+\providecommand{\fs}{\ensuremath{\nfrac{5}{6}}}
+\providecommand{\ea}{\ensuremath{\nfrac{1}{8}}}
+\providecommand{\da}{\ensuremath{\nfrac{3}{8}}}
+\providecommand{\fa}{\ensuremath{\nfrac{5}{8}}}
+\providecommand{\sa}{\ensuremath{\nfrac{7}{8}}}
+
+
+\newcommand{\@abmessungenaufnullsetzen}{
+%
+% Abmessungen für alle Elemente links auf 0 setzen:
+\FPset\@lblockeinsh{0}
+\FPset\@lblockeinsb{0}
+\FPset\@lseinsh{0}
+\FPset\@lseinsb{0}
+\FPset\@lblockzweih{0}
+\FPset\@lblockzweib{0}
+\FPset\@lszweih{0}
+\FPset\@lszweib{0}
+\FPset\@lblockdreih{0}
+\FPset\@lblockdreib{0}
+% Abmessungen für alle Elemente rechts auf 0 setzen:
+\FPset\@rblockeinsh{0}
+\FPset\@rblockeinsb{0}
+\FPset\@rblockeinsdeltax{0}
+\FPset\@rblockzweih{0}
+\FPset\@rblockzweib{0}
+\FPset\@rblockzweideltax{0}
+\FPset\@rblockdreih{0}
+\FPset\@rblockdreib{0}
+\FPset\@rblockdreideltax{0}
+\FPset\@rseinsh{0}
+\FPset\@rseinsb{0}
+\FPset\@rszweih{0}
+\FPset\@rszweib{0}
+}
+
+\@variableninitialisieren
+\@abmessungenaufnullsetzen
+
+\newcommand{\@guberechnenundzeichnen}{
+\setlength{\unitlength}{1sp} % scaled point (kleinstmögliche Einheit von TeX)
+%
+% Bestimmung maximale Breite links
+\FPeval\@lmaxb{max(\@lblockeinsb,\@lseinsb)}
+\FPeval\@lmaxb{max(\@lmaxb,\@lblockzweib)}
+\FPeval\@lmaxb{max(\@lmaxb,\@lszweib)}
+\FPeval\@lmaxb{max(\@lmaxb,\@lblockdreib)}
+% -> \@lmaxb ist nun die maximale Breite in der linken Spalte in sp
+
+% Bestimmung maximale Breite rechts
+\FPeval\@rmaxb{max(\@rblockeinsb,\@rblockzweib)}
+\FPeval\@rmaxb{max(\@rmaxb,\@rblockdreib)}
+% -> \@rmaxb ist nun die maximale Breite in der rechten Spalte in sp
+
+% Gesamtbreite
+\FPeval\@maxb{\@lmaxb+\@leerx+\@rmaxb}
+
+%
+% Berechnung der Pfeillängen links und rechts
+%
+% Berechnung der Gesamthöhen von Abstieg eins und zwei
+% unter Annahme der eingegebenen Pfeilmindestlängen
+
+\FPeval\@labstiegeinsh{2*\@lleery+2*\@lpeinsmin+\@lseinsh}
+\FPeval\@rabstiegeinsh{2*\@rleery+2*\@rpeinsmin+\@rseinsh}
+\FPeval\@labstiegzweih{2*\@lleery+2*\@lpzweimin+\@lszweih}
+\FPeval\@rabstiegzweih{2*\@rleery+2*\@rpzweimin+\@rszweih}
+
+% Höhe der Elemente mit berücksichtigen, wenn sie später vertikal zentriert
+% werden:
+\FPeval\@rabstiegeinshvergleich{\@rabstiegeinsh+0.5*\@rblockeinsh+0.5*\@rblockzweih}
+\FPeval\@labstiegeinshvergleich{\@labstiegeinsh+0.5*\@lblockeinsh+0.5*\@lblockzweih}
+\FPeval\@rabstiegzweihvergleich{\@rabstiegzweih+0.5*\@rblockzweih+0.5*\@rblockdreih}
+\FPeval\@labstiegzweihvergleich{\@labstiegzweih+0.5*\@lblockzweih+0.5*\@lblockdreih}
+
+% Abstieg eins
+\FPifgt{\@rabstiegeinshvergleich}{\@labstiegeinshvergleich}
+% rechts>links
+% rechte Pfeile auf gewünschtem Minimumwert belassen,
+% linke Längen von Linie und Pfeil neu berechnen
+\FPset\@rpeinsh{\@rpeinsmin}
+\FPeval\@lleinsh{
+ (\@rabstiegeinshvergleich
+ -0.5*\@lblockeinsh
+ -0.5*\@lblockzweih
+ -2*\@lleery
+ -\@lseinsh)*0.5
+ }
+\FPset\@lpeinsh{\@lleinsh}
+%
+\else
+% rechts<links
+% linke Pfeile auf gewünschtem Minimumwert belassen,
+% rechte Pfeillängen entsprechend berechnen
+\FPset\@lleinsh{\@lpeinsmin}
+\FPset\@lpeinsh{\@lpeinsmin}
+\FPeval\@rpeinsh{
+ (\@labstiegeinshvergleich
+ -0.5*\@rblockeinsh
+ -0.5*\@rblockzweih
+ -2*\@rleery
+ -\@rseinsh)*0.5
+ }
+\fi
+
+% Abstieg zwei
+\FPifgt{\@rabstiegzweihvergleich}{\@labstiegzweihvergleich}
+% rechts>links
+% rechte Pfeile auf gewünschtem Minimumwert belassen,
+% linke Längen von Linie und Pfeil neu berechnen
+\FPset\@rpzweih{\@rpzweimin}
+\FPeval\@llzweih{
+ (\@rabstiegzweihvergleich
+ -0.5*\@lblockzweih
+ -0.5*\@lblockdreih
+ -2*\@lleery
+ -\@lszweih)*0.5
+ }
+\FPset\@lpzweih{\@llzweih}
+%
+\else
+% rechts<links
+% linke Pfeile auf gewünschtem Minimumwert belassen,
+% rechte Pfeillängen entsprechend berechnen
+\FPset\@llzweih{\@lpzweimin}
+\FPset\@lpzweih{\@lpzweimin}
+\FPeval\@rpzweih{
+ (\@labstiegzweihvergleich
+ -0.5*\@rblockzweih
+ -0.5*\@rblockdreih
+ -2*\@rleery
+ -\@rszweih)*0.5
+ }
+\fi
+
+
+% Neuberechnung der Höhen für die Abstiege eins und zwei mit den aktuellen
+% Pfeillängen
+\FPeval\@labstiegeinsh{2*\@lleery+2*\@lpeinsh+\@lseinsh}
+\FPeval\@rabstiegeinsh{2*\@rleery+2*\@rpeinsh+\@rseinsh}
+\FPeval\@labstiegzweih{2*\@lleery+2*\@lpzweih+\@lszweih}
+\FPeval\@rabstiegzweih{2*\@rleery+2*\@rpzweih+\@rszweih}
+% Höhe rechts:
+\FPeval\@rh{
+ \@rblockeinsh
+ +\@rabstiegeinsh
+ +\@rblockzweih
+ +\@rabstiegzweih
+ +\@rblockdreih
+ }
+% Höhe links:
+\FPeval\@lh{
+ \@lblockeinsh
+ +\@labstiegeinsh
+ +\@lblockzweih
+ +\@labstiegzweih
+ +\@lblockdreih
+ }
+% Bestimmung der Gesamthöhe
+\FPeval\@maxh{max(\@rh,\@lh)}
+
+%
+% Berechnung der x-Werte:
+%
+% Berechung Mittelpunkt x linke Spalte
+\FPeval\@lmx{\@lmaxb/2} % links, Mitte x
+
+% Berechung der Startpunkte x der einzelnen Elemente
+\FPeval\@lblockeinsx{\@lmx-(\@lblockeinsb/2)} % links Raumgruppe+Summenformel eins
+\FPeval\@lseinsx{\@lmx-(\@lseinsb/2)} % links, Symbol, 1
+\FPeval\@lblockzweix{\@lmx-(\@lblockzweib/2)} % links Raumgruppe+Summenformel zwei
+\FPeval\@lszweix{\@lmx-(\@lszweib/2)} % links, Symbol, 2
+\FPeval\@lblockdreix{\@lmx-(\@lblockdreib/2)} % links Raumgruppe+Summenformel drei
+
+% Rechte Spalte
+% x-Wert für Tabellen
+\FPeval\@rblockeinsx{\@lmx+(0.5*\@lmaxb)+\@leerx+0.5*\@rblockeinsdeltax} %
+%rechts, Tabelle eins x, 0.5*delta wegen makebox
+\FPeval\@rblockzweix{\@lmx+(0.5*\@lmaxb)+\@leerx+0.5*\@rblockzweideltax} % rechts, Tabelle zwei x
+\FPeval\@rblockdreix{\@lmx+(0.5*\@lmaxb)+\@leerx+0.5*\@rblockdreideltax} % rechts, Tabelle drei x
+
+% Transformationsmatrix 1 mittig zu Tabelle 1
+\FPeval\@rseinsx{\@rblockeinsx+0.5*0.5*(\@rblockeinsb+\@rblockzweib)-0.5*\@rseinsb}
+% Transformationsmatrix 2 mittig zu Tabelle 2
+\FPeval\@rszweix{\@rblockzweix+0.5*0.5*(\@rblockzweib+\@rblockdreib)-0.5*\@rszweib}
+
+%
+% Berechnung der y-Werte:
+%
+% Platzierung der Elemente so, dass immer Raumgruppe+Summenformel und
+% die zugehörige Lagentabelle bündig sind.
+
+\FPifgt{\@rblockeinsh}{\@lblockeinsh}
+% Tabelle eins ganz oben
+\FPeval\@rblockeinsy{\@maxh-\@rblockeinsh}
+\FPeval\@lblockeinsy{\@rblockeinsy+0.5*\@rblockeinsh-0.5*\@lblockeinsh}
+\else
+% Raumgruppe+Summenformel eins ganz oben
+\FPeval\@lblockeinsy{\@maxh-\@lblockeinsh}
+\FPeval\@rblockeinsy{\@lblockeinsy+0.5*\@lblockeinsh-0.5*\@rblockeinsh}
+\fi
+
+% Startpunkte y der Symmetrieabstiegsblöcke eins links und rechts
+\FPeval\@lleinsy{\@lblockeinsy-\@lleery}
+\FPeval\@rleinsy{\@rblockeinsy-\@rleery}
+
+
+% Abstieg eins
+% restliche Sachen so berechnen, dass alles schön vertikal zentriert ist.
+\FPeval\@rblockzweiy{\@rleinsy-2*\@rpeinsh-\@rseinsh-\@rleery-\@rblockzweih}
+\FPeval\@lblockzweiy{\@rblockzweiy+0.5*\@rblockzweih-0.5*\@lblockzweih}
+\FPeval\@rseinsy{\@rleinsy-\@rpeinsh-\@rseinsh}
+
+\FPeval\@lseinsy{\@lleinsy-\@lleinsh-\@lseinsh} % links zentriert
+\ifthenelse{\boolean{@abstiegeinsvertzentr}}{
+\FPeval\@labstiegeinsmittey{\@lseinsy+0.5*\@lseinsh}
+\FPeval\@rabstiegeinsmittey{\@rseinsy+0.5*\@rseinsh}
+\FPeval\@abstiegeinsmitteydelta{\@rabstiegeinsmittey-\@labstiegeinsmittey}
+\FPeval\@lleinsh{\@lleinsh-\@abstiegeinsmitteydelta}
+\FPeval\@lseinsy{\@lseinsy+\@abstiegeinsmitteydelta}
+\FPeval\@lpeinsh{\@lpeinsh+\@abstiegeinsmitteydelta}
+}{}
+\FPset\@lpeinsy{\@lseinsy}
+\FPeval\@rpeinsy{\@rleinsy-\@rpeinsh-\@rseinsh}
+
+% Startpunkte y der Symmetrieabstiegsblöcke zwei links und rechts
+\FPeval\@llzweiy{\@lblockzweiy-\@lleery}
+\FPeval\@rlzweiy{\@rblockzweiy-\@rleery}
+
+% Abstieg zwei
+% restliche Sachen so berechnen, dass alles schön vertikal zentriert ist.
+\FPeval\@rblockdreiy{\@rlzweiy-2*\@rpzweih-\@rszweih-\@rleery-\@rblockdreih}
+\FPeval\@lblockdreiy{\@rblockdreiy+0.5*\@rblockdreih-0.5*\@lblockdreih}
+\FPeval\@rszweiy{\@rlzweiy-\@rpzweih-\@rszweih}
+
+\FPeval\@lszweiy{\@llzweiy-\@llzweih-\@lszweih}
+\ifthenelse{\boolean{@abstiegzweivertzentr}}{
+\FPeval\@labstiegzweimittey{\@lszweiy+0.5*\@lszweih}
+\FPeval\@rabstiegzweimittey{\@rszweiy+0.5*\@rszweih}
+\FPeval\@abstiegzweimitteydelta{\@rabstiegzweimittey-\@labstiegzweimittey}
+\FPeval\@llzweih{\@llzweih-\@abstiegzweimitteydelta}
+\FPeval\@lszweiy{\@lszweiy+\@abstiegzweimitteydelta}
+\FPeval\@lpzweih{\@lpzweih+\@abstiegzweimitteydelta}
+}{}
+\FPset\@lpzweiy{\@lszweiy}
+\FPeval\@rpzweiy{\@rlzweiy-\@rpzweih-\@rszweih}
+
+
+% Das ganze zeichnen
+
+\begin{picture}(\@maxb,\@maxh)
+\ifthenelse{\boolean{@randbox}}{
+ \put(0,0){%
+\framebox(\@maxb,\@maxh){}%
+}
+}{}
+
+\ifthenelse{\boolean{@lblockeinsvorhanden}}{
+ \put(\@lblockeinsx,\@lblockeinsy){%
+\makebox(\@lblockeinsb,\@lblockeinsh){\@lblockeins}%
+}
+}{}
+
+\ifthenelse{\boolean{@lleinsvorhanden}}{
+ \put(\@lmx,\@lleinsy){%
+\@lleins%
+}
+}{}
+
+\ifthenelse{\boolean{@lseinsvorhanden}}{
+ \put(\@lseinsx,\@lseinsy){%
+\makebox(\@lseinsb,\@lseinsh){\@lseins}%
+}
+}{}
+
+\ifthenelse{\boolean{@lpeinsvorhanden}}{
+ \put(\@lmx,\@lpeinsy){%
+\@lpeins%
+}
+}{}
+
+\ifthenelse{\boolean{@lblockzweivorhanden}}{
+ \put(\@lblockzweix,\@lblockzweiy){%
+\makebox(\@lblockzweib,\@lblockzweih){\@lblockzwei}%
+}
+}{}
+
+\ifthenelse{\boolean{@llzweivorhanden}}{
+ \put(\@lmx,\@llzweiy){%
+\@llzwei%
+}
+}{}
+
+\ifthenelse{\boolean{@lszweivorhanden}}{
+ \put(\@lszweix,\@lszweiy){%
+\makebox(\@lszweib,\@lszweih){\@lszwei}%
+}
+}{}
+
+\ifthenelse{\boolean{@lpzweivorhanden}}{
+ \put(\@lmx,\@lpzweiy){%
+\@lpzwei%
+}
+}{}
+
+\ifthenelse{\boolean{@lblockdreivorhanden}}{
+ \put(\@lblockdreix,\@lblockdreiy){%
+\makebox(\@lblockdreib,\@lblockdreih){\@lblockdrei}%
+}
+}{}
+
+\ifthenelse{\boolean{@rblockeinsvorhanden}}{
+ \put(\@rblockeinsx,\@rblockeinsy){%
+\makebox(\@rblockeinsb,\@rblockeinsh){\@rblockeins}%
+}
+}{}
+
+\ifthenelse{\boolean{@rseinsvorhanden}}{
+ \put(\@rseinsx,\@rseinsy){%
+\makebox(\@rseinsb,\@rseinsh){\@rseins}%
+}
+}{}
+
+\ifthenelse{\boolean{@rszweivorhanden}}{
+ \put(\@rszweix,\@rszweiy){%
+\makebox(\@rszweib,\@rszweih){\@rszwei}%
+}
+}{}
+
+\ifthenelse{\boolean{@rblockzweivorhanden}}{
+ \put(\@rblockzweix,\@rblockzweiy){%
+\makebox(\@rblockzweib,\@rblockzweih){\@rblockzwei}%
+}
+}{}
+
+\ifthenelse{\boolean{@rblockdreivorhanden}}{
+ \put(\@rblockdreix,\@rblockdreiy){%
+\makebox(\@rblockdreib,\@rblockdreih){\@rblockdrei}%
+}
+}{}
+
+\@rechtepfeile
+
+\end{picture}
+}
+
+\newenvironment{stammbaum}%
+{%
+}%
+{%
+\@guberechnenundzeichnen{}%
+\@variablenreinitialisieren{}%
+\@abmessungenaufnullsetzen{}%
+}
+
+
+
diff --git a/macros/latex/contrib/gu/gudemo.tex b/macros/latex/contrib/gu/gudemo.tex
new file mode 100644
index 0000000000..3b6abc34dc
--- /dev/null
+++ b/macros/latex/contrib/gu/gudemo.tex
@@ -0,0 +1,480 @@
+\documentclass[tablecaptionabove]{scrartcl}
+\usepackage{amssymb} % Symbole
+\usepackage{ifpdf}
+\ifpdf
+\usepackage[pdftex]{gu}
+\else
+\usepackage[dvips]{gu}
+%\usepackage[dvips,pstarrows]{gu}
+\fi
+
+%\setlength{\extrarowheight}{0.1em} % Extraabstand Zellinhalt-Zellrahmen
+
+
+\usepackage[latin1]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{ngerman}
+%\usepackage[german]{babel}
+\usepackage{textcomp,lmodern}
+
+
+\begin{document}
+
+Momentan werden zwei Symmetrieabstiegsschritte unterstützt. Ein schematischer
+Stammbaum ist in Abbildung~\ref{abb_schematisch} gezeigt.
+
+\begin{figure}[btp]
+\begin{stammbaum}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%% Ab hier die einzelnen Elemente eintragen %%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Die verschiedenen Elemente, die links gesetzt werden, der Stammbaum
+\setuplinks{true} % Raumgruppe+Summenformel eins: true=Anzeigen, false=Ausblenden
+ {2em} % Mindestlänge Linie/Pfeil1: Muss unbedingt Längeneinheit
+ % sein, zum Ausblenden: 0em oder 0pt etc.
+ {true} % Abstiegssymbol eins: true=Anzeigen, false=Ausblenden
+ {true} % Raumgruppe+Summenformel zwei: true=Anzeigen, false=Ausblenden
+ {2em} % Mindestlänge Linie/Pfeil2: Muss unbedingt Längeneinheit
+ % sein, zum Ausblenden: 0em oder 0pt etc.
+ {true} % Abstiegssymbol zwei: true=Anzeigen, false=Ausblenden
+ {true} % Raumgruppe+Summenformel drei: true=Anzeigen, false=Ausblenden
+ {0em} % zusätzliche Abstände zwischen den Elementen: Muss
+ % unbedingt Längeneinheit sein
+
+
+% Die Elemente rechts, die Tabellen mit der Lagenfortführung
+\setuprechts{true} % Lagentabelle eins: true=Anzeigen, false=Ausblenden
+ {2em} % Pfeile eins Mindestlänge: Muss unbedingt Längeneinheit
+ % sein, zum Ausblenden: 0em oder 0pt etc.
+ {true} % Transformationsmatrix eins: true=Anzeigen, false=Ausblenden
+ {true} % Lagentabelle zwei: true=Anzeigen, false=Ausblenden
+ {4em} % Pfeile zwei Mindestlänge: Muss unbedingt Längeneinheit
+ % sein, zum Ausblenden: 0em oder 0pt etc.
+ {true} % Transformationsmatrix zwei: true=Anzeigen, false=Ausblenden
+ {true} % Lagentabelle drei: true=Anzeigen, false=Ausblenden
+ {0.5em} % zusätzliche Abstände zwischen den Elementen: Muss
+ % unbedingt Längeneinheit sein
+
+% Weitere Einstellungen
+\setupdivers{2em} % horizontaler Abstand Stammbaum <--> Lagentabellen
+ {0em} % Extraabstand für Kollisionskontrolle Pfeile rechts x
+ {0em} % Extraabstand für Kollisionskontrolle Pfeile rechts y
+ {false} % Abstieg 1: true=Symbole links und rechts auf gleicher Höhe
+ {false} % Abstieg 2: true=Symbole links und rechts auf gleicher Höhe
+ {false} % true=Randbox, false=keine Randbox anzeigen
+
+% Einstellungen, die die Lagentabellen betreffen
+\setuprlagentabellen{4.5em} % Spaltenbreite (Längeneinheit, bei Bedarf anpassen)
+ {2} % Anzahl Spalten Tabelle 1 (Zahl)
+ {1} % Anzahl Spalten Tabelle 2 (Zahl)
+ {1} % Anzahl Spalten Tabelle 3 (Zahl)
+{0em}% horizontale Verschiebung Tabelle eins
+{0em}% horizontale Verschiebung Tabelle zwei
+{0em}% horizontale Verschiebung Tabelle drei
+
+% Raumgruppe und Summenformel eins
+\lverbindungeins{%
+\fbox{{\Huge lblockeins}}%
+}
+
+% Abstiegssymbol eins
+\labstiegeins{%
+\fbox{lseins}%
+}
+
+% Raumgruppe und Summenformel zwei
+\lverbindungzwei{%
+\fbox{{\tiny lblockzwei}}%
+}
+
+% Abstiegssymbol zwei
+\labstiegzwei{%
+\fbox{lszwei}%
+}
+
+% Raumgruppe und Summenformel drei
+\lverbindungdrei{%
+\fbox{{\Huge lblockdrei}}%
+}
+
+% Transformationsmatrix zwischen Tabelle 1 und 2
+\rlagentranseins{%
+\fbox{rseins}%
+}
+
+% Transformationsmatrix zwischen Tabelle 2 und 3
+\rlagentranszwei{%
+\fbox{rszwei}%
+}
+
+% Lagentabelle eins
+% Optional Verschiebung in x angeben (Längeneinheit)
+% negative Werte funktionieren evtl. noch nicht so 100%
+\rlagentabelleeins{%
+\fbox{{\tiny rblockeins}}%
+}
+
+% Lagentabelle zwei
+% Optional Verschiebung in x angeben (Längeneinheit)
+% negative Werte funktionieren evtl. noch nicht so 100%
+\rlagentabellezwei{%
+\fbox{{\Huge rblockzwei}}%
+}
+
+% Lagentabelle drei
+% Optional Verschiebung in x angeben (Längeneinheit)
+% negative Werte funktionieren evtl. noch nicht so 100%
+\rlagentabelledrei{%
+\fbox{{\tiny rblockdrei}}%
+}
+
+
+% Die Pfeile zwischen den Tabellen
+% \rpfeileinszwei{start}{ziel} zeichnet einen Pfeil von Spalte "start" nach
+% Spalte "ziel" von Lagentabelle eins nach Lagentabelle zwei
+% \rpfeilzweidrei{start}{ziel} zeichnet einen Pfeil von Spalte "start" nach
+% Spalte "ziel" von Lagentabelle zwei nach Lagentabelle drei
+\rechtspfeilsetup{
+\rpfeileinszwei{1}{1}
+\rpfeilzweidrei{1}{1}
+\rpfeileinszwei{1}{3}
+\rpfeilzweidrei{1}{3}
+
+
+
+}
+
+\end{stammbaum}
+\caption{Allgemeiner schematischer Aufbau der einzelnen Elemente.}
+\label{abb_schematisch}
+\end{figure}
+
+
+Abbildung~\ref{abb_einfach} zeigt einen einfachen Stammbaum mit einem
+Symmetrieabstieg ohne Lagenfortführung.
+\begin{figure}[btp]
+\centering
+\begin{stammbaum}
+
+\setuplinks%
+{true}% Raumgruppe und Summenformel 1
+{2em}% Mindestlänge Linie/Pfeil 1
+{true}% Abstiegssymbol 1
+{true}% Raumgruppe und Summenformel 2
+{0em}% Mindestlänge Linie/Pfeil 2
+{false}% Abstiegssymbol 2
+{false}% Raumgruppe und Summenformel 3
+{0em}% zusätzliche vertikale Abstände
+
+\setuprechts%
+{false}% Lagentabelle 1
+{0em}% Mindestlänge Linie/Pfeil 1
+{false}% Transformation 1
+{false}% Lagentabelle 2
+{0em}% Mindestlänge Linie/Pfeil 2
+{false}% Transformation 2
+{false}% Lagentabelle 3
+{0em}% zusätzliche vertikale Abstände
+
+\setupdivers%
+{0em}% horizontaler Abstand links <-> rechts
+{0em}% Feinabstimmung Kollisionskontrolle x
+{0em}% Feinabstimmung Kollisionskontrolle y
+{false}% lseins und rseins vertikal zentrieren
+{false}% lszwei und rszwei vertikal zentieren
+{false}% Randbox zeichnen
+
+\setuprlagentabellen%
+{0em}% Spaltenbreite
+{0}% Anzahl Spalten Tabelle eins
+{0}% Anzahl Spalten Tabelle zwei
+{0}% Anzahl Spalten Tabelle drei
+{0em}% horizontale Verschiebung Tabelle eins
+{0em}% horizontale Verschiebung Tabelle zwei
+{0em}% horizontale Verschiebung Tabelle drei
+
+\lverbindungeins{%
+\begin{tabular}{c}%
+$P6_3/mmc$\\
+\fbox{AuSn}\\
+\end{tabular}%
+}
+
+\labstiegeins{%
+t2%
+}
+
+\lverbindungzwei{%
+\begin{tabular}{c}%
+$P\overline{3}m1$\\
+\fbox{AuNiSn$_2$}\\
+\end{tabular}%
+}
+
+\end{stammbaum}
+
+\caption{Einfacher Stammbaum ohne Lagenfortführung.}
+\label{abb_einfach}
+\end{figure}
+
+
+
+
+
+Abbildung~\ref{abb_einfach_mit} zeigt einen einfachen Stammbaum mit einem
+Symmetrieabstieg mit Lagenfortführung. Dieses Mal werden die Lagentabellen mit
+definiert. Zur Demonstration des optionalen Parameters zur Verschiebung der
+Tabellen ist die untere Tabelle um \texttt{2em} nach rechts verschoben.
+\begin{figure}[btp]
+\centering
+\begin{stammbaum}
+\setuplinks%
+{true}% Raumgruppe und Summenformel 1
+{2em}% Mindestlänge Linie/Pfeil 1
+{true}% Abstiegssymbol 1
+{true}% Raumgruppe und Summenformel 2
+{0em}% Mindestlänge Linie/Pfeil 2
+{false}% Abstiegssymbol 2
+{false}% Raumgruppe und Summenformel 3
+{0em}% zusätzliche vertikale Abstände
+
+\setuprechts%
+{true}% Lagentabelle 1
+{2em}% Mindestlänge Linie/Pfeil 1
+{false}% Transformation 1
+{true}% Lagentabelle 2
+{0em}% Mindestlänge Linie/Pfeil 2
+{false}% Transformation 2
+{false}% Lagentabelle 3
+{0.5em}% zusätzliche vertikale Abstände
+
+\setupdivers%
+{1em}% horizontaler Abstand links <-> rechts
+{0em}% Feinabstimmung Kollisionskontrolle x
+{0em}% Feinabstimmung Kollisionskontrolle y
+{true}% lseins und rseins vertikal zentrieren
+{false}% lszwei und rszwei vertikal zentieren
+{false}% Randbox zeichnen
+
+\setuprlagentabellen%
+{4.5em}% Spaltenbreite
+{2}% Anzahl Spalten Tabelle eins
+{3}% Anzahl Spalten Tabelle zwei
+{0}% Anzahl Spalten Tabelle drei
+{0em}% horizontale Verschiebung Tabelle eins
+{2em}% horizontale Verschiebung Tabelle zwei
+{0em}% horizontale Verschiebung Tabelle drei
+
+
+\lverbindungeins{%
+\begin{tabular}{c}%
+$P6_3/mmc$\\
+\fbox{AuSn}\\
+\end{tabular}%
+}
+
+\labstiegeins{%
+t2%
+}
+
+\lverbindungzwei{%
+\begin{tabular}{c}%
+$P\overline{3}m1$\\
+\fbox{AuNiSn$_2$}\\
+\end{tabular}%
+}
+
+\rlagentabelleeins{%
+\begin{tabularx}{\spaltenbreiteem*\spalteneins}[b]{|z|z|}
+\hline
+Au: $2a$ & Sn: $2c$ \\
+$\overline{3}m.$ & $\overline{6}m2$ \\
+\hline
+0 & \ed \\
+0 & \zd \\
+0 & \ev \\
+\hline
+\end{tabularx}%
+}
+
+\rlagentabellezwei{%
+\begin{tabularx}{\spaltenbreiteem*\spaltenzwei}[b]{|z|z|z|}
+\hline
+Au: $2a$ & Ni: $1b$ & Sn: $2d$ \\
+$\overline{3}m.$ & $\overline{3}m.$ & $3m.$ \\
+\hline
+0 & 0 & \ed \\
+0 & 0 & \zd \\
+0 & \eh & 0.2831 \\
+\hline
+\end{tabularx}%
+}
+
+\rechtspfeilsetup{%
+\rpfeileinszwei{1}{1}
+\rpfeileinszwei{1}{2}
+\rpfeileinszwei{2}{3}
+}
+\end{stammbaum}
+\caption{Einfacher Stammbaum mit Lagenfortführung.}
+\label{abb_einfach_mit}
+\end{figure}
+
+
+
+Abbildung~\ref{abb_mit_aufw} zeigt einen etwas aufwändigeren Stammbaum
+mit zwei Symmetrieabbaustufen und Lagenfortführung. Außerdem wird die
+Möglichkeit der Angabe einer Lagentransformation demonstriert, auch wenn sie in
+diesem Beispiel kristallographisch gesehen sinnfrei ist. Die Pfeile rechts
+werden gegebenenfalls durchbrochen, wenn sie den Text der Lagentransformation
+schneiden würden. Die virtuelle Box um den Text der Lagentransformation (rseins,
+rszwei), die benutzt wird, um zu bestimmen, ob der Pfeil unterbrochen werden
+muss oder nicht, kann mit Hilfe eines Parameters zur Feineinstellung (Teil des
+Befehls \texttt{\textbackslash{}setupdivers}) manuell
+vergrößert oder verkleinert werden, wenn die Ergebnisse suboptimal aussehen.
+
+Dieses Beispiel zeigt auch die beiden unterschiedlichen Anordnungsoptionen für
+die Abstiegssymbole und die Lagentransformation. Im ersten Schritt sind beide
+auf gleicher Höhe ausgerichtet, das Abstiegssymbol ist dafür nicht mehr genau in
+der Mitte zwischen lblockeins und lblockzwei. Im Fall des zweiten Abstiegs sind
+rseins und lseins jeweils genau in der Mitte der Pfeile, aber dafür nicht bündig
+auf einer Höhe. Das Verhalten läßt sich mittels der Schalter in
+\texttt{\textbackslash{}setupdivers} einstellen.
+
+
+\begin{figure}[btp]
+\centering
+\begin{stammbaum}
+
+\setuplinks%
+{true}% Raumgruppe und Summenformel 1
+{2em}% Mindestlänge Linie/Pfeil 1
+{true}% Abstiegssymbol 1
+{true}% Raumgruppe und Summenformel 2
+{2em}% Mindestlänge Linie/Pfeil 2
+{true}% Abstiegssymbol 2
+{true}% Raumgruppe und Summenformel 3
+{0em}% zusätzliche vertikale Abstände
+
+\setuprechts%
+{true}% Lagentabelle 1
+{2em}% Mindestlänge Linie/Pfeil 1
+{true}% Transformation 1
+{true}% Lagentabelle 2
+{2em}% Mindestlänge Linie/Pfeil 2
+{true}% Transformation 2
+{true}% Lagentabelle 3
+{0.5em}% zusätzliche vertikale Abstände
+
+\setupdivers%
+{3em}% horizontaler Abstand links <-> rechts
+{-0.5em}% Feinabstimmung Kollisionskontrolle x
+{0em}% Feinabstimmung Kollisionskontrolle y
+{true}% lseins und rseins vertikal zentrieren
+{false}% lszwei und rszwei vertikal zentieren
+{false}% Randbox zeichnen
+
+\setuprlagentabellen%
+{4.5em}% Spaltenbreite
+{2}% Anzahl Spalten Tabelle eins
+{2}% Anzahl Spalten Tabelle zwei
+{4}% Anzahl Spalten Tabelle drei
+{0em}% horizontale Verschiebung Tabelle eins
+{0em}% horizontale Verschiebung Tabelle zwei
+{0em}% horizontale Verschiebung Tabelle drei
+
+\lverbindungeins{%
+\begin{tabular}{c}%
+$P6_3/m \, 2/c \, 2/m$\\[0.3em]
+\fbox{hex. TiI$_3$}\\
+\end{tabular}%
+}
+
+\labstiegeins{%
+\begin{tabular}{c}
+k3\\
+$\mathbf{a-b, a+2b, c}$
+\end{tabular}%
+}
+
+\lverbindungzwei{%
+$P6_3/m \, 2/m \, 2/c$%\\
+}
+
+\labstiegzwei{%
+t2%
+}
+
+\lverbindungdrei{%
+\begin{tabular}{c}
+$P\overline{3} \, 2/m \, 1$\\[0.3em]
+\fbox{$\beta$-WCl$_6$}\\
+\end{tabular}%
+}
+
+\rlagentranseins{%
+$x,y,z$ (überflüssig)%
+}
+
+\rlagentranszwei{%
+$x,y,z$ (sinnfrei) %
+}
+
+\rlagentabelleeins{%
+\begin{tabularx}{\spaltenbreiteem*\spalteneins}[t]{|z|z|}
+\hline
+Ti: $2b$ & $\Box$: $4d$ \\
+$\overline{3}m$ & $3.2$ \\
+\hline
+0 & \zd \\
+0 & \ed \\
+0 & 0 \\
+\hline
+\end{tabularx}%
+}
+
+\rlagentabellezwei{%
+\begin{tabularx}{\spaltenbreiteem*\spaltenzwei}[t]{|z|z|}%
+\hline
+$2a$ & $4f$ \\
+$\overline{3}m$ & $3m$ \\
+\hline
+0 & \ed \\
+0 & \zd \\
+0 & 0.0 \\
+\hline
+\end{tabularx}%
+}
+
+\rlagentabelledrei{%
+\begin{tabularx}{\spaltenbreiteem*\spaltendrei}[t]{|z|z|z|z|}
+\hline
+W1: $1a$ & $\Box$: $1b$ & W2: $2d$ & $\Box$: $2d$\\
+$\overline{3}m$ & $\overline{3}m$ & $3m$ & $3m$ \\
+\hline
+0 & 0 & \ed & \ed \\
+0 & 0 & \zd & \zd \\
+0 & \eh & 0.473 & 0.0 \\
+\hline
+\end{tabularx}%
+}
+
+
+\rechtspfeilsetup{
+\rpfeileinszwei{1}{1}
+\rpfeileinszwei{1}{2}
+\rpfeilzweidrei{1}{1}
+\rpfeilzweidrei{1}{2}
+\rpfeilzweidrei{2}{3}
+\rpfeilzweidrei{2}{4}
+}
+\end{stammbaum}
+
+\caption{Etwas aufwändigerer Stammbaum mit Lagenfortführung und
+(sinnfreier) Koordinatentransformation.}
+\label{abb_mit_aufw}
+\end{figure}
+
+\end{document}
+
diff --git a/macros/latex/contrib/gu/gudoc.pdf b/macros/latex/contrib/gu/gudoc.pdf
new file mode 100644
index 0000000000..cefeba9d4e
--- /dev/null
+++ b/macros/latex/contrib/gu/gudoc.pdf
Binary files differ
diff --git a/macros/latex/contrib/gu/gudoc.tex b/macros/latex/contrib/gu/gudoc.tex
new file mode 100644
index 0000000000..a808af122f
--- /dev/null
+++ b/macros/latex/contrib/gu/gudoc.tex
@@ -0,0 +1,1204 @@
+\documentclass[tablecaptionabove]{scrartcl}
+\usepackage{amssymb} % Symbole
+\usepackage{ifpdf}
+\ifpdf
+\usepackage[pdftex]{gu}
+\else
+\usepackage[dvips]{gu}
+%\usepackage[dvips,pstarrows]{gu}
+\fi
+
+%\setlength{\extrarowheight}{0.1em} % Extraabstand Zellinhalt-Zellrahmen
+
+
+\usepackage[latin1]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{ngerman}
+%\usepackage[german]{babel}
+\usepackage{textcomp,lmodern,booktabs}
+\ifpdf
+\usepackage[pdftex,usenames]{color}
+\else
+\usepackage[dvips,usenames]{color}
+\fi
+\usepackage{microtype}
+\usepackage[%
+\ifpdf
+ pdftex,%
+\else
+ dvipdfm,%
+\fi
+ linktocpage=true,% nur Seitenzahl im toc/lof/lot ist verlinkt
+ pdfpagelabels=true,%
+ plainpages=false,%
+ final=true,% auch im draft-Modus von KOMA schon linken
+ bookmarks=true,%
+ bookmarksnumbered=true,% Abschnittsnummern in den Bookmarks
+ colorlinks=true,%
+ pdftitle={Das Paket gu},%
+ pdfsubject={Dokumentation},%
+ pdfauthor={Stefan Lange},%
+ pdfkeywords={Gruppe, Untergruppe, Stammbaum, Bärnighausen,
+ Symmetrieabbau, Lagenfortführung},%
+ linkcolor=blue,% Farbe von Querverweisen \ref etc.
+ citecolor=blue,% Farbe von Lit. \cite etc.
+ pagecolor=blue,% Farbe von Seitenverweisen im toc etc.
+ pagebackref=true,% Rckverweise im Lit-Verzeichnis auf die Seiten
+ ]{hyperref}
+
+
+
+
+\title{Das Paket gu}
+\author{Stefan Lange}
+\date{2007-01-19}
+
+\begin{document}
+\maketitle
+\tableofcontents
+\listoffigures
+\listoftables
+\section{Überblick}
+Das Paket \texttt{gu.sty} erleichtert das Setzen von einfachen
+Gruppe-Untergruppe-Stammbäumen
+und/oder Lagenfortführungstabellen im Bärnighausen-Formalismus.\footnote{siehe H.
+Bärnighausen, \textit{Comm. Math. Chem.} \textbf{1980}, \textit{9}, 139. und H.
+Bärnighausen, U. Müller, \textit{Symmetriebeziehungen zwischen den Raumgruppen
+als Hilfsmittel zur straffen Darstellung von Strukturzusammenhängen in der
+Kristallchemie}, Universität Karlsruhe und Universität/GH Kassel, \textbf{1996}.}
+Die einzelnen Elemente und Abstände werden innerhalb einer neuen Umgebung namens
+\texttt{stammbaum} mittels vorgegebener Kommandos
+definiert.
+Anschließend werden alle Abstände automatisch berechnet und der Stammbaum
+und/oder die Tabellen ausgegeben.
+Momentan werden maximal zwei Abstiegsschritte unterstützt, eine Erweiterung ist
+aber relativ problemlos möglich.
+
+\section{Voraussetzungen}
+\texttt{gu.sty} benötigt \LaTeXe mit folgenden Zusatzpaketen:
+\begin{itemize}
+\item array
+\item tabularx
+\item pict2e
+\item calc (mindestens Version [2005/08/06])
+\item fp
+\item ifthen
+\end{itemize}
+
+\section{Optionen}
+Unterstützt werden die meisten Optionen des Paketes \texttt{pict2e.sty} (vgl.
+Dokumentation dieses Pakets). Alle Optionen
+werden an dieses Paket unverändert durchgereicht. Eine Aufstellung ist in
+Tabelle~\ref{tabelle_optionen} zu finden.
+Hinweis (aus der \texttt{pict2e}-Dokumentation): \texttt{pict2e} (und damit auch
+\texttt{gu}) sollte immer mit der gleichen
+Treiberoption wie die Pakete \texttt{graphic\{x,s\}} und \texttt{color} aufgerufen werden.
+Andernfalls könnten unerwünschte Nebeneffekte auftreten.
+
+\begin{table}[tbp]
+\caption{Unterstützte Paketoptionen von \texttt{gu.sty}}
+\label{tabelle_optionen}
+\centering
+\begin{tabular}{l l}
+\toprule
+Option & Funktion \\
+\midrule
+dvips & Treiberoption \\
+xdvi & Treiberoption \\
+pdftex & Treiberoption \\
+vtex & Treiberoption \\
+dvipdfm & Treiberoption \\
+ltxarrows & Pfeilspitzen im \LaTeX{}-Stil \\
+pstarrows & Pfeilspitzen im PSTricks-Stil\\
+
+\bottomrule
+\end{tabular}
+\end{table}
+
+\section{Neue Befehle und Umgebungen}
+\texttt{gu.sty} definiert die neue Umgebung \texttt{stammbaum}. Ein
+Stammbaum im Bärnighausen-Formalismus wird also nach folgendem Prinzip
+definiert:
+\begin{quote}
+\texttt{\textbackslash{}begin\{stammbaum\}\newline
+\textbackslash{}befehl1\newline
+\textbackslash{}befehl2\newline
+\ldots\newline
+\textbackslash{}end\{stammbaum\}}
+\end{quote}
+Momentan werden zwei Symmetrieabstiegsschritte unterstützt. Ein schematischer
+Stammbaum ist in Abbildung~\ref{abb_schematisch} gezeigt. Die neuen Befehle und
+ihre Bedeutung werden im folgenden kurz beschrieben.
+
+\begin{figure}[btp]
+\begin{stammbaum}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%% Ab hier die einzelnen Elemente eintragen %%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Die verschiedenen Elemente, die links gesetzt werden, der Stammbaum
+\setuplinks{true} % Raumgruppe+Summenformel eins: true=Anzeigen, false=Ausblenden
+ {2em} % Mindestlänge Linie/Pfeil1: Muss unbedingt Längeneinheit
+ % sein, zum Ausblenden: 0em oder 0pt etc.
+ {true} % Abstiegssymbol eins: true=Anzeigen, false=Ausblenden
+ {true} % Raumgruppe+Summenformel zwei: true=Anzeigen, false=Ausblenden
+ {2em} % Mindestlänge Linie/Pfeil2: Muss unbedingt Längeneinheit
+ % sein, zum Ausblenden: 0em oder 0pt etc.
+ {true} % Abstiegssymbol zwei: true=Anzeigen, false=Ausblenden
+ {true} % Raumgruppe+Summenformel drei: true=Anzeigen, false=Ausblenden
+ {0em} % zusätzliche Abstände zwischen den Elementen: Muss
+ % unbedingt Längeneinheit sein
+
+
+% Die Elemente rechts, die Tabellen mit der Lagenfortführung
+\setuprechts{true} % Lagentabelle eins: true=Anzeigen, false=Ausblenden
+ {2em} % Pfeile eins Mindestlänge: Muss unbedingt Längeneinheit
+ % sein, zum Ausblenden: 0em oder 0pt etc.
+ {true} % Transformationsmatrix eins: true=Anzeigen, false=Ausblenden
+ {true} % Lagentabelle zwei: true=Anzeigen, false=Ausblenden
+ {4em} % Pfeile zwei Mindestlänge: Muss unbedingt Längeneinheit
+ % sein, zum Ausblenden: 0em oder 0pt etc.
+ {true} % Transformationsmatrix zwei: true=Anzeigen, false=Ausblenden
+ {true} % Lagentabelle drei: true=Anzeigen, false=Ausblenden
+ {0.5em} % zusätzliche Abstände zwischen den Elementen: Muss
+ % unbedingt Längeneinheit sein
+
+% Weitere Einstellungen
+\setupdivers{2em} % horizontaler Abstand Stammbaum <--> Lagentabellen
+ {0em} % Extraabstand für Kollisionskontrolle Pfeile rechts
+ {0em}
+ {false} % Abstieg 1: true=Symbole links und rechts auf gleicher Höhe
+ {false} % Abstieg 2: true=Symbole links und rechts auf gleicher Höhe
+ {false} % true=Randbox, false=keine Randbox anzeigen
+
+% Einstellungen, die die Lagentabellen betreffen
+\setuprlagentabellen{4.5em} % Spaltenbreite (Längeneinheit, bei Bedarf anpassen)
+ {2} % Anzahl Spalten Tabelle 1 (Zahl)
+ {1} % Anzahl Spalten Tabelle 2 (Zahl)
+ {1} % Anzahl Spalten Tabelle 3 (Zahl)
+{0em}% horizontale Verschiebung Tabelle eins
+{0em}% horizontale Verschiebung Tabelle zwei
+{0em}% horizontale Verschiebung Tabelle drei
+
+% Raumgruppe und Summenformel eins
+\lverbindungeins{%
+\fbox{{\Huge lblockeins}}%
+}
+
+% Abstiegssymbol eins
+\labstiegeins{%
+\fbox{lseins}%
+}
+
+% Raumgruppe und Summenformel zwei
+\lverbindungzwei{%
+\fbox{{\tiny lblockzwei}}%
+}
+
+% Abstiegssymbol zwei
+\labstiegzwei{%
+\fbox{lszwei}%
+}
+
+% Raumgruppe und Summenformel drei
+\lverbindungdrei{%
+\fbox{{\Huge lblockdrei}}%
+}
+
+% Transformationsmatrix zwischen Tabelle 1 und 2
+\rlagentranseins{%
+\fbox{rseins}%
+}
+
+% Transformationsmatrix zwischen Tabelle 2 und 3
+\rlagentranszwei{%
+\fbox{rszwei}%
+}
+
+% Lagentabelle eins
+% Optional Verschiebung in x angeben (Längeneinheit)
+% negative Werte funktionieren evtl. noch nicht so 100%
+\rlagentabelleeins{%
+\fbox{{\tiny rblockeins}}%
+}
+
+% Lagentabelle zwei
+% Optional Verschiebung in x angeben (Längeneinheit)
+% negative Werte funktionieren evtl. noch nicht so 100%
+\rlagentabellezwei{%
+\fbox{{\Huge rblockzwei}}%
+}
+
+% Lagentabelle drei
+% Optional Verschiebung in x angeben (Längeneinheit)
+% negative Werte funktionieren evtl. noch nicht so 100%
+\rlagentabelledrei{%
+\fbox{{\tiny rblockdrei}}%
+}
+
+
+% Die Pfeile zwischen den Tabellen
+% \rpfeileinszwei{start}{ziel} zeichnet einen Pfeil von Spalte "start" nach
+% Spalte "ziel" von Lagentabelle eins nach Lagentabelle zwei
+% \rpfeilzweidrei{start}{ziel} zeichnet einen Pfeil von Spalte "start" nach
+% Spalte "ziel" von Lagentabelle zwei nach Lagentabelle drei
+\rechtspfeilsetup{
+\rpfeileinszwei{1}{1}
+\rpfeilzweidrei{1}{1}
+\rpfeileinszwei{1}{3}
+\rpfeilzweidrei{1}{3}
+
+
+
+}
+
+\end{stammbaum}
+\caption{Allgemeiner schematischer Aufbau der einzelnen Elemente.}
+\label{abb_schematisch}
+\end{figure}
+
+\subsection{Allgemeines}
+Einige Befehle dienen der Konfiguration des Stammbaumes, also der Definition,
+welche Elemente vorhanden sind. Diese Befehle sind obligatorisch, ein Weglassen
+führt zu Fehlermeldungen.
+
+Argumente vom Typ \emph{Länge} erwarten eine von \TeX{}
+unterstützte Längeneinheit (sp, pt, bp, dd, mm, pc, cc, cm, in, ex oder em). Zum
+vollständigen Deaktivieren eines solchen Elements muss die entsprechende Länge
+auf 0 gesetzt werden, allerdings \emph{mit} Einheit, also etwa \texttt{0em}.
+
+Argumente vom Typ \emph{boolean} erwarten als Eingabe entweder \texttt{true} oder
+\texttt{false}. \texttt{true} aktiviert das jeweilig Element, \texttt{false}
+deaktiviert es, so dass es nicht angezeigt wird.
+
+Argumente vom Typ \emph{Integer} erwarten eine positive ganze Zahl.
+
+
+
+\subsection{Befehle zur Konfiguration des Stammbaumes (obligatorisch)}
+
+\subsubsection{\textbackslash{}setuplinks}
+\texttt{\textbackslash{}setuplinks} erwartet insgesamt acht Argumente, welche die
+einzelnen Elemente und Abstände im linken Teil der Abbildung, dem
+Symmetriestammbaum, steuern. Die
+Argumente sind im Einzelnen in Tabelle~\ref{tab_optionen_setuplinks} aufgeführt.
+
+\begin{table}[hbtp]
+\centering
+\caption{Argumente von \texttt{\textbackslash{}setuplinks}}
+\label{tab_optionen_setuplinks}
+\begin{tabular}{l l l l}
+\toprule
+& Typ & Beschreibung & Name in Abb.~\ref{abb_schematisch} \\
+\midrule
+\texttt{\textbackslash{}setuplinks} & \{\emph{boolean}\} & Raumgruppe und
+Summenformel eins & lblockeins \\
+
+& \{\emph{Länge}\} & Mindestlänge Linie/Pfeil1 & \\
+& \{\emph{boolean}\} & Abstiegssymbol eins & lseins \\
+& \{\emph{boolean}\} & Raumgruppe und Summenformel zwei &
+lblockzwei \\
+& \{\emph{Länge}\} & Mindestlänge Linie/Pfeil2 & \\
+& \{\emph{boolean}\} & Abstiegssymbol zwei & lszwei \\
+& \{\emph{boolean}\} & Raumgruppe und Summenformel drei & lblockdrei \\
+& \{\emph{Länge}\} & zusätzliche vertikale Abstände& \\
+\bottomrule
+\end{tabular}
+\end{table}
+
+\subsubsection{\textbackslash{}setuprechts}
+\texttt{\textbackslash{}setuprechts} erwartet insgesamt acht Argumente, welche die
+einzelnen Elemente und Abstände im rechten Teil der Abbildung, den
+Tabellen mit der Lagenfortführung, steuern. Die
+Argumente sind im Einzelnen in Tabelle~\ref{tab_optionen_setuprechts} aufgeführt.
+
+\begin{table}[hbtp]
+\centering
+\caption{Argumente von \texttt{\textbackslash{}setuprechts}}
+\label{tab_optionen_setuprechts}
+\begin{tabular}{l l l l}
+\toprule
+& Typ & Beschreibung & Name in Abb.~\ref{abb_schematisch} \\
+\midrule
+\texttt{\textbackslash{}setuprechts} & \{\emph{boolean}\} & Lagentabelle eins &
+rblockeins \\
+
+& \{\emph{Länge}\} & Mindestlänge Linie/Pfeil1 & \\
+& \{\emph{boolean}\} & Transformation eins & rseins \\
+& \{\emph{boolean}\} & Lagentabelle zwei &
+rblockzwei \\
+& \{\emph{Länge}\} & Mindestlänge Linie/Pfeil2 & \\
+& \{\emph{boolean}\} & Transformation zwei & rszwei \\
+& \{\emph{boolean}\} & Lagentabelle drei & rblockdrei \\
+& \{\emph{Länge}\} & zusätzliche vertikale Abstände& \\
+\bottomrule
+\end{tabular}
+\end{table}
+
+
+\subsubsection{\textbackslash{}setupdivers}
+\label{setupdivers}
+\texttt{\textbackslash{}setupdivers} erwartet insgesamt sechs Argumente, welche
+weitere Zeichnungsoptionen, steuern. Die
+Argumente sind im Einzelnen in Tabelle~\ref{tab_optionen_setupdivers} aufgeführt.
+
+\begin{table}[hbtp]
+\centering
+\caption{Argumente von \texttt{\textbackslash{}setupdivers}}
+\label{tab_optionen_setupdivers}
+\begin{tabular}{l l l}
+\toprule
+& Typ & Beschreibung \\
+\midrule
+\texttt{\textbackslash{}setupdivers} & \{\emph{Länge}\} & horizontaler Abstand
+links $\leftrightarrow$ rechts \\
+& \{\emph{Länge}\} & Feinabstimmung Kollisionskontrolle x \\
+& \{\emph{Länge}\} & Feinabstimmung Kollisionskontrolle y \\
+& \{\emph{boolean}\} & lseins und rseins vertikal zentrieren \\
+& \{\emph{boolean}\} & lszwei und rszwei vertikal zentieren \\
+& \{\emph{boolean}\} & Randbox zeichnen \\
+\bottomrule
+\end{tabular}
+\end{table}
+
+
+\subsubsection{\textbackslash{}setuprlagentabellen}
+\texttt{\textbackslash{}setuprlagentabellen} erwartet insgesamt sieben Argumente,
+welche die Lagenfortführungstabellen steuern. Die
+Argumente sind im Einzelnen in Tabelle~\ref{tab_optionen_setuprlagentabellen} aufgeführt.
+Die letzten drei Längenangaben bei den Lagentabellen definieren dabei eine optionale
+Verschiebung der jeweiligen Tabelle in $x$-Richtung. Achtung: Führt
+eventuell zu Problemen, weitgehend ungetestet.
+
+\begin{table}[hbtp]
+\centering
+\caption{Argumente von \texttt{\textbackslash{}setuprlagentabellen}}
+\label{tab_optionen_setuprlagentabellen}
+\begin{tabular}{l l l}
+\toprule
+& Typ & Beschreibung \\
+\midrule
+\texttt{\textbackslash{}setuprlagentabellen} & \{\emph{Länge}\} &
+Spaltenbreite \\
+& \{\emph{Integer}\} & Anzahl Spalten Tabelle 1 \\
+& \{\emph{Integer}\} & Anzahl Spalten Tabelle 2 \\
+& \{\emph{Integer}\} & Anzahl Spalten Tabelle 3 \\
+& \{\emph{Länge}\} & optionale horizontale Verschiebung Tabelle 1 \\
+& \{\emph{Länge}\} & optionale horizontale Verschiebung Tabelle 2 \\
+& \{\emph{Länge}\} & optionale horizontale Verschiebung Tabelle 3 \\
+\bottomrule
+\end{tabular}
+\end{table}
+
+
+\subsection{Befehle zur Definition der einzelnen Elemente (optional)}
+\subsubsection{Festlegen der einzelnen Elemente links}
+Die einzelnen Blöcke links (Stammbaum) werden mit weiteren Befehlen
+definiert. Die Angabe dieser Elemente ist optional, nicht benötigte Blöcke
+müssen nicht definiert werden.
+
+Alle Befehle erwarten je ein Argument, einen beliebigen
+\TeX{}-Ausdruck, also zum Beispiel einen einzelnen Buchstabe, ein Wort, eine
+mathematische Formel, eine Tabelle etc. Die einzelnen Befehle und die
+entsprechende Bezeichung des jeweiligen Elements in
+Abbildung~\ref{abb_schematisch} lauten:
+\begin{itemize}
+\item \texttt{\textbackslash{}lverbindungeins}\{\TeX\emph{-Ausdruck}\}: lblockeins
+\item \texttt{\textbackslash{}lverbindungzwei}\{\TeX\emph{-Ausdruck}\}: lblockzwei
+\item \texttt{\textbackslash{}lverbindungdrei}\{\TeX\emph{-Ausdruck}\}: lblockdrei
+\item \texttt{\textbackslash{}labstiegeins}\{\TeX\emph{-Ausdruck}\}: lseins
+\item \texttt{\textbackslash{}labstiegzwei}\{\TeX\emph{-Ausdruck}\}: lszwei
+\end{itemize}
+
+
+\subsubsection{Festlegen der einzelnen Elemente rechts}
+Die einzelnen Blöcke rechts (Lagenfortführung) werden mit weiteren Befehlen
+definiert. Die Angabe dieser Elemente ist optional, nicht benötigte Blöcke
+müssen nicht definiert werden.
+
+Alle Befehle ervarten je ein Argument, einen beliebigen
+\TeX{}-Ausdruck, also zum Beispiel einen einzelnen Buchstabe, ein Wort, eine
+mathematische Formel, eine Tabelle etc. Die einzelnen Befehle und die
+entsprechende Bezeichung des jeweiligen Elements in
+Abbildung~\ref{abb_schematisch} lauten:
+\begin{itemize}
+\item
+\texttt{\textbackslash{}rlagentabelleeins}\{\TeX\emph{-Ausdruck}\}:
+rblockeins
+\item
+\texttt{\textbackslash{}rlagentabellezwei}\{\TeX\emph{-Ausdruck}\}:
+rblockzwei
+\item
+\texttt{\textbackslash{}rlagentabelledrei}\{\TeX\emph{-Ausdruck}\}:
+rblockdrei
+\item \texttt{\textbackslash{}rlagentranseins}\{\TeX\emph{-Ausdruck}\}: rseins
+\item \texttt{\textbackslash{}rlagentranszwei}\{\TeX\emph{-Ausdruck}\}: rszwei
+\end{itemize}
+
+\subsubsection{Festlegen der Pfeile rechts}
+Die Definition der Pfeile rechts zwischen den einzelnen Lagentabellen erfolgt
+mit Hilfe des Befehls \texttt{\textbackslash{}rechtspfeilsetup}. Dieser erhält
+als Argument eine Reihe von Pfeildefinitionen. Als Hilfe existieren die beiden
+weiteren Befehle
+\begin{itemize}
+\item \texttt{\textbackslash{}rpfeileinszwei}\{\emph{Integer}\}\{\emph{Integer}\} und
+\item \texttt{\textbackslash{}rpfeilzweidrei}\{\emph{Integer}\}\{\emph{Integer}\}.
+\end{itemize}
+ Beide erhalten jeweils zwei Argumente,
+die die Nummer des Start- und des Endkästchens der Pfeile festlegen.
+
+\texttt{\textbackslash{}rpfeileinszwei}\{1\}\{3\} zeichnet so beispielsweise einen
+Pfeil von Kästchen 1 der ersten Tabelle nach Kästchen 3 der zweiten Tabelle,
+\texttt{\textbackslash{}rpfeilzweidrei}\{4\}\{3\} entsprechend von Kästchen 4 der
+zweiten Tabelle nach Kästchen 3 der dritten.
+
+Hinweis: Die Start- und Endwerte müssen technisch gesehen keine Integerzahlen
+sein, eine Angabe der Form \texttt{\textbackslash{}rpfeileinszwei}\{1\}\{2.9\}
+ist durchaus möglich. Dies kann nützlich sein, um einzelne Pfeile minimal in der
+Position anzupassen, um ein \glqq{}Ineinanderlaufen\grqq{} mehrerer Pfeilspitzen
+zu verhindern.
+
+\subsubsection{Details zu den Lagentabellen}
+Damit die Pfeile rechts zwischen den Lagentabellen automatisch generiert werden
+können, müssen die Tabellen eine fixe, bekannte Breite besitzen. Aus diesem
+Grund sind die Lagentabellen in \texttt{tabularx}-Umgebungen mit fester
+Gesamtbreite anzugeben. Als Spaltentyp wurde der neue Typ \texttt{z} definiert,
+der Spalten mit fester Breite und zentriertem Inhalt liefert. Die Tabellen
+werden am einfachsten folgendermaßen definiert (Beispiel für Tabelle eins):
+\begin{quote}
+\begin{verbatim}
+\rlagentabelleeins{%
+\begin{tabularx}{\spaltenbreiteem*\spalteneins}[b]{|z|z|}
+... Tabelleninhalt ...
+\end{tabularx}%
+}
+\end{verbatim}
+\end{quote}
+Die Längenangabe
+\texttt{\{\textbackslash{}spaltenbreiteem{}*\textbackslash{}spalteneins\}} und
+die Platzierungsangabe \texttt{[b]} sollten dabei auf keinen Fall editiert
+werden, da hiermit die Berechnung der Breite und der vertikalen Platzierung
+durchgeführt werden. Die Einstellung der Spalten, im Beispiel \texttt{|z|z|},
+muss an die Anzahl der tatsächlich vorhandenen Spalten angepasst werden.
+
+Achtung: Eine Änderung der Schriftgröße mitten in einer Stammbaum-Umgebung kann
+bei Verwendung relativer Längeneinheiten (em, ex) zu unerwarteten Nebenwirkungen
+wie falsch platzierten Pfeilen führen!
+
+\subsection{Sonstige neue Befehle}
+Der neue Befehl \texttt{\textbackslash{}nfrac} wird
+definiert.\footnote{\texttt{\textbackslash{}nfrac} wurde übernommen aus: Donald
+E. Knuth: The \TeX{}book. Addison-Wesley Publ., Reading, Mass.,
+ März 1992.} Er erwartet zwei
+Argumente und bietet eine
+alternative Schreibweise für Brüche im Vergleich zur Standard-\LaTeX-Variante:
+\begin{quote}
+\texttt{\textbackslash{}nfrac\{2\}\{3\}}: $\nfrac{2}{3}$
+im Gegensatz zu
+\texttt{\textbackslash{}frac\{2\}\{3\}}: $\frac{2}{3}$
+\end{quote}
+Einige Abkürzungen für häufig benutzte Brüche werden ebenfalls vordefiniert:
+\begin{quote}
+\texttt{\textbackslash{}eh}: \eh,
+\texttt{\textbackslash{}ed}: \ed,
+\texttt{\textbackslash{}ev}: \ev,
+\texttt{\textbackslash{}es}: \es,
+\texttt{\textbackslash{}zd}: \zd,
+\texttt{\textbackslash{}dv}: \dv,
+\texttt{\textbackslash{}fs}: \fs,
+\texttt{\textbackslash{}ea}: \ea,
+\texttt{\textbackslash{}da}: \da,
+\texttt{\textbackslash{}fa}: \fa,
+\texttt{\textbackslash{}sa}: \sa,
+\end{quote}
+
+\section{Beispiele}
+\subsection{Einfacher Stammbaum ohne Lagenfortführung}
+Abbildung~\ref{abb_einfach} zeigt einen einfachen Stammbaum mit einem
+Symmetrieabstieg ohne Lagenfortführung. Der entsprechende Quellcode ist in
+Abbildung~\ref{abb_einfach_src} gezeigt.
+\begin{figure}[htbp]
+\centering
+\begin{stammbaum}
+
+\setuplinks%
+{true}% Raumgruppe und Summenformel 1
+{2em}% Mindestlänge Linie/Pfeil 1
+{true}% Abstiegssymbol 1
+{true}% Raumgruppe und Summenformel 2
+{0em}% Mindestlänge Linie/Pfeil 2
+{false}% Abstiegssymbol 2
+{false}% Raumgruppe und Summenformel 3
+{0em}% zusätzliche vertikale Abstände
+
+\setuprechts%
+{false}% Lagentabelle 1
+{0em}% Mindestlänge Linie/Pfeil 1
+{false}% Transformation 1
+{false}% Lagentabelle 2
+{0em}% Mindestlänge Linie/Pfeil 2
+{false}% Transformation 2
+{false}% Lagentabelle 3
+{0em}% zusätzliche vertikale Abstände
+
+\setupdivers%
+{0em}% horizontaler Abstand links <-> rechts
+{0em}% Feinabstimmung Kollisionskontrolle x
+{0em}% Feinabstimmung Kollisionskontrolle y
+{false}% lseins und rseins vertikal zentrieren
+{false}% lszwei und rszwei vertikal zentieren
+{false}% Randbox zeichnen
+
+\setuprlagentabellen%
+{0em}% Spaltenbreite
+{0}% Anzahl Spalten Tabelle eins
+{0}% Anzahl Spalten Tabelle zwei
+{0}% Anzahl Spalten Tabelle drei
+{0em}% horizontale Verschiebung Tabelle eins
+{0em}% horizontale Verschiebung Tabelle zwei
+{0em}% horizontale Verschiebung Tabelle drei
+
+\lverbindungeins{%
+\begin{tabular}{c}%
+$P6_3/mmc$\\
+\fbox{AuSn}\\
+\end{tabular}%
+}
+
+\labstiegeins{%
+t2%
+}
+
+\lverbindungzwei{%
+\begin{tabular}{c}%
+$P\overline{3}m1$\\
+\fbox{AuNiSn$_2$}\\
+\end{tabular}%
+}
+
+\end{stammbaum}
+
+\caption{Einfacher Stammbaum ohne Lagenfortführung.}
+\label{abb_einfach}
+\end{figure}
+
+\begin{figure}[bp]
+\centering
+\begin{minipage}{0.45\textwidth}
+\begin{tiny}
+\begin{verbatim}
+\begin{stammbaum}
+
+\setuplinks%
+{true}% Raumgruppe und Summenformel 1
+{2em}% Mindestlänge Linie/Pfeil 1
+{true}% Abstiegssymbol 1
+{true}% Raumgruppe und Summenformel 2
+{0em}% Mindestlänge Linie/Pfeil 2
+{false}% Abstiegssymbol 2
+{false}% Raumgruppe und Summenformel 3
+{0em}% zusätzliche vertikale Abstände
+
+\setuprechts%
+{false}% Lagentabelle 1
+{0em}% Mindestlänge Linie/Pfeil 1
+{false}% Transformation 1
+{false}% Lagentabelle 2
+{0em}% Mindestlänge Linie/Pfeil 2
+{false}% Transformation 2
+{false}% Lagentabelle 3
+{0em}% zusätzliche vertikale Abstände
+
+\setupdivers%
+{0em}% horizontaler Abstand links <-> rechts
+{0em}% Feinabstimmung Kollisionskontrolle x
+{0em}% Feinabstimmung Kollisionskontrolle y
+{false}% lseins und rseins vertikal zentrieren
+{false}% lszwei und rszwei vertikal zentieren
+{false}% Randbox zeichnen
+\end{verbatim}
+\end{tiny}
+\end{minipage}
+\hfill
+\begin{minipage}{0.45\textwidth}
+\begin{tiny}
+\begin{verbatim}
+\setuprlagentabellen%
+{0em}% Spaltenbreite
+{0}% Anzahl Spalten Tabelle eins
+{0}% Anzahl Spalten Tabelle zwei
+{0}% Anzahl Spalten Tabelle drei
+{0em}% horizontale Verschiebung Tabelle eins
+{0em}% horizontale Verschiebung Tabelle zwei
+{0em}% horizontale Verschiebung Tabelle drei
+
+\lverbindungeins{%
+\begin{tabular}{c}%
+$P6_3/mmc$\\
+\fbox{AuSn}\\
+\end{tabular}%
+}
+
+\labstiegeins{%
+t2%
+}
+
+\lverbindungzwei{%
+\begin{tabular}{c}%
+$P\overline{3}m1$\\
+\fbox{AuNiSn$_2$}\\
+\end{tabular}%
+}
+
+\end{stammbaum}
+\end{verbatim}
+\end{tiny}
+\end{minipage}
+\caption{Quellcode zu Abb.~\ref{abb_einfach}: Einfacher Stammbaum ohne Lagenfortführung.}
+\label{abb_einfach_src}
+\end{figure}
+
+
+
+\subsection{Einfacher Stammbaum mit Lagenfortführung}
+Abbildung~\ref{abb_einfach_mit} zeigt einen einfachen Stammbaum mit einem
+Symmetrieabstieg mit Lagenfortführung. Dieses Mal werden die Lagentabellen mit
+definiert. Zur Demonstration des optionalen Parameters zur Verschiebung der
+Tabellen ist die untere Tabelle um \texttt{2em} nach rechts verschoben. Der
+zugehörige Quellcode ist in Abbildung~\ref{abb_einfach_mit_src} gezeigt.
+
+\begin{figure}[btp]
+\centering
+\begin{stammbaum}
+\setuplinks%
+{true}% Raumgruppe und Summenformel 1
+{2em}% Mindestlänge Linie/Pfeil 1
+{true}% Abstiegssymbol 1
+{true}% Raumgruppe und Summenformel 2
+{0em}% Mindestlänge Linie/Pfeil 2
+{false}% Abstiegssymbol 2
+{false}% Raumgruppe und Summenformel 3
+{0em}% zusätzliche vertikale Abstände
+
+\setuprechts%
+{true}% Lagentabelle 1
+{2em}% Mindestlänge Linie/Pfeil 1
+{false}% Transformation 1
+{true}% Lagentabelle 2
+{0em}% Mindestlänge Linie/Pfeil 2
+{false}% Transformation 2
+{false}% Lagentabelle 3
+{0.5em}% zusätzliche vertikale Abstände
+
+\setupdivers%
+{1em}% horizontaler Abstand links <-> rechts
+{0em}% Feinabstimmung Kollisionskontrolle x
+{0em}% Feinabstimmung Kollisionskontrolle y
+{true}% lseins und rseins vertikal zentrieren
+{false}% lszwei und rszwei vertikal zentieren
+{false}% Randbox zeichnen
+
+\setuprlagentabellen%
+{4.5em}% Spaltenbreite
+{2}% Anzahl Spalten Tabelle eins
+{3}% Anzahl Spalten Tabelle zwei
+{0}% Anzahl Spalten Tabelle drei
+{0em}% horizontale Verschiebung Tabelle eins
+{2em}% horizontale Verschiebung Tabelle zwei
+{0em}% horizontale Verschiebung Tabelle drei
+
+
+\lverbindungeins{%
+\begin{tabular}{c}%
+$P6_3/mmc$\\
+\fbox{AuSn}\\
+\end{tabular}%
+}
+
+\labstiegeins{%
+t2%
+}
+
+\lverbindungzwei{%
+\begin{tabular}{c}%
+$P\overline{3}m1$\\
+\fbox{AuNiSn$_2$}\\
+\end{tabular}%
+}
+
+\rlagentabelleeins{%
+\begin{tabularx}{\spaltenbreiteem*\spalteneins}[b]{|z|z|}
+\hline
+Au: $2a$ & Sn: $2c$ \\
+$\overline{3}m.$ & $\overline{6}m2$ \\
+\hline
+0 & \ed \\
+0 & \zd \\
+0 & \ev \\
+\hline
+\end{tabularx}%
+}
+
+\rlagentabellezwei{%
+\begin{tabularx}{\spaltenbreiteem*\spaltenzwei}[b]{|z|z|z|}
+\hline
+Au: $2a$ & Ni: $1b$ & Sn: $2d$ \\
+$\overline{3}m.$ & $\overline{3}m.$ & $3m.$ \\
+\hline
+0 & 0 & \ed \\
+0 & 0 & \zd \\
+0 & \eh & 0.2831 \\
+\hline
+\end{tabularx}%
+}
+
+\rechtspfeilsetup{%
+\rpfeileinszwei{1}{1}
+\rpfeileinszwei{1}{2}
+\rpfeileinszwei{2}{3}
+}
+\end{stammbaum}
+\caption{Einfacher Stammbaum mit Lagenfortführung.}
+\label{abb_einfach_mit}
+\end{figure}
+
+\begin{figure}[btp]
+\centering
+\begin{minipage}{0.45\textwidth}
+\begin{tiny}
+\begin{verbatim}
+\begin{stammbaum}
+\setuplinks%
+{true}% Raumgruppe und Summenformel 1
+{2em}% Mindestlänge Linie/Pfeil 1
+{true}% Abstiegssymbol 1
+{true}% Raumgruppe und Summenformel 2
+{0em}% Mindestlänge Linie/Pfeil 2
+{false}% Abstiegssymbol 2
+{false}% Raumgruppe und Summenformel 3
+{0em}% zusätzliche vertikale Abstände
+
+\setuprechts%
+{true}% Lagentabelle 1
+{2em}% Mindestlänge Linie/Pfeil 1
+{false}% Transformation 1
+{true}% Lagentabelle 2
+{0em}% Mindestlänge Linie/Pfeil 2
+{false}% Transformation 2
+{false}% Lagentabelle 3
+{0.5em}% zusätzliche vertikale Abstände
+
+\setupdivers%
+{1em}% horizontaler Abstand links <-> rechts
+{0em}% Feinabstimmung Kollisionskontrolle x
+{0em}% Feinabstimmung Kollisionskontrolle y
+{true}% lseins und rseins vertikal zentrieren
+{false}% lszwei und rszwei vertikal zentieren
+{false}% Randbox zeichnen
+
+\setuprlagentabellen%
+{4.5em}% Spaltenbreite
+{2}% Anzahl Spalten Tabelle eins
+{3}% Anzahl Spalten Tabelle zwei
+{0}% Anzahl Spalten Tabelle drei
+{0em}% horizontale Verschiebung Tabelle eins
+{2em}% horizontale Verschiebung Tabelle zwei
+{0em}% horizontale Verschiebung Tabelle drei
+\end{verbatim}
+\end{tiny}
+\end{minipage}
+\hfill
+\begin{minipage}{0.45\textwidth}
+\begin{tiny}
+\begin{verbatim}
+\lverbindungeins{%
+\begin{tabular}{c}%
+$P6_3/mmc$\\
+\fbox{AuSn}\\
+\end{tabular}%
+}
+
+\labstiegeins{%
+t2%
+}
+
+\lverbindungzwei{%
+\begin{tabular}{c}%
+$P\overline{3}m1$\\
+\fbox{AuNiSn$_2$}\\
+\end{tabular}%
+}
+
+\rlagentabelleeins{%
+\begin{tabularx}{\spaltenbreiteem*\spalteneins}[b]{|z|z|}
+\hline
+Au: $2a$ & Sn: $2c$ \\
+$\overline{3}m.$ & $\overline{6}m2$ \\
+\hline
+0 & \ed \\
+0 & \zd \\
+0 & \ev \\
+\hline
+\end{tabularx}%
+}
+
+\rlagentabellezwei{%
+\begin{tabularx}{\spaltenbreiteem*\spaltenzwei}[b]{|z|z|z|}
+\hline
+Au: $2a$ & Ni: $1b$ & Sn: $2d$ \\
+$\overline{3}m.$ & $\overline{3}m.$ & $3m.$ \\
+\hline
+0 & 0 & \ed \\
+0 & 0 & \zd \\
+0 & \eh & 0.2831 \\
+\hline
+\end{tabularx}%
+}
+
+\rechtspfeilsetup{%
+\rpfeileinszwei{1}{1}
+\rpfeileinszwei{1}{2}
+\rpfeileinszwei{2}{3}
+}
+\end{stammbaum}
+\end{verbatim}
+\end{tiny}
+\end{minipage}
+
+\caption{Quellcode zu Abb.~\ref{abb_einfach_mit}: Einfacher Stammbaum mit Lagenfortführung.}
+\label{abb_einfach_mit_src}
+\end{figure}
+
+
+\subsection{Etwas aufwändigerer Stammbaum mit Lagenfortführung}
+Abbildung~\ref{abb_mit_aufw} zeigt einen etwas aufwändigeren Stammbaum
+mit zwei Symmetrieabbaustufen und Lagenfortführung. Außerdem wird die
+Möglichkeit der Angabe einer Lagentransformation demonstriert, auch wenn sie in
+diesem Beispiel kristallographisch gesehen sinnfrei ist. Die Pfeile rechts
+werden gegebenenfalls durchbrochen, wenn sie den Text der Lagentransformation
+schneiden würden. Die virtuelle Box um den Text der Lagentransformation (rseins,
+rszwei), die benutzt wird, um zu bestimmen, ob der Pfeil unterbrochen werden
+muss oder nicht, kann mit Hilfe eines Parameters zur Feineinstellung (Teil des
+Befehls \texttt{\textbackslash{}setupdivers}, siehe Abschnitt~\ref{setupdivers}) manuell
+vergrößert oder verkleinert werden, wenn die Ergebnisse suboptimal aussehen. In
+diesem Fall wurde der Parameter für die horizontale Feineinstellung auf
+\texttt{-0.5em} angepasst, um ein Durchbrechen des unteren Pfeils rechts außen
+zu verhindern.
+
+Dieses Beispiel zeigt auch die beiden unterschiedlichen Anordnungsoptionen für
+die Abstiegssymbole und die Lagentransformation. Im ersten Schritt sind beide
+auf gleicher Höhe ausgerichtet, das Abstiegssymbol ist dafür nicht mehr genau in
+der Mitte zwischen lblockeins und lblockzwei. Im Fall des zweiten Abstiegs sind
+rseins und lseins jeweils genau in der Mitte der Pfeile, aber dafür nicht bündig
+auf einer Höhe. Das Verhalten läßt sich mittels der Schalter in
+\texttt{\textbackslash{}setupdivers} einstellen (siehe
+Abschnitt~\ref{setupdivers}).
+
+Weiterhin wurden die Pfeilmindestlängen links und rechts auf diverse
+verschiedene Werte festgelegt, um diese Option zu demonstrieren.
+
+Der Quellcode zu diesem Beispiel ist in Abbildung~\ref{abb_mit_aufw_src}
+gezeigt.
+\begin{figure}[btp]
+\centering
+\begin{stammbaum}
+
+\setuplinks%
+{true}% Raumgruppe und Summenformel 1
+{1em}% Mindestlänge Linie/Pfeil 1
+{true}% Abstiegssymbol 1
+{true}% Raumgruppe und Summenformel 2
+{4em}% Mindestlänge Linie/Pfeil 2
+{true}% Abstiegssymbol 2
+{true}% Raumgruppe und Summenformel 3
+{0em}% zusätzliche vertikale Abstände
+
+\setuprechts%
+{true}% Lagentabelle 1
+{5em}% Mindestlänge Linie/Pfeil 1
+{true}% Transformation 1
+{true}% Lagentabelle 2
+{2em}% Mindestlänge Linie/Pfeil 2
+{true}% Transformation 2
+{true}% Lagentabelle 3
+{0.5em}% zusätzliche vertikale Abstände
+
+\setupdivers%
+{3em}% horizontaler Abstand links <-> rechts
+{-0.5em}% Feinabstimmung Kollisionskontrolle x
+{0em}% Feinabstimmung Kollisionskontrolle y
+{true}% lseins und rseins vertikal zentrieren
+{false}% lszwei und rszwei vertikal zentieren
+{false}% Randbox zeichnen
+
+\setuprlagentabellen%
+{4.5em}% Spaltenbreite
+{2}% Anzahl Spalten Tabelle eins
+{2}% Anzahl Spalten Tabelle zwei
+{4}% Anzahl Spalten Tabelle drei
+{0em}% horizontale Verschiebung Tabelle eins
+{0em}% horizontale Verschiebung Tabelle zwei
+{0em}% horizontale Verschiebung Tabelle drei
+
+\lverbindungeins{%
+\begin{tabular}{c}%
+$P6_3/m \, 2/c \, 2/m$\\[0.3em]
+\fbox{hex. TiI$_3$}\\
+\end{tabular}%
+}
+
+\labstiegeins{%
+\begin{tabular}{c}
+k3\\
+$\mathbf{a-b, a+2b, c}$
+\end{tabular}%
+}
+
+\lverbindungzwei{%
+$P6_3/m \, 2/m \, 2/c$%\\
+}
+
+\labstiegzwei{%
+t2%
+}
+
+\lverbindungdrei{%
+\begin{tabular}{c}
+$P\overline{3} \, 2/m \, 1$\\[0.3em]
+\fbox{$\beta$-WCl$_6$}\\
+\end{tabular}%
+}
+
+\rlagentranseins{%
+$x,y,z$ (überflüssig)%
+}
+
+\rlagentranszwei{%
+$x,y,z$ (sinnfrei)%
+}
+
+\rlagentabelleeins{%
+\begin{tabularx}{\spaltenbreiteem*\spalteneins}[t]{|z|z|}
+\hline
+Ti: $2b$ & $\Box$: $4d$ \\
+$\overline{3}m$ & $3.2$ \\
+\hline
+0 & \zd \\
+0 & \ed \\
+0 & 0 \\
+\hline
+\end{tabularx}%
+}
+
+\rlagentabellezwei{%
+\begin{tabularx}{\spaltenbreiteem*\spaltenzwei}[t]{|z|z|}%
+\hline
+$2a$ & $4f$ \\
+$\overline{3}m$ & $3m$ \\
+\hline
+0 & \ed \\
+0 & \zd \\
+0 & 0.0 \\
+\hline
+\end{tabularx}%
+}
+
+\rlagentabelledrei{%
+\begin{tabularx}{\spaltenbreiteem*\spaltendrei}[t]{|z|z|z|z|}
+\hline
+W1: $1a$ & $\Box$: $1b$ & W2: $2d$ & $\Box$: $2d$\\
+$\overline{3}m$ & $\overline{3}m$ & $3m$ & $3m$ \\
+\hline
+0 & 0 & \ed & \ed \\
+0 & 0 & \zd & \zd \\
+0 & \eh & 0.473 & 0.0 \\
+\hline
+\end{tabularx}%
+}
+
+
+\rechtspfeilsetup{
+\rpfeileinszwei{1}{1}
+\rpfeileinszwei{1}{2}
+\rpfeilzweidrei{1}{1}
+\rpfeilzweidrei{1}{2}
+\rpfeilzweidrei{2}{3}
+\rpfeilzweidrei{2}{4}
+}
+\end{stammbaum}
+
+\caption{Etwas aufwändigerer Stammbaum mit Lagenfortführung und
+(sinnfreier) Koordinatentransformation.}
+\label{abb_mit_aufw}
+\end{figure}
+
+\begin{figure}[btp]
+\centering
+\begin{minipage}{0.45\textwidth}
+\begin{tiny}
+\begin{verbatim}
+
+\begin{stammbaum}
+
+\setuplinks%
+{true}% Raumgruppe und Summenformel 1
+{1em}% Mindestlänge Linie/Pfeil 1
+{true}% Abstiegssymbol 1
+{true}% Raumgruppe und Summenformel 2
+{4em}% Mindestlänge Linie/Pfeil 2
+{true}% Abstiegssymbol 2
+{true}% Raumgruppe und Summenformel 3
+{0em}% zusätzliche vertikale Abstände
+
+\setuprechts%
+{true}% Lagentabelle 1
+{5em}% Mindestlänge Linie/Pfeil 1
+{true}% Transformation 1
+{true}% Lagentabelle 2
+{2em}% Mindestlänge Linie/Pfeil 2
+{true}% Transformation 2
+{true}% Lagentabelle 3
+{0.5em}% zusätzliche vertikale Abstände
+
+\setupdivers%
+{3em}% horizontaler Abstand links <-> rechts
+{-0.5em}% Feinabstimmung Kollisionskontrolle x
+{0em}% Feinabstimmung Kollisionskontrolle y
+{true}% lseins und rseins vertikal zentrieren
+{false}% lszwei und rszwei vertikal zentieren
+{false}% Randbox zeichnen
+
+\setuprlagentabellen%
+{4.5em}% Spaltenbreite
+{2}% Anzahl Spalten Tabelle eins
+{2}% Anzahl Spalten Tabelle zwei
+{4}% Anzahl Spalten Tabelle drei
+{0em}% horizontale Verschiebung Tabelle eins
+{0em}% horizontale Verschiebung Tabelle zwei
+{0em}% horizontale Verschiebung Tabelle drei
+
+\lverbindungeins{%
+\begin{tabular}{c}%
+$P6_3/m \, 2/c \, 2/m$\\[0.3em]
+\fbox{hex. TiI$_3$}\\
+\end{tabular}%
+}
+
+\labstiegeins{%
+\begin{tabular}{c}
+k3\\
+$\mathbf{a-b, a+2b, c}$
+\end{tabular}%
+}
+
+\lverbindungzwei{%
+$P6_3/m \, 2/m \, 2/c$%\\
+}
+
+\labstiegzwei{%
+t2%
+}
+\end{verbatim}
+\end{tiny}
+\end{minipage}
+\hfill
+\begin{minipage}{0.45\textwidth}
+\begin{tiny}
+\begin{verbatim}
+\lverbindungdrei{%
+\begin{tabular}{c}
+$P\overline{3} \, 2/m \, 1$\\[0.3em]
+\fbox{$\beta$-WCl$_6$}\\
+\end{tabular}%
+}
+
+\rlagentranseins{%
+$x,y,z$ (überflüssig)%
+}
+
+\rlagentranszwei{%
+$x,y,z$ (sinnfrei)%
+}
+
+\rlagentabelleeins{%
+\begin{tabularx}{\spaltenbreiteem*\spalteneins}[t]{|z|z|}
+\hline
+Ti: $2b$ & $\Box$: $4d$ \\
+$\overline{3}m$ & $3.2$ \\
+\hline
+0 & \zd \\
+0 & \ed \\
+0 & 0 \\
+\hline
+\end{tabularx}%
+}
+
+\rlagentabellezwei{%
+\begin{tabularx}{\spaltenbreiteem*\spaltenzwei}[t]{|z|z|}%
+\hline
+$2a$ & $4f$ \\
+$\overline{3}m$ & $3m$ \\
+\hline
+0 & \ed \\
+0 & \zd \\
+0 & 0.0 \\
+\hline
+\end{tabularx}%
+}
+
+\rlagentabelledrei{%
+\begin{tabularx}{\spaltenbreiteem*\spaltendrei}[t]{|z|z|z|z|}
+\hline
+W1: $1a$ & $\Box$: $1b$ & W2: $2d$ & $\Box$: $2d$\\
+$\overline{3}m$ & $\overline{3}m$ & $3m$ & $3m$ \\
+\hline
+0 & 0 & \ed & \ed \\
+0 & 0 & \zd & \zd \\
+0 & \eh & 0.473 & 0.0 \\
+\hline
+\end{tabularx}%
+}
+
+
+\rechtspfeilsetup{
+\rpfeileinszwei{1}{1}
+\rpfeileinszwei{1}{2}
+\rpfeilzweidrei{1}{1}
+\rpfeilzweidrei{1}{2}
+\rpfeilzweidrei{2}{3}
+\rpfeilzweidrei{2}{4}
+}
+\end{stammbaum}
+\end{verbatim}
+\end{tiny}
+\end{minipage}
+\caption{Quellcode zu Abb.~\ref{abb_mit_aufw}: Etwas aufwändigerer Stammbaum mit Lagenfortführung und
+(sinnfreier) Koordinatentransformation.}
+\label{abb_mit_aufw_src}
+\end{figure}
+
+\section{Lizenz}
+Dieses Paket unterliegt der LaTeX Project Public License, siehe
+\href{http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html}{http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html} für nähere
+Details.
+Copyright \textcopyright{} 2006, 2007 Stefan Lange
+
+\section{Dank}
+Die Idee für dieses Paket basiert auf einem \LaTeXe{}-Beispiel von Prof. Dr. U.
+Müller, in dem ebenfalls Stammbäume mit Hilfe der picture-Umgebung gesetzt
+werden. Ich danke Melanie Bawohl, Michael Bräu und Michael Leitl für das Testen und viele
+hilfreiche Kommentare und Hinweise.
+
+\section{Fehler}
+Ich habe versucht, alle offensichtlichen Fehler zu beseitigen. Nichtsdestotrotz
+sind möglicherweise noch Fehler enthalten. Insbesondere ist das Paket sehr
+anfällig gegenüber unsinnigen Eingaben, es gibt kein Fehlermanagement. Die
+Übersetzungszeit für einen Stammbaum ist aufgrund sehr vieler (ineffizient
+umgesetzter) Berechnungen relativ hoch.
+
+\section{Kontakt}
+Anregungen, Kommentare und Fehlerberichte sind erwünscht an die email-Adresse
+\href{mailto:hoirkman@gmx.de}{hoirkman@gmx.de}.
+
+
+\end{document}