summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/tudscr
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/tudscr
Initial commit
Diffstat (limited to 'macros/latex/contrib/tudscr')
-rw-r--r--macros/latex/contrib/tudscr/README.md396
-rw-r--r--macros/latex/contrib/tudscr/doc/LICENSE.md27
-rw-r--r--macros/latex/contrib/tudscr/doc/tudscr.pdfbin0 -> 1160027 bytes
-rw-r--r--macros/latex/contrib/tudscr/doc/tudscr_print.pdfbin0 -> 1144579 bytes
-rw-r--r--macros/latex/contrib/tudscr/doc/tudscrsource.pdfbin0 -> 1014750 bytes
-rw-r--r--macros/latex/contrib/tudscr/doc/tutorials/mathswap.pdfbin0 -> 122341 bytes
-rw-r--r--macros/latex/contrib/tudscr/doc/tutorials/mathtype.pdfbin0 -> 139909 bytes
-rw-r--r--macros/latex/contrib/tudscr/doc/tutorials/treatise.pdfbin0 -> 889138 bytes
-rw-r--r--macros/latex/contrib/tudscr/logo/DDC-01.eps1416
-rw-r--r--macros/latex/contrib/tudscr/logo/DDC-01.pdfbin0 -> 14980 bytes
-rw-r--r--macros/latex/contrib/tudscr/logo/DDC-03.eps810
-rw-r--r--macros/latex/contrib/tudscr/logo/DDC-03.pdfbin0 -> 10466 bytes
-rw-r--r--macros/latex/contrib/tudscr/logo/DDC-07.eps2226
-rw-r--r--macros/latex/contrib/tudscr/logo/DDC-07.pdfbin0 -> 15857 bytes
-rw-r--r--macros/latex/contrib/tudscr/logo/DDC-09.eps2430
-rw-r--r--macros/latex/contrib/tudscr/logo/DDC-09.pdfbin0 -> 11370 bytes
-rw-r--r--macros/latex/contrib/tudscr/logo/DDC-19.eps1415
-rw-r--r--macros/latex/contrib/tudscr/logo/DDC-19.pdfbin0 -> 14957 bytes
-rw-r--r--macros/latex/contrib/tudscr/logo/DDC-21.eps810
-rw-r--r--macros/latex/contrib/tudscr/logo/DDC-21.pdfbin0 -> 10456 bytes
-rw-r--r--macros/latex/contrib/tudscr/logo/DDC-22.eps2224
-rw-r--r--macros/latex/contrib/tudscr/logo/DDC-22.pdfbin0 -> 15737 bytes
-rw-r--r--macros/latex/contrib/tudscr/logo/DDC-24.eps2428
-rw-r--r--macros/latex/contrib/tudscr/logo/DDC-24.pdfbin0 -> 11278 bytes
-rw-r--r--macros/latex/contrib/tudscr/logo/DDC-25.eps2224
-rw-r--r--macros/latex/contrib/tudscr/logo/DDC-25.pdfbin0 -> 15833 bytes
-rw-r--r--macros/latex/contrib/tudscr/logo/DDC-27.eps2428
-rw-r--r--macros/latex/contrib/tudscr/logo/DDC-27.pdfbin0 -> 11376 bytes
-rw-r--r--macros/latex/contrib/tudscr/logo/DDC-28.eps2216
-rw-r--r--macros/latex/contrib/tudscr/logo/DDC-28.pdfbin0 -> 15796 bytes
-rw-r--r--macros/latex/contrib/tudscr/logo/DDC-30.eps2420
-rw-r--r--macros/latex/contrib/tudscr/logo/DDC-30.pdfbin0 -> 11338 bytes
-rw-r--r--macros/latex/contrib/tudscr/logo/TUD-black.eps987
-rw-r--r--macros/latex/contrib/tudscr/logo/TUD-black.pdfbin0 -> 9486 bytes
-rw-r--r--macros/latex/contrib/tudscr/logo/TUD-blue.eps987
-rw-r--r--macros/latex/contrib/tudscr/logo/TUD-blue.pdfbin0 -> 9491 bytes
-rw-r--r--macros/latex/contrib/tudscr/logo/TUD-white.eps987
-rw-r--r--macros/latex/contrib/tudscr/logo/TUD-white.pdfbin0 -> 9486 bytes
-rw-r--r--macros/latex/contrib/tudscr/source/doc/examples/dissertation.tex38
-rw-r--r--macros/latex/contrib/tudscr/source/doc/examples/document.tex20
-rw-r--r--macros/latex/contrib/tudscr/source/doc/examples/evaluation.tex47
-rw-r--r--macros/latex/contrib/tudscr/source/doc/examples/mathswap-example.tex38
-rw-r--r--macros/latex/contrib/tudscr/source/doc/examples/mathtype-example.tex66
-rw-r--r--macros/latex/contrib/tudscr/source/doc/examples/notice.tex47
-rw-r--r--macros/latex/contrib/tudscr/source/doc/examples/poster.tex46
-rw-r--r--macros/latex/contrib/tudscr/source/doc/examples/poster_print.tex2
-rw-r--r--macros/latex/contrib/tudscr/source/doc/examples/task.tex47
-rw-r--r--macros/latex/contrib/tudscr/source/doc/examples/thesis.tex37
-rw-r--r--macros/latex/contrib/tudscr/source/doc/examples/treatise-example.tex442
-rw-r--r--macros/latex/contrib/tudscr/source/doc/sub-tudscr.tex17
-rw-r--r--macros/latex/contrib/tudscr/source/doc/tudscr-additional.tex52
-rw-r--r--macros/latex/contrib/tudscr/source/doc/tudscr-bundle.tex417
-rw-r--r--macros/latex/contrib/tudscr/source/doc/tudscr-examples.tex146
-rw-r--r--macros/latex/contrib/tudscr/source/doc/tudscr-hints.tex940
-rw-r--r--macros/latex/contrib/tudscr/source/doc/tudscr-index.tex97
-rw-r--r--macros/latex/contrib/tudscr/source/doc/tudscr-installation.tex567
-rw-r--r--macros/latex/contrib/tudscr/source/doc/tudscr-introduction.tex166
-rw-r--r--macros/latex/contrib/tudscr/source/doc/tudscr-mainclasses.tex3663
-rw-r--r--macros/latex/contrib/tudscr/source/doc/tudscr-obsolete.tex968
-rw-r--r--macros/latex/contrib/tudscr/source/doc/tudscr-packages.tex1054
-rw-r--r--macros/latex/contrib/tudscr/source/doc/tudscr-poster.tex371
-rw-r--r--macros/latex/contrib/tudscr/source/doc/tudscr-preface.tex57
-rw-r--r--macros/latex/contrib/tudscr/source/doc/tudscr-supervisor.tex411
-rw-r--r--macros/latex/contrib/tudscr/source/doc/tudscr.tex162
-rw-r--r--macros/latex/contrib/tudscr/source/doc/tutorials/mathswap.tex227
-rw-r--r--macros/latex/contrib/tudscr/source/doc/tutorials/mathtype.tex204
-rw-r--r--macros/latex/contrib/tudscr/source/doc/tutorials/treatise.tex3351
-rw-r--r--macros/latex/contrib/tudscr/source/tudscr-area.dtx2317
-rw-r--r--macros/latex/contrib/tudscr/source/tudscr-base.dtx1467
-rw-r--r--macros/latex/contrib/tudscr/source/tudscr-color.dtx459
-rw-r--r--macros/latex/contrib/tudscr/source/tudscr-comp.dtx2265
-rw-r--r--macros/latex/contrib/tudscr/source/tudscr-doc.dtx1598
-rw-r--r--macros/latex/contrib/tudscr/source/tudscr-fields.dtx1253
-rw-r--r--macros/latex/contrib/tudscr/source/tudscr-fonts.dtx4268
-rw-r--r--macros/latex/contrib/tudscr/source/tudscr-frontmatter.dtx1339
-rw-r--r--macros/latex/contrib/tudscr/source/tudscr-layout.dtx1825
-rw-r--r--macros/latex/contrib/tudscr/source/tudscr-localization.dtx1006
-rw-r--r--macros/latex/contrib/tudscr/source/tudscr-manual.dtx6388
-rw-r--r--macros/latex/contrib/tudscr/source/tudscr-mathswap.dtx297
-rw-r--r--macros/latex/contrib/tudscr/source/tudscr-misc.dtx715
-rw-r--r--macros/latex/contrib/tudscr/source/tudscr-pagestyle.dtx2785
-rw-r--r--macros/latex/contrib/tudscr/source/tudscr-supervisor.dtx603
-rw-r--r--macros/latex/contrib/tudscr/source/tudscr-texindy.dtx605
-rw-r--r--macros/latex/contrib/tudscr/source/tudscr-title.dtx1604
-rw-r--r--macros/latex/contrib/tudscr/source/tudscr-twocolfix.dtx258
-rw-r--r--macros/latex/contrib/tudscr/source/tudscr-version.dtx324
-rw-r--r--macros/latex/contrib/tudscr/source/tudscr.ins287
-rw-r--r--macros/latex/contrib/tudscr/source/tudscrsource.tex106
88 files changed, 71900 insertions, 0 deletions
diff --git a/macros/latex/contrib/tudscr/README.md b/macros/latex/contrib/tudscr/README.md
new file mode 100644
index 0000000000..a8c40a6c76
--- /dev/null
+++ b/macros/latex/contrib/tudscr/README.md
@@ -0,0 +1,396 @@
+
+ TUD-Script &ndash; Corporate Design of Technische Universität Dresden
+----------------------------------------------------------------------------
+
+ Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2019
+
+ tudscr 2019/08/27 v2.06d
+
+----------------------------------------------------------------------------
+
+ This material is subject to the LaTeX Project Public License version 1.3c
+ or later. See http://www.latex-project.org/lppl.txt for details.
+ English text below
+
+----------------------------------------------------------------------------
+
+Zusammenfassung
+---------------
+
+Das TUD-Script-Bundle stellt sowohl Klassen als auch Pakete bereit, um
+LaTeX-Dokumente im Corporate Design der Technischen Universität Dresden zu
+erstellen. Es basiert auf dem KOMA-Script-Bundle, welches zwingend vorhanden
+sein muss. Bei Fragen, Problemen und Anmerkungen sei entweder auf das
+[LaTeX-Forum der Technischen Universität Dresden](https://latex.wcms-file3.tu-dresden.de/phpBB3/)
+oder das
+[GitHub-Repository *tudscr*](https://github.com/tud-cd/tudscr/issues)
+verwiesen:
+
+
+Klassen und Pakete
+------------------
+
+Das Bundle beinhaltet:
+
++ die drei Dokumentklassen **tudscrartcl**, **tudscrreprt**, **tudscrbook**
+ als Wrapper-Klassen von **scrartcl**, **scrreprt** und **scrbook**,
++ die Klasse **tudscrposter** für das Erstellen von Postern
++ das Paket **tudscrsupervisor**, welches Umgebungen und Befehle für die
+ Erstellung von Aufgabenstellungen, Gutachten und Aushängen bereitstellt,
++ das Paket **tudscrfonts**, das die Schriften des Corporate Designs der
+ Technischen Universität Dresden für die LaTeX-Standard-Klassen und die
+ KOMA-Script-Klassen nutzbar macht,
++ das Paket **fix-tudscrfonts**, das selbige Schriften für weitere
+ TUD-CD-Klassen verfügbar macht, welche nicht zu TUD-Script gehören,
++ das Paket **tudscrcomp**, welches den Umstieg von fremden TUD-CD-Klassen auf
+ TUD-Script vereinfacht,
++ das Paket **mathswap** für das Austauschen mathematischer Trennzeichen
+ innerhalb von Zahlen (ähnlich zu **ionumbers**),
++ das Paket **twocolfix** zur Fehlerbefehbung der Position von Überschriften
+ im zweispaltigen Layout und
++ eine umfassende Anwenderdokumentation sowie mehrere Tutorials.
+
+Versionen
+---------
+
+**v2.06d** (2019/08/27)
++ Bugfix für griechische Glyphen im Mathematikmodus beim Einsatz von LuaLaTeX
+ (Ligaturen für angrenzende Glyphen sind entgegen der Definition aktiviert)
+
+**v2.06c** (2019/08/20)
++ Bugfix für Paket **fix-tudscrfonts**
++ Bugfix für `\textrightarrow`
++ vertikales Layout der Ausgaben von Paket **tudscrsupervisor** verbessert
++ Verwendung von Paket **mathastext** angepasst
+
+**v2.06b** (2019/07/17)
++ Bugfix für nicht ordnungsgemäßes NFSS (New Font Selection Scheme)
+
+**v2.06a** (2019/07/09)
++ Bugfix für Paket **mathastext** bezüglich der Eingabekodierung
+
+**v2.06** (2019/06/28)
++ Open Sans als neue Schrift des Corporate Designs
++ Minuskelziffern als Standard auswählbar
++ Unterstützung von Roboto Mono als Schreibmaschinenschrift
++ Unterschriftenfeld auf Titel mit Option `titlesignature` bereitgestellt
++ E-Mail-Adresse auf Titel mit `\emailaddress` nutzbar
++ Befehl `\frontispiece` aus KOMA-Script unterstützt
++ individuelle Untertitel für Teile und Kapitel mit `\setpartsubtitle` und
+ `\setchaptersubtitle` möglich
+
+**v2.05m** (2017/05/30)
++ Bugfix für Unicode-Engines für die Glyphe `ß`
++ Bugfix für Paket **siunitx** bei Erkennung der Schriftfamilie
+
+**v2.05l** (2017/03/29)
++ Bugfix für Paket **fontspec** bei Option `cdfont=false`
++ Bugfix für Paket **fontspec** bei Schriftnamen
+
+**v2.05k** (2017/03/27)
++ Bugfix für Gliederungsbefehle `\addpart`, `\addchap` und `\addsec`
++ kleinere Anpassungen für Dokumentationsklassen
+
+**v2.05i** (2017/03/12)
++ Befehl `\Describe<Element>s` für mehrere Elemente in Klasse **tudscrdoc**
++ Umgebung `DescribeParameterParent` in Klasse **tudscrdoc**
++ Bugfix für `\mu` bei Mathematikschriften
++ Bugfix in Klasse **tudscrmanual** für neue Version von **xparse**
+
+**v2.05h** (2017/02/04)
++ Quelltextdokumentationsklasse **tudscrdoc** an neue Version von **dox**
+ angepasst
++ Glyphen (`lessequal` und `greaterequal`) in Schriftfamilien korrigiert
+
+**v2.05g** (2017/01/26)
++ Erweiterung der Quelltextdokumentationsklasse **tudscrdoc**
++ kleinere Fehler im TUD-Script-Bundle behoben
+
+**v2.05f** (2016/10/12)
++ Probleme mit dem Paket **bm** behoben
+
+**v2.05e** (2016/10/10)
++ Bugfix für Verwendung von `\author` nach `\maketitle`
+
+**v2.05d** (2016/09/22)
++ Bezeichnung in TUD-Script-Bundle geändert
++ Probleme mit dem Paket **flexisym** behoben
+
+**v2.05c** (2016/09/15)
++ Bugfix bei Verwendung von KOMA-Script v3.19 und früher
+
+**v2.05b** (2016/09/09)
++ Bugfix für **fix-tudscrfonts**
+
+**v2.05a** (2016/08/24)
++ Bugfix für Überprüfung der installierten Schriften
+
+**v2.05** (2016/07/26)
++ Klasse **tudscrposter**
++ Schnittmarken mit Paketen **crop** und **geometry** möglich
++ neue Einstellungsmöglichkeiten für den Satzspiegel
++ schriftgrößenabhängige Abstände mit Option `relspacing`
++ `\course` und `\discipline` für Titel nutzbar
++ Paket **tudscrcomp**: Unterstützung der Klassen **tudmathposter** und
+ **tudposter**
++ Paket **fix-tudscrfonts**
+
+**v2.04e** (2016/06/17)
++ Bugfix für Teile mit KOMA-Script v3.21
+
+**v2.04d** (2016/03/26)
++ Bugfix für Titelseite bei **tudscrartcl**
+
+**v2.04c** (2015/11/29)
++ Bugfix für fehlenden Schriften bei Verwendung von Paket **fontspec**
+
+**v2.04b** (2015/10/06)
++ Bugfix für KOMA-Script v3.19
+
+**v2.04a** (2015/07/24)
++ Bugfix für Option `ddc`
+
+**v2.04** (2015/07/02)
++ Anpassungen an KOMA-Script v3.18
++ Einfachere Verwendung von Paket **fontspec**
++ verbesserte Installationsroutine der Schriften für portable Distributionen
++ alleinstehender farbiger Querbalken im Kopfbereich
++ freier Inhalt im Fußbereich möglich
+
+**v2.03a** (2015/06/11)
++ Anpassungen an KOMA-Script v3.17
++ Fehlerkorrektur für Auswahl der Mathematikschriften
+
+**v2.03** (2015/02/15)
++ Anpassungen an KOMA-Script v3.15
++ Verbesserung des Satzspiegels für das Corporate Design
++ Kopf und Fuß können farbig dargestellt werden
++ Logos in der Fußzeile für Titel und dergleichen möglich
++ kleinere Fehlerkorrekturen
+
+**v2.02** (2014/12/17)
++ Paket **tudscrfonts**
++ Probleme mit der Klasse **standalone** behoben
++ Laden der Schriften des Corporate Designs im OpenType-Format mit Paket
+ **fontspec** ermöglicht
++ verbesserte Installationsroutine der Type1-Schriften
++ Seiten im Stil des Corporate Designs werden mithilfe des Paketes
+ **scrlayer-scrpage** erzeugt
++ verschiedene Optionen und Befehle zur individuellen Gestaltung dieser Seiten
++ Unterstützung der KOMA-Script-Schriftelemente für Titel und Umschlagseite
++ Befehle und Umgebungen für Zusammenfassung, Selbstständigkeitserklärung und
+ Sperrvermerk wurden verbessert
++ Fussnoten in Überschriften als Symbole per Option `footnotes`
++ einige Befehle wurden für Kompatibilität zu anderen Paketen umbenannt
++ Funktionalität des Paketes **mathswap** im Dokument umschaltbar
+
+**v2.01b** (2014/06/04)
++ Bug bei Aufgabenstellung behoben (tudscrsupervisor)
+
+**v2.01a** (2014/06/03)
++ Bug bei der Verwendung des Untertitels behoben
+
+**v2.01** (2014/04/24)
++ Fehlerkorrekturen beim Kerning der Ziffern und bei der Schriftstärke auf der
+ Titelseite
+
+**v2.00** (2014/04/22)
++ Das TUD-Script-Bundle wurde von Grund auf überarbeitet und mittels Paket
+ **docstrip** erzeugt. Viele Fehler wurden entfernt und die Robustheit der
+ Befehle und Optionen wurde erhöht. Die Verwendung der Schriften, insbesondere
+ für den mathematischen Satz, wurde entscheidend verbessert. Weiterhin erfuhr
+ das Handbuch des Bundles eine komplette Überarbeitung, wurde erweitert und um
+ mehrere Indexe ergänzt.
+
+**v1.0** (2012/10/31)
++ erste Version des TUD-Script-Bundles
+
+-------------------------------------------------------------------------------
+
+Summary
+-------
+
+The TUD-Script bundle provides both classes and packages in order to create
+LaTeX documents in the corporate design of the Technische Universität Dresden.
+It bases on the KOMA-Script bundle, which must necessarily be present.
+For questions, problems and comments, please refer to eihter the
+[LaTeX forum of the Technische Universität Dresden](https://latex.wcms-file3.tu-dresden.de/phpBB3/)
+or the
+[GitHub repository *tudscr*](https://github.com/tud-cd/tudscr/issues):
+
+
+Classes and Packages
+--------------------
+
+The bundle offers:
+
++ the three document classes **tudscrartcl**, **tudscrreprt**, **tudscrbook**
+ as wrapper classes for **scrartcl**, **scrreprt** and **scrbook**,
++ the class **tudscrposter** for creating posters,
++ the package **tudscrsupervisor** providing environments and macros to create
+ tasks, evaluations and notices for scientific theses,
++ the package **tudscrfonts**, which makes the corporate design fonts of the
+ Technische Universität Dresden available for LaTeX standard classes and
+ KOMA-Script classes,
++ the package **fix-tudscrfonts**, which provides the same fonts to additional
+ corporate design classes not related to TUD-Script
++ the package **tudscrcomp**, which simplifies the switch to TUD-Script
+ from external corporate design classes,
++ the package **mathswap** for swapping math delimiters within numbers
+ (similiar to **ionumbers**),
++ the package **twocolfix** for fixing the positioning bug of headings in
+ twocolumn layout and
++ an comprehensive user documentation as well as several tutorials.
+
+Versions
+--------
+
+**v2.06d** (2019/08/27)
++ bug fix for greek glyphs in math mode when using LuaLaTeX
+ (boundary ligatures are activated contrary to definition)
+
+**v2.06c** (2019/08/20)
++ bug fix for package **fix-tudscrfonts**
++ bug fix for `\textrightarrow`
++ improved vertical layout of output generated by package **tudscrsupervisor**
++ revised usage of package **mathastext**
+
+**v2.06b** (2019/07/17)
++ bug fix for improper NFSS (New Font Selection Scheme)
+
+**v2.06a** (2019/07/09)
++ bug fix for package **mathastext** regarding input encoding
+
+**v2.06** (2019/06/28)
++ Open Sans as new corporate design font
++ text figures selectable as default
++ support of Roboto Mono as typewriter font
++ signature field on title page with option `titlesignature` provided
++ e-mail address on title page with `\emailaddress` available
++ macro `\frontispiece` from KOMA-Script supported
++ customized subtitles for parts and chapters with `\setpartsubtitle` and
+ `\setchaptersubtitle` possible
+
+**v2.05m** (2017/05/30)
++ bug fix for Unicode engines for glyph`ß`
++ bug fix for package **siunitx** when recognizing the font family
+
+**v2.05l** (2017/03/29)
++ bug fix for package **fontspec** with option `cdfont=false`
++ bug fix for package **fontspec** with font names
+
+**v2.05k** (2017/03/27)
++ bug fix for sectioning commands `\addpart`, `\addchap` und `\addsec`
++ small adaptions for documentation classes
+
+**v2.05i** (2017/03/12)
++ command `\Describe<Element>s` for mutliple elements in class **tudscrdoc**
++ environment `DescribeParameterParent` in class **tudscrdoc**
++ bug fix for `\mu` with math font
++ bug fix in class **tudscrmanual** for new version of **xparse**
+
+**v2.05h** (2017/02/04)
++ adaption to source code documentation class **tudscrdoc** for updated **dox**
++ glyphs (`lessequal` und `greaterequal`) in font families corrected
+
+**v2.05g** (2017/01/26)
++ enhancement of the source code documentation class **tudscrdoc**
++ minor errors fixed within the TUD-Script bundle
+
+**v2.05f** (2016/10/12)
++ solved problems with package **bm**
+
+**v2.05e** (2016/10/10)
++ bug fix for usage of `\author` after `\maketitle`
+
+**v2.05d** (2016/09/22)
++ notation changed to TUD-Script bundle
++ solved problems with package **flexisym**
+
+**v2.05c** (2016/09/15)
++ bug fix for usage of KOMA-Script v3.19 and earlier
+
+**v2.05b** (2016/09/09)
++ bug fix for **fix-tudscrfonts**
+
+**v2.05a** (2016/08/24)
++ bug fix for verification of installed fonts
+
+**v2.05** (2016/07/26)
++ class **tudscrposter**
++ crop marks with packages **crop** and **geometry** possible
++ new possible settings for type area
++ font size related skips with option `relspacing`
++ `\course` and `\discipline` available on title
++ package **tudscrcomp**: support for classes **tudmathposter** and
+ **tudposter**
++ package **fix-tudscrfonts**
+
+**v2.04e** (2016/06/17)
++ bug fix for parts with KOMA-Script v3.21
+
+**v2.04d** (2016/03/26)
++ bug fix for titlepage with **tudscrartcl**
+
+**v2.04c** (2015/11/29)
++ bug fix for missing fonts when using package **fontspec**
+
+**v2.04b** (2015/10/06)
++ bug fix for KOMA-Script v3.19
+
+**v2.04a** (2015/07/24)
++ bug fix for option `ddc`
+
+**v2.04** (2015/07/02)
++ adjustments to KOMA-Script v3.18
++ simpler usage of package **fontspec**
++ improved installation routine for portable distributions
++ solitary colored head bar
++ customisable content in the foot possible
+
+**v2.03a** (2015/06/11)
++ adjustments to KOMA-Script v3.17
++ bug fix for math font selecting
+
+**v2.03** (2015/02/15)
++ adjustments to KOMA-Script v3.15
++ improvement of the corporate design type area
++ colored head and foot possible
++ including logos in the foot for the title etc.
++ a few little bug fixes
+
+**v2.02** (2014/12/17)
++ package **tudscrfonts**
++ fixed bug with class **standalone**
++ loading the corporate design fonts in OpenType format with package
+ **fontspec** is possible
++ improved installation routine of Type1 fonts
++ pages in the style of the corporate design are generated using the package
+ **scrlayer-scrpage**
++ various options and commands to customize these pages
++ support of the KOMA-Script font elements for title and cover
++ commands and environments for abstract, statement of authorship and
+ restriction note have been improved
++ footnotes in headings can be set as symbols per option `footnotes`
++ some commands have been renamed for compatibility with other packages
++ functionality of the package **mathswap** can be switched within the document
+
+**v2.01b** (2014/06/04)
++ fixed bug when using task (tudscrsupervisor)
+
+**v2.01a** (2014/06/03)
++ fixed bug when using the subtitle
+
+**v2.01** (2014/04/24)
++ fixes the kerning of the digits and the font weight at the title page
+
+**v2.00** (2014/04/22)
++ The TUD-Script bundle has been redesigned from the ground up and is
+ generated by using **docstrip**. Many bugs have been removed and the
+ robustness of the commands and options has been increased. The use of the
+ fonts, especially for the mathematical set, was significantly improved. The
+ manual of the bundle underwent a complete overhaul, has been extended and
+ supplemented by several indexes.
+
+**v1.0** (2012/10/31)
++ first version of the TUD-Script bundle
diff --git a/macros/latex/contrib/tudscr/doc/LICENSE.md b/macros/latex/contrib/tudscr/doc/LICENSE.md
new file mode 100644
index 0000000000..52ebe38692
--- /dev/null
+++ b/macros/latex/contrib/tudscr/doc/LICENSE.md
@@ -0,0 +1,27 @@
+
+ TUD-Script &ndash; Corporate Design of Technische Universität Dresden
+----------------------------------------------------------------------------
+
+ Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2019
+
+----------------------------------------------------------------------------
+
+ This work may be distributed and/or modified under the conditions of the
+ LaTeX Project Public License, version 1.3c of the license. The latest
+ version of this license is in http://www.latex-project.org/lppl.txt and
+ version 1.3c or later is part of all distributions of LaTeX 2005/12/01
+ or later and of this work. This work has the LPPL maintenance status
+ "author-maintained". The current maintainer and author of this work
+ is Falk Hanisch.
+
+----------------------------------------------------------------------------
+
+ Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+ in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
+ Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+ Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
+ oder später und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status
+ "author-maintained", wird somit allein durch den Autor verwaltet. Der
+ aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
+
+----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tudscr/doc/tudscr.pdf b/macros/latex/contrib/tudscr/doc/tudscr.pdf
new file mode 100644
index 0000000000..30ffccd618
--- /dev/null
+++ b/macros/latex/contrib/tudscr/doc/tudscr.pdf
Binary files differ
diff --git a/macros/latex/contrib/tudscr/doc/tudscr_print.pdf b/macros/latex/contrib/tudscr/doc/tudscr_print.pdf
new file mode 100644
index 0000000000..c83ee17fd9
--- /dev/null
+++ b/macros/latex/contrib/tudscr/doc/tudscr_print.pdf
Binary files differ
diff --git a/macros/latex/contrib/tudscr/doc/tudscrsource.pdf b/macros/latex/contrib/tudscr/doc/tudscrsource.pdf
new file mode 100644
index 0000000000..08518292d7
--- /dev/null
+++ b/macros/latex/contrib/tudscr/doc/tudscrsource.pdf
Binary files differ
diff --git a/macros/latex/contrib/tudscr/doc/tutorials/mathswap.pdf b/macros/latex/contrib/tudscr/doc/tutorials/mathswap.pdf
new file mode 100644
index 0000000000..cfe485c226
--- /dev/null
+++ b/macros/latex/contrib/tudscr/doc/tutorials/mathswap.pdf
Binary files differ
diff --git a/macros/latex/contrib/tudscr/doc/tutorials/mathtype.pdf b/macros/latex/contrib/tudscr/doc/tutorials/mathtype.pdf
new file mode 100644
index 0000000000..feec6d7a62
--- /dev/null
+++ b/macros/latex/contrib/tudscr/doc/tutorials/mathtype.pdf
Binary files differ
diff --git a/macros/latex/contrib/tudscr/doc/tutorials/treatise.pdf b/macros/latex/contrib/tudscr/doc/tutorials/treatise.pdf
new file mode 100644
index 0000000000..3d1c94649d
--- /dev/null
+++ b/macros/latex/contrib/tudscr/doc/tutorials/treatise.pdf
Binary files differ
diff --git a/macros/latex/contrib/tudscr/logo/DDC-01.eps b/macros/latex/contrib/tudscr/logo/DDC-01.eps
new file mode 100644
index 0000000000..8f3ab393f7
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/DDC-01.eps
@@ -0,0 +1,1416 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%XpdfVersion: 3.03
+%%Creator: Adobe Illustrator CS4
+%%Title: DDC-01.eps
+%%LanguageLevel: 2
+%%DocumentSuppliedResources: (atend)
+%%BoundingBox: 0 0 35 70
+%%HiResBoundingBox: 0 0 34.582 69.165
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset xpdf 3.03 0
+%%Copyright: Copyright 1996-2011 Glyph & Cog, LLC
+/xpdf 75 dict def xpdf begin
+% PDF special state
+/pdfDictSize 15 def
+/pdfSetup {
+ /setpagedevice where {
+ pop 2 dict begin
+ /Policies 1 dict dup begin /PageSize 6 def end def
+ { /Duplex true def } if
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfSetupPaper {
+ 2 array astore
+ /setpagedevice where {
+ pop 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfStartPage {
+ pdfDictSize dict begin
+ /pdfFillCS [] def
+ /pdfFillXform {} def
+ /pdfStrokeCS [] def
+ /pdfStrokeXform {} def
+ /pdfFill [0] def
+ /pdfStroke [0] def
+ /pdfFillOP false def
+ /pdfStrokeOP false def
+ /pdfLastFill false def
+ /pdfLastStroke false def
+ /pdfTextMat [1 0 0 1 0 0] def
+ /pdfFontSize 0 def
+ /pdfCharSpacing 0 def
+ /pdfTextRender 0 def
+ /pdfTextRise 0 def
+ /pdfWordSpacing 0 def
+ /pdfHorizScaling 1 def
+ /pdfTextClipPath [] def
+} def
+/pdfEndPage { end } def
+% PDF color state
+/cs { /pdfFillXform exch def dup /pdfFillCS exch def
+ setcolorspace } def
+/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def
+ setcolorspace } def
+/sc { pdfLastFill not { pdfFillCS setcolorspace } if
+ dup /pdfFill exch def aload pop pdfFillXform setcolor
+ /pdfLastFill true def /pdfLastStroke false def } def
+/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if
+ dup /pdfStroke exch def aload pop pdfStrokeXform setcolor
+ /pdfLastStroke true def /pdfLastFill false def } def
+/op { /pdfFillOP exch def
+ pdfLastFill { pdfFillOP setoverprint } if } def
+/OP { /pdfStrokeOP exch def
+ pdfLastStroke { pdfStrokeOP setoverprint } if } def
+/fCol {
+ pdfLastFill not {
+ pdfFillCS setcolorspace
+ pdfFill aload pop pdfFillXform setcolor
+ pdfFillOP setoverprint
+ /pdfLastFill true def /pdfLastStroke false def
+ } if
+} def
+/sCol {
+ pdfLastStroke not {
+ pdfStrokeCS setcolorspace
+ pdfStroke aload pop pdfStrokeXform setcolor
+ pdfStrokeOP setoverprint
+ /pdfLastStroke true def /pdfLastFill false def
+ } if
+} def
+% build a font
+/pdfMakeFont {
+ 4 3 roll findfont
+ 4 2 roll matrix scale makefont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /Encoding exch def
+ currentdict
+ end
+ definefont pop
+} def
+/pdfMakeFont16 {
+ exch findfont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /WMode exch def
+ currentdict
+ end
+ definefont pop
+} def
+% graphics state operators
+/q { gsave pdfDictSize dict begin } def
+/Q {
+ end grestore
+ /pdfLastFill where {
+ pop
+ pdfLastFill {
+ pdfFillOP setoverprint
+ } {
+ pdfStrokeOP setoverprint
+ } ifelse
+ } if
+} def
+/cm { concat } def
+/d { setdash } def
+/i { setflat } def
+/j { setlinejoin } def
+/J { setlinecap } def
+/M { setmiterlimit } def
+/w { setlinewidth } def
+% path segment operators
+/m { moveto } def
+/l { lineto } def
+/c { curveto } def
+/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+ neg 0 rlineto closepath } def
+/h { closepath } def
+% path painting operators
+/S { sCol stroke } def
+/Sf { fCol stroke } def
+/f { fCol fill } def
+/f* { fCol eofill } def
+% clipping operators
+/W { clip newpath } def
+/W* { eoclip newpath } def
+/Ws { strokepath clip newpath } def
+% text state operators
+/Tc { /pdfCharSpacing exch def } def
+/Tf { dup /pdfFontSize exch def
+ dup pdfHorizScaling mul exch matrix scale
+ pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put
+ exch findfont exch makefont setfont } def
+/Tr { /pdfTextRender exch def } def
+/Ts { /pdfTextRise exch def } def
+/Tw { /pdfWordSpacing exch def } def
+/Tz { /pdfHorizScaling exch def } def
+% text positioning operators
+/Td { pdfTextMat transform moveto } def
+/Tm { /pdfTextMat exch def } def
+% text string operators
+/xyshow where {
+ pop
+ /xyshow2 {
+ dup length array
+ 0 2 2 index length 1 sub {
+ 2 index 1 index 2 copy get 3 1 roll 1 add get
+ pdfTextMat dtransform
+ 4 2 roll 2 copy 6 5 roll put 1 add 3 1 roll dup 4 2 roll put
+ } for
+ exch pop
+ xyshow
+ } def
+}{
+ /xyshow2 {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval show moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval show moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/cshow where {
+ pop
+ /xycp {
+ 0 3 2 roll
+ {
+ pop pop currentpoint 3 2 roll
+ 1 string dup 0 4 3 roll put false charpath moveto
+ 2 copy get 2 index 2 index 1 add get
+ pdfTextMat dtransform rmoveto
+ 2 add
+ } exch cshow
+ pop pop
+ } def
+}{
+ /xycp {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval false charpath moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval false charpath moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/Tj {
+ fCol
+ 0 pdfTextRise pdfTextMat dtransform rmoveto
+ currentpoint 4 2 roll
+ pdfTextRender 1 and 0 eq {
+ 2 copy xyshow2
+ } if
+ pdfTextRender 3 and dup 1 eq exch 2 eq or {
+ 3 index 3 index moveto
+ 2 copy
+ currentfont /FontType get 3 eq { fCol } { sCol } ifelse
+ xycp currentpoint stroke moveto
+ } if
+ pdfTextRender 4 and 0 ne {
+ 4 2 roll moveto xycp
+ /pdfTextClipPath [ pdfTextClipPath aload pop
+ {/moveto cvx}
+ {/lineto cvx}
+ {/curveto cvx}
+ {/closepath cvx}
+ pathforall ] def
+ currentpoint newpath moveto
+ } {
+ pop pop pop pop
+ } ifelse
+ 0 pdfTextRise neg pdfTextMat dtransform rmoveto
+} def
+/TJm { 0.001 mul pdfFontSize mul pdfHorizScaling mul neg 0
+ pdfTextMat dtransform rmoveto } def
+/TJmV { 0.001 mul pdfFontSize mul neg 0 exch
+ pdfTextMat dtransform rmoveto } def
+/Tclip { pdfTextClipPath cvx exec clip newpath
+ /pdfTextClipPath [] def } def
+% Level 2/3 image operators
+/pdfImBuf 100 string def
+/pdfImStr {
+ 2 copy exch length lt {
+ 2 copy get exch 1 add exch
+ } {
+ ()
+ } ifelse
+} def
+/skipEOD {
+ { currentfile pdfImBuf readline
+ not { pop exit } if
+ (%-EOD-) eq { exit } if } loop
+} def
+/pdfIm { image skipEOD } def
+/pdfImM { fCol imagemask skipEOD } def
+/pr { 2 index 2 index 3 2 roll putinterval 4 add } def
+/pdfImClip {
+ gsave
+ 0 2 4 index length 1 sub {
+ dup 4 index exch 2 copy
+ get 5 index div put
+ 1 add 3 index exch 2 copy
+ get 3 index div put
+ } for
+ pop pop rectclip
+} def
+/pdfImClipEnd { grestore } def
+% shading operators
+/colordelta {
+ false 0 1 3 index length 1 sub {
+ dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt {
+ pop true
+ } if
+ } for
+ exch pop exch pop
+} def
+/funcCol { func n array astore } def
+/funcSH {
+ dup 0 eq {
+ true
+ } {
+ dup 6 eq {
+ false
+ } {
+ 4 index 4 index funcCol dup
+ 6 index 4 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 5 index 5 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 6 index 8 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ colordelta or or or
+ } ifelse
+ } ifelse
+ {
+ 1 add
+ 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch
+ 6 index 6 index 4 index 4 index 4 index funcSH
+ 2 index 6 index 6 index 4 index 4 index funcSH
+ 6 index 2 index 4 index 6 index 4 index funcSH
+ 5 3 roll 3 2 roll funcSH pop pop
+ } {
+ pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul
+ funcCol sc
+ dup 4 index exch mat transform m
+ 3 index 3 index mat transform l
+ 1 index 3 index mat transform l
+ mat transform l pop pop h f*
+ } ifelse
+} def
+/axialCol {
+ dup 0 lt {
+ pop t0
+ } {
+ dup 1 gt {
+ pop t1
+ } {
+ dt mul t0 add
+ } ifelse
+ } ifelse
+ func n array astore
+} def
+/axialSH {
+ dup 2 lt {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index axialCol 2 index axialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index axialSH
+ exch 3 2 roll axialSH
+ } {
+ pop 2 copy add 0.5 mul
+ axialCol sc
+ exch dup dx mul x0 add exch dy mul y0 add
+ 3 2 roll dup dx mul x0 add exch dy mul y0 add
+ dx abs dy abs ge {
+ 2 copy yMin sub dy mul dx div add yMin m
+ yMax sub dy mul dx div add yMax l
+ 2 copy yMax sub dy mul dx div add yMax l
+ yMin sub dy mul dx div add yMin l
+ h f*
+ } {
+ exch 2 copy xMin sub dx mul dy div add xMin exch m
+ xMax sub dx mul dy div add xMax exch l
+ exch 2 copy xMax sub dx mul dy div add xMax exch l
+ xMin sub dx mul dy div add xMin exch l
+ h f*
+ } ifelse
+ } ifelse
+} def
+/radialCol {
+ dup t0 lt {
+ pop t0
+ } {
+ dup t1 gt {
+ pop t1
+ } if
+ } ifelse
+ func n array astore
+} def
+/radialSH {
+ dup 0 eq {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index dt mul t0 add radialCol
+ 2 index dt mul t0 add radialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index radialSH
+ exch 3 2 roll radialSH
+ } {
+ pop 2 copy add 0.5 mul dt mul t0 add
+ radialCol sc
+ encl {
+ exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 0 360 arc h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 360 0 arcn h f
+ } {
+ 2 copy
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arcn
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arcn h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arc
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arc h f
+ } ifelse
+ } ifelse
+} def
+end
+%%EndResource
+%%EndProlog
+%%BeginSetup
+xpdf begin
+%%EndSetup
+pdfStartPage
+[] 0 d
+1 i
+0 j
+0 J
+10 M
+1 w
+/DeviceGray {} cs
+[0] sc
+/DeviceGray {} CS
+[0] SC
+false op
+false OP
+{} settransfer
+0 0 34.582 69.165 re
+W
+q
+/DeviceRGB {} cs
+[0 0 0] sc
+[0.2941 0.302 0.3098] sc
+false op
+false OP
+1 i
+q
+[1 0 0 1 2.6743 27.613] cm
+0 0 m
+-0.1645 0.18 -0.3848 0.263 -0.6645 0.263 c
+-1.3843 0.263 l
+-1.3843 -2.582 l
+-0.6645 -2.582 l
+-0.3848 -2.582 -0.1645 -2.5 0 -2.318 c
+0.2031 -2.094 0.209 -1.67 0.209 -1.133 c
+0.209 -0.594 0.2031 -0.226 0 0 c
+0.4063 -2.746 m
+0.1592 -2.994 -0.1973 -3.115 -0.604 -3.115 c
+-1.977 -3.115 l
+-1.977 0.795 l
+-0.604 0.795 l
+-0.1973 0.795 0.1592 0.674 0.4063 0.428 c
+0.8291 0.004 0.8017 -0.566 0.8017 -1.133 c
+0.8017 -1.697 0.8291 -2.324 0.4063 -2.746 c
+f
+Q
+q
+[1 0 0 1 6.3745 27.876] cm
+0 0 m
+-0.8789 0 l
+-0.8789 -1.225 l
+0 -1.225 l
+0.395 -1.225 0.6645 -0.999 0.6645 -0.616 c
+0.6645 -0.23 0.395 0 0 0 c
+0.6865 -3.378 m
+-0.1372 -1.729 l
+-0.8789 -1.729 l
+-0.8789 -3.378 l
+-1.4722 -3.378 l
+-1.4722 0.532 l
+0.044 0.532 l
+0.7852 0.532 1.2573 0.054 1.2573 -0.609 c
+1.2573 -1.169 0.917 -1.526 0.4775 -1.647 c
+1.3779 -3.378 l
+0.6865 -3.378 l
+f
+Q
+q
+[1 0 0 1 9.0478 24.498] cm
+0 0 m
+0 3.91 l
+2.499 3.91 l
+2.499 3.378 l
+0.5928 3.378 l
+0.5928 2.235 l
+2.218 2.235 l
+2.218 1.709 l
+0.5928 1.709 l
+0.5928 0.533 l
+2.499 0.533 l
+2.499 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 13.945 24.466] cm
+0 0 m
+-0.587 0 -1.011 0.138 -1.384 0.516 c
+-0.988 0.905 l
+-0.703 0.62 -0.39 0.532 0.011 0.532 c
+0.522 0.532 0.818 0.752 0.818 1.132 c
+0.818 1.302 0.769 1.444 0.665 1.538 c
+0.566 1.631 0.467 1.669 0.236 1.702 c
+-0.225 1.769 l
+-0.544 1.812 -0.796 1.921 -0.966 2.081 c
+-1.159 2.263 -1.252 2.51 -1.252 2.827 c
+-1.252 3.509 -0.758 3.976 0.055 3.976 c
+0.571 3.976 0.934 3.845 1.269 3.531 c
+0.89 3.157 l
+0.648 3.388 0.368 3.46 0.039 3.46 c
+-0.423 3.46 -0.675 3.196 -0.675 2.851 c
+-0.675 2.708 -0.631 2.581 -0.527 2.487 c
+-0.428 2.399 -0.269 2.335 -0.088 2.306 c
+0.357 2.24 l
+0.719 2.185 0.923 2.098 1.087 1.949 c
+1.301 1.763 1.406 1.481 1.406 1.147 c
+1.406 0.429 0.818 0 0 0 c
+f
+Q
+q
+[1 0 0 1 18.672 27.613] cm
+0 0 m
+-0.165 0.18 -0.385 0.263 -0.665 0.263 c
+-1.384 0.263 l
+-1.384 -2.582 l
+-0.665 -2.582 l
+-0.385 -2.582 -0.165 -2.5 0 -2.318 c
+0.204 -2.094 0.209 -1.67 0.209 -1.133 c
+0.209 -0.594 0.204 -0.226 0 0 c
+0.406 -2.746 m
+0.159 -2.994 -0.197 -3.115 -0.604 -3.115 c
+-1.977 -3.115 l
+-1.977 0.795 l
+-0.604 0.795 l
+-0.197 0.795 0.159 0.674 0.406 0.428 c
+0.829 0.004 0.802 -0.566 0.802 -1.133 c
+0.802 -1.697 0.829 -2.324 0.406 -2.746 c
+f
+Q
+q
+[1 0 0 1 20.9 24.498] cm
+0 0 m
+0 3.91 l
+2.498 3.91 l
+2.498 3.378 l
+0.593 3.378 l
+0.593 2.235 l
+2.218 2.235 l
+2.218 1.709 l
+0.593 1.709 l
+0.593 0.533 l
+2.498 0.533 l
+2.498 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 27.16 24.498] cm
+0 0 m
+-1.807 2.752 l
+-1.807 0 l
+-2.4 0 l
+-2.4 3.91 l
+-1.857 3.91 l
+-0.05 1.164 l
+-0.05 3.91 l
+0.544 3.91 l
+0.544 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 7.1758 18.125] cm
+0 0 m
+-0.626 0 -1.2412 0.385 -1.2412 1.428 c
+-1.2412 2.473 -0.626 2.851 0 2.851 c
+0.3848 2.851 0.6533 2.74 0.917 2.461 c
+0.5332 2.088 l
+0.3569 2.279 0.2197 2.351 0 2.351 c
+-0.2139 2.351 -0.395 2.264 -0.5161 2.103 c
+-0.6367 1.95 -0.6807 1.752 -0.6807 1.428 c
+-0.6807 1.104 -0.6367 0.901 -0.5161 0.748 c
+-0.395 0.588 -0.2139 0.5 0 0.5 c
+0.2197 0.5 0.3569 0.572 0.5332 0.764 c
+0.917 0.396 l
+0.6533 0.115 0.3848 0 0 0 c
+f
+Q
+q
+[1 0 0 1 10.629 20.316] cm
+0 0 m
+-0.105 0.105 -0.248 0.16 -0.412 0.16 c
+-0.577 0.16 -0.7144 0.105 -0.8188 0 c
+-0.9888 -0.17 -1.0107 -0.461 -1.0107 -0.764 c
+-1.0107 -1.065 -0.9888 -1.356 -0.8188 -1.526 c
+-0.7144 -1.631 -0.577 -1.691 -0.412 -1.691 c
+-0.248 -1.691 -0.105 -1.631 0 -1.526 c
+0.17 -1.356 0.192 -1.065 0.192 -0.764 c
+0.192 -0.461 0.17 -0.17 0 0 c
+0.422 -1.861 m
+0.241 -2.048 -0.033 -2.191 -0.412 -2.191 c
+-0.7905 -2.191 -1.0606 -2.048 -1.2412 -1.861 c
+-1.5044 -1.586 -1.5708 -1.234 -1.5708 -0.764 c
+-1.5708 -0.296 -1.5044 0.056 -1.2412 0.33 c
+-1.0606 0.517 -0.7905 0.66 -0.412 0.66 c
+-0.033 0.66 0.241 0.517 0.422 0.33 c
+0.686 0.056 0.752 -0.296 0.752 -0.764 c
+0.752 -1.234 0.686 -1.586 0.422 -1.861 c
+f
+Q
+q
+[1 0 0 1 14.384 18.159] cm
+0 0 m
+0 1.696 l
+0 2.13 -0.248 2.317 -0.56 2.317 c
+-0.873 2.317 -1.137 2.124 -1.137 1.696 c
+-1.137 0 l
+-1.697 0 l
+-1.697 2.784 l
+-1.148 2.784 l
+-1.148 2.503 l
+-0.956 2.712 -0.687 2.817 -0.407 2.817 c
+-0.121 2.817 0.115 2.724 0.28 2.563 c
+0.495 2.357 0.561 2.092 0.561 1.778 c
+0.561 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 17.453 18.125] cm
+0 0 m
+-0.626 0 -1.241 0.385 -1.241 1.428 c
+-1.241 2.473 -0.626 2.851 0 2.851 c
+0.385 2.851 0.653 2.74 0.917 2.461 c
+0.533 2.088 l
+0.357 2.279 0.219 2.351 0 2.351 c
+-0.214 2.351 -0.396 2.264 -0.517 2.103 c
+-0.637 1.95 -0.681 1.752 -0.681 1.428 c
+-0.681 1.104 -0.637 0.901 -0.517 0.748 c
+-0.396 0.588 -0.214 0.5 0 0.5 c
+0.219 0.5 0.357 0.572 0.533 0.764 c
+0.917 0.396 l
+0.653 0.115 0.385 0 0 0 c
+f
+Q
+q
+[1 0 0 1 21.055 20.158] cm
+0 0 m
+-0.088 0.209 -0.286 0.351 -0.549 0.351 c
+-0.813 0.351 -1.016 0.209 -1.104 0 c
+-1.159 -0.127 -1.169 -0.209 -1.175 -0.379 c
+0.077 -0.379 l
+0.071 -0.209 0.055 -0.127 0 0 c
+-1.175 -0.77 m
+-1.175 -1.247 -0.923 -1.549 -0.467 -1.549 c
+-0.154 -1.549 0.011 -1.461 0.208 -1.264 c
+0.565 -1.6 l
+0.28 -1.885 0.011 -2.033 -0.478 -2.033 c
+-1.175 -2.033 -1.73 -1.664 -1.73 -0.605 c
+-1.73 0.296 -1.263 0.818 -0.549 0.818 c
+0.198 0.818 0.631 0.267 0.631 -0.523 c
+0.631 -0.77 l
+-1.175 -0.77 l
+f
+Q
+q
+[1 0 0 1 24.118 20.477] cm
+0 0 m
+-0.505 0 -0.583 -0.428 -0.583 -0.924 c
+-0.583 -1.418 -0.505 -1.851 0 -1.851 c
+0.504 -1.851 0.577 -1.418 0.577 -0.924 c
+0.577 -0.428 0.504 0 0 0 c
+0.823 -2.104 m
+0.67 -2.258 0.428 -2.351 0.148 -2.351 c
+-0.149 -2.351 -0.379 -2.273 -0.583 -2.033 c
+-0.583 -3.444 l
+-1.143 -3.444 l
+-1.143 0.467 l
+-0.593 0.467 l
+-0.593 0.17 l
+-0.385 0.422 -0.159 0.499 0.142 0.499 c
+0.422 0.499 0.67 0.406 0.823 0.252 c
+1.103 -0.028 1.136 -0.5 1.136 -0.924 c
+1.136 -1.346 1.103 -1.824 0.823 -2.104 c
+f
+Q
+q
+[1 0 0 1 27.39 18.159] cm
+0 0 m
+-0.522 0 -0.764 0.373 -0.764 0.775 c
+-0.764 2.306 l
+-1.082 2.306 l
+-1.082 2.734 l
+-0.764 2.734 l
+-0.764 3.579 l
+-0.204 3.579 l
+-0.204 2.734 l
+0.335 2.734 l
+0.335 2.306 l
+-0.204 2.306 l
+-0.204 0.802 l
+-0.204 0.599 -0.105 0.478 0.105 0.478 c
+0.335 0.478 l
+0.335 0 l
+0 0 l
+f
+Q
+[0.6039 0.8 0.4039] sc
+q
+[1 0 0 1 0.73389 12.113] cm
+0 0 m
+0 2.752 l
+1.708 2.752 l
+1.708 2.488 l
+0.2939 2.488 l
+0.2939 1.52 l
+1.4995 1.52 l
+1.4995 1.256 l
+0.2939 1.256 l
+0.2939 0.264 l
+1.708 0.264 l
+1.708 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 4.4043 12.113] cm
+0 0 m
+-0.4565 0.738 l
+-0.9199 0 l
+-1.2564 0 l
+-0.6108 0.971 l
+-1.2295 1.901 l
+-0.8931 1.901 l
+-0.4565 1.198 l
+-0.0274 1.901 l
+0.3091 1.901 l
+-0.3096 0.971 l
+0.3359 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 5.4272 12.113] cm
+0 0 m
+0 0.24 l
+1.0591 1.654 l
+0.0581 1.654 l
+0.0581 1.901 l
+1.3794 1.901 l
+1.3794 1.666 l
+0.3164 0.248 l
+1.3794 0.248 l
+1.3794 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 8.8423 13.516] cm
+0 0 m
+-0.0732 0.175 -0.2437 0.287 -0.4448 0.287 c
+-0.6455 0.287 -0.8154 0.175 -0.8887 0 c
+-0.9312 -0.104 -0.939 -0.161 -0.9463 -0.316 c
+0.0581 -0.316 l
+0.0503 -0.161 0.0425 -0.104 0 0 c
+-0.9463 -0.524 m
+-0.9463 -0.941 -0.7495 -1.182 -0.3867 -1.182 c
+-0.1665 -1.182 -0.0386 -1.115 0.1123 -0.965 c
+0.3018 -1.131 l
+0.1084 -1.325 -0.0693 -1.426 -0.3941 -1.426 c
+-0.8965 -1.426 -1.2246 -1.124 -1.2246 -0.451 c
+-1.2246 0.162 -0.9272 0.523 -0.4448 0.523 c
+0.0464 0.523 0.3364 0.167 0.3364 -0.396 c
+0.3364 -0.524 l
+-0.9463 -0.524 l
+f
+Q
+q
+[1 0 0 1 10.611 12.113] cm
+0 0 m
+-0.332 0 -0.483 0.217 -0.483 0.506 c
+-0.483 2.752 l
+-0.205 2.752 l
+-0.205 0.518 l
+-0.205 0.332 -0.143 0.24 0.05 0.24 c
+0.201 0.24 l
+0.201 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 12.125 12.113] cm
+0 0 m
+-0.333 0 -0.483 0.217 -0.483 0.506 c
+-0.483 2.752 l
+-0.205 2.752 l
+-0.205 0.518 l
+-0.205 0.332 -0.143 0.24 0.05 0.24 c
+0.201 0.24 l
+0.201 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 14.188 13.516] cm
+0 0 m
+-0.073 0.175 -0.244 0.287 -0.445 0.287 c
+-0.646 0.287 -0.815 0.175 -0.889 0 c
+-0.931 -0.104 -0.939 -0.161 -0.947 -0.316 c
+0.058 -0.316 l
+0.05 -0.161 0.043 -0.104 0 0 c
+-0.947 -0.524 m
+-0.947 -0.941 -0.75 -1.182 -0.387 -1.182 c
+-0.167 -1.182 -0.039 -1.115 0.112 -0.965 c
+0.302 -1.131 l
+0.108 -1.325 -0.07 -1.426 -0.394 -1.426 c
+-0.896 -1.426 -1.225 -1.124 -1.225 -0.451 c
+-1.225 0.162 -0.928 0.523 -0.445 0.523 c
+0.046 0.523 0.336 0.167 0.336 -0.396 c
+0.336 -0.524 l
+-0.947 -0.524 l
+f
+Q
+q
+[1 0 0 1 16.699 12.113] cm
+0 0 m
+0 1.171 l
+0 1.508 -0.182 1.678 -0.467 1.678 c
+-0.753 1.678 -0.939 1.504 -0.939 1.171 c
+-0.939 0 l
+-1.217 0 l
+-1.217 1.901 l
+-0.939 1.901 l
+-0.939 1.693 l
+-0.804 1.848 -0.619 1.925 -0.406 1.925 c
+-0.201 1.925 -0.035 1.863 0.081 1.746 c
+0.216 1.615 0.278 1.437 0.278 1.218 c
+0.278 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 17.865 12.113] cm
+0 0 m
+0 0.24 l
+1.059 1.654 l
+0.058 1.654 l
+0.058 1.901 l
+1.379 1.901 l
+1.379 1.666 l
+0.317 0.248 l
+1.379 0.248 l
+1.379 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 22.567 12.991] cm
+0 0 m
+-0.534 0 l
+-0.82 0 -0.959 -0.116 -0.959 -0.337 c
+-0.959 -0.558 -0.823 -0.661 -0.522 -0.661 c
+-0.359 -0.661 -0.216 -0.649 -0.097 -0.534 c
+-0.031 -0.472 0 -0.364 0 -0.206 c
+0 0 l
+h
+0 -0.878 m
+0 -0.696 l
+-0.154 -0.851 -0.294 -0.901 -0.549 -0.901 c
+-0.811 -0.901 -0.966 -0.851 -1.086 -0.728 c
+-1.179 -0.634 -1.229 -0.491 -1.229 -0.341 c
+-1.229 -0.009 -0.997 0.208 -0.572 0.208 c
+0 0.208 l
+0 0.39 l
+0 0.668 -0.139 0.807 -0.487 0.807 c
+-0.73 0.807 -0.854 0.749 -0.966 0.591 c
+-1.155 0.765 l
+-0.986 0.985 -0.792 1.047 -0.483 1.047 c
+0.027 1.047 0.278 0.827 0.278 0.413 c
+0.278 -0.878 l
+0 -0.878 l
+f
+Q
+q
+[1 0 0 1 25.089 12.113] cm
+0 0 m
+0 0.213 l
+-0.135 0.058 -0.325 -0.023 -0.537 -0.023 c
+-0.742 -0.023 -0.912 0.039 -1.027 0.154 c
+-1.164 0.286 -1.221 0.467 -1.221 0.687 c
+-1.221 1.901 l
+-0.943 1.901 l
+-0.943 0.73 l
+-0.943 0.394 -0.765 0.225 -0.479 0.225 c
+-0.193 0.225 -0.003 0.398 -0.003 0.73 c
+-0.003 1.901 l
+0.275 1.901 l
+0.275 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 27.024 12.09] cm
+0 0 m
+-0.321 0 -0.572 0.074 -0.78 0.275 c
+-0.595 0.461 l
+-0.444 0.302 -0.24 0.24 -0.003 0.24 c
+0.309 0.24 0.503 0.352 0.503 0.576 c
+0.503 0.742 0.406 0.836 0.186 0.855 c
+-0.127 0.882 l
+-0.498 0.912 -0.695 1.078 -0.695 1.392 c
+-0.695 1.74 -0.402 1.949 0.004 1.949 c
+0.274 1.949 0.518 1.883 0.689 1.744 c
+0.507 1.563 l
+0.371 1.666 0.197 1.713 0 1.713 c
+-0.278 1.713 -0.425 1.593 -0.425 1.4 c
+-0.425 1.238 -0.332 1.141 -0.092 1.121 c
+0.213 1.095 l
+0.545 1.063 0.773 0.936 0.773 0.58 c
+0.773 0.213 0.46 0 0 0 c
+f
+Q
+q
+[1 0 0 1 2.956 6.0683] cm
+0 0 m
+-0.2744 0 l
+-0.8848 2.2031 l
+-1.4956 0 l
+-1.7695 0 l
+-2.4731 2.752 l
+-2.1602 2.752 l
+-1.623 0.5332 l
+-1.0161 2.752 l
+-0.7534 2.752 l
+-0.1465 0.5332 l
+0.3906 2.752 l
+0.7031 2.752 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 4.5039 7.9697] cm
+0 0 m
+0.27832 0 l
+0.27832 -1.9014 l
+0 -1.9014 l
+0 0 l
+h
+-0.0156 0.8545 m
+0.29788 0.8545 l
+0.29788 0.542 l
+-0.0156 0.542 l
+-0.0156 0.8545 l
+h
+f
+Q
+q
+[1 0 0 1 6.5166 6.0449] cm
+0 0 m
+-0.3203 0 -0.5718 0.0742 -0.7808 0.2744 c
+-0.5952 0.4609 l
+-0.4443 0.3008 -0.2393 0.2392 -0.0039 0.2392 c
+0.3101 0.2392 0.5029 0.3515 0.5029 0.5762 c
+0.5029 0.7422 0.4063 0.8359 0.1855 0.8545 c
+-0.1269 0.8808 l
+-0.4981 0.9121 -0.6958 1.0781 -0.6958 1.3916 c
+-0.6958 1.7392 -0.4014 1.9482 0.0044 1.9482 c
+0.2744 1.9482 0.5181 1.8828 0.688 1.7431 c
+0.5064 1.5605 l
+0.3711 1.666 0.1973 1.7129 0 1.7129 c
+-0.2778 1.7129 -0.4248 1.5918 -0.4248 1.3984 c
+-0.4248 1.2363 -0.332 1.1406 -0.0923 1.1211 c
+0.2129 1.0937 l
+0.5454 1.0625 0.773 0.9355 0.773 0.5801 c
+0.773 0.2129 0.46 0 0 0 c
+f
+Q
+q
+[1 0 0 1 8.8076 6.0449] cm
+0 0 m
+-0.3208 0 -0.5718 0.0742 -0.7812 0.2744 c
+-0.5952 0.4609 l
+-0.4448 0.3008 -0.2397 0.2392 -0.0039 0.2392 c
+0.3091 0.2392 0.5024 0.3515 0.5024 0.5762 c
+0.5024 0.7422 0.4058 0.8359 0.1851 0.8545 c
+-0.1274 0.8808 l
+-0.499 0.9121 -0.6958 1.0781 -0.6958 1.3916 c
+-0.6958 1.7392 -0.4019 1.9482 0.0039 1.9482 c
+0.2739 1.9482 0.5176 1.8828 0.688 1.7431 c
+0.5059 1.5605 l
+0.3706 1.666 0.1973 1.7129 0 1.7129 c
+-0.2783 1.7129 -0.4253 1.5918 -0.4253 1.3984 c
+-0.4253 1.2363 -0.3325 1.1406 -0.0933 1.1211 c
+0.2124 1.0937 l
+0.5449 1.0625 0.773 0.9355 0.773 0.5801 c
+0.773 0.2129 0.46 0 0 0 c
+f
+Q
+q
+[1 0 0 1 11.682 7.4707] cm
+0 0 m
+-0.073 0.1738 -0.244 0.2871 -0.445 0.2871 c
+-0.645 0.2871 -0.815 0.1738 -0.889 0 c
+-0.931 -0.1036 -0.939 -0.1621 -0.947 -0.3164 c
+0.058 -0.3164 l
+0.05 -0.1621 0.043 -0.1036 0 0 c
+-0.947 -0.5254 m
+-0.947 -0.9434 -0.749 -1.1817 -0.387 -1.1817 c
+-0.167 -1.1817 -0.038 -1.1172 0.112 -0.9649 c
+0.302 -1.1319 l
+0.108 -1.3243 -0.07 -1.4258 -0.394 -1.4258 c
+-0.896 -1.4258 -1.225 -1.125 -1.225 -0.4512 c
+-1.225 0.163 -0.928 0.5224 -0.445 0.5224 c
+0.046 0.5224 0.336 0.166 0.336 -0.3975 c
+0.336 -0.5254 l
+-0.947 -0.5254 l
+f
+Q
+q
+[1 0 0 1 14.262 6.0683] cm
+0 0 m
+0 1.1709 l
+0 1.5078 -0.182 1.6778 -0.467 1.6778 c
+-0.753 1.6778 -0.939 1.5039 -0.939 1.1709 c
+-0.939 0 l
+-1.218 0 l
+-1.218 1.9014 l
+-0.939 1.9014 l
+-0.939 1.6934 l
+-0.803 1.8477 -0.618 1.9238 -0.406 1.9238 c
+-0.201 1.9238 -0.034 1.8633 0.081 1.7481 c
+0.217 1.6153 0.278 1.4375 0.278 1.2168 c
+0.278 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 16.251 6.0449] cm
+0 0 m
+-0.321 0 -0.572 0.0742 -0.781 0.2744 c
+-0.595 0.4609 l
+-0.445 0.3008 -0.24 0.2392 -0.004 0.2392 c
+0.309 0.2392 0.503 0.3515 0.503 0.5762 c
+0.503 0.7422 0.406 0.8359 0.186 0.8545 c
+-0.127 0.8808 l
+-0.498 0.9121 -0.696 1.0781 -0.696 1.3916 c
+-0.696 1.7392 -0.402 1.9482 0.004 1.9482 c
+0.274 1.9482 0.518 1.8828 0.688 1.7431 c
+0.506 1.5605 l
+0.371 1.666 0.197 1.7129 0 1.7129 c
+-0.278 1.7129 -0.425 1.5918 -0.425 1.3984 c
+-0.425 1.2363 -0.332 1.1406 -0.092 1.1211 c
+0.212 1.0937 l
+0.545 1.0625 0.773 0.9355 0.773 0.5801 c
+0.773 0.2129 0.46 0 0 0 c
+f
+Q
+q
+[1 0 0 1 18.742 6.0449] cm
+0 0 m
+-0.479 0 -0.842 0.3242 -0.842 0.9746 c
+-0.842 1.623 -0.479 1.9482 0 1.9482 c
+0.263 1.9482 0.429 1.8779 0.626 1.666 c
+0.437 1.4883 l
+0.294 1.6465 0.182 1.7002 0 1.7002 c
+-0.185 1.7002 -0.339 1.6269 -0.44 1.4844 c
+-0.529 1.3594 -0.564 1.2148 -0.564 0.9746 c
+-0.564 0.7344 -0.529 0.5869 -0.44 0.4638 c
+-0.339 0.3203 -0.185 0.248 0 0.248 c
+0.182 0.248 0.294 0.3047 0.437 0.4638 c
+0.626 0.2812 l
+0.429 0.0693 0.263 0 0 0 c
+f
+Q
+q
+[1 0 0 1 21.551 6.0683] cm
+0 0 m
+0 1.1748 l
+0 1.5078 -0.178 1.6778 -0.464 1.6778 c
+-0.75 1.6778 -0.94 1.5039 -0.94 1.1748 c
+-0.94 0 l
+-1.218 0 l
+-1.218 2.752 l
+-0.94 2.752 l
+-0.94 1.6934 l
+-0.8 1.8516 -0.619 1.9238 -0.406 1.9238 c
+0.023 1.9238 0.278 1.6504 0.278 1.2207 c
+0.278 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 24.02 6.9453] cm
+0 0 m
+-0.534 0 l
+-0.82 0 -0.959 -0.1153 -0.959 -0.336 c
+-0.959 -0.5567 -0.823 -0.6602 -0.522 -0.6602 c
+-0.359 -0.6602 -0.216 -0.6494 -0.097 -0.5332 c
+-0.031 -0.4707 0 -0.3633 0 -0.2041 c
+0 0 l
+h
+0 -0.877 m
+0 -0.6953 l
+-0.155 -0.8496 -0.294 -0.9004 -0.549 -0.9004 c
+-0.812 -0.9004 -0.966 -0.8496 -1.086 -0.7266 c
+-1.179 -0.6328 -1.229 -0.4903 -1.229 -0.3399 c
+-1.229 -0.0078 -0.998 0.209 -0.573 0.209 c
+0 0.209 l
+0 0.3906 l
+0 0.6689 -0.139 0.8076 -0.487 0.8076 c
+-0.731 0.8076 -0.854 0.75 -0.966 0.5918 c
+-1.156 0.7656 l
+-0.986 0.9863 -0.792 1.0478 -0.483 1.0478 c
+0.027 1.0478 0.278 0.8281 0.278 0.414 c
+0.278 -0.877 l
+0 -0.877 l
+f
+Q
+q
+[1 0 0 1 25.75 7.7461] cm
+0 0 m
+0 -1.6778 l
+-0.278 -1.6778 l
+-0.278 0 l
+-0.521 0 l
+-0.521 0.2109 l
+-0.278 0.2109 l
+-0.278 0.5712 l
+-0.278 0.8535 -0.12 1.082 0.204 1.082 c
+0.406 1.082 l
+0.406 0.8427 l
+0.255 0.8427 l
+0.078 0.8427 0 0.7382 0 0.5634 c
+0 0.2109 l
+0.406 0.2109 l
+0.406 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 27.592 6.0683] cm
+0 0 m
+-0.325 0 -0.487 0.2285 -0.487 0.5098 c
+-0.487 1.6778 l
+-0.727 1.6778 l
+-0.727 1.8887 l
+-0.487 1.8887 l
+-0.487 2.4844 l
+-0.209 2.4844 l
+-0.209 1.8887 l
+0.197 1.8887 l
+0.197 1.6778 l
+-0.209 1.6778 l
+-0.209 0.5176 l
+-0.209 0.3438 -0.128 0.2403 0.05 0.2403 c
+0.197 0.2403 l
+0.197 0 l
+0 0 l
+f
+Q
+q
+0 0.06 34.56 69.105 re
+W
+q
+[1 0 0 1 7.749 0.023403] cm
+0 0 m
+0 0.21189 l
+-0.1348 0.057606 -0.3247 -0.023403 -0.5371 -0.023403 c
+-0.7422 -0.023403 -0.9121 0.039104 -1.0273 0.1543 c
+-1.1631 0.28521 -1.2207 0.4668 -1.2207 0.6875 c
+-1.2207 1.9004 l
+-0.9424 1.9004 l
+-0.9424 0.7305 l
+-0.9424 0.3945 -0.7646 0.2236 -0.479 0.2236 c
+-0.1929 0.2236 -0.0039 0.3984 -0.0039 0.7305 c
+-0.0039 1.9004 l
+0.2744 1.9004 l
+0.2744 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 10.322 0.023403] cm
+0 0 m
+0 1.1699 l
+0 1.5078 -0.181 1.6777 -0.4673 1.6777 c
+-0.7534 1.6777 -0.939 1.5029 -0.939 1.1699 c
+-0.939 0 l
+-1.2173 0 l
+-1.2173 1.9004 l
+-0.939 1.9004 l
+-0.939 1.6924 l
+-0.8037 1.8477 -0.6182 1.9238 -0.4058 1.9238 c
+-0.201 1.9238 -0.035 1.8623 0.081 1.7461 c
+0.217 1.6152 0.278 1.4375 0.278 1.2168 c
+0.278 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 12.319 1.7011] cm
+0 0 m
+-0.413 0 -0.479 -0.3574 -0.479 -0.72751 c
+-0.479 -1.0986 -0.413 -1.4541 0 -1.4541 c
+0.413 -1.4541 0.475 -1.0986 0.475 -0.72751 c
+0.475 -0.3574 0.413 0 0 0 c
+0.479 -1.6777 m
+0.479 -1.4492 l
+0.325 -1.6504 0.147 -1.7011 -0.062 -1.7011 c
+-0.255 -1.7011 -0.425 -1.6357 -0.526 -1.5351 c
+-0.719 -1.3418 -0.757 -1.0254 -0.757 -0.72751 c
+-0.757 -0.4297 -0.719 -0.1132 -0.526 0.0801 c
+-0.425 0.1797 -0.255 0.2461 -0.062 0.2461 c
+0.147 0.2461 0.321 0.2012 0.475 0.003 c
+0.475 1.0743 l
+0.753 1.0743 l
+0.753 -1.6777 l
+0.479 -1.6777 l
+f
+Q
+q
+[1 0 0 1 17.264 0.023403] cm
+0 0 m
+-0.838 1.4648 l
+-1.419 0.7686 l
+-1.419 0 l
+-1.712 0 l
+-1.712 2.752 l
+-1.419 2.752 l
+-1.419 1.1699 l
+-0.135 2.752 l
+0.224 2.752 l
+-0.642 1.6885 l
+0.348 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 19.6 0.023403] cm
+0 0 m
+0 0.21189 l
+-0.135 0.057606 -0.324 -0.023403 -0.538 -0.023403 c
+-0.742 -0.023403 -0.912 0.039104 -1.028 0.1543 c
+-1.163 0.28521 -1.221 0.4668 -1.221 0.6875 c
+-1.221 1.9004 l
+-0.942 1.9004 l
+-0.942 0.7305 l
+-0.942 0.3945 -0.765 0.2236 -0.479 0.2236 c
+-0.193 0.2236 -0.004 0.3984 -0.004 0.7305 c
+-0.004 1.9004 l
+0.274 1.9004 l
+0.274 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 21.431 0.023403] cm
+0 0 m
+-0.333 0 -0.483 0.21581 -0.483 0.50591 c
+-0.483 2.752 l
+-0.206 2.752 l
+-0.206 0.5176 l
+-0.206 0.332 -0.144 0.2402 0.05 0.2402 c
+0.201 0.2402 l
+0.201 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 23.022 0.023403] cm
+0 0 m
+-0.325 0 -0.487 0.2285 -0.487 0.5098 c
+-0.487 1.6777 l
+-0.727 1.6777 l
+-0.727 1.8887 l
+-0.487 1.8887 l
+-0.487 2.4853 l
+-0.209 2.4853 l
+-0.209 1.8887 l
+0.197 1.8887 l
+0.197 1.6777 l
+-0.209 1.6777 l
+-0.209 0.5176 l
+-0.209 0.3437 -0.128 0.2402 0.05 0.2402 c
+0.197 0.2402 l
+0.197 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 25.359 0.023403] cm
+0 0 m
+0 0.21189 l
+-0.135 0.057606 -0.325 -0.023403 -0.537 -0.023403 c
+-0.742 -0.023403 -0.912 0.039104 -1.028 0.1543 c
+-1.163 0.28521 -1.221 0.4668 -1.221 0.6875 c
+-1.221 1.9004 l
+-0.942 1.9004 l
+-0.942 0.7305 l
+-0.942 0.3945 -0.765 0.2236 -0.479 0.2236 c
+-0.193 0.2236 -0.004 0.3984 -0.004 0.7305 c
+-0.004 1.9004 l
+0.275 1.9004 l
+0.275 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 27.777 1.5605] cm
+0 0 m
+-0.104 0.1055 -0.181 0.1406 -0.328 0.1406 c
+-0.607 0.1406 -0.784 -0.0801 -0.784 -0.3701 c
+-0.784 -1.5371 l
+-1.062 -1.5371 l
+-1.062 0.3633 l
+-0.784 0.3633 l
+-0.784 0.1328 l
+-0.68 0.291 -0.471 0.3867 -0.251 0.3867 c
+-0.069 0.3867 0.07 0.3447 0.205 0.209 c
+0 0 l
+f
+Q
+Q
+[0.2157 0.3922 0.5647] sc
+q
+[1 0 0 1 19.526 68.818] cm
+0 0 m
+-5.838 -5.838 l
+11.114 -5.838 l
+0 0 l
+f*
+Q
+[0.1176 0.2078 0.4039] sc
+q
+[1 0 0 1 6.8892 65.435] cm
+0 0 m
+0 -8.255 l
+11.988 3.73 l
+0 0 l
+f*
+Q
+[0.7333 0.8392 0.251] sc
+q
+[1 0 0 1 0.34668 54.107] cm
+0 0 m
+5.8384 -5.838 l
+5.8384 11.113 l
+0 0 l
+f*
+Q
+[0.6039 0.8 0.4039] sc
+q
+[1 0 0 1 3.7305 41.471] cm
+0 0 m
+8.257 0 l
+-3.7305 11.986 l
+0 0 l
+f*
+Q
+[0.2588 0.7372 0.6235] sc
+q
+[1 0 0 1 15.065 34.928] cm
+0 0 m
+5.838 5.838 l
+-11.115 5.838 l
+0 0 l
+f*
+Q
+[0 0.698 0.7059] sc
+q
+[1 0 0 1 27.696 38.313] cm
+0 0 m
+0 8.256 l
+-11.987 -3.73 l
+0 0 l
+f*
+Q
+[0.5294 0.8314 0.9294] sc
+q
+[1 0 0 1 34.239 49.641] cm
+0 0 m
+-5.838 5.838 l
+-5.838 -11.113 l
+0 0 l
+f*
+Q
+q
+0 0.06 34.56 69.105 re
+W
+[0.3451 0.5843 0.7216] sc
+q
+[1 0 0 1 30.851 62.281] cm
+0 0 m
+-8.256 0 l
+3.731 -11.986 l
+0 0 l
+f*
+Q
+Q
+Q
+showpage
+%%PageTrailer
+pdfEndPage
+%%Trailer
+end
+%%DocumentSuppliedResources:
+%%EOF
diff --git a/macros/latex/contrib/tudscr/logo/DDC-01.pdf b/macros/latex/contrib/tudscr/logo/DDC-01.pdf
new file mode 100644
index 0000000000..bf7fe2e249
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/DDC-01.pdf
Binary files differ
diff --git a/macros/latex/contrib/tudscr/logo/DDC-03.eps b/macros/latex/contrib/tudscr/logo/DDC-03.eps
new file mode 100644
index 0000000000..dba3e1d8d4
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/DDC-03.eps
@@ -0,0 +1,810 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%XpdfVersion: 3.03
+%%Creator: Adobe Illustrator CS4
+%%Title: DDC-03.eps
+%%LanguageLevel: 2
+%%DocumentSuppliedResources: (atend)
+%%BoundingBox: 0 0 144 52
+%%HiResBoundingBox: 0 0 143.667 51.307
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset xpdf 3.03 0
+%%Copyright: Copyright 1996-2011 Glyph & Cog, LLC
+/xpdf 75 dict def xpdf begin
+% PDF special state
+/pdfDictSize 15 def
+/pdfSetup {
+ /setpagedevice where {
+ pop 2 dict begin
+ /Policies 1 dict dup begin /PageSize 6 def end def
+ { /Duplex true def } if
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfSetupPaper {
+ 2 array astore
+ /setpagedevice where {
+ pop 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfStartPage {
+ pdfDictSize dict begin
+ /pdfFillCS [] def
+ /pdfFillXform {} def
+ /pdfStrokeCS [] def
+ /pdfStrokeXform {} def
+ /pdfFill [0] def
+ /pdfStroke [0] def
+ /pdfFillOP false def
+ /pdfStrokeOP false def
+ /pdfLastFill false def
+ /pdfLastStroke false def
+ /pdfTextMat [1 0 0 1 0 0] def
+ /pdfFontSize 0 def
+ /pdfCharSpacing 0 def
+ /pdfTextRender 0 def
+ /pdfTextRise 0 def
+ /pdfWordSpacing 0 def
+ /pdfHorizScaling 1 def
+ /pdfTextClipPath [] def
+} def
+/pdfEndPage { end } def
+% PDF color state
+/cs { /pdfFillXform exch def dup /pdfFillCS exch def
+ setcolorspace } def
+/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def
+ setcolorspace } def
+/sc { pdfLastFill not { pdfFillCS setcolorspace } if
+ dup /pdfFill exch def aload pop pdfFillXform setcolor
+ /pdfLastFill true def /pdfLastStroke false def } def
+/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if
+ dup /pdfStroke exch def aload pop pdfStrokeXform setcolor
+ /pdfLastStroke true def /pdfLastFill false def } def
+/op { /pdfFillOP exch def
+ pdfLastFill { pdfFillOP setoverprint } if } def
+/OP { /pdfStrokeOP exch def
+ pdfLastStroke { pdfStrokeOP setoverprint } if } def
+/fCol {
+ pdfLastFill not {
+ pdfFillCS setcolorspace
+ pdfFill aload pop pdfFillXform setcolor
+ pdfFillOP setoverprint
+ /pdfLastFill true def /pdfLastStroke false def
+ } if
+} def
+/sCol {
+ pdfLastStroke not {
+ pdfStrokeCS setcolorspace
+ pdfStroke aload pop pdfStrokeXform setcolor
+ pdfStrokeOP setoverprint
+ /pdfLastStroke true def /pdfLastFill false def
+ } if
+} def
+% build a font
+/pdfMakeFont {
+ 4 3 roll findfont
+ 4 2 roll matrix scale makefont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /Encoding exch def
+ currentdict
+ end
+ definefont pop
+} def
+/pdfMakeFont16 {
+ exch findfont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /WMode exch def
+ currentdict
+ end
+ definefont pop
+} def
+% graphics state operators
+/q { gsave pdfDictSize dict begin } def
+/Q {
+ end grestore
+ /pdfLastFill where {
+ pop
+ pdfLastFill {
+ pdfFillOP setoverprint
+ } {
+ pdfStrokeOP setoverprint
+ } ifelse
+ } if
+} def
+/cm { concat } def
+/d { setdash } def
+/i { setflat } def
+/j { setlinejoin } def
+/J { setlinecap } def
+/M { setmiterlimit } def
+/w { setlinewidth } def
+% path segment operators
+/m { moveto } def
+/l { lineto } def
+/c { curveto } def
+/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+ neg 0 rlineto closepath } def
+/h { closepath } def
+% path painting operators
+/S { sCol stroke } def
+/Sf { fCol stroke } def
+/f { fCol fill } def
+/f* { fCol eofill } def
+% clipping operators
+/W { clip newpath } def
+/W* { eoclip newpath } def
+/Ws { strokepath clip newpath } def
+% text state operators
+/Tc { /pdfCharSpacing exch def } def
+/Tf { dup /pdfFontSize exch def
+ dup pdfHorizScaling mul exch matrix scale
+ pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put
+ exch findfont exch makefont setfont } def
+/Tr { /pdfTextRender exch def } def
+/Ts { /pdfTextRise exch def } def
+/Tw { /pdfWordSpacing exch def } def
+/Tz { /pdfHorizScaling exch def } def
+% text positioning operators
+/Td { pdfTextMat transform moveto } def
+/Tm { /pdfTextMat exch def } def
+% text string operators
+/xyshow where {
+ pop
+ /xyshow2 {
+ dup length array
+ 0 2 2 index length 1 sub {
+ 2 index 1 index 2 copy get 3 1 roll 1 add get
+ pdfTextMat dtransform
+ 4 2 roll 2 copy 6 5 roll put 1 add 3 1 roll dup 4 2 roll put
+ } for
+ exch pop
+ xyshow
+ } def
+}{
+ /xyshow2 {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval show moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval show moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/cshow where {
+ pop
+ /xycp {
+ 0 3 2 roll
+ {
+ pop pop currentpoint 3 2 roll
+ 1 string dup 0 4 3 roll put false charpath moveto
+ 2 copy get 2 index 2 index 1 add get
+ pdfTextMat dtransform rmoveto
+ 2 add
+ } exch cshow
+ pop pop
+ } def
+}{
+ /xycp {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval false charpath moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval false charpath moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/Tj {
+ fCol
+ 0 pdfTextRise pdfTextMat dtransform rmoveto
+ currentpoint 4 2 roll
+ pdfTextRender 1 and 0 eq {
+ 2 copy xyshow2
+ } if
+ pdfTextRender 3 and dup 1 eq exch 2 eq or {
+ 3 index 3 index moveto
+ 2 copy
+ currentfont /FontType get 3 eq { fCol } { sCol } ifelse
+ xycp currentpoint stroke moveto
+ } if
+ pdfTextRender 4 and 0 ne {
+ 4 2 roll moveto xycp
+ /pdfTextClipPath [ pdfTextClipPath aload pop
+ {/moveto cvx}
+ {/lineto cvx}
+ {/curveto cvx}
+ {/closepath cvx}
+ pathforall ] def
+ currentpoint newpath moveto
+ } {
+ pop pop pop pop
+ } ifelse
+ 0 pdfTextRise neg pdfTextMat dtransform rmoveto
+} def
+/TJm { 0.001 mul pdfFontSize mul pdfHorizScaling mul neg 0
+ pdfTextMat dtransform rmoveto } def
+/TJmV { 0.001 mul pdfFontSize mul neg 0 exch
+ pdfTextMat dtransform rmoveto } def
+/Tclip { pdfTextClipPath cvx exec clip newpath
+ /pdfTextClipPath [] def } def
+% Level 2/3 image operators
+/pdfImBuf 100 string def
+/pdfImStr {
+ 2 copy exch length lt {
+ 2 copy get exch 1 add exch
+ } {
+ ()
+ } ifelse
+} def
+/skipEOD {
+ { currentfile pdfImBuf readline
+ not { pop exit } if
+ (%-EOD-) eq { exit } if } loop
+} def
+/pdfIm { image skipEOD } def
+/pdfImM { fCol imagemask skipEOD } def
+/pr { 2 index 2 index 3 2 roll putinterval 4 add } def
+/pdfImClip {
+ gsave
+ 0 2 4 index length 1 sub {
+ dup 4 index exch 2 copy
+ get 5 index div put
+ 1 add 3 index exch 2 copy
+ get 3 index div put
+ } for
+ pop pop rectclip
+} def
+/pdfImClipEnd { grestore } def
+% shading operators
+/colordelta {
+ false 0 1 3 index length 1 sub {
+ dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt {
+ pop true
+ } if
+ } for
+ exch pop exch pop
+} def
+/funcCol { func n array astore } def
+/funcSH {
+ dup 0 eq {
+ true
+ } {
+ dup 6 eq {
+ false
+ } {
+ 4 index 4 index funcCol dup
+ 6 index 4 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 5 index 5 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 6 index 8 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ colordelta or or or
+ } ifelse
+ } ifelse
+ {
+ 1 add
+ 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch
+ 6 index 6 index 4 index 4 index 4 index funcSH
+ 2 index 6 index 6 index 4 index 4 index funcSH
+ 6 index 2 index 4 index 6 index 4 index funcSH
+ 5 3 roll 3 2 roll funcSH pop pop
+ } {
+ pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul
+ funcCol sc
+ dup 4 index exch mat transform m
+ 3 index 3 index mat transform l
+ 1 index 3 index mat transform l
+ mat transform l pop pop h f*
+ } ifelse
+} def
+/axialCol {
+ dup 0 lt {
+ pop t0
+ } {
+ dup 1 gt {
+ pop t1
+ } {
+ dt mul t0 add
+ } ifelse
+ } ifelse
+ func n array astore
+} def
+/axialSH {
+ dup 2 lt {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index axialCol 2 index axialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index axialSH
+ exch 3 2 roll axialSH
+ } {
+ pop 2 copy add 0.5 mul
+ axialCol sc
+ exch dup dx mul x0 add exch dy mul y0 add
+ 3 2 roll dup dx mul x0 add exch dy mul y0 add
+ dx abs dy abs ge {
+ 2 copy yMin sub dy mul dx div add yMin m
+ yMax sub dy mul dx div add yMax l
+ 2 copy yMax sub dy mul dx div add yMax l
+ yMin sub dy mul dx div add yMin l
+ h f*
+ } {
+ exch 2 copy xMin sub dx mul dy div add xMin exch m
+ xMax sub dx mul dy div add xMax exch l
+ exch 2 copy xMax sub dx mul dy div add xMax exch l
+ xMin sub dx mul dy div add xMin exch l
+ h f*
+ } ifelse
+ } ifelse
+} def
+/radialCol {
+ dup t0 lt {
+ pop t0
+ } {
+ dup t1 gt {
+ pop t1
+ } if
+ } ifelse
+ func n array astore
+} def
+/radialSH {
+ dup 0 eq {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index dt mul t0 add radialCol
+ 2 index dt mul t0 add radialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index radialSH
+ exch 3 2 roll radialSH
+ } {
+ pop 2 copy add 0.5 mul dt mul t0 add
+ radialCol sc
+ encl {
+ exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 0 360 arc h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 360 0 arcn h f
+ } {
+ 2 copy
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arcn
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arcn h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arc
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arc h f
+ } ifelse
+ } ifelse
+} def
+end
+%%EndResource
+%%EndProlog
+%%BeginSetup
+xpdf begin
+%%EndSetup
+pdfStartPage
+[] 0 d
+1 i
+0 j
+0 J
+10 M
+1 w
+/DeviceGray {} cs
+[0] sc
+/DeviceGray {} CS
+[0] SC
+false op
+false OP
+{} settransfer
+0 0 143.667 51.307 re
+W
+q
+q
+1 i
+0.059998 0.06 143.607 51.247 re
+W
+/DeviceRGB {} cs
+[0 0 0] sc
+[0.2941 0.302 0.3098] sc
+false op
+false OP
+q
+[1 0 0 1 5.9912 38.533] cm
+0 0 m
+-0.4922 0.549 -1.1631 0.801 -2.0098 0.801 c
+-4.1963 0.801 l
+-4.1963 -7.828 l
+-2.0098 -7.828 l
+-1.1631 -7.828 -0.4922 -7.577 0 -7.028 c
+0.624 -6.345 0.6328 -5.061 0.6328 -3.428 c
+0.6328 -1.8 0.624 -0.68 0 0 c
+1.2373 -8.326 m
+0.4932 -9.08 -0.5947 -9.442 -1.8242 -9.442 c
+-5.9912 -9.442 l
+-5.9912 2.414 l
+-1.8242 2.414 l
+-0.5947 2.414 0.4932 2.047 1.2373 1.298 c
+2.5215 0.014 2.4375 -1.717 2.4375 -3.428 c
+2.4375 -5.145 2.5215 -7.043 1.2373 -8.326 c
+f
+Q
+Q
+/DeviceRGB {} cs
+[0 0 0] sc
+[0.2941 0.302 0.3098] sc
+false op
+false OP
+1 i
+q
+[1 0 0 1 17.221 39.334] cm
+0 0 m
+-2.67 0 l
+-2.67 -3.717 l
+0 -3.717 l
+1.2 -3.717 2.019 -3.033 2.019 -1.865 c
+2.019 -0.698 1.2 0 0 0 c
+2.084 -10.243 m
+-0.419 -5.248 l
+-2.67 -5.248 l
+-2.67 -10.243 l
+-4.466 -10.243 l
+-4.466 1.613 l
+0.13 1.613 l
+2.381 1.613 3.814 0.167 3.814 -1.852 c
+3.814 -3.55 2.781 -4.633 1.451 -4.996 c
+4.176 -10.243 l
+2.084 -10.243 l
+f
+Q
+q
+[1 0 0 1 25.331 29.091] cm
+0 0 m
+0 11.856 l
+7.572 11.856 l
+7.572 10.243 l
+1.796 10.243 l
+1.796 6.777 l
+6.727 6.777 l
+6.727 5.182 l
+1.796 5.182 l
+1.796 1.614 l
+7.572 1.614 l
+7.572 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 40.179 28.988] cm
+0 0 m
+-1.777 0 -3.06 0.419 -4.196 1.568 c
+-2.996 2.749 l
+-2.131 1.885 -1.182 1.619 0.037 1.619 c
+1.581 1.619 2.484 2.284 2.484 3.434 c
+2.484 3.949 2.335 4.382 2.019 4.661 c
+1.721 4.949 1.423 5.066 0.716 5.164 c
+-0.679 5.363 l
+-1.647 5.498 -2.409 5.828 -2.93 6.316 c
+-3.508 6.861 -3.795 7.609 -3.795 8.582 c
+-3.795 10.643 -2.298 12.057 0.167 12.057 c
+1.739 12.057 2.828 11.662 3.852 10.708 c
+2.698 9.578 l
+1.973 10.279 1.116 10.494 0.121 10.494 c
+-1.273 10.494 -2.047 9.693 -2.047 8.643 c
+-2.047 8.215 -1.907 7.834 -1.6 7.545 c
+-1.293 7.279 -0.818 7.08 -0.261 6.996 c
+1.088 6.796 l
+2.186 6.629 2.8 6.363 3.303 5.912 c
+3.953 5.35 4.261 4.498 4.261 3.484 c
+4.261 1.303 2.484 0 0 0 c
+f
+Q
+q
+[1 0 0 1 54.524 38.533] cm
+0 0 m
+-0.502 0.549 -1.171 0.801 -2.018 0.801 c
+-4.204 0.801 l
+-4.204 -7.828 l
+-2.018 -7.828 l
+-1.171 -7.828 -0.502 -7.577 0 -7.028 c
+0.615 -6.345 0.633 -5.061 0.633 -3.428 c
+0.633 -1.8 0.615 -0.68 0 0 c
+1.229 -8.326 m
+0.485 -9.08 -0.604 -9.442 -1.832 -9.442 c
+-6 -9.442 l
+-6 2.414 l
+-1.832 2.414 l
+-0.604 2.414 0.485 2.047 1.229 1.298 c
+2.513 0.014 2.43 -1.717 2.43 -3.428 c
+2.43 -5.145 2.513 -7.043 1.229 -8.326 c
+f
+Q
+q
+[1 0 0 1 61.278 29.091] cm
+0 0 m
+0 11.856 l
+7.583 11.856 l
+7.583 10.243 l
+1.806 10.243 l
+1.806 6.777 l
+6.729 6.777 l
+6.729 5.182 l
+1.806 5.182 l
+1.806 1.614 l
+7.583 1.614 l
+7.583 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 80.268 29.091] cm
+0 0 m
+-5.48 8.345 l
+-5.48 0 l
+-7.275 0 l
+-7.275 11.856 l
+-5.629 11.856 l
+-0.15 3.53 l
+-0.15 11.856 l
+1.646 11.856 l
+1.646 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 19.648 10.2] cm
+0 0 m
+-1.897 0 -3.759 1.163 -3.759 4.331 c
+-3.759 7.498 -1.897 8.642 0 8.642 c
+1.163 8.642 1.981 8.312 2.781 7.461 c
+1.619 6.331 l
+1.089 6.912 0.67 7.13 0 7.13 c
+-0.642 7.13 -1.2 6.86 -1.562 6.377 c
+-1.926 5.912 -2.065 5.312 -2.065 4.331 c
+-2.065 3.345 -1.926 2.73 -1.562 2.265 c
+-1.2 1.781 -0.642 1.517 0 1.517 c
+0.67 1.517 1.089 1.735 1.619 2.312 c
+2.781 1.2 l
+1.981 0.349 1.163 0 0 0 c
+f
+Q
+q
+[1 0 0 1 30.123 16.842] cm
+0 0 m
+-0.316 0.322 -0.743 0.488 -1.247 0.488 c
+-1.748 0.488 -2.168 0.322 -2.484 0 c
+-2.995 -0.516 -3.061 -1.395 -3.061 -2.311 c
+-3.061 -3.228 -2.995 -4.107 -2.484 -4.627 c
+-2.168 -4.943 -1.748 -5.125 -1.247 -5.125 c
+-0.743 -5.125 -0.316 -4.943 0 -4.627 c
+0.512 -4.107 0.586 -3.228 0.586 -2.311 c
+0.586 -1.395 0.512 -0.516 0 0 c
+1.285 -5.642 m
+0.735 -6.209 -0.103 -6.642 -1.247 -6.642 c
+-2.4 -6.642 -3.209 -6.209 -3.759 -5.642 c
+-4.559 -4.809 -4.764 -3.744 -4.764 -2.311 c
+-4.764 -0.896 -4.559 0.168 -3.759 1 c
+-3.209 1.568 -2.4 2.006 -1.247 2.006 c
+-0.103 2.006 0.735 1.568 1.285 1 c
+2.084 0.168 2.279 -0.896 2.279 -2.311 c
+2.279 -3.744 2.084 -4.809 1.285 -5.642 c
+f
+Q
+q
+[1 0 0 1 41.519 10.298] cm
+0 0 m
+0 5.145 l
+0 6.466 -0.754 7.032 -1.703 7.032 c
+-2.651 7.032 -3.452 6.446 -3.452 5.145 c
+-3.452 0 l
+-5.154 0 l
+-5.154 8.446 l
+-3.489 8.446 l
+-3.489 7.596 l
+-2.903 8.229 -2.084 8.545 -1.236 8.545 c
+-0.371 8.545 0.344 8.266 0.847 7.782 c
+1.488 7.149 1.692 6.349 1.692 5.395 c
+1.692 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 50.822 10.2] cm
+0 0 m
+-1.897 0 -3.759 1.163 -3.759 4.331 c
+-3.759 7.498 -1.897 8.642 0 8.642 c
+1.163 8.642 1.981 8.312 2.781 7.461 c
+1.618 6.331 l
+1.088 6.912 0.67 7.13 0 7.13 c
+-0.651 7.13 -1.199 6.86 -1.562 6.377 c
+-1.926 5.912 -2.064 5.312 -2.064 4.331 c
+-2.064 3.345 -1.926 2.73 -1.562 2.265 c
+-1.199 1.781 -0.651 1.517 0 1.517 c
+0.67 1.517 1.088 1.735 1.618 2.312 c
+2.781 1.2 l
+1.981 0.349 1.163 0 0 0 c
+f
+Q
+q
+[1 0 0 1 61.745 16.363] cm
+0 0 m
+-0.262 0.633 -0.865 1.066 -1.666 1.066 c
+-2.466 1.066 -3.08 0.633 -3.341 0 c
+-3.509 -0.387 -3.545 -0.637 -3.564 -1.148 c
+0.231 -1.148 l
+0.222 -0.637 0.166 -0.387 0 0 c
+-3.564 -2.335 m
+-3.564 -3.781 -2.791 -4.697 -1.415 -4.697 c
+-0.467 -4.697 0.036 -4.428 0.632 -3.833 c
+1.72 -4.851 l
+0.854 -5.712 0.036 -6.163 -1.443 -6.163 c
+-3.564 -6.163 -5.247 -5.047 -5.247 -1.832 c
+-5.247 0.899 -3.825 2.484 -1.666 2.484 c
+0.603 2.484 1.915 0.818 1.915 -1.582 c
+1.915 -2.335 l
+-3.564 -2.335 l
+f
+Q
+q
+[1 0 0 1 71.039 17.33] cm
+0 0 m
+-1.526 0 -1.768 -1.302 -1.768 -2.799 c
+-1.768 -4.302 -1.526 -5.613 0 -5.613 c
+1.535 -5.613 1.748 -4.302 1.748 -2.799 c
+1.748 -1.302 1.535 0 0 0 c
+2.503 -6.381 m
+2.038 -6.846 1.303 -7.13 0.455 -7.13 c
+-0.447 -7.13 -1.145 -6.892 -1.768 -6.162 c
+-1.768 -10.447 l
+-3.46 -10.447 l
+-3.46 1.414 l
+-1.796 1.414 l
+-1.796 0.512 l
+-1.162 1.279 -0.483 1.513 0.437 1.513 c
+1.284 1.513 2.038 1.233 2.503 0.764 c
+3.349 -0.088 3.451 -1.516 3.451 -2.799 c
+3.451 -4.084 3.349 -5.529 2.503 -6.381 c
+f
+Q
+q
+[1 0 0 1 80.964 10.298] cm
+0 0 m
+-1.58 0 -2.316 1.135 -2.316 2.349 c
+-2.316 7.001 l
+-3.283 7.001 l
+-3.283 8.298 l
+-2.316 8.298 l
+-2.316 10.862 l
+-0.613 10.862 l
+-0.613 8.298 l
+1.015 8.298 l
+1.015 7.001 l
+-0.613 7.001 l
+-0.613 2.433 l
+-0.613 1.813 -0.316 1.451 0.317 1.451 c
+1.015 1.451 l
+1.015 0 l
+0 0 l
+f
+Q
+[0.2157 0.3922 0.5647] sc
+q
+[1 0 0 1 121.322 50.795] cm
+0 0 m
+-8.662 -8.661 l
+16.494 -8.661 l
+0 0 l
+f*
+Q
+[0.1176 0.2078 0.4039] sc
+q
+[1 0 0 1 102.577 45.775] cm
+0 0 m
+0 -12.252 l
+17.786 5.531 l
+0 0 l
+f*
+Q
+[0.7333 0.8392 0.251] sc
+q
+[1 0 0 1 92.873 28.97] cm
+0 0 m
+8.661 -8.662 l
+8.661 16.485 l
+0 0 l
+f*
+Q
+[0.6039 0.8 0.4039] sc
+q
+[1 0 0 1 97.887 10.219] cm
+0 0 m
+12.251 0 l
+-5.536 17.783 l
+0 0 l
+f*
+Q
+[0.2588 0.7372 0.6235] sc
+q
+[1 0 0 1 114.707 0.5117] cm
+0 0 m
+8.661 8.6601 l
+-16.485 8.6601 l
+0 0 l
+f*
+Q
+q
+0.059998 0.06 143.607 51.247 re
+W
+[0 0.698 0.7059] sc
+q
+[1 0 0 1 133.453 5.5293] cm
+0 0 m
+0 12.253 l
+-17.787 -5.5293 l
+0 0 l
+f*
+Q
+Q
+[0.5294 0.8314 0.9294] sc
+q
+[1 0 0 1 143.156 22.337] cm
+0 0 m
+-8.661 8.661 l
+-8.661 -16.485 l
+0 0 l
+f*
+Q
+[0.3451 0.5843 0.7216] sc
+q
+[1 0 0 1 138.133 41.096] cm
+0 0 m
+-12.253 0 l
+5.534 -17.782 l
+0 0 l
+f*
+Q
+Q
+showpage
+%%PageTrailer
+pdfEndPage
+%%Trailer
+end
+%%DocumentSuppliedResources:
+%%EOF
diff --git a/macros/latex/contrib/tudscr/logo/DDC-03.pdf b/macros/latex/contrib/tudscr/logo/DDC-03.pdf
new file mode 100644
index 0000000000..5fe74ce545
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/DDC-03.pdf
Binary files differ
diff --git a/macros/latex/contrib/tudscr/logo/DDC-07.eps b/macros/latex/contrib/tudscr/logo/DDC-07.eps
new file mode 100644
index 0000000000..5c5d0cf7fc
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/DDC-07.eps
@@ -0,0 +1,2226 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%XpdfVersion: 3.03
+%%Creator: Adobe Illustrator CS4
+%%Title: DDC-07.eps
+%%LanguageLevel: 2
+%%DocumentSuppliedResources: (atend)
+%%BoundingBox: 0 0 35 70
+%%HiResBoundingBox: 0 0 34.582 69.165
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset xpdf 3.03 0
+%%Copyright: Copyright 1996-2011 Glyph & Cog, LLC
+/xpdf 75 dict def xpdf begin
+% PDF special state
+/pdfDictSize 15 def
+/pdfSetup {
+ /setpagedevice where {
+ pop 2 dict begin
+ /Policies 1 dict dup begin /PageSize 6 def end def
+ { /Duplex true def } if
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfSetupPaper {
+ 2 array astore
+ /setpagedevice where {
+ pop 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfStartPage {
+ pdfDictSize dict begin
+ /pdfFillCS [] def
+ /pdfFillXform {} def
+ /pdfStrokeCS [] def
+ /pdfStrokeXform {} def
+ /pdfFill [0] def
+ /pdfStroke [0] def
+ /pdfFillOP false def
+ /pdfStrokeOP false def
+ /pdfLastFill false def
+ /pdfLastStroke false def
+ /pdfTextMat [1 0 0 1 0 0] def
+ /pdfFontSize 0 def
+ /pdfCharSpacing 0 def
+ /pdfTextRender 0 def
+ /pdfTextRise 0 def
+ /pdfWordSpacing 0 def
+ /pdfHorizScaling 1 def
+ /pdfTextClipPath [] def
+} def
+/pdfEndPage { end } def
+% PDF color state
+/cs { /pdfFillXform exch def dup /pdfFillCS exch def
+ setcolorspace } def
+/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def
+ setcolorspace } def
+/sc { pdfLastFill not { pdfFillCS setcolorspace } if
+ dup /pdfFill exch def aload pop pdfFillXform setcolor
+ /pdfLastFill true def /pdfLastStroke false def } def
+/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if
+ dup /pdfStroke exch def aload pop pdfStrokeXform setcolor
+ /pdfLastStroke true def /pdfLastFill false def } def
+/op { /pdfFillOP exch def
+ pdfLastFill { pdfFillOP setoverprint } if } def
+/OP { /pdfStrokeOP exch def
+ pdfLastStroke { pdfStrokeOP setoverprint } if } def
+/fCol {
+ pdfLastFill not {
+ pdfFillCS setcolorspace
+ pdfFill aload pop pdfFillXform setcolor
+ pdfFillOP setoverprint
+ /pdfLastFill true def /pdfLastStroke false def
+ } if
+} def
+/sCol {
+ pdfLastStroke not {
+ pdfStrokeCS setcolorspace
+ pdfStroke aload pop pdfStrokeXform setcolor
+ pdfStrokeOP setoverprint
+ /pdfLastStroke true def /pdfLastFill false def
+ } if
+} def
+% build a font
+/pdfMakeFont {
+ 4 3 roll findfont
+ 4 2 roll matrix scale makefont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /Encoding exch def
+ currentdict
+ end
+ definefont pop
+} def
+/pdfMakeFont16 {
+ exch findfont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /WMode exch def
+ currentdict
+ end
+ definefont pop
+} def
+% graphics state operators
+/q { gsave pdfDictSize dict begin } def
+/Q {
+ end grestore
+ /pdfLastFill where {
+ pop
+ pdfLastFill {
+ pdfFillOP setoverprint
+ } {
+ pdfStrokeOP setoverprint
+ } ifelse
+ } if
+} def
+/cm { concat } def
+/d { setdash } def
+/i { setflat } def
+/j { setlinejoin } def
+/J { setlinecap } def
+/M { setmiterlimit } def
+/w { setlinewidth } def
+% path segment operators
+/m { moveto } def
+/l { lineto } def
+/c { curveto } def
+/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+ neg 0 rlineto closepath } def
+/h { closepath } def
+% path painting operators
+/S { sCol stroke } def
+/Sf { fCol stroke } def
+/f { fCol fill } def
+/f* { fCol eofill } def
+% clipping operators
+/W { clip newpath } def
+/W* { eoclip newpath } def
+/Ws { strokepath clip newpath } def
+% text state operators
+/Tc { /pdfCharSpacing exch def } def
+/Tf { dup /pdfFontSize exch def
+ dup pdfHorizScaling mul exch matrix scale
+ pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put
+ exch findfont exch makefont setfont } def
+/Tr { /pdfTextRender exch def } def
+/Ts { /pdfTextRise exch def } def
+/Tw { /pdfWordSpacing exch def } def
+/Tz { /pdfHorizScaling exch def } def
+% text positioning operators
+/Td { pdfTextMat transform moveto } def
+/Tm { /pdfTextMat exch def } def
+% text string operators
+/xyshow where {
+ pop
+ /xyshow2 {
+ dup length array
+ 0 2 2 index length 1 sub {
+ 2 index 1 index 2 copy get 3 1 roll 1 add get
+ pdfTextMat dtransform
+ 4 2 roll 2 copy 6 5 roll put 1 add 3 1 roll dup 4 2 roll put
+ } for
+ exch pop
+ xyshow
+ } def
+}{
+ /xyshow2 {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval show moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval show moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/cshow where {
+ pop
+ /xycp {
+ 0 3 2 roll
+ {
+ pop pop currentpoint 3 2 roll
+ 1 string dup 0 4 3 roll put false charpath moveto
+ 2 copy get 2 index 2 index 1 add get
+ pdfTextMat dtransform rmoveto
+ 2 add
+ } exch cshow
+ pop pop
+ } def
+}{
+ /xycp {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval false charpath moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval false charpath moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/Tj {
+ fCol
+ 0 pdfTextRise pdfTextMat dtransform rmoveto
+ currentpoint 4 2 roll
+ pdfTextRender 1 and 0 eq {
+ 2 copy xyshow2
+ } if
+ pdfTextRender 3 and dup 1 eq exch 2 eq or {
+ 3 index 3 index moveto
+ 2 copy
+ currentfont /FontType get 3 eq { fCol } { sCol } ifelse
+ xycp currentpoint stroke moveto
+ } if
+ pdfTextRender 4 and 0 ne {
+ 4 2 roll moveto xycp
+ /pdfTextClipPath [ pdfTextClipPath aload pop
+ {/moveto cvx}
+ {/lineto cvx}
+ {/curveto cvx}
+ {/closepath cvx}
+ pathforall ] def
+ currentpoint newpath moveto
+ } {
+ pop pop pop pop
+ } ifelse
+ 0 pdfTextRise neg pdfTextMat dtransform rmoveto
+} def
+/TJm { 0.001 mul pdfFontSize mul pdfHorizScaling mul neg 0
+ pdfTextMat dtransform rmoveto } def
+/TJmV { 0.001 mul pdfFontSize mul neg 0 exch
+ pdfTextMat dtransform rmoveto } def
+/Tclip { pdfTextClipPath cvx exec clip newpath
+ /pdfTextClipPath [] def } def
+% Level 2/3 image operators
+/pdfImBuf 100 string def
+/pdfImStr {
+ 2 copy exch length lt {
+ 2 copy get exch 1 add exch
+ } {
+ ()
+ } ifelse
+} def
+/skipEOD {
+ { currentfile pdfImBuf readline
+ not { pop exit } if
+ (%-EOD-) eq { exit } if } loop
+} def
+/pdfIm { image skipEOD } def
+/pdfImM { fCol imagemask skipEOD } def
+/pr { 2 index 2 index 3 2 roll putinterval 4 add } def
+/pdfImClip {
+ gsave
+ 0 2 4 index length 1 sub {
+ dup 4 index exch 2 copy
+ get 5 index div put
+ 1 add 3 index exch 2 copy
+ get 3 index div put
+ } for
+ pop pop rectclip
+} def
+/pdfImClipEnd { grestore } def
+% shading operators
+/colordelta {
+ false 0 1 3 index length 1 sub {
+ dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt {
+ pop true
+ } if
+ } for
+ exch pop exch pop
+} def
+/funcCol { func n array astore } def
+/funcSH {
+ dup 0 eq {
+ true
+ } {
+ dup 6 eq {
+ false
+ } {
+ 4 index 4 index funcCol dup
+ 6 index 4 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 5 index 5 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 6 index 8 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ colordelta or or or
+ } ifelse
+ } ifelse
+ {
+ 1 add
+ 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch
+ 6 index 6 index 4 index 4 index 4 index funcSH
+ 2 index 6 index 6 index 4 index 4 index funcSH
+ 6 index 2 index 4 index 6 index 4 index funcSH
+ 5 3 roll 3 2 roll funcSH pop pop
+ } {
+ pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul
+ funcCol sc
+ dup 4 index exch mat transform m
+ 3 index 3 index mat transform l
+ 1 index 3 index mat transform l
+ mat transform l pop pop h f*
+ } ifelse
+} def
+/axialCol {
+ dup 0 lt {
+ pop t0
+ } {
+ dup 1 gt {
+ pop t1
+ } {
+ dt mul t0 add
+ } ifelse
+ } ifelse
+ func n array astore
+} def
+/axialSH {
+ dup 2 lt {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index axialCol 2 index axialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index axialSH
+ exch 3 2 roll axialSH
+ } {
+ pop 2 copy add 0.5 mul
+ axialCol sc
+ exch dup dx mul x0 add exch dy mul y0 add
+ 3 2 roll dup dx mul x0 add exch dy mul y0 add
+ dx abs dy abs ge {
+ 2 copy yMin sub dy mul dx div add yMin m
+ yMax sub dy mul dx div add yMax l
+ 2 copy yMax sub dy mul dx div add yMax l
+ yMin sub dy mul dx div add yMin l
+ h f*
+ } {
+ exch 2 copy xMin sub dx mul dy div add xMin exch m
+ xMax sub dx mul dy div add xMax exch l
+ exch 2 copy xMax sub dx mul dy div add xMax exch l
+ xMin sub dx mul dy div add xMin exch l
+ h f*
+ } ifelse
+ } ifelse
+} def
+/radialCol {
+ dup t0 lt {
+ pop t0
+ } {
+ dup t1 gt {
+ pop t1
+ } if
+ } ifelse
+ func n array astore
+} def
+/radialSH {
+ dup 0 eq {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index dt mul t0 add radialCol
+ 2 index dt mul t0 add radialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index radialSH
+ exch 3 2 roll radialSH
+ } {
+ pop 2 copy add 0.5 mul dt mul t0 add
+ radialCol sc
+ encl {
+ exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 0 360 arc h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 360 0 arcn h f
+ } {
+ 2 copy
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arcn
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arcn h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arc
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arc h f
+ } ifelse
+ } ifelse
+} def
+end
+%%EndResource
+%%EndProlog
+%%BeginSetup
+xpdf begin
+%%EndSetup
+pdfStartPage
+[] 0 d
+1 i
+0 j
+0 J
+10 M
+1 w
+/DeviceGray {} cs
+[0] sc
+/DeviceGray {} CS
+[0] SC
+false op
+false OP
+{} settransfer
+0 0 34.582 69.165 re
+W
+q
+[/Separation (schwarz) /DeviceRGB
+/xpdfSamples0 [
+1
+1
+1
+0.984314
+0.984314
+0.984314
+0.972549
+0.968627
+0.968627
+0.960784
+0.956863
+0.956863
+0.952941
+0.94902
+0.945098
+0.945098
+0.937255
+0.937255
+0.937255
+0.929412
+0.92549
+0.92549
+0.921569
+0.917647
+0.921569
+0.913725
+0.909804
+0.913725
+0.905882
+0.901961
+0.905882
+0.898039
+0.894118
+0.898039
+0.890196
+0.886275
+0.890196
+0.882353
+0.878431
+0.886275
+0.87451
+0.870588
+0.878431
+0.866667
+0.862745
+0.870588
+0.862745
+0.858824
+0.866667
+0.854902
+0.85098
+0.858824
+0.847059
+0.843137
+0.854902
+0.839216
+0.835294
+0.847059
+0.835294
+0.831373
+0.839216
+0.827451
+0.823529
+0.835294
+0.819608
+0.815686
+0.827451
+0.815686
+0.811765
+0.823529
+0.807843
+0.803922
+0.815686
+0.8
+0.796078
+0.807843
+0.792157
+0.788235
+0.803922
+0.788235
+0.784314
+0.796078
+0.780392
+0.776471
+0.792157
+0.772549
+0.768627
+0.784314
+0.768627
+0.764706
+0.780392
+0.760784
+0.756863
+0.772549
+0.756863
+0.74902
+0.768627
+0.74902
+0.745098
+0.760784
+0.745098
+0.737255
+0.756863
+0.737255
+0.733333
+0.74902
+0.729412
+0.72549
+0.745098
+0.72549
+0.717647
+0.737255
+0.717647
+0.713725
+0.733333
+0.713725
+0.705882
+0.729412
+0.705882
+0.701961
+0.721569
+0.701961
+0.694118
+0.717647
+0.694118
+0.690196
+0.709804
+0.690196
+0.682353
+0.705882
+0.682353
+0.678431
+0.701961
+0.678431
+0.670588
+0.694118
+0.670588
+0.666667
+0.690196
+0.666667
+0.658824
+0.682353
+0.658824
+0.654902
+0.678431
+0.654902
+0.647059
+0.67451
+0.647059
+0.643137
+0.666667
+0.643137
+0.635294
+0.662745
+0.639216
+0.631373
+0.658824
+0.631373
+0.623529
+0.65098
+0.627451
+0.619608
+0.647059
+0.619608
+0.615686
+0.643137
+0.615686
+0.607843
+0.635294
+0.611765
+0.603922
+0.631373
+0.603922
+0.6
+0.627451
+0.6
+0.592157
+0.619608
+0.596078
+0.588235
+0.615686
+0.588235
+0.580392
+0.611765
+0.584314
+0.576471
+0.607843
+0.580392
+0.572549
+0.6
+0.572549
+0.564706
+0.596078
+0.568627
+0.560784
+0.592157
+0.564706
+0.556863
+0.584314
+0.556863
+0.54902
+0.580392
+0.552941
+0.545098
+0.576471
+0.54902
+0.541176
+0.572549
+0.541176
+0.533333
+0.564706
+0.537255
+0.529412
+0.560784
+0.533333
+0.52549
+0.556863
+0.52549
+0.517647
+0.552941
+0.521569
+0.513725
+0.545098
+0.517647
+0.509804
+0.541176
+0.509804
+0.501961
+0.537255
+0.505882
+0.498039
+0.533333
+0.501961
+0.494118
+0.529412
+0.498039
+0.490196
+0.521569
+0.490196
+0.482353
+0.517647
+0.486275
+0.478431
+0.513725
+0.482353
+0.47451
+0.509804
+0.478431
+0.470588
+0.505882
+0.47451
+0.462745
+0.498039
+0.466667
+0.458824
+0.494118
+0.462745
+0.454902
+0.490196
+0.458824
+0.45098
+0.486275
+0.454902
+0.447059
+0.482353
+0.45098
+0.439216
+0.478431
+0.447059
+0.435294
+0.470588
+0.439216
+0.431373
+0.466667
+0.435294
+0.427451
+0.462745
+0.431373
+0.423529
+0.458824
+0.427451
+0.419608
+0.454902
+0.423529
+0.415686
+0.45098
+0.419608
+0.407843
+0.447059
+0.415686
+0.403922
+0.443137
+0.411765
+0.4
+0.439216
+0.407843
+0.396078
+0.435294
+0.4
+0.392157
+0.431373
+0.396078
+0.388235
+0.427451
+0.392157
+0.384314
+0.419608
+0.388235
+0.380392
+0.415686
+0.384314
+0.376471
+0.411765
+0.380392
+0.372549
+0.407843
+0.376471
+0.364706
+0.403922
+0.372549
+0.360784
+0.4
+0.368627
+0.356863
+0.396078
+0.364706
+0.352941
+0.392157
+0.360784
+0.34902
+0.388235
+0.356863
+0.345098
+0.384314
+0.352941
+0.341176
+0.380392
+0.34902
+0.337255
+0.376471
+0.345098
+0.333333
+0.372549
+0.341176
+0.329412
+0.368627
+0.337255
+0.32549
+0.364706
+0.333333
+0.321569
+0.360784
+0.329412
+0.317647
+0.356863
+0.32549
+0.317647
+0.352941
+0.321569
+0.313725
+0.34902
+0.317647
+0.309804
+0.345098
+0.313725
+0.305882
+0.341176
+0.309804
+0.301961
+0.337255
+0.309804
+0.298039
+0.337255
+0.305882
+0.294118
+0.333333
+0.301961
+0.290196
+0.329412
+0.298039
+0.286275
+0.321569
+0.290196
+0.278431
+0.317647
+0.286275
+0.278431
+0.313725
+0.282353
+0.27451
+0.309804
+0.278431
+0.270588
+0.305882
+0.278431
+0.266667
+0.301961
+0.27451
+0.262745
+0.301961
+0.270588
+0.258824
+0.298039
+0.266667
+0.254902
+0.294118
+0.262745
+0.254902
+0.290196
+0.258824
+0.25098
+0.286275
+0.254902
+0.247059
+0.282353
+0.254902
+0.243137
+0.278431
+0.25098
+0.239216
+0.27451
+0.247059
+0.235294
+0.27451
+0.243137
+0.235294
+0.270588
+0.239216
+0.231373
+0.266667
+0.235294
+0.227451
+0.262745
+0.231373
+0.223529
+0.258824
+0.231373
+0.219608
+0.254902
+0.227451
+0.219608
+0.25098
+0.223529
+0.215686
+0.25098
+0.219608
+0.211765
+0.247059
+0.215686
+0.207843
+0.243137
+0.215686
+0.203922
+0.239216
+0.211765
+0.203922
+0.235294
+0.207843
+0.2
+0.231373
+0.203922
+0.196078
+0.227451
+0.203922
+0.192157
+0.227451
+0.2
+0.192157
+0.223529
+0.196078
+0.188235
+0.219608
+0.192157
+0.184314
+0.215686
+0.188235
+0.180392
+0.211765
+0.188235
+0.176471
+0.207843
+0.184314
+0.176471
+0.207843
+0.180392
+0.172549
+0.203922
+0.176471
+0.168627
+0.2
+0.176471
+0.164706
+0.196078
+0.172549
+0.164706
+0.192157
+0.168627
+0.160784
+0.192157
+0.164706
+0.156863
+0.188235
+0.160784
+0.152941
+0.184314
+0.160784
+0.152941
+0.180392
+0.156863
+0.14902
+0.176471
+0.152941
+0.145098
+0.176471
+0.14902
+0.141176
+0.172549
+0.145098
+0.137255
+0.168627
+0.141176
+0.133333
+0.164706
+0.141176
+0.133333
+0.160784
+0.137255
+0.129412
+0.156863
+0.133333
+0.12549
+0.152941
+0.129412
+0.121569
+0.152941
+0.12549
+0.117647
+0.14902
+0.121569
+0.113725
+0.145098
+0.121569
+0.113725
+0.141176
+0.117647
+0.109804
+0.137255
+0.113725
+0.105882
+0.133333
+0.109804
+0.101961
+0.129412
+0.105882
+0.098039
+0.12549
+0.101961
+0.094118
+0.121569
+0.101961
+0.094118
+0.121569
+0.098039
+0.090196
+0.117647
+0.094118
+0.086275
+0.113725
+0.090196
+0.082353
+0.109804
+0.090196
+0.078431
+0.105882
+0.086275
+0.07451
+0.101961
+0.082353
+0.07451
+0.101961
+0.078431
+0.070588
+0.098039
+0.07451
+0.066667
+0.094118
+0.070588
+0.062745
+0.090196
+0.066667
+0.054902
+0.086275
+0.062745
+0.05098
+0.082353
+0.058824
+0.047059
+0.078431
+0.054902
+0.043137
+0.07451
+0.05098
+0.039216
+0.070588
+0.047059
+0.031373
+0.070588
+0.043137
+0.031373
+0.066667
+0.039216
+0.027451
+0.062745
+0.035294
+0.023529
+0.058824
+0.031373
+0.023529
+0.054902
+0.031373
+0.019608
+0.05098
+0.027451
+0.015686
+0.047059
+0.023529
+0.015686
+0.043137
+0.019608
+0.011765
+0.039216
+0.019608
+0.011765
+0.035294
+0.015686
+0.007843
+0.031373
+0.015686
+0.007843
+0.027451
+0.011765
+0.007843
+0.027451
+0.011765
+0.003922
+0.023529
+0.007843
+0.003922
+0.019608
+0.007843
+0.003922
+0.019608
+0.007843
+0
+0.015686
+0.003922
+0
+0.015686
+0.003922
+0
+0.011765
+0.003922
+0
+0.011765
+0
+0
+0.011765
+0
+0
+0.007843
+0
+0
+0.007843
+0
+0
+0.003922
+0
+0
+0.003922
+0
+0
+0.003922
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+] def
+{ 2 array 1 array 3 2 roll
+0 sub 254 mul 0 add
+dup 0 lt { pop 0 } { dup 254 gt { pop 254 } if } ifelse
+dup floor cvi exch dup ceiling cvi exch 2 index sub
+3 index 0 3 2 roll put
+3 index 1 3 2 roll put
+2 index 0 3 2 roll put
+xpdfSamples0
+2 index 0 get
+3 mul 0 add get
+xpdfSamples0
+3 index 1 get
+3 mul 0 add get
+2 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+xpdfSamples0
+3 index 0 get
+3 mul 1 add get
+xpdfSamples0
+4 index 1 get
+3 mul 1 add get
+3 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+xpdfSamples0
+4 index 0 get
+3 mul 2 add get
+xpdfSamples0
+5 index 1 get
+3 mul 2 add get
+4 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+5 3 roll pop pop }
+] {} cs
+[1] sc
+[1] sc
+false op
+false OP
+1 i
+q
+[1 0 0 1 2.6743 27.609] cm
+0 0 m
+-0.1645 0.181 -0.3848 0.263 -0.6645 0.263 c
+-1.3843 0.263 l
+-1.3843 -2.581 l
+-0.6645 -2.581 l
+-0.3848 -2.581 -0.1645 -2.5 0 -2.318 c
+0.2031 -2.093 0.209 -1.67 0.209 -1.132 c
+0.209 -0.594 0.2031 -0.226 0 0 c
+0.4063 -2.746 m
+0.1592 -2.994 -0.1973 -3.114 -0.604 -3.114 c
+-1.977 -3.114 l
+-1.977 0.796 l
+-0.604 0.796 l
+-0.1973 0.796 0.1592 0.675 0.4063 0.428 c
+0.8291 0.005 0.8017 -0.566 0.8017 -1.132 c
+0.8017 -1.697 0.8291 -2.323 0.4063 -2.746 c
+f
+Q
+q
+[1 0 0 1 6.3745 27.872] cm
+0 0 m
+-0.8789 0 l
+-0.8789 -1.225 l
+0 -1.225 l
+0.395 -1.225 0.6645 -0.999 0.6645 -0.615 c
+0.6645 -0.23 0.395 0 0 0 c
+0.6865 -3.377 m
+-0.1372 -1.729 l
+-0.8789 -1.729 l
+-0.8789 -3.377 l
+-1.4722 -3.377 l
+-1.4722 0.533 l
+0.044 0.533 l
+0.7852 0.533 1.2573 0.055 1.2573 -0.609 c
+1.2573 -1.169 0.917 -1.526 0.4775 -1.647 c
+1.3779 -3.377 l
+0.6865 -3.377 l
+f
+Q
+q
+[1 0 0 1 9.0478 24.495] cm
+0 0 m
+0 3.91 l
+2.499 3.91 l
+2.499 3.377 l
+0.5928 3.377 l
+0.5928 2.234 l
+2.218 2.234 l
+2.218 1.708 l
+0.5928 1.708 l
+0.5928 0.533 l
+2.499 0.533 l
+2.499 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 13.945 24.462] cm
+0 0 m
+-0.587 0 -1.011 0.138 -1.384 0.516 c
+-0.988 0.906 l
+-0.703 0.62 -0.39 0.532 0.011 0.532 c
+0.522 0.532 0.818 0.752 0.818 1.132 c
+0.818 1.302 0.769 1.444 0.665 1.538 c
+0.566 1.631 0.467 1.67 0.236 1.702 c
+-0.225 1.769 l
+-0.544 1.813 -0.796 1.922 -0.966 2.081 c
+-1.159 2.263 -1.252 2.51 -1.252 2.828 c
+-1.252 3.509 -0.758 3.976 0.055 3.976 c
+0.571 3.976 0.934 3.845 1.269 3.531 c
+0.89 3.158 l
+0.648 3.389 0.368 3.46 0.039 3.46 c
+-0.423 3.46 -0.675 3.196 -0.675 2.851 c
+-0.675 2.708 -0.631 2.581 -0.527 2.487 c
+-0.428 2.399 -0.269 2.335 -0.088 2.307 c
+0.357 2.24 l
+0.719 2.185 0.923 2.098 1.087 1.949 c
+1.301 1.763 1.406 1.482 1.406 1.147 c
+1.406 0.429 0.818 0 0 0 c
+f
+Q
+q
+[1 0 0 1 18.672 27.609] cm
+0 0 m
+-0.165 0.181 -0.385 0.263 -0.665 0.263 c
+-1.384 0.263 l
+-1.384 -2.581 l
+-0.665 -2.581 l
+-0.385 -2.581 -0.165 -2.5 0 -2.318 c
+0.204 -2.093 0.209 -1.67 0.209 -1.132 c
+0.209 -0.594 0.204 -0.226 0 0 c
+0.406 -2.746 m
+0.159 -2.994 -0.197 -3.114 -0.604 -3.114 c
+-1.977 -3.114 l
+-1.977 0.796 l
+-0.604 0.796 l
+-0.197 0.796 0.159 0.675 0.406 0.428 c
+0.829 0.005 0.802 -0.566 0.802 -1.132 c
+0.802 -1.697 0.829 -2.323 0.406 -2.746 c
+f
+Q
+q
+[1 0 0 1 20.9 24.495] cm
+0 0 m
+0 3.91 l
+2.498 3.91 l
+2.498 3.377 l
+0.593 3.377 l
+0.593 2.234 l
+2.218 2.234 l
+2.218 1.708 l
+0.593 1.708 l
+0.593 0.533 l
+2.498 0.533 l
+2.498 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 27.16 24.495] cm
+0 0 m
+-1.807 2.751 l
+-1.807 0 l
+-2.4 0 l
+-2.4 3.91 l
+-1.857 3.91 l
+-0.05 1.164 l
+-0.05 3.91 l
+0.544 3.91 l
+0.544 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 7.1758 18.122] cm
+0 0 m
+-0.626 0 -1.2412 0.385 -1.2412 1.428 c
+-1.2412 2.472 -0.626 2.85 0 2.85 c
+0.3848 2.85 0.6533 2.74 0.917 2.461 c
+0.5332 2.087 l
+0.3569 2.279 0.2197 2.351 0 2.351 c
+-0.2139 2.351 -0.395 2.263 -0.5161 2.104 c
+-0.6367 1.949 -0.6807 1.752 -0.6807 1.428 c
+-0.6807 1.104 -0.6367 0.9 -0.5161 0.747 c
+-0.395 0.588 -0.2139 0.5 0 0.5 c
+0.2197 0.5 0.3569 0.572 0.5332 0.764 c
+0.917 0.396 l
+0.6533 0.115 0.3848 0 0 0 c
+f
+Q
+q
+[1 0 0 1 10.629 20.313] cm
+0 0 m
+-0.105 0.105 -0.248 0.159 -0.412 0.159 c
+-0.577 0.159 -0.7144 0.105 -0.8188 0 c
+-0.9888 -0.17 -1.0107 -0.462 -1.0107 -0.764 c
+-1.0107 -1.065 -0.9888 -1.356 -0.8188 -1.527 c
+-0.7144 -1.631 -0.577 -1.691 -0.412 -1.691 c
+-0.248 -1.691 -0.105 -1.631 0 -1.527 c
+0.17 -1.356 0.192 -1.065 0.192 -0.764 c
+0.192 -0.462 0.17 -0.17 0 0 c
+0.422 -1.861 m
+0.241 -2.049 -0.033 -2.191 -0.412 -2.191 c
+-0.7905 -2.191 -1.0606 -2.049 -1.2412 -1.861 c
+-1.5044 -1.587 -1.5708 -1.235 -1.5708 -0.764 c
+-1.5708 -0.297 -1.5044 0.055 -1.2412 0.329 c
+-1.0606 0.516 -0.7905 0.659 -0.412 0.659 c
+-0.033 0.659 0.241 0.516 0.422 0.329 c
+0.686 0.055 0.752 -0.297 0.752 -0.764 c
+0.752 -1.235 0.686 -1.587 0.422 -1.861 c
+f
+Q
+q
+[1 0 0 1 14.384 18.155] cm
+0 0 m
+0 1.696 l
+0 2.13 -0.248 2.317 -0.56 2.317 c
+-0.873 2.317 -1.137 2.125 -1.137 1.696 c
+-1.137 0 l
+-1.697 0 l
+-1.697 2.784 l
+-1.148 2.784 l
+-1.148 2.504 l
+-0.956 2.713 -0.687 2.817 -0.407 2.817 c
+-0.121 2.817 0.115 2.725 0.28 2.564 c
+0.495 2.356 0.561 2.092 0.561 1.779 c
+0.561 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 17.453 18.122] cm
+0 0 m
+-0.626 0 -1.241 0.385 -1.241 1.428 c
+-1.241 2.472 -0.626 2.85 0 2.85 c
+0.385 2.85 0.653 2.74 0.917 2.461 c
+0.533 2.087 l
+0.357 2.279 0.219 2.351 0 2.351 c
+-0.214 2.351 -0.396 2.263 -0.517 2.104 c
+-0.637 1.949 -0.681 1.752 -0.681 1.428 c
+-0.681 1.104 -0.637 0.9 -0.517 0.747 c
+-0.396 0.588 -0.214 0.5 0 0.5 c
+0.219 0.5 0.357 0.572 0.533 0.764 c
+0.917 0.396 l
+0.653 0.115 0.385 0 0 0 c
+f
+Q
+q
+[1 0 0 1 21.055 20.154] cm
+0 0 m
+-0.088 0.209 -0.286 0.351 -0.549 0.351 c
+-0.813 0.351 -1.016 0.209 -1.104 0 c
+-1.159 -0.127 -1.169 -0.209 -1.175 -0.379 c
+0.077 -0.379 l
+0.071 -0.209 0.055 -0.127 0 0 c
+-1.175 -0.769 m
+-1.175 -1.247 -0.923 -1.549 -0.467 -1.549 c
+-0.154 -1.549 0.011 -1.461 0.208 -1.264 c
+0.565 -1.599 l
+0.28 -1.884 0.011 -2.032 -0.478 -2.032 c
+-1.175 -2.032 -1.73 -1.664 -1.73 -0.604 c
+-1.73 0.296 -1.263 0.818 -0.549 0.818 c
+0.198 0.818 0.631 0.269 0.631 -0.522 c
+0.631 -0.769 l
+-1.175 -0.769 l
+f
+Q
+q
+[1 0 0 1 24.118 20.473] cm
+0 0 m
+-0.505 0 -0.583 -0.428 -0.583 -0.923 c
+-0.583 -1.418 -0.505 -1.851 0 -1.851 c
+0.504 -1.851 0.577 -1.418 0.577 -0.923 c
+0.577 -0.428 0.504 0 0 0 c
+0.823 -2.104 m
+0.67 -2.257 0.428 -2.351 0.148 -2.351 c
+-0.149 -2.351 -0.379 -2.273 -0.583 -2.032 c
+-0.583 -3.444 l
+-1.143 -3.444 l
+-1.143 0.467 l
+-0.593 0.467 l
+-0.593 0.17 l
+-0.385 0.423 -0.159 0.499 0.142 0.499 c
+0.422 0.499 0.67 0.407 0.823 0.253 c
+1.103 -0.028 1.136 -0.5 1.136 -0.923 c
+1.136 -1.346 1.103 -1.823 0.823 -2.104 c
+f
+Q
+q
+[1 0 0 1 27.39 18.155] cm
+0 0 m
+-0.522 0 -0.764 0.373 -0.764 0.774 c
+-0.764 2.307 l
+-1.082 2.307 l
+-1.082 2.734 l
+-0.764 2.734 l
+-0.764 3.58 l
+-0.204 3.58 l
+-0.204 2.734 l
+0.335 2.734 l
+0.335 2.307 l
+-0.204 2.307 l
+-0.204 0.802 l
+-0.204 0.599 -0.105 0.478 0.105 0.478 c
+0.335 0.478 l
+0.335 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 0.73389 12.109] cm
+0 0 m
+0 2.752 l
+1.708 2.752 l
+1.708 2.489 l
+0.2939 2.489 l
+0.2939 1.52 l
+1.4995 1.52 l
+1.4995 1.257 l
+0.2939 1.257 l
+0.2939 0.264 l
+1.708 0.264 l
+1.708 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 4.4043 12.109] cm
+0 0 m
+-0.4565 0.739 l
+-0.9199 0 l
+-1.2564 0 l
+-0.6108 0.971 l
+-1.2295 1.901 l
+-0.8931 1.901 l
+-0.4565 1.198 l
+-0.0274 1.901 l
+0.3091 1.901 l
+-0.3096 0.971 l
+0.3359 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 5.4272 12.109] cm
+0 0 m
+0 0.24 l
+1.0591 1.654 l
+0.0581 1.654 l
+0.0581 1.901 l
+1.3794 1.901 l
+1.3794 1.666 l
+0.3164 0.248 l
+1.3794 0.248 l
+1.3794 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 8.8423 13.513] cm
+0 0 m
+-0.0732 0.174 -0.2437 0.286 -0.4448 0.286 c
+-0.6455 0.286 -0.8154 0.174 -0.8887 0 c
+-0.9312 -0.104 -0.939 -0.162 -0.9463 -0.316 c
+0.0581 -0.316 l
+0.0503 -0.162 0.0425 -0.104 0 0 c
+-0.9463 -0.525 m
+-0.9463 -0.942 -0.7495 -1.183 -0.3867 -1.183 c
+-0.1665 -1.183 -0.0386 -1.116 0.1123 -0.966 c
+0.3018 -1.132 l
+0.1084 -1.326 -0.0693 -1.426 -0.3941 -1.426 c
+-0.8965 -1.426 -1.2246 -1.125 -1.2246 -0.452 c
+-1.2246 0.162 -0.9272 0.523 -0.4448 0.523 c
+0.0464 0.523 0.3364 0.166 0.3364 -0.397 c
+0.3364 -0.525 l
+-0.9463 -0.525 l
+f
+Q
+q
+[1 0 0 1 10.611 12.109] cm
+0 0 m
+-0.332 0 -0.483 0.217 -0.483 0.507 c
+-0.483 2.752 l
+-0.205 2.752 l
+-0.205 0.518 l
+-0.205 0.333 -0.143 0.24 0.05 0.24 c
+0.201 0.24 l
+0.201 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 12.125 12.109] cm
+0 0 m
+-0.333 0 -0.483 0.217 -0.483 0.507 c
+-0.483 2.752 l
+-0.205 2.752 l
+-0.205 0.518 l
+-0.205 0.333 -0.143 0.24 0.05 0.24 c
+0.201 0.24 l
+0.201 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 14.188 13.513] cm
+0 0 m
+-0.073 0.174 -0.244 0.286 -0.445 0.286 c
+-0.646 0.286 -0.815 0.174 -0.889 0 c
+-0.931 -0.104 -0.939 -0.162 -0.947 -0.316 c
+0.058 -0.316 l
+0.05 -0.162 0.043 -0.104 0 0 c
+-0.947 -0.525 m
+-0.947 -0.942 -0.75 -1.183 -0.387 -1.183 c
+-0.167 -1.183 -0.039 -1.116 0.112 -0.966 c
+0.302 -1.132 l
+0.108 -1.326 -0.07 -1.426 -0.394 -1.426 c
+-0.896 -1.426 -1.225 -1.125 -1.225 -0.452 c
+-1.225 0.162 -0.928 0.523 -0.445 0.523 c
+0.046 0.523 0.336 0.166 0.336 -0.397 c
+0.336 -0.525 l
+-0.947 -0.525 l
+f
+Q
+q
+[1 0 0 1 16.699 12.109] cm
+0 0 m
+0 1.171 l
+0 1.508 -0.182 1.678 -0.467 1.678 c
+-0.753 1.678 -0.939 1.504 -0.939 1.171 c
+-0.939 0 l
+-1.217 0 l
+-1.217 1.901 l
+-0.939 1.901 l
+-0.939 1.693 l
+-0.804 1.848 -0.619 1.925 -0.406 1.925 c
+-0.201 1.925 -0.035 1.863 0.081 1.747 c
+0.216 1.616 0.278 1.438 0.278 1.218 c
+0.278 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 17.865 12.109] cm
+0 0 m
+0 0.24 l
+1.059 1.654 l
+0.058 1.654 l
+0.058 1.901 l
+1.379 1.901 l
+1.379 1.666 l
+0.317 0.248 l
+1.379 0.248 l
+1.379 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 22.567 12.987] cm
+0 0 m
+-0.534 0 l
+-0.82 0 -0.959 -0.116 -0.959 -0.336 c
+-0.959 -0.557 -0.823 -0.661 -0.522 -0.661 c
+-0.359 -0.661 -0.216 -0.649 -0.097 -0.534 c
+-0.031 -0.472 0 -0.364 0 -0.205 c
+0 0 l
+h
+0 -0.878 m
+0 -0.696 l
+-0.154 -0.85 -0.294 -0.901 -0.549 -0.901 c
+-0.811 -0.901 -0.966 -0.85 -1.086 -0.727 c
+-1.179 -0.634 -1.229 -0.491 -1.229 -0.341 c
+-1.229 -0.008 -0.997 0.208 -0.572 0.208 c
+0 0.208 l
+0 0.39 l
+0 0.668 -0.139 0.807 -0.487 0.807 c
+-0.73 0.807 -0.854 0.749 -0.966 0.591 c
+-1.155 0.765 l
+-0.986 0.985 -0.792 1.047 -0.483 1.047 c
+0.027 1.047 0.278 0.827 0.278 0.413 c
+0.278 -0.878 l
+0 -0.878 l
+f
+Q
+q
+[1 0 0 1 25.089 12.109] cm
+0 0 m
+0 0.213 l
+-0.135 0.058 -0.325 -0.023 -0.537 -0.023 c
+-0.742 -0.023 -0.912 0.039 -1.027 0.155 c
+-1.164 0.286 -1.221 0.468 -1.221 0.688 c
+-1.221 1.901 l
+-0.943 1.901 l
+-0.943 0.73 l
+-0.943 0.394 -0.765 0.225 -0.479 0.225 c
+-0.193 0.225 -0.003 0.398 -0.003 0.73 c
+-0.003 1.901 l
+0.275 1.901 l
+0.275 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 27.024 12.087] cm
+0 0 m
+-0.321 0 -0.572 0.073 -0.78 0.274 c
+-0.595 0.46 l
+-0.444 0.301 -0.24 0.239 -0.003 0.239 c
+0.309 0.239 0.503 0.351 0.503 0.575 c
+0.503 0.742 0.406 0.835 0.186 0.854 c
+-0.127 0.881 l
+-0.498 0.912 -0.695 1.078 -0.695 1.391 c
+-0.695 1.739 -0.402 1.948 0.004 1.948 c
+0.274 1.948 0.518 1.882 0.689 1.743 c
+0.507 1.561 l
+0.371 1.666 0.197 1.712 0 1.712 c
+-0.278 1.712 -0.425 1.592 -0.425 1.399 c
+-0.425 1.237 -0.332 1.14 -0.092 1.121 c
+0.213 1.094 l
+0.545 1.063 0.773 0.934 0.773 0.579 c
+0.773 0.213 0.46 0 0 0 c
+f
+Q
+q
+[1 0 0 1 2.956 6.0655] cm
+0 0 m
+-0.2744 0 l
+-0.8848 2.2021 l
+-1.4956 0 l
+-1.7695 0 l
+-2.4731 2.751 l
+-2.1602 2.751 l
+-1.623 0.5322 l
+-1.0161 2.751 l
+-0.7534 2.751 l
+-0.1465 0.5322 l
+0.3906 2.751 l
+0.7031 2.751 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 4.5039 7.9659] cm
+0 0 m
+0.27832 0 l
+0.27832 -1.9004 l
+0 -1.9004 l
+0 0 l
+h
+-0.0156 0.8545 m
+0.29788 0.8545 l
+0.29788 0.542 l
+-0.0156 0.542 l
+-0.0156 0.8545 l
+h
+f
+Q
+q
+[1 0 0 1 6.5166 6.042] cm
+0 0 m
+-0.3203 0 -0.5718 0.0733 -0.7808 0.2735 c
+-0.5952 0.46 l
+-0.4443 0.3008 -0.2393 0.2383 -0.0039 0.2383 c
+0.3101 0.2383 0.5029 0.3506 0.5029 0.5752 c
+0.5029 0.7413 0.4063 0.835 0.1855 0.8536 c
+-0.1269 0.8799 l
+-0.4981 0.9112 -0.6958 1.0782 -0.6958 1.3907 c
+-0.6958 1.7383 -0.4014 1.9473 0.0044 1.9473 c
+0.2744 1.9473 0.5181 1.8819 0.688 1.7422 c
+0.5064 1.5606 l
+0.3711 1.6651 0.1973 1.712 0 1.712 c
+-0.2778 1.712 -0.4248 1.5918 -0.4248 1.3985 c
+-0.4248 1.2364 -0.332 1.1397 -0.0923 1.1202 c
+0.2129 1.0938 l
+0.5454 1.0616 0.773 0.9356 0.773 0.5801 c
+0.773 0.212 0.46 0 0 0 c
+f
+Q
+q
+[1 0 0 1 8.8076 6.042] cm
+0 0 m
+-0.3208 0 -0.5718 0.0733 -0.7812 0.2735 c
+-0.5952 0.46 l
+-0.4448 0.3008 -0.2397 0.2383 -0.0039 0.2383 c
+0.3091 0.2383 0.5024 0.3506 0.5024 0.5752 c
+0.5024 0.7413 0.4058 0.835 0.1851 0.8536 c
+-0.1274 0.8799 l
+-0.499 0.9112 -0.6958 1.0782 -0.6958 1.3907 c
+-0.6958 1.7383 -0.4019 1.9473 0.0039 1.9473 c
+0.2739 1.9473 0.5176 1.8819 0.688 1.7422 c
+0.5059 1.5606 l
+0.3706 1.6651 0.1973 1.712 0 1.712 c
+-0.2783 1.712 -0.4253 1.5918 -0.4253 1.3985 c
+-0.4253 1.2364 -0.3325 1.1397 -0.0933 1.1202 c
+0.2124 1.0938 l
+0.5449 1.0616 0.773 0.9356 0.773 0.5801 c
+0.773 0.212 0.46 0 0 0 c
+f
+Q
+q
+[1 0 0 1 11.682 7.4678] cm
+0 0 m
+-0.073 0.1739 -0.244 0.2862 -0.445 0.2862 c
+-0.645 0.2862 -0.815 0.1739 -0.889 0 c
+-0.931 -0.1045 -0.939 -0.1631 -0.947 -0.3174 c
+0.058 -0.3174 l
+0.05 -0.1631 0.043 -0.1045 0 0 c
+-0.947 -0.5263 m
+-0.947 -0.9433 -0.749 -1.1826 -0.387 -1.1826 c
+-0.167 -1.1826 -0.038 -1.1172 0.112 -0.9658 c
+0.302 -1.1328 l
+0.108 -1.3252 -0.07 -1.4258 -0.394 -1.4258 c
+-0.896 -1.4258 -1.225 -1.125 -1.225 -0.4521 c
+-1.225 0.1621 -0.928 0.5215 -0.445 0.5215 c
+0.046 0.5215 0.336 0.166 0.336 -0.3984 c
+0.336 -0.5263 l
+-0.947 -0.5263 l
+f
+Q
+q
+[1 0 0 1 14.262 6.0655] cm
+0 0 m
+0 1.1699 l
+0 1.5068 -0.182 1.6767 -0.467 1.6767 c
+-0.753 1.6767 -0.939 1.5029 -0.939 1.1699 c
+-0.939 0 l
+-1.218 0 l
+-1.218 1.9004 l
+-0.939 1.9004 l
+-0.939 1.6924 l
+-0.803 1.8467 -0.618 1.9238 -0.406 1.9238 c
+-0.201 1.9238 -0.034 1.8623 0.081 1.747 c
+0.217 1.6142 0.278 1.4365 0.278 1.2168 c
+0.278 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 16.251 6.042] cm
+0 0 m
+-0.321 0 -0.572 0.0733 -0.781 0.2735 c
+-0.595 0.46 l
+-0.445 0.3008 -0.24 0.2383 -0.004 0.2383 c
+0.309 0.2383 0.503 0.3506 0.503 0.5752 c
+0.503 0.7413 0.406 0.835 0.186 0.8536 c
+-0.127 0.8799 l
+-0.498 0.9112 -0.696 1.0782 -0.696 1.3907 c
+-0.696 1.7383 -0.402 1.9473 0.004 1.9473 c
+0.274 1.9473 0.518 1.8819 0.688 1.7422 c
+0.506 1.5606 l
+0.371 1.6651 0.197 1.712 0 1.712 c
+-0.278 1.712 -0.425 1.5918 -0.425 1.3985 c
+-0.425 1.2364 -0.332 1.1397 -0.092 1.1202 c
+0.212 1.0938 l
+0.545 1.0616 0.773 0.9356 0.773 0.5801 c
+0.773 0.212 0.46 0 0 0 c
+f
+Q
+q
+[1 0 0 1 18.742 6.042] cm
+0 0 m
+-0.479 0 -0.842 0.3243 -0.842 0.9737 c
+-0.842 1.6221 -0.479 1.9473 0 1.9473 c
+0.263 1.9473 0.429 1.877 0.626 1.6651 c
+0.437 1.4873 l
+0.294 1.6455 0.182 1.6993 0 1.6993 c
+-0.185 1.6993 -0.339 1.627 -0.44 1.4834 c
+-0.529 1.3594 -0.564 1.2139 -0.564 0.9737 c
+-0.564 0.7344 -0.529 0.586 -0.44 0.4629 c
+-0.339 0.3204 -0.185 0.2471 0 0.2471 c
+0.182 0.2471 0.294 0.3047 0.437 0.4629 c
+0.626 0.2813 l
+0.429 0.0684 0.263 0 0 0 c
+f
+Q
+q
+[1 0 0 1 21.551 6.0655] cm
+0 0 m
+0 1.1738 l
+0 1.5068 -0.178 1.6767 -0.464 1.6767 c
+-0.75 1.6767 -0.94 1.5029 -0.94 1.1738 c
+-0.94 0 l
+-1.218 0 l
+-1.218 2.751 l
+-0.94 2.751 l
+-0.94 1.6924 l
+-0.8 1.8506 -0.619 1.9238 -0.406 1.9238 c
+0.023 1.9238 0.278 1.6494 0.278 1.2207 c
+0.278 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 24.02 6.9415] cm
+0 0 m
+-0.534 0 l
+-0.82 0 -0.959 -0.1153 -0.959 -0.335 c
+-0.959 -0.5557 -0.823 -0.6602 -0.522 -0.6602 c
+-0.359 -0.6602 -0.216 -0.6495 -0.097 -0.5332 c
+-0.031 -0.4707 0 -0.3633 0 -0.2041 c
+0 0 l
+h
+0 -0.876 m
+0 -0.6944 l
+-0.155 -0.8497 -0.294 -0.9004 -0.549 -0.9004 c
+-0.812 -0.9004 -0.966 -0.8497 -1.086 -0.7256 c
+-1.179 -0.6329 -1.229 -0.4903 -1.229 -0.3399 c
+-1.229 -0.0069 -0.998 0.2089 -0.573 0.2089 c
+0 0.2089 l
+0 0.3906 l
+0 0.6689 -0.139 0.8076 -0.487 0.8076 c
+-0.731 0.8076 -0.854 0.75 -0.966 0.5918 c
+-1.156 0.7656 l
+-0.986 0.9863 -0.792 1.0478 -0.483 1.0478 c
+0.027 1.0478 0.278 0.8281 0.278 0.414 c
+0.278 -0.876 l
+0 -0.876 l
+f
+Q
+q
+[1 0 0 1 25.75 7.7422] cm
+0 0 m
+0 -1.6767 l
+-0.278 -1.6767 l
+-0.278 0 l
+-0.521 0 l
+-0.521 0.212 l
+-0.278 0.212 l
+-0.278 0.5713 l
+-0.278 0.8536 -0.12 1.0821 0.204 1.0821 c
+0.406 1.0821 l
+0.406 0.8428 l
+0.255 0.8428 l
+0.078 0.8428 0 0.7383 0 0.5635 c
+0 0.212 l
+0.406 0.212 l
+0.406 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 27.592 6.0655] cm
+0 0 m
+-0.325 0 -0.487 0.2275 -0.487 0.5097 c
+-0.487 1.6767 l
+-0.727 1.6767 l
+-0.727 1.8887 l
+-0.487 1.8887 l
+-0.487 2.4844 l
+-0.209 2.4844 l
+-0.209 1.8887 l
+0.197 1.8887 l
+0.197 1.6767 l
+-0.209 1.6767 l
+-0.209 0.5176 l
+-0.209 0.3437 -0.128 0.2392 0.05 0.2392 c
+0.197 0.2392 l
+0.197 0 l
+0 0 l
+f
+Q
+q
+0 0.06 34.56 69.105 re
+W
+q
+[1 0 0 1 7.749 0.0196] cm
+0 0 m
+0 0.21191 l
+-0.1348 0.057598 -0.3247 -0.023502 -0.5371 -0.023502 c
+-0.7422 -0.023502 -0.9121 0.038994 -1.0273 0.1543 c
+-1.1631 0.2861 -1.2207 0.4678 -1.2207 0.6875 c
+-1.2207 1.9013 l
+-0.9424 1.9013 l
+-0.9424 0.7304 l
+-0.9424 0.3945 -0.7646 0.2236 -0.479 0.2236 c
+-0.1929 0.2236 -0.0039 0.3984 -0.0039 0.7304 c
+-0.0039 1.9013 l
+0.2744 1.9013 l
+0.2744 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 10.322 0.0196] cm
+0 0 m
+0 1.1709 l
+0 1.5078 -0.181 1.6777 -0.4673 1.6777 c
+-0.7534 1.6777 -0.939 1.5029 -0.939 1.1709 c
+-0.939 0 l
+-1.2173 0 l
+-1.2173 1.9013 l
+-0.939 1.9013 l
+-0.939 1.6924 l
+-0.8037 1.8476 -0.6182 1.9248 -0.4058 1.9248 c
+-0.201 1.9248 -0.035 1.8623 0.081 1.7471 c
+0.217 1.6152 0.278 1.4375 0.278 1.2178 c
+0.278 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 12.319 1.6973] cm
+0 0 m
+-0.413 0 -0.479 -0.3564 -0.479 -0.7275 c
+-0.479 -1.0986 -0.413 -1.4541 0 -1.4541 c
+0.413 -1.4541 0.475 -1.0986 0.475 -0.7275 c
+0.475 -0.3564 0.413 0 0 0 c
+0.479 -1.6777 m
+0.479 -1.4492 l
+0.325 -1.6504 0.147 -1.7012 -0.062 -1.7012 c
+-0.255 -1.7012 -0.425 -1.6357 -0.526 -1.5351 c
+-0.719 -1.3418 -0.757 -1.0254 -0.757 -0.7275 c
+-0.757 -0.4297 -0.719 -0.1123 -0.526 0.0811 c
+-0.425 0.1807 -0.255 0.2471 -0.062 0.2471 c
+0.147 0.2471 0.321 0.2012 0.475 0.0029 c
+0.475 1.0742 l
+0.753 1.0742 l
+0.753 -1.6777 l
+0.479 -1.6777 l
+f
+Q
+q
+[1 0 0 1 17.264 0.0196] cm
+0 0 m
+-0.838 1.4648 l
+-1.419 0.76849 l
+-1.419 0 l
+-1.712 0 l
+-1.712 2.7519 l
+-1.419 2.7519 l
+-1.419 1.1709 l
+-0.135 2.7519 l
+0.224 2.7519 l
+-0.642 1.6885 l
+0.348 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 19.6 0.0196] cm
+0 0 m
+0 0.21191 l
+-0.135 0.057598 -0.324 -0.023502 -0.538 -0.023502 c
+-0.742 -0.023502 -0.912 0.038994 -1.028 0.1543 c
+-1.163 0.2861 -1.221 0.4678 -1.221 0.6875 c
+-1.221 1.9013 l
+-0.942 1.9013 l
+-0.942 0.7304 l
+-0.942 0.3945 -0.765 0.2236 -0.479 0.2236 c
+-0.193 0.2236 -0.004 0.3984 -0.004 0.7304 c
+-0.004 1.9013 l
+0.274 1.9013 l
+0.274 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 21.431 0.0196] cm
+0 0 m
+-0.333 0 -0.483 0.2158 -0.483 0.5068 c
+-0.483 2.7519 l
+-0.206 2.7519 l
+-0.206 0.5176 l
+-0.206 0.332 -0.144 0.2402 0.05 0.2402 c
+0.201 0.2402 l
+0.201 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 23.022 0.0196] cm
+0 0 m
+-0.325 0 -0.487 0.2285 -0.487 0.5097 c
+-0.487 1.6777 l
+-0.727 1.6777 l
+-0.727 1.8896 l
+-0.487 1.8896 l
+-0.487 2.4853 l
+-0.209 2.4853 l
+-0.209 1.8896 l
+0.197 1.8896 l
+0.197 1.6777 l
+-0.209 1.6777 l
+-0.209 0.5176 l
+-0.209 0.3437 -0.128 0.2402 0.05 0.2402 c
+0.197 0.2402 l
+0.197 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 25.359 0.0196] cm
+0 0 m
+0 0.21191 l
+-0.135 0.057598 -0.325 -0.023502 -0.537 -0.023502 c
+-0.742 -0.023502 -0.912 0.038994 -1.028 0.1543 c
+-1.163 0.2861 -1.221 0.4678 -1.221 0.6875 c
+-1.221 1.9013 l
+-0.942 1.9013 l
+-0.942 0.7304 l
+-0.942 0.3945 -0.765 0.2236 -0.479 0.2236 c
+-0.193 0.2236 -0.004 0.3984 -0.004 0.7304 c
+-0.004 1.9013 l
+0.275 1.9013 l
+0.275 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 27.777 1.5577] cm
+0 0 m
+-0.104 0.1045 -0.181 0.1396 -0.328 0.1396 c
+-0.607 0.1396 -0.784 -0.0811 -0.784 -0.3711 c
+-0.784 -1.5381 l
+-1.062 -1.5381 l
+-1.062 0.3632 l
+-0.784 0.3632 l
+-0.784 0.1318 l
+-0.68 0.29 -0.471 0.3857 -0.251 0.3857 c
+-0.069 0.3857 0.07 0.3437 0.205 0.209 c
+0 0 l
+f
+Q
+Q
+/DeviceRGB {} cs
+[0 0 0] sc
+[0.2157 0.3922 0.5647] sc
+q
+[1 0 0 1 19.526 68.814] cm
+0 0 m
+-5.838 -5.837 l
+11.114 -5.837 l
+0 0 l
+f*
+Q
+[0.1176 0.2078 0.4039] sc
+q
+[1 0 0 1 6.8892 65.431] cm
+0 0 m
+0 -8.255 l
+11.988 3.73 l
+0 0 l
+f*
+Q
+[0.7333 0.8392 0.251] sc
+q
+[1 0 0 1 0.34668 54.104] cm
+0 0 m
+5.8384 -5.838 l
+5.8384 11.113 l
+0 0 l
+f*
+Q
+[0.6039 0.8 0.4039] sc
+q
+[1 0 0 1 3.7305 41.468] cm
+0 0 m
+8.257 0 l
+-3.7305 11.985 l
+0 0 l
+f*
+Q
+[0.2588 0.7372 0.6235] sc
+q
+[1 0 0 1 15.065 34.925] cm
+0 0 m
+5.838 5.837 l
+-11.115 5.837 l
+0 0 l
+f*
+Q
+[0 0.698 0.7059] sc
+q
+[1 0 0 1 27.696 38.31] cm
+0 0 m
+0 8.256 l
+-11.987 -3.73 l
+0 0 l
+f*
+Q
+[0.5294 0.8314 0.9294] sc
+q
+[1 0 0 1 34.239 49.637] cm
+0 0 m
+-5.838 5.838 l
+-5.838 -11.113 l
+0 0 l
+f*
+Q
+q
+0 0.06 34.56 69.105 re
+W
+[0.3451 0.5843 0.7216] sc
+q
+[1 0 0 1 30.851 62.277] cm
+0 0 m
+-8.256 0 l
+3.731 -11.985 l
+0 0 l
+f*
+Q
+Q
+Q
+showpage
+%%PageTrailer
+pdfEndPage
+%%Trailer
+end
+%%DocumentSuppliedResources:
+%%EOF
diff --git a/macros/latex/contrib/tudscr/logo/DDC-07.pdf b/macros/latex/contrib/tudscr/logo/DDC-07.pdf
new file mode 100644
index 0000000000..f6e248434a
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/DDC-07.pdf
Binary files differ
diff --git a/macros/latex/contrib/tudscr/logo/DDC-09.eps b/macros/latex/contrib/tudscr/logo/DDC-09.eps
new file mode 100644
index 0000000000..52225b4346
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/DDC-09.eps
@@ -0,0 +1,2430 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%XpdfVersion: 3.03
+%%Creator: Adobe Illustrator CS4
+%%Title: DDC-09.eps
+%%LanguageLevel: 2
+%%DocumentSuppliedResources: (atend)
+%%BoundingBox: 0 0 144 52
+%%HiResBoundingBox: 0 0 143.667 51.306
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset xpdf 3.03 0
+%%Copyright: Copyright 1996-2011 Glyph & Cog, LLC
+/xpdf 75 dict def xpdf begin
+% PDF special state
+/pdfDictSize 15 def
+/pdfSetup {
+ /setpagedevice where {
+ pop 2 dict begin
+ /Policies 1 dict dup begin /PageSize 6 def end def
+ { /Duplex true def } if
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfSetupPaper {
+ 2 array astore
+ /setpagedevice where {
+ pop 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfStartPage {
+ pdfDictSize dict begin
+ /pdfFillCS [] def
+ /pdfFillXform {} def
+ /pdfStrokeCS [] def
+ /pdfStrokeXform {} def
+ /pdfFill [0] def
+ /pdfStroke [0] def
+ /pdfFillOP false def
+ /pdfStrokeOP false def
+ /pdfLastFill false def
+ /pdfLastStroke false def
+ /pdfTextMat [1 0 0 1 0 0] def
+ /pdfFontSize 0 def
+ /pdfCharSpacing 0 def
+ /pdfTextRender 0 def
+ /pdfTextRise 0 def
+ /pdfWordSpacing 0 def
+ /pdfHorizScaling 1 def
+ /pdfTextClipPath [] def
+} def
+/pdfEndPage { end } def
+% PDF color state
+/cs { /pdfFillXform exch def dup /pdfFillCS exch def
+ setcolorspace } def
+/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def
+ setcolorspace } def
+/sc { pdfLastFill not { pdfFillCS setcolorspace } if
+ dup /pdfFill exch def aload pop pdfFillXform setcolor
+ /pdfLastFill true def /pdfLastStroke false def } def
+/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if
+ dup /pdfStroke exch def aload pop pdfStrokeXform setcolor
+ /pdfLastStroke true def /pdfLastFill false def } def
+/op { /pdfFillOP exch def
+ pdfLastFill { pdfFillOP setoverprint } if } def
+/OP { /pdfStrokeOP exch def
+ pdfLastStroke { pdfStrokeOP setoverprint } if } def
+/fCol {
+ pdfLastFill not {
+ pdfFillCS setcolorspace
+ pdfFill aload pop pdfFillXform setcolor
+ pdfFillOP setoverprint
+ /pdfLastFill true def /pdfLastStroke false def
+ } if
+} def
+/sCol {
+ pdfLastStroke not {
+ pdfStrokeCS setcolorspace
+ pdfStroke aload pop pdfStrokeXform setcolor
+ pdfStrokeOP setoverprint
+ /pdfLastStroke true def /pdfLastFill false def
+ } if
+} def
+% build a font
+/pdfMakeFont {
+ 4 3 roll findfont
+ 4 2 roll matrix scale makefont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /Encoding exch def
+ currentdict
+ end
+ definefont pop
+} def
+/pdfMakeFont16 {
+ exch findfont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /WMode exch def
+ currentdict
+ end
+ definefont pop
+} def
+% graphics state operators
+/q { gsave pdfDictSize dict begin } def
+/Q {
+ end grestore
+ /pdfLastFill where {
+ pop
+ pdfLastFill {
+ pdfFillOP setoverprint
+ } {
+ pdfStrokeOP setoverprint
+ } ifelse
+ } if
+} def
+/cm { concat } def
+/d { setdash } def
+/i { setflat } def
+/j { setlinejoin } def
+/J { setlinecap } def
+/M { setmiterlimit } def
+/w { setlinewidth } def
+% path segment operators
+/m { moveto } def
+/l { lineto } def
+/c { curveto } def
+/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+ neg 0 rlineto closepath } def
+/h { closepath } def
+% path painting operators
+/S { sCol stroke } def
+/Sf { fCol stroke } def
+/f { fCol fill } def
+/f* { fCol eofill } def
+% clipping operators
+/W { clip newpath } def
+/W* { eoclip newpath } def
+/Ws { strokepath clip newpath } def
+% text state operators
+/Tc { /pdfCharSpacing exch def } def
+/Tf { dup /pdfFontSize exch def
+ dup pdfHorizScaling mul exch matrix scale
+ pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put
+ exch findfont exch makefont setfont } def
+/Tr { /pdfTextRender exch def } def
+/Ts { /pdfTextRise exch def } def
+/Tw { /pdfWordSpacing exch def } def
+/Tz { /pdfHorizScaling exch def } def
+% text positioning operators
+/Td { pdfTextMat transform moveto } def
+/Tm { /pdfTextMat exch def } def
+% text string operators
+/xyshow where {
+ pop
+ /xyshow2 {
+ dup length array
+ 0 2 2 index length 1 sub {
+ 2 index 1 index 2 copy get 3 1 roll 1 add get
+ pdfTextMat dtransform
+ 4 2 roll 2 copy 6 5 roll put 1 add 3 1 roll dup 4 2 roll put
+ } for
+ exch pop
+ xyshow
+ } def
+}{
+ /xyshow2 {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval show moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval show moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/cshow where {
+ pop
+ /xycp {
+ 0 3 2 roll
+ {
+ pop pop currentpoint 3 2 roll
+ 1 string dup 0 4 3 roll put false charpath moveto
+ 2 copy get 2 index 2 index 1 add get
+ pdfTextMat dtransform rmoveto
+ 2 add
+ } exch cshow
+ pop pop
+ } def
+}{
+ /xycp {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval false charpath moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval false charpath moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/Tj {
+ fCol
+ 0 pdfTextRise pdfTextMat dtransform rmoveto
+ currentpoint 4 2 roll
+ pdfTextRender 1 and 0 eq {
+ 2 copy xyshow2
+ } if
+ pdfTextRender 3 and dup 1 eq exch 2 eq or {
+ 3 index 3 index moveto
+ 2 copy
+ currentfont /FontType get 3 eq { fCol } { sCol } ifelse
+ xycp currentpoint stroke moveto
+ } if
+ pdfTextRender 4 and 0 ne {
+ 4 2 roll moveto xycp
+ /pdfTextClipPath [ pdfTextClipPath aload pop
+ {/moveto cvx}
+ {/lineto cvx}
+ {/curveto cvx}
+ {/closepath cvx}
+ pathforall ] def
+ currentpoint newpath moveto
+ } {
+ pop pop pop pop
+ } ifelse
+ 0 pdfTextRise neg pdfTextMat dtransform rmoveto
+} def
+/TJm { 0.001 mul pdfFontSize mul pdfHorizScaling mul neg 0
+ pdfTextMat dtransform rmoveto } def
+/TJmV { 0.001 mul pdfFontSize mul neg 0 exch
+ pdfTextMat dtransform rmoveto } def
+/Tclip { pdfTextClipPath cvx exec clip newpath
+ /pdfTextClipPath [] def } def
+% Level 2/3 image operators
+/pdfImBuf 100 string def
+/pdfImStr {
+ 2 copy exch length lt {
+ 2 copy get exch 1 add exch
+ } {
+ ()
+ } ifelse
+} def
+/skipEOD {
+ { currentfile pdfImBuf readline
+ not { pop exit } if
+ (%-EOD-) eq { exit } if } loop
+} def
+/pdfIm { image skipEOD } def
+/pdfImM { fCol imagemask skipEOD } def
+/pr { 2 index 2 index 3 2 roll putinterval 4 add } def
+/pdfImClip {
+ gsave
+ 0 2 4 index length 1 sub {
+ dup 4 index exch 2 copy
+ get 5 index div put
+ 1 add 3 index exch 2 copy
+ get 3 index div put
+ } for
+ pop pop rectclip
+} def
+/pdfImClipEnd { grestore } def
+% shading operators
+/colordelta {
+ false 0 1 3 index length 1 sub {
+ dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt {
+ pop true
+ } if
+ } for
+ exch pop exch pop
+} def
+/funcCol { func n array astore } def
+/funcSH {
+ dup 0 eq {
+ true
+ } {
+ dup 6 eq {
+ false
+ } {
+ 4 index 4 index funcCol dup
+ 6 index 4 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 5 index 5 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 6 index 8 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ colordelta or or or
+ } ifelse
+ } ifelse
+ {
+ 1 add
+ 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch
+ 6 index 6 index 4 index 4 index 4 index funcSH
+ 2 index 6 index 6 index 4 index 4 index funcSH
+ 6 index 2 index 4 index 6 index 4 index funcSH
+ 5 3 roll 3 2 roll funcSH pop pop
+ } {
+ pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul
+ funcCol sc
+ dup 4 index exch mat transform m
+ 3 index 3 index mat transform l
+ 1 index 3 index mat transform l
+ mat transform l pop pop h f*
+ } ifelse
+} def
+/axialCol {
+ dup 0 lt {
+ pop t0
+ } {
+ dup 1 gt {
+ pop t1
+ } {
+ dt mul t0 add
+ } ifelse
+ } ifelse
+ func n array astore
+} def
+/axialSH {
+ dup 2 lt {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index axialCol 2 index axialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index axialSH
+ exch 3 2 roll axialSH
+ } {
+ pop 2 copy add 0.5 mul
+ axialCol sc
+ exch dup dx mul x0 add exch dy mul y0 add
+ 3 2 roll dup dx mul x0 add exch dy mul y0 add
+ dx abs dy abs ge {
+ 2 copy yMin sub dy mul dx div add yMin m
+ yMax sub dy mul dx div add yMax l
+ 2 copy yMax sub dy mul dx div add yMax l
+ yMin sub dy mul dx div add yMin l
+ h f*
+ } {
+ exch 2 copy xMin sub dx mul dy div add xMin exch m
+ xMax sub dx mul dy div add xMax exch l
+ exch 2 copy xMax sub dx mul dy div add xMax exch l
+ xMin sub dx mul dy div add xMin exch l
+ h f*
+ } ifelse
+ } ifelse
+} def
+/radialCol {
+ dup t0 lt {
+ pop t0
+ } {
+ dup t1 gt {
+ pop t1
+ } if
+ } ifelse
+ func n array astore
+} def
+/radialSH {
+ dup 0 eq {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index dt mul t0 add radialCol
+ 2 index dt mul t0 add radialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index radialSH
+ exch 3 2 roll radialSH
+ } {
+ pop 2 copy add 0.5 mul dt mul t0 add
+ radialCol sc
+ encl {
+ exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 0 360 arc h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 360 0 arcn h f
+ } {
+ 2 copy
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arcn
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arcn h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arc
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arc h f
+ } ifelse
+ } ifelse
+} def
+end
+%%EndResource
+%%EndProlog
+%%BeginSetup
+xpdf begin
+%%EndSetup
+pdfStartPage
+[] 0 d
+1 i
+0 j
+0 J
+10 M
+1 w
+/DeviceGray {} cs
+[0] sc
+/DeviceGray {} CS
+[0] SC
+false op
+false OP
+{} settransfer
+0 0 143.667 51.306 re
+W
+q
+q
+1 i
+0.059998 0.06 143.607 51.246 re
+W
+[/Separation (schwarz) /DeviceRGB
+/xpdfSamples0 [
+1
+1
+1
+0.984314
+0.984314
+0.984314
+0.972549
+0.968627
+0.968627
+0.960784
+0.956863
+0.956863
+0.952941
+0.94902
+0.945098
+0.945098
+0.937255
+0.937255
+0.937255
+0.929412
+0.92549
+0.92549
+0.921569
+0.917647
+0.921569
+0.913725
+0.909804
+0.913725
+0.905882
+0.901961
+0.905882
+0.898039
+0.894118
+0.898039
+0.890196
+0.886275
+0.890196
+0.882353
+0.878431
+0.886275
+0.87451
+0.870588
+0.878431
+0.866667
+0.862745
+0.870588
+0.862745
+0.858824
+0.866667
+0.854902
+0.85098
+0.858824
+0.847059
+0.843137
+0.854902
+0.839216
+0.835294
+0.847059
+0.835294
+0.831373
+0.839216
+0.827451
+0.823529
+0.835294
+0.819608
+0.815686
+0.827451
+0.815686
+0.811765
+0.823529
+0.807843
+0.803922
+0.815686
+0.8
+0.796078
+0.807843
+0.792157
+0.788235
+0.803922
+0.788235
+0.784314
+0.796078
+0.780392
+0.776471
+0.792157
+0.772549
+0.768627
+0.784314
+0.768627
+0.764706
+0.780392
+0.760784
+0.756863
+0.772549
+0.756863
+0.74902
+0.768627
+0.74902
+0.745098
+0.760784
+0.745098
+0.737255
+0.756863
+0.737255
+0.733333
+0.74902
+0.729412
+0.72549
+0.745098
+0.72549
+0.717647
+0.737255
+0.717647
+0.713725
+0.733333
+0.713725
+0.705882
+0.729412
+0.705882
+0.701961
+0.721569
+0.701961
+0.694118
+0.717647
+0.694118
+0.690196
+0.709804
+0.690196
+0.682353
+0.705882
+0.682353
+0.678431
+0.701961
+0.678431
+0.670588
+0.694118
+0.670588
+0.666667
+0.690196
+0.666667
+0.658824
+0.682353
+0.658824
+0.654902
+0.678431
+0.654902
+0.647059
+0.67451
+0.647059
+0.643137
+0.666667
+0.643137
+0.635294
+0.662745
+0.639216
+0.631373
+0.658824
+0.631373
+0.623529
+0.65098
+0.627451
+0.619608
+0.647059
+0.619608
+0.615686
+0.643137
+0.615686
+0.607843
+0.635294
+0.611765
+0.603922
+0.631373
+0.603922
+0.6
+0.627451
+0.6
+0.592157
+0.619608
+0.596078
+0.588235
+0.615686
+0.588235
+0.580392
+0.611765
+0.584314
+0.576471
+0.607843
+0.580392
+0.572549
+0.6
+0.572549
+0.564706
+0.596078
+0.568627
+0.560784
+0.592157
+0.564706
+0.556863
+0.584314
+0.556863
+0.54902
+0.580392
+0.552941
+0.545098
+0.576471
+0.54902
+0.541176
+0.572549
+0.541176
+0.533333
+0.564706
+0.537255
+0.529412
+0.560784
+0.533333
+0.52549
+0.556863
+0.52549
+0.517647
+0.552941
+0.521569
+0.513725
+0.545098
+0.517647
+0.509804
+0.541176
+0.509804
+0.501961
+0.537255
+0.505882
+0.498039
+0.533333
+0.501961
+0.494118
+0.529412
+0.498039
+0.490196
+0.521569
+0.490196
+0.482353
+0.517647
+0.486275
+0.478431
+0.513725
+0.482353
+0.47451
+0.509804
+0.478431
+0.470588
+0.505882
+0.47451
+0.462745
+0.498039
+0.466667
+0.458824
+0.494118
+0.462745
+0.454902
+0.490196
+0.458824
+0.45098
+0.486275
+0.454902
+0.447059
+0.482353
+0.45098
+0.439216
+0.478431
+0.447059
+0.435294
+0.470588
+0.439216
+0.431373
+0.466667
+0.435294
+0.427451
+0.462745
+0.431373
+0.423529
+0.458824
+0.427451
+0.419608
+0.454902
+0.423529
+0.415686
+0.45098
+0.419608
+0.407843
+0.447059
+0.415686
+0.403922
+0.443137
+0.411765
+0.4
+0.439216
+0.407843
+0.396078
+0.435294
+0.4
+0.392157
+0.431373
+0.396078
+0.388235
+0.427451
+0.392157
+0.384314
+0.419608
+0.388235
+0.380392
+0.415686
+0.384314
+0.376471
+0.411765
+0.380392
+0.372549
+0.407843
+0.376471
+0.364706
+0.403922
+0.372549
+0.360784
+0.4
+0.368627
+0.356863
+0.396078
+0.364706
+0.352941
+0.392157
+0.360784
+0.34902
+0.388235
+0.356863
+0.345098
+0.384314
+0.352941
+0.341176
+0.380392
+0.34902
+0.337255
+0.376471
+0.345098
+0.333333
+0.372549
+0.341176
+0.329412
+0.368627
+0.337255
+0.32549
+0.364706
+0.333333
+0.321569
+0.360784
+0.329412
+0.317647
+0.356863
+0.32549
+0.317647
+0.352941
+0.321569
+0.313725
+0.34902
+0.317647
+0.309804
+0.345098
+0.313725
+0.305882
+0.341176
+0.309804
+0.301961
+0.337255
+0.309804
+0.298039
+0.337255
+0.305882
+0.294118
+0.333333
+0.301961
+0.290196
+0.329412
+0.298039
+0.286275
+0.321569
+0.290196
+0.278431
+0.317647
+0.286275
+0.278431
+0.313725
+0.282353
+0.27451
+0.309804
+0.278431
+0.270588
+0.305882
+0.278431
+0.266667
+0.301961
+0.27451
+0.262745
+0.301961
+0.270588
+0.258824
+0.298039
+0.266667
+0.254902
+0.294118
+0.262745
+0.254902
+0.290196
+0.258824
+0.25098
+0.286275
+0.254902
+0.247059
+0.282353
+0.254902
+0.243137
+0.278431
+0.25098
+0.239216
+0.27451
+0.247059
+0.235294
+0.27451
+0.243137
+0.235294
+0.270588
+0.239216
+0.231373
+0.266667
+0.235294
+0.227451
+0.262745
+0.231373
+0.223529
+0.258824
+0.231373
+0.219608
+0.254902
+0.227451
+0.219608
+0.25098
+0.223529
+0.215686
+0.25098
+0.219608
+0.211765
+0.247059
+0.215686
+0.207843
+0.243137
+0.215686
+0.203922
+0.239216
+0.211765
+0.203922
+0.235294
+0.207843
+0.2
+0.231373
+0.203922
+0.196078
+0.227451
+0.203922
+0.192157
+0.227451
+0.2
+0.192157
+0.223529
+0.196078
+0.188235
+0.219608
+0.192157
+0.184314
+0.215686
+0.188235
+0.180392
+0.211765
+0.188235
+0.176471
+0.207843
+0.184314
+0.176471
+0.207843
+0.180392
+0.172549
+0.203922
+0.176471
+0.168627
+0.2
+0.176471
+0.164706
+0.196078
+0.172549
+0.164706
+0.192157
+0.168627
+0.160784
+0.192157
+0.164706
+0.156863
+0.188235
+0.160784
+0.152941
+0.184314
+0.160784
+0.152941
+0.180392
+0.156863
+0.14902
+0.176471
+0.152941
+0.145098
+0.176471
+0.14902
+0.141176
+0.172549
+0.145098
+0.137255
+0.168627
+0.141176
+0.133333
+0.164706
+0.141176
+0.133333
+0.160784
+0.137255
+0.129412
+0.156863
+0.133333
+0.12549
+0.152941
+0.129412
+0.121569
+0.152941
+0.12549
+0.117647
+0.14902
+0.121569
+0.113725
+0.145098
+0.121569
+0.113725
+0.141176
+0.117647
+0.109804
+0.137255
+0.113725
+0.105882
+0.133333
+0.109804
+0.101961
+0.129412
+0.105882
+0.098039
+0.12549
+0.101961
+0.094118
+0.121569
+0.101961
+0.094118
+0.121569
+0.098039
+0.090196
+0.117647
+0.094118
+0.086275
+0.113725
+0.090196
+0.082353
+0.109804
+0.090196
+0.078431
+0.105882
+0.086275
+0.07451
+0.101961
+0.082353
+0.07451
+0.101961
+0.078431
+0.070588
+0.098039
+0.07451
+0.066667
+0.094118
+0.070588
+0.062745
+0.090196
+0.066667
+0.054902
+0.086275
+0.062745
+0.05098
+0.082353
+0.058824
+0.047059
+0.078431
+0.054902
+0.043137
+0.07451
+0.05098
+0.039216
+0.070588
+0.047059
+0.031373
+0.070588
+0.043137
+0.031373
+0.066667
+0.039216
+0.027451
+0.062745
+0.035294
+0.023529
+0.058824
+0.031373
+0.023529
+0.054902
+0.031373
+0.019608
+0.05098
+0.027451
+0.015686
+0.047059
+0.023529
+0.015686
+0.043137
+0.019608
+0.011765
+0.039216
+0.019608
+0.011765
+0.035294
+0.015686
+0.007843
+0.031373
+0.015686
+0.007843
+0.027451
+0.011765
+0.007843
+0.027451
+0.011765
+0.003922
+0.023529
+0.007843
+0.003922
+0.019608
+0.007843
+0.003922
+0.019608
+0.007843
+0
+0.015686
+0.003922
+0
+0.015686
+0.003922
+0
+0.011765
+0.003922
+0
+0.011765
+0
+0
+0.011765
+0
+0
+0.007843
+0
+0
+0.007843
+0
+0
+0.003922
+0
+0
+0.003922
+0
+0
+0.003922
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+] def
+{ 2 array 1 array 3 2 roll
+0 sub 254 mul 0 add
+dup 0 lt { pop 0 } { dup 254 gt { pop 254 } if } ifelse
+dup floor cvi exch dup ceiling cvi exch 2 index sub
+3 index 0 3 2 roll put
+3 index 1 3 2 roll put
+2 index 0 3 2 roll put
+xpdfSamples0
+2 index 0 get
+3 mul 0 add get
+xpdfSamples0
+3 index 1 get
+3 mul 0 add get
+2 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+xpdfSamples0
+3 index 0 get
+3 mul 1 add get
+xpdfSamples0
+4 index 1 get
+3 mul 1 add get
+3 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+xpdfSamples0
+4 index 0 get
+3 mul 2 add get
+xpdfSamples0
+5 index 1 get
+3 mul 2 add get
+4 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+5 3 roll pop pop }
+] {} cs
+[1] sc
+[1] sc
+false op
+false OP
+q
+[1 0 0 1 5.9912 38.529] cm
+0 0 m
+-0.4922 0.549 -1.1631 0.801 -2.0098 0.801 c
+-4.1963 0.801 l
+-4.1963 -7.828 l
+-2.0098 -7.828 l
+-1.1631 -7.828 -0.4922 -7.577 0 -7.028 c
+0.624 -6.345 0.6328 -5.061 0.6328 -3.428 c
+0.6328 -1.8 0.624 -0.679 0 0 c
+1.2373 -8.326 m
+0.4932 -9.079 -0.5947 -9.442 -1.8242 -9.442 c
+-5.9912 -9.442 l
+-5.9912 2.414 l
+-1.8242 2.414 l
+-0.5947 2.414 0.4932 2.047 1.2373 1.298 c
+2.5215 0.015 2.4375 -1.716 2.4375 -3.428 c
+2.4375 -5.145 2.5215 -7.042 1.2373 -8.326 c
+f
+Q
+Q
+[/Separation (schwarz) /DeviceRGB
+/xpdfSamples1 [
+1
+1
+1
+0.984314
+0.984314
+0.984314
+0.972549
+0.968627
+0.968627
+0.960784
+0.956863
+0.956863
+0.952941
+0.94902
+0.945098
+0.945098
+0.937255
+0.937255
+0.937255
+0.929412
+0.92549
+0.92549
+0.921569
+0.917647
+0.921569
+0.913725
+0.909804
+0.913725
+0.905882
+0.901961
+0.905882
+0.898039
+0.894118
+0.898039
+0.890196
+0.886275
+0.890196
+0.882353
+0.878431
+0.886275
+0.87451
+0.870588
+0.878431
+0.866667
+0.862745
+0.870588
+0.862745
+0.858824
+0.866667
+0.854902
+0.85098
+0.858824
+0.847059
+0.843137
+0.854902
+0.839216
+0.835294
+0.847059
+0.835294
+0.831373
+0.839216
+0.827451
+0.823529
+0.835294
+0.819608
+0.815686
+0.827451
+0.815686
+0.811765
+0.823529
+0.807843
+0.803922
+0.815686
+0.8
+0.796078
+0.807843
+0.792157
+0.788235
+0.803922
+0.788235
+0.784314
+0.796078
+0.780392
+0.776471
+0.792157
+0.772549
+0.768627
+0.784314
+0.768627
+0.764706
+0.780392
+0.760784
+0.756863
+0.772549
+0.756863
+0.74902
+0.768627
+0.74902
+0.745098
+0.760784
+0.745098
+0.737255
+0.756863
+0.737255
+0.733333
+0.74902
+0.729412
+0.72549
+0.745098
+0.72549
+0.717647
+0.737255
+0.717647
+0.713725
+0.733333
+0.713725
+0.705882
+0.729412
+0.705882
+0.701961
+0.721569
+0.701961
+0.694118
+0.717647
+0.694118
+0.690196
+0.709804
+0.690196
+0.682353
+0.705882
+0.682353
+0.678431
+0.701961
+0.678431
+0.670588
+0.694118
+0.670588
+0.666667
+0.690196
+0.666667
+0.658824
+0.682353
+0.658824
+0.654902
+0.678431
+0.654902
+0.647059
+0.67451
+0.647059
+0.643137
+0.666667
+0.643137
+0.635294
+0.662745
+0.639216
+0.631373
+0.658824
+0.631373
+0.623529
+0.65098
+0.627451
+0.619608
+0.647059
+0.619608
+0.615686
+0.643137
+0.615686
+0.607843
+0.635294
+0.611765
+0.603922
+0.631373
+0.603922
+0.6
+0.627451
+0.6
+0.592157
+0.619608
+0.596078
+0.588235
+0.615686
+0.588235
+0.580392
+0.611765
+0.584314
+0.576471
+0.607843
+0.580392
+0.572549
+0.6
+0.572549
+0.564706
+0.596078
+0.568627
+0.560784
+0.592157
+0.564706
+0.556863
+0.584314
+0.556863
+0.54902
+0.580392
+0.552941
+0.545098
+0.576471
+0.54902
+0.541176
+0.572549
+0.541176
+0.533333
+0.564706
+0.537255
+0.529412
+0.560784
+0.533333
+0.52549
+0.556863
+0.52549
+0.517647
+0.552941
+0.521569
+0.513725
+0.545098
+0.517647
+0.509804
+0.541176
+0.509804
+0.501961
+0.537255
+0.505882
+0.498039
+0.533333
+0.501961
+0.494118
+0.529412
+0.498039
+0.490196
+0.521569
+0.490196
+0.482353
+0.517647
+0.486275
+0.478431
+0.513725
+0.482353
+0.47451
+0.509804
+0.478431
+0.470588
+0.505882
+0.47451
+0.462745
+0.498039
+0.466667
+0.458824
+0.494118
+0.462745
+0.454902
+0.490196
+0.458824
+0.45098
+0.486275
+0.454902
+0.447059
+0.482353
+0.45098
+0.439216
+0.478431
+0.447059
+0.435294
+0.470588
+0.439216
+0.431373
+0.466667
+0.435294
+0.427451
+0.462745
+0.431373
+0.423529
+0.458824
+0.427451
+0.419608
+0.454902
+0.423529
+0.415686
+0.45098
+0.419608
+0.407843
+0.447059
+0.415686
+0.403922
+0.443137
+0.411765
+0.4
+0.439216
+0.407843
+0.396078
+0.435294
+0.4
+0.392157
+0.431373
+0.396078
+0.388235
+0.427451
+0.392157
+0.384314
+0.419608
+0.388235
+0.380392
+0.415686
+0.384314
+0.376471
+0.411765
+0.380392
+0.372549
+0.407843
+0.376471
+0.364706
+0.403922
+0.372549
+0.360784
+0.4
+0.368627
+0.356863
+0.396078
+0.364706
+0.352941
+0.392157
+0.360784
+0.34902
+0.388235
+0.356863
+0.345098
+0.384314
+0.352941
+0.341176
+0.380392
+0.34902
+0.337255
+0.376471
+0.345098
+0.333333
+0.372549
+0.341176
+0.329412
+0.368627
+0.337255
+0.32549
+0.364706
+0.333333
+0.321569
+0.360784
+0.329412
+0.317647
+0.356863
+0.32549
+0.317647
+0.352941
+0.321569
+0.313725
+0.34902
+0.317647
+0.309804
+0.345098
+0.313725
+0.305882
+0.341176
+0.309804
+0.301961
+0.337255
+0.309804
+0.298039
+0.337255
+0.305882
+0.294118
+0.333333
+0.301961
+0.290196
+0.329412
+0.298039
+0.286275
+0.321569
+0.290196
+0.278431
+0.317647
+0.286275
+0.278431
+0.313725
+0.282353
+0.27451
+0.309804
+0.278431
+0.270588
+0.305882
+0.278431
+0.266667
+0.301961
+0.27451
+0.262745
+0.301961
+0.270588
+0.258824
+0.298039
+0.266667
+0.254902
+0.294118
+0.262745
+0.254902
+0.290196
+0.258824
+0.25098
+0.286275
+0.254902
+0.247059
+0.282353
+0.254902
+0.243137
+0.278431
+0.25098
+0.239216
+0.27451
+0.247059
+0.235294
+0.27451
+0.243137
+0.235294
+0.270588
+0.239216
+0.231373
+0.266667
+0.235294
+0.227451
+0.262745
+0.231373
+0.223529
+0.258824
+0.231373
+0.219608
+0.254902
+0.227451
+0.219608
+0.25098
+0.223529
+0.215686
+0.25098
+0.219608
+0.211765
+0.247059
+0.215686
+0.207843
+0.243137
+0.215686
+0.203922
+0.239216
+0.211765
+0.203922
+0.235294
+0.207843
+0.2
+0.231373
+0.203922
+0.196078
+0.227451
+0.203922
+0.192157
+0.227451
+0.2
+0.192157
+0.223529
+0.196078
+0.188235
+0.219608
+0.192157
+0.184314
+0.215686
+0.188235
+0.180392
+0.211765
+0.188235
+0.176471
+0.207843
+0.184314
+0.176471
+0.207843
+0.180392
+0.172549
+0.203922
+0.176471
+0.168627
+0.2
+0.176471
+0.164706
+0.196078
+0.172549
+0.164706
+0.192157
+0.168627
+0.160784
+0.192157
+0.164706
+0.156863
+0.188235
+0.160784
+0.152941
+0.184314
+0.160784
+0.152941
+0.180392
+0.156863
+0.14902
+0.176471
+0.152941
+0.145098
+0.176471
+0.14902
+0.141176
+0.172549
+0.145098
+0.137255
+0.168627
+0.141176
+0.133333
+0.164706
+0.141176
+0.133333
+0.160784
+0.137255
+0.129412
+0.156863
+0.133333
+0.12549
+0.152941
+0.129412
+0.121569
+0.152941
+0.12549
+0.117647
+0.14902
+0.121569
+0.113725
+0.145098
+0.121569
+0.113725
+0.141176
+0.117647
+0.109804
+0.137255
+0.113725
+0.105882
+0.133333
+0.109804
+0.101961
+0.129412
+0.105882
+0.098039
+0.12549
+0.101961
+0.094118
+0.121569
+0.101961
+0.094118
+0.121569
+0.098039
+0.090196
+0.117647
+0.094118
+0.086275
+0.113725
+0.090196
+0.082353
+0.109804
+0.090196
+0.078431
+0.105882
+0.086275
+0.07451
+0.101961
+0.082353
+0.07451
+0.101961
+0.078431
+0.070588
+0.098039
+0.07451
+0.066667
+0.094118
+0.070588
+0.062745
+0.090196
+0.066667
+0.054902
+0.086275
+0.062745
+0.05098
+0.082353
+0.058824
+0.047059
+0.078431
+0.054902
+0.043137
+0.07451
+0.05098
+0.039216
+0.070588
+0.047059
+0.031373
+0.070588
+0.043137
+0.031373
+0.066667
+0.039216
+0.027451
+0.062745
+0.035294
+0.023529
+0.058824
+0.031373
+0.023529
+0.054902
+0.031373
+0.019608
+0.05098
+0.027451
+0.015686
+0.047059
+0.023529
+0.015686
+0.043137
+0.019608
+0.011765
+0.039216
+0.019608
+0.011765
+0.035294
+0.015686
+0.007843
+0.031373
+0.015686
+0.007843
+0.027451
+0.011765
+0.007843
+0.027451
+0.011765
+0.003922
+0.023529
+0.007843
+0.003922
+0.019608
+0.007843
+0.003922
+0.019608
+0.007843
+0
+0.015686
+0.003922
+0
+0.015686
+0.003922
+0
+0.011765
+0.003922
+0
+0.011765
+0
+0
+0.011765
+0
+0
+0.007843
+0
+0
+0.007843
+0
+0
+0.003922
+0
+0
+0.003922
+0
+0
+0.003922
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+] def
+{ 2 array 1 array 3 2 roll
+0 sub 254 mul 0 add
+dup 0 lt { pop 0 } { dup 254 gt { pop 254 } if } ifelse
+dup floor cvi exch dup ceiling cvi exch 2 index sub
+3 index 0 3 2 roll put
+3 index 1 3 2 roll put
+2 index 0 3 2 roll put
+xpdfSamples1
+2 index 0 get
+3 mul 0 add get
+xpdfSamples1
+3 index 1 get
+3 mul 0 add get
+2 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+xpdfSamples1
+3 index 0 get
+3 mul 1 add get
+xpdfSamples1
+4 index 1 get
+3 mul 1 add get
+3 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+xpdfSamples1
+4 index 0 get
+3 mul 2 add get
+xpdfSamples1
+5 index 1 get
+3 mul 2 add get
+4 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+5 3 roll pop pop }
+] {} cs
+[1] sc
+[1] sc
+false op
+false OP
+1 i
+q
+[1 0 0 1 17.221 39.33] cm
+0 0 m
+-2.67 0 l
+-2.67 -3.717 l
+0 -3.717 l
+1.2 -3.717 2.019 -3.033 2.019 -1.865 c
+2.019 -0.698 1.2 0 0 0 c
+2.084 -10.243 m
+-0.419 -5.247 l
+-2.67 -5.247 l
+-2.67 -10.243 l
+-4.466 -10.243 l
+-4.466 1.613 l
+0.13 1.613 l
+2.381 1.613 3.814 0.167 3.814 -1.852 c
+3.814 -3.55 2.781 -4.633 1.451 -4.996 c
+4.176 -10.243 l
+2.084 -10.243 l
+f
+Q
+q
+[1 0 0 1 25.331 29.087] cm
+0 0 m
+0 11.856 l
+7.572 11.856 l
+7.572 10.243 l
+1.796 10.243 l
+1.796 6.777 l
+6.727 6.777 l
+6.727 5.182 l
+1.796 5.182 l
+1.796 1.614 l
+7.572 1.614 l
+7.572 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 40.179 28.984] cm
+0 0 m
+-1.777 0 -3.06 0.419 -4.196 1.568 c
+-2.996 2.749 l
+-2.131 1.885 -1.182 1.619 0.037 1.619 c
+1.581 1.619 2.484 2.284 2.484 3.434 c
+2.484 3.949 2.335 4.382 2.019 4.661 c
+1.721 4.949 1.423 5.066 0.716 5.164 c
+-0.679 5.363 l
+-1.647 5.498 -2.409 5.829 -2.93 6.317 c
+-3.508 6.861 -3.795 7.61 -3.795 8.582 c
+-3.795 10.644 -2.298 12.058 0.167 12.058 c
+1.739 12.058 2.828 11.662 3.852 10.708 c
+2.698 9.578 l
+1.973 10.28 1.116 10.494 0.121 10.494 c
+-1.273 10.494 -2.047 9.694 -2.047 8.643 c
+-2.047 8.215 -1.907 7.834 -1.6 7.545 c
+-1.293 7.28 -0.818 7.08 -0.261 6.996 c
+1.088 6.796 l
+2.186 6.629 2.8 6.363 3.303 5.912 c
+3.953 5.35 4.261 4.498 4.261 3.484 c
+4.261 1.303 2.484 0 0 0 c
+f
+Q
+q
+[1 0 0 1 54.524 38.529] cm
+0 0 m
+-0.502 0.549 -1.171 0.801 -2.018 0.801 c
+-4.204 0.801 l
+-4.204 -7.828 l
+-2.018 -7.828 l
+-1.171 -7.828 -0.502 -7.577 0 -7.028 c
+0.615 -6.345 0.633 -5.061 0.633 -3.428 c
+0.633 -1.8 0.615 -0.679 0 0 c
+1.229 -8.326 m
+0.485 -9.079 -0.604 -9.442 -1.832 -9.442 c
+-6 -9.442 l
+-6 2.414 l
+-1.832 2.414 l
+-0.604 2.414 0.485 2.047 1.229 1.298 c
+2.513 0.015 2.43 -1.716 2.43 -3.428 c
+2.43 -5.145 2.513 -7.042 1.229 -8.326 c
+f
+Q
+q
+[1 0 0 1 61.278 29.087] cm
+0 0 m
+0 11.856 l
+7.583 11.856 l
+7.583 10.243 l
+1.806 10.243 l
+1.806 6.777 l
+6.729 6.777 l
+6.729 5.182 l
+1.806 5.182 l
+1.806 1.614 l
+7.583 1.614 l
+7.583 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 80.268 29.087] cm
+0 0 m
+-5.48 8.345 l
+-5.48 0 l
+-7.275 0 l
+-7.275 11.856 l
+-5.629 11.856 l
+-0.15 3.53 l
+-0.15 11.856 l
+1.646 11.856 l
+1.646 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 19.648 10.196] cm
+0 0 m
+-1.897 0 -3.759 1.163 -3.759 4.331 c
+-3.759 7.498 -1.897 8.643 0 8.643 c
+1.163 8.643 1.981 8.312 2.781 7.461 c
+1.619 6.331 l
+1.089 6.912 0.67 7.131 0 7.131 c
+-0.642 7.131 -1.2 6.861 -1.562 6.377 c
+-1.926 5.912 -2.065 5.312 -2.065 4.331 c
+-2.065 3.345 -1.926 2.731 -1.562 2.266 c
+-1.2 1.781 -0.642 1.517 0 1.517 c
+0.67 1.517 1.089 1.735 1.619 2.312 c
+2.781 1.2 l
+1.981 0.349 1.163 0 0 0 c
+f
+Q
+q
+[1 0 0 1 30.123 16.839] cm
+0 0 m
+-0.316 0.321 -0.743 0.488 -1.247 0.488 c
+-1.748 0.488 -2.168 0.321 -2.484 0 c
+-2.995 -0.517 -3.061 -1.396 -3.061 -2.312 c
+-3.061 -3.229 -2.995 -4.107 -2.484 -4.628 c
+-2.168 -4.944 -1.748 -5.126 -1.247 -5.126 c
+-0.743 -5.126 -0.316 -4.944 0 -4.628 c
+0.512 -4.107 0.586 -3.229 0.586 -2.312 c
+0.586 -1.396 0.512 -0.517 0 0 c
+1.285 -5.643 m
+0.735 -6.21 -0.103 -6.643 -1.247 -6.643 c
+-2.4 -6.643 -3.209 -6.21 -3.759 -5.643 c
+-4.559 -4.81 -4.764 -3.744 -4.764 -2.312 c
+-4.764 -0.897 -4.559 0.167 -3.759 1 c
+-3.209 1.567 -2.4 2.005 -1.247 2.005 c
+-0.103 2.005 0.735 1.567 1.285 1 c
+2.084 0.167 2.279 -0.897 2.279 -2.312 c
+2.279 -3.744 2.084 -4.81 1.285 -5.643 c
+f
+Q
+q
+[1 0 0 1 41.519 10.294] cm
+0 0 m
+0 5.144 l
+0 6.466 -0.754 7.033 -1.703 7.033 c
+-2.651 7.033 -3.452 6.447 -3.452 5.144 c
+-3.452 0 l
+-5.154 0 l
+-5.154 8.447 l
+-3.489 8.447 l
+-3.489 7.596 l
+-2.903 8.228 -2.084 8.545 -1.236 8.545 c
+-0.371 8.545 0.344 8.266 0.847 7.782 c
+1.488 7.149 1.692 6.35 1.692 5.396 c
+1.692 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 50.822 10.196] cm
+0 0 m
+-1.897 0 -3.759 1.163 -3.759 4.331 c
+-3.759 7.498 -1.897 8.643 0 8.643 c
+1.163 8.643 1.981 8.312 2.781 7.461 c
+1.618 6.331 l
+1.088 6.912 0.67 7.131 0 7.131 c
+-0.651 7.131 -1.199 6.861 -1.562 6.377 c
+-1.926 5.912 -2.064 5.312 -2.064 4.331 c
+-2.064 3.345 -1.926 2.731 -1.562 2.266 c
+-1.199 1.781 -0.651 1.517 0 1.517 c
+0.67 1.517 1.088 1.735 1.618 2.312 c
+2.781 1.2 l
+1.981 0.349 1.163 0 0 0 c
+f
+Q
+q
+[1 0 0 1 61.745 16.359] cm
+0 0 m
+-0.262 0.633 -0.865 1.065 -1.666 1.065 c
+-2.466 1.065 -3.08 0.633 -3.341 0 c
+-3.509 -0.386 -3.545 -0.637 -3.564 -1.148 c
+0.231 -1.148 l
+0.222 -0.637 0.166 -0.386 0 0 c
+-3.564 -2.335 m
+-3.564 -3.781 -2.791 -4.697 -1.415 -4.697 c
+-0.467 -4.697 0.036 -4.428 0.632 -3.833 c
+1.72 -4.852 l
+0.854 -5.712 0.036 -6.163 -1.443 -6.163 c
+-3.564 -6.163 -5.247 -5.047 -5.247 -1.832 c
+-5.247 0.898 -3.825 2.484 -1.666 2.484 c
+0.603 2.484 1.915 0.819 1.915 -1.581 c
+1.915 -2.335 l
+-3.564 -2.335 l
+f
+Q
+q
+[1 0 0 1 71.039 17.327] cm
+0 0 m
+-1.526 0 -1.768 -1.303 -1.768 -2.8 c
+-1.768 -4.303 -1.526 -5.614 0 -5.614 c
+1.535 -5.614 1.748 -4.303 1.748 -2.8 c
+1.748 -1.303 1.535 0 0 0 c
+2.503 -6.382 m
+2.038 -6.847 1.303 -7.131 0.455 -7.131 c
+-0.447 -7.131 -1.145 -6.894 -1.768 -6.163 c
+-1.768 -10.447 l
+-3.46 -10.447 l
+-3.46 1.414 l
+-1.796 1.414 l
+-1.796 0.512 l
+-1.162 1.279 -0.483 1.512 0.437 1.512 c
+1.284 1.512 2.038 1.232 2.503 0.763 c
+3.349 -0.088 3.451 -1.517 3.451 -2.8 c
+3.451 -4.084 3.349 -5.53 2.503 -6.382 c
+f
+Q
+q
+[1 0 0 1 80.964 10.294] cm
+0 0 m
+-1.58 0 -2.316 1.135 -2.316 2.35 c
+-2.316 7.001 l
+-3.283 7.001 l
+-3.283 8.299 l
+-2.316 8.299 l
+-2.316 10.862 l
+-0.613 10.862 l
+-0.613 8.299 l
+1.015 8.299 l
+1.015 7.001 l
+-0.613 7.001 l
+-0.613 2.433 l
+-0.613 1.814 -0.316 1.451 0.317 1.451 c
+1.015 1.451 l
+1.015 0 l
+0 0 l
+f
+Q
+/DeviceRGB {} cs
+[0 0 0] sc
+[0.2157 0.3922 0.5647] sc
+q
+[1 0 0 1 121.322 50.791] cm
+0 0 m
+-8.662 -8.661 l
+16.494 -8.661 l
+0 0 l
+f*
+Q
+[0.1176 0.2078 0.4039] sc
+q
+[1 0 0 1 102.577 45.773] cm
+0 0 m
+0 -12.252 l
+17.786 5.53 l
+0 0 l
+f*
+Q
+[0.7333 0.8392 0.251] sc
+q
+[1 0 0 1 92.873 28.966] cm
+0 0 m
+8.661 -8.662 l
+8.661 16.485 l
+0 0 l
+f*
+Q
+[0.6039 0.8 0.4039] sc
+q
+[1 0 0 1 97.887 10.215] cm
+0 0 m
+12.251 0 l
+-5.536 17.784 l
+0 0 l
+f*
+Q
+[0.2588 0.7372 0.6235] sc
+q
+[1 0 0 1 114.707 0.5079] cm
+0 0 m
+8.661 8.6601 l
+-16.485 8.6601 l
+0 0 l
+f*
+Q
+q
+0.059998 0.06 143.607 51.246 re
+W
+[0 0.698 0.7059] sc
+q
+[1 0 0 1 133.453 5.5264] cm
+0 0 m
+0 12.252 l
+-17.787 -5.5303 l
+0 0 l
+f*
+Q
+Q
+[0.5294 0.8314 0.9294] sc
+q
+[1 0 0 1 143.156 22.333] cm
+0 0 m
+-8.661 8.661 l
+-8.661 -16.485 l
+0 0 l
+f*
+Q
+[0.3451 0.5843 0.7216] sc
+q
+[1 0 0 1 138.133 41.093] cm
+0 0 m
+-12.253 0 l
+5.534 -17.783 l
+0 0 l
+f*
+Q
+Q
+showpage
+%%PageTrailer
+pdfEndPage
+%%Trailer
+end
+%%DocumentSuppliedResources:
+%%EOF
diff --git a/macros/latex/contrib/tudscr/logo/DDC-09.pdf b/macros/latex/contrib/tudscr/logo/DDC-09.pdf
new file mode 100644
index 0000000000..9fe2efae67
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/DDC-09.pdf
Binary files differ
diff --git a/macros/latex/contrib/tudscr/logo/DDC-19.eps b/macros/latex/contrib/tudscr/logo/DDC-19.eps
new file mode 100644
index 0000000000..b78d48c9c0
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/DDC-19.eps
@@ -0,0 +1,1415 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%XpdfVersion: 3.03
+%%Creator: Adobe Illustrator CS4
+%%Title: DDC-19.eps
+%%LanguageLevel: 2
+%%DocumentSuppliedResources: (atend)
+%%BoundingBox: 0 0 35 70
+%%HiResBoundingBox: 0 0 34.582 69.165
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset xpdf 3.03 0
+%%Copyright: Copyright 1996-2011 Glyph & Cog, LLC
+/xpdf 75 dict def xpdf begin
+% PDF special state
+/pdfDictSize 15 def
+/pdfSetup {
+ /setpagedevice where {
+ pop 2 dict begin
+ /Policies 1 dict dup begin /PageSize 6 def end def
+ { /Duplex true def } if
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfSetupPaper {
+ 2 array astore
+ /setpagedevice where {
+ pop 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfStartPage {
+ pdfDictSize dict begin
+ /pdfFillCS [] def
+ /pdfFillXform {} def
+ /pdfStrokeCS [] def
+ /pdfStrokeXform {} def
+ /pdfFill [0] def
+ /pdfStroke [0] def
+ /pdfFillOP false def
+ /pdfStrokeOP false def
+ /pdfLastFill false def
+ /pdfLastStroke false def
+ /pdfTextMat [1 0 0 1 0 0] def
+ /pdfFontSize 0 def
+ /pdfCharSpacing 0 def
+ /pdfTextRender 0 def
+ /pdfTextRise 0 def
+ /pdfWordSpacing 0 def
+ /pdfHorizScaling 1 def
+ /pdfTextClipPath [] def
+} def
+/pdfEndPage { end } def
+% PDF color state
+/cs { /pdfFillXform exch def dup /pdfFillCS exch def
+ setcolorspace } def
+/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def
+ setcolorspace } def
+/sc { pdfLastFill not { pdfFillCS setcolorspace } if
+ dup /pdfFill exch def aload pop pdfFillXform setcolor
+ /pdfLastFill true def /pdfLastStroke false def } def
+/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if
+ dup /pdfStroke exch def aload pop pdfStrokeXform setcolor
+ /pdfLastStroke true def /pdfLastFill false def } def
+/op { /pdfFillOP exch def
+ pdfLastFill { pdfFillOP setoverprint } if } def
+/OP { /pdfStrokeOP exch def
+ pdfLastStroke { pdfStrokeOP setoverprint } if } def
+/fCol {
+ pdfLastFill not {
+ pdfFillCS setcolorspace
+ pdfFill aload pop pdfFillXform setcolor
+ pdfFillOP setoverprint
+ /pdfLastFill true def /pdfLastStroke false def
+ } if
+} def
+/sCol {
+ pdfLastStroke not {
+ pdfStrokeCS setcolorspace
+ pdfStroke aload pop pdfStrokeXform setcolor
+ pdfStrokeOP setoverprint
+ /pdfLastStroke true def /pdfLastFill false def
+ } if
+} def
+% build a font
+/pdfMakeFont {
+ 4 3 roll findfont
+ 4 2 roll matrix scale makefont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /Encoding exch def
+ currentdict
+ end
+ definefont pop
+} def
+/pdfMakeFont16 {
+ exch findfont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /WMode exch def
+ currentdict
+ end
+ definefont pop
+} def
+% graphics state operators
+/q { gsave pdfDictSize dict begin } def
+/Q {
+ end grestore
+ /pdfLastFill where {
+ pop
+ pdfLastFill {
+ pdfFillOP setoverprint
+ } {
+ pdfStrokeOP setoverprint
+ } ifelse
+ } if
+} def
+/cm { concat } def
+/d { setdash } def
+/i { setflat } def
+/j { setlinejoin } def
+/J { setlinecap } def
+/M { setmiterlimit } def
+/w { setlinewidth } def
+% path segment operators
+/m { moveto } def
+/l { lineto } def
+/c { curveto } def
+/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+ neg 0 rlineto closepath } def
+/h { closepath } def
+% path painting operators
+/S { sCol stroke } def
+/Sf { fCol stroke } def
+/f { fCol fill } def
+/f* { fCol eofill } def
+% clipping operators
+/W { clip newpath } def
+/W* { eoclip newpath } def
+/Ws { strokepath clip newpath } def
+% text state operators
+/Tc { /pdfCharSpacing exch def } def
+/Tf { dup /pdfFontSize exch def
+ dup pdfHorizScaling mul exch matrix scale
+ pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put
+ exch findfont exch makefont setfont } def
+/Tr { /pdfTextRender exch def } def
+/Ts { /pdfTextRise exch def } def
+/Tw { /pdfWordSpacing exch def } def
+/Tz { /pdfHorizScaling exch def } def
+% text positioning operators
+/Td { pdfTextMat transform moveto } def
+/Tm { /pdfTextMat exch def } def
+% text string operators
+/xyshow where {
+ pop
+ /xyshow2 {
+ dup length array
+ 0 2 2 index length 1 sub {
+ 2 index 1 index 2 copy get 3 1 roll 1 add get
+ pdfTextMat dtransform
+ 4 2 roll 2 copy 6 5 roll put 1 add 3 1 roll dup 4 2 roll put
+ } for
+ exch pop
+ xyshow
+ } def
+}{
+ /xyshow2 {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval show moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval show moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/cshow where {
+ pop
+ /xycp {
+ 0 3 2 roll
+ {
+ pop pop currentpoint 3 2 roll
+ 1 string dup 0 4 3 roll put false charpath moveto
+ 2 copy get 2 index 2 index 1 add get
+ pdfTextMat dtransform rmoveto
+ 2 add
+ } exch cshow
+ pop pop
+ } def
+}{
+ /xycp {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval false charpath moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval false charpath moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/Tj {
+ fCol
+ 0 pdfTextRise pdfTextMat dtransform rmoveto
+ currentpoint 4 2 roll
+ pdfTextRender 1 and 0 eq {
+ 2 copy xyshow2
+ } if
+ pdfTextRender 3 and dup 1 eq exch 2 eq or {
+ 3 index 3 index moveto
+ 2 copy
+ currentfont /FontType get 3 eq { fCol } { sCol } ifelse
+ xycp currentpoint stroke moveto
+ } if
+ pdfTextRender 4 and 0 ne {
+ 4 2 roll moveto xycp
+ /pdfTextClipPath [ pdfTextClipPath aload pop
+ {/moveto cvx}
+ {/lineto cvx}
+ {/curveto cvx}
+ {/closepath cvx}
+ pathforall ] def
+ currentpoint newpath moveto
+ } {
+ pop pop pop pop
+ } ifelse
+ 0 pdfTextRise neg pdfTextMat dtransform rmoveto
+} def
+/TJm { 0.001 mul pdfFontSize mul pdfHorizScaling mul neg 0
+ pdfTextMat dtransform rmoveto } def
+/TJmV { 0.001 mul pdfFontSize mul neg 0 exch
+ pdfTextMat dtransform rmoveto } def
+/Tclip { pdfTextClipPath cvx exec clip newpath
+ /pdfTextClipPath [] def } def
+% Level 2/3 image operators
+/pdfImBuf 100 string def
+/pdfImStr {
+ 2 copy exch length lt {
+ 2 copy get exch 1 add exch
+ } {
+ ()
+ } ifelse
+} def
+/skipEOD {
+ { currentfile pdfImBuf readline
+ not { pop exit } if
+ (%-EOD-) eq { exit } if } loop
+} def
+/pdfIm { image skipEOD } def
+/pdfImM { fCol imagemask skipEOD } def
+/pr { 2 index 2 index 3 2 roll putinterval 4 add } def
+/pdfImClip {
+ gsave
+ 0 2 4 index length 1 sub {
+ dup 4 index exch 2 copy
+ get 5 index div put
+ 1 add 3 index exch 2 copy
+ get 3 index div put
+ } for
+ pop pop rectclip
+} def
+/pdfImClipEnd { grestore } def
+% shading operators
+/colordelta {
+ false 0 1 3 index length 1 sub {
+ dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt {
+ pop true
+ } if
+ } for
+ exch pop exch pop
+} def
+/funcCol { func n array astore } def
+/funcSH {
+ dup 0 eq {
+ true
+ } {
+ dup 6 eq {
+ false
+ } {
+ 4 index 4 index funcCol dup
+ 6 index 4 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 5 index 5 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 6 index 8 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ colordelta or or or
+ } ifelse
+ } ifelse
+ {
+ 1 add
+ 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch
+ 6 index 6 index 4 index 4 index 4 index funcSH
+ 2 index 6 index 6 index 4 index 4 index funcSH
+ 6 index 2 index 4 index 6 index 4 index funcSH
+ 5 3 roll 3 2 roll funcSH pop pop
+ } {
+ pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul
+ funcCol sc
+ dup 4 index exch mat transform m
+ 3 index 3 index mat transform l
+ 1 index 3 index mat transform l
+ mat transform l pop pop h f*
+ } ifelse
+} def
+/axialCol {
+ dup 0 lt {
+ pop t0
+ } {
+ dup 1 gt {
+ pop t1
+ } {
+ dt mul t0 add
+ } ifelse
+ } ifelse
+ func n array astore
+} def
+/axialSH {
+ dup 2 lt {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index axialCol 2 index axialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index axialSH
+ exch 3 2 roll axialSH
+ } {
+ pop 2 copy add 0.5 mul
+ axialCol sc
+ exch dup dx mul x0 add exch dy mul y0 add
+ 3 2 roll dup dx mul x0 add exch dy mul y0 add
+ dx abs dy abs ge {
+ 2 copy yMin sub dy mul dx div add yMin m
+ yMax sub dy mul dx div add yMax l
+ 2 copy yMax sub dy mul dx div add yMax l
+ yMin sub dy mul dx div add yMin l
+ h f*
+ } {
+ exch 2 copy xMin sub dx mul dy div add xMin exch m
+ xMax sub dx mul dy div add xMax exch l
+ exch 2 copy xMax sub dx mul dy div add xMax exch l
+ xMin sub dx mul dy div add xMin exch l
+ h f*
+ } ifelse
+ } ifelse
+} def
+/radialCol {
+ dup t0 lt {
+ pop t0
+ } {
+ dup t1 gt {
+ pop t1
+ } if
+ } ifelse
+ func n array astore
+} def
+/radialSH {
+ dup 0 eq {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index dt mul t0 add radialCol
+ 2 index dt mul t0 add radialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index radialSH
+ exch 3 2 roll radialSH
+ } {
+ pop 2 copy add 0.5 mul dt mul t0 add
+ radialCol sc
+ encl {
+ exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 0 360 arc h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 360 0 arcn h f
+ } {
+ 2 copy
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arcn
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arcn h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arc
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arc h f
+ } ifelse
+ } ifelse
+} def
+end
+%%EndResource
+%%EndProlog
+%%BeginSetup
+xpdf begin
+%%EndSetup
+pdfStartPage
+[] 0 d
+1 i
+0 j
+0 J
+10 M
+1 w
+/DeviceGray {} cs
+[0] sc
+/DeviceGray {} CS
+[0] SC
+false op
+false OP
+{} settransfer
+0 0 34.582 69.165 re
+W
+q
+/DeviceRGB {} cs
+[0 0 0] sc
+[0.2941 0.302 0.3098] sc
+false op
+false OP
+1 i
+q
+[1 0 0 1 2.6743 27.612] cm
+0 0 m
+-0.1645 0.181 -0.3848 0.264 -0.6645 0.264 c
+-1.3843 0.264 l
+-1.3843 -2.581 l
+-0.6645 -2.581 l
+-0.3848 -2.581 -0.1645 -2.499 0 -2.317 c
+0.2031 -2.092 0.209 -1.67 0.209 -1.132 c
+0.209 -0.593 0.2031 -0.225 0 0 c
+0.4063 -2.746 m
+0.1592 -2.993 -0.1973 -3.114 -0.604 -3.114 c
+-1.977 -3.114 l
+-1.977 0.796 l
+-0.604 0.796 l
+-0.1973 0.796 0.1592 0.676 0.4063 0.429 c
+0.8291 0.005 0.8017 -0.565 0.8017 -1.132 c
+0.8017 -1.697 0.8291 -2.322 0.4063 -2.746 c
+f
+Q
+q
+[1 0 0 1 6.3745 27.875] cm
+0 0 m
+-0.8789 0 l
+-0.8789 -1.225 l
+0 -1.225 l
+0.395 -1.225 0.6645 -0.999 0.6645 -0.615 c
+0.6645 -0.23 0.395 0 0 0 c
+0.6865 -3.377 m
+-0.1372 -1.73 l
+-0.8789 -1.73 l
+-0.8789 -3.377 l
+-1.4722 -3.377 l
+-1.4722 0.532 l
+0.044 0.532 l
+0.7852 0.532 1.2573 0.055 1.2573 -0.609 c
+1.2573 -1.169 0.917 -1.527 0.4775 -1.647 c
+1.3779 -3.377 l
+0.6865 -3.377 l
+f
+Q
+q
+[1 0 0 1 9.0478 24.498] cm
+0 0 m
+0 3.91 l
+2.499 3.91 l
+2.499 3.377 l
+0.5928 3.377 l
+0.5928 2.235 l
+2.218 2.235 l
+2.218 1.708 l
+0.5928 1.708 l
+0.5928 0.533 l
+2.499 0.533 l
+2.499 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 13.945 24.465] cm
+0 0 m
+-0.587 0 -1.011 0.137 -1.384 0.516 c
+-0.988 0.906 l
+-0.703 0.621 -0.39 0.532 0.011 0.532 c
+0.522 0.532 0.818 0.752 0.818 1.131 c
+0.818 1.302 0.769 1.444 0.665 1.537 c
+0.566 1.631 0.467 1.669 0.236 1.702 c
+-0.225 1.768 l
+-0.544 1.813 -0.796 1.922 -0.966 2.081 c
+-1.159 2.263 -1.252 2.51 -1.252 2.828 c
+-1.252 3.509 -0.758 3.976 0.055 3.976 c
+0.571 3.976 0.934 3.844 1.269 3.531 c
+0.89 3.158 l
+0.648 3.388 0.368 3.46 0.039 3.46 c
+-0.423 3.46 -0.675 3.196 -0.675 2.851 c
+-0.675 2.708 -0.631 2.581 -0.527 2.488 c
+-0.428 2.4 -0.269 2.334 -0.088 2.306 c
+0.357 2.24 l
+0.719 2.186 0.923 2.098 1.087 1.949 c
+1.301 1.762 1.406 1.482 1.406 1.147 c
+1.406 0.429 0.818 0 0 0 c
+f
+Q
+q
+[1 0 0 1 18.672 27.612] cm
+0 0 m
+-0.165 0.181 -0.385 0.264 -0.665 0.264 c
+-1.384 0.264 l
+-1.384 -2.581 l
+-0.665 -2.581 l
+-0.385 -2.581 -0.165 -2.499 0 -2.317 c
+0.204 -2.092 0.209 -1.67 0.209 -1.132 c
+0.209 -0.593 0.204 -0.225 0 0 c
+0.406 -2.746 m
+0.159 -2.993 -0.197 -3.114 -0.604 -3.114 c
+-1.977 -3.114 l
+-1.977 0.796 l
+-0.604 0.796 l
+-0.197 0.796 0.159 0.676 0.406 0.429 c
+0.829 0.005 0.802 -0.565 0.802 -1.132 c
+0.802 -1.697 0.829 -2.322 0.406 -2.746 c
+f
+Q
+q
+[1 0 0 1 20.9 24.498] cm
+0 0 m
+0 3.91 l
+2.498 3.91 l
+2.498 3.377 l
+0.593 3.377 l
+0.593 2.235 l
+2.218 2.235 l
+2.218 1.708 l
+0.593 1.708 l
+0.593 0.533 l
+2.498 0.533 l
+2.498 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 27.16 24.498] cm
+0 0 m
+-1.807 2.751 l
+-1.807 0 l
+-2.4 0 l
+-2.4 3.91 l
+-1.857 3.91 l
+-0.05 1.164 l
+-0.05 3.91 l
+0.544 3.91 l
+0.544 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 7.1758 18.125] cm
+0 0 m
+-0.626 0 -1.2412 0.385 -1.2412 1.428 c
+-1.2412 2.472 -0.626 2.85 0 2.85 c
+0.3848 2.85 0.6533 2.74 0.917 2.461 c
+0.5332 2.087 l
+0.3569 2.279 0.2197 2.351 0 2.351 c
+-0.2139 2.351 -0.395 2.263 -0.5161 2.103 c
+-0.6367 1.95 -0.6807 1.752 -0.6807 1.428 c
+-0.6807 1.104 -0.6367 0.901 -0.5161 0.747 c
+-0.395 0.588 -0.2139 0.5 0 0.5 c
+0.2197 0.5 0.3569 0.572 0.5332 0.764 c
+0.917 0.396 l
+0.6533 0.116 0.3848 0 0 0 c
+f
+Q
+q
+[1 0 0 1 10.629 20.316] cm
+0 0 m
+-0.105 0.104 -0.248 0.159 -0.412 0.159 c
+-0.577 0.159 -0.7144 0.104 -0.8188 0 c
+-0.9888 -0.17 -1.0107 -0.462 -1.0107 -0.764 c
+-1.0107 -1.066 -0.9888 -1.357 -0.8188 -1.527 c
+-0.7144 -1.631 -0.577 -1.692 -0.412 -1.692 c
+-0.248 -1.692 -0.105 -1.631 0 -1.527 c
+0.17 -1.357 0.192 -1.066 0.192 -0.764 c
+0.192 -0.462 0.17 -0.17 0 0 c
+0.422 -1.862 m
+0.241 -2.048 -0.033 -2.191 -0.412 -2.191 c
+-0.7905 -2.191 -1.0606 -2.048 -1.2412 -1.862 c
+-1.5044 -1.587 -1.5708 -1.235 -1.5708 -0.764 c
+-1.5708 -0.297 -1.5044 0.055 -1.2412 0.33 c
+-1.0606 0.516 -0.7905 0.659 -0.412 0.659 c
+-0.033 0.659 0.241 0.516 0.422 0.33 c
+0.686 0.055 0.752 -0.297 0.752 -0.764 c
+0.752 -1.235 0.686 -1.587 0.422 -1.862 c
+f
+Q
+q
+[1 0 0 1 14.384 18.159] cm
+0 0 m
+0 1.696 l
+0 2.13 -0.248 2.317 -0.56 2.317 c
+-0.873 2.317 -1.137 2.125 -1.137 1.696 c
+-1.137 0 l
+-1.697 0 l
+-1.697 2.784 l
+-1.148 2.784 l
+-1.148 2.504 l
+-0.956 2.712 -0.687 2.816 -0.407 2.816 c
+-0.121 2.816 0.115 2.724 0.28 2.564 c
+0.495 2.355 0.561 2.092 0.561 1.779 c
+0.561 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 17.453 18.125] cm
+0 0 m
+-0.626 0 -1.241 0.385 -1.241 1.428 c
+-1.241 2.472 -0.626 2.85 0 2.85 c
+0.385 2.85 0.653 2.74 0.917 2.461 c
+0.533 2.087 l
+0.357 2.279 0.219 2.351 0 2.351 c
+-0.214 2.351 -0.396 2.263 -0.517 2.103 c
+-0.637 1.95 -0.681 1.752 -0.681 1.428 c
+-0.681 1.104 -0.637 0.901 -0.517 0.747 c
+-0.396 0.588 -0.214 0.5 0 0.5 c
+0.219 0.5 0.357 0.572 0.533 0.764 c
+0.917 0.396 l
+0.653 0.116 0.385 0 0 0 c
+f
+Q
+q
+[1 0 0 1 21.055 20.157] cm
+0 0 m
+-0.088 0.208 -0.286 0.351 -0.549 0.351 c
+-0.813 0.351 -1.016 0.208 -1.104 0 c
+-1.159 -0.126 -1.169 -0.209 -1.175 -0.378 c
+0.077 -0.378 l
+0.071 -0.209 0.055 -0.126 0 0 c
+-1.175 -0.769 m
+-1.175 -1.247 -0.923 -1.548 -0.467 -1.548 c
+-0.154 -1.548 0.011 -1.46 0.208 -1.263 c
+0.565 -1.598 l
+0.28 -1.883 0.011 -2.032 -0.478 -2.032 c
+-1.175 -2.032 -1.73 -1.664 -1.73 -0.604 c
+-1.73 0.296 -1.263 0.818 -0.549 0.818 c
+0.198 0.818 0.631 0.269 0.631 -0.522 c
+0.631 -0.769 l
+-1.175 -0.769 l
+f
+Q
+q
+[1 0 0 1 24.118 20.476] cm
+0 0 m
+-0.505 0 -0.583 -0.428 -0.583 -0.923 c
+-0.583 -1.417 -0.505 -1.851 0 -1.851 c
+0.504 -1.851 0.577 -1.417 0.577 -0.923 c
+0.577 -0.428 0.504 0 0 0 c
+0.823 -2.103 m
+0.67 -2.257 0.428 -2.35 0.148 -2.35 c
+-0.149 -2.35 -0.379 -2.274 -0.583 -2.032 c
+-0.583 -3.443 l
+-1.143 -3.443 l
+-1.143 0.467 l
+-0.593 0.467 l
+-0.593 0.17 l
+-0.385 0.423 -0.159 0.5 0.142 0.5 c
+0.422 0.5 0.67 0.407 0.823 0.253 c
+1.103 -0.028 1.136 -0.5 1.136 -0.923 c
+1.136 -1.346 1.103 -1.823 0.823 -2.103 c
+f
+Q
+q
+[1 0 0 1 27.39 18.159] cm
+0 0 m
+-0.522 0 -0.764 0.373 -0.764 0.774 c
+-0.764 2.307 l
+-1.082 2.307 l
+-1.082 2.734 l
+-0.764 2.734 l
+-0.764 3.58 l
+-0.204 3.58 l
+-0.204 2.734 l
+0.335 2.734 l
+0.335 2.307 l
+-0.204 2.307 l
+-0.204 0.801 l
+-0.204 0.599 -0.105 0.477 0.105 0.477 c
+0.335 0.477 l
+0.335 0 l
+0 0 l
+f
+Q
+[0.3961 0.4078 0.4157] sc
+q
+[1 0 0 1 0.73389 12.113] cm
+0 0 m
+0 2.752 l
+1.708 2.752 l
+1.708 2.489 l
+0.2939 2.489 l
+0.2939 1.519 l
+1.4995 1.519 l
+1.4995 1.256 l
+0.2939 1.256 l
+0.2939 0.263 l
+1.708 0.263 l
+1.708 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 4.4043 12.113] cm
+0 0 m
+-0.4565 0.739 l
+-0.9199 0 l
+-1.2564 0 l
+-0.6108 0.97 l
+-1.2295 1.901 l
+-0.8931 1.901 l
+-0.4565 1.198 l
+-0.0274 1.901 l
+0.3091 1.901 l
+-0.3096 0.97 l
+0.3359 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 5.4272 12.113] cm
+0 0 m
+0 0.24 l
+1.0591 1.654 l
+0.0581 1.654 l
+0.0581 1.901 l
+1.3794 1.901 l
+1.3794 1.666 l
+0.3164 0.248 l
+1.3794 0.248 l
+1.3794 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 8.8423 13.516] cm
+0 0 m
+-0.0732 0.174 -0.2437 0.286 -0.4448 0.286 c
+-0.6455 0.286 -0.8154 0.174 -0.8887 0 c
+-0.9312 -0.105 -0.939 -0.162 -0.9463 -0.317 c
+0.0581 -0.317 l
+0.0503 -0.162 0.0425 -0.105 0 0 c
+-0.9463 -0.526 m
+-0.9463 -0.943 -0.7495 -1.183 -0.3867 -1.183 c
+-0.1665 -1.183 -0.0386 -1.117 0.1123 -0.966 c
+0.3018 -1.133 l
+0.1084 -1.326 -0.0693 -1.426 -0.3941 -1.426 c
+-0.8965 -1.426 -1.2246 -1.125 -1.2246 -0.452 c
+-1.2246 0.162 -0.9272 0.522 -0.4448 0.522 c
+0.0464 0.522 0.3364 0.166 0.3364 -0.398 c
+0.3364 -0.526 l
+-0.9463 -0.526 l
+f
+Q
+q
+[1 0 0 1 10.611 12.113] cm
+0 0 m
+-0.332 0 -0.483 0.216 -0.483 0.506 c
+-0.483 2.752 l
+-0.205 2.752 l
+-0.205 0.518 l
+-0.205 0.333 -0.143 0.24 0.05 0.24 c
+0.201 0.24 l
+0.201 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 12.125 12.113] cm
+0 0 m
+-0.333 0 -0.483 0.216 -0.483 0.506 c
+-0.483 2.752 l
+-0.205 2.752 l
+-0.205 0.518 l
+-0.205 0.333 -0.143 0.24 0.05 0.24 c
+0.201 0.24 l
+0.201 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 14.188 13.516] cm
+0 0 m
+-0.073 0.174 -0.244 0.286 -0.445 0.286 c
+-0.646 0.286 -0.815 0.174 -0.889 0 c
+-0.931 -0.105 -0.939 -0.162 -0.947 -0.317 c
+0.058 -0.317 l
+0.05 -0.162 0.043 -0.105 0 0 c
+-0.947 -0.526 m
+-0.947 -0.943 -0.75 -1.183 -0.387 -1.183 c
+-0.167 -1.183 -0.039 -1.117 0.112 -0.966 c
+0.302 -1.133 l
+0.108 -1.326 -0.07 -1.426 -0.394 -1.426 c
+-0.896 -1.426 -1.225 -1.125 -1.225 -0.452 c
+-1.225 0.162 -0.928 0.522 -0.445 0.522 c
+0.046 0.522 0.336 0.166 0.336 -0.398 c
+0.336 -0.526 l
+-0.947 -0.526 l
+f
+Q
+q
+[1 0 0 1 16.699 12.113] cm
+0 0 m
+0 1.171 l
+0 1.507 -0.182 1.678 -0.467 1.678 c
+-0.753 1.678 -0.939 1.503 -0.939 1.171 c
+-0.939 0 l
+-1.217 0 l
+-1.217 1.901 l
+-0.939 1.901 l
+-0.939 1.693 l
+-0.804 1.847 -0.619 1.925 -0.406 1.925 c
+-0.201 1.925 -0.035 1.863 0.081 1.747 c
+0.216 1.616 0.278 1.438 0.278 1.217 c
+0.278 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 17.865 12.113] cm
+0 0 m
+0 0.24 l
+1.059 1.654 l
+0.058 1.654 l
+0.058 1.901 l
+1.379 1.901 l
+1.379 1.666 l
+0.317 0.248 l
+1.379 0.248 l
+1.379 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 22.567 12.991] cm
+0 0 m
+-0.534 0 l
+-0.82 0 -0.959 -0.116 -0.959 -0.336 c
+-0.959 -0.557 -0.823 -0.661 -0.522 -0.661 c
+-0.359 -0.661 -0.216 -0.65 -0.097 -0.534 c
+-0.031 -0.472 0 -0.364 0 -0.205 c
+0 0 l
+h
+0 -0.878 m
+0 -0.696 l
+-0.154 -0.85 -0.294 -0.901 -0.549 -0.901 c
+-0.811 -0.901 -0.966 -0.85 -1.086 -0.727 c
+-1.179 -0.634 -1.229 -0.491 -1.229 -0.341 c
+-1.229 -0.008 -0.997 0.208 -0.572 0.208 c
+0 0.208 l
+0 0.39 l
+0 0.668 -0.139 0.807 -0.487 0.807 c
+-0.73 0.807 -0.854 0.749 -0.966 0.591 c
+-1.155 0.765 l
+-0.986 0.985 -0.792 1.047 -0.483 1.047 c
+0.027 1.047 0.278 0.827 0.278 0.413 c
+0.278 -0.878 l
+0 -0.878 l
+f
+Q
+q
+[1 0 0 1 25.089 12.113] cm
+0 0 m
+0 0.212 l
+-0.135 0.058 -0.325 -0.023 -0.537 -0.023 c
+-0.742 -0.023 -0.912 0.039 -1.027 0.155 c
+-1.164 0.286 -1.221 0.468 -1.221 0.688 c
+-1.221 1.901 l
+-0.943 1.901 l
+-0.943 0.73 l
+-0.943 0.394 -0.765 0.224 -0.479 0.224 c
+-0.193 0.224 -0.003 0.398 -0.003 0.73 c
+-0.003 1.901 l
+0.275 1.901 l
+0.275 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 27.024 12.09] cm
+0 0 m
+-0.321 0 -0.572 0.073 -0.78 0.274 c
+-0.595 0.46 l
+-0.444 0.301 -0.24 0.239 -0.003 0.239 c
+0.309 0.239 0.503 0.352 0.503 0.576 c
+0.503 0.742 0.406 0.834 0.186 0.854 c
+-0.127 0.881 l
+-0.498 0.912 -0.695 1.079 -0.695 1.391 c
+-0.695 1.739 -0.402 1.948 0.004 1.948 c
+0.274 1.948 0.518 1.882 0.689 1.744 c
+0.507 1.562 l
+0.371 1.665 0.197 1.712 0 1.712 c
+-0.278 1.712 -0.425 1.592 -0.425 1.399 c
+-0.425 1.236 -0.332 1.14 -0.092 1.121 c
+0.213 1.093 l
+0.545 1.063 0.773 0.935 0.773 0.58 c
+0.773 0.212 0.46 0 0 0 c
+f
+Q
+q
+[1 0 0 1 2.956 6.0678] cm
+0 0 m
+-0.2744 0 l
+-0.8848 2.2032 l
+-1.4956 0 l
+-1.7695 0 l
+-2.4731 2.7515 l
+-2.1602 2.7515 l
+-1.623 0.5332 l
+-1.0161 2.7515 l
+-0.7534 2.7515 l
+-0.1465 0.5332 l
+0.3906 2.7515 l
+0.7031 2.7515 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 4.5039 7.9692] cm
+0 0 m
+0.27832 0 l
+0.27832 -1.9014 l
+0 -1.9014 l
+0 0 l
+h
+-0.0156 0.854 m
+0.29788 0.854 l
+0.29788 0.541 l
+-0.0156 0.541 l
+-0.0156 0.854 l
+h
+f
+Q
+q
+[1 0 0 1 6.5166 6.0449] cm
+0 0 m
+-0.3203 0 -0.5718 0.0727 -0.7808 0.2739 c
+-0.5952 0.4604 l
+-0.4443 0.3013 -0.2393 0.2392 -0.0039 0.2392 c
+0.3101 0.2392 0.5029 0.3511 0.5029 0.5757 c
+0.5029 0.7412 0.4063 0.8349 0.1855 0.854 c
+-0.1269 0.8804 l
+-0.4981 0.9116 -0.6958 1.0781 -0.6958 1.3906 c
+-0.6958 1.7388 -0.4014 1.9477 0.0044 1.9477 c
+0.2744 1.9477 0.5181 1.8818 0.688 1.7431 c
+0.5064 1.561 l
+0.3711 1.6655 0.1973 1.7114 0 1.7114 c
+-0.2778 1.7114 -0.4248 1.5923 -0.4248 1.3984 c
+-0.4248 1.2368 -0.332 1.1396 -0.0923 1.1201 c
+0.2129 1.0937 l
+0.5454 1.062 0.773 0.9355 0.773 0.5796 c
+0.773 0.2119 0.46 0 0 0 c
+f
+Q
+q
+[1 0 0 1 8.8076 6.0449] cm
+0 0 m
+-0.3208 0 -0.5718 0.0727 -0.7812 0.2739 c
+-0.5952 0.4604 l
+-0.4448 0.3013 -0.2397 0.2392 -0.0039 0.2392 c
+0.3091 0.2392 0.5024 0.3511 0.5024 0.5757 c
+0.5024 0.7412 0.4058 0.8349 0.1851 0.854 c
+-0.1274 0.8804 l
+-0.499 0.9116 -0.6958 1.0781 -0.6958 1.3906 c
+-0.6958 1.7388 -0.4019 1.9477 0.0039 1.9477 c
+0.2739 1.9477 0.5176 1.8818 0.688 1.7431 c
+0.5059 1.561 l
+0.3706 1.6655 0.1973 1.7114 0 1.7114 c
+-0.2783 1.7114 -0.4253 1.5923 -0.4253 1.3984 c
+-0.4253 1.2368 -0.3325 1.1396 -0.0933 1.1201 c
+0.2124 1.0937 l
+0.5449 1.062 0.773 0.9355 0.773 0.5796 c
+0.773 0.2119 0.46 0 0 0 c
+f
+Q
+q
+[1 0 0 1 11.682 7.4707] cm
+0 0 m
+-0.073 0.1743 -0.244 0.2856 -0.445 0.2856 c
+-0.645 0.2856 -0.815 0.1743 -0.889 0 c
+-0.931 -0.1045 -0.939 -0.1626 -0.947 -0.3174 c
+0.058 -0.3174 l
+0.05 -0.1626 0.043 -0.1045 0 0 c
+-0.947 -0.5259 m
+-0.947 -0.9429 -0.749 -1.1831 -0.387 -1.1831 c
+-0.167 -1.1831 -0.038 -1.1172 0.112 -0.9654 c
+0.302 -1.1324 l
+0.108 -1.3257 -0.07 -1.4258 -0.394 -1.4258 c
+-0.896 -1.4258 -1.225 -1.1245 -1.225 -0.4522 c
+-1.225 0.1626 -0.928 0.5219 -0.445 0.5219 c
+0.046 0.5219 0.336 0.1665 0.336 -0.3985 c
+0.336 -0.5259 l
+-0.947 -0.5259 l
+f
+Q
+q
+[1 0 0 1 14.262 6.0678] cm
+0 0 m
+0 1.1709 l
+0 1.5074 -0.182 1.6773 -0.467 1.6773 c
+-0.753 1.6773 -0.939 1.503 -0.939 1.1709 c
+-0.939 0 l
+-1.218 0 l
+-1.218 1.9014 l
+-0.939 1.9014 l
+-0.939 1.6924 l
+-0.803 1.8467 -0.618 1.9243 -0.406 1.9243 c
+-0.201 1.9243 -0.034 1.8628 0.081 1.7466 c
+0.217 1.6153 0.278 1.437 0.278 1.2168 c
+0.278 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 16.251 6.0449] cm
+0 0 m
+-0.321 0 -0.572 0.0727 -0.781 0.2739 c
+-0.595 0.4604 l
+-0.445 0.3013 -0.24 0.2392 -0.004 0.2392 c
+0.309 0.2392 0.503 0.3511 0.503 0.5757 c
+0.503 0.7412 0.406 0.8349 0.186 0.854 c
+-0.127 0.8804 l
+-0.498 0.9116 -0.696 1.0781 -0.696 1.3906 c
+-0.696 1.7388 -0.402 1.9477 0.004 1.9477 c
+0.274 1.9477 0.518 1.8818 0.688 1.7431 c
+0.506 1.561 l
+0.371 1.6655 0.197 1.7114 0 1.7114 c
+-0.278 1.7114 -0.425 1.5923 -0.425 1.3984 c
+-0.425 1.2368 -0.332 1.1396 -0.092 1.1201 c
+0.212 1.0937 l
+0.545 1.062 0.773 0.9355 0.773 0.5796 c
+0.773 0.2119 0.46 0 0 0 c
+f
+Q
+q
+[1 0 0 1 18.742 6.0449] cm
+0 0 m
+-0.479 0 -0.842 0.3242 -0.842 0.9736 c
+-0.842 1.623 -0.479 1.9477 0 1.9477 c
+0.263 1.9477 0.429 1.8774 0.626 1.6655 c
+0.437 1.4878 l
+0.294 1.646 0.182 1.6997 0 1.6997 c
+-0.185 1.6997 -0.339 1.6269 -0.44 1.4839 c
+-0.529 1.3603 -0.564 1.2138 -0.564 0.9736 c
+-0.564 0.7339 -0.529 0.5869 -0.44 0.4634 c
+-0.339 0.3208 -0.185 0.2471 0 0.2471 c
+0.182 0.2471 0.294 0.3047 0.437 0.4634 c
+0.626 0.2817 l
+0.429 0.0688 0.263 0 0 0 c
+f
+Q
+q
+[1 0 0 1 21.551 6.0678] cm
+0 0 m
+0 1.1743 l
+0 1.5074 -0.178 1.6773 -0.464 1.6773 c
+-0.75 1.6773 -0.94 1.503 -0.94 1.1743 c
+-0.94 0 l
+-1.218 0 l
+-1.218 2.7515 l
+-0.94 2.7515 l
+-0.94 1.6924 l
+-0.8 1.8511 -0.619 1.9243 -0.406 1.9243 c
+0.023 1.9243 0.278 1.6504 0.278 1.2212 c
+0.278 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 24.02 6.9448] cm
+0 0 m
+-0.534 0 l
+-0.82 0 -0.959 -0.1162 -0.959 -0.336 c
+-0.959 -0.5567 -0.823 -0.6607 -0.522 -0.6607 c
+-0.359 -0.6607 -0.216 -0.6494 -0.097 -0.5332 c
+-0.031 -0.4712 0 -0.3633 0 -0.2041 c
+0 0 l
+h
+0 -0.877 m
+0 -0.6958 l
+-0.155 -0.8501 -0.294 -0.8999 -0.549 -0.8999 c
+-0.812 -0.8999 -0.966 -0.8501 -1.086 -0.7266 c
+-1.179 -0.6338 -1.229 -0.4907 -1.229 -0.3399 c
+-1.229 -0.0073 -0.998 0.2085 -0.573 0.2085 c
+0 0.2085 l
+0 0.3906 l
+0 0.6689 -0.139 0.8081 -0.487 0.8081 c
+-0.731 0.8081 -0.854 0.75 -0.966 0.5913 c
+-1.156 0.7656 l
+-0.986 0.9863 -0.792 1.0478 -0.483 1.0478 c
+0.027 1.0478 0.278 0.8271 0.278 0.414 c
+0.278 -0.877 l
+0 -0.877 l
+f
+Q
+q
+[1 0 0 1 25.75 7.7451] cm
+0 0 m
+0 -1.6773 l
+-0.278 -1.6773 l
+-0.278 0 l
+-0.521 0 l
+-0.521 0.2119 l
+-0.278 0.2119 l
+-0.278 0.5718 l
+-0.278 0.854 -0.12 1.0815 0.204 1.0815 c
+0.406 1.0815 l
+0.406 0.8428 l
+0.255 0.8428 l
+0.078 0.8428 0 0.7378 0 0.5644 c
+0 0.2119 l
+0.406 0.2119 l
+0.406 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 27.592 6.0678] cm
+0 0 m
+-0.325 0 -0.487 0.2281 -0.487 0.5103 c
+-0.487 1.6773 l
+-0.727 1.6773 l
+-0.727 1.8892 l
+-0.487 1.8892 l
+-0.487 2.4849 l
+-0.209 2.4849 l
+-0.209 1.8892 l
+0.197 1.8892 l
+0.197 1.6773 l
+-0.209 1.6773 l
+-0.209 0.5176 l
+-0.209 0.3433 -0.128 0.2393 0.05 0.2393 c
+0.197 0.2393 l
+0.197 0 l
+0 0 l
+f
+Q
+q
+0 0.06 34.56 69.105 re
+W
+q
+[1 0 0 1 7.749 0.022408] cm
+0 0 m
+0 0.21289 l
+-0.1348 0.058094 -0.3247 -0.022896 -0.5371 -0.022896 c
+-0.7422 -0.022896 -0.9121 0.038597 -1.0273 0.1548 c
+-1.1631 0.2862 -1.2207 0.4673 -1.2207 0.688 c
+-1.2207 1.9019 l
+-0.9424 1.9019 l
+-0.9424 0.7305 l
+-0.9424 0.3946 -0.7646 0.22459 -0.479 0.22459 c
+-0.1929 0.22459 -0.0039 0.39849 -0.0039 0.7305 c
+-0.0039 1.9019 l
+0.2744 1.9019 l
+0.2744 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 10.322 0.022408] cm
+0 0 m
+0 1.1714 l
+0 1.5073 -0.181 1.6773 -0.4673 1.6773 c
+-0.7534 1.6773 -0.939 1.5034 -0.939 1.1714 c
+-0.939 0 l
+-1.2173 0 l
+-1.2173 1.9019 l
+-0.939 1.9019 l
+-0.939 1.6929 l
+-0.8037 1.8477 -0.6182 1.9248 -0.4058 1.9248 c
+-0.201 1.9248 -0.035 1.8628 0.081 1.7471 c
+0.217 1.6157 0.278 1.438 0.278 1.2178 c
+0.278 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 12.319 1.6997] cm
+0 0 m
+-0.413 0 -0.479 -0.3555 -0.479 -0.7261 c
+-0.479 -1.0972 -0.413 -1.4532 0 -1.4532 c
+0.413 -1.4532 0.475 -1.0972 0.475 -0.7261 c
+0.475 -0.3555 0.413 0 0 0 c
+0.479 -1.6773 m
+0.479 -1.4493 l
+0.325 -1.6494 0.147 -1.7002 -0.062 -1.7002 c
+-0.255 -1.7002 -0.425 -1.6348 -0.526 -1.5342 c
+-0.719 -1.3409 -0.757 -1.0244 -0.757 -0.7261 c
+-0.757 -0.4287 -0.719 -0.1118 -0.526 0.082 c
+-0.425 0.1816 -0.255 0.2475 -0.062 0.2475 c
+0.147 0.2475 0.321 0.2011 0.475 0.0039 c
+0.475 1.0747 l
+0.753 1.0747 l
+0.753 -1.6773 l
+0.479 -1.6773 l
+f
+Q
+q
+[1 0 0 1 17.264 0.022408] cm
+0 0 m
+-0.838 1.4644 l
+-1.419 0.7696 l
+-1.419 0 l
+-1.712 0 l
+-1.712 2.752 l
+-1.419 2.752 l
+-1.419 1.1714 l
+-0.135 2.752 l
+0.224 2.752 l
+-0.642 1.689 l
+0.348 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 19.6 0.022408] cm
+0 0 m
+0 0.21289 l
+-0.135 0.058094 -0.324 -0.022896 -0.538 -0.022896 c
+-0.742 -0.022896 -0.912 0.038597 -1.028 0.1548 c
+-1.163 0.2862 -1.221 0.4673 -1.221 0.688 c
+-1.221 1.9019 l
+-0.942 1.9019 l
+-0.942 0.7305 l
+-0.942 0.3946 -0.765 0.22459 -0.479 0.22459 c
+-0.193 0.22459 -0.004 0.39849 -0.004 0.7305 c
+-0.004 1.9019 l
+0.274 1.9019 l
+0.274 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 21.431 0.022408] cm
+0 0 m
+-0.333 0 -0.483 0.2168 -0.483 0.50639 c
+-0.483 2.752 l
+-0.206 2.752 l
+-0.206 0.5181 l
+-0.206 0.3325 -0.144 0.2403 0.05 0.2403 c
+0.201 0.2403 l
+0.201 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 23.022 0.022408] cm
+0 0 m
+-0.325 0 -0.487 0.228 -0.487 0.51029 c
+-0.487 1.6773 l
+-0.727 1.6773 l
+-0.727 1.8902 l
+-0.487 1.8902 l
+-0.487 2.4849 l
+-0.209 2.4849 l
+-0.209 1.8902 l
+0.197 1.8902 l
+0.197 1.6773 l
+-0.209 1.6773 l
+-0.209 0.5181 l
+-0.209 0.3443 -0.128 0.2403 0.05 0.2403 c
+0.197 0.2403 l
+0.197 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 25.359 0.022408] cm
+0 0 m
+0 0.21289 l
+-0.135 0.058094 -0.325 -0.022896 -0.537 -0.022896 c
+-0.742 -0.022896 -0.912 0.038597 -1.028 0.1548 c
+-1.163 0.2862 -1.221 0.4673 -1.221 0.688 c
+-1.221 1.9019 l
+-0.942 1.9019 l
+-0.942 0.7305 l
+-0.942 0.3946 -0.765 0.22459 -0.479 0.22459 c
+-0.193 0.22459 -0.004 0.39849 -0.004 0.7305 c
+-0.004 1.9019 l
+0.275 1.9019 l
+0.275 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 27.777 1.561] cm
+0 0 m
+-0.104 0.104 -0.181 0.1387 -0.328 0.1387 c
+-0.607 0.1387 -0.784 -0.0815 -0.784 -0.3711 c
+-0.784 -1.5386 l
+-1.062 -1.5386 l
+-1.062 0.3633 l
+-0.784 0.3633 l
+-0.784 0.1313 l
+-0.68 0.2895 -0.471 0.3862 -0.251 0.3862 c
+-0.069 0.3862 0.07 0.3437 0.205 0.2085 c
+0 0 l
+f
+Q
+Q
+q
+[1 0 0 1 19.526 68.818] cm
+0 0 m
+-5.838 -5.837 l
+11.114 -5.837 l
+0 0 l
+f*
+Q
+[0.2941 0.302 0.3098] sc
+q
+[1 0 0 1 6.8892 65.434] cm
+0 0 m
+0 -8.256 l
+11.988 3.73 l
+0 0 l
+f*
+Q
+[0.7294 0.7412 0.7529] sc
+q
+[1 0 0 1 0.34668 54.106] cm
+0 0 m
+5.8384 -5.838 l
+5.8384 11.113 l
+0 0 l
+f*
+Q
+[0.651 0.6667 0.6823] sc
+q
+[1 0 0 1 3.7305 41.471] cm
+0 0 m
+8.257 0 l
+-3.7305 11.985 l
+0 0 l
+f*
+Q
+[0.4902 0.502 0.5137] sc
+q
+[1 0 0 1 15.065 34.928] cm
+0 0 m
+5.838 5.837 l
+-11.115 5.837 l
+0 0 l
+f*
+Q
+[0.3961 0.4078 0.4157] sc
+q
+[1 0 0 1 27.696 38.313] cm
+0 0 m
+0 8.256 l
+-11.987 -3.73 l
+0 0 l
+f*
+Q
+[0.651 0.6667 0.6823] sc
+q
+[1 0 0 1 34.239 49.64] cm
+0 0 m
+-5.838 5.837 l
+-5.838 -11.113 l
+0 0 l
+f*
+Q
+q
+0 0.06 34.56 69.105 re
+W
+[0.4902 0.502 0.5137] sc
+q
+[1 0 0 1 30.851 62.281] cm
+0 0 m
+-8.256 0 l
+3.731 -11.986 l
+0 0 l
+f*
+Q
+Q
+Q
+showpage
+%%PageTrailer
+pdfEndPage
+%%Trailer
+end
+%%DocumentSuppliedResources:
+%%EOF
diff --git a/macros/latex/contrib/tudscr/logo/DDC-19.pdf b/macros/latex/contrib/tudscr/logo/DDC-19.pdf
new file mode 100644
index 0000000000..d54a240258
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/DDC-19.pdf
Binary files differ
diff --git a/macros/latex/contrib/tudscr/logo/DDC-21.eps b/macros/latex/contrib/tudscr/logo/DDC-21.eps
new file mode 100644
index 0000000000..b26b6a2114
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/DDC-21.eps
@@ -0,0 +1,810 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%XpdfVersion: 3.03
+%%Creator: Adobe Illustrator CS4
+%%Title: DDC-21.eps
+%%LanguageLevel: 2
+%%DocumentSuppliedResources: (atend)
+%%BoundingBox: 0 0 144 52
+%%HiResBoundingBox: 0 0 143.664 51.307
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset xpdf 3.03 0
+%%Copyright: Copyright 1996-2011 Glyph & Cog, LLC
+/xpdf 75 dict def xpdf begin
+% PDF special state
+/pdfDictSize 15 def
+/pdfSetup {
+ /setpagedevice where {
+ pop 2 dict begin
+ /Policies 1 dict dup begin /PageSize 6 def end def
+ { /Duplex true def } if
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfSetupPaper {
+ 2 array astore
+ /setpagedevice where {
+ pop 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfStartPage {
+ pdfDictSize dict begin
+ /pdfFillCS [] def
+ /pdfFillXform {} def
+ /pdfStrokeCS [] def
+ /pdfStrokeXform {} def
+ /pdfFill [0] def
+ /pdfStroke [0] def
+ /pdfFillOP false def
+ /pdfStrokeOP false def
+ /pdfLastFill false def
+ /pdfLastStroke false def
+ /pdfTextMat [1 0 0 1 0 0] def
+ /pdfFontSize 0 def
+ /pdfCharSpacing 0 def
+ /pdfTextRender 0 def
+ /pdfTextRise 0 def
+ /pdfWordSpacing 0 def
+ /pdfHorizScaling 1 def
+ /pdfTextClipPath [] def
+} def
+/pdfEndPage { end } def
+% PDF color state
+/cs { /pdfFillXform exch def dup /pdfFillCS exch def
+ setcolorspace } def
+/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def
+ setcolorspace } def
+/sc { pdfLastFill not { pdfFillCS setcolorspace } if
+ dup /pdfFill exch def aload pop pdfFillXform setcolor
+ /pdfLastFill true def /pdfLastStroke false def } def
+/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if
+ dup /pdfStroke exch def aload pop pdfStrokeXform setcolor
+ /pdfLastStroke true def /pdfLastFill false def } def
+/op { /pdfFillOP exch def
+ pdfLastFill { pdfFillOP setoverprint } if } def
+/OP { /pdfStrokeOP exch def
+ pdfLastStroke { pdfStrokeOP setoverprint } if } def
+/fCol {
+ pdfLastFill not {
+ pdfFillCS setcolorspace
+ pdfFill aload pop pdfFillXform setcolor
+ pdfFillOP setoverprint
+ /pdfLastFill true def /pdfLastStroke false def
+ } if
+} def
+/sCol {
+ pdfLastStroke not {
+ pdfStrokeCS setcolorspace
+ pdfStroke aload pop pdfStrokeXform setcolor
+ pdfStrokeOP setoverprint
+ /pdfLastStroke true def /pdfLastFill false def
+ } if
+} def
+% build a font
+/pdfMakeFont {
+ 4 3 roll findfont
+ 4 2 roll matrix scale makefont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /Encoding exch def
+ currentdict
+ end
+ definefont pop
+} def
+/pdfMakeFont16 {
+ exch findfont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /WMode exch def
+ currentdict
+ end
+ definefont pop
+} def
+% graphics state operators
+/q { gsave pdfDictSize dict begin } def
+/Q {
+ end grestore
+ /pdfLastFill where {
+ pop
+ pdfLastFill {
+ pdfFillOP setoverprint
+ } {
+ pdfStrokeOP setoverprint
+ } ifelse
+ } if
+} def
+/cm { concat } def
+/d { setdash } def
+/i { setflat } def
+/j { setlinejoin } def
+/J { setlinecap } def
+/M { setmiterlimit } def
+/w { setlinewidth } def
+% path segment operators
+/m { moveto } def
+/l { lineto } def
+/c { curveto } def
+/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+ neg 0 rlineto closepath } def
+/h { closepath } def
+% path painting operators
+/S { sCol stroke } def
+/Sf { fCol stroke } def
+/f { fCol fill } def
+/f* { fCol eofill } def
+% clipping operators
+/W { clip newpath } def
+/W* { eoclip newpath } def
+/Ws { strokepath clip newpath } def
+% text state operators
+/Tc { /pdfCharSpacing exch def } def
+/Tf { dup /pdfFontSize exch def
+ dup pdfHorizScaling mul exch matrix scale
+ pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put
+ exch findfont exch makefont setfont } def
+/Tr { /pdfTextRender exch def } def
+/Ts { /pdfTextRise exch def } def
+/Tw { /pdfWordSpacing exch def } def
+/Tz { /pdfHorizScaling exch def } def
+% text positioning operators
+/Td { pdfTextMat transform moveto } def
+/Tm { /pdfTextMat exch def } def
+% text string operators
+/xyshow where {
+ pop
+ /xyshow2 {
+ dup length array
+ 0 2 2 index length 1 sub {
+ 2 index 1 index 2 copy get 3 1 roll 1 add get
+ pdfTextMat dtransform
+ 4 2 roll 2 copy 6 5 roll put 1 add 3 1 roll dup 4 2 roll put
+ } for
+ exch pop
+ xyshow
+ } def
+}{
+ /xyshow2 {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval show moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval show moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/cshow where {
+ pop
+ /xycp {
+ 0 3 2 roll
+ {
+ pop pop currentpoint 3 2 roll
+ 1 string dup 0 4 3 roll put false charpath moveto
+ 2 copy get 2 index 2 index 1 add get
+ pdfTextMat dtransform rmoveto
+ 2 add
+ } exch cshow
+ pop pop
+ } def
+}{
+ /xycp {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval false charpath moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval false charpath moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/Tj {
+ fCol
+ 0 pdfTextRise pdfTextMat dtransform rmoveto
+ currentpoint 4 2 roll
+ pdfTextRender 1 and 0 eq {
+ 2 copy xyshow2
+ } if
+ pdfTextRender 3 and dup 1 eq exch 2 eq or {
+ 3 index 3 index moveto
+ 2 copy
+ currentfont /FontType get 3 eq { fCol } { sCol } ifelse
+ xycp currentpoint stroke moveto
+ } if
+ pdfTextRender 4 and 0 ne {
+ 4 2 roll moveto xycp
+ /pdfTextClipPath [ pdfTextClipPath aload pop
+ {/moveto cvx}
+ {/lineto cvx}
+ {/curveto cvx}
+ {/closepath cvx}
+ pathforall ] def
+ currentpoint newpath moveto
+ } {
+ pop pop pop pop
+ } ifelse
+ 0 pdfTextRise neg pdfTextMat dtransform rmoveto
+} def
+/TJm { 0.001 mul pdfFontSize mul pdfHorizScaling mul neg 0
+ pdfTextMat dtransform rmoveto } def
+/TJmV { 0.001 mul pdfFontSize mul neg 0 exch
+ pdfTextMat dtransform rmoveto } def
+/Tclip { pdfTextClipPath cvx exec clip newpath
+ /pdfTextClipPath [] def } def
+% Level 2/3 image operators
+/pdfImBuf 100 string def
+/pdfImStr {
+ 2 copy exch length lt {
+ 2 copy get exch 1 add exch
+ } {
+ ()
+ } ifelse
+} def
+/skipEOD {
+ { currentfile pdfImBuf readline
+ not { pop exit } if
+ (%-EOD-) eq { exit } if } loop
+} def
+/pdfIm { image skipEOD } def
+/pdfImM { fCol imagemask skipEOD } def
+/pr { 2 index 2 index 3 2 roll putinterval 4 add } def
+/pdfImClip {
+ gsave
+ 0 2 4 index length 1 sub {
+ dup 4 index exch 2 copy
+ get 5 index div put
+ 1 add 3 index exch 2 copy
+ get 3 index div put
+ } for
+ pop pop rectclip
+} def
+/pdfImClipEnd { grestore } def
+% shading operators
+/colordelta {
+ false 0 1 3 index length 1 sub {
+ dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt {
+ pop true
+ } if
+ } for
+ exch pop exch pop
+} def
+/funcCol { func n array astore } def
+/funcSH {
+ dup 0 eq {
+ true
+ } {
+ dup 6 eq {
+ false
+ } {
+ 4 index 4 index funcCol dup
+ 6 index 4 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 5 index 5 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 6 index 8 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ colordelta or or or
+ } ifelse
+ } ifelse
+ {
+ 1 add
+ 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch
+ 6 index 6 index 4 index 4 index 4 index funcSH
+ 2 index 6 index 6 index 4 index 4 index funcSH
+ 6 index 2 index 4 index 6 index 4 index funcSH
+ 5 3 roll 3 2 roll funcSH pop pop
+ } {
+ pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul
+ funcCol sc
+ dup 4 index exch mat transform m
+ 3 index 3 index mat transform l
+ 1 index 3 index mat transform l
+ mat transform l pop pop h f*
+ } ifelse
+} def
+/axialCol {
+ dup 0 lt {
+ pop t0
+ } {
+ dup 1 gt {
+ pop t1
+ } {
+ dt mul t0 add
+ } ifelse
+ } ifelse
+ func n array astore
+} def
+/axialSH {
+ dup 2 lt {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index axialCol 2 index axialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index axialSH
+ exch 3 2 roll axialSH
+ } {
+ pop 2 copy add 0.5 mul
+ axialCol sc
+ exch dup dx mul x0 add exch dy mul y0 add
+ 3 2 roll dup dx mul x0 add exch dy mul y0 add
+ dx abs dy abs ge {
+ 2 copy yMin sub dy mul dx div add yMin m
+ yMax sub dy mul dx div add yMax l
+ 2 copy yMax sub dy mul dx div add yMax l
+ yMin sub dy mul dx div add yMin l
+ h f*
+ } {
+ exch 2 copy xMin sub dx mul dy div add xMin exch m
+ xMax sub dx mul dy div add xMax exch l
+ exch 2 copy xMax sub dx mul dy div add xMax exch l
+ xMin sub dx mul dy div add xMin exch l
+ h f*
+ } ifelse
+ } ifelse
+} def
+/radialCol {
+ dup t0 lt {
+ pop t0
+ } {
+ dup t1 gt {
+ pop t1
+ } if
+ } ifelse
+ func n array astore
+} def
+/radialSH {
+ dup 0 eq {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index dt mul t0 add radialCol
+ 2 index dt mul t0 add radialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index radialSH
+ exch 3 2 roll radialSH
+ } {
+ pop 2 copy add 0.5 mul dt mul t0 add
+ radialCol sc
+ encl {
+ exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 0 360 arc h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 360 0 arcn h f
+ } {
+ 2 copy
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arcn
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arcn h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arc
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arc h f
+ } ifelse
+ } ifelse
+} def
+end
+%%EndResource
+%%EndProlog
+%%BeginSetup
+xpdf begin
+%%EndSetup
+pdfStartPage
+[] 0 d
+1 i
+0 j
+0 J
+10 M
+1 w
+/DeviceGray {} cs
+[0] sc
+/DeviceGray {} CS
+[0] SC
+false op
+false OP
+{} settransfer
+0 0 143.664 51.307 re
+W
+q
+q
+1 i
+0.059998 0.06 143.604 51.247 re
+W
+/DeviceRGB {} cs
+[0 0 0] sc
+[0.2941 0.302 0.3098] sc
+false op
+false OP
+q
+[1 0 0 1 5.9961 38.532] cm
+0 0 m
+-0.499 0.55 -1.165 0.801 -2.0156 0.801 c
+-4.1973 0.801 l
+-4.1973 -7.829 l
+-2.0156 -7.829 l
+-1.165 -7.829 -0.499 -7.578 0 -7.028 c
+0.6143 -6.345 0.6328 -5.062 0.6328 -3.43 c
+0.6328 -1.799 0.6143 -0.682 0 0 c
+1.2334 -8.327 m
+0.4834 -9.077 -0.5972 -9.442 -1.832 -9.442 c
+-5.9961 -9.442 l
+-5.9961 2.415 l
+-1.832 2.415 l
+-0.5972 2.415 0.4834 2.049 1.2334 1.3 c
+2.5127 0.017 2.4316 -1.716 2.4316 -3.43 c
+2.4316 -5.146 2.5127 -7.043 1.2334 -8.327 c
+f
+Q
+Q
+/DeviceRGB {} cs
+[0 0 0] sc
+[0.2941 0.302 0.3098] sc
+false op
+false OP
+1 i
+q
+[1 0 0 1 17.22 39.333] cm
+0 0 m
+-2.666 0 l
+-2.666 -3.716 l
+0 -3.716 l
+1.199 -3.716 2.015 -3.033 2.015 -1.867 c
+2.015 -0.702 1.199 0 0 0 c
+2.083 -10.246 m
+-0.416 -5.247 l
+-2.666 -5.247 l
+-2.666 -10.246 l
+-4.465 -10.246 l
+-4.465 1.613 l
+0.135 1.613 l
+2.384 1.613 3.816 0.166 3.816 -1.849 c
+3.816 -3.55 2.782 -4.631 1.45 -4.997 c
+4.18 -10.246 l
+2.083 -10.246 l
+f
+Q
+q
+[1 0 0 1 25.328 29.089] cm
+0 0 m
+0 11.857 l
+7.578 11.857 l
+7.578 10.244 l
+1.801 10.244 l
+1.801 6.779 l
+6.729 6.779 l
+6.729 5.181 l
+1.801 5.181 l
+1.801 1.614 l
+7.578 1.614 l
+7.578 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 40.183 28.988] cm
+0 0 m
+-1.785 0 -3.062 0.418 -4.199 1.566 c
+-2.998 2.749 l
+-2.135 1.884 -1.182 1.616 0.033 1.616 c
+1.582 1.616 2.48 2.284 2.48 3.432 c
+2.48 3.949 2.332 4.381 2.012 4.663 c
+1.717 4.948 1.414 5.063 0.715 5.163 c
+-0.682 5.363 l
+-1.648 5.495 -2.414 5.83 -2.932 6.313 c
+-3.512 6.862 -3.801 7.612 -3.801 8.579 c
+-3.801 10.642 -2.301 12.059 0.166 12.059 c
+1.732 12.059 2.828 11.66 3.848 10.708 c
+2.699 9.578 l
+1.965 10.277 1.115 10.493 0.113 10.493 c
+-1.281 10.493 -2.049 9.694 -2.049 8.644 c
+-2.049 8.211 -1.916 7.83 -1.602 7.544 c
+-1.299 7.28 -0.818 7.078 -0.268 6.995 c
+1.084 6.795 l
+2.18 6.629 2.797 6.363 3.297 5.913 c
+3.947 5.348 4.262 4.497 4.262 3.482 c
+4.262 1.302 2.48 0 0 0 c
+f
+Q
+q
+[1 0 0 1 54.521 38.532] cm
+0 0 m
+-0.5 0.55 -1.166 0.801 -2.014 0.801 c
+-4.199 0.801 l
+-4.199 -7.829 l
+-2.014 -7.829 l
+-1.166 -7.829 -0.5 -7.578 0 -7.028 c
+0.617 -6.345 0.633 -5.062 0.633 -3.43 c
+0.633 -1.799 0.617 -0.682 0 0 c
+1.232 -8.327 m
+0.482 -9.077 -0.598 -9.442 -1.832 -9.442 c
+-5.996 -9.442 l
+-5.996 2.415 l
+-1.832 2.415 l
+-0.598 2.415 0.482 2.049 1.232 1.3 c
+2.514 0.017 2.43 -1.716 2.43 -3.43 c
+2.43 -5.146 2.514 -7.043 1.232 -8.327 c
+f
+Q
+q
+[1 0 0 1 61.279 29.089] cm
+0 0 m
+0 11.857 l
+7.58 11.857 l
+7.58 10.244 l
+1.801 10.244 l
+1.801 6.779 l
+6.73 6.779 l
+6.73 5.181 l
+1.801 5.181 l
+1.801 1.614 l
+7.58 1.614 l
+7.58 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 80.265 29.089] cm
+0 0 m
+-5.477 8.345 l
+-5.477 0 l
+-7.277 0 l
+-7.277 11.857 l
+-5.631 11.857 l
+-0.15 3.53 l
+-0.15 11.857 l
+1.65 11.857 l
+1.65 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 19.65 10.201] cm
+0 0 m
+-1.898 0 -3.763 1.164 -3.763 4.329 c
+-3.763 7.496 -1.898 8.641 0 8.641 c
+1.165 8.641 1.982 8.309 2.781 7.461 c
+1.617 6.328 l
+1.084 6.913 0.666 7.128 0 7.128 c
+-0.648 7.128 -1.199 6.862 -1.565 6.379 c
+-1.932 5.912 -2.066 5.312 -2.066 4.329 c
+-2.066 3.345 -1.932 2.73 -1.565 2.264 c
+-1.199 1.783 -0.648 1.514 0 1.514 c
+0.666 1.514 1.084 1.732 1.617 2.314 c
+2.781 1.198 l
+1.982 0.347 1.165 0 0 0 c
+f
+Q
+q
+[1 0 0 1 30.126 16.845] cm
+0 0 m
+-0.316 0.318 -0.75 0.484 -1.252 0.484 c
+-1.75 0.484 -2.168 0.318 -2.484 0 c
+-2.998 -0.516 -3.066 -1.398 -3.066 -2.315 c
+-3.066 -3.231 -2.998 -4.113 -2.484 -4.629 c
+-2.168 -4.945 -1.75 -5.129 -1.252 -5.129 c
+-0.75 -5.129 -0.316 -4.945 0 -4.629 c
+0.512 -4.113 0.58 -3.231 0.58 -2.315 c
+0.58 -1.398 0.512 -0.516 0 0 c
+1.279 -5.645 m
+0.73 -6.211 -0.102 -6.642 -1.252 -6.642 c
+-2.4 -6.642 -3.217 -6.211 -3.766 -5.645 c
+-4.564 -4.811 -4.766 -3.745 -4.766 -2.315 c
+-4.766 -0.898 -4.564 0.166 -3.766 1.001 c
+-3.217 1.566 -2.4 2 -1.252 2 c
+-0.102 2 0.73 1.566 1.279 1.001 c
+2.08 0.166 2.281 -0.898 2.281 -2.315 c
+2.281 -3.745 2.08 -4.811 1.279 -5.645 c
+f
+Q
+q
+[1 0 0 1 41.515 10.301] cm
+0 0 m
+0 5.146 l
+0 6.461 -0.748 7.028 -1.699 7.028 c
+-2.65 7.028 -3.449 6.445 -3.449 5.146 c
+-3.449 0 l
+-5.144 0 l
+-5.144 8.442 l
+-3.48 8.442 l
+-3.48 7.594 l
+-2.898 8.227 -2.082 8.543 -1.232 8.543 c
+-0.365 8.543 0.35 8.261 0.848 7.778 c
+1.496 7.146 1.699 6.346 1.699 5.396 c
+1.699 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 50.826 10.201] cm
+0 0 m
+-1.9 0 -3.766 1.164 -3.766 4.329 c
+-3.766 7.496 -1.9 8.641 0 8.641 c
+1.164 8.641 1.978 8.309 2.779 7.461 c
+1.613 6.328 l
+1.082 6.913 0.664 7.128 0 7.128 c
+-0.65 7.128 -1.201 6.862 -1.566 6.379 c
+-1.934 5.912 -2.068 5.312 -2.068 4.329 c
+-2.068 3.345 -1.934 2.73 -1.566 2.264 c
+-1.201 1.783 -0.65 1.514 0 1.514 c
+0.664 1.514 1.082 1.732 1.613 2.314 c
+2.779 1.198 l
+1.978 0.347 1.164 0 0 0 c
+f
+Q
+q
+[1 0 0 1 61.748 16.363] cm
+0 0 m
+-0.268 0.634 -0.865 1.065 -1.666 1.065 c
+-2.465 1.065 -3.082 0.634 -3.346 0 c
+-3.516 -0.384 -3.547 -0.633 -3.564 -1.149 c
+0.232 -1.149 l
+0.217 -0.633 0.166 -0.384 0 0 c
+-3.564 -2.332 m
+-3.564 -3.781 -2.797 -4.697 -1.416 -4.697 c
+-0.469 -4.697 0.035 -4.428 0.631 -3.831 c
+1.717 -4.847 l
+0.848 -5.711 0.035 -6.16 -1.447 -6.16 c
+-3.564 -6.16 -5.246 -5.046 -5.246 -1.832 c
+-5.246 0.899 -3.83 2.481 -1.666 2.481 c
+0.6 2.481 1.914 0.816 1.914 -1.582 c
+1.914 -2.332 l
+-3.564 -2.332 l
+f
+Q
+q
+[1 0 0 1 71.04 17.329] cm
+0 0 m
+-1.531 0 -1.766 -1.301 -1.766 -2.799 c
+-1.766 -4.299 -1.531 -5.614 0 -5.614 c
+1.533 -5.614 1.748 -4.299 1.748 -2.799 c
+1.748 -1.301 1.533 0 0 0 c
+2.494 -6.379 m
+2.031 -6.846 1.299 -7.128 0.447 -7.128 c
+-0.451 -7.128 -1.148 -6.895 -1.766 -6.161 c
+-1.766 -10.443 l
+-3.465 -10.443 l
+-3.465 1.414 l
+-1.801 1.414 l
+-1.801 0.517 l
+-1.166 1.284 -0.484 1.513 0.43 1.513 c
+1.277 1.513 2.031 1.232 2.494 0.766 c
+3.346 -0.085 3.447 -1.516 3.447 -2.799 c
+3.447 -4.08 3.346 -5.528 2.494 -6.379 c
+f
+Q
+q
+[1 0 0 1 80.962 10.301] cm
+0 0 m
+-1.58 0 -2.314 1.132 -2.314 2.348 c
+-2.314 6.997 l
+-3.279 6.997 l
+-3.279 8.294 l
+-2.314 8.294 l
+-2.314 10.857 l
+-0.615 10.857 l
+-0.615 8.294 l
+1.016 8.294 l
+1.016 6.997 l
+-0.615 6.997 l
+-0.615 2.431 l
+-0.615 1.814 -0.314 1.45 0.32 1.45 c
+1.016 1.45 l
+1.016 0 l
+0 0 l
+f
+Q
+[0.3961 0.4078 0.4157] sc
+q
+[1 0 0 1 121.326 50.792] cm
+0 0 m
+-8.662 -8.659 l
+16.488 -8.659 l
+0 0 l
+f*
+Q
+[0.2941 0.302 0.3098] sc
+q
+[1 0 0 1 102.578 45.772] cm
+0 0 m
+0 -12.249 l
+17.787 5.534 l
+0 0 l
+f*
+Q
+[0.7294 0.7412 0.7529] sc
+q
+[1 0 0 1 92.871 28.966] cm
+0 0 m
+8.66 -8.66 l
+8.66 16.488 l
+0 0 l
+f*
+Q
+[0.651 0.6667 0.6823] sc
+q
+[1 0 0 1 97.888 10.22] cm
+0 0 m
+12.252 0 l
+-5.533 17.783 l
+0 0 l
+f*
+Q
+[0.4902 0.502 0.5137] sc
+q
+[1 0 0 1 114.708 0.5127] cm
+0 0 m
+8.663 8.6606 l
+-16.488 8.6606 l
+0 0 l
+f*
+Q
+q
+0.059998 0.06 143.604 51.247 re
+W
+[0.3961 0.4078 0.4157] sc
+q
+[1 0 0 1 133.447 5.5342] cm
+0 0 m
+0 12.247 l
+-17.785 -5.5347 l
+0 0 l
+f*
+Q
+Q
+[0.651 0.6667 0.6823] sc
+q
+[1 0 0 1 143.156 22.339] cm
+0 0 m
+-8.662 8.661 l
+-8.662 -16.487 l
+0 0 l
+f*
+Q
+[0.4902 0.502 0.5137] sc
+q
+[1 0 0 1 138.128 41.093] cm
+0 0 m
+-12.248 0 l
+5.536 -17.783 l
+0 0 l
+f*
+Q
+Q
+showpage
+%%PageTrailer
+pdfEndPage
+%%Trailer
+end
+%%DocumentSuppliedResources:
+%%EOF
diff --git a/macros/latex/contrib/tudscr/logo/DDC-21.pdf b/macros/latex/contrib/tudscr/logo/DDC-21.pdf
new file mode 100644
index 0000000000..de1e329c9c
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/DDC-21.pdf
Binary files differ
diff --git a/macros/latex/contrib/tudscr/logo/DDC-22.eps b/macros/latex/contrib/tudscr/logo/DDC-22.eps
new file mode 100644
index 0000000000..3af96b7dc9
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/DDC-22.eps
@@ -0,0 +1,2224 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%XpdfVersion: 3.03
+%%Creator: Adobe Illustrator CS4
+%%Title: DDC-22.eps
+%%LanguageLevel: 2
+%%DocumentSuppliedResources: (atend)
+%%BoundingBox: 0 0 35 70
+%%HiResBoundingBox: 0 0 34.582 69.165
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset xpdf 3.03 0
+%%Copyright: Copyright 1996-2011 Glyph & Cog, LLC
+/xpdf 75 dict def xpdf begin
+% PDF special state
+/pdfDictSize 15 def
+/pdfSetup {
+ /setpagedevice where {
+ pop 2 dict begin
+ /Policies 1 dict dup begin /PageSize 6 def end def
+ { /Duplex true def } if
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfSetupPaper {
+ 2 array astore
+ /setpagedevice where {
+ pop 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfStartPage {
+ pdfDictSize dict begin
+ /pdfFillCS [] def
+ /pdfFillXform {} def
+ /pdfStrokeCS [] def
+ /pdfStrokeXform {} def
+ /pdfFill [0] def
+ /pdfStroke [0] def
+ /pdfFillOP false def
+ /pdfStrokeOP false def
+ /pdfLastFill false def
+ /pdfLastStroke false def
+ /pdfTextMat [1 0 0 1 0 0] def
+ /pdfFontSize 0 def
+ /pdfCharSpacing 0 def
+ /pdfTextRender 0 def
+ /pdfTextRise 0 def
+ /pdfWordSpacing 0 def
+ /pdfHorizScaling 1 def
+ /pdfTextClipPath [] def
+} def
+/pdfEndPage { end } def
+% PDF color state
+/cs { /pdfFillXform exch def dup /pdfFillCS exch def
+ setcolorspace } def
+/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def
+ setcolorspace } def
+/sc { pdfLastFill not { pdfFillCS setcolorspace } if
+ dup /pdfFill exch def aload pop pdfFillXform setcolor
+ /pdfLastFill true def /pdfLastStroke false def } def
+/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if
+ dup /pdfStroke exch def aload pop pdfStrokeXform setcolor
+ /pdfLastStroke true def /pdfLastFill false def } def
+/op { /pdfFillOP exch def
+ pdfLastFill { pdfFillOP setoverprint } if } def
+/OP { /pdfStrokeOP exch def
+ pdfLastStroke { pdfStrokeOP setoverprint } if } def
+/fCol {
+ pdfLastFill not {
+ pdfFillCS setcolorspace
+ pdfFill aload pop pdfFillXform setcolor
+ pdfFillOP setoverprint
+ /pdfLastFill true def /pdfLastStroke false def
+ } if
+} def
+/sCol {
+ pdfLastStroke not {
+ pdfStrokeCS setcolorspace
+ pdfStroke aload pop pdfStrokeXform setcolor
+ pdfStrokeOP setoverprint
+ /pdfLastStroke true def /pdfLastFill false def
+ } if
+} def
+% build a font
+/pdfMakeFont {
+ 4 3 roll findfont
+ 4 2 roll matrix scale makefont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /Encoding exch def
+ currentdict
+ end
+ definefont pop
+} def
+/pdfMakeFont16 {
+ exch findfont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /WMode exch def
+ currentdict
+ end
+ definefont pop
+} def
+% graphics state operators
+/q { gsave pdfDictSize dict begin } def
+/Q {
+ end grestore
+ /pdfLastFill where {
+ pop
+ pdfLastFill {
+ pdfFillOP setoverprint
+ } {
+ pdfStrokeOP setoverprint
+ } ifelse
+ } if
+} def
+/cm { concat } def
+/d { setdash } def
+/i { setflat } def
+/j { setlinejoin } def
+/J { setlinecap } def
+/M { setmiterlimit } def
+/w { setlinewidth } def
+% path segment operators
+/m { moveto } def
+/l { lineto } def
+/c { curveto } def
+/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+ neg 0 rlineto closepath } def
+/h { closepath } def
+% path painting operators
+/S { sCol stroke } def
+/Sf { fCol stroke } def
+/f { fCol fill } def
+/f* { fCol eofill } def
+% clipping operators
+/W { clip newpath } def
+/W* { eoclip newpath } def
+/Ws { strokepath clip newpath } def
+% text state operators
+/Tc { /pdfCharSpacing exch def } def
+/Tf { dup /pdfFontSize exch def
+ dup pdfHorizScaling mul exch matrix scale
+ pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put
+ exch findfont exch makefont setfont } def
+/Tr { /pdfTextRender exch def } def
+/Ts { /pdfTextRise exch def } def
+/Tw { /pdfWordSpacing exch def } def
+/Tz { /pdfHorizScaling exch def } def
+% text positioning operators
+/Td { pdfTextMat transform moveto } def
+/Tm { /pdfTextMat exch def } def
+% text string operators
+/xyshow where {
+ pop
+ /xyshow2 {
+ dup length array
+ 0 2 2 index length 1 sub {
+ 2 index 1 index 2 copy get 3 1 roll 1 add get
+ pdfTextMat dtransform
+ 4 2 roll 2 copy 6 5 roll put 1 add 3 1 roll dup 4 2 roll put
+ } for
+ exch pop
+ xyshow
+ } def
+}{
+ /xyshow2 {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval show moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval show moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/cshow where {
+ pop
+ /xycp {
+ 0 3 2 roll
+ {
+ pop pop currentpoint 3 2 roll
+ 1 string dup 0 4 3 roll put false charpath moveto
+ 2 copy get 2 index 2 index 1 add get
+ pdfTextMat dtransform rmoveto
+ 2 add
+ } exch cshow
+ pop pop
+ } def
+}{
+ /xycp {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval false charpath moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval false charpath moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/Tj {
+ fCol
+ 0 pdfTextRise pdfTextMat dtransform rmoveto
+ currentpoint 4 2 roll
+ pdfTextRender 1 and 0 eq {
+ 2 copy xyshow2
+ } if
+ pdfTextRender 3 and dup 1 eq exch 2 eq or {
+ 3 index 3 index moveto
+ 2 copy
+ currentfont /FontType get 3 eq { fCol } { sCol } ifelse
+ xycp currentpoint stroke moveto
+ } if
+ pdfTextRender 4 and 0 ne {
+ 4 2 roll moveto xycp
+ /pdfTextClipPath [ pdfTextClipPath aload pop
+ {/moveto cvx}
+ {/lineto cvx}
+ {/curveto cvx}
+ {/closepath cvx}
+ pathforall ] def
+ currentpoint newpath moveto
+ } {
+ pop pop pop pop
+ } ifelse
+ 0 pdfTextRise neg pdfTextMat dtransform rmoveto
+} def
+/TJm { 0.001 mul pdfFontSize mul pdfHorizScaling mul neg 0
+ pdfTextMat dtransform rmoveto } def
+/TJmV { 0.001 mul pdfFontSize mul neg 0 exch
+ pdfTextMat dtransform rmoveto } def
+/Tclip { pdfTextClipPath cvx exec clip newpath
+ /pdfTextClipPath [] def } def
+% Level 2/3 image operators
+/pdfImBuf 100 string def
+/pdfImStr {
+ 2 copy exch length lt {
+ 2 copy get exch 1 add exch
+ } {
+ ()
+ } ifelse
+} def
+/skipEOD {
+ { currentfile pdfImBuf readline
+ not { pop exit } if
+ (%-EOD-) eq { exit } if } loop
+} def
+/pdfIm { image skipEOD } def
+/pdfImM { fCol imagemask skipEOD } def
+/pr { 2 index 2 index 3 2 roll putinterval 4 add } def
+/pdfImClip {
+ gsave
+ 0 2 4 index length 1 sub {
+ dup 4 index exch 2 copy
+ get 5 index div put
+ 1 add 3 index exch 2 copy
+ get 3 index div put
+ } for
+ pop pop rectclip
+} def
+/pdfImClipEnd { grestore } def
+% shading operators
+/colordelta {
+ false 0 1 3 index length 1 sub {
+ dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt {
+ pop true
+ } if
+ } for
+ exch pop exch pop
+} def
+/funcCol { func n array astore } def
+/funcSH {
+ dup 0 eq {
+ true
+ } {
+ dup 6 eq {
+ false
+ } {
+ 4 index 4 index funcCol dup
+ 6 index 4 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 5 index 5 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 6 index 8 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ colordelta or or or
+ } ifelse
+ } ifelse
+ {
+ 1 add
+ 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch
+ 6 index 6 index 4 index 4 index 4 index funcSH
+ 2 index 6 index 6 index 4 index 4 index funcSH
+ 6 index 2 index 4 index 6 index 4 index funcSH
+ 5 3 roll 3 2 roll funcSH pop pop
+ } {
+ pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul
+ funcCol sc
+ dup 4 index exch mat transform m
+ 3 index 3 index mat transform l
+ 1 index 3 index mat transform l
+ mat transform l pop pop h f*
+ } ifelse
+} def
+/axialCol {
+ dup 0 lt {
+ pop t0
+ } {
+ dup 1 gt {
+ pop t1
+ } {
+ dt mul t0 add
+ } ifelse
+ } ifelse
+ func n array astore
+} def
+/axialSH {
+ dup 2 lt {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index axialCol 2 index axialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index axialSH
+ exch 3 2 roll axialSH
+ } {
+ pop 2 copy add 0.5 mul
+ axialCol sc
+ exch dup dx mul x0 add exch dy mul y0 add
+ 3 2 roll dup dx mul x0 add exch dy mul y0 add
+ dx abs dy abs ge {
+ 2 copy yMin sub dy mul dx div add yMin m
+ yMax sub dy mul dx div add yMax l
+ 2 copy yMax sub dy mul dx div add yMax l
+ yMin sub dy mul dx div add yMin l
+ h f*
+ } {
+ exch 2 copy xMin sub dx mul dy div add xMin exch m
+ xMax sub dx mul dy div add xMax exch l
+ exch 2 copy xMax sub dx mul dy div add xMax exch l
+ xMin sub dx mul dy div add xMin exch l
+ h f*
+ } ifelse
+ } ifelse
+} def
+/radialCol {
+ dup t0 lt {
+ pop t0
+ } {
+ dup t1 gt {
+ pop t1
+ } if
+ } ifelse
+ func n array astore
+} def
+/radialSH {
+ dup 0 eq {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index dt mul t0 add radialCol
+ 2 index dt mul t0 add radialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index radialSH
+ exch 3 2 roll radialSH
+ } {
+ pop 2 copy add 0.5 mul dt mul t0 add
+ radialCol sc
+ encl {
+ exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 0 360 arc h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 360 0 arcn h f
+ } {
+ 2 copy
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arcn
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arcn h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arc
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arc h f
+ } ifelse
+ } ifelse
+} def
+end
+%%EndResource
+%%EndProlog
+%%BeginSetup
+xpdf begin
+%%EndSetup
+pdfStartPage
+[] 0 d
+1 i
+0 j
+0 J
+10 M
+1 w
+/DeviceGray {} cs
+[0] sc
+/DeviceGray {} CS
+[0] SC
+false op
+false OP
+{} settransfer
+0 0 34.582 69.165 re
+W
+q
+[/Separation (schwarz) /DeviceRGB
+/xpdfSamples0 [
+1
+1
+1
+0.984314
+0.984314
+0.984314
+0.972549
+0.968627
+0.968627
+0.960784
+0.956863
+0.956863
+0.952941
+0.94902
+0.945098
+0.945098
+0.937255
+0.937255
+0.937255
+0.929412
+0.92549
+0.92549
+0.921569
+0.917647
+0.921569
+0.913725
+0.909804
+0.913725
+0.905882
+0.901961
+0.905882
+0.898039
+0.894118
+0.898039
+0.890196
+0.886275
+0.890196
+0.882353
+0.878431
+0.886275
+0.87451
+0.870588
+0.878431
+0.866667
+0.862745
+0.870588
+0.862745
+0.858824
+0.866667
+0.854902
+0.85098
+0.858824
+0.847059
+0.843137
+0.854902
+0.839216
+0.835294
+0.847059
+0.835294
+0.831373
+0.839216
+0.827451
+0.823529
+0.835294
+0.819608
+0.815686
+0.827451
+0.815686
+0.811765
+0.823529
+0.807843
+0.803922
+0.815686
+0.8
+0.796078
+0.807843
+0.792157
+0.788235
+0.803922
+0.788235
+0.784314
+0.796078
+0.780392
+0.776471
+0.792157
+0.772549
+0.768627
+0.784314
+0.768627
+0.764706
+0.780392
+0.760784
+0.756863
+0.772549
+0.756863
+0.74902
+0.768627
+0.74902
+0.745098
+0.760784
+0.745098
+0.737255
+0.756863
+0.737255
+0.733333
+0.74902
+0.729412
+0.72549
+0.745098
+0.72549
+0.717647
+0.737255
+0.717647
+0.713725
+0.733333
+0.713725
+0.705882
+0.729412
+0.705882
+0.701961
+0.721569
+0.701961
+0.694118
+0.717647
+0.694118
+0.690196
+0.709804
+0.690196
+0.682353
+0.705882
+0.682353
+0.678431
+0.701961
+0.678431
+0.670588
+0.694118
+0.670588
+0.666667
+0.690196
+0.666667
+0.658824
+0.682353
+0.658824
+0.654902
+0.678431
+0.654902
+0.647059
+0.67451
+0.647059
+0.643137
+0.666667
+0.643137
+0.635294
+0.662745
+0.639216
+0.631373
+0.658824
+0.631373
+0.623529
+0.65098
+0.627451
+0.619608
+0.647059
+0.619608
+0.615686
+0.643137
+0.615686
+0.607843
+0.635294
+0.611765
+0.603922
+0.631373
+0.603922
+0.6
+0.627451
+0.6
+0.592157
+0.619608
+0.596078
+0.588235
+0.615686
+0.588235
+0.580392
+0.611765
+0.584314
+0.576471
+0.607843
+0.580392
+0.572549
+0.6
+0.572549
+0.564706
+0.596078
+0.568627
+0.560784
+0.592157
+0.564706
+0.556863
+0.584314
+0.556863
+0.54902
+0.580392
+0.552941
+0.545098
+0.576471
+0.54902
+0.541176
+0.572549
+0.541176
+0.533333
+0.564706
+0.537255
+0.529412
+0.560784
+0.533333
+0.52549
+0.556863
+0.52549
+0.517647
+0.552941
+0.521569
+0.513725
+0.545098
+0.517647
+0.509804
+0.541176
+0.509804
+0.501961
+0.537255
+0.505882
+0.498039
+0.533333
+0.501961
+0.494118
+0.529412
+0.498039
+0.490196
+0.521569
+0.490196
+0.482353
+0.517647
+0.486275
+0.478431
+0.513725
+0.482353
+0.47451
+0.509804
+0.478431
+0.470588
+0.505882
+0.47451
+0.462745
+0.498039
+0.466667
+0.458824
+0.494118
+0.462745
+0.454902
+0.490196
+0.458824
+0.45098
+0.486275
+0.454902
+0.447059
+0.482353
+0.45098
+0.439216
+0.478431
+0.447059
+0.435294
+0.470588
+0.439216
+0.431373
+0.466667
+0.435294
+0.427451
+0.462745
+0.431373
+0.423529
+0.458824
+0.427451
+0.419608
+0.454902
+0.423529
+0.415686
+0.45098
+0.419608
+0.407843
+0.447059
+0.415686
+0.403922
+0.443137
+0.411765
+0.4
+0.439216
+0.407843
+0.396078
+0.435294
+0.4
+0.392157
+0.431373
+0.396078
+0.388235
+0.427451
+0.392157
+0.384314
+0.419608
+0.388235
+0.380392
+0.415686
+0.384314
+0.376471
+0.411765
+0.380392
+0.372549
+0.407843
+0.376471
+0.364706
+0.403922
+0.372549
+0.360784
+0.4
+0.368627
+0.356863
+0.396078
+0.364706
+0.352941
+0.392157
+0.360784
+0.34902
+0.388235
+0.356863
+0.345098
+0.384314
+0.352941
+0.341176
+0.380392
+0.34902
+0.337255
+0.376471
+0.345098
+0.333333
+0.372549
+0.341176
+0.329412
+0.368627
+0.337255
+0.32549
+0.364706
+0.333333
+0.321569
+0.360784
+0.329412
+0.317647
+0.356863
+0.32549
+0.317647
+0.352941
+0.321569
+0.313725
+0.34902
+0.317647
+0.309804
+0.345098
+0.313725
+0.305882
+0.341176
+0.309804
+0.301961
+0.337255
+0.309804
+0.298039
+0.337255
+0.305882
+0.294118
+0.333333
+0.301961
+0.290196
+0.329412
+0.298039
+0.286275
+0.321569
+0.290196
+0.278431
+0.317647
+0.286275
+0.278431
+0.313725
+0.282353
+0.27451
+0.309804
+0.278431
+0.270588
+0.305882
+0.278431
+0.266667
+0.301961
+0.27451
+0.262745
+0.301961
+0.270588
+0.258824
+0.298039
+0.266667
+0.254902
+0.294118
+0.262745
+0.254902
+0.290196
+0.258824
+0.25098
+0.286275
+0.254902
+0.247059
+0.282353
+0.254902
+0.243137
+0.278431
+0.25098
+0.239216
+0.27451
+0.247059
+0.235294
+0.27451
+0.243137
+0.235294
+0.270588
+0.239216
+0.231373
+0.266667
+0.235294
+0.227451
+0.262745
+0.231373
+0.223529
+0.258824
+0.231373
+0.219608
+0.254902
+0.227451
+0.219608
+0.25098
+0.223529
+0.215686
+0.25098
+0.219608
+0.211765
+0.247059
+0.215686
+0.207843
+0.243137
+0.215686
+0.203922
+0.239216
+0.211765
+0.203922
+0.235294
+0.207843
+0.2
+0.231373
+0.203922
+0.196078
+0.227451
+0.203922
+0.192157
+0.227451
+0.2
+0.192157
+0.223529
+0.196078
+0.188235
+0.219608
+0.192157
+0.184314
+0.215686
+0.188235
+0.180392
+0.211765
+0.188235
+0.176471
+0.207843
+0.184314
+0.176471
+0.207843
+0.180392
+0.172549
+0.203922
+0.176471
+0.168627
+0.2
+0.176471
+0.164706
+0.196078
+0.172549
+0.164706
+0.192157
+0.168627
+0.160784
+0.192157
+0.164706
+0.156863
+0.188235
+0.160784
+0.152941
+0.184314
+0.160784
+0.152941
+0.180392
+0.156863
+0.14902
+0.176471
+0.152941
+0.145098
+0.176471
+0.14902
+0.141176
+0.172549
+0.145098
+0.137255
+0.168627
+0.141176
+0.133333
+0.164706
+0.141176
+0.133333
+0.160784
+0.137255
+0.129412
+0.156863
+0.133333
+0.12549
+0.152941
+0.129412
+0.121569
+0.152941
+0.12549
+0.117647
+0.14902
+0.121569
+0.113725
+0.145098
+0.121569
+0.113725
+0.141176
+0.117647
+0.109804
+0.137255
+0.113725
+0.105882
+0.133333
+0.109804
+0.101961
+0.129412
+0.105882
+0.098039
+0.12549
+0.101961
+0.094118
+0.121569
+0.101961
+0.094118
+0.121569
+0.098039
+0.090196
+0.117647
+0.094118
+0.086275
+0.113725
+0.090196
+0.082353
+0.109804
+0.090196
+0.078431
+0.105882
+0.086275
+0.07451
+0.101961
+0.082353
+0.07451
+0.101961
+0.078431
+0.070588
+0.098039
+0.07451
+0.066667
+0.094118
+0.070588
+0.062745
+0.090196
+0.066667
+0.054902
+0.086275
+0.062745
+0.05098
+0.082353
+0.058824
+0.047059
+0.078431
+0.054902
+0.043137
+0.07451
+0.05098
+0.039216
+0.070588
+0.047059
+0.031373
+0.070588
+0.043137
+0.031373
+0.066667
+0.039216
+0.027451
+0.062745
+0.035294
+0.023529
+0.058824
+0.031373
+0.023529
+0.054902
+0.031373
+0.019608
+0.05098
+0.027451
+0.015686
+0.047059
+0.023529
+0.015686
+0.043137
+0.019608
+0.011765
+0.039216
+0.019608
+0.011765
+0.035294
+0.015686
+0.007843
+0.031373
+0.015686
+0.007843
+0.027451
+0.011765
+0.007843
+0.027451
+0.011765
+0.003922
+0.023529
+0.007843
+0.003922
+0.019608
+0.007843
+0.003922
+0.019608
+0.007843
+0
+0.015686
+0.003922
+0
+0.015686
+0.003922
+0
+0.011765
+0.003922
+0
+0.011765
+0
+0
+0.011765
+0
+0
+0.007843
+0
+0
+0.007843
+0
+0
+0.003922
+0
+0
+0.003922
+0
+0
+0.003922
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+] def
+{ 2 array 1 array 3 2 roll
+0 sub 254 mul 0 add
+dup 0 lt { pop 0 } { dup 254 gt { pop 254 } if } ifelse
+dup floor cvi exch dup ceiling cvi exch 2 index sub
+3 index 0 3 2 roll put
+3 index 1 3 2 roll put
+2 index 0 3 2 roll put
+xpdfSamples0
+2 index 0 get
+3 mul 0 add get
+xpdfSamples0
+3 index 1 get
+3 mul 0 add get
+2 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+xpdfSamples0
+3 index 0 get
+3 mul 1 add get
+xpdfSamples0
+4 index 1 get
+3 mul 1 add get
+3 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+xpdfSamples0
+4 index 0 get
+3 mul 2 add get
+xpdfSamples0
+5 index 1 get
+3 mul 2 add get
+4 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+5 3 roll pop pop }
+] {} cs
+[1] sc
+[1] sc
+false op
+false OP
+1 i
+q
+[1 0 0 1 2.6743 27.613] cm
+0 0 m
+-0.1645 0.181 -0.3848 0.263 -0.6645 0.263 c
+-1.3843 0.263 l
+-1.3843 -2.581 l
+-0.6645 -2.581 l
+-0.3848 -2.581 -0.1645 -2.5 0 -2.318 c
+0.2031 -2.093 0.209 -1.67 0.209 -1.132 c
+0.209 -0.594 0.2031 -0.225 0 0 c
+0.4063 -2.746 m
+0.1592 -2.994 -0.1973 -3.114 -0.604 -3.114 c
+-1.977 -3.114 l
+-1.977 0.796 l
+-0.604 0.796 l
+-0.1973 0.796 0.1592 0.675 0.4063 0.428 c
+0.8291 0.005 0.8017 -0.566 0.8017 -1.132 c
+0.8017 -1.697 0.8291 -2.323 0.4063 -2.746 c
+f
+Q
+q
+[1 0 0 1 6.3745 27.876] cm
+0 0 m
+-0.8789 0 l
+-0.8789 -1.225 l
+0 -1.225 l
+0.395 -1.225 0.6645 -1 0.6645 -0.616 c
+0.6645 -0.23 0.395 0 0 0 c
+0.6865 -3.377 m
+-0.1372 -1.73 l
+-0.8789 -1.73 l
+-0.8789 -3.377 l
+-1.4722 -3.377 l
+-1.4722 0.533 l
+0.044 0.533 l
+0.7852 0.533 1.2573 0.054 1.2573 -0.609 c
+1.2573 -1.169 0.917 -1.527 0.4775 -1.647 c
+1.3779 -3.377 l
+0.6865 -3.377 l
+f
+Q
+q
+[1 0 0 1 9.0478 24.499] cm
+0 0 m
+0 3.91 l
+2.499 3.91 l
+2.499 3.377 l
+0.5928 3.377 l
+0.5928 2.235 l
+2.218 2.235 l
+2.218 1.708 l
+0.5928 1.708 l
+0.5928 0.533 l
+2.499 0.533 l
+2.499 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 13.945 24.466] cm
+0 0 m
+-0.587 0 -1.011 0.137 -1.384 0.516 c
+-0.988 0.906 l
+-0.703 0.62 -0.39 0.532 0.011 0.532 c
+0.522 0.532 0.818 0.752 0.818 1.131 c
+0.818 1.301 0.769 1.444 0.665 1.538 c
+0.566 1.631 0.467 1.669 0.236 1.702 c
+-0.225 1.768 l
+-0.544 1.812 -0.796 1.921 -0.966 2.081 c
+-1.159 2.262 -1.252 2.51 -1.252 2.828 c
+-1.252 3.509 -0.758 3.976 0.055 3.976 c
+0.571 3.976 0.934 3.844 1.269 3.531 c
+0.89 3.158 l
+0.648 3.388 0.368 3.459 0.039 3.459 c
+-0.423 3.459 -0.675 3.196 -0.675 2.85 c
+-0.675 2.708 -0.631 2.581 -0.527 2.487 c
+-0.428 2.399 -0.269 2.334 -0.088 2.306 c
+0.357 2.24 l
+0.719 2.185 0.923 2.098 1.087 1.949 c
+1.301 1.762 1.406 1.482 1.406 1.147 c
+1.406 0.428 0.818 0 0 0 c
+f
+Q
+q
+[1 0 0 1 18.672 27.613] cm
+0 0 m
+-0.165 0.181 -0.385 0.263 -0.665 0.263 c
+-1.384 0.263 l
+-1.384 -2.581 l
+-0.665 -2.581 l
+-0.385 -2.581 -0.165 -2.5 0 -2.318 c
+0.204 -2.093 0.209 -1.67 0.209 -1.132 c
+0.209 -0.594 0.204 -0.225 0 0 c
+0.406 -2.746 m
+0.159 -2.994 -0.197 -3.114 -0.604 -3.114 c
+-1.977 -3.114 l
+-1.977 0.796 l
+-0.604 0.796 l
+-0.197 0.796 0.159 0.675 0.406 0.428 c
+0.829 0.005 0.802 -0.566 0.802 -1.132 c
+0.802 -1.697 0.829 -2.323 0.406 -2.746 c
+f
+Q
+q
+[1 0 0 1 20.9 24.499] cm
+0 0 m
+0 3.91 l
+2.498 3.91 l
+2.498 3.377 l
+0.593 3.377 l
+0.593 2.235 l
+2.218 2.235 l
+2.218 1.708 l
+0.593 1.708 l
+0.593 0.533 l
+2.498 0.533 l
+2.498 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 27.16 24.499] cm
+0 0 m
+-1.807 2.751 l
+-1.807 0 l
+-2.4 0 l
+-2.4 3.91 l
+-1.857 3.91 l
+-0.05 1.164 l
+-0.05 3.91 l
+0.544 3.91 l
+0.544 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 7.1758 18.125] cm
+0 0 m
+-0.626 0 -1.2412 0.385 -1.2412 1.428 c
+-1.2412 2.472 -0.626 2.85 0 2.85 c
+0.3848 2.85 0.6533 2.74 0.917 2.461 c
+0.5332 2.087 l
+0.3569 2.279 0.2197 2.351 0 2.351 c
+-0.2139 2.351 -0.395 2.263 -0.5161 2.104 c
+-0.6367 1.95 -0.6807 1.752 -0.6807 1.428 c
+-0.6807 1.104 -0.6367 0.901 -0.5161 0.747 c
+-0.395 0.588 -0.2139 0.5 0 0.5 c
+0.2197 0.5 0.3569 0.572 0.5332 0.764 c
+0.917 0.396 l
+0.6533 0.115 0.3848 0 0 0 c
+f
+Q
+q
+[1 0 0 1 10.629 20.317] cm
+0 0 m
+-0.105 0.104 -0.248 0.159 -0.412 0.159 c
+-0.577 0.159 -0.7144 0.104 -0.8188 0 c
+-0.9888 -0.17 -1.0107 -0.462 -1.0107 -0.764 c
+-1.0107 -1.066 -0.9888 -1.357 -0.8188 -1.527 c
+-0.7144 -1.631 -0.577 -1.691 -0.412 -1.691 c
+-0.248 -1.691 -0.105 -1.631 0 -1.527 c
+0.17 -1.357 0.192 -1.066 0.192 -0.764 c
+0.192 -0.462 0.17 -0.17 0 0 c
+0.422 -1.861 m
+0.241 -2.048 -0.033 -2.192 -0.412 -2.192 c
+-0.7905 -2.192 -1.0606 -2.048 -1.2412 -1.861 c
+-1.5044 -1.587 -1.5708 -1.235 -1.5708 -0.764 c
+-1.5708 -0.296 -1.5044 0.055 -1.2412 0.329 c
+-1.0606 0.516 -0.7905 0.659 -0.412 0.659 c
+-0.033 0.659 0.241 0.516 0.422 0.329 c
+0.686 0.055 0.752 -0.296 0.752 -0.764 c
+0.752 -1.235 0.686 -1.587 0.422 -1.861 c
+f
+Q
+q
+[1 0 0 1 14.384 18.159] cm
+0 0 m
+0 1.696 l
+0 2.13 -0.248 2.317 -0.56 2.317 c
+-0.873 2.317 -1.137 2.125 -1.137 1.696 c
+-1.137 0 l
+-1.697 0 l
+-1.697 2.784 l
+-1.148 2.784 l
+-1.148 2.504 l
+-0.956 2.712 -0.687 2.817 -0.407 2.817 c
+-0.121 2.817 0.115 2.724 0.28 2.564 c
+0.495 2.356 0.561 2.092 0.561 1.779 c
+0.561 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 17.453 18.125] cm
+0 0 m
+-0.626 0 -1.241 0.385 -1.241 1.428 c
+-1.241 2.472 -0.626 2.85 0 2.85 c
+0.385 2.85 0.653 2.74 0.917 2.461 c
+0.533 2.087 l
+0.357 2.279 0.219 2.351 0 2.351 c
+-0.214 2.351 -0.396 2.263 -0.517 2.104 c
+-0.637 1.95 -0.681 1.752 -0.681 1.428 c
+-0.681 1.104 -0.637 0.901 -0.517 0.747 c
+-0.396 0.588 -0.214 0.5 0 0.5 c
+0.219 0.5 0.357 0.572 0.533 0.764 c
+0.917 0.396 l
+0.653 0.115 0.385 0 0 0 c
+f
+Q
+q
+[1 0 0 1 21.055 20.158] cm
+0 0 m
+-0.088 0.209 -0.286 0.351 -0.549 0.351 c
+-0.813 0.351 -1.016 0.209 -1.104 0 c
+-1.159 -0.127 -1.169 -0.209 -1.175 -0.379 c
+0.077 -0.379 l
+0.071 -0.209 0.055 -0.127 0 0 c
+-1.175 -0.769 m
+-1.175 -1.247 -0.923 -1.549 -0.467 -1.549 c
+-0.154 -1.549 0.011 -1.461 0.208 -1.264 c
+0.565 -1.599 l
+0.28 -1.884 0.011 -2.032 -0.478 -2.032 c
+-1.175 -2.032 -1.73 -1.664 -1.73 -0.605 c
+-1.73 0.296 -1.263 0.818 -0.549 0.818 c
+0.198 0.818 0.631 0.269 0.631 -0.522 c
+0.631 -0.769 l
+-1.175 -0.769 l
+f
+Q
+q
+[1 0 0 1 24.118 20.476] cm
+0 0 m
+-0.505 0 -0.583 -0.428 -0.583 -0.923 c
+-0.583 -1.417 -0.505 -1.85 0 -1.85 c
+0.504 -1.85 0.577 -1.417 0.577 -0.923 c
+0.577 -0.428 0.504 0 0 0 c
+0.823 -2.103 m
+0.67 -2.257 0.428 -2.351 0.148 -2.351 c
+-0.149 -2.351 -0.379 -2.273 -0.583 -2.032 c
+-0.583 -3.444 l
+-1.143 -3.444 l
+-1.143 0.467 l
+-0.593 0.467 l
+-0.593 0.17 l
+-0.385 0.423 -0.159 0.5 0.142 0.5 c
+0.422 0.5 0.67 0.407 0.823 0.253 c
+1.103 -0.028 1.136 -0.5 1.136 -0.923 c
+1.136 -1.346 1.103 -1.823 0.823 -2.103 c
+f
+Q
+q
+[1 0 0 1 27.39 18.159] cm
+0 0 m
+-0.522 0 -0.764 0.373 -0.764 0.774 c
+-0.764 2.306 l
+-1.082 2.306 l
+-1.082 2.734 l
+-0.764 2.734 l
+-0.764 3.58 l
+-0.204 3.58 l
+-0.204 2.734 l
+0.335 2.734 l
+0.335 2.306 l
+-0.204 2.306 l
+-0.204 0.801 l
+-0.204 0.598 -0.105 0.478 0.105 0.478 c
+0.335 0.478 l
+0.335 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 0.73389 12.113] cm
+0 0 m
+0 2.751 l
+1.708 2.751 l
+1.708 2.489 l
+0.2939 2.489 l
+0.2939 1.519 l
+1.4995 1.519 l
+1.4995 1.256 l
+0.2939 1.256 l
+0.2939 0.263 l
+1.708 0.263 l
+1.708 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 4.4043 12.113] cm
+0 0 m
+-0.4565 0.739 l
+-0.9199 0 l
+-1.2564 0 l
+-0.6108 0.97 l
+-1.2295 1.901 l
+-0.8931 1.901 l
+-0.4565 1.198 l
+-0.0274 1.901 l
+0.3091 1.901 l
+-0.3096 0.97 l
+0.3359 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 5.4272 12.113] cm
+0 0 m
+0 0.24 l
+1.0591 1.654 l
+0.0581 1.654 l
+0.0581 1.901 l
+1.3794 1.901 l
+1.3794 1.666 l
+0.3164 0.248 l
+1.3794 0.248 l
+1.3794 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 8.8423 13.516] cm
+0 0 m
+-0.0732 0.174 -0.2437 0.287 -0.4448 0.287 c
+-0.6455 0.287 -0.8154 0.174 -0.8887 0 c
+-0.9312 -0.104 -0.939 -0.162 -0.9463 -0.316 c
+0.0581 -0.316 l
+0.0503 -0.162 0.0425 -0.104 0 0 c
+-0.9463 -0.525 m
+-0.9463 -0.942 -0.7495 -1.183 -0.3867 -1.183 c
+-0.1665 -1.183 -0.0386 -1.116 0.1123 -0.966 c
+0.3018 -1.132 l
+0.1084 -1.326 -0.0693 -1.426 -0.3941 -1.426 c
+-0.8965 -1.426 -1.2246 -1.124 -1.2246 -0.452 c
+-1.2246 0.162 -0.9272 0.522 -0.4448 0.522 c
+0.0464 0.522 0.3364 0.167 0.3364 -0.397 c
+0.3364 -0.525 l
+-0.9463 -0.525 l
+f
+Q
+q
+[1 0 0 1 10.611 12.113] cm
+0 0 m
+-0.332 0 -0.483 0.216 -0.483 0.506 c
+-0.483 2.751 l
+-0.205 2.751 l
+-0.205 0.518 l
+-0.205 0.333 -0.143 0.24 0.05 0.24 c
+0.201 0.24 l
+0.201 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 12.125 12.113] cm
+0 0 m
+-0.333 0 -0.483 0.216 -0.483 0.506 c
+-0.483 2.751 l
+-0.205 2.751 l
+-0.205 0.518 l
+-0.205 0.333 -0.143 0.24 0.05 0.24 c
+0.201 0.24 l
+0.201 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 14.188 13.516] cm
+0 0 m
+-0.073 0.174 -0.244 0.287 -0.445 0.287 c
+-0.646 0.287 -0.815 0.174 -0.889 0 c
+-0.931 -0.104 -0.939 -0.162 -0.947 -0.316 c
+0.058 -0.316 l
+0.05 -0.162 0.043 -0.104 0 0 c
+-0.947 -0.525 m
+-0.947 -0.942 -0.75 -1.183 -0.387 -1.183 c
+-0.167 -1.183 -0.039 -1.116 0.112 -0.966 c
+0.302 -1.132 l
+0.108 -1.326 -0.07 -1.426 -0.394 -1.426 c
+-0.896 -1.426 -1.225 -1.124 -1.225 -0.452 c
+-1.225 0.162 -0.928 0.522 -0.445 0.522 c
+0.046 0.522 0.336 0.167 0.336 -0.397 c
+0.336 -0.525 l
+-0.947 -0.525 l
+f
+Q
+q
+[1 0 0 1 16.699 12.113] cm
+0 0 m
+0 1.171 l
+0 1.508 -0.182 1.678 -0.467 1.678 c
+-0.753 1.678 -0.939 1.503 -0.939 1.171 c
+-0.939 0 l
+-1.217 0 l
+-1.217 1.901 l
+-0.939 1.901 l
+-0.939 1.693 l
+-0.804 1.847 -0.619 1.925 -0.406 1.925 c
+-0.201 1.925 -0.035 1.863 0.081 1.747 c
+0.216 1.616 0.278 1.438 0.278 1.218 c
+0.278 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 17.865 12.113] cm
+0 0 m
+0 0.24 l
+1.059 1.654 l
+0.058 1.654 l
+0.058 1.901 l
+1.379 1.901 l
+1.379 1.666 l
+0.317 0.248 l
+1.379 0.248 l
+1.379 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 22.567 12.991] cm
+0 0 m
+-0.534 0 l
+-0.82 0 -0.959 -0.116 -0.959 -0.337 c
+-0.959 -0.557 -0.823 -0.661 -0.522 -0.661 c
+-0.359 -0.661 -0.216 -0.65 -0.097 -0.534 c
+-0.031 -0.472 0 -0.364 0 -0.206 c
+0 0 l
+h
+0 -0.878 m
+0 -0.696 l
+-0.154 -0.85 -0.294 -0.901 -0.549 -0.901 c
+-0.811 -0.901 -0.966 -0.85 -1.086 -0.727 c
+-1.179 -0.634 -1.229 -0.491 -1.229 -0.341 c
+-1.229 -0.008 -0.997 0.207 -0.572 0.207 c
+0 0.207 l
+0 0.39 l
+0 0.668 -0.139 0.807 -0.487 0.807 c
+-0.73 0.807 -0.854 0.749 -0.966 0.591 c
+-1.155 0.765 l
+-0.986 0.985 -0.792 1.047 -0.483 1.047 c
+0.027 1.047 0.278 0.827 0.278 0.413 c
+0.278 -0.878 l
+0 -0.878 l
+f
+Q
+q
+[1 0 0 1 25.089 12.113] cm
+0 0 m
+0 0.212 l
+-0.135 0.058 -0.325 -0.023 -0.537 -0.023 c
+-0.742 -0.023 -0.912 0.039 -1.027 0.155 c
+-1.164 0.286 -1.221 0.467 -1.221 0.688 c
+-1.221 1.901 l
+-0.943 1.901 l
+-0.943 0.73 l
+-0.943 0.394 -0.765 0.224 -0.479 0.224 c
+-0.193 0.224 -0.003 0.398 -0.003 0.73 c
+-0.003 1.901 l
+0.275 1.901 l
+0.275 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 27.024 12.09] cm
+0 0 m
+-0.321 0 -0.572 0.073 -0.78 0.274 c
+-0.595 0.46 l
+-0.444 0.301 -0.24 0.239 -0.003 0.239 c
+0.309 0.239 0.503 0.352 0.503 0.576 c
+0.503 0.742 0.406 0.835 0.186 0.854 c
+-0.127 0.881 l
+-0.498 0.912 -0.695 1.078 -0.695 1.391 c
+-0.695 1.739 -0.402 1.948 0.004 1.948 c
+0.274 1.948 0.518 1.882 0.689 1.743 c
+0.507 1.561 l
+0.371 1.666 0.197 1.712 0 1.712 c
+-0.278 1.712 -0.425 1.592 -0.425 1.399 c
+-0.425 1.237 -0.332 1.14 -0.092 1.121 c
+0.213 1.094 l
+0.545 1.063 0.773 0.935 0.773 0.58 c
+0.773 0.213 0.46 0 0 0 c
+f
+Q
+q
+[1 0 0 1 2.956 6.0688] cm
+0 0 m
+-0.2744 0 l
+-0.8848 2.2026 l
+-1.4956 0 l
+-1.7695 0 l
+-2.4731 2.751 l
+-2.1602 2.751 l
+-1.623 0.5327 l
+-1.0161 2.751 l
+-0.7534 2.751 l
+-0.1465 0.5327 l
+0.3906 2.751 l
+0.7031 2.751 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 4.5039 7.9697] cm
+0 0 m
+0.27832 0 l
+0.27832 -1.9009 l
+0 -1.9009 l
+0 0 l
+h
+-0.0156 0.854 m
+0.29788 0.854 l
+0.29788 0.5415 l
+-0.0156 0.5415 l
+-0.0156 0.854 l
+h
+f
+Q
+q
+[1 0 0 1 6.5166 6.0454] cm
+0 0 m
+-0.3203 0 -0.5718 0.0737 -0.7808 0.2739 c
+-0.5952 0.4599 l
+-0.4443 0.3008 -0.2393 0.2387 -0.0039 0.2387 c
+0.3101 0.2387 0.5029 0.351 0.5029 0.5757 c
+0.5029 0.7417 0.4063 0.8349 0.1855 0.854 c
+-0.1269 0.8803 l
+-0.4981 0.9116 -0.6958 1.0781 -0.6958 1.3911 c
+-0.6958 1.7387 -0.4014 1.9477 0.0044 1.9477 c
+0.2744 1.9477 0.5181 1.8818 0.688 1.7426 c
+0.5064 1.5605 l
+0.3711 1.6655 0.1973 1.7119 0 1.7119 c
+-0.2778 1.7119 -0.4248 1.5918 -0.4248 1.3984 c
+-0.4248 1.2363 -0.332 1.1396 -0.0923 1.1206 c
+0.2129 1.0937 l
+0.5454 1.062 0.773 0.9355 0.773 0.58 c
+0.773 0.2119 0.46 0 0 0 c
+f
+Q
+q
+[1 0 0 1 8.8076 6.0454] cm
+0 0 m
+-0.3208 0 -0.5718 0.0737 -0.7812 0.2739 c
+-0.5952 0.4599 l
+-0.4448 0.3008 -0.2397 0.2387 -0.0039 0.2387 c
+0.3091 0.2387 0.5024 0.351 0.5024 0.5757 c
+0.5024 0.7417 0.4058 0.8349 0.1851 0.854 c
+-0.1274 0.8803 l
+-0.499 0.9116 -0.6958 1.0781 -0.6958 1.3911 c
+-0.6958 1.7387 -0.4019 1.9477 0.0039 1.9477 c
+0.2739 1.9477 0.5176 1.8818 0.688 1.7426 c
+0.5059 1.5605 l
+0.3706 1.6655 0.1973 1.7119 0 1.7119 c
+-0.2783 1.7119 -0.4253 1.5918 -0.4253 1.3984 c
+-0.4253 1.2363 -0.3325 1.1396 -0.0933 1.1206 c
+0.2124 1.0937 l
+0.5449 1.062 0.773 0.9355 0.773 0.58 c
+0.773 0.2119 0.46 0 0 0 c
+f
+Q
+q
+[1 0 0 1 11.682 7.4712] cm
+0 0 m
+-0.073 0.1738 -0.244 0.2861 -0.445 0.2861 c
+-0.645 0.2861 -0.815 0.1738 -0.889 0 c
+-0.931 -0.1045 -0.939 -0.1626 -0.947 -0.3169 c
+0.058 -0.3169 l
+0.05 -0.1626 0.043 -0.1045 0 0 c
+-0.947 -0.5259 m
+-0.947 -0.9434 -0.749 -1.1827 -0.387 -1.1827 c
+-0.167 -1.1827 -0.038 -1.1172 0.112 -0.9659 c
+0.302 -1.1324 l
+0.108 -1.3252 -0.07 -1.4258 -0.394 -1.4258 c
+-0.896 -1.4258 -1.225 -1.125 -1.225 -0.4522 c
+-1.225 0.1625 -0.928 0.5219 -0.445 0.5219 c
+0.046 0.5219 0.336 0.166 0.336 -0.398 c
+0.336 -0.5259 l
+-0.947 -0.5259 l
+f
+Q
+q
+[1 0 0 1 14.262 6.0688] cm
+0 0 m
+0 1.1704 l
+0 1.5068 -0.182 1.6768 -0.467 1.6768 c
+-0.753 1.6768 -0.939 1.5029 -0.939 1.1704 c
+-0.939 0 l
+-1.218 0 l
+-1.218 1.9009 l
+-0.939 1.9009 l
+-0.939 1.6924 l
+-0.803 1.8467 -0.618 1.9238 -0.406 1.9238 c
+-0.201 1.9238 -0.034 1.8623 0.081 1.7471 c
+0.217 1.6148 0.278 1.4365 0.278 1.2168 c
+0.278 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 16.251 6.0454] cm
+0 0 m
+-0.321 0 -0.572 0.0737 -0.781 0.2739 c
+-0.595 0.4599 l
+-0.445 0.3008 -0.24 0.2387 -0.004 0.2387 c
+0.309 0.2387 0.503 0.351 0.503 0.5757 c
+0.503 0.7417 0.406 0.8349 0.186 0.854 c
+-0.127 0.8803 l
+-0.498 0.9116 -0.696 1.0781 -0.696 1.3911 c
+-0.696 1.7387 -0.402 1.9477 0.004 1.9477 c
+0.274 1.9477 0.518 1.8818 0.688 1.7426 c
+0.506 1.5605 l
+0.371 1.6655 0.197 1.7119 0 1.7119 c
+-0.278 1.7119 -0.425 1.5918 -0.425 1.3984 c
+-0.425 1.2363 -0.332 1.1396 -0.092 1.1206 c
+0.212 1.0937 l
+0.545 1.062 0.773 0.9355 0.773 0.58 c
+0.773 0.2119 0.46 0 0 0 c
+f
+Q
+q
+[1 0 0 1 18.742 6.0454] cm
+0 0 m
+-0.479 0 -0.842 0.3242 -0.842 0.9736 c
+-0.842 1.6225 -0.479 1.9477 0 1.9477 c
+0.263 1.9477 0.429 1.8774 0.626 1.6655 c
+0.437 1.4878 l
+0.294 1.646 0.182 1.6997 0 1.6997 c
+-0.185 1.6997 -0.339 1.6269 -0.44 1.4839 c
+-0.529 1.3593 -0.564 1.2138 -0.564 0.9736 c
+-0.564 0.7343 -0.529 0.5864 -0.44 0.4633 c
+-0.339 0.3203 -0.185 0.247 0 0.247 c
+0.182 0.247 0.294 0.3047 0.437 0.4633 c
+0.626 0.2812 l
+0.429 0.0688 0.263 0 0 0 c
+f
+Q
+q
+[1 0 0 1 21.551 6.0688] cm
+0 0 m
+0 1.1743 l
+0 1.5068 -0.178 1.6768 -0.464 1.6768 c
+-0.75 1.6768 -0.94 1.5029 -0.94 1.1743 c
+-0.94 0 l
+-1.218 0 l
+-1.218 2.751 l
+-0.94 2.751 l
+-0.94 1.6924 l
+-0.8 1.8506 -0.619 1.9238 -0.406 1.9238 c
+0.023 1.9238 0.278 1.6494 0.278 1.2207 c
+0.278 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 24.02 6.9453] cm
+0 0 m
+-0.534 0 l
+-0.82 0 -0.959 -0.1157 -0.959 -0.3355 c
+-0.959 -0.5562 -0.823 -0.6602 -0.522 -0.6602 c
+-0.359 -0.6602 -0.216 -0.6494 -0.097 -0.5332 c
+-0.031 -0.4712 0 -0.3633 0 -0.2041 c
+0 0 l
+h
+0 -0.8765 m
+0 -0.6949 l
+-0.155 -0.8501 -0.294 -0.9004 -0.549 -0.9004 c
+-0.812 -0.9004 -0.966 -0.8501 -1.086 -0.7261 c
+-1.179 -0.6333 -1.229 -0.4903 -1.229 -0.3404 c
+-1.229 -0.0074 -0.998 0.2085 -0.573 0.2085 c
+0 0.2085 l
+0 0.3906 l
+0 0.6689 -0.139 0.8076 -0.487 0.8076 c
+-0.731 0.8076 -0.854 0.75 -0.966 0.5918 c
+-1.156 0.7656 l
+-0.986 0.9858 -0.792 1.0478 -0.483 1.0478 c
+0.027 1.0478 0.278 0.8276 0.278 0.4135 c
+0.278 -0.8765 l
+0 -0.8765 l
+f
+Q
+q
+[1 0 0 1 25.75 7.7456] cm
+0 0 m
+0 -1.6768 l
+-0.278 -1.6768 l
+-0.278 0 l
+-0.521 0 l
+-0.521 0.2119 l
+-0.278 0.2119 l
+-0.278 0.5717 l
+-0.278 0.854 -0.12 1.082 0.204 1.082 c
+0.406 1.082 l
+0.406 0.8432 l
+0.255 0.8432 l
+0.078 0.8432 0 0.7382 0 0.5639 c
+0 0.2119 l
+0.406 0.2119 l
+0.406 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 27.592 6.0688] cm
+0 0 m
+-0.325 0 -0.487 0.2275 -0.487 0.5098 c
+-0.487 1.6768 l
+-0.727 1.6768 l
+-0.727 1.8887 l
+-0.487 1.8887 l
+-0.487 2.4844 l
+-0.209 2.4844 l
+-0.209 1.8887 l
+0.197 1.8887 l
+0.197 1.6768 l
+-0.209 1.6768 l
+-0.209 0.5176 l
+-0.209 0.3438 -0.128 0.2393 0.05 0.2393 c
+0.197 0.2393 l
+0.197 0 l
+0 0 l
+f
+Q
+q
+0 0.06 34.56 69.105 re
+W
+q
+[1 0 0 1 7.749 0.022903] cm
+0 0 m
+0 0.21239 l
+-0.1348 0.058105 -0.3247 -0.022903 -0.5371 -0.022903 c
+-0.7422 -0.022903 -0.9121 0.039104 -1.0273 0.1548 c
+-1.1631 0.2861 -1.2207 0.4678 -1.2207 0.688 c
+-1.2207 1.9014 l
+-0.9424 1.9014 l
+-0.9424 0.7305 l
+-0.9424 0.3945 -0.7646 0.2241 -0.479 0.2241 c
+-0.1929 0.2241 -0.0039 0.3984 -0.0039 0.7305 c
+-0.0039 1.9014 l
+0.2744 1.9014 l
+0.2744 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 10.322 0.022903] cm
+0 0 m
+0 1.1709 l
+0 1.5078 -0.181 1.6777 -0.4673 1.6777 c
+-0.7534 1.6777 -0.939 1.5034 -0.939 1.1709 c
+-0.939 0 l
+-1.2173 0 l
+-1.2173 1.9014 l
+-0.939 1.9014 l
+-0.939 1.6929 l
+-0.8037 1.8477 -0.6182 1.9248 -0.4058 1.9248 c
+-0.201 1.9248 -0.035 1.8628 0.081 1.7471 c
+0.217 1.6157 0.278 1.438 0.278 1.2178 c
+0.278 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 12.319 1.7006] cm
+0 0 m
+-0.413 0 -0.479 -0.3564 -0.479 -0.727 c
+-0.479 -1.0981 -0.413 -1.4536 0 -1.4536 c
+0.413 -1.4536 0.475 -1.0981 0.475 -0.727 c
+0.475 -0.3564 0.413 0 0 0 c
+0.479 -1.6777 m
+0.479 -1.4492 l
+0.325 -1.6499 0.147 -1.7006 -0.062 -1.7006 c
+-0.255 -1.7006 -0.425 -1.6352 -0.526 -1.5346 c
+-0.719 -1.3413 -0.757 -1.0249 -0.757 -0.727 c
+-0.757 -0.4292 -0.719 -0.1123 -0.526 0.0811 c
+-0.425 0.1807 -0.255 0.2471 -0.062 0.2471 c
+0.147 0.2471 0.321 0.2012 0.475 0.0035 c
+0.475 1.0743 l
+0.753 1.0743 l
+0.753 -1.6777 l
+0.479 -1.6777 l
+f
+Q
+q
+[1 0 0 1 17.264 0.022903] cm
+0 0 m
+-0.838 1.4649 l
+-1.419 0.7691 l
+-1.419 0 l
+-1.712 0 l
+-1.712 2.752 l
+-1.419 2.752 l
+-1.419 1.1709 l
+-0.135 2.752 l
+0.224 2.752 l
+-0.642 1.689 l
+0.348 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 19.6 0.022903] cm
+0 0 m
+0 0.21239 l
+-0.135 0.058105 -0.324 -0.022903 -0.538 -0.022903 c
+-0.742 -0.022903 -0.912 0.039104 -1.028 0.1548 c
+-1.163 0.2861 -1.221 0.4678 -1.221 0.688 c
+-1.221 1.9014 l
+-0.942 1.9014 l
+-0.942 0.7305 l
+-0.942 0.3945 -0.765 0.2241 -0.479 0.2241 c
+-0.193 0.2241 -0.004 0.3984 -0.004 0.7305 c
+-0.004 1.9014 l
+0.274 1.9014 l
+0.274 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 21.431 0.022903] cm
+0 0 m
+-0.333 0 -0.483 0.21631 -0.483 0.5068 c
+-0.483 2.752 l
+-0.206 2.752 l
+-0.206 0.5176 l
+-0.206 0.3325 -0.144 0.2402 0.05 0.2402 c
+0.201 0.2402 l
+0.201 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 23.022 0.022903] cm
+0 0 m
+-0.325 0 -0.487 0.2285 -0.487 0.5098 c
+-0.487 1.6777 l
+-0.727 1.6777 l
+-0.727 1.8897 l
+-0.487 1.8897 l
+-0.487 2.4858 l
+-0.209 2.4858 l
+-0.209 1.8897 l
+0.197 1.8897 l
+0.197 1.6777 l
+-0.209 1.6777 l
+-0.209 0.5176 l
+-0.209 0.3442 -0.128 0.2402 0.05 0.2402 c
+0.197 0.2402 l
+0.197 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 25.359 0.022903] cm
+0 0 m
+0 0.21239 l
+-0.135 0.058105 -0.325 -0.022903 -0.537 -0.022903 c
+-0.742 -0.022903 -0.912 0.039104 -1.028 0.1548 c
+-1.163 0.2861 -1.221 0.4678 -1.221 0.688 c
+-1.221 1.9014 l
+-0.942 1.9014 l
+-0.942 0.7305 l
+-0.942 0.3945 -0.765 0.2241 -0.479 0.2241 c
+-0.193 0.2241 -0.004 0.3984 -0.004 0.7305 c
+-0.004 1.9014 l
+0.275 1.9014 l
+0.275 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 27.777 1.561] cm
+0 0 m
+-0.104 0.1045 -0.181 0.1396 -0.328 0.1396 c
+-0.607 0.1396 -0.784 -0.0806 -0.784 -0.3706 c
+-0.784 -1.5381 l
+-1.062 -1.5381 l
+-1.062 0.3633 l
+-0.784 0.3633 l
+-0.784 0.1318 l
+-0.68 0.29 -0.471 0.3862 -0.251 0.3862 c
+-0.069 0.3862 0.07 0.3442 0.205 0.209 c
+0 0 l
+f
+Q
+Q
+[0.4] sc
+q
+[1 0 0 1 30.641 62.981] cm
+0 0 m
+-16.953 0 l
+-11.114 5.837 l
+0 0 l
+f
+Q
+[0.2] sc
+q
+[1 0 0 1 6.8892 57.179] cm
+0 0 m
+0 8.255 l
+11.988 11.986 l
+0 0 l
+f
+Q
+[0.8] sc
+q
+[1 0 0 1 6.1851 48.27] cm
+0 0 m
+-5.8384 5.837 l
+0 16.951 l
+0 0 l
+f
+Q
+[0.6] sc
+q
+[1 0 0 1 11.987 41.471] cm
+0 0 m
+-8.2568 0 l
+-11.987 11.986 l
+0 0 l
+f
+Q
+[0.4] sc
+q
+[1 0 0 1 15.065 34.928] cm
+0 0 m
+-11.115 5.837 l
+5.838 5.837 l
+0 0 l
+f
+Q
+[0.302] sc
+q
+[1 0 0 1 15.709 34.583] cm
+0 0 m
+11.987 11.986 l
+11.987 3.73 l
+0 0 l
+f
+Q
+[0.698] sc
+q
+[1 0 0 1 28.401 38.527] cm
+0 0 m
+0 16.951 l
+5.838 11.113 l
+0 0 l
+f
+Q
+q
+0 0.06 34.56 69.105 re
+W
+[0.6] sc
+q
+[1 0 0 1 34.582 50.295] cm
+0 0 m
+-11.987 11.986 l
+-3.731 11.986 l
+0 0 l
+f
+Q
+Q
+Q
+showpage
+%%PageTrailer
+pdfEndPage
+%%Trailer
+end
+%%DocumentSuppliedResources:
+%%EOF
diff --git a/macros/latex/contrib/tudscr/logo/DDC-22.pdf b/macros/latex/contrib/tudscr/logo/DDC-22.pdf
new file mode 100644
index 0000000000..152b7c0a0f
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/DDC-22.pdf
Binary files differ
diff --git a/macros/latex/contrib/tudscr/logo/DDC-24.eps b/macros/latex/contrib/tudscr/logo/DDC-24.eps
new file mode 100644
index 0000000000..5aa41876c0
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/DDC-24.eps
@@ -0,0 +1,2428 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%XpdfVersion: 3.03
+%%Creator: Adobe Illustrator CS4
+%%Title: DDC-24.eps
+%%LanguageLevel: 2
+%%DocumentSuppliedResources: (atend)
+%%BoundingBox: 0 0 144 52
+%%HiResBoundingBox: 0 0 143.667 51.307
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset xpdf 3.03 0
+%%Copyright: Copyright 1996-2011 Glyph & Cog, LLC
+/xpdf 75 dict def xpdf begin
+% PDF special state
+/pdfDictSize 15 def
+/pdfSetup {
+ /setpagedevice where {
+ pop 2 dict begin
+ /Policies 1 dict dup begin /PageSize 6 def end def
+ { /Duplex true def } if
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfSetupPaper {
+ 2 array astore
+ /setpagedevice where {
+ pop 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfStartPage {
+ pdfDictSize dict begin
+ /pdfFillCS [] def
+ /pdfFillXform {} def
+ /pdfStrokeCS [] def
+ /pdfStrokeXform {} def
+ /pdfFill [0] def
+ /pdfStroke [0] def
+ /pdfFillOP false def
+ /pdfStrokeOP false def
+ /pdfLastFill false def
+ /pdfLastStroke false def
+ /pdfTextMat [1 0 0 1 0 0] def
+ /pdfFontSize 0 def
+ /pdfCharSpacing 0 def
+ /pdfTextRender 0 def
+ /pdfTextRise 0 def
+ /pdfWordSpacing 0 def
+ /pdfHorizScaling 1 def
+ /pdfTextClipPath [] def
+} def
+/pdfEndPage { end } def
+% PDF color state
+/cs { /pdfFillXform exch def dup /pdfFillCS exch def
+ setcolorspace } def
+/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def
+ setcolorspace } def
+/sc { pdfLastFill not { pdfFillCS setcolorspace } if
+ dup /pdfFill exch def aload pop pdfFillXform setcolor
+ /pdfLastFill true def /pdfLastStroke false def } def
+/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if
+ dup /pdfStroke exch def aload pop pdfStrokeXform setcolor
+ /pdfLastStroke true def /pdfLastFill false def } def
+/op { /pdfFillOP exch def
+ pdfLastFill { pdfFillOP setoverprint } if } def
+/OP { /pdfStrokeOP exch def
+ pdfLastStroke { pdfStrokeOP setoverprint } if } def
+/fCol {
+ pdfLastFill not {
+ pdfFillCS setcolorspace
+ pdfFill aload pop pdfFillXform setcolor
+ pdfFillOP setoverprint
+ /pdfLastFill true def /pdfLastStroke false def
+ } if
+} def
+/sCol {
+ pdfLastStroke not {
+ pdfStrokeCS setcolorspace
+ pdfStroke aload pop pdfStrokeXform setcolor
+ pdfStrokeOP setoverprint
+ /pdfLastStroke true def /pdfLastFill false def
+ } if
+} def
+% build a font
+/pdfMakeFont {
+ 4 3 roll findfont
+ 4 2 roll matrix scale makefont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /Encoding exch def
+ currentdict
+ end
+ definefont pop
+} def
+/pdfMakeFont16 {
+ exch findfont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /WMode exch def
+ currentdict
+ end
+ definefont pop
+} def
+% graphics state operators
+/q { gsave pdfDictSize dict begin } def
+/Q {
+ end grestore
+ /pdfLastFill where {
+ pop
+ pdfLastFill {
+ pdfFillOP setoverprint
+ } {
+ pdfStrokeOP setoverprint
+ } ifelse
+ } if
+} def
+/cm { concat } def
+/d { setdash } def
+/i { setflat } def
+/j { setlinejoin } def
+/J { setlinecap } def
+/M { setmiterlimit } def
+/w { setlinewidth } def
+% path segment operators
+/m { moveto } def
+/l { lineto } def
+/c { curveto } def
+/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+ neg 0 rlineto closepath } def
+/h { closepath } def
+% path painting operators
+/S { sCol stroke } def
+/Sf { fCol stroke } def
+/f { fCol fill } def
+/f* { fCol eofill } def
+% clipping operators
+/W { clip newpath } def
+/W* { eoclip newpath } def
+/Ws { strokepath clip newpath } def
+% text state operators
+/Tc { /pdfCharSpacing exch def } def
+/Tf { dup /pdfFontSize exch def
+ dup pdfHorizScaling mul exch matrix scale
+ pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put
+ exch findfont exch makefont setfont } def
+/Tr { /pdfTextRender exch def } def
+/Ts { /pdfTextRise exch def } def
+/Tw { /pdfWordSpacing exch def } def
+/Tz { /pdfHorizScaling exch def } def
+% text positioning operators
+/Td { pdfTextMat transform moveto } def
+/Tm { /pdfTextMat exch def } def
+% text string operators
+/xyshow where {
+ pop
+ /xyshow2 {
+ dup length array
+ 0 2 2 index length 1 sub {
+ 2 index 1 index 2 copy get 3 1 roll 1 add get
+ pdfTextMat dtransform
+ 4 2 roll 2 copy 6 5 roll put 1 add 3 1 roll dup 4 2 roll put
+ } for
+ exch pop
+ xyshow
+ } def
+}{
+ /xyshow2 {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval show moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval show moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/cshow where {
+ pop
+ /xycp {
+ 0 3 2 roll
+ {
+ pop pop currentpoint 3 2 roll
+ 1 string dup 0 4 3 roll put false charpath moveto
+ 2 copy get 2 index 2 index 1 add get
+ pdfTextMat dtransform rmoveto
+ 2 add
+ } exch cshow
+ pop pop
+ } def
+}{
+ /xycp {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval false charpath moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval false charpath moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/Tj {
+ fCol
+ 0 pdfTextRise pdfTextMat dtransform rmoveto
+ currentpoint 4 2 roll
+ pdfTextRender 1 and 0 eq {
+ 2 copy xyshow2
+ } if
+ pdfTextRender 3 and dup 1 eq exch 2 eq or {
+ 3 index 3 index moveto
+ 2 copy
+ currentfont /FontType get 3 eq { fCol } { sCol } ifelse
+ xycp currentpoint stroke moveto
+ } if
+ pdfTextRender 4 and 0 ne {
+ 4 2 roll moveto xycp
+ /pdfTextClipPath [ pdfTextClipPath aload pop
+ {/moveto cvx}
+ {/lineto cvx}
+ {/curveto cvx}
+ {/closepath cvx}
+ pathforall ] def
+ currentpoint newpath moveto
+ } {
+ pop pop pop pop
+ } ifelse
+ 0 pdfTextRise neg pdfTextMat dtransform rmoveto
+} def
+/TJm { 0.001 mul pdfFontSize mul pdfHorizScaling mul neg 0
+ pdfTextMat dtransform rmoveto } def
+/TJmV { 0.001 mul pdfFontSize mul neg 0 exch
+ pdfTextMat dtransform rmoveto } def
+/Tclip { pdfTextClipPath cvx exec clip newpath
+ /pdfTextClipPath [] def } def
+% Level 2/3 image operators
+/pdfImBuf 100 string def
+/pdfImStr {
+ 2 copy exch length lt {
+ 2 copy get exch 1 add exch
+ } {
+ ()
+ } ifelse
+} def
+/skipEOD {
+ { currentfile pdfImBuf readline
+ not { pop exit } if
+ (%-EOD-) eq { exit } if } loop
+} def
+/pdfIm { image skipEOD } def
+/pdfImM { fCol imagemask skipEOD } def
+/pr { 2 index 2 index 3 2 roll putinterval 4 add } def
+/pdfImClip {
+ gsave
+ 0 2 4 index length 1 sub {
+ dup 4 index exch 2 copy
+ get 5 index div put
+ 1 add 3 index exch 2 copy
+ get 3 index div put
+ } for
+ pop pop rectclip
+} def
+/pdfImClipEnd { grestore } def
+% shading operators
+/colordelta {
+ false 0 1 3 index length 1 sub {
+ dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt {
+ pop true
+ } if
+ } for
+ exch pop exch pop
+} def
+/funcCol { func n array astore } def
+/funcSH {
+ dup 0 eq {
+ true
+ } {
+ dup 6 eq {
+ false
+ } {
+ 4 index 4 index funcCol dup
+ 6 index 4 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 5 index 5 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 6 index 8 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ colordelta or or or
+ } ifelse
+ } ifelse
+ {
+ 1 add
+ 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch
+ 6 index 6 index 4 index 4 index 4 index funcSH
+ 2 index 6 index 6 index 4 index 4 index funcSH
+ 6 index 2 index 4 index 6 index 4 index funcSH
+ 5 3 roll 3 2 roll funcSH pop pop
+ } {
+ pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul
+ funcCol sc
+ dup 4 index exch mat transform m
+ 3 index 3 index mat transform l
+ 1 index 3 index mat transform l
+ mat transform l pop pop h f*
+ } ifelse
+} def
+/axialCol {
+ dup 0 lt {
+ pop t0
+ } {
+ dup 1 gt {
+ pop t1
+ } {
+ dt mul t0 add
+ } ifelse
+ } ifelse
+ func n array astore
+} def
+/axialSH {
+ dup 2 lt {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index axialCol 2 index axialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index axialSH
+ exch 3 2 roll axialSH
+ } {
+ pop 2 copy add 0.5 mul
+ axialCol sc
+ exch dup dx mul x0 add exch dy mul y0 add
+ 3 2 roll dup dx mul x0 add exch dy mul y0 add
+ dx abs dy abs ge {
+ 2 copy yMin sub dy mul dx div add yMin m
+ yMax sub dy mul dx div add yMax l
+ 2 copy yMax sub dy mul dx div add yMax l
+ yMin sub dy mul dx div add yMin l
+ h f*
+ } {
+ exch 2 copy xMin sub dx mul dy div add xMin exch m
+ xMax sub dx mul dy div add xMax exch l
+ exch 2 copy xMax sub dx mul dy div add xMax exch l
+ xMin sub dx mul dy div add xMin exch l
+ h f*
+ } ifelse
+ } ifelse
+} def
+/radialCol {
+ dup t0 lt {
+ pop t0
+ } {
+ dup t1 gt {
+ pop t1
+ } if
+ } ifelse
+ func n array astore
+} def
+/radialSH {
+ dup 0 eq {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index dt mul t0 add radialCol
+ 2 index dt mul t0 add radialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index radialSH
+ exch 3 2 roll radialSH
+ } {
+ pop 2 copy add 0.5 mul dt mul t0 add
+ radialCol sc
+ encl {
+ exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 0 360 arc h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 360 0 arcn h f
+ } {
+ 2 copy
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arcn
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arcn h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arc
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arc h f
+ } ifelse
+ } ifelse
+} def
+end
+%%EndResource
+%%EndProlog
+%%BeginSetup
+xpdf begin
+%%EndSetup
+pdfStartPage
+[] 0 d
+1 i
+0 j
+0 J
+10 M
+1 w
+/DeviceGray {} cs
+[0] sc
+/DeviceGray {} CS
+[0] SC
+false op
+false OP
+{} settransfer
+0 0 143.667 51.307 re
+W
+q
+q
+1 i
+0.059998 0.06 143.607 51.247 re
+W
+[/Separation (schwarz) /DeviceRGB
+/xpdfSamples0 [
+1
+1
+1
+0.984314
+0.984314
+0.984314
+0.972549
+0.968627
+0.968627
+0.960784
+0.956863
+0.956863
+0.952941
+0.94902
+0.945098
+0.945098
+0.937255
+0.937255
+0.937255
+0.929412
+0.92549
+0.92549
+0.921569
+0.917647
+0.921569
+0.913725
+0.909804
+0.913725
+0.905882
+0.901961
+0.905882
+0.898039
+0.894118
+0.898039
+0.890196
+0.886275
+0.890196
+0.882353
+0.878431
+0.886275
+0.87451
+0.870588
+0.878431
+0.866667
+0.862745
+0.870588
+0.862745
+0.858824
+0.866667
+0.854902
+0.85098
+0.858824
+0.847059
+0.843137
+0.854902
+0.839216
+0.835294
+0.847059
+0.835294
+0.831373
+0.839216
+0.827451
+0.823529
+0.835294
+0.819608
+0.815686
+0.827451
+0.815686
+0.811765
+0.823529
+0.807843
+0.803922
+0.815686
+0.8
+0.796078
+0.807843
+0.792157
+0.788235
+0.803922
+0.788235
+0.784314
+0.796078
+0.780392
+0.776471
+0.792157
+0.772549
+0.768627
+0.784314
+0.768627
+0.764706
+0.780392
+0.760784
+0.756863
+0.772549
+0.756863
+0.74902
+0.768627
+0.74902
+0.745098
+0.760784
+0.745098
+0.737255
+0.756863
+0.737255
+0.733333
+0.74902
+0.729412
+0.72549
+0.745098
+0.72549
+0.717647
+0.737255
+0.717647
+0.713725
+0.733333
+0.713725
+0.705882
+0.729412
+0.705882
+0.701961
+0.721569
+0.701961
+0.694118
+0.717647
+0.694118
+0.690196
+0.709804
+0.690196
+0.682353
+0.705882
+0.682353
+0.678431
+0.701961
+0.678431
+0.670588
+0.694118
+0.670588
+0.666667
+0.690196
+0.666667
+0.658824
+0.682353
+0.658824
+0.654902
+0.678431
+0.654902
+0.647059
+0.67451
+0.647059
+0.643137
+0.666667
+0.643137
+0.635294
+0.662745
+0.639216
+0.631373
+0.658824
+0.631373
+0.623529
+0.65098
+0.627451
+0.619608
+0.647059
+0.619608
+0.615686
+0.643137
+0.615686
+0.607843
+0.635294
+0.611765
+0.603922
+0.631373
+0.603922
+0.6
+0.627451
+0.6
+0.592157
+0.619608
+0.596078
+0.588235
+0.615686
+0.588235
+0.580392
+0.611765
+0.584314
+0.576471
+0.607843
+0.580392
+0.572549
+0.6
+0.572549
+0.564706
+0.596078
+0.568627
+0.560784
+0.592157
+0.564706
+0.556863
+0.584314
+0.556863
+0.54902
+0.580392
+0.552941
+0.545098
+0.576471
+0.54902
+0.541176
+0.572549
+0.541176
+0.533333
+0.564706
+0.537255
+0.529412
+0.560784
+0.533333
+0.52549
+0.556863
+0.52549
+0.517647
+0.552941
+0.521569
+0.513725
+0.545098
+0.517647
+0.509804
+0.541176
+0.509804
+0.501961
+0.537255
+0.505882
+0.498039
+0.533333
+0.501961
+0.494118
+0.529412
+0.498039
+0.490196
+0.521569
+0.490196
+0.482353
+0.517647
+0.486275
+0.478431
+0.513725
+0.482353
+0.47451
+0.509804
+0.478431
+0.470588
+0.505882
+0.47451
+0.462745
+0.498039
+0.466667
+0.458824
+0.494118
+0.462745
+0.454902
+0.490196
+0.458824
+0.45098
+0.486275
+0.454902
+0.447059
+0.482353
+0.45098
+0.439216
+0.478431
+0.447059
+0.435294
+0.470588
+0.439216
+0.431373
+0.466667
+0.435294
+0.427451
+0.462745
+0.431373
+0.423529
+0.458824
+0.427451
+0.419608
+0.454902
+0.423529
+0.415686
+0.45098
+0.419608
+0.407843
+0.447059
+0.415686
+0.403922
+0.443137
+0.411765
+0.4
+0.439216
+0.407843
+0.396078
+0.435294
+0.4
+0.392157
+0.431373
+0.396078
+0.388235
+0.427451
+0.392157
+0.384314
+0.419608
+0.388235
+0.380392
+0.415686
+0.384314
+0.376471
+0.411765
+0.380392
+0.372549
+0.407843
+0.376471
+0.364706
+0.403922
+0.372549
+0.360784
+0.4
+0.368627
+0.356863
+0.396078
+0.364706
+0.352941
+0.392157
+0.360784
+0.34902
+0.388235
+0.356863
+0.345098
+0.384314
+0.352941
+0.341176
+0.380392
+0.34902
+0.337255
+0.376471
+0.345098
+0.333333
+0.372549
+0.341176
+0.329412
+0.368627
+0.337255
+0.32549
+0.364706
+0.333333
+0.321569
+0.360784
+0.329412
+0.317647
+0.356863
+0.32549
+0.317647
+0.352941
+0.321569
+0.313725
+0.34902
+0.317647
+0.309804
+0.345098
+0.313725
+0.305882
+0.341176
+0.309804
+0.301961
+0.337255
+0.309804
+0.298039
+0.337255
+0.305882
+0.294118
+0.333333
+0.301961
+0.290196
+0.329412
+0.298039
+0.286275
+0.321569
+0.290196
+0.278431
+0.317647
+0.286275
+0.278431
+0.313725
+0.282353
+0.27451
+0.309804
+0.278431
+0.270588
+0.305882
+0.278431
+0.266667
+0.301961
+0.27451
+0.262745
+0.301961
+0.270588
+0.258824
+0.298039
+0.266667
+0.254902
+0.294118
+0.262745
+0.254902
+0.290196
+0.258824
+0.25098
+0.286275
+0.254902
+0.247059
+0.282353
+0.254902
+0.243137
+0.278431
+0.25098
+0.239216
+0.27451
+0.247059
+0.235294
+0.27451
+0.243137
+0.235294
+0.270588
+0.239216
+0.231373
+0.266667
+0.235294
+0.227451
+0.262745
+0.231373
+0.223529
+0.258824
+0.231373
+0.219608
+0.254902
+0.227451
+0.219608
+0.25098
+0.223529
+0.215686
+0.25098
+0.219608
+0.211765
+0.247059
+0.215686
+0.207843
+0.243137
+0.215686
+0.203922
+0.239216
+0.211765
+0.203922
+0.235294
+0.207843
+0.2
+0.231373
+0.203922
+0.196078
+0.227451
+0.203922
+0.192157
+0.227451
+0.2
+0.192157
+0.223529
+0.196078
+0.188235
+0.219608
+0.192157
+0.184314
+0.215686
+0.188235
+0.180392
+0.211765
+0.188235
+0.176471
+0.207843
+0.184314
+0.176471
+0.207843
+0.180392
+0.172549
+0.203922
+0.176471
+0.168627
+0.2
+0.176471
+0.164706
+0.196078
+0.172549
+0.164706
+0.192157
+0.168627
+0.160784
+0.192157
+0.164706
+0.156863
+0.188235
+0.160784
+0.152941
+0.184314
+0.160784
+0.152941
+0.180392
+0.156863
+0.14902
+0.176471
+0.152941
+0.145098
+0.176471
+0.14902
+0.141176
+0.172549
+0.145098
+0.137255
+0.168627
+0.141176
+0.133333
+0.164706
+0.141176
+0.133333
+0.160784
+0.137255
+0.129412
+0.156863
+0.133333
+0.12549
+0.152941
+0.129412
+0.121569
+0.152941
+0.12549
+0.117647
+0.14902
+0.121569
+0.113725
+0.145098
+0.121569
+0.113725
+0.141176
+0.117647
+0.109804
+0.137255
+0.113725
+0.105882
+0.133333
+0.109804
+0.101961
+0.129412
+0.105882
+0.098039
+0.12549
+0.101961
+0.094118
+0.121569
+0.101961
+0.094118
+0.121569
+0.098039
+0.090196
+0.117647
+0.094118
+0.086275
+0.113725
+0.090196
+0.082353
+0.109804
+0.090196
+0.078431
+0.105882
+0.086275
+0.07451
+0.101961
+0.082353
+0.07451
+0.101961
+0.078431
+0.070588
+0.098039
+0.07451
+0.066667
+0.094118
+0.070588
+0.062745
+0.090196
+0.066667
+0.054902
+0.086275
+0.062745
+0.05098
+0.082353
+0.058824
+0.047059
+0.078431
+0.054902
+0.043137
+0.07451
+0.05098
+0.039216
+0.070588
+0.047059
+0.031373
+0.070588
+0.043137
+0.031373
+0.066667
+0.039216
+0.027451
+0.062745
+0.035294
+0.023529
+0.058824
+0.031373
+0.023529
+0.054902
+0.031373
+0.019608
+0.05098
+0.027451
+0.015686
+0.047059
+0.023529
+0.015686
+0.043137
+0.019608
+0.011765
+0.039216
+0.019608
+0.011765
+0.035294
+0.015686
+0.007843
+0.031373
+0.015686
+0.007843
+0.027451
+0.011765
+0.007843
+0.027451
+0.011765
+0.003922
+0.023529
+0.007843
+0.003922
+0.019608
+0.007843
+0.003922
+0.019608
+0.007843
+0
+0.015686
+0.003922
+0
+0.015686
+0.003922
+0
+0.011765
+0.003922
+0
+0.011765
+0
+0
+0.011765
+0
+0
+0.007843
+0
+0
+0.007843
+0
+0
+0.003922
+0
+0
+0.003922
+0
+0
+0.003922
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+] def
+{ 2 array 1 array 3 2 roll
+0 sub 254 mul 0 add
+dup 0 lt { pop 0 } { dup 254 gt { pop 254 } if } ifelse
+dup floor cvi exch dup ceiling cvi exch 2 index sub
+3 index 0 3 2 roll put
+3 index 1 3 2 roll put
+2 index 0 3 2 roll put
+xpdfSamples0
+2 index 0 get
+3 mul 0 add get
+xpdfSamples0
+3 index 1 get
+3 mul 0 add get
+2 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+xpdfSamples0
+3 index 0 get
+3 mul 1 add get
+xpdfSamples0
+4 index 1 get
+3 mul 1 add get
+3 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+xpdfSamples0
+4 index 0 get
+3 mul 2 add get
+xpdfSamples0
+5 index 1 get
+3 mul 2 add get
+4 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+5 3 roll pop pop }
+] {} cs
+[1] sc
+[1] sc
+false op
+false OP
+q
+[1 0 0 1 5.9912 38.534] cm
+0 0 m
+-0.4922 0.549 -1.1631 0.8 -2.0098 0.8 c
+-4.1963 0.8 l
+-4.1963 -7.829 l
+-2.0098 -7.829 l
+-1.1631 -7.829 -0.4922 -7.577 0 -7.028 c
+0.624 -6.345 0.6328 -5.061 0.6328 -3.428 c
+0.6328 -1.8 0.624 -0.679 0 0 c
+1.2373 -8.326 m
+0.4932 -9.08 -0.5947 -9.442 -1.8242 -9.442 c
+-5.9912 -9.442 l
+-5.9912 2.414 l
+-1.8242 2.414 l
+-0.5947 2.414 0.4932 2.047 1.2373 1.298 c
+2.5215 0.014 2.4375 -1.716 2.4375 -3.428 c
+2.4375 -5.145 2.5215 -7.043 1.2373 -8.326 c
+f
+Q
+Q
+[/Separation (schwarz) /DeviceRGB
+/xpdfSamples1 [
+1
+1
+1
+0.984314
+0.984314
+0.984314
+0.972549
+0.968627
+0.968627
+0.960784
+0.956863
+0.956863
+0.952941
+0.94902
+0.945098
+0.945098
+0.937255
+0.937255
+0.937255
+0.929412
+0.92549
+0.92549
+0.921569
+0.917647
+0.921569
+0.913725
+0.909804
+0.913725
+0.905882
+0.901961
+0.905882
+0.898039
+0.894118
+0.898039
+0.890196
+0.886275
+0.890196
+0.882353
+0.878431
+0.886275
+0.87451
+0.870588
+0.878431
+0.866667
+0.862745
+0.870588
+0.862745
+0.858824
+0.866667
+0.854902
+0.85098
+0.858824
+0.847059
+0.843137
+0.854902
+0.839216
+0.835294
+0.847059
+0.835294
+0.831373
+0.839216
+0.827451
+0.823529
+0.835294
+0.819608
+0.815686
+0.827451
+0.815686
+0.811765
+0.823529
+0.807843
+0.803922
+0.815686
+0.8
+0.796078
+0.807843
+0.792157
+0.788235
+0.803922
+0.788235
+0.784314
+0.796078
+0.780392
+0.776471
+0.792157
+0.772549
+0.768627
+0.784314
+0.768627
+0.764706
+0.780392
+0.760784
+0.756863
+0.772549
+0.756863
+0.74902
+0.768627
+0.74902
+0.745098
+0.760784
+0.745098
+0.737255
+0.756863
+0.737255
+0.733333
+0.74902
+0.729412
+0.72549
+0.745098
+0.72549
+0.717647
+0.737255
+0.717647
+0.713725
+0.733333
+0.713725
+0.705882
+0.729412
+0.705882
+0.701961
+0.721569
+0.701961
+0.694118
+0.717647
+0.694118
+0.690196
+0.709804
+0.690196
+0.682353
+0.705882
+0.682353
+0.678431
+0.701961
+0.678431
+0.670588
+0.694118
+0.670588
+0.666667
+0.690196
+0.666667
+0.658824
+0.682353
+0.658824
+0.654902
+0.678431
+0.654902
+0.647059
+0.67451
+0.647059
+0.643137
+0.666667
+0.643137
+0.635294
+0.662745
+0.639216
+0.631373
+0.658824
+0.631373
+0.623529
+0.65098
+0.627451
+0.619608
+0.647059
+0.619608
+0.615686
+0.643137
+0.615686
+0.607843
+0.635294
+0.611765
+0.603922
+0.631373
+0.603922
+0.6
+0.627451
+0.6
+0.592157
+0.619608
+0.596078
+0.588235
+0.615686
+0.588235
+0.580392
+0.611765
+0.584314
+0.576471
+0.607843
+0.580392
+0.572549
+0.6
+0.572549
+0.564706
+0.596078
+0.568627
+0.560784
+0.592157
+0.564706
+0.556863
+0.584314
+0.556863
+0.54902
+0.580392
+0.552941
+0.545098
+0.576471
+0.54902
+0.541176
+0.572549
+0.541176
+0.533333
+0.564706
+0.537255
+0.529412
+0.560784
+0.533333
+0.52549
+0.556863
+0.52549
+0.517647
+0.552941
+0.521569
+0.513725
+0.545098
+0.517647
+0.509804
+0.541176
+0.509804
+0.501961
+0.537255
+0.505882
+0.498039
+0.533333
+0.501961
+0.494118
+0.529412
+0.498039
+0.490196
+0.521569
+0.490196
+0.482353
+0.517647
+0.486275
+0.478431
+0.513725
+0.482353
+0.47451
+0.509804
+0.478431
+0.470588
+0.505882
+0.47451
+0.462745
+0.498039
+0.466667
+0.458824
+0.494118
+0.462745
+0.454902
+0.490196
+0.458824
+0.45098
+0.486275
+0.454902
+0.447059
+0.482353
+0.45098
+0.439216
+0.478431
+0.447059
+0.435294
+0.470588
+0.439216
+0.431373
+0.466667
+0.435294
+0.427451
+0.462745
+0.431373
+0.423529
+0.458824
+0.427451
+0.419608
+0.454902
+0.423529
+0.415686
+0.45098
+0.419608
+0.407843
+0.447059
+0.415686
+0.403922
+0.443137
+0.411765
+0.4
+0.439216
+0.407843
+0.396078
+0.435294
+0.4
+0.392157
+0.431373
+0.396078
+0.388235
+0.427451
+0.392157
+0.384314
+0.419608
+0.388235
+0.380392
+0.415686
+0.384314
+0.376471
+0.411765
+0.380392
+0.372549
+0.407843
+0.376471
+0.364706
+0.403922
+0.372549
+0.360784
+0.4
+0.368627
+0.356863
+0.396078
+0.364706
+0.352941
+0.392157
+0.360784
+0.34902
+0.388235
+0.356863
+0.345098
+0.384314
+0.352941
+0.341176
+0.380392
+0.34902
+0.337255
+0.376471
+0.345098
+0.333333
+0.372549
+0.341176
+0.329412
+0.368627
+0.337255
+0.32549
+0.364706
+0.333333
+0.321569
+0.360784
+0.329412
+0.317647
+0.356863
+0.32549
+0.317647
+0.352941
+0.321569
+0.313725
+0.34902
+0.317647
+0.309804
+0.345098
+0.313725
+0.305882
+0.341176
+0.309804
+0.301961
+0.337255
+0.309804
+0.298039
+0.337255
+0.305882
+0.294118
+0.333333
+0.301961
+0.290196
+0.329412
+0.298039
+0.286275
+0.321569
+0.290196
+0.278431
+0.317647
+0.286275
+0.278431
+0.313725
+0.282353
+0.27451
+0.309804
+0.278431
+0.270588
+0.305882
+0.278431
+0.266667
+0.301961
+0.27451
+0.262745
+0.301961
+0.270588
+0.258824
+0.298039
+0.266667
+0.254902
+0.294118
+0.262745
+0.254902
+0.290196
+0.258824
+0.25098
+0.286275
+0.254902
+0.247059
+0.282353
+0.254902
+0.243137
+0.278431
+0.25098
+0.239216
+0.27451
+0.247059
+0.235294
+0.27451
+0.243137
+0.235294
+0.270588
+0.239216
+0.231373
+0.266667
+0.235294
+0.227451
+0.262745
+0.231373
+0.223529
+0.258824
+0.231373
+0.219608
+0.254902
+0.227451
+0.219608
+0.25098
+0.223529
+0.215686
+0.25098
+0.219608
+0.211765
+0.247059
+0.215686
+0.207843
+0.243137
+0.215686
+0.203922
+0.239216
+0.211765
+0.203922
+0.235294
+0.207843
+0.2
+0.231373
+0.203922
+0.196078
+0.227451
+0.203922
+0.192157
+0.227451
+0.2
+0.192157
+0.223529
+0.196078
+0.188235
+0.219608
+0.192157
+0.184314
+0.215686
+0.188235
+0.180392
+0.211765
+0.188235
+0.176471
+0.207843
+0.184314
+0.176471
+0.207843
+0.180392
+0.172549
+0.203922
+0.176471
+0.168627
+0.2
+0.176471
+0.164706
+0.196078
+0.172549
+0.164706
+0.192157
+0.168627
+0.160784
+0.192157
+0.164706
+0.156863
+0.188235
+0.160784
+0.152941
+0.184314
+0.160784
+0.152941
+0.180392
+0.156863
+0.14902
+0.176471
+0.152941
+0.145098
+0.176471
+0.14902
+0.141176
+0.172549
+0.145098
+0.137255
+0.168627
+0.141176
+0.133333
+0.164706
+0.141176
+0.133333
+0.160784
+0.137255
+0.129412
+0.156863
+0.133333
+0.12549
+0.152941
+0.129412
+0.121569
+0.152941
+0.12549
+0.117647
+0.14902
+0.121569
+0.113725
+0.145098
+0.121569
+0.113725
+0.141176
+0.117647
+0.109804
+0.137255
+0.113725
+0.105882
+0.133333
+0.109804
+0.101961
+0.129412
+0.105882
+0.098039
+0.12549
+0.101961
+0.094118
+0.121569
+0.101961
+0.094118
+0.121569
+0.098039
+0.090196
+0.117647
+0.094118
+0.086275
+0.113725
+0.090196
+0.082353
+0.109804
+0.090196
+0.078431
+0.105882
+0.086275
+0.07451
+0.101961
+0.082353
+0.07451
+0.101961
+0.078431
+0.070588
+0.098039
+0.07451
+0.066667
+0.094118
+0.070588
+0.062745
+0.090196
+0.066667
+0.054902
+0.086275
+0.062745
+0.05098
+0.082353
+0.058824
+0.047059
+0.078431
+0.054902
+0.043137
+0.07451
+0.05098
+0.039216
+0.070588
+0.047059
+0.031373
+0.070588
+0.043137
+0.031373
+0.066667
+0.039216
+0.027451
+0.062745
+0.035294
+0.023529
+0.058824
+0.031373
+0.023529
+0.054902
+0.031373
+0.019608
+0.05098
+0.027451
+0.015686
+0.047059
+0.023529
+0.015686
+0.043137
+0.019608
+0.011765
+0.039216
+0.019608
+0.011765
+0.035294
+0.015686
+0.007843
+0.031373
+0.015686
+0.007843
+0.027451
+0.011765
+0.007843
+0.027451
+0.011765
+0.003922
+0.023529
+0.007843
+0.003922
+0.019608
+0.007843
+0.003922
+0.019608
+0.007843
+0
+0.015686
+0.003922
+0
+0.015686
+0.003922
+0
+0.011765
+0.003922
+0
+0.011765
+0
+0
+0.011765
+0
+0
+0.007843
+0
+0
+0.007843
+0
+0
+0.003922
+0
+0
+0.003922
+0
+0
+0.003922
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+] def
+{ 2 array 1 array 3 2 roll
+0 sub 254 mul 0 add
+dup 0 lt { pop 0 } { dup 254 gt { pop 254 } if } ifelse
+dup floor cvi exch dup ceiling cvi exch 2 index sub
+3 index 0 3 2 roll put
+3 index 1 3 2 roll put
+2 index 0 3 2 roll put
+xpdfSamples1
+2 index 0 get
+3 mul 0 add get
+xpdfSamples1
+3 index 1 get
+3 mul 0 add get
+2 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+xpdfSamples1
+3 index 0 get
+3 mul 1 add get
+xpdfSamples1
+4 index 1 get
+3 mul 1 add get
+3 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+xpdfSamples1
+4 index 0 get
+3 mul 2 add get
+xpdfSamples1
+5 index 1 get
+3 mul 2 add get
+4 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+5 3 roll pop pop }
+] {} cs
+[1] sc
+[1] sc
+false op
+false OP
+1 i
+q
+[1 0 0 1 17.221 39.334] cm
+0 0 m
+-2.67 0 l
+-2.67 -3.717 l
+0 -3.717 l
+1.2 -3.717 2.019 -3.033 2.019 -1.865 c
+2.019 -0.698 1.2 0 0 0 c
+2.084 -10.243 m
+-0.419 -5.247 l
+-2.67 -5.247 l
+-2.67 -10.243 l
+-4.466 -10.243 l
+-4.466 1.614 l
+0.13 1.614 l
+2.381 1.614 3.814 0.167 3.814 -1.852 c
+3.814 -3.549 2.781 -4.633 1.451 -4.996 c
+4.176 -10.243 l
+2.084 -10.243 l
+f
+Q
+q
+[1 0 0 1 25.331 29.091] cm
+0 0 m
+0 11.856 l
+7.572 11.856 l
+7.572 10.243 l
+1.796 10.243 l
+1.796 6.777 l
+6.727 6.777 l
+6.727 5.182 l
+1.796 5.182 l
+1.796 1.614 l
+7.572 1.614 l
+7.572 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 40.179 28.989] cm
+0 0 m
+-1.777 0 -3.06 0.419 -4.196 1.568 c
+-2.996 2.749 l
+-2.131 1.884 -1.182 1.619 0.037 1.619 c
+1.581 1.619 2.484 2.284 2.484 3.433 c
+2.484 3.949 2.335 4.382 2.019 4.661 c
+1.721 4.949 1.423 5.066 0.716 5.164 c
+-0.679 5.363 l
+-1.647 5.498 -2.409 5.829 -2.93 6.317 c
+-3.508 6.861 -3.795 7.61 -3.795 8.582 c
+-3.795 10.643 -2.298 12.057 0.167 12.057 c
+1.739 12.057 2.828 11.662 3.852 10.708 c
+2.698 9.578 l
+1.973 10.28 1.116 10.494 0.121 10.494 c
+-1.273 10.494 -2.047 9.694 -2.047 8.643 c
+-2.047 8.215 -1.907 7.833 -1.6 7.545 c
+-1.293 7.28 -0.818 7.08 -0.261 6.996 c
+1.088 6.796 l
+2.186 6.628 2.8 6.363 3.303 5.912 c
+3.953 5.35 4.261 4.498 4.261 3.484 c
+4.261 1.303 2.484 0 0 0 c
+f
+Q
+q
+[1 0 0 1 54.524 38.534] cm
+0 0 m
+-0.502 0.549 -1.171 0.8 -2.018 0.8 c
+-4.204 0.8 l
+-4.204 -7.829 l
+-2.018 -7.829 l
+-1.171 -7.829 -0.502 -7.577 0 -7.028 c
+0.615 -6.345 0.633 -5.061 0.633 -3.428 c
+0.633 -1.8 0.615 -0.679 0 0 c
+1.229 -8.326 m
+0.485 -9.08 -0.604 -9.442 -1.832 -9.442 c
+-6 -9.442 l
+-6 2.414 l
+-1.832 2.414 l
+-0.604 2.414 0.485 2.047 1.229 1.298 c
+2.513 0.014 2.43 -1.716 2.43 -3.428 c
+2.43 -5.145 2.513 -7.043 1.229 -8.326 c
+f
+Q
+q
+[1 0 0 1 61.278 29.091] cm
+0 0 m
+0 11.856 l
+7.583 11.856 l
+7.583 10.243 l
+1.806 10.243 l
+1.806 6.777 l
+6.729 6.777 l
+6.729 5.182 l
+1.806 5.182 l
+1.806 1.614 l
+7.583 1.614 l
+7.583 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 80.268 29.091] cm
+0 0 m
+-5.48 8.345 l
+-5.48 0 l
+-7.275 0 l
+-7.275 11.856 l
+-5.629 11.856 l
+-0.15 3.53 l
+-0.15 11.856 l
+1.646 11.856 l
+1.646 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 19.648 10.201] cm
+0 0 m
+-1.897 0 -3.759 1.163 -3.759 4.331 c
+-3.759 7.498 -1.897 8.643 0 8.643 c
+1.163 8.643 1.981 8.312 2.781 7.461 c
+1.619 6.331 l
+1.089 6.912 0.67 7.13 0 7.13 c
+-0.642 7.13 -1.2 6.861 -1.562 6.377 c
+-1.926 5.912 -2.065 5.312 -2.065 4.331 c
+-2.065 3.344 -1.926 2.731 -1.562 2.265 c
+-1.2 1.781 -0.642 1.516 0 1.516 c
+0.67 1.516 1.089 1.735 1.619 2.312 c
+2.781 1.2 l
+1.981 0.349 1.163 0 0 0 c
+f
+Q
+q
+[1 0 0 1 30.123 16.843] cm
+0 0 m
+-0.316 0.321 -0.743 0.488 -1.247 0.488 c
+-1.748 0.488 -2.168 0.321 -2.484 0 c
+-2.995 -0.516 -3.061 -1.396 -3.061 -2.311 c
+-3.061 -3.228 -2.995 -4.107 -2.484 -4.628 c
+-2.168 -4.944 -1.748 -5.126 -1.247 -5.126 c
+-0.743 -5.126 -0.316 -4.944 0 -4.628 c
+0.512 -4.107 0.586 -3.228 0.586 -2.311 c
+0.586 -1.396 0.512 -0.516 0 0 c
+1.285 -5.642 m
+0.735 -6.209 -0.103 -6.642 -1.247 -6.642 c
+-2.4 -6.642 -3.209 -6.209 -3.759 -5.642 c
+-4.559 -4.809 -4.764 -3.744 -4.764 -2.311 c
+-4.764 -0.897 -4.559 0.168 -3.759 1 c
+-3.209 1.568 -2.4 2.005 -1.247 2.005 c
+-0.103 2.005 0.735 1.568 1.285 1 c
+2.084 0.168 2.279 -0.897 2.279 -2.311 c
+2.279 -3.744 2.084 -4.809 1.285 -5.642 c
+f
+Q
+q
+[1 0 0 1 41.519 10.298] cm
+0 0 m
+0 5.145 l
+0 6.465 -0.754 7.033 -1.703 7.033 c
+-2.651 7.033 -3.452 6.447 -3.452 5.145 c
+-3.452 0 l
+-5.154 0 l
+-5.154 8.447 l
+-3.489 8.447 l
+-3.489 7.596 l
+-2.903 8.229 -2.084 8.545 -1.236 8.545 c
+-0.371 8.545 0.344 8.266 0.847 7.782 c
+1.488 7.149 1.692 6.349 1.692 5.396 c
+1.692 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 50.822 10.201] cm
+0 0 m
+-1.897 0 -3.759 1.163 -3.759 4.331 c
+-3.759 7.498 -1.897 8.643 0 8.643 c
+1.163 8.643 1.981 8.312 2.781 7.461 c
+1.618 6.331 l
+1.088 6.912 0.67 7.13 0 7.13 c
+-0.651 7.13 -1.199 6.861 -1.562 6.377 c
+-1.926 5.912 -2.064 5.312 -2.064 4.331 c
+-2.064 3.344 -1.926 2.731 -1.562 2.265 c
+-1.199 1.781 -0.651 1.516 0 1.516 c
+0.67 1.516 1.088 1.735 1.618 2.312 c
+2.781 1.2 l
+1.981 0.349 1.163 0 0 0 c
+f
+Q
+q
+[1 0 0 1 61.745 16.364] cm
+0 0 m
+-0.262 0.633 -0.865 1.066 -1.666 1.066 c
+-2.466 1.066 -3.08 0.633 -3.341 0 c
+-3.509 -0.386 -3.545 -0.637 -3.564 -1.149 c
+0.231 -1.149 l
+0.222 -0.637 0.166 -0.386 0 0 c
+-3.564 -2.335 m
+-3.564 -3.782 -2.791 -4.698 -1.415 -4.698 c
+-0.467 -4.698 0.036 -4.428 0.632 -3.833 c
+1.72 -4.851 l
+0.854 -5.712 0.036 -6.163 -1.443 -6.163 c
+-3.564 -6.163 -5.247 -5.047 -5.247 -1.832 c
+-5.247 0.898 -3.825 2.484 -1.666 2.484 c
+0.603 2.484 1.915 0.819 1.915 -1.581 c
+1.915 -2.335 l
+-3.564 -2.335 l
+f
+Q
+q
+[1 0 0 1 71.039 17.331] cm
+0 0 m
+-1.526 0 -1.768 -1.302 -1.768 -2.8 c
+-1.768 -4.302 -1.526 -5.614 0 -5.614 c
+1.535 -5.614 1.748 -4.302 1.748 -2.8 c
+1.748 -1.302 1.535 0 0 0 c
+2.503 -6.382 m
+2.038 -6.847 1.303 -7.13 0.455 -7.13 c
+-0.447 -7.13 -1.145 -6.893 -1.768 -6.163 c
+-1.768 -10.447 l
+-3.46 -10.447 l
+-3.46 1.414 l
+-1.796 1.414 l
+-1.796 0.512 l
+-1.162 1.279 -0.483 1.512 0.437 1.512 c
+1.284 1.512 2.038 1.233 2.503 0.763 c
+3.349 -0.088 3.451 -1.516 3.451 -2.8 c
+3.451 -4.084 3.349 -5.53 2.503 -6.382 c
+f
+Q
+q
+[1 0 0 1 80.964 10.298] cm
+0 0 m
+-1.58 0 -2.316 1.135 -2.316 2.349 c
+-2.316 7 l
+-3.283 7 l
+-3.283 8.298 l
+-2.316 8.298 l
+-2.316 10.862 l
+-0.613 10.862 l
+-0.613 8.298 l
+1.015 8.298 l
+1.015 7 l
+-0.613 7 l
+-0.613 2.433 l
+-0.613 1.814 -0.316 1.451 0.317 1.451 c
+1.015 1.451 l
+1.015 0 l
+0 0 l
+f
+Q
+[0.4] sc
+q
+[1 0 0 1 137.816 42.134] cm
+0 0 m
+-25.156 0 l
+-16.494 8.661 l
+0 0 l
+f
+Q
+[0.2] sc
+q
+[1 0 0 1 102.577 33.524] cm
+0 0 m
+0 12.252 l
+17.786 17.782 l
+0 0 l
+f
+Q
+[0.8] sc
+q
+[1 0 0 1 101.534 20.308] cm
+0 0 m
+-8.661 8.662 l
+0 25.147 l
+0 0 l
+f
+Q
+[0.6] sc
+q
+[1 0 0 1 110.138 10.219] cm
+0 0 m
+-12.251 0 l
+-17.787 17.784 l
+0 0 l
+f
+Q
+[0.4] sc
+q
+[1 0 0 1 114.707 0.5117] cm
+0 0 m
+-16.485 8.6606 l
+8.661 8.6606 l
+0 0 l
+f
+Q
+q
+0.059998 0.06 143.607 51.247 re
+W
+[0.302] sc
+q
+[1 0 0 1 115.666 0] cm
+0 0 m
+17.787 17.783 l
+17.787 5.5302 l
+0 0 l
+f
+Q
+Q
+[0.698] sc
+q
+[1 0 0 1 134.495 5.8515] cm
+0 0 m
+0 25.147 l
+8.661 16.486 l
+0 0 l
+f
+Q
+[0.6] sc
+q
+[1 0 0 1 143.667 23.314] cm
+0 0 m
+-17.787 17.783 l
+-5.534 17.783 l
+0 0 l
+f
+Q
+Q
+showpage
+%%PageTrailer
+pdfEndPage
+%%Trailer
+end
+%%DocumentSuppliedResources:
+%%EOF
diff --git a/macros/latex/contrib/tudscr/logo/DDC-24.pdf b/macros/latex/contrib/tudscr/logo/DDC-24.pdf
new file mode 100644
index 0000000000..4b3c4e0c50
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/DDC-24.pdf
Binary files differ
diff --git a/macros/latex/contrib/tudscr/logo/DDC-25.eps b/macros/latex/contrib/tudscr/logo/DDC-25.eps
new file mode 100644
index 0000000000..3242b3df99
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/DDC-25.eps
@@ -0,0 +1,2224 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%XpdfVersion: 3.03
+%%Creator: Adobe Illustrator CS4
+%%Title: DDC-25.eps
+%%LanguageLevel: 2
+%%DocumentSuppliedResources: (atend)
+%%BoundingBox: 0 0 35 70
+%%HiResBoundingBox: 0 0 34.582 69.165
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset xpdf 3.03 0
+%%Copyright: Copyright 1996-2011 Glyph & Cog, LLC
+/xpdf 75 dict def xpdf begin
+% PDF special state
+/pdfDictSize 15 def
+/pdfSetup {
+ /setpagedevice where {
+ pop 2 dict begin
+ /Policies 1 dict dup begin /PageSize 6 def end def
+ { /Duplex true def } if
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfSetupPaper {
+ 2 array astore
+ /setpagedevice where {
+ pop 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfStartPage {
+ pdfDictSize dict begin
+ /pdfFillCS [] def
+ /pdfFillXform {} def
+ /pdfStrokeCS [] def
+ /pdfStrokeXform {} def
+ /pdfFill [0] def
+ /pdfStroke [0] def
+ /pdfFillOP false def
+ /pdfStrokeOP false def
+ /pdfLastFill false def
+ /pdfLastStroke false def
+ /pdfTextMat [1 0 0 1 0 0] def
+ /pdfFontSize 0 def
+ /pdfCharSpacing 0 def
+ /pdfTextRender 0 def
+ /pdfTextRise 0 def
+ /pdfWordSpacing 0 def
+ /pdfHorizScaling 1 def
+ /pdfTextClipPath [] def
+} def
+/pdfEndPage { end } def
+% PDF color state
+/cs { /pdfFillXform exch def dup /pdfFillCS exch def
+ setcolorspace } def
+/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def
+ setcolorspace } def
+/sc { pdfLastFill not { pdfFillCS setcolorspace } if
+ dup /pdfFill exch def aload pop pdfFillXform setcolor
+ /pdfLastFill true def /pdfLastStroke false def } def
+/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if
+ dup /pdfStroke exch def aload pop pdfStrokeXform setcolor
+ /pdfLastStroke true def /pdfLastFill false def } def
+/op { /pdfFillOP exch def
+ pdfLastFill { pdfFillOP setoverprint } if } def
+/OP { /pdfStrokeOP exch def
+ pdfLastStroke { pdfStrokeOP setoverprint } if } def
+/fCol {
+ pdfLastFill not {
+ pdfFillCS setcolorspace
+ pdfFill aload pop pdfFillXform setcolor
+ pdfFillOP setoverprint
+ /pdfLastFill true def /pdfLastStroke false def
+ } if
+} def
+/sCol {
+ pdfLastStroke not {
+ pdfStrokeCS setcolorspace
+ pdfStroke aload pop pdfStrokeXform setcolor
+ pdfStrokeOP setoverprint
+ /pdfLastStroke true def /pdfLastFill false def
+ } if
+} def
+% build a font
+/pdfMakeFont {
+ 4 3 roll findfont
+ 4 2 roll matrix scale makefont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /Encoding exch def
+ currentdict
+ end
+ definefont pop
+} def
+/pdfMakeFont16 {
+ exch findfont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /WMode exch def
+ currentdict
+ end
+ definefont pop
+} def
+% graphics state operators
+/q { gsave pdfDictSize dict begin } def
+/Q {
+ end grestore
+ /pdfLastFill where {
+ pop
+ pdfLastFill {
+ pdfFillOP setoverprint
+ } {
+ pdfStrokeOP setoverprint
+ } ifelse
+ } if
+} def
+/cm { concat } def
+/d { setdash } def
+/i { setflat } def
+/j { setlinejoin } def
+/J { setlinecap } def
+/M { setmiterlimit } def
+/w { setlinewidth } def
+% path segment operators
+/m { moveto } def
+/l { lineto } def
+/c { curveto } def
+/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+ neg 0 rlineto closepath } def
+/h { closepath } def
+% path painting operators
+/S { sCol stroke } def
+/Sf { fCol stroke } def
+/f { fCol fill } def
+/f* { fCol eofill } def
+% clipping operators
+/W { clip newpath } def
+/W* { eoclip newpath } def
+/Ws { strokepath clip newpath } def
+% text state operators
+/Tc { /pdfCharSpacing exch def } def
+/Tf { dup /pdfFontSize exch def
+ dup pdfHorizScaling mul exch matrix scale
+ pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put
+ exch findfont exch makefont setfont } def
+/Tr { /pdfTextRender exch def } def
+/Ts { /pdfTextRise exch def } def
+/Tw { /pdfWordSpacing exch def } def
+/Tz { /pdfHorizScaling exch def } def
+% text positioning operators
+/Td { pdfTextMat transform moveto } def
+/Tm { /pdfTextMat exch def } def
+% text string operators
+/xyshow where {
+ pop
+ /xyshow2 {
+ dup length array
+ 0 2 2 index length 1 sub {
+ 2 index 1 index 2 copy get 3 1 roll 1 add get
+ pdfTextMat dtransform
+ 4 2 roll 2 copy 6 5 roll put 1 add 3 1 roll dup 4 2 roll put
+ } for
+ exch pop
+ xyshow
+ } def
+}{
+ /xyshow2 {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval show moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval show moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/cshow where {
+ pop
+ /xycp {
+ 0 3 2 roll
+ {
+ pop pop currentpoint 3 2 roll
+ 1 string dup 0 4 3 roll put false charpath moveto
+ 2 copy get 2 index 2 index 1 add get
+ pdfTextMat dtransform rmoveto
+ 2 add
+ } exch cshow
+ pop pop
+ } def
+}{
+ /xycp {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval false charpath moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval false charpath moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/Tj {
+ fCol
+ 0 pdfTextRise pdfTextMat dtransform rmoveto
+ currentpoint 4 2 roll
+ pdfTextRender 1 and 0 eq {
+ 2 copy xyshow2
+ } if
+ pdfTextRender 3 and dup 1 eq exch 2 eq or {
+ 3 index 3 index moveto
+ 2 copy
+ currentfont /FontType get 3 eq { fCol } { sCol } ifelse
+ xycp currentpoint stroke moveto
+ } if
+ pdfTextRender 4 and 0 ne {
+ 4 2 roll moveto xycp
+ /pdfTextClipPath [ pdfTextClipPath aload pop
+ {/moveto cvx}
+ {/lineto cvx}
+ {/curveto cvx}
+ {/closepath cvx}
+ pathforall ] def
+ currentpoint newpath moveto
+ } {
+ pop pop pop pop
+ } ifelse
+ 0 pdfTextRise neg pdfTextMat dtransform rmoveto
+} def
+/TJm { 0.001 mul pdfFontSize mul pdfHorizScaling mul neg 0
+ pdfTextMat dtransform rmoveto } def
+/TJmV { 0.001 mul pdfFontSize mul neg 0 exch
+ pdfTextMat dtransform rmoveto } def
+/Tclip { pdfTextClipPath cvx exec clip newpath
+ /pdfTextClipPath [] def } def
+% Level 2/3 image operators
+/pdfImBuf 100 string def
+/pdfImStr {
+ 2 copy exch length lt {
+ 2 copy get exch 1 add exch
+ } {
+ ()
+ } ifelse
+} def
+/skipEOD {
+ { currentfile pdfImBuf readline
+ not { pop exit } if
+ (%-EOD-) eq { exit } if } loop
+} def
+/pdfIm { image skipEOD } def
+/pdfImM { fCol imagemask skipEOD } def
+/pr { 2 index 2 index 3 2 roll putinterval 4 add } def
+/pdfImClip {
+ gsave
+ 0 2 4 index length 1 sub {
+ dup 4 index exch 2 copy
+ get 5 index div put
+ 1 add 3 index exch 2 copy
+ get 3 index div put
+ } for
+ pop pop rectclip
+} def
+/pdfImClipEnd { grestore } def
+% shading operators
+/colordelta {
+ false 0 1 3 index length 1 sub {
+ dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt {
+ pop true
+ } if
+ } for
+ exch pop exch pop
+} def
+/funcCol { func n array astore } def
+/funcSH {
+ dup 0 eq {
+ true
+ } {
+ dup 6 eq {
+ false
+ } {
+ 4 index 4 index funcCol dup
+ 6 index 4 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 5 index 5 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 6 index 8 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ colordelta or or or
+ } ifelse
+ } ifelse
+ {
+ 1 add
+ 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch
+ 6 index 6 index 4 index 4 index 4 index funcSH
+ 2 index 6 index 6 index 4 index 4 index funcSH
+ 6 index 2 index 4 index 6 index 4 index funcSH
+ 5 3 roll 3 2 roll funcSH pop pop
+ } {
+ pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul
+ funcCol sc
+ dup 4 index exch mat transform m
+ 3 index 3 index mat transform l
+ 1 index 3 index mat transform l
+ mat transform l pop pop h f*
+ } ifelse
+} def
+/axialCol {
+ dup 0 lt {
+ pop t0
+ } {
+ dup 1 gt {
+ pop t1
+ } {
+ dt mul t0 add
+ } ifelse
+ } ifelse
+ func n array astore
+} def
+/axialSH {
+ dup 2 lt {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index axialCol 2 index axialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index axialSH
+ exch 3 2 roll axialSH
+ } {
+ pop 2 copy add 0.5 mul
+ axialCol sc
+ exch dup dx mul x0 add exch dy mul y0 add
+ 3 2 roll dup dx mul x0 add exch dy mul y0 add
+ dx abs dy abs ge {
+ 2 copy yMin sub dy mul dx div add yMin m
+ yMax sub dy mul dx div add yMax l
+ 2 copy yMax sub dy mul dx div add yMax l
+ yMin sub dy mul dx div add yMin l
+ h f*
+ } {
+ exch 2 copy xMin sub dx mul dy div add xMin exch m
+ xMax sub dx mul dy div add xMax exch l
+ exch 2 copy xMax sub dx mul dy div add xMax exch l
+ xMin sub dx mul dy div add xMin exch l
+ h f*
+ } ifelse
+ } ifelse
+} def
+/radialCol {
+ dup t0 lt {
+ pop t0
+ } {
+ dup t1 gt {
+ pop t1
+ } if
+ } ifelse
+ func n array astore
+} def
+/radialSH {
+ dup 0 eq {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index dt mul t0 add radialCol
+ 2 index dt mul t0 add radialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index radialSH
+ exch 3 2 roll radialSH
+ } {
+ pop 2 copy add 0.5 mul dt mul t0 add
+ radialCol sc
+ encl {
+ exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 0 360 arc h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 360 0 arcn h f
+ } {
+ 2 copy
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arcn
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arcn h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arc
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arc h f
+ } ifelse
+ } ifelse
+} def
+end
+%%EndResource
+%%EndProlog
+%%BeginSetup
+xpdf begin
+%%EndSetup
+pdfStartPage
+[] 0 d
+1 i
+0 j
+0 J
+10 M
+1 w
+/DeviceGray {} cs
+[0] sc
+/DeviceGray {} CS
+[0] SC
+false op
+false OP
+{} settransfer
+0 0 34.582 69.165 re
+W
+q
+[/Separation (HKS 41 K) /DeviceRGB
+/xpdfSamples0 [
+1
+1
+1
+0.984314
+0.984314
+0.988235
+0.980392
+0.980392
+0.988235
+0.964706
+0.968627
+0.980392
+0.960784
+0.960784
+0.976471
+0.94902
+0.952941
+0.964706
+0.945098
+0.94902
+0.964706
+0.937255
+0.941176
+0.956863
+0.933333
+0.933333
+0.952941
+0.92549
+0.929412
+0.94902
+0.921569
+0.92549
+0.94902
+0.913725
+0.917647
+0.941176
+0.909804
+0.913725
+0.941176
+0.901961
+0.905882
+0.937255
+0.898039
+0.901961
+0.933333
+0.890196
+0.894118
+0.92549
+0.886275
+0.894118
+0.92549
+0.878431
+0.886275
+0.917647
+0.87451
+0.882353
+0.917647
+0.870588
+0.878431
+0.913725
+0.866667
+0.87451
+0.909804
+0.858824
+0.866667
+0.905882
+0.854902
+0.866667
+0.905882
+0.847059
+0.858824
+0.901961
+0.843137
+0.854902
+0.898039
+0.839216
+0.847059
+0.890196
+0.835294
+0.847059
+0.890196
+0.827451
+0.839216
+0.886275
+0.823529
+0.835294
+0.882353
+0.815686
+0.831373
+0.882353
+0.811765
+0.827451
+0.878431
+0.807843
+0.819608
+0.87451
+0.803922
+0.819608
+0.87451
+0.796078
+0.811765
+0.870588
+0.792157
+0.807843
+0.866667
+0.788235
+0.803922
+0.858824
+0.784314
+0.8
+0.858824
+0.776471
+0.796078
+0.854902
+0.772549
+0.792157
+0.854902
+0.768627
+0.788235
+0.85098
+0.764706
+0.784314
+0.847059
+0.756863
+0.776471
+0.843137
+0.756863
+0.776471
+0.843137
+0.74902
+0.772549
+0.839216
+0.745098
+0.768627
+0.839216
+0.741176
+0.760784
+0.831373
+0.737255
+0.760784
+0.831373
+0.729412
+0.752941
+0.823529
+0.729412
+0.74902
+0.823529
+0.721569
+0.745098
+0.819608
+0.717647
+0.741176
+0.819608
+0.713725
+0.737255
+0.815686
+0.709804
+0.733333
+0.811765
+0.701961
+0.729412
+0.807843
+0.701961
+0.72549
+0.807843
+0.694118
+0.721569
+0.8
+0.690196
+0.717647
+0.8
+0.686275
+0.713725
+0.796078
+0.682353
+0.709804
+0.796078
+0.678431
+0.705882
+0.792157
+0.67451
+0.701961
+0.792157
+0.666667
+0.698039
+0.784314
+0.666667
+0.694118
+0.784314
+0.658824
+0.690196
+0.780392
+0.654902
+0.686275
+0.780392
+0.65098
+0.682353
+0.772549
+0.647059
+0.682353
+0.772549
+0.643137
+0.67451
+0.768627
+0.639216
+0.670588
+0.768627
+0.635294
+0.670588
+0.764706
+0.631373
+0.666667
+0.760784
+0.623529
+0.658824
+0.756863
+0.623529
+0.658824
+0.756863
+0.615686
+0.654902
+0.752941
+0.615686
+0.65098
+0.752941
+0.607843
+0.643137
+0.745098
+0.603922
+0.643137
+0.745098
+0.6
+0.639216
+0.741176
+0.596078
+0.635294
+0.741176
+0.592157
+0.631373
+0.737255
+0.588235
+0.627451
+0.737255
+0.584314
+0.623529
+0.733333
+0.580392
+0.619608
+0.729412
+0.576471
+0.619608
+0.72549
+0.572549
+0.615686
+0.72549
+0.568627
+0.607843
+0.717647
+0.564706
+0.607843
+0.717647
+0.560784
+0.603922
+0.713725
+0.556863
+0.6
+0.713725
+0.552941
+0.596078
+0.709804
+0.54902
+0.596078
+0.709804
+0.545098
+0.588235
+0.705882
+0.541176
+0.588235
+0.701961
+0.537255
+0.584314
+0.701961
+0.533333
+0.580392
+0.698039
+0.529412
+0.576471
+0.694118
+0.52549
+0.576471
+0.694118
+0.521569
+0.568627
+0.690196
+0.517647
+0.568627
+0.686275
+0.513725
+0.560784
+0.682353
+0.509804
+0.560784
+0.682353
+0.505882
+0.556863
+0.678431
+0.501961
+0.552941
+0.678431
+0.498039
+0.54902
+0.67451
+0.494118
+0.54902
+0.67451
+0.490196
+0.541176
+0.666667
+0.490196
+0.541176
+0.666667
+0.482353
+0.537255
+0.662745
+0.482353
+0.533333
+0.662745
+0.478431
+0.529412
+0.658824
+0.47451
+0.529412
+0.658824
+0.470588
+0.52549
+0.654902
+0.466667
+0.521569
+0.654902
+0.462745
+0.517647
+0.65098
+0.458824
+0.517647
+0.65098
+0.454902
+0.509804
+0.643137
+0.454902
+0.509804
+0.643137
+0.447059
+0.505882
+0.639216
+0.447059
+0.501961
+0.639216
+0.443137
+0.498039
+0.635294
+0.439216
+0.498039
+0.635294
+0.435294
+0.494118
+0.631373
+0.431373
+0.490196
+0.631373
+0.427451
+0.490196
+0.627451
+0.423529
+0.486275
+0.627451
+0.419608
+0.482353
+0.619608
+0.419608
+0.478431
+0.619608
+0.411765
+0.478431
+0.615686
+0.407843
+0.47451
+0.615686
+0.403922
+0.470588
+0.611765
+0.4
+0.470588
+0.611765
+0.396078
+0.466667
+0.607843
+0.396078
+0.462745
+0.607843
+0.392157
+0.458824
+0.603922
+0.388235
+0.458824
+0.603922
+0.384314
+0.45098
+0.596078
+0.380392
+0.45098
+0.596078
+0.376471
+0.447059
+0.592157
+0.376471
+0.447059
+0.592157
+0.372549
+0.439216
+0.588235
+0.368627
+0.439216
+0.588235
+0.364706
+0.435294
+0.584314
+0.360784
+0.435294
+0.584314
+0.356863
+0.431373
+0.580392
+0.356863
+0.427451
+0.580392
+0.352941
+0.423529
+0.572549
+0.34902
+0.423529
+0.572549
+0.345098
+0.419608
+0.572549
+0.341176
+0.419608
+0.568627
+0.337255
+0.415686
+0.564706
+0.337255
+0.411765
+0.564706
+0.333333
+0.407843
+0.560784
+0.329412
+0.407843
+0.560784
+0.32549
+0.403922
+0.556863
+0.321569
+0.403922
+0.556863
+0.321569
+0.4
+0.552941
+0.317647
+0.396078
+0.552941
+0.313725
+0.392157
+0.54902
+0.309804
+0.392157
+0.54902
+0.305882
+0.388235
+0.545098
+0.301961
+0.388235
+0.545098
+0.298039
+0.384314
+0.541176
+0.298039
+0.380392
+0.541176
+0.294118
+0.376471
+0.537255
+0.290196
+0.376471
+0.537255
+0.286275
+0.372549
+0.529412
+0.286275
+0.372549
+0.529412
+0.282353
+0.368627
+0.529412
+0.278431
+0.368627
+0.52549
+0.27451
+0.364706
+0.521569
+0.270588
+0.360784
+0.521569
+0.266667
+0.360784
+0.521569
+0.266667
+0.356863
+0.517647
+0.262745
+0.352941
+0.513725
+0.258824
+0.352941
+0.513725
+0.254902
+0.34902
+0.509804
+0.25098
+0.34902
+0.509804
+0.247059
+0.345098
+0.505882
+0.247059
+0.341176
+0.505882
+0.243137
+0.341176
+0.501961
+0.239216
+0.337255
+0.501961
+0.235294
+0.337255
+0.498039
+0.231373
+0.333333
+0.498039
+0.231373
+0.329412
+0.494118
+0.227451
+0.329412
+0.494118
+0.223529
+0.32549
+0.490196
+0.219608
+0.32549
+0.490196
+0.215686
+0.321569
+0.486275
+0.211765
+0.321569
+0.486275
+0.207843
+0.317647
+0.482353
+0.207843
+0.313725
+0.482353
+0.203922
+0.313725
+0.482353
+0.2
+0.309804
+0.478431
+0.196078
+0.309804
+0.478431
+0.192157
+0.305882
+0.478431
+0.188235
+0.305882
+0.470588
+0.188235
+0.301961
+0.470588
+0.184314
+0.301961
+0.470588
+0.180392
+0.298039
+0.466667
+0.176471
+0.294118
+0.466667
+0.172549
+0.294118
+0.462745
+0.168627
+0.290196
+0.462745
+0.164706
+0.290196
+0.462745
+0.160784
+0.286275
+0.458824
+0.156863
+0.286275
+0.458824
+0.152941
+0.282353
+0.454902
+0.152941
+0.282353
+0.45098
+0.145098
+0.278431
+0.45098
+0.145098
+0.278431
+0.45098
+0.141176
+0.27451
+0.447059
+0.137255
+0.270588
+0.447059
+0.133333
+0.270588
+0.443137
+0.129412
+0.270588
+0.443137
+0.12549
+0.266667
+0.439216
+0.121569
+0.266667
+0.439216
+0.117647
+0.262745
+0.435294
+0.113725
+0.258824
+0.435294
+0.105882
+0.258824
+0.431373
+0.105882
+0.254902
+0.431373
+0.098039
+0.254902
+0.427451
+0.094118
+0.25098
+0.427451
+0.090196
+0.25098
+0.427451
+0.086275
+0.247059
+0.423529
+0.078431
+0.247059
+0.423529
+0.07451
+0.247059
+0.423529
+0.070588
+0.243137
+0.419608
+0.062745
+0.239216
+0.415686
+0.058824
+0.239216
+0.415686
+0.05098
+0.239216
+0.415686
+0.043137
+0.235294
+0.411765
+0.039216
+0.231373
+0.411765
+0.031373
+0.231373
+0.407843
+0.023529
+0.227451
+0.407843
+0.019608
+0.227451
+0.403922
+0.007843
+0.227451
+0.403922
+0.003922
+0.223529
+0.4
+0
+0.219608
+0.4
+0
+0.219608
+0.396078
+0
+0.219608
+0.396078
+0
+0.215686
+0.396078
+0
+0.211765
+0.392157
+0
+0.211765
+0.392157
+0
+0.211765
+0.392157
+0
+0.207843
+0.388235
+0
+0.207843
+0.388235
+0
+0.203922
+0.384314
+0
+0.203922
+0.384314
+0
+0.2
+0.380392
+0
+0.2
+0.380392
+0
+0.196078
+0.380392
+0
+0.196078
+0.376471
+0
+0.192157
+0.376471
+0
+0.192157
+0.376471
+0
+0.188235
+0.372549
+0
+0.184314
+0.368627
+] def
+{ 2 array 1 array 3 2 roll
+0 sub 254 mul 0 add
+dup 0 lt { pop 0 } { dup 254 gt { pop 254 } if } ifelse
+dup floor cvi exch dup ceiling cvi exch 2 index sub
+3 index 0 3 2 roll put
+3 index 1 3 2 roll put
+2 index 0 3 2 roll put
+xpdfSamples0
+2 index 0 get
+3 mul 0 add get
+xpdfSamples0
+3 index 1 get
+3 mul 0 add get
+2 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+xpdfSamples0
+3 index 0 get
+3 mul 1 add get
+xpdfSamples0
+4 index 1 get
+3 mul 1 add get
+3 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+xpdfSamples0
+4 index 0 get
+3 mul 2 add get
+xpdfSamples0
+5 index 1 get
+3 mul 2 add get
+4 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+5 3 roll pop pop }
+] {} cs
+[1] sc
+[1] sc
+false op
+false OP
+1 i
+q
+[1 0 0 1 2.6743 27.613] cm
+0 0 m
+-0.1645 0.181 -0.3848 0.263 -0.6645 0.263 c
+-1.3843 0.263 l
+-1.3843 -2.581 l
+-0.6645 -2.581 l
+-0.3848 -2.581 -0.1645 -2.5 0 -2.318 c
+0.2031 -2.093 0.209 -1.67 0.209 -1.132 c
+0.209 -0.594 0.2031 -0.226 0 0 c
+0.4063 -2.746 m
+0.1592 -2.994 -0.1973 -3.114 -0.604 -3.114 c
+-1.977 -3.114 l
+-1.977 0.796 l
+-0.604 0.796 l
+-0.1973 0.796 0.1592 0.675 0.4063 0.428 c
+0.8291 0.005 0.8017 -0.566 0.8017 -1.132 c
+0.8017 -1.697 0.8291 -2.323 0.4063 -2.746 c
+f
+Q
+q
+[1 0 0 1 6.3745 27.876] cm
+0 0 m
+-0.8789 0 l
+-0.8789 -1.225 l
+0 -1.225 l
+0.395 -1.225 0.6645 -0.999 0.6645 -0.615 c
+0.6645 -0.23 0.395 0 0 0 c
+0.6865 -3.377 m
+-0.1372 -1.729 l
+-0.8789 -1.729 l
+-0.8789 -3.377 l
+-1.4722 -3.377 l
+-1.4722 0.533 l
+0.044 0.533 l
+0.7852 0.533 1.2573 0.055 1.2573 -0.609 c
+1.2573 -1.169 0.917 -1.526 0.4775 -1.647 c
+1.3779 -3.377 l
+0.6865 -3.377 l
+f
+Q
+q
+[1 0 0 1 9.0478 24.499] cm
+0 0 m
+0 3.91 l
+2.499 3.91 l
+2.499 3.377 l
+0.5928 3.377 l
+0.5928 2.234 l
+2.218 2.234 l
+2.218 1.708 l
+0.5928 1.708 l
+0.5928 0.533 l
+2.499 0.533 l
+2.499 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 13.945 24.466] cm
+0 0 m
+-0.587 0 -1.011 0.138 -1.384 0.516 c
+-0.988 0.906 l
+-0.703 0.62 -0.39 0.532 0.011 0.532 c
+0.522 0.532 0.818 0.752 0.818 1.132 c
+0.818 1.302 0.769 1.444 0.665 1.538 c
+0.566 1.631 0.467 1.67 0.236 1.702 c
+-0.225 1.769 l
+-0.544 1.812 -0.796 1.922 -0.966 2.081 c
+-1.159 2.263 -1.252 2.51 -1.252 2.828 c
+-1.252 3.509 -0.758 3.977 0.055 3.977 c
+0.571 3.977 0.934 3.845 1.269 3.531 c
+0.89 3.158 l
+0.648 3.389 0.368 3.46 0.039 3.46 c
+-0.423 3.46 -0.675 3.196 -0.675 2.851 c
+-0.675 2.708 -0.631 2.581 -0.527 2.487 c
+-0.428 2.399 -0.269 2.335 -0.088 2.307 c
+0.357 2.24 l
+0.719 2.185 0.923 2.098 1.087 1.949 c
+1.301 1.763 1.406 1.482 1.406 1.147 c
+1.406 0.429 0.818 0 0 0 c
+f
+Q
+q
+[1 0 0 1 18.672 27.613] cm
+0 0 m
+-0.165 0.181 -0.385 0.263 -0.665 0.263 c
+-1.384 0.263 l
+-1.384 -2.581 l
+-0.665 -2.581 l
+-0.385 -2.581 -0.165 -2.5 0 -2.318 c
+0.204 -2.093 0.209 -1.67 0.209 -1.132 c
+0.209 -0.594 0.204 -0.226 0 0 c
+0.406 -2.746 m
+0.159 -2.994 -0.197 -3.114 -0.604 -3.114 c
+-1.977 -3.114 l
+-1.977 0.796 l
+-0.604 0.796 l
+-0.197 0.796 0.159 0.675 0.406 0.428 c
+0.829 0.005 0.802 -0.566 0.802 -1.132 c
+0.802 -1.697 0.829 -2.323 0.406 -2.746 c
+f
+Q
+q
+[1 0 0 1 20.9 24.499] cm
+0 0 m
+0 3.91 l
+2.498 3.91 l
+2.498 3.377 l
+0.593 3.377 l
+0.593 2.234 l
+2.218 2.234 l
+2.218 1.708 l
+0.593 1.708 l
+0.593 0.533 l
+2.498 0.533 l
+2.498 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 27.16 24.499] cm
+0 0 m
+-1.807 2.751 l
+-1.807 0 l
+-2.4 0 l
+-2.4 3.91 l
+-1.857 3.91 l
+-0.05 1.164 l
+-0.05 3.91 l
+0.544 3.91 l
+0.544 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 7.1758 18.126] cm
+0 0 m
+-0.626 0 -1.2412 0.385 -1.2412 1.428 c
+-1.2412 2.472 -0.626 2.85 0 2.85 c
+0.3848 2.85 0.6533 2.74 0.917 2.461 c
+0.5332 2.087 l
+0.3569 2.279 0.2197 2.351 0 2.351 c
+-0.2139 2.351 -0.395 2.263 -0.5161 2.104 c
+-0.6367 1.949 -0.6807 1.752 -0.6807 1.428 c
+-0.6807 1.104 -0.6367 0.9 -0.5161 0.747 c
+-0.395 0.588 -0.2139 0.5 0 0.5 c
+0.2197 0.5 0.3569 0.572 0.5332 0.764 c
+0.917 0.396 l
+0.6533 0.115 0.3848 0 0 0 c
+f
+Q
+q
+[1 0 0 1 10.629 20.317] cm
+0 0 m
+-0.105 0.105 -0.248 0.159 -0.412 0.159 c
+-0.577 0.159 -0.7144 0.105 -0.8188 0 c
+-0.9888 -0.17 -1.0107 -0.462 -1.0107 -0.764 c
+-1.0107 -1.065 -0.9888 -1.356 -0.8188 -1.527 c
+-0.7144 -1.631 -0.577 -1.691 -0.412 -1.691 c
+-0.248 -1.691 -0.105 -1.631 0 -1.527 c
+0.17 -1.356 0.192 -1.065 0.192 -0.764 c
+0.192 -0.462 0.17 -0.17 0 0 c
+0.422 -1.861 m
+0.241 -2.049 -0.033 -2.191 -0.412 -2.191 c
+-0.7905 -2.191 -1.0606 -2.049 -1.2412 -1.861 c
+-1.5044 -1.587 -1.5708 -1.235 -1.5708 -0.764 c
+-1.5708 -0.297 -1.5044 0.055 -1.2412 0.329 c
+-1.0606 0.516 -0.7905 0.659 -0.412 0.659 c
+-0.033 0.659 0.241 0.516 0.422 0.329 c
+0.686 0.055 0.752 -0.297 0.752 -0.764 c
+0.752 -1.235 0.686 -1.587 0.422 -1.861 c
+f
+Q
+q
+[1 0 0 1 14.384 18.159] cm
+0 0 m
+0 1.696 l
+0 2.13 -0.248 2.317 -0.56 2.317 c
+-0.873 2.317 -1.137 2.125 -1.137 1.696 c
+-1.137 0 l
+-1.697 0 l
+-1.697 2.784 l
+-1.148 2.784 l
+-1.148 2.504 l
+-0.956 2.713 -0.687 2.817 -0.407 2.817 c
+-0.121 2.817 0.115 2.725 0.28 2.565 c
+0.495 2.357 0.561 2.092 0.561 1.779 c
+0.561 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 17.453 18.126] cm
+0 0 m
+-0.626 0 -1.241 0.385 -1.241 1.428 c
+-1.241 2.472 -0.626 2.85 0 2.85 c
+0.385 2.85 0.653 2.74 0.917 2.461 c
+0.533 2.087 l
+0.357 2.279 0.219 2.351 0 2.351 c
+-0.214 2.351 -0.396 2.263 -0.517 2.104 c
+-0.637 1.949 -0.681 1.752 -0.681 1.428 c
+-0.681 1.104 -0.637 0.9 -0.517 0.747 c
+-0.396 0.588 -0.214 0.5 0 0.5 c
+0.219 0.5 0.357 0.572 0.533 0.764 c
+0.917 0.396 l
+0.653 0.115 0.385 0 0 0 c
+f
+Q
+q
+[1 0 0 1 21.055 20.158] cm
+0 0 m
+-0.088 0.209 -0.286 0.351 -0.549 0.351 c
+-0.813 0.351 -1.016 0.209 -1.104 0 c
+-1.159 -0.127 -1.169 -0.209 -1.175 -0.379 c
+0.077 -0.379 l
+0.071 -0.209 0.055 -0.127 0 0 c
+-1.175 -0.769 m
+-1.175 -1.247 -0.923 -1.549 -0.467 -1.549 c
+-0.154 -1.549 0.011 -1.461 0.208 -1.264 c
+0.565 -1.599 l
+0.28 -1.884 0.011 -2.032 -0.478 -2.032 c
+-1.175 -2.032 -1.73 -1.664 -1.73 -0.604 c
+-1.73 0.296 -1.263 0.818 -0.549 0.818 c
+0.198 0.818 0.631 0.268 0.631 -0.523 c
+0.631 -0.769 l
+-1.175 -0.769 l
+f
+Q
+q
+[1 0 0 1 24.118 20.477] cm
+0 0 m
+-0.505 0 -0.583 -0.428 -0.583 -0.923 c
+-0.583 -1.418 -0.505 -1.851 0 -1.851 c
+0.504 -1.851 0.577 -1.418 0.577 -0.923 c
+0.577 -0.428 0.504 0 0 0 c
+0.823 -2.104 m
+0.67 -2.257 0.428 -2.351 0.148 -2.351 c
+-0.149 -2.351 -0.379 -2.273 -0.583 -2.032 c
+-0.583 -3.444 l
+-1.143 -3.444 l
+-1.143 0.467 l
+-0.593 0.467 l
+-0.593 0.17 l
+-0.385 0.423 -0.159 0.499 0.142 0.499 c
+0.422 0.499 0.67 0.407 0.823 0.253 c
+1.103 -0.028 1.136 -0.5 1.136 -0.923 c
+1.136 -1.346 1.103 -1.823 0.823 -2.104 c
+f
+Q
+q
+[1 0 0 1 27.39 18.159] cm
+0 0 m
+-0.522 0 -0.764 0.373 -0.764 0.775 c
+-0.764 2.307 l
+-1.082 2.307 l
+-1.082 2.734 l
+-0.764 2.734 l
+-0.764 3.58 l
+-0.204 3.58 l
+-0.204 2.734 l
+0.335 2.734 l
+0.335 2.307 l
+-0.204 2.307 l
+-0.204 0.802 l
+-0.204 0.599 -0.105 0.478 0.105 0.478 c
+0.335 0.478 l
+0.335 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 0.73389 12.113] cm
+0 0 m
+0 2.752 l
+1.708 2.752 l
+1.708 2.489 l
+0.2939 2.489 l
+0.2939 1.52 l
+1.4995 1.52 l
+1.4995 1.257 l
+0.2939 1.257 l
+0.2939 0.264 l
+1.708 0.264 l
+1.708 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 4.4043 12.113] cm
+0 0 m
+-0.4565 0.739 l
+-0.9199 0 l
+-1.2564 0 l
+-0.6108 0.971 l
+-1.2295 1.901 l
+-0.8931 1.901 l
+-0.4565 1.198 l
+-0.0274 1.901 l
+0.3091 1.901 l
+-0.3096 0.971 l
+0.3359 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 5.4272 12.113] cm
+0 0 m
+0 0.24 l
+1.0591 1.654 l
+0.0581 1.654 l
+0.0581 1.901 l
+1.3794 1.901 l
+1.3794 1.666 l
+0.3164 0.248 l
+1.3794 0.248 l
+1.3794 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 8.8423 13.517] cm
+0 0 m
+-0.0732 0.174 -0.2437 0.286 -0.4448 0.286 c
+-0.6455 0.286 -0.8154 0.174 -0.8887 0 c
+-0.9312 -0.105 -0.939 -0.162 -0.9463 -0.316 c
+0.0581 -0.316 l
+0.0503 -0.162 0.0425 -0.105 0 0 c
+-0.9463 -0.525 m
+-0.9463 -0.942 -0.7495 -1.183 -0.3867 -1.183 c
+-0.1665 -1.183 -0.0386 -1.116 0.1123 -0.966 c
+0.3018 -1.132 l
+0.1084 -1.326 -0.0693 -1.426 -0.3941 -1.426 c
+-0.8965 -1.426 -1.2246 -1.125 -1.2246 -0.452 c
+-1.2246 0.162 -0.9272 0.522 -0.4448 0.522 c
+0.0464 0.522 0.3364 0.166 0.3364 -0.397 c
+0.3364 -0.525 l
+-0.9463 -0.525 l
+f
+Q
+q
+[1 0 0 1 10.611 12.113] cm
+0 0 m
+-0.332 0 -0.483 0.217 -0.483 0.507 c
+-0.483 2.752 l
+-0.205 2.752 l
+-0.205 0.518 l
+-0.205 0.333 -0.143 0.24 0.05 0.24 c
+0.201 0.24 l
+0.201 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 12.125 12.113] cm
+0 0 m
+-0.333 0 -0.483 0.217 -0.483 0.507 c
+-0.483 2.752 l
+-0.205 2.752 l
+-0.205 0.518 l
+-0.205 0.333 -0.143 0.24 0.05 0.24 c
+0.201 0.24 l
+0.201 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 14.188 13.517] cm
+0 0 m
+-0.073 0.174 -0.244 0.286 -0.445 0.286 c
+-0.646 0.286 -0.815 0.174 -0.889 0 c
+-0.931 -0.105 -0.939 -0.162 -0.947 -0.316 c
+0.058 -0.316 l
+0.05 -0.162 0.043 -0.105 0 0 c
+-0.947 -0.525 m
+-0.947 -0.942 -0.75 -1.183 -0.387 -1.183 c
+-0.167 -1.183 -0.039 -1.116 0.112 -0.966 c
+0.302 -1.132 l
+0.108 -1.326 -0.07 -1.426 -0.394 -1.426 c
+-0.896 -1.426 -1.225 -1.125 -1.225 -0.452 c
+-1.225 0.162 -0.928 0.522 -0.445 0.522 c
+0.046 0.522 0.336 0.166 0.336 -0.397 c
+0.336 -0.525 l
+-0.947 -0.525 l
+f
+Q
+q
+[1 0 0 1 16.699 12.113] cm
+0 0 m
+0 1.171 l
+0 1.508 -0.182 1.678 -0.467 1.678 c
+-0.753 1.678 -0.939 1.504 -0.939 1.171 c
+-0.939 0 l
+-1.217 0 l
+-1.217 1.901 l
+-0.939 1.901 l
+-0.939 1.693 l
+-0.804 1.848 -0.619 1.925 -0.406 1.925 c
+-0.201 1.925 -0.035 1.863 0.081 1.747 c
+0.216 1.616 0.278 1.438 0.278 1.218 c
+0.278 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 17.865 12.113] cm
+0 0 m
+0 0.24 l
+1.059 1.654 l
+0.058 1.654 l
+0.058 1.901 l
+1.379 1.901 l
+1.379 1.666 l
+0.317 0.248 l
+1.379 0.248 l
+1.379 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 22.567 12.991] cm
+0 0 m
+-0.534 0 l
+-0.82 0 -0.959 -0.116 -0.959 -0.336 c
+-0.959 -0.557 -0.823 -0.661 -0.522 -0.661 c
+-0.359 -0.661 -0.216 -0.649 -0.097 -0.534 c
+-0.031 -0.472 0 -0.364 0 -0.205 c
+0 0 l
+h
+0 -0.878 m
+0 -0.696 l
+-0.154 -0.85 -0.294 -0.901 -0.549 -0.901 c
+-0.811 -0.901 -0.966 -0.85 -1.086 -0.727 c
+-1.179 -0.634 -1.229 -0.491 -1.229 -0.341 c
+-1.229 -0.008 -0.997 0.208 -0.572 0.208 c
+0 0.208 l
+0 0.39 l
+0 0.668 -0.139 0.807 -0.487 0.807 c
+-0.73 0.807 -0.854 0.749 -0.966 0.591 c
+-1.155 0.765 l
+-0.986 0.985 -0.792 1.047 -0.483 1.047 c
+0.027 1.047 0.278 0.827 0.278 0.413 c
+0.278 -0.878 l
+0 -0.878 l
+f
+Q
+q
+[1 0 0 1 25.089 12.113] cm
+0 0 m
+0 0.213 l
+-0.135 0.058 -0.325 -0.023 -0.537 -0.023 c
+-0.742 -0.023 -0.912 0.039 -1.027 0.155 c
+-1.164 0.286 -1.221 0.468 -1.221 0.688 c
+-1.221 1.901 l
+-0.943 1.901 l
+-0.943 0.73 l
+-0.943 0.394 -0.765 0.225 -0.479 0.225 c
+-0.193 0.225 -0.003 0.398 -0.003 0.73 c
+-0.003 1.901 l
+0.275 1.901 l
+0.275 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 27.024 12.091] cm
+0 0 m
+-0.321 0 -0.572 0.073 -0.78 0.274 c
+-0.595 0.46 l
+-0.444 0.301 -0.24 0.239 -0.003 0.239 c
+0.309 0.239 0.503 0.352 0.503 0.575 c
+0.503 0.742 0.406 0.835 0.186 0.854 c
+-0.127 0.881 l
+-0.498 0.912 -0.695 1.078 -0.695 1.391 c
+-0.695 1.739 -0.402 1.948 0.004 1.948 c
+0.274 1.948 0.518 1.882 0.689 1.743 c
+0.507 1.562 l
+0.371 1.666 0.197 1.712 0 1.712 c
+-0.278 1.712 -0.425 1.592 -0.425 1.399 c
+-0.425 1.237 -0.332 1.14 -0.092 1.121 c
+0.213 1.094 l
+0.545 1.063 0.773 0.935 0.773 0.579 c
+0.773 0.213 0.46 0 0 0 c
+f
+Q
+q
+[1 0 0 1 2.956 6.0693] cm
+0 0 m
+-0.2744 0 l
+-0.8848 2.2021 l
+-1.4956 0 l
+-1.7695 0 l
+-2.4731 2.751 l
+-2.1602 2.751 l
+-1.623 0.5322 l
+-1.0161 2.751 l
+-0.7534 2.751 l
+-0.1465 0.5322 l
+0.3906 2.751 l
+0.7031 2.751 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 4.5039 7.9697] cm
+0 0 m
+0.27832 0 l
+0.27832 -1.9004 l
+0 -1.9004 l
+0 0 l
+h
+-0.0156 0.8545 m
+0.29788 0.8545 l
+0.29788 0.542 l
+-0.0156 0.542 l
+-0.0156 0.8545 l
+h
+f
+Q
+q
+[1 0 0 1 6.5166 6.0459] cm
+0 0 m
+-0.3203 0 -0.5718 0.0732 -0.7808 0.2734 c
+-0.5952 0.4599 l
+-0.4443 0.3007 -0.2393 0.2382 -0.0039 0.2382 c
+0.3101 0.2382 0.5029 0.3505 0.5029 0.5752 c
+0.5029 0.7412 0.4063 0.8349 0.1855 0.8535 c
+-0.1269 0.8798 l
+-0.4981 0.9111 -0.6958 1.0781 -0.6958 1.3906 c
+-0.6958 1.7382 -0.4014 1.9472 0.0044 1.9472 c
+0.2744 1.9472 0.5181 1.8818 0.688 1.7421 c
+0.5064 1.5605 l
+0.3711 1.665 0.1973 1.7119 0 1.7119 c
+-0.2778 1.7119 -0.4248 1.5918 -0.4248 1.3984 c
+-0.4248 1.2363 -0.332 1.1396 -0.0923 1.1201 c
+0.2129 1.0937 l
+0.5454 1.0615 0.773 0.9355 0.773 0.58 c
+0.773 0.2119 0.46 0 0 0 c
+f
+Q
+q
+[1 0 0 1 8.8076 6.0459] cm
+0 0 m
+-0.3208 0 -0.5718 0.0732 -0.7812 0.2734 c
+-0.5952 0.4599 l
+-0.4448 0.3007 -0.2397 0.2382 -0.0039 0.2382 c
+0.3091 0.2382 0.5024 0.3505 0.5024 0.5752 c
+0.5024 0.7412 0.4058 0.8349 0.1851 0.8535 c
+-0.1274 0.8798 l
+-0.499 0.9111 -0.6958 1.0781 -0.6958 1.3906 c
+-0.6958 1.7382 -0.4019 1.9472 0.0039 1.9472 c
+0.2739 1.9472 0.5176 1.8818 0.688 1.7421 c
+0.5059 1.5605 l
+0.3706 1.665 0.1973 1.7119 0 1.7119 c
+-0.2783 1.7119 -0.4253 1.5918 -0.4253 1.3984 c
+-0.4253 1.2363 -0.3325 1.1396 -0.0933 1.1201 c
+0.2124 1.0937 l
+0.5449 1.0615 0.773 0.9355 0.773 0.58 c
+0.773 0.2119 0.46 0 0 0 c
+f
+Q
+q
+[1 0 0 1 11.682 7.4716] cm
+0 0 m
+-0.073 0.1739 -0.244 0.2862 -0.445 0.2862 c
+-0.645 0.2862 -0.815 0.1739 -0.889 0 c
+-0.931 -0.1045 -0.939 -0.163 -0.947 -0.3173 c
+0.058 -0.3173 l
+0.05 -0.163 0.043 -0.1045 0 0 c
+-0.947 -0.5263 m
+-0.947 -0.9433 -0.749 -1.1826 -0.387 -1.1826 c
+-0.167 -1.1826 -0.038 -1.1171 0.112 -0.9658 c
+0.302 -1.1328 l
+0.108 -1.3252 -0.07 -1.4257 -0.394 -1.4257 c
+-0.896 -1.4257 -1.225 -1.125 -1.225 -0.4521 c
+-1.225 0.1621 -0.928 0.5215 -0.445 0.5215 c
+0.046 0.5215 0.336 0.1661 0.336 -0.3984 c
+0.336 -0.5263 l
+-0.947 -0.5263 l
+f
+Q
+q
+[1 0 0 1 14.262 6.0693] cm
+0 0 m
+0 1.1699 l
+0 1.5068 -0.182 1.6768 -0.467 1.6768 c
+-0.753 1.6768 -0.939 1.5029 -0.939 1.1699 c
+-0.939 0 l
+-1.218 0 l
+-1.218 1.9004 l
+-0.939 1.9004 l
+-0.939 1.6924 l
+-0.803 1.8467 -0.618 1.9238 -0.406 1.9238 c
+-0.201 1.9238 -0.034 1.8623 0.081 1.7471 c
+0.217 1.6143 0.278 1.4365 0.278 1.2168 c
+0.278 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 16.251 6.0459] cm
+0 0 m
+-0.321 0 -0.572 0.0732 -0.781 0.2734 c
+-0.595 0.4599 l
+-0.445 0.3007 -0.24 0.2382 -0.004 0.2382 c
+0.309 0.2382 0.503 0.3505 0.503 0.5752 c
+0.503 0.7412 0.406 0.8349 0.186 0.8535 c
+-0.127 0.8798 l
+-0.498 0.9111 -0.696 1.0781 -0.696 1.3906 c
+-0.696 1.7382 -0.402 1.9472 0.004 1.9472 c
+0.274 1.9472 0.518 1.8818 0.688 1.7421 c
+0.506 1.5605 l
+0.371 1.665 0.197 1.7119 0 1.7119 c
+-0.278 1.7119 -0.425 1.5918 -0.425 1.3984 c
+-0.425 1.2363 -0.332 1.1396 -0.092 1.1201 c
+0.212 1.0937 l
+0.545 1.0615 0.773 0.9355 0.773 0.58 c
+0.773 0.2119 0.46 0 0 0 c
+f
+Q
+q
+[1 0 0 1 18.742 6.0459] cm
+0 0 m
+-0.479 0 -0.842 0.3242 -0.842 0.9736 c
+-0.842 1.622 -0.479 1.9472 0 1.9472 c
+0.263 1.9472 0.429 1.8769 0.626 1.665 c
+0.437 1.4873 l
+0.294 1.6455 0.182 1.6992 0 1.6992 c
+-0.185 1.6992 -0.339 1.6269 -0.44 1.4834 c
+-0.529 1.3593 -0.564 1.2138 -0.564 0.9736 c
+-0.564 0.7343 -0.529 0.5859 -0.44 0.4628 c
+-0.339 0.3203 -0.185 0.247 0 0.247 c
+0.182 0.247 0.294 0.3046 0.437 0.4628 c
+0.626 0.2812 l
+0.429 0.0683 0.263 0 0 0 c
+f
+Q
+q
+[1 0 0 1 21.551 6.0693] cm
+0 0 m
+0 1.1738 l
+0 1.5068 -0.178 1.6768 -0.464 1.6768 c
+-0.75 1.6768 -0.94 1.5029 -0.94 1.1738 c
+-0.94 0 l
+-1.218 0 l
+-1.218 2.751 l
+-0.94 2.751 l
+-0.94 1.6924 l
+-0.8 1.8506 -0.619 1.9238 -0.406 1.9238 c
+0.023 1.9238 0.278 1.6494 0.278 1.2207 c
+0.278 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 24.02 6.9453] cm
+0 0 m
+-0.534 0 l
+-0.82 0 -0.959 -0.1153 -0.959 -0.335 c
+-0.959 -0.5557 -0.823 -0.6602 -0.522 -0.6602 c
+-0.359 -0.6602 -0.216 -0.6494 -0.097 -0.5332 c
+-0.031 -0.4707 0 -0.3633 0 -0.2041 c
+0 0 l
+h
+0 -0.876 m
+0 -0.6944 l
+-0.155 -0.8496 -0.294 -0.9004 -0.549 -0.9004 c
+-0.812 -0.9004 -0.966 -0.8496 -1.086 -0.7256 c
+-1.179 -0.6328 -1.229 -0.4903 -1.229 -0.3399 c
+-1.229 -0.0069 -0.998 0.209 -0.573 0.209 c
+0 0.209 l
+0 0.3906 l
+0 0.6689 -0.139 0.8076 -0.487 0.8076 c
+-0.731 0.8076 -0.854 0.75 -0.966 0.5918 c
+-1.156 0.7656 l
+-0.986 0.9863 -0.792 1.0478 -0.483 1.0478 c
+0.027 1.0478 0.278 0.8281 0.278 0.414 c
+0.278 -0.876 l
+0 -0.876 l
+f
+Q
+q
+[1 0 0 1 25.75 7.7461] cm
+0 0 m
+0 -1.6768 l
+-0.278 -1.6768 l
+-0.278 0 l
+-0.521 0 l
+-0.521 0.2119 l
+-0.278 0.2119 l
+-0.278 0.5712 l
+-0.278 0.8535 -0.12 1.082 0.204 1.082 c
+0.406 1.082 l
+0.406 0.8427 l
+0.255 0.8427 l
+0.078 0.8427 0 0.7382 0 0.5634 c
+0 0.2119 l
+0.406 0.2119 l
+0.406 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 27.592 6.0693] cm
+0 0 m
+-0.325 0 -0.487 0.2275 -0.487 0.5098 c
+-0.487 1.6768 l
+-0.727 1.6768 l
+-0.727 1.8887 l
+-0.487 1.8887 l
+-0.487 2.4844 l
+-0.209 2.4844 l
+-0.209 1.8887 l
+0.197 1.8887 l
+0.197 1.6768 l
+-0.209 1.6768 l
+-0.209 0.5176 l
+-0.209 0.3437 -0.128 0.2393 0.05 0.2393 c
+0.197 0.2393 l
+0.197 0 l
+0 0 l
+f
+Q
+q
+0 0.06 34.56 69.105 re
+W
+q
+[1 0 0 1 7.749 0.023403] cm
+0 0 m
+0 0.21189 l
+-0.1348 0.057606 -0.3247 -0.023403 -0.5371 -0.023403 c
+-0.7422 -0.023403 -0.9121 0.039104 -1.0273 0.1543 c
+-1.1631 0.28611 -1.2207 0.4678 -1.2207 0.6875 c
+-1.2207 1.9014 l
+-0.9424 1.9014 l
+-0.9424 0.7305 l
+-0.9424 0.3945 -0.7646 0.2236 -0.479 0.2236 c
+-0.1929 0.2236 -0.0039 0.3984 -0.0039 0.7305 c
+-0.0039 1.9014 l
+0.2744 1.9014 l
+0.2744 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 10.322 0.023403] cm
+0 0 m
+0 1.1709 l
+0 1.5078 -0.181 1.6777 -0.4673 1.6777 c
+-0.7534 1.6777 -0.939 1.5029 -0.939 1.1709 c
+-0.939 0 l
+-1.2173 0 l
+-1.2173 1.9014 l
+-0.939 1.9014 l
+-0.939 1.6924 l
+-0.8037 1.8477 -0.6182 1.9248 -0.4058 1.9248 c
+-0.201 1.9248 -0.035 1.8623 0.081 1.7471 c
+0.217 1.6152 0.278 1.4375 0.278 1.2178 c
+0.278 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 12.319 1.7011] cm
+0 0 m
+-0.413 0 -0.479 -0.3564 -0.479 -0.72751 c
+-0.479 -1.0986 -0.413 -1.4541 0 -1.4541 c
+0.413 -1.4541 0.475 -1.0986 0.475 -0.72751 c
+0.475 -0.3564 0.413 0 0 0 c
+0.479 -1.6777 m
+0.479 -1.4492 l
+0.325 -1.6504 0.147 -1.7011 -0.062 -1.7011 c
+-0.255 -1.7011 -0.425 -1.6357 -0.526 -1.5351 c
+-0.719 -1.3418 -0.757 -1.0254 -0.757 -0.72751 c
+-0.757 -0.4297 -0.719 -0.1123 -0.526 0.0811 c
+-0.425 0.1807 -0.255 0.2471 -0.062 0.2471 c
+0.147 0.2471 0.321 0.2012 0.475 0.003 c
+0.475 1.0743 l
+0.753 1.0743 l
+0.753 -1.6777 l
+0.479 -1.6777 l
+f
+Q
+q
+[1 0 0 1 17.264 0.023403] cm
+0 0 m
+-0.838 1.4648 l
+-1.419 0.7686 l
+-1.419 0 l
+-1.712 0 l
+-1.712 2.752 l
+-1.419 2.752 l
+-1.419 1.1709 l
+-0.135 2.752 l
+0.224 2.752 l
+-0.642 1.6885 l
+0.348 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 19.6 0.023403] cm
+0 0 m
+0 0.21189 l
+-0.135 0.057606 -0.324 -0.023403 -0.538 -0.023403 c
+-0.742 -0.023403 -0.912 0.039104 -1.028 0.1543 c
+-1.163 0.28611 -1.221 0.4678 -1.221 0.6875 c
+-1.221 1.9014 l
+-0.942 1.9014 l
+-0.942 0.7305 l
+-0.942 0.3945 -0.765 0.2236 -0.479 0.2236 c
+-0.193 0.2236 -0.004 0.3984 -0.004 0.7305 c
+-0.004 1.9014 l
+0.274 1.9014 l
+0.274 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 21.431 0.023403] cm
+0 0 m
+-0.333 0 -0.483 0.21581 -0.483 0.5068 c
+-0.483 2.752 l
+-0.206 2.752 l
+-0.206 0.5176 l
+-0.206 0.332 -0.144 0.2402 0.05 0.2402 c
+0.201 0.2402 l
+0.201 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 23.022 0.023403] cm
+0 0 m
+-0.325 0 -0.487 0.2285 -0.487 0.5098 c
+-0.487 1.6777 l
+-0.727 1.6777 l
+-0.727 1.8896 l
+-0.487 1.8896 l
+-0.487 2.4853 l
+-0.209 2.4853 l
+-0.209 1.8896 l
+0.197 1.8896 l
+0.197 1.6777 l
+-0.209 1.6777 l
+-0.209 0.5176 l
+-0.209 0.3437 -0.128 0.2402 0.05 0.2402 c
+0.197 0.2402 l
+0.197 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 25.359 0.023403] cm
+0 0 m
+0 0.21189 l
+-0.135 0.057606 -0.325 -0.023403 -0.537 -0.023403 c
+-0.742 -0.023403 -0.912 0.039104 -1.028 0.1543 c
+-1.163 0.28611 -1.221 0.4678 -1.221 0.6875 c
+-1.221 1.9014 l
+-0.942 1.9014 l
+-0.942 0.7305 l
+-0.942 0.3945 -0.765 0.2236 -0.479 0.2236 c
+-0.193 0.2236 -0.004 0.3984 -0.004 0.7305 c
+-0.004 1.9014 l
+0.275 1.9014 l
+0.275 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 27.777 1.5615] cm
+0 0 m
+-0.104 0.1045 -0.181 0.1396 -0.328 0.1396 c
+-0.607 0.1396 -0.784 -0.0811 -0.784 -0.3711 c
+-0.784 -1.5381 l
+-1.062 -1.5381 l
+-1.062 0.3633 l
+-0.784 0.3633 l
+-0.784 0.1318 l
+-0.68 0.29 -0.471 0.3857 -0.251 0.3857 c
+-0.069 0.3857 0.07 0.3437 0.205 0.209 c
+0 0 l
+f
+Q
+Q
+[0.4] sc
+q
+[1 0 0 1 30.641 62.981] cm
+0 0 m
+-16.953 0 l
+-11.114 5.837 l
+0 0 l
+f
+Q
+[0.2] sc
+q
+[1 0 0 1 6.8892 57.18] cm
+0 0 m
+0 8.255 l
+11.988 11.985 l
+0 0 l
+f
+Q
+[0.8] sc
+q
+[1 0 0 1 6.1851 48.27] cm
+0 0 m
+-5.8384 5.838 l
+0 16.951 l
+0 0 l
+f
+Q
+[0.6] sc
+q
+[1 0 0 1 11.987 41.472] cm
+0 0 m
+-8.2568 0 l
+-11.987 11.985 l
+0 0 l
+f
+Q
+[0.4] sc
+q
+[1 0 0 1 15.065 34.929] cm
+0 0 m
+-11.115 5.837 l
+5.838 5.837 l
+0 0 l
+f
+Q
+[0.302] sc
+q
+[1 0 0 1 15.709 34.583] cm
+0 0 m
+11.987 11.986 l
+11.987 3.73 l
+0 0 l
+f
+Q
+[0.698] sc
+q
+[1 0 0 1 28.401 38.527] cm
+0 0 m
+0 16.951 l
+5.838 11.113 l
+0 0 l
+f
+Q
+q
+0 0.06 34.56 69.105 re
+W
+[0.6] sc
+q
+[1 0 0 1 34.582 50.296] cm
+0 0 m
+-11.987 11.985 l
+-3.731 11.985 l
+0 0 l
+f
+Q
+Q
+Q
+showpage
+%%PageTrailer
+pdfEndPage
+%%Trailer
+end
+%%DocumentSuppliedResources:
+%%EOF
diff --git a/macros/latex/contrib/tudscr/logo/DDC-25.pdf b/macros/latex/contrib/tudscr/logo/DDC-25.pdf
new file mode 100644
index 0000000000..89dc42e674
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/DDC-25.pdf
Binary files differ
diff --git a/macros/latex/contrib/tudscr/logo/DDC-27.eps b/macros/latex/contrib/tudscr/logo/DDC-27.eps
new file mode 100644
index 0000000000..b4b8585044
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/DDC-27.eps
@@ -0,0 +1,2428 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%XpdfVersion: 3.03
+%%Creator: Adobe Illustrator CS4
+%%Title: DDC-27.eps
+%%LanguageLevel: 2
+%%DocumentSuppliedResources: (atend)
+%%BoundingBox: 0 0 144 52
+%%HiResBoundingBox: 0 0 143.667 51.307
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset xpdf 3.03 0
+%%Copyright: Copyright 1996-2011 Glyph & Cog, LLC
+/xpdf 75 dict def xpdf begin
+% PDF special state
+/pdfDictSize 15 def
+/pdfSetup {
+ /setpagedevice where {
+ pop 2 dict begin
+ /Policies 1 dict dup begin /PageSize 6 def end def
+ { /Duplex true def } if
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfSetupPaper {
+ 2 array astore
+ /setpagedevice where {
+ pop 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfStartPage {
+ pdfDictSize dict begin
+ /pdfFillCS [] def
+ /pdfFillXform {} def
+ /pdfStrokeCS [] def
+ /pdfStrokeXform {} def
+ /pdfFill [0] def
+ /pdfStroke [0] def
+ /pdfFillOP false def
+ /pdfStrokeOP false def
+ /pdfLastFill false def
+ /pdfLastStroke false def
+ /pdfTextMat [1 0 0 1 0 0] def
+ /pdfFontSize 0 def
+ /pdfCharSpacing 0 def
+ /pdfTextRender 0 def
+ /pdfTextRise 0 def
+ /pdfWordSpacing 0 def
+ /pdfHorizScaling 1 def
+ /pdfTextClipPath [] def
+} def
+/pdfEndPage { end } def
+% PDF color state
+/cs { /pdfFillXform exch def dup /pdfFillCS exch def
+ setcolorspace } def
+/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def
+ setcolorspace } def
+/sc { pdfLastFill not { pdfFillCS setcolorspace } if
+ dup /pdfFill exch def aload pop pdfFillXform setcolor
+ /pdfLastFill true def /pdfLastStroke false def } def
+/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if
+ dup /pdfStroke exch def aload pop pdfStrokeXform setcolor
+ /pdfLastStroke true def /pdfLastFill false def } def
+/op { /pdfFillOP exch def
+ pdfLastFill { pdfFillOP setoverprint } if } def
+/OP { /pdfStrokeOP exch def
+ pdfLastStroke { pdfStrokeOP setoverprint } if } def
+/fCol {
+ pdfLastFill not {
+ pdfFillCS setcolorspace
+ pdfFill aload pop pdfFillXform setcolor
+ pdfFillOP setoverprint
+ /pdfLastFill true def /pdfLastStroke false def
+ } if
+} def
+/sCol {
+ pdfLastStroke not {
+ pdfStrokeCS setcolorspace
+ pdfStroke aload pop pdfStrokeXform setcolor
+ pdfStrokeOP setoverprint
+ /pdfLastStroke true def /pdfLastFill false def
+ } if
+} def
+% build a font
+/pdfMakeFont {
+ 4 3 roll findfont
+ 4 2 roll matrix scale makefont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /Encoding exch def
+ currentdict
+ end
+ definefont pop
+} def
+/pdfMakeFont16 {
+ exch findfont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /WMode exch def
+ currentdict
+ end
+ definefont pop
+} def
+% graphics state operators
+/q { gsave pdfDictSize dict begin } def
+/Q {
+ end grestore
+ /pdfLastFill where {
+ pop
+ pdfLastFill {
+ pdfFillOP setoverprint
+ } {
+ pdfStrokeOP setoverprint
+ } ifelse
+ } if
+} def
+/cm { concat } def
+/d { setdash } def
+/i { setflat } def
+/j { setlinejoin } def
+/J { setlinecap } def
+/M { setmiterlimit } def
+/w { setlinewidth } def
+% path segment operators
+/m { moveto } def
+/l { lineto } def
+/c { curveto } def
+/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+ neg 0 rlineto closepath } def
+/h { closepath } def
+% path painting operators
+/S { sCol stroke } def
+/Sf { fCol stroke } def
+/f { fCol fill } def
+/f* { fCol eofill } def
+% clipping operators
+/W { clip newpath } def
+/W* { eoclip newpath } def
+/Ws { strokepath clip newpath } def
+% text state operators
+/Tc { /pdfCharSpacing exch def } def
+/Tf { dup /pdfFontSize exch def
+ dup pdfHorizScaling mul exch matrix scale
+ pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put
+ exch findfont exch makefont setfont } def
+/Tr { /pdfTextRender exch def } def
+/Ts { /pdfTextRise exch def } def
+/Tw { /pdfWordSpacing exch def } def
+/Tz { /pdfHorizScaling exch def } def
+% text positioning operators
+/Td { pdfTextMat transform moveto } def
+/Tm { /pdfTextMat exch def } def
+% text string operators
+/xyshow where {
+ pop
+ /xyshow2 {
+ dup length array
+ 0 2 2 index length 1 sub {
+ 2 index 1 index 2 copy get 3 1 roll 1 add get
+ pdfTextMat dtransform
+ 4 2 roll 2 copy 6 5 roll put 1 add 3 1 roll dup 4 2 roll put
+ } for
+ exch pop
+ xyshow
+ } def
+}{
+ /xyshow2 {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval show moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval show moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/cshow where {
+ pop
+ /xycp {
+ 0 3 2 roll
+ {
+ pop pop currentpoint 3 2 roll
+ 1 string dup 0 4 3 roll put false charpath moveto
+ 2 copy get 2 index 2 index 1 add get
+ pdfTextMat dtransform rmoveto
+ 2 add
+ } exch cshow
+ pop pop
+ } def
+}{
+ /xycp {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval false charpath moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval false charpath moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/Tj {
+ fCol
+ 0 pdfTextRise pdfTextMat dtransform rmoveto
+ currentpoint 4 2 roll
+ pdfTextRender 1 and 0 eq {
+ 2 copy xyshow2
+ } if
+ pdfTextRender 3 and dup 1 eq exch 2 eq or {
+ 3 index 3 index moveto
+ 2 copy
+ currentfont /FontType get 3 eq { fCol } { sCol } ifelse
+ xycp currentpoint stroke moveto
+ } if
+ pdfTextRender 4 and 0 ne {
+ 4 2 roll moveto xycp
+ /pdfTextClipPath [ pdfTextClipPath aload pop
+ {/moveto cvx}
+ {/lineto cvx}
+ {/curveto cvx}
+ {/closepath cvx}
+ pathforall ] def
+ currentpoint newpath moveto
+ } {
+ pop pop pop pop
+ } ifelse
+ 0 pdfTextRise neg pdfTextMat dtransform rmoveto
+} def
+/TJm { 0.001 mul pdfFontSize mul pdfHorizScaling mul neg 0
+ pdfTextMat dtransform rmoveto } def
+/TJmV { 0.001 mul pdfFontSize mul neg 0 exch
+ pdfTextMat dtransform rmoveto } def
+/Tclip { pdfTextClipPath cvx exec clip newpath
+ /pdfTextClipPath [] def } def
+% Level 2/3 image operators
+/pdfImBuf 100 string def
+/pdfImStr {
+ 2 copy exch length lt {
+ 2 copy get exch 1 add exch
+ } {
+ ()
+ } ifelse
+} def
+/skipEOD {
+ { currentfile pdfImBuf readline
+ not { pop exit } if
+ (%-EOD-) eq { exit } if } loop
+} def
+/pdfIm { image skipEOD } def
+/pdfImM { fCol imagemask skipEOD } def
+/pr { 2 index 2 index 3 2 roll putinterval 4 add } def
+/pdfImClip {
+ gsave
+ 0 2 4 index length 1 sub {
+ dup 4 index exch 2 copy
+ get 5 index div put
+ 1 add 3 index exch 2 copy
+ get 3 index div put
+ } for
+ pop pop rectclip
+} def
+/pdfImClipEnd { grestore } def
+% shading operators
+/colordelta {
+ false 0 1 3 index length 1 sub {
+ dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt {
+ pop true
+ } if
+ } for
+ exch pop exch pop
+} def
+/funcCol { func n array astore } def
+/funcSH {
+ dup 0 eq {
+ true
+ } {
+ dup 6 eq {
+ false
+ } {
+ 4 index 4 index funcCol dup
+ 6 index 4 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 5 index 5 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 6 index 8 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ colordelta or or or
+ } ifelse
+ } ifelse
+ {
+ 1 add
+ 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch
+ 6 index 6 index 4 index 4 index 4 index funcSH
+ 2 index 6 index 6 index 4 index 4 index funcSH
+ 6 index 2 index 4 index 6 index 4 index funcSH
+ 5 3 roll 3 2 roll funcSH pop pop
+ } {
+ pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul
+ funcCol sc
+ dup 4 index exch mat transform m
+ 3 index 3 index mat transform l
+ 1 index 3 index mat transform l
+ mat transform l pop pop h f*
+ } ifelse
+} def
+/axialCol {
+ dup 0 lt {
+ pop t0
+ } {
+ dup 1 gt {
+ pop t1
+ } {
+ dt mul t0 add
+ } ifelse
+ } ifelse
+ func n array astore
+} def
+/axialSH {
+ dup 2 lt {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index axialCol 2 index axialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index axialSH
+ exch 3 2 roll axialSH
+ } {
+ pop 2 copy add 0.5 mul
+ axialCol sc
+ exch dup dx mul x0 add exch dy mul y0 add
+ 3 2 roll dup dx mul x0 add exch dy mul y0 add
+ dx abs dy abs ge {
+ 2 copy yMin sub dy mul dx div add yMin m
+ yMax sub dy mul dx div add yMax l
+ 2 copy yMax sub dy mul dx div add yMax l
+ yMin sub dy mul dx div add yMin l
+ h f*
+ } {
+ exch 2 copy xMin sub dx mul dy div add xMin exch m
+ xMax sub dx mul dy div add xMax exch l
+ exch 2 copy xMax sub dx mul dy div add xMax exch l
+ xMin sub dx mul dy div add xMin exch l
+ h f*
+ } ifelse
+ } ifelse
+} def
+/radialCol {
+ dup t0 lt {
+ pop t0
+ } {
+ dup t1 gt {
+ pop t1
+ } if
+ } ifelse
+ func n array astore
+} def
+/radialSH {
+ dup 0 eq {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index dt mul t0 add radialCol
+ 2 index dt mul t0 add radialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index radialSH
+ exch 3 2 roll radialSH
+ } {
+ pop 2 copy add 0.5 mul dt mul t0 add
+ radialCol sc
+ encl {
+ exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 0 360 arc h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 360 0 arcn h f
+ } {
+ 2 copy
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arcn
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arcn h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arc
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arc h f
+ } ifelse
+ } ifelse
+} def
+end
+%%EndResource
+%%EndProlog
+%%BeginSetup
+xpdf begin
+%%EndSetup
+pdfStartPage
+[] 0 d
+1 i
+0 j
+0 J
+10 M
+1 w
+/DeviceGray {} cs
+[0] sc
+/DeviceGray {} CS
+[0] SC
+false op
+false OP
+{} settransfer
+0 0 143.667 51.307 re
+W
+q
+q
+1 i
+0.059998 0.06 143.607 51.247 re
+W
+[/Separation (HKS 41 K) /DeviceRGB
+/xpdfSamples0 [
+1
+1
+1
+0.984314
+0.984314
+0.988235
+0.980392
+0.980392
+0.988235
+0.964706
+0.968627
+0.980392
+0.960784
+0.960784
+0.976471
+0.94902
+0.952941
+0.964706
+0.945098
+0.94902
+0.964706
+0.937255
+0.941176
+0.956863
+0.933333
+0.933333
+0.952941
+0.92549
+0.929412
+0.94902
+0.921569
+0.92549
+0.94902
+0.913725
+0.917647
+0.941176
+0.909804
+0.913725
+0.941176
+0.901961
+0.905882
+0.937255
+0.898039
+0.901961
+0.933333
+0.890196
+0.894118
+0.92549
+0.886275
+0.894118
+0.92549
+0.878431
+0.886275
+0.917647
+0.87451
+0.882353
+0.917647
+0.870588
+0.878431
+0.913725
+0.866667
+0.87451
+0.909804
+0.858824
+0.866667
+0.905882
+0.854902
+0.866667
+0.905882
+0.847059
+0.858824
+0.901961
+0.843137
+0.854902
+0.898039
+0.839216
+0.847059
+0.890196
+0.835294
+0.847059
+0.890196
+0.827451
+0.839216
+0.886275
+0.823529
+0.835294
+0.882353
+0.815686
+0.831373
+0.882353
+0.811765
+0.827451
+0.878431
+0.807843
+0.819608
+0.87451
+0.803922
+0.819608
+0.87451
+0.796078
+0.811765
+0.870588
+0.792157
+0.807843
+0.866667
+0.788235
+0.803922
+0.858824
+0.784314
+0.8
+0.858824
+0.776471
+0.796078
+0.854902
+0.772549
+0.792157
+0.854902
+0.768627
+0.788235
+0.85098
+0.764706
+0.784314
+0.847059
+0.756863
+0.776471
+0.843137
+0.756863
+0.776471
+0.843137
+0.74902
+0.772549
+0.839216
+0.745098
+0.768627
+0.839216
+0.741176
+0.760784
+0.831373
+0.737255
+0.760784
+0.831373
+0.729412
+0.752941
+0.823529
+0.729412
+0.74902
+0.823529
+0.721569
+0.745098
+0.819608
+0.717647
+0.741176
+0.819608
+0.713725
+0.737255
+0.815686
+0.709804
+0.733333
+0.811765
+0.701961
+0.729412
+0.807843
+0.701961
+0.72549
+0.807843
+0.694118
+0.721569
+0.8
+0.690196
+0.717647
+0.8
+0.686275
+0.713725
+0.796078
+0.682353
+0.709804
+0.796078
+0.678431
+0.705882
+0.792157
+0.67451
+0.701961
+0.792157
+0.666667
+0.698039
+0.784314
+0.666667
+0.694118
+0.784314
+0.658824
+0.690196
+0.780392
+0.654902
+0.686275
+0.780392
+0.65098
+0.682353
+0.772549
+0.647059
+0.682353
+0.772549
+0.643137
+0.67451
+0.768627
+0.639216
+0.670588
+0.768627
+0.635294
+0.670588
+0.764706
+0.631373
+0.666667
+0.760784
+0.623529
+0.658824
+0.756863
+0.623529
+0.658824
+0.756863
+0.615686
+0.654902
+0.752941
+0.615686
+0.65098
+0.752941
+0.607843
+0.643137
+0.745098
+0.603922
+0.643137
+0.745098
+0.6
+0.639216
+0.741176
+0.596078
+0.635294
+0.741176
+0.592157
+0.631373
+0.737255
+0.588235
+0.627451
+0.737255
+0.584314
+0.623529
+0.733333
+0.580392
+0.619608
+0.729412
+0.576471
+0.619608
+0.72549
+0.572549
+0.615686
+0.72549
+0.568627
+0.607843
+0.717647
+0.564706
+0.607843
+0.717647
+0.560784
+0.603922
+0.713725
+0.556863
+0.6
+0.713725
+0.552941
+0.596078
+0.709804
+0.54902
+0.596078
+0.709804
+0.545098
+0.588235
+0.705882
+0.541176
+0.588235
+0.701961
+0.537255
+0.584314
+0.701961
+0.533333
+0.580392
+0.698039
+0.529412
+0.576471
+0.694118
+0.52549
+0.576471
+0.694118
+0.521569
+0.568627
+0.690196
+0.517647
+0.568627
+0.686275
+0.513725
+0.560784
+0.682353
+0.509804
+0.560784
+0.682353
+0.505882
+0.556863
+0.678431
+0.501961
+0.552941
+0.678431
+0.498039
+0.54902
+0.67451
+0.494118
+0.54902
+0.67451
+0.490196
+0.541176
+0.666667
+0.490196
+0.541176
+0.666667
+0.482353
+0.537255
+0.662745
+0.482353
+0.533333
+0.662745
+0.478431
+0.529412
+0.658824
+0.47451
+0.529412
+0.658824
+0.470588
+0.52549
+0.654902
+0.466667
+0.521569
+0.654902
+0.462745
+0.517647
+0.65098
+0.458824
+0.517647
+0.65098
+0.454902
+0.509804
+0.643137
+0.454902
+0.509804
+0.643137
+0.447059
+0.505882
+0.639216
+0.447059
+0.501961
+0.639216
+0.443137
+0.498039
+0.635294
+0.439216
+0.498039
+0.635294
+0.435294
+0.494118
+0.631373
+0.431373
+0.490196
+0.631373
+0.427451
+0.490196
+0.627451
+0.423529
+0.486275
+0.627451
+0.419608
+0.482353
+0.619608
+0.419608
+0.478431
+0.619608
+0.411765
+0.478431
+0.615686
+0.407843
+0.47451
+0.615686
+0.403922
+0.470588
+0.611765
+0.4
+0.470588
+0.611765
+0.396078
+0.466667
+0.607843
+0.396078
+0.462745
+0.607843
+0.392157
+0.458824
+0.603922
+0.388235
+0.458824
+0.603922
+0.384314
+0.45098
+0.596078
+0.380392
+0.45098
+0.596078
+0.376471
+0.447059
+0.592157
+0.376471
+0.447059
+0.592157
+0.372549
+0.439216
+0.588235
+0.368627
+0.439216
+0.588235
+0.364706
+0.435294
+0.584314
+0.360784
+0.435294
+0.584314
+0.356863
+0.431373
+0.580392
+0.356863
+0.427451
+0.580392
+0.352941
+0.423529
+0.572549
+0.34902
+0.423529
+0.572549
+0.345098
+0.419608
+0.572549
+0.341176
+0.419608
+0.568627
+0.337255
+0.415686
+0.564706
+0.337255
+0.411765
+0.564706
+0.333333
+0.407843
+0.560784
+0.329412
+0.407843
+0.560784
+0.32549
+0.403922
+0.556863
+0.321569
+0.403922
+0.556863
+0.321569
+0.4
+0.552941
+0.317647
+0.396078
+0.552941
+0.313725
+0.392157
+0.54902
+0.309804
+0.392157
+0.54902
+0.305882
+0.388235
+0.545098
+0.301961
+0.388235
+0.545098
+0.298039
+0.384314
+0.541176
+0.298039
+0.380392
+0.541176
+0.294118
+0.376471
+0.537255
+0.290196
+0.376471
+0.537255
+0.286275
+0.372549
+0.529412
+0.286275
+0.372549
+0.529412
+0.282353
+0.368627
+0.529412
+0.278431
+0.368627
+0.52549
+0.27451
+0.364706
+0.521569
+0.270588
+0.360784
+0.521569
+0.266667
+0.360784
+0.521569
+0.266667
+0.356863
+0.517647
+0.262745
+0.352941
+0.513725
+0.258824
+0.352941
+0.513725
+0.254902
+0.34902
+0.509804
+0.25098
+0.34902
+0.509804
+0.247059
+0.345098
+0.505882
+0.247059
+0.341176
+0.505882
+0.243137
+0.341176
+0.501961
+0.239216
+0.337255
+0.501961
+0.235294
+0.337255
+0.498039
+0.231373
+0.333333
+0.498039
+0.231373
+0.329412
+0.494118
+0.227451
+0.329412
+0.494118
+0.223529
+0.32549
+0.490196
+0.219608
+0.32549
+0.490196
+0.215686
+0.321569
+0.486275
+0.211765
+0.321569
+0.486275
+0.207843
+0.317647
+0.482353
+0.207843
+0.313725
+0.482353
+0.203922
+0.313725
+0.482353
+0.2
+0.309804
+0.478431
+0.196078
+0.309804
+0.478431
+0.192157
+0.305882
+0.478431
+0.188235
+0.305882
+0.470588
+0.188235
+0.301961
+0.470588
+0.184314
+0.301961
+0.470588
+0.180392
+0.298039
+0.466667
+0.176471
+0.294118
+0.466667
+0.172549
+0.294118
+0.462745
+0.168627
+0.290196
+0.462745
+0.164706
+0.290196
+0.462745
+0.160784
+0.286275
+0.458824
+0.156863
+0.286275
+0.458824
+0.152941
+0.282353
+0.454902
+0.152941
+0.282353
+0.45098
+0.145098
+0.278431
+0.45098
+0.145098
+0.278431
+0.45098
+0.141176
+0.27451
+0.447059
+0.137255
+0.270588
+0.447059
+0.133333
+0.270588
+0.443137
+0.129412
+0.270588
+0.443137
+0.12549
+0.266667
+0.439216
+0.121569
+0.266667
+0.439216
+0.117647
+0.262745
+0.435294
+0.113725
+0.258824
+0.435294
+0.105882
+0.258824
+0.431373
+0.105882
+0.254902
+0.431373
+0.098039
+0.254902
+0.427451
+0.094118
+0.25098
+0.427451
+0.090196
+0.25098
+0.427451
+0.086275
+0.247059
+0.423529
+0.078431
+0.247059
+0.423529
+0.07451
+0.247059
+0.423529
+0.070588
+0.243137
+0.419608
+0.062745
+0.239216
+0.415686
+0.058824
+0.239216
+0.415686
+0.05098
+0.239216
+0.415686
+0.043137
+0.235294
+0.411765
+0.039216
+0.231373
+0.411765
+0.031373
+0.231373
+0.407843
+0.023529
+0.227451
+0.407843
+0.019608
+0.227451
+0.403922
+0.007843
+0.227451
+0.403922
+0.003922
+0.223529
+0.4
+0
+0.219608
+0.4
+0
+0.219608
+0.396078
+0
+0.219608
+0.396078
+0
+0.215686
+0.396078
+0
+0.211765
+0.392157
+0
+0.211765
+0.392157
+0
+0.211765
+0.392157
+0
+0.207843
+0.388235
+0
+0.207843
+0.388235
+0
+0.203922
+0.384314
+0
+0.203922
+0.384314
+0
+0.2
+0.380392
+0
+0.2
+0.380392
+0
+0.196078
+0.380392
+0
+0.196078
+0.376471
+0
+0.192157
+0.376471
+0
+0.192157
+0.376471
+0
+0.188235
+0.372549
+0
+0.184314
+0.368627
+] def
+{ 2 array 1 array 3 2 roll
+0 sub 254 mul 0 add
+dup 0 lt { pop 0 } { dup 254 gt { pop 254 } if } ifelse
+dup floor cvi exch dup ceiling cvi exch 2 index sub
+3 index 0 3 2 roll put
+3 index 1 3 2 roll put
+2 index 0 3 2 roll put
+xpdfSamples0
+2 index 0 get
+3 mul 0 add get
+xpdfSamples0
+3 index 1 get
+3 mul 0 add get
+2 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+xpdfSamples0
+3 index 0 get
+3 mul 1 add get
+xpdfSamples0
+4 index 1 get
+3 mul 1 add get
+3 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+xpdfSamples0
+4 index 0 get
+3 mul 2 add get
+xpdfSamples0
+5 index 1 get
+3 mul 2 add get
+4 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+5 3 roll pop pop }
+] {} cs
+[1] sc
+[1] sc
+false op
+false OP
+q
+[1 0 0 1 5.9912 38.533] cm
+0 0 m
+-0.4922 0.549 -1.1631 0.801 -2.0098 0.801 c
+-4.1963 0.801 l
+-4.1963 -7.828 l
+-2.0098 -7.828 l
+-1.1631 -7.828 -0.4922 -7.577 0 -7.028 c
+0.624 -6.345 0.6328 -5.061 0.6328 -3.428 c
+0.6328 -1.8 0.624 -0.679 0 0 c
+1.2373 -8.326 m
+0.4932 -9.079 -0.5947 -9.442 -1.8242 -9.442 c
+-5.9912 -9.442 l
+-5.9912 2.414 l
+-1.8242 2.414 l
+-0.5947 2.414 0.4932 2.047 1.2373 1.298 c
+2.5215 0.015 2.4375 -1.716 2.4375 -3.428 c
+2.4375 -5.145 2.5215 -7.042 1.2373 -8.326 c
+f
+Q
+Q
+[/Separation (HKS 41 K) /DeviceRGB
+/xpdfSamples1 [
+1
+1
+1
+0.984314
+0.984314
+0.988235
+0.980392
+0.980392
+0.988235
+0.964706
+0.968627
+0.980392
+0.960784
+0.960784
+0.976471
+0.94902
+0.952941
+0.964706
+0.945098
+0.94902
+0.964706
+0.937255
+0.941176
+0.956863
+0.933333
+0.933333
+0.952941
+0.92549
+0.929412
+0.94902
+0.921569
+0.92549
+0.94902
+0.913725
+0.917647
+0.941176
+0.909804
+0.913725
+0.941176
+0.901961
+0.905882
+0.937255
+0.898039
+0.901961
+0.933333
+0.890196
+0.894118
+0.92549
+0.886275
+0.894118
+0.92549
+0.878431
+0.886275
+0.917647
+0.87451
+0.882353
+0.917647
+0.870588
+0.878431
+0.913725
+0.866667
+0.87451
+0.909804
+0.858824
+0.866667
+0.905882
+0.854902
+0.866667
+0.905882
+0.847059
+0.858824
+0.901961
+0.843137
+0.854902
+0.898039
+0.839216
+0.847059
+0.890196
+0.835294
+0.847059
+0.890196
+0.827451
+0.839216
+0.886275
+0.823529
+0.835294
+0.882353
+0.815686
+0.831373
+0.882353
+0.811765
+0.827451
+0.878431
+0.807843
+0.819608
+0.87451
+0.803922
+0.819608
+0.87451
+0.796078
+0.811765
+0.870588
+0.792157
+0.807843
+0.866667
+0.788235
+0.803922
+0.858824
+0.784314
+0.8
+0.858824
+0.776471
+0.796078
+0.854902
+0.772549
+0.792157
+0.854902
+0.768627
+0.788235
+0.85098
+0.764706
+0.784314
+0.847059
+0.756863
+0.776471
+0.843137
+0.756863
+0.776471
+0.843137
+0.74902
+0.772549
+0.839216
+0.745098
+0.768627
+0.839216
+0.741176
+0.760784
+0.831373
+0.737255
+0.760784
+0.831373
+0.729412
+0.752941
+0.823529
+0.729412
+0.74902
+0.823529
+0.721569
+0.745098
+0.819608
+0.717647
+0.741176
+0.819608
+0.713725
+0.737255
+0.815686
+0.709804
+0.733333
+0.811765
+0.701961
+0.729412
+0.807843
+0.701961
+0.72549
+0.807843
+0.694118
+0.721569
+0.8
+0.690196
+0.717647
+0.8
+0.686275
+0.713725
+0.796078
+0.682353
+0.709804
+0.796078
+0.678431
+0.705882
+0.792157
+0.67451
+0.701961
+0.792157
+0.666667
+0.698039
+0.784314
+0.666667
+0.694118
+0.784314
+0.658824
+0.690196
+0.780392
+0.654902
+0.686275
+0.780392
+0.65098
+0.682353
+0.772549
+0.647059
+0.682353
+0.772549
+0.643137
+0.67451
+0.768627
+0.639216
+0.670588
+0.768627
+0.635294
+0.670588
+0.764706
+0.631373
+0.666667
+0.760784
+0.623529
+0.658824
+0.756863
+0.623529
+0.658824
+0.756863
+0.615686
+0.654902
+0.752941
+0.615686
+0.65098
+0.752941
+0.607843
+0.643137
+0.745098
+0.603922
+0.643137
+0.745098
+0.6
+0.639216
+0.741176
+0.596078
+0.635294
+0.741176
+0.592157
+0.631373
+0.737255
+0.588235
+0.627451
+0.737255
+0.584314
+0.623529
+0.733333
+0.580392
+0.619608
+0.729412
+0.576471
+0.619608
+0.72549
+0.572549
+0.615686
+0.72549
+0.568627
+0.607843
+0.717647
+0.564706
+0.607843
+0.717647
+0.560784
+0.603922
+0.713725
+0.556863
+0.6
+0.713725
+0.552941
+0.596078
+0.709804
+0.54902
+0.596078
+0.709804
+0.545098
+0.588235
+0.705882
+0.541176
+0.588235
+0.701961
+0.537255
+0.584314
+0.701961
+0.533333
+0.580392
+0.698039
+0.529412
+0.576471
+0.694118
+0.52549
+0.576471
+0.694118
+0.521569
+0.568627
+0.690196
+0.517647
+0.568627
+0.686275
+0.513725
+0.560784
+0.682353
+0.509804
+0.560784
+0.682353
+0.505882
+0.556863
+0.678431
+0.501961
+0.552941
+0.678431
+0.498039
+0.54902
+0.67451
+0.494118
+0.54902
+0.67451
+0.490196
+0.541176
+0.666667
+0.490196
+0.541176
+0.666667
+0.482353
+0.537255
+0.662745
+0.482353
+0.533333
+0.662745
+0.478431
+0.529412
+0.658824
+0.47451
+0.529412
+0.658824
+0.470588
+0.52549
+0.654902
+0.466667
+0.521569
+0.654902
+0.462745
+0.517647
+0.65098
+0.458824
+0.517647
+0.65098
+0.454902
+0.509804
+0.643137
+0.454902
+0.509804
+0.643137
+0.447059
+0.505882
+0.639216
+0.447059
+0.501961
+0.639216
+0.443137
+0.498039
+0.635294
+0.439216
+0.498039
+0.635294
+0.435294
+0.494118
+0.631373
+0.431373
+0.490196
+0.631373
+0.427451
+0.490196
+0.627451
+0.423529
+0.486275
+0.627451
+0.419608
+0.482353
+0.619608
+0.419608
+0.478431
+0.619608
+0.411765
+0.478431
+0.615686
+0.407843
+0.47451
+0.615686
+0.403922
+0.470588
+0.611765
+0.4
+0.470588
+0.611765
+0.396078
+0.466667
+0.607843
+0.396078
+0.462745
+0.607843
+0.392157
+0.458824
+0.603922
+0.388235
+0.458824
+0.603922
+0.384314
+0.45098
+0.596078
+0.380392
+0.45098
+0.596078
+0.376471
+0.447059
+0.592157
+0.376471
+0.447059
+0.592157
+0.372549
+0.439216
+0.588235
+0.368627
+0.439216
+0.588235
+0.364706
+0.435294
+0.584314
+0.360784
+0.435294
+0.584314
+0.356863
+0.431373
+0.580392
+0.356863
+0.427451
+0.580392
+0.352941
+0.423529
+0.572549
+0.34902
+0.423529
+0.572549
+0.345098
+0.419608
+0.572549
+0.341176
+0.419608
+0.568627
+0.337255
+0.415686
+0.564706
+0.337255
+0.411765
+0.564706
+0.333333
+0.407843
+0.560784
+0.329412
+0.407843
+0.560784
+0.32549
+0.403922
+0.556863
+0.321569
+0.403922
+0.556863
+0.321569
+0.4
+0.552941
+0.317647
+0.396078
+0.552941
+0.313725
+0.392157
+0.54902
+0.309804
+0.392157
+0.54902
+0.305882
+0.388235
+0.545098
+0.301961
+0.388235
+0.545098
+0.298039
+0.384314
+0.541176
+0.298039
+0.380392
+0.541176
+0.294118
+0.376471
+0.537255
+0.290196
+0.376471
+0.537255
+0.286275
+0.372549
+0.529412
+0.286275
+0.372549
+0.529412
+0.282353
+0.368627
+0.529412
+0.278431
+0.368627
+0.52549
+0.27451
+0.364706
+0.521569
+0.270588
+0.360784
+0.521569
+0.266667
+0.360784
+0.521569
+0.266667
+0.356863
+0.517647
+0.262745
+0.352941
+0.513725
+0.258824
+0.352941
+0.513725
+0.254902
+0.34902
+0.509804
+0.25098
+0.34902
+0.509804
+0.247059
+0.345098
+0.505882
+0.247059
+0.341176
+0.505882
+0.243137
+0.341176
+0.501961
+0.239216
+0.337255
+0.501961
+0.235294
+0.337255
+0.498039
+0.231373
+0.333333
+0.498039
+0.231373
+0.329412
+0.494118
+0.227451
+0.329412
+0.494118
+0.223529
+0.32549
+0.490196
+0.219608
+0.32549
+0.490196
+0.215686
+0.321569
+0.486275
+0.211765
+0.321569
+0.486275
+0.207843
+0.317647
+0.482353
+0.207843
+0.313725
+0.482353
+0.203922
+0.313725
+0.482353
+0.2
+0.309804
+0.478431
+0.196078
+0.309804
+0.478431
+0.192157
+0.305882
+0.478431
+0.188235
+0.305882
+0.470588
+0.188235
+0.301961
+0.470588
+0.184314
+0.301961
+0.470588
+0.180392
+0.298039
+0.466667
+0.176471
+0.294118
+0.466667
+0.172549
+0.294118
+0.462745
+0.168627
+0.290196
+0.462745
+0.164706
+0.290196
+0.462745
+0.160784
+0.286275
+0.458824
+0.156863
+0.286275
+0.458824
+0.152941
+0.282353
+0.454902
+0.152941
+0.282353
+0.45098
+0.145098
+0.278431
+0.45098
+0.145098
+0.278431
+0.45098
+0.141176
+0.27451
+0.447059
+0.137255
+0.270588
+0.447059
+0.133333
+0.270588
+0.443137
+0.129412
+0.270588
+0.443137
+0.12549
+0.266667
+0.439216
+0.121569
+0.266667
+0.439216
+0.117647
+0.262745
+0.435294
+0.113725
+0.258824
+0.435294
+0.105882
+0.258824
+0.431373
+0.105882
+0.254902
+0.431373
+0.098039
+0.254902
+0.427451
+0.094118
+0.25098
+0.427451
+0.090196
+0.25098
+0.427451
+0.086275
+0.247059
+0.423529
+0.078431
+0.247059
+0.423529
+0.07451
+0.247059
+0.423529
+0.070588
+0.243137
+0.419608
+0.062745
+0.239216
+0.415686
+0.058824
+0.239216
+0.415686
+0.05098
+0.239216
+0.415686
+0.043137
+0.235294
+0.411765
+0.039216
+0.231373
+0.411765
+0.031373
+0.231373
+0.407843
+0.023529
+0.227451
+0.407843
+0.019608
+0.227451
+0.403922
+0.007843
+0.227451
+0.403922
+0.003922
+0.223529
+0.4
+0
+0.219608
+0.4
+0
+0.219608
+0.396078
+0
+0.219608
+0.396078
+0
+0.215686
+0.396078
+0
+0.211765
+0.392157
+0
+0.211765
+0.392157
+0
+0.211765
+0.392157
+0
+0.207843
+0.388235
+0
+0.207843
+0.388235
+0
+0.203922
+0.384314
+0
+0.203922
+0.384314
+0
+0.2
+0.380392
+0
+0.2
+0.380392
+0
+0.196078
+0.380392
+0
+0.196078
+0.376471
+0
+0.192157
+0.376471
+0
+0.192157
+0.376471
+0
+0.188235
+0.372549
+0
+0.184314
+0.368627
+] def
+{ 2 array 1 array 3 2 roll
+0 sub 254 mul 0 add
+dup 0 lt { pop 0 } { dup 254 gt { pop 254 } if } ifelse
+dup floor cvi exch dup ceiling cvi exch 2 index sub
+3 index 0 3 2 roll put
+3 index 1 3 2 roll put
+2 index 0 3 2 roll put
+xpdfSamples1
+2 index 0 get
+3 mul 0 add get
+xpdfSamples1
+3 index 1 get
+3 mul 0 add get
+2 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+xpdfSamples1
+3 index 0 get
+3 mul 1 add get
+xpdfSamples1
+4 index 1 get
+3 mul 1 add get
+3 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+xpdfSamples1
+4 index 0 get
+3 mul 2 add get
+xpdfSamples1
+5 index 1 get
+3 mul 2 add get
+4 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+5 3 roll pop pop }
+] {} cs
+[1] sc
+[1] sc
+false op
+false OP
+1 i
+q
+[1 0 0 1 17.221 39.334] cm
+0 0 m
+-2.67 0 l
+-2.67 -3.717 l
+0 -3.717 l
+1.2 -3.717 2.019 -3.033 2.019 -1.865 c
+2.019 -0.698 1.2 0 0 0 c
+2.084 -10.243 m
+-0.419 -5.247 l
+-2.67 -5.247 l
+-2.67 -10.243 l
+-4.466 -10.243 l
+-4.466 1.613 l
+0.13 1.613 l
+2.381 1.613 3.814 0.167 3.814 -1.852 c
+3.814 -3.55 2.781 -4.633 1.451 -4.996 c
+4.176 -10.243 l
+2.084 -10.243 l
+f
+Q
+q
+[1 0 0 1 25.331 29.091] cm
+0 0 m
+0 11.856 l
+7.572 11.856 l
+7.572 10.243 l
+1.796 10.243 l
+1.796 6.777 l
+6.727 6.777 l
+6.727 5.182 l
+1.796 5.182 l
+1.796 1.614 l
+7.572 1.614 l
+7.572 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 40.179 28.988] cm
+0 0 m
+-1.777 0 -3.06 0.419 -4.196 1.568 c
+-2.996 2.749 l
+-2.131 1.885 -1.182 1.619 0.037 1.619 c
+1.581 1.619 2.484 2.284 2.484 3.434 c
+2.484 3.949 2.335 4.382 2.019 4.661 c
+1.721 4.949 1.423 5.066 0.716 5.164 c
+-0.679 5.363 l
+-1.647 5.498 -2.409 5.829 -2.93 6.317 c
+-3.508 6.861 -3.795 7.61 -3.795 8.582 c
+-3.795 10.644 -2.298 12.058 0.167 12.058 c
+1.739 12.058 2.828 11.662 3.852 10.708 c
+2.698 9.578 l
+1.973 10.28 1.116 10.494 0.121 10.494 c
+-1.273 10.494 -2.047 9.694 -2.047 8.643 c
+-2.047 8.215 -1.907 7.834 -1.6 7.545 c
+-1.293 7.28 -0.818 7.08 -0.261 6.996 c
+1.088 6.796 l
+2.186 6.629 2.8 6.363 3.303 5.912 c
+3.953 5.35 4.261 4.498 4.261 3.484 c
+4.261 1.303 2.484 0 0 0 c
+f
+Q
+q
+[1 0 0 1 54.524 38.533] cm
+0 0 m
+-0.502 0.549 -1.171 0.801 -2.018 0.801 c
+-4.204 0.801 l
+-4.204 -7.828 l
+-2.018 -7.828 l
+-1.171 -7.828 -0.502 -7.577 0 -7.028 c
+0.615 -6.345 0.633 -5.061 0.633 -3.428 c
+0.633 -1.8 0.615 -0.679 0 0 c
+1.229 -8.326 m
+0.485 -9.079 -0.604 -9.442 -1.832 -9.442 c
+-6 -9.442 l
+-6 2.414 l
+-1.832 2.414 l
+-0.604 2.414 0.485 2.047 1.229 1.298 c
+2.513 0.015 2.43 -1.716 2.43 -3.428 c
+2.43 -5.145 2.513 -7.042 1.229 -8.326 c
+f
+Q
+q
+[1 0 0 1 61.278 29.091] cm
+0 0 m
+0 11.856 l
+7.583 11.856 l
+7.583 10.243 l
+1.806 10.243 l
+1.806 6.777 l
+6.729 6.777 l
+6.729 5.182 l
+1.806 5.182 l
+1.806 1.614 l
+7.583 1.614 l
+7.583 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 80.268 29.091] cm
+0 0 m
+-5.48 8.345 l
+-5.48 0 l
+-7.275 0 l
+-7.275 11.856 l
+-5.629 11.856 l
+-0.15 3.53 l
+-0.15 11.856 l
+1.646 11.856 l
+1.646 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 19.648 10.2] cm
+0 0 m
+-1.897 0 -3.759 1.163 -3.759 4.331 c
+-3.759 7.498 -1.897 8.642 0 8.642 c
+1.163 8.642 1.981 8.313 2.781 7.461 c
+1.619 6.331 l
+1.089 6.912 0.67 7.131 0 7.131 c
+-0.642 7.131 -1.2 6.861 -1.562 6.377 c
+-1.926 5.912 -2.065 5.313 -2.065 4.331 c
+-2.065 3.345 -1.926 2.73 -1.562 2.266 c
+-1.2 1.781 -0.642 1.517 0 1.517 c
+0.67 1.517 1.089 1.735 1.619 2.312 c
+2.781 1.2 l
+1.981 0.349 1.163 0 0 0 c
+f
+Q
+q
+[1 0 0 1 30.123 16.843] cm
+0 0 m
+-0.316 0.321 -0.743 0.488 -1.247 0.488 c
+-1.748 0.488 -2.168 0.321 -2.484 0 c
+-2.995 -0.517 -3.061 -1.396 -3.061 -2.311 c
+-3.061 -3.229 -2.995 -4.107 -2.484 -4.628 c
+-2.168 -4.944 -1.748 -5.126 -1.247 -5.126 c
+-0.743 -5.126 -0.316 -4.944 0 -4.628 c
+0.512 -4.107 0.586 -3.229 0.586 -2.311 c
+0.586 -1.396 0.512 -0.517 0 0 c
+1.285 -5.642 m
+0.735 -6.21 -0.103 -6.642 -1.247 -6.642 c
+-2.4 -6.642 -3.209 -6.21 -3.759 -5.642 c
+-4.559 -4.809 -4.764 -3.744 -4.764 -2.311 c
+-4.764 -0.897 -4.559 0.167 -3.759 1 c
+-3.209 1.567 -2.4 2.005 -1.247 2.005 c
+-0.103 2.005 0.735 1.567 1.285 1 c
+2.084 0.167 2.279 -0.897 2.279 -2.311 c
+2.279 -3.744 2.084 -4.809 1.285 -5.642 c
+f
+Q
+q
+[1 0 0 1 41.519 10.298] cm
+0 0 m
+0 5.145 l
+0 6.466 -0.754 7.033 -1.703 7.033 c
+-2.651 7.033 -3.452 6.447 -3.452 5.145 c
+-3.452 0 l
+-5.154 0 l
+-5.154 8.447 l
+-3.489 8.447 l
+-3.489 7.596 l
+-2.903 8.229 -2.084 8.545 -1.236 8.545 c
+-0.371 8.545 0.344 8.266 0.847 7.782 c
+1.488 7.149 1.692 6.35 1.692 5.395 c
+1.692 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 50.822 10.2] cm
+0 0 m
+-1.897 0 -3.759 1.163 -3.759 4.331 c
+-3.759 7.498 -1.897 8.642 0 8.642 c
+1.163 8.642 1.981 8.313 2.781 7.461 c
+1.618 6.331 l
+1.088 6.912 0.67 7.131 0 7.131 c
+-0.651 7.131 -1.199 6.861 -1.562 6.377 c
+-1.926 5.912 -2.064 5.313 -2.064 4.331 c
+-2.064 3.345 -1.926 2.73 -1.562 2.266 c
+-1.199 1.781 -0.651 1.517 0 1.517 c
+0.67 1.517 1.088 1.735 1.618 2.312 c
+2.781 1.2 l
+1.981 0.349 1.163 0 0 0 c
+f
+Q
+q
+[1 0 0 1 61.745 16.363] cm
+0 0 m
+-0.262 0.633 -0.865 1.066 -1.666 1.066 c
+-2.466 1.066 -3.08 0.633 -3.341 0 c
+-3.509 -0.386 -3.545 -0.637 -3.564 -1.148 c
+0.231 -1.148 l
+0.222 -0.637 0.166 -0.386 0 0 c
+-3.564 -2.335 m
+-3.564 -3.781 -2.791 -4.697 -1.415 -4.697 c
+-0.467 -4.697 0.036 -4.428 0.632 -3.833 c
+1.72 -4.851 l
+0.854 -5.712 0.036 -6.163 -1.443 -6.163 c
+-3.564 -6.163 -5.247 -5.047 -5.247 -1.832 c
+-5.247 0.899 -3.825 2.484 -1.666 2.484 c
+0.603 2.484 1.915 0.819 1.915 -1.581 c
+1.915 -2.335 l
+-3.564 -2.335 l
+f
+Q
+q
+[1 0 0 1 71.039 17.331] cm
+0 0 m
+-1.526 0 -1.768 -1.303 -1.768 -2.8 c
+-1.768 -4.303 -1.526 -5.614 0 -5.614 c
+1.535 -5.614 1.748 -4.303 1.748 -2.8 c
+1.748 -1.303 1.535 0 0 0 c
+2.503 -6.382 m
+2.038 -6.847 1.303 -7.131 0.455 -7.131 c
+-0.447 -7.131 -1.145 -6.893 -1.768 -6.163 c
+-1.768 -10.447 l
+-3.46 -10.447 l
+-3.46 1.414 l
+-1.796 1.414 l
+-1.796 0.512 l
+-1.162 1.279 -0.483 1.512 0.437 1.512 c
+1.284 1.512 2.038 1.232 2.503 0.763 c
+3.349 -0.088 3.451 -1.517 3.451 -2.8 c
+3.451 -4.084 3.349 -5.53 2.503 -6.382 c
+f
+Q
+q
+[1 0 0 1 80.964 10.298] cm
+0 0 m
+-1.58 0 -2.316 1.135 -2.316 2.35 c
+-2.316 7.001 l
+-3.283 7.001 l
+-3.283 8.299 l
+-2.316 8.299 l
+-2.316 10.862 l
+-0.613 10.862 l
+-0.613 8.299 l
+1.015 8.299 l
+1.015 7.001 l
+-0.613 7.001 l
+-0.613 2.433 l
+-0.613 1.814 -0.316 1.451 0.317 1.451 c
+1.015 1.451 l
+1.015 0 l
+0 0 l
+f
+Q
+[0.4] sc
+q
+[1 0 0 1 137.816 42.134] cm
+0 0 m
+-25.156 0 l
+-16.494 8.661 l
+0 0 l
+f
+Q
+[0.2] sc
+q
+[1 0 0 1 102.577 33.524] cm
+0 0 m
+0 12.252 l
+17.786 17.782 l
+0 0 l
+f
+Q
+[0.8] sc
+q
+[1 0 0 1 101.534 20.308] cm
+0 0 m
+-8.661 8.662 l
+0 25.147 l
+0 0 l
+f
+Q
+[0.6] sc
+q
+[1 0 0 1 110.138 10.219] cm
+0 0 m
+-12.251 0 l
+-17.787 17.784 l
+0 0 l
+f
+Q
+[0.4] sc
+q
+[1 0 0 1 114.707 0.5117] cm
+0 0 m
+-16.485 8.6601 l
+8.661 8.6601 l
+0 0 l
+f
+Q
+q
+0.059998 0.06 143.607 51.247 re
+W
+[0.302] sc
+q
+[1 0 0 1 115.666 0] cm
+0 0 m
+17.787 17.782 l
+17.787 5.5302 l
+0 0 l
+f
+Q
+Q
+[0.698] sc
+q
+[1 0 0 1 134.495 5.8515] cm
+0 0 m
+0 25.146 l
+8.661 16.485 l
+0 0 l
+f
+Q
+[0.6] sc
+q
+[1 0 0 1 143.667 23.313] cm
+0 0 m
+-17.787 17.783 l
+-5.534 17.783 l
+0 0 l
+f
+Q
+Q
+showpage
+%%PageTrailer
+pdfEndPage
+%%Trailer
+end
+%%DocumentSuppliedResources:
+%%EOF
diff --git a/macros/latex/contrib/tudscr/logo/DDC-27.pdf b/macros/latex/contrib/tudscr/logo/DDC-27.pdf
new file mode 100644
index 0000000000..a8d825905d
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/DDC-27.pdf
Binary files differ
diff --git a/macros/latex/contrib/tudscr/logo/DDC-28.eps b/macros/latex/contrib/tudscr/logo/DDC-28.eps
new file mode 100644
index 0000000000..c724f43dba
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/DDC-28.eps
@@ -0,0 +1,2216 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%XpdfVersion: 3.03
+%%Creator: Adobe Illustrator CS4
+%%Title: DDC-28.eps
+%%LanguageLevel: 2
+%%DocumentSuppliedResources: (atend)
+%%BoundingBox: 0 0 35 70
+%%HiResBoundingBox: 0 0 34.582 69.165
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset xpdf 3.03 0
+%%Copyright: Copyright 1996-2011 Glyph & Cog, LLC
+/xpdf 75 dict def xpdf begin
+% PDF special state
+/pdfDictSize 15 def
+/pdfSetup {
+ /setpagedevice where {
+ pop 2 dict begin
+ /Policies 1 dict dup begin /PageSize 6 def end def
+ { /Duplex true def } if
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfSetupPaper {
+ 2 array astore
+ /setpagedevice where {
+ pop 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfStartPage {
+ pdfDictSize dict begin
+ /pdfFillCS [] def
+ /pdfFillXform {} def
+ /pdfStrokeCS [] def
+ /pdfStrokeXform {} def
+ /pdfFill [0] def
+ /pdfStroke [0] def
+ /pdfFillOP false def
+ /pdfStrokeOP false def
+ /pdfLastFill false def
+ /pdfLastStroke false def
+ /pdfTextMat [1 0 0 1 0 0] def
+ /pdfFontSize 0 def
+ /pdfCharSpacing 0 def
+ /pdfTextRender 0 def
+ /pdfTextRise 0 def
+ /pdfWordSpacing 0 def
+ /pdfHorizScaling 1 def
+ /pdfTextClipPath [] def
+} def
+/pdfEndPage { end } def
+% PDF color state
+/cs { /pdfFillXform exch def dup /pdfFillCS exch def
+ setcolorspace } def
+/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def
+ setcolorspace } def
+/sc { pdfLastFill not { pdfFillCS setcolorspace } if
+ dup /pdfFill exch def aload pop pdfFillXform setcolor
+ /pdfLastFill true def /pdfLastStroke false def } def
+/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if
+ dup /pdfStroke exch def aload pop pdfStrokeXform setcolor
+ /pdfLastStroke true def /pdfLastFill false def } def
+/op { /pdfFillOP exch def
+ pdfLastFill { pdfFillOP setoverprint } if } def
+/OP { /pdfStrokeOP exch def
+ pdfLastStroke { pdfStrokeOP setoverprint } if } def
+/fCol {
+ pdfLastFill not {
+ pdfFillCS setcolorspace
+ pdfFill aload pop pdfFillXform setcolor
+ pdfFillOP setoverprint
+ /pdfLastFill true def /pdfLastStroke false def
+ } if
+} def
+/sCol {
+ pdfLastStroke not {
+ pdfStrokeCS setcolorspace
+ pdfStroke aload pop pdfStrokeXform setcolor
+ pdfStrokeOP setoverprint
+ /pdfLastStroke true def /pdfLastFill false def
+ } if
+} def
+% build a font
+/pdfMakeFont {
+ 4 3 roll findfont
+ 4 2 roll matrix scale makefont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /Encoding exch def
+ currentdict
+ end
+ definefont pop
+} def
+/pdfMakeFont16 {
+ exch findfont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /WMode exch def
+ currentdict
+ end
+ definefont pop
+} def
+% graphics state operators
+/q { gsave pdfDictSize dict begin } def
+/Q {
+ end grestore
+ /pdfLastFill where {
+ pop
+ pdfLastFill {
+ pdfFillOP setoverprint
+ } {
+ pdfStrokeOP setoverprint
+ } ifelse
+ } if
+} def
+/cm { concat } def
+/d { setdash } def
+/i { setflat } def
+/j { setlinejoin } def
+/J { setlinecap } def
+/M { setmiterlimit } def
+/w { setlinewidth } def
+% path segment operators
+/m { moveto } def
+/l { lineto } def
+/c { curveto } def
+/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+ neg 0 rlineto closepath } def
+/h { closepath } def
+% path painting operators
+/S { sCol stroke } def
+/Sf { fCol stroke } def
+/f { fCol fill } def
+/f* { fCol eofill } def
+% clipping operators
+/W { clip newpath } def
+/W* { eoclip newpath } def
+/Ws { strokepath clip newpath } def
+% text state operators
+/Tc { /pdfCharSpacing exch def } def
+/Tf { dup /pdfFontSize exch def
+ dup pdfHorizScaling mul exch matrix scale
+ pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put
+ exch findfont exch makefont setfont } def
+/Tr { /pdfTextRender exch def } def
+/Ts { /pdfTextRise exch def } def
+/Tw { /pdfWordSpacing exch def } def
+/Tz { /pdfHorizScaling exch def } def
+% text positioning operators
+/Td { pdfTextMat transform moveto } def
+/Tm { /pdfTextMat exch def } def
+% text string operators
+/xyshow where {
+ pop
+ /xyshow2 {
+ dup length array
+ 0 2 2 index length 1 sub {
+ 2 index 1 index 2 copy get 3 1 roll 1 add get
+ pdfTextMat dtransform
+ 4 2 roll 2 copy 6 5 roll put 1 add 3 1 roll dup 4 2 roll put
+ } for
+ exch pop
+ xyshow
+ } def
+}{
+ /xyshow2 {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval show moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval show moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/cshow where {
+ pop
+ /xycp {
+ 0 3 2 roll
+ {
+ pop pop currentpoint 3 2 roll
+ 1 string dup 0 4 3 roll put false charpath moveto
+ 2 copy get 2 index 2 index 1 add get
+ pdfTextMat dtransform rmoveto
+ 2 add
+ } exch cshow
+ pop pop
+ } def
+}{
+ /xycp {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval false charpath moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval false charpath moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/Tj {
+ fCol
+ 0 pdfTextRise pdfTextMat dtransform rmoveto
+ currentpoint 4 2 roll
+ pdfTextRender 1 and 0 eq {
+ 2 copy xyshow2
+ } if
+ pdfTextRender 3 and dup 1 eq exch 2 eq or {
+ 3 index 3 index moveto
+ 2 copy
+ currentfont /FontType get 3 eq { fCol } { sCol } ifelse
+ xycp currentpoint stroke moveto
+ } if
+ pdfTextRender 4 and 0 ne {
+ 4 2 roll moveto xycp
+ /pdfTextClipPath [ pdfTextClipPath aload pop
+ {/moveto cvx}
+ {/lineto cvx}
+ {/curveto cvx}
+ {/closepath cvx}
+ pathforall ] def
+ currentpoint newpath moveto
+ } {
+ pop pop pop pop
+ } ifelse
+ 0 pdfTextRise neg pdfTextMat dtransform rmoveto
+} def
+/TJm { 0.001 mul pdfFontSize mul pdfHorizScaling mul neg 0
+ pdfTextMat dtransform rmoveto } def
+/TJmV { 0.001 mul pdfFontSize mul neg 0 exch
+ pdfTextMat dtransform rmoveto } def
+/Tclip { pdfTextClipPath cvx exec clip newpath
+ /pdfTextClipPath [] def } def
+% Level 2/3 image operators
+/pdfImBuf 100 string def
+/pdfImStr {
+ 2 copy exch length lt {
+ 2 copy get exch 1 add exch
+ } {
+ ()
+ } ifelse
+} def
+/skipEOD {
+ { currentfile pdfImBuf readline
+ not { pop exit } if
+ (%-EOD-) eq { exit } if } loop
+} def
+/pdfIm { image skipEOD } def
+/pdfImM { fCol imagemask skipEOD } def
+/pr { 2 index 2 index 3 2 roll putinterval 4 add } def
+/pdfImClip {
+ gsave
+ 0 2 4 index length 1 sub {
+ dup 4 index exch 2 copy
+ get 5 index div put
+ 1 add 3 index exch 2 copy
+ get 3 index div put
+ } for
+ pop pop rectclip
+} def
+/pdfImClipEnd { grestore } def
+% shading operators
+/colordelta {
+ false 0 1 3 index length 1 sub {
+ dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt {
+ pop true
+ } if
+ } for
+ exch pop exch pop
+} def
+/funcCol { func n array astore } def
+/funcSH {
+ dup 0 eq {
+ true
+ } {
+ dup 6 eq {
+ false
+ } {
+ 4 index 4 index funcCol dup
+ 6 index 4 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 5 index 5 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 6 index 8 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ colordelta or or or
+ } ifelse
+ } ifelse
+ {
+ 1 add
+ 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch
+ 6 index 6 index 4 index 4 index 4 index funcSH
+ 2 index 6 index 6 index 4 index 4 index funcSH
+ 6 index 2 index 4 index 6 index 4 index funcSH
+ 5 3 roll 3 2 roll funcSH pop pop
+ } {
+ pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul
+ funcCol sc
+ dup 4 index exch mat transform m
+ 3 index 3 index mat transform l
+ 1 index 3 index mat transform l
+ mat transform l pop pop h f*
+ } ifelse
+} def
+/axialCol {
+ dup 0 lt {
+ pop t0
+ } {
+ dup 1 gt {
+ pop t1
+ } {
+ dt mul t0 add
+ } ifelse
+ } ifelse
+ func n array astore
+} def
+/axialSH {
+ dup 2 lt {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index axialCol 2 index axialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index axialSH
+ exch 3 2 roll axialSH
+ } {
+ pop 2 copy add 0.5 mul
+ axialCol sc
+ exch dup dx mul x0 add exch dy mul y0 add
+ 3 2 roll dup dx mul x0 add exch dy mul y0 add
+ dx abs dy abs ge {
+ 2 copy yMin sub dy mul dx div add yMin m
+ yMax sub dy mul dx div add yMax l
+ 2 copy yMax sub dy mul dx div add yMax l
+ yMin sub dy mul dx div add yMin l
+ h f*
+ } {
+ exch 2 copy xMin sub dx mul dy div add xMin exch m
+ xMax sub dx mul dy div add xMax exch l
+ exch 2 copy xMax sub dx mul dy div add xMax exch l
+ xMin sub dx mul dy div add xMin exch l
+ h f*
+ } ifelse
+ } ifelse
+} def
+/radialCol {
+ dup t0 lt {
+ pop t0
+ } {
+ dup t1 gt {
+ pop t1
+ } if
+ } ifelse
+ func n array astore
+} def
+/radialSH {
+ dup 0 eq {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index dt mul t0 add radialCol
+ 2 index dt mul t0 add radialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index radialSH
+ exch 3 2 roll radialSH
+ } {
+ pop 2 copy add 0.5 mul dt mul t0 add
+ radialCol sc
+ encl {
+ exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 0 360 arc h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 360 0 arcn h f
+ } {
+ 2 copy
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arcn
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arcn h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arc
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arc h f
+ } ifelse
+ } ifelse
+} def
+end
+%%EndResource
+%%EndProlog
+%%BeginSetup
+xpdf begin
+%%EndSetup
+pdfStartPage
+[] 0 d
+1 i
+0 j
+0 J
+10 M
+1 w
+/DeviceGray {} cs
+[0] sc
+/DeviceGray {} CS
+[0] SC
+false op
+false OP
+{} settransfer
+0 0 34.582 69.165 re
+W
+q
+[/Separation (HKS 41 K) /DeviceRGB
+/xpdfSamples0 [
+1
+1
+1
+0.984314
+0.984314
+0.988235
+0.980392
+0.980392
+0.988235
+0.964706
+0.968627
+0.980392
+0.960784
+0.960784
+0.976471
+0.94902
+0.952941
+0.964706
+0.945098
+0.94902
+0.964706
+0.937255
+0.941176
+0.956863
+0.933333
+0.933333
+0.952941
+0.92549
+0.929412
+0.94902
+0.921569
+0.92549
+0.94902
+0.913725
+0.917647
+0.941176
+0.909804
+0.913725
+0.941176
+0.901961
+0.905882
+0.937255
+0.898039
+0.901961
+0.933333
+0.890196
+0.894118
+0.92549
+0.886275
+0.894118
+0.92549
+0.878431
+0.886275
+0.917647
+0.87451
+0.882353
+0.917647
+0.870588
+0.878431
+0.913725
+0.866667
+0.87451
+0.909804
+0.858824
+0.866667
+0.905882
+0.854902
+0.866667
+0.905882
+0.847059
+0.858824
+0.901961
+0.843137
+0.854902
+0.898039
+0.839216
+0.847059
+0.890196
+0.835294
+0.847059
+0.890196
+0.827451
+0.839216
+0.886275
+0.823529
+0.835294
+0.882353
+0.815686
+0.831373
+0.882353
+0.811765
+0.827451
+0.878431
+0.807843
+0.819608
+0.87451
+0.803922
+0.819608
+0.87451
+0.796078
+0.811765
+0.870588
+0.792157
+0.807843
+0.866667
+0.788235
+0.803922
+0.858824
+0.784314
+0.8
+0.858824
+0.776471
+0.796078
+0.854902
+0.772549
+0.792157
+0.854902
+0.768627
+0.788235
+0.85098
+0.764706
+0.784314
+0.847059
+0.756863
+0.776471
+0.843137
+0.756863
+0.776471
+0.843137
+0.74902
+0.772549
+0.839216
+0.745098
+0.768627
+0.839216
+0.741176
+0.760784
+0.831373
+0.737255
+0.760784
+0.831373
+0.729412
+0.752941
+0.823529
+0.729412
+0.74902
+0.823529
+0.721569
+0.745098
+0.819608
+0.717647
+0.741176
+0.819608
+0.713725
+0.737255
+0.815686
+0.709804
+0.733333
+0.811765
+0.701961
+0.729412
+0.807843
+0.701961
+0.72549
+0.807843
+0.694118
+0.721569
+0.8
+0.690196
+0.717647
+0.8
+0.686275
+0.713725
+0.796078
+0.682353
+0.709804
+0.796078
+0.678431
+0.705882
+0.792157
+0.67451
+0.701961
+0.792157
+0.666667
+0.698039
+0.784314
+0.666667
+0.694118
+0.784314
+0.658824
+0.690196
+0.780392
+0.654902
+0.686275
+0.780392
+0.65098
+0.682353
+0.772549
+0.647059
+0.682353
+0.772549
+0.643137
+0.67451
+0.768627
+0.639216
+0.670588
+0.768627
+0.635294
+0.670588
+0.764706
+0.631373
+0.666667
+0.760784
+0.623529
+0.658824
+0.756863
+0.623529
+0.658824
+0.756863
+0.615686
+0.654902
+0.752941
+0.615686
+0.65098
+0.752941
+0.607843
+0.643137
+0.745098
+0.603922
+0.643137
+0.745098
+0.6
+0.639216
+0.741176
+0.596078
+0.635294
+0.741176
+0.592157
+0.631373
+0.737255
+0.588235
+0.627451
+0.737255
+0.584314
+0.623529
+0.733333
+0.580392
+0.619608
+0.729412
+0.576471
+0.619608
+0.72549
+0.572549
+0.615686
+0.72549
+0.568627
+0.607843
+0.717647
+0.564706
+0.607843
+0.717647
+0.560784
+0.603922
+0.713725
+0.556863
+0.6
+0.713725
+0.552941
+0.596078
+0.709804
+0.54902
+0.596078
+0.709804
+0.545098
+0.588235
+0.705882
+0.541176
+0.588235
+0.701961
+0.537255
+0.584314
+0.701961
+0.533333
+0.580392
+0.698039
+0.529412
+0.576471
+0.694118
+0.52549
+0.576471
+0.694118
+0.521569
+0.568627
+0.690196
+0.517647
+0.568627
+0.686275
+0.513725
+0.560784
+0.682353
+0.509804
+0.560784
+0.682353
+0.505882
+0.556863
+0.678431
+0.501961
+0.552941
+0.678431
+0.498039
+0.54902
+0.67451
+0.494118
+0.54902
+0.67451
+0.490196
+0.541176
+0.666667
+0.490196
+0.541176
+0.666667
+0.482353
+0.537255
+0.662745
+0.482353
+0.533333
+0.662745
+0.478431
+0.529412
+0.658824
+0.47451
+0.529412
+0.658824
+0.470588
+0.52549
+0.654902
+0.466667
+0.521569
+0.654902
+0.462745
+0.517647
+0.65098
+0.458824
+0.517647
+0.65098
+0.454902
+0.509804
+0.643137
+0.454902
+0.509804
+0.643137
+0.447059
+0.505882
+0.639216
+0.447059
+0.501961
+0.639216
+0.443137
+0.498039
+0.635294
+0.439216
+0.498039
+0.635294
+0.435294
+0.494118
+0.631373
+0.431373
+0.490196
+0.631373
+0.427451
+0.490196
+0.627451
+0.423529
+0.486275
+0.627451
+0.419608
+0.482353
+0.619608
+0.419608
+0.478431
+0.619608
+0.411765
+0.478431
+0.615686
+0.407843
+0.47451
+0.615686
+0.403922
+0.470588
+0.611765
+0.4
+0.470588
+0.611765
+0.396078
+0.466667
+0.607843
+0.396078
+0.462745
+0.607843
+0.392157
+0.458824
+0.603922
+0.388235
+0.458824
+0.603922
+0.384314
+0.45098
+0.596078
+0.380392
+0.45098
+0.596078
+0.376471
+0.447059
+0.592157
+0.376471
+0.447059
+0.592157
+0.372549
+0.439216
+0.588235
+0.368627
+0.439216
+0.588235
+0.364706
+0.435294
+0.584314
+0.360784
+0.435294
+0.584314
+0.356863
+0.431373
+0.580392
+0.356863
+0.427451
+0.580392
+0.352941
+0.423529
+0.572549
+0.34902
+0.423529
+0.572549
+0.345098
+0.419608
+0.572549
+0.341176
+0.419608
+0.568627
+0.337255
+0.415686
+0.564706
+0.337255
+0.411765
+0.564706
+0.333333
+0.407843
+0.560784
+0.329412
+0.407843
+0.560784
+0.32549
+0.403922
+0.556863
+0.321569
+0.403922
+0.556863
+0.321569
+0.4
+0.552941
+0.317647
+0.396078
+0.552941
+0.313725
+0.392157
+0.54902
+0.309804
+0.392157
+0.54902
+0.305882
+0.388235
+0.545098
+0.301961
+0.388235
+0.545098
+0.298039
+0.384314
+0.541176
+0.298039
+0.380392
+0.541176
+0.294118
+0.376471
+0.537255
+0.290196
+0.376471
+0.537255
+0.286275
+0.372549
+0.529412
+0.286275
+0.372549
+0.529412
+0.282353
+0.368627
+0.529412
+0.278431
+0.368627
+0.52549
+0.27451
+0.364706
+0.521569
+0.270588
+0.360784
+0.521569
+0.266667
+0.360784
+0.521569
+0.266667
+0.356863
+0.517647
+0.262745
+0.352941
+0.513725
+0.258824
+0.352941
+0.513725
+0.254902
+0.34902
+0.509804
+0.25098
+0.34902
+0.509804
+0.247059
+0.345098
+0.505882
+0.247059
+0.341176
+0.505882
+0.243137
+0.341176
+0.501961
+0.239216
+0.337255
+0.501961
+0.235294
+0.337255
+0.498039
+0.231373
+0.333333
+0.498039
+0.231373
+0.329412
+0.494118
+0.227451
+0.329412
+0.494118
+0.223529
+0.32549
+0.490196
+0.219608
+0.32549
+0.490196
+0.215686
+0.321569
+0.486275
+0.211765
+0.321569
+0.486275
+0.207843
+0.317647
+0.482353
+0.207843
+0.313725
+0.482353
+0.203922
+0.313725
+0.482353
+0.2
+0.309804
+0.478431
+0.196078
+0.309804
+0.478431
+0.192157
+0.305882
+0.478431
+0.188235
+0.305882
+0.470588
+0.188235
+0.301961
+0.470588
+0.184314
+0.301961
+0.470588
+0.180392
+0.298039
+0.466667
+0.176471
+0.294118
+0.466667
+0.172549
+0.294118
+0.462745
+0.168627
+0.290196
+0.462745
+0.164706
+0.290196
+0.462745
+0.160784
+0.286275
+0.458824
+0.156863
+0.286275
+0.458824
+0.152941
+0.282353
+0.454902
+0.152941
+0.282353
+0.45098
+0.145098
+0.278431
+0.45098
+0.145098
+0.278431
+0.45098
+0.141176
+0.27451
+0.447059
+0.137255
+0.270588
+0.447059
+0.133333
+0.270588
+0.443137
+0.129412
+0.270588
+0.443137
+0.12549
+0.266667
+0.439216
+0.121569
+0.266667
+0.439216
+0.117647
+0.262745
+0.435294
+0.113725
+0.258824
+0.435294
+0.105882
+0.258824
+0.431373
+0.105882
+0.254902
+0.431373
+0.098039
+0.254902
+0.427451
+0.094118
+0.25098
+0.427451
+0.090196
+0.25098
+0.427451
+0.086275
+0.247059
+0.423529
+0.078431
+0.247059
+0.423529
+0.07451
+0.247059
+0.423529
+0.070588
+0.243137
+0.419608
+0.062745
+0.239216
+0.415686
+0.058824
+0.239216
+0.415686
+0.05098
+0.239216
+0.415686
+0.043137
+0.235294
+0.411765
+0.039216
+0.231373
+0.411765
+0.031373
+0.231373
+0.407843
+0.023529
+0.227451
+0.407843
+0.019608
+0.227451
+0.403922
+0.007843
+0.227451
+0.403922
+0.003922
+0.223529
+0.4
+0
+0.219608
+0.4
+0
+0.219608
+0.396078
+0
+0.219608
+0.396078
+0
+0.215686
+0.396078
+0
+0.211765
+0.392157
+0
+0.211765
+0.392157
+0
+0.211765
+0.392157
+0
+0.207843
+0.388235
+0
+0.207843
+0.388235
+0
+0.203922
+0.384314
+0
+0.203922
+0.384314
+0
+0.2
+0.380392
+0
+0.2
+0.380392
+0
+0.196078
+0.380392
+0
+0.196078
+0.376471
+0
+0.192157
+0.376471
+0
+0.192157
+0.376471
+0
+0.188235
+0.372549
+0
+0.184314
+0.368627
+] def
+{ 2 array 1 array 3 2 roll
+0 sub 254 mul 0 add
+dup 0 lt { pop 0 } { dup 254 gt { pop 254 } if } ifelse
+dup floor cvi exch dup ceiling cvi exch 2 index sub
+3 index 0 3 2 roll put
+3 index 1 3 2 roll put
+2 index 0 3 2 roll put
+xpdfSamples0
+2 index 0 get
+3 mul 0 add get
+xpdfSamples0
+3 index 1 get
+3 mul 0 add get
+2 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+xpdfSamples0
+3 index 0 get
+3 mul 1 add get
+xpdfSamples0
+4 index 1 get
+3 mul 1 add get
+3 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+xpdfSamples0
+4 index 0 get
+3 mul 2 add get
+xpdfSamples0
+5 index 1 get
+3 mul 2 add get
+4 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+5 3 roll pop pop }
+] {} cs
+[1] sc
+[0] sc
+false op
+false OP
+1 i
+q
+[1 0 0 1 2.6743 27.613] cm
+0 0 m
+-0.1645 0.181 -0.3848 0.263 -0.6645 0.263 c
+-1.3843 0.263 l
+-1.3843 -2.581 l
+-0.6645 -2.581 l
+-0.3848 -2.581 -0.1645 -2.5 0 -2.318 c
+0.2031 -2.093 0.209 -1.67 0.209 -1.132 c
+0.209 -0.594 0.2031 -0.225 0 0 c
+0.4063 -2.746 m
+0.1592 -2.994 -0.1973 -3.114 -0.604 -3.114 c
+-1.977 -3.114 l
+-1.977 0.796 l
+-0.604 0.796 l
+-0.1973 0.796 0.1592 0.675 0.4063 0.428 c
+0.8291 0.005 0.8017 -0.566 0.8017 -1.132 c
+0.8017 -1.697 0.8291 -2.323 0.4063 -2.746 c
+f
+Q
+q
+[1 0 0 1 6.3745 27.876] cm
+0 0 m
+-0.8789 0 l
+-0.8789 -1.225 l
+0 -1.225 l
+0.395 -1.225 0.6645 -1 0.6645 -0.616 c
+0.6645 -0.23 0.395 0 0 0 c
+0.6865 -3.377 m
+-0.1372 -1.73 l
+-0.8789 -1.73 l
+-0.8789 -3.377 l
+-1.4722 -3.377 l
+-1.4722 0.533 l
+0.044 0.533 l
+0.7852 0.533 1.2573 0.054 1.2573 -0.609 c
+1.2573 -1.169 0.917 -1.527 0.4775 -1.647 c
+1.3779 -3.377 l
+0.6865 -3.377 l
+f
+Q
+q
+[1 0 0 1 9.0478 24.499] cm
+0 0 m
+0 3.91 l
+2.499 3.91 l
+2.499 3.377 l
+0.5928 3.377 l
+0.5928 2.235 l
+2.218 2.235 l
+2.218 1.708 l
+0.5928 1.708 l
+0.5928 0.533 l
+2.499 0.533 l
+2.499 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 13.945 24.466] cm
+0 0 m
+-0.587 0 -1.011 0.137 -1.384 0.516 c
+-0.988 0.906 l
+-0.703 0.62 -0.39 0.532 0.011 0.532 c
+0.522 0.532 0.818 0.752 0.818 1.131 c
+0.818 1.301 0.769 1.444 0.665 1.538 c
+0.566 1.631 0.467 1.669 0.236 1.702 c
+-0.225 1.768 l
+-0.544 1.812 -0.796 1.921 -0.966 2.081 c
+-1.159 2.262 -1.252 2.51 -1.252 2.828 c
+-1.252 3.509 -0.758 3.976 0.055 3.976 c
+0.571 3.976 0.934 3.844 1.269 3.531 c
+0.89 3.158 l
+0.648 3.388 0.368 3.459 0.039 3.459 c
+-0.423 3.459 -0.675 3.196 -0.675 2.85 c
+-0.675 2.708 -0.631 2.581 -0.527 2.487 c
+-0.428 2.399 -0.269 2.334 -0.088 2.306 c
+0.357 2.24 l
+0.719 2.185 0.923 2.098 1.087 1.949 c
+1.301 1.762 1.406 1.482 1.406 1.147 c
+1.406 0.428 0.818 0 0 0 c
+f
+Q
+q
+[1 0 0 1 18.672 27.613] cm
+0 0 m
+-0.165 0.181 -0.385 0.263 -0.665 0.263 c
+-1.384 0.263 l
+-1.384 -2.581 l
+-0.665 -2.581 l
+-0.385 -2.581 -0.165 -2.5 0 -2.318 c
+0.204 -2.093 0.209 -1.67 0.209 -1.132 c
+0.209 -0.594 0.204 -0.225 0 0 c
+0.406 -2.746 m
+0.159 -2.994 -0.197 -3.114 -0.604 -3.114 c
+-1.977 -3.114 l
+-1.977 0.796 l
+-0.604 0.796 l
+-0.197 0.796 0.159 0.675 0.406 0.428 c
+0.829 0.005 0.802 -0.566 0.802 -1.132 c
+0.802 -1.697 0.829 -2.323 0.406 -2.746 c
+f
+Q
+q
+[1 0 0 1 20.9 24.499] cm
+0 0 m
+0 3.91 l
+2.498 3.91 l
+2.498 3.377 l
+0.593 3.377 l
+0.593 2.235 l
+2.218 2.235 l
+2.218 1.708 l
+0.593 1.708 l
+0.593 0.533 l
+2.498 0.533 l
+2.498 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 27.16 24.499] cm
+0 0 m
+-1.807 2.751 l
+-1.807 0 l
+-2.4 0 l
+-2.4 3.91 l
+-1.857 3.91 l
+-0.05 1.164 l
+-0.05 3.91 l
+0.544 3.91 l
+0.544 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 7.1758 18.125] cm
+0 0 m
+-0.626 0 -1.2412 0.385 -1.2412 1.428 c
+-1.2412 2.472 -0.626 2.85 0 2.85 c
+0.3848 2.85 0.6533 2.74 0.917 2.461 c
+0.5332 2.087 l
+0.3569 2.279 0.2197 2.351 0 2.351 c
+-0.2139 2.351 -0.395 2.263 -0.5161 2.104 c
+-0.6367 1.95 -0.6807 1.752 -0.6807 1.428 c
+-0.6807 1.104 -0.6367 0.901 -0.5161 0.747 c
+-0.395 0.588 -0.2139 0.5 0 0.5 c
+0.2197 0.5 0.3569 0.572 0.5332 0.764 c
+0.917 0.396 l
+0.6533 0.115 0.3848 0 0 0 c
+f
+Q
+q
+[1 0 0 1 10.629 20.317] cm
+0 0 m
+-0.105 0.104 -0.248 0.159 -0.412 0.159 c
+-0.577 0.159 -0.7144 0.104 -0.8188 0 c
+-0.9888 -0.17 -1.0107 -0.462 -1.0107 -0.764 c
+-1.0107 -1.066 -0.9888 -1.357 -0.8188 -1.527 c
+-0.7144 -1.631 -0.577 -1.691 -0.412 -1.691 c
+-0.248 -1.691 -0.105 -1.631 0 -1.527 c
+0.17 -1.357 0.192 -1.066 0.192 -0.764 c
+0.192 -0.462 0.17 -0.17 0 0 c
+0.422 -1.861 m
+0.241 -2.048 -0.033 -2.192 -0.412 -2.192 c
+-0.7905 -2.192 -1.0606 -2.048 -1.2412 -1.861 c
+-1.5044 -1.587 -1.5708 -1.235 -1.5708 -0.764 c
+-1.5708 -0.296 -1.5044 0.055 -1.2412 0.329 c
+-1.0606 0.516 -0.7905 0.659 -0.412 0.659 c
+-0.033 0.659 0.241 0.516 0.422 0.329 c
+0.686 0.055 0.752 -0.296 0.752 -0.764 c
+0.752 -1.235 0.686 -1.587 0.422 -1.861 c
+f
+Q
+q
+[1 0 0 1 14.384 18.159] cm
+0 0 m
+0 1.696 l
+0 2.13 -0.248 2.317 -0.56 2.317 c
+-0.873 2.317 -1.137 2.125 -1.137 1.696 c
+-1.137 0 l
+-1.697 0 l
+-1.697 2.784 l
+-1.148 2.784 l
+-1.148 2.504 l
+-0.956 2.712 -0.687 2.817 -0.407 2.817 c
+-0.121 2.817 0.115 2.724 0.28 2.564 c
+0.495 2.356 0.561 2.092 0.561 1.779 c
+0.561 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 17.453 18.125] cm
+0 0 m
+-0.626 0 -1.241 0.385 -1.241 1.428 c
+-1.241 2.472 -0.626 2.85 0 2.85 c
+0.385 2.85 0.653 2.74 0.917 2.461 c
+0.533 2.087 l
+0.357 2.279 0.219 2.351 0 2.351 c
+-0.214 2.351 -0.396 2.263 -0.517 2.104 c
+-0.637 1.95 -0.681 1.752 -0.681 1.428 c
+-0.681 1.104 -0.637 0.901 -0.517 0.747 c
+-0.396 0.588 -0.214 0.5 0 0.5 c
+0.219 0.5 0.357 0.572 0.533 0.764 c
+0.917 0.396 l
+0.653 0.115 0.385 0 0 0 c
+f
+Q
+q
+[1 0 0 1 21.055 20.158] cm
+0 0 m
+-0.088 0.209 -0.286 0.351 -0.549 0.351 c
+-0.813 0.351 -1.016 0.209 -1.104 0 c
+-1.159 -0.127 -1.169 -0.209 -1.175 -0.379 c
+0.077 -0.379 l
+0.071 -0.209 0.055 -0.127 0 0 c
+-1.175 -0.769 m
+-1.175 -1.247 -0.923 -1.549 -0.467 -1.549 c
+-0.154 -1.549 0.011 -1.461 0.208 -1.264 c
+0.565 -1.599 l
+0.28 -1.884 0.011 -2.032 -0.478 -2.032 c
+-1.175 -2.032 -1.73 -1.664 -1.73 -0.605 c
+-1.73 0.296 -1.263 0.818 -0.549 0.818 c
+0.198 0.818 0.631 0.269 0.631 -0.522 c
+0.631 -0.769 l
+-1.175 -0.769 l
+f
+Q
+q
+[1 0 0 1 24.118 20.476] cm
+0 0 m
+-0.505 0 -0.583 -0.428 -0.583 -0.923 c
+-0.583 -1.417 -0.505 -1.85 0 -1.85 c
+0.504 -1.85 0.577 -1.417 0.577 -0.923 c
+0.577 -0.428 0.504 0 0 0 c
+0.823 -2.103 m
+0.67 -2.257 0.428 -2.351 0.148 -2.351 c
+-0.149 -2.351 -0.379 -2.273 -0.583 -2.032 c
+-0.583 -3.444 l
+-1.143 -3.444 l
+-1.143 0.467 l
+-0.593 0.467 l
+-0.593 0.17 l
+-0.385 0.423 -0.159 0.5 0.142 0.5 c
+0.422 0.5 0.67 0.407 0.823 0.253 c
+1.103 -0.028 1.136 -0.5 1.136 -0.923 c
+1.136 -1.346 1.103 -1.823 0.823 -2.103 c
+f
+Q
+q
+[1 0 0 1 27.39 18.159] cm
+0 0 m
+-0.522 0 -0.764 0.373 -0.764 0.774 c
+-0.764 2.306 l
+-1.082 2.306 l
+-1.082 2.734 l
+-0.764 2.734 l
+-0.764 3.58 l
+-0.204 3.58 l
+-0.204 2.734 l
+0.335 2.734 l
+0.335 2.306 l
+-0.204 2.306 l
+-0.204 0.801 l
+-0.204 0.598 -0.105 0.478 0.105 0.478 c
+0.335 0.478 l
+0.335 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 0.73389 12.113] cm
+0 0 m
+0 2.751 l
+1.708 2.751 l
+1.708 2.489 l
+0.2939 2.489 l
+0.2939 1.519 l
+1.4995 1.519 l
+1.4995 1.256 l
+0.2939 1.256 l
+0.2939 0.263 l
+1.708 0.263 l
+1.708 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 4.4043 12.113] cm
+0 0 m
+-0.4565 0.739 l
+-0.9199 0 l
+-1.2564 0 l
+-0.6108 0.97 l
+-1.2295 1.901 l
+-0.8931 1.901 l
+-0.4565 1.198 l
+-0.0274 1.901 l
+0.3091 1.901 l
+-0.3096 0.97 l
+0.3359 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 5.4272 12.113] cm
+0 0 m
+0 0.24 l
+1.0591 1.654 l
+0.0581 1.654 l
+0.0581 1.901 l
+1.3794 1.901 l
+1.3794 1.666 l
+0.3164 0.248 l
+1.3794 0.248 l
+1.3794 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 8.8423 13.516] cm
+0 0 m
+-0.0732 0.174 -0.2437 0.287 -0.4448 0.287 c
+-0.6455 0.287 -0.8154 0.174 -0.8887 0 c
+-0.9312 -0.104 -0.939 -0.162 -0.9463 -0.316 c
+0.0581 -0.316 l
+0.0503 -0.162 0.0425 -0.104 0 0 c
+-0.9463 -0.525 m
+-0.9463 -0.942 -0.7495 -1.183 -0.3867 -1.183 c
+-0.1665 -1.183 -0.0386 -1.116 0.1123 -0.966 c
+0.3018 -1.132 l
+0.1084 -1.326 -0.0693 -1.426 -0.3941 -1.426 c
+-0.8965 -1.426 -1.2246 -1.124 -1.2246 -0.452 c
+-1.2246 0.162 -0.9272 0.522 -0.4448 0.522 c
+0.0464 0.522 0.3364 0.167 0.3364 -0.397 c
+0.3364 -0.525 l
+-0.9463 -0.525 l
+f
+Q
+q
+[1 0 0 1 10.611 12.113] cm
+0 0 m
+-0.332 0 -0.483 0.216 -0.483 0.506 c
+-0.483 2.751 l
+-0.205 2.751 l
+-0.205 0.518 l
+-0.205 0.333 -0.143 0.24 0.05 0.24 c
+0.201 0.24 l
+0.201 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 12.125 12.113] cm
+0 0 m
+-0.333 0 -0.483 0.216 -0.483 0.506 c
+-0.483 2.751 l
+-0.205 2.751 l
+-0.205 0.518 l
+-0.205 0.333 -0.143 0.24 0.05 0.24 c
+0.201 0.24 l
+0.201 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 14.188 13.516] cm
+0 0 m
+-0.073 0.174 -0.244 0.287 -0.445 0.287 c
+-0.646 0.287 -0.815 0.174 -0.889 0 c
+-0.931 -0.104 -0.939 -0.162 -0.947 -0.316 c
+0.058 -0.316 l
+0.05 -0.162 0.043 -0.104 0 0 c
+-0.947 -0.525 m
+-0.947 -0.942 -0.75 -1.183 -0.387 -1.183 c
+-0.167 -1.183 -0.039 -1.116 0.112 -0.966 c
+0.302 -1.132 l
+0.108 -1.326 -0.07 -1.426 -0.394 -1.426 c
+-0.896 -1.426 -1.225 -1.124 -1.225 -0.452 c
+-1.225 0.162 -0.928 0.522 -0.445 0.522 c
+0.046 0.522 0.336 0.167 0.336 -0.397 c
+0.336 -0.525 l
+-0.947 -0.525 l
+f
+Q
+q
+[1 0 0 1 16.699 12.113] cm
+0 0 m
+0 1.171 l
+0 1.508 -0.182 1.678 -0.467 1.678 c
+-0.753 1.678 -0.939 1.503 -0.939 1.171 c
+-0.939 0 l
+-1.217 0 l
+-1.217 1.901 l
+-0.939 1.901 l
+-0.939 1.693 l
+-0.804 1.847 -0.619 1.925 -0.406 1.925 c
+-0.201 1.925 -0.035 1.863 0.081 1.747 c
+0.216 1.616 0.278 1.438 0.278 1.218 c
+0.278 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 17.865 12.113] cm
+0 0 m
+0 0.24 l
+1.059 1.654 l
+0.058 1.654 l
+0.058 1.901 l
+1.379 1.901 l
+1.379 1.666 l
+0.317 0.248 l
+1.379 0.248 l
+1.379 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 22.567 12.991] cm
+0 0 m
+-0.534 0 l
+-0.82 0 -0.959 -0.116 -0.959 -0.337 c
+-0.959 -0.557 -0.823 -0.661 -0.522 -0.661 c
+-0.359 -0.661 -0.216 -0.65 -0.097 -0.534 c
+-0.031 -0.472 0 -0.364 0 -0.206 c
+0 0 l
+h
+0 -0.878 m
+0 -0.696 l
+-0.154 -0.85 -0.294 -0.901 -0.549 -0.901 c
+-0.811 -0.901 -0.966 -0.85 -1.086 -0.727 c
+-1.179 -0.634 -1.229 -0.491 -1.229 -0.341 c
+-1.229 -0.008 -0.997 0.207 -0.572 0.207 c
+0 0.207 l
+0 0.39 l
+0 0.668 -0.139 0.807 -0.487 0.807 c
+-0.73 0.807 -0.854 0.749 -0.966 0.591 c
+-1.155 0.765 l
+-0.986 0.985 -0.792 1.047 -0.483 1.047 c
+0.027 1.047 0.278 0.827 0.278 0.413 c
+0.278 -0.878 l
+0 -0.878 l
+f
+Q
+q
+[1 0 0 1 25.089 12.113] cm
+0 0 m
+0 0.212 l
+-0.135 0.058 -0.325 -0.023 -0.537 -0.023 c
+-0.742 -0.023 -0.912 0.039 -1.027 0.155 c
+-1.164 0.286 -1.221 0.467 -1.221 0.688 c
+-1.221 1.901 l
+-0.943 1.901 l
+-0.943 0.73 l
+-0.943 0.394 -0.765 0.224 -0.479 0.224 c
+-0.193 0.224 -0.003 0.398 -0.003 0.73 c
+-0.003 1.901 l
+0.275 1.901 l
+0.275 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 27.024 12.09] cm
+0 0 m
+-0.321 0 -0.572 0.073 -0.78 0.274 c
+-0.595 0.46 l
+-0.444 0.301 -0.24 0.239 -0.003 0.239 c
+0.309 0.239 0.503 0.352 0.503 0.576 c
+0.503 0.742 0.406 0.835 0.186 0.854 c
+-0.127 0.881 l
+-0.498 0.912 -0.695 1.078 -0.695 1.391 c
+-0.695 1.739 -0.402 1.948 0.004 1.948 c
+0.274 1.948 0.518 1.882 0.689 1.743 c
+0.507 1.561 l
+0.371 1.666 0.197 1.712 0 1.712 c
+-0.278 1.712 -0.425 1.592 -0.425 1.399 c
+-0.425 1.237 -0.332 1.14 -0.092 1.121 c
+0.213 1.094 l
+0.545 1.063 0.773 0.935 0.773 0.58 c
+0.773 0.213 0.46 0 0 0 c
+f
+Q
+q
+[1 0 0 1 2.956 6.0688] cm
+0 0 m
+-0.2744 0 l
+-0.8848 2.2026 l
+-1.4956 0 l
+-1.7695 0 l
+-2.4731 2.751 l
+-2.1602 2.751 l
+-1.623 0.5327 l
+-1.0161 2.751 l
+-0.7534 2.751 l
+-0.1465 0.5327 l
+0.3906 2.751 l
+0.7031 2.751 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 4.5039 7.9697] cm
+0 0 m
+0.27832 0 l
+0.27832 -1.9009 l
+0 -1.9009 l
+0 0 l
+h
+-0.0156 0.854 m
+0.29788 0.854 l
+0.29788 0.5415 l
+-0.0156 0.5415 l
+-0.0156 0.854 l
+h
+f
+Q
+q
+[1 0 0 1 6.5166 6.0454] cm
+0 0 m
+-0.3203 0 -0.5718 0.0737 -0.7808 0.2739 c
+-0.5952 0.4599 l
+-0.4443 0.3008 -0.2393 0.2387 -0.0039 0.2387 c
+0.3101 0.2387 0.5029 0.351 0.5029 0.5757 c
+0.5029 0.7417 0.4063 0.8349 0.1855 0.854 c
+-0.1269 0.8803 l
+-0.4981 0.9116 -0.6958 1.0781 -0.6958 1.3911 c
+-0.6958 1.7387 -0.4014 1.9477 0.0044 1.9477 c
+0.2744 1.9477 0.5181 1.8818 0.688 1.7426 c
+0.5064 1.5605 l
+0.3711 1.6655 0.1973 1.7119 0 1.7119 c
+-0.2778 1.7119 -0.4248 1.5918 -0.4248 1.3984 c
+-0.4248 1.2363 -0.332 1.1396 -0.0923 1.1206 c
+0.2129 1.0937 l
+0.5454 1.062 0.773 0.9355 0.773 0.58 c
+0.773 0.2119 0.46 0 0 0 c
+f
+Q
+q
+[1 0 0 1 8.8076 6.0454] cm
+0 0 m
+-0.3208 0 -0.5718 0.0737 -0.7812 0.2739 c
+-0.5952 0.4599 l
+-0.4448 0.3008 -0.2397 0.2387 -0.0039 0.2387 c
+0.3091 0.2387 0.5024 0.351 0.5024 0.5757 c
+0.5024 0.7417 0.4058 0.8349 0.1851 0.854 c
+-0.1274 0.8803 l
+-0.499 0.9116 -0.6958 1.0781 -0.6958 1.3911 c
+-0.6958 1.7387 -0.4019 1.9477 0.0039 1.9477 c
+0.2739 1.9477 0.5176 1.8818 0.688 1.7426 c
+0.5059 1.5605 l
+0.3706 1.6655 0.1973 1.7119 0 1.7119 c
+-0.2783 1.7119 -0.4253 1.5918 -0.4253 1.3984 c
+-0.4253 1.2363 -0.3325 1.1396 -0.0933 1.1206 c
+0.2124 1.0937 l
+0.5449 1.062 0.773 0.9355 0.773 0.58 c
+0.773 0.2119 0.46 0 0 0 c
+f
+Q
+q
+[1 0 0 1 11.682 7.4712] cm
+0 0 m
+-0.073 0.1738 -0.244 0.2861 -0.445 0.2861 c
+-0.645 0.2861 -0.815 0.1738 -0.889 0 c
+-0.931 -0.1045 -0.939 -0.1626 -0.947 -0.3169 c
+0.058 -0.3169 l
+0.05 -0.1626 0.043 -0.1045 0 0 c
+-0.947 -0.5259 m
+-0.947 -0.9434 -0.749 -1.1827 -0.387 -1.1827 c
+-0.167 -1.1827 -0.038 -1.1172 0.112 -0.9659 c
+0.302 -1.1324 l
+0.108 -1.3252 -0.07 -1.4258 -0.394 -1.4258 c
+-0.896 -1.4258 -1.225 -1.125 -1.225 -0.4522 c
+-1.225 0.1625 -0.928 0.5219 -0.445 0.5219 c
+0.046 0.5219 0.336 0.166 0.336 -0.398 c
+0.336 -0.5259 l
+-0.947 -0.5259 l
+f
+Q
+q
+[1 0 0 1 14.262 6.0688] cm
+0 0 m
+0 1.1704 l
+0 1.5068 -0.182 1.6768 -0.467 1.6768 c
+-0.753 1.6768 -0.939 1.5029 -0.939 1.1704 c
+-0.939 0 l
+-1.218 0 l
+-1.218 1.9009 l
+-0.939 1.9009 l
+-0.939 1.6924 l
+-0.803 1.8467 -0.618 1.9238 -0.406 1.9238 c
+-0.201 1.9238 -0.034 1.8623 0.081 1.7471 c
+0.217 1.6148 0.278 1.4365 0.278 1.2168 c
+0.278 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 16.251 6.0454] cm
+0 0 m
+-0.321 0 -0.572 0.0737 -0.781 0.2739 c
+-0.595 0.4599 l
+-0.445 0.3008 -0.24 0.2387 -0.004 0.2387 c
+0.309 0.2387 0.503 0.351 0.503 0.5757 c
+0.503 0.7417 0.406 0.8349 0.186 0.854 c
+-0.127 0.8803 l
+-0.498 0.9116 -0.696 1.0781 -0.696 1.3911 c
+-0.696 1.7387 -0.402 1.9477 0.004 1.9477 c
+0.274 1.9477 0.518 1.8818 0.688 1.7426 c
+0.506 1.5605 l
+0.371 1.6655 0.197 1.7119 0 1.7119 c
+-0.278 1.7119 -0.425 1.5918 -0.425 1.3984 c
+-0.425 1.2363 -0.332 1.1396 -0.092 1.1206 c
+0.212 1.0937 l
+0.545 1.062 0.773 0.9355 0.773 0.58 c
+0.773 0.2119 0.46 0 0 0 c
+f
+Q
+q
+[1 0 0 1 18.742 6.0454] cm
+0 0 m
+-0.479 0 -0.842 0.3242 -0.842 0.9736 c
+-0.842 1.6225 -0.479 1.9477 0 1.9477 c
+0.263 1.9477 0.429 1.8774 0.626 1.6655 c
+0.437 1.4878 l
+0.294 1.646 0.182 1.6997 0 1.6997 c
+-0.185 1.6997 -0.339 1.6269 -0.44 1.4839 c
+-0.529 1.3593 -0.564 1.2138 -0.564 0.9736 c
+-0.564 0.7343 -0.529 0.5864 -0.44 0.4633 c
+-0.339 0.3203 -0.185 0.247 0 0.247 c
+0.182 0.247 0.294 0.3047 0.437 0.4633 c
+0.626 0.2812 l
+0.429 0.0688 0.263 0 0 0 c
+f
+Q
+q
+[1 0 0 1 21.551 6.0688] cm
+0 0 m
+0 1.1743 l
+0 1.5068 -0.178 1.6768 -0.464 1.6768 c
+-0.75 1.6768 -0.94 1.5029 -0.94 1.1743 c
+-0.94 0 l
+-1.218 0 l
+-1.218 2.751 l
+-0.94 2.751 l
+-0.94 1.6924 l
+-0.8 1.8506 -0.619 1.9238 -0.406 1.9238 c
+0.023 1.9238 0.278 1.6494 0.278 1.2207 c
+0.278 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 24.02 6.9453] cm
+0 0 m
+-0.534 0 l
+-0.82 0 -0.959 -0.1157 -0.959 -0.3355 c
+-0.959 -0.5562 -0.823 -0.6602 -0.522 -0.6602 c
+-0.359 -0.6602 -0.216 -0.6494 -0.097 -0.5332 c
+-0.031 -0.4712 0 -0.3633 0 -0.2041 c
+0 0 l
+h
+0 -0.8765 m
+0 -0.6949 l
+-0.155 -0.8501 -0.294 -0.9004 -0.549 -0.9004 c
+-0.812 -0.9004 -0.966 -0.8501 -1.086 -0.7261 c
+-1.179 -0.6333 -1.229 -0.4903 -1.229 -0.3404 c
+-1.229 -0.0074 -0.998 0.2085 -0.573 0.2085 c
+0 0.2085 l
+0 0.3906 l
+0 0.6689 -0.139 0.8076 -0.487 0.8076 c
+-0.731 0.8076 -0.854 0.75 -0.966 0.5918 c
+-1.156 0.7656 l
+-0.986 0.9858 -0.792 1.0478 -0.483 1.0478 c
+0.027 1.0478 0.278 0.8276 0.278 0.4135 c
+0.278 -0.8765 l
+0 -0.8765 l
+f
+Q
+q
+[1 0 0 1 25.75 7.7456] cm
+0 0 m
+0 -1.6768 l
+-0.278 -1.6768 l
+-0.278 0 l
+-0.521 0 l
+-0.521 0.2119 l
+-0.278 0.2119 l
+-0.278 0.5717 l
+-0.278 0.854 -0.12 1.082 0.204 1.082 c
+0.406 1.082 l
+0.406 0.8432 l
+0.255 0.8432 l
+0.078 0.8432 0 0.7382 0 0.5639 c
+0 0.2119 l
+0.406 0.2119 l
+0.406 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 27.592 6.0688] cm
+0 0 m
+-0.325 0 -0.487 0.2275 -0.487 0.5098 c
+-0.487 1.6768 l
+-0.727 1.6768 l
+-0.727 1.8887 l
+-0.487 1.8887 l
+-0.487 2.4844 l
+-0.209 2.4844 l
+-0.209 1.8887 l
+0.197 1.8887 l
+0.197 1.6768 l
+-0.209 1.6768 l
+-0.209 0.5176 l
+-0.209 0.3438 -0.128 0.2393 0.05 0.2393 c
+0.197 0.2393 l
+0.197 0 l
+0 0 l
+f
+Q
+q
+0 0.06 34.56 69.105 re
+W
+q
+[1 0 0 1 7.749 0.022903] cm
+0 0 m
+0 0.21239 l
+-0.1348 0.058105 -0.3247 -0.022903 -0.5371 -0.022903 c
+-0.7422 -0.022903 -0.9121 0.039104 -1.0273 0.1548 c
+-1.1631 0.2861 -1.2207 0.4678 -1.2207 0.688 c
+-1.2207 1.9014 l
+-0.9424 1.9014 l
+-0.9424 0.7305 l
+-0.9424 0.3945 -0.7646 0.2241 -0.479 0.2241 c
+-0.1929 0.2241 -0.0039 0.3984 -0.0039 0.7305 c
+-0.0039 1.9014 l
+0.2744 1.9014 l
+0.2744 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 10.322 0.022903] cm
+0 0 m
+0 1.1709 l
+0 1.5078 -0.181 1.6777 -0.4673 1.6777 c
+-0.7534 1.6777 -0.939 1.5034 -0.939 1.1709 c
+-0.939 0 l
+-1.2173 0 l
+-1.2173 1.9014 l
+-0.939 1.9014 l
+-0.939 1.6929 l
+-0.8037 1.8477 -0.6182 1.9248 -0.4058 1.9248 c
+-0.201 1.9248 -0.035 1.8628 0.081 1.7471 c
+0.217 1.6157 0.278 1.438 0.278 1.2178 c
+0.278 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 12.319 1.7006] cm
+0 0 m
+-0.413 0 -0.479 -0.3564 -0.479 -0.727 c
+-0.479 -1.0981 -0.413 -1.4536 0 -1.4536 c
+0.413 -1.4536 0.475 -1.0981 0.475 -0.727 c
+0.475 -0.3564 0.413 0 0 0 c
+0.479 -1.6777 m
+0.479 -1.4492 l
+0.325 -1.6499 0.147 -1.7006 -0.062 -1.7006 c
+-0.255 -1.7006 -0.425 -1.6352 -0.526 -1.5346 c
+-0.719 -1.3413 -0.757 -1.0249 -0.757 -0.727 c
+-0.757 -0.4292 -0.719 -0.1123 -0.526 0.0811 c
+-0.425 0.1807 -0.255 0.2471 -0.062 0.2471 c
+0.147 0.2471 0.321 0.2012 0.475 0.0035 c
+0.475 1.0743 l
+0.753 1.0743 l
+0.753 -1.6777 l
+0.479 -1.6777 l
+f
+Q
+q
+[1 0 0 1 17.264 0.022903] cm
+0 0 m
+-0.838 1.4649 l
+-1.419 0.7691 l
+-1.419 0 l
+-1.712 0 l
+-1.712 2.752 l
+-1.419 2.752 l
+-1.419 1.1709 l
+-0.135 2.752 l
+0.224 2.752 l
+-0.642 1.689 l
+0.348 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 19.6 0.022903] cm
+0 0 m
+0 0.21239 l
+-0.135 0.058105 -0.324 -0.022903 -0.538 -0.022903 c
+-0.742 -0.022903 -0.912 0.039104 -1.028 0.1548 c
+-1.163 0.2861 -1.221 0.4678 -1.221 0.688 c
+-1.221 1.9014 l
+-0.942 1.9014 l
+-0.942 0.7305 l
+-0.942 0.3945 -0.765 0.2241 -0.479 0.2241 c
+-0.193 0.2241 -0.004 0.3984 -0.004 0.7305 c
+-0.004 1.9014 l
+0.274 1.9014 l
+0.274 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 21.431 0.022903] cm
+0 0 m
+-0.333 0 -0.483 0.21631 -0.483 0.5068 c
+-0.483 2.752 l
+-0.206 2.752 l
+-0.206 0.5176 l
+-0.206 0.3325 -0.144 0.2402 0.05 0.2402 c
+0.201 0.2402 l
+0.201 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 23.022 0.022903] cm
+0 0 m
+-0.325 0 -0.487 0.2285 -0.487 0.5098 c
+-0.487 1.6777 l
+-0.727 1.6777 l
+-0.727 1.8897 l
+-0.487 1.8897 l
+-0.487 2.4858 l
+-0.209 2.4858 l
+-0.209 1.8897 l
+0.197 1.8897 l
+0.197 1.6777 l
+-0.209 1.6777 l
+-0.209 0.5176 l
+-0.209 0.3442 -0.128 0.2402 0.05 0.2402 c
+0.197 0.2402 l
+0.197 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 25.359 0.022903] cm
+0 0 m
+0 0.21239 l
+-0.135 0.058105 -0.325 -0.022903 -0.537 -0.022903 c
+-0.742 -0.022903 -0.912 0.039104 -1.028 0.1548 c
+-1.163 0.2861 -1.221 0.4678 -1.221 0.688 c
+-1.221 1.9014 l
+-0.942 1.9014 l
+-0.942 0.7305 l
+-0.942 0.3945 -0.765 0.2241 -0.479 0.2241 c
+-0.193 0.2241 -0.004 0.3984 -0.004 0.7305 c
+-0.004 1.9014 l
+0.275 1.9014 l
+0.275 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 27.777 1.561] cm
+0 0 m
+-0.104 0.1045 -0.181 0.1396 -0.328 0.1396 c
+-0.607 0.1396 -0.784 -0.0806 -0.784 -0.3706 c
+-0.784 -1.5381 l
+-1.062 -1.5381 l
+-1.062 0.3633 l
+-0.784 0.3633 l
+-0.784 0.1318 l
+-0.68 0.29 -0.471 0.3862 -0.251 0.3862 c
+-0.069 0.3862 0.07 0.3442 0.205 0.209 c
+0 0 l
+f
+Q
+Q
+q
+[1 0 0 1 30.641 62.981] cm
+0 0 m
+-16.953 0 l
+-11.114 5.837 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 6.8892 57.179] cm
+0 0 m
+0 8.255 l
+11.988 11.986 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 6.1851 48.27] cm
+0 0 m
+-5.8384 5.837 l
+0 16.951 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 11.987 41.471] cm
+0 0 m
+-8.2568 0 l
+-11.987 11.986 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 15.065 34.928] cm
+0 0 m
+-11.115 5.837 l
+5.838 5.837 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 15.709 34.583] cm
+0 0 m
+11.987 11.986 l
+11.987 3.73 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 28.401 38.527] cm
+0 0 m
+0 16.951 l
+5.838 11.113 l
+0 0 l
+f
+Q
+q
+0 0.06 34.56 69.105 re
+W
+q
+[1 0 0 1 34.582 50.295] cm
+0 0 m
+-11.987 11.986 l
+-3.731 11.986 l
+0 0 l
+f
+Q
+Q
+Q
+showpage
+%%PageTrailer
+pdfEndPage
+%%Trailer
+end
+%%DocumentSuppliedResources:
+%%EOF
diff --git a/macros/latex/contrib/tudscr/logo/DDC-28.pdf b/macros/latex/contrib/tudscr/logo/DDC-28.pdf
new file mode 100644
index 0000000000..507881cd06
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/DDC-28.pdf
Binary files differ
diff --git a/macros/latex/contrib/tudscr/logo/DDC-30.eps b/macros/latex/contrib/tudscr/logo/DDC-30.eps
new file mode 100644
index 0000000000..37a9528c93
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/DDC-30.eps
@@ -0,0 +1,2420 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%XpdfVersion: 3.03
+%%Creator: Adobe Illustrator CS4
+%%Title: DDC-30.eps
+%%LanguageLevel: 2
+%%DocumentSuppliedResources: (atend)
+%%BoundingBox: 0 0 144 52
+%%HiResBoundingBox: 0 0 143.667 51.307
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset xpdf 3.03 0
+%%Copyright: Copyright 1996-2011 Glyph & Cog, LLC
+/xpdf 75 dict def xpdf begin
+% PDF special state
+/pdfDictSize 15 def
+/pdfSetup {
+ /setpagedevice where {
+ pop 2 dict begin
+ /Policies 1 dict dup begin /PageSize 6 def end def
+ { /Duplex true def } if
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfSetupPaper {
+ 2 array astore
+ /setpagedevice where {
+ pop 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfStartPage {
+ pdfDictSize dict begin
+ /pdfFillCS [] def
+ /pdfFillXform {} def
+ /pdfStrokeCS [] def
+ /pdfStrokeXform {} def
+ /pdfFill [0] def
+ /pdfStroke [0] def
+ /pdfFillOP false def
+ /pdfStrokeOP false def
+ /pdfLastFill false def
+ /pdfLastStroke false def
+ /pdfTextMat [1 0 0 1 0 0] def
+ /pdfFontSize 0 def
+ /pdfCharSpacing 0 def
+ /pdfTextRender 0 def
+ /pdfTextRise 0 def
+ /pdfWordSpacing 0 def
+ /pdfHorizScaling 1 def
+ /pdfTextClipPath [] def
+} def
+/pdfEndPage { end } def
+% PDF color state
+/cs { /pdfFillXform exch def dup /pdfFillCS exch def
+ setcolorspace } def
+/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def
+ setcolorspace } def
+/sc { pdfLastFill not { pdfFillCS setcolorspace } if
+ dup /pdfFill exch def aload pop pdfFillXform setcolor
+ /pdfLastFill true def /pdfLastStroke false def } def
+/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if
+ dup /pdfStroke exch def aload pop pdfStrokeXform setcolor
+ /pdfLastStroke true def /pdfLastFill false def } def
+/op { /pdfFillOP exch def
+ pdfLastFill { pdfFillOP setoverprint } if } def
+/OP { /pdfStrokeOP exch def
+ pdfLastStroke { pdfStrokeOP setoverprint } if } def
+/fCol {
+ pdfLastFill not {
+ pdfFillCS setcolorspace
+ pdfFill aload pop pdfFillXform setcolor
+ pdfFillOP setoverprint
+ /pdfLastFill true def /pdfLastStroke false def
+ } if
+} def
+/sCol {
+ pdfLastStroke not {
+ pdfStrokeCS setcolorspace
+ pdfStroke aload pop pdfStrokeXform setcolor
+ pdfStrokeOP setoverprint
+ /pdfLastStroke true def /pdfLastFill false def
+ } if
+} def
+% build a font
+/pdfMakeFont {
+ 4 3 roll findfont
+ 4 2 roll matrix scale makefont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /Encoding exch def
+ currentdict
+ end
+ definefont pop
+} def
+/pdfMakeFont16 {
+ exch findfont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /WMode exch def
+ currentdict
+ end
+ definefont pop
+} def
+% graphics state operators
+/q { gsave pdfDictSize dict begin } def
+/Q {
+ end grestore
+ /pdfLastFill where {
+ pop
+ pdfLastFill {
+ pdfFillOP setoverprint
+ } {
+ pdfStrokeOP setoverprint
+ } ifelse
+ } if
+} def
+/cm { concat } def
+/d { setdash } def
+/i { setflat } def
+/j { setlinejoin } def
+/J { setlinecap } def
+/M { setmiterlimit } def
+/w { setlinewidth } def
+% path segment operators
+/m { moveto } def
+/l { lineto } def
+/c { curveto } def
+/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+ neg 0 rlineto closepath } def
+/h { closepath } def
+% path painting operators
+/S { sCol stroke } def
+/Sf { fCol stroke } def
+/f { fCol fill } def
+/f* { fCol eofill } def
+% clipping operators
+/W { clip newpath } def
+/W* { eoclip newpath } def
+/Ws { strokepath clip newpath } def
+% text state operators
+/Tc { /pdfCharSpacing exch def } def
+/Tf { dup /pdfFontSize exch def
+ dup pdfHorizScaling mul exch matrix scale
+ pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put
+ exch findfont exch makefont setfont } def
+/Tr { /pdfTextRender exch def } def
+/Ts { /pdfTextRise exch def } def
+/Tw { /pdfWordSpacing exch def } def
+/Tz { /pdfHorizScaling exch def } def
+% text positioning operators
+/Td { pdfTextMat transform moveto } def
+/Tm { /pdfTextMat exch def } def
+% text string operators
+/xyshow where {
+ pop
+ /xyshow2 {
+ dup length array
+ 0 2 2 index length 1 sub {
+ 2 index 1 index 2 copy get 3 1 roll 1 add get
+ pdfTextMat dtransform
+ 4 2 roll 2 copy 6 5 roll put 1 add 3 1 roll dup 4 2 roll put
+ } for
+ exch pop
+ xyshow
+ } def
+}{
+ /xyshow2 {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval show moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval show moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/cshow where {
+ pop
+ /xycp {
+ 0 3 2 roll
+ {
+ pop pop currentpoint 3 2 roll
+ 1 string dup 0 4 3 roll put false charpath moveto
+ 2 copy get 2 index 2 index 1 add get
+ pdfTextMat dtransform rmoveto
+ 2 add
+ } exch cshow
+ pop pop
+ } def
+}{
+ /xycp {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval false charpath moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval false charpath moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/Tj {
+ fCol
+ 0 pdfTextRise pdfTextMat dtransform rmoveto
+ currentpoint 4 2 roll
+ pdfTextRender 1 and 0 eq {
+ 2 copy xyshow2
+ } if
+ pdfTextRender 3 and dup 1 eq exch 2 eq or {
+ 3 index 3 index moveto
+ 2 copy
+ currentfont /FontType get 3 eq { fCol } { sCol } ifelse
+ xycp currentpoint stroke moveto
+ } if
+ pdfTextRender 4 and 0 ne {
+ 4 2 roll moveto xycp
+ /pdfTextClipPath [ pdfTextClipPath aload pop
+ {/moveto cvx}
+ {/lineto cvx}
+ {/curveto cvx}
+ {/closepath cvx}
+ pathforall ] def
+ currentpoint newpath moveto
+ } {
+ pop pop pop pop
+ } ifelse
+ 0 pdfTextRise neg pdfTextMat dtransform rmoveto
+} def
+/TJm { 0.001 mul pdfFontSize mul pdfHorizScaling mul neg 0
+ pdfTextMat dtransform rmoveto } def
+/TJmV { 0.001 mul pdfFontSize mul neg 0 exch
+ pdfTextMat dtransform rmoveto } def
+/Tclip { pdfTextClipPath cvx exec clip newpath
+ /pdfTextClipPath [] def } def
+% Level 2/3 image operators
+/pdfImBuf 100 string def
+/pdfImStr {
+ 2 copy exch length lt {
+ 2 copy get exch 1 add exch
+ } {
+ ()
+ } ifelse
+} def
+/skipEOD {
+ { currentfile pdfImBuf readline
+ not { pop exit } if
+ (%-EOD-) eq { exit } if } loop
+} def
+/pdfIm { image skipEOD } def
+/pdfImM { fCol imagemask skipEOD } def
+/pr { 2 index 2 index 3 2 roll putinterval 4 add } def
+/pdfImClip {
+ gsave
+ 0 2 4 index length 1 sub {
+ dup 4 index exch 2 copy
+ get 5 index div put
+ 1 add 3 index exch 2 copy
+ get 3 index div put
+ } for
+ pop pop rectclip
+} def
+/pdfImClipEnd { grestore } def
+% shading operators
+/colordelta {
+ false 0 1 3 index length 1 sub {
+ dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt {
+ pop true
+ } if
+ } for
+ exch pop exch pop
+} def
+/funcCol { func n array astore } def
+/funcSH {
+ dup 0 eq {
+ true
+ } {
+ dup 6 eq {
+ false
+ } {
+ 4 index 4 index funcCol dup
+ 6 index 4 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 5 index 5 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 6 index 8 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ colordelta or or or
+ } ifelse
+ } ifelse
+ {
+ 1 add
+ 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch
+ 6 index 6 index 4 index 4 index 4 index funcSH
+ 2 index 6 index 6 index 4 index 4 index funcSH
+ 6 index 2 index 4 index 6 index 4 index funcSH
+ 5 3 roll 3 2 roll funcSH pop pop
+ } {
+ pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul
+ funcCol sc
+ dup 4 index exch mat transform m
+ 3 index 3 index mat transform l
+ 1 index 3 index mat transform l
+ mat transform l pop pop h f*
+ } ifelse
+} def
+/axialCol {
+ dup 0 lt {
+ pop t0
+ } {
+ dup 1 gt {
+ pop t1
+ } {
+ dt mul t0 add
+ } ifelse
+ } ifelse
+ func n array astore
+} def
+/axialSH {
+ dup 2 lt {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index axialCol 2 index axialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index axialSH
+ exch 3 2 roll axialSH
+ } {
+ pop 2 copy add 0.5 mul
+ axialCol sc
+ exch dup dx mul x0 add exch dy mul y0 add
+ 3 2 roll dup dx mul x0 add exch dy mul y0 add
+ dx abs dy abs ge {
+ 2 copy yMin sub dy mul dx div add yMin m
+ yMax sub dy mul dx div add yMax l
+ 2 copy yMax sub dy mul dx div add yMax l
+ yMin sub dy mul dx div add yMin l
+ h f*
+ } {
+ exch 2 copy xMin sub dx mul dy div add xMin exch m
+ xMax sub dx mul dy div add xMax exch l
+ exch 2 copy xMax sub dx mul dy div add xMax exch l
+ xMin sub dx mul dy div add xMin exch l
+ h f*
+ } ifelse
+ } ifelse
+} def
+/radialCol {
+ dup t0 lt {
+ pop t0
+ } {
+ dup t1 gt {
+ pop t1
+ } if
+ } ifelse
+ func n array astore
+} def
+/radialSH {
+ dup 0 eq {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index dt mul t0 add radialCol
+ 2 index dt mul t0 add radialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index radialSH
+ exch 3 2 roll radialSH
+ } {
+ pop 2 copy add 0.5 mul dt mul t0 add
+ radialCol sc
+ encl {
+ exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 0 360 arc h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 360 0 arcn h f
+ } {
+ 2 copy
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arcn
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arcn h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arc
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arc h f
+ } ifelse
+ } ifelse
+} def
+end
+%%EndResource
+%%EndProlog
+%%BeginSetup
+xpdf begin
+%%EndSetup
+pdfStartPage
+[] 0 d
+1 i
+0 j
+0 J
+10 M
+1 w
+/DeviceGray {} cs
+[0] sc
+/DeviceGray {} CS
+[0] SC
+false op
+false OP
+{} settransfer
+0 0 143.667 51.307 re
+W
+q
+q
+1 i
+0.059998 0.06 143.607 51.247 re
+W
+[/Separation (HKS 41 K) /DeviceRGB
+/xpdfSamples0 [
+1
+1
+1
+0.984314
+0.984314
+0.988235
+0.980392
+0.980392
+0.988235
+0.964706
+0.968627
+0.980392
+0.960784
+0.960784
+0.976471
+0.94902
+0.952941
+0.964706
+0.945098
+0.94902
+0.964706
+0.937255
+0.941176
+0.956863
+0.933333
+0.933333
+0.952941
+0.92549
+0.929412
+0.94902
+0.921569
+0.92549
+0.94902
+0.913725
+0.917647
+0.941176
+0.909804
+0.913725
+0.941176
+0.901961
+0.905882
+0.937255
+0.898039
+0.901961
+0.933333
+0.890196
+0.894118
+0.92549
+0.886275
+0.894118
+0.92549
+0.878431
+0.886275
+0.917647
+0.87451
+0.882353
+0.917647
+0.870588
+0.878431
+0.913725
+0.866667
+0.87451
+0.909804
+0.858824
+0.866667
+0.905882
+0.854902
+0.866667
+0.905882
+0.847059
+0.858824
+0.901961
+0.843137
+0.854902
+0.898039
+0.839216
+0.847059
+0.890196
+0.835294
+0.847059
+0.890196
+0.827451
+0.839216
+0.886275
+0.823529
+0.835294
+0.882353
+0.815686
+0.831373
+0.882353
+0.811765
+0.827451
+0.878431
+0.807843
+0.819608
+0.87451
+0.803922
+0.819608
+0.87451
+0.796078
+0.811765
+0.870588
+0.792157
+0.807843
+0.866667
+0.788235
+0.803922
+0.858824
+0.784314
+0.8
+0.858824
+0.776471
+0.796078
+0.854902
+0.772549
+0.792157
+0.854902
+0.768627
+0.788235
+0.85098
+0.764706
+0.784314
+0.847059
+0.756863
+0.776471
+0.843137
+0.756863
+0.776471
+0.843137
+0.74902
+0.772549
+0.839216
+0.745098
+0.768627
+0.839216
+0.741176
+0.760784
+0.831373
+0.737255
+0.760784
+0.831373
+0.729412
+0.752941
+0.823529
+0.729412
+0.74902
+0.823529
+0.721569
+0.745098
+0.819608
+0.717647
+0.741176
+0.819608
+0.713725
+0.737255
+0.815686
+0.709804
+0.733333
+0.811765
+0.701961
+0.729412
+0.807843
+0.701961
+0.72549
+0.807843
+0.694118
+0.721569
+0.8
+0.690196
+0.717647
+0.8
+0.686275
+0.713725
+0.796078
+0.682353
+0.709804
+0.796078
+0.678431
+0.705882
+0.792157
+0.67451
+0.701961
+0.792157
+0.666667
+0.698039
+0.784314
+0.666667
+0.694118
+0.784314
+0.658824
+0.690196
+0.780392
+0.654902
+0.686275
+0.780392
+0.65098
+0.682353
+0.772549
+0.647059
+0.682353
+0.772549
+0.643137
+0.67451
+0.768627
+0.639216
+0.670588
+0.768627
+0.635294
+0.670588
+0.764706
+0.631373
+0.666667
+0.760784
+0.623529
+0.658824
+0.756863
+0.623529
+0.658824
+0.756863
+0.615686
+0.654902
+0.752941
+0.615686
+0.65098
+0.752941
+0.607843
+0.643137
+0.745098
+0.603922
+0.643137
+0.745098
+0.6
+0.639216
+0.741176
+0.596078
+0.635294
+0.741176
+0.592157
+0.631373
+0.737255
+0.588235
+0.627451
+0.737255
+0.584314
+0.623529
+0.733333
+0.580392
+0.619608
+0.729412
+0.576471
+0.619608
+0.72549
+0.572549
+0.615686
+0.72549
+0.568627
+0.607843
+0.717647
+0.564706
+0.607843
+0.717647
+0.560784
+0.603922
+0.713725
+0.556863
+0.6
+0.713725
+0.552941
+0.596078
+0.709804
+0.54902
+0.596078
+0.709804
+0.545098
+0.588235
+0.705882
+0.541176
+0.588235
+0.701961
+0.537255
+0.584314
+0.701961
+0.533333
+0.580392
+0.698039
+0.529412
+0.576471
+0.694118
+0.52549
+0.576471
+0.694118
+0.521569
+0.568627
+0.690196
+0.517647
+0.568627
+0.686275
+0.513725
+0.560784
+0.682353
+0.509804
+0.560784
+0.682353
+0.505882
+0.556863
+0.678431
+0.501961
+0.552941
+0.678431
+0.498039
+0.54902
+0.67451
+0.494118
+0.54902
+0.67451
+0.490196
+0.541176
+0.666667
+0.490196
+0.541176
+0.666667
+0.482353
+0.537255
+0.662745
+0.482353
+0.533333
+0.662745
+0.478431
+0.529412
+0.658824
+0.47451
+0.529412
+0.658824
+0.470588
+0.52549
+0.654902
+0.466667
+0.521569
+0.654902
+0.462745
+0.517647
+0.65098
+0.458824
+0.517647
+0.65098
+0.454902
+0.509804
+0.643137
+0.454902
+0.509804
+0.643137
+0.447059
+0.505882
+0.639216
+0.447059
+0.501961
+0.639216
+0.443137
+0.498039
+0.635294
+0.439216
+0.498039
+0.635294
+0.435294
+0.494118
+0.631373
+0.431373
+0.490196
+0.631373
+0.427451
+0.490196
+0.627451
+0.423529
+0.486275
+0.627451
+0.419608
+0.482353
+0.619608
+0.419608
+0.478431
+0.619608
+0.411765
+0.478431
+0.615686
+0.407843
+0.47451
+0.615686
+0.403922
+0.470588
+0.611765
+0.4
+0.470588
+0.611765
+0.396078
+0.466667
+0.607843
+0.396078
+0.462745
+0.607843
+0.392157
+0.458824
+0.603922
+0.388235
+0.458824
+0.603922
+0.384314
+0.45098
+0.596078
+0.380392
+0.45098
+0.596078
+0.376471
+0.447059
+0.592157
+0.376471
+0.447059
+0.592157
+0.372549
+0.439216
+0.588235
+0.368627
+0.439216
+0.588235
+0.364706
+0.435294
+0.584314
+0.360784
+0.435294
+0.584314
+0.356863
+0.431373
+0.580392
+0.356863
+0.427451
+0.580392
+0.352941
+0.423529
+0.572549
+0.34902
+0.423529
+0.572549
+0.345098
+0.419608
+0.572549
+0.341176
+0.419608
+0.568627
+0.337255
+0.415686
+0.564706
+0.337255
+0.411765
+0.564706
+0.333333
+0.407843
+0.560784
+0.329412
+0.407843
+0.560784
+0.32549
+0.403922
+0.556863
+0.321569
+0.403922
+0.556863
+0.321569
+0.4
+0.552941
+0.317647
+0.396078
+0.552941
+0.313725
+0.392157
+0.54902
+0.309804
+0.392157
+0.54902
+0.305882
+0.388235
+0.545098
+0.301961
+0.388235
+0.545098
+0.298039
+0.384314
+0.541176
+0.298039
+0.380392
+0.541176
+0.294118
+0.376471
+0.537255
+0.290196
+0.376471
+0.537255
+0.286275
+0.372549
+0.529412
+0.286275
+0.372549
+0.529412
+0.282353
+0.368627
+0.529412
+0.278431
+0.368627
+0.52549
+0.27451
+0.364706
+0.521569
+0.270588
+0.360784
+0.521569
+0.266667
+0.360784
+0.521569
+0.266667
+0.356863
+0.517647
+0.262745
+0.352941
+0.513725
+0.258824
+0.352941
+0.513725
+0.254902
+0.34902
+0.509804
+0.25098
+0.34902
+0.509804
+0.247059
+0.345098
+0.505882
+0.247059
+0.341176
+0.505882
+0.243137
+0.341176
+0.501961
+0.239216
+0.337255
+0.501961
+0.235294
+0.337255
+0.498039
+0.231373
+0.333333
+0.498039
+0.231373
+0.329412
+0.494118
+0.227451
+0.329412
+0.494118
+0.223529
+0.32549
+0.490196
+0.219608
+0.32549
+0.490196
+0.215686
+0.321569
+0.486275
+0.211765
+0.321569
+0.486275
+0.207843
+0.317647
+0.482353
+0.207843
+0.313725
+0.482353
+0.203922
+0.313725
+0.482353
+0.2
+0.309804
+0.478431
+0.196078
+0.309804
+0.478431
+0.192157
+0.305882
+0.478431
+0.188235
+0.305882
+0.470588
+0.188235
+0.301961
+0.470588
+0.184314
+0.301961
+0.470588
+0.180392
+0.298039
+0.466667
+0.176471
+0.294118
+0.466667
+0.172549
+0.294118
+0.462745
+0.168627
+0.290196
+0.462745
+0.164706
+0.290196
+0.462745
+0.160784
+0.286275
+0.458824
+0.156863
+0.286275
+0.458824
+0.152941
+0.282353
+0.454902
+0.152941
+0.282353
+0.45098
+0.145098
+0.278431
+0.45098
+0.145098
+0.278431
+0.45098
+0.141176
+0.27451
+0.447059
+0.137255
+0.270588
+0.447059
+0.133333
+0.270588
+0.443137
+0.129412
+0.270588
+0.443137
+0.12549
+0.266667
+0.439216
+0.121569
+0.266667
+0.439216
+0.117647
+0.262745
+0.435294
+0.113725
+0.258824
+0.435294
+0.105882
+0.258824
+0.431373
+0.105882
+0.254902
+0.431373
+0.098039
+0.254902
+0.427451
+0.094118
+0.25098
+0.427451
+0.090196
+0.25098
+0.427451
+0.086275
+0.247059
+0.423529
+0.078431
+0.247059
+0.423529
+0.07451
+0.247059
+0.423529
+0.070588
+0.243137
+0.419608
+0.062745
+0.239216
+0.415686
+0.058824
+0.239216
+0.415686
+0.05098
+0.239216
+0.415686
+0.043137
+0.235294
+0.411765
+0.039216
+0.231373
+0.411765
+0.031373
+0.231373
+0.407843
+0.023529
+0.227451
+0.407843
+0.019608
+0.227451
+0.403922
+0.007843
+0.227451
+0.403922
+0.003922
+0.223529
+0.4
+0
+0.219608
+0.4
+0
+0.219608
+0.396078
+0
+0.219608
+0.396078
+0
+0.215686
+0.396078
+0
+0.211765
+0.392157
+0
+0.211765
+0.392157
+0
+0.211765
+0.392157
+0
+0.207843
+0.388235
+0
+0.207843
+0.388235
+0
+0.203922
+0.384314
+0
+0.203922
+0.384314
+0
+0.2
+0.380392
+0
+0.2
+0.380392
+0
+0.196078
+0.380392
+0
+0.196078
+0.376471
+0
+0.192157
+0.376471
+0
+0.192157
+0.376471
+0
+0.188235
+0.372549
+0
+0.184314
+0.368627
+] def
+{ 2 array 1 array 3 2 roll
+0 sub 254 mul 0 add
+dup 0 lt { pop 0 } { dup 254 gt { pop 254 } if } ifelse
+dup floor cvi exch dup ceiling cvi exch 2 index sub
+3 index 0 3 2 roll put
+3 index 1 3 2 roll put
+2 index 0 3 2 roll put
+xpdfSamples0
+2 index 0 get
+3 mul 0 add get
+xpdfSamples0
+3 index 1 get
+3 mul 0 add get
+2 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+xpdfSamples0
+3 index 0 get
+3 mul 1 add get
+xpdfSamples0
+4 index 1 get
+3 mul 1 add get
+3 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+xpdfSamples0
+4 index 0 get
+3 mul 2 add get
+xpdfSamples0
+5 index 1 get
+3 mul 2 add get
+4 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+5 3 roll pop pop }
+] {} cs
+[1] sc
+[0] sc
+false op
+false OP
+q
+[1 0 0 1 5.9912 38.534] cm
+0 0 m
+-0.4922 0.549 -1.1631 0.8 -2.0098 0.8 c
+-4.1963 0.8 l
+-4.1963 -7.829 l
+-2.0098 -7.829 l
+-1.1631 -7.829 -0.4922 -7.577 0 -7.028 c
+0.624 -6.345 0.6328 -5.061 0.6328 -3.428 c
+0.6328 -1.8 0.624 -0.679 0 0 c
+1.2373 -8.326 m
+0.4932 -9.08 -0.5947 -9.442 -1.8242 -9.442 c
+-5.9912 -9.442 l
+-5.9912 2.414 l
+-1.8242 2.414 l
+-0.5947 2.414 0.4932 2.047 1.2373 1.298 c
+2.5215 0.014 2.4375 -1.716 2.4375 -3.428 c
+2.4375 -5.145 2.5215 -7.043 1.2373 -8.326 c
+f
+Q
+Q
+[/Separation (HKS 41 K) /DeviceRGB
+/xpdfSamples1 [
+1
+1
+1
+0.984314
+0.984314
+0.988235
+0.980392
+0.980392
+0.988235
+0.964706
+0.968627
+0.980392
+0.960784
+0.960784
+0.976471
+0.94902
+0.952941
+0.964706
+0.945098
+0.94902
+0.964706
+0.937255
+0.941176
+0.956863
+0.933333
+0.933333
+0.952941
+0.92549
+0.929412
+0.94902
+0.921569
+0.92549
+0.94902
+0.913725
+0.917647
+0.941176
+0.909804
+0.913725
+0.941176
+0.901961
+0.905882
+0.937255
+0.898039
+0.901961
+0.933333
+0.890196
+0.894118
+0.92549
+0.886275
+0.894118
+0.92549
+0.878431
+0.886275
+0.917647
+0.87451
+0.882353
+0.917647
+0.870588
+0.878431
+0.913725
+0.866667
+0.87451
+0.909804
+0.858824
+0.866667
+0.905882
+0.854902
+0.866667
+0.905882
+0.847059
+0.858824
+0.901961
+0.843137
+0.854902
+0.898039
+0.839216
+0.847059
+0.890196
+0.835294
+0.847059
+0.890196
+0.827451
+0.839216
+0.886275
+0.823529
+0.835294
+0.882353
+0.815686
+0.831373
+0.882353
+0.811765
+0.827451
+0.878431
+0.807843
+0.819608
+0.87451
+0.803922
+0.819608
+0.87451
+0.796078
+0.811765
+0.870588
+0.792157
+0.807843
+0.866667
+0.788235
+0.803922
+0.858824
+0.784314
+0.8
+0.858824
+0.776471
+0.796078
+0.854902
+0.772549
+0.792157
+0.854902
+0.768627
+0.788235
+0.85098
+0.764706
+0.784314
+0.847059
+0.756863
+0.776471
+0.843137
+0.756863
+0.776471
+0.843137
+0.74902
+0.772549
+0.839216
+0.745098
+0.768627
+0.839216
+0.741176
+0.760784
+0.831373
+0.737255
+0.760784
+0.831373
+0.729412
+0.752941
+0.823529
+0.729412
+0.74902
+0.823529
+0.721569
+0.745098
+0.819608
+0.717647
+0.741176
+0.819608
+0.713725
+0.737255
+0.815686
+0.709804
+0.733333
+0.811765
+0.701961
+0.729412
+0.807843
+0.701961
+0.72549
+0.807843
+0.694118
+0.721569
+0.8
+0.690196
+0.717647
+0.8
+0.686275
+0.713725
+0.796078
+0.682353
+0.709804
+0.796078
+0.678431
+0.705882
+0.792157
+0.67451
+0.701961
+0.792157
+0.666667
+0.698039
+0.784314
+0.666667
+0.694118
+0.784314
+0.658824
+0.690196
+0.780392
+0.654902
+0.686275
+0.780392
+0.65098
+0.682353
+0.772549
+0.647059
+0.682353
+0.772549
+0.643137
+0.67451
+0.768627
+0.639216
+0.670588
+0.768627
+0.635294
+0.670588
+0.764706
+0.631373
+0.666667
+0.760784
+0.623529
+0.658824
+0.756863
+0.623529
+0.658824
+0.756863
+0.615686
+0.654902
+0.752941
+0.615686
+0.65098
+0.752941
+0.607843
+0.643137
+0.745098
+0.603922
+0.643137
+0.745098
+0.6
+0.639216
+0.741176
+0.596078
+0.635294
+0.741176
+0.592157
+0.631373
+0.737255
+0.588235
+0.627451
+0.737255
+0.584314
+0.623529
+0.733333
+0.580392
+0.619608
+0.729412
+0.576471
+0.619608
+0.72549
+0.572549
+0.615686
+0.72549
+0.568627
+0.607843
+0.717647
+0.564706
+0.607843
+0.717647
+0.560784
+0.603922
+0.713725
+0.556863
+0.6
+0.713725
+0.552941
+0.596078
+0.709804
+0.54902
+0.596078
+0.709804
+0.545098
+0.588235
+0.705882
+0.541176
+0.588235
+0.701961
+0.537255
+0.584314
+0.701961
+0.533333
+0.580392
+0.698039
+0.529412
+0.576471
+0.694118
+0.52549
+0.576471
+0.694118
+0.521569
+0.568627
+0.690196
+0.517647
+0.568627
+0.686275
+0.513725
+0.560784
+0.682353
+0.509804
+0.560784
+0.682353
+0.505882
+0.556863
+0.678431
+0.501961
+0.552941
+0.678431
+0.498039
+0.54902
+0.67451
+0.494118
+0.54902
+0.67451
+0.490196
+0.541176
+0.666667
+0.490196
+0.541176
+0.666667
+0.482353
+0.537255
+0.662745
+0.482353
+0.533333
+0.662745
+0.478431
+0.529412
+0.658824
+0.47451
+0.529412
+0.658824
+0.470588
+0.52549
+0.654902
+0.466667
+0.521569
+0.654902
+0.462745
+0.517647
+0.65098
+0.458824
+0.517647
+0.65098
+0.454902
+0.509804
+0.643137
+0.454902
+0.509804
+0.643137
+0.447059
+0.505882
+0.639216
+0.447059
+0.501961
+0.639216
+0.443137
+0.498039
+0.635294
+0.439216
+0.498039
+0.635294
+0.435294
+0.494118
+0.631373
+0.431373
+0.490196
+0.631373
+0.427451
+0.490196
+0.627451
+0.423529
+0.486275
+0.627451
+0.419608
+0.482353
+0.619608
+0.419608
+0.478431
+0.619608
+0.411765
+0.478431
+0.615686
+0.407843
+0.47451
+0.615686
+0.403922
+0.470588
+0.611765
+0.4
+0.470588
+0.611765
+0.396078
+0.466667
+0.607843
+0.396078
+0.462745
+0.607843
+0.392157
+0.458824
+0.603922
+0.388235
+0.458824
+0.603922
+0.384314
+0.45098
+0.596078
+0.380392
+0.45098
+0.596078
+0.376471
+0.447059
+0.592157
+0.376471
+0.447059
+0.592157
+0.372549
+0.439216
+0.588235
+0.368627
+0.439216
+0.588235
+0.364706
+0.435294
+0.584314
+0.360784
+0.435294
+0.584314
+0.356863
+0.431373
+0.580392
+0.356863
+0.427451
+0.580392
+0.352941
+0.423529
+0.572549
+0.34902
+0.423529
+0.572549
+0.345098
+0.419608
+0.572549
+0.341176
+0.419608
+0.568627
+0.337255
+0.415686
+0.564706
+0.337255
+0.411765
+0.564706
+0.333333
+0.407843
+0.560784
+0.329412
+0.407843
+0.560784
+0.32549
+0.403922
+0.556863
+0.321569
+0.403922
+0.556863
+0.321569
+0.4
+0.552941
+0.317647
+0.396078
+0.552941
+0.313725
+0.392157
+0.54902
+0.309804
+0.392157
+0.54902
+0.305882
+0.388235
+0.545098
+0.301961
+0.388235
+0.545098
+0.298039
+0.384314
+0.541176
+0.298039
+0.380392
+0.541176
+0.294118
+0.376471
+0.537255
+0.290196
+0.376471
+0.537255
+0.286275
+0.372549
+0.529412
+0.286275
+0.372549
+0.529412
+0.282353
+0.368627
+0.529412
+0.278431
+0.368627
+0.52549
+0.27451
+0.364706
+0.521569
+0.270588
+0.360784
+0.521569
+0.266667
+0.360784
+0.521569
+0.266667
+0.356863
+0.517647
+0.262745
+0.352941
+0.513725
+0.258824
+0.352941
+0.513725
+0.254902
+0.34902
+0.509804
+0.25098
+0.34902
+0.509804
+0.247059
+0.345098
+0.505882
+0.247059
+0.341176
+0.505882
+0.243137
+0.341176
+0.501961
+0.239216
+0.337255
+0.501961
+0.235294
+0.337255
+0.498039
+0.231373
+0.333333
+0.498039
+0.231373
+0.329412
+0.494118
+0.227451
+0.329412
+0.494118
+0.223529
+0.32549
+0.490196
+0.219608
+0.32549
+0.490196
+0.215686
+0.321569
+0.486275
+0.211765
+0.321569
+0.486275
+0.207843
+0.317647
+0.482353
+0.207843
+0.313725
+0.482353
+0.203922
+0.313725
+0.482353
+0.2
+0.309804
+0.478431
+0.196078
+0.309804
+0.478431
+0.192157
+0.305882
+0.478431
+0.188235
+0.305882
+0.470588
+0.188235
+0.301961
+0.470588
+0.184314
+0.301961
+0.470588
+0.180392
+0.298039
+0.466667
+0.176471
+0.294118
+0.466667
+0.172549
+0.294118
+0.462745
+0.168627
+0.290196
+0.462745
+0.164706
+0.290196
+0.462745
+0.160784
+0.286275
+0.458824
+0.156863
+0.286275
+0.458824
+0.152941
+0.282353
+0.454902
+0.152941
+0.282353
+0.45098
+0.145098
+0.278431
+0.45098
+0.145098
+0.278431
+0.45098
+0.141176
+0.27451
+0.447059
+0.137255
+0.270588
+0.447059
+0.133333
+0.270588
+0.443137
+0.129412
+0.270588
+0.443137
+0.12549
+0.266667
+0.439216
+0.121569
+0.266667
+0.439216
+0.117647
+0.262745
+0.435294
+0.113725
+0.258824
+0.435294
+0.105882
+0.258824
+0.431373
+0.105882
+0.254902
+0.431373
+0.098039
+0.254902
+0.427451
+0.094118
+0.25098
+0.427451
+0.090196
+0.25098
+0.427451
+0.086275
+0.247059
+0.423529
+0.078431
+0.247059
+0.423529
+0.07451
+0.247059
+0.423529
+0.070588
+0.243137
+0.419608
+0.062745
+0.239216
+0.415686
+0.058824
+0.239216
+0.415686
+0.05098
+0.239216
+0.415686
+0.043137
+0.235294
+0.411765
+0.039216
+0.231373
+0.411765
+0.031373
+0.231373
+0.407843
+0.023529
+0.227451
+0.407843
+0.019608
+0.227451
+0.403922
+0.007843
+0.227451
+0.403922
+0.003922
+0.223529
+0.4
+0
+0.219608
+0.4
+0
+0.219608
+0.396078
+0
+0.219608
+0.396078
+0
+0.215686
+0.396078
+0
+0.211765
+0.392157
+0
+0.211765
+0.392157
+0
+0.211765
+0.392157
+0
+0.207843
+0.388235
+0
+0.207843
+0.388235
+0
+0.203922
+0.384314
+0
+0.203922
+0.384314
+0
+0.2
+0.380392
+0
+0.2
+0.380392
+0
+0.196078
+0.380392
+0
+0.196078
+0.376471
+0
+0.192157
+0.376471
+0
+0.192157
+0.376471
+0
+0.188235
+0.372549
+0
+0.184314
+0.368627
+] def
+{ 2 array 1 array 3 2 roll
+0 sub 254 mul 0 add
+dup 0 lt { pop 0 } { dup 254 gt { pop 254 } if } ifelse
+dup floor cvi exch dup ceiling cvi exch 2 index sub
+3 index 0 3 2 roll put
+3 index 1 3 2 roll put
+2 index 0 3 2 roll put
+xpdfSamples1
+2 index 0 get
+3 mul 0 add get
+xpdfSamples1
+3 index 1 get
+3 mul 0 add get
+2 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+xpdfSamples1
+3 index 0 get
+3 mul 1 add get
+xpdfSamples1
+4 index 1 get
+3 mul 1 add get
+3 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+xpdfSamples1
+4 index 0 get
+3 mul 2 add get
+xpdfSamples1
+5 index 1 get
+3 mul 2 add get
+4 index 0 get dup
+3 2 roll mul exch 1 exch sub 3 2 roll mul add
+1 1 roll
+1 mul 0 add
+dup 0 lt { pop 0 } { dup 1 gt { pop 1 } if } ifelse
+5 3 roll pop pop }
+] {} cs
+[1] sc
+[0] sc
+false op
+false OP
+1 i
+q
+[1 0 0 1 17.221 39.334] cm
+0 0 m
+-2.67 0 l
+-2.67 -3.717 l
+0 -3.717 l
+1.2 -3.717 2.019 -3.033 2.019 -1.865 c
+2.019 -0.698 1.2 0 0 0 c
+2.084 -10.243 m
+-0.419 -5.247 l
+-2.67 -5.247 l
+-2.67 -10.243 l
+-4.466 -10.243 l
+-4.466 1.614 l
+0.13 1.614 l
+2.381 1.614 3.814 0.167 3.814 -1.852 c
+3.814 -3.549 2.781 -4.633 1.451 -4.996 c
+4.176 -10.243 l
+2.084 -10.243 l
+f
+Q
+q
+[1 0 0 1 25.331 29.091] cm
+0 0 m
+0 11.856 l
+7.572 11.856 l
+7.572 10.243 l
+1.796 10.243 l
+1.796 6.777 l
+6.727 6.777 l
+6.727 5.182 l
+1.796 5.182 l
+1.796 1.614 l
+7.572 1.614 l
+7.572 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 40.179 28.989] cm
+0 0 m
+-1.777 0 -3.06 0.419 -4.196 1.568 c
+-2.996 2.749 l
+-2.131 1.884 -1.182 1.619 0.037 1.619 c
+1.581 1.619 2.484 2.284 2.484 3.433 c
+2.484 3.949 2.335 4.382 2.019 4.661 c
+1.721 4.949 1.423 5.066 0.716 5.164 c
+-0.679 5.363 l
+-1.647 5.498 -2.409 5.829 -2.93 6.317 c
+-3.508 6.861 -3.795 7.61 -3.795 8.582 c
+-3.795 10.643 -2.298 12.057 0.167 12.057 c
+1.739 12.057 2.828 11.662 3.852 10.708 c
+2.698 9.578 l
+1.973 10.28 1.116 10.494 0.121 10.494 c
+-1.273 10.494 -2.047 9.694 -2.047 8.643 c
+-2.047 8.215 -1.907 7.833 -1.6 7.545 c
+-1.293 7.28 -0.818 7.08 -0.261 6.996 c
+1.088 6.796 l
+2.186 6.628 2.8 6.363 3.303 5.912 c
+3.953 5.35 4.261 4.498 4.261 3.484 c
+4.261 1.303 2.484 0 0 0 c
+f
+Q
+q
+[1 0 0 1 54.524 38.534] cm
+0 0 m
+-0.502 0.549 -1.171 0.8 -2.018 0.8 c
+-4.204 0.8 l
+-4.204 -7.829 l
+-2.018 -7.829 l
+-1.171 -7.829 -0.502 -7.577 0 -7.028 c
+0.615 -6.345 0.633 -5.061 0.633 -3.428 c
+0.633 -1.8 0.615 -0.679 0 0 c
+1.229 -8.326 m
+0.485 -9.08 -0.604 -9.442 -1.832 -9.442 c
+-6 -9.442 l
+-6 2.414 l
+-1.832 2.414 l
+-0.604 2.414 0.485 2.047 1.229 1.298 c
+2.513 0.014 2.43 -1.716 2.43 -3.428 c
+2.43 -5.145 2.513 -7.043 1.229 -8.326 c
+f
+Q
+q
+[1 0 0 1 61.278 29.091] cm
+0 0 m
+0 11.856 l
+7.583 11.856 l
+7.583 10.243 l
+1.806 10.243 l
+1.806 6.777 l
+6.729 6.777 l
+6.729 5.182 l
+1.806 5.182 l
+1.806 1.614 l
+7.583 1.614 l
+7.583 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 80.268 29.091] cm
+0 0 m
+-5.48 8.345 l
+-5.48 0 l
+-7.275 0 l
+-7.275 11.856 l
+-5.629 11.856 l
+-0.15 3.53 l
+-0.15 11.856 l
+1.646 11.856 l
+1.646 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 19.648 10.201] cm
+0 0 m
+-1.897 0 -3.759 1.163 -3.759 4.331 c
+-3.759 7.498 -1.897 8.643 0 8.643 c
+1.163 8.643 1.981 8.312 2.781 7.461 c
+1.619 6.331 l
+1.089 6.912 0.67 7.13 0 7.13 c
+-0.642 7.13 -1.2 6.861 -1.562 6.377 c
+-1.926 5.912 -2.065 5.312 -2.065 4.331 c
+-2.065 3.344 -1.926 2.731 -1.562 2.265 c
+-1.2 1.781 -0.642 1.516 0 1.516 c
+0.67 1.516 1.089 1.735 1.619 2.312 c
+2.781 1.2 l
+1.981 0.349 1.163 0 0 0 c
+f
+Q
+q
+[1 0 0 1 30.123 16.843] cm
+0 0 m
+-0.316 0.321 -0.743 0.488 -1.247 0.488 c
+-1.748 0.488 -2.168 0.321 -2.484 0 c
+-2.995 -0.516 -3.061 -1.396 -3.061 -2.311 c
+-3.061 -3.228 -2.995 -4.107 -2.484 -4.628 c
+-2.168 -4.944 -1.748 -5.126 -1.247 -5.126 c
+-0.743 -5.126 -0.316 -4.944 0 -4.628 c
+0.512 -4.107 0.586 -3.228 0.586 -2.311 c
+0.586 -1.396 0.512 -0.516 0 0 c
+1.285 -5.642 m
+0.735 -6.209 -0.103 -6.642 -1.247 -6.642 c
+-2.4 -6.642 -3.209 -6.209 -3.759 -5.642 c
+-4.559 -4.809 -4.764 -3.744 -4.764 -2.311 c
+-4.764 -0.897 -4.559 0.168 -3.759 1 c
+-3.209 1.568 -2.4 2.005 -1.247 2.005 c
+-0.103 2.005 0.735 1.568 1.285 1 c
+2.084 0.168 2.279 -0.897 2.279 -2.311 c
+2.279 -3.744 2.084 -4.809 1.285 -5.642 c
+f
+Q
+q
+[1 0 0 1 41.519 10.298] cm
+0 0 m
+0 5.145 l
+0 6.465 -0.754 7.033 -1.703 7.033 c
+-2.651 7.033 -3.452 6.447 -3.452 5.145 c
+-3.452 0 l
+-5.154 0 l
+-5.154 8.447 l
+-3.489 8.447 l
+-3.489 7.596 l
+-2.903 8.229 -2.084 8.545 -1.236 8.545 c
+-0.371 8.545 0.344 8.266 0.847 7.782 c
+1.488 7.149 1.692 6.349 1.692 5.396 c
+1.692 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 50.822 10.201] cm
+0 0 m
+-1.897 0 -3.759 1.163 -3.759 4.331 c
+-3.759 7.498 -1.897 8.643 0 8.643 c
+1.163 8.643 1.981 8.312 2.781 7.461 c
+1.618 6.331 l
+1.088 6.912 0.67 7.13 0 7.13 c
+-0.651 7.13 -1.199 6.861 -1.562 6.377 c
+-1.926 5.912 -2.064 5.312 -2.064 4.331 c
+-2.064 3.344 -1.926 2.731 -1.562 2.265 c
+-1.199 1.781 -0.651 1.516 0 1.516 c
+0.67 1.516 1.088 1.735 1.618 2.312 c
+2.781 1.2 l
+1.981 0.349 1.163 0 0 0 c
+f
+Q
+q
+[1 0 0 1 61.745 16.364] cm
+0 0 m
+-0.262 0.633 -0.865 1.066 -1.666 1.066 c
+-2.466 1.066 -3.08 0.633 -3.341 0 c
+-3.509 -0.386 -3.545 -0.637 -3.564 -1.149 c
+0.231 -1.149 l
+0.222 -0.637 0.166 -0.386 0 0 c
+-3.564 -2.335 m
+-3.564 -3.782 -2.791 -4.698 -1.415 -4.698 c
+-0.467 -4.698 0.036 -4.428 0.632 -3.833 c
+1.72 -4.851 l
+0.854 -5.712 0.036 -6.163 -1.443 -6.163 c
+-3.564 -6.163 -5.247 -5.047 -5.247 -1.832 c
+-5.247 0.898 -3.825 2.484 -1.666 2.484 c
+0.603 2.484 1.915 0.819 1.915 -1.581 c
+1.915 -2.335 l
+-3.564 -2.335 l
+f
+Q
+q
+[1 0 0 1 71.039 17.331] cm
+0 0 m
+-1.526 0 -1.768 -1.302 -1.768 -2.8 c
+-1.768 -4.302 -1.526 -5.614 0 -5.614 c
+1.535 -5.614 1.748 -4.302 1.748 -2.8 c
+1.748 -1.302 1.535 0 0 0 c
+2.503 -6.382 m
+2.038 -6.847 1.303 -7.13 0.455 -7.13 c
+-0.447 -7.13 -1.145 -6.893 -1.768 -6.163 c
+-1.768 -10.447 l
+-3.46 -10.447 l
+-3.46 1.414 l
+-1.796 1.414 l
+-1.796 0.512 l
+-1.162 1.279 -0.483 1.512 0.437 1.512 c
+1.284 1.512 2.038 1.233 2.503 0.763 c
+3.349 -0.088 3.451 -1.516 3.451 -2.8 c
+3.451 -4.084 3.349 -5.53 2.503 -6.382 c
+f
+Q
+q
+[1 0 0 1 80.964 10.298] cm
+0 0 m
+-1.58 0 -2.316 1.135 -2.316 2.349 c
+-2.316 7 l
+-3.283 7 l
+-3.283 8.298 l
+-2.316 8.298 l
+-2.316 10.862 l
+-0.613 10.862 l
+-0.613 8.298 l
+1.015 8.298 l
+1.015 7 l
+-0.613 7 l
+-0.613 2.433 l
+-0.613 1.814 -0.316 1.451 0.317 1.451 c
+1.015 1.451 l
+1.015 0 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 137.816 42.134] cm
+0 0 m
+-25.156 0 l
+-16.494 8.661 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 102.577 33.524] cm
+0 0 m
+0 12.252 l
+17.786 17.782 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 101.534 20.308] cm
+0 0 m
+-8.661 8.662 l
+0 25.147 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 110.138 10.219] cm
+0 0 m
+-12.251 0 l
+-17.787 17.784 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 114.707 0.5117] cm
+0 0 m
+-16.485 8.6606 l
+8.661 8.6606 l
+0 0 l
+f
+Q
+q
+0.059998 0.06 143.607 51.247 re
+W
+q
+[1 0 0 1 115.666 0] cm
+0 0 m
+17.787 17.783 l
+17.787 5.5302 l
+0 0 l
+f
+Q
+Q
+q
+[1 0 0 1 134.495 5.8515] cm
+0 0 m
+0 25.147 l
+8.661 16.486 l
+0 0 l
+f
+Q
+q
+[1 0 0 1 143.667 23.314] cm
+0 0 m
+-17.787 17.783 l
+-5.534 17.783 l
+0 0 l
+f
+Q
+Q
+showpage
+%%PageTrailer
+pdfEndPage
+%%Trailer
+end
+%%DocumentSuppliedResources:
+%%EOF
diff --git a/macros/latex/contrib/tudscr/logo/DDC-30.pdf b/macros/latex/contrib/tudscr/logo/DDC-30.pdf
new file mode 100644
index 0000000000..47c352ca50
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/DDC-30.pdf
Binary files differ
diff --git a/macros/latex/contrib/tudscr/logo/TUD-black.eps b/macros/latex/contrib/tudscr/logo/TUD-black.eps
new file mode 100644
index 0000000000..a5599f58fb
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/TUD-black.eps
@@ -0,0 +1,987 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%XpdfVersion: 3.03
+%%Creator: AFPL Ghostscript 814 (epswrite)
+%%Title: untitled
+%%LanguageLevel: 2
+%%DocumentSuppliedResources: (atend)
+%%BoundingBox: 0 0 256 75
+%%HiResBoundingBox: 0 0 255.196 74.044
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset xpdf 3.03 0
+%%Copyright: Copyright 1996-2011 Glyph & Cog, LLC
+/xpdf 75 dict def xpdf begin
+% PDF special state
+/pdfDictSize 15 def
+/pdfSetup {
+ /setpagedevice where {
+ pop 2 dict begin
+ /Policies 1 dict dup begin /PageSize 6 def end def
+ { /Duplex true def } if
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfSetupPaper {
+ 2 array astore
+ /setpagedevice where {
+ pop 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfStartPage {
+ pdfDictSize dict begin
+ /pdfFillCS [] def
+ /pdfFillXform {} def
+ /pdfStrokeCS [] def
+ /pdfStrokeXform {} def
+ /pdfFill [0] def
+ /pdfStroke [0] def
+ /pdfFillOP false def
+ /pdfStrokeOP false def
+ /pdfLastFill false def
+ /pdfLastStroke false def
+ /pdfTextMat [1 0 0 1 0 0] def
+ /pdfFontSize 0 def
+ /pdfCharSpacing 0 def
+ /pdfTextRender 0 def
+ /pdfTextRise 0 def
+ /pdfWordSpacing 0 def
+ /pdfHorizScaling 1 def
+ /pdfTextClipPath [] def
+} def
+/pdfEndPage { end } def
+% PDF color state
+/cs { /pdfFillXform exch def dup /pdfFillCS exch def
+ setcolorspace } def
+/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def
+ setcolorspace } def
+/sc { pdfLastFill not { pdfFillCS setcolorspace } if
+ dup /pdfFill exch def aload pop pdfFillXform setcolor
+ /pdfLastFill true def /pdfLastStroke false def } def
+/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if
+ dup /pdfStroke exch def aload pop pdfStrokeXform setcolor
+ /pdfLastStroke true def /pdfLastFill false def } def
+/op { /pdfFillOP exch def
+ pdfLastFill { pdfFillOP setoverprint } if } def
+/OP { /pdfStrokeOP exch def
+ pdfLastStroke { pdfStrokeOP setoverprint } if } def
+/fCol {
+ pdfLastFill not {
+ pdfFillCS setcolorspace
+ pdfFill aload pop pdfFillXform setcolor
+ pdfFillOP setoverprint
+ /pdfLastFill true def /pdfLastStroke false def
+ } if
+} def
+/sCol {
+ pdfLastStroke not {
+ pdfStrokeCS setcolorspace
+ pdfStroke aload pop pdfStrokeXform setcolor
+ pdfStrokeOP setoverprint
+ /pdfLastStroke true def /pdfLastFill false def
+ } if
+} def
+% build a font
+/pdfMakeFont {
+ 4 3 roll findfont
+ 4 2 roll matrix scale makefont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /Encoding exch def
+ currentdict
+ end
+ definefont pop
+} def
+/pdfMakeFont16 {
+ exch findfont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /WMode exch def
+ currentdict
+ end
+ definefont pop
+} def
+% graphics state operators
+/q { gsave pdfDictSize dict begin } def
+/Q {
+ end grestore
+ /pdfLastFill where {
+ pop
+ pdfLastFill {
+ pdfFillOP setoverprint
+ } {
+ pdfStrokeOP setoverprint
+ } ifelse
+ } if
+} def
+/cm { concat } def
+/d { setdash } def
+/i { setflat } def
+/j { setlinejoin } def
+/J { setlinecap } def
+/M { setmiterlimit } def
+/w { setlinewidth } def
+% path segment operators
+/m { moveto } def
+/l { lineto } def
+/c { curveto } def
+/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+ neg 0 rlineto closepath } def
+/h { closepath } def
+% path painting operators
+/S { sCol stroke } def
+/Sf { fCol stroke } def
+/f { fCol fill } def
+/f* { fCol eofill } def
+% clipping operators
+/W { clip newpath } def
+/W* { eoclip newpath } def
+/Ws { strokepath clip newpath } def
+% text state operators
+/Tc { /pdfCharSpacing exch def } def
+/Tf { dup /pdfFontSize exch def
+ dup pdfHorizScaling mul exch matrix scale
+ pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put
+ exch findfont exch makefont setfont } def
+/Tr { /pdfTextRender exch def } def
+/Ts { /pdfTextRise exch def } def
+/Tw { /pdfWordSpacing exch def } def
+/Tz { /pdfHorizScaling exch def } def
+% text positioning operators
+/Td { pdfTextMat transform moveto } def
+/Tm { /pdfTextMat exch def } def
+% text string operators
+/xyshow where {
+ pop
+ /xyshow2 {
+ dup length array
+ 0 2 2 index length 1 sub {
+ 2 index 1 index 2 copy get 3 1 roll 1 add get
+ pdfTextMat dtransform
+ 4 2 roll 2 copy 6 5 roll put 1 add 3 1 roll dup 4 2 roll put
+ } for
+ exch pop
+ xyshow
+ } def
+}{
+ /xyshow2 {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval show moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval show moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/cshow where {
+ pop
+ /xycp {
+ 0 3 2 roll
+ {
+ pop pop currentpoint 3 2 roll
+ 1 string dup 0 4 3 roll put false charpath moveto
+ 2 copy get 2 index 2 index 1 add get
+ pdfTextMat dtransform rmoveto
+ 2 add
+ } exch cshow
+ pop pop
+ } def
+}{
+ /xycp {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval false charpath moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval false charpath moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/Tj {
+ fCol
+ 0 pdfTextRise pdfTextMat dtransform rmoveto
+ currentpoint 4 2 roll
+ pdfTextRender 1 and 0 eq {
+ 2 copy xyshow2
+ } if
+ pdfTextRender 3 and dup 1 eq exch 2 eq or {
+ 3 index 3 index moveto
+ 2 copy
+ currentfont /FontType get 3 eq { fCol } { sCol } ifelse
+ xycp currentpoint stroke moveto
+ } if
+ pdfTextRender 4 and 0 ne {
+ 4 2 roll moveto xycp
+ /pdfTextClipPath [ pdfTextClipPath aload pop
+ {/moveto cvx}
+ {/lineto cvx}
+ {/curveto cvx}
+ {/closepath cvx}
+ pathforall ] def
+ currentpoint newpath moveto
+ } {
+ pop pop pop pop
+ } ifelse
+ 0 pdfTextRise neg pdfTextMat dtransform rmoveto
+} def
+/TJm { 0.001 mul pdfFontSize mul pdfHorizScaling mul neg 0
+ pdfTextMat dtransform rmoveto } def
+/TJmV { 0.001 mul pdfFontSize mul neg 0 exch
+ pdfTextMat dtransform rmoveto } def
+/Tclip { pdfTextClipPath cvx exec clip newpath
+ /pdfTextClipPath [] def } def
+% Level 2/3 image operators
+/pdfImBuf 100 string def
+/pdfImStr {
+ 2 copy exch length lt {
+ 2 copy get exch 1 add exch
+ } {
+ ()
+ } ifelse
+} def
+/skipEOD {
+ { currentfile pdfImBuf readline
+ not { pop exit } if
+ (%-EOD-) eq { exit } if } loop
+} def
+/pdfIm { image skipEOD } def
+/pdfImM { fCol imagemask skipEOD } def
+/pr { 2 index 2 index 3 2 roll putinterval 4 add } def
+/pdfImClip {
+ gsave
+ 0 2 4 index length 1 sub {
+ dup 4 index exch 2 copy
+ get 5 index div put
+ 1 add 3 index exch 2 copy
+ get 3 index div put
+ } for
+ pop pop rectclip
+} def
+/pdfImClipEnd { grestore } def
+% shading operators
+/colordelta {
+ false 0 1 3 index length 1 sub {
+ dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt {
+ pop true
+ } if
+ } for
+ exch pop exch pop
+} def
+/funcCol { func n array astore } def
+/funcSH {
+ dup 0 eq {
+ true
+ } {
+ dup 6 eq {
+ false
+ } {
+ 4 index 4 index funcCol dup
+ 6 index 4 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 5 index 5 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 6 index 8 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ colordelta or or or
+ } ifelse
+ } ifelse
+ {
+ 1 add
+ 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch
+ 6 index 6 index 4 index 4 index 4 index funcSH
+ 2 index 6 index 6 index 4 index 4 index funcSH
+ 6 index 2 index 4 index 6 index 4 index funcSH
+ 5 3 roll 3 2 roll funcSH pop pop
+ } {
+ pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul
+ funcCol sc
+ dup 4 index exch mat transform m
+ 3 index 3 index mat transform l
+ 1 index 3 index mat transform l
+ mat transform l pop pop h f*
+ } ifelse
+} def
+/axialCol {
+ dup 0 lt {
+ pop t0
+ } {
+ dup 1 gt {
+ pop t1
+ } {
+ dt mul t0 add
+ } ifelse
+ } ifelse
+ func n array astore
+} def
+/axialSH {
+ dup 2 lt {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index axialCol 2 index axialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index axialSH
+ exch 3 2 roll axialSH
+ } {
+ pop 2 copy add 0.5 mul
+ axialCol sc
+ exch dup dx mul x0 add exch dy mul y0 add
+ 3 2 roll dup dx mul x0 add exch dy mul y0 add
+ dx abs dy abs ge {
+ 2 copy yMin sub dy mul dx div add yMin m
+ yMax sub dy mul dx div add yMax l
+ 2 copy yMax sub dy mul dx div add yMax l
+ yMin sub dy mul dx div add yMin l
+ h f*
+ } {
+ exch 2 copy xMin sub dx mul dy div add xMin exch m
+ xMax sub dx mul dy div add xMax exch l
+ exch 2 copy xMax sub dx mul dy div add xMax exch l
+ xMin sub dx mul dy div add xMin exch l
+ h f*
+ } ifelse
+ } ifelse
+} def
+/radialCol {
+ dup t0 lt {
+ pop t0
+ } {
+ dup t1 gt {
+ pop t1
+ } if
+ } ifelse
+ func n array astore
+} def
+/radialSH {
+ dup 0 eq {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index dt mul t0 add radialCol
+ 2 index dt mul t0 add radialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index radialSH
+ exch 3 2 roll radialSH
+ } {
+ pop 2 copy add 0.5 mul dt mul t0 add
+ radialCol sc
+ encl {
+ exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 0 360 arc h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 360 0 arcn h f
+ } {
+ 2 copy
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arcn
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arcn h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arc
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arc h f
+ } ifelse
+ } ifelse
+} def
+end
+%%EndResource
+%%EndProlog
+%%BeginSetup
+xpdf begin
+%%EndSetup
+pdfStartPage
+[] 0 d
+1 i
+0 j
+0 J
+10 M
+1 w
+/DeviceGray {} cs
+[0] sc
+/DeviceGray {} CS
+[0] SC
+false op
+false OP
+{} settransfer
+0 0 255.196 74.044 re
+W
+q
+q
+1 i
+-279.324 -576.26 m
+24720.676 -576.26 l
+24720.676 24423.74 l
+-279.324 24423.74 l
+W
+0.059998 0 255.24 74.04 re
+W
+/DeviceGray {} cs
+[0] sc
+false op
+false OP
+225.986 47.138 3.4563 3.5281 re
+f
+235.418 47.138 3.4563 3.5281 re
+f
+q
+[1 0 0 1 182.354 26.906] cm
+0 0 m
+-4.464 8.712 l
+-2.52 9.36 -0.864 11.16 -0.864 13.968 c
+-0.864 17.28 -3.24 20.088 -7.344 20.088 c
+-15.192 20.088 l
+-15.192 0 l
+-11.304 0 l
+-11.304 8.064 l
+-8.496 8.064 l
+-4.536 0 l
+0 0 l
+h
+-4.752 13.968 m
+-4.752 12.384 -5.904 11.304 -7.56 11.304 c
+-11.304 11.304 l
+-11.304 16.632 l
+-7.56 16.632 l
+-5.904 16.632 -4.752 15.48 -4.752 13.968 c
+f*
+Q
+q
+[1 0 0 1 241.25 26.906] cm
+0 0 m
+-7.344 20.088 l
+-10.368 20.088 l
+-17.712 0 l
+-13.608 0 l
+-12.384 3.6 l
+-5.256 3.6 l
+-4.104 0 l
+0 0 l
+h
+-6.336 6.912 m
+-11.304 6.912 l
+-8.784 14.184 l
+-6.336 6.912 l
+f*
+Q
+q
+[1 0 0 1 100.058 33.818] cm
+0 0 m
+0 13.176 l
+-3.888 13.176 l
+-3.888 0.144 l
+-3.888 -2.16 -5.328 -3.528 -7.416 -3.528 c
+-9.504 -3.528 -10.872 -2.16 -10.872 0.144 c
+-10.872 13.176 l
+-14.76 13.176 l
+-14.76 0 l
+-14.76 -4.248 -11.52 -7.056 -7.416 -7.056 c
+-3.312 -7.056 0 -4.248 0 0 c
+f*
+Q
+q
+[1 0 0 1 120.002 26.906] cm
+0 0 m
+0 20.088 l
+-3.96 20.088 l
+-3.96 7.848 l
+-11.88 20.088 l
+-15.408 20.088 l
+-15.408 0 l
+-11.448 0 l
+-11.448 12.384 l
+-3.528 0 l
+0 0 l
+f*
+Q
+124.682 26.906 3.9602 20.088 re
+f
+q
+[1 0 0 1 147.434 46.994] cm
+0 0 m
+-4.104 0 l
+-8.136 -13.032 l
+-12.168 0 l
+-16.2 0 l
+-9.576 -20.088 l
+-6.696 -20.088 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 163.202 26.978] cm
+0 0 m
+0 3.456 l
+-9.288 3.456 l
+-9.288 8.352 l
+-1.368 8.352 l
+-1.368 11.808 l
+-9.288 11.808 l
+-9.288 16.56 l
+0 16.56 l
+0 20.016 l
+-13.176 20.016 l
+-13.176 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 198.698 32.882] cm
+0 0 m
+0 1.728 -0.504 3.24 -1.584 4.248 c
+-2.376 5.04 -3.528 5.544 -5.4 5.76 c
+-7.776 6.12 l
+-8.568 6.264 -9.216 6.552 -9.648 6.912 c
+-10.008 7.272 -10.224 7.848 -10.224 8.352 c
+-10.224 9.72 -9.216 10.872 -7.128 10.872 c
+-5.76 10.872 -4.248 10.728 -3.024 9.504 c
+-0.504 11.952 l
+-2.232 13.608 -4.248 14.328 -6.984 14.328 c
+-11.304 14.328 -13.968 11.808 -13.968 8.208 c
+-13.968 6.552 -13.536 5.256 -12.528 4.248 c
+-11.664 3.384 -10.368 2.88 -8.64 2.592 c
+-6.264 2.232 l
+-5.328 2.088 -4.824 1.944 -4.464 1.584 c
+-4.032 1.152 -3.816 0.576 -3.816 -0.144 c
+-3.816 -1.728 -5.112 -2.592 -7.416 -2.592 c
+-9.216 -2.592 -10.944 -2.16 -12.24 -0.936 c
+-14.76 -3.456 l
+-12.816 -5.472 -10.512 -6.12 -7.416 -6.12 c
+-3.24 -6.12 0 -3.888 0 0 c
+f*
+Q
+202.514 26.906 3.8879 20.088 re
+f
+q
+[1 0 0 1 224.186 43.538] cm
+0 0 m
+0 3.456 l
+-14.4 3.456 l
+-14.4 0 l
+-9.144 0 l
+-9.144 -16.56 l
+-5.256 -16.56 l
+-5.256 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 255.074 43.538] cm
+0 0 m
+0 3.456 l
+-14.4 3.456 l
+-14.4 0 l
+-9.144 0 l
+-9.144 -16.632 l
+-5.256 -16.632 l
+-5.256 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 99.842 10.345] cm
+0 0 m
+0 3.024 0.288 5.76 -2.016 7.992 c
+-3.312 9.36 -5.184 9.936 -7.272 9.936 c
+-14.544 9.936 l
+-14.544 -10.152 l
+-7.272 -10.152 l
+-5.184 -10.152 -3.312 -9.576 -2.016 -8.208 c
+0.288 -5.976 0 -3.024 0 0 c
+h
+-3.888 0 m
+-3.888 -3.096 -4.032 -4.536 -4.752 -5.4 c
+-5.4 -6.192 -6.336 -6.624 -7.632 -6.624 c
+-10.584 -6.624 l
+-10.584 6.408 l
+-7.632 6.408 l
+-6.336 6.408 -5.4 5.976 -4.752 5.184 c
+-4.032 4.32 -3.888 3.024 -3.888 0 c
+f*
+Q
+q
+[1 0 0 1 119.21 0.19418] cm
+0 0 m
+-4.464 8.64 l
+-2.52 9.36 -0.792 11.088 -0.792 13.896 c
+-0.792 17.28 -3.24 20.088 -7.344 20.088 c
+-15.192 20.088 l
+-15.192 0 l
+-11.304 0 l
+-11.304 7.992 l
+-8.424 7.992 l
+-4.536 0 l
+0 0 l
+h
+-4.752 13.896 m
+-4.752 12.384 -5.832 11.304 -7.56 11.304 c
+-11.304 11.304 l
+-11.304 16.56 l
+-7.56 16.56 l
+-5.832 16.56 -4.752 15.48 -4.752 13.896 c
+f*
+Q
+q
+[1 0 0 1 135.842 0.19418] cm
+0 0 m
+0 3.528 l
+-9.36 3.528 l
+-9.36 8.352 l
+-1.44 8.352 l
+-1.44 11.88 l
+-9.36 11.88 l
+-9.36 16.56 l
+0 16.56 l
+0 20.088 l
+-13.248 20.088 l
+-13.248 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 152.762 6.0982] cm
+0 0 m
+0 1.8 -0.504 3.24 -1.584 4.248 c
+-2.448 5.04 -3.6 5.544 -5.4 5.832 c
+-7.776 6.192 l
+-8.568 6.264 -9.216 6.624 -9.648 6.984 c
+-10.08 7.344 -10.224 7.92 -10.224 8.424 c
+-10.224 9.792 -9.216 10.944 -7.128 10.944 c
+-5.832 10.944 -4.248 10.728 -3.024 9.576 c
+-0.504 12.024 l
+-2.232 13.68 -4.248 14.328 -6.984 14.328 c
+-11.376 14.328 -13.968 11.808 -13.968 8.28 c
+-13.968 6.552 -13.536 5.256 -12.6 4.32 c
+-11.664 3.456 -10.368 2.88 -8.64 2.664 c
+-6.264 2.304 l
+-5.328 2.16 -4.896 1.944 -4.464 1.584 c
+-4.032 1.224 -3.888 0.648 -3.888 -0.072 c
+-3.888 -1.728 -5.112 -2.592 -7.416 -2.592 c
+-9.288 -2.592 -11.016 -2.16 -12.24 -0.864 c
+-14.76 -3.384 l
+-12.816 -5.4 -10.512 -6.048 -7.488 -6.048 c
+-3.24 -6.048 0 -3.888 0 0 c
+f*
+Q
+q
+[1 0 0 1 171.122 10.345] cm
+0 0 m
+0 3.024 0.216 5.76 -2.016 7.992 c
+-3.312 9.36 -5.256 9.936 -7.344 9.936 c
+-14.544 9.936 l
+-14.544 -10.152 l
+-7.344 -10.152 l
+-5.256 -10.152 -3.312 -9.576 -2.016 -8.208 c
+0.216 -5.976 0 -3.024 0 0 c
+h
+-3.888 0 m
+-3.888 -3.096 -4.032 -4.536 -4.752 -5.4 c
+-5.4 -6.192 -6.336 -6.624 -7.704 -6.624 c
+-10.656 -6.624 l
+-10.656 6.408 l
+-7.704 6.408 l
+-6.336 6.408 -5.4 5.976 -4.752 5.184 c
+-4.032 4.32 -3.888 3.024 -3.888 0 c
+f*
+Q
+q
+[1 0 0 1 188.474 0.19418] cm
+0 0 m
+0 3.528 l
+-9.288 3.528 l
+-9.288 8.352 l
+-1.368 8.352 l
+-1.368 11.88 l
+-9.288 11.88 l
+-9.288 16.56 l
+0 16.56 l
+0 20.088 l
+-13.176 20.088 l
+-13.176 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 207.842 0.19418] cm
+0 0 m
+0 20.088 l
+-3.96 20.088 l
+-3.96 7.776 l
+-11.88 20.088 l
+-15.408 20.088 l
+-15.408 0 l
+-11.448 0 l
+-11.448 12.312 l
+-3.528 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 99.698 70.322] cm
+0 0 m
+0 3.456 l
+-14.4 3.456 l
+-14.4 0 l
+-9.144 0 l
+-9.144 -16.56 l
+-5.256 -16.56 l
+-5.256 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 116.546 53.761] cm
+0 0 m
+0 3.456 l
+-9.36 3.456 l
+-9.36 8.352 l
+-1.44 8.352 l
+-1.44 11.808 l
+-9.36 11.808 l
+-9.36 16.56 l
+0 16.56 l
+0 20.016 l
+-13.248 20.016 l
+-13.248 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 134.762 59.882] cm
+0 0 m
+-3.96 0 l
+-4.392 -1.584 -5.4 -2.808 -7.344 -2.808 c
+-8.424 -2.808 -9.288 -2.448 -9.864 -1.8 c
+-10.656 -0.936 -10.872 0 -10.872 3.888 c
+-10.872 7.776 -10.656 8.712 -9.864 9.576 c
+-9.288 10.224 -8.424 10.584 -7.344 10.584 c
+-5.4 10.584 -4.392 9.36 -3.96 7.776 c
+0 7.776 l
+-0.72 11.952 -3.672 14.112 -7.416 14.112 c
+-9.576 14.112 -11.376 13.32 -12.816 11.88 c
+-14.832 9.864 -14.76 7.344 -14.76 3.888 c
+-14.76 0.432 -14.832 -2.088 -12.816 -4.104 c
+-11.376 -5.544 -9.576 -6.336 -7.416 -6.336 c
+-3.672 -6.336 -0.72 -4.176 0 0 c
+f*
+Q
+q
+[1 0 0 1 153.05 53.761] cm
+0 0 m
+0 20.016 l
+-3.888 20.016 l
+-3.888 11.808 l
+-10.728 11.808 l
+-10.728 20.016 l
+-14.616 20.016 l
+-14.616 0 l
+-10.728 0 l
+-10.728 8.352 l
+-3.888 8.352 l
+-3.888 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 173.426 53.761] cm
+0 0 m
+0 20.016 l
+-3.888 20.016 l
+-3.888 7.776 l
+-11.88 20.016 l
+-15.336 20.016 l
+-15.336 0 l
+-11.448 0 l
+-11.448 12.312 l
+-3.456 0 l
+0 0 l
+f*
+Q
+178.466 53.761 3.8879 20.016 re
+f
+q
+[1 0 0 1 200.354 59.666] cm
+0 0 m
+0 1.728 -0.504 3.24 -1.584 4.248 c
+-2.376 5.04 -3.528 5.544 -5.4 5.76 c
+-7.776 6.12 l
+-8.568 6.264 -9.216 6.552 -9.648 6.912 c
+-10.008 7.344 -10.224 7.848 -10.224 8.352 c
+-10.224 9.72 -9.216 10.872 -7.128 10.872 c
+-5.76 10.872 -4.248 10.728 -3.024 9.504 c
+-0.504 11.952 l
+-2.232 13.608 -4.248 14.328 -6.984 14.328 c
+-11.304 14.328 -13.968 11.808 -13.968 8.208 c
+-13.968 6.552 -13.536 5.256 -12.528 4.248 c
+-11.664 3.384 -10.368 2.88 -8.64 2.592 c
+-6.264 2.232 l
+-5.328 2.088 -4.824 1.944 -4.464 1.584 c
+-4.032 1.152 -3.816 0.576 -3.816 -0.144 c
+-3.816 -1.728 -5.112 -2.592 -7.416 -2.592 c
+-9.216 -2.592 -10.944 -2.16 -12.24 -0.936 c
+-14.76 -3.456 l
+-12.816 -5.472 -10.512 -6.12 -7.416 -6.12 c
+-3.24 -6.12 0 -3.888 0 0 c
+f*
+Q
+q
+[1 0 0 1 218.498 59.882] cm
+0 0 m
+-3.96 0 l
+-4.32 -1.584 -5.4 -2.808 -7.344 -2.808 c
+-8.424 -2.808 -9.288 -2.448 -9.864 -1.8 c
+-10.584 -0.936 -10.8 0 -10.8 3.888 c
+-10.8 7.776 -10.584 8.712 -9.864 9.576 c
+-9.288 10.224 -8.424 10.584 -7.344 10.584 c
+-5.4 10.584 -4.32 9.36 -3.96 7.776 c
+0 7.776 l
+-0.72 11.952 -3.6 14.112 -7.344 14.112 c
+-9.576 14.112 -11.376 13.32 -12.816 11.88 c
+-14.832 9.864 -14.76 7.344 -14.76 3.888 c
+-14.76 0.432 -14.832 -2.088 -12.816 -4.104 c
+-11.376 -5.544 -9.576 -6.336 -7.344 -6.336 c
+-3.672 -6.336 -0.72 -4.176 0 0 c
+f*
+Q
+q
+[1 0 0 1 236.786 53.761] cm
+0 0 m
+0 20.016 l
+-3.888 20.016 l
+-3.888 11.808 l
+-10.656 11.808 l
+-10.656 20.016 l
+-14.616 20.016 l
+-14.616 0 l
+-10.656 0 l
+-10.656 8.352 l
+-3.888 8.352 l
+-3.888 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 255.146 53.761] cm
+0 0 m
+0 3.456 l
+-9.36 3.456 l
+-9.36 8.352 l
+-1.44 8.352 l
+-1.44 11.808 l
+-9.36 11.808 l
+-9.36 16.56 l
+0 16.56 l
+0 20.016 l
+-13.248 20.016 l
+-13.248 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 4.5138 44.761] cm
+0 0 m
+20.088 0 l
+20.088 -23.4 l
+44.64 -23.4 l
+44.64 0 l
+64.656 0 l
+64.656 -20.52 l
+45.072 -40.104 l
+19.584 -40.104 l
+0 -20.52 l
+0 0 l
+h
+62.496 -2.231 m
+46.872 -2.231 l
+46.872 -25.631 l
+17.856 -25.631 l
+17.856 -2.231 l
+2.232 -2.231 l
+2.232 -19.655 l
+20.52 -37.871 l
+44.208 -37.871 l
+62.424 -19.655 l
+62.496 -2.231 l
+h
+62.064 4.465 m
+44.208 22.321 l
+20.52 22.321 l
+2.664 4.465 l
+24.552 4.465 l
+24.552 -18.935 l
+40.176 -18.935 l
+40.176 4.465 l
+62.064 4.465 l
+h
+64.656 2.233 m
+42.408 2.233 l
+42.408 -21.167 l
+22.32 -21.167 l
+22.32 2.233 l
+0 2.233 l
+0 4.969 l
+19.584 24.553 l
+45.072 24.553 l
+64.656 4.969 l
+64.656 2.233 l
+h
+-4.464 6.697 m
+-4.464 -22.247 l
+17.856 -44.567 l
+46.872 -44.567 l
+69.12 -22.247 l
+69.12 6.697 l
+46.872 29.017 l
+17.856 29.017 l
+-4.464 6.697 l
+h
+-2.232 5.833 m
+-2.232 -21.383 l
+18.72 -42.335 l
+45.936 -42.335 l
+66.888 -21.383 l
+66.888 5.833 l
+45.936 26.785 l
+18.72 26.785 l
+-2.232 5.833 l
+f*
+Q
+Q
+Q
+showpage
+%%PageTrailer
+pdfEndPage
+%%Trailer
+end
+%%DocumentSuppliedResources:
+%%EOF
diff --git a/macros/latex/contrib/tudscr/logo/TUD-black.pdf b/macros/latex/contrib/tudscr/logo/TUD-black.pdf
new file mode 100644
index 0000000000..8777e57cd6
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/TUD-black.pdf
Binary files differ
diff --git a/macros/latex/contrib/tudscr/logo/TUD-blue.eps b/macros/latex/contrib/tudscr/logo/TUD-blue.eps
new file mode 100644
index 0000000000..6393041d06
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/TUD-blue.eps
@@ -0,0 +1,987 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%XpdfVersion: 3.03
+%%Creator: AFPL Ghostscript 814 (epswrite)
+%%Title: untitled
+%%LanguageLevel: 2
+%%DocumentSuppliedResources: (atend)
+%%BoundingBox: 0 0 256 75
+%%HiResBoundingBox: 0 0 255.196 74.044
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset xpdf 3.03 0
+%%Copyright: Copyright 1996-2011 Glyph & Cog, LLC
+/xpdf 75 dict def xpdf begin
+% PDF special state
+/pdfDictSize 15 def
+/pdfSetup {
+ /setpagedevice where {
+ pop 2 dict begin
+ /Policies 1 dict dup begin /PageSize 6 def end def
+ { /Duplex true def } if
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfSetupPaper {
+ 2 array astore
+ /setpagedevice where {
+ pop 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfStartPage {
+ pdfDictSize dict begin
+ /pdfFillCS [] def
+ /pdfFillXform {} def
+ /pdfStrokeCS [] def
+ /pdfStrokeXform {} def
+ /pdfFill [0] def
+ /pdfStroke [0] def
+ /pdfFillOP false def
+ /pdfStrokeOP false def
+ /pdfLastFill false def
+ /pdfLastStroke false def
+ /pdfTextMat [1 0 0 1 0 0] def
+ /pdfFontSize 0 def
+ /pdfCharSpacing 0 def
+ /pdfTextRender 0 def
+ /pdfTextRise 0 def
+ /pdfWordSpacing 0 def
+ /pdfHorizScaling 1 def
+ /pdfTextClipPath [] def
+} def
+/pdfEndPage { end } def
+% PDF color state
+/cs { /pdfFillXform exch def dup /pdfFillCS exch def
+ setcolorspace } def
+/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def
+ setcolorspace } def
+/sc { pdfLastFill not { pdfFillCS setcolorspace } if
+ dup /pdfFill exch def aload pop pdfFillXform setcolor
+ /pdfLastFill true def /pdfLastStroke false def } def
+/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if
+ dup /pdfStroke exch def aload pop pdfStrokeXform setcolor
+ /pdfLastStroke true def /pdfLastFill false def } def
+/op { /pdfFillOP exch def
+ pdfLastFill { pdfFillOP setoverprint } if } def
+/OP { /pdfStrokeOP exch def
+ pdfLastStroke { pdfStrokeOP setoverprint } if } def
+/fCol {
+ pdfLastFill not {
+ pdfFillCS setcolorspace
+ pdfFill aload pop pdfFillXform setcolor
+ pdfFillOP setoverprint
+ /pdfLastFill true def /pdfLastStroke false def
+ } if
+} def
+/sCol {
+ pdfLastStroke not {
+ pdfStrokeCS setcolorspace
+ pdfStroke aload pop pdfStrokeXform setcolor
+ pdfStrokeOP setoverprint
+ /pdfLastStroke true def /pdfLastFill false def
+ } if
+} def
+% build a font
+/pdfMakeFont {
+ 4 3 roll findfont
+ 4 2 roll matrix scale makefont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /Encoding exch def
+ currentdict
+ end
+ definefont pop
+} def
+/pdfMakeFont16 {
+ exch findfont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /WMode exch def
+ currentdict
+ end
+ definefont pop
+} def
+% graphics state operators
+/q { gsave pdfDictSize dict begin } def
+/Q {
+ end grestore
+ /pdfLastFill where {
+ pop
+ pdfLastFill {
+ pdfFillOP setoverprint
+ } {
+ pdfStrokeOP setoverprint
+ } ifelse
+ } if
+} def
+/cm { concat } def
+/d { setdash } def
+/i { setflat } def
+/j { setlinejoin } def
+/J { setlinecap } def
+/M { setmiterlimit } def
+/w { setlinewidth } def
+% path segment operators
+/m { moveto } def
+/l { lineto } def
+/c { curveto } def
+/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+ neg 0 rlineto closepath } def
+/h { closepath } def
+% path painting operators
+/S { sCol stroke } def
+/Sf { fCol stroke } def
+/f { fCol fill } def
+/f* { fCol eofill } def
+% clipping operators
+/W { clip newpath } def
+/W* { eoclip newpath } def
+/Ws { strokepath clip newpath } def
+% text state operators
+/Tc { /pdfCharSpacing exch def } def
+/Tf { dup /pdfFontSize exch def
+ dup pdfHorizScaling mul exch matrix scale
+ pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put
+ exch findfont exch makefont setfont } def
+/Tr { /pdfTextRender exch def } def
+/Ts { /pdfTextRise exch def } def
+/Tw { /pdfWordSpacing exch def } def
+/Tz { /pdfHorizScaling exch def } def
+% text positioning operators
+/Td { pdfTextMat transform moveto } def
+/Tm { /pdfTextMat exch def } def
+% text string operators
+/xyshow where {
+ pop
+ /xyshow2 {
+ dup length array
+ 0 2 2 index length 1 sub {
+ 2 index 1 index 2 copy get 3 1 roll 1 add get
+ pdfTextMat dtransform
+ 4 2 roll 2 copy 6 5 roll put 1 add 3 1 roll dup 4 2 roll put
+ } for
+ exch pop
+ xyshow
+ } def
+}{
+ /xyshow2 {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval show moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval show moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/cshow where {
+ pop
+ /xycp {
+ 0 3 2 roll
+ {
+ pop pop currentpoint 3 2 roll
+ 1 string dup 0 4 3 roll put false charpath moveto
+ 2 copy get 2 index 2 index 1 add get
+ pdfTextMat dtransform rmoveto
+ 2 add
+ } exch cshow
+ pop pop
+ } def
+}{
+ /xycp {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval false charpath moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval false charpath moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/Tj {
+ fCol
+ 0 pdfTextRise pdfTextMat dtransform rmoveto
+ currentpoint 4 2 roll
+ pdfTextRender 1 and 0 eq {
+ 2 copy xyshow2
+ } if
+ pdfTextRender 3 and dup 1 eq exch 2 eq or {
+ 3 index 3 index moveto
+ 2 copy
+ currentfont /FontType get 3 eq { fCol } { sCol } ifelse
+ xycp currentpoint stroke moveto
+ } if
+ pdfTextRender 4 and 0 ne {
+ 4 2 roll moveto xycp
+ /pdfTextClipPath [ pdfTextClipPath aload pop
+ {/moveto cvx}
+ {/lineto cvx}
+ {/curveto cvx}
+ {/closepath cvx}
+ pathforall ] def
+ currentpoint newpath moveto
+ } {
+ pop pop pop pop
+ } ifelse
+ 0 pdfTextRise neg pdfTextMat dtransform rmoveto
+} def
+/TJm { 0.001 mul pdfFontSize mul pdfHorizScaling mul neg 0
+ pdfTextMat dtransform rmoveto } def
+/TJmV { 0.001 mul pdfFontSize mul neg 0 exch
+ pdfTextMat dtransform rmoveto } def
+/Tclip { pdfTextClipPath cvx exec clip newpath
+ /pdfTextClipPath [] def } def
+% Level 2/3 image operators
+/pdfImBuf 100 string def
+/pdfImStr {
+ 2 copy exch length lt {
+ 2 copy get exch 1 add exch
+ } {
+ ()
+ } ifelse
+} def
+/skipEOD {
+ { currentfile pdfImBuf readline
+ not { pop exit } if
+ (%-EOD-) eq { exit } if } loop
+} def
+/pdfIm { image skipEOD } def
+/pdfImM { fCol imagemask skipEOD } def
+/pr { 2 index 2 index 3 2 roll putinterval 4 add } def
+/pdfImClip {
+ gsave
+ 0 2 4 index length 1 sub {
+ dup 4 index exch 2 copy
+ get 5 index div put
+ 1 add 3 index exch 2 copy
+ get 3 index div put
+ } for
+ pop pop rectclip
+} def
+/pdfImClipEnd { grestore } def
+% shading operators
+/colordelta {
+ false 0 1 3 index length 1 sub {
+ dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt {
+ pop true
+ } if
+ } for
+ exch pop exch pop
+} def
+/funcCol { func n array astore } def
+/funcSH {
+ dup 0 eq {
+ true
+ } {
+ dup 6 eq {
+ false
+ } {
+ 4 index 4 index funcCol dup
+ 6 index 4 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 5 index 5 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 6 index 8 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ colordelta or or or
+ } ifelse
+ } ifelse
+ {
+ 1 add
+ 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch
+ 6 index 6 index 4 index 4 index 4 index funcSH
+ 2 index 6 index 6 index 4 index 4 index funcSH
+ 6 index 2 index 4 index 6 index 4 index funcSH
+ 5 3 roll 3 2 roll funcSH pop pop
+ } {
+ pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul
+ funcCol sc
+ dup 4 index exch mat transform m
+ 3 index 3 index mat transform l
+ 1 index 3 index mat transform l
+ mat transform l pop pop h f*
+ } ifelse
+} def
+/axialCol {
+ dup 0 lt {
+ pop t0
+ } {
+ dup 1 gt {
+ pop t1
+ } {
+ dt mul t0 add
+ } ifelse
+ } ifelse
+ func n array astore
+} def
+/axialSH {
+ dup 2 lt {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index axialCol 2 index axialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index axialSH
+ exch 3 2 roll axialSH
+ } {
+ pop 2 copy add 0.5 mul
+ axialCol sc
+ exch dup dx mul x0 add exch dy mul y0 add
+ 3 2 roll dup dx mul x0 add exch dy mul y0 add
+ dx abs dy abs ge {
+ 2 copy yMin sub dy mul dx div add yMin m
+ yMax sub dy mul dx div add yMax l
+ 2 copy yMax sub dy mul dx div add yMax l
+ yMin sub dy mul dx div add yMin l
+ h f*
+ } {
+ exch 2 copy xMin sub dx mul dy div add xMin exch m
+ xMax sub dx mul dy div add xMax exch l
+ exch 2 copy xMax sub dx mul dy div add xMax exch l
+ xMin sub dx mul dy div add xMin exch l
+ h f*
+ } ifelse
+ } ifelse
+} def
+/radialCol {
+ dup t0 lt {
+ pop t0
+ } {
+ dup t1 gt {
+ pop t1
+ } if
+ } ifelse
+ func n array astore
+} def
+/radialSH {
+ dup 0 eq {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index dt mul t0 add radialCol
+ 2 index dt mul t0 add radialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index radialSH
+ exch 3 2 roll radialSH
+ } {
+ pop 2 copy add 0.5 mul dt mul t0 add
+ radialCol sc
+ encl {
+ exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 0 360 arc h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 360 0 arcn h f
+ } {
+ 2 copy
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arcn
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arcn h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arc
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arc h f
+ } ifelse
+ } ifelse
+} def
+end
+%%EndResource
+%%EndProlog
+%%BeginSetup
+xpdf begin
+%%EndSetup
+pdfStartPage
+[] 0 d
+1 i
+0 j
+0 J
+10 M
+1 w
+/DeviceGray {} cs
+[0] sc
+/DeviceGray {} CS
+[0] SC
+false op
+false OP
+{} settransfer
+0 0 255.196 74.044 re
+W
+q
+q
+1 i
+-279.324 -576.26 m
+24720.676 -576.26 l
+24720.676 24423.74 l
+-279.324 24423.74 l
+W
+0.059998 0 255.24 74.04 re
+W
+/DeviceCMYK {} cs
+[1 0.7 0.1 0.5] sc
+false op
+false OP
+225.986 47.138 3.4563 3.5281 re
+f
+235.418 47.138 3.4563 3.5281 re
+f
+q
+[1 0 0 1 182.354 26.906] cm
+0 0 m
+-4.464 8.712 l
+-2.52 9.36 -0.864 11.16 -0.864 13.968 c
+-0.864 17.28 -3.24 20.088 -7.344 20.088 c
+-15.192 20.088 l
+-15.192 0 l
+-11.304 0 l
+-11.304 8.064 l
+-8.496 8.064 l
+-4.536 0 l
+0 0 l
+h
+-4.752 13.968 m
+-4.752 12.384 -5.904 11.304 -7.56 11.304 c
+-11.304 11.304 l
+-11.304 16.632 l
+-7.56 16.632 l
+-5.904 16.632 -4.752 15.48 -4.752 13.968 c
+f*
+Q
+q
+[1 0 0 1 241.25 26.906] cm
+0 0 m
+-7.344 20.088 l
+-10.368 20.088 l
+-17.712 0 l
+-13.608 0 l
+-12.384 3.6 l
+-5.256 3.6 l
+-4.104 0 l
+0 0 l
+h
+-6.336 6.912 m
+-11.304 6.912 l
+-8.784 14.184 l
+-6.336 6.912 l
+f*
+Q
+q
+[1 0 0 1 100.058 33.818] cm
+0 0 m
+0 13.176 l
+-3.888 13.176 l
+-3.888 0.144 l
+-3.888 -2.16 -5.328 -3.528 -7.416 -3.528 c
+-9.504 -3.528 -10.872 -2.16 -10.872 0.144 c
+-10.872 13.176 l
+-14.76 13.176 l
+-14.76 0 l
+-14.76 -4.248 -11.52 -7.056 -7.416 -7.056 c
+-3.312 -7.056 0 -4.248 0 0 c
+f*
+Q
+q
+[1 0 0 1 120.002 26.906] cm
+0 0 m
+0 20.088 l
+-3.96 20.088 l
+-3.96 7.848 l
+-11.88 20.088 l
+-15.408 20.088 l
+-15.408 0 l
+-11.448 0 l
+-11.448 12.384 l
+-3.528 0 l
+0 0 l
+f*
+Q
+124.682 26.906 3.9602 20.088 re
+f
+q
+[1 0 0 1 147.434 46.994] cm
+0 0 m
+-4.104 0 l
+-8.136 -13.032 l
+-12.168 0 l
+-16.2 0 l
+-9.576 -20.088 l
+-6.696 -20.088 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 163.202 26.978] cm
+0 0 m
+0 3.456 l
+-9.288 3.456 l
+-9.288 8.352 l
+-1.368 8.352 l
+-1.368 11.808 l
+-9.288 11.808 l
+-9.288 16.56 l
+0 16.56 l
+0 20.016 l
+-13.176 20.016 l
+-13.176 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 198.698 32.882] cm
+0 0 m
+0 1.728 -0.504 3.24 -1.584 4.248 c
+-2.376 5.04 -3.528 5.544 -5.4 5.76 c
+-7.776 6.12 l
+-8.568 6.264 -9.216 6.552 -9.648 6.912 c
+-10.008 7.272 -10.224 7.848 -10.224 8.352 c
+-10.224 9.72 -9.216 10.872 -7.128 10.872 c
+-5.76 10.872 -4.248 10.728 -3.024 9.504 c
+-0.504 11.952 l
+-2.232 13.608 -4.248 14.328 -6.984 14.328 c
+-11.304 14.328 -13.968 11.808 -13.968 8.208 c
+-13.968 6.552 -13.536 5.256 -12.528 4.248 c
+-11.664 3.384 -10.368 2.88 -8.64 2.592 c
+-6.264 2.232 l
+-5.328 2.088 -4.824 1.944 -4.464 1.584 c
+-4.032 1.152 -3.816 0.576 -3.816 -0.144 c
+-3.816 -1.728 -5.112 -2.592 -7.416 -2.592 c
+-9.216 -2.592 -10.944 -2.16 -12.24 -0.936 c
+-14.76 -3.456 l
+-12.816 -5.472 -10.512 -6.12 -7.416 -6.12 c
+-3.24 -6.12 0 -3.888 0 0 c
+f*
+Q
+202.514 26.906 3.8879 20.088 re
+f
+q
+[1 0 0 1 224.186 43.538] cm
+0 0 m
+0 3.456 l
+-14.4 3.456 l
+-14.4 0 l
+-9.144 0 l
+-9.144 -16.56 l
+-5.256 -16.56 l
+-5.256 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 255.074 43.538] cm
+0 0 m
+0 3.456 l
+-14.4 3.456 l
+-14.4 0 l
+-9.144 0 l
+-9.144 -16.632 l
+-5.256 -16.632 l
+-5.256 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 99.842 10.345] cm
+0 0 m
+0 3.024 0.288 5.76 -2.016 7.992 c
+-3.312 9.36 -5.184 9.936 -7.272 9.936 c
+-14.544 9.936 l
+-14.544 -10.152 l
+-7.272 -10.152 l
+-5.184 -10.152 -3.312 -9.576 -2.016 -8.208 c
+0.288 -5.976 0 -3.024 0 0 c
+h
+-3.888 0 m
+-3.888 -3.096 -4.032 -4.536 -4.752 -5.4 c
+-5.4 -6.192 -6.336 -6.624 -7.632 -6.624 c
+-10.584 -6.624 l
+-10.584 6.408 l
+-7.632 6.408 l
+-6.336 6.408 -5.4 5.976 -4.752 5.184 c
+-4.032 4.32 -3.888 3.024 -3.888 0 c
+f*
+Q
+q
+[1 0 0 1 119.21 0.19418] cm
+0 0 m
+-4.464 8.64 l
+-2.52 9.36 -0.792 11.088 -0.792 13.896 c
+-0.792 17.28 -3.24 20.088 -7.344 20.088 c
+-15.192 20.088 l
+-15.192 0 l
+-11.304 0 l
+-11.304 7.992 l
+-8.424 7.992 l
+-4.536 0 l
+0 0 l
+h
+-4.752 13.896 m
+-4.752 12.384 -5.832 11.304 -7.56 11.304 c
+-11.304 11.304 l
+-11.304 16.56 l
+-7.56 16.56 l
+-5.832 16.56 -4.752 15.48 -4.752 13.896 c
+f*
+Q
+q
+[1 0 0 1 135.842 0.19418] cm
+0 0 m
+0 3.528 l
+-9.36 3.528 l
+-9.36 8.352 l
+-1.44 8.352 l
+-1.44 11.88 l
+-9.36 11.88 l
+-9.36 16.56 l
+0 16.56 l
+0 20.088 l
+-13.248 20.088 l
+-13.248 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 152.762 6.0982] cm
+0 0 m
+0 1.8 -0.504 3.24 -1.584 4.248 c
+-2.448 5.04 -3.6 5.544 -5.4 5.832 c
+-7.776 6.192 l
+-8.568 6.264 -9.216 6.624 -9.648 6.984 c
+-10.08 7.344 -10.224 7.92 -10.224 8.424 c
+-10.224 9.792 -9.216 10.944 -7.128 10.944 c
+-5.832 10.944 -4.248 10.728 -3.024 9.576 c
+-0.504 12.024 l
+-2.232 13.68 -4.248 14.328 -6.984 14.328 c
+-11.376 14.328 -13.968 11.808 -13.968 8.28 c
+-13.968 6.552 -13.536 5.256 -12.6 4.32 c
+-11.664 3.456 -10.368 2.88 -8.64 2.664 c
+-6.264 2.304 l
+-5.328 2.16 -4.896 1.944 -4.464 1.584 c
+-4.032 1.224 -3.888 0.648 -3.888 -0.072 c
+-3.888 -1.728 -5.112 -2.592 -7.416 -2.592 c
+-9.288 -2.592 -11.016 -2.16 -12.24 -0.864 c
+-14.76 -3.384 l
+-12.816 -5.4 -10.512 -6.048 -7.488 -6.048 c
+-3.24 -6.048 0 -3.888 0 0 c
+f*
+Q
+q
+[1 0 0 1 171.122 10.345] cm
+0 0 m
+0 3.024 0.216 5.76 -2.016 7.992 c
+-3.312 9.36 -5.256 9.936 -7.344 9.936 c
+-14.544 9.936 l
+-14.544 -10.152 l
+-7.344 -10.152 l
+-5.256 -10.152 -3.312 -9.576 -2.016 -8.208 c
+0.216 -5.976 0 -3.024 0 0 c
+h
+-3.888 0 m
+-3.888 -3.096 -4.032 -4.536 -4.752 -5.4 c
+-5.4 -6.192 -6.336 -6.624 -7.704 -6.624 c
+-10.656 -6.624 l
+-10.656 6.408 l
+-7.704 6.408 l
+-6.336 6.408 -5.4 5.976 -4.752 5.184 c
+-4.032 4.32 -3.888 3.024 -3.888 0 c
+f*
+Q
+q
+[1 0 0 1 188.474 0.19418] cm
+0 0 m
+0 3.528 l
+-9.288 3.528 l
+-9.288 8.352 l
+-1.368 8.352 l
+-1.368 11.88 l
+-9.288 11.88 l
+-9.288 16.56 l
+0 16.56 l
+0 20.088 l
+-13.176 20.088 l
+-13.176 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 207.842 0.19418] cm
+0 0 m
+0 20.088 l
+-3.96 20.088 l
+-3.96 7.776 l
+-11.88 20.088 l
+-15.408 20.088 l
+-15.408 0 l
+-11.448 0 l
+-11.448 12.312 l
+-3.528 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 99.698 70.322] cm
+0 0 m
+0 3.456 l
+-14.4 3.456 l
+-14.4 0 l
+-9.144 0 l
+-9.144 -16.56 l
+-5.256 -16.56 l
+-5.256 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 116.546 53.761] cm
+0 0 m
+0 3.456 l
+-9.36 3.456 l
+-9.36 8.352 l
+-1.44 8.352 l
+-1.44 11.808 l
+-9.36 11.808 l
+-9.36 16.56 l
+0 16.56 l
+0 20.016 l
+-13.248 20.016 l
+-13.248 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 134.762 59.882] cm
+0 0 m
+-3.96 0 l
+-4.392 -1.584 -5.4 -2.808 -7.344 -2.808 c
+-8.424 -2.808 -9.288 -2.448 -9.864 -1.8 c
+-10.656 -0.936 -10.872 0 -10.872 3.888 c
+-10.872 7.776 -10.656 8.712 -9.864 9.576 c
+-9.288 10.224 -8.424 10.584 -7.344 10.584 c
+-5.4 10.584 -4.392 9.36 -3.96 7.776 c
+0 7.776 l
+-0.72 11.952 -3.672 14.112 -7.416 14.112 c
+-9.576 14.112 -11.376 13.32 -12.816 11.88 c
+-14.832 9.864 -14.76 7.344 -14.76 3.888 c
+-14.76 0.432 -14.832 -2.088 -12.816 -4.104 c
+-11.376 -5.544 -9.576 -6.336 -7.416 -6.336 c
+-3.672 -6.336 -0.72 -4.176 0 0 c
+f*
+Q
+q
+[1 0 0 1 153.05 53.761] cm
+0 0 m
+0 20.016 l
+-3.888 20.016 l
+-3.888 11.808 l
+-10.728 11.808 l
+-10.728 20.016 l
+-14.616 20.016 l
+-14.616 0 l
+-10.728 0 l
+-10.728 8.352 l
+-3.888 8.352 l
+-3.888 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 173.426 53.761] cm
+0 0 m
+0 20.016 l
+-3.888 20.016 l
+-3.888 7.776 l
+-11.88 20.016 l
+-15.336 20.016 l
+-15.336 0 l
+-11.448 0 l
+-11.448 12.312 l
+-3.456 0 l
+0 0 l
+f*
+Q
+178.466 53.761 3.8879 20.016 re
+f
+q
+[1 0 0 1 200.354 59.666] cm
+0 0 m
+0 1.728 -0.504 3.24 -1.584 4.248 c
+-2.376 5.04 -3.528 5.544 -5.4 5.76 c
+-7.776 6.12 l
+-8.568 6.264 -9.216 6.552 -9.648 6.912 c
+-10.008 7.344 -10.224 7.848 -10.224 8.352 c
+-10.224 9.72 -9.216 10.872 -7.128 10.872 c
+-5.76 10.872 -4.248 10.728 -3.024 9.504 c
+-0.504 11.952 l
+-2.232 13.608 -4.248 14.328 -6.984 14.328 c
+-11.304 14.328 -13.968 11.808 -13.968 8.208 c
+-13.968 6.552 -13.536 5.256 -12.528 4.248 c
+-11.664 3.384 -10.368 2.88 -8.64 2.592 c
+-6.264 2.232 l
+-5.328 2.088 -4.824 1.944 -4.464 1.584 c
+-4.032 1.152 -3.816 0.576 -3.816 -0.144 c
+-3.816 -1.728 -5.112 -2.592 -7.416 -2.592 c
+-9.216 -2.592 -10.944 -2.16 -12.24 -0.936 c
+-14.76 -3.456 l
+-12.816 -5.472 -10.512 -6.12 -7.416 -6.12 c
+-3.24 -6.12 0 -3.888 0 0 c
+f*
+Q
+q
+[1 0 0 1 218.498 59.882] cm
+0 0 m
+-3.96 0 l
+-4.32 -1.584 -5.4 -2.808 -7.344 -2.808 c
+-8.424 -2.808 -9.288 -2.448 -9.864 -1.8 c
+-10.584 -0.936 -10.8 0 -10.8 3.888 c
+-10.8 7.776 -10.584 8.712 -9.864 9.576 c
+-9.288 10.224 -8.424 10.584 -7.344 10.584 c
+-5.4 10.584 -4.32 9.36 -3.96 7.776 c
+0 7.776 l
+-0.72 11.952 -3.6 14.112 -7.344 14.112 c
+-9.576 14.112 -11.376 13.32 -12.816 11.88 c
+-14.832 9.864 -14.76 7.344 -14.76 3.888 c
+-14.76 0.432 -14.832 -2.088 -12.816 -4.104 c
+-11.376 -5.544 -9.576 -6.336 -7.344 -6.336 c
+-3.672 -6.336 -0.72 -4.176 0 0 c
+f*
+Q
+q
+[1 0 0 1 236.786 53.761] cm
+0 0 m
+0 20.016 l
+-3.888 20.016 l
+-3.888 11.808 l
+-10.656 11.808 l
+-10.656 20.016 l
+-14.616 20.016 l
+-14.616 0 l
+-10.656 0 l
+-10.656 8.352 l
+-3.888 8.352 l
+-3.888 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 255.146 53.761] cm
+0 0 m
+0 3.456 l
+-9.36 3.456 l
+-9.36 8.352 l
+-1.44 8.352 l
+-1.44 11.808 l
+-9.36 11.808 l
+-9.36 16.56 l
+0 16.56 l
+0 20.016 l
+-13.248 20.016 l
+-13.248 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 4.5138 44.761] cm
+0 0 m
+20.088 0 l
+20.088 -23.4 l
+44.64 -23.4 l
+44.64 0 l
+64.656 0 l
+64.656 -20.52 l
+45.072 -40.104 l
+19.584 -40.104 l
+0 -20.52 l
+0 0 l
+h
+62.496 -2.231 m
+46.872 -2.231 l
+46.872 -25.631 l
+17.856 -25.631 l
+17.856 -2.231 l
+2.232 -2.231 l
+2.232 -19.655 l
+20.52 -37.871 l
+44.208 -37.871 l
+62.424 -19.655 l
+62.496 -2.231 l
+h
+62.064 4.465 m
+44.208 22.321 l
+20.52 22.321 l
+2.664 4.465 l
+24.552 4.465 l
+24.552 -18.935 l
+40.176 -18.935 l
+40.176 4.465 l
+62.064 4.465 l
+h
+64.656 2.233 m
+42.408 2.233 l
+42.408 -21.167 l
+22.32 -21.167 l
+22.32 2.233 l
+0 2.233 l
+0 4.969 l
+19.584 24.553 l
+45.072 24.553 l
+64.656 4.969 l
+64.656 2.233 l
+h
+-4.464 6.697 m
+-4.464 -22.247 l
+17.856 -44.567 l
+46.872 -44.567 l
+69.12 -22.247 l
+69.12 6.697 l
+46.872 29.017 l
+17.856 29.017 l
+-4.464 6.697 l
+h
+-2.232 5.833 m
+-2.232 -21.383 l
+18.72 -42.335 l
+45.936 -42.335 l
+66.888 -21.383 l
+66.888 5.833 l
+45.936 26.785 l
+18.72 26.785 l
+-2.232 5.833 l
+f*
+Q
+Q
+Q
+showpage
+%%PageTrailer
+pdfEndPage
+%%Trailer
+end
+%%DocumentSuppliedResources:
+%%EOF
diff --git a/macros/latex/contrib/tudscr/logo/TUD-blue.pdf b/macros/latex/contrib/tudscr/logo/TUD-blue.pdf
new file mode 100644
index 0000000000..4c62d0e386
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/TUD-blue.pdf
Binary files differ
diff --git a/macros/latex/contrib/tudscr/logo/TUD-white.eps b/macros/latex/contrib/tudscr/logo/TUD-white.eps
new file mode 100644
index 0000000000..f1c27c2434
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/TUD-white.eps
@@ -0,0 +1,987 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%XpdfVersion: 3.03
+%%Creator: AFPL Ghostscript 814 (epswrite)
+%%Title: untitled
+%%LanguageLevel: 2
+%%DocumentSuppliedResources: (atend)
+%%BoundingBox: 0 0 256 75
+%%HiResBoundingBox: 0 0 255.196 74.044
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset xpdf 3.03 0
+%%Copyright: Copyright 1996-2011 Glyph & Cog, LLC
+/xpdf 75 dict def xpdf begin
+% PDF special state
+/pdfDictSize 15 def
+/pdfSetup {
+ /setpagedevice where {
+ pop 2 dict begin
+ /Policies 1 dict dup begin /PageSize 6 def end def
+ { /Duplex true def } if
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfSetupPaper {
+ 2 array astore
+ /setpagedevice where {
+ pop 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfStartPage {
+ pdfDictSize dict begin
+ /pdfFillCS [] def
+ /pdfFillXform {} def
+ /pdfStrokeCS [] def
+ /pdfStrokeXform {} def
+ /pdfFill [0] def
+ /pdfStroke [0] def
+ /pdfFillOP false def
+ /pdfStrokeOP false def
+ /pdfLastFill false def
+ /pdfLastStroke false def
+ /pdfTextMat [1 0 0 1 0 0] def
+ /pdfFontSize 0 def
+ /pdfCharSpacing 0 def
+ /pdfTextRender 0 def
+ /pdfTextRise 0 def
+ /pdfWordSpacing 0 def
+ /pdfHorizScaling 1 def
+ /pdfTextClipPath [] def
+} def
+/pdfEndPage { end } def
+% PDF color state
+/cs { /pdfFillXform exch def dup /pdfFillCS exch def
+ setcolorspace } def
+/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def
+ setcolorspace } def
+/sc { pdfLastFill not { pdfFillCS setcolorspace } if
+ dup /pdfFill exch def aload pop pdfFillXform setcolor
+ /pdfLastFill true def /pdfLastStroke false def } def
+/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if
+ dup /pdfStroke exch def aload pop pdfStrokeXform setcolor
+ /pdfLastStroke true def /pdfLastFill false def } def
+/op { /pdfFillOP exch def
+ pdfLastFill { pdfFillOP setoverprint } if } def
+/OP { /pdfStrokeOP exch def
+ pdfLastStroke { pdfStrokeOP setoverprint } if } def
+/fCol {
+ pdfLastFill not {
+ pdfFillCS setcolorspace
+ pdfFill aload pop pdfFillXform setcolor
+ pdfFillOP setoverprint
+ /pdfLastFill true def /pdfLastStroke false def
+ } if
+} def
+/sCol {
+ pdfLastStroke not {
+ pdfStrokeCS setcolorspace
+ pdfStroke aload pop pdfStrokeXform setcolor
+ pdfStrokeOP setoverprint
+ /pdfLastStroke true def /pdfLastFill false def
+ } if
+} def
+% build a font
+/pdfMakeFont {
+ 4 3 roll findfont
+ 4 2 roll matrix scale makefont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /Encoding exch def
+ currentdict
+ end
+ definefont pop
+} def
+/pdfMakeFont16 {
+ exch findfont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /WMode exch def
+ currentdict
+ end
+ definefont pop
+} def
+% graphics state operators
+/q { gsave pdfDictSize dict begin } def
+/Q {
+ end grestore
+ /pdfLastFill where {
+ pop
+ pdfLastFill {
+ pdfFillOP setoverprint
+ } {
+ pdfStrokeOP setoverprint
+ } ifelse
+ } if
+} def
+/cm { concat } def
+/d { setdash } def
+/i { setflat } def
+/j { setlinejoin } def
+/J { setlinecap } def
+/M { setmiterlimit } def
+/w { setlinewidth } def
+% path segment operators
+/m { moveto } def
+/l { lineto } def
+/c { curveto } def
+/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+ neg 0 rlineto closepath } def
+/h { closepath } def
+% path painting operators
+/S { sCol stroke } def
+/Sf { fCol stroke } def
+/f { fCol fill } def
+/f* { fCol eofill } def
+% clipping operators
+/W { clip newpath } def
+/W* { eoclip newpath } def
+/Ws { strokepath clip newpath } def
+% text state operators
+/Tc { /pdfCharSpacing exch def } def
+/Tf { dup /pdfFontSize exch def
+ dup pdfHorizScaling mul exch matrix scale
+ pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put
+ exch findfont exch makefont setfont } def
+/Tr { /pdfTextRender exch def } def
+/Ts { /pdfTextRise exch def } def
+/Tw { /pdfWordSpacing exch def } def
+/Tz { /pdfHorizScaling exch def } def
+% text positioning operators
+/Td { pdfTextMat transform moveto } def
+/Tm { /pdfTextMat exch def } def
+% text string operators
+/xyshow where {
+ pop
+ /xyshow2 {
+ dup length array
+ 0 2 2 index length 1 sub {
+ 2 index 1 index 2 copy get 3 1 roll 1 add get
+ pdfTextMat dtransform
+ 4 2 roll 2 copy 6 5 roll put 1 add 3 1 roll dup 4 2 roll put
+ } for
+ exch pop
+ xyshow
+ } def
+}{
+ /xyshow2 {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval show moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval show moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/cshow where {
+ pop
+ /xycp {
+ 0 3 2 roll
+ {
+ pop pop currentpoint 3 2 roll
+ 1 string dup 0 4 3 roll put false charpath moveto
+ 2 copy get 2 index 2 index 1 add get
+ pdfTextMat dtransform rmoveto
+ 2 add
+ } exch cshow
+ pop pop
+ } def
+}{
+ /xycp {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval false charpath moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval false charpath moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/Tj {
+ fCol
+ 0 pdfTextRise pdfTextMat dtransform rmoveto
+ currentpoint 4 2 roll
+ pdfTextRender 1 and 0 eq {
+ 2 copy xyshow2
+ } if
+ pdfTextRender 3 and dup 1 eq exch 2 eq or {
+ 3 index 3 index moveto
+ 2 copy
+ currentfont /FontType get 3 eq { fCol } { sCol } ifelse
+ xycp currentpoint stroke moveto
+ } if
+ pdfTextRender 4 and 0 ne {
+ 4 2 roll moveto xycp
+ /pdfTextClipPath [ pdfTextClipPath aload pop
+ {/moveto cvx}
+ {/lineto cvx}
+ {/curveto cvx}
+ {/closepath cvx}
+ pathforall ] def
+ currentpoint newpath moveto
+ } {
+ pop pop pop pop
+ } ifelse
+ 0 pdfTextRise neg pdfTextMat dtransform rmoveto
+} def
+/TJm { 0.001 mul pdfFontSize mul pdfHorizScaling mul neg 0
+ pdfTextMat dtransform rmoveto } def
+/TJmV { 0.001 mul pdfFontSize mul neg 0 exch
+ pdfTextMat dtransform rmoveto } def
+/Tclip { pdfTextClipPath cvx exec clip newpath
+ /pdfTextClipPath [] def } def
+% Level 2/3 image operators
+/pdfImBuf 100 string def
+/pdfImStr {
+ 2 copy exch length lt {
+ 2 copy get exch 1 add exch
+ } {
+ ()
+ } ifelse
+} def
+/skipEOD {
+ { currentfile pdfImBuf readline
+ not { pop exit } if
+ (%-EOD-) eq { exit } if } loop
+} def
+/pdfIm { image skipEOD } def
+/pdfImM { fCol imagemask skipEOD } def
+/pr { 2 index 2 index 3 2 roll putinterval 4 add } def
+/pdfImClip {
+ gsave
+ 0 2 4 index length 1 sub {
+ dup 4 index exch 2 copy
+ get 5 index div put
+ 1 add 3 index exch 2 copy
+ get 3 index div put
+ } for
+ pop pop rectclip
+} def
+/pdfImClipEnd { grestore } def
+% shading operators
+/colordelta {
+ false 0 1 3 index length 1 sub {
+ dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt {
+ pop true
+ } if
+ } for
+ exch pop exch pop
+} def
+/funcCol { func n array astore } def
+/funcSH {
+ dup 0 eq {
+ true
+ } {
+ dup 6 eq {
+ false
+ } {
+ 4 index 4 index funcCol dup
+ 6 index 4 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 5 index 5 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 6 index 8 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ colordelta or or or
+ } ifelse
+ } ifelse
+ {
+ 1 add
+ 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch
+ 6 index 6 index 4 index 4 index 4 index funcSH
+ 2 index 6 index 6 index 4 index 4 index funcSH
+ 6 index 2 index 4 index 6 index 4 index funcSH
+ 5 3 roll 3 2 roll funcSH pop pop
+ } {
+ pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul
+ funcCol sc
+ dup 4 index exch mat transform m
+ 3 index 3 index mat transform l
+ 1 index 3 index mat transform l
+ mat transform l pop pop h f*
+ } ifelse
+} def
+/axialCol {
+ dup 0 lt {
+ pop t0
+ } {
+ dup 1 gt {
+ pop t1
+ } {
+ dt mul t0 add
+ } ifelse
+ } ifelse
+ func n array astore
+} def
+/axialSH {
+ dup 2 lt {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index axialCol 2 index axialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index axialSH
+ exch 3 2 roll axialSH
+ } {
+ pop 2 copy add 0.5 mul
+ axialCol sc
+ exch dup dx mul x0 add exch dy mul y0 add
+ 3 2 roll dup dx mul x0 add exch dy mul y0 add
+ dx abs dy abs ge {
+ 2 copy yMin sub dy mul dx div add yMin m
+ yMax sub dy mul dx div add yMax l
+ 2 copy yMax sub dy mul dx div add yMax l
+ yMin sub dy mul dx div add yMin l
+ h f*
+ } {
+ exch 2 copy xMin sub dx mul dy div add xMin exch m
+ xMax sub dx mul dy div add xMax exch l
+ exch 2 copy xMax sub dx mul dy div add xMax exch l
+ xMin sub dx mul dy div add xMin exch l
+ h f*
+ } ifelse
+ } ifelse
+} def
+/radialCol {
+ dup t0 lt {
+ pop t0
+ } {
+ dup t1 gt {
+ pop t1
+ } if
+ } ifelse
+ func n array astore
+} def
+/radialSH {
+ dup 0 eq {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index dt mul t0 add radialCol
+ 2 index dt mul t0 add radialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index radialSH
+ exch 3 2 roll radialSH
+ } {
+ pop 2 copy add 0.5 mul dt mul t0 add
+ radialCol sc
+ encl {
+ exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 0 360 arc h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 360 0 arcn h f
+ } {
+ 2 copy
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arcn
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arcn h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arc
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arc h f
+ } ifelse
+ } ifelse
+} def
+end
+%%EndResource
+%%EndProlog
+%%BeginSetup
+xpdf begin
+%%EndSetup
+pdfStartPage
+[] 0 d
+1 i
+0 j
+0 J
+10 M
+1 w
+/DeviceGray {} cs
+[0] sc
+/DeviceGray {} CS
+[0] SC
+false op
+false OP
+{} settransfer
+0 0 255.196 74.044 re
+W
+q
+q
+1 i
+-279.324 -576.26 m
+24720.676 -576.26 l
+24720.676 24423.74 l
+-279.324 24423.74 l
+W
+0.059998 0 255.24 74.04 re
+W
+/DeviceGray {} cs
+[1] sc
+false op
+false OP
+225.986 47.138 3.4563 3.5281 re
+f
+235.418 47.138 3.4563 3.5281 re
+f
+q
+[1 0 0 1 182.354 26.906] cm
+0 0 m
+-4.464 8.712 l
+-2.52 9.36 -0.864 11.16 -0.864 13.968 c
+-0.864 17.28 -3.24 20.088 -7.344 20.088 c
+-15.192 20.088 l
+-15.192 0 l
+-11.304 0 l
+-11.304 8.064 l
+-8.496 8.064 l
+-4.536 0 l
+0 0 l
+h
+-4.752 13.968 m
+-4.752 12.384 -5.904 11.304 -7.56 11.304 c
+-11.304 11.304 l
+-11.304 16.632 l
+-7.56 16.632 l
+-5.904 16.632 -4.752 15.48 -4.752 13.968 c
+f*
+Q
+q
+[1 0 0 1 241.25 26.906] cm
+0 0 m
+-7.344 20.088 l
+-10.368 20.088 l
+-17.712 0 l
+-13.608 0 l
+-12.384 3.6 l
+-5.256 3.6 l
+-4.104 0 l
+0 0 l
+h
+-6.336 6.912 m
+-11.304 6.912 l
+-8.784 14.184 l
+-6.336 6.912 l
+f*
+Q
+q
+[1 0 0 1 100.058 33.818] cm
+0 0 m
+0 13.176 l
+-3.888 13.176 l
+-3.888 0.144 l
+-3.888 -2.16 -5.328 -3.528 -7.416 -3.528 c
+-9.504 -3.528 -10.872 -2.16 -10.872 0.144 c
+-10.872 13.176 l
+-14.76 13.176 l
+-14.76 0 l
+-14.76 -4.248 -11.52 -7.056 -7.416 -7.056 c
+-3.312 -7.056 0 -4.248 0 0 c
+f*
+Q
+q
+[1 0 0 1 120.002 26.906] cm
+0 0 m
+0 20.088 l
+-3.96 20.088 l
+-3.96 7.848 l
+-11.88 20.088 l
+-15.408 20.088 l
+-15.408 0 l
+-11.448 0 l
+-11.448 12.384 l
+-3.528 0 l
+0 0 l
+f*
+Q
+124.682 26.906 3.9602 20.088 re
+f
+q
+[1 0 0 1 147.434 46.994] cm
+0 0 m
+-4.104 0 l
+-8.136 -13.032 l
+-12.168 0 l
+-16.2 0 l
+-9.576 -20.088 l
+-6.696 -20.088 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 163.202 26.978] cm
+0 0 m
+0 3.456 l
+-9.288 3.456 l
+-9.288 8.352 l
+-1.368 8.352 l
+-1.368 11.808 l
+-9.288 11.808 l
+-9.288 16.56 l
+0 16.56 l
+0 20.016 l
+-13.176 20.016 l
+-13.176 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 198.698 32.882] cm
+0 0 m
+0 1.728 -0.504 3.24 -1.584 4.248 c
+-2.376 5.04 -3.528 5.544 -5.4 5.76 c
+-7.776 6.12 l
+-8.568 6.264 -9.216 6.552 -9.648 6.912 c
+-10.008 7.272 -10.224 7.848 -10.224 8.352 c
+-10.224 9.72 -9.216 10.872 -7.128 10.872 c
+-5.76 10.872 -4.248 10.728 -3.024 9.504 c
+-0.504 11.952 l
+-2.232 13.608 -4.248 14.328 -6.984 14.328 c
+-11.304 14.328 -13.968 11.808 -13.968 8.208 c
+-13.968 6.552 -13.536 5.256 -12.528 4.248 c
+-11.664 3.384 -10.368 2.88 -8.64 2.592 c
+-6.264 2.232 l
+-5.328 2.088 -4.824 1.944 -4.464 1.584 c
+-4.032 1.152 -3.816 0.576 -3.816 -0.144 c
+-3.816 -1.728 -5.112 -2.592 -7.416 -2.592 c
+-9.216 -2.592 -10.944 -2.16 -12.24 -0.936 c
+-14.76 -3.456 l
+-12.816 -5.472 -10.512 -6.12 -7.416 -6.12 c
+-3.24 -6.12 0 -3.888 0 0 c
+f*
+Q
+202.514 26.906 3.8879 20.088 re
+f
+q
+[1 0 0 1 224.186 43.538] cm
+0 0 m
+0 3.456 l
+-14.4 3.456 l
+-14.4 0 l
+-9.144 0 l
+-9.144 -16.56 l
+-5.256 -16.56 l
+-5.256 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 255.074 43.538] cm
+0 0 m
+0 3.456 l
+-14.4 3.456 l
+-14.4 0 l
+-9.144 0 l
+-9.144 -16.632 l
+-5.256 -16.632 l
+-5.256 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 99.842 10.345] cm
+0 0 m
+0 3.024 0.288 5.76 -2.016 7.992 c
+-3.312 9.36 -5.184 9.936 -7.272 9.936 c
+-14.544 9.936 l
+-14.544 -10.152 l
+-7.272 -10.152 l
+-5.184 -10.152 -3.312 -9.576 -2.016 -8.208 c
+0.288 -5.976 0 -3.024 0 0 c
+h
+-3.888 0 m
+-3.888 -3.096 -4.032 -4.536 -4.752 -5.4 c
+-5.4 -6.192 -6.336 -6.624 -7.632 -6.624 c
+-10.584 -6.624 l
+-10.584 6.408 l
+-7.632 6.408 l
+-6.336 6.408 -5.4 5.976 -4.752 5.184 c
+-4.032 4.32 -3.888 3.024 -3.888 0 c
+f*
+Q
+q
+[1 0 0 1 119.21 0.19418] cm
+0 0 m
+-4.464 8.64 l
+-2.52 9.36 -0.792 11.088 -0.792 13.896 c
+-0.792 17.28 -3.24 20.088 -7.344 20.088 c
+-15.192 20.088 l
+-15.192 0 l
+-11.304 0 l
+-11.304 7.992 l
+-8.424 7.992 l
+-4.536 0 l
+0 0 l
+h
+-4.752 13.896 m
+-4.752 12.384 -5.832 11.304 -7.56 11.304 c
+-11.304 11.304 l
+-11.304 16.56 l
+-7.56 16.56 l
+-5.832 16.56 -4.752 15.48 -4.752 13.896 c
+f*
+Q
+q
+[1 0 0 1 135.842 0.19418] cm
+0 0 m
+0 3.528 l
+-9.36 3.528 l
+-9.36 8.352 l
+-1.44 8.352 l
+-1.44 11.88 l
+-9.36 11.88 l
+-9.36 16.56 l
+0 16.56 l
+0 20.088 l
+-13.248 20.088 l
+-13.248 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 152.762 6.0982] cm
+0 0 m
+0 1.8 -0.504 3.24 -1.584 4.248 c
+-2.448 5.04 -3.6 5.544 -5.4 5.832 c
+-7.776 6.192 l
+-8.568 6.264 -9.216 6.624 -9.648 6.984 c
+-10.08 7.344 -10.224 7.92 -10.224 8.424 c
+-10.224 9.792 -9.216 10.944 -7.128 10.944 c
+-5.832 10.944 -4.248 10.728 -3.024 9.576 c
+-0.504 12.024 l
+-2.232 13.68 -4.248 14.328 -6.984 14.328 c
+-11.376 14.328 -13.968 11.808 -13.968 8.28 c
+-13.968 6.552 -13.536 5.256 -12.6 4.32 c
+-11.664 3.456 -10.368 2.88 -8.64 2.664 c
+-6.264 2.304 l
+-5.328 2.16 -4.896 1.944 -4.464 1.584 c
+-4.032 1.224 -3.888 0.648 -3.888 -0.072 c
+-3.888 -1.728 -5.112 -2.592 -7.416 -2.592 c
+-9.288 -2.592 -11.016 -2.16 -12.24 -0.864 c
+-14.76 -3.384 l
+-12.816 -5.4 -10.512 -6.048 -7.488 -6.048 c
+-3.24 -6.048 0 -3.888 0 0 c
+f*
+Q
+q
+[1 0 0 1 171.122 10.345] cm
+0 0 m
+0 3.024 0.216 5.76 -2.016 7.992 c
+-3.312 9.36 -5.256 9.936 -7.344 9.936 c
+-14.544 9.936 l
+-14.544 -10.152 l
+-7.344 -10.152 l
+-5.256 -10.152 -3.312 -9.576 -2.016 -8.208 c
+0.216 -5.976 0 -3.024 0 0 c
+h
+-3.888 0 m
+-3.888 -3.096 -4.032 -4.536 -4.752 -5.4 c
+-5.4 -6.192 -6.336 -6.624 -7.704 -6.624 c
+-10.656 -6.624 l
+-10.656 6.408 l
+-7.704 6.408 l
+-6.336 6.408 -5.4 5.976 -4.752 5.184 c
+-4.032 4.32 -3.888 3.024 -3.888 0 c
+f*
+Q
+q
+[1 0 0 1 188.474 0.19418] cm
+0 0 m
+0 3.528 l
+-9.288 3.528 l
+-9.288 8.352 l
+-1.368 8.352 l
+-1.368 11.88 l
+-9.288 11.88 l
+-9.288 16.56 l
+0 16.56 l
+0 20.088 l
+-13.176 20.088 l
+-13.176 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 207.842 0.19418] cm
+0 0 m
+0 20.088 l
+-3.96 20.088 l
+-3.96 7.776 l
+-11.88 20.088 l
+-15.408 20.088 l
+-15.408 0 l
+-11.448 0 l
+-11.448 12.312 l
+-3.528 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 99.698 70.322] cm
+0 0 m
+0 3.456 l
+-14.4 3.456 l
+-14.4 0 l
+-9.144 0 l
+-9.144 -16.56 l
+-5.256 -16.56 l
+-5.256 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 116.546 53.761] cm
+0 0 m
+0 3.456 l
+-9.36 3.456 l
+-9.36 8.352 l
+-1.44 8.352 l
+-1.44 11.808 l
+-9.36 11.808 l
+-9.36 16.56 l
+0 16.56 l
+0 20.016 l
+-13.248 20.016 l
+-13.248 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 134.762 59.882] cm
+0 0 m
+-3.96 0 l
+-4.392 -1.584 -5.4 -2.808 -7.344 -2.808 c
+-8.424 -2.808 -9.288 -2.448 -9.864 -1.8 c
+-10.656 -0.936 -10.872 0 -10.872 3.888 c
+-10.872 7.776 -10.656 8.712 -9.864 9.576 c
+-9.288 10.224 -8.424 10.584 -7.344 10.584 c
+-5.4 10.584 -4.392 9.36 -3.96 7.776 c
+0 7.776 l
+-0.72 11.952 -3.672 14.112 -7.416 14.112 c
+-9.576 14.112 -11.376 13.32 -12.816 11.88 c
+-14.832 9.864 -14.76 7.344 -14.76 3.888 c
+-14.76 0.432 -14.832 -2.088 -12.816 -4.104 c
+-11.376 -5.544 -9.576 -6.336 -7.416 -6.336 c
+-3.672 -6.336 -0.72 -4.176 0 0 c
+f*
+Q
+q
+[1 0 0 1 153.05 53.761] cm
+0 0 m
+0 20.016 l
+-3.888 20.016 l
+-3.888 11.808 l
+-10.728 11.808 l
+-10.728 20.016 l
+-14.616 20.016 l
+-14.616 0 l
+-10.728 0 l
+-10.728 8.352 l
+-3.888 8.352 l
+-3.888 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 173.426 53.761] cm
+0 0 m
+0 20.016 l
+-3.888 20.016 l
+-3.888 7.776 l
+-11.88 20.016 l
+-15.336 20.016 l
+-15.336 0 l
+-11.448 0 l
+-11.448 12.312 l
+-3.456 0 l
+0 0 l
+f*
+Q
+178.466 53.761 3.8879 20.016 re
+f
+q
+[1 0 0 1 200.354 59.666] cm
+0 0 m
+0 1.728 -0.504 3.24 -1.584 4.248 c
+-2.376 5.04 -3.528 5.544 -5.4 5.76 c
+-7.776 6.12 l
+-8.568 6.264 -9.216 6.552 -9.648 6.912 c
+-10.008 7.344 -10.224 7.848 -10.224 8.352 c
+-10.224 9.72 -9.216 10.872 -7.128 10.872 c
+-5.76 10.872 -4.248 10.728 -3.024 9.504 c
+-0.504 11.952 l
+-2.232 13.608 -4.248 14.328 -6.984 14.328 c
+-11.304 14.328 -13.968 11.808 -13.968 8.208 c
+-13.968 6.552 -13.536 5.256 -12.528 4.248 c
+-11.664 3.384 -10.368 2.88 -8.64 2.592 c
+-6.264 2.232 l
+-5.328 2.088 -4.824 1.944 -4.464 1.584 c
+-4.032 1.152 -3.816 0.576 -3.816 -0.144 c
+-3.816 -1.728 -5.112 -2.592 -7.416 -2.592 c
+-9.216 -2.592 -10.944 -2.16 -12.24 -0.936 c
+-14.76 -3.456 l
+-12.816 -5.472 -10.512 -6.12 -7.416 -6.12 c
+-3.24 -6.12 0 -3.888 0 0 c
+f*
+Q
+q
+[1 0 0 1 218.498 59.882] cm
+0 0 m
+-3.96 0 l
+-4.32 -1.584 -5.4 -2.808 -7.344 -2.808 c
+-8.424 -2.808 -9.288 -2.448 -9.864 -1.8 c
+-10.584 -0.936 -10.8 0 -10.8 3.888 c
+-10.8 7.776 -10.584 8.712 -9.864 9.576 c
+-9.288 10.224 -8.424 10.584 -7.344 10.584 c
+-5.4 10.584 -4.32 9.36 -3.96 7.776 c
+0 7.776 l
+-0.72 11.952 -3.6 14.112 -7.344 14.112 c
+-9.576 14.112 -11.376 13.32 -12.816 11.88 c
+-14.832 9.864 -14.76 7.344 -14.76 3.888 c
+-14.76 0.432 -14.832 -2.088 -12.816 -4.104 c
+-11.376 -5.544 -9.576 -6.336 -7.344 -6.336 c
+-3.672 -6.336 -0.72 -4.176 0 0 c
+f*
+Q
+q
+[1 0 0 1 236.786 53.761] cm
+0 0 m
+0 20.016 l
+-3.888 20.016 l
+-3.888 11.808 l
+-10.656 11.808 l
+-10.656 20.016 l
+-14.616 20.016 l
+-14.616 0 l
+-10.656 0 l
+-10.656 8.352 l
+-3.888 8.352 l
+-3.888 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 255.146 53.761] cm
+0 0 m
+0 3.456 l
+-9.36 3.456 l
+-9.36 8.352 l
+-1.44 8.352 l
+-1.44 11.808 l
+-9.36 11.808 l
+-9.36 16.56 l
+0 16.56 l
+0 20.016 l
+-13.248 20.016 l
+-13.248 0 l
+0 0 l
+f*
+Q
+q
+[1 0 0 1 4.5138 44.761] cm
+0 0 m
+20.088 0 l
+20.088 -23.4 l
+44.64 -23.4 l
+44.64 0 l
+64.656 0 l
+64.656 -20.52 l
+45.072 -40.104 l
+19.584 -40.104 l
+0 -20.52 l
+0 0 l
+h
+62.496 -2.231 m
+46.872 -2.231 l
+46.872 -25.631 l
+17.856 -25.631 l
+17.856 -2.231 l
+2.232 -2.231 l
+2.232 -19.655 l
+20.52 -37.871 l
+44.208 -37.871 l
+62.424 -19.655 l
+62.496 -2.231 l
+h
+62.064 4.465 m
+44.208 22.321 l
+20.52 22.321 l
+2.664 4.465 l
+24.552 4.465 l
+24.552 -18.935 l
+40.176 -18.935 l
+40.176 4.465 l
+62.064 4.465 l
+h
+64.656 2.233 m
+42.408 2.233 l
+42.408 -21.167 l
+22.32 -21.167 l
+22.32 2.233 l
+0 2.233 l
+0 4.969 l
+19.584 24.553 l
+45.072 24.553 l
+64.656 4.969 l
+64.656 2.233 l
+h
+-4.464 6.697 m
+-4.464 -22.247 l
+17.856 -44.567 l
+46.872 -44.567 l
+69.12 -22.247 l
+69.12 6.697 l
+46.872 29.017 l
+17.856 29.017 l
+-4.464 6.697 l
+h
+-2.232 5.833 m
+-2.232 -21.383 l
+18.72 -42.335 l
+45.936 -42.335 l
+66.888 -21.383 l
+66.888 5.833 l
+45.936 26.785 l
+18.72 26.785 l
+-2.232 5.833 l
+f*
+Q
+Q
+Q
+showpage
+%%PageTrailer
+pdfEndPage
+%%Trailer
+end
+%%DocumentSuppliedResources:
+%%EOF
diff --git a/macros/latex/contrib/tudscr/logo/TUD-white.pdf b/macros/latex/contrib/tudscr/logo/TUD-white.pdf
new file mode 100644
index 0000000000..92a701c5f7
--- /dev/null
+++ b/macros/latex/contrib/tudscr/logo/TUD-white.pdf
Binary files differ
diff --git a/macros/latex/contrib/tudscr/source/doc/examples/dissertation.tex b/macros/latex/contrib/tudscr/source/doc/examples/dissertation.tex
new file mode 100644
index 0000000000..d5ba74a3bb
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/examples/dissertation.tex
@@ -0,0 +1,38 @@
+\documentclass[%
+ english,ngerman,%
+ BCOR=6mm,cdgeometry=no,DIV=13%
+]{tudscrreprt}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{isodate}
+\usepackage{blindtext}
+\begin{document}
+\faculty{Juristische Fakultät}
+\department{Fachrichtung Strafrecht}
+\institute{Institut für Kriminologie}
+\chair{Lehrstuhl für Kriminalprognose}
+\date{18.02.2015}
+\author{Mickey Mouse}
+\title{%
+ Entwicklung eines optimalen Verfahrens zur Eroberung des
+ Geldspeichers in Entenhausen
+}
+\thesis{diss}
+\graduation[Dr. jur.]{Doktor der Rechte}
+\dateofbirth{2.1.1990}
+\placeofbirth{Dresden}
+\defensedate{15.03.2015}
+\referee{Dagobert Duck \and Mac Moneysac}
+\maketitle
+\TUDoption{abstract}{section,multiple}
+\begin{abstract}[pagestyle=empty.tudheadings]
+\blindtext
+\nextabstract[english]
+\blindtext
+\end{abstract}
+\end{document}
diff --git a/macros/latex/contrib/tudscr/source/doc/examples/document.tex b/macros/latex/contrib/tudscr/source/doc/examples/document.tex
new file mode 100644
index 0000000000..9751d1c3d6
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/examples/document.tex
@@ -0,0 +1,20 @@
+\documentclass[ngerman]{tudscrreprt}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage[math]{blindtext}
+\begin{document}
+\faculty{Juristische Fakultät}
+\department{Fachrichtung Strafrecht}
+\institute{Institut für Kriminologie}
+\chair{Lehrstuhl für Kriminalprognose}
+\date{18.02.2015}
+\author{Mickey Mouse}
+\title{Der Geldspeicher in Entenhausen}
+\maketitle
+\blinddocument
+\end{document}
diff --git a/macros/latex/contrib/tudscr/source/doc/examples/evaluation.tex b/macros/latex/contrib/tudscr/source/doc/examples/evaluation.tex
new file mode 100644
index 0000000000..c93670d7e6
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/examples/evaluation.tex
@@ -0,0 +1,47 @@
+\documentclass[ngerman]{tudscrartcl}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{isodate}
+\usepackage{tudscrsupervisor}
+\usepackage{enumitem}\setlist{noitemsep}
+\begin{document}
+\faculty{Juristische Fakultät}\department{Fachrichtung Strafrecht}
+\institute{Institut für Kriminologie}\chair{Lehrstuhl für Kriminalprognose}
+\date{16.10.2015}
+\author{Mickey Mouse}
+\title{%
+ Entwicklung eines optimalen Verfahrens zur Eroberung des
+ Geldspeichers in Entenhausen
+}
+\thesis{diploma}\graduation[Dipl.-Ing.]{Diplomingenieur}
+\matriculationnumber{12345678}\matriculationyear{2010}
+\dateofbirth{2.1.1990}\placeofbirth{Dresden}
+\referee{Dagobert Duck}
+\evaluationform[pagestyle=empty]{%
+ Als Ziel dieser Arbeit sollte identifiziert werden, warum das Thema
+ gerade so omnipräsent ist und wie sich dieser Effekt abschwächen
+ ließe. Zusätzlich waren Methoden zu entwickeln, mit denen ein
+ ähnlicher Vorgang zukünftig vermieden werden könnte.
+}{%
+ Die Arbeit gliedert sich in mehrere Kapitel auf unzähligen Seiten.
+ In den ersten beiden Kapiteln wird dies und das besprochen. Im
+ darauffolgenden auch noch jenes. Im vorletzten Kapitel wird alles
+ betrachtet und im letzten erfolgt Zusammenfassung und Ausblick.
+}{%
+ Die dargestellten Ergebnisse der vorliegenden Arbeit genügen den in
+ der Aufgabenstellung formulierten Arbeitsschwerpunkten. Sowohl
+ Form, Ausdruck und Terminologie als auch Struktur befriedigen die
+ Anforderungen an eine wissenschaftliche Arbeit. Die einzelnen
+ Kapitel können hinsichtlich ihrer inhaltlichen Tiefe in Relation zu
+ dem dazu benötigten Umfang als ausgewogen betrachtet werden. Die
+ verwendeten Grafiken und Tabellen sind sehr gut aufbereitet und
+ tragen insgesamt zum besseren Verständnis bei. Fachliche
+ Begrifflichkeiten werden sehr sauber verwendet, orthografische
+ Mängel sind keine zu finden.
+}{1,0 (sehr gut)}
+\end{document}
diff --git a/macros/latex/contrib/tudscr/source/doc/examples/mathswap-example.tex b/macros/latex/contrib/tudscr/source/doc/examples/mathswap-example.tex
new file mode 100644
index 0000000000..fd3e58d804
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/examples/mathswap-example.tex
@@ -0,0 +1,38 @@
+\documentclass[english,ngerman]{tudscrartcl}% andere Klassen möglich
+\usepackage[T1]{fontenc}
+\ifpdftex{\usepackage[ngerman=ngerman-x-latest]{hyphsubst}}{}
+\usepackage{babel}
+\usepackage{microtype}
+
+\usepackage{mathswap}
+\begin{document}
+
+\mathswapoff
+\(4.523,58\)
+\mathswapon
+
+\(4.523,58\)
+
+\(4,523.58\)
+
+\begingroup
+ \commaswap{\,}
+ \dotswap{,}
+ \(4,523.58\)
+\endgroup
+
+\begingroup
+ \selectlanguage{english}%
+ \(4,523.58\)\newline
+ \(4.523,58\)
+\endgroup
+
+\begingroup
+ \selectlanguage{english}%
+ \commaswap{.}
+ \dotswap{\,}
+ \(4.523,58\)
+\endgroup
+
+\end{document}
+
diff --git a/macros/latex/contrib/tudscr/source/doc/examples/mathtype-example.tex b/macros/latex/contrib/tudscr/source/doc/examples/mathtype-example.tex
new file mode 100644
index 0000000000..532bf94bbd
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/examples/mathtype-example.tex
@@ -0,0 +1,66 @@
+\documentclass[ngerman]{tudscrartcl}% andere Klassen sind möglich
+\usepackage[T1]{fontenc}
+\ifpdftex{\usepackage[ngerman=ngerman-x-latest]{hyphsubst}}{}
+\usepackage{babel}
+\usepackage{microtype}
+
+\usepackage{amsmath}
+\begin{document}
+
+\begin{equation*}
+\begin{gathered}
+M_{EM} = \frac{M_{Rad}}{i_g \cdot i_A} - M_{VM} \\
+\textrm{für }
+\begin{aligned}
+0\leq M_{VM}\leq M_{VMmax} \\
+M_{EMmin}\leq M_{EM}\leq M_{EMmax}
+\end{aligned}
+\end{gathered}
+\end{equation*}
+
+\begin{equation*}
+\begin{gathered}
+M_\mathrm{EM} = \frac{M_\mathrm{Rad}}{i_g \cdot i_A} - M_\mathrm{VM} \\
+\textrm{für }
+\begin{aligned}
+0\leq M_\mathrm{VM}\leq M_\mathrm{VM_{max}} \\
+M_\mathrm{EM_{min}}\leq M_\mathrm{EM}\leq M_\mathrm{EM_{max}}
+\end{aligned}
+\end{gathered}
+\end{equation*}
+
+\newcommand*{\ind}[1]{\ensuremath{\kern.03em_\mathrm{#1}}}
+\newcommand*{\M}[1]{\ensuremath{M\ind{#1}}}
+
+\begin{equation*}
+\begin{gathered}
+\M{EM} = \frac{\M{Rad}}{i_g \cdot i_A} - \M{VM} \\
+\textrm{für }
+\begin{aligned}
+0\leq \M{VM}\leq \M{VM_{max}} \\
+\M{EM_{min}}\leq \M{EM}\leq \M{EM_{max}}
+\end{aligned}
+\end{gathered}
+\end{equation*}
+
+\makeatletter
+\renewcommand*{\M}[1]{\@ifnextchar[{\o@M{#1}}{\n@M{#1}}}
+\newcommand*{\n@M}{}
+\newcommand*{\o@M}{}
+\def\n@M#1{\ensuremath{M\ind{#1}}}
+\def\o@M#1[#2]{\ensuremath{M\ind{#1_{#2}}}}
+\makeatother
+
+\begin{equation*}
+\begin{gathered}
+\M{EM} = \frac{\M{Rad}}{i_g \cdot i_A} - \M{VM} \\
+\textrm{für }
+\begin{aligned}
+0\leq \M{VM}\leq \M{VM}[max] \\
+\M{EM}[min]\leq \M{EM}\leq \M{EM}[max]
+\end{aligned}
+\end{gathered}
+\end{equation*}
+
+\end{document}
+
diff --git a/macros/latex/contrib/tudscr/source/doc/examples/notice.tex b/macros/latex/contrib/tudscr/source/doc/examples/notice.tex
new file mode 100644
index 0000000000..51ceaf2836
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/examples/notice.tex
@@ -0,0 +1,47 @@
+\documentclass[ngerman]{tudscrreprt}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{isodate}
+\usepackage{tudscrsupervisor}
+\usepackage{enumitem}\setlist{noitemsep}
+\begin{document}
+\faculty{Juristische Fakultät}\department{Fachrichtung Strafrecht}
+\institute{Institut für Kriminologie}\chair{Lehrstuhl für Kriminalprognose}
+\title{%
+ Entwicklung eines optimalen Verfahrens zur Eroberung des
+ Geldspeichers in Entenhausen
+}\date{16.10.2015}
+\contactperson{%
+ Dagobert Duck\emailaddress{dagobert.duck@tu-dresden.de}
+ \office{Dingens-Bau, Zimmer~08}\telephone{+49 351 463-12345}
+\and%
+ Mac Moneysac\emailaddress{mac.moneysac@tu-dresden.de}
+ \office{Dingens-Bau, Zimmer~15}\telephone{+49 351 463-54321}
+}
+\noticeform[Angebot für eine Studien-/Diplomarbeit,pagestyle=empty]{%
+ Momentan ist das besagte Thema in aller Munde. Insbesondere wird es
+ gerade in vielen~-- wenn nicht sogar in allen~-- Medien diskutiert.
+ Es ist momentan noch nicht abzusehen, ob und wann sich diese
+ Situation ändert. Eine kurzfristige Verlagerung aus dem Fokus der
+ Öffentlichkeit wird nicht erwartet.
+
+ Als Ziel dieser Arbeit soll identifiziert werden, warum das Thema
+ gerade so omnipräsent ist und wie dieser Effekt abgeschwächt werden
+ könnte. Zusätzlich sind Methoden zu entwickeln, mit denen sich ein
+ ähnlicher Vorgang zukünftig vermeiden lässt.
+ \begin{center}
+ \medskip\includegraphics[width=.7\linewidth]{DDC-21}
+ \renewcommand*{\figureformat}{\figurename}
+ \captionof{figure}{Thematisch passendes Bild}
+ \end{center}
+}{%
+ \item Recherche \& Analyse
+ \item Entwicklung eines Konzeptes \& Anwendung der entwickelten Methodik
+ \item Dokumentation und grafische Aufbereitung der Ergebnisse
+}
+\end{document}
diff --git a/macros/latex/contrib/tudscr/source/doc/examples/poster.tex b/macros/latex/contrib/tudscr/source/doc/examples/poster.tex
new file mode 100644
index 0000000000..61cb19989d
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/examples/poster.tex
@@ -0,0 +1,46 @@
+\RequirePackage{fix-cm}
+\documentclass[%
+ ngerman,%
+ paper=A1,fontsize=22pt,%
+ cdfoot=5ex,ddcfoot%
+]{tudscrposter}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{blindtext}
+\usepackage{multicol}
+\begin{document}
+\faculty{Juristische Fakultät}\department[]{Fachrichtung Strafrecht}
+\institute{Institut für Kriminologie}\chair[]{Lehrstuhl für Kriminalprognose}
+\title{%
+ Entwicklung eines optimalen Verfahrens zur Eroberung des
+ Geldspeichers in Entenhausen
+}\date{18.02.2015}
+\contactperson{%
+ Mickey Mouse\emailaddress{mickey.mouse@tu-dresden.de}%
+ \office{Büro 58}\telephone{463--xxxxx}%
+}
+\professor{Prof. Dr. Kater Karlo}
+\maketitle
+\begin{abstract}%[columns=2]
+\noindent\blindtext
+\end{abstract}
+
+\begin{multicols}{2}[\section*{Test}]
+\blindtext[3]
+\end{multicols}
+\bigskip
+
+\begin{center}
+\includegraphics[width=.7\linewidth]{TUD-black}
+\end{center}
+
+\begin{multicols}{2}[\section*{Test}]
+\blindmathtrue
+\blindtext[1]
+\end{multicols}
+\end{document}
diff --git a/macros/latex/contrib/tudscr/source/doc/examples/poster_print.tex b/macros/latex/contrib/tudscr/source/doc/examples/poster_print.tex
new file mode 100644
index 0000000000..fe192bf297
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/examples/poster_print.tex
@@ -0,0 +1,2 @@
+\PassOptionsToClass{cd=on}{tudscrposter}
+\input{poster.tex}
diff --git a/macros/latex/contrib/tudscr/source/doc/examples/task.tex b/macros/latex/contrib/tudscr/source/doc/examples/task.tex
new file mode 100644
index 0000000000..114a6cbfd9
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/examples/task.tex
@@ -0,0 +1,47 @@
+\documentclass[ngerman]{tudscrreprt}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{isodate}
+\usepackage{tudscrsupervisor}
+\usepackage{enumitem}\setlist{noitemsep}
+\begin{document}
+\faculty{Juristische Fakultät}\department{Fachrichtung Strafrecht}
+\institute{Institut für Kriminologie}\chair{Lehrstuhl für Kriminalprognose}
+\title{%
+ Entwicklung eines optimalen Verfahrens zur Eroberung des
+ Geldspeichers in Entenhausen
+}
+\thesis{master}\graduation[M.Sc.]{Master of Science}
+\author{%
+ Mickey Mouse\matriculationnumber{12345678}%
+ \dateofbirth{2.1.1990}\placeofbirth{Dresden}%
+ \course{Klinische Prognostik}\discipline{Individualprognose}%
+\and%
+ Donald Duck\matriculationnumber{87654321}%
+ \dateofbirth{1.2.1990}\placeofbirth{Berlin}%
+ \course{Statistische Prognostik}\discipline{Makrosoziologische Prognosen}%
+}\matriculationyear{2010}\issuedate{1.4.2015}\duedate{1.10.2015}
+\supervisor{Dagobert Duck \and Mac Moneysac}\professor{Prof. Dr. Kater Karlo}
+\referee{Prof. Dr. Kater Karlo}\chairman{Prof. Dr. Primus von Quack}
+\taskform[pagestyle=empty]{%
+ Momentan ist das besagte Thema in aller Munde. Insbesondere wird es
+ gerade in vielen~-- wenn nicht sogar in allen~-- Medien diskutiert.
+ Es ist momentan noch nicht abzusehen, ob und wann sich diese
+ Situation ändert. Eine kurzfristige Verlagerung aus dem Fokus
+ der Öffentlichkeit wird nicht erwartet.
+
+ Als Ziel dieser Arbeit soll identifiziert werden, warum das Thema
+ gerade so omnipräsent ist und wie dieser Effekt abgeschwächt werden
+ könnte. Zusätzlich sind Methoden zu entwickeln, mit denen sich ein
+ ähnlicher Vorgang zukünftig vermeiden lässt.
+}{%
+ \item Recherche \& Analyse
+ \item Entwicklung eines Konzeptes \& Anwendung der entwickelten Methodik
+ \item Dokumentation und grafische Aufbereitung der Ergebnisse
+}
+\end{document}
diff --git a/macros/latex/contrib/tudscr/source/doc/examples/thesis.tex b/macros/latex/contrib/tudscr/source/doc/examples/thesis.tex
new file mode 100644
index 0000000000..5d88a8c2bd
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/examples/thesis.tex
@@ -0,0 +1,37 @@
+\documentclass[ngerman,BCOR=4mm]{tudscrreprt}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{isodate}
+\begin{document}
+\faculty{Juristische Fakultät}
+\department{Fachrichtung Strafrecht}
+\institute{Institut für Kriminologie}
+\chair{Lehrstuhl für Kriminalprognose}
+\date{18.02.2015}
+\title{%
+ Entwicklung eines optimalen Verfahrens zur Eroberung des
+ Geldspeichers in Entenhausen
+}
+\subject{master}
+\graduation[M.Sc.]{Master of Science}
+\author{%
+ Mickey Mouse%
+ \matriculationnumber{12345678}%
+ \dateofbirth{2.1.1990}%
+ \placeofbirth{Dresden}%
+\and%
+ Donald Duck%
+ \matriculationnumber{87654321}%
+ \dateofbirth{1.2.1990}%
+ \placeofbirth{Berlin}%
+}
+\matriculationyear{2010}
+\supervisor{Dagobert Duck \and Mac Moneysac}
+\professor{Prof. Dr. Kater Karlo}
+\maketitle
+\end{document}
diff --git a/macros/latex/contrib/tudscr/source/doc/examples/treatise-example.tex b/macros/latex/contrib/tudscr/source/doc/examples/treatise-example.tex
new file mode 100644
index 0000000000..83d092306e
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/examples/treatise-example.tex
@@ -0,0 +1,442 @@
+\documentclass[english,ngerman]{tudscrreprt}
+\usepackage{babel}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{scrhack}
+\usepackage{tudscrsupervisor}
+
+\AfterPackage*{hyperref}{%
+\usepackage[%
+ acronym,% Abkürzungen
+ symbols,% Formelzeichen
+ nomain,% kein Glossar
+ nogroupskip,%
+ toc,%
+ section=chapter,%
+ nostyles,%
+ translate=babel,%
+% mit Tex Live einfach verwendbar
+ xindy={language=german-din},
+]{glossaries}
+\makeglossaries
+}% Ende von AfterPackage
+
+\AfterPackage*{glossaries}{%
+\newglossarystyle{acrotabu}{%
+ \renewenvironment{theglossary}{%
+ \begin{tabu}{@{}lX<{\strut}l@{}}% 'spread 0pt' defekt in v2.9
+ }{%
+ \end{tabu}\par\bigskip%
+ }%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand*{\glsgroupskip}{}%
+ \renewcommand*{\glossentry}[2]{%
+ \glsentryitem{##1}% Entry number if required
+ \glstarget{##1}{\sffamily\bfseries\glossentryname{##1}} &
+ \glsentrydesc{##1} &
+ ##2\tabularnewline
+ }
+}
+
+\newcommand*{\newformulasymbol}[5][]{%
+ \newglossaryentry{#2}{%
+ type=symbols,%
+ name={#3},%
+ description={\nopostdesc},%
+ symbol={\ensuremath{#4}},%
+ user1={\ensuremath{\mathrm{#5}}},%
+ sort={#2},%
+ #1%
+ }%
+}
+
+\defglsentryfmt[symbols]{%
+ \ifmmode%
+ \glssymbol{\glslabel}%
+ \else%
+ \glsgenentryfmt~\glsentrysymbol{\glslabel}%
+ \fi%
+}
+\newglossarystyle{symblongtabu}{%
+ \renewenvironment{theglossary}{%
+ \begin{longtabu}[l]{ccX<{\strut}l}% 'spread 0pt' defekt in v2.9
+ }{%
+ \end{longtabu}%
+ }%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand*{\glsgroupskip}{}%
+ \renewcommand*{\glossaryheader}{%
+ \toprule
+ \bfseries Symbol & \bfseries Einheit &
+ \bfseries Bezeichnung & \bfseries Seite(n)
+ \tabularnewline\midrule\endhead%
+ \bottomrule\endfoot%
+ }%
+ \renewcommand*{\glossentry}[2]{%
+ \glsentryitem{##1}% Entry number if required
+ \glstarget{##1}{\glossentrysymbol{##1}} &
+ \glsentryuseri{##1} &
+ \glossentryname{##1} &
+ ##2\tabularnewline%
+ }%
+}
+}% Ende von AfterPackage
+
+\usepackage{csquotes}
+\usepackage[backend=biber,style=alphabetic]{biblatex}
+
+\usepackage{filecontents}
+\begin{filecontents}{\jobname-temp.bib}
+@book{goossens94,
+ author = {Goossens, Michel and Mittelbach, Frank
+ and Samarin, Alexander},
+ title = {The LaTeX Companion},
+ date = {1994},
+ publisher = {Addison-Wesley},
+ location = {Reading, Massachusetts},
+ language = {english},
+}
+@book{knuth84,
+ author = {Knuth, Donald E.},
+ title = {The \TeX book},
+ date = {1984},
+ maintitle = {Computers \& Typesetting},
+ volume = {A},
+ publisher = {Addison-Wesley},
+ location = {Reading, Massachusetts},
+ language = {english},
+}
+@manual{hanisch14,
+ author = {Hanisch, Falk},
+ title = {Ein \LaTeX"=Bundle für Dokumente im neuen Corporate
+ Design der Technischen Universität Dresden},
+ date = {2014},
+ subtitle = {Benutzerhandbuch},
+ location = {Dresden},
+ language = {german},
+}
+\end{filecontents}
+\addbibresource{\jobname-temp.bib}
+
+\usepackage{caption}
+\captionsetup{font=sf,labelfont=bf,labelsep=space}
+\usepackage{floatrow}
+\floatsetup{font=sf}
+\floatsetup[table]{style=plaintop}
+\captionsetup{singlelinecheck=off,format=hang,justification=raggedright}
+\DeclareCaptionSubType[alph]{figure}
+\DeclareCaptionSubType[alph]{table}
+\captionsetup[subfloat]{labelformat=brace,list=off}
+
+\usepackage{booktabs}
+\usepackage{array}
+\usepackage{tabularx}
+\usepackage{tabulary}
+\usepackage{tabu}
+\usepackage{longtable}
+
+\usepackage{quoting}
+
+\usepackage[babel]{microtype}
+
+\usepackage{enumitem}
+\setlist[itemize]{noitemsep}
+
+\usepackage{ellipsis}
+\let\ellipsispunctuation\relax
+
+\usepackage{xfrac}
+
+\usepackage{isodate}
+
+\usepackage[colorlinks,linkcolor=blue]{hyperref}
+
+\begin{document}
+
+\faculty{Juristische Fakultät}
+\department{Fachrichtung Strafrecht}
+\institute{Institut für Kriminologie}
+\chair{Lehrstuhl für Kriminalprognose}
+\title{%
+ Entwicklung eines optimalen Verfahrens zur Eroberung des
+ Geldspeichers in Entenhausen
+}
+\thesis{master}
+\graduation[M.Sc.]{Master of Science}
+\author{%
+ Mickey Mouse%
+ \matriculationnumber{12345678}%
+ \dateofbirth{2.1.1990}%
+ \placeofbirth{Dresden}%
+ \course{Klinische Prognostik}%
+ \discipline{Individualprognose}%
+\and%
+ Donald Duck%
+ \matriculationnumber{87654321}%
+ \dateofbirth{1.2.1990}%
+ \placeofbirth{Berlin}%
+ \course{Statistische Prognostik}%
+ \discipline{Makrosoziologische Prognosen}%
+}
+\matriculationyear{2010}
+\supervisor{Dagobert Duck \and Mac Moneysac}
+\professor{Prof. Dr. Kater Karlo}
+\date{10.09.2014}
+\makecover
+\maketitle
+
+\newcommand{\taskcontent}{%
+ Momentan ist das besagte Thema in aller Munde. Insbesondere wird es
+ gerade in vielen~-- wenn nicht sogar in allen~-- Medien diskutiert.
+ Es ist momentan noch nicht abzusehen, ob und wann sich diese Situation
+ ändert. Eine kurzfristige Verlagerung aus dem Fokus der Öffentlichkeit
+ wird nicht erwartet.
+
+ Als Ziel dieser Arbeit soll identifiziert werden, warum das Thema
+ gerade so omnipräsent ist und wie dieser Effekt abgeschwächt werden
+ könnte. Zusätzlich sind Methoden zu entwickeln, mit denen sich ein
+ ähnlicher Vorgang zukünftig vermeiden lässt.
+}
+\taskform[pagestyle=empty]{\taskcontent}{%
+ \item Recherche
+ \item Analyse
+ \item Entwicklung eines Konzeptes
+ \item Anwendung der entwickelten Methodik
+ \item Dokumentation und grafische Aufbereitung der Ergebnisse
+}
+
+\TUDoption{abstract}{multiple,section}
+\begin{abstract}
+ Dies ist der deutschsprachige Teil der Zusammenfassung, in dem die
+ Motivation sowie der Inhalt der nachfolgenden wissenschaftlichen
+ Abhandlung kurz dargestellt werden.
+\nextabstract[english]
+ This is the english part of the summary, in which the motivation and
+ the content of the following academic treatise are briefly presented.
+\end{abstract}
+
+\declaration[company=FIRMA]
+
+\tableofcontents
+\listoffigures
+\listoftables
+
+\printacronyms[style=acrotabu]
+\printsymbols[style=symblongtabu]
+
+\setchapterpreamble{%
+ \renewcommand*{\dictumwidth}{.4\textwidth}%
+ \dictum[Johann Wolfgang von Goethe]{%
+ Es irrt der Mensch, solang er strebt.%
+ }%
+ \bigskip
+}
+\chapter{Einleitung}
+Nachdem nun der Vorspann und~-- bis auf das Literaturverzeichnis am
+Ende des Dokumentes auf Seite~\pageref{sec:bibliography}~-- alle
+Verzeichnisse erfolgreich ausgegeben wurden, wird nun die Verwendung
+der weiteren Umgebungen und Befehle demonstriert, welche im Tutorial
+\texturn{treatise.pdf} vorgestellt wurden.
+
+\section{Die Verwendung von Akronymen und Symbolen}
+\newacronym{apsp}{APSP}{All-Pairs Shortest Path}
+\newacronym{spsp}{SPSP}{Single-Pair Shortest Path}
+\newacronym{sssp}{SSSP}{Single-Source Shortest Path}
+
+In der Graphentheorie wird häufig die Lösung des Problems des kürzesten
+Pfades zwischen zwei Knoten gesucht. Dieses Problem wird häufig auch
+mit \gls{spsp} bezeichnet. Es lässt sich auf die Variationen \gls{sssp}
+und \gls{apsp} erweitern. Für die Lösung von \gls{spsp}, \gls{sssp}
+oder \gls{apsp} kommen unterschiedliche Algorithmen zum Einsatz.
+
+\newformulasymbol{l}{Länge}{l}{m}
+\newformulasymbol{m}{Masse}{m}{kg}
+\newformulasymbol{a}{Beschleunigung}{a}{\sfrac{m}{s^2}}
+\newformulasymbol{t}{Zeit}{t}{s}
+\newformulasymbol{f}{Frequenz}{f}{s^{-1}}
+\newformulasymbol{F}{Kraft}{F}{m \cdot kg \cdot s^{-2} = \sfrac{J}{m}}
+
+Die Einheiten für die \gls{f} sowie die \gls{F} werden aus den
+SI"=Einheiten der Basisgrößen \gls{l}, \gls{m} und \gls{t} abgeleitet.
+Und dann gibt es noch die Grundgleichung der Mechanik, welche für den
+Fall einer konstanten Kraftwirkung in die Bewegungsrichtung einer
+Punktmasse lautet:
+\[\gls{F} = \gls{m} \cdot \gls{a}\]
+
+\section{Referenzen und das Literaturverzeichnis}
+Das Literaturverzeichnis wird auf Basis der nachfolgend verwendeten
+Zitate erstellt und ist auf Seite~\pageref{sec:bibliography} zu finden.
+In diesem Textabschnitt werden die zwei bekannten \LaTeX-Bücher
+\cite{knuth84} und \cite{goossens94} sowie das Anwenderhandbuch
+\cite{hanisch14} zitiert.
+
+\section{Grafiken und Tabellen in Gleitumgebungen}
+Es folgt die Demonstration von Gleitumgebungen, welche sowohl für
+Grafiken als auch Tabellen verwendet werden sollten. Im vorliegenden
+Beispiel kann unter Umständen der Eindruck entstehen, dass diese Seite
+etwas zu überladen mit Gleitobjekten ist. Dies liegt nicht an der
+Verwendung der Gleitobjekte sondern vielmehr am zu geringen Textvolumen
+und den eingeschränkten Möglichkeiten von \LaTeX{}, diese an geeigneten
+Stellen zu platzieren.
+
+\subsection{Abbildungen als Gleitobjekte und das Einbinden von Grafiken}
+In \autoref{fig:example} wird dargestellt, wie eine Grafik im PDF"~Format
+in ein Dokument eingebunden und auf diese verwiesen werden kann. Ein
+Querverweis auf ein Gleitobjekt sollte im Fließtext am besten mit Befehl
+\texttt{\textbackslash autoref\{\emph{<Label>}\}} erstellt werden.
+Hierfür ist ein entsprechender Anker am zu referenzierenden Objekt nötig,
+welcher mit dem Makro \texttt{\textbackslash label} erzeugt wird. Dabei
+ist entscheidend, dass dieser Anker erst \emph{nach} der Beschriftung des
+Objektes, welche mit \texttt{\textbackslash caption} zu erstellen ist,
+definiert werden sollte.
+
+\begin{figure}
+\centering
+\includegraphics{TUD-black}
+\caption{Beispielgrafik}\label{fig:example}
+\end{figure}
+
+\subsection{Untergleitobjekte}
+Nachdem nun schon eine gleitende Abbildung und zwei gleitende Tabellen
+erstellt wurden, folgt jetzt noch eine gleitende Abbildung mit zwei
+Unterabbildungen. Durch die drei gesetzten Anker kann im Fließtext
+sowohl auf \autoref{fig:logos} als auch auf \autoref{fig:tud} sowie
+\autoref{fig:ddc} verwiesen werden.
+
+\begin{figure}
+\ffigbox[\FBwidth]%
+ {\begin{subfloatrow}%
+ \ffigbox[\FBwidth]%
+ {\fbox{\includegraphics[height=2cm]{TUD-black}}}%
+ {\caption{Eine Abbildung}\label{fig:tud}}%
+ \ffigbox[\FBwidth]%
+ {\fbox{\includegraphics[height=2cm]{DDC-21}}}%
+ {\caption{Eine weitere Abbildung}\label{fig:ddc}}%
+ \end{subfloatrow}}%
+ {\caption{Eine Gleitumgebung mit zwei Abbildungen}\label{fig:logos}}%
+\end{figure}
+
+\subsection{Tabellen als Gleitobjekte}
+Tabellen sollten in der \texttt{table}"=Gleitumgebung gesetzt werden.
+Welche Umgebung für die Tabelle selbst dabei genutzt wird ist dabei
+nicht relevant. Es können sowohl die normale \texttt{tabular}"=Umgebung
+als auch die Umgebungen \texttt{tabularx}, \texttt{tabulary} sowie
+\texttt{tabu} für variable Spaltenbreiten bei einer fest vorgegebenen
+Tabellenbreite oder jede andere Tabellenumgebung genutzt werden.
+Nachfolgend wird dies an mehreren Beispielen demonstriert.
+
+\subsubsection{Eine gleitende tabularx-Tabelle}
+Es wird eine Tabelle mithilfe der \texttt{tabularx}"=Umgebung erstellt.
+Zu sehen ist diese in \autoref{tab:tabularx}. Für diese werden zuvor
+neue Spaltentypen definiert.
+
+\newcolumntype{Y}{>{\hspace{0pt}}X}
+\newcolumntype{D}{>{\raggedright}Y}
+\newcolumntype{E}{>{\centering}Y}
+\newcolumntype{F}{>{\raggedleft}Y}
+
+\begin{table}
+\begin{tabularx}{\textwidth}{@{}DEFY@{}}
+\toprule
+\textbf{Linksbündig} & \textbf{Zentriert} &
+\textbf{Rechtsbündig} & \textbf{Blocksatz} \tabularnewline
+\midrule
+Ein linksbündiger Blindtext zur Demonstration einer S"~Spalte &
+Ein zentrierter Blindtext zur Demonstration einer T"~Spalte &
+Ein rechtsbündiger Blindtext zur Demonstration einer U"~Spalte &
+Ein längerer Blindtext im Blocksatz zur besseren Demonstration
+einer Y"~Spalte\tabularnewline
+\bottomrule
+\end{tabularx}
+\caption{Eine \texttt{tabularx}"=Tabelle}\label{tab:tabularx}
+\end{table}
+
+\subsubsection{Eine gleitende tabulary-Tabelle}
+Es wird eine Tabelle mithilfe der \texttt{tabulary}"=Umgebung erstellt.
+Zu sehen ist diese in \autoref{tab:tabulary}.
+
+\begin{table}
+\begin{tabulary}{\textwidth}{@{}LCRJ@{}}
+\toprule
+\textbf{Linksbündig} & \textbf{Zentriert} &
+\textbf{Rechtsbündig} & \textbf{Blocksatz} \tabularnewline\midrule
+Ein linksbündiger Blindtext zur Demonstration einer L"~Spalte &
+Ein zentrierter Blindtext zur Demonstration einer C"~Spalte &
+Ein rechtsbündiger Blindtext zur Demonstration einer R"~Spalte &
+Ein wesentlich längerer und absolut inhaltsleerer Blindtext im
+Blocksatz für eine um einiges bessere Demonstration einer J"~Spalte
+\tabularnewline\bottomrule
+\end{tabulary}
+\caption{Eine \texttt{tabulary}"=Tabelle}\label{tab:tabulary}
+\end{table}
+
+\subsubsection{Eine gleitende tabu-Tabelle}
+In \autoref{tab:tabu} ist eine weitere Tabelle mit variabler Breite der
+Spalten und festgelegter Gesamtbreite zu sehen, welche in der Umgebung
+\texttt{tabu} gesetzt wurde. Auch für diese wird zuerst ein neuer
+Spaltentyp definiert, der die Unzulänglichkeiten der Umgebung reduziert.
+Mit \texttt{\textbackslash ttabbox} aus dem Paket \texttt{floatrow} wird
+die Beschriftung auf die Breite der Tabelle begrenzt.
+
+\makeatletter
+\newcolumntype{Z}{}
+\renewcommand*{\NC@rewrite@Z}[1][]{%
+ \NC@find>{\hspace{0pt}}X[#1]<{\@finalstrut\@arstrutbox}%
+}
+\makeatother
+
+\begin{table}
+\ttabbox{%
+ \begin{tabu} to .8\textwidth {@{}Z[3,l]Z[3,c]Z[3,r]Z[2,j]@{}}
+ \toprule
+ \textbf{Linksbündig} & \textbf{Zentriert} &
+ \textbf{Rechtsbündig} & \textbf{Blocksatz} \tabularnewline\midrule
+ Ein linksbündiger Blindtext zur Demonstration einer Z[l]"~Spalte &
+ Ein zentrierter Blindtext zur Demonstration einer Z[c]"~Spalte &
+ Ein rechtsbündiger Blindtext zur Demonstration einer Z[r]"~Spalte &
+ Ein Blindtext im Blocksatz innerhalb einer Z"~Spalte
+ \tabularnewline\bottomrule
+ \end{tabu}%
+}{%
+ \caption[Eine \texttt{tabu}"=Tabelle]{%
+ Eine \texttt{tabu}"=Tabelle in Verbindung mit dem Befehl
+ \texttt{\textbackslash ttabbox}, welcher vom Paket \texttt{floatrow}
+ für Beschriftungen in Objektbreite bereitgestellt wird%
+ }%
+ \label{tab:tabu}%
+}
+\end{table}
+
+\section{Zitate}
+Bei der Verwendung von wörtlichen Zitaten sollten diese als solche
+gekennzeichnet werden.
+\enquote{Dies ist ein zugegebenermaßen nicht sehr sinnvolles Zitat.}
+\cite[58]{hanisch14}
+Für eine möglichst gut nachvollziehbare Referenz sollte nicht nur
+das Werk selber sondern zumindest die Seitenzahl und gegebenenfalls
+der Absatz der originalen Textstelle angegeben werden.
+\begin{quoting}
+\enquote{%
+ Dies ist ein noch sinnloseres Zitat. Allerdings wird zumindest die
+ Wirkung der Umgebung \texttt{quoting} bei der Absatzauszeichnung
+ deutlich.
+
+ Wie zu sehen ist, wird der zweite Absatz~-- wie jeder weitere~--
+ aufgrund der Option \texttt{parskip=false} eingezogen.
+}
+\cite[sinngemäß nach][\pno{} 12, zweiter Absatz]{hanisch14}
+\end{quoting}
+Ebenfalls sollten sinngemäße Zitate mit einer möglichst genauen Referenz
+angegeben werden. Dies kann im Laufe der Arbeit auch für einen selbst von
+Vorteil sein, wenn beispielsweise die originale Textpassage noch einmal
+analysiert werden soll.
+
+\printbibliography[heading=bibintoc]\label{sec:bibliography}%
+
+\end{document}
+
diff --git a/macros/latex/contrib/tudscr/source/doc/sub-tudscr.tex b/macros/latex/contrib/tudscr/source/doc/sub-tudscr.tex
new file mode 100644
index 0000000000..6c70d57083
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/sub-tudscr.tex
@@ -0,0 +1,17 @@
+%\AtBeginDocument{\TUDoptions{ToDo=no}}
+\includeonly{%
+% tudscr-preface,
+% tudscr-introduction,
+% tudscr-mainclasses,
+% tudscr-poster,
+% tudscr-supervisor,
+% tudscr-bundle,
+% tudscr-examples,
+% tudscr-packages,
+% tudscr-hints,
+% tudscr-installation,
+ tudscr-obsolete,
+% tudscr-additional,
+ tudscr-index,
+}
+\input{tudscr}
diff --git a/macros/latex/contrib/tudscr/source/doc/tudscr-additional.tex b/macros/latex/contrib/tudscr/source/doc/tudscr-additional.tex
new file mode 100644
index 0000000000..03ebd6ba85
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/tudscr-additional.tex
@@ -0,0 +1,52 @@
+\chapter{Identifikation von \TUDScript}
+Im \TUDScript-Bundle gibt es neben den Klassen selbst auch noch zusätzliche
+Pakete. Ein Teil dieser Pakete~-- genauer \Package{tudscrsupervisor} und
+\Package{tudscrcomp}~-- sind ausschließlich mit den \TUDScript-Klassen nutzbar,
+andere wiederum~-- die beiden Pakete für Belange des \CDs \Package{tudscrfonts}
+(Schriften) und \Package{tudscrcolor} (Farben) sowie die davon vollkommen
+unabhängigen Pakete \Package{mathswap} und \Package{twocolfix}~-- können mit
+allen existierenden \hologo{LaTeXe}"=Dokumentklassen genutzt werden. Sämtliche
+Klassen und Pakete aus dem \TUDScript-Bundle enthalten Befehle, welche diese
+als Bestandteil identifizieren.
+
+\begin{Declaration}[v2.04]{\Macro{TUDScript}}
+\printdeclarationlist%
+%
+Diese Anweisung setzt das Logo respektive die Wortmarke \enquote{\TUDScript{}}
+in serifenloser Schrift und mit leichter Sperrung des in Versalien gesetzten
+Teils. Dieser Befehl wird von allen Klassen und Paketen des \TUDScript-Bundles
+mit \Macro*{DeclareRobustCommand}.
+\end{Declaration}
+
+\begin{Declaration}[v2.04]{\Macro{TUDScriptClassName}}
+\printdeclarationlist%
+%
+Die Bezeichnung der jeweiligen, im Dokument verwendeten \TUDScript-Klasse ist
+im Makro \Macro{TUDScriptClassName} abgelegt. Soll also in Erfahrung gebracht
+werden, ob~-- und wenn ja, welche~-- \TUDScript-Klasse verwendet wird, so kann
+einfach auf diese Anweisung getestet werden. \KOMAScript{} stellt zusätzlich
+noch die beiden Anweisungen \Macro*{KOMAClassName} und \Macro*{ClassName}
+bereit, welche den Namen der zugrundeliegenden \KOMAScript-Klasse sowie die
+durch diese ersetzte Standardklasse enthalten.
+\end{Declaration}
+
+\begin{Declaration}[v2.04]{\Macro{TUDScriptVersion}}
+\begin{Declaration}[v2.05]{\Macro{TUDScriptVersionNumber}}
+\printdeclarationlist%
+%
+In \Macro{TUDScriptVersion} ist die Hauptversion von \TUDScript in der Form
+\begin{quoting}
+\PName{Datum}~\PName{Version}~\PValue{TUD-Script}
+\end{quoting}
+abgelegt. Die Version ist für alle Klassen und Pakete des \TUDScript-Bundles
+gleich und kann nach dem Laden einer Klasse oder eines Paketes abgefragt
+werden. Beispielsweise wurde diese Anleitung mit \enquote{\TUDScriptVersion{}}
+erstellt.
+
+Eventuell will der Anwender auf die aktuell verwendete Version von \TUDScript
+prüfen, um gegebenenfalls eigene Anpassungen in Abhängigkeit der verwendeten
+Version vorzunehmen. Hierfür kann \Macro{TUDScriptVersionNumber} verwendet
+werden. Darin ist alleinig die Versionsnummer enthalten. Die für das Handbuch
+verwendete Version lautet \enquote{\TUDScriptVersionNumber{}}.
+\end{Declaration}
+\end{Declaration}
diff --git a/macros/latex/contrib/tudscr/source/doc/tudscr-bundle.tex b/macros/latex/contrib/tudscr/source/doc/tudscr-bundle.tex
new file mode 100644
index 0000000000..c97773482c
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/tudscr-bundle.tex
@@ -0,0 +1,417 @@
+\setchapterpreamble{%
+ \tudhyperdef'{sec:bundle}%
+ \begin{abstract}
+ Zusätzlich zu den bisher im Anwenderhandbuch vorgestellten Klassen und
+ Paketen werden im \TUDScript-Bundle weitere Paket bereitgestellt. Diese
+ sind nicht zwingend an die Verwendung einer der \TUDScript-Klassen
+ angewiesen sondern können prinzipiell mit jeder \hologo{LaTeXe}"=Klasse
+ genutzt werden.%
+ \end{abstract}
+}
+\chapter{Zusätzliche Pakete im \TUDScript-Bundle}
+%
+\section{Das Paket \Package{tudscrcolor} -- Farben im \CD}%
+\index{Farben|(}%
+\index{Layout!Farben|?(}%
+%
+\begin{Bundle*}{\Package{tudscrcolor}}
+Zur Verwendung der Farben des \CDs wird das Paket \Package{tudscrcolor}
+genutzt. Falls dieses nicht in der Präambel geladen wird~-- um beispielsweise
+zusätzliche Optionen aufzurufen~-- binden die \TUDScript"=Klassen dieses
+automatisch ein.
+
+Für das \CD sind mehrere Farben vorgesehen. Die prägnanteste aller ist die
+Hausfarbe \Color{HKS41}, danach folgen die Farben für Auszeichnungen der ersten
+(\Color{HKS44}) und der zweiten Kategorie (\Color{HKS36}, \Color{HKS33},
+\Color{HKS57}, \Color{HKS65}) sowie eine Ausnahmefarbe (\Color{HKS07}).
+Diese Farben dürfen sowohl in ihrer Grundform als auch in helleren Tönen mit
+einer Abstufung in 10\,\%"~Schritten verwendet werden. Das ohnehin verwendete
+Paket \Package{xcolor} stellt genau diese Funktionalität zur Verfügung. Jede
+der Farben kann sowohl mit \Color*{HKS\PName{Zahl}}() als auch über ein
+Pseudonym \Color*{cd\PName{Farbe}}() genutzt werden.
+%
+\begin{Example*}
+Die Grundfarbe \Color{HKS44} soll in der auf 20\% reduzierten, helleren
+Abstufung genutzt werden. Innerhalb eines Befehls, der als Argument eine
+gültige Farbe erwartet, muss lediglich \PValue{HKS44!20} angegeben werden.
+Dies wird hier exemplarisch mit der folgenden \colorbox{HKS44!20}{%
+ Box \Macro{colorbox}[%
+ \PParameter{HKS44!20}\PParameter{Box}%
+ ](\Package{xcolor})'none'%
+}
+demonstriert.
+\end{Example*}
+%
+Bei der farbigen Gestaltung des \CDs (\Option{cd=color}) ist der Hintergrund
+von Umschlagseite, Titel sowie Teilen in \Color{HKS41} und die Schrift auf
+selbigen in \Color{HKS41}[!30] gehalten. Der Hintergrund von Kapitelseiten
+erscheint in \Color{HKS41}[!10], die Schrift in \Color{HKS41}. Bei geringerem
+Farbeinsatz werden lediglich die Schriften der Gliederungsseiten auf
+\Color{HKS41} gesetzt.
+
+Sollen bestimmte Optionen an das Paket \Package{xcolor} weitergereicht werden,
+gibt es dafür zwei Möglichkeiten. Diese kann entweder vor dem Laden der Klasse
+direkt an \Package{xcolor} übergeben werden%
+\footnote{%
+ \Macro{PassOptionsToPackage}[\Parameter{Paketoptionen}\PParameter{xcolor}]
+ vor dem Laden der genutzten Dokumentklasse mit
+ \Macro*{documentclass}[\OParameter{Klassenoptionen}\Parameter{Klasse}]%
+}
+oder es wird \Package{tudscrcolor} mit der entsprechenden Option geladen.%
+\footnote{%
+ \Macro*{usepackage}[\OParameter{Paketoptionen}\PParameter{tudscrcolor}];
+ \Package{tudscrcolor} reicht \PName{Paketoptionen} an \Package{xcolor} weiter%
+}
+\newcommand*\cdcolorcalc{}
+\newcommand*\cdcolorname{}
+\newcommand*\cdcolorvalue{}
+\newcommand*\cdcolortext{}
+\newcommand*\cdcolor[2][0]{%
+ \noindent%
+ \begin{tikzpicture}[%
+ every node/.style={%
+ rectangle, minimum height=.1\linewidth, minimum width=7em%
+ }%
+ ]%
+ \def\cdcolorcalc##1##2{%
+ \pgfmathparse{100-##1*10}%
+ \xdef\cdcolorname{HKS##2!\pgfmathresult}%
+ \xdef\cdcolorvalue{\pgfmathresult}%
+ \pgfmathparse{10+##1*10}%
+ }%
+ \foreach \x in {0,1,...,9}{%
+ \cdcolorcalc{\x}{#2}%
+ \ifnum\x<#1%
+ \def\cdcolortext{white}%
+ \else%
+ \def\cdcolortext{black}%
+ \fi%
+ \node [fill=\cdcolorname,rotate=90] at (.\x\linewidth,0)%
+ {\textcolor{\cdcolortext}{HKS#2!\pgfmathprintnumber\cdcolorvalue}};%
+ }%
+ \end{tikzpicture}%
+}
+
+\subsection{Generelle Farbdefinitionen}
+\minisec{Primäre Hausfarbe}
+\begin{Declaration}{\Color{HKS41}[cddarkblue]}
+\printdeclarationlist%
+\cdcolor[6]{41}
+\end{Declaration}
+
+\minisec{Sekundäre Hausfarbe (Geschäftsausstattung)}
+\begin{Declaration}{\Color{HKS92}[cdgray]}
+\printdeclarationlist%
+\cdcolor[4]{92}
+\end{Declaration}
+
+\minisec{Auszeichnungsfarbe 1.\,Kategorie}
+\begin{Declaration}{\Color{HKS44}[cdblue]}
+\printdeclarationlist%
+\cdcolor[4]{44}
+\end{Declaration}
+
+\minisec{Auszeichnungsfarbe 2.\,Kategorie}
+\begin{Declaration}{\Color{HKS36}[cdindigo]}
+\begin{Declaration}{\Color{HKS33}[cdpurple]}
+\begin{Declaration}{\Color{HKS57}[cddarkgreen]}
+\begin{Declaration}{\Color{HKS65}[cdgreen]}
+\printdeclarationlist%
+\cdcolor[4]{36}\vskip\medskipamount
+\cdcolor[4]{33}\vskip\medskipamount
+\cdcolor[2]{57}\vskip\medskipamount
+\cdcolor{65}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\minisec{Ausnahmefarbe}
+\begin{Declaration}{\Color{HKS07}[cdorange]}
+\printdeclarationlist%
+\cdcolor{07}
+\end{Declaration}
+
+
+\subsection{Zusätzliche Farbdefinitionen}
+Das Paket \Package{tudscrcolor} definiert im Normalfall lediglich die zuvor
+beschriebenen Grundfarben \Color{HKS41}, \Color{HKS92}, \Color{HKS44},
+\Color{HKS36}, \Color{HKS33}, \Color{HKS57}, \Color{HKS65} sowie \Color{HKS07}.
+Alle anderen farblichen Abstufungen können mit den beschrieben Möglichkeiten
+des Paketes \Package{xcolor} generiert werden.
+
+\begin{Declaration}{\Option{oldcolors}}
+\printdeclarationlist%
+%
+In den letzten Jahren sind viele verschiedene Klassen und Pakete für das \TUDCD
+entstanden. Innerhalb dieser existieren abweichende Farbdefinitionen. Um eine
+Migration von den benannten Klassen und Paketen auf \TUDScript zu ermöglichen,
+existiert die Paketoption \Option{oldcolors}. Wird diese genutzt, so werden
+zusätzliche Farben nach dem Schema \Color*{HKS41K\PName{Zahl}}() und
+\Color*{HKS41-\PName{Zahl}}() definiert, wobei der hinten angestellte
+Zahlenwert aus der 10er"~Reihe kommen muss.
+\end{Declaration}
+
+
+
+\subsection{Umstellung des Farbmodells}
+\index{Farben!Farbmodell}%
+%
+Normalerweise verwendet \Package{tudscrcolor} das CMYK"=Farbmodell. Außerdem
+wird weiterhin noch der RGB"=Farbraum unterstützt. Eine Umschaltung des
+Farbmodells ist beispielsweise für gewisse Funktionen des Paketes
+\Package{tikz} notwendig.
+
+\begin{Declaration}{\Option{RGB}}
+\printdeclarationlist%
+%
+Mit dieser Option werden bereits beim Laden des Paketes \Package{tudscrcolor}
+die Farben nicht nach dem CMYK"=Farbmodell sondern im RGB"=Farbraum global
+definiert.
+\end{Declaration}
+
+\begin{Declaration}{\Macro{setcdcolors}[\Parameter{Farbmodell}]}
+\printdeclarationlist%
+%
+Mit diesem Befehl kann innerhalb des Dokumentes das verwendete Farbmodell
+angepasst werden. Damit ist es möglich, lokal innerhalb einer Umgebung den
+Farbmodus zu ändern und so nur in bestimmten Situationen beispielsweise aus dem
+CMYK"=Farbmodell in den RGB"=Farbraum zu wechseln. Unterstützte Werte für
+\PName{Farbmodell} sind \PValue{CMYK} und \PValue{RGB} beziehungsweise
+\PValue{rgb}.
+\end{Declaration}
+
+\smallskip\noindent
+\Attention{%
+ Die Darstellung der Farben kann im jeweiligen Farbmodus
+ (\PValue{CMYK} oder \PValue{RGB}) je nach verwendeter Bildschirm-, Drucker-
+ und Softwarekonfiguration verschieden ausfallen. Die Farbwerte entstammen dem
+ Handbuch zum \CD und sind lediglich Näherungswerte. Abweichungen vom
+ gedruckten HKS"~Farbregister und selbst ermittelten Werten sind technisch
+ nicht zu vermeiden.
+}%
+\index{Farben|)}%
+\index{Layout!Farben|?)}%
+\end{Bundle*}
+
+
+
+\section{Das Paket \Package{tudscrfonts} -- Schriften im \CD}
+\begin{Bundle*}[v2.02]{\Package{tudscrfonts}}
+\printchangedatlist%
+%
+Dieses Paket stellt die Schriften des \CDs für \hologo{LaTeXe}"=Klassen bereit,
+welche \emph{nicht} zum \TUDScript-Bundle gehören. Das Paket unterstützt einen
+Großteil der normalerweise für die \TUDScript-Klassen bereitgestellten Optionen
+und Befehle für die Schriftauswahl. Um Dopplungen in der Dokumentation zu
+vermeiden, wird an dieser Stelle auf eine abermalige Erläuterung der im Paket
+\Package{tudscrfonts} verfügbaren Optionen und Befehle verzichtet. Diese werden
+im Folgenden lediglich noch einmal genannt, die dazugehörigen Erläuterungen
+sind in \fullref{sec:fonts} zu finden.
+
+Die nutzbaren Paketoptionen sind für den Fließtext \Option{cdfont}~-- ohne die
+Einstellungsmöglichkeiten für den Querbalken des \CDs (\Option{cdhead})~-- und
+für die mathematischen Schriften \Option{cdmath} sowie \Option{slantedgreek}.
+Für die Auswahl der Schreibmaschinenschriften ist \Option{ttfont} verfügbar.
+Weiterhin wird die Option \Option{relspacing} bereitgestellt. Alle genannten
+Optionen können entweder direkt als Klassenoption oder als Paketoptionen im
+optionalen Argument von
+\Macro*{usepackage}[\OParameter{Paketoptionen}\PParameter{tudscrfonts}]
+angegeben werden. Zusätzlich ist nach dem Laden des Paketes die Optionenwahl
+mit \Macro{TUDoption} respektive \Macro{TUDoptions} möglich.
+
+Die in \autoref{sec:fonts} beschriebenen Textschalter und "~kommandos zur
+expliziten Auswahl einzelner Schnitte der Hausschrift des \CDs sowie die
+Befehle für griechische Buchstaben werden ebenso bereitgestellt.
+\ChangedAt{v2.06:\OpenSans als neue Hausschrift standardmäßig aktiviert}
+Soll nicht \OpenSans sondern die alten Schriftfamilien \Univers und \DIN
+genutzt werden, ist eine Installation dieser notwendig. Hinweise hierzu sind
+unter \autoref{sec:install:fonts} zu finden. Um diese zu aktivieren, sei auf
+\Option{tudscrver=2.05} und \Option{cdoldfont} verwiesen.
+
+\ChangedAt{%
+ v2.04:Unterstützung der Klassen \Class{tudposter} und \Class{tudmathposter};%
+ v2.05:Neues Schriftpaket \Package{fix-tudscrfonts} für Dokumentklassen
+ im \CD der \TnUD, welche nicht zu \TUDScript gehören%
+}
+Ursprünglich war das Paket \Package{tudscrfonts} für die Verwendung zusammen
+mit einer der Klassen \Class{tudbook}, \Class{tudbeamer}, \Class{tudletter},
+\Class{tudfax}, \Class{tudhaus}, \Class{tudform} und seit der Version~v2.04
+auch \Class{tudmathposter} sowie \Class{tudposter} vorgesehen. Allerdings
+traten bei der Verwendung des Paketes mit einer dieser Klassen einige kleinere
+Unzulänglichkeiten auf. Deshalb wird seit der Version~v2.05 empfohlen, für
+diese Klassen das Paket \Package{fix-tudscrfonts} zu verwenden.
+\end{Bundle*}
+
+
+
+\section{Das Paket \Package{fix-tudscrfonts} -- Schriftkompatibilität}
+\begin{Bundle*}[v2.05]{\Package{fix-tudscrfonts}}
+\printchangedatlist%
+%
+Dieses Paket ist für die alleinige Verwendung mit einer der folgenden Klassen
+vorgesehen:
+\begin{itemize}
+\item \Class{tudbook}
+\item \Class{tudbeamer}
+\item \Class{tudletter}
+\item \Class{tudfax}
+\item \Class{tudhaus}
+\item \Class{tudform}
+\item \Class{tudmathposter}
+\item \Class{tudposter}
+\end{itemize}
+%
+\ChangedAt{v2.06:\OpenSans als neue Hausschrift standardmäßig aktiviert}
+Für das \TUDCD wird vom \TUDScript-Bundle standardmäßig \OpenSans als
+Schriftfamilie verwendet. Diese unterscheidet sich stark von den ursprünglich
+durch die gerade genannten Klassen genutzten Schriftfamilien. Wird nun das
+Paket \Package{fix-tudscrfonts} zusammen mit einer dieser Klassen verwendet,
+hat dies den Vorteil, dass auch bei diesen die aktuelle Hausschrift verwendet
+wird und der stark verbesserte Mathematiksatz zum Tragen kommen.
+\Attention{%
+ In diesem Fall kann sich das Ausgabeergebnis im Vergleich zu der Varianten
+ mit den alten Schriften ändern. Zum Setzen von Dokumenten mit den alten
+ Schriftfamilien \Univers und \DIN müssen diese installiert werden. Hinweise
+ hierzu sind unter \autoref{sec:install:fonts} zu finden. Um diese zu
+ aktivieren, sei auf \Option{tudscrver=2.05} und \Option{cdoldfont} verwiesen.
+}%
+
+Um alle notwendigen Einstellung korrekt und ohne unnötige Warnungen vornehmen
+zu können, muss das Paket \Package{fix-tudscrfonts} bereits \emph{vor} der
+Dokumentklasse geladen werden, wobei die gleichen Paketoptionen wie für das
+Paket \Package{tudscrfonts} verwendet werden können:
+%
+\begin{Code}[escapechar=§]
+\RequirePackage§\OParameter{Paketoptionen}§{fix-tudscrfonts}
+\documentclass§\OParameter{Klassenoptionen}\Parameter{Dokumentklasse}§
+§\dots§
+\begin{document}
+§\dots§
+\end{document}
+\end{Code}
+%
+Dabei wird spätestens zum Ende der Präambel das Paket \Package{tudscrfonts}
+geladen. Alternativ kann dies auch durch den Benutzer in der Dokumentpräambel
+erfolgen.
+\end{Bundle*}
+
+
+\section{Das Paket \Package{mathswap}}
+\index{Mathematiksatz|(}%
+\index{Zifferngruppierung|(}%
+%
+\begin{Bundle*}{\Package{mathswap}}
+Die Verwendung von Dezimal- und Tausendertrennzeichen im mathematischen Satz
+sind regional sehr unterschiedlich. In den meisten englischsprachigen Ländern
+wird der Punkt als Dezimaltrennzeichen und das Komma zur Zifferngruppierung
+verwendet, im restlichen Europa wird dies genau entgegengesetzt praktiziert.
+Dieses Paket soll dazu dienen, beliebige formatierte Zahlen in ihrer Ausgabe
+anzupassen. Dafür werden die Zeichen Punkt (\ .\ ) und Komma (\ ,\ ) als
+aktive Zeichen im Mathematikmodus definiert.
+
+Ähnliche Funktionalitäten werden bereits durch die Pakete \Package{icomma} und
+\Package{ziffer} bereitgestellt. Bei \Package{icomma} muss jedoch beim
+Verfassen des Dokumentes durch den Autor beachtet werden, ob das verwendete
+Komma einem Dezimaltrennzeichen entspricht ($t=1,\!2$) oder einem normalen
+Komma im Mathematiksatz ($z=f(x,y)$), wo ein gewisser Abstand nach dem Komma
+durchaus gewünscht ist. Das Paket \Package{ziffer} liefert dafür die gewünschte
+Funktionalität,%
+\footnote{kein Leerraum nach Komma, wenn direkt danach eine Ziffer folgt}
+ist allerdings etwas unflexibel, was den Umgang mit den Trennzeichen anbelangt.
+Als Alternative zu diesem Paket kann außerdem \Package{ionumbers} verwendet
+werden.
+
+Das Paket \Package{mathswap} sorgt dafür, dass Trennzeichen direkt vor einer
+Ziffer erkannt und nach bestimmten Vorgaben ersetzt werden. Sollte sich jedoch
+zwischen Trennzeichen und Ziffer Leerraum befinden, wird dieser als solcher
+auch gesetzt. Für ein Beispiel zur Verwendung des Paketes sei auf das Tutorial
+\Tutorial{mathswap} in \autoref{sec:tut} hingewiesen.
+
+\begin{Declaration}{\Macro{commaswap}[\Parameter{Trennzeichen}]}
+\begin{Declaration}{\Macro{dotswap}[\Parameter{Trennzeichen}]}
+\printdeclarationlist%
+%
+Die beiden Befehle \Macro{commaswap} und \Macro{dotswap} sind die zentrale
+Benutzerschnittstelle des Paketes. Das Makro \Macro{commaswap} definiert das
+Trennzeichen oder den Inhalt, wodurch ein Komma ersetzt werden soll, auf
+welches direkt danach eine Ziffer folgt. Normalerweise setzt \hologo{LaTeX}
+nach einem Komma im mathematischen Satz zusätzlich einen horizontalen Abstand.
+Bei der Ersetzung durch \Macro{commaswap} entfällt dieser. Die Voreinstellung
+für \Macro{commaswap} ist deshalb auf ein Komma (,) gesetzt. Mit dem Makro
+\Macro{dotswap} kann definiert werden, wodurch der Punkt im mathematischen
+Satz ersetzt werden soll, wenn auf diesen direkt anschließend eine Ziffer
+folgt. Da der Punkt im deutschsprachigem Raum zur Gruppierung von Ziffern
+genutzt wird, ist hierfür standardmäßig ein halbes geschütztes Leerzeichen
+definiert (\Macro*{,}).
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}[v2.02]{\Macro{mathswapon}}
+\begin{Declaration}[v2.02]{\Macro{mathswapoff}}
+\printdeclarationlist%
+%
+\ChangedAt*{v2.02:Funktionalität im Dokument umschaltbar}%
+Die Funktionalität von \Package{mathswap} kann innerhalb des Dokumentes mit
+diesen beiden Befehlen an- und abgeschaltet werden. Beim Laden des Paketes ist
+es standardmäßig aktiviert.
+\end{Declaration}
+\end{Declaration}
+\index{Mathematiksatz|)}%
+\index{Zifferngruppierung|)}%
+\end{Bundle*}
+
+
+
+\section{Das Paket \Package{twocolfix}}
+\begin{Bundle*}{\Package{twocolfix}}
+\index{Satzspiegel!zweispaltig|?}%
+%
+Der \hologo{LaTeXe}"=Kernel enthält einen Fehler, der Kapitelüberschriften im
+zweispaltigen Layout höher setzt, als im einspaltigen. Der
+\hrfn{http://www.latex-project.org/cgi-bin/ltxbugs2html?pr=latex/3126}{Fehler}
+ist zwar schon länger bekannt, allerdings bisher noch nicht in den
+\hologo{LaTeXe}"=Kernel übernommen worden. Das Paket \Package{twocolfix} behebt
+das Problem. Eine Integration dieses Bugfixes in \KOMAScript{} wurde bereits
+bei Markus Kohm angefragt, jedoch von ihm bis jetzt
+\hrfn{http://www.komascript.de/node/1681}{nicht weiter verfolgt}.
+\end{Bundle*}
+
+
+\addsec*{Zukünftige Arbeiten}
+Diese Dinge sollen langfristig in das \TUDScript-Bundle eingearbeitet werden:
+
+%\chapter{Das Paket \Package{tudscrletter} -- Briefe im \CD}
+%\begin{Bundle*}{\Package{tudscrletter}}
+\ToDo[imp]{%
+ Paket \Package*{tudscrletter} für Briefe im \CD,
+ \url{https://komascript.de/node/2200}%
+}[v2.07]
+Es soll das Paket \Package*{tudscrletter}<tudscr> für Briefe im \TUDCD
+entstehen. Auch Klassen für Fax und Hausmitteilungen sollen dabei abfallen.
+%\end{Bundle*}
+
+%\chapter{Das Paket \Package{tudscrbeamer} -- Präsentationen im \CD}
+%\begin{Bundle*}{\Package{tudscrbeamer}}
+\ToDo[imp]{Paket \Package*{tudscrbeamer} für Präsentationen im \CD}[v2.08]
+Mit \Package*{tudscrbeamer}<tudscr> soll ein Paket entstehen, mit dem sich
+\hologo{LaTeX}"=Beamer"=Präsentationen im Stil des \TUDCDs mit den
+Einstellungsmöglichkeiten von \TUDScript erstellen lassen. Aktuell können
+hierfür die Pakete aus dem \hrfn{https://github.com/tud-cd/tud-cd/}{%
+ GitHub-Repository~\Distribution*{tud-cd}%
+} genutzt werden.
+%\end{Bundle*}
+
+%\chapter{Das Paket \Package{tudscrlayout} -- Seitenstil und Satzspiegel im \CD}
+%\begin{Bundle*}{\Package{tudscrlayout}}
+\ToDo[imp]{%
+ Paket \Package*{tudscrlayout} \url{https://github.com/tud-cd/tud-cd/issues/6}
+ für Satzspiegel, evtl. auch für die Klasse über \Option*{cdgeometry=forced}
+}[v2.09]
+Außerdem ist ein Paket \Package*{tudscrlayout}<tudscr> vorstellbar, welches
+den durch das \CD vorgegebene Satzspiegel aktiviert ohne den Seitenstil selbst
+zu verwenden, um beispielsweise bereits mit dem Kopf der \TnUD bedrucktes
+Papier nutzen zu können. Ebenfalls wäre es denkbar, für andere Klassen die
+\PageStyle{tudheadings}"=Seitenstile verfügbar zu machen ohne dabei den
+Satzspiegel des \CDs umzusetzen. Dies hat jedoch nur geringe Priorität.
+%\end{Bundle*}
diff --git a/macros/latex/contrib/tudscr/source/doc/tudscr-examples.tex b/macros/latex/contrib/tudscr/source/doc/tudscr-examples.tex
new file mode 100644
index 0000000000..ba3dfbce1c
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/tudscr-examples.tex
@@ -0,0 +1,146 @@
+\setchapterpreamble{%
+ \tudhyperdef'{sec:exmpl}%
+ \begin{abstract}
+ \hypersetup{linkcolor=red}
+ Dieses Kapitel soll den Einstieg und den ersten Umgang mit \TUDScript
+ erleichtern. Dafür werden einige Minimalbeispiele gegeben, die einzelne
+ Funktionalitäten darstellen. Diese sind so reduziert ausgeführt, dass sie
+ sich dem Anwender direkt erschließen sollten.
+ \end{abstract}
+}
+\chapter{Minimalbeispiele}
+\index{Minimalbeispiel|!(}%
+%
+\section{Dokument}
+\index{Minimalbeispiel!Dokument}%
+%
+Hier wird gezeigt, wie die Präambel eines minimalen \hologo{LaTeXe}"=Dokumentes
+gestaltet werden sollte. Dieser Ausschnitt kann prinzipiell als Grundlage für
+ein neu zu erstellendes Dokument verwendet werden. Lediglich das Einbinden des
+Paketes \Package{blindtext} mit \Macro*{usepackage}[\PParameter{blindtext}] und
+die Verwendung des daraus stammenden Befehls \Macro*{blinddocument} können
+weggelassen werden.
+\IncludeExample{document}
+
+\section{Dissertation}
+\tudhyperdef*{sec:exmpl:dissertation}%
+\index{Minimalbeispiel!Dissertation}%
+%
+Eine Abschlussarbeit oder ähnliches könnte wie hier gezeigt begonnen werden.
+\IncludeExample{dissertation}
+
+\section{Abschlussarbeit (kollaborativ)}
+\tudhyperdef*{sec:exmpl:thesis}%
+\index{Minimalbeispiel!Abschlussarbeit}%
+\index{Minimalbeispiel!Kollaboratives Schreiben}%
+%
+Alle zusätzlichen Angaben außerhalb des Argumentes von \Macro{author} werden
+für beide Autoren gleichermaßen übernommen.%
+\footnote{In diesem Beispiel \Macro{matriculationyear}}
+Die Angaben innerhalb des Argumentes von \Macro{author} werden den jeweiligen,
+mit \Macro{and} getrennten Autoren zugeordnet.%
+\footnote{%
+ In diesem Beispiel \Macro{matriculationnumber}, \Macro{dateofbirth} und
+ \Macro{placeofbirth}%
+}
+Ohne die Verwendung von \Macro{and} kann natürlich auch nur ein Autor
+aufgeführt werden. Außerdem sei auf die Verwendung von \Macro{subject} anstelle
+von \Macro{thesis} mit einem speziellen Wert aus \autoref{tab:thesis}
+hingewiesen.
+\IncludeExample{thesis}
+
+\begin{Bundle}{\Package{tudscrsupervisor}}
+\section{Aufgabenstellung (kollaborativ)}
+\tudhyperdef*{sec:exmpl:task}%
+\index{Minimalbeispiel!Aufgabenstellung}%
+\index{Minimalbeispiel!Kollaboratives Schreiben}%
+%
+Eine Aufgabenstellung für eine wissenschaftliche Arbeit ist mithilfe der
+Umgebung \Environment{task}|?| oder dem Befehl \Macro{taskform}|?| aus dem
+Paket \Package{tudscrsupervisor} folgendermaßen dargestellt werden.
+\IncludeExample{task}
+
+\section{Gutachten}
+\tudhyperdef*{sec:exmpl:evaluation}%
+\index{Minimalbeispiel!Gutachten}%
+%
+Nach dem Laden des Paketes \Package{tudscrsupervisor} kann ein Gutachten für
+eine wissenschaftliche Arbeit mit der \Environment{evaluation}|?|"=Umgebung
+oder dem Befehl \Macro{evaluationform}|?| erstellt werden.
+\IncludeExample{evaluation}
+
+\section{Aushang}
+\tudhyperdef*{sec:exmpl:notice}%
+\index{Minimalbeispiel!Aushang}%
+%
+Das Paket \Package{tudscrsupervisor} stellt die Umgebung \Environment{notice}|?|
+für das Anfertigen allgemeiner Aushänge sowie den Befehl \Macro{noticeform}|?|
+für die Ausschreibung wissenschaftlicher Arbeiten bereit.
+\IncludeExample{notice}
+\end{Bundle}
+
+\begin{Bundle}{\Class{tudscrposter}}
+\section{Poster}
+\tudhyperdef*{sec:exmpl:poster}%
+\index{Minimalbeispiel!Poster}%
+%
+Mit der Klasse \Class{tudscrposter}|?| lässt sich ein Poster im \TUDCD
+erstellen. Dabei ist die Angabe des gewünschten Papierformates sowie der
+passenden Schriftgröße zu beachten.
+\IncludeExample{poster}
+\index{Minimalbeispiel|!)}%
+\end{Bundle}
+
+
+
+
+\setchapterpreamble{%
+ \tudhyperdef'{sec:tut}%
+ \begin{abstract}
+ \hypersetup{linkcolor=red}
+ In diesem Kapitel werden weiterführende Anwendungsbeispiele bereitgestellt.
+ Diese Tutorials sind nicht unmittelbar im Handbuch enthalten sondern werden
+ als externe Dateien bereitgehalten, welche direkt via Hyperlink geöffnet
+ werden können.
+ \end{abstract}
+}
+\chapter{Tutorials}
+\addsec*{Leitfaden für eine wissenschaftlichen Arbeit}
+\index{Tutorials|!(}%
+%
+Die meisten Anwender der \TUDScript-Klassen sind Studenten oder angehörige der
+\TnUD, die ihre ersten Schritte mit \hologo{LaTeXe} beim Verfassen einer
+wissenschaftlichen Arbeit oder ähnlichem machen. Während der Einstiegsphase in
+\hologo{LaTeXe} kann ein Anfänger sehr schnell aufgrund der großen Anzahl an
+empfohlenen Pakete sowie der teilweise diametral zueinander stehenden Hinweise
+überfordert sein. Mit dem Tutorial \Tutorial{treatise}|!| soll versucht werden,
+ein wenig Licht ins Dunkel zu bringen. Es erhebt jedoch keinerlei Anspruch,
+vollständig oder perfekt zu sein. Einige der darin vorgestellten Möglichkeiten
+lassen sich mit Sicherheit auch anders, einfacher und/oder besser lösen.
+Dennoch ist es gerade für Neulinge~-- vielleicht auch für den einen oder
+anderen \hologo{LaTeX}"=Veteran~-- als Leitfaden für die Erstellung einer
+wissenschaftlichen Arbeit gedacht.
+
+\addsec*{Ein Beitrag zum mathematischen Satz in \hologo{LaTeXe}}
+\index{Mathematiksatz}%
+%
+Das Tutorial \Tutorial{mathtype}|!| richtet sich an alle Anwender, die in ihrem
+\hologo{LaTeX}"=Dokument mathematische Formeln setzen wollen. In diesem wird
+ausführlich darauf eingegangen, wie mit wenigen Handgriffen ein typografisch
+sauberer Mathematiksatz zu bewerkstelligen ist.
+
+\addsec*{Änderung der Trennzeichen im Mathematikmodus}
+\index{Mathematiksatz}%
+\index{Zifferngruppierung}%
+%
+Sollen beim Verfassen eines \hologo{LaTeX}"=Dokumentes Daten in einem
+Zahlenformat importiert werden, welches nicht den Gepflogenheiten der
+Dokumentsprache entspricht, kommt es meist zu unschönen Ergebnissen bei der
+Ausgabe. Einfachstes Beispiel sind Daten, in denen als Dezimaltrennzeichen ein
+Punkt verwendet wird, wie es im englischsprachigen Raum der Fall ist. Sollen
+diese in einem Dokument deutscher Sprache eingebunden werden, müssten diese
+normalerweise allesamt angepasst und das ursprüngliche Dezimaltrennzeichen
+durch ein Komma ersetzt werden. Dieser Schritt wird mit dem \TUDScript-Paket
+\Package{mathswap} automatisiert. Wie dies genau funktioniert, wird im Tutorial
+\Tutorial{mathswap}|!| erläutert.
+\index{Tutorials|!)}%
diff --git a/macros/latex/contrib/tudscr/source/doc/tudscr-hints.tex b/macros/latex/contrib/tudscr/source/doc/tudscr-hints.tex
new file mode 100644
index 0000000000..87ea1b6056
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/tudscr-hints.tex
@@ -0,0 +1,940 @@
+\setchapterpreamble{\tudhyperdef'{sec:tips}}
+\chapter{Praktische Tipps \& Tricks}
+\newcommand*\TaT{\hyperref[sec:tips]{Tipps \& Tricks}:\xspace}
+\section{\hologo{LaTeX}-Editoren}
+\tudhyperdef*{sec:tips:editor}%
+%
+Hier werden die gängigsten Editoren zum Erzeugen von \hologo{LaTeX}"=Dateien
+genannt. Ich persönlich bin mittlerweile sehr überzeugter Nutzer von
+\Application{\hologo{TeX}studio}, da dieser viele Unterstützungs- und
+Assistenzfunktionen bietet. Neben diesen gibt es noch weitere, gut nutzbare
+\hologo{LaTeX}"=Editoren. Unabhängig von der Auswahl des Editors, sollte dieser
+auf jeden Fall eine Unicode"=Unterstützung~(UTF"~8) enthalten:
+%
+\begin{itemize}
+\item \Application{\hologo{TeX}maker}
+\item \Application{Kile}
+\item \Application{\hologo{TeX}works}
+\item \Application{\hologo{TeX}lipse}~-- Plug"~in für \Application{Eclipse}
+\item \Application{\hologo{TeX}nicCenter}
+\item \Application{WinEdt}
+\item \Application{LEd}~-- früher \hologo{LaTeX}~Editor
+\item \Application{\hologo{LyX}}~-- grafisches Front"~End für \hologo{LaTeX}
+\end{itemize}
+%
+Für \Application{\hologo{TeX}studio} wird im \GitHubRepo* das Archiv
+\hrfn{\Download{TeXstudio/tudscr4texstudio.zip}}{\File{tudscr4texstudio.zip}}
+bereitgestellt, welches Dateien zur Erweiterung der automatischen
+Befehlsvervollständigung für \TUDScript enthält. Diese müssen unter Windows in
+\Path{\%APPDATA\%\textbackslash texstudio} beziehungsweise unter unixoiden
+Betriebssystemen in \Path{.config/texstudio} eingefügt werden.
+
+Möchten Sie das grafische \hologo{LaTeX}"~Frontend~\Application{\hologo{LyX}}
+für das Erstellen eines Dokumentes mit den \TUDScript-Klassen nutzen, so werden
+dafür spezielle Layout"~Dateien benötigt, um die Klassendateien verwenden zu
+können. Diese sind zusammen mit einem \Application{\hologo{LyX}}"~Dokument als
+Archiv
+\hrfn{\Download{LyX/tudscr4lyx.zip}}{\File{tudscr4lyx.zip}}
+im \GitHubRepo* verfügbar. Die Layout"~Dateien müssen dafür im
+\Application{\hologo{LyX}}"=Installationspfad in den passenden Unterordner
+kopiert werden. Dieser ist bei Windows
+\Path{%
+ \%PROGRAMFILES(X86)\%\textbackslash{}LyX~2.1\textbackslash{}%
+ Resources\textbackslash{}layouts%
+}
+beziehungsweise bei unixoiden Betriebssystemen \Path{/usr/share/lyx/layouts}.
+Anschließend muss LyX über den Menüpunkt \emph{Werkzeuge} neu konfiguriert
+werden.
+
+
+
+\section{Literaturverwaltung in \hologo{LaTeX}}
+\ChangedAt{v2.02:\TaT Literaturverwaltung}
+%
+Die simpelste Variante, eine \hologo{LaTeX}"=Literaturdatenbank zu verwalten,
+ist dies mit dem Editor manuell zu erledigen. Wesentlich komfortabler ist es
+jedoch, die Referenzverwaltung mit einer darauf spezialisierten Anwendung zu
+bewerkstelligen. Dafür gibt es zwei sehr gute Programme:
+%
+\begin{itemize}
+\item \Application{Citavi}
+\item \Application{JabRef}
+\end{itemize}
+%
+Das Programm \Application{Citavi} ermöglicht den Import von bibliografischen
+Informationen aus dem Internet. Allerdings sind diese teilweise unvollständig
+oder mangelhaft. Mit \Application{JabRef} hingegen muss die Literaturdatenbank
+manuell erstellt werden. Allerdings lassen sich einzelne Einträge aus
+\File*{.bib}"~Dateien importieren. Beide Anwendungen unterstützen den Export
+beziehungsweise die Erstellung von Datenbanken im Stil von \Package{biblatex}.
+Für \Application{JabRef} muss diese durch den Anwender explizit aktiviert
+werden.\footnote{Optionen/Einstellungen/Erweitert/BibLaTeX"~Modus}
+Zur Verwendung der beiden Programme in Verbindung mit \Package{biblatex} und
+\Application{biber} gibt es ein gutes Tutorial unter diesem
+\href{http://www.suedraum.de/latex/stammtisch/degenkolb_latex_biblatex_folien-final.pdf}{Link}.
+
+
+
+\section{Worttrennungen in deutschsprachigen Texten}
+\tudhyperdef*{sec:tips:hyphenation}
+\ChangedAt{v2.02:\TaT Worttrennungen}
+%
+Die möglichen Trennstellen von Wörtern werden von \hologo{LaTeXe} mithilfe
+eines Algorithmus berechnet. Dieser ist jedoch in seiner ursprünglichen Form
+für die englische Sprache konzipiert worden. Für deutschsprachige Texte wird
+die Worttrennung~-- insbesondere bei zusammengeschriebenen Wörtern~-- mit dem
+Paket \Package{hyphsubst} entscheidend verbessert. Dafür wird ein um vielerlei
+Trennungsmuster ergänztes Wörterbuch aus dem Paket \Package{dehyph-exptl}
+genutzt.
+
+In jedem Fall wird ein Sprachpaket wie beispielsweise \Package{babel} oder
+\Package{polyglossia} benötigt, wobei letzteres für den Einsatz mit
+\Engine{LuaLaTeX} oder \Engine{XeLaTeX} konzipiert ist. Bei der Verwendung
+einer dieser beiden Unicode"=Textsatzsysteme~-- in Verbindung mit einem der zwei
+genannten Sprachpakete werden~-- die Trennmuster automatisch aktiviert.
+
+Für \Engine{pdfLaTeX} lassen sich diese mit dem Paket \Package{hyphsubst}
+aktivieren. Damit auch Wörter mit Umlauten richtig getrennt werden, ist
+zusätzlich die Verwendung des Paketes \Package{fontenc} mit beispielsweise der
+\PValue{T1}"~Schriftkodierung erforderlich. Der Beginn einer Dokumentpräambel
+könnte folgendermaßen aussehen:
+%
+\begin{quoting}[rightmargin=0pt]
+\begin{Code}[escapechar=§]
+\documentclass[ngerman,§\PName{Klassenoptionen}§]§\Parameter{Dokumentklasse}§
+\usepackage[T1]{fontenc}
+\ifpdftex{\usepackage[ngerman=ngerman-x-latest]{hyphsubst}}{}
+\usepackage{babel}
+§\dots§
+\end{Code}
+\end{quoting}
+%
+Eine Anmerkung noch zur Trennung von Wörtern mit Bindestrichen. Normalerweise
+sind die beiden von \hologo{LaTeXe} verwendeten Zeichen für Bindestrich und
+Trennstrich identisch. Leider wird der Trennungsalgorithmus von \hologo{LaTeXe}
+bei Wörtern, welche bereits einen Bindestrich enthalten, außer Kraft gesetzt.
+In der Folge werden~-- in der deutschen Sprache durchaus öfter anzutreffende~--
+Wortungetüme wie die \enquote{Donaudampfschifffahrts-Gesellschafterversammlung}
+normalerweise nur direkt nach dem angegebenen Bindestrich getrennt.
+
+Allerdings gibt es die Möglichkeit, das genutzte Zeichen für den Trennstrich
+zu ändern. Dafür ist das Laden der \PValue{T1}"~Schriftkodierung mit dem Paket
+\Package{fontenc} zwingend erforderlich. Wenn von der verwendeten Schrift
+nichts anderes eingestellt ist, liegen sowohl Binde- als auch Trennstrich auf
+Position~\PValue{45} der Zeichentabelle. In der \PValue{T1}"~Schriftkodierung
+befindet sich auf der Position~\PValue{127} glücklicherweise für gewöhnlich das
+gleiche Zeichen noch einmal. Dies ist jedoch von der verwendeten Schrift
+abhängig. Wird der Ausdruck \Macro*{defaulthyphenchar}[\PValue{=127}] in der
+Dokumentpräambel verwendet, kann dieses Zeichen für den Trennstrich genutzt
+werden. Bei den Schriften des \TUDCDs ist dies bereits automatisch eingestellt.
+
+Sollte trotz aller Maßnahmen dennoch einmal ein bestimmtes Wort falsch getrennt
+werden, so kann die Worttrennung dieses Wortes manuell und global geändert
+werden. Dies wird mit \Macro{hyphenation}[\PParameter{Sil-ben-tren-nung}]
+gemacht. Es ist zu beachten, dass dies für alle Flexionsformen des Wortes
+erfolgen sollte. Für eine lokale/temporäre Worttrennung kann mit Befehlen aus
+dem Paket \Package{babel} gearbeitet werden. Diese sind:
+
+\vskip\medskipamount\noindent
+\begingroup
+\newcommand*\listhyphens[2]{#1 & \PValue{#2} \tabularnewline}%
+\begin{tabular}{@{}ll}
+ \textbf{Beschreibung} & \textbf{Befehl} \tabularnewline
+ \listhyphens{ausschließliche Trennstellen}{\textbackslash-}
+ \listhyphens{zusätzliche Trennstellen}{"'-}
+ \listhyphens{Umbruch ohne Trennstrich}{"'"'}
+ \listhyphens{Bindestrich ohne Umbruch}{"'\textasciitilde}
+ \listhyphens{Bindestrich, der weitere Trennstellen erlaubt}{"'=}
+\end{tabular}
+\endgroup
+
+
+
+\section{Lokale Änderungen von Befehlen und Einstellungen}
+\index{Befehlsdeklaration!Geltungsbereich}%
+\ChangedAt{v2.02:\TaT Lokale Änderungen}
+%
+Ein zentraler Bestandteil von \hologo{LaTeX} ist die Verwendung von Gruppen
+oder Gruppierungen. Innerhalb dieser bleiben alle vorgenommenen Änderungen an
+Befehlen, Umgebungen oder Einstellungen lokal. Dies kann sehr nützlich sein,
+wenn beispielsweise das Verhalten eines bestimmten Makros einmalig oder
+innerhalb von selbst definierten Befehlen oder Umgebungen geändert werden, im
+Normalfall jedoch die ursprüngliche Funktionalität behalten soll.
+\begin{Example}
+\index{Schriftauszeichnung}%
+Der Befehl \Macro{emph} wird von \hologo{LaTeX} für Hervorhebungen im Text
+bereitgestellt und führt normalerweise zu einer kursiven oder~-- falls kein
+Schriftschnitt mit echten Kursiven vorhanden ist~-- kursivierten oder auch
+geneigten Auszeichnung. Soll nun in einem bestimmten Abschnitt die Auszeichnung
+mit fetter Schrift erfolgen, kann der Befehl \Macro{emph} innerhalb einer
+Gruppierung geändert und verändert werden. Wird diese beendet, verhält sich der
+Befehl wie gewohnt.
+\begin{Code}
+In diesem Text wird genau ein \emph{Wort} hervorgehoben.
+
+\begingroup
+ \renewcommand*{\emph}[1]{\textbf{#1}}%
+ In diesem Text wird genau ein \emph{Wort} hervorgehoben.
+\endgroup
+
+In diesem Text wird genau ein \emph{Wort} hervorgehoben.
+\end{Code}
+\end{Example}
+Eine Gruppierung kann entweder mit \Macro*{begingroup} und \Macro*{endgroup}
+oder einfach mit einem geschweiften Klammerpaar \PParameter{\dots} definiert
+werden.
+
+
+
+\section{Bezeichnung der Gliederungsebenen durch \Package{hyperref}}
+\tudhyperdef*{sec:tips:references}
+\index{Querverweise}%
+\ChangedAt{v2.02:\TaT Bezeichnungen der Gliederungsebenen}
+%
+Das Paket \Package{hyperref} stellt für Querverweise unter anderem den Befehl
+\Macro{autoref}[\Parameter{label}](\Package{hyperref})'none' zur Verfügung. Mit
+diesem wird~-- im Gegensatz zur Verwendung von \Macro{ref}~-- bei einer
+Referenz nicht nur die Nummerierung selber sondern auch das entsprechende
+Element wie Kapitel oder Abbildung vorangestellt. Zur Benennung des
+referenzierten Elementes wird sequentiell geprüft, ob das Makro
+\Macro*{\PName{Element}\PValue{autorefname}} oder
+\Macro*{\PName{Element}\PValue{name}} existiert. Soll die Bezeichnung eines
+Elementes geändert werden, muss der entsprechende Bezeichner angepasst werden.
+%
+\begin{Example}
+Bezeichnungen von Gliederungsebenen können folgendermaßen verändert werden.
+\begin{Code}
+\renewcaptionname{ngerman}{\sectionautorefname}{Unterkapitel}
+\renewcaptionname{ngerman}{\subsectionautorefname}{Abschnitt}
+\end{Code}
+\end{Example}
+
+
+
+\section{URL-Umbrüche im Literaturverzeichnis mit \Package{biblatex}}
+\index{Literaturverzeichnis}%
+\ChangedAt{v2.02:\TaT URL-Umbrüche im Literaturverzeichnis}
+%
+Wird das Paket \Package{biblatex} verwendet, kann es unter Umständen dazu
+kommen, das eine URL nicht vernünftig umbrochen wird. Ist dies der Fall,
+können die Zähler \Counter{biburlnumpenalty}(\Package{biblatex})'none',
+\Counter{biburlucpenalty}(\Package{biblatex})'none' und
+\Counter{biburllcpenalty}(\Package{biblatex})'none' erhöht werden. Das
+Manipulieren eines Zähler kann mit \Macro*{setcounter}[\Parameter{Zähler}] oder
+lokal mit \Macro*{defcounter}[\Parameter{Zähler}] aus dem Paket
+\Package{etoolbox} erfolgen. Die möglichen Werte liegen zwischen 0~und~10\,000,
+wobei es bei höheren Zählerwerten zu mehr URL"~Umbrüchen an
+Ziffern~(\Counter{biburlnumpenalty}(\Package{biblatex})'none'),
+Groß-~(\Counter{biburlucpenalty}(\Package{biblatex})'none') und
+Kleinbuchstaben~(\Counter{biburllcpenalty}(\Package{biblatex})'none') kommt.
+Genaueres in der Dokumentation zu \Package{biblatex}.
+
+
+
+\section{Zeilenabstände in Überschriften}
+\tudhyperdef*{sec:tips:headings}%
+%
+Mit dem Paket \Package{setspace} kann der Zeilenabstand beziehungsweise der
+Durchschuss innerhalb des Dokumentes geändert werden. Sollte dieser erhöht
+worden sein, können die Abstände bei mehrzeiligen Überschriften als zu groß
+erscheinen. Um dies zu korrigieren kann mit dem Befehl
+\Macro{addtokomafont}[%
+ \PParameter{disposition}\PParameter{%
+ \Macro{setstretch}[\PParameter{1}](\Package{setspace})'none'%
+ }%
+](\Package{koma-script})'none'
+der Zeilenabstand aller Überschriften auf einzeilig zurückgeschaltet werden.
+Soll dies nur für eine bestimmte Gliederungsebene erfolgen, so ist der
+Parameter \PValue{disposition} durch das dazugehörige Schriftelement zu
+ersetzen.
+
+
+
+\section{Warnung wegen zu geringer Höhe der Kopf-/Fußzeile}
+\tudhyperdef*{sec:tips:headline}%
+%
+Wird das Paket \Package{setspace} verwendet, kann es passieren, dass nach der
+Änderung des Zeilenabstandes \emph{innerhalb} des Dokumentes eine oder beide
+der folgenden Warnungen erscheinen:
+%
+\begin{quoting}
+\begin{Code}
+scrlayer-scrpage Warning: \headheight to low.
+scrlayer-scrpage Warning: \footheight to low.
+\end{Code}
+\end{quoting}
+%
+Dies liegt an dem durch den vergrößerten Zeilenabstand erhöhten Bedarf für die
+Kopf- und Fußzeile, die Höhen können in diesem Fall direkt mit der Verwendung
+von \Macro{recalctypearea}(\Package{typearea})'none' angepasst werden.
+Allerdings ändert das den Satzspiegel im Dokument, was eine andere und durchaus
+berechtigte Warnung von \Package{typearea} zur Folge hat. Falls die Änderung
+des Durchschusses wirklich nötig ist, sollte dies in der Präambel des
+Dokumentes einmalig passieren. Dann entfallen auch die Warnungen.
+
+
+
+\section{Einrückung von Tabellenspalten verhindern}%
+\tudhyperdef*{sec:tips:table}
+\index{Tabellen}%
+%
+Normalerweise wird in einer Tabelle vor \emph{und} nach jeder Spalte durch
+\hologo{LaTeXe} etwas horizontaler Raum mit \Macro*{hskip}\Length{tabcolsep}
+eingefügt.%
+\footnote{%
+ Der Abstand zweier Spalten beträgt folglich \PValue{2}\Length{tabcolsep}.%
+}
+Dies geschieht auch \emph{vor} der ersten und \emph{nach} der letzten Spalte.
+Diese optische Einrückung an den äußeren Rändern kann unter Umständen stören,
+insbesondere bei Tabellen, die willentlich~-- beispielsweise mit den Paketen
+\Package{tabularx}, \Package{tabulary} oder auch \Package{tabu}~-- über die
+komplette Seitenbreite aufgespannt werden.
+
+Das Paket \Package{tabularborder} versucht, dieses Problem automatisiert zu
+beheben, ist jedoch nicht zu allen \hologo{LaTeXe}"=Paketen für den
+Tabellensatz kompatibel, unter anderem auch nicht zu den drei zuvor genannten.
+Allerdings lässt sich dieses Problem manuell lösen.
+
+Bei der Deklaration einer Tabelle kann mit~\PValue{@}\PParameter{\dots} vor und
+nach dem Spaltentyp angegeben werden, was anstelle von \Length{tabcolsep} vor
+beziehungsweise nach der eigentlichen Spalte eingeführt werden soll. Dies kann
+für das Entfernen der Einrückungen genutzt werden, indem an den entsprechenden
+Stellen~\PValue{@\PParameter{}} bei der Angabe der Spaltentypen vor der ersten
+und nach der letzten Tabellenspalte verwendet wird.
+%
+\begin{Example}
+Eine Tabelle mit zwei Spalten, wobei bei einer die Breite automatisch berechnet
+wird, soll über die komplette Textbreite gesetzt werden. Dabei soll der Rand
+vor der ersten und nach der letzten entfernt werden.
+\begin{Code}[escapechar=§]
+\begin{tabularx}{\textwidth}{@{}lX@{}}
+§\dots§ & §\dots§ \tabularnewline
+§\dots§
+\end{tabularx}
+\end{Code}
+\end{Example}
+
+
+
+
+\section{Unterdrückung des Einzuges eines Absatzes}
+\index{Absatzauszeichnung}%
+%
+Werden zur Absatzauszeichnung im Dokument~-- wie es aus typografischer Sicht
+zumeist sinnvoll ist~-- Einzüge und keine vertikalen Abstände verwendet
+(\KOMAScript-Option \Option*{parskip=false}(\Package{koma-script})'none'), kann
+es vorkommen, dass ein ganz bestimmter Absatz~-- beispielsweise der nach einer
+zuvor genutzten Umgebung folgende~-- ungewollt eingerückt ist. Dies kann sehr
+einfach manuell behoben werden, indem direkt zu Beginn des Absatzes das Makro
+\Macro{noindent} aufgerufen wird. Soll das Einrücken von Absätzen nach ganz
+bestimmten Umgebungen oder Befehlen automatisiert unterbunden werden, ist das
+Paket \Package{noindentafter} zu empfehlen.
+
+
+
+\section{Unterbinden des Zurücksetzens von Fußnoten}%
+\tudhyperdef*{sec:tips:counter}%
+\index{Fußnoten}%
+%
+Mit \Macro{counterwithin} und \Macro{counterwithout} können
+\hologo{LaTeX}"=Zähler so umdefiniert werden, dass sie bei der Änderung eines
+anderen Zählers zurückgesetzt werden oder nicht. Mit der Angabe von
+\Macro*{counterwithout*}[%
+ \PParameter{footnote}\PParameter{chapter}%
+]'none' wird das Zurücksetzen des Fußnotenzählers durch neue Kapitel
+deaktiviert, womit sich über Kapitel fortlaufende Fußnoten
+realisieren lassen.
+%Mehr ist der Dokumentation von \Package*{chngcntr} zu finden.
+
+
+
+\section{Warnung beim Erzeugen des Inhaltsverzeichnisses}
+\index{Inhaltsverzeichnis}%
+\ChangedAt{v2.02:\TaT Warnung beim Erzeugen des Inhaltsverzeichnisses}
+\ChangedAt{v2.02:\TaT Hinweis auf Rand bei mehrzeiligen Einträgen ergänzt}
+%
+Wird mit \Macro{tableofcontents}(\Package{koma-script})'none' das
+Inhaltsverzeichnis für ein Dokument mit einer dreistelligen Seitenanzahl
+erstellt, so erscheinen unter Umständen viele Warnungen mit der Meldung:
+%
+\begin{quoting}
+\begin{Code}
+overfull \hbox
+\end{Code}
+\end{quoting}
+%
+Die Seitenzahlen im Verzeichnis werden in einer Box mit einer festen Breite
+von~\PValue{1.55em} gesetzt, welche im Makro \Macro*{@pnumwidth} hinterlegt ist
+und im Zweifel vergrößert werden sollte. Dabei ist auch der rechte Rand für
+mehrzeilige Einträge im Verzeichnis \Macro*{@tocrmarg} zu vergrößern, welcher
+mit~\PValue{2.55em} voreingestellt ist. Die Werte sollten nur minimal geändert
+werden:
+%
+\begin{quoting}
+\begin{Code}
+\makeatletter
+\renewcommand*{\@pnumwidth}{1.7em}\renewcommand*{\@tocrmarg}{2.7em}
+\makeatother
+\end{Code}
+\end{quoting}
+
+
+
+\section{Leer- und Satzzeichen nach \hologo{LaTeX}-Befehlen}%
+\tudhyperdef*{sec:tips:xspace}%
+\index{Typografie}%
+%
+Normalerweise \enquote{schluckt} \hologo{LaTeX} die Leerzeichen nach einem
+Makro ohne Argumente. Dies ist jedoch nicht immer~-- genau genommen in den
+seltensten Fällen~-- erwünscht. Für dieses Handbuch ist beispielsweise der
+Befehl \Macro*{TUD} definiert worden, um \enquote{\TUD{}} nicht ständig
+ausschreiben zu müssen. Um sich bei der Verwendung des Befehl innerhalb eines
+Satzes für den Erhalt eines folgenden Leerzeichens das Setzen der geschweiften
+Klammer nach dem Befehl zu sparen (\Macro*{TUD}[\PParameter{}]), kann
+\Macro{xspace}(\Package{xspace})'none' aus dem Paket \Package{xspace} genutzt
+werden. Damit wird ein folgendes Leerzeichen erhalten. Der Befehl \Macro*{TUD}
+ist wie folgt definiert:
+%
+\begin{quoting}
+\begin{Code}
+\newcommand*{\TUD}{Technische Universit\"at Dresden\xspace}
+\end{Code}
+\end{quoting}
+%
+Das Paket \Package{xpunctuate} erweitert die Funktionalität nochmals. Damit
+können auch Abkürzungen so definiert werden, dass ein versehentlicher Punkt
+ignoriert wird:
+%
+\begin{quoting}
+\begin{Code}
+\newcommand*{\zB}{z.\,B\xperiod}
+\end{Code}
+\end{quoting}
+
+
+
+\section{Finden von unbekannten \hologo{LaTeX}-Symbolen}
+\index{Symbole}%
+%
+Für \hologo{LaTeX} stehen jede Menge Symbole zur Verfügung, die allerdings
+nicht immer einfach zu finden sind. In der Zusammenfassung
+\hrfn{http://mirrors.ctan.org/info/symbols/comprehensive/symbols-a4.pdf}%
+{\File{symbols-a4.pdf}}
+werden viele Symbole aus mehreren Paketen aufgeführt. Alternativ kann
+\hrfn{http://detexify.kirelabs.org/classify.html}{Detexify} verwendet werden.
+Auf dieser Webseite wird das gesuchte Symbol einfach gezeichnet, die dazu
+ähnlichsten werden zurückgegeben.
+
+
+
+\section{Das Setzen von Auslassungspunkten}
+\tudhyperdef*{sec:tips:dots}%
+\index{Typografie}%
+\ChangedAt{v2.02:\TaT Das Setzen von Auslassungspunkten}
+%
+Auslassungspunkte werden mit \hologo{LaTeXe} mit den Befehlen \Macro{dots} oder
+\Macro{textellipsis} gesetzt. Für gewöhnlich folgt diesen \emph{immer} ein
+Leerzeichen, was nicht in jedem Fall gewollt ist. Das Paket \Package{ellipsis}
+schafft hier Abhilfe, wobei die Option \Option*{xspace} führt dazu, dass nach
+der Verwendung eines der beiden Befehle automatisch ein Leerzeichen gesetzt
+wird.
+%
+\begin{quoting}
+\begin{Code}
+\usepackage[xspace]{ellipsis}
+\end{Code}
+\end{quoting}
+%
+Im Ursprung ist es für das Setzen englischsprachiger Texte gedacht, wo zwischen
+Auslassungspunkten und Satzzeichen ein Leerzeichen gesetzt wird. Im Deutschen
+ist dies anders:
+%
+\begin{quoting}
+\enquote{%
+ Um eine Auslassung in einem Text zu kennzeichnen, werden drei Punkte gesetzt.
+ Vor und nach den Auslassungspunkten wird jeweils ein Wortzwischenraum
+ gesetzt, wenn sie für ein selbständiges Wort oder mehrere Wörter stehen. Bei
+ Auslassung eines Wortteils werden sie unmittelbar an den Rest des Wortes
+ angeschlossen. Am Satzende wird kein zusätzlicher Schlusspunkt gesetzt.
+ Satzzeichen werden ohne Zwischenraum angeschlossen.%
+}~[Duden, 23. Aufl.]
+\end{quoting}
+%
+Um dieses Verhalten zu erreichen, sollte noch Folgendes in der Präambel
+eingefügt werden:
+%
+\begin{quoting}
+\begin{Code}
+\let\ellipsispunctuation\relax
+\newcommand*{\qdots}{[\dots{}]\xspace}
+\end{Code}
+\end{quoting}
+%
+Der Befehl \Macro*{qdots} wird definiert, um Auslassungspunkte in eckigen
+Klammern (\POParameter{\dots}) setzen zu können, wie sie für das Kürzen von
+wörtlichen Zitaten häufig verwendet werden.
+
+
+
+\section{Lokalisierung für das Setzen von Einheiten mit \Package{siunitx}}
+\tudhyperdef*{sec:tips:siunitx}%
+\index{Einheiten}%
+%
+Wenn \Package{siunitx} in einem deutschsprachigen Dokument genutzt soll
+werden, muss zumindest die richtige Lokalisierung mit
+\Macro{sisetup}[\PParameter{locale = DE}](\Package{siunitx})'none' angegeben
+werden. Sollen auch die Zahlen richtig formatiert sein, müssen weitere
+Einstellungen vorgenommen werden. Die meiner Meinung nach besten sind die
+folgenden.
+%
+\begin{quoting}
+\begin{Code}
+\sisetup{%
+ locale = DE,%
+ input-decimal-markers={,},input-ignore={.},%
+ group-separator={\,},group-minimum-digits=3%
+}
+\end{Code}
+\end{quoting}
+%
+Das Komma kommt als Dezimaltrennzeichen zum Einsatz. Des Weiteren werden Punkte
+innerhalb der Zahlen ignoriert und eine Gruppierung von jeweils drei Ziffern
+vorgenommen. Alternativ zu diesem Paket kann übrigens auch \Package{units}
+verwendet werden.
+
+
+
+\section{Fehlermeldung beim Laden eines Paketes mit Optionen}
+\ChangedAt{v2.05:\TaT Fehler beim Laden eines Paketes mit Optionen}
+%
+Es kann unter Umständen passieren, dass beim Laden eines Paketes mit bestimmten
+Optionen via \Macro*{usepackage}[\OParameter{Paketoptionen}\Parameter{Paket}]
+folgender Fehler ausgegeben wird:
+%
+\begin{quoting}
+\begin{Code}[escapechar=§]
+! LaTeX Error: Option clash for package <§\dots§>.
+\end{Code}
+\end{quoting}
+%
+Mit großer Sicherheit wird das angeforderte Paket bereits durch die verwendete
+Dokumentklasse oder ein anderes Paket geladen. Normalerweise genügt es, die
+gewünschten Optionen durch
+\Macro{PassOptionsToPackage}[\Parameter{Paketoptionen}\Parameter{Paket}]
+bereits vor dem Laden der Dokumentklasse mit \Macro*{documentclass} an das
+betreffende Paket weiterzureichen.
+
+
+
+\section{Probleme bei der Verwendung von \Package{auto-pst-pdf}}
+\tudhyperdef*{sec:tips:auto-pst-pdf}
+\ChangedAt{v2.02:\TaT Hinweise zum Paket \Package{auto-pst-pdf}}
+%
+Bei der Verwendung von \Engine{pdfLaTeX} liest das Paket \Package{auto-pst-pdf}
+die Präambel ein und erstellt anschließend über den PostScript"=Pfad
+\Path{latex\,>\,dvips\,>\,ps2pdf} eine PDF"~Datei, welche lediglich alle in den
+vorhandenen \Environment{pspicture}(\Package{pstricks})'none'"=Umgebungen
+erstellten Grafiken enthält. Das Paket \Package{ifpdf} stellt das Makro
+\Macro{ifpdf}(\Package{ifpdf})'none' bereit, mit welchem unterschieden werden
+kann, ob \Engine{pdfLaTeX} als Textsatzsystem verwendet wird. Abhängig davon
+können unterschiedliche Quelltexte ausgeführt werden, was genutzt wird, um die
+nachfolgend beschriebenen Probleme zu beheben.
+%
+\begin{quoting}
+\begin{Code}
+\usepackage{ifpdf}
+\end{Code}
+\end{quoting}
+
+\minisec{Die gleichzeitige Verwendung von \Package{floatrow}}
+Das Paket \Package{floatrow} stellt Befehle bereit, mit denen die Beschriftung
+von Gleitobjekten sehr bequem gesetzt werden können. Diese Setzen ihren Inhalt
+erst in einer Box, um deren Breite zu ermitteln und diese anschließend
+auszugeben. In Kombination mit \Package{auto-pst-pdf} führt das zu einer
+doppelten Erstellung der gewünschten Abbildung. Um dies zu vermeiden, müssen
+die durch \Package{floatrow} bereitgestellten Befehle \enquote{unschädlich}
+gemacht werden. Die fraglichen Befehlen akzeptieren allerdings bis zu drei
+optionale Argumente \emph{vor} den beiden obligatorischen, was für die
+Benutzerschnittstelle für die (Re-)Definition durch \hologo{LaTeXe}
+normalerweise nicht vorgesehen ist. Deshalb wird das Paket \Package{xparse}
+geladen, mit welchem dies möglich wird. Genaueres dazu ist der dazugehörigen
+Paketdokumentation zu entnehmen. Mit folgendem Quelltextauszug lassen sich die
+\Package{floatrow}"=Befehle zusammen mit der
+\Environment{pspicture}(\Package{pstricks})'none'"=Umgebung wie gewohnt
+verwenden.
+%
+\begin{quoting}
+\begin{Code}
+\usepackage{floatrow}
+\usepackage{xparse}
+\ifpdf\else
+ \RenewDocumentCommand{\fcapside}{ooo+m+m}{#4#5}
+ \RenewDocumentCommand{\ttabbox}{ooo+m+m}{#4#5}
+ \RenewDocumentCommand{\ffigbox}{ooo+m+m}{#4#5}
+\fi
+\end{Code}
+\end{quoting}
+
+\minisec{Die parallele Nutzung von \Package{tikz} und \Package{todonotes}}
+Mit dem Paket \Package{tikz}~-- und auch allen anderen Paketen die
+selbiges nutzen wie beispielsweise \Package{todonotes}~-- gibt es in Verbindung
+mit \Package{auto-pst-pdf} ebenfalls Probleme. Lösen lässt sich dieses Dilemma,
+indem die fraglichen Pakete lediglich geladen werden, wenn \Engine{pdfLaTeX}
+aktiv ist.
+%
+\begin{quoting}[rightmargin=0pt]
+\begin{Code}
+\ifpdf
+ \usepackage{tikz}%\dots gegebenenfalls weitere auf tikz basierende Pakete
+\fi
+\end{Code}
+\end{quoting}
+
+
+
+\section{Automatisiertes Einbinden von \Application{Inkscape}-Grafiken }
+\tudhyperdef*{sec:tips:svg}%
+\ChangedAt{v2.05:\TaT \Macro*{includesvg} aus Paket \Package{svg} verwenden}
+\index{Grafiken}%
+%
+Das Einbinden von \Application{Inkscape}"=Grafiken in \hologo{LaTeX}"=Dokumente
+wird auf \CTAN[pkg/svg-inkscape]{\Package*{svg-inkscape}'none'} erläutert. Ein
+daraus abgeleiteter und verbesserter Ansatz wird durch das Paket \Package{svg}
+bereitgestellt. Mit diesem Paket ist ein \textbf{automatisierter} Export der
+\Application{Inkscape}"=Grafiken direkt bei der Kompilierung mit \Engine{LaTeX}
+und dem anschließenden Einbinden in das Dokument möglich. Hierfür wird der
+Befehl \Macro*{includesvg}[\OParameter{Parameter}\Parameter{SVG-Datei}] durch
+das Paket definiert.
+
+Dabei erfolgt der externe Aufruf von \Application{Inkscape} über Kommandozeile
+beziehungsweise Terminal mit \File{inkscape.exe}. Damit dieser auch tatsächlich
+durchgeführt wird, ist die Ausführung einer \Engine*{LaTeX}"~Engine mit der
+Option \Path{-{}-shell-escape} beziehungsweise \Path{-{}-enable-write18}
+zwingend notwendig. Außerdem muss der Pfad zur Datei \File{inkscape.exe} dem
+System bekannt sein.%
+\footnote{%
+ Der Pfad zu \File{inkscape.exe} in der Umgebungsvariable \Path{PATH} des
+ Betriebssystems enthalten sein.%
+}
+Für weiterführende Informationen sei auf die Dokumentation des Pakets
+\Package{svg} verwiesen.
+
+
+
+\section{Änderung des Papierformates}
+\index{Papierformat}%
+%
+Es kann vorkommen, dass innerhalb eines Dokumentes kurzzeitig das Papierformat
+geändert werden soll, um beispielsweise eine Konstruktionsskizze in der
+digitalen PDF"~Datei einzubinden. Dabei ist es mit der \KOMAScript-Option
+\Option{paper=\PSet}(\Package{typearea})'none' sowohl möglich, lediglich die
+Ausrichtung in ein Querformat zu ändern, als auch die Größe des Papierformates
+selber.
+%
+\begin{Example}
+Ein Dokument im A4"~Format soll kurzzeitig auf ein A3"=Querformat geändert
+werden. Das folgende Minimalbeispiel zeigt, wie dies mit \KOMAScript-Mitteln
+über die Optionen \Option*{paper=landscape}(\Package{typearea})'none' und
+\Option*{paper=A3}(\Package{typearea})'none' geändert werden kann.
+\begin{Code}
+\documentclass[paper=a4,pagesize]{tudscrreprt}
+\usepackage[T1]{fontenc}
+\usepackage[ngerman]{babel}
+\usepackage{blindtext}
+
+\begin{document}
+\chapter{Überschrift Eins}
+\Blindtext
+
+\cleardoublepage
+\storeareas\PotraitArea% speichert den aktuellen Satzspiegel
+\KOMAoptions{paper=A3,paper=landscape,DIV=current}
+\chapter{Überschrift Zwei}
+\Blindtext
+
+\cleardoublepage
+\PotraitArea% lädt den gespeicherten Satzspiegel
+\chapter{Überschrift Drei}
+\Blindtext
+\end{document}
+\end{Code}
+\end{Example}
+
+
+
+
+\section{Beschnittzugabe und Schnittmarken}
+\tudhyperdef*{sec:tips:crop}%
+\index{Beschnittzugabe|!}%
+\index{Schnittmarken|!}%
+\ChangedAt{v2.05:\TaT Beschnittzugabe und Schnittmarken}
+%
+Beim Plotten von Postern oder anderen farbigen Druckerzeugnissen besteht
+oftmals das Problem, dass ein randloses Drucken nur schwer realisierbar ist.
+Deshalb wird zu oftmals damit beholfen, dass der Druck des fertigen Dokumentes
+auf einem größeren Papierbogen erfolgt und anschließend auf das gewünschte
+Zielformat zugeschnitten wird, womit das Problem des nicht bedruckbaren Randes
+entfällt. Dies kann über zwei verschiedene Wege realisiert werden.
+
+Der einfachste Weg ist die Verwendung des Paketes \Package{crop}. Mit diesem
+kann das Dokument ganz normal im gewünschten Zielformat erstellt werden. Vor
+dem Druck wird dieses Paket geladen und einfach das gewünschte Format des
+Papierbogens angegeben.
+%
+\begin{quoting}[rightmargin=0pt]
+\begin{Code}[escapechar=§]
+\RequirePackage{fix-cm}
+\documentclass[%
+ paper=a1,
+ fontsize=36pt
+]{tudscrposter}
+\usepackage[T1]{fontenc}
+§\dots§
+\usepackage{graphicx}
+\usepackage[b1,center,cam]{crop}
+\begin{document}
+§\dots§
+\end{document}
+\end{Code}
+\end{quoting}
+%
+Alternativ dazu kann für die \TUDScript-Klassen auf die Funktionalität des
+Paketes \Package{geometry} zurückgegriffen werden. Dieses Paket stellt den
+Befehl \Macro{geometry}(\Package{geometry})'none' bereit, in dessen Argument mit
+\Key{\Macro{geometry}(\Package{geometry})}{paper=\PName{Papierformat}}|default|
+das Papierformat festgelegt werden kann. Wird zusätzlich noch der Parameter
+\Key{\Macro{geometry}(\Package{geometry})}{layout=\PName{Zielformat}}|default|
+angegeben, so wird damit das gewünschte Zielformat definiert. Dabei sollte mit
+\Key{\Macro{geometry}(\Package{geometry})}%
+{layoutoffset=\PName{Längenwert}}|default|
+dieser Bereich gegebenenfalls etwas eingerückt werden. Die Angabe von
+\Key{\Macro{geometry}(\Package{geometry})}{showcrop=\PBoolean}|default|
+generiert außerdem noch visuelle Schnittmarken.
+%
+\begin{quoting}[rightmargin=0pt]
+\begin{Code}[escapechar=§]
+\RequirePackage{fix-cm}
+\documentclass[%
+ paper=a1,
+ fontsize=36pt
+]{tudscrposter}
+\usepackage[T1]{fontenc}
+§\dots§
+\geometry{paper=b1,layout=a1,layoutoffset=1in,showcrop}
+\begin{document}
+§\dots§
+\end{document}
+\end{Code}
+\end{quoting}
+%
+Für genauere Erläuterungen sowie weitere Einstellmöglichkeiten sei auf die
+Dokumentation von \Package{crop} beziehungsweise \Package{geometry} verwiesen.
+Mit der \TUDScript-Option \Option{bleedmargin}(\Class{tudscrposter}) können
+zusätzlich ie farbigen Bereiche der \PageStyle{tudheadings}"~Seitenstile
+erweitert werden, um ein \enquote{Zuschneiden in die Farbe} zu ermöglichen.
+
+
+
+
+
+\section{Vermeiden des Skalierens einer PDF-Datei beim Druck}
+\ChangedAt{v2.04:\TaT Vermeiden des Skalierens einer PDF"~Datei beim Druck}
+%
+Beim Erzeugen eines Druckauftrages einer PDF"~Datei kann es unter Umständen
+dazu führen, dass diese durch den verwendeten PDF"~Betrachter unnötigerweise
+vorher skaliert wird und dabei die Seitenränder vergrößert werden. Um dieses
+Verhalten für Dokumente, die mit \Engine{pdfLaTeX} erzeugt werden, zu
+unterdrücken, gibt es zwei Möglichkeiten:
+%
+\begin{enumerate}
+\item Wenn im Dokument ohnehin das Paket \Package{hyperref} verwendet wird,
+ ist der simple Aufruf von
+ \Macro{hypersetup}[%
+ \PParameter{pdfprintscaling=None}%
+ ](\Package{hyperref})'none'
+ ausreichend.
+\item Der Low"~Level"~Befehl
+ \Macro*{pdfcatalog}[\PParameter{/ViewerPreferences<{}</PrintScaling/None>{}>}]
+ besitzt das gleiche Verhalten und lässt sich auch ohne \Package{hyperref}
+ nutzen.
+\end{enumerate}
+%
+Weitere Informationen sind unter \url{http://www.komascript.de/node/1897}
+zu finden.
+
+
+
+\section{Platzierung von Gleitobjekten}
+\tudhyperdef*{sec:tips:floats}%
+\index{Gleitobjekte!Platzierung|?}%
+%
+Mit den beiden Paketen \Package{flafter} sowie \Package{placeins} gibt es die
+Möglichkeit, den für \hologo{LaTeX} zur Verfügung stehenden Raum für die
+Platzierung von Gleitobjekten einzuschränken. Darüber hinaus kann diese auch
+durch die im Folgenden aufgezählten Befehle beeinflusst werden. Die Makros
+lassen sich mit \Macro*{renewcommand*}[\Parameter{Makro}\Parameter{Wert}]
+sehr einfach ändern.
+
+\begin{Declaration}{\Macro*{floatpagefraction}}[0\floatpagefraction]
+\begin{Declaration}{\Macro*{dblfloatpagefraction}}[0\dblfloatpagefraction]
+\printdeclarationlist%
+%
+Der Wert gibt die relative Größe eines Gleitobjektes bezogen auf die
+eingestellte Texthöhe (\Length*{textheight}) an, die mindestens erreicht sein
+muss, damit für dieses gegebenenfalls vor dem Beginn eines neuen Kapitels eine
+separate Seite erzeugt wird. Dabei wird einspaltiges
+(\Macro*{floatpagefraction}) und zweispaltiges (\Macro*{dblfloatpagefraction})
+Layout unterschieden. Der Wert für beide Befehle sollte im Bereich
+von~\PValue{0.5}\dots\PValue{0.8} liegen.
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Macro*{topfraction}}[0\topfraction]
+\begin{Declaration}{\Macro*{dbltopfraction}}[0\dbltopfraction]
+\printdeclarationlist%
+%
+Diese Werte geben den maximalen Seitenanteil für Gleitobjekte, die am oberen
+Seitenrand platziert werden, für einspaltiges und zweispaltiges Layout an. Er
+sollte im Bereich von \PValue{0.5}\dots\PValue{0.8} liegen und größer als
+\Macro*{floatpagefraction} beziehungsweise \Macro*{dblfloatpagefraction} sein.
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Macro*{bottomfraction}}[0\bottomfraction]
+\printdeclarationlist%
+%
+Dies ist der maximale Seitenanteil für Gleitobjekte, die am unteren Seitenrand
+platziert werden. Er sollte zwischen~\PValue{0.2} und~\PValue{0.5} betragen.
+\end{Declaration}
+
+\begin{Declaration}{\Macro*{textfraction}}[0\textfraction]
+\printdeclarationlist%
+%
+Dies ist der Mindestanteil an Fließtext, der auf einer Seite mit Gleitobjekten
+vorhanden sein muss, wenn diese nicht auf einer separaten Seite ausgegeben
+werden. Er sollte in einem Bereich von~\PValue{0.1}\dots\PValue{0.3} liegen.
+\end{Declaration}
+
+\begin{Declaration}{\Counter*{totalnumber}}[\arabic{totalnumber}]
+\begin{Declaration}{\Counter*{topnumber}}[\arabic{topnumber}]
+\begin{Declaration}{\Counter*{dbltopnumber}}[\arabic{dbltopnumber}]
+\begin{Declaration}{\Counter*{bottomnumber}}[\arabic{bottomnumber}]
+\printdeclarationlist%
+%
+Außerdem gibt es noch Zähler, welche die maximale Anzahl an Gleitobjekten pro
+Seite insgesamt (\Counter*{totalnumber}) sowie am oberen (\Counter*{topnumber})
+und am unteren Seitenrand (\Counter*{bottomnumber}) sowie im zweispaltigen
+Satz beide Spalten überspannend (\Counter*{dbltopnumber}) festlegen. Die Werte
+können mit \Macro*{setcounter}[\Parameter{Zähler}\Parameter{Wert}] geändert
+werden.
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Length*{@fptop}}
+\begin{Declaration}{\Length*{@fpsep}}
+\begin{Declaration}{\Length*{@fpbot}}
+\begin{Declaration}{\Length*{@dblfptop}}
+\begin{Declaration}{\Length*{@dblfpsep}}
+\begin{Declaration}{\Length*{@dblfpbot}}
+\printdeclarationlist%
+%
+Sind vor Beginn eines Kapitels noch Gleitobjekte verblieben, so werden diese
+durch \hologo{LaTeX} normalerweise auf einer separaten vertikal zentriert Seite
+ausgegeben. Dabei bestimmen diese Längen jeweils den Abstand vor dem ersten
+Gleitobjekt zum oberen Seitenrand (\Length*{@fptop}, \Length*{@dblfptop}),
+zwischen den einzelnen Objekten (\Length*{@fpsep}, \Length*{@dblfpsep}) sowie
+zum unteren Seitenrand (\Length*{@fpbot}, \Length*{@dblfpbot}). Soll dies nicht
+geschehen, können die Längen durch den Anwender geändert werden.
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+%
+\begin{Example}
+Alle Gleitobjekte auf einer dafür speziell gesetzten Seite sollen direkt zu
+Beginn dieser ausgegeben werden. In der Dokumentpräambel lässt sich für dieses
+Unterfangen Folgendes nutzen:
+\begin{Code}
+\makeatletter
+\setlength{\@fptop}{0pt}
+\setlength{\@dblfptop}{0pt}% twocolumn
+\makeatother
+\end{Code}
+\end{Example}
+
+
+
+\section{Warnung bei der Schriftgrößenwahl}
+\tudhyperdef*{sec:tips:fontsize}%
+\ChangedAt{v2.04:\TaT Warnung bei der Schriftgrößenwahl}
+%
+Die im Dokument verwendete Schriftgröße kann bei den \KOMAScript-Klassen sehr
+einfach über die Option~\Option{fontsize}(\Package{koma-script})'none'
+eingestellt werden, wobei diese immer als Klassenoption angegeben werden
+sollte. Bei relativ großen und kleinen Schriftgrößen kann dabei eine Warnung in
+der Gestalt
+%
+\begin{quoting}[rightmargin=0pt]
+\begin{Code}[escapechar=§]
+LaTeX Font Warning: Font shape `§\dots§' in size <xx> not available
+\end{Code}
+\end{quoting}
+%
+auftreten. Dies daran, dass zum Zeitpunkt des Ladens einer Klasse immer nach
+den Computer-Modern"=Standardschriften gesucht wird, unabhängig davon, ob im
+Nachhinein ein anderes Schriftpaket geladen wird. Diese sind de"~facto nicht
+in alle Größen skalierbar. Um die Warnungen zu beseitigen, sollte das Paket
+\Package{fix-cm} mit \Macro*{RequirePackage} \emph{vor} der Dokumentklasse
+geladen werden:
+%
+\begin{quoting}[rightmargin=0pt]
+\begin{Code}[escapechar=§]
+\RequirePackage{fix-cm}
+\documentclass§\OParameter{Klassenoptionen}\Parameter{Klasse}§
+\usepackage[T1]{fontenc}
+§\dots§
+\begin{document}
+§\dots§
+\end{document}
+\end{Code}
+\end{quoting}
+%
+Damit werden die Warnungen behoben.
+
+
+
+\section{Fehlermeldung: ! No room for a new \textbackslash write}
+\tudhyperdef*{sec:tips:write}
+\ChangedAt{v2.02:\TaT Fehler beim Schreiben von Hilfsdateien}
+%
+Für das Erstellen und Schreiben externer Hilfsdateien steht \hologo{LaTeXe} nur
+eine begrenzte Anzahl sogenannter Ausgabe-Streams zur Verfügung. Allein für
+jedes zu erstellende Verzeichnis reserviert \hologo{LaTeX} selbst jeweils einen
+neuen Stream. Auch einige bereits zuvor in diesem Handbuch vorgestellte, sehr
+hilfreiche Pakete~-- wie beispielsweise \Package{hyperref}, \Package{biblatex},
+\Package{glossaries}, \Package{todonotes} oder auch \Package{filecontents}~--
+benötigen eigene Hilfsdateien und öffnen für das Erstellen dieser einen
+Ausgabe-Stream oder mehr. Lädt der Anwender mehrere, in eine Hilfsdatei
+schreibende Pakete, kann es zur der Fehlermeldung
+%
+\begin{quoting}
+\begin{Code}
+! No room for a new \write .
+\end{Code}
+\end{quoting}
+%
+kommen. Abhilfe schafft hier das Paket \Package{scrwfile}<koma-script>, welches
+einige Änderungen am \hologo{LaTeX}"=Kernel vornimmt, um die Anzahl der
+benötigten Hilfsdateien für das Schreiben aller Verzeichnisse zu reduzieren. Es
+muss einfach in der Präambel eingebunden werden. Sollten mit diesem Paket
+unerwarteter Weise Probleme auftreten, ist dessen Anleitung im \scrguide zu
+finden. Eine weitere Möglichkeit, das beschriebene Problem der geringen Menge
+an Ausgabe-Streams zu umgehen, stellt das Paket \Package{morewrites} dar.
+Allerdings ist dessen Verwendung nicht in allen Fällen von Erfolg gekrönt.
+
+
+
diff --git a/macros/latex/contrib/tudscr/source/doc/tudscr-index.tex b/macros/latex/contrib/tudscr/source/doc/tudscr-index.tex
new file mode 100644
index 0000000000..08f7671baf
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/tudscr-index.tex
@@ -0,0 +1,97 @@
+\CrossIndex{Optionen}{options}%
+\CrossIndex*{Befehle}{macros}%
+\CrossIndex{Bezeichner}{terms}%
+\CrossIndex{Seitenstile,Schriftelemente,Farben}{elements}%
+\CrossIndex*{Längen}{misc}%
+\CrossIndex{Zähler}{misc}%
+\CrossIndex*{Klassen,Pakete,Dateien}[Index der Dateien etc.]{files}%
+\CrossIndex*{Änderungen,Changelog,Version}[Änderungsliste]{changelog}%
+%
+\SeeRef*{Distribution}{\Distribution{Mac\hologo{TeX}}}
+\SeeRef*{Distribution}{\Distribution{\hologo{TeX}~Live}}
+\SeeRef*{Distribution}{\Distribution{\hologo{MiKTeX}}}
+%
+\index{Abbildungen|see{Grafiken}}%
+\index{Abschlussarbeit|see{Typisierung}}%
+\index{Aktualisierung|see{Update}}%
+\index{Aufzählungen|see{Listen}}%
+\index{Autorenangaben|see{Titel}}%
+\index{Bindekorrektur|see{Satzspiegel}}%
+\index{Cover|see{Umschlagseite}}%
+\index{Dezimaltrennzeichen|see{Zifferngruppierung}}%
+\index{doppelseitiger Satz|see{Satzspiegel}}%
+\index{Dresden-concept-Logo@\DDC-Logo|see{Layout}}%
+\index{Drittlogo|see{Layout}}%
+\index{Fachreferent|see{Referent}}%
+\index{Farben|see{Layout}}%
+\index{Fußzeile|see{Layout}}%
+\index{Installation|see{Update}}%
+\index{Gliederung|see{Layout!Überschriften}}%
+\index{Grafiken|see{Gleitobjekte}}%
+\index{Kapitelseiten|see{Layout}}%
+\index{Kapitelüberschriften|see{Layout}}%
+\index{Klassenoptionen|see{Optionen}}%
+\index{Kolumnentitel|see{Layout}}%
+\index{Kopfzeile|see{Layout}}%
+\index{Kurzfassung|see{Zusammenfassung}}%
+\index{Layout!Seitenränder|see{Satzspiegel}}%
+\index{Layout!Titel|see{Titel}}%
+\index{Layout!Umschlagseite|see{Umschlagseite}}%
+\index{Leerraum|see{Absatzauszeichnung}}%
+\index{Leerseiten|see{Vakatseiten}}%
+\index{Lokalisierung|see{Bezeichner}}%
+\index{Makros|see{Befehle}}%
+\index{Mathematiksatz|see{Einheiten}}%
+\index{Mathematiksatz|see{Griechische Buchstaben}}%
+\index{Mathematiksatz|see{Zifferngruppierung}}%
+\index{Nutzerinstallation|see{Installation}}%
+\index{Outline-Eintrag|see{Lesezeichen}}%
+\index{Parameter|see{Befehle}}%
+\index{Professor|see{Hochschullehrer}}%
+\index{Querbalken|see{Layout}}%
+\index{Seitenränder|see{Satzspiegel}}%
+\index{Seitenstile|see{Layout}}%
+\index{Silbentrennung|see{Worttrennung}}%
+\index{Sprachunterstützung|see{Bezeichner}}%
+\index{Sprachunterstützung|see{Worttrennung}}%
+\index{Sprungmarken|see{Lesezeichen}}%
+\index{Tabellen|see{Gleitobjekte}}%
+\index{Tausendertrennzeichen|see{Zifferngruppierung}}%
+\index{Teileseiten|see{Layout}}%
+\index{Teileüberschriften|see{Layout}}%
+\index{Titel!Umschlagseite|see{Umschlagseite}}%
+\index{Überfüllung|see{Beschnittzugabe}}%
+\index{Umgebungen|see{Befehle}}%
+\index{Trennmuster|see{Worttrennung}}%
+\index{Vektorgrafiken|see{Grafiken}}%
+\index{Versalien|see{Schriftauszeichnung}}%
+\index{zweiseitiger Satz|see{Satzspiegel}}%
+\index{zweispaltiger Satz|see{Satzspiegel}}%
+\index{Zweitlogo|see{Layout}}%
+
+
+\setchapterpreamble{%
+ \addparttocentry{}{\indexname}%
+ \begin{abstract}
+ \noindent Die Formatierung der Einträge in allen aufgeführten Indexen ist
+ folgendermaßen aufzufassen: \textbf{Zahlen in fetter Schrift} verweisen auf
+ die \textbf{Erklärung} zu einem Stichwort, wobei in der digitalen Fassung
+ dieses Handbuchs dieser Eintrag selbst ein Hyperlink zu seiner Erläuterung
+ ist. Seitenzahlen in normaler Schriftstärke hingegen deuten auf zusätzliche
+ Informationen, wobei diese für \textit{kursiv hervorgehobene Zahlen} als
+ besonders \textit{wichtig} erachtet werden.
+
+ Bei Einträgen für \hyperref[idx:options]{Klassen- und Paketoptionen},
+ \hyperref[idx:macros]{Umgebungen und Befehlen} sowie
+ \hyperref[idx:elements]{Seitenstilen, Schriftelementen und Farben}
+ respektive \hyperref[idx:misc]{Längen und Zählern}, zu denen keine direkte
+ \textbf{Erklärung} existiert~-- und diese dementsprechend auch nicht als
+ Hyperlink dargestellt sind~-- handelt es sich um zusätzliche Hinweise für
+ Elemente, die nicht durch \TUDScript sondern von anderen Klassen oder
+ Paketen zur Verfügung gestellt werden, welche im Suffix des entsprechenden
+ Eintrages angegeben werden.
+ \end{abstract}
+}
+\chapter*{\indexname}
+\PrintIndex
+\PrintChangelog
diff --git a/macros/latex/contrib/tudscr/source/doc/tudscr-installation.tex b/macros/latex/contrib/tudscr/source/doc/tudscr-installation.tex
new file mode 100644
index 0000000000..2dd8d79199
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/tudscr-installation.tex
@@ -0,0 +1,567 @@
+\setchapterpreamble{\tudhyperdef'{sec:install:ext}}
+\chapter{Weiterführende Installationshinweise}
+%
+\noindent\Attention{%
+ Hier werden unterschiedliche Varianten erläutert, wie \TUDScript in der
+ Version~\vTUDScript{} genutzt werden kann, falls eine frühere Variante als
+ \textbf{lokale Nutzerinstallation} verwendet wurde.
+}
+
+\bigskip\noindent
+Bis zur Version~v2.01 wurde \TUDScript ausschließlich über das \Forum zur
+lokalen Nutzerinstallation angeboten. In erster Linie hat das historische
+Hintergründe und hängt mit der Entstehungsgeschichte von \TUDScript zusammen.
+Eine lokale Nutzerinstallation bietet einen~-- eher zu vernachlässigenden~--
+Vorteil. Treten bei der Verwendung von \TUDScript Probleme auf, können diese im
+Forum gemeldet und diskutiert werden. Ist für ein solches Problem tatsächlich
+eine Fehlerkorrektur respektive Aktualisierung von \TUDScript nötig, kann diese
+schnell und unkompliziert über das \GitHubRepo bereitgestellt und durch den
+Anwender sofort genutzt werden.
+
+Dies hat allerdings für alle Anwender, welche das Forum relativ wenig oder gar
+nicht besuchen, den großen Nachteil, dass Sie nicht von Aktualisierungen,
+Verbesserungen und Fehlerkorrekturen neuer Versionen profitieren können. Auch
+alle nachfolgenden Bugfixes und Aktualisierungen des \TUDScript-Bundles müssen
+durch den Anwender manuell durchgeführt werden. Daher wird die Verbreitung via
+\CTAN[pkg/tudscr] präferiert, sodass \TUDScript stets in der gerade aktuellen
+Version verfügbar ist~-- eine durch den Anwender aktuell gehaltene
+\hologo{LaTeX}"=Distribution vorausgesetzt. Der einzige Nachteil bei diesem
+Ansatz ist, dass die Verbreitung eines Bugfixes und die anschließende
+Bereitstellung durch die verwendete Distribution für gewöhnlich bis zu zwei
+Tagen dauert.
+
+Die gängigen \hologo{LaTeX}"=Distributionen durchsuchen im Regelfall zuerst das
+lokale \Path{texmf}"=Nutzerverzeichnis nach Klassen und Paketen und erst daran
+anschließend den \Path{texmf}"=Pfad der Distribution selbst. Dabei spielt es
+keine Rolle, in welchem Pfad die neuere Version einer Klasse oder eines Paketes
+liegt. Sobald im Nutzerverzeichnis die gesuchte Datei gefunden wurde, wird die
+Suche beendet.
+\Attention{%
+ In der Konsequenz bedeutet dies, dass sämtliche Aktualisierungen über CTAN
+ nicht zum Tragen kommen, falls \TUDScript als lokale Nutzerversion
+ installiert wurde.
+}
+
+Deshalb wird Anwendern empfohlen, eine gegebenenfalls vorhandene lokale
+Nutzerinstallation von \TUDScript zu deinstallieren, falls diese nicht
+\emph{bewusst} installiert wurde. Die Deinstallation wird in
+\autoref{sec:local:uninstall} erläutert. Nach dieser können Updates des
+\TUDScript-Bundles durch die Aktualisierungsfunktion der Distribution erfolgen.
+
+Wie das \TUDScript-Bundle trotzdem als lokale Nutzerversion installiert oder
+aktualisiert werden kann, ist in \autoref{sec:local:install} beziehungsweise
+\autoref{sec:local:update} zu finden. Der Anwender sollte in diesem Fall
+allerdings genau wissen, was er damit bezweckt, da er in diesem Fall für die
+Aktualisierung von \TUDScript selbst verantwortlich ist.
+
+\minisec{Nutzung der veralteten Schriftfamilien}
+\ChangedAt{v2.06}%
+%
+Soll ein Dokument noch mit den veralteten Schriftfamilien \Univers und \DIN
+gesetzt werden, so ist eine lokale Installation der Type1-Schriften notwendig,
+welche in \autoref{sec:install:fonts} beschrieben wird. Zusätzlich sei auf die
+beiden Optionen \Option*{tudscrver=2.05} und \Option*{cdoldfont} hingewiesen.
+Für die Nutzung der \OpenSans wird lediglich die aktuelle Version des Paketes
+\Package{opensans} benötigt, welches auf \CTAN[pkg/opensans] zu finden ist.
+
+
+\section{Lokale Deinstallation des \TUDScript-Bundles}
+\tudhyperdef*{sec:local:uninstall}%
+\index{Deinstallation}%
+%
+Über die Kommandozeile beziehungsweise das Terminal kann mit
+%
+\begin{quoting}
+\Path{kpsewhich --all tudscrbase.sty}
+\end{quoting}
+%
+überprüft werden, ob eine lokale Nutzerinstallation von \TUDScript vorhanden
+ist. Es werden alle Pfade ausgegeben, in denen die Datei \File*{tudscrbase.sty}
+gefunden wird. Erscheint nur der Distributionspfad, ist die \TUDScript-Version
+von CTAN aktiv und der Anwender kann mit dem \TUDScript-Bundle arbeiten.
+
+Wird \emph{nur} das lokale Nutzerverzeichnis oder gar kein Verzeichnis
+gefunden, so wird höchstwahrscheinlich eine veraltete Distribution
+verwendet. In diesem Fall wird eine Aktualisierung dieser \emph{unbedingt}
+empfohlen. Sollte dies nicht möglich sein, \emph{muss} \TUDScript als lokale
+Nutzerversion installiert (\autoref{sec:local:install}) beziehungsweise~--
+falls ein Pfad ausgegeben wurde~-- aktualisiert (\autoref{sec:local:update})
+werden.
+
+Sollte neben dem Pfad der Distribution noch mindestens ein weiterer Pfad
+angezeigt werden, so ist eine lokale Nutzerversion installiert. In
+diesem Fall hat der Anwender drei Möglichkeiten:
+%
+\begin{enumerate}
+\item Entfernen der lokalen Nutzerinstallation (skriptbasiert)
+\item Entfernen der lokalen Nutzerinstallation (manuell)
+\item Aktualisierung der lokalen Nutzerversion (\autoref{sec:local:update})
+\end{enumerate}
+%
+Um die lokale Nutzerinstallation zu entfernen, kann für Windows
+\hrfn{\Download{uninstall/tudscr\_uninstall.bat}}{\File{tudscr\_uninstall.bat}}
+sowie für unixartige Betriebssysteme
+\hrfn{\Download{uninstall/tudscr\_uninstall.sh}}{\File{tudscr\_uninstall.sh}}
+verwendet werden. Nach der Ausführung des jeweiligen Skriptes kann mit dem zu
+Beginn gezeigten Aufruf in der Kommandozeile respektive Terminal geprüft
+werden, ob die Deinstallation erfolgreich war. Wird immer noch mindestens ein
+lokaler Pfad ausgegeben, sollte \TUDScript manuelle deinstalliert werden, was
+nachfolgend beschrieben wird.
+
+Nur die Deinstallation aller lokalen Nutzerinstallationen von \TUDScript
+ermöglicht die Verwendung der jeweils aktuellen CTAN"=Version. Hierfür ist~--
+unter der Annahme, dass das automatisierte Deinstallieren mithilfe der zuvor
+genannten Skripte zur Deinstallation nicht erfolgreich war~-- etwas Handarbeit
+durch den Anwender vonnöten. Der in der Kommandozeile respektive im Terminal mit
+%
+\begin{quoting}
+\Path{kpsewhich --all tudscrbase.sty}
+\end{quoting}
+%
+gefundene~-- zum Ordner der Distribution \emph{zusätzliche}~-- Pfad hat die
+folgende Struktur:
+%
+\begin{quoting}
+\Path{\PName{Installationspfad}/tex/latex/tudscr/tudscrbase.sty}
+\end{quoting}
+%
+Um die Nutzerinstallation vollständig zu entfernen, muss als erstes zu
+\Path{\PName{Installationspfad}} navigiert werden. Anschließend ist in diesem
+Pfad Folgendes durchzuführen:
+%
+\settowidth\tempdim{\Path{tex/latex/tudscr/}}%
+\begin{description}[labelwidth=\tempdim,labelsep=1em]
+\item[\Path{tex/latex/tudscr/}]\File*{.cls}- und \File*{.sty}"~Dateien löschen
+\item[\Path{tex/latex/tudscr/}]Ordner \Path{logo} vollständig löschen
+\item[\Path{doc/latex/}] Ordner \Path{tudscr} vollständig löschen
+\item[\Path{source/latex/}] Ordner \Path{tudscr} vollständig löschen
+\end{description}
+%
+Zum Abschluss ist in der Kommandozeile beziehungsweise im Terminal der Befehl
+\Path{texhash} aufzurufen. Damit wurde die lokale Nutzerversion entfernt und es
+wird von nun an die Version von \TUDScript genutzt, welche durch die verwendete
+Distribution bereitgestellt wird.
+
+
+
+\section{Lokale Installation des \TUDScript-Bundles}
+\tudhyperdef*{sec:local:install}%
+\index{Installation!Nutzerinstallation|(}%
+%
+Eine lokale Nutzerinstallation von \TUDScript sollte ausschließlich durch
+Anwender ausgeführt werden, die genau wissen, aus welchen Gründen dies
+geschehen soll. Hierfür werden die passenden Skripte angeboten. Für eine lokale
+Nutzerinstallation des \TUDScript-Bundles unter Windows für die Distributionen
+\Distribution{\hologo{TeX}~Live} oder \Distribution{\hologo{MiKTeX}} werden die
+Dateien aus
+\hrfn{\Download{\vTUDScript/TUD-Script\_\vTUDScript\_Windows.zip}}%
+{\File*{TUD-Script\_\vTUDScript\_Windows.zip}}
+benötigt. Für unixoide Betriebssysteme sind es die Dateien aus
+\hrfn{\Download{\vTUDScript/TUD-Script\_\vTUDScript\_Unix.zip}}%
+{\File*{TUD-Script\_\vTUDScript\_Unix.zip}}.
+
+Beim Ausführen des spezifischen Installationsskripts~-- für Windows
+\File{tudscr\_\vTUDScript\_install.bat} respektive für unixoide Betriebssysteme
+\File{tudscr\_\vTUDScript\_install.sh}~-- werden alle Dateien in das lokale
+Nutzerverzeichnis der jeweiligen Distribution installiert, falls kein anderes
+Verzeichnis explizit angegeben wird.
+\Attention{%
+ In jedem Fall sollte vor der Ausführung des Installationsskripts ein Update
+ der \hologo{LaTeX}"=Distribution durchgeführt werden. Dies gilt insbesondere
+ bei der Nutzung von \Distribution{\hologo{MiKTeX}}. Andernfalls wird es unter
+ Umständen im Installationsprozess oder bei der Nutzung von \TUDScript zu
+ Problemen kommen.
+}
+
+Alternativ zur Nutzung der bereitgestellte Skripte kann auch einfach der Inhalt
+des Archivs
+\hrfn{\Download{\vTUDScript/tudscr\_\vTUDScript.zip}}%
+{\File{tudscr\_\vTUDScript.zip}}
+in das lokale \Path{texmf}"=Nutzerverzeichnis kopiert und abschließend in der
+Kommandozeile respektive im Terminal \Path{texhash} aufgerufen werden.
+
+
+
+\section{Lokales Update des \TUDScript-Bundles}
+\tudhyperdef*{sec:local:update}%
+\index{Update|!}%
+%
+\subsection{Update des \TUDScript-Bundles ab Version~v2.02}
+Ein Update und die lokale Installation unterscheiden sich ab der Version~v2.06
+nicht voneinander, das Vorgehen ist absolut identisch zu der Beschreibung in
+\autoref{sec:local:install}.
+\Attention{%
+ Die lokale Aktualisierung auf Version~\vTUDScript{} funktioniert allerdings
+ nur, wenn \TUDScript bereits mindestens in der Version~v2.02 entweder als
+ lokale Nutzerversion oder über die Distribution installiert ist.%
+}
+
+\subsection{Update des \TUDScript-Bundles ab Version~v2.00}
+%
+Mit der Version~v2.02 gab es einige tiefgreifende Änderungen. Deshalb wird für
+vorausgehende Versionen~-- sprich v2.00 und v2.01~-- kein dediziertes Update
+angeboten. Die Aktualisierung kann durch den Anwender entweder~-- wie in
+\autoref{sec:local:install} erläutert~-- mit einer skriptbasierten oder mit
+einer manuellen Neuinstallation erfolgen.
+\index{Installation!Nutzerinstallation|)}%
+
+
+\subsection{Update des \TUDScript-Bundles von Version v1.0}
+%
+Ist \TUDScript in der veralteten \emph{Version~v1.0} installiert, so wird vor
+der Aktualisierung dringlichst zu einem vollständigen Entfernen dieser Version
+geraten. Andernfalls werden nach einem Update bei der Verwendung massive
+Probleme und Fehler auftreten. Zur Deinstallation werden die Skripte
+\hrfn{\Download{uninstall/tudscr_uninstall.bat}}{\File{tudscr\_uninstall.bat}}
+respektive
+\hrfn{\Download{uninstall/tudscr_uninstall.sh}}{\File{tudscr\_uninstall.sh}}
+bereitgestellt. Die aktuelle Version~\vTUDScript{} kann nach der vollständigen
+Deinstallation aller veralteten Versionen wie in \autoref{sec:install:fonts}
+beschrieben installiert werden.
+
+Im Vergleich zur \emph{Version~v1.0} hat sich an der Benutzerschnittstelle
+nicht sehr viel verändert, ein Umstieg auf die Version~\vTUDScript{} dürfte
+keine Schwierigkeiten bereiten. Treten danach dennoch Probleme auf, sollte der
+Anwender als erstes die Beschreibung des Paketes \Package{tudscrcomp}'full'
+lesen, welches eine Schnittstelle zur Nutzung alter und ursprünglich nicht mehr
+vorgesehener Befehle sowie Optionen bereitstellt. Allerdings werden einige von
+diesen auch durch das Paket \Package{tudscrcomp} nicht mehr bereitgestellt.
+Aufgeführt sind diese in \autoref{sec:obsolete}. Sollten trotz aller Hinweise
+dennoch Fehler oder Probleme beim Umstieg auf die neue \TUDScript-Version
+auftreten, ist eine Meldung im \Forum oder im \GitHubRepo[issues] die beste
+Möglichkeit, um Hilfe zu erhalten.
+
+
+
+\section{Installation veralteter Schriftfamilien}
+\tudhyperdef*{sec:install:fonts}%
+\index{Installation!Schriftinstallation|!(}%
+
+Bis Anfang des Jahres~2018 nutzte das \TUDCD als Hausschrift nicht \OpenSans
+sondern die Schriftfamilien \Univers und \DIN. Diese lassen sich auch weiterhin
+mit \TUDScript verwenden, um alte Dokumente kompilieren zu können. Hierfür sei
+auf die Optionen \Option*{tudscrverv=2.05} und \Option*{cdoldfont} hingewiesen.
+Da es sich bei diesen um lizenzierte Schriften handelt, müssen diese beim
+Universitätsmarketing auf \hrfn{https://tu-dresden.de/cd/}{Anfrage} mit dem
+Hinweis auf die Verwendung von \hologo{LaTeX} bestellt und nach Erhalt der
+notwendigen Archive \File{Univers\_PS.zip} und \File{DIN\_Bd\_PS.zip} für
+Windows (\autoref{sec:install:win}) beziehungsweise unixoide Betriebssysteme
+(\autoref{sec:install:unix}) installiert werden. Ohne einen triftigen Grund
+sollte jedoch in jedem Fall die \OpenSans genutzt werden, insbesondere für neu
+erstellte Dokumente.
+
+Das \TUDScript-Bundle unterstützt besagte Schriften auch im OpenType-Format,
+welche ebenfalls über das Universitätsmarketing auf
+\href{https://tu-dresden.de/cd/}{Anfrage} bestellt werden müssen. Die in den
+Archiven \File{Univers\_8\_TTF\/.zip} und \File{DIN\_TTF\/.zip} enthaltenen
+Schriften lassen sich~-- sobald diese für das Betriebssystem installiert
+wurden~-- mit dem Paket \Package{fontspec} verwenden. In \fullref{sec:fonts}
+sind weitere Hinweise zur Verwendung des Paketes \Package{fontspec} zu finden.
+
+Im \GitHubRepo* sind die zur Schriftinstallation benötigten
+\hrfn{https://github.com/tud-cd/tudscr/releases/tag/fonts}{Skripte}
+ebenso zu finden wie die
+\hrfn{https://github.com/tud-cd/tudscr/releases/tag/oldfonts}{Skripte}
+für die Klassen von Klaus Bergmann. Die unterschiedlichen Installationsskripte
+begründen sich insbesondere dadurch, dass bei der Installation für das
+\TUDScript-Bundle sowohl die Metriken als auch das Kerning der Schriften für
+Fließtext und den Mathematikmodus angepasst werden. Sollen die so verbesserten
+Schriften für die Klassen von Klaus Bergmann verwendet werden, kann dies mit
+dem Paket \Package{fix-tudscrfonts} erfolgen, was allerdings das Ergebnis der
+erzeugten Ausgabe beeinflusst, weshalb die Installationsskripte in
+unterschiedlichen Varianten weiterhin vorgehalten werden.
+
+\minisec{Erforderliche Pakete bei der Schriftinstallation}
+Für die Installation der Schriften sind die Pakete \Package*{fontinst},
+\Package*{cmbright}, \Package*{hfbright}, \Package*{cm-super} und
+\Package*{iwona} von \emph{essentieller} Bedeutung und daher \emph{zwingend}
+notwendig. Das Vorhandensein dieser wird durch die jeweiligen
+Schriftinstallationsskripte geprüft und die Installation beim Fehlen eines oder
+mehrerer Pakete mit einer entsprechenden Warnung abgebrochen.
+
+\minisec{Anmerkung zu \hologo{MiKTeX}}
+Vor der Installation der Schriften für \TUDScript sollte unbedingt ein Update
+von \Distribution{\hologo{MiKTeX}}|?| durchgeführt werden. Außerdem ist es sehr
+ratsam, die Installation von \Distribution{\hologo{MiKTeX}}|?| in der
+Mehrbenutzervariante mit Administratorrechten durchzuführen, da die
+Einzelbenutzervariante relativ unregelmäßig und nicht immer nachvollziehbar zu
+Problemen führen kann.
+
+Möglicherweise sind einige der für den Schriftinstallationsprozess notwendigen
+Pakete noch nicht installiert. Ist die automatische Nachinstallation fehlender
+Pakete aktiviert, so reicht es im Normalfall das Installationsskript zu
+starten. Andernfalls müssen diese Pakete manuell durch den Benutzer über den
+\Distribution{\hologo{MiKTeX}}"=Paketmanager hinzugefügt werden.
+
+Das Installationsskript scheitert außerdem bei einigen Anwendern~-- aufgrund
+eingeschränkter Nutzerzugriffsrechte~-- beim Eintragen der Schriften in die
+Map"~Datei. Dies muss gegebenenfalls durch den Anwender über die Kommandozeile
+%
+\begin{quoting}
+\Path{initexmf -{}-edit-config-file updmap}
+\end{quoting}
+%
+erfolgen. In der sich öffnenden Datei sollte sich der Eintrag
+\Path{Map~tudscr.map} befinden. Ist dies nicht der Fall, muss diese Zeile
+manuell eingetragen und die Datei anschließend gespeichert werden. Danach muss
+der Nutzer in der Kommandozeile noch folgenden Aufruf ausführen:
+%
+\begin{quoting}
+ \Path{initexmf~-{}-mkmaps}
+\end{quoting}
+
+
+\minisec{Anmerkung zu \hologo{TeX}~Live und Mac\hologo{TeX}}
+Sollte keine Vollinstallation von \Distribution{\hologo{TeX}~Live} durchgeführt
+worden sein, müssen die erforderlichen Pakete zur Schriftinstallation manuell
+über den \Distribution{\hologo{TeX}~Live}"=Paketmanager hinzugefügt werden.
+
+Sind nach einem fehlerfreien Durchlauf des Installationsskriptes die Schriften
+dennoch nicht verfügbar, so muss die Synchronisierung aller Schriftdateien
+angestoßen werden. Daran anschließend müssen die Map"~Datei und die
+dazugehörigen Schriftdateien registriert werden. Die hierfür notwendigen
+Aufrufe lauten:
+%
+\begin{quoting}
+\Path{updmap-sys -{}-syncwithtrees}\newline
+\Path{updmap-sys -{}-enable Map=tudscr.map}\newline
+\Path{updmap-sys -{}-force}
+\end{quoting}
+%
+Sind die Schriften danach immer noch nicht verfügbar, so wurden bestimmt schon
+weitere Schriften auf dem System \emph{lokal} installiert. In diesem Fall
+sollte der Vorgang nochmals für eine lokale Schriftinstallation mit
+%
+\begin{quoting}
+\Path{updmap -{}-syncwithtrees}\newline
+\Path{updmap -{}-enable Map=tudscr.map}\newline
+\Path{updmap -{}-force}
+\end{quoting}
+%
+ausgeführt werden. Dieses Vorgehen macht allerdings den Befehl
+\Path{updmap-sys} von nun an wirkungslos. Nach einer systemweiten Installation
+neuer Schriften~-- beispielsweise bei der Aktualisierung der Distribution~--
+müssen diese über den manuellen Aufruf von \Path{updmap} zukünftig durch den
+Anwender lokal bei \Distribution{\hologo{TeX}~Live}|?| respektive
+\Distribution{Mac\hologo{TeX}}|?| registriert werden.
+
+\Attention{%
+ Für die Schriftinstallation werden die Skripte \Path{tftopl}, \Path{pltotf}
+ und \Path{vptovf} benötigt, welche bei \Distribution{\hologo{TeX}~Live}|?|
+ beziehungsweise \Distribution{Mac\hologo{TeX}}|?| über das Paket
+ \Package*{fontware} aus \Package*{collection-fontutils}<>
+ bereitgestellt werden und zwingend installiert sein müssen.
+}
+
+
+\subsection{Installation der Type1-Schriften unter Windows}
+\tudhyperdef*{sec:install:win}%
+%
+Zur Installation der Schriften des \CDs für das \TUDScript-Bundle ist das Archiv
+\hrfn{\Download{fonts/TUD-Script_fonts_Windows.zip}}%
+{\File*{TUD-Script\_fonts\_Windows.zip}}
+vorgesehen. Dieses ist sowohl für \Distribution{\hologo{TeX}~Live}|?| als auch
+\Distribution{\hologo{MiKTeX}}|?| nutzbar und enthält~-- bis auf die jeweiligen
+Schriftarchive selbst~-- alle benötigten Dateien. Diese sollten nach dem
+Entpacken des Archivs in das gleiche Verzeichnis kopiert werden. Vor der
+Verwendung des Skripts \File{tudscr\_fonts\_install.bat} sollte sichergestellt
+werden, dass sich \emph{alle} der folgenden Dateien im selben Verzeichnis
+befinden:
+%
+\settowidth\tempdim{\File{tudscr\_fonts\_install.zip}~}%
+\begin{description}[labelwidth=\tempdim,labelsep=1em]
+ \item[\File{tudscr\_fonts\_install.bat}]Installationsskript
+ \item[\File{Univers\_PS.zip}]Archiv mit Schriftdateien für \Univers
+ \item[\File{DIN\_Bd\_PS.zip}]Archiv mit Schriftdateien für \DIN
+ \item[\File{tudscr\_fonts\_install.zip}]Archiv mit Metriken für die
+ Schriftinstallation via \Package{fontinst}
+\end{description}
+%
+Beim Ausführen des Installationsskripts werden alle Schriften standardmäßig in
+ein lokales Nutzerverzeichnis installiert. Wird das Skript über das Kontextmenü
+mit Administratorrechten ausgeführt, erfolgt die Installation in einem Pfad,
+der \emph{für alle Nutzer} gültig und lesbar ist.
+
+
+
+\subsection{Installation der Type1-Schriften unter Linux und OS~X}
+\tudhyperdef*{sec:install:unix}%
+%
+Zur Installation der Schriften des \CDs für das \TUDScript-Bundle ist das Archiv
+\hrfn{\Download{fonts/TUD-Script_fonts_Unix.zip}}%
+{\File*{TUD-Script\_fonts\_Unix.zip}}
+ vorgesehen. Dieses ist sowohl für \Distribution{\hologo{TeX}~Live}|?| als auch
+\Distribution{Mac\hologo{TeX}}|?| nutzbar und enthält~-- bis auf die jeweiligen
+Schriftdateien selbst~-- alle benötigten Dateien. Diese sollten nach dem
+Entpacken des Archivs in das gleiche Verzeichnis kopiert werden. Vor der
+Verwendung des Skripts \File{tudscr\_fonts\_install.sh} sollte sichergestellt
+werden, dass sich \emph{alle} der folgenden Dateien im selben Verzeichnis
+befinden:
+%
+\begin{description}[labelwidth=\tempdim,labelsep=1em]
+ \item[\File{tudscr\_fonts\_install.sh}]Installationsskript
+ (Terminal: \Path{bash tudscr\_fonts\_install.sh})
+ \item[\File{Univers\_PS.zip}]Archiv mit Schriftdateien für \Univers
+ \item[\File{DIN\_Bd\_PS.zip}]Archiv mit Schriftdateien für \DIN
+ \item[\File{tudscr\_fonts\_install.zip}]Archiv mit Metriken für die
+ Schriftinstallation via \Package{fontinst}
+\end{description}
+%
+\minisec{Anmerkung zu Linux und OS~X}
+\Attention{%
+ Nach dem Entpacken eines Release-Archivs im passenden Pfad\footnote{%
+ beispielsweise \Path{cd~"\$HOME/Downloads/\PName{Unterordner}"}%
+ } \textbf{muss das Skript zwingend} mit \Path{bash~\PName{Skript}.sh} im
+ Terminal in diesem Pfad mit den benötigten Dateien aufgerufen werden.
+}
+Dabei werden alle Schriften standardmäßig in das lokale Nutzerverzeichnis
+(\Path{\$TEXMFHOME}) installiert. Wird das Skript mit \Path{sudo} verwendet,
+erfolgt die Installation \emph{für alle Nutzer} in den lokalen Systempfad
+(\Path{\$TEXMFLOCAL}).
+
+Es ist unbedingt darauf zu Achten, das beim Ausführen des Skriptes das Terminal
+im richtigen Verzeichnis aktiv ist. Bei den meisten unixoiden Betriebssystemen
+ist es problemlos möglich, das Terminal aus der Benutzeroberfläche heraus über
+das Kontextmenü im gewünschten Pfad zu öffnen. Geht dies nicht, so muss nach
+dem Öffnen des Terminals mit dem Befehl \Path{cd} erst zum entsprechenden
+Pfad~-- exemplarisch \Path{cd~"\$HOME/Downloads/\PName{Unterordner}"}~--
+navigiert werden. Ein beispielhafter Aufruf im Terminal könnte also lauten:
+%
+\begin{quoting}
+\Path{%
+ cd~"\$HOME/Downloads/TUD-Script\_fonts\_Unix"{}\,\POParameter{ENTER}
+}\newline
+\Path{bash tudscr\_fonts\_install.sh\,\POParameter{ENTER}}
+\end{quoting}
+
+
+\subsection{Installationshinweise für portable Installationen}
+\tudhyperdef*{sec:install:portable}%
+%
+Prinzipiell ist die Installation der Type1-Schriften des \CDs bei der Nutzung
+von \Distribution{\hologo{TeX}~Live~Portable}|?| respektive
+\Distribution{\hologo{MiKTeX}~Portable}|?| äquivalent zur nicht"~portablen
+Variante, welche in \autoref{sec:install:fonts} beschrieben wird. Alle dort
+gegebenen Hinweise sollten sorgfältig berücksichtigt werden. Der durch das
+jeweilige Installationsskript voreingestellte Installationspfad sollte für
+gewöhnlich nicht geändert werden. Geschieht dies dennoch, so sollte dieser sich
+logischerweise auf dem externen Speichermedium
+\Path{\PName{Laufwerksbuchstabe}:\textbackslash} befinden.
+
+\minisec{\hologo{TeX}~Live~Portable}
+Das folgende Vorgehen wurde mit Windows getestet. Empfehlungen für die portable
+Installation für unixoide Betriebssysteme können an \mailto{\tudscrmail}
+gesendet werden.
+\begin{enumerate}
+\item Installation von \Distribution{\hologo{TeX}~Live~Portable} in
+ \Path{\PName{Laufwerksbuchstabe}:\textbackslash LaTeX\textbackslash texlive}
+\item Die Datei \File*{tl-tray-menu.exe} im Installationspfad öffnen
+\item Das Kontextmenü von \Distribution{\hologo{TeX}~Live~Portable} mit einem
+ Rechtsklick auf das entsprechende Symbol im Infobereich der Taskleiste
+ öffnen und entweder über die grafische Oberfläche (\emph{Package Manager})
+ oder die Kommandozeile (\emph{Command Prompt}) ein Update durchführen
+\item Über das Kontextmenü die Kommandozeile ausführen und in dieser das Skript
+ für die Installation der Schriften \File{tudscr\_fonts\_install.bat} starten.
+ Dabei gegebenenfalls zuvor in den Pfad des Skriptes wechseln~-- exemplarisch:
+ \begin{quoting}[leftmargin=1.5em,rightmargin=0pt]
+ \Path{%
+ cd~/d~\%USERPROFILE\%\textbackslash{}Downloads%
+ \textbackslash{}TUD-Script\_fonts\_Windows\,\POParameter{ENTER}
+ }\newline%
+ \Path{tudscr\_fonts\_install.bat}\,\POParameter{ENTER}
+ \end{quoting}
+ Unter Umständen meldet das Skript fehlende Pakete. Dieses müssen über durch
+ den Anwender über den \emph{\hologo{TeX}~Live~Manager} installiert werden.
+ \Attention{%
+ Ein Ausführen ohne die über \Distribution{\hologo{TeX}~Live~Portable}
+ geöffnete Kommandozeile führt zu Fehlern.
+ }%
+\end{enumerate}
+
+\minisec{\hologo{MiKTeX}~Portable}
+\begin{enumerate}
+\item Installation von \Distribution{\hologo{MiKTeX}~Portable} in
+ \Path{\PName{Laufwerksbuchstabe}:\textbackslash LaTeX\textbackslash MiKTeX}%
+ \footnote{Der Pfad darf \emph{nicht} auf der obersten Verzeichnisebene
+ \Path{\PName{Laufwerksbuchstabe}:\textbackslash} liegen.
+ }
+\item Die Datei \File{miktex-portable.cmd} im Installationspfad öffnen
+\item Das Kontextmenü von \Distribution{\hologo{MiKTeX}~Portable} mit einem
+ Rechtsklick auf das entsprechende Symbol im Infobereich der Taskleiste öffnen
+ und ein Update durchführen
+\item Über das Kontextmenü die Kommandozeile ausführen und in dieser das Skript
+ für die Installation der Schriften \File{tudscr\_fonts\_install.bat} starten.
+ Dabei gegebenenfalls zuvor in den Pfad des Skriptes wechseln~-- exemplarisch:
+ \begin{quoting}[leftmargin=1.5em,rightmargin=0pt]
+ \Path{%
+ cd~/d~\%USERPROFILE\%\textbackslash{}Downloads%
+ \textbackslash{}TUD-Script\_fonts\_Windows\,\POParameter{ENTER}
+ }\newline
+ \Path{tudscr\_fonts\_install.bat}\,\POParameter{ENTER}
+ \end{quoting}
+ Bei diesem Schritt werden die Pakete \Package{fontinst}, \Package{cmbright}
+ und \Package{iwona} unter Umständen nachinstalliert.
+ \Attention{%
+ Ein Ausführen ohne die über \Distribution{\hologo{MiKTeX}~Portable}
+ geöffnete Kommandozeile führt zu Fehlern.
+ }%
+\item Bei der erstmaligen Verwendung von \TUDScript werden alle weiteren
+ benötigten Pakete von \Distribution{\hologo{MiKTeX}~Portable}
+ nachinstalliert, falls die automatische Nachinstallation aktiviert ist und
+ diese nicht schon vorhanden sind. Unter anderem betrifft dies die Pakete
+ \Package*{tudscr}, \Package{koma-script} sowie \Package{etoolbox},
+ \Package{xpatch} \Package{letltxmacro}, \Package{environ},
+ \Package{trimspaces}, \Package{xcolor} und \Package{mptopdf}<>.
+\end{enumerate}
+
+
+\subsection{Probleme bei der Installation der Type1-Schriften}
+%
+Wird Windows verwendet, kann es unter Umständen vorkommen, dass notwendige
+Befehlsaufrufe für das Installationsskript nicht ausgeführt werden können. In
+diesem Fall ist der Pfad zu den benötigten Dateien, welche normalerweise unter
+\Path{\%SystemRoot\%\textbackslash System32} zu finden sind, nicht in der
+Umgebungsvariable \Path{PATH} enthalten. Einen Hinweis zur Problemlösung ist
+\hrfn{http://latex.wcms-file3.tu-dresden.de/phpBB3/viewtopic.php?t=359}{%
+ in diesem Beitrag im Forum%
+}
+zu finden.
+
+Treten bei der Installation wider Erwarten Probleme auf, so ist zur Lösung eine
+Logdatei zu erstellen. Hierfür sollte unter \textbf{Windows} das Skript,
+welches Probleme verursacht, \emph{nicht} aus der Kommandozeile oder dem
+Explorer heraus sondern über \emph{Windows PowerShell} ausgeführt werden.
+Hierfür ist die Eingabe von \enquote{PowerShell} im Startmenü von Windows mit
+einem nachfolgenden Öffnen mittels \POParameter{ENTER}"~Taste ausreichend.
+Danach muss mit \Path{cd} zum Ordner des Skriptes navigiert und dieses mit
+\Path{.\textbackslash\PName{Skript}.bat|Tee-Object -file \PName{Skript}.log}
+ausgeführt werden. Ein Aufruf aus der PowerShell"~Konsole könnte lauten:
+%
+\begin{quoting}[rightmargin=0pt]
+ \Path{%
+ cd~"\$env:USERPROFILE\textbackslash{}Downloads\textbackslash{}%
+ TUD-Script\_fonts\_Windows"{}\,\POParameter{ENTER}%
+ }\newline%
+ \Path{%
+ .\textbackslash{}tudscr\_fonts\_install.bat%
+ |Tee-Object -file fonts\_install.log\,\POParameter{ENTER}%
+ }%
+\end{quoting}
+%
+Für \textbf{unixartige Systeme} ist der Aufruf
+\Path{bash \PName{Skript}.sh > \PName{Skript}.log} aus dem Terminal heraus zu
+verwenden. Ein exemplarische Verwendung könnte lauten:
+%
+\begin{quoting}
+ \Path{%
+ cd~"\$HOME/Downloads/TUD-Script\_fonts\_Unix"{}\,\POParameter{ENTER}%
+ }\newline
+ \Path{%
+ bash tudscr\_fonts\_install.sh > fonts\_install.log\,\POParameter{ENTER}%
+ }%
+\end{quoting}
+%
+Die so erstellte Logdatei kann \emph{mit einer kurzen Fehlerbeschreibung}
+entweder im \Forum* gepostet oder direkt per E"~Mail an \mailto{\tudscrmail}
+gesendet werden.
+\index{Installation!Schriftinstallation|!)}%
diff --git a/macros/latex/contrib/tudscr/source/doc/tudscr-introduction.tex b/macros/latex/contrib/tudscr/source/doc/tudscr-introduction.tex
new file mode 100644
index 0000000000..ae2f2a0ff0
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/tudscr-introduction.tex
@@ -0,0 +1,166 @@
+\chapter{Einleitung}
+%
+Zur Verwendung der \TUDScript-Klassen in der Version~\vTUDScript{} werden
+sowohl die \KOMAScript"=Klassen~\vKOMAScript{} oder später als auch die
+Hausschrift des \CDs \OpenSans aus dem Paket \Package{opensans} zwingend
+benötigt. Außerdem müssen durch die genutzte \hologo{LaTeX}"=Distribution
+weitere Pakete bereitgestellt werden, die unter \autoref{sec:packages:needed}
+aufgeführt sind. Beim Einsatz einer der Distributionen
+\index{Distribution}%
+\Distribution{\hologo{TeX}~Live}|?|,
+\Distribution{Mac\hologo{TeX}}|?| und
+\Distribution{\hologo{MiKTeX}}|?|
+in der jeweils aktuellen Versionen sollte dies kein Problem darstellen. Wird
+jedoch eine Distribution verwendet, die \TUDScript in der Version~\vTUDScript{}
+nicht zur Verfügung stellt und eine Aktualisierung dieser nicht möglich sein,
+so sollte \autoref{sec:install:ext} konsultiert werden.
+
+Das \TUDScript"=Bundle ist hauptsächlich für das Erstellen wissenschaftlicher
+Texte sowie Arbeiten gedacht und soll \emph{momentan} die ursprünglichen
+Klassen\footnote{%
+ \Class{tudbook}, \Class{tudbeamer}, \Class{tudletter}, \Class{tudfax},
+ \Class{tudhaus}, \Class{tudform}%
+} aus dem Vorlagenpaket von Klaus Bergmann nicht ersetzen sondern vielmehr
+ergänzen.
+%
+Eine Umsetzung des \CDs für die \Class{beamer}"=Klasse sowie für Briefe und
+Geschäftsschreiben auf Basis des \KOMAScript"=Brief"=Klasse \Class{scrlttr2}
+ist bis jetzt leider noch nicht mit \TUDScript realisiert worden, soll jedoch
+langfristig erfolgen. Im Bundle \Class{tudmathposter} existieren für die
+\Class{beamer}"=Klasse allerdings bereits mehrere Stile. Dieses ist im
+\hrfn{https://github.com/tud-cd/tud-cd/}{%
+ GitHub-Repository~\Distribution*{tud-cd}%
+} zu finden. Für das Erstellen von Briefen mit den \TUDScript"=Klassen ließe
+sich das Paket \Package{scrletter} nutzen.
+
+
+
+\section{Bestandteile und Nutzung des \TUDScript-Bundles}
+%
+\ChangedAt{%
+ v2.01:\TUDScript-Bundle auf CTAN veröffentlicht;%
+ v2.02:Installationsroutine der Type1-Schriften angepasst;%
+ v2.04:Installationsskripte verbessert und robuster gestaltet sowie für die
+ beiden portablen Distributionen \Distribution*{\hologo{TeX}~Live~Portable}
+ und \Distribution*{\hologo{MiKTeX}~Portable} erweitert;%
+ v2.06:Schriften im Paket \Package{opensans}, manuelle Installation unnötig;%
+}
+%
+Das \TUDScript-Bundle wird über das \CTAN bereitgestellt und kann durch
+\hologo{LaTeX}"=Distributionen wie \Distribution{\hologo{TeX}~Live}|?|,
+\Distribution{Mac\hologo{TeX}}|?| oder auch \Distribution{\hologo{MiKTeX}}|?|
+genutzt werden. Es stellt zum einen die drei Hauptklassen \Class{tudscrbook},
+\Class{tudscrreprt} sowie \Class{tudscrartcl} und zum anderen die Klasse
+\Class{tudscrposter} zur Verfügung, welche in \autoref{sec:mainclasses}
+beziehungsweise \autoref{sec:poster} vorgestellt werden. Das Paket
+\Package{tudscrsupervisor}~-- dokumentiert in \autoref{sec:supervisor}~-- kann
+zusammen mit den \TUDScript"=Klassen genutzt werden, um Aufgabenstellungen,
+Aushänge oder Gutachten für studentische Arbeiten zu erstellen. Weiterhin
+existieren auch eigenständige Pakete, welche in \autoref{sec:bundle}
+beschrieben sind. Für die Verwendung des \TUDScript-Bundles ist~-- neben
+\KOMAScript{} mindestens in der Version~\vKOMAScript{} sowie den in
+\autoref{sec:packages:needed} aufgeführten \hologo{LaTeX}"=Paketen~-- seit der
+Version~v2.06 lediglich die Schrift \OpenSans vonnöten, welche durch das Paket
+\Package{opensans} zur Verfügung gestellt wird. Eine lokale Nutzerinstallation
+der Schriften~-- wie in vorherigen Versionen~-- ist nicht notwendig. Lediglich
+für den Fall, dass gezielt die alten Schriften \Univers und \DIN eingesetzt
+werden sollen, müssen diese auch installiert sein. Weitere Hinweise dazu sind
+in \autoref{sec:install:fonts} zu finden. Um diese zu aktivieren, sei auf
+\Option{tudscrver=2.05} und \Option{cdoldfont} verwiesen.
+
+\minisec{Anmerkung zu Windows}
+Für Windows können zwei unterschiedliche \hologo{LaTeX}"=Distributionen genutzt
+werden. Die Vorteile von \Distribution{\hologo{TeX}~Live}|?| im Vergleich zu
+\Distribution{\hologo{MiKTeX}}|?| liegen zum einen in der Wartung durch mehrere
+Autoren sowie der früheren Verfügbarkeit aller Updates über CTAN. Zum anderen
+werden zusätzlich zu \hologo{LaTeXe} ein \emph{Perl"~Interpreter} sowie
+\emph{Ghostscript} mitgeliefert, wodurch die Ad"=hoc"=Verwendung einiger
+Pakete wie beispielsweise \Package{glossaries} vereinfacht beziehungsweise
+verbessert wird. Für \Distribution{\hologo{MiKTeX}}|?| müssen diese Programme
+gegebenenfalls manuell installiert werden. Demgegenüber entfällt für
+\Distribution{\hologo{MiKTeX}}|?| die alljährliche Neuinstallation, welche bei
+\Distribution{\hologo{TeX}~Live}|?| notwendig ist.
+
+\minisec{Anmerkung zu Linux und OS~X}
+Die Installation einer der \hologo{LaTeX}"=Distributionen
+\Distribution{\hologo{TeX}~Live}|?| oder \Distribution{Mac\hologo{TeX}}|?|
+sollte direkt über die angebotenen Pakete
+(\url{https://tug.org/texlive/} oder \url{https://tug.org/mactex/}) und nicht
+über \Path{apt-get install} erfolgen. Damit wird sichergestellt, dass die
+aktuelle Variante der jeweiligen Distribution genutzt wird.
+
+
+
+\section{Zur Verwendung dieses Handbuchs}
+Sämtliche neu definierten Optionen, Umgebungen und Befehle der Klassen und
+Pakete des \TUDScript-Bundles werden im Handbuch aufgeführt und beschrieben. Am
+Ende des Dokumentes befinden sich mehrere Indexe, die das Nachschlagen oder
+Auffinden von bisher unbekannten Befehlen oder Optionen erleichtern sollen.
+
+Die im Folgenden beschriebenen Optionen können~-- wie ein Großteil aller
+Einstellungen für \KOMAScript~-- in der Syntax des \Package{keyval}"=Paketes
+als Schlüssel"=Wert"=Paare bei der Wahl der Dokumentklasse angegeben werden:
+\Macro*{documentclass}[%
+ \POParameter{\PName{Schlüssel}\PValue{=}\PName{Wert}}\Parameter{Klasse}%
+]
+
+Des Weiteren eröffnen die \KOMAScript"=Klassen die Möglichkeit der späten
+Optionenwahl. Damit können Optionen nicht nur direkt beim Laden als sogenannte
+Klassenoptionen angegeben werden, sondern lassen sich auch noch innerhalb des
+Dokumentes nach dem Laden der Klasse ändern. Die \KOMAScript"=Klassen sehen
+hierfür zwei Befehle vor. Mit
+\Macro{KOMAoptions}[\Parameter{Optionenliste}](\Package{koma-script})'none'
+lassen sich beliebig viele Schlüsseln jeweils genau einen Wert zuweisen,
+\Macro{KOMAoption}[%
+ \Parameter{Option}\Parameter{Werteliste}%
+](\Package{koma-script})'none'
+erlaubt das gleichzeitige Setzen mehrere Werte für genau einen Schlüssel.
+Für die von \TUDScript \emph{zusätzlich} zur Verfügung gestellten Optionen
+werden äquivalent dazu die Befehle \Macro{TUDoptions}[\Parameter{Optionenliste}]
+und \Macro{TUDoption}[\Parameter{Option}\Parameter{Werteliste}] definiert.
+Damit kann das Verhalten von Optionen im Dokument~-- innerhalb einer Gruppe
+auch lokal~-- geändert werden.
+
+Die Voreinstellung jeder Option wird mit \enquote{Standardwert:\,\PName{Wert}}
+bei deren Beschreibung angeführt. Einige dieser Voreinstellungen sind nicht
+immer gleich sondern werden in Abhängigkeit der genutzten Benutzereinstellungen
+und Optionen gesetzt. Diese bedingten Voreinstellungen werden durch
+\enquote{%
+ Standardwert:\,\PName{Wert}%
+ \PValue{\,|\,}Bedingung:\,\PName{bedingter~Wert}%
+}
+angegeben. Wird ein Schlüssel durch den Benutzer \emph{ohne} eine Wertzuweisung
+genutzt, so wird~-- falls vorhanden~-- ein vordefinierter Säumniswert gesetzt,
+welcher in der Beschreibung aller Optionen durch die~\PValue{\emph{kursive}}
+Schreibweise innerhalb der Werteliste gekennzeichnet ist. In den meisten Fällen
+ist der Säumniswert eines Schlüssels \PValue{true}, er entspricht folglich der
+Angabe \PName{Schlüssel}\PValue{=true}. Mit der expliziten Wertzuweisung eines
+Schlüssels durch den Benutzer werden sowohl einfache als auch bedingte
+Voreinstellungen immer überschrieben. Die neben den Optionen neu eingeführten
+Befehle und Umgebungen der Klassen werden im gleichen Stil erläutert.
+
+
+
+\section{Schnelleinstieg}
+Das Handbuch gliedert sich in drei Teile. In \autoref{part:main} ist die
+Dokumentation von \TUDScript zu finden. Hier werden alle neuen Optionen,
+Umgebungen und Befehle, die über die Funktionalität von \KOMAScript{}
+hinausgehen, erläutert. \autoref{part:additional} enthält zum einen einfache
+Minimalbeispiele, um den prinzipiellen Umgang und die Funktionalitäten von
+\TUDScript zu demonstrieren. Zum anderen werden hier auch ausführliche und
+dokumentierte Tutorials vor allem für \hologo{LaTeX}"=Neulinge angeboten.
+Insbesondere das Tutorial \Tutorial{treatise} ist mehr als einen Blick wert,
+wenn eine wissenschaftliche Arbeit mit \hologo{LaTeXe} verfasst werden soll.
+Abschließend werden verschiedenste Pakete vorgestellt, die nicht speziell für
+das \TUDScript-Bundle selber sondern auch für andere \hologo{LaTeXe}"=Klassen
+verwendet werden können und demzufolge für jeden Anwender interessant sein
+könnten. Außerdem werden hier einige Tipps \& Tricks beim Umgang mit
+\hologo{LaTeX} beschrieben, um kleinere oder größere Probleme zu lösen.
+
+Die Klassen \Class{tudscrbook}, \Class{tudscrreprt} und \Class{tudscrartcl}
+sind Wrapper"=Klassen der bekannten \KOMAScript-Klassen \Class{scrbook},
+\Class{scrreprt} sowie \Class{scrartcl} und können einfach anstelle deren
+verwendet werden. Auf diesen basierende Dokumente können durch das Umstellen
+der Dokumentklasse einfach in das \TUDCD überführt werden. Bei Fragestellungen
+bezüglich Layout, Schriften oder ähnlichem ist in jedem Fall ein weiterer Blick
+in das hier vorliegende Handbuch empfehlenswert.
diff --git a/macros/latex/contrib/tudscr/source/doc/tudscr-mainclasses.tex b/macros/latex/contrib/tudscr/source/doc/tudscr-mainclasses.tex
new file mode 100644
index 0000000000..915ea48199
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/tudscr-mainclasses.tex
@@ -0,0 +1,3663 @@
+\setchapterpreamble{\tudhyperdef'{sec:mainclasses}}
+\chapter[%
+ Die Hauptklassen \Class*{tudscrbook}, \Class*{tudscrreprt} und
+ \Class*{tudscrartcl}%
+]{Die Hauptklassen}
+\index{Hauptklassen|!}%
+%
+\ChangedAt*{%
+ v2.02:Umbenennung einiger Befehle für Kompatibilität mit anderen Paketen;%
+ v2.03:Anpassungen interner Befehle an \KOMAScript-Version~v3.15%
+}
+%
+\begin{Declaration*}{\Class{tudscrbook}}
+\begin{Declaration*}{\Class{tudscrreprt}}
+\begin{Declaration*}{\Class{tudscrartcl}}
+Es werden die drei neuen Hauptklassen
+%
+\begin{description}
+\item \Class{tudscrbook}
+\item \Class{tudscrreprt}
+\item \Class{tudscrartcl}
+\end{description}
+%
+eingeführt, welche auf den \KOMAScript-Klassen basieren und grundsätzlich alle
+deren bereitgestellte Optionen~-- beispielsweise
+\Option{parskip=\PName{Methode}}(\Package{koma-script})'none' für die
+Absatzeinstellungen oder
+\Option{BCOR=\PName{Längenwert}}(\Package{typearea})'none' zur Festlegung der
+Bindekorrektur~-- sowie Umgebungen und Befehle unterstützen. Zusätzlich zu den
+\KOMAScript"=Klassen werden weitere Pakete zwingend benötigt, welche unter
+\autoref{sec:packages:needed} aufgeführt sind und durch \TUDScript geladen
+werden.
+
+Es sei hier abermals auf die \scrguide[Anwenderdokumentation von \KOMAScript]
+hingewiesen, viele der folgend beschriebenen Befehle und Optionen beziehen sich
+auf die darin vorgestellten Einstellungsmöglichkeiten. Die Anpassungen und
+Erweiterungen der \KOMAScript"=Klassen an das \CD und die neu definierten
+beziehungsweise geänderten oder erweiterten Befehle und Optionen werden im
+Folgenden erläutert.
+
+\begin{Declaration}{\Macro{TUDoptions}[\Parameter{Optionenliste}]}
+\begin{Declaration}{\Macro{TUDoption}[\Parameter{Option}\Parameter{Werteliste}]}
+\printdeclarationlist%
+\index{Optionen|!}%
+%
+Mit diesen beiden Befehlen besteht für die meisten der neuen Klassen- respektive
+Paketoptionen die Möglichkeit, den Wert der Optionen noch nach dem Laden der
+Klasse beziehungsweise des Paketes zu ändern. Sie sind das Äquivalent zu den
+beiden \KOMAScript-Befehlen \Macro{KOMAoptions}(\Package{koma-script})'none'
+beziehungsweise \Macro{KOMAoption}(\Package{koma-script})'none'.
+
+Man kann wahlweise mit der Anweisung \Macro{TUDoptions} die Werte mehrerer
+Optionen gleichzeitig ändern, wobei diese durch Kommata zu trennen sind. Dabei
+muss innerhalb der Optionenliste jede zu ändernde Option in der Form
+\PName{Option}\PValue{=}\PName{Wert} angegeben werden. Die meisten der
+\TUDScript-Optionen besitzen auch einen Standard- respektive Säumniswert.
+Werden diese in der Form \PName{Option} ohne die Angabe eines Wertes genutzt,
+so wird der jeweiligen Option einfach der vorgesehene Säumniswert zugewiesen.
+
+Einige Optionen können gleichzeitig mehrere, sich ergänzende Werte besitzen.
+Für diese besteht die Möglichkeit, mit \Macro{TUDoption} einer einzelnen Option
+nacheinander eine Reihe von Werten zuzuweisen, wobei diese in der Werteliste
+durch Komma voneinander zu trennen sind.
+
+Diese beiden Befehlen erlauben es im Bedarfsfall das Verhalten von einer Option
+oder mehreren Optionen im Dokument zu ändern. Werden diese Befehle in einer
+Umgebung oder Gruppe genutzt, bleiben die vorgenommenen Einstellungen innerhalb
+dieser lokal begrenzt.
+\end{Declaration}
+\end{Declaration}
+
+
+
+\section{Die Schriften des \CDs}
+\tudhyperdef*{sec:fonts}%
+\index{Schriftart|?(}%
+%
+\ChangedAt*{%
+ v2.00:Schriften~-- insbesondere für den mathematischen Satz~-- verbessert;%
+ v2.01:Unterschneidung (Kerning) der Ziffern verbessert;%
+}
+%
+Das \TUDCD gibt die Verwendung der Schriftfamilie \OpenSans für den Fließtext
+vor, was in der Standardkonfiguration durch \TUDScript auch so umgesetzt wird.
+Da jedoch in längeren Texten die Verwendung einer Serifenschriften aus
+typografischer Sicht zu empfehlen ist, gibt es allerdings die Möglichkeit, die
+ursprünglich vorgesehenen Schriften des \CDs nicht zu laden und stattdessen die
+\hologo{LaTeX}"=Standardschriften beziehungsweise ein anderes Schriftpaket zu
+verwenden. Die Erläuterungen dazu sind in \autoref{sec:text} zu finden. Zur
+Verwendung der Schriften mit \hologo{LaTeXe}"=Klassen, welche nicht zum
+\TUDScript-Bundle gehören, lässt sich das Paket \Package{tudscrfonts} laden.
+
+\ChangedAt{%
+ v2.02;%
+ v2.04:Einfachere Verwendung des Paketes \Package{fontspec};%
+ v2.06:\OpenSans als neue Schrift im \TUDCD;%
+}
+Durch das \CD werden keine Schriften für den Mathematiksatz festgelegt. Das ist
+insbesondere für sowohl mathematische Abhandlungen als auch ingenieur- und
+naturwissenschaftliche Dokumente nicht tragbar. Im Mathematikmodus werden
+deshalb die lateinischen Glyphen mithilfe des Paketes \Package{mathastext}
+sowie die griechischen Lettern der \OpenSans genutzt. Zu Ergänzung kann für
+zusätzliche mathematische Symbole das Paket \Package{mdsymbol} geladen werden.
+
+Diese Einstellung lässt sich deaktivieren, wodurch sich die Standardschriften
+oder gegebenenfalls die eines zusätzlichen Paketes für den mathematischen Satz
+nutzen lassen. Die dafür relevanten Einstellungen werden in \autoref{sec:math}
+erläutert. Weiterhin sind ergänzende Hinweise zu einem typografisch sauberen
+Mathematiksatz in \autoref{sec:tut} zu finden.
+
+
+\minisec{Die Schriftformate Type1 und OpenType}
+\index{Type1-Schriften}%
+\index{OpenType-Schriften}%
+\ChangedAt{v2.02:OpenType-Schriften mit Paket \Package{fontspec} verwendbar}
+%
+Das \TUDScript-Bundle unterstützt die Nutzung der Schriften des \CDs sowohl
+im Type1- als auch im OpenType-Format. Beide Formate werden durch das Paket
+\Package{opensans} bereitgestellt, wobei unabhängig vom genutzten
+Textsatzsystem die Schriften im Type1-Format geladen werden. Die Verwendung der
+Schriften im OpenType-Format ist auch beim Einsatz von \Engine{LuaLaTeX} oder
+\Engine{XeLaTeX} nicht zwingend erforderlich. Dennoch ist dies problemlos
+möglich, indem einfach das Paket \Package{fontspec} eingebunden wird.
+
+Ein Verzicht auf die Type1-Schriften ist dennoch nicht ohne Weiteres möglich.
+Denn einerseits sind diese für die Kompilierung eines Dokumentes über den
+klassischen Prozesspfad via \Path{latex\,>\,dvips\,>\,ps2pdf}~-- wie es
+beispielsweise für die Erstellung von Grafiken mit \Package{pstricks} notwendig
+ist~-- erforderlich. Andererseits werden für den Mathematiksatz die Glyphen den
+Type1-Schriften entnommen. Eine Verwendung der OpenType-Schriften für den
+Mathematiksatz ist leider nicht ohne einen erheblichen Aufwand möglich, weshalb
+\TUDScript~-- insbesondere aufgrund des nicht vorhandenen Mehrwerts~-- darauf
+verzichtet.
+\index{Schriftart|?)}%
+
+
+
+\subsection{Schriften für den Textsatz}
+\tudhyperdef*{sec:text}%
+\index{Schriftstärke}%
+%
+\begin{Declaration}[%
+ v2.02!\Option{cdfont=head};
+ v2.02!\Option{cdfont=heavyhead};
+ v2.03!\Option{cdfont=din};
+ v2.03!\Option{cdfont=nodin};
+ v2.05!\Option{cdfont=normalbold};
+ v2.05!\Option{cdfont=ultrabold};
+ v2.06!\Option{cdfont=liningfigures};
+ v2.06!\Option{cdfont=oldstylefigures};
+ v2.06!\Option{cdfont=standardgreek};
+]{\Option{cdfont=\PSet}}[true,normalbold,liningfigures]%
+\printdeclarationlist%
+%
+Mit der Option \Option{cdfont} können durch den Anwender alle zentralen
+Schrifteinstellungen für die \TUDScript-Klassen vorgenommen werden. Dies
+betrifft die Schriften sowohl für den Fließtext als auch den Mathematiksatz.
+Dabei lassen sich insbesondere unterschiedliche Kombinationen von normaler und
+fetter Schriftstärke für die \OpenSans einstellen. Zu Beginn des Dokumentes
+sind diese maßgeblich für die Definition der Mathematikschriften. Die
+Schriftstärke im charakteristischen Querbalken der Kopfzeile lässt sich mit
+dieser Option ebenfalls einstellen.
+%
+\begin{values}{\Option{cdfont}}
+\itemfalse
+ Es werden die \hologo{LaTeX}"=Standardschriften und nicht die Hausschrift
+ des \CDs verwendet. Der Anwender kann beliebige Schriftpakete nutzen.%
+ \footnote{%
+ Für die Verwendung der klassischen \hologo{LaTeX}"=Schriften, ist das Paket
+ \Package{lmodern} sehr empfehlenswert.%
+ }
+\itemtrue*[light/lightfont/noheavyfont]
+ Es wird die Hausschrift \OpenSans im Stil des \CDs genutzt. Die Überschriften
+ der obersten Gliederungsebenen bis einschließlich \Macro*{subsubsection}
+ werden entweder in fetter oder extra"~fetter Schriftstärke gesetzt
+ (\seeref{\Option{headings=\PSet}'ppage'}), darunter liegende%
+ \footnote{%
+ \Macro{paragraph}(\Package{koma-script})'none' und
+ \Macro{subparagraph}(\Package{koma-script})'none'%
+ } verwenden immer den fetten Schriftschnitt. Dieser nutzt standardmäßig
+ \textcdrn{Open~Sans~Regular}, kann allerdings mit \Option{cdfont=heavybold}
+ stärker eingestellt werden. Im Fließtext kommt \textcdln{Open~Sans~Light} zum
+ Einsatz.
+\item[heavy/heavyfont]
+ Diese Einstellung unterscheidet sich von \Option{cdfont=true} insoweit als
+ die Schriftstärke der Hausschrift erhöht wird. Der Fließtext des Dokumentes
+ wird in \textcdrn{Open~Sans~Regular} gesetzt. Der fette Schriftschnitt ist im
+ Normalfall auf \textcdsn{Open~Sans~Semi"~Bold} festgelegt.
+\end{values}
+%
+Die Stärke der fetten Schriften lässt sich mit folgenden Einstellungen anpassen.
+%
+\begin{values}{\Option{cdfont}}
+\item[normalbold]
+ \ChangedAt{v2.05}
+ Für die fette Schriftstärke wird \textcdrn{Open~Sans~Regular} respektive bei
+ stärkerer Grundschrift (\Option{cdfont=heavy}) \textcdsn{Open~Sans~Semi"~Bold}
+ verwendet. Dies ist die Voreinstellung.
+\item[heavybold/ultrabold]
+ \ChangedAt{v2.05}
+ Die fetten Schriften werden stärker hervorgehoben. Es kommt
+ \textcdsn{Open~Sans~Semi"~Bold} respektive \textcdbn{Open~Sans~Bold} bei
+ erhöhter Schriftstärke (\Option{cdfont=heavy}) zum Einsatz.
+\end{values}
+%
+Die folgende Tabelle verdeutlicht die Möglichkeiten zur Kombination der
+Einstellungen:
+\begin{center}
+\footnotesize%
+\setlength{\tabcolsep}{.5em}%
+\begin{tabular}{ccccc}
+ \toprule
+ & \multicolumn{2}{c}{\Option{cdfont=normalbold}}
+ & \multicolumn{2}{c}{\Option{cdfont=heavybold}}
+ \tabularnewline
+ & \Macro{mdseries} & \Macro{bfseries} & \Macro{mdseries} & \Macro{bfseries}
+ \tabularnewline\midrule
+ \Option{cdfont=true}
+ & \textcdln{Open~Sans~Light} & \textcdrn{Open~Sans~Regular}
+ & \textcdln{Open~Sans~Light} & \textcdsn{Open~Sans~Semi"~Bold}
+ \tabularnewline\midrule
+ \Option{cdfont=heavy}
+ & \textcdrn{Open~Sans~Regular} & \textcdsn{Open~Sans~Semi"~Bold}
+ & \textcdrn{Open~Sans~Regular} & \textcdbn{Open~Sans~Bold}
+ \tabularnewline\bottomrule
+\end{tabular}
+\end{center}
+\par\medskip\noindent
+%
+\index{Ziffernform}%
+Weiterhin lässt sich die Gestalt der Ziffern anpassen, wobei zwischen
+Versalziffern und Mediävalziffern gewählt werden.
+%
+\begin{values}{\Option{cdfont}}
+\item[liningfigures/normalfigures]
+ \ChangedAt{v2.06}
+ Mit dieser Einstellung kommen dicktengleiche/äquidistant/proportionale
+ Versalziffern oder auch Majuskelziffern (\textbf{1234567890}) zum Einsatz.
+ Mit \Macro{oldstylenums}[\Parameter{Ziffer(n)}] lassen sich
+ Mediävalziffern oder auch Minuskelziffern explizit setzen. Dieses Verhalten
+ ist standardmäßig aktiviert.
+\item[oldstylefigures/osf/oldnumbers]
+ \ChangedAt{v2.06}
+ Für den Fließtext werden nichtproportionale Mediävalziffern oder auch
+ Minuskelziffern (\textbf{\oldstylenums{0123456789}}) standardmäßig verwendet.
+\end{values}
+%
+Außerdem dient die Option \Option{cdfont=\PSet} als erweiterte Schnittstelle
+für den Anwender, um zusätzliche Einstellungen für die Schriftnutzung vornehmen
+zu können, für welche normalerweise separate Optionen vorgesehen sind. Diese
+Möglichkeiten werden folgend kurz erläutert und auf die tatsächlich zugrunde
+liegende Option verweisen.
+
+Die genutzten Mathematikschriften können mit folgenden Werte beeinflusst werden:
+%
+\begin{values}{\Option{cdfont}}
+\item[nomath/nocdmath]
+ Diese Einstellung deaktiviert die \OpenSans für den mathematischen Satz. Es
+ werden die \hologo{LaTeX}"=Standardschriften verwendet und es lassen sich
+ beliebige Schriftpakete für den Mathematikmodus nutzen,
+ \seeref{\Option{cdmath=false}}.
+\item[math/cdmath]
+ Die \OpenSans wird für die Mathematikschriften genutzt,
+ \seeref{\Option{cdmath=true}}.
+\item[upgreek/uprightgreek]
+ Griechische Groß- und Kleinbuchstaben sind aufrecht,
+ \seeref{\Option{slantedgreek=false}}.
+\item[slgreek/slantedgreek]
+ Die Ausgabe der griechischen Glyphen erfolgt kursiv,
+ \seeref{\Option{slantedgreek=true}}.
+\item[texgreek/standardgreek]
+ \ChangedAt{v2.06}
+ Es kommt der \LaTeX-Standard zum Einsatz, bei dem griechische Majuskeln
+ aufrecht und Minuskeln kursiv ausgegeben werden,
+ \seeref{\Option{slantedgreek=standard}}.
+\end{values}
+%
+\ChangedAt{v2.02}
+Für die \TUDScript-Klassen gibt es bei den \PageStyle{tudheadings}-Seitenstilen
+folgende Einstellmöglichkeiten für die Schriftart im Querbalken:
+%
+\begin{values}{\Option{cdfont}}
+\item[nohead/noheadfont]
+ Bei deaktivierter Hausschrift für den Fließtext können diese ebenfalls im
+ Querbalken deaktiviert werden, \seeref{\Option{cdhead=false}}.
+\item[head/lighthead/lightfonthead/noheavyfonthead]
+ Für den Querbalken der Kopfzeile wird~-- unabhängig von der Verwendung der
+ Hausschrift im Fließtext~-- \OpenSans in normaler Schriftstärke verwendet,
+ \seeref{\Option{cdhead=true}}.
+\item[heavyhead/heavyfonthead]
+ Im Querbalken wird~-- unabhängig von der Dokumentschrift~-- \OpenSans in
+ erhöhter Stärke genutzt, \seeref{\Option{cdhead=heavy}}.
+\end{values}
+\end{Declaration}
+
+\begin{Declaration}[v2.06]{\Option{ttfont=\PSet}}[true]%
+\printdeclarationlist%
+\index{Schriftart}%
+\index{Schriftstärke}%
+%
+\ChangedAt*{%
+ v2.06:Verwendung der \texttt{Roboto~Mono} als Schreibmaschinenschrift möglich
+}
+Bei aktivierter Option \Option{cdfont} lässt sich zusätzlich die verwendete
+\texttt{Schreibmaschinenschrift} einstellen, wofür selbige aus einem der Pakete
+\Package{roboto-mono} oder \Package{lmodern} genutzt wird und insbesondere die
+gewählten Einstellungen für die Schriftstärke der Option \Option{cdfont}
+beachtet werden. Ein direktes Laden des jeweiligen Paketes durch den Benutzer
+ist nicht notwendig.
+%
+\begin{values}{\Option{ttfont}}
+\itemfalse
+ Es findet keine Anpassung Schreibmaschinenschrift (\Macro*{ttfamily}) statt,
+ mögliche Änderungen können durch den Anwender erfolgen.
+\itemtrue*[roboto/roboto-mono]
+ Sollte das Paket \Package{roboto-mono} installiert sein, wird die darin
+ definierte Schreibmaschinenschrift genutzt. Diese ist serifenlos und liegt in
+ einer Vielzahl unterschiedlicher Schriftschnitte vor, weshalb sich diese
+ ideal mit der \OpenSans kombinieren lässt.
+\item[lmodern/lmtt/lm]
+ Es wird explizit die Schreibmaschinenschrift aus \Package{lmodern} aktiviert.
+\end{values}
+\end{Declaration}
+
+
+
+\minisec{Auszeichnungen im Text}
+\index{Schriftstärke}%
+\index{Schriftauszeichnung}%
+%
+Unabhängig davon, welche Schriftfamilie im Dokument verwendet wird, können die
+Schriften des \CDs jederzeit mit einem der hier aufgeführten Textschalter oder
+Textkommandos innerhalb des Dokumentes genutzt werden. Ein Textschalter wirkt
+sich~-- wenn er nicht lokal durch eine Gruppe oder Umgebung begrenzt wird~--
+global auf das Dokument aus, wie etwa beispielsweise \Macro*{bfseries}. Bei
+einem Textkommando hingegen kommt die Schriftart nur für das nachfolgend
+angegebene Argument zum Einsatz, wie bei \Macro*{textbf}[\Parameter{Text}].
+%
+\begin{Declaration}[v2.04]{\Macro{cdfont}[\Parameter{Schriftart}]}
+\begin{Declaration}[v2.04]{%
+ \Macro{textcd}[\Parameter{Schriftart}\Parameter{Text}]%
+}
+\printdeclarationlist
+Diese beiden Befehle dienen zur gezielten Aktivierung einer Schriftart des \CDs
+in Stärke und Schnitt. Hierbei entspricht \Macro{cdfont} einem Textschalter und
+ändert die verwendete Schriftart unverzüglich im aktuellen Geltungsbereich auf
+\PName{Schriftart}, wohingegen \Macro{textcd} als Textkommando fungiert und den
+im zweiten Argument gegebenen \PName{Text} in \PName{Schriftart} setzt ohne
+dabei die Dokumentschriftart selbst zu ändern.
+
+Für die Schriftauswahl muss im ersten Argument die Bezeichnung der gewünschten
+Schriftart angegeben werden. Mögliche Werte sind der nachfolgenden Tabelle zu
+entnehmen. Der Vorsatz \PValue{Open Sans} für die \PName{Schriftart} im
+Argument ist dabei optional. Ebenso sind weder Leerzeichen noch die passende
+Groß- und Kleinschreibung notwendig. Für die Wahl der Schriftstärke ist allein
+die Bezeichnung \PValue{Light/Regular/Semi-Bold/Bold/Extra-Bold} ausreichend.
+Anstelle des Suffix' \PValue{Italic} ist auch die Nutzung von \PValue{Oblique}
+oder \PValue{Slanted} als Alias für die kursiven Schriftlagen möglich.
+%
+\begin{center}%
+ \newcommand*\listfonts[2]{%
+ \csuse{textcd#2}{Open Sans #1} &
+ \begin{Declaration*}{\Macro{cdfont#2}}
+ \Macro*{cdfont#2}'none'%
+ \end{Declaration*}
+ &
+ \begin{Declaration*}{\Macro{textcd#2}[\Parameter{Text}]}
+ \Macro*{textcd#2}[\Parameter{Text}]'none'%
+ \end{Declaration*}
+ \tabularnewline
+ }%
+ \begin{tabular}{lll}%
+ \toprule%
+ \textbf{Schriftart/Bezeichnung} & \textbf{Schalter} & \textbf{Textkommando}
+ \tabularnewline
+ \midrule
+ \listfonts{Light}{ln}
+ \listfonts{Regular}{rn}
+ \listfonts{Semi-Bold}{sn}
+ \listfonts{Bold}{bn}
+ \listfonts{Extra-Bold}{xn}
+ \listfonts{Light Italic}{li}
+ \listfonts{Regular Italic}{ri}
+ \listfonts{Semi-Bold Italic}{si}
+ \listfonts{Bold Italic}{bi}
+ \listfonts{Extra-Bold Italic}{xi}
+ \bottomrule%
+ \end{tabular}%
+\end{center}%
+%
+Alternativ zu \Macro{cdfont} und \Macro{textcd} werden für jeden Schriftschnitt
+auch explizite Textschalter und "~kommandos bereitgestellt, bei denen das
+Argument für die Bezeichnung der Schriftart entfällt. Diese sind in der zweiten
+und dritten Spalte der Tabelle aufgeführt.
+\end{Declaration}
+\end{Declaration}
+
+
+
+\subsection{Schriften für den Mathematiksatz}
+\tudhyperdef*{sec:math}%
+\index{Mathematiksatz|?(}%
+%
+\begin{Declaration}[v2.03]{\Option{cdmath=\PBoolean}}%
+ [true][\Option{cdfont=false}:false]
+\printdeclarationlist%
+%
+Diese Option dient zur Anpassung der Mathematikschriften. Wird diese aktiviert,
+so werden zur Hausschrift passende Glyphen im Mathematikmodus genutzt. Normale
+sowie fette Schriftstärke werden zu \emph{Beginn des Dokuments} abhängig von
+der zu diesem Zeitpunkt aktiven Einstellung für die Schriften des Fließtexts
+(\seeref{\Option{cdfont}}) definiert. Auf fette Mathematikschriften kann im
+Dokument mit \Macro{boldmath} umgeschaltet werden, eine Anpassung der
+Einstellungen ist durch \Macro{TUDoptions} möglich. Gültige Werte für die
+Option \Option{cdmath} sind:
+%
+\begin{values}{\Option{cdmath}}
+\itemfalse
+ Es werden die normalen \hologo{LaTeX}"=Serifenschriften beziehungsweise die
+ Schriften beliebig nutzbarer Pakete für den Mathematiksatz verwendet.
+\itemtrue*
+ Im Mathematikmodus kommt \OpenSans sowohl für lateinische als auch
+ griechische Buchstaben zum Einsatz.
+\end{values}
+\end{Declaration}
+
+\begin{Declaration}[%
+ v2.06!\Option{slantedgreek=standard};
+]{\Option{slantedgreek=\PBoolean}}[true]
+\printdeclarationlist%
+\index{Griechische Buchstaben|(}%
+%
+Die Option ändert die standardmäßige Neigung der griechischen Großbuchstaben im
+Mathematikmodus bei der Verwendung der Standardbefehle für griechische
+Buchstaben.
+%
+\begin{values}{\Option{slantedgreek}}
+\itemfalse
+ Die griechischen Glyphen werden im Mathematiksatz allesamt aufrecht gesetzt.
+\itemtrue*
+ Alle griechischen Buchstaben werden im Mathematikmodus kursiv ausgegeben.
+\item[standard/latex]
+ Die Ausgabe entspricht mit aufrechten Majuskeln und kursiven Minuskeln der
+ griechischen Lettern dem \LaTeX-Standard beim mathematischen Satz.
+\end{values}
+\end{Declaration}
+
+\begin{Declaration}{\Macro{Gamma}}
+\begin{Declaration}{\Macro{Delta}}
+\begin{Declaration}{\Macro{Theta}}
+\begin{Declaration}{\Macro{Lambda}}
+\begin{Declaration}{\Macro{Xi}}
+\begin{Declaration}{\Macro{Pi}}
+\begin{Declaration}{\Macro{Sigma}}
+\begin{Declaration}{\Macro{Upsilon}}
+\begin{Declaration}{\Macro{Phi}}
+\begin{Declaration}{\Macro{Psi}}
+\begin{Declaration}{\Macro{Omega}}
+\begin{Declaration}{\Macro{alpha}}
+\begin{Declaration}{\Macro{beta}}
+\begin{Declaration}{\Macro{gamma}}
+\begin{Declaration}{\Macro{delta}}
+\begin{Declaration}{\Macro{epsilon}}
+\begin{Declaration}{\Macro{varepsilon}}
+\begin{Declaration}{\Macro{zeta}}
+\begin{Declaration}{\Macro{eta}}
+\begin{Declaration}{\Macro{theta}}
+\begin{Declaration}{\Macro{vartheta}}
+\begin{Declaration}{\Macro{iota}}
+\begin{Declaration}{\Macro{kappa}}
+\begin{Declaration}{\Macro{lambda}}
+\begin{Declaration}{\Macro{mu}}
+\begin{Declaration}{\Macro{nu}}
+\begin{Declaration}{\Macro{xi}}
+\begin{Declaration}{\Macro{pi}}
+\begin{Declaration}{\Macro{varpi}}
+\begin{Declaration}{\Macro{rho}}
+\begin{Declaration}{\Macro{varrho}}
+\begin{Declaration}{\Macro{sigma}}
+\begin{Declaration}{\Macro{varsigma}}
+\begin{Declaration}{\Macro{tau}}
+\begin{Declaration}{\Macro{upsilon}}
+\begin{Declaration}{\Macro{phi}}
+\begin{Declaration}{\Macro{varphi}}
+\begin{Declaration}{\Macro{chi}}
+\begin{Declaration}{\Macro{psi}}
+\begin{Declaration}{\Macro{omega}}
+\settowidth\tempdim{\Macro{varepsilon}}%
+\addtolength\tempdim{\dimexpr 2\tabcolsep+2\arrayrulewidth-\textwidth\relax}%
+\printdeclarationlist(%
+ \begin{minipage}{-\tempdim}%
+ \small%
+ \newcommand\tablecontent{}%
+ \newcommand*\greekLetters{%
+ Gamma,Delta,Theta,Lambda,Xi,Pi,Sigma,Upsilon,Phi,Psi,Omega,%
+ alpha,beta,gamma,delta,epsilon,varepsilon,zeta,eta,theta,vartheta,%
+ iota,kappa,lambda,mu,nu,xi,pi,varpi,rho,varrho,sigma,varsigma,tau,%
+ upsilon,phi,varphi,chi,psi,omega%
+ }%
+ \def\do#1{%
+ \appto\tablecontent{%
+% \begin{Declaration*}{\Macro{up#1}}
+ \Macro*{up#1}'none'%
+% \end{Declaration*}
+ & $\csuse{up#1}$ & &
+% \begin{Declaration*}{\Macro{it#1}}
+ \Macro*{it#1}'none'%
+% \end{Declaration*}
+ & $\csuse{it#1}$\tabularnewline
+ }%
+ }%
+ \expandafter\docsvlist\expandafter{\greekLetters}%
+ \centering%
+ \vspace{\intextsep}\noindent
+ \begin{tabularm}{5}
+ \toprule%
+ \textbf{Befehl (aufrecht)} & \textbf{Symbol} & &
+ \textbf{Befehl (kursiv)} & \textbf{Symbol}
+ \tabularnewline\midrule\tablecontent\bottomrule%
+ \end{tabularm}
+ \end{minipage}%
+)%
+%
+Unabhängig von der Option \Option{slantedgreek} können sowohl kursive als auch
+aufrechte griechischen Glyphen im Mathematikmodus mit diesen Befehlen direkt
+verwendet werden. Dies ist nützlich, um zwischen \emph{kursiven Variablen} und
+\emph{aufrechten Konstanten} zu unterscheiden. Weiterhin kann anstelle von
+\Macro*{up\Parameter{Glyphe}} oder \Macro*{it\Parameter{Glyphe}} auch der
+Präfix \Macro*{other\Parameter{Glyphe}} genutzt werden. Damit wird~-- abhängig
+von der Option \Option{slantedgreek}~-- die komplementäre Schriftlage der
+angegebenen Glyphe gesetzt.
+\index{Griechische Buchstaben|)}%
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+
+
+\minisec{Zusätzliche Hinweise zum Mathematiksatz}
+Unter Umständen werden zusätzliche Symbole für den Mathematiksatz benötigt.
+Sehr oft kommt hierfür das Paket \Package{amssymb} zum Einsatz. Dieses stellt
+zahlreiche zusätzliche für die \hologo{LaTeX}"=Standardschriften zur Verfügung.
+Diese sind in Verbindung mit der \OpenSans aus typografischer Sicht jedoch
+keine ideale Lösung. Die Symbole aus dem Paket \Package{mdsymbol} passen
+wesentlich besser zu besagter Schriftfamilie, weshalb diesem Paket der Vorzug
+gegeben werden sollte, falls die Schriften des \CDs für den mathematischen Satz
+genutzt werden. Weitere Hinweise zum typografisch guten Mathematiksatz sind
+außerdem in \autoref{sec:tut} zu finden.
+\index{Mathematiksatz|?)}%
+
+
+\subsection{Vertikaler Leerraum in Abhängigkeit der Schriftgröße}
+\index{Leerraum}%
+\index{Schriftgröße}%
+%
+Bei den \TUDScript-Klassen sind im Normalfall mehrere Längen von der für das
+Dokument gewählten Schriftgröße abhängig~-- im Gegensatz zu \KOMAScript. Dies
+hat den großen Vorteil, dass bei einer Änderung der Schriftgröße die folgend
+genannten Befehle respektive Längen nicht separat durch den Anwender angepasst
+werden müssen, um weiterhin sinnvoll verwendet werden zu können.
+
+Die Anpassung an die Schriftgröße erfolgt sowohl die dehnbaren Längen
+\Length{bigskipamount}, \Length{medskipamount} und \Length{smallskipamount},
+welche von den Befehlen \Macro{bigskip}, \Macro{medskip} beziehungsweise
+\Macro{smallskip} für das Einfügen vertikaler Abstände genutzt werden, als auch
+die beiden Längen \Length{abovecaptionskip}(\Package{koma-script})'none' und
+\Length{belowcaptionskip}(\Package{koma-script})'none' für den Abstand zwischen
+einem Gleitobjekt~-- beispielsweise eine Abbildung oder eine Tabelle~-- und
+dessen mit \Macro{caption}(\Package{koma-script},\Package{caption})'none'
+gesetzten Beschreibung. Außerdem wird die Länge \Length{columnsep} als Maß für
+den horizontalen Abstand der einzelnen Textspalten im zwei- oder mehrspaltigen
+Layout, wie es beispielsweise mit dem Paket \Package{multicol} erzeugt werden
+kann, in Relation zur Schriftgröße sinnvoll festgelegt.
+
+Die verwendete Schriftgröße kann durch den Anwender über die \KOMAScript-Option
+\Option{fontsize=\PName{Schriftgröße}}(\Package{koma-script})'none' festgelegt
+werden.
+\Attention{%
+ Dabei ist zu beachten, dass diese immer als Klassenoption angegeben werden
+ sollte.%
+}
+Weitere Hinweise zur Wahl der passenden Schriftgröße sind außerdem in
+\autoref{sec:fontsize} zu finden.
+
+\begin{Declaration}[v2.05]{\Option{relspacing=\PBoolean}}[true]%
+\printdeclarationlist%
+%
+Mit der Option \Option{relspacing=\PBoolean} lässt sich die zuvor beschriebene
+Schriftgrößenabhängigkeit sowohl für vertikalen Leerraum zwischen zwei Absätzen
+oder bei Beschriftungen als auch für den horizontalen Abstand zwischen den
+Textspalten im mehrspaltigen Layout anpassen.
+%
+\begin{values}{\Option{relspacing}}
+\itemfalse[absolute/standard]
+ Die besagten Längen werden nicht angepasst, passende Werte sollten bei einer
+ Änderung der Schriftgröße durch den Anwender gewählt werden.
+\itemtrue*[relative/fontsize]
+ In Abhängigkeit von der gewählten Schriftgröße werden die zuvor genannten
+ Längen automatisch festgelegt.
+\end{values}
+\end{Declaration}
+
+
+
+\section{Das Layout des \CDs}
+\index{Layout|(}%
+\subsection{Der Satzspiegel}
+\index{Satzspiegel|(}%
+%
+\begin{Declaration}[%
+ v2.03;
+ v2.05!\Option{cdgeometry=restricted};%
+ v2.05!\Option{cdgeometry=adapted};%
+ v2.05!\Option{cdgeometry=calculated};%
+ v2.05!\Option{cdgeometry=custom};%
+]{\Option{cdgeometry=\PSet}}[true,restricted][\Option{cd=false}:false]%
+\printdeclarationlist%
+\index{Layout!Seitenstil}%
+\index{Satzspiegel!doppelseitig}%
+%
+Diese Option ist für die Aufteilung beziehungsweise die Berechnung des
+Satzspiegels verantwortlich. Das Maß der Seitenränder ist im \CD fest
+vorgegeben und wird standardmäßig von den \TUDScript-Klassen eingehalten.
+Allerdings lassen sich die Seitenränder anpassen, um beispielsweise einen
+vernünftigen doppelseitigen Satz zu ermöglichen.%
+\footnote{Hierbei sollte der innere Rand schmaler als der äußere sein}
+Des Weiteren besteht die Möglichkeit, auf das \KOMAScript"=Standardverhalten
+zurückzufallen und die Satzspiegelberechnung durch das Paket \Package{typearea}
+vornehmen zu lassen. Hier hat insbesondere die Klassenoption
+\Option{DIV=\PSet}(\Package{typearea})'none'|declare| maßgeblichen Einfluss auf
+den Satzspiegel. Mehr dazu ist in der \scrguide[Dokumentation von \KOMAScript]
+zu finden.
+\ChangedAt{v2.05}
+Zusätzlich lässt sich mit \Option{cdgeometry=custom} der Satzspiegel durch den
+Anwender (fast) beliebig festlegen.
+%
+\begin{values}{\Option{cdgeometry}}
+\itemfalse
+ Die Satzspiegelberechnung erfolgt via \Package{typearea}, die Vorgaben des
+ \CDs bezüglich der Seitenränder werden ignoriert.
+\itemtrue*[asymmetric/cd]
+ Die Seitenränder werden im asymmetrischen Stil des \CDs fest definiert und
+ auch für den doppelseitigen Satz
+ (Klassenoption \Option{twoside=true}(\Package{typearea})'none') genutzt.%
+ \footnote{links: 30\,mm, rechts: 20\,mm, oben: 20\,mm, unten: 30\,mm}
+\item[symmetric/centred/centered]
+ Der Satzspiegel wird im einseitigen sowie doppelseitigen Satz auf der Seite
+ zentriert.%
+ \footnote{links: 25\,mm, rechts: 25\,mm, oben: 20\,mm, unten: 30\,mm}
+\item[twoside/balanced]
+ Diese Einstellung aktiviert den doppelseitigen Satz
+ (\Option{twoside=true}(\Package{typearea})'none') und ändert den Satzspiegel
+ derart, dass die Ränder der inneren Seiten schmaler sind als die der äußeren.%
+ \footnote{innen: 20\,mm, außen: 30\,mm, oben: 20\,mm, unten: 30\,mm}
+ \Attention{%
+ Der so erzeugte Satzspiegel ist jedoch unvorteilhaft, da das Logo der \TnUD
+ sehr nah am inneren Seitenrand des Dokumentes gesetzt wird und folglich auf
+ rechten respektive ungeraden Seiten sehr weit an den Blattrand rückt.
+ }
+ Dieses Problem kann~-- bei \Class{tudscrbook} sowie \Class{tudscrreprt}~--
+ prinzipiell gelöst werden, indem Titel, Teile und Kapitel über das Aktivieren
+ der \KOMAScript-Option \Option{open=left}(\Package{koma-script})'none' immer
+ auf einer linken Seite beginnen, was allerdings aus typografischer Sicht eher
+ unüblich ist.
+\end{values}
+%
+\ChangedAt{v2.05:Neue Möglichkeiten bei der Satzspiegelberechnung im \CD}
+Mit den folgenden Werten lässt sich einstellen, in welcher Variante der
+Satzspiegel nach dem \TUDCD erstellt werden soll.
+%
+\begin{values}{\Option{cdgeometry}}
+\item[restricted]
+ Der Satzspiegel entspricht den expliziten Vorgaben des \CDs.
+\item[adapted]
+ Laut dem Handbuch zum \CD werden für Papierformate zwischen DIN~A6 und DIN~A4
+ \enquote{im Interesse größter Einheitlichkeit die Maßverhältnisse über einen
+ größeren Formatbereich hinweg \enquote{eingefroren}.} Dies kann jedoch zu
+ schlecht nutzbaren Satzspiegeln führen. Mit dieser Einstellung kann die
+ Fixierung deaktiviert und der äquivalente Satzspiegel beispielsweise für das
+ Format~DIN~A5 aktiviert werden. Bei Formaten außerhalb des fixierten Bereichs
+ hat diese Einstellung keinen Einfluss.
+\item[calculated]
+ Der Satzspiegel wird anhand der Referenzmaße für das Format~DIN~A4 für das
+ eingestellte Papierformat \emph{skaliert}. Die eigentlich definierten
+ diskreten Maße bei unterschiedlichen Gestaltungshöhen werden ignoriert.
+\end{values}
+%
+\ChangedAt{v2.05}
+Da es häufig sehr restriktive~-- wenn auch meistens völlig willkürliche~--
+Vorgaben für die Seitenränder gibt, besteht außerdem die Möglichkeit, diese
+weitestgehend manuell einzustellen.
+\begin{values}{\Option{cdgeometry}}
+\item[custom]
+ Für die Festlegung der Seitenränder ist das Paket \Package{geometry}
+ maßgeblich verantwortlich. Der Anwender kann mit den beiden, durch das Paket
+ bereitgestellten Befehlen \Macro{geometry}(\Package{geometry})'none' und
+ \Macro{newgeometry}(\Package{geometry})'none' den Satzspiegel selbst
+ definieren. Für Hinweise zur Verwendung der Befehle sollte die Dokumentation
+ von \Package{geometry} genutzt werden.
+\end{values}
+\end{Declaration}
+
+\begin{Declaration}[v2.03]{\Option{extrabottommargin=\PName{Höhe}}}[0pt]%
+\printdeclarationlist%
+%
+Mit dieser Option kann die Größe des unteren Seitenrandes angepasst werden,
+wenn der Satzspiegel des \CDs verwendet wird (\seeref{\Option{cdgeometry}}).
+Insbesondere für den Fall, dass bei Seiten im Stil \PageStyle{tudheadings}
+im Fußbereich entweder mit \Macro{footlogo} Drittlogos verwendet werden und
+diese über das optionale Argument oder via \Option{footlogoheight} über die
+Standardhöhe hinaus vergrößert wurden oder mit \Macro{footcontent} ein
+übergroßer Inhalt angegeben wurde, kann dieser unter Umständen etwas zu klein
+sein. Mit der Option \Option{extrabottommargin} wird der Fußbereich durch
+positive Werte vergrößert, negative Werte verkleinern diesen entsprechend.
+
+Alternativ zur Option \Option{extrabottommargin} kann auch die Einstellung
+\Option{cdfoot=\PValueName{Höhe}} mit einem Längenwert verwendet werden.
+Dabei spielt es für beide Optionen keine Rolle, ob eine \hologo{LaTeX}"=Länge,
+ein \hologo{TeX}"=Abstand oder eine \hologo{TeX}"=Ausdehnung als Länge bei der
+Wertzuweisung verwendet wird.
+\end{Declaration}
+
+\minisec{Bindekorrektur}
+\index{Satzspiegel!Bindekorrektur|!}%
+%
+Im Zusammenhang mit den Seitenrändern oder besser dem Satzspiegel ist die durch
+das Paket \Package{typearea} zur Verfügung gesellte \KOMAScript-Option
+\Option{BCOR=\PName{Längenwert}}(\Package{typearea})'none'|declare| zu
+erwähnen. Mit dieser kann bei der Satzspiegelberechnung ein Heftrand respektive
+eine Bindekorrektur berücksichtigt werden. Durch die \TUDScript-Klassen wird
+der mit dieser Option angegebene Wert auch an das Paket \Package{geometry}
+weitergereicht, sodass der Benutzer unabhängig von der Satzspiegelgestaltung
+(\Option{cdgeometry}) die Option \Option{BCOR}(\Package{typearea})'none' nutzen
+kann. So lässt sich eine Bindekorrektur von beispielsweise \unit[5]{mm} mit der
+\emph{Klassenoption} \Option*{BCOR=5mm} festlegen.
+
+Eine Anpassung der Bindekorrektur hat natürlich \emph{immer} eine Änderung der
+verfügbaren Breite des Textbereichs zur Folge hat und führt somit zwingend zu
+einer Anpassung des Satzspiegels. Da die Bindekorrektur jedoch abhängig von der
+Höhe des Buchblocks gewählt werden sollte, welche letztendlich erst mit dem
+Druck des fertiggestellten Dokumentes bestimmt werden kann, muss diese zu
+Beginn abgeschätzt werden.
+%
+\begin{Example}
+Als Faustregel gilt, dass die erforderliche Bindekorrektur in etwa der halben
+Höhe des Buchblocks entsprechen sollte. Dessen Höhe wiederum ist abhängig von
+der Anzahl der Seiten sowie der Dichte des verwendeten Papiers. Wird normales
+Papier mit einer Dichte von \unit[80]{g/m²} verwendet, so entsprechen 100~Blatt
+in etwa einer Höhe von \unit[10]{mm}, bei \unit[100]{g/m²} ca. \unit[12]{mm}.
+Dementsprechend wäre eine Bindekorrektur von \Option*{BCOR=5mm} beziehungsweise
+\Option*{BCOR=6mm} bei diesem Beispiel zu wählen.
+\index{Satzspiegel|)}%
+\end{Example}
+
+\minisec{Kopf"~ und Fußzeile im Zusammenspiel mit dem Satzspiegel}
+\index{Layout!Kopfzeile|?}%
+\index{Layout!Fußzeile|?}%
+%
+Da im \CD nicht festgelegt ist, wie die Gestaltung der Kopf"~ und Fußzeilen in
+einer wissenschaftlichen Arbeit auszuführen ist, bleibt dem Nutzer dafür eine
+gewisse Freiheit. Dafür sollte idealerweise das zu \KOMAScript{} gehörige Paket
+\Package{scrlayer-scrpage} genutzt werden.
+
+In der Dokumentation zu \Package{typearea} wird auch darauf eingegangen, wann
+Kopf"~ und Fußzeile bei der Satzspiegelkonstruktion entweder dem Rand oder dem
+Textkörper zugeschlagen werden sollten. Dies sollte bei der Erstellung eigener
+Kopf"~ und Fußzeilen beachtet werden. Die Einstellung dafür erfolgt mit den
+beiden \KOMAScript"=Optionen
+\Option{headinclude=\PBoolean}(\Package{typearea})'none'|declare| sowie
+\Option{footinclude=\PBoolean}(\Package{typearea})'none'|declare|.
+Diese können~-- unabhängig von der Einstellung zur Satzspiegelgestaltung durch
+die Option \Option{cdgeometry}~-- verwendet werden.
+
+
+\subsection{Die Gestalt von Titel, Umschlagseite, Teilen sowie Kapiteln \& Co.}
+\index{Layout!Farben|(}%
+\index{Layout!Seitenstil|(}%
+\index{Layout!Überschriften|(}%
+%
+Falls die nachfolgend beschriebene Option \Option{cd=\PSet} aktiviert ist,
+werden einige, spezielle Seiten im prägnanten Stil mit dem Logo der \TnUD und
+der dazugehörigen Kopfzeile mit Querbalken gesetzt. Dies betrifft insbesondere
+\hyperref[sec:title]{die Umschlagseite und den Titel aus \autoref{sec:title}},
+die \hyperref[sec:part]{Teileseiten in \autoref{sec:part}} sowie die
+\hyperref[sec:chapter]{Kapitelseiten in \autoref{sec:chapter}}. Mit den
+\PageStyle{tudheadings}"=Seitenstilen oder der \Environment{tudpage}"=Umgebung
+können weitere Seiten in diesem Stil erzeugt werden. Wird das Paket
+\Package{tudscrsupervisor} verwendet und mit den bereitgestellten Befehlen oder
+Umgebungen eine Aufgabenstellung, ein Gutachten oder ein Aushang erstellt, so
+erscheinen auch diese in besagtem Seitenstil.
+%
+\begin{Declaration}[%
+ v2.03!\Option{cd=bicolor}:%
+ Farbeinsatz nur im Kopf mit farbig abgesetztem Querbalken;
+ v2.03!\Option{cd=fullcolor}:%
+ voller Farbeinsatz mit farbig abgesetztem Querbalken;%
+ v2.04!\Option{cd=barcolor}:nur farbig abgesetzter Querbalken;%
+]{\Option{cd=\PSet}}[true]
+\printdeclarationlist%
+%
+Mit dieser Option wird festgelegt, ob und wie das \TUDCD im gesamten Dokument
+verwendet wird. Sie hat Einfluss auf die Ausprägung von Titel"~, Teil"~, und
+Kapitelseiten sowie die Überschriften der weiteren Gliederungsebenen.
+%
+\begin{values}{\Option{cd}}
+\itemfalse
+ Diese Einstellung erzeugt das Standard"=Verhalten der \KOMAScript"=Klassen,
+ es wird kein \CD genutzt.
+\itemtrue*[nocolor/monochrome]
+ Das Layout für Titel"~, Teil"~ und Kapitelseiten ist im \CD, es wird
+ schwarze Schrift für Titel, Teil"~ und Kapitelüberschriften verwendet. Die
+ Ausprägung des Seitenkopfes ist abhängig von der Option \Option{cdhead}.
+\item[lightcolor/pale]
+ Die Einstellung entspricht weitestgehend der Option \Option{cd=true},
+ allerdings wird die primäre Hausfarbe \Color{HKS41} für den Kopf des
+ \PageStyle{tudheadings}"=Seitenstils und Überschriften genutzt.
+\item[barcolor]
+ \ChangedAt{v2.04}
+ Zusätzlich zur vorherigen Einstellung wird außerdem der Querbalken farbig
+ abgesetzt.
+\item[bicolor/bichrome]
+ \ChangedAt{v2.03}
+ Der Kopf wird mit einem farbigen Hintergrund in der Hausfarbe gesetzt, auch
+ der Querbalken wird farbig hinterlegt. Für die Überschriften wird die
+ primären Hausfarbe verwendet.
+\item[color]
+ Der Titel sowie Teil"~ und Kapitelseiten werden allesamt farbig gestaltet,
+ der Seitenkopf wird in der primären Hausfarbe \Color{HKS41} gesetzt, der
+ Querbalken erhält Linien als Begrenzung.
+\item[fullcolor/full]
+ \ChangedAt{v2.03}
+ Entspricht der vorherigen Einstellung, allerdings wird der Querbalken nicht
+ durch Linien begrenzt sondern farbig hinterlegt.
+\end{values}
+\end{Declaration}
+
+\begin{Declaration}[v2.06]{\Option{headings=\PSet}}[heavy]
+\printdeclarationlist%
+\index{Schriftstärke}%
+%
+Die Option \Option{headings=\PSet}(\Package{koma-script})'none' wird bereits
+von \KOMAScript{} definiert und dient unter anderem zum Festlegen der Größe von
+Überschriften. Diese wird von \TUDScript erweitert, um im Layout des \CDs die
+Schriftstärke der Überschriften anpassen zu können.
+%
+\begin{values}{\Option{headings}}
+\item[light/normalbold]
+ Die Überschriften werden in fetter Schrift gesetzt.
+\item[heavy/ultrabold]
+ Für Überschriften wird die extra"~fette Schriftstärke verwendet.
+\end{values}
+%
+Die Einstellungen gelten für die Gliederungsebenen bis einschließlich
+\Macro*{subsubsection}.
+\end{Declaration}
+
+
+\subsubsection{Individuelle Einstellungen für einzelne Elemente des Layouts}
+Das Verhalten aller für das Layout relevanten Elemente wird von der eben zuvor
+erläuterten Option \Option{cd=\PSet} bestimmt. Dies betrifft zum einen sowohl
+den Titel~(\Macro{maketitle}) als auch die Umschlagseite~(\Macro{makecover})
+und zum anderen alle Teileseiten
+(%
+ \Macro{part}(\Package{koma-script})'none',
+ \Macro{addpart}(\Package{koma-script})'none'%
+)
+und Kapitelseiten
+(%
+ \Macro{chapter}(\Package{koma-script})'none',
+ \Macro{addchap}(\Package{koma-script})'none'%
+)
+sowie alle darunter liegenden Gliederungsebenen.
+
+Soll ein bestimmtes Element des Layouts abweichend von der allgemeinen
+Einstellung für das gesamte Dokument erscheinen, so kann eine der folgenden
+Optionen genutzt werden, um dieses individuell anzupassen und die mit
+\Option{cd=\PSet} eingestellten Vorgaben für das jeweilige Element zu
+überschreiben.%
+\footnote{%
+ \Option{cdtitle} für den Titel, \Option{cdcover} für die Umschlagseite,
+ \Option{cdpart} für Teile, \Option{cdchapter} für Kapitel sowie
+ \Option{cdsection} für alle darunter liegenden Gliederungsebenen%
+}
+Die gültigen Wertzuweisungen für die einzelnen Elemente entsprechend dabei den
+möglichen Werten für die Option \Option{cd=\PSet}.
+
+Zu beachten ist dabei, dass die verwendete Schrift für die Elemente des Layouts
+abhängig von der Option \Option{cdfont=\PSet} ist. Für Titel- und Umschlagseite
+kann diese direkt über das optionale Argument von \Macro{maketitle} respektive
+\Macro{makecover} geändert werden.
+
+\begin{Declaration}[%
+ v2.03!\Option{cdtitle=bicolor}:%
+ Farbeinsatz nur im Kopf mit farbig abgesetztem Querbalken;
+ v2.03!\Option{cdtitle=fullcolor}:%
+ voller Farbeinsatz mit farbig abgesetztem Querbalken;
+ v2.04!\Option{cdtitle=barcolor}:nur farbig abgesetzter Querbalken;%
+]{\Option{cdtitle=\PSet}}
+\printdeclarationlist%
+\index{Titel|?}%
+%
+Mit der Option \Option{cdtitle} kann die allgemeine Einstellung für den Titel
+überschrieben werden. Es kann zwischen dem normalen (\Option*{cdtitle=false})
+und dem im \CD umgeschaltet werden. Die neue Titelseite unterstützt alle durch
+\KOMAScript{} definierten Befehle für den Titel.%
+\footnote{%
+ \Macro{extratitle}[\Parameter{Schmutztitel}](\Package{koma-script}),
+ \Macro{frontispiece}[\Parameter{Frontispiz}](\Package{koma-script}) für eine
+ Seite vor dem eigentlichen Haupttitel sowie
+ \Macro{titlehead}[\Parameter{Kopf}](\Package{koma-script}),
+ \Macro{subject}[\Parameter{Typisierung}], \Macro{title}[\Parameter{Titel}],
+ \Macro{subtitle}[\Parameter{Untertitel}], \Macro{author}[\Parameter{Autor}],
+ \Macro{and}, \Macro{thanks}[\Parameter{Fußnote}](\Package{koma-script}),
+ \Macro{publishers}[\Parameter{Verlag}](\Package{koma-script}) und
+ \Macro{date}[\Parameter{Datum}] für den Titel selbst sowie
+ \Macro{uppertitleback}[\Parameter{Titelrückseitenkopf}](\Package{koma-script})
+ und
+ \Macro{lowertitleback}[\Parameter{Titelrückseitenfuß}](\Package{koma-script})
+ für die Rückseite des Titels sowie abschließend
+ \Macro{dedication}[\Parameter{Widmung}](\Package{koma-script}) für eine
+ Danksagung.
+}
+Zusätzlich werden viele neue Felder definiert, welche vor allem für eine
+wissenschaftliche Arbeit von Relevanz sind. Genaueres dazu
+ist in \autoref{sec:title} nachzulesen. Unabhängig von der gewählten Variante
+der Titelseite wird diese immer mit \Macro{maketitle} erzeugt.
+\end{Declaration}
+
+\begin{Declaration}[%
+ v2.02;%
+ v2.03!\Option{cdcover=bicolor}:%
+ Farbeinsatz nur im Kopf mit farbig abgesetztem Querbalken;
+ v2.03!\Option{cdcover=fullcolor}:%
+ voller Farbeinsatz mit farbig abgesetztem Querbalken;
+ v2.04!\Option{cdcover=barcolor}:nur farbig abgesetzter Querbalken;%
+]{\Option{cdcover=\PSet}}
+\printdeclarationlist%
+\index{Umschlagseite|?}%
+%
+Die \TUDScript-Klassen führen zusätzlich den Befehl \Macro{makecover} ein, mit
+dem sich neben dem Titel eine separate Umschlagseite erzeugen lässt. Diese ist
+in ihrer Gestalt der Titelseite sehr ähnlich, wird normalerweise jedoch in
+einem anderen Satzspiegel als dem des Buchblocks gesetzt. Mit der Option
+\Option{cdcover} kann~-- unabhängig von \Option{cd=\PSet}~-- das Aussehen der
+Umschlagseite geändert werden. Wird \Option*{cdcover=false} gewählt, entspricht
+die Umschlagseite dem originalen \KOMAScript-Titel. Die Verwendung des Befehls
+\Macro{makecover} sowie die dazugehörigen Parameter werden detailliert in
+\autoref{sec:title} erläutert.
+\end{Declaration}
+
+\begin{Declaration}[%
+ v2.03!\Option{cdpart=bicolor}:%
+ Farbeinsatz nur im Kopf mit farbig abgesetztem Querbalken;
+ v2.03!\Option{cdpart=fullcolor}:%
+ voller Farbeinsatz mit farbig abgesetztem Querbalken;
+ v2.04!\Option{cdpart=barcolor}:nur farbig abgesetzter Querbalken;%
+]{\Option{cdpart=\PSet}}
+\printdeclarationlist%
+\index{Layout!Teileseiten|?}%
+%
+Für die Teileseiten kann der Wert des Schlüssels \Option{cd=\PSet} separat
+überschrieben und somit deren Layout respektive Erscheinungsbild beeinflusst
+werden, welches bei der Benutzung der Befehle
+\Macro{part}(\Package{koma-script})'none' und
+\Macro{addpart}(\Package{koma-script})'none' sowie deren Sternversionen
+verwendet wird. In \autoref{sec:part} sind weitere Hinweise zur Teileseite im
+\CD zu finden.
+\end{Declaration}
+
+\begin{Declaration}[%
+ v2.03!\Option{cdchapter=bicolor}:%
+ Farbeinsatz nur im Kopf mit farbig abgesetztem Querbalken;
+ v2.03!\Option{cdchapter=fullcolor}:%
+ voller Farbeinsatz mit farbig abgesetztem Querbalken;
+ v2.04!\Option{cdchapter=barcolor}:nur farbig abgesetzter Querbalken;%
+]{\Option{cdchapter=\PSet}}
+\printdeclarationlist%
+\index{Layout!Kapitelseiten|?}%
+%
+Für Kapitelseiten kann der Schlüsselwert \Option{cd=\PSet} ebenfalls angepasst
+und damit das Layout respektive Erscheinungsbild geändert werden, das bei der
+Verwendung von \Macro{chapter}(\Package{koma-script})'none' beziehungsweise
+\Macro{addchap}(\Package{koma-script})'none' und den dazugehörigen
+Sternversionen genutzt wird. Weitere Hinweise zur Kapitelseite im \CD sind in
+\autoref{sec:chapter} zu finden.
+\end{Declaration}
+
+\begin{Declaration}[v2.05]{\Option{cdsection=\PSet}}
+\printdeclarationlist%
+%
+Für Überschriften der weiteren Gliederungsebenen
+\Macro{section}(\Package{koma-script})'none',
+\Macro{subsection}(\Package{koma-script})'none',
+\Macro{subsubsection}(\Package{koma-script})'none' sowie
+\Macro{paragraph}(\Package{koma-script})'none' und
+\Macro{subparagraph}(\Package{koma-script})'none'
+werden in der primären Hausfarbe \Color{HKS41} ausgegeben, falls über die
+Option \Option{cd=\PSet} eine farbige Ausprägung des Layouts eingestellt wurde.
+Mit der Angabe von \Option*{cdsection=true} erscheinen die Überschriften der
+genannten Gliederungsebenen ohne Farbeinsatz.
+\end{Declaration}
+%
+\begin{Example}
+Soll die Titelseite in Farbe, der Rest des Dokumentes allerdings in schwarzer
+Schrift gesetzt werden, so kann dies folgendermaßen erreicht werden:
+\begin{Code}[escapechar=§]
+\documentclass[cd=true,cdtitle=color]{§\PName{Dokumentklasse}§}
+\end{Code}
+\index{Layout!Farben|)}%
+\index{Layout!Seitenstil|)}%
+\end{Example}
+
+
+\subsubsection{Die vertikale Position der Überschriften}
+\begin{Declaration}[v2.05]{\Option{pageheadingsvskip=\PName{Längenwert}}}
+\begin{Declaration}[v2.05]{\Option{headingsvskip=\PName{Längenwert}}}
+\printdeclarationlist%
+\index{Layout!Teileseiten|?}%
+\index{Layout!Kapitelseiten|?}%
+%
+Mit diesen beiden Optionen kann die vertikale Position spezieller Überschriften
+verändert werden. Mit der Option \Option{pageheadingsvskip} lässt sich sowohl
+der Titel auf einer Titelseite
+(\KOMAScript-Option \Option{titlepage=true}(\Package{koma-script})'none') als
+auch die Überschriften von separaten Kapitelseiten (\Option{chapterpage=true})
+und Teilen vertikal verschieben. Demgegenüber kann mit der zweiten Option
+\Option{headingsvskip}, sowohl den Titel des Titelkopfes
+(\KOMAScript-Option \Option{titlepage=false}(\Package{koma-script})'none') als
+auch die Kapitelüberschrift bei deaktivierter Kapitelseite
+(\Option{chapterpage=false}) in ihrer vertikalen Position anzupassen.
+
+Die zuvor genannten Überschriften werden normalerweise im Layout relativ tief
+im Textbereich gesetzt. Mit negativen Werten werden die Überschriften nach oben
+verschoben, wobei darauf geachtet werden sollte, dass diese sich danach noch
+innerhalb des Satzspiegels befinden. Positive Werte setzen die Überschriften
+dementsprechend tiefer.
+\index{Layout!Überschriften|)}%
+\end{Declaration}
+\end{Declaration}
+
+
+
+\subsection{Seiten im Stil des \CDs}
+\tudhyperdef*{sec:tudheadings}%
+\index{Layout!Seitenstil|?(}%
+%
+\begin{Declaration}{\Macro{faculty}[\Parameter{Fakultät}]}
+\begin{Declaration}{\Macro{department}[\Parameter{Einrichtung}]}
+\begin{Declaration}{\Macro{institute}[\Parameter{Institut}]}
+\begin{Declaration}{\Macro{chair}[\Parameter{Lehrstuhl}]}
+\begin{Declaration}{\Macro{extraheadline}[\Parameter{Textzeile}]}
+\printdeclarationlist%
+\index{Layout!Kopfzeile}%
+\index{Layout!Querbalken}%
+%
+Für den Seitenstil des \TUDCDs charakteristisch ist die Kopfzeile mit dem
+prägnanten Querbalken. In dieser wird~-- falls angegeben~-- in fetter Schrift
+die Fakultät ausgegeben, danach folgen durch Kommas getrennt die Einrichtung,
+das Institut und der Lehrstuhl beziehungsweise die Professur. Sollte der Platz
+in der ersten Zeile nicht ausreichen, erfolgt ein automatischer Zeilenumbruch.
+
+In besonderen Ausnahmefällen erlaubt das \CD die Angabe einer zusätzlichen
+zweiten beziehungsweise dritten Zeile unterhalb der Angaben des Bereichs an der
+\TnUD, welche weitere, frei wählbare Angaben enthält. Diese kann mit dem Befehl
+\Macro{extraheadline}[\Parameter{Textzeile}] definiert werden.
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+%
+\begin{Declaration}[v2.02]{\PageStyle{tudheadings}}
+\begin{Declaration}[v2.02]{\PageStyle{plain.tudheadings}}
+\begin{Declaration}[v2.02]{\PageStyle{empty.tudheadings}}
+\printdeclarationlist%
+%
+\ChangedAt*{%
+ v2.03:Seitenstile um zweifarbigen Kopf und farbigen Fuß erweitert%
+}
+Ein zentrales Element des \TUDCDs ist der prägnante Seitenkopf mit der Angabe
+von Fakultät~(\Macro{faculty}), Einrichtung~(\Macro{department}),
+Institut~(\Macro{institute}) und Lehrstuhl~(\Macro{chair}) im dazugehörigen
+Querbalken. Durch die Nutzung des Paketes \Package{scrlayer-scrpage} lassen
+sich entweder einzelne Seiten oder auch ganze Dokumente sehr einfach in diesem
+Stil setzen. Dazu muss lediglich mit
+\Macro{pagestyle}[\Parameter{Seitenstil}](\Package{koma-script})'none' einer
+der Seitenstile geladen werden.
+
+Allen Seitenstilen gemein ist der typische Kopf mit dem charakteristischen
+Querbalken, dessen Gestalt für \emph{alle} Seitenstile gleichermaßen über die
+Option \Option{cdhead} angepasst werden kann. Mit dem Befehl \Macro{headlogo}
+lässt sich ein zusätzliches Zweitlogo im Kopfbereich ausgegeben.
+\Attention{%
+ Für die speziellen Layout-Elemente Titel und Umschlagseite sowie Teile- und
+ Kapitelseiten wird die Einstellung von \Option{cdhead} durch die Nutzung der
+ Option~\Option{cd=\PSet} überschrieben.
+}
+
+Die Ausprägung des Fußes unterscheidet sich bei den einzelnen Seitenstilen.
+Dieser ist beim Seitenstil \PageStyle{empty.tudheadings} immer leer. Die beiden
+Stile~-- oder vielmehr das Seitenstil"~Paar~-- \PageStyle{tudheadings} und
+\PageStyle{plain.tudheadings} übernehmen die Einstellungen für die Fußzeile aus
+der Anwenderschnittstelle von \Package{scrlayer-scrpage}.%
+\footnote{%
+ Es können die Befehle
+ \Macro{lefoot}(\Package{scrlayer-scrpage})'none',
+ \Macro{cefoot}(\Package{scrlayer-scrpage})'none' und
+ \Macro{refoot}(\Package{scrlayer-scrpage})'none' sowie
+ \Macro{lofoot}(\Package{scrlayer-scrpage})'none',
+ \Macro{cofoot}(\Package{scrlayer-scrpage})'none' und
+ \Macro{rofoot}(\Package{scrlayer-scrpage})'none' respektive
+ \Macro{ofoot}(\Package{scrlayer-scrpage})'none',
+ \Macro{cfoot}(\Package{scrlayer-scrpage})'none' und
+ \Macro{ifoot}(\Package{scrlayer-scrpage})'none'
+ genutzt werden.%
+}
+Wie die einzelnen Befehle zur Individualisierung der Fußzeile zu verwenden
+sind, kann der \scrguide[\KOMAScript-Anleitung] entnommen werden. Alternativ
+zu einer eigenen Definition der Fußzeile lässt sich außerdem die Option
+\Option{cdfoot} verwenden. Zusätzlich kann über \Macro{footcontent} ein freier
+Inhalt für den Fußbereich definiert werden, mit \Macro{footlogo} ist die
+Ausgabe von einem oder mehreren Logos in diesem möglich. Die verwendete Schrift
+im Fußbereich wird durch das Schriftelement~\Font{tudheadings} festgelegt.
+
+Sobald einer der definierten Stile mit
+\Macro{pagestyle}[\Parameter{Seitentil}](\Package{koma-script})'none' aktiviert
+wurde, sind die beiden Seitenstile \PageStyle{tudheadings} sowie
+\PageStyle{plain.tudheadings} zusätzlich unter den Namen \PageStyle{headings}
+respektive \PageStyle{plain} verwendbar. Dies hat den Vorteil, dass bei
+Optionen oder Befehlen, welche automatisch zwischen den beiden Seitenstilen
+\PageStyle{headings} und \PageStyle{plain} umschalten, durch die einmalige
+Auswahl von einem der \PageStyle{tudheadings}"=Stilen nun zwischen diesen
+umgeschaltet wird.
+
+Der Seitenstil \PageStyle{empty} erzeugt allerdings weiterhin eine komplett
+leere Seite. Soll eine Seite mit der prägnanten Kopfzeile der \TnUD und leerem
+Seitenfuß erschienen, so muss \Macro*{pagestyle}[\PParameter{empty.tudheadings}]
+manuell aufgerufen werden. Um auf das normale Verhalten von \KOMAScript{}
+zurückzuschalten, muss mit \Macro*{pagestyle}[\Parameter{Seitentil}] einer der
+beiden Seitenstile \PageStyle{scrheadings}(\Package{scrlayer-scrpage})'none'
+oder \PageStyle{plain.scrheadings}(\Package{scrlayer-scrpage})'none' aktiviert
+werden.
+\index{Layout!Seitenstil|?)}%
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}[%
+ v2.03;%
+ v2.04!\Option{cdhead=barcolor}:nur farbig abgesetzter Querbalken;%
+ v2.05!\Option{cdhead=date}:Datum zwischen Kopf- und Textbereich;%
+]{\Option{cdhead=\PSet}}[true,nocolor,textwidth]
+\printdeclarationlist%
+\index{Layout!Seitenstil|(}%
+\index{Layout!Kopfzeile}%
+\index{Layout!Querbalken}%
+\index{Datum}%
+%
+Mit dieser Option lassen sich für die \PageStyle{tudheadings}"=Seitenstile
+sowohl die Gestalt des Logos sowie des Querbalkens als auch die darin
+verwendete Schrift beeinflussen. Die folgenden Werte können für eine Anpassung
+der Schriftart im Balken verwendet werden:
+%
+\begin{values}{\Option{cdhead}}
+\itemfalse
+ Sollte mit \Option{cdfont=false} die Verwendung der Hausschrift im Stil des
+ \TUDCDs deaktiviert worden sein, wird die Kopfzeile im Querbalken in den
+ Serifenlosen der aktiven Schrift gesetzt. Ist die Hausschrift aktiviert,
+ hat diese Einstellung keinen Einfluss.
+\itemtrue*[light/lightfont/noheavyfont]
+ Im Querbalken wird für \Macro{faculty} \textcdsn{Open~Sans~Semi"~Bold}
+ verwendet, für \Macro{department}, \Macro{institute},
+ \Macro{chair} und \Macro{extraheadline} kommt \textcdln{Open~Sans~Light} zum
+ Einsatz.
+\item[heavy/heavyfont]
+ Der Inhalt von \Macro{faculty} wird in \textcdbn{Open~Sans~Bold} gesetzt, für
+ die restlichen Felder wird \textcdrn{Open~Sans~Regular} genutzt.
+\end{values}
+%
+Bei der Ausprägung des Kopfes und des Querbalkens gibt es mehrere Varianten.
+Einerseits kann der Querbalken mit zwei Außenlinien dargestellt werden:
+%
+\begin{values}{\Option{cdhead}}
+\item[nocolor/monochrome]
+ Der Kopf und die Linien des Querbalkens erscheinen in schwarzer Farbe.
+\item[lightcolor/pale]
+ Sowohl Kopf als auch Querbalken werden in der primären Hausfarbe gesetzt.
+\end{values}
+%
+Andererseits ist auch eine Darstellung mit mehr Farbeinsatz möglich, bei
+welcher der Querbalken und gegebenenfalls der ganze Seitenkopf farbig
+abgesetzt wird. Dabei erstreckt sich der Kopfbereich immer über die komplette
+Seitenbreite, \seeref{\Option{cdhead=paperwidth}}.
+%
+\begin{values}{\Option{cdhead}}
+\item[barcolor]
+ \ChangedAt{v2.04}
+ Im Gegensatz zur vorherigen Einstellung wird der Querbalken mit farbigem
+ Hintergrund verwendet, der darüber liegende Teil des Kopfes wird ohne
+ farbigen Hintergrund gesetzt.
+\item[bicolor/bichrome]
+ \ChangedAt{v2.03}
+ Die Kopfzeile wird farbig abgesetzt, wobei der Hintergrund des Logos und der
+ Querbalken unterschiedlich ausfallen. Die Außenlinien der Querbalkens
+ entfallen.
+\end{values}
+%
+Für den Fall, dass der Querbalken lediglich mit zwei Außenlinien dargestellt
+wird, kann zusätzlich dessen Laufweite festgelegt werden:
+%
+\begin{values}{\Option{cdhead}}
+\item[textwidth/slim]
+ Der Querbalken im Kopf erstreckt sich nur über den Textbereich. Diese
+ Einstellung ist insbesondere sinnvoll, wenn ein randloser Ausdruck technisch
+ nicht möglich ist.
+\item[paperwidth/wide]
+ Die horizontale Ausdehnung des Querbalkens erstreckt sich über die komplette
+ Seitenbreite bis an den Blattrand. Dieses Verhalten lann im farbigen Layout
+ des Kopfes nicht deaktiviert werden.
+\end{values}
+%
+\ChangedAt{v2.05}
+Neben den zuvor beschriebenen Möglichkeiten zur Gestaltung des Kopfbereiches
+kann auf allen Seiten mit aktiviertem \PageStyle{tudheadings}"=Seitenstil
+unterhalb des Querbalkens das mit \Macro{date} angegebene Datum rechtsbündig
+eingeblendet werden.
+%
+\begin{values}{\Option{cdhead}}
+\item[date/showdate]
+ Das eingestellte Datum wird rechts oberhalb vom Textbereich eingeblendet.
+\item[nodate/hidedate]
+ Es erscheint kein Datum zwischen Kopf- und Textbereich.
+\end{values}
+\end{Declaration}
+
+\begin{Declaration}[%
+ v2.03!\Option{cdfoot=color}:farbiger Hintergrund der Fußzeile;%
+ v2.03!\Option{cdfoot=\PValueName{Höhe}};%
+]{\Option{cdfoot=\PSet}}[false]%
+\printdeclarationlist%
+\index{Layout!Fußzeile}%
+\index{Layout!Kolumnentitel}%
+\index{Satzspiegel!doppelseitig}%
+
+Die \TUDScript-Klassen sind~-- insbesondere aufgrund der Möglichkeit zur
+Verwendung des Paketes \Package{scrlayer-scrpage}~-- bei der Gestaltung der
+Kopf"~ und Fußzeilen sehr flexibel und individuell anpassbar. Die Ausprägung
+und der Inhalt dieser ist nicht explizit durch das \CD vorgegeben und können
+durch den Anwender beliebig gewählt und geändert werden.
+
+Eine Möglichkeit für deren Gestaltung zeigt das Handbuch für das \TUDCD. Dieses
+wird ohne Kopf"~ und mit einer einfachen Fußzeile gesetzt, welche den aktuellen
+Kolumnentitel sowie die Paginierung enthält. Mit \Option{cdfoot} kann diese
+Ausprägung aktiviert werden, was auch für dieses Anwenderhandbuch geschehen ist.
+%
+\begin{values}{\Option{cdfoot}}
+\itemfalse
+ Die Kopf"~ und Fußzeilen zeigen Standardverhalten, zur manuellen Änderung
+ sollte unbedingt das \KOMAScript"=Paket \Package{scrlayer-scrpage} verwendet
+ werden.
+\itemtrue*
+ Die Fußzeilen des Dokumentes werden äquivalent zum Handbuch des \TUDCDs mit
+ lebenden Kolumnentitel und Seitenzahl gesetzt, wobei im doppelseitigen Satz
+ (Klassenoption \Option{twoside=true}(\Package{typearea})'none') die
+ Paginierung außen platziert wird.
+\end{values}
+%
+Wird beim Laden der Klasse respektive des Paketes \Package{scrlayer-scrpage}
+die Option \Option{manualmark}(\Package{scrlayer-scrpage})'none'|declare| nicht
+explizit angegeben, so werden mit \Option{cdfoot=true} über die
+\KOMAScript-Option \Option{automark}(\Package{scrlayer-scrpage})'none'|declare|
+auch gleichzeitig die automatischen Kolumnentitel aktiviert, welche als Marken
+die Titel der Gliederungsebenen verwendet. Genaueres dazu und der Möglichkeit,
+die Kolumnentitel manuell festzulegen, ist dem \scrguide zu entnehmen.
+
+\ChangedAt{v2.03}
+Sollte einer der \PageStyle{tudheadings}"=Seitenstil aktiviert sein und es wird
+auf der erzeugten Seite ein farbiges Layout~-- beispielsweise der zweifarbige
+Kopf (\Option{cdhead=bicolor}) oder ein farbiger Seitenhintergrund~-- genutzt,
+so kann auch die Fußzeile einen farbigen Hintergrund erhalten.
+%
+\begin{values}{\Option{cdfoot}}
+\item[nocolor/monochrome]
+ Der Fuß wird immer ohne farbigen Hintergrund gesetzt.
+\item[color/bicolor/bichrome]
+ Die Fußzeile wird farbig abgesetzt, falls entweder der Kopf in einer farbigen
+ Variante genutzt wird (\seeref{\Option{cdhead}}) oder eine Seite mit einem
+ farbigen Hintergrund in der Hausfarbe (Titel oder Kapitelseite) aktiv ist.
+\end{values}
+%
+Mit den Befehlen \Macro{footlogo}'ppage' und \Macro{footcontent}'ppage' können
+für den Fußbereich zusätzliche Inhalte definiert werden. Sollte der zur
+Verfügung stehende Platz hierfür nicht ausreichen, lässt sich dieser vergrößern.
+%
+\begin{values}{\Option{cdfoot}}
+\item[\PValueName{Höhe}]
+ Wird der Option ein Längenwert übergeben, entspricht dies exakt der
+ Verwendung von Option \Option{extrabottommargin=\PName{Höhe}}.
+\end{values}
+\end{Declaration}
+
+\begin{Declaration}[v2.04]{\Font{tudheadings}}
+\printdeclarationlist%
+\index{Schriftelemente}%
+%
+Im Fußbereich der Seiten im \PageStyle{tudheadings}"=Seitenstil wird das
+Schriftelement~\Font{tudheadings} verwendet. Dieses wirkt sich auf die
+Seitenzahlen, den Kolumnentitel und die mit \Macro{footcontent} angegebenen
+Inhalte aus. Hierüber wird die Wahl der richtigen Schriftfarbe in Abhängigkeit
+vom Seitenhintergrund und den Einstellungen für die Optionen \Option{cdhead}
+sowie \Option{cdfoot} realisiert. Wie \Font{tudheadings} angepasst werden
+kann, ist in \autoref{sec:fonts:elements} zu finden.
+\end{Declaration}
+
+\begin{Declaration}{\Macro{headlogo}[\LParameter\Parameter{Dateiname}]}
+\printdeclarationlist%
+\index{Layout!Kopfzeile}%
+\index{Layout!Zweitlogo|?}%
+\index{Layout!Dresden-concept-Logo@\DDC-Logo}%
+%
+Neben dem Logo der \TnUD darf zusätzlich ein Zweitlogo im Kopf verwendet
+werden. Dieses lässt sich mit diesem Befehl einbinden. Normalerweise wird es
+auf die Höhe der Erstlogos skaliert. Über das optionale Argument können weitere
+Formatierungsbefehle an den im Hintergrund verwendeten Befehl
+\Macro{includegraphics}(\Package{graphicx})'none' durchgereicht werden, um
+beispielsweise die Größe des Zweitlogos anzupassen. Welche Parameter angepasst
+werden können, ist der Dokumentation des \Package{graphicx}"=Paketes zu
+entnehmen.
+
+Sollte die Option \Option{ddc} aktiviert sein, wird das \DDC-Logo nicht im Kopf
+sondern automatisch im Fuß gesetzt. Die Option \Option{ddchead} setzt dieses
+auf jeden Fall im Kopf und überschreibt damit das mit \Macro{headlogo}
+angegebene Zweitlogo.
+\end{Declaration}
+
+\begin{Declaration}[v2.03]{%
+ \Macro{footlogo}[\LParameter\Parameter{Dateinamenliste}]%
+}
+\begin{Declaration}[v2.03]{\Macro{footlogosep}}%
+\printdeclarationlist%
+\index{Layout!Fußzeile}%
+\index{Layout!Drittlogo}%
+\index{Layout!Dresden-concept-Logo@\DDC-Logo}%
+
+Laut den Richtlinien des \CDs dürfen im Fußbereich weitere Logos erscheinen,
+beispielsweise von kooperierenden Unternehmen oder Sponsoren. Die Dateinamen
+der gewünschten Logos können als kommaseparierte Liste im obligatorischen
+Argument des Befehls \Macro{footlogo} angegeben werden. Sollte tatsächlich
+nicht nur ein Dateiname sondern eine Liste übergeben worden sein, so wird bei
+der Ausgabe der Logos zwischen diesen jeweils der in \Macro{footlogosep}
+gespeicherte Separator~-- standardmäßig \Macro*{hfill}~-- gesetzt. Dieser kann
+mit \Macro*{renewcommand*}[\PParameter{\Macro{footlogosep}}\PParameter{\dots}]
+beliebig durch den Anwender angepasst werden. Der Separator wird auch gesetzt,
+falls in \PName{Dateinamenliste} lediglich ein Komma verwendet wurde. Mit
+\Macro{footlogo}[\PParameter{,\PName{Dateiname},}] kann so beispielsweise ein
+Logo zentriert im Fuß gesetzt werden.
+\Attention{%
+ Dabei ist zu beachten, dass ein mit der Option \Option{ddc} beziehungsweise
+ \Option{ddcfoot} gesetztes \DDC-Logo im Fußbereich~-- im Gegensatz zur
+ Verwendung von \Macro{footcontent}~-- überlagert werden könnte. Hier muss der
+ Anwender im Zweifel durch das Einfügen von Separatoren~-- sprich Kommas~-- im
+ Argument von \Macro{footlogo} etwas Formatierungsarbeit leisten.
+}
+
+Das optionale Argument von \Macro{footlogo} wird an
+\Macro{includegraphics}(\Package{graphicx})'none' weitergereicht. Dies
+geschieht für alle angegeben Dateien aus der Liste gleichermaßen. Sollen für
+einzelne Logos individuelle Einstellungen vorgenommen werden, so sind die
+entsprechenden Parameter im obligatorischen Argument nach dem jeweiligen
+Dateinamen mit einem Doppelpunkt~\enquote{\PValue{:}} als Separator
+(\Macro{footlogo}[\PParameter{\PName{Dateiname}:\PName{Parameter}}]) zu
+übergeben, wobei diese \emph{nach} den allgemeinen Einstellungen für alle Logos
+angewendet werden. Die möglichen Parameter und Werte für die optionalen
+Argumente sind der Dokumentation des \Package{graphicx}"=Paketes zu entnehmen.
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}[v2.05]{\Option{footlogoheight=\PName{Längenwert}}}%
+\printdeclarationlist%
+%
+Ohne die Angabe eines optionalen Argumentes bei \Macro{footlogo} für die Größe
+werden alle Logos im Fuß auf die Höhe des Logos der \TnUD skaliert. Dies kann
+global für alle Logos geändert werden, indem die Option
+\Option{footlogoheight=\PName{Längenwert}} gesetzt wird. Sollte die Höhe des
+Fußbereiches nicht ausreichen, um alle Logos in der gewünschten Größe
+darstellen zu können, kann diese über \Option{extrabottommargin=\PName{Höhe}}
+beziehungsweise \Option{cdfoot=\PValueName{Höhe}} angepasst werden.
+\end{Declaration}
+
+\begin{Declaration}[%
+ v2.04;
+ v2.05:Änderung des Inhaltes nur einer Spalte möglich
+]{%
+ \Macro{footcontent}[%
+ \OParameter{Anweisungen}\Parameter{Inhalt}\OParameter{Inhalt}%
+ ]%
+}
+\begin{Declaration}[v2.04]{%
+ \Macro{footcontent*}[%
+ \OParameter{Anweisungen}\Parameter{Inhalt}\OParameter{Inhalt}%
+ ]%
+}
+\printdeclarationlist%
+\index{Layout!Fußzeile}%
+%
+Mit diesem Befehl kann beliebiger Inhalt entweder einspaltig oder zweispaltig
+im Fußbereich der \PageStyle{tudheadings}"=Seitenstile gesetzt werden. In der
+Form \Macro{footcontent}[\Parameter{Inhalt}] wird der Inhalt über die komplette
+Textbreite im Fuß ausgegeben. Wird der Befehl jedoch in der zweiten Variante
+\Macro{footcontent}[\Parameter{linker Inhalt}\OParameter{rechter Inhalt}] mit
+einem optionalen \emph{nach} dem obligatorischen Argument verwendet, so
+erscheint der Fußbereich zweispaltig, wobei der Inhalt aus dem ersten,
+obligatorischen Argument in der linken und der Inhalt aus dem zweiten,
+optionalen Argument entsprechend in der rechten Fußspalte gesetzt wird. Dabei
+wird ein etwaiges \DDC-Logo, welches über die Option \Option{ddc} respektive
+\Option{ddcfoot} gesetzt wurde, beachtet und der für den Text zur Verfügung
+stehende Platz im Fuß reduziert. Mögliche Einstellungen des Paketes
+\Package{scrlayer-scrpage} für den Fuß werden nicht berücksichtigt, hier kann
+es zu Überlagerungen der Inhalte kommen. Gleiches gilt für die Verwendung der
+Werte \PValue{true} und \PValue{false} für die Option \Option{cdfoot}.
+
+\ChangedAt{v2.05}
+Wird an das Argument für die linke oder die rechte Spalte lediglich ein Stern
+\PValue{*} übergeben, so bleibt der bis dahin definierte Inhalt in dieser
+Spalte erhalten. Beispielsweise kann die linke Fußbereichsspalte mit
+\Macro{footcontent}[\Parameter{Inhalt}\POParameter{*}] angepasst werden ohne
+dabei den Inhalt der rechten Spalte zu verändern oder es ließe sich lediglich
+die verwendete Schrift des Fußbereichs bei gleichbleibendem Inhalt mit
+\Macro{footcontent}[\OParameter{Anweisungen}\PParameter{*}\POParameter{*}]%
+anpassen.
+
+Im Fußbereich wird für die Schrift das Schriftelement \Font{tudheadings}
+verwendet. Dabei wird auch die Schriftgröße angepasst, wobei diese sich an der
+Kopfzeile orientiert. Zusätzlich können mit dem ersten optionalen Argument von
+\Macro{footcontent}~-- vor der eigentlichen Ausgabe des Inhaltes~-- zusätzliche
+Schrifteinstellungen respektive \PName{Anweisungen} ausgeführt werden. Soll die
+Definition des Inhalts im Fußbereich \emph{ohne} eine automatische Anpassung
+der Schriftgröße erfolgen, so ist die Sternversion \Macro{footcontent*} zu
+verwenden. Auch hier lässt sich gegebenenfalls das optionale Argument für die
+Schriftformatierung nutzen.
+\ChangedAt{v2.06}
+Zu guter Letzt können bei der Änderung des Inhaltes im Fußbereich auch
+vorherige Anpassungen der Schrift unverändert bleiben, indem mit
+\Macro{footcontent}[\POParameter{*}\Parameter{Inhalt}\OParameter{Inhalt}]
+im optionalen Argument ein Stern verwendet wird.
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}[%
+ v2.02:Logo von \DDC automatisch in Kopf/Fuß;%
+ v2.02!\Option{ddc=colorblack};
+ v2.02!\Option{ddc=gray};
+ v2.02!\Option{ddc=black};
+ v2.02!\Option{ddc=blue};
+ v2.02!\Option{ddc=white};
+]{\Option{ddc=\PSet}}[false]
+\begin{Declaration}[v2.02]{\Option{ddchead=\PSet}}
+\begin{Declaration}[v2.02]{\Option{ddcfoot=\PSet}}
+\printdeclarationlist%
+\index{Layout!Fußzeile}%
+\index{Layout!Kopfzeile}%
+\index{Layout!Zweitlogo}%
+\index{Layout!Dresden-concept-Logo@\DDC-Logo}%
+%
+Diese Option fügt das Logo von \DDC entweder im Kopf oder Fuß der Seiten mit
+dem Stil \PageStyle{tudheadings} ein. Diese wird automatisch entweder im Kopf
+oder~-- falls mit \Macro{headlogo} ein Zweitlogo angegeben wurde~-- im Fuß
+gesetzt.
+
+Alternativ dazu können die Optionen \Option{ddchead} beziehungsweise
+\Option{ddcfoot} genutzt werden, welche das Logo explizit entweder im Kopf oder
+Fuß setzen. Ein mit \Macro{headlogo} angegebenes Zweitlogo wird durch
+\Option{ddchead=\PSet} definitiv unterdrückt, \Option{ddcfoot=\PSet} setzt das
+\DDC-Logo in jedem Fall in den Seitenfuß. Die Verwendung einer der drei
+Optionen führt folglich zur Deaktivierung der anderen beiden.
+
+Das \DDC-Logo wird standardmäßig sowohl im Kopf als auch im Fuß in der gleichen
+Höhe gesetzt, wie das Logo der \TnUD und kann zumindest für den Kopf nicht
+geändert. Wird es im Fuß verwendet, lässt sich die Größe über die Option
+\Option{footlogoheight} ändern. Sollte nach einer Vergrößerung der Darstellung
+die Höhe des Fußbereiches nicht ausreichen, so kann diese über
+\Option{extrabottommargin=\PName{Höhe}} respektive
+\Option{cdfoot=\PValueName{Höhe}} angepasst werden.
+Die möglichen Werte für die drei Schlüssel sind:
+%
+\begin{values}{\Option{ddc}}
+\itemfalse
+ Bei den \PageStyle{tudheadings}"=Seitenstile erscheint kein Logo von \DDC.
+\itemtrue*
+ Das Logo von \DDC wird im Kopf beziehungsweise im Fuß verwendet. Die Wahl der
+ Farbe des Logos geschieht passend zur farblichen Ausprägung der Seite selbst.
+\end{values}
+%
+Die Farbe des \DDC-Logos wird in Abhängigkeit der farblichen Ausprägung des
+Layouts (Option \Option{cd=\PSet}) automatisch gewählt. Dies lässt sich manuell
+ändern:
+%
+\begin{values}{\Option{ddc}}
+\item[color]
+ Im Kopf oder Fuß wird die achtfarbige 4C"~Variante des \DDC-Logos genutzt.
+\item[colorblack]
+ Es wird das achtfarbige Logo mit schwarzem \DDC-Schriftzug anstelle des
+ grauen verwendet. Für den Fuß wird der grüne Claim durch einen schwarzen
+ ersetzt. Dies ist insbesondere für kleine Darstellungen des Logos im Fuß
+ sinnvoll.
+\item[gray/grey]
+ Dies Ausgabe des \DDC-Logos erfolgt in Graustufen.
+\item[black]
+ Verwendung des Logos in Graustufen mit schwarzem Schriftzug.
+\item[blue]
+ Schriftzug und Logo werden in Abstufungen der Hausfarbe \Color{HKS41} gesetzt.
+\item[white]
+ Das \DDC-Logo sowie der dazugehörige Schriftzug sind vollständig weiß.
+\end{values}
+\index{Layout!Seitenstil|)}%
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Environment{tudpage}[\OLParameter{Sprache}]}
+\begin{Declaration}{\Key{\Environment{tudpage}}{language=\PName{Sprache}}}
+\begin{Declaration}{\Key{\Environment{tudpage}}{columns=\PName{Anzahl}}}
+\begin{Declaration}[v2.02]{\Key{\Environment{tudpage}}{pagestyle=\PSet}}
+\begin{Declaration}{\Key{\Environment{tudpage}}{cdfont=\PSet}}{%
+ \seeref{\Option{cdfont}'ppage'}%
+}
+\begin{Declaration}[v2.03]{\Key{\Environment{tudpage}}{cdhead=\PSet}}{%
+ \seeref{\Option{cdhead}'ppage'}%
+}
+\begin{Declaration}[v2.03]{\Key{\Environment{tudpage}}{cdfoot=\PSet}}{%
+ \seeref{\Option{cdfoot}'ppage'}%
+}
+\begin{Declaration}{\Key{\Environment{tudpage}}{headlogo=\PName{Dateiname}}}{%
+ \seeref{\Macro{headlogo}'ppage'}%
+}
+\begin{Declaration}[v2.03]{%
+ \Key{\Environment{tudpage}}{footlogo=\PName{Dateinamenliste}}
+}{\seeref{\Macro{footlogo}'ppage'}}
+\begin{Declaration}[v2.02]{\Key{\Environment{tudpage}}{ddc=\PSet}}{%
+ \seeref{\Option{ddc}'ppage'}%
+}
+\begin{Declaration}[v2.02]{\Key{\Environment{tudpage}}{ddchead=\PSet}}{%
+ \seeref{\Option{ddchead}'ppage'}%
+}
+\begin{Declaration}[v2.02]{\Key{\Environment{tudpage}}{ddcfoot=\PSet}}{%
+ \seeref{\Option{ddcfoot}'ppage'}%
+}
+\printdeclarationlist%
+\index{Layout!Kopfzeile}%
+\index{Layout!Fußzeile}%
+\index{Layout!Seitenstil}%
+%
+Die \Environment{tudpage}"=Umgebung hat ihren Ursprung in einer früheren
+Version, als die \PageStyle{tudheadings}"=Seitenstile noch nicht verfügbar
+waren, welche mittlerweile anstelle dieser Umgebung verwendet werden können.
+Für die \Environment{tudpage}"=Umgebung lassen sich verschiedene Parameter als
+optionales Argument angegeben. Wird das Paket \Package{babel} genutzt, kann die
+genutzte Sprache mit \Key{\Environment{tudpage}}{language=\PName{Sprache}}
+geändert werden, was zur Anpassung der sprachspezifischen Trennungsmuster und
+Bezeichner führt. Wurde das Paket \Package{multicol} geladen, wird mit dem
+Parameter \Key{\Environment{tudpage}}{columns=\PName{Anzahl}} der Inhalt der
+Umgebung mehrspaltig gesetzt. Mit \Key{\Environment{tudpage}}{pagestyle} kann
+der Seitenstil angepasst werden, wobei \PValue{headings}, \PValue{plain} und
+\PValue{empty} gültige Werte sind.
+
+Die weiteren Parameter entsprechen in ihrem Verhalten den gleichnamigen
+Klassenoptionen oder Befehlen, wirken sich jedoch nur innerhalb der
+\Environment{tudpage}"=Umgebung aus. Das Verhalten sowie gültige
+Wertzuweisungen ist auf den angegebenen Seiten dokumentiert.
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+
+\subsection{Der Titel und die Umschlagseite}
+\tudhyperdef*{sec:title}%
+\index{Titel}%
+\index{Umschlagseite}%
+%
+\ChangedAt*{%
+ v2.03:Bugfix für Umschlagseite und Titel beim Satzspiegel%
+}
+%
+Für das Erstellen eines Titels mit dem Befehl \Macro{maketitle} wird mit der
+\KOMAScript-Option
+\Option{titlepage=\PBoolean}(\Package{koma-script})'none'|declare|
+festgelegt, ob dieser in Gestalt einer ganzen Titelseite oder nur als Titelkopf
+erscheinen soll. Für den Titel im \TUDCD werden alle Felder unterstützt, welche
+bereits durch \KOMAScript{} definiert sind. Darüber hinaus werden für die
+\TUDScript-Klassen weitere Felder bereitgestellt, welche Auswirkungen auf die
+Gestalt des Titels haben. Diese werden nachfolgend in diesem \autorefname
+erläutert. Der Titel~-- bestehend aus einem möglichen Schmutztitel
+(\Macro{extratitle}(\Package{koma-script})) inklusive dazugehöriger Rückseite
+(\Macro{frontispiece}[\Parameter{Frontispiz}](\Package{koma-script})), der
+eigentlichen Titelseite respektive des Titelkopfes und der nachgelagerten
+Elementen~-- kann mit \Macro{maketitle} ausgegeben werden. Außerdem kann im
+zweispaltigen Satz \Macro{maketitleonecolumn} verwendet werden, womit eine
+einspaltige Ergänzung nach dem Titel selbst ermöglicht wird.
+
+Zusätzlich zum Titel lässt sich mit \Macro{makecover} eine Umschlagseite
+erzeugen. Diese kann insbesondere für gebundene Arbeiten verwendet werden. Es
+wird~-- im Vergleich zum Titel~-- lediglich einer reduzierte Anzahl an Feldern
+auf dieser ausgegeben.
+
+\begin{Declaration}[%
+ v2.01:Bugfix für Schriftstärke auf Titelseite;%
+ v2.02:Unterstützung der Schriftelemente \Font*{titlehead},
+ \Font*{subject}, \Font*{title}, \Font*{subtitle}, \Font*{author},
+ \Font*{date}, \Font*{publishers}, \Font*{dedication},
+ \Font*{titlepage} und \Font*{thesis}%
+]{\Macro{maketitle}[\OLParameter{Seitenzahl}]}
+\begin{Declaration}[v2.02]{%
+ \Key{\Macro{maketitle}}{pagenumber=\PName{Seitenzahl}}%
+}
+\begin{Declaration}[v2.06]{\Key{\Macro{maketitle}}{cdgeometry=\PSet}}{%
+ \seeref{\Option{cdgeometry}'ppage'}%
+}
+\begin{Declaration}[v2.02]{\Key{\Macro{maketitle}}{cdfont=\PSet}}{%
+ \seeref{\Option{cdfont}'ppage'}%
+}
+\begin{Declaration}[v2.03]{\Key{\Macro{maketitle}}{cdhead=\PSet}}{%
+ \seeref{\Option{cdhead}'ppage'}%
+}
+\begin{Declaration}[v2.03]{\Key{\Macro{maketitle}}{cdfoot=\PSet}}{%
+ \seeref{\Option{cdfoot}'ppage'}%
+}
+\begin{Declaration}[v2.03]{%
+ \Key{\Macro{maketitle}}{headlogo=\PName{Dateiname}}%
+}{\seeref{\Macro{headlogo}'ppage'}}
+\begin{Declaration}[v2.03]{%
+ \Key{\Macro{maketitle}}{footlogo=\PName{Dateinamenliste}}
+}{\seeref{\Macro{footlogo}'ppage'}}
+\begin{Declaration}[v2.03]{\Key{\Macro{maketitle}}{ddc=\PSet}}{%
+ \seeref{\Option{ddc}'ppage'}%
+}
+\begin{Declaration}[v2.03]{\Key{\Macro{maketitle}}{ddchead=\PSet}}{%
+ \seeref{\Option{ddchead}'ppage'}%
+}
+\begin{Declaration}[v2.03]{\Key{\Macro{maketitle}}{ddcfoot=\PSet}}{%
+ \seeref{\Option{ddcfoot}'ppage'}%
+}
+\printdeclarationlist%
+\index{Titel|!(}%
+\index{Satzspiegel!doppelseitig}%
+%
+Der Befehl \Macro{maketitle} setzt für \Option{cdtitle=false} den normalen
+\KOMAScript"=Titel{}, ansonsten wird die Titelseite im \TUDCD erzeugt. Die
+letztere Variante ist im Vergleich zum Standardtitel um eine Vielzahl von
+Feldern erweitert worden und erlaubt insbesondere die Angabe von Daten für das
+Deckblatt einer akademischen Abschlussarbeit. Die einzelnen Felder werden
+später in diesem \autorefname erläutert. Wird das Dokument doppelseitig und mit
+rechts öffnenden Kapiteln gesetzt,%
+\footnote{%
+ \KOMAScript-Optionen \Option{twoside=true}(\Package{typearea})'none' und
+ \Option{open=right}(\Package{koma-script})'none', Standard für
+ \Class{tudscrbook}%
+}
+so wird zusätzlich die Option \Option{cleardoublespecialpage} einbezogen. Dies
+ist insbesondere bei den Befehlen \Macro{uppertitleback}(\Package{koma-script})
+respektive \Macro{lowertitleback}(\Package{koma-script}) für die Titelrückseite
+zu beachten.
+
+Das optionale Argument erlaubt~-- ebenso wie bei den \KOMAScript"=Klassen~--
+die Änderung der Seitenzahl der Titelseite. Diese wird jedoch nicht ausgegeben,
+sondern beeinflusst lediglich die Zählung. Sie sollten hier unbedingt eine
+ungerade Zahl wählen, da sonst die gesamte Zählung durcheinander gerät.
+Wird eine Titelseite
+(\KOMAScript-Option \Option{titlepage=true}(\Package{koma-script})'none') im
+\TUDCD gesetzt (\Option{cdtitle=true}), können auch die weiterhin aufgeführten
+Parameter im optionalen Argument verwendet werden. Diese entsprechen in ihrem
+Verhalten den gleichnamigen Optionen respektive Befehlen, wirken sich jedoch
+nur lokal und einzig auf die Titelseite aus. So kann beispielsweise die Nutzung
+eines \DDC-Logos auf den Titel beschränkt bleiben.
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{%
+ \Macro{maketitleonecolumn}[%
+ \OLParameter{Seitenzahl}\Parameter{Einspaltentext}%
+ ]%
+}
+\printdeclarationlist%
+\index{Satzspiegel!doppelseitig}%
+\index{Satzspiegel!zweispaltig}%
+%
+Im zweispaltigen Satz
+(Klassenoption~\Option{twocolumn}(\Package{typearea})'none'|declare|) wird mit
+\Macro{maketitle} die Titelseite selbst immer einspaltig gesetzt. Direkt nach
+dem Titel folgt normalerweise der zweispaltige Fließtext. Mit dem Befehl
+\Macro{maketitleonecolumn} kann nach dem Titel zusätzlich weiterer Inhalt~--
+zum Beispiel eine Zusammenfassung respektive eine Kurzfassung~-- einspaltig
+gesetzt werden.
+
+Bei einer aktivierten Titelseite
+(\KOMAScript-Option~\Option{titlepage=true}(\Package{koma-script})'none')
+erfolgt die Ausgabe des Argumentes \Parameter{Einspaltentext} direkt nach
+dieser auf einer oder gegebenenfalls mehreren neuen Seiten ebenfalls
+einspaltig. Wird der Befehl \Macro{maketitleonecolumn} statt mit einer
+Titelseite jedoch mit einem Titelkopf
+(\KOMAScript-Option~\Option{titlepage=false}(\Package{koma-script})'none') zum
+Einsatz, so folgt diesem die einspaltige Textpassage aus dem obligatorischen
+Argument direkt, wobei gegebenenfalls bei entsprechendem Inhalt ein
+automatischer Seitenumbruch erfolgt. Danach wird direkt und ohne zusätzlichen
+Umbruch auf das zweispaltige Layout umgeschaltet.
+
+Der optionale Parameter von \Macro{maketitleonecolumn} kann äquivalent zu
+\Macro{maketitle} für die Änderung der Seitenzahl, der verwendeten Schrift
+sowie zur Anpassung von Kopf und Fuß verwendet werden. Dabei ist zu beachten,
+dass ein Großteil der Parameter nur Auswirkungen haben, falls eine Titelseite
+(\KOMAScript-Option \Option{titlepage=true}(\Package{koma-script})'none')
+verwendet wird.
+\end{Declaration}
+
+\begin{Declaration}[%
+ v2.02:Umschlagseite für Layout ohne \noexpand\CD hinzugefügt;%
+ v2.02:Unterstützung der Schriftelemente \Font*{titlehead},
+ \Font*{subject}, \Font*{title}, \Font*{subtitle}, \Font*{author},
+ \Font*{publishers}, \Font*{titlepage} und \Font*{thesis}%
+]{\Macro{makecover}[\OLParameter{Seitenzahl}]}
+\begin{Declaration}[v2.02]{%
+ \Key{\Macro{makecover}}{pagenumber=\PName{Seitenzahl}}%
+}
+\begin{Declaration}{\Key{\Macro{makecover}}{cdgeometry=\PBoolean}}
+\begin{Declaration}[v2.02]{\Key{\Macro{makecover}}{cdfont=\PSet}}{%
+ \seeref{\Option{cdfont}'ppage'}%
+}
+\begin{Declaration}[v2.03]{\Key{\Macro{makecover}}{cdhead=\PSet}}{%
+ \seeref{\Option{cdhead}'ppage'}%
+}
+\begin{Declaration}[v2.03]{\Key{\Macro{makecover}}{cdfoot=\PSet}}{%
+ \seeref{\Option{cdfoot}'ppage'}%
+}
+\begin{Declaration}[v2.03]{%
+ \Key{\Macro{makecover}}{headlogo=\PName{Dateiname}}%
+}{\seeref{\Macro{headlogo}'ppage'}}
+\begin{Declaration}[v2.03]{%
+ \Key{\Macro{makecover}}{footlogo=\PName{Dateinamenliste}}
+}{\seeref{\Macro{footlogo}'ppage'}}
+\begin{Declaration}[v2.03]{\Key{\Macro{makecover}}{ddc=\PSet}}{%
+ \seeref{\Option{ddc}'ppage'}%
+}
+\begin{Declaration}[v2.03]{\Key{\Macro{makecover}}{ddchead=\PSet}}{%
+ \seeref{\Option{ddchead}'ppage'}%
+}
+\begin{Declaration}[v2.03]{\Key{\Macro{makecover}}{ddcfoot=\PSet}}{%
+ \seeref{\Option{ddcfoot}'ppage'}%
+}
+\printdeclarationlist%
+\index{Umschlagseite|!(}%
+%
+Eine Umschlagseite wird zumeist für gebundene Abschlussarbeiten verlangt, um
+diese beispielsweise für einen Prägedruck auf dem Buchdeckel zu verwenden.
+Deshalb ist die farbige Ausprägung der Umschlagseite auch deaktiviert, wenn
+diese für das restliche Dokument aktiv ist (\Option{cd=color}). Dies kann
+jedoch jederzeit mit \Option{cdcover=\PSet} überschrieben werden.
+
+Wird \Option{cdcover=true} gewählt, so wird die Umschlagseite im \TUDCD
+gesetzt. Auf dieser werden der Titel des Dokumentes, die Typisierung
+durch \Macro{thesis} und/oder \Macro{subject} sowie der Autor oder respektive
+die Autoren und gegebenenfalls der mit \Macro{publishers}(\Package{koma-script})
+angegebene Verlag ausgegeben.
+\ChangedAt{v2.02}
+Für die Einstellung \Option{cdcover=false} wird lediglich der normale
+\KOMAScript"=Titel als separate Umschlagseite ausgegeben.
+
+Die Titelseite selbst gehört immer zum Buchblock und sollte daher im gleichen
+Satzspiegel gesetzt werden. Dem entgegen steht die Umschlagseite, welche
+zumeist in einem anderen Layout erscheint. Normalerweise wird das Cover~--
+unabhängig von der Option \Option{cdgeometry}~-- im asymmetrischen Satzspiegel
+des \CDs gesetzt. Mit \Key*{\Macro{makecover}}{cdgeometry=false} im optionalen
+Argument kann das Verhalten geändert werden. In diesem Fall erscheint auch die
+Umschlagseite im Buchblock des restlichen Dokumentes. Allerdings können für
+diese Einstellung die Seitenränder mit den Befehlen
+\Macro{coverpagetopmargin}(\Package{koma-script})'none',
+\Macro{coverpageleftmargin}(\Package{koma-script})'none',
+\Macro{coverpagerightmargin}(\Package{koma-script})'none' sowie
+\Macro{coverpagebottommargin}(\Package{koma-script})'none'
+durch den Nutzer frei angepasst werden. Mehr dazu ist im \scrguide zu finden.
+
+Außerdem kann mit dem optionalen Argument die Seitenzahl der Umschlagseite
+geändert werden. Diese wird jedoch nicht ausgegeben, sondern beeinflusst
+lediglich die Zählung. Sie sollten hier unbedingt eine ungerade Zahl wählen, da
+sonst die gesamte Zählung durcheinander gerät. Die weiterhin aufgeführten
+Parameter entsprechen in ihrem Verhalten beziehungsweise ihrer Funktion den
+gleichnamigen Optionen respektive Befehlen, wirken sich jedoch nur lokal und
+einzig auf die Umschlagseite aus.
+\index{Umschlagseite|!)}%
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Macro{title}[\Parameter{Titel}]}
+\begin{Declaration}[%
+ v2.01:Bugfix für Schriftstärke bei Verwendung des Untertitels%
+]{\Macro{subtitle}[\Parameter{Untertitel}]}
+\printdeclarationlist%
+\index{Titel!Felder|(}%
+%
+Die Befehle \Macro{title} und \Macro{subtitle} sind selbsterklärend. Anzumerken
+ist, dass die Schriftstärke des Titels von der Option \Option{headings} abhängt
+und der Untertitel immer im fetten Schnitt erscheint.
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}[v2.02]{\Font{titlepage}}
+\begin{Declaration}[v2.02]{\Font{thesis}}
+\begin{Declaration}[v2.06]{\Macro{raggedtitle}}
+\printdeclarationlist%
+\index{Schriftelemente}%
+%
+Die \TUDScript-Klassen definieren diese neuen Schriftelemente. Dabei wird
+\Font{titlepage} auf der Titelseite für alle Felder verwendet, welche kein
+spezielles Schriftelement verwenden, welches ohnehin durch \KOMAScript{}
+bereitgestellt wird. Das mit \Macro{thesis} angegebene Feld, in welchem der Typ
+einer Abschlussarbeit angegeben wird, nutzt das Schriftelement~\Font{thesis}.
+
+\ChangedAt{v2.02}
+Für alle Felder des Titels und der Umschlagseite lassen sich die verwendeten
+Schriften anpassen. In \autoref{sec:fonts:elements} lässt sich nachlesen, wie
+dies genau funktioniert. Dabei werden für Titel und Umschlagseite sowohl die
+bereits durch \KOMAScript{} bereitgestellten Schriftelemente
+\Font{titlehead}(\Package{koma-script})'none',
+\Font{subject}(\Package{koma-script})'none',
+\Font{title}(\Package{koma-script})'none',
+\Font{subtitle}(\Package{koma-script})'none',
+\Font{author}(\Package{koma-script})'none',
+\Font{publishers}(\Package{koma-script})'none',
+\Font{date}(\Package{koma-script})'none' und
+\Font{dedication}(\Package{koma-script})'none'
+als auch die neuen \Font{titlepage} und \Font{thesis} unterstützt.
+\ChangedAt{v2.06}
+Der Befehl \Macro{raggedtitle} definiert die Ausrichtung des Titels, welcher
+standardmäßig linksbündig gesetzt wird.
+\begin{Example}
+Um die Einträge auf der Titelseite zentriert auszugeben, genügt folgende
+Definition:
+\begin{Code}
+\let\raggedtitle\centering
+\end{Code}
+\end{Example}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Macro{author}[\Parameter{Autor(en)}]}
+\begin{Declaration}{\Macro{authormore}[\Parameter{Autorenzusatz}]}
+\begin{Declaration}[%
+ v2.02;%
+ v2.05:optionales Argument zur Formatierung mit \Macro*{hypersetup};%
+ v2.06:wird für alle Klassen bereitgestellt, Verwendung im Titel möglich%
+]{%
+ \Macro{emailaddress}[\OParameter{Einstellungen}\Parameter{E-Mail-Adresse}]%
+}
+\begin{Declaration}[%
+ v2.05;%
+ v2.06:wird für alle Klassen bereitgestellt, Verwendung im Titel möglich%
+]{\Macro{emailaddress*}[\Parameter{E-Mail-Adresse}]}
+\begin{Declaration}{\Macro{dateofbirth}[\Parameter{Geburtsdatum}]}
+\begin{Declaration}{\Macro{placeofbirth}[\Parameter{Geburtsort}]}
+\begin{Declaration}{\Macro{matriculationnumber}[\Parameter{Matrikelnummer}]}
+\begin{Declaration}{\Macro{matriculationyear}[\Parameter{Immatrikulationsjahr}]}
+\begin{Declaration}[%
+ v2.05:Für Titel verwendbar%
+]{\Macro{course}[\Parameter{Studiengang}]}
+\begin{Declaration}[%
+ v2.02;%
+ v2.05:Für Titel verwendbar%
+]{\Macro{discipline}[\Parameter{Studienrichtung}]}
+\printdeclarationlist%
+\index{Autorenangaben|?}%
+\index{Kollaboratives Schreiben}%
+\index{Datum!Geburtsdatum|?}%
+%
+Mit dem Befehl \Macro{author} wird der Autor angegeben. Innerhalb des
+Argumentes können auch mehrere Autoren aufgeführt werden, wobei diese in diesem
+Fall jeweils mit \Macro{and} zu trennen sind. Alle weiteren hier vorgestellten
+Befehle können selbst im Argument von \Macro{author} verwendet werden, wodurch
+für jeden Autor individuelle Angaben möglich sind.
+
+Mit \Macro{authormore} wird unter dem Autor eine Zeile ausgegeben, welche
+durch den Anwender frei belegt werden kann. Mit \Macro{emailaddress} kann für
+jeden Autor eine E"~Mail"=Adresse angegeben werden, welche als Hyperlink
+definiert wird, falls das Paket \Package{hyperref} geladen wurde. Das optionale
+Argument wird an \Macro{hypersetup}(\Package{hyperref})'none' aus besagtem
+Paket übergeben und kann somit für zusätzliche Einstellungen genutzt werden.
+Mit der Sternversion \Macro{emailaddress*} erfolgt keine Formatierung des
+Eintrags im Argument.
+
+Sollte das Paket \Package{isodate} oder \Package{datetime2} geladen sein, wird
+die damit eingestellte Formatierung des Datums durch \Macro{dateofbirth}~-- wie
+übrigens bei jedem anderem Datumsfeld der \TUDScript-Klassen auch~-- für das
+Geburtsdatum auf dem Titel verwendet. Hierfür wird entweder
+\Macro{printdate}(\Package{isodate})'none' von \Package{isodate} oder
+\Macro{DTMDate}(\Package{datetime2})'none' aus \Package{datetime2} genutzt. Mit
+dem Befehl \Macro{placeofbirth} lässt sich zusätzlich ein Geburtsort angeben.
+
+Die weiteren Befehle als zusätzliche Angabe erklären sich quasi von selbst.
+Anzumerken ist, dass die mit den Befehlen \Macro{matriculationnumber},
+\Macro{matriculationyear}, \Macro{course} sowie \Macro{discipline} gemachten
+Angaben ebenfalls vom Paket \Package{tudscrsupervisor} innerhalb der
+\Environment{task}(\Package{tudscrsupervisor})"=Umgebung genutzt werden, falls
+diese denn zum Einsatz kommt.
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Macro{and}}
+\printdeclarationlist%
+\index{Kollaboratives Schreiben|?}%
+%
+Dieser Befehl wird sowohl bei den \hologo{LaTeX}"=Standardklassen als auch bei
+den \KOMAScript"=Klassen lediglich auf der Titelseite dazu verwendet, mehrere
+Autoren im Argument von \Macro{author} voneinander zu trennen.
+
+Bei den \TUDScript-Klassen hingegen ist dieser Befehl derart in seiner Funktion
+erweitert worden, dass damit die Angabe einer kollaborativen Autorenschaft für
+Abschlussarbeiten innerhalb des Befehls \Macro{author} möglich ist. Außerdem
+kann er noch im Argument von \Macro{supervisor}, \Macro{referee} sowie
+\Macro{advisor} verwendet werden, um mehrere Betreuer beziehungsweise Gutachter
+und Fachreferenten anzugeben. Er ist dabei nicht auf die Verwendung für den
+Titel allein beschränkt sondern kann auch bei der Angabe von Personen in den
+entsprechenden Feldern der Umgebungen
+\begin{Bundle}{\Package{tudscrsupervisor}}
+\Environment{task}, \Environment{evaluation} und \Environment{notice}
+\end{Bundle}
+aus dem Paket \Package{tudscrsupervisor} eingesetzt werden.
+\end{Declaration}
+%
+\begin{Example}
+Angenommen, es soll eine Abschlussarbeit von zwei unterschiedlichen Autoren in
+kollaborativer Gemeinschaft erstellt werden, so lässt sich die Autorenangaben
+folgendermaßen gestalten:
+\begin{Code}
+\author{%
+ Mickey Mouse%
+ \matriculationnumber{12345678}%
+ \dateofbirth{2.1.1990}%
+ \placeofbirth{Dresden}%
+\and%
+ Donald Duck%
+ \matriculationnumber{87654321}%
+ \dateofbirth{1.2.1990}%
+ \placeofbirth{Berlin}%
+}
+\matriculationyear{2010}
+\end{Code}
+Alle zusätzlichen Angaben außerhalb des Argumentes von \Macro{author} werden
+für beide Autoren gleichermaßen übernommen. Angaben innerhalb des Argumentes
+von \Macro{author} werden den jeweiligen, mit \Macro{and} getrennten Autoren
+zugeordnet. Mehr dazu ist im Minimalbeispiel in \autoref{sec:exmpl:thesis}.
+\end{Example}
+
+\begin{Declaration}[%
+ v2.05:Angabe von Parametern für Prä- und Suffix bei Datumsausgabe möglich;
+]{\Macro{date}[\OLParameter{Suffix}\Parameter{Datum}]}
+\begin{Declaration}[v2.05]{%
+ \Macro{date*}[\OLParameter{Suffix}\Parameter{Datum}]%
+}
+\begin{Declaration}[v2.05]{%
+ \Key{\Macro{date}}{before=\PName{Präfix}}%
+}
+\begin{Declaration}[v2.05]{%
+ \Key{\Macro{date}}{after=\PName{Suffix}}%
+}
+\begin{Declaration}[v2.05]{%
+ \Key{\Macro{date}}{place=\PName{Ort}}%
+}
+\begin{Declaration}{\Macro{defensedate}[\Parameter{Verteidigungsdatum}]}
+\printdeclarationlist%
+\index{Datum|?}%
+\index{Datum!Abgabedatum|?}%
+\index{Datum!Verteidigungsdatum|?}%
+%
+Mit dem Befehl \Macro{date} lässt sich das Datum angegeben.
+\ChangedAt{v2.05}
+Über das optionale Argument können die beiden Parameter
+\Key{\Macro{date}}{before} und \Key{\Macro{date}}{after} genutzt werden, um
+ergänzende Angaben vor beziehungsweise nach dem eigentlichen Datum auszugeben.
+Die Sternversion \Macro{date*} setzt den mit \Macro{place} angegebenen Ort vor
+das Datum. Dies geschieht auch für die normale Version von \Macro{date}, wenn
+der Parameter \Key{\Macro{date}}{place} verwendet wird.
+
+Das Datum wird bei normalen Dokumenten direkt nach dem Autor respektive den
+Autoren ausgegeben. Bei Abschlussarbeiten~-- aktiviert durch die Verwendung von
+\Macro{thesis} oder \Option{subjectthesis} in Verbindung mit \Macro{subject}~--
+erscheint dieses am Ende der Titelseite als Abgabedatum. Außerdem kann in
+diesem Fall mit dem Befehl\Macro{defensedate} das Datum der Verteidigung
+angegeben werden, wie es beispielsweise bei dem Druck von Dissertationen üblich
+ist.
+
+Sollte eines der Pakete \Package{isodate} oder \Package{datetime2} geladen
+sein, so wird mit \Macro{printdate}(\Package{isodate})'none' beziehungsweise
+\Macro{DTMDate}(\Package{datetime2})'none' die durch das jeweilige Paket
+eingestellte Ausgabeformatierung des Datums für alle Datumsfelder des
+Dokumentes und folglich auch für die beiden Felder \Macro{date} und
+\Macro{defensedate} verwendet.
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Macro{thesis}[\Parameter{Typisierung}]}
+\begin{Declaration}{\Macro{subject}[\Parameter{Typisierung}]}
+\printdeclarationlist%
+\index{Abschlussarbeit|!}%
+\index{Typisierung}%
+%
+Mit diesen beiden Befehlen kann der Typ der Dokumentes beziehungsweise der
+Abschlussarbeit angegeben werden. Während der Befehl \Macro{thesis} den Inhalt
+des Feldes unter dem Titel vertikal zentriert auf der Titelseite ausgibt,
+erscheint der Inhalt des Befehls \Macro{subject} oberhalb des Titels. Es können
+auch beide Befehle parallel mit unterschiedlichen Inhalten verwendet werden.
+Der Befehl \Macro{thesis} dient den \TUDScript"=Dokumentklassen außerdem zur
+Erkennung von Abschlussarbeiten gedacht, da für diese spezielle Felder
+bereitgehalten werden und auch die Titelseite leicht geändert gesetzt wird.
+
+Des Weiteren ist es bei beiden Befehlen möglich, spezielle Werte als Argument
+zur Typisierung des Dokumentes zu verwenden. Diese werden entsprechend der
+gewählten Dokumentensprache~-- entweder Deutsch oder Englisch~-- entschlüsselt
+und gesetzt. Die möglichen Werte sind \autoref{tab:thesis} zu entnehmen. Dabei
+ist zu beachten, dass das Setzen eines speziellen Wertes für \emph{entweder}
+\Macro{thesis} \emph{oder} \Macro{subject} möglich ist. Die Verwendung eines
+der genannten Werte führt immer dazu, dass das Dokument als Abschlussarbeiten
+erkannt und die erweiterte Titelseite aktiviert wird. Gleichzeitig wird damit
+die Option \Option{subjectthesis} beeinflusst. Sollte vom Anwender kein
+explizites Verhalten für \Option{subjectthesis} definiert sein, so führt die
+Verwendung von \Macro{thesis}[\Parameter{Wert}] zu \Option{subjectthesis=false}
+und \Macro{subject}[\Parameter{Wert}] zu \Option{subjectthesis=true}.
+%
+\begin{table}
+\index{Bezeichner}%
+\index{Typisierung}%
+\caption{%
+ Spezielle Werte zur Typisierung des Dokumentes für
+ \Macro{thesis} und \Macro{subject}%
+}%
+\label{tab:thesis}%
+%
+\centering%
+\newcommand*\typecast[2]{%
+ \PValue{#1} & \Term{#2} & \csuse{#2} & \selectlanguage{english}\csuse{#2}
+ \tabularnewline%
+}%
+\begin{tabular}{llll}
+ \toprule
+ \textbf{Wert} & \textbf{Bezeichner} & \textbf{Deutsch} & \textbf{Englisch}
+ \tabularnewline
+ \midrule
+ \typecast{diss}{dissertationname}
+ \typecast{doctoral}{dissertationname}
+ \typecast{phd}{dissertationname}
+ \typecast{diploma}{diplomathesisname}
+ \typecast{master}{masterthesisname}
+ \typecast{bachelor}{bachelorthesisname}
+ \typecast{student}{studentthesisname}
+ \typecast{evidence}{studentresearchname}
+ \typecast{project}{projectpapername}
+ \typecast{seminar}{seminarpapername}
+ \typecast{term}{termpapername}
+ \typecast{research}{researchname}
+ \typecast{log}{logname}
+ \typecast{report}{reportname}
+ \typecast{internship}{internshipname}
+ \bottomrule
+\end{tabular}
+\end{table}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Option{subjectthesis=\PBoolean}}%
+ [false][\Macro{subject}[\Parameter{\autoref{tab:thesis}}]:true]
+\printdeclarationlist%
+%
+Der Befehl \Macro{thesis} dient den \TUDScript"=Hauptklassen zur Unterscheidung
+zwei unterschiedlicher Ausprägungen der Titelseite und ist speziell für
+Abschlussarbeiten gedacht. Außerdem kann bei der Nutzung spezieller Werte
+aus \autoref{tab:thesis} innerhalb des Argumentes von \Macro{subject} ebenfalls
+das Verhalten für Abschlussarbeiten aktiviert werden, wobei hierdurch die
+Einstellung \Option{subjectthesis=true} automatisch vorgenommen wird.
+
+Für den Standardfall~-- bekanntlich \Option{subjectthesis=false}~-- wird der
+durch \Macro{thesis} gegebene Typ der Abschlussarbeit sowie der gegebenenfalls
+durch \Macro{graduation} gesetzte angestrebte Abschluss in großen Lettern und
+sehr zentral auf der Titelseite gesetzt. Die Verwendung von \Macro{subject} ist
+hierbei weiterhin möglich.
+%
+Wird die Option mit \Option{subjectthesis=true} aktiviert, so wird die mit
+\Macro{thesis} gesetzte Bezeichnung nicht unterhalb sondern oberhalb des Titels
+an der Stelle von \Macro{subject} ausgegeben. Der mit \Macro{graduation}
+angegebene Abschluss wird weiterhin unter dem Titel, allerdings in schlankerer
+Schrift gesetzt. Eine etwaige Verwendung des Befehls \Macro{subject} wird in
+diesem Fall ignoriert.
+%
+\begin{values}{\Option{subjectthesis}}
+\itemfalse
+ Die Ausgabe des Typs der Abschlussarbeit (\Macro{thesis}) selbst sowie des
+ angestrebten Abschlusses (\Macro{graduation}) erfolgt in großen Lettern
+ zentral auf der Titelseite.
+\itemtrue*
+ Der Typ der Abschlussarbeit (\Macro{thesis}) wird oberhalb des Titels in der
+ Betreffzeile gesetzt. Der angestrebte Abschluss (\Macro{graduation}) wird
+ zentral ausgegeben.
+\end{values}
+\end{Declaration}
+
+\begin{Declaration}[v2.02]{%
+ \Macro{graduation}[\OParameter{Kurzform}\Parameter{Grad}]%
+}
+\printdeclarationlist%
+%
+Mit diesem Befehl wird der angestrebte akademische Grad auf der Titelseite
+ausgegeben. Da dies nur mit einer Abschlussarbeit erreicht werden kann erfolgt
+die Ausgabe nur, wenn entweder \Macro{thesis} oder \Macro{subject} verwendet
+wurde, wobei bei letzterem Befehl im Argument zwingend ein Wert aus
+\autoref{tab:thesis} verwendet werden muss.
+
+Bei der Ausgabe des akademischen Grades hat die Option \Option{subjectthesis}
+Einfluss auf die Ausgabe auf der Titelseite. Bei \Option{subjectthesis=false}
+wird der Abschluss~-- ähnlich wie der Typ der Abschlussarbeit~-- zentral und in
+relativ großen Lettern gesetzt. Für \Option{subjectthesis=true} erfolgt die
+Ausgabe kleiner und in weniger starken Buchstaben.
+\end{Declaration}
+
+\begin{Declaration}{\Macro{supervisor}[\Parameter{Name(n)}]}
+\begin{Declaration}{\Macro{referee}[\Parameter{Name(n)}]}
+\begin{Declaration}{\Macro{advisor}[\Parameter{Name(n)}]}
+\begin{Declaration}{\Macro{professor}[\Parameter{Name}]}
+\printdeclarationlist%
+\index{Betreuer|?}%
+\index{Gutachter|?}%
+\index{Referent|?}%
+%
+Mit \Macro{supervisor}, \Macro{referee} und \Macro{advisor} werden die Betreuer
+einer Abschlussarbeit beziehungsweise die Gutachter und Fachreferenten einer
+Dissertation angegeben. Zusätzlich kann mit \Macro{professor} der betreuende
+Hochschullehrer beziehungsweise die betreuenden Professoren für studentische
+Arbeiten angegeben werden. Die Angabe mehrerer Person erfolgt wie beim Befehl
+\Macro{author} durch die Trennung mittels \Macro{and}.
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}[v2.06]{\Option{titlesignature=\PBoolean}}[false]%
+\printdeclarationlist%
+%
+Einige Lehrstühle an der \TnUD verlangen eine Unterschrift des Autors einer
+Abschlussarbeit direkt auf der Titelseite. Mit dem Aktivieren dieser Option
+wird ein solches Feld am unteren Seitenrand des Titels erzeugt.
+\end{Declaration}
+
+\begin{Declaration}{\Macro{titledelimiter}[\Parameter{Trennzeichen}]}
+\printdeclarationlist%
+\index{Titel!Trennzeichen}%
+%
+Für den Titel und die Umschlagseite werden durch die \TUDScript-Klassen eine
+Reihe von zusätzlichen Feldern bereitgestellt. Einigen dieser Felder wird eine
+Beschreibung (\seeref{\autoref{sec:localization}}) vorangestellt. Dazwischen
+wird bei der Ausgabe ein Trennzeichen eingefügt. Ein Doppelpunkt gefolgt von
+einem Leerzeichen (:\Macro*{nobreakspace}) ist hierfür die Voreinstellung. Mit
+dem Befehl \Macro{titledelimiter} lässt sich dieses Trennzeichen beliebig an
+die individuellen Wünsche des Anwenders anpassen.
+\index{Titel!Felder|)}%
+\end{Declaration}
+
+
+\begin{Bundle}{\Package{koma-script}}
+\begin{Declaration}{\Macro{extratitle}[\Parameter{Schmutztitel}]}
+\begin{Declaration}{\Macro{frontispiece}[\Parameter{Frontispiz}]}
+\begin{Declaration}{\Macro{titlehead}[\Parameter{Kopf}]}
+\begin{Declaration}{\Macro{publishers}[\Parameter{Verlag}]}
+\begin{Declaration}{\Macro{thanks}[\Parameter{Fußnote}]}
+\begin{Declaration}{\Macro{uppertitleback}[\Parameter{Titelrückseitenkopf}]}
+\begin{Declaration}{\Macro{lowertitleback}[\Parameter{Titelrückseitenfuß}]}
+\begin{Declaration}{\Macro{dedication}[\Parameter{Widmung}]}
+\printdeclarationlist%
+%
+Diese Befehle entsprechen den in ihrem Verhalten den originalen Pendants der
+\KOMAScript"=Klassen und sollen hier der Vollständigkeit halber erwähnt werden.
+
+Die Ausgabe des mit \Macro{extratitle} definierten Schmutztitels~-- welcher
+beliebig gestaltet und formatiert werden kann~-- und der gegebenenfalls mit
+\ChangedAt[\Macro{frontispiece}](){%
+ v2.06:Schmutztitelrückseite aus \Package{koma-script} wird unterstützt%
+}%
+\Macro{frontispiece} definierten Rückseite erfolgt als Bestandteil der Titelei
+mit \Macro{maketitle} vor der eigentlichen Titelseite. Mit dem Befehl
+\Macro{titlehead} kann ein zusätzlicher, beliebig formatierbarer Text oberhalb
+der Typisierung und des Titels ausgegeben werden. Da die vertikale Position des
+Dokumenttitels durch das \CD fest vorgegeben ist, kann es~-- im Gegensatz zu
+den \KOMAScript"=Klassen~-- passieren, dass der Kopf des Haupttitels selbst in
+die Kopfzeile ragt. Dies wird durch die \TUDScript-Klassen nicht geprüft und
+muss gegebenenfalls vom Anwender kontrolliert werden. Der mit dem Befehl
+\Macro{publishers} definierte Inhalt muss nicht zwingende einen Verlag
+bezeichnen sondern kann auch andere Informationen beinhalten, welche am Ende
+der Titelseite ausgegeben werden sollen.
+
+Fußnoten werden auf dem Titel nicht mit
+\Macro{footnote}(\Package{koma-script})'none', sondern mit der Anweisung
+\Macro{thanks} erzeugt. Diese dienen in der Regel für Anmerkungen bei Titel
+oder den Autoren. Als Fußnotenzeichen werden dabei Symbole statt Zahlen
+verwendet. Der Befehl \Macro{thanks} kann nur innerhalb des Arguments einer der
+Anweisungen für die Titelseite wie beispielsweise \Macro{author} oder
+\Macro{title} verwendet werden.
+
+\index{Satzspiegel!doppelseitig}%
+Im doppelseitigen Druck lässt sich die Rückseite der Haupttitelseite für
+weitere Angaben nutzen. Sowohl den Titelrückseitenkopf als auch den
+Titelrückseitenfuß kann der Anwender mit \Macro{uppertitleback} und
+\Macro{lowertitleback} frei gestalten.
+
+Mit \Macro{dedication} lässt eine separate Widmungsseite zentriert und in etwas
+größerer Schrift setzen. Die Rückseite ist~-- wie auch die des Schmutztitels~--
+grundsätzlich leer. Die Widmung wird mit der restlichen Titelei ausgegeben und
+muss daher vor der Nutzung von \Macro{maketitle} angegeben werden.
+\index{Titel|!)}%
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Bundle}
+
+\subsection{Die Teileseite}
+\tudhyperdef*{sec:part}%
+%
+\ChangedAt[\Macro{partpagestyle}(\Package{koma-script})]{%
+ v2.02:Seitenstil \PageStyle{plain.tudheadings} wird genutzt%
+}
+Wird für die Teileseiten das Layout des \CDs verwendet, so wird der Seitenstil
+dieser (\Macro{partpagestyle}(\Package{koma-script})'none') auf
+\PageStyle{plain.tudheadings} gesetzt. Möchten Sie stattdessen einen anderen
+Seitenstil nutzen, so kann dieser mit
+\Macro*{renewcommand*}[%
+ \PParameter{\Macro{partpagestyle}(\Package{koma-script})'none'}%
+ \Parameter{Seitenstil}%
+]
+angepasst werden.
+
+\begin{Declaration}[v2.06]{\Macro{setpartsubtitle}[\Parameter{Untertitel}]}
+\begin{Declaration}[v2.06]{\Font{partsubtitle}}
+\printdeclarationlist%
+\index{Layout!Teileseiten|?}%
+\index{Layout!Überschriften}%
+\index{Schriftelemente}%
+%
+Mit \Macro{setpartsubtitle}[\Parameter{Untertitel}] kann für Teile nach der
+Überschrift selbst ein Untertitel gesetzt werden. Der Befehl muss in gleicher
+Weise wie \Macro{setpartpreamble}(\Package{koma-script})'none' \emph{vor} der
+Verwendung von \Macro{part}(\Package{koma-script})'none' oder den davon
+abgeleiteten Varianten angegeben werden. Mit dem Schriftelement
+\Font{partsubtitle} lässt sich die Schrift für den gegebenen Untertitel
+verändern. In \autoref{sec:fonts:elements} ist zu finden, wie es angepasst
+werden kann.
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Option{parttitle=\PBoolean}}[false]%
+\printdeclarationlist%
+\index{Layout!Teileseiten|?}%
+\index{Layout!Überschriften}%
+%
+Diese Option ermöglicht es, den mit \Macro{title} gegebenen Titel des
+Dokumentes selbst in großer Schrift auf einer Teileseite auszugeben, die
+Bezeichnung des mit
+\Macro{part}[\Parameter{Bezeichnung}](\Package{koma-script})'none' erzeugten
+Teils wird in diesem Fall als Untertitel direkt darunter gesetzt. Diese
+Layout"=Variante findet sich im Handbuch für das \TUDCD. \notudscrartcl
+%
+\begin{values}{\Option{parttitle}}
+\itemfalse
+ Die Bezeichnung des Teils erscheint in großer Schrift, der Titel des
+ Dokumentes wird nicht ausgegeben.
+\itemtrue*
+ Der angegebene Titel wird in großer Auszeichnung auf der Teileseite gesetzt,
+ die Bezeichnung des Teils selber als Untertitel.
+\end{values}
+\end{Declaration}
+
+
+
+\subsection{Die Kapitelseite}
+\begin{Declaration}{\Option{chapterpage=\PBoolean}}%
+ [false][\Option{cd=color}:true]%
+\printdeclarationlist%
+\tudhyperdef*{sec:chapter}%
+\index{Layout!Kapitelseiten|?}%
+\index{Layout!Überschriften}%
+\index{Satzspiegel!doppelseitig}%
+\index{Vakatseiten}%
+%
+Mit dieser Einstellung kann die Überschrift eines Kapitels separat auf einer
+Seite ausgegeben werden. Der nachfolgende Text wird auf der nächsten
+beziehungsweise bei doppelseitigem Satz und rechts öffnenden Kapiteln%
+\footnote{%
+ \KOMAScript-Optionen \Option{twoside=true}(\Package{typearea})'none' und
+ \Option{open=right}(\Package{koma-script})'none', Standard für
+ \Class{tudscrbook}%
+}
+auf der übernächsten Seite ausgegeben. Die in diesem Fall erzeugte Rückseite
+wird in ihrer Ausprägung~-- wie auch Teileseiten~-- durch die Einstellung von
+\Option{cleardoublespecialpage} bestimmt. Beim farbigen Layout ist diese Option
+standardmäßig aktiviert. \notudscrartcl
+%
+\begin{values}{\Option{chapterpage}}
+\itemfalse
+ Es gibt keine Sonderstellung von Kapiteln, der nachfolgende Text wird direkt
+ unter der Überschrift respektive nach der mit
+ \Macro{setchapterpreamble}(\Package{koma-script})'none' erzeugten
+ Kapitelpräambel auf der gleichen Seite ausgegeben.
+\itemtrue*
+ Die Kapitelüberschrift und gegebenenfalls die Kapitelpräambel werden auf
+ einer separaten Seite gesetzt. Der folgende Text erscheint auf der nächsten
+ respektive übernächsten Seite, \seeref*{\Option{cleardoublespecialpage}}.
+\end{values}
+%
+\ChangedAt[\Macro{chapterpagestyle}(\Package{koma-script})]{%
+ v2.02:nicht mehr abhängig von \Macro{partpagestyle}(\Package{koma-script})
+}
+Mit \Macro*{renewcommand*}[%
+ \PParameter{\Macro{chapterpagestyle}(\Package{koma-script})'none'}%
+ \Parameter{Seitenstil}%
+]
+lässt sich übrigens~-- unabhängig von der Option \Option{chapterpage}~-- der
+Seitenstil von Kapiteln anpassen. Bei der Verwendung von Kapitelseiten mit
+\Option{chapterpage=true} ist außerdem das Aktivieren der \KOMAScript-Option
+\Option{chapterprefix=\PBoolean}(\Package{koma-script})'none'|declare|
+empfehlenswert. Damit werden die Kapitelüberschriften mit einer Vorsatzzeile
+gesetzt. Wird ein nummeriertes Kapitel erzeugt, so wird zunächst in einer Zeile
+\enquote{Kapitel} gefolgt von der aktuellen Kapitelnummer ausgegeben, in der
+nächsten Zeile wird anschließend die eigentliche Überschrift in linksbündigem
+Flattersatz ausgegeben. Mehr dazu ist der \scrguide[\KOMAScript-Dokumentation]
+zu entnehmen.
+\end{Declaration}
+
+\begin{Declaration}[v2.06]{\Macro{setchaptersubtitle}[\Parameter{Untertitel}]}
+\begin{Declaration}[v2.06]{\Font{chaptersubtitle}}
+\printdeclarationlist%
+\index{Layout!Kapitelseiten|?}%
+\index{Layout!Überschriften}%
+\index{Schriftelemente}%
+%
+Mit \Macro{setchaptersubtitle}[\Parameter{Untertitel}] kann für Kapitel nach
+der Überschrift selbst ein Untertitel gesetzt werden. Der Befehl muss in
+gleicher Weise wie \Macro{setchapterpreamble}(\Package{koma-script})'none'
+\emph{vor} der Verwendung von \Macro{chapter}(\Package{koma-script})'none' oder
+den davon abgeleiteten Varianten angegeben werden. Mit dem Schriftelement
+\Font{chaptersubtitle} lässt sich die Schrift für den gegebenen Untertitel
+verändern. In \autoref{sec:fonts:elements} ist zu finden, wie es angepasst
+werden kann.
+\end{Declaration}
+\end{Declaration}
+
+
+\subsection{Vakatseiten}
+\index{Vakatseiten|(}%
+%
+Automatisch erzeugte Vakatseiten~-- auch absichtliche Leerseiten genannt~--
+sind in Abhängigkeit der
+\KOMAScript-Optionen \Option{twoside=\PSet}(\Package{typearea})'none'|declare|
+und \Option{open=\PName{Methode}}(\Package{koma-script})'none'|declare| am
+Beginn von Teilen und Kapiteln in Dokumenten zu finden.%
+\footnote{%
+ Voreinstellungen
+ \Class{tudscrbook}:
+ \Option{twoside=true}(\Package{typearea})'none',
+ \Option{open=right}(\Package{koma-script})'none';
+ \Class{tudscrartcl}, \Class{tudscrreprt}:
+ \Option{open=any}(\Package{koma-script})'none',
+ \Option{twoside=false}(\Package{typearea})'none'%
+}
+Für die Vakatseiten kann der Seitenstil mit der \KOMAScript"=Option
+\Option{cleardoublepage=\PSet}(\Package{koma-script})'none'|declare|
+eingestellt werden.
+
+\begin{Declaration}[%
+ v2.06:Einstellung für farbige Rückseiten%
+]{\Option{cleardoublespecialpage=\PSet}}[true]%
+\printdeclarationlist%
+\index{Titel}%
+\index{Layout!Teileseiten}%
+\index{Layout!Kapitelseiten}%
+\index{Layout!Rückseiten}%
+\index{Satzspiegel!doppelseitig}%
+%
+Diese Option wirkt sich lediglich bei aktiviertem doppelseitigem Satz und
+ausschließlich rechts eröffnenden Seiten für Teile beziehungsweise Kapitel
+aus.%
+\footnote{%
+ \KOMAScript"=Option \Option{twoside=true}(\Package{typearea})'none' und
+ \Option{open=right}(\Package{koma-script})'none'%
+}
+In diesem Fall kann der Stil der darauffolgenden, linken Seite~-- sprich der
+Rückseite~-- beeinflusst werden. Das Normalverhalten sieht vor, dass nach einem
+Teil die nachfolgende Rückseite unabhängig von der Einstellung für
+\Option{cleardoublepage}(\Package{koma-script})'none' immer als vollständig
+leere Seite ohne Kopf"~ oder Fußzeilen gesetzt wird.
+
+Diese Option erlaubt es, das Normalverhalten zu deaktivieren und für die Seite
+nach der Teileseite~-- und abhängig von \Option{chapterpage} auch nach einem
+Kapitelanfang auf einer separaten Seite~-- den Seitenstil der Option
+\Option{cleardoublepage}(\Package{koma-script})'none' zu übernehmen. Des
+Weiteren kann auch ein anderer, bereits definierter Seitenstil gewählt werden.
+Außerdem kann im farbigen Layout die Rückseite in der gleichen Farbe wie die
+Vorderseite von Titel, Teil oder Kapitel gesetzt werden.
+\notudscrartcl
+%
+\begin{values}{\Option{cleardoublespecialpage}}
+\itemfalse
+ Die Rückseiten sind vollständig leere Seiten, unabhängig von Option
+ \Option{cleardoublepage}(\Package{koma-script})'none'.
+\itemtrue*
+ Der Seitenstil der Rückseite von Teilen und gegebenenfalls Kapiteln entspricht
+ der Einstellung von \Option{cleardoublepage}(\Package{koma-script})'none' für
+ Vakatseiten.
+\item[current]
+ Für die erzeugte Rückseite wird der aktuell definierte Seitenstil
+ (\Macro{pagestyle}(\Package{koma-script})'none') verwendet.
+\item[\PValueName{Seitenstil}]
+ Mit der Angabe von \Option{cleardoublespecialpage=\PName{Seitenstil}}
+ kann ein beliebiger, bereits definierter Seitenstil für die Rückseite nach
+ Teilen und Kapiteln verwendet werden.
+\item[color]
+ Im farbigen Layout ist auch die Rückseite von Teilen und Kapiteln farbig,
+ \seeref{\Option{cd}}. Die Einstellung wirkt sich ebenfalls auf die Rückseite
+ des Titels aus.\footnote{%
+ \seeref{\Macro{uppertitleback}(\Package{koma-script}) und
+ \Macro{lowertitleback}(\Package{koma-script})} im \scrguide*%
+ }%
+\item[nocolor]
+ Es werden weiße Rückseiten bei Titel, Teilen und gegebenenfalls Kapiteln
+ erzeugt.
+\end{values}
+\index{Vakatseiten|)}%
+\end{Declaration}
+
+
+
+\subsection{Verwendung von Schriftelementen}
+\tudhyperdef*{sec:fonts:elements}%
+\index{Schriftelemente|!}%
+%
+Vom \TUDScript-Bundle werden weitere Schriftelemente~-- in Ergänzung zu den
+bereits durch \KOMAScript{} bereitgestellten~-- definiert. Dies sind
+\Font{titlepage}, \Font{thesis}, \Font{tudheadings} sowie \Font{partsubtitle}
+und \Font{chaptersubtitle}. Sowohl die durch \KOMAScript{} definierten als auch
+alle hier genannten und folgend erläuterten Schriftelemente lassen sich im
+Bedarfsfall über den Befehl \Macro{addtokomafont}[%
+ \Parameter{Schriftelement}\Parameter{Einstellungen}%
+](\Package{koma-script})'none' angepassen. Mehr dazu ist im \scrguide innerhalb
+des Abschnitts \emph{Textauszeichnungen} zu finden.
+
+
+
+\subsection{Verwendung von Feldinhalten}
+\index{Felder|!}%
+\begin{Declaration}[v2.06]{\Macro{getfield}[\Parameter{Feldname}]}
+\printdeclarationlist
+Mit diesem Makro kann auf den Inhalt eines zuvor angegebenen Feldes zugegriffen
+werden.
+\begin{Example}
+Das für dieses Dokument angegebene Datum lautet \enquote{\getfield{date}}. Es
+kann wie folgt ausgegeben werden:
+\begin{Code}
+\getfield{date}
+\end{Code}
+\end{Example}
+Weitere mögliche Argumente sind beispielsweise \PValue{faculty},
+\PValue{department}, \PValue{institute} und \PValue{chair} sowie \PValue{title},
+\PValue{author}, \PValue{thesis}, \PValue{professor}, \PValue{supervisor} oder
+\PValue{place}.
+\end{Declaration}
+
+\subsection{Die Farben des \CDs}
+\index{Layout!Farben}%
+%
+Zur Verwendung der Farben des \CDs wird das Paket \Package{tudscrcolor}
+genutzt. Falls dieses nicht in der Präambel geladen wird~-- um beispielsweise
+zusätzliche Optionen aufzurufen~-- binden die \TUDScript"=Klassen dieses
+automatisch ein. Detaillierte Informationen sind in der Dokumentation von
+\Package{tudscrcolor}'full' zu finden.
+\index{Layout|)}%
+
+
+
+\section{Zusätzliche Optionen und Erweiterungen}
+\ChangedAt*{%
+ v2.03:Bugfix für \abstractname, \confirmationname{} und \blockingname{}
+ bei der Festlegung von Seitenstil und Kolumnentitel%
+}%
+Neben den Befehlen für die Anpassung des Layouts an das \TUDCD stellen die
+\TUDScript-Klassen weitere Befehle und Umgebungen zur Verfügung, um die
+Anwendung insbesondere für wissenschaftliche Arbeiten zu erleichtern.
+
+
+\subsection{Zusammenfassung/Kurzfassung}
+\index{Zusammenfassung|!(}%
+%
+\begin{Declaration}[%
+ v2.02!\Option{abstract=multiple}:ersetzt \Option{abstract=double};%
+ v2.02!\Option{abstract=tocleveldown};%
+ v2.02!\Option{abstract=markboth};%
+ v2.04!\Option{abstract=tocmultiple}%
+]{\Option{abstract=\PSet}}%
+\printdeclarationlist%
+\index{Satzspiegel!zweispaltig}%
+%
+Diese Option wird bereits durch \KOMAScript{} für die Klassen \Class{scrartcl}
+und \Class{scrreprt} standardmäßig bereitgestellt. Für die Klasse
+\Class{scrbook} geschieht dies nicht. Dazu heißt es im Handbuch:
+%
+\begin{quoting}
+Bei Büchern wird in der Regel eine andere Art der Zusammenfassung verwendet.
+Dort wird ein entsprechendes Kapitel an den Anfang oder Ende des Werks gesetzt.
+Oft wird diese Zusammenfassung entweder mit der Einleitung oder einem weiteren
+Ausblick verknüpft. Daher gibt es bei \Class{scrbook} generell keine
+\Environment{abstract}"=Umgebung. Bei Berichten im weiteren Sinne, etwa einer
+Studien- oder Diplomarbeit, ist ebenfalls eine Zusammenfassung in dieser Form
+zu empfehlen.
+\end{quoting}
+%
+Durch die \TUDScript-Klassen wird die \Option{abstract}"=Option erweitert.
+Neben den Auswahlmöglichkeit, welche bereits \KOMAScript{} für die Klassen
+\Class{tudscrartcl} und \Class{tudscrreprt} anbietet, kann die Überschrift für
+die Zusammenfassung außerdem in Gestalt eines \sectionautorefname{}s oder für
+\Class{tudscrreprt} und \Class{tudscrbook} in der Form eines
+\chapterautorefname{}s ausgegeben werden.
+%
+\begin{values}{\Option{abstract}}
+\itemfalse(nur \Class{tudscrartcl} und \Class{tudscrreprt})
+ Es wird keine Überschrift für die \Environment{abstract}"=Umgebung ausgegeben.
+\itemtrue*(nur \Class{tudscrartcl} und \Class{tudscrreprt})
+ Wie bei den \KOMAScript"=Klassen wird eine zentrierte Überschrift mit dem
+ Bezeichner \Term{abstractname} vor der eigentlichen Zusammenfassung gesetzt.
+\item[section/addsec]
+ Die Überschrift (\Term{abstractname}) verwendet den Gliederungsbefehl
+ \Macro{section}(\Package{koma-script})'none'.
+\item[chapter/addchap][\Class{tudscrbook}](%
+ nur \Class{tudscrreprt} und \Class{tudscrbook}%
+ )
+ Es wird der Befehl \Macro{chapter}(\Package{koma-script})'none' für das
+ Setzen der Überschrift (\Term{abstractname}) genutzt.
+\item[heading]
+ Es wird die höchstmögliche Gliederungsebene verwendet. Für
+ \Class{tudscrartcl} entspricht dies \Option{abstract=section}, bei
+ \Class{tudscrreprt} und \Class{tudscrbook} \Option{abstract=chapter}.
+\end{values}
+%
+Abhängig von der gewählten Gliederungsebene der Überschrift wird das Verhalten
+für das Setzen eines Eintrages ins Inhaltsverzeichnis festgelegt. Ohne oder mit
+zentrierter Überschrift wird per Voreinstellung kein Eintrag erzeugt. Wird die
+Überschrift jedoch in Form einer Gliederungsebene gewählt, so erscheint die
+Zusammenfassung für gewöhnlich im Inhaltsverzeichnis auf der obersten Ebene.
+Das voreingestellte Verhalten für die Einträge ins Inhaltsverzeichnis kann
+jederzeit mit folgenden Werten durch den Anwender überschrieben werden.
+%
+\begin{values}{\Option{abstract}}
+\item[notoc/nottotoc]
+ Die Zusammenfassung wird definitiv nicht ins Inhaltsverzeichnis eingetragen.
+\item[toc/totoc]
+ Es wird auf der obersten Gliederungsebene der aktuell verwendeten
+ Dokumentklasse (\Macro*{chapter} oder \Macro*{section}) ein nicht
+ nummerierten Eintrag im Inhaltsverzeichnis für die Zusammenfassung gesetzt.
+\item[tocleveldown/leveldown/totocleveldown]
+ \ChangedAt{v2.02}
+ Der Inhaltsverzeichniseintrag wird eine Stufe unterhalb der obersten
+ Gliederungsebene (\Macro*{section} oder \Macro*{subsection}) erzeugt.
+\item[tocmultiple/totocmultiple/tocaggregate/totocaggregate]
+ \ChangedAt{v2.04}
+ Es wird ein \emph{einziger} Inhaltsverzeichniseintrag für \emph{alle}
+ Zusammenfassungen erstellt.
+\end{values}
+%
+\ChangedAt{v2.02}
+Außerdem kann das Verhalten für die Kolumnentitel durch den Nutzer beeinflusst
+werden. Diese werden normalerweise automatisch gesetzt, wenn diese über die
+\KOMAScript-Option \Option{automark}(\Package{scrlayer-scrpage})'none'
+aktiviert wurden und sind von der aktuellen Gliederungsebene der Überschrift
+abhängig. Werden jedoch mit Hilfe der \KOMAScript-Option
+\Option{manualmark}(\Package{scrlayer-scrpage})'none' manuelle Kolumnentitel
+genutzt, müssen diese normalerweise auch für die Zusammenfassung durch den
+Anwender gesetzt werden. Mit \Option{abstract=markboth} lässt sich allerdings
+das Setzen der Kolumnentitel unabhängig davon forcieren.
+%
+\begin{values}{\Option{abstract}}
+\item[markboth]
+ Unabhängig von der Verwendung manueller oder automatischer Kolumnentitel
+ werden diese auf rechten sowie linken Seiten mit \Term{abstractname} gesetzt.
+\item[nomarkboth]
+ Die Einstellung für manuelle oder automatische Kolumnentitel werden beachtet
+ und abhängig von der verwendeten Gliederungsebene der Überschrift gesetzt.
+\end{values}
+%
+Mit dem optionalen Parameter \Key{\Environment{abstract}}{markboth} der
+\Environment{abstract}"=Umgebung kann der Kolumnentitel mit einem beliebigen
+Inhalt gesetzt werden.
+
+Häufig wird für Abschlussarbeiten verlangt, neben der deutschsprachigen auch
+noch eine englischsprachige Zusammenfassung zu verfassen. Mit der Einstellung
+\Option{abstract=multiple} lassen sich mehrere Zusammenfassungen auf einer
+Seite ausgeben~-- sofern genügend Platz vorhanden ist. Außerdem kann die
+standardmäßige vertikale Zentrierung der \Environment{abstract}"=Umgebung
+auf einer Seite unterdrückt werden. Diese Einstellungen zur Positionierung der
+Zusammenfassungen innerhalb der \Environment{abstract}"=Umgebung werden nur
+wirksam, wenn eine Titelseite
+(\KOMAScript-Option \Option{titlepage=true}(\Package{koma-script})'none') und
+\emph{keine} Überschriften in Form von Kapiteln (\Option{abstract=chapter})
+verwendet werden.
+%
+\begin{values}{\Option{abstract}}
+\item[single/one/simple]
+ Jede Zusammenfassung wird auf einer eigenen Seite
+ beziehungsweise im zweispaltigen Satz in einer neuen Spalte ausgegeben.
+\item[multiple/multi/all/aggregate]
+ \ChangedAt{v2.02}
+ Zusammenfassungen, welche mit \Macro{nextabstract} getrennt wurden, werden
+ direkt nacheinander auf der gleichen Seite ausgegeben, wenn ausreichend Platz
+ auf dieser vorhanden sein sollte. Ist die Klassenoption
+ \Option{twocolumn}(\Package{typearea})'none' aktiviert, erfolgt die Ausgabe
+ aller Zusammenfassungen ohne Spaltenumbruch.
+\item[fill/fil/vfil/vfill]
+ Alle Zusammenfassungen werden bei der Ausgabe auf einer Seite vertikal
+ zentriert. Diese Einstellung steht für den zweispaltigen Satz
+ (Klassenoption \Option{twocolumn}(\Package{typearea})'none') nicht zur
+ Verfügung.
+\item[nofill/nofil/novfil/novfill]
+ Die Ausgabe erfolgt wie im normalen Fließtext auch.
+\end{values}
+\end{Declaration}
+
+\begin{Declaration}[%
+ v2.02:Trennung einzelner Abschnitte mit \Macro{nextabstract};%
+]{\Environment{abstract}[\OLParameter{Sprache}]}
+\begin{Declaration}{\Macro{nextabstract}[\OLParameter{Sprache}]}
+\begin{Declaration}{\Key{\Environment{abstract}}{language=\PName{Sprache}}}
+\begin{Declaration}[v2.02]{\Key{\Environment{abstract}}{markboth=\PSet}}
+\begin{Declaration}[v2.02]{%
+ \Key{\Environment{abstract}}{pagestyle=\PName{Seitenstil}}%
+}
+\begin{Declaration}{\Key{\Environment{abstract}}{columns=\PName{Anzahl}}}
+\begin{Declaration}{\Key{\Environment{abstract}}{option=\PSet}}{%
+ \seeref{\Option{abstract}'ppage'}%
+}
+\printdeclarationlist%
+\index{Satzspiegel!zweispaltig}%
+%
+Die \Environment{abstract}"=Umgebung dient speziell für die Ausgabe einer
+Zusammenfassung, entweder zu Beginn eines Dokumentes oder beispielsweise vor
+einem Teil oder Kapitel. Wird ein Titelkopf und keine Titelseite verwendet
+(\KOMAScript-Option \Option{titlepage=false}(\Package{koma-script})'none'), so
+wird eine Zusammenfassung~-- identisch zu den \KOMAScript"=Klassen~-- in einer
+\Environment{quotation}(\Package{koma-script})'none'"=Umgebung ausgegeben,
+wobei die Überschrift \emph{nicht} in der Form einer Gliederungsebene gesetzt
+wird. Diese Umgebung hat jedoch den Nachteil, dass die \KOMAScript-Option
+\Option{parskip=\PName{Methode}}(\Package{koma-script})'none' nicht beachtet
+wird. Um dies zu beheben, kann das Paket \Package{quoting} geladen werden,
+wodurch stattdessen die Umgebung \Environment{quoting}(\Package{quoting})'none'
+verwendet wird.
+
+Mit der zuvor erläuterten Option \Option{abstract} kann eingestellt werden, in
+welcher Gestalt die Zusammenfassung ausgegeben werden soll. Des Weiteren lässt
+sich jede \Environment{abstract}"=Umgebung individuell über weitere Parameter
+als optionales Argument anpassen. Damit lassen sich gegebenenfalls für eine
+bestimmte \Environment{abstract}"=Umgebung die globalen Einstellungen
+der Option \Option{abstract} lokal ändern und gezielt anpassen.
+
+Wird das Paket \Package{babel} durch den Anwender geladen, kann mit dem
+optionalen Parameter \Key{\Environment{abstract}}{language=\PName{Sprache}}die
+Sprache innerhalb der \Environment{abstract}"=Umgebung geändert werden. Dafür
+muss die gewünschte Sprache bereits mit dem Laden von \Package{babel} entweder
+als Paketoption oder besser noch als Klassenoption angegeben worden sein.
+Dadurch werden innerhalb der Umgebung die Bezeichnung \Term{abstractname} und
+die Trennungsmuster sprachspezifisch angepasst. Die gewünschte Sprache kann
+auch ohne die Verwendung des Parameters \Key{\Environment{abstract}}{language}
+direkt als optionales Argument übergeben werden.
+
+\ChangedAt{v2.02}
+Mit \Key{\Environment{abstract}}{markboth} können die gesetzten Kolumnentitel
+beeinflusst werden. Wird \Key{\Environment{abstract}}{markboth=false}
+angegeben, werden automatische respektive manuelle Kolumnentitel verwendet. Die
+Einstellung \Key{\Environment{abstract}}{markboth=true} wiederum setzt diese
+für linke und rechte Seiten auf \Term{abstractname}. Zusätzlich lässt sich mit
+\Key{\Environment{abstract}}{markboth=\PValueName{Kolumnentitel}} der
+Kolumnentitel direkt festlegen. So können die Kolumnen beispielsweise mit der
+Verwendung von \Key{\Environment{abstract}}{markboth=\PParameter{}} auch
+gelöscht werden. Sollte \Key{\Environment{abstract}}{markboth} aktiviert
+werden, so wird in der Umgebung automatisch der Seitenstil \PageStyle{headings}
+genutzt~-- falls eine Titelseite
+(\KOMAScript-Option \Option{titlepage=true}(\Package{koma-script})'none')
+verwendet wird. Mit dem Parameter \Key{\Environment{abstract}}{pagestyle} kann
+dieser auch manuell angegeben werden, die \PageStyle{tudheadings}"=Seitenstile
+werden dabei ebenfalls unterstützt werden.
+
+Wurde das Paket \Package{multicol} geladen, kann mit dem Parameter
+\Key{\Environment{abstract}}{columns=\PName{Anzahl}} die Zusammenfassung
+mehrspaltig gesetzt werden. Dem Parameter \Key{\Environment{abstract}}{option}
+können alle gültigen, bereits erläuterten Werte der Option \Option{abstract}
+übergeben werden. Die damit gemachten Einstellungen wirken sich~-- im Gegensatz
+zur Variante der späten Optionenwahl%
+\footnote{%
+ \Macro{TUDoption}[\PParameter{abstract}\Parameter{Einstellung}] oder
+ \Macro{TUDoptions}[\PParameter{abstract=\PName{Einstellung}}]%
+}
+respektive als Angabe einer Klassenoption~-- lediglich lokal auf die verwendete
+\Environment{abstract}"=Umgebung aus.
+
+\ChangedAt{v2.02}
+Sollen mehrere Zusammenfassungen erzeugt und dabei die Einstellungen
+\Option{abstract=single} beziehungsweise \Option{abstract=multiple} sowie
+\Option{abstract=fill} respektive \Option{abstract=nofill} beachtet werden, so
+ist die \Environment{abstract}"=Umgebung nur einmal zu verwenden. Innerhalb
+dieser müssen die einzelnen Zusammenfassungen jeweils mit \Macro{nextabstract}
+voneinander getrennt werden. Der Befehl akzeptiert dabei im optionalen Argument
+alle Parameter, welche auch von der \Environment{abstract}"=Umgebung selbst
+unterstützt werden. Das Minimalbeispiel in \fullref{sec:exmpl:dissertation}
+zeigt hierfür das notwendige Vorgehen.
+
+Wird die \Environment{abstract}"=Umgebung innerhalb des Argumentes der Befehle
+\Macro{setpartpreamble}(\Package{koma-script})'none' beziehungsweise
+\Macro{setchapterpreamble}(\Package{koma-script})'none' verwendet, so wird die
+Überschrift~-- im Fall, dass nicht \Option{abstract=false} gewählt ist~--
+\emph{immer} in Textgröße und zentriert gesetzt.
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\minisec{Umbenennung der \abstractname}
+Mit dem \KOMAScript-Befehl \Macro{renewcaptionname}(\Package{koma-script})'none'
+kann der Bezeichner~-- sprich der Wortlaut~-- der für die
+\Environment{abstract}"=Umgebung verwendeten Überschrift verändert werden. Mehr
+dazu ist in \autoref{sec:localization} zu finden.
+%
+\begin{Example}
+Die Überschrift der \Environment{abstract}"=Umgebung soll für die Sprache
+\PValue{ngerman} von \enquote{\abstractname} in \enquote{Kurzfassung} umbenannt
+werden. Das Makro \Macro{renewcaptionname}(\Package{koma-script})'none'
+erwartet die drei obligatorischen Argumente
+\Parameter{Sprache}\Parameter{Makro}\Parameter{Inhalt}:
+\begin{Code}[escapechar=§]
+\renewcaptionname{ngerman}{\abstractname}{Kurzfassung}
+\end{Code}
+\index{Zusammenfassung|!)}%
+\end{Example}
+
+
+\subsection{Selbstständigkeitserklärung und Sperrvermerk}
+\index{Selbstständigkeitserklärung|!(}%
+\index{Sperrvermerk|!(}%
+%
+\begin{Declaration}[%
+ v2.02!\Option{declaration=multiple}:ersetzt \Option{declaration=double};%
+ v2.02!\Option{declaration=tocleveldown};%
+ v2.02!\Option{declaration=markboth};%
+ v2.04!\Option{declaration=tocmultiple}%
+]{\Option{declaration=\PSet}}[true]%
+\printdeclarationlist%
+%
+Mit \Option{declaration} kann äquivalent zur Option \Option{abstract} die
+Gestaltung von Selbstständigkeitserklärung und Sperrvermerk angepasst werden.
+Zur Ausgabe der Erklärungen werden die Umgebung \Environment{declarations}
+sowie die Befehle \Macro{declaration} beziehungsweise \Macro{confirmation} und
+\Macro{blocking} bereitgestellt.
+
+Die beiden Optionen \Option{abstract} und \Option{declaration} ähneln sich sehr
+stark. Alle möglichen Wertzuweisungen für \Option{declaration} wurden bereits
+bei der Beschreibung von \Option{abstract} ausführlich erläutert. Deshalb
+geschieht dies hier in einer etwas kürzeren Ausführung. Sollte Ihnen eine
+Erläuterung etwas dürftig erscheinen, so hilft mit Sicherheit ein Blick zur
+Erklärung der Option \Option{abstract}'full'.
+
+Die möglichen Werte für die Gestaltung der Überschrift werden nachfolgend
+genannt. Im Gegensatz zur Option \Option{abstract} stehen die beiden
+Einstellungen \Option{declaration=true} und \Option{declaration=false} auch für
+die Klasse \Class{tudscrbook} zur Verfügung.
+%
+\begin{values}{\Option{declaration}}
+\itemfalse
+ Es wird keine Überschrift über den Erklärungen selbst ausgegeben.
+\itemtrue*
+ Eine zentrierte Überschrift mit dem Bezeichner \Term{confirmationname} vor
+ der Selbstständigkeitserklärung beziehungsweise \Term{blockingname} vor dem
+ Sperrvermerk wird gesetzt.
+\item[section/addsec]
+ Die Überschrift verwendet den Gliederungsbefehl
+ \Macro{section}(\Package{koma-script})'none'.
+\item[chapter/addchap][\Class{tudscrbook}](%
+ nur \Class{tudscrreprt} und \Class{tudscrbook}%
+ )
+ Es wird der Befehl \Macro{chapter}(\Package{koma-script})'none' für das
+ Setzen der Überschrift genutzt.
+\item[heading]
+ Es wird die höchstmögliche Gliederungsebene verwendet. Für
+ \Class{tudscrartcl} entspricht dies \Option{declaration=section}, bei
+ \Class{tudscrreprt} und \Class{tudscrbook} \Option{declaration=chapter}.
+\end{values}
+%
+Abhängig von der gewählten Gliederungsebene der Überschrift wird das Verhalten
+für das Setzen eines Eintrages ins Inhaltsverzeichnis festgelegt. Normalerweise
+wird nur für Überschriften in Form einer Gliederungsebene ein Eintrag der
+Erklärung ins Inhaltsverzeichnis erstellt, für \Option{declaration=true} und
+\Option{declaration=false} geschieht dies standardmäßig nicht. Mit folgenden
+Werten kann das voreingestellte Verhalten überschrieben werden.
+%
+\begin{values}{\Option{declaration}}
+\item[notoc/nottotoc]
+ Die Erklärung wird definitiv nicht ins Inhaltsverzeichnis eingetragen.
+\item[toc/totoc]
+ Unabhängig von der Wahl der Überschrift erhält jede Erklärung einen nicht
+ nummerierten Eintrag im Inhaltsverzeichnis auf der obersten Gliederungsebene
+ der verwendeten Dokumentklasse (\Macro*{chapter} oder \Macro*{section}).
+\item[tocleveldown/leveldown/totocleveldown]
+ \ChangedAt{v2.02}
+ Der Inhaltsverzeichniseintrag wird eine Stufer unter der obersten
+ Gliederungsebene (\Macro*{section} oder \Macro*{subsection}) erzeugt.
+\item[tocmultiple/totocmultiple/tocaggregate/totocaggregate]
+ \ChangedAt{v2.04}
+ Es wird ein \emph{einziger} Inhaltsverzeichniseintrag für \emph{alle}
+ Erklärungen erstellt.
+\end{values}
+%
+\ChangedAt{v2.02}
+Normalerweise werden automatische Kolumnentitel abhängig von der
+Gliederungsebene der Überschrift gesetzt, falls diese über die
+\KOMAScript-Option \Option{automark}(\Package{scrlayer-scrpage})'none'
+aktiviert sind. Werden manuelle Kolumnentitel genutzt, müssen diese auch für
+die Erklärungen manuell gesetzt werden. Mit \Option{declaration=markboth} lässt
+sich unabhängig davon das Setzen der Kolumnentitel auf linken und rechten
+Seiten forcieren, wobei hierfür der Titel der Überschrift genutzt wird.
+%
+\begin{values}{\Option{declaration}}
+\item[markboth]
+ Unabhängig von der Verwendung manueller oder automatischer Kolumnentitel
+ werden diese auf rechten sowie linken Seiten mit den Bezeichnern
+ \Term{confirmationname} beziehungsweise \Term{blockingname} gesetzt.
+\item[nomarkboth]
+ Die Einstellung für manuelle oder automatische Kolumnentitel werden beachtet.
+\end{values}
+%
+Für \Macro{declaration} respektive \Macro{confirmation} und \Macro{blocking}
+sowie die \Environment{declarations}"=Umgebung lässt sich mit dem Parameter
+\Key{\Environment{declarations}}{markboth} ein beliebiger Kolumnentitel setzen.
+
+Die folgenden Einstellungen zur Positionierung der Erklärungen haben lediglich
+Auswirkungen, wenn die Überschrift der Erklärung \emph{nicht} im Form eines
+Kapitels ausgegeben und mit der \KOMAScript-Option
+\Option{titlepage=true}(\Package{koma-script})'none' eine Titelseite verwendet
+wird.
+%
+\begin{values}{\Option{declaration}}
+\item[single/one/simple]
+ Jede Erklärung wird auf einer separaten Seite
+ beziehungsweise im zweispaltigen Satz in einer neuen Spalte ausgegeben.
+\item[multiple/multi/all/aggregate]
+ \ChangedAt{v2.02}
+ Erklärungen, welche in der \Environment{declarations}"=Umgebung mit den
+ Befehlen \Macro{confirmation}, \Macro{blocking} und \Macro{declaration} oder
+ außerhalb dieser mit \Macro{declaration} gesetzt wurden, werden direkt
+ nacheinander auf der gleichen Seite ausgegeben, wenn ausreichend Platz auf
+ dieser vorhanden sein sollte. Ist die Klassenoption
+ \Option{twocolumn}(\Package{typearea})'none' aktiviert, erfolgt die Ausgabe
+ aller Erklärungen ohne Spaltenumbruch.
+\item[fill/fil/vfil/vfill]
+ Alle Erklärungen auf einer Ausgabeseite werden vertikal zentriert. Für
+ den zweispaltigen Satz
+ (Klassenoption \Option{twocolumn}(\Package{typearea})'none') steht diese
+ Einstellung nicht zur Verfügung.
+\item[nofill/nofil/novfil/novfill]
+ Die Ausgabe erfolgt wie im normalen Fließtext auch.
+\end{values}
+\end{Declaration}
+
+\begin{Declaration}[%
+ v2.02;%
+ v2.04:Trennung einzelner Abschnitte mit \Macro{nextdeclaration};%
+]{\Environment{declarations}[\OLParameter{Sprache}]}
+\begin{Declaration}{%
+ \Macro{nextdeclaration}[%
+ \OLParameter{Sprache}\Parameter{Überschrift}\Parameter{Erklärung}%
+ ]%
+}
+\begin{Declaration}{\Key{\Environment{declarations}}{language=\PName{Sprache}}}
+\begin{Declaration}{\Key{\Environment{declarations}}{markboth=\PSet}}
+\begin{Declaration}{%
+ \Key{\Environment{declarations}}{pagestyle=\PName{Seitenstil}}%
+}
+\begin{Declaration}{%
+ \Key{\Environment{declarations}}{columns=\PName{Anzahl}}%
+}
+\begin{Declaration}{\Key{\Environment{declarations}}{option=\PSet}}
+\begin{Declaration}{%
+ \Key{\Environment{declarations}}{supporter=\PName{Unterstützer}}
+}
+\begin{Declaration}{\Key{\Environment{declarations}}{place=\PName{Ort}}}
+\begin{Declaration}{\Key{\Environment{declarations}}{closing=\PName{Ende}}}
+\begin{Declaration}{\Key{\Environment{declarations}}{company=\PName{Firma}}}
+\printdeclarationlist%
+%
+Für Selbstständigkeitserklärung und Sperrvermerk sollte im einfachsten Fall
+\Macro{declaration} beziehungsweise \Macro{confirmation} und \Macro{blocking}
+verwendet werden. Sobald diese jedoch in anderer Reihenfolge, mehrfacher
+Ausführung, unterschiedlichen Sprachen oder um zusätzliche Erklärungen ergänzt
+werden, bietet die \Environment{declarations}"=Umgebung entsprechende
+Freiheiten.
+
+Innerhalb dieser Umgebung können Selbstständigkeitserklärung und Sperrvermerk
+mit dem Befehl \Macro{declaration} direkt nacheinander folgend beziehungsweise
+mit \Macro{confirmation} und \Macro{blocking} auch separat ausgegeben werden.
+Dies kann in beliebiger Reihenfolge und auch mehrmals geschehen, um diese
+beispielsweise mehrsprachig zu setzen.
+\ChangedAt{v2.04} Des Weiteren gibt es mit \Macro{nextdeclaration} die
+Möglichkeit, eine Erklärung völlig frei zu verfassen. Dieser Befehl kann
+\emph{ausschließlich} innerhalb der \Environment{declarations}"=Umgebung
+genutzt werden, wobei im ersten Argument die gewünschte Überschrift und im
+zweiten der Inhalt respektive Text der Erklärung selbst angegeben werden muss.
+
+Die folgend beschriebenen Parameter können sowohl für die Umgebung
+\Environment{declarations} selbst als auch für die zuvor genannten Befehle als
+optionales Argument verwendet werden. Ähnlich wie die gleichnamigen Optionen
+sind auch die Umgebungen \Environment{abstract} und \Environment{declarations}
+sehr ähnlich zueinander. Deshalb werden die Erläuterungen relativ kurz
+gehalten. Ist ein Erklärung für einen Parameter etwas unverständlich, kann
+diese bei der Umgebung \Environment{abstract}'full' nachgelesen werden.
+
+Wurde das Paket \Package{babel} geladen, kann die Sprache~-- sofern diese als
+Paketoption oder besser noch als Klassenoption angegeben wurde~-- mit dem
+Parameter \Key{\Environment{declarations}}{language=\PName{Sprache}} für die
+\Environment{declarations}"=Umgebung geändert werden. Dadurch werden die
+Bezeichner~-- unter anderem \Term{confirmationname} und \Term{blockingname}~--
+sowie die Trennungsmuster innerhalb der Umgebung sprachspezifisch angepasst.
+
+\ChangedAt{v2.02}
+Die Kolumnentitel können mit \Key{\Environment{declarations}}{markboth}
+beeinflusst werden. Mit \Key{\Environment{declarations}}{markboth=true} werden
+für diese auf linker und rechter Seite \Term{confirmationname} beziehungsweise
+\Term{blockingname} verwendet.
+Automatische (\Option{automark}(\Package{scrlayer-scrpage})'none') respektive
+manuelle (\Option{manualmark}(\Package{scrlayer-scrpage})'none') Kolumnentitel
+werden mit \Key{\Environment{declarations}}{markboth=false} genutzt. Mit
+\Key{\Environment{declarations}}{markboth=\PValueName{Kolumnentitel}} können
+diese direkt festgelegt werden. Wird \Key{\Environment{declarations}}{markboth}
+in irgendeiner Form genutzt, wird der Seitenstil \PageStyle{headings}
+automatisch gesetzt. Dieser lässt sich für die Umgebung mit dem Parameter
+\Key{\Environment{declarations}}{pagestyle} auch manuell angegeben. Wurde das
+Paket \Package{multicol} geladen, wird der Inhalt der Umgebung mit
+\Key{\Environment{declarations}}{columns=\PName{Anzahl}} mehrspaltig gesetzt.
+Für \Key{\Environment{declarations}}{option} können alle gültigen Werte der
+Option \Option{declaration} angegeben werden. Die Verwendung der weiteren
+Parameter \Key{\Macro{confirmation}}{supporter} sowie
+\Key{\Macro{confirmation}}{place} und \Key{\Macro{confirmation}}{closing} ist
+in der Dokumentation des Befehls \Macro{confirmation} zu finden, der Parameter
+\Key{\Macro{blocking}}{company} ist für \Macro{blocking} erläutert.
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Macro{confirmation}[\OLParameter{Unterstützer}]}
+\begin{Declaration}[v2.05]{\Macro{confirmation*}[\LParameter]}
+\begin{Declaration}{\Key{\Macro{confirmation}}{supporter=\PName{Unterstützer}}}
+\begin{Declaration}{\Key{\Macro{confirmation}}{place=\PName{Ort}}}
+\begin{Declaration}{\Key{\Macro{confirmation}}{closing=\PName{Ende}}}
+\begin{Declaration}{\Key{\Macro{confirmation}}{language=\PName{Sprache}}}
+\begin{Declaration}[v2.02]{\Key{\Macro{confirmation}}{markboth=\PSet}}
+\begin{Declaration}[v2.02]{%
+ \Key{\Macro{confirmation}}{pagestyle=\PName{Seitenstil}}%
+}
+\begin{Declaration}[v2.02]{%
+ \Key{\Macro{confirmation}}{columns=\PName{Anzahl}}%
+}
+\begin{Declaration}{\Key{\Macro{confirmation}}{option=\PSet}}
+\printdeclarationlist%
+\index{Datum}%
+%
+Mit diesem Befehl wird ein sprachspezifischer Standardtext für eine
+Selbstständigkeitserklärung ausgegeben, welcher in \Term{confirmationtext}
+gespeichert ist. Wie dieser angepasst beziehungsweise geändert werden kann, ist
+unter \autoref{sec:localization} zu finden. Er kann sowohl innerhalb der
+\Environment{declarations}"=Umgebung als auch außerhalb dieser direkt im
+Dokument verwendet werden.
+
+Wird \Term{confirmationtext} nicht geändert, kann dieser über das optionale
+Argument von \Macro{confirmation} und die deklarierten Parameter angepasst
+werden. Im Standardtext der Selbstständigkeitserklärung werden sowohl der Titel
+als auch der Typ der Abschlussarbeit~-- falls dieser mit \Macro{thesis},
+\Macro{subject}[\Parameter{\autoref{tab:thesis}}] beziehungsweise mit der
+Option \Option{subjectthesis} angegeben wurde~-- aufgeführt. Über den Parameter
+\Key{\Macro{confirmation}}{supporter} oder \emph{zuvor} mit dem Befehl
+\Macro{supporter} können weitere an der Arbeit beteiligte Personen angegeben
+werden. Mehrere zu nennende Personen sind auch hier durch \Macro{and} zu
+trennen. Das Feld der Unterstützer kann auch mit dem bloßen optionalen Argument
+ohne die Angabe eines Parameters angepasst werden.
+\ChangedAt{v2.05}
+Mit der Sternversion \Macro{confirmation*} werden als Unterstützer die mit
+\Macro{supervisor}[\Parameter{Name(n)}] definierten Betreuer der Arbeit
+angegeben.
+
+Nach dem eigentlichen Text der Selbstständigkeitserklärung wird der mit
+\Key{\Macro{confirmation}}{place} beziehungsweise \Macro{place} angegebene Ort
+sowie das mit \Macro{date} eingestellte Datum ausgegeben. Als Voreinstellung
+ist für den Ort \enquote{Dresden} gewählt. Danach folgen~-- mit etwas
+vertikalem Leerraum für die notwendige Unterschrift~-- der Autor oder die
+Autoren, angegeben durch den Befehl \Macro{author}. Soll anstelle dessen etwas
+anderes nach dem Text der Selbstständigkeitserklärung gesetzt werden, kann dies
+mit dem Parameter \Key{\Macro{confirmation}}{closing} oder zuvor mit dem
+Befehl \Macro{confirmationclosing} angepasst werden. Die Parameter
+\Key{\Environment{declarations}}{language},
+\Key{\Environment{declarations}}{markboth},
+\Key{\Environment{declarations}}{pagestyle},
+\Key{\Environment{declarations}}{columns} und
+\Key{\Environment{declarations}}{option} entsprechen in ihrem Verhalten denen
+der \Environment{declarations}"=Umgebung.
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}[v2.02]{\Macro{blocking}[\OLParameter{Firma}]}
+\begin{Declaration}{\Key{\Macro{blocking}}{company=\PName{Firma}}}
+\begin{Declaration}{\Key{\Macro{blocking}}{language=\PName{Sprache}}}
+\begin{Declaration}{\Key{\Macro{blocking}}{markboth=\PSet}}
+\begin{Declaration}{\Key{\Macro{blocking}}{pagestyle=\PName{Seitenstil}}}
+\begin{Declaration}{\Key{\Macro{blocking}}{columns=\PName{Anzahl}}}
+\begin{Declaration}{\Key{\Macro{blocking}}{option=\PSet}}
+\printdeclarationlist%
+%
+Beim Sperrvermerk verhält es sich äquivalent zur Selbstständigkeitserklärung.
+Es wird der in \Term{blockingtext} hinterlegte Standardtext in der gewählten
+Sprache ausgegeben. Dieser kann~-- wie in \autoref{sec:localization}
+beschrieben~-- geändert werden. Der Befehl \Macro{blocking} kann sowohl
+innerhalb der Umgebung \Environment{declarations} als auch direkt im Dokument
+verwendet werden.
+
+In seiner ursprünglichen Definition, kann er im optionalen Argument über die
+deklarierten Parameter angepasst werden. Im Standardtext des Sperrvermerks
+werden sowohl der Titel als auch der Typ der Abschlussarbeit~-- falls dieser
+mit \Macro{thesis}, \Macro{subject}[\Parameter{\autoref{tab:thesis}}]
+respektive mit der Option \Option{subjectthesis} angegeben wurde~-- aufgeführt.
+Mit \Key{\Macro{blocking}}{company} oder \emph{vorher} mit \Macro{company} kann
+zusätzlich eine im Sperrvermerk zu nennende Firma oder ähnliches angegeben
+werden. Dieses Feld lässt sich auch direkt im optionalen Argument ohne die
+Verwendung eines Parameters definieren. Die weiteren Parameter
+\Key{\Environment{declarations}}{language},
+\Key{\Environment{declarations}}{markboth},
+\Key{\Environment{declarations}}{pagestyle},
+\Key{\Environment{declarations}}{columns} und
+\Key{\Environment{declarations}}{option} entsprechen in ihrem Verhalten denen
+der \Environment{declarations}"=Umgebung.
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Macro{declaration}[\LParameter]}
+\begin{Declaration}[v2.05]{\Macro{declaration*}[\LParameter]}
+\begin{Declaration}{\Key{\Macro{declaration}}{language=\PName{Sprache}}}
+\begin{Declaration}[v2.02]{\Key{\Macro{declaration}}{markboth=\PSet}}
+\begin{Declaration}[v2.02]{%
+ \Key{\Macro{declaration}}{pagestyle=\PName{Seitenstil}}%
+}
+\begin{Declaration}[v2.02]{\Key{\Macro{declaration}}{columns=\PName{Anzahl}}}
+\begin{Declaration}{\Key{\Macro{declaration}}{option=\PSet}}
+\begin{Declaration}{\Key{\Macro{declaration}}{supporter=\PName{Unterstützer}}}
+\begin{Declaration}{\Key{\Macro{declaration}}{place=\PName{Ort}}}
+\begin{Declaration}{\Key{\Macro{declaration}}{closing=\PName{Ende}}}
+\begin{Declaration}{\Key{\Macro{declaration}}{company=\PName{Firma}}}
+\printdeclarationlist%
+%
+Dieser Befehl gibt die Selbstständigkeitserklärung und den Sperrvermerk direkt
+aufeinanderfolgend aus. Dabei werden die Einstellungen zur Positionierung der
+einzelnen Erklärungen, welche über die Zuweisungen \Option{declaration=single}
+beziehungsweise \Option{declaration=multiple} sowie \Option{declaration=fill}
+respektive \Option{declaration=nofill} erfolgen, beachtet. Er kann sowohl
+innerhalb der \Environment{declarations}"=Umgebung als auch außerhalb dieser
+direkt im Dokument verwendet werden und akzeptiert im optionalen Argument dabei
+alle für die \Environment{declarations}"=Umgebung beschriebenen Parameter.
+\ChangedAt{v2.05}
+Die Sternversion erzwingt für die Selbstständigkeitserklärung eine Angabe der
+mit \Macro{supervisor}[\Parameter{Name(n)}] definierten Betreuer in dieser.
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Macro{supporter}[\Parameter{Unterstützer}]}
+\begin{Declaration}{\Macro{place}[\Parameter{Ort}]}
+\begin{Declaration}{\Macro{confirmationclosing}[\Parameter{Ende}]}
+\begin{Declaration}{\Macro{company}[\Parameter{Firma}]}
+\printdeclarationlist%
+%
+Diese Makros ändern~-- im Gegensatz zu den Parametern von
+\Macro{confirmation} und \Macro{blocking}~-- die entsprechenden Feldwerte
+global. Damit lässt sich die \emph{mehrfache} Angabe eines Parameters
+vermeiden, wenn beispielsweise eine Erklärung in unterschiedlichen Sprachen
+erzeugt wird.
+\index{Selbstständigkeitserklärung|!)}%
+\index{Sperrvermerk|!)}%
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+
+\subsection{Lesezeichen}
+\index{Lesezeichen}%
+%
+\begin{Declaration}{\Option{tudbookmarks=\PBoolean}}[true]%
+\begin{Declaration}{%
+ \Macro{tudbookmark}[\OParameter{Ebene}\Parameter{Text}\Parameter{Ankername}]%
+}%
+\printdeclarationlist%
+\index{Titel}%
+\index{Umschlagseite}%
+\index{Inhaltsverzeichnis}%
+\index{Aufgabenstellung}%
+\index{Gutachten}%
+\index{Aushang}%
+%
+Diese Option wird wirksam, wenn \Package{hyperref} geladen wurde. Es werden für
+die Umschlag- und Titelseite, das Inhaltsverzeichnis sowie~-- bei der
+Verwendung des Paketes \Package{tudscrsupervisor}~-- die Aufgabenstellung
+Lesezeichen oder auch Outline"=Einträge im PDF"~Dokument erzeugt.
+%
+\begin{values}{\Option{tudbookmarks}}
+\itemfalse
+ Es erfolgt kein Eintrag von ergänzenden Lesezeichen.
+\itemtrue*
+ Es werden automatisch zusätzliche Lesezeichen eingetragen.
+\end{values}
+%
+Der Befehl \Macro{tudbookmark} arbeitet prinzipiell in der gleichen Weise wie
+\Macro{pdfbookmark}(\Package{hyperref})'none' aus \Package{hyperref}. Die
+Lesezeichen werden jedoch nur bei aktivierte Option \Option{tudbookmarks}
+generiert.
+\end{Declaration}
+\end{Declaration}
+
+
+
+\section{Sprachabhängige Bezeichner}
+\tudhyperdef*{sec:localization}%
+\index{Bezeichner|!(}%
+\index{Titel!Felder|(}%
+%
+Durch \KOMAScript{} werden Befehle, mit denen sich sprachabhängige Bezeichner
+erzeugen oder ändern lassen, zur Verfügung gestellt. Diese werden durch das
+\TUDScript-Bundle genutzt, um lokalisierte Begriffe für die Sprachen
+\emph{Englisch} und \emph{Deutsch} bereitzustellen. Ein Großteil davon betrifft
+Bezeichnungen für Felder auf der Titelseite (\autoref{sec:title}). Hierfür wird
+\Macro{providecaptionname}[%
+ \Parameter{Sprache}\Parameter{Makro}\Parameter{Inhalt}%
+](\Package{koma-script})'none'
+verwendet, wobei \PName{Sprache} dem geladenen Sprachpaket~-- normalerweise das
+Paket \Package{babel}~-- bekannt sein muss.
+
+Sollte der Anwender die im Folgenden erläuterten oder auch andere Bezeichner,
+welche von einem beliebigen (Sprach"~)Paket bereitgestellt werden, ändern
+wollen, ist hierfür der Befehl
+\Macro{renewcaptionname}[%
+ \Parameter{Sprache}\Parameter{Makro}\Parameter{Inhalt}%
+](\Package{koma-script})'none'
+zu verwenden. Es sollte natürlich dabei eine \PName{Sprache} angegeben werden,
+welche im Dokument durch \Package{babel} oder ein anderes Sprachpaket verwendet
+wird, beispielsweise \PValue{ngerman} oder \PValue{english}.
+
+Die Makros der Bezeichner und deren Verwendung werden folgend kurz beschrieben
+und tabellarisch aufgeführt. Dabei wurde versucht, alle Befehle der Bezeichner
+für bestimmte Begriffe auf \Term*{\noexpand\dots{}name} und beschreibende
+Texte auf \Term*{\noexpand\dots{}text} enden zu lassen.
+
+\begin{Declaration}[%
+ v2.02:Unterscheidung von einem und mehreren Gutachtern%
+]{\Term{refereename}}
+\begin{Declaration}{\Term{refereeothername}}
+\begin{Declaration}[%
+ v2.05:Unterscheidung von einem und mehreren Fachreferenten%
+]{\Term{advisorname}}
+\begin{Declaration}{\Term{advisorothername}}
+\begin{Declaration}[%
+ v2.05:Unterscheidung von einem und mehreren Betreuern%
+]{\Term{supervisorname}}
+\begin{Declaration}{\Term{supervisorothername}}
+\begin{Declaration}[%
+ v2.02:Unterscheidung von einem und mehreren Professoren%
+]{\Term{professorname}}
+\begin{Declaration}[v2.02]{\Term{professorothername}}
+\printdeclarationlist%
+\index{Betreuer}%
+\index{Gutachter}%
+\index{Hochschullehrer}%
+\index{Referent}%
+%
+Diese sprachabhängigen Begriffe sind die Bezeichner für die Titelseitenfelder
+von Betreuer (\Macro{supervisor}), Gutachter (\Macro{referee}) und Fachreferent
+(\Macro{advisor}). Soll innerhalb eines dieser Felder mehr als eine Person
+angegeben werden, so sind die Einzelpersonen jeweils mit dem Befehl \Macro{and}
+voneinander zu trennen. In diesem Fall werden alle nach der erstgenannten
+folgenden Personen durch den Bezeichner \Term*{\noexpand\dots{}othername}
+ergänzt.
+
+\ChangedAt{v2.02,v2.05}
+Bei den Bezeichnung wird unterschieden, ob eine oder mehrere Personen angegeben
+wurden. Wird lediglich eine Person genannt, so ist eine Unterscheidung nicht
+notwendig und es wird der Singular genutzt. Werden jedoch zwei oder mehr
+Personen angegeben, so wird geprüft, ob der dazugehörige Bezeichner für die
+Zweitperson (\Term*{\noexpand\dots{}othername}) definiert ist. Falls dies so
+ist, wird die alternative Bezeichnung für die erstgenannte Person verwendet,
+andernfalls wird der Plural des Bezeichners verwendet. Dies betrifft alle
+Felder, die über \Macro{referee}, \Macro{advisor}, \Macro{supervisor} oder
+\Macro{professor} angegeben wurden.
+
+\renewcaptionname{ngerman}{\refereename}{(Erst-)Gutachter}
+\renewcaptionname{english}{\refereename}{(First) Referee(s)}
+\renewcaptionname{ngerman}{\advisorname}{(Erster) Fachreferent(en)}
+\renewcaptionname{english}{\advisorname}{(First) Advisor(s)}
+\renewcaptionname{ngerman}{\supervisorname}{(Erst-)Betreuer}
+\renewcaptionname{english}{\supervisorname}{(First) Supervisors(s)}
+\renewcaptionname{ngerman}{\professorname}{Betreuende(r) Hochschullehrer}
+\renewcaptionname{english}{\professorname}{Supervising professor(s)}
+\TermTable{%
+ supervisorname,supervisorothername,refereename,refereeothername,%
+ advisorname,advisorothername,professorname,professorothername%
+}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Term{dissertationname}}
+\begin{Declaration}{\Term{diplomathesisname}}
+\begin{Declaration}{\Term{masterthesisname}}
+\begin{Declaration}{\Term{bachelorthesisname}}
+\begin{Declaration}{\Term{studentthesisname}}
+\begin{Declaration}{\Term{studentresearchname}}
+\begin{Declaration}{\Term{projectpapername}}
+\begin{Declaration}{\Term{seminarpapername}}
+\begin{Declaration}{\Term{termpapername}}
+\begin{Declaration}{\Term{researchname}}
+\begin{Declaration}{\Term{logname}}
+\begin{Declaration}{\Term{internshipname}}
+\begin{Declaration}{\Term{reportname}}
+\printdeclarationlist%
+\index{Abschlussarbeit}%
+\index{Typisierung}%
+%
+Diese Bezeichner dienen zur Typisierung speziell für eine Abschlussarbeit. Wie
+diese genutzt werden können, ist bei der Erläuterung von \Option*{subjectthesis}
+beziehungsweise \Macro*{thesis} und \Macro*{subject}'full' zu finden.
+\TermTable{%
+ dissertationname,diplomathesisname,masterthesisname,bachelorthesisname,%
+ studentresearchname,projectpapername,seminarpapername,researchname,%
+ logname,internshipname,reportname%
+}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}[v2.02]{\Term{graduationtext}}
+\printdeclarationlist%
+\index{Abschlussarbeit}%
+\index{Typisierung}%
+%
+Wurde erkannt, dass das aktuelle Dokument eine Abschlussarbeit ist, so kann der
+zu erlangende akademische Grad mit dem Befehl \Macro{graduation} angegeben
+werden. Bei dessen Ausgabe auf dem Titel wird dabei der entsprechende Text dazu
+angegeben.
+\TermTable*{graduationtext}{.78\textwidth}
+\end{Declaration}
+
+\begin{Declaration}{\Term{datetext}}
+\begin{Declaration}{\Term{defensedatetext}}
+\printdeclarationlist%
+\index{Abschlussarbeit}%
+\index{Datum}%
+\index{Datum!Abgabedatum}%
+\index{Datum!Verteidigungsdatum}%
+%
+Wird mit \Macro{date} das (Abgabe-)Datum und mit \Macro{defensedate} ein Datum
+der Verteidigung für eine Abschlussarbeit angegeben, so werden auch diese
+Felder durch einen Text beschrieben.
+\TermTable{datetext,defensedatetext}
+\index{Titel!Felder|)}%
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Term{dateofbirthtext}}
+\begin{Declaration}{\Term{placeofbirthtext}}
+\begin{Declaration}{\Term{matriculationnumbername}}
+\begin{Declaration}{\Term{matriculationyearname}}
+\begin{Declaration}{\Term{coursename}}
+\begin{Declaration}[v2.02]{\Term{disciplinename}}
+\printdeclarationlist%
+\index{Autorenangaben}%
+\index{Datum!Geburtsdatum}%
+%
+Werden für den Autor oder die Autoren mit dem entsprechenden Befehl das
+Geburtsdatum (\Macro{dateofbirth}), der Geburtsort (\Macro{placeofbirth}), der
+Studiengang (\Macro{course}), die Studienrichtung (\Macro{discipline}) oder
+auch die Matrikelnummer (\Macro{matriculationnumber}) und/oder das
+Immatrikulationsjahr (\Macro{matriculationyear}) angegeben, werden sowohl auf
+der Titelseite als auch auf der gegebenenfalls mit \Package{tudscrsupervisor}
+erstellten Aufgabenstellung die dazugehörigen Bezeichner vorangestellt. Auf
+dem Titel werden diese dabei mit dem durch \Macro{titledelimiter} gegebenen
+Trennzeichen vom eigentlichen Feld abgegrenzt.
+\TermTable{%
+ dateofbirthtext,placeofbirthtext,matriculationnumbername,%
+ matriculationyearname,coursename,disciplinename%
+}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Term{coverpagename}}
+\begin{Declaration}{\Term{titlepagename}}
+\printdeclarationlist%
+\index{Lesezeichen}%
+%
+Diese beiden Bezeichner werden bei aktivierter \Option{tudbookmarks} für das
+Eintragen von Lesezeichen in ein PDF"=Dokument genutzt.
+\TermTable{coverpagename,titlepagename}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Term{abstractname}}
+\printdeclarationlist%
+\index{Zusammenfassung}%
+%
+Dieser Bezeichner wird für die Klasse \Class{tudscrbook} definiert, da selbiger
+von \KOMAScript{} für die Buchklasse nicht vorgesehen wird.
+\TermTable{abstractname}
+\end{Declaration}
+
+\begin{Declaration}{\Term{confirmationname}}
+\begin{Declaration}[v2.02]{\Term{blockingname}}
+\printdeclarationlist%
+\index{Selbstständigkeitserklärung|(}%
+\index{Sperrvermerk|(}%
+%
+Es werden die Bezeichnungen für Selbstständigkeitserklärung und Sperrvermerk
+für die dazugehörigen Überschriften definiert.
+\TermTable{confirmationname,blockingname}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Term{confirmationtext}}
+\begin{Declaration}[v2.02]{\Term{blockingtext}}
+\printdeclarationlist%
+%
+Die Texte der Erklärungen selbst sind derart aufgebaut, dass sie in
+Abhängigkeit von den angegebenen Informationen unterschiedlich ausgeführt
+werden. Innerhalb der Selbstständigkeitserklärung (\Macro{confirmation}) werden
+gegebenenfalls die Felder für den Titel (\Macro{title}) und die Typisierung der
+Abschlussarbeit sowie die angegebenen Unterstützer%
+\footnote{%
+ \Macro{confirmation}[\POParameter{%
+ \Key{\Macro{confirmation}}{supporter=\PName{Unterstützer}}%
+ }]
+ oder \Macro{supporter}[\Parameter{Unterstützer}]%
+}
+beachtet. Für den Sperrvermerk (\Macro{blocking}) wird neben dem Titel
+(\Macro{title}) optional außerdem noch das Feld der externen Firma%
+\footnote{%
+ \Macro{blocking}[%
+ \POParameter{\Key{\Macro{blocking}}{company=\PName{Firma}}}%
+ ]
+ oder \Macro{company}[\Parameter{Firma}]%
+}
+verwendet. Der Vollständigkeit halber werden im Folgenden noch die Texte für
+die Selbstständigkeitserklärung und den Sperrvermerk aufgeführt~-- allerdings
+lediglich die deutschsprachige Version. Dabei werden alle möglichen Felder
+angezeigt.
+
+\begingroup
+ \makeatletter
+ \def\@@title{\PName{Titel}}
+ \def\@@thesis{\PName{Abschlussarbeit}}
+ \def\@supporter{\PName{Vorname Nachname} \and \PName{Vorname Nachname}}
+ \def\@company{\PName{Firma}}
+ \makeatother
+ \vskip\medskipamount\noindent
+ \textbf{Bezeichner}\quad\Term{confirmationtext}%
+ \begin{quoting}
+ \confirmationtext
+ \end{quoting}
+ \textbf{Bezeichner}\quad\Term{blockingtext}%
+ \begin{quoting}
+ \blockingtext
+ \end{quoting}
+
+ \makeatletter
+ \def\@@author{\PName{Vorname Nachname}}%
+ \def\@supporter{\PName{Vorname Nachname}}%
+ \makeatother
+ \newcommand*\showfield[1]{%
+ \Macro*{getfield}[\PParameter{#1}]'none'~\textrightarrow~\getfield{#1}%
+ }%
+ \noindent
+ Soll eine der Erklärungen geändert und dabei der Inhalt eines Feldes genutzt
+ werden, lässt sich hierfür \Macro{getfield} verwenden.%
+ \footnote{%
+ Titel:~\showfield{title}, Art der Abschlussarbeit:~\showfield{thesis},
+ Autor:~\showfield{author}, Firma:~\showfield{company} sowie ebenfalls
+ Unterstützer:~\showfield{supporter}
+ }
+ Gegebenenfalls ist die Definition von \Macro{and} anzupassen.
+\endgroup
+\index{Selbstständigkeitserklärung|)}%
+\index{Sperrvermerk|)}%
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Term{listingname}}
+\begin{Declaration}{\Term{listlistingname}}
+\printdeclarationlist%
+%
+Sollte ein Paket zur Einbindung von externem Quelltext~-- beispielsweise
+das Paket \Package{listings}~-- verwendet werden, so werden diese Bezeichnungen
+für Quelltextausschnitte und das Quelltextverzeichnis verwendet.
+\TermTable{listingname,listlistingname}
+\index{Bezeichner|!)}%
+\end{Declaration}
+\end{Declaration}
+
+\section{Kompatibilitätseinstellungen zu früheren Versionen}
+Bei der Entwicklung von \TUDScript lässt es sich nicht immer vermeiden, dass
+Verbesserungen sowie Korrekturen an den Klassen und Paketen zu Änderungen am
+Ergebnis der Ausgabe führen, insbesondere bei Umbruch und Layout. Für bereits
+archivierte Dokumente, welche mit einer früheren Version erstellt wurden ist
+dies jedoch bei einer erneuten Kompilierung unter Umständen eher unerwünscht.
+
+\begin{Declaration}[v2.03]{\Option{tudscrver=\PName{Version}}}[last]
+\printdeclarationlist%
+\index{Kompatibilität|!}%
+%
+Mit dieser Option wird es möglich, auf das (Umbruch-)Verhalten einer älteren
+respektive früheren Version von \TUDScript umzuschalten, um nach der
+Kompilierung das erwartete Ergebnis zu erhalten. Neue Möglichkeiten, die sich
+nicht auf den Umbruch oder das Layout auswirken, sind auch für den Fall
+verfügbar, dass per Option die Kompatibilität zu einer älteren Version
+ausgewählt wurde.
+
+Bei der Angabe einer unbekannten Version als Wert wird eine Warnung ausgegeben
+und \Option{tudscrver=first} angenommen. Mit \Option{tudscrver=last} wird die
+jeweils aktuell verfügbare Version ausgewählt und folglich auf die zukünftige
+Kompatibilität des Dokumentes zu der aktuell genutzten Version verzichtet.
+Dieses Verhalten entspricht der Voreinstellung. Es ist zu beachten, dass die
+Nutzung von \Option{tudscrver} nur als Klassenoption möglich ist.
+%
+\begin{values}{\Option{tudscrver}}
+\item[\PValue{first}/\PValue{2.02}]
+ \ChangedAt{%
+ v2.03:Satzspiegel im \CD geändert, Logo von \DDC im Fußbereich
+ wird ohne vergrößerten Seitenrand verwendet
+ }
+ Der Satzspiegel im Layout des \CDs (\seeref{\Option{cdgeometry}}) wurde in
+ der Version~v2.03 leicht geändert. Der obere Seitenrand wurde verkleinert,
+ der untere im gleichen Maße vergrößert. Der verfügbare Textbereich ist
+ folglich identisch. Bei der Aktivierung des \DDC-Logos im Fußbereich der
+ Seite (\seeref{\Option{ddcfoot}}) wird im Gegensatz zur Version~v2.02 der
+ gleiche Satzspiegel genutzt. Mit \Option{tudscrver=first} kann dieses
+ Verhalten deaktiviert werden.
+\item[\PValue{2.03}]
+ \index{Leerraum}%
+ \index{Schriftgröße}%
+ \ChangedAt{v2.04:Vertikaler Leerraum abhängig von verwendeter Schriftgröße}
+ Seit der Version~v2.04 werden mehrere Längen in Abhängigkeit der gewählten
+ Schriftgröße definiert. Mit der Wahl \Option{tudscrver=2.03} wird diese
+ Funktionalität deaktiviert, wobei hierfür lediglich die \TUDScript-Option
+ \Option{relspacing=false} aktiviert wird.
+\item[\PValue{2.04}]
+ \index{Satzspiegel}%
+ \ChangedAt{%
+ v2.05:Satzspiegeleinstellungen für die jeweilige ISO/DIN"~Klasse
+ des Papierformates identisch%
+ }
+ Mit der Version~v2.05 werden die vorgegebenen Einstellungen zum Satzspiegel
+ anhand der B"~ISO/DIN"~Reihe vorgenommen. Damit sind für alle Papierformate
+ einer spezifischen ISO/DIN"~Klasse die Seitenränder identisch. Mit der Wahl
+ \Option{tudscrver=2.04} ist der Satzspiegel von der A"~ISO/DIN"~Reihe
+ abhängig, sodass die B- und C"~Papierformate der gleichen Klasse größere
+ Seitenränder erhalten, als die D- und A"~Formate.
+\item[\PValue{2.05}]
+ \ChangedAt{v2.06:Griechische Buchstaben standardmäßig kursiv}
+ Mit dem Wechsel der Hausschrift zu \OpenSans ergaben sich einige Änderungen
+ bezüglich der Erscheinung des \CDs. Mit dieser Kompatibilitätseinstellung
+ werden die alten Schriftfamilien \Univers und \DIN
+ (\Option{cdoldfont=true}, \Option{headings=light}, \Option{ttfont=lmodern})
+ aktiviert. Weiterhin wirkt sich für diese Schriftfamilien im Mathematikmodus
+ die Option \Option{slantedgreek=true} lediglich auf die griechischen
+ Majuskeln aus.
+\item[\PValue{2.06}]
+ Dies ist Kompatibilitätseinstellung für \TUDScript~\vTUDScript{} und wird für
+ zukünftige Änderungen bereits vorgehalten. Soll ein mit der momentan
+ aktuellen Version erzeugtes Dokument auch mit einer späteren Version von
+ \TUDScript nach einem \hologo{LaTeX}"=Lauf das gleiche Ausgabeergebnis
+ liefern, muss dies mit \Option{tudscrver=2.06} angegeben werden.
+\item[\PValue{last}]
+ Es werden keine Kompatibilitätseinstellungen für das Dokument vorgenommen.
+ Mit einer späteren Version von \TUDScript kann ein anderes Umbruchverhalten
+ innerhalb des Dokumentes auftreten. Dies ist die Standardeinstellung.
+\end{values}
+\end{Declaration}
+\end{Declaration*}
+\end{Declaration*}
+\end{Declaration*}
+
+\ToDo[doc]{Wieder rein, falls vernünftig implementiert}[v2.07]
+%\subsection{Fußnoten in Überschriften}
+%\index{Layout!Überschriften}%
+%\index{Fußnoten}%
+%
+%\begin{Declaration}[%
+% v2.02:Fußnoten mit Symbolen in Überschriften möglich%
+%]{\Option{footnotes=\PSet}}[nosymbolheadings]%
+%\begin{Declaration}[v2.02]{\Counter{symbolheadings}}%
+%\printdeclarationlist%
+%%
+%\ToDo[imp]{Fehler \Macro*{addchap} beheben, Paket \Package*{footmisc}}[v2.06]
+%\ToDo[imp]{Zähler auch bei Sternversionen von Kapiteln zurücksetzen}[v2.06]
+%\ToDo[imp]{Fußnoten nicht ins Inhaltsverzeichnis und in die Kopfzeile?!}[v2.06]
+%\ToDo[imp]{Problem mit \Package*{hyperref} lösbar?}[v2.06]
+%%
+%Für die Überschriften wird die \KOMAScript-Option \Option{footnotes} erweitert.
+%Normalerweise kann diese die Werte \PValue{multiple} und \PValue{nomultiple}
+%annehmen, wobei Letzteres der Standardfall ist. Die \TUDScript-Hauptklassen
+%erweitern die Option dahingehend, dass auf die Verwendung von Symbolen anstelle
+%von Zahlen innerhalb der Überschriften umgeschaltet werden kann. Hierfür wird
+%der Zähler \Counter{symbolheadings} definiert, der mit dem Beginn eines neuen
+%Kapitels zurückgesetzt wird.
+%
+%\Attention{%
+% Die Option \Option{footnotes=symbolheadings} ist experimentell und kann unter
+% Umständen zu Fehlern respektive unerwünschten Ergebnissen führen.%
+%}
+%%
+%\begin{values}{\Option{footnotes}}
+%\item[nosymbolheadings/numberheadings]
+% Die Fußnoten der Überschriften werden fortlaufend mit denen des Fließtextes
+% gesetzt.
+%\item[symbolheadings]
+% Für die Überschriften werden symbolische Fußnoten mit einem eigenen Zähler
+% verwendet.
+%\end{values}
+%\end{Declaration}
+%\end{Declaration}
diff --git a/macros/latex/contrib/tudscr/source/doc/tudscr-obsolete.tex b/macros/latex/contrib/tudscr/source/doc/tudscr-obsolete.tex
new file mode 100644
index 0000000000..c44e01b2c8
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/tudscr-obsolete.tex
@@ -0,0 +1,968 @@
+\setchapterpreamble{\tudhyperdef'{sec:obsolete}}
+\chapter{Obsolete sowie vollständig entfernte Optionen und Befehle}
+%
+\section{Veraltete Optionen und Befehle in \TUDScript}
+\index{Kompatibilität}%
+%
+Einige Optionen und Befehle waren während der Weiterentwicklung von \TUDScript
+in ihrer ursprünglichen Form nicht mehr umsetzbar oder wurden~-- unter anderem
+aus Gründen der Kompatibilität zu anderen Paketen~-- schlichtweg verworfen.
+Dennoch besteht für die meisten entfallenen Direktiven eine Möglichkeit, deren
+Funktionalität ohne größere Aufwände mit \TUDScript in der aktuellen Version
+\vTUDScript{} darzustellen. Ist dies der Fall, wird hier entsprechend kurz
+darauf hingewiesen.
+
+\newcommand*\ChangesTo[1]{%
+ Änderungen für \TUDScript~#1%
+ \ChangedAt*{#1:Änderungen gegenüber der vorhergehenden Version}%
+}
+
+\subsection{\ChangesTo{v2.00}}
+\begin{Obsolete}{v2.00}[\Option{cd=\PSet}]{\Option{cd=alternative}}
+\begin{Obsolete}{v2.00}[\Option{cdtitle=\PSet}]{\Option{cdtitle=alternative}}
+\begin{Obsolete}{v2.00}{\Length{titlecolwidth}}
+\begin{Obsolete}{v2.00}{\Term{authortext}}
+\printobsoletelist%
+%
+Die alternative Titelseite ist komplett aus dem \TUDScript-Bundle entfernt
+worden. Dementsprechend entfallen auch die dazugehörigen Optionen sowie Länge
+und Bezeichner.
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+
+\begin{Obsolete}{v2.00:\Option{cd}}{\Option{color=\PBoolean}}
+\printobsoletelist%
+%
+Die Einstellungen der farbigen Ausprägung des Dokumentes erfolgt über die
+Option \Option*{cd}.
+\end{Obsolete}
+
+\begin{Obsolete}{v2.00:\Option{cdfont}}{\Option{tudfonts=\PBoolean}}
+\printobsoletelist%
+%
+Die Option zur Schrifteinstellung ist wesentlich erweitert worden. Aus Gründen
+der Konsistenz wurde diese umbenannt.
+\end{Obsolete}
+
+\begin{Obsolete}{v2.00:\Option{cdfoot}}{\Option{tudfoot=\PBoolean}}
+\printobsoletelist%
+%
+Ebenso wurde die Option \Option*{tudfoot} umbenannt, um dem Namensschema der
+restlichen Optionen von \TUDScript zu entsprechen.
+\end{Obsolete}
+
+\begin{Obsolete}{v2.00}{\Option{headfoot=\PSet}}{%
+ \seeref{\KOMAScript-Optionen \Option*{headinclude} und \Option*{footinclude}}%
+}
+\printobsoletelist%
+%
+Diese Option war für \TUDScript in der \emph{Version~v1.0} notwendig, um die
+parallele Verwendung der beiden Pakete \Package*{typearea} und
+\Package*{geometry} zu ermöglichen. Die Erstellung des Satzspiegels wurde
+komplett überarbeitet. Mittlerweile werden an das Paket \Package*{geometry} die
+Einstellungen für die \KOMAScript"=Optionen \Option*{headinclude} und
+\Option*{footinclude} direkt weitergereicht, sodass die Option
+\Option*{headfoot} nicht mehr notwendig ist und deshalb entfernt wurde.
+\end{Obsolete}
+
+\begin{Obsolete}{v2.00:\Option{cleardoublespecialpage}}{%
+ \Option{partclear=\PBoolean}%
+}
+\begin{Obsolete}{v2.00:\Option{cleardoublespecialpage}}{%
+ \Option{chapterclear=\PBoolean}%
+}
+\printobsoletelist%
+%
+Beide Optionen sind in der neuen Option \Option*{cleardoublespecialpage}
+aufgegangen, womit ein konsistentes Layout erreicht wird. Die ursprünglichen
+Optionen entfallen.
+\end{Obsolete}
+\end{Obsolete}
+
+\begin{Obsolete}{v2.00:\Option{abstract}}{\Option{abstracttotoc=\PBoolean}}
+\begin{Obsolete}{v2.00:\Option{abstract}}{\Option{abstractdouble=\PBoolean}}
+\printobsoletelist%
+%
+Beide Optionen wurden in die Option \Option*{abstract} integriert und sind
+deshalb überflüssig.
+\end{Obsolete}
+\end{Obsolete}
+
+\begin{Obsolete}{v2.00:\Macro{headlogo}}{%
+ \Macro{logofile}[\Parameter{Dateiname}]%
+}
+\printobsoletelist%
+%
+Der Befehl \Macro*{logofile} wurde in \Macro*{headlogo} umbenannt, wobei die
+Funktionalität weiterhin bestehen bleibt.
+\end{Obsolete}
+
+\begin{Obsolete}{v2.00:\Option{tudbookmarks}}{\Option{bookmarks=\PBoolean}}
+\printobsoletelist%
+%
+Die Option wurde umbenannt, um Überschneidungen mit \Package*{hyperref} zu
+vermeiden.
+\end{Obsolete}
+
+\begin{Obsolete}{v2.00}{\Length{signatureheight}}
+\printobsoletelist%
+%
+Die Höhe für die Zeile der Unterschriften wurde dehnbar gestaltet, eine etwaige
+Anpassung durch den Anwender ist nicht vonnöten.
+\end{Obsolete}
+
+\begin{Obsolete}{v2.00:\Macro{titledelimiter}}{\Term{titlecoldelim}}%
+\printobsoletelist%
+%
+Das Trennzeichen für Bezeichnungen beziehungsweise beschreibende Texte und dem
+eigentlichen Feld auf der Titelseite ist nicht mehr sprachabhängig und wurde
+umbenannt.
+\end{Obsolete}
+
+\begin{Obsolete}{v2.00:\Macro{declaration}}{\Macro{confirmationandrestriction}}
+\begin{Obsolete}{v2.00:\Macro{declaration}}{\Macro{restrictionandconfirmation}}
+\printobsoletelist%
+%
+Die beiden Befehle entfallen, stattdessen sollte entweder der Befehl
+\Macro*{declaration} oder die Umgebung \Environment*{declarations} zusammen mit
+den Befehlen \Macro*{confirmation} und \Macro*{blocking} verwendet werden,
+wobei sich diese in der Umgebung in beliebiger Reihenfolge anordnen lassen.
+\end{Obsolete}
+\end{Obsolete}
+
+\begin{Obsolete}{v2.00:\Macro{place}}{\Macro{location}[\Parameter{Ort}]}
+\printobsoletelist%
+%
+In Anlehnung an andere \hologo{LaTeX}"=Pakete und "~Klassen wurde
+\Macro*{location} in \Macro*{place} umbenannt.
+\end{Obsolete}
+
+\minisec{\taskname}
+\begin{Bundle}{\Package{tudscrsupervisor}}
+Die Umgebung für die Erstellung einer Aufgabenstellung für eine
+wissenschaftliche Arbeit wurde in das Paket \Package{tudscrsupervisor}
+ausgelagert. Dieses muss für die Verwendung der Umgebung \Environment*{task}
+und der daraus abgeleiteten standardisierten Form zwingend geladen werden.
+
+\begin{Obsolete}{v2.00:\Environment{task}}{\Option{cdtask=\PSet}}
+\begin{Obsolete}{v2.00}{\Option{taskcompact=\PBoolean}}
+\begin{Obsolete}{v2.00}{\Length{taskcolwidth}}
+\printobsoletelist%
+%
+Die Klassenoption \Option*{cdtask} ist komplett entfernt worden, alle
+Einstellungen, erfolgen direkt über das optionale Argument der Umgebung
+\Environment*{task}. Die Variante eines kompakten Kopfes mit der Option
+\Option*{taskcompact} wird nicht mehr bereitgestellt. Die Möglichkeit zur
+manuellen Festlegung der Spaltenbreite für den Kopf der Aufgabenstellung mit
+\Length*{taskcolwidth} wurde aufgrund der verbesserten automatischen Berechnung
+entfernt.
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+
+\begin{Obsolete}{v2.00:\Macro{taskform}}{%
+ \Macro{tasks}[\Parameter{Ziele}\Parameter{Schwerpunkte}]%
+}
+\begin{Obsolete}{v2.00:\Term{focusname}}{\Term{focustext}}
+\begin{Obsolete}{v2.00:\Term{objectivesname}}{\Term{objectivestext}}
+\printobsoletelist%
+%
+Der Befehl \Macro*{tasks} wurde in \Macro*{taskform} umbenannt und in der
+Funktionalität erweitert. Die darin verendeten Bezeichner wurden ebenfalls
+leicht abgewandelt.
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+
+\begin{Obsolete}{v2.00:\Macro{matriculationnumber}}{%
+ \Macro{studentid}[\Parameter{Matrikelnummer}]%
+}
+\begin{Obsolete}{v2.00:\Macro{matriculationyear}}{%
+ \Macro{enrolmentyear}[\Parameter{Immatrikulationsjahr}]%
+}
+\begin{Obsolete}{v2.00:\Macro{date}}{\Macro{submissiondate}[\Parameter{Datum}]}
+\begin{Obsolete}{v2.00:\Macro{dateofbirth}}{%
+ \Macro{birthday}[\Parameter{Geburtsdatum}]%
+}
+\begin{Obsolete}{v2.00:\Macro{placeofbirth}}{%
+ \Macro{birthplace}[\Parameter{Geburtsort}]%
+}
+\begin{Obsolete}{v2.00:\Macro{issuedate}}{%
+ \Macro{startdate}[\Parameter{Ausgabedatum}]%
+}
+\printobsoletelist%
+%
+Alle Befehle wurden umbenannt und sind jetzt neben der \taskname{} auch für die
+Titelseite im \CD nutzbar.
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+
+\begin{Obsolete}{v2.00:\Term{matriculationnumbername}}{\Term{studentidname}}
+\begin{Obsolete}{v2.00:\Term{matriculationyearname}}{\Term{enrolmentname}}
+\begin{Obsolete}{v2.00:\Term{datetext}}{\Term{submissiontext}}
+\begin{Obsolete}{v2.00:\Term{dateofbirthtext}}{\Term{birthdaytext}}
+\begin{Obsolete}{v2.00:\Term{placeofbirthtext}}{\Term{birthplacetext}}
+\begin{Obsolete}{v2.00:\Term{supervisorothername}}{\Term{supervisorIIname}}
+\begin{Obsolete}{v2.00:\Term{defensedatetext}}{\Term{defensetext}}
+\begin{Obsolete}{v2.00:\Term{issuedatetext}}{\Term{starttext}}
+\begin{Obsolete}{v2.00:\Term{duedatetext}}{\Term{duetext}}
+\printobsoletelist%
+%
+Die Bezeichner wurden in Anlehnung an die dazugehörigen Befehlsnamen umbenannt.
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Bundle}
+
+
+\subsection{\ChangesTo{v2.02}}
+\begin{Obsolete}{v2.02:\Option{pageheadingsvskip}}{\Length{chapterheadingvskip}}
+\printobsoletelist%
+%
+Die vertikale Positionierung von Überschriften wurde aufgeteilt. Zum einen kann
+diese für Titel"~, Teile- und Kapitelseiten (\Option*{chapterpage=true}) über
+die Option \Option*{pageheadingsvskip} geändert werden. Für Kapitelüberschriften
+(\Option*{chapterpage=false}) sowie den Titelkopf (\Option*{titlepage=false})
+kann dies unabhängig davon mit \Option*{headingsvskip} erfolgen.
+\end{Obsolete}
+
+\begin{Obsolete}{v2.02:\Macro{graduation}}{%
+ \Macro{degree}[\OParameter{Abk.}\Parameter{Grad}]%
+}
+\begin{Obsolete}{v2.02:\Term{graduationtext}}{\Term{degreetext}}
+\printobsoletelist%
+%
+Der Befehl wurde zur Erhöhung der Kompatibilität mit anderen Paketen umbenannt,
+der dazugehörige Bezeichner dahingehend angepasst.
+\end{Obsolete}
+\end{Obsolete}
+
+\begin{Obsolete}{v2.02:\Macro{blocking}}{%
+ \Macro{restriction}[\OLParameter{Firma}]%
+}
+\begin{Obsolete}{v2.02:\Term{blockingname}}{\Term{restrictionname}}
+\begin{Obsolete}{v2.02:\Term{blockingtext}}{\Term{restrictiontext}}
+\printobsoletelist%
+%
+Der Befehl wurde zur Erhöhung der Kompatibilität mit anderen Paketen umbenannt,
+die dazugehörigen Bezeichner dahingehend angepasst.
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+
+\begin{Obsolete}{}{\Environment{tudpage}[\OLParameter{Sprache}]}
+\begin{Obsolete}{v2.02:\Key{\Environment{tudpage}}{pagestyle}}{%
+ \Key{\Environment{tudpage}}{head=\PSet}
+}
+\begin{Obsolete}{v2.02:\Key{\Environment{tudpage}}{pagestyle}}{%
+ \Key{\Environment{tudpage}}{foot=\PSet}
+}
+\printobsoletelist%
+%
+Diese beiden Parameter der Umgebung \Environment*{tudpage} wurden in ihrer
+Funktionalität durch den Parameter \Key*{\Environment{tudpage}}{pagestyle}
+ersetzt.
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+
+
+
+\minisec{Änderungen im Paket \Package{tudscrsupervisor}}
+Im Paket \Package{tudscrsupervisor} gab es ein paar kleinere Anpassungen.
+\begin{Bundle}{\Package{tudscrsupervisor}}
+\begin{Obsolete}{v2.02:\Macro{discipline}}{%
+ \Macro{branch}[\Parameter{Studienrichtung}]%
+}
+\begin{Obsolete}{v2.02:\Term{disciplinename}}{\Term{branchname}}
+\printobsoletelist%
+%
+Für die \taskname{} wurden der Befehl sowie der dazugehörige Bezeichner
+umbenannt.
+\end{Obsolete}
+\end{Obsolete}
+
+\begin{Obsolete}{v2.02:\Macro{contactperson}}{%
+ \Macro{contact}[\Parameter{Kontaktperson(en)}]%
+}
+\begin{Obsolete}{v2.02:\Term{contactpersonname}}{\Term{contactname}}
+\begin{Obsolete}{v2.02:\Macro{telephone}}{%
+ \Macro{phone}[\Parameter{Telefonnummer}]%
+}
+\begin{Obsolete}{v2.02:\Macro{emailaddress}}{%
+ \Macro{email}[\Parameter{E-Mail-Adresse}]%
+}
+\printobsoletelist%
+%
+Alle genannten Befehle und Bezeichner wurden für den \noticename{} umbenannt.
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Bundle}
+
+
+\subsection{\ChangesTo{v2.03}}
+\begin{Obsolete}{v2.03:\Option{cdgeometry}}{\Option{geometry=\PBoolean}}
+\printobsoletelist%
+%
+Die Option \Option*{geometry} wurde zur Konsistenz sowie dem Vermeiden
+eines möglichen Konfliktes mit einer späteren \KOMAScript-Version umbenannt.
+Die Funktionalität bleibt bestehen.
+\end{Obsolete}
+
+\begin{Obsolete}{v2.03:\Option{cdfont}}{\Option{cdfonts=\PBoolean}}
+\begin{Obsolete}{v2.03:\Option{cdfont}}{\Option{din=\PBoolean}}
+\printobsoletelist%
+%
+Die Option \Option*{cdfont} wurde erweitert und fungiert als zentrale
+Schnittstelle zur Schrifteinstellung.
+\end{Obsolete}
+\end{Obsolete}
+
+\begin{Obsolete}{v2.03:\Option{cdmath}}{\Option{sansmath=\PBoolean}}
+\printobsoletelist%
+%
+Die Option \Option*{sansmath} wurde aus Gründen der Konsistenz umbenannt.
+Zusätzlich wurde die Funktionalität erweitert.
+\end{Obsolete}
+
+\begin{Obsolete}{v2.03:\Option{cdhead}}{\Option{barfont=\PSet}}
+\begin{Obsolete}{v2.03:\Option{cdhead}}{\Option{widehead=\PBoolean}}
+\printobsoletelist%
+%
+Die Optionen \Option*{barfont} und \Option*{widehead} wurden in der Option
+\Option*{cdhead} zusammengefasst.
+\end{Obsolete}
+\end{Obsolete}
+
+\begin{Obsolete}{}{\Environment{tudpage}[\OLParameter{Sprache}]}
+\begin{Obsolete}{v2.03}{\Key{\Environment{tudpage}}{color=\PName{Farbe}}}
+\printobsoletelist%
+%
+Der Parameter \Key*{\Environment{tudpage}}{color=\PValueName{Farbe}} der
+\Environment*{tudpage}"=Umgebung wurde ersatzlos entfernt.
+\end{Obsolete}
+\end{Obsolete}
+
+
+\subsection{\ChangesTo{v2.04}}
+\begin{Obsolete}{v2.04}{\Option{fontspec=\PBoolean}}%
+\printobsoletelist%
+%
+Anstatt die Option \Option*{fontspec} zu aktivieren, kann einfach das Paket
+\Package{fontspec} in der Dokumentpräambel geladen werden. Dadurch können
+anschließend zusätzliche Pakete genutzt werden, welche auf die Verwendung von
+\Package{fontspec} angewiesen sind. Sollte die Option \Option*{fontspec}
+dennoch genutzt werden, müssen alle auf das Paket \Package{fontspec}
+aufbauenden Einstellungen durch den Anwender mit
+\Macro*{AfterPackage}[\PParameter{fontspec}\PParameter{\dots}]
+verzögert werden. In \fullref{sec:fonts} sind weitere Hinweise zur Verwendung
+des Paketes \Package{fontspec} zu finden.
+\end{Obsolete}
+
+
+\subsection{\ChangesTo{v2.05}}
+\begin{Obsolete}{v2.05:\Option{pageheadingsvskip}}{\Length{pageheadingsvskip}}
+\begin{Obsolete}{v2.05:\Option{headingsvskip}}{\Length{headingsvskip}}
+\printobsoletelist%
+%
+Die vertikale Positionierung von speziellen Überschriften erfolgt nicht mehr
+über die Längen \Length*{headingsvskip} und \Length*{pageheadingsvskip} sondern
+über die Optionen \Option*{headingsvskip} sowie \Option*{pageheadingsvskip}.
+\end{Obsolete}
+\end{Obsolete}
+
+
+\begin{Obsolete}{v2.05:\Option{footlogoheight}}{\Length{footlogoheight}}%
+\printobsoletelist%
+%
+Auch die Höhe der Logos im Fußbereich der \PageStyle*{tudheadings}"=Seitenstile
+wird von nun an mit der Option \Option*{footlogoheight} und nicht mehr mit der
+Länge \Length*{footlogoheight} festgelegt.
+\end{Obsolete}
+
+
+\subsection{\ChangesTo{v2.06}}
+\begin{Declaration}[v2.06]{\Option{cdoldfont}}[false]
+\printdeclarationlist%
+%
+Mit der Version~v2.06 wird standardmäßig \OpenSans als Hausschrift verwendet.
+Um jedoch weiterhin ältere Dokumente mit den Schriften \Univers und \DIN
+erzeugen zu können, wird diese Option bereitgestellt.
+\Attention{%
+ Diese kann ausschließlich als Klassenoption~-- oder für die Pakete
+ \Package*{tudscrfonts} und \Package*{fix-tudscrfonts} als Paketoption~--
+ genutzt werden.
+} Eine späte Optionenwahl mit \Macro*{TUDoption} oder \Macro*{TUDoptions} ist
+nicht möglich. Wurden mit \Option{cdoldfont=true} die alten Schriftfamilien
+aktiviert, kann jedoch weiterhin die Option \Option*{cdfont} genutzt werden.
+%
+\begin{values}{\Option{cdoldfont}}
+\item[false]
+ Das Verhalten ist äquivalent zu \Option*{cdfont=false}, die Hausschrift ist
+ nicht aktiv.
+\item[true]
+ Es werden die alten Hausschriften \Univers für den Fließtext sowie \DIN für
+ Überschriften der obersten Gliederungsebenen bis einschließlich
+ \Macro*{subsubsection} genutzt. Die Schriftstärke lässt sich mit
+ \Option*{cdfont=true} respektive \Option*{cdfont=heavy} anpassen.
+\end{values}
+%
+Für die \TUDScript-Klassen sowie die vom Paket \Package*{fix-tudscrfonts}
+unterstützten Dokumentklassen kann die für die Gliederungsebenen verwendete
+Schriftart angepasst werden.
+%
+\begin{values}{\Option{cdoldfont}}
+\item[nodin]
+ Für Überschriften wird \Univers anstatt \DIN verwendet.
+\item[din]
+ Mit dieser Einstellung wird die Schrift \DIN in den Überschriften verwendet.
+\item[onlydin]
+ Hiermit werden nur die Überschriften in \DIN gesetzt, für den Fließtext kommt
+ nicht \Univers sondern die \hologo{LaTeX}"=Standardschriften respektive die
+ eines geladenen Schriftpaketes zum Einsatz.
+\end{values}
+\end{Declaration}
+
+\begin{Obsolete}{v2.06}{\Macro{univln}}
+\begin{Obsolete}{v2.06}{\Macro{textuln}[\Parameter{Text}]}
+\begin{Obsolete}{v2.06}{\Macro{univrn}}
+\begin{Obsolete}{v2.06}{\Macro{texturn}[\Parameter{Text}]}
+\begin{Obsolete}{v2.06}{\Macro{univbn}}
+\begin{Obsolete}{v2.06}{\Macro{textubn}[\Parameter{Text}]}
+\begin{Obsolete}{v2.06}{\Macro{univxn}}
+\begin{Obsolete}{v2.06}{\Macro{textuxn}[\Parameter{Text}]}
+\begin{Obsolete}{v2.06}{\Macro{univls}}
+\begin{Obsolete}{v2.06}{\Macro{textuls}[\Parameter{Text}]}
+\begin{Obsolete}{v2.06}{\Macro{univrs}}
+\begin{Obsolete}{v2.06}{\Macro{texturs}[\Parameter{Text}]}
+\begin{Obsolete}{v2.06}{\Macro{univbs}}
+\begin{Obsolete}{v2.06}{\Macro{textubs}[\Parameter{Text}]}
+\begin{Obsolete}{v2.06}{\Macro{univxs}}
+\begin{Obsolete}{v2.06}{\Macro{textuxs}[\Parameter{Text}]}
+\begin{Obsolete}{v2.06}{\Macro{dinbn}}
+\begin{Obsolete}{v2.06}{\Macro{textdbn}[\Parameter{Text}]}
+\printobsoletelist%
+%
+Wird die Option \Option{cdoldfont} nicht aktiviert, werden auch die Befehle zur
+expliziten Auswahl eines Schriftschnittes nicht mehr bereitgestellt.
+Stattdessen können \Macro*{cdfont} oder \Macro*{textcd}[\Parameter{Text}]
+genutzt werden, welche in \autoref{sec:text} zu finden sind.
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+\end{Obsolete}
+
+\begin{Obsolete}{v2.06}[\Option{cdfont=\PSet}]{\Option{cdfont=din}}{%
+ entfällt, \seeref{\Option{cdoldfont=din}}%
+}
+\begin{Obsolete}{v2.06}[\Option{cdfont=\PSet}]{\Option{cdfont=nodin}}{%
+ entfällt, \seeref{\Option{cdoldfont=nodin}}%
+}
+\printobsoletelist%
+%
+Die Einstellungen für Überschriften sind mit der Umstellung auf \OpenSans nicht
+mehr notwendig. Für die Verwendung der alten Schriftfamilien \Univers und \DIN
+muss die Option \Option{cdoldfont} aktiviert werden.
+\end{Obsolete}
+\end{Obsolete}
+
+\begin{Obsolete}{v2.06:\Option{cleardoublespecialpage}}{%
+ \Option{clearcolor=\PBoolean}%
+}
+\printobsoletelist%
+%
+Die Option \Option*{clearcolor=\PBoolean} wurde zur Vereinheitlichung der
+Benutzerschnittstelle in \Option*{cleardoublespecialpage=\PSet} integriert.
+\end{Obsolete}
+
+
+\minisec{Auszeichnungen in Überschriften}
+%
+Für alle Gliederungsebenen bis einschließlich \Macro*{subsubsection} werden
+die Überschriften in Großbuchstaben der Schrift \DIN gesetzt, wenn diese mit
+den entsprechenden Einstellungen (\Option*{cdoldfont=true/onyldin}) aktiviert
+wurde. Hierfür wird intern \Macro*{MakeTextUppercase}(\Package{textcase})'none'
+aus dem Paket \Package{textcase} genutzt, welches zusammen mit den alten
+Schriftfamilien geladen wird. Sollen bestimmte Kleinbuchstaben erhalten
+bleiben, ist \Macro*{NoCaseChange}(\Package{textcase})'none' zu verwenden.
+%
+\begin{Example}
+In einem Kapitel wird ein einzelnes Wort in Minuskeln geschrieben:
+\begin{Code}[escapechar=§]
+\chapter{§Ü§berschrift mit \NoCaseChange{kleinem} Wort}
+\end{Code}
+\end{Example}
+%
+Die Schrift \DIN durfte laut \CD nur mit Majuskeln (Großbuchstaben) verwendet
+werden, weshalb das beschriebene Vorgehen lediglich im \emph{Ausnahmefall}
+anzuwenden ist. Die manuellen Nutzung sollte mit
+\Macro*{MakeTextUppercase}[%
+ \PParameter{\Macro{textdbn}[\Parameter{Text}]}%
+](\Package{textcase})'none' geschehen.
+
+\begin{Obsolete}{v2.06}{%
+ \Macro{ifdin}[\Parameter{Dann-Teil}\Parameter{Sonst-Teil}]
+}%
+\printobsoletelist%
+%
+Der Befehl \Macro*{ifdin} prüft, ob die Schriftfamilie \DIN aktiv ist und führt
+in diesem Fall \Parameter{Dann-Teil} aus, andernfalls \Parameter{Sonst-Teil}.
+\end{Obsolete}
+
+
+
+\section{Das Paket \Package{tudscrcomp} -- Umstieg von anderen Klassen}
+\begin{Bundle*}{\Package{tudscrcomp}}
+\index{Kompatibilität!\Class{tudbook}|(}%
+\index{Kompatibilität!\Class{tudmathposter}|(}%
+
+\noindent\Attention{%
+ Sollten Sie \Class{tudbook}|?|, \Class{tudletter}|?|, \Class{tudfax}|?|,
+ \Class{tudhaus}|?|, \Class{tudform}|?| oder auch \Class{tudmathposter}|?|
+ beziehungsweise eine der \TUDScript-Klassen in der \emph{Version~v1.0}
+ nie genutzt haben, können Sie dieses \autorefname ohne Weiteres überspringen.
+ Sämtliche hier vorgestellten Optionen und Befehle sind in der aktuellen
+ Version von \TUDScript obsolet.
+}
+
+\bigskip\noindent
+Zu Beginn der Entwicklung von \TUDScript diente die Klasse \Class{tudbook} als
+grundlegende Basis zur Orientierung. Ziel war es, sämtliche Funktionalitäten
+dieser Klasse beizubehalten und zusätzlich den vollen Funktionsumfang der
+\KOMAScript-Klassen nutzbar zu machen. Bei der kompletten Neuimplementierung
+der \TUDScript-Klassen wurde sehr viel verändert und verbessert. Ein Teil der
+implementierten Optionen und Befehle war jedoch bereits in der
+\emph{Version~v1.0} von \TUDScript unerwünschte Relikte, mit denen lediglich
+die Kompatibilität zur \Class{tudbook}"=Klasse und ihren Derivaten
+gewährleistet werden sollte. Mit der Version~v2.00 wurden einige der unnötigen
+Befehle und Optionen aus Gründen der Konsistenz nur umbenannt, andere wiederum
+wurden vollständig entfernt oder über neue Befehle und Optionen in ihrer
+Funktionalität ersetzt und erweitert.
+
+Das Paket \Package{tudscrcomp} dient der Überführung von Dokumenten, welche
+entweder mit der \Class{tudbook}"=Klasse, ihren Derivaten,
+der Klasse \Class{tudmathposter} oder mit \TUDScript in der \emph{Version~v1.0}
+erstellt wurden, auf \TUDScript~\vTUDScript.
+\Attention{%
+ Falls Sie das Paket verwenden wollen, sollte es \textbf{direkt} nach der
+ Dokumentklasse geladen werden. Andernfalls kann es im Zusammenhang mit
+ anderen Paketen zu Problemen kommen.
+}
+
+Es werden einige Optionen und Befehle bereitgestellt, welche von den zuvor
+genannten Klassen definiert werden, um das entsprechende Verhalten nachzuahmen.
+Damit soll vor allem die Kompatibilität bei einer Änderung der Dokumentklasse
+sichergestellt werden. Die Intention ist, Dokumente möglichst schnell und
+einfach auf die \TUDScript-Klassen portieren zu können. Des Weiteren ist
+beschrieben, wie sich die Funktionalität ohne eine Verwendung des Paketes
+\Package{tudscrcomp} mit den Mitteln von \TUDScript umsetzen lassen. Für den
+Satz neuer Dokumente wird empfohlen, auf den Einsatz dieses Paketes komplett zu
+verzichten und stattdessen direkt die \TUDScript-Befehle zu nutzen.
+
+\begin{Declaration}{\Macro{einrichtung}[\Parameter{Fakultät}]}{%
+ identisch zu \Macro*{faculty}[\Parameter{Fakultät}]%
+}
+\begin{Declaration}{\Macro{fachrichtung}[\Parameter{Einrichtung}]}{%
+ identisch zu \Macro*{department}[\Parameter{Einrichtung}]%
+}
+\begin{Declaration}{\Macro{institut}[\Parameter{Institut}]}{%
+ identisch zu \Macro*{institute}[\Parameter{Institut}]%
+}
+\begin{Declaration}{\Macro{professur}[\Parameter{Lehrstuhl}]}{%
+ identisch zu \Macro*{chair}[\Parameter{Lehrstuhl}]%
+}
+\printdeclarationlist%
+%
+Dies sind die deutschsprachigen Befehle für den Kopf im \CD.
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Option{serifmath}}{%
+ identisch zu \Option*{cdmath=false}%
+}
+\printdeclarationlist%
+%
+Die Funktionalität wird durch die Option \Option*{cdmath} bereitgestellt.
+\end{Declaration}
+
+\begin{Declaration}{\Macro{tudfont}[\Parameter{Scriftart}]}{%
+ identisch zu \Macro*{cdfont}[\Parameter{Scriftart}]%
+}
+\printdeclarationlist%
+%
+Die direkte Auswahl der Schriftart sollte mit \Macro*{cdfont} erfolgen.
+Zusätzlich gibt es den Befehl \Macro*{textcd}, mit dem die Auszeichnung
+eines bestimmten Textes in einer anderen Schriftart erfolgen kann, ohne die
+Dokumentschrift umzuschalten.
+\end{Declaration}
+\index{Kompatibilität!\Class{tudmathposter}|)}%
+
+
+\subsection{Optionen und Befehle aus \Class{tudbook} \& Co.}
+%
+Die nachfolgenden Optionen, Umgebungen sowie Befehle werden~-- zumindest
+teilweise~-- von den Klassen \Class{tudbook}, \Class{tudletter},
+\Class{tudfax}, \Class{tudhaus}, \Class{tudform} sowie dem Paket
+\Package{tudthesis}'none' und \TUDScript in der \emph{Version~v1.0} definiert.
+Diese werden durch das Paket \Package{tudscrcomp} für \TUDScript~\vTUDScript{}
+zur Verfügung gestellt.
+
+\begin{Declaration}{\Option{colortitle}}{%
+ identisch zu \Option*{cdtitle=color}%
+}
+\begin{Declaration}{\Option{nocolortitle}}{%
+ identisch zu \Option*{cdtitle=true}%
+}
+\printdeclarationlist%
+%
+Die Funktionalität wird durch die Option \Option*{cdtitle} bereitgestellt.
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Macro{moreauthor}[\Parameter{Autorenzusatz}]}{%
+ identisch zu \Macro*{authormore}[\Parameter{Autorenzusatz}]%
+}
+\printdeclarationlist%
+%
+Ursprünglich war diese Befehl für das Unterbringen aller möglichen,
+zusätzlichen Autoreninformationen gedacht. Auch der Befehl \Macro*{authormore}
+ist ein Rudiment davon. Empfohlen wird stattdessen die Verwendung der Befehle
+\Macro*{dateofbirth}, \Macro*{placeofbirth}, \Macro*{matriculationnumber} und
+\Macro*{matriculationyear} sowie \Macro*{course} und \Macro*{discipline}.
+\end{Declaration}
+
+\begin{Declaration}{\Macro{submitdate}[\Parameter{Datum}]}{%
+ identisch zu \Macro*{date}[\Parameter{Datum}]%
+}
+\printdeclarationlist%
+%
+Die Funktionalität wird durch den erweiterten Standardbefehl \Macro*{date}
+abgedeckt.
+\end{Declaration}
+
+\begin{Declaration}{\Macro{supervisorII}[\Parameter{Name}]}{%
+ identisch zur Verwendung von \Macro*{and} innerhalb von \Macro*{supervisor}%
+}
+\printdeclarationlist%
+%
+Es ist \Macro*{supervisor}[\PParameter{\PName{Name} \Macro*{and} \PName{Name}}]
+statt \Macro*{supervisorII}[\Parameter{Name}] zu verwenden.
+\end{Declaration}
+
+\begin{Declaration}{\Macro{supervisedby}[\Parameter{Bezeichnung}]}{%
+ siehe \Term*{supervisorname}%
+}
+\begin{Declaration}{\Macro{supervisedIIby}[\Parameter{Bezeichnung}]}{%
+ siehe \Term*{supervisorothername}%
+}
+\begin{Declaration}{\Macro{submittedon}[\Parameter{Bezeichnung}]}{%
+ siehe \Term*{datetext}%
+}
+\printdeclarationlist%
+%
+Zur Änderung der Bezeichnung der Betreuer sollten die sprachabhängigen
+Bezeichner wie in \autoref{sec:localization} beschrieben angepasst werden. Eine
+Verwendung der hier beschriebenen Befehle entfernt die Abhängigkeit der
+Bezeichner von der verwendeten Sprache.
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Option{ddcfooter}}{%
+ identisch zu \Option*{ddcfoot=true}%
+}
+\printdeclarationlist%
+%
+Die Funktionalität wird durch die Option \Option*{ddcfoot} bereitgestellt.
+\end{Declaration}
+
+\begin{Declaration}{\Macro{dissertation}}
+\printdeclarationlist%
+%
+Die Funktionalität kann durch die Befehle \Macro*{thesis}[\PParameter{diss}]
+und \Macro*{referee} sowie die Bezeichner \Term*{refereename} und
+\Term*{refereeothername} dargestellt werden.
+\end{Declaration}
+
+\begin{Declaration}{\Macro{chapterpage}}
+\printdeclarationlist%
+%
+Durch diesen Befehl können Kapitelseiten konträr zur eigentlichen Einstellung
+aktiviert oder deaktiviert werden. Prinzipiell ist dies auch durch eine
+Änderung der Option \Option*{chapterpage} möglich. Allerdings wird davon
+abgeraten, da dies zu einem inkonsistenten Layout innerhalb des Dokumentes
+führt.
+\end{Declaration}
+
+\begin{Declaration}{\Environment{theglossary}[\OParameter{Präambel}]}
+\begin{Declaration}{\Macro{glossitem}[\Parameter{Begriff}]}
+\printdeclarationlist%
+%
+Die \Class{tudbook}"=Klasse stellt eine rudimentäre Umgebung für ein Glossar
+bereit. Allerdings gibt es dafür bereits zahlreiche und besser implementierte
+Pakete. Daher wird für diese Umgebung keine Portierung vorgenommen, sondern
+lediglich die ursprüngliche Definition übernommen. Allerdings sein an dieser
+Stelle auf wesentlich bessere Lösungen wie beispielsweise das Paket
+\Package{glossaries} oder~-- mit Abstrichen~-- das nicht ganz so umfangreiche
+Paket \Package{nomencl} verwiesen.
+\end{Declaration}
+\end{Declaration}
+\index{Kompatibilität!\Class{tudbook}|)}%
+
+\subsection{Optionen und Befehle aus \Class{tudmathposter}}
+\index{Kompatibilität!\Class{tudmathposter}|(}%
+%
+\ChangedAt{v2.05:Unterstützung von \Class{tudmathposter}}
+Die Klasse~\Class{tudmathposter} wird~-- im Gegensatz zu den zuvor genannten
+Klassen von Klaus Bergmann~-- weiterhin gepflegt und kann bedenkenlos zum
+Setzen von Postern im A0"~Format verwendet werden. Dennoch gab es vermehrt
+Anfragen bezüglich einer Posterklasse auf Basis der \TUDScript-Klassen, um
+beispielsweise die Schriftgröße oder auch das Papierformat einfach anpassen zu
+können. Um von \Class{tudmathposter} einen möglichst einfachen Übergang auf
+\Class{tudscrposter} zu gewährleisten, kann zusätzlich letzterer Klasse das
+Paket \Package{tudscrcomp} geladen werden, welches die nachfolgend erläuterten
+Anwenderbefehle bereitstellt. Von \Package{tudscrcomp} werden außerdem einige
+Pakete geladen, welche normalerweise durch \Class{tudmathposter} eingebunden
+werden. Dies sind \Package{amsmath}, \Package{amsfonts}, \Package{calc},
+\Package{textcomp} sowie \Package{tabularx}.
+
+Es ist nicht beabsichtigt, dass bei einem Umstieg von \Class{tudmathposter} auf
+\Class{tudscrposter} in Verbindung mit \Package{tudscrcomp} das Ausgabeergebnis
+identisch ist. Vielmehr soll damit die Möglichkeit geschaffen werden, auf
+\Class{tudmathposter} basierende Dokumente auf die \Class{tudscrposter} zu
+überführen. In jedem Fall sollte bei einem Umstieg auf \TUDScript-Posterklasse
+beachtet werden, dass für diese Klasse eine explizite Wahl der Schriftgröße
+über die Option~\Option{fontsize}(\Package{koma-script})'none' notwendig ist.
+Um kongruent zur Klasse \Class{tudmathposter} zu bleiben, ist die Wahl einer
+Schriftgröße von \Option*{fontsize=\PValue{34\dots36pt}} sinnvoll. Für weitere
+Informationen zu diesem Thema sind in \autoref{sec:fontsize} vorhanden.
+Weiterhin sollte für ein ähnliches Ausgabeergebnis die Absatzformatierung über
+die \KOMAScript-Option \Option*{parskip=half-} eingestellt werden. Ein blaues
+\DDC-Logo im Fußbereich lässt sich über \Option*{ddcfoot=blue} aktivieren.
+
+\begin{Declaration}{\Option{tudmathposterfoot}}%
+\printdeclarationlist%
+%
+Durch die Klasse \Class{tudmathposter} wird der Fußbereich zweispaltig jedoch
+asymmetrisch und ohne Überschriften innerhalb der beiden Spalten gesetzt.
+Dieses Verhalten lässt sich mit der Option \Option{tudmathposterfoot}
+auswählen. Alternativ kann auch \Option*{cdfoot=tudmathposter}'none' respektive
+\Option*{cdfoot=tudscrposter}'none' zum Aktivieren beziehungsweise Deaktivieren
+verwendet werden.
+\end{Declaration}
+
+\begin{Declaration}{\Option{bluebg}}{%
+ identisch zu \Option*{backcolor=true}(\Class{tudscrposter})%
+}
+\printdeclarationlist%
+%
+Mit der Klasse \Class{tudscrposter} lässt sich das Verhalten mit der Option
+\Option*{backcolor}(\Class{tudscrposter}) umsetzen.
+\end{Declaration}
+
+\begin{Declaration}{\Macro{telefon}[\Parameter{Telefonnummer}]}{identisch zu
+ \Macro*{telephone}[\Parameter{Telefonnummer}](\Class{tudscrposter})%
+}
+\begin{Declaration}{\Macro{fax}[\Parameter{Telefaxnummer}]}{identisch zu
+ \Macro*{telefax}[\Parameter{Telefaxnummer}](\Class{tudscrposter})%
+}
+\begin{Declaration}{\Macro{email}[\Parameter{E-Mail-Adresse}]}{identisch zu
+ \Macro*{emailaddress*}[\Parameter{E-Mail-Adresse}]%
+}
+\begin{Declaration}{\Macro{homepage}[\Parameter{URL}]}{identisch zu
+ \Macro*{webpage*}[\Parameter{URL}](\Class{tudscrposter})%
+}
+\printdeclarationlist%
+%
+Dies sind die von \Class{tudmathposter} definierten Befehle für die Felder im
+vordefinierten Fußbereich des Posters. Es ist dabei insbesondere zu beachten,
+dass die angegebene E"~Mail-Adresse sowie die URL nicht automatisch formatiert
+werden.
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Macro{fusszeile}[\Parameter{Inhalt}]}{%
+ identisch zu \Macro*{footcontent}[\Parameter{Inhalt}]
+}
+\begin{Declaration}{\Macro{footcolumn0}[\Parameter{Inhalt}]}{%
+ identisch zu \Macro*{footcontent}[\Parameter{Inhalt}]
+}
+\begin{Declaration}{\Macro{footcolumn1}[\Parameter{Inhalt}]}{%
+ identisch zu \Macro*{footcontent}[\Parameter{Inhalt}\POParameter{*}]
+}
+\begin{Declaration}{\Macro{footcolumn2}[\Parameter{Inhalt}]}{%
+ identisch zu \Macro*{footcontent}[\PParameter{*}\OParameter{Inhalt}]
+}
+\printdeclarationlist%
+%
+Mit diesen Befehlen kann die Gestalt des Fußes angepasst werden, wobei entweder
+der Bereich über die gesamte Breite (\Macro{fusszeile}, \Macro{footcolumn0})
+oder lediglich die linke (\Macro{footcolumn1}) respektive die rechte Spalte
+(\Macro{footcolumn2}) angepasst wird. Für zusätzliche Hinweise zur Anpassung
+des Fußbereichs~-- insbesondere für die Schriftformatierung~-- sollte die
+Beschreibung von \Macro*{footcontent}'full' zu Rate gezogen werden.
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+
+\begin{Declaration}{\Macro{zweitlogofile}[\Parameter{Dateiname}]}{%
+ identisch zu \Macro*{headlogo}[\Parameter{Dateiname}]
+}
+\begin{Declaration}{\Macro{institutslogofile}[\Parameter{Dateiname}]}{%
+ \seeref{\Macro*{footlogo}}%
+}
+\begin{Declaration}{\Macro{drittlogofile}[\Parameter{Dateiname}]}{%
+ \seeref{\Option*{ddc} und \Option*{ddcfoot}}%
+}
+\printdeclarationlist%
+%
+Für die Angabe von Logos für den Kopf- und Fußbereich existieren diese Befehle.
+Bei der Verwendung von \Macro{institutslogofile}[\Parameter{Dateiname}] ist zu
+beachten, dass die angegebene Datei sehr weit rechts im Fußbereich des Posters
+gesetzt wird. Dabei kommt bei der Verwendung im Hintergrund der von \TUDScript
+für das Setzen von Logos im Fußbereich tatsächlich vorgesehene Befehl in der
+Form \Macro*{footlogo}[\PParameter{{{,}{,}{,}{,}{,}{,}{,}\PName{Dateiname}{,}}}]
+zum Einsatz. Das Makro \Macro{drittlogofile} wird von \Class{tudmathposter} für
+die Angabe eines \DDC-Logos im rechten Seitenfuß bereitgestellt. Für die
+\TUDScript-Klassen gibt es hierfür die Optionen \Option*{ddc} beziehungsweise
+\Option*{ddcfoot}.
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Macro{zweitlogo}[\Parameter{Definition}]}{%
+ keine Funktionalität, \seeref{\Macro*{headlogo}}
+}
+\begin{Declaration}{\Macro{institutslogo}[\Parameter{Definition}]}{%
+ keine Funktionalität, \seeref{\Macro*{footlogo}}
+}
+\begin{Declaration}{\Macro{drittlogo}[\Parameter{Definition}]}{%
+ keine Funktionalität, \seeref{\Option*{ddc} und \Option*{ddcfoot}}%
+}
+\printdeclarationlist%
+%
+Mit diesen Befehlen kann der Anwender bei \Class{tudmathposter} die Definition
+für das Einbinden diverser Logos selber vornehmen. Dies ist für \TUDScript
+nicht vorgesehen. Im Zweifel sollten die Möglichkeiten der korrelierenden
+Befehle genutzt werden. Bei der Verwendung eines dieser Makros wird lediglich
+eine Warnung ausgegeben.
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{%
+ \Macro{topsection}[\OParameter{Kurzform}\Parameter{Überschrift}]%
+}
+\begin{Declaration}{%
+ \Macro{topsubsection}[\OParameter{Kurzform}\Parameter{Überschrift}]%
+}
+\printdeclarationlist%
+%
+Der Grund für die Existenz dieser beiden Befehle bei \Class{tudmathposter} ist
+nicht ohne Weiteres nachvollziehbar. Beide entsprechen in ihrem Verhalten den
+Standardbefehlen \Macro*{section} und \Macro*{subsection}, setzen allerdings
+keinen vertikalen Abstand vor der erzeugten Überschrift. Auch wenn das aus
+typographischer Sicht wohl eher unvorteilhaft ist, werden diese beiden Befehle
+bereitgestellt.
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{%
+ \Macro{centersection}[\OParameter{Kurzform}\Parameter{Überschrift}]%
+}
+\begin{Declaration}{%
+ \Macro{centersubsection}[\OParameter{Kurzform}\Parameter{Überschrift}]%
+}
+\begin{Declaration}{%
+ \Macro{topcentersection}[\OParameter{Kurzform}\Parameter{Überschrift}]%
+}
+\begin{Declaration}{%
+ \Macro{topcentersubsection}[\OParameter{Kurzform}\Parameter{Überschrift}]%
+}
+\printdeclarationlist%
+%
+Weiterhin werden auch noch eigene Makros zum Setzen zentrierter Überschriften
+definiert~-- ein simples Umdefinieren von \Macro*{raggedsection} ist dafür im
+Normalfall absolut ausreichend. Und um die Sache vollständig zu machen, gibt es
+die zentrierten Überschriften auch noch ohne vorgelagerten, vertikalen Abstand.
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Environment{farbtabellen}}
+\begin{Declaration}{\Macro{blautabelle}}
+\begin{Declaration}{\Macro{grautabelle}}
+\printdeclarationlist%
+%
+Wird innerhalb der \Environment{farbtabellen}"=Umgebung eine Tabelle gesetzt,
+so werden die Zeilen alternierend farbig hervorgehoben. Standardmäßig sind
+hierfür leichte Blautönen eingestellt, was auch jederzeit mit dem Aufruf von
+\Macro{blautabelle} wiederhergestellt werden kann. Alternativ zu dieser
+Darstellung kann mit \Macro{grautabelle} auf eine Verwendung von leichten
+Grautönen umgestellt werden.
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Environment{figurehere}}
+\begin{Declaration}{\Environment{tablehere}}
+\printdeclarationlist%
+%
+Diese beiden Umgebungen können genutzt werden, um nicht"~gleitende Abbildungen
+oder Tabellen zu setzen.
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Macro{schnittrand}}
+\printdeclarationlist%
+%
+Wird \Macro{schnittrand} \textbf{vor} dem Laden des Paketes \Package{tudscrcomp}
+definiert, so wird der Inhalt des Befehls als Längenwert interpretiert. Dieser
+wird verwendet, um den zuvor festgelegten Satzspiegel über die drei Parameter
+\Key*{\Macro{geometry}(\Package{geometry})}{paper=\PName{Papierformat}},
+\Key*{\Macro{geometry}(\Package{geometry})}{layout=\PName{Zielformat}} und
+\Key*{\Macro{geometry}(\Package{geometry})}{layoutoffset=\PName{Längenwert}} des
+Befehls \Macro*{geometry}(\Package{geometry})'none' aus dem Paket
+\Package*{geometry} zu setzen und das erzeugte Papierformat um den gegebenen
+Längenwert an allen Rändern zu vergrößern. Somit wird eine Beschnittzugabe
+hinzugefügt, \emph{ohne dabei die Seitenränder des Entwurfslayouts anzupassen}.
+In \fullref{sec:tips:crop} sind zusätzliche Informationen zu diesem Thema zu
+finden.
+\end{Declaration}
+\index{Kompatibilität!\Class{tudmathposter}|)}%
+\end{Bundle*}
diff --git a/macros/latex/contrib/tudscr/source/doc/tudscr-packages.tex b/macros/latex/contrib/tudscr/source/doc/tudscr-packages.tex
new file mode 100644
index 0000000000..13ce2d1ec8
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/tudscr-packages.tex
@@ -0,0 +1,1054 @@
+\setchapterpreamble{\tudhyperdef'{sec:packages}}
+\chapter{Benötigte, unterstützte und empfehlenswerte Pakete}
+\index{Kompatibilität|?}%
+%
+\section{Notwendige und ergänzende Pakete für \TUDScript}
+\tudhyperdef*{sec:packages:needed}%
+Diese Pakete werden von den \TUDScript"~Klassen zwingend benötigt und
+eingebunden. Möchten Sie eines der im Folgenden aufgezählten Pakete selber
+mit bestimmten Optionen nutzen, so sollten diese bereits \emph{vor} dem Laden
+der Dokumentklasse an das Paket weitergereicht werden, falls bei der folgenden
+Beschreibung des Paketes nichts anderweitiges angegeben wird.
+%
+\begin{Example}
+Das Weiterreichen von Optionen an Pakete muss folgendermaßen erfolgen:
+\begin{Code}[escapechar=§]
+\PassOptionsToPackage§\Parameter{Paketoptionen}\Parameter{Paket}§
+\documentclass§\OParameter{Klassenoptionen}\PParameter{tudscr\dots}§
+\end{Code}
+\end{Example}
+%
+\begin{packages}
+\item[koma-script,typearea,scrbase,scrlayer-scrpage,scrextend]
+ \begin{Declaration*}{\Class{scrbook}}
+ \begin{Declaration*}{\Class{scrreprt}}
+ \begin{Declaration*}{\Class{scrartcl}}
+ \begin{Declaration*}{\Class{scrlttr2}}
+ \ChangedAt{%
+ v2.02:Paket \Package{scrlayer-scrpage} ist für \TUDScript unabdingbar%
+ }%
+ Das \KOMAScript-Bundle ist die zentrale Grundlage für \TUDScript. Neben den
+ Klassen \Class{scrbook}, \Class{scrreprt} und \Class{scrartcl} wird das Paket
+ \Package{scrbase} benötigt. Dieses erlaubt das Definieren von Klassenoptionen
+ im Stil von \KOMAScript, welche auch noch nach dem Laden der Klasse mit den
+ Befehlen \Macro{TUDoption} und \Macro{TUDoptions} geändert werden können. Für
+ die Bereitstellung der \PageStyle{tudheadings}"=Seitenstile ist das Paket
+ \Package{scrlayer-scrpage} notwendig. Wenn es nicht durch den Anwender~-- mit
+ beliebigen Optionen~-- geladen wird, erfolgt dies am Ende der Präambel
+ automatisch durch \TUDScript.
+ \end{Declaration*}
+ \end{Declaration*}
+ \end{Declaration*}
+ \end{Declaration*}
+\item[opensans,iwona]
+ \index{Schriftart|!}%
+ \ChangedAt{%
+ v2.06:Pakete \Package{opensans}, \Package{iwona} und \Package{mathastext}
+ sind für \TUDScript zwingend erforderlich%
+ }%
+ Das Paket \Package{opensans} stellt die Schriftfamilie \OpenSans sowohl für
+ den Fließtext als auch den mathematischen Satz zur Verfügung. Es enthält alle
+ nötigen Schriftschnitte sowohl im Type1- als auch im OpenType-Format. Da die
+ Schriftfamilie in der aktuellen Version keine mathematischen Glyphen
+ bereitstellt, werden die Pakete \Package{mathastext} und \Package{iwona}
+ zusätzlich genutzt, um zumindest einen halbwegs erträglichen mathematischen
+ Satz mit \OpenSans zu ermöglichen. Werden dabei zusätzliche Symbole benötigt,
+ wird empfohlen, auf das Paket \Package{amssymb} zu verzichten und anstelle
+ dessen \Package{mdsymbol} zu laden.
+\item[mweights]
+ \index{Schriftstärke}%
+ \ChangedAt{%
+ v2.06:Paket \Package{mweights} ist für \TUDScript zwingend erforderlich%
+ }%
+ In \hologo{LaTeXe} existieren die Schriftfamilien für Serifenschriften
+ (\Macro*{rmfamily}), serifenlose Schriften (\Macro*{sffamily}) sowie die
+ Schreibmaschinenschriften (\Macro*{ttfamily}). Deren Schriftstärke wird für
+ gewöhnlich mit den beiden Befehlen \Macro*{mddefault} und \Macro*{bfdefault}
+ einheitlich festgelegt. Bei der Verwendung unterschiedlicher Schriftpakete
+ kann es unter Umständen zu Problemen bei den Schriftstärken kommen. Diese
+ Paket erlaubt die individuelle Definition der Schriftstärke für jede der drei
+ Schriftfamilien.
+\item[geometry]
+ \index{Satzspiegel}%
+ Das Paket wird zum Festlegen der Seitenränder respektive des Satzspiegels
+ verwendet.
+ \Attention{%
+ Ein Weiterreichen zusätzlicher Optionen an das Paket wird dringlich nicht
+ empfohlen.
+ }%
+\item[graphicx]
+ \index{Grafiken}%
+ Dies ist das De"~facto"~Standard"~Paket zum Einbinden von Grafiken. Zum
+ Setzen des Logos der \TnUD im Kopf sowie aller weitere Abbildungen und Logos
+ wird \Macro{includegraphics}(\Package{graphicx})'none' genutzt.
+\item[xcolor]
+ \index{Farben}%
+ Damit werden die Farben des \CDs zur Verwendung im Dokument definiert.
+ Genaueres ist bei der Beschreibung von \Package{tudscrcolor}'auto' zu finden.
+\item[kvsetkeys]
+ Das von \Package{scrbase} geladene Paket \Package{keyval} ermöglicht das
+ Definieren von Klassen"~ und Paketoptionen sowie Parametern nach dem
+ Schlüssel"=Wert"=Prinzip. Mit diesem Paket kann das Verhalten für unbekannte
+ Schlüssel festgelegt werden.
+\item[etoolbox,xpatch,letltxmacro,etexcmds]
+ Diese Pakete stellen viele Funktionen zum Testen und zur Ablaufkontrolle
+ bereit. Weiterhin wird das Manipulieren vorhandener Makros ermöglicht.
+\item[environ]
+ \index{Befehlsdeklaration}%
+ Es wird eine verbesserte Deklaration von Umgebungen ermöglicht, bei der auch
+ beim Abschluss der Umgebung auf die übergebenen Parameter zugegriffen werden
+ kann.
+\item[trimspaces]
+ Bei mehreren Eingabefeldern für den Anwender werden die Argumente mithilfe
+ dieses Paketes um eventuell angegebene, unnötige Leerzeichen befreit.
+\end{packages}
+%
+
+
+
+\minisec{Durch \TUDScript direkt unterstütze Pakete}
+%
+Einige der unter \autoref{sec:packages:recommended} beschriebenen Pakete werden
+durch \TUDScript direkt unterstützt und erweitern dessen Funktionalität. Dies
+sind namentlich \Package{hyperref}, \Package{multicol}, \Package{quoting},
+\Package{ragged2e} und \Package{crop} sowie \Package{isodate} respektive
+\Package{datetime2}. Weitere Informationen dazu ist den nachfolgenden
+Beschreibung des jeweiligen Paketes zu entnehmen.
+
+
+
+\newcommand*\RecPack{%
+ \hyperref[sec:packages:recommended]{Paketbeschreibung}:\xspace%
+}
+\section{Empfehlenswerte Pakete}
+\tudhyperdef*{sec:packages:recommended}%
+%
+In diesem \autorefname wird eine Vielzahl an Paketen~-- zumeist kurz~--
+vorgestellt, welche sich für mich persönlich bei der Arbeit mit \hologo{LaTeX}
+bewährt haben. Einige davon werden außerdem im Tutorial \Tutorial{treatise} in
+ihrer Anwendung beschrieben. Für detaillierte Informationen sowie bei Fragen zu
+den einzelnen Paketen sollte die jeweilige Dokumentation%
+\footnote{Kommandozeile/Terminal: \Path{texdoc\,\PName{Paketname}}}
+zu Rate gezogen werden, das Lesen der hier gegebenen Kurzbeschreibung ersetzt
+dies in keinem Fall.
+
+
+\subsection{Pakete zur Verwendung in jedem Dokument}
+Die hier vorgestellten Pakete gehören meiner Meinung nach in die Präambel eines
+jeden Dokumentes. Die Dokumentsprache sollte in jedem Fall mit \Package{babel}
+oder \Package{polyglossia} definiert werden~-- auch wenn dies Englisch ist. Für
+deutschsprachige Dokumente ist für eine annehmbare Worttrennung beim Einsatz
+von \Engine{pdfLaTeX} das Paket \Package{hyphsubst} unbedingt zu verwenden.
+
+\begin{packages}
+\item[fontenc,fontspec]
+ \index{Zeichensatzkodierung}%
+ \ChangedAt{v2.02:\RecPack \Package{fontspec}}
+ Die Zeichensatzkodierung des Ausgabefonts sollte immer festgelegt werden. Für
+ \Engine{pdfLaTeX} ist die Ausgabe als 7"~bit"~kodierte Schrift in der
+ Voreinstellung gewählt, was unter anderem dazu führt, dass keine echten
+ Umlaute im erzeugten PDF"~Dokument verwendet werden. Um auf 8"~bit"~Schriften
+ zu schalten, ist \Macro*{usepackage}[\POParameter{T1}\PParameter{fontenc}] zu
+ nutzen.
+
+ Für die Unicode"=Textsatzsysteme \Engine{LuaLaTeX} oder \Engine{XeLaTeX}
+ sollte stattdessen das Paket \Package{fontspec} verwendet werden. Damit
+ können Systemschriften im OpenType-Format und einer beliebigen
+ Zeichensatzkodierung eingebunden werden, womit sich die Auswahl der
+ verwendbaren Schriften stark erweitert. Das Paket wird durch \TUDScript
+ unterstützt.
+\item[microtype]
+ \index{Typografie}%
+ Dieses Paket kümmert sich um den optischen Randausgleich%
+ \footnote{englisch: protrusion, margin kerning}
+ und das Nivellieren der Wortzwischenräume%
+ \footnote{englisch: font expansion}
+ im Dokument. Es funktioniert nicht mit der klassischen \Engine*{TeX}"~Engine,
+ wohl jedoch mit \Engine*{pdfTeX} oder \Engine*{LuaTeX} sowie \Engine*{XeTeX}.
+\item[babel,polyglossia]
+ \index{Sprachunterstützung}%
+ \index{Bezeichner}%
+ Mit dem Paket \Package{babel} erfolgt die Einstellung der im Dokument
+ verwendeten Sprache(n). Bei mehreren angegebenen Sprachen ist die zuletzt
+ geladene die Hauptsprache des Dokumentes. Die gewünschten Sprachen sollten
+ nicht als Paketoption sondern als Klassenoption und gesetzt werden, damit
+ auch andere Pakete auf die Spracheinstellungen zugreifen können. Für
+ deutschsprachige Dokumente ist die Option \Option*{ngerman} für die neue oder
+ \Option*{german} für die alte deutsche Rechtschreibung zu verwenden.
+
+ Mit dem Laden von \Package{babel} und der dazugehörigen Sprachen werden
+ sowohl die Trennmuster als auch die sprachabhängigen Bezeichner angepasst.
+ Von einer Verwendung der obsoleten Pakete \Package{german} beziehungsweise
+ \Package{ngerman} anstelle von \Package{babel} wird abgeraten. Für
+ \Engine{LuaLaTeX} und \Engine{XeLaTeX} kann das Paket \Package{polyglossia}
+ genutzt werden.
+\item[hyphsubst,dehyph-exptl]
+ \index{Worttrennung|!}%
+ Die möglichen Trennstellen von Wörtern wird von \hologo{LaTeX} mithilfe
+ eines Algorithmus berechnet. Dieser wird für deutschsprachige Texte mit dem
+ Paket \Package{hyphsubst} entscheidend verbessert. \Engine{LuaLaTeX} und
+ \Engine{XeLaTeX} nutzen diese Trennmuster automatisch, für \Engine{pdfLaTeX}
+ müssen diese mit folgendermaßen eingebunden werden:
+ \begin{Code}[escapechar=§]
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+ \end{Code}\vspace{-\baselineskip}%
+ In \autoref{sec:tips:hyphenation} wird genauer auf das Zusammenspiel von
+ \Package{hyphsubst} und \Package{babel} sowie \Package{fontenc} eingegangen,
+ ein Blick dahin wird dringend empfohlen. Zusätzliche werden dort weitere
+ Hinweise für eine verbesserte Worttrennung gegeben.
+\end{packages}
+
+
+\subsection{Pakete zur situativen Verwendung}
+Die nachfolgenden Pakete sollten nicht zwangsweise in jedem Dokument geladen
+werden sondern nur, falls dies auch tatsächlich notwendig ist. Zur besseren
+Übersicht wurde versucht, diese thematisch passend zu gruppieren. Daraus lässt
+sich keinerlei Wertung bezüglich ihrer Nützlichkeit oder meiner persönlichen
+Wertschätzung ableiten.
+
+
+\subsubsection{Typografie und Layout}
+\index{Typografie|(}%
+%
+Neben dem zuvor beschriebenem Paket \Package{microtype}, welches verantwortlich
+für mikrotypografische Feinheiten ist, existieren weitere Pakete, die vorrangig
+die Makrotypografie adressieren.
+%
+\begin{packages}
+\item[setspace]
+ \index{Zeilenabstand}%
+ Die Vergrößerung des Zeilenabstandes wird:
+ %
+ \begin{enumerate}[itemindent=0pt,labelwidth=*,labelsep=1em,label=\Roman*.]
+ \stditem viel zu häufig und völlig unnötig gefordert und
+ \stditem schließlich auch noch zu groß gewählt.
+ \end{enumerate}
+ %
+ Die Forderung nach Erhöhung des Zeilenabstandes~-- in der Typografie als
+ Durchschuss bezeichnet~-- kommt aus den Zeiten der Textverarbeitung mit der
+ Schreibmaschine. Ein einzeiliger Zeilenabstand bedeutete hier, dass die
+ Unterlängen der oberen Zeile genau auf der Höhe der Oberlängen der folgenden
+ Zeile lagen. Ein anderthalbzeiliger Zeilenabstand erzielte hier somit einen
+ akzeptablen Durchschuss. Eine Erhöhung des Durchschusses bei der Verwendung
+ von \hologo{LaTeX} ist an und für sich nicht notwendig. Sinnvoll ist dies
+ nur, wenn im Fließtext serifenlose Schriften zum Einsatz kommen, um die damit
+ verbundene schlechte Lesbarkeit etwas zu verbessern.
+
+ Ist die Erhöhung des Durchschusses wirklich notwendig, sollte das Paket
+ \Package{setspace} genutzt werden. Dieses stellt den Befehl
+ \Macro{setstretch}[\Parameter{Faktor}](\Package{setspace})'none' zur
+ Verfügung, mit dem der Durchschuss respektive Zeilenabstand angepasst werden
+ kann. Der Wert des Faktors ist standardmäßig auf~1 gestellt und sollte
+ maximal bis~1.25 vergrößert werden. Der Befehl \Macro*{onehalfspacing} aus
+ diesem Paket setzt diesen Wert auf eben genau~1.25. Allerdings ist hier
+ anzumerken, dass die Vergrößerung des Zeilenabstandes~-- so wie ich es mir
+ angelesen habe~-- aus der Sicht eines Typographen keine Spielerei ist sondern
+ vielmehr allein der Lesbarkeit des Textes dient und möglichst gering
+ ausfallen sollte.
+
+ Ziel ist es, beim Lesen nach dem Beenden einer Zeile das Auffinden der neuen
+ Zeile zu vereinfachen. Bei Serifen ist dies durch die Betonung der Grundlinie
+ sehr gut möglich. Bei serifenlosen Schriften~-- wie der im \TUDCD verwendeten
+ \OpenSans~-- ist dies schwieriger und ein erweiterter Abstand der Zeilen kann
+ hierbei hilfreich sein. Jedoch sollte nicht nach dem Motto
+ \enquote{viel hilft viel} verfahren werden. Für dieses Dokument wurde
+ \Macro{setstretch}[\PParameter{1.1}](\Package{setspace})'none' für den
+ Zeilenabstand gewählt. Weitere Tipps sind in \autoref{sec:tips:headings} und
+ \autoref{sec:tips:headline} zu finden.
+\item[multicol]
+ \index{Satzspiegel!zweispaltig|?}%
+ \index{Mehrspaltensatz}%
+ \index{Satzspiegel!mehrspaltig}%
+ Hiermit kann jeglicher beliebiger Inhalt in zwei oder mehr Spalten ausgegeben
+ werden, wobei~-- im Gegensatz zum normalen zweispaltigen Satz über die
+ \KOMAScript-Option \Option{twocolumn}(\Package{typearea})'none'~-- für einen
+ Spaltenausgleich gesorgt wird. Unterstützt wird das Paket innerhalb der
+ Umgebungen \Environment{abstract} und \Environment{tudpage}.
+\item[balance]
+ \index{Satzspiegel!zweispaltig}%
+ Dieses Paket ermöglicht einen Spaltenausgleich im zweispaltigen Satz auf der
+ letzten Dokumentseite. Alternativ dazu kann auch \Package{multicol} verwendet
+ werden.
+\item[isodate,datetime2]
+ \index{Datum|?}%
+ Mit \Macro{printdate}[\Parameter{Datum}](\Package{isodate})'none' formatiert
+ das Paket \Package{isodate} die Ausgabe eines Datums automatisch in ein
+ spezifiziertes Format. Die Datumsangabe kann dabei im deutschen, englischen
+ oder ISO"~Format erfolgen. Alternativ kann auch das Paket \Package{datetime2}
+ genutzt werden, welches zwingend die Eingabe im ISO"~Format erfordert. Wird
+ eines der beiden Pakete geladen, werden alle Datumsfelder, welche durch die
+ \TUDScript-Klassen definiert wurden,%
+ \footnote{%
+ \Macro{date}, \Macro{dateofbirth} und \Macro{defensedate} sowie aus
+ \Package{tudscrsupervisor} \Macro{duedate}(\Package{tudscrsupervisor}) und
+ \Macro{issuedate}(\Package{tudscrsupervisor})%
+ }
+ im durch das jeweilige Paket definierten Ausgabeformat ausgegeben.
+\item[quoting]
+ \index{Zitate}%
+ \hologo{LaTeX} bietet von Haus aus \emph{zwei} verschiedene Umgebungen~--
+ \Environment{quote}(\Package{koma-script})'none' und
+ \Environment{quotation}(\Package{koma-script})'none'~-- für Zitate und
+ ähnliches an. Allerdings werden durch beide Umgebungen die \KOMAScript-Option
+ \Option{parskip=\PName{Methode}}(\Package{koma-script})'none'|declare|
+ ignoriert. Mit der Umgebung \Environment{quoting}(\Package{quoting})'none'
+ aus dem gleichnamigen Paket lässt sich dieses Problem umgehen. Wird das Paket
+ geladen, wird diese innerhalb der \Environment{abstract}"=Umgebung verwendet.
+\item[csquotes]
+ \index{Zitate}%
+ Das Paket stellt unter anderem den Befehl
+ \Macro{enquote}[\Parameter{Zitat}](\Package{csquotes})'none'
+ zur Verfügung, welcher Anführungszeichen in Abhängigkeit der gewählten
+ Sprache setzt. Zusätzlich werden weitere Kommandos und Optionen für die
+ spezifischen Anforderungen des Zitierens bei wissenschaftlichen Arbeiten
+ angeboten. Außerdem wird es durch \Package{biblatex} unterstützt und sollte
+ zumindest bei dessen Verwendung geladen werden.
+\item[noindentafter]
+ \ChangedAt{v2.02:\RecPack \Package{noindentafter}}
+ Mit diesem Paket lassen sich automatische Absatzeinzüge für selbst zu
+ bestimmende Befehle und Umgebungen unterdrücken.
+\item[ragged2e]
+ \index{Worttrennung}%
+ Das Paket verbessert den Flattersatz, indem für diesen die Worttrennung
+ aktiviert wird.
+\item[fnpct]
+ \index{Fußnoten|?}%
+ \ChangedAt{v2.05:\RecPack \Package{fnpct}}
+ Diese Paket sorgt zum einen für das Einhalten der richtigen Reihenfolge von
+ Satzzeichen und Fußnoten und zum anderen wird das typografisch korrekte
+ Setzen mehrerer, nacheinander folgender Fußnoten unterstützt.
+\item[xspace,xpunctuate]
+ \index{Befehlsdeklaration}%
+ Mit \Package{xspace} kann bei der Definition eigener Makros der Befehl
+ \Macro{xspace}(\Package{xspace})'none' genutzt werden. Dieser setzt ein
+ gegebenenfalls notwendiges Leerzeichen automatisch. In
+ \autoref{sec:tips:xspace} ist die Definition eines solchen Befehls
+ exemplarisch ausgeführt. Durch das Paket \Package{xpunctuate} wird
+ \Package{xspace} um die Beachtung von Interpunktionen erweitert.
+\item[ellipsis]
+ \index{Befehlsdeklaration}%
+ In \hologo{LaTeX} folgen den Befehlen für Auslassungspunkte (\Macro{dots} und
+ \Macro{textellipsis}) \emph{immer} ein Leerzeichen. Dies kann unter Umständen
+ unerwünscht sein. Mit dem Paket \Package{ellipsis} wird das nachfolgende
+ Leerzeichen~-- im Gegensatz zum Standardverhalten~-- nur gesetzt, wenn ein
+ Satzzeichen und kein Buchstabe folgt, \seeref*{\autoref{sec:tips:dots}}.
+\stditem[\Application{DeLig}<delig>, \Package{selnolig}]
+ \index{Ligaturen}%
+ Hierbei handelt es sich um ein Java"~Script, das anhand eines Wörterbuches
+ falsche Ligaturen innerhalb eines Dokumentes automatisiert entfernt. Diese
+ müssten~-- insbesondere in deutschen Texten aufgrund der vielen Komposita~--
+ für einen guten Satz manuell aufgelöst werden.%
+ \footnote{%
+ Das sind \enquote{ff}, \enquote{fi}, \enquote{fl}, \enquote{ffi}, und
+ \enquote{ffl} bei den meisten \hologo{LaTeX}"=Schriften.%
+ }
+ Mit \Engine{LuaLaTeX} als Textsatzsystem kann auch \Package{selnolig}
+ alternativ dazu verwendet werden.
+\index{Typografie|)}%
+\end{packages}
+
+
+\subsubsection{Rechtschreibung}
+\index{Rechtschreibung|(}%
+%
+Für die Rechtschreibkontrolle zeichnet im Normalfall der verwendete Editor
+verantwortlich. Dennoch gibt es einige wenige Pakete, welche sich diesem Thema
+widmen. Diese sind jedoch ausschließlich nutzbar, wenn als Textsatzsystem
+\Engine{LuaLaTeX} genutzt wird.
+\begin{packages}
+\item[lua-check-hyphen]
+ \index{Worttrennung}%
+ Hiermit lassen sich mit \Engine{LuaLaTeX} Trennstellen am Zeilenende zur
+ Prüfung markieren. Zum Thema der \textit{korrekten Worttrennung} sei außerdem
+ auf \autoref{sec:tips:hyphenation} verwiesen.
+\item[spelling]
+ Wird \Engine{LuaLaTeX} als Textsatzsystem verwendet, wird mit diesem Paket
+ der reine Textanteil aus dem \hologo{LaTeX}"~Dokument extrahiert~-- wobei
+ Makros und aktive Zeichen entfernt werden~-- und in eine separate Textdatei
+ geschrieben. Anschließend kann diese Datei mit einer externen Software zur
+ Rechtschreibprüfung wie \Application{GNU~Aspell}, \Application{Hunspell} oder
+ \Application{LanguageTool} analysiert und falsch geschriebene Wörter im
+ PDF"~Dokument hervorgehoben werden.
+\index{Rechtschreibung|)}%
+\end{packages}
+
+
+\subsubsection{Schriften und Sonderzeichen}
+\begin{packages}
+\item[lmodern]<lm>
+ \index{Schriftart}%
+ Soll mit den klassischen \hologo{LaTeX}"=Standardschriften gearbeitet werden,
+ empfiehlt sich die Verwendung des Paketes \Package{lmodern}. Dieses
+ verbessert die Darstellung der Computer~Modern sowohl am Bildschirm als auch
+ beim finalen Druck.
+\item[cfr-lm]
+ \index{Schriftart}%
+ Dieses experimentelle Paket liefert weitere Schriftschnitte für das Paket
+ \Package{lmodern}.
+\item[newtx,newtxmath]<newtx>
+ \index{Schriftart}%
+ \index{Mathematiksatz}%
+ Es werden einige alternative Schriften sowohl für den Fließtext
+ (\textit{Times} und \textit{Helvetica}) als auch den Mathematikmodus
+ bereitgestellt.
+\item[libertine]
+ \index{Schriftart}%
+ Das Paket stellt die Schriften Linux~Libertine und Linux~Biolinum zur
+ Verfügung. Um diese Schriftart auch für den Mathematikmodus verwenden zu
+ können, sollte \Package{newtxmath} aus dem \Package{newtx}"=Bundle mit
+ \Macro*{usepackage}[\POParameter{libertine}\PParameter{newtxmath}] in der
+ Präambel eingebunden werden. Das Paket \Package{libgreek} enthält griechische
+ Buchstaben für Linux~Libertine.
+\item[relsize]
+ \index{Schriftgröße}%
+ Die Größe einer Textauszeichnung kann relativ zur aktuellen Schriftgröße
+ gesetzt werden.
+\item[textcomp]
+ \index{Sonderzeichen}%
+ Es werden zusätzliche Symbole und Sonderzeichen wie beispielsweise das
+ Promille- oder Eurozeichen sowie Pfeile für den Fließtext zur Verfügung
+ gestellt.
+\end{packages}
+%
+\index{Mathematiksatz|(}%
+Auch für (serifenlose) Mathematikschriften gibt es einige nützliche Pakete.
+Werden die Schriften des \CDs genutzt, sei auf die Option \Option{cdmath}
+verwiesen.
+%
+\begin{packages}
+\item[sansmathfonts,sansmath]
+ Sollten die normalen \hologo{LaTeX}"=Schriften Computer~Modern verwendet
+ werden, lässt sich dieses Paket zum serifenlosen Setzen mathematischer
+ Ausdrücke nutzen. Ein alternatives Paket mit der gleichen Zielstellung ist
+ \Package{sansmath}
+\item[sfmath]
+ Diese Paket verfolgt ein ähnliches Ziel, kann jedoch im Gegensatz zu
+ \Package{sansmath} nicht nur für Computer~Modern sondern mit der
+ entsprechenden Option auch für Latin~Modern, Helvetica und
+ Computer~Modern~Bright verwendet werden.
+\item[mathastext]
+ Mit dem Paket wird das Ziel verfolgt, aus der genutzten Schrift für den
+ Fließtext alle notwendigen Zeichen für den Mathematiksatz zu extrahieren.
+\end{packages}
+
+
+\subsubsection{Mathematiksatz}
+Dies sind Pakete, die Umgebungen und Befehle für den Mathematiksatz sowie das
+Setzen von Einheiten und Zahlen im Allgemeinen anbieten.
+
+\begin{packages}
+ \item[mathtools,amsmath]
+ Dieses Paket stellt für das De"~facto"~Standard"~Paket \Package{amsmath}
+ für Mathematikumgebungen Bugfixes zur Verfügung und erweitert dieses.
+ \item[bm]
+ Das Paket bietet mit \Macro*{bm} eine Alternative zu \Macro*{boldsymbol} im
+ \hrfn{http://tex.stackexchange.com/questions/3238}{Mathematiksatz}. Sollten
+ bei der Nutzung des Paketes Fehler auftreten, sei auf dessen Dokumentation
+ und insbesondere auf das Makro \Macro*{bmmax} verwiesen.
+\end{packages}
+%
+Die korrekte Formatierung von Zahlen ist häufig ein Problem bei der Verwendung
+von \hologo{LaTeX}. Insbesondere, wenn in einem deutschsprachigen Dokument
+Daten im englischsprachigen Format verwendet werden, kommt es zu Problemen.
+Dafür wird im \TUDScript-Bundle das Paket \Package{mathswap} bereitgestellt.
+Dennoch gibt es zu diesem auch Alternativen.
+%
+\begin{packages}
+\index{Zifferngruppierung|(}%
+ \item[ionumbers]
+ Dieses Paket ist mir tatsächlich erst bei der Arbeit an \Package{mathswap}
+ bekannt geworden. Es bietet mehr Funktionalitäten und kann als Alternative
+ dazu betrachtet werden.
+ \item[icomma]
+ Wird im Mathematikmodus nach dem Komma ein Leerzeichen gesetzt, wird dies
+ bei der Ausgabe beachtet. Der Verfasser muss sich demzufolge jederzeit
+ selbst um die typografisch korrekte Ausgabe kümmern.
+ \item[ziffer]
+ Für deutschsprachige Dokumente wird das Komma als Dezimaltrennzeichen
+ zwischen zwei Ziffern definiert. Folgt dem Komma keine Ziffer, wird
+ jederzeit der obligatorische Freiraum gesetzt, was meiner Meinung nach
+ besser als das Verhalten von \Package{icomma} ist.
+\index{Zifferngruppierung|)}%
+\end{packages}
+%
+Für das typografisch korrekte Setzen von Einheiten~-- ein halbes Leerzeichen
+zwischen Zahl und \emph{aufrecht} gesetzter Einheit~-- gibt es zwei gut
+nutzbare Pakete.
+%
+\begin{packages}
+\index{Einheiten|(}%
+\item[units]
+ Dies ist ein einfaches und sehr zweckdienliches Paket zum Setzen von
+ Einheiten und für die meisten Anforderungen völlig ausreichend.
+\item[siunitx]
+ Dieses Paket ist in seinem Umfang im Vergleich deutlich erweitert. Neben
+ Einheiten können zusätzlich auch Zahlen typografisch korrekt gesetzt werden.
+ Die Ausgabe lässt sich in vielerlei Hinsicht an individuelle Bedürfnisse
+ anpassen. Für deutschsprachige Dokumenten sollte die Lokalisierung angegeben
+ werden. Mehr dazu in \autoref{sec:tips:siunitx}.
+\index{Einheiten|)}%
+\end{packages}
+%
+Weitere Hinweise zur mathematischen Typografie werden in \autoref{sec:tut}
+gegeben.
+\index{Mathematiksatz|)}%
+
+
+\subsubsection{Listen}
+\index{Listen|?(}%
+%
+\begin{packages}
+\item[enumitem]
+ Das Paket \Package{enumitem} erweitert die rudimentären Funktionalitäten der
+ \hologo{LaTeX}"=Standardlisten
+ \Environment{itemize}(\Package{koma-script},\Package{enumitem})'none',
+ \Environment{enumerate}(\Package{koma-script},\Package{enumitem})'none' sowie
+ \Environment{description}(\Package{koma-script},\Package{enumitem})'none' und
+ ermöglicht die individuelle Anpassung dieser durch die Bereitstellung vieler
+ optionale Parameter nach dem Schlüssel"=Wert"=Prinzip. Eine von mir sehr
+ häufig genutzte Funktion ist beispielsweise die Entfernung des zusätzlichen
+ Abstand zwischen den einzelnen Einträgen einer Liste mit
+ \Macro{setlist}[\PParameter{noitemsep}](\Package{enumitem})'none'.
+\end{packages}
+\index{Listen|?)}%
+
+
+\subsubsection{Verzeichnisse aller Art}
+\index{Verzeichnisse|?(}%
+%
+Neben dem Erstellen des eigentlichen Dokumentes sind für eine wissenschaftliche
+Arbeit meist auch allerhand Verzeichnisse gefordert. Fester Bestandteil ist
+dabei das Literaturverzeichnis, auch ein Abkürzungs- und Formelzeichen-
+beziehungsweise Symbolverzeichnis werden häufig gefordert. Gegebenenfalls wird
+auch noch ein Glossar benötigt. Hier werden die passenden Pakete vorgestellt.
+Sollen im Dokument komplette Quelltexte oder auch nur Auszüge daraus erscheinen
+und für diese auch gleich ein entsprechendes Verzeichnis generiert werden, so
+sei auf das Paket \Package{listings}'full' verwiesen.
+
+\begin{packages}
+\item[biblatex]
+ \index{Literaturverzeichnis}%
+ Das Paket kann als legitimer Nachfolger zu \hologo{BibTeX} gesehen werden.
+ Ähnlich dazu bietet \Package{biblatex} die Möglichkeit, Literaturdatenbanken
+ einzubinden und verschiedene Stile der Referenzierung und Darstellung des
+ Literaturverzeichnisses auszuwählen.
+
+ Mit \Package{biblatex} ist die Anpassung eines bestimmten Stiles wesentlich
+ besser umsetzbar als mit \hologo{BibTeX}. Wird \Application{biber} für die
+ Sortierung des Literaturverzeichnisses genutzt, ist die Verwendung einer
+ UTF"~8"~kodierten Literaturdatenbank problemlos möglich. In Verbindung mit
+ \Package{biblatex} wird die zusätzliche Nutzung des Paketes
+ \Package{csquotes} sehr empfohlen.
+\item[glossaries,nomencl]
+ \index{Glossar}%
+ \index{Abkürzungsverzeichnis}%
+ \index{Formelzeichenverzeichnis}%
+ \index{Symbolverzeichnis}%
+ Dies ist ein sehr mächtiges Paket zum Erstellen eines Glossars sowie
+ Abkürzungs- und Symbolverzeichnisses. Die mannigfaltige Anzahl an Optionen
+ ist zu Beginn eventuell etwas abschreckend. Insbesondere wenn Verzeichnisse
+ für Abkürzungen \emph{und} Formelzeichen respektive Symbole notwendig sind,
+ sollte dieses Paket in Erwägung gezogen werden.
+
+ Alternativ dazu kann für ein Symbolverzeichnis auch lediglich eine manuell
+ gesetzte Tabelle genutzt werden. Das hierfür sehr häufig empfohlene Paket
+ \Package{nomencl} bietet meiner Meinung nach demgegenüber keinerlei Vorteile.
+\item[acro,acronym]
+ \index{Abkürzungsverzeichnis}%
+ Soll lediglich ein Abkürzungsverzeichnis erstellt werden, ist dieses Paket
+ die erste Wahl. Es stellt Befehle zur Definition von Abkürzungen sowie zu
+ deren Verwendung im Text und zur sortierten Ausgabe eines Verzeichnisses
+ bereit. Alternativ dazu kann das Paket \Package{acronym} verwendet werden.
+ Die Sortierung des Abkürzungsverzeichnisses muss hier allerdings manuell
+ durch den Anwender erfolgen.
+\index{Verzeichnisse|?)}%
+\end{packages}
+
+
+\subsubsection{Gleitobjekte}
+\index{Gleitobjekte|?(}%
+%
+Es werden Pakete für die Beeinflussung von Aussehen, Beschriftung und
+Positionierung von Gleitobjekten vorgestellt. Unter \autoref{sec:tips:floats}
+sind außerdem Hinweise zur manuellen Manipulation der Gleitobjektplatzierung zu
+finden.
+
+\begin{packages}
+\item[caption]
+ Mit der Option \Option{captions=\PSet}(\Package{koma-script})'none'|declare|
+ bieten die \KOMAScript-Klassen bereits einige Möglichkeiten zum Formatieren
+ der Beschriftungen für Gleitobjekte. Dieses Paket ist daher meist nur in
+ gewissen Ausnahmefällen für spezielle Anweisungen notwendig, allerdings auch
+ bei der Verwendung unbedenklich.
+\item[subcaption]
+ Diese Paket kann zum einfachen Setzen von Unterabbildungen oder "~tabellen
+ mit den entsprechenden Beschriftungen genutzt werden. Das dazu alternative
+ Paket \Package{subfig} sollte vermieden werden, da es nicht mehr gepflegt
+ wird und es mit diesem im Zusammenspiel mit anderen Paketen des Öfteren zu
+ Problemen kommt. Sollte der Funktionsumfang von \Package{subcaption} nicht
+ ausreichen, kann anstelle dessen das Paket \Package{floatrow} verwendet
+ werden, welches ähnliche Funktionalitäten wie \Package{subfig} bereitstellt.
+\item[floatrow]
+ Mit diesem Paket können global wirksame Einstellungen und Formatierungen für
+ \emph{alle} Gleitobjekte eines Dokumentes über die Paketoptionen oder mit
+ \Macro{floatsetup}[\PParameter{\dots}](\Package{floatrow})'none' vorgenommen
+ werden. So lässt sich unter anderem die verwendete Schrift innerhalb der
+ Umgebungen \Environment{figure} und \Environment{table} mit
+ \Macro*{floatsetup}[\PParameter{font=\dots}] einstellen. Mit
+ \begin{Code}
+ \floatsetup[figure]{capposition=bottom}
+ \floatsetup[table]{capposition=top}
+ \end{Code}\vspace{-\baselineskip}%
+ lässt sich automatisch das typografisch korrekte Setzen von
+ Abbildungs\emph{unterschriften} sowie Tabellen\emph{überschriften}
+ erzwingen~-- unabhängig von der Position des Befehls zur Beschriftung
+ \Macro{caption}(\Package{koma-script},\Package{caption})'none'
+ innerhalb der jeweiligen Gleitobjektumgebung. Wird das Verhalten wie
+ empfohlen eingestellt, sollte für eine gute vertikale Platzierung der
+ Tabellenüberschriften zusätzlich die
+ \KOMAScript-Option \Option{captions=tableheading}(\Package{koma-script})'none'
+ genutzt werden.
+\item[placeins]
+ Mit diesem Paket kann die Ausgabe von Gleitobjekten vor Kapiteln und wahlweise
+ Unterkapiteln erzwungen werden.
+\item[flafter]
+ Dieses Paket erlaubt die frühestmögliche Platzierung von Gleitobjekten im
+ ausgegeben Dokument erst an der Stelle ihres Auftretens im Quelltext. Diese
+ werden dementsprechend nie vor ihrer Definition am Anfang der Seite
+ erscheinen.
+\end{packages}
+\index{Gleitobjekte|?)}%
+
+
+
+\subsubsection{Tabellen}
+\index{Tabellen|?(}%
+%
+Für den Tabellensatz werden standardmäßig die Umgebungen \Environment{tabbing}
+und \Environment{tabular} respektive \Environment{tabular*} bereitgestellt,
+welche in ihrer Funktionalität für einen qualitativ hochwertigen Tabellensatz
+meist nicht ausreichen. Deshalb werden hier zusätzliche Pakete vorgestellt.
+%
+\begin{packages}
+\item[array]
+ Dieses Paket ermöglicht mit \Macro{newcolumntype}(\Package{array})'none' das
+ Erstellen neuer Spaltentypen und die erweiterte Definition von Tabellenspalten
+ (\PValue{>\PParameter{\dots}}\PName{Spaltentyp}\PValue{<\PParameter{\dots}}),
+ wobei mithilfe sogenannter \enquote{Hooks} vor und nach Einträgen innerhalb
+ einer Spalte gezielt Anweisungen gesetzt werden können. Die Zeilenhöhe lässt
+ sich mit \Macro{extrarowheight}(\Package{array})'none' ändern.
+\item[booktabs]
+ Für einen guten Tabellensatz mit \hologo{LaTeX} gibt es bereits zahlreiche
+ \hrfn{http://userpage.fu-berlin.de/latex/Materialien/tabsatz.pdf}{Tipps} im
+ Internet zu finden. Zwei Regeln sollten dabei definitiv beachtet werden:
+ %
+ \begin{enumerate}[itemindent=0pt,labelwidth=*,labelsep=1em,label=\Roman*.]
+ \stditem keine vertikalen Linien
+ \stditem keine doppelten Linien
+ \end{enumerate}
+ %
+ Das Paket \Package{booktabs} (deutsche Dokumentation \Package*{booktabs-de})
+ ist für den Satz von hochwertigen Tabellen eine große Hilfe und stellt die
+ Befehle \Macro{toprule}(\Package{booktabs})'none',
+ \Macro{midrule}(\Package{booktabs})'none' sowie
+ \Macro{cmidrule}(\Package{booktabs})'none' und
+ \Macro{bottomrule}(\Package{booktabs})'none'
+ für unterschiedliche horizontale Linien bereit.
+\item[widetable]
+ Mit der Standard"=\hologo{LaTeX}"=Umgebung \Environment{tabular*} kann eine
+ Tabelle mit einer definierten Breite gesetzt werden. Dieses Paket stellt die
+ Umgebung \Environment{widetable}(\Package{widetable})'none' zur Verfügung,
+ die als Alternative genutzt werden kann und eine symmetrische Tabelle erzeugt.
+\item[tabularx]
+ Auch mit diesem Paket kann die Gesamtbreite einer Tabelle spezifiziert
+ werden. Dafür wird der Spaltentyp \PValue{X} definiert, welcher als Argument
+ der \Environment{tabularx}(\Package{tabularx})'none'"=Umgebung beliebig
+ häufig angegeben werden kann
+ (\Macro*{begin}[\PParameter{tabularx}\Parameter{Breite}\Parameter{Spalten}]).
+ Die \PValue{X}"~Spalten ähneln denen vom Typ~\PValue{p}\Parameter{Breite},
+ wobei die Breite dieser aus der gewünschten Tabellengesamtbreite abzüglich
+ dem benötigten Platz der gegebenenfalls vorhandenen Standardspalten
+ automatisch berechnet wird.
+\item[tabulary]
+ Dies ist ein weiteres Paket zur automatischen Berechnung von Spaltenbreiten.
+ Der zur Verfügung stehende Platz~-- gewünschte Gesamtbreite abzüglich der
+ notwendigen Breite für Standardspalten~-- wird jedoch nicht wie bei der
+ \Environment{tabularx}(\Package{tabularx})'none' auf alle Spalten
+ gleichmäßig verteilt sondern in der
+ \Environment{tabulary}(\Package{tabulary})'none'"=Umgebung für die
+ Spaltentypen~\PValue{LCRJ} anhand ihres Zellinhaltes gewichtet vergeben.
+ (\Macro*{begin}[\PParameter{tabulary}\Parameter{Breite}\Parameter{Spalten}]).
+\item[longtable,ltxtable,ltablex]
+ Sollen mehrseitige Tabellen mit Seitenumbruch erstellt werden, ist dieses
+ Paket das Mittel der ersten Wahl. Für die Kombination mehrseitiger Tabellen
+ mit einer \Environment{tabularx}(\Package{tabularx})'none'"=Umgebung können
+ die Pakete \Package{ltablex} oder besser noch \Package{ltxtable} verwendet
+ werden. Alternativ dazu lässt sich auch \Package{tabu} nutzen.
+\item[multirow]
+ Es wird der Befehl \Macro{multirow}(\Package{multirow})'none' definiert, der
+ das Zusammenfassen von mehreren Zeilen in einer Spalte ermöglicht~-- ähnlich
+ zum Makro \Macro{multicolumn} für Spalten.
+\item[tabularborder]
+ Bei Tabellen wird zwischen Spalten automatisch ein horizontaler Abstand
+ (\Length{tabcolsep}) gesetzt~-- besser gesagt jeweils vor und nach einer
+ Spalte. Dies geschieht auch \emph{vor} der ersten und \emph{nach} der letzten
+ Spalte. Dieser zusätzliche Platz an den äußeren Rändern kann störend wirken,
+ insbesondere wenn die Tabelle über die komplette Textbreite gesetzt wird. Mit
+ dem Paket \Package{tabularborder} kann dieser Platz automatisch entfernt
+ werden.
+
+ Dies funktioniert allerdings nur mit der \Environment{tabular}"=Umgebung.
+ Die Tabellen aus den Paketen \Package{tabularx}, \Package{tabulary} und
+ \Package{tabu} werden nicht unterstützt. Wie dieser Abstand bei diesen
+ manuell entfernt werden kann, ist unter \autoref{sec:tips:table} zu finden.
+\item[tabu]
+ \ChangedAt{%
+ v2.02:\RecPack \Package{tabu} ist nur bedingt empfehlenswert
+ }
+ Dies ist ein relativ neues Paket, welches versucht, viele der zuvor genannten
+ Funktionalitäten zu implementieren und weitere bereitzustellen. Dafür werden
+ die Umgebungen \Environment{tabu}(\Package{tabu})'none' und
+ \Environment{longtabu}(\Package{tabu})'none' definiert. Es
+ kann alternativ zu \Package{tabularx} verwendet werden und ist insbesondere
+ als Ersatz für das Paket \Package{ltxtable} empfehlenswert.
+
+ \Attention{%
+ Für das Paket in der Version~v2.8 wären seit einigen Jahren mehrere
+ Bugfixes notwendig. Der originäre Autor hatte außerdem die Änderung der
+ \hrfn{https://groups.google.com/d/topic/comp.text.tex/xRGJTC74uCI}{%
+ Benutzerschnittstelle in einer zukünftigen Version%
+ }
+ angekündigt, anscheinend aber mittlerweile die Pflege des Paketes komplett
+ eingestellt.
+ }%
+
+ Durch Änderungen am \hologo{LaTeXe}"~Kernel wurde das Paket unbrauchbar.
+ Deshalb sind durch das \hrfn{https://github.com/tabu-fixed/tabu}{%
+ \hologo{LaTeX3}-Projektteam die allernötigsten Anpassungen%
+ } vorgenommen worden, damit das Paket in der aktuellen Version~v2.9 zumindest
+ grundsätzlich lauffähig ist. Ein Großteil der ursprünglich sehr guten
+ Funktionalitäten kann momentan allerdings nicht genutzt werden. Deshalb ist
+ das Paket aktuell nur bedingt empfehlenswert.
+\end{packages}
+\index{Tabellen|?)}%
+
+
+\subsubsection{Grafiken und Abbildungen}
+\index{Grafiken|?(}%
+%
+Grafiken für wissenschaftliche Arbeiten sollten als Vektorgrafiken erstellt
+werden, um die Skalierbarkeit und hohe Druckqualität zu gewährleisten.
+Bestenfalls folgen diese auch dem Stil der dazugehörigen Arbeit.%
+\footnote{%
+ Für qualitativ hochwertige Dokumente sollten übernommene Grafiken nicht
+ direkt kopiert oder gescannt sondern im gewünschten Zielformat neu erstellt
+ und mit einer Referenz auf die Quelle eingebunden werden.%
+}
+Für das Erstellen eigener Vektorgrafiken, welche die \hologo{LaTeX}"=Schriften
+und das Layout des Hauptdokumentes nutzen, gibt es zwei mögliche Ansätze.
+Entweder die Grafiken werden ähnlich wie das Dokument \enquote{programmiert}
+oder Zeichenprogramme, welche wiederum die Ausgabe oder das Weiterreichen von
+Text an \hologo{LaTeX} unterstützen, werden genutzt.
+Für das Programmieren von Grafiken sollen hier die wichtigsten Pakete
+vorgestellt werden. Wie diese zu verwenden sind, ist den dazugehörigen
+Paketdokumentationen zu entnehmen.
+
+\begin{packages}
+\item[tikz]<pgf>
+ Dies ist ein sehr mächtiges Paket für das Programmieren von Vektorgrafiken
+ und sehr häufig~-- insbesondere bei Einsteigern~-- die erste Wahl bei der
+ Verwendung von \Engine{pdfLaTeX}.
+\item[pstricks]
+ Diese Paket stellt die zweite Variante zum Programmieren von Grafiken dar.
+ Da hiermit auf PostScript (direkt) zugegriffen werden kann, existieren
+ \emph{noch} mehr Möglichkeiten bei der Erstellung eigener Grafiken, wovon
+ die bereitgestellten Befehle rege Gebrauch machen.
+
+ Daraus resultiert allerdings der Nachteil, dass die mit \Package{pstricks}
+ erstellten Grafiken nicht direkt in eine PDF"~Datei kompiliert werden können.
+ Vielmehr müssen die Grafiken aus den Umgebungen
+ \Environment{pspicture}(\Package{pstricks})'none' zunächst über den Pfad
+ \Path{latex\,>\,dvips\,>\,ps2pdf} in PDF"~Dateien gewandelt werden. Diese
+ lassen sich von \Engine{pdfLaTeX} anschließend als Abbildungen einbinden. Um
+ dieses Vorgehen zu ermöglichen, lassen sich folgende Pakete nutzen:
+ %
+ \begin{packages}
+ \item[pst-pdf]
+ Dieses Paket stellt Methoden für den Export von PostSript-Grafiken in
+ PDF"~Datien bereit. Die einzelnen Aufrufe zur Kompilierung von DVI über
+ PostScript zu PDF müssen durch den Anwender manuell beziehungsweise über
+ die Ausgaberoutinen des verwendeten Editors durchgeführt werden.
+ \item[auto-pst-pdf,pdftricks2]
+ Das Paket automatisiert die Erzeugung der \Package{pstricks}"=Grafiken mit
+ dem Paket \Package{pst-pdf}. Hierfür muss \Engine{pdfLaTeX} per Option mit
+ erweiterten Schreibrechten ausgeführt werden. Dazu ist der Aufruf von
+ \Path{pdflatex} mit der Option \Path{-{}-shell-escape} respektive
+ \Path{-{}-enable-write18} notwendig. Bitte beachten Sie dazu ebenfalls die
+ Hinweise in \autoref{sec:tips:auto-pst-pdf}. Eine Alternative dazu ist das
+ Paket \Package{pdftricks2}.
+ \end{packages}
+\end{packages}
+%
+Im Tutorial \Tutorial{treatise} wird für \Package{pstricks} und \Package{tikz}
+jeweils ein Beispiel gegeben. Um bei der Erstellung von Grafiken mit einem der
+beiden Paketen nicht bei jeder Änderung das komplette Dokument kompilieren zu
+müssen, können diese in separate Dateien ausgelagert werden. Hierfür sind die
+beiden Pakete \Package{standalone} oder \Package{subfiles} sehr nützlich.
+
+Für das Zeichnen einer Grafik mit einem Bildbearbeitungsprogramm, welches die
+Weiterverarbeitung durch \hologo{LaTeX} erlaubt, möchte ich auf die freien
+Programme \Application{LaTeXDraw} und \Application{Inkscape} verweisen.
+Insbesondere das zuletzt genannte Programm ist sehr empfehlenswert.
+%
+\begin{packages}
+\item[svg]
+ Mit diesem Paket können alle notwendigen Schritte zum Einfügen einer
+ SVG"~Grafik in ein \hologo{LaTeX}"~Dokument automatisiert durchgeführt
+ werden. In \autoref{sec:tips:svg} sind weitere Hinweise hierzu zu finden.
+\end{packages}
+\index{Grafiken|?)}%
+
+
+\subsubsection{Querverweise und Lesezeichen}
+\index{Querverweise|?(}%
+\index{Lesezeichen|?(}%
+%
+Für das Erzeugen von Querverweisen auf bestimmte Gliederungsebenen, Tabellen,
+Abbildungen oder auch Gleichungen muss für diese besagten Elemente zunächst mit
+\Macro{label}[\Parameter{Label}] ein \emph{eindeutiges} Label erzeugt werden,
+auf welches im Dokument entweder mit \Macro{ref} oder nach dem Laden von
+\Package{hyperref} besser noch mit \Macro{autoref}(\Package{hyperref})'none'
+referenziert werden kann. In \autoref{sec:tips:references} sind diesbezüglich
+weitere Informationen zu finden.
+%
+\begin{packages}
+\item[hyperref]
+ Hiermit können in einem PDF"~Dokument Lesezeichen, Querverweise und
+ Hyperlinks erstellt werden. Wird es geladen, sind außerdem die Option
+ \Option{tudbookmarks} sowie der Befehl \Macro{tudbookmark} nutzbar. Das
+ Paket \Package{bookmark} erweitert die Unterstützung nochmals. Beide
+ genannten Pakete sollten~-- bis auf sehr wenige Ausnahmen wie beispielsweise
+ \Package{glossaries}~-- als letztes in der Präambel eingebunden werden.
+\item[bookmark]
+ Dieses Paket verbessert und erweitert die von \Package{hyperref} angebotenen
+ Möglichkeiten zur Erstellung von Lesezeichen~-- auch Outline"=Einträge~-- im
+ PDF"~Dokument. Zum Beispiel können Schriftfarbe- und "~stil geändert werden.
+\item[varioref]
+ Mit diesem Paket lassen sich sehr gute Verweise auf bestimmte Seiten
+ erzeugen. Insbesondere, wenn der Querverweis auf die aktuelle, die
+ vorhergehende oder nachfolgende sowie im doppelseitigen Satz auf die
+ gegenüberliegende Seite erfolgt, werden passende Textbausteine für diesen
+ verwendet.
+\item[cleveref]
+ Dieses Paket vereint die Vorzüge der automatischen Benennung referenzierter
+ Objekte mit dem Befehl \Macro{autoref}(\Package{hyperref})'none' aus dem
+ Paket \Package{hyperref} und der Verwendung von \Package{varioref}.
+\end{packages}
+\index{Lesezeichen|?)}%
+\index{Querverweise|?)}%
+
+
+\subsubsection{Aufteilung des Hauptdokumentes in Unterdateien}
+Um während des Entwurfes eines Dokumentes die Zeitdauer für das Kompilieren zu
+verkürzen, kann dieses in Unterdokumente gegliedert werden. Dadurch wird es
+möglich, nur den momentan bearbeiteten Dokumentteil~-- respektive die aktuelle
+\Package{tikz}"~ oder \Package{pstricks}"=Grafik~-- zu kompilieren. Die meiner
+Meinung nach besten Pakete für dieses Unterfangen werden folgend vorgestellt.
+%
+\begin{packages}
+\item[standalone]
+ \ChangedAt{%
+ v2.02:Bugfix für Verwendung der Klasse \Class{standalone} aus dem Paket
+ \Package{standalone}%
+ }
+ Dieses Paket ist für das Erstellen eigenständiger (Unter)"~Dokumente gedacht,
+ welche später in ein Hauptdokument eingebunden werden können. Jedes dieser
+ Teildokumente benötigt eine eigene Präambel. Optional lassen sich die
+ Präambeln der Unterdokumente automatisch in ein Hauptdokument einbinden.
+\item[subfiles]
+\ChangedAt{v2.02:\RecPack \Package{subfiles}}
+ Dieses Paket wählt einen etwas anderen Ansatz als \Package{standalone}. Es
+ ist von Anfang an dafür gedacht, ein dediziertes Hauptdokument zu verwenden.
+ Die darin mit \Macro{subfiles}(\Package{subfiles})'none' eingebundenen
+ Unterdateien nutzen bei der autarken Kompilierung dessen Präambel.
+\end{packages}
+%
+Unabhängig davon, ob Sie eines der beiden Pakete nutzen oder alles in einem
+Dokument belassen, ist es ratsam, eigens definierte Befehle, Umgebungen und
+ähnliches in ein separates Paket auszulagern. Dafür müssen Sie lediglich ein
+leeres \hologo{LaTeX}"=Dokument erzeugen und es unter \File*{mypreamble.sty}
+oder einem anderen Namen im gleichen Ordner wie das Hauptdokument speichern.
+Dann können Sie in dieser Datei ihre Deklarationen ausführen und diese mit
+\Macro*{usepackage}[\PParameter{mypreamble}] in das Dokument einbinden. Dies
+hat den Vorteil, dass das Hauptdokument zum einen übersichtlich bleibt und Sie
+zum anderen Ihre persönliche Präambel generisch wachsen lassen und für andere
+Dokumente wiederverwenden können.
+
+
+\subsubsection{Die kleinen und großen Helfer\dots}
+Hier taucht alles auf, was nicht in die vorherigen Kategorien eingeordnet
+werden konnte.
+%
+\begin{packages}
+\item[marginnote]
+ \index{Randnotizen}%
+ Mit dem Befehl \Macro{marginpar}(\Package{koma-script})'none' lassen sich
+ Randnotizen erzeugen. Diese sind in \hologo{LaTeX} spezielle Gleitobjekte,
+ wodurch selbige nicht immer direkt an der ursprünglich intendierten Stelle am
+ Blattrand gesetzt werden. Das Paket \Package{marginnote} stellt den Befehl
+ \Macro{marginnote}(\Package{marginnote})'none' für nicht"~gleitende
+ Randnotizen zur Verfügung. Eine Alternative dazu ist Paket \Package{mparhack}.
+\item[todonotes]
+ \index{Randnotizen}%
+ Mit \Package{todonotes} können noch offene Aufgaben in unterschiedlicher
+ Formatierung am Blattrand oder im direkt Fließtext ausgegeben werden. Aus
+ allen Anmerkungen lässt sich eine Liste aller offenen Punkte erzeugen.
+\item[xparse]
+ \index{Befehlsdeklaration}%
+ Dieses mächtige Paket entstammt dem \hologo{LaTeX3}"=Projekt und bietet für
+ die Erstellung eigener Befehle und Umgebungen einen alternativen Ansatz zu
+ den bekannten \hologo{LaTeX}"=Deklarationsbefehlen \Macro*{newcommand} und
+ \Macro*{newenvironment} sowie deren Derivaten. Mit \Package{xparse} wird es
+ möglich, obligatorische und optionale Argumente an beliebigen Stellen
+ innerhalb des Befehlskonstruktes zu definieren. Auch die Verwendung anderer
+ Zeichen als eckige Klammern für die Spezifizierung eines optionalen
+ Argumentes ist möglich.
+\item[xkeyval,keyval,kvoptions,pgfkeys]
+ \index{Befehlsdeklaration}%
+ \ChangedAt{v2.02:\RecPack \Package{xkeyval}}
+ Das \KOMAScript"=Bundle lädt das Paket \Package{keyval}, um Optionen mit
+ einer Schlüssel"=Wert"=Syntax deklarieren zu können. Zusätzlich wird von
+ \TUDScript das Paket \Package{kvsetkeys} geladen, um auf nicht definierte
+ Schlüssel reagieren zu können. Die Schlüssel"=Wert"=Syntax kann auch für
+ eigens definierte Makros genutzt werden, um sich das exzessive Verwenden von
+ optionalen Argumenten zu ersparen. Damit wäre folgende Definition möglich:
+ \Macro*{newcommand}[%
+ \Macro*{Befehl}[\OParameter{Schlüssel"=Wert"=Liste}\Parameter{Argument}]%
+ ]
+
+ Das Paket \Package{xkeyval} erweitert insbesondere die Möglichkeiten zur
+ Deklaration unterschiedlicher Typen von Schlüsseln. Sollten die bereits durch
+ \TUDScript geladenen Pakete \Package{keyval} und \Package{kvsetkeys} in ihrer
+ Funktionalität nicht ausreichen, kann dieses Paket verwendet werden. Für die
+ Entwicklung eigener Pakete, deren Optionen das Schlüssel"=Wert"=Format
+ unterstützen, kann das Paket \Package{scrbase} genutzt werden. Soll aus einem
+ Grund auf \KOMAScript{} gänzlich verzichtet werden, sind die beiden Pakete
+ \Package{kvoptions} oder \Package{pgfkeys} eine Alternative.
+\item[scrlfile]
+ \index{Paketabhängigkeiten}
+ \ChangedAt{v2.05:\RecPack \Package{scrlfile}}
+ Dieses \KOMAScript-Paket erlaubt es, auf das Laden von Klassen oder Paketen
+ direkt davor oder danach zu reagieren, um beispielsweise Paketabhängigkeiten
+ aufzulösen oder nach dem Laden eines bestimmten Paketes gezielt Befehle
+ anzupassen. Mehr dazu ist im \scrguide zu finden.
+\item[calc]
+ \index{Berechnungen}%
+ Normalerweise lassen sich Berechnungen im Dokument lediglich mit
+ Low"~Level"~\hologo{TeX}"=Primitiven durchführen. Dieses Paket stellt eine
+ einfachere Syntax für Rechenoperationen der vier Grundrechenarten zur
+ Verfügung. Zusätzlich werden neue Befehle zur Bestimmung der Höhe und Breite
+ bestimmter Textauszüge definiert.
+\item[mwe,blindtext]
+ \index{Minimalbeispiel|?}%
+ \ChangedAt{v2.02:\RecPack \Package{mwe}}
+ Mit dem Paket \Package{mwe} lassen sich sehr einfach Minimalbeispiele
+ erzeugen, die sowohl Blindtexte als auch Abbildungen enthalten sollen. Werden
+ keine Grafiken sondern lediglich Textabschnitte etc. benötigt, ist das Laden
+ von \Package{blindtext} ausreichend.
+\item[filecontents]
+ \index{Minimalbeispiel|?}%
+ Dieses Paket erweitert die im \hologo{LaTeX}"=Kernel definierte Umgebung
+ \Environment{filecontents}(\Package{filecontents})'none' dahingehend,
+ dass bereits existierende Dateien überschrieben werden können.
+\item[pdfpages]
+ Das Paket ermöglicht die Einbindung von einzelnen oder mehreren PDF"~Dateien.
+\item[crop]
+ \index{Beschnittzugabe}\index{Schnittmarken}%
+ Hiermit können eine Beschnittzugabe sowie Schnittmarken~-- beispielsweise für
+ Poster~-- erzeugt werden. Hierzu ist in \autoref{sec:tips:crop} ein Beispiel
+ zu finden.
+\item[pagecolor]
+ \index{Farben}%
+ Mit dem Paket kann die Hintergrundfarbe der Seiten im Dokument geändert
+ werden.
+\item[afterpage]
+ Der Befehl \Macro{afterpage}[\PParameter{\dots}](\Package{afterpage})'none'
+ kann genutzt werden, um den Inhalt aus dessen Argument direkt nach der
+ Ausgabe der aktuellen Seite auszuführen.
+\item[filemod]
+ Wird entweder \Engine{pdfLaTeX} oder \Engine{LuaLaTeX} als Textsatzsystem
+ eingesetzt, können mit diesem Paket das Änderungsdatum zweier Dateien
+ miteinander verglichen und in Abhängigkeit davon definierbare Aktionen
+ ausgeführt werden.
+\item[listings]
+ \index{Quelltextdokumentation}%
+ Dieses Paket eignet sich hervorragend zur Quelltextdokumentation in
+ \hologo{LaTeX}. Es bietet die Möglichkeit, externe Quelldateien einzulesen
+ und darzustellen sowie die Syntax in Abhängigkeit der verwendeten
+ Programmiersprache hervorzuheben. Zusätzlich lässt sich ein Verzeichnis mit
+ allen eingebundenen sowie direkt im Dokument angegebenen Quelltextauszügen
+ erstellen.
+ \ChangedAt{v2.02:\RecPack \Package{listings}}
+ Wird \Package{listings} in Dokumenten mit UTF"~8"~Kodierung verwendet,
+ sollte direkt nach dem Laden des Paketes in der Präambel Folgendes
+ hinzugefügt werden:
+ \begin{Code}
+ \lstset{%
+ inputencoding=utf8,extendedchars=true,
+ literate=%
+ {ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
+ {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
+ {~}{{\textasciitilde}}1 {ß}{{\ss}}1
+ }
+ \end{Code}\vspace{-\baselineskip}%
+\item[coseoul]
+ Mit diesem Paket kann die Struktur der Gliederung relativ erstellt werden.
+ Es wird keine absolute Gliederungsebene (\Macro*{chapter}, \Macro*{section})
+ angegeben sondern die Relation zwischen vorheriger und aktueller Ebene
+ (\Macro*{levelup}, \Macro*{levelstay}, \Macro*{leveldown}).
+\item[selinput,inputenc]
+ \index{Eingabekodierung}%
+ \index{Minimalbeispiel|?}%
+ Die verwendete Eingabekodierung ist standardmäßig auf \PValue{utf8}
+ festgelegt, was von (fast) allen \LaTeX-Editoren unterstützt wird. Dies
+ sollte im Normalfall auch nicht geändert werden. Ältere Dokumente sind aber
+ vielleicht noch in einer anderen Eingabekodierung gespeichert. Kann diese
+ nicht geändert werden, so ist es für \Engine{pdfLaTeX} möglich, eine
+ andere~-- im \hyperref[sec:tips:editor]{Editor (\autoref{sec:tips:editor})}
+ vom Anwender eingestellte~-- Eingabekodierungen zu nutzen. Diese kann mit dem
+ Paket \Package{selinput} (automatisch) für \LaTeX{} festgelegt werden Mit:
+ \begin{Code}
+ \usepackage{selinput}
+ \SelectInputMappings{adieresis={ä},germandbls={ß}}
+ \end{Code}\vspace{-\baselineskip}%
+ wird es verwendet. Alternativ dazu lässt sich mit dem Paket
+ \Package{inputenc} die Eingabekodierung manuell mit
+ \Macro*{usepackage}[\OParameter{Eingabekodierung}\PParameter{inputenc}]
+ einstellen. Das Paket \Package{fontenc} sollte in jedem Fall \emph{zuvor}
+ geladen werden.
+\end{packages}
+
+
+\subsubsection{Bugfixes}
+\begin{packages}
+\item[scrhack]<koma-script>
+ Das Paket behebt Kompatibilitätsprobleme der \KOMAScript-Klassen mit den
+ Paketen \Package{hyperref}, \Package{float}, \Package{floatrow} und
+ \Package{listings}. Es ist durchaus empfehlenswert, jedoch sollte unbedingt
+ die Dokumentation beachtet werden.
+\item[scrwfile,morewrites]
+ Falls der Fehler \texttt{No room for a new \textbackslash write} erscheint,
+ kann dieser möglicherweise mit einem dieser beiden Pakete behonben werden.
+ Mehr dazu in \autoref{sec:tips:write}.
+\item[mparhack]
+ Zur Behebung falsch gesetzter Randnotizen wird ein Bugfix für
+ \Macro{marginpar}(\Package{koma-script})'none' bereitgestellt. Alternativ
+ dazu lässt sich auch \Package{marginnote} verwenden.
+\item[fix-cm]
+ Sollte bei einer Schriftgrößenänderung eine oder mehrere Warnungen der Form
+ \begin{Code}
+ Font shape `T1/cmr/m/n' in size <...> not available
+ \end{Code}\vspace{-\baselineskip}%
+ erscheinen, so sollte das Paket \Package{fix-cm} \emph{vor} der Klasse
+ geladen werden. Siehe dazu auch die Hinweise in \autoref{sec:tips:fontsize}.
+\end{packages}
diff --git a/macros/latex/contrib/tudscr/source/doc/tudscr-poster.tex b/macros/latex/contrib/tudscr/source/doc/tudscr-poster.tex
new file mode 100644
index 0000000000..6c895d7a33
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/tudscr-poster.tex
@@ -0,0 +1,371 @@
+\setchapterpreamble{\tudhyperdef'{sec:poster}}
+\chapter[Die Posterklasse \Class*{tudscrposter}]{Die Posterklasse}
+%
+\begin{Bundle*}[v2.05]{\Class{tudscrposter}}
+\index{Posterklasse|!}%
+\printchangedatlist%
+%
+Ergänzend zu den Hauptklassen, welche für das Setzen von Dokumenten im \TUDCD
+angeboten werden, wird die Klasse \Class{tudscrposter} bereitgestellt. Mit
+dieser wird das Erstellen von Postern im gleichen Layout mit \hologo{LaTeX}
+ermöglicht. Die Basis hierfür ist \Class{tudscrartcl} und \emph{fast} alle
+durch diese Klasse angebotenen Befehle und Optionen können gleichermaßen mit
+\Class{tudscrposter} verwendet werden. Ein Minimalbeispiel zur Verwendung der
+Klasse ist in \fullref{sec:exmpl:poster} zu finden.
+
+Der größte Unterschied zu den Hauptklassen ist insbesondere ein vereinfachter
+Titel. Eine Umschlagseite steht für \Class{tudscrposter} nicht zur Verfügung,
+die entsprechende Option \Option*{cdcover} sowie der dazugehörige Befehl
+\Macro*{makecover} sind nicht definiert. Der Titel selbst kann mit
+\Macro{maketitle} lediglich als Titelkopf gesetzt werden, eine separate
+Titelseite existiert nicht. Aus diesem Grund sind mit \Macro{title},
+\Macro{subtitle}, \Macro{subject} und \Macro{titlehead}(\Package{koma-script})
+auch nur eine reduzierte Anzahl an Befehlen für den Titel verfügbar, die wie
+gewohnt genutzt werden können. Prinzipiell lassen sich auch noch die beiden
+Befehle für den Schmutztitel \Macro{extratitle}(\Package{koma-script}) sowie
+\Macro{frontispiece}(\Package{koma-script}) nutzen, wobei deren Verwendung für
+ein Poster eher fraglich ist.
+
+Alle weiteren in \autoref{sec:title} vorgestellten Befehle und Optionen sind
+für \Class{tudscrposter} nicht definiert. Dies betrifft zum einen sowohl das
+Schriftelement \Font*{thesis} als auch die Befehle \Macro*{titledelimiter},
+\Macro*{thesis}, \Macro*{referee}, \Macro*{advisor}, \Macro*{graduation} und
+\Macro*{defensedate}. Zum anderen stehen die Makros für ergänzende
+Autorenangaben \Macro*{dateofbirth}, \Macro*{placeofbirth},
+\Macro*{matriculationyear} und \Macro*{matriculationnumber} wie auch
+die Option \Option*{subjectthesis} \emph{nicht} zur Verfügung. Die durch
+\KOMAScript{} für eine Titelseite bereitgestellten Befehle
+\Macro*{date}, \Macro*{publishers}(\Package{koma-script}) und
+\Macro*{dedication}(\Package{koma-script}) sowie
+\Macro*{uppertitleback}(\Package{koma-script}) und
+\Macro*{lowertitleback}(\Package{koma-script}) haben bei der Klasse
+\Class{tudscrposter} keinerlei Funktionalität. Die Befehle \Macro{author} und
+\Macro{authormore} existieren weiterhin, werden allerdings nicht für den Titel
+wohl jedoch für den speziellen Fußbereich eines Posters verwendet, welcher in
+\autoref{sec:poster:foot} weiterführend beschrieben wird.
+
+Neben der signifikanten Vereinfachung des Titels entfallen für die Klasse
+\Class{tudscrposter} einige weitere Befehle und Umgebungen. Namentlich sind
+dies die Umgebung \Environment*{tudpage}, die Optionen \Option*{headingsvskip}
+und \Option*{pageheadingsvskip} sowie alle zu Selbstständigkeitserklärung und
+Sperrvermerk gehörigen Elemente, wie die Option (\Option*{declaration}), die
+Umgebung (\Environment*{declarations}) und die Befehle (\Macro*{declaration},
+\Macro*{confirmation}, \Macro*{blocking}). Die Umgebung \Environment{abstract}
+kann weiterhin genutzt werden, allerdings kann mit der Option \Option{abstract}
+lediglich noch die Gliederungsebene der Überschrift angepasst werden.
+
+\section{Layout und Formatierung eines Posters}
+%
+Die augenscheinlichsten Einstellungen für die Gestaltung eines Posters sind
+sicherlich das verwendete Papierformat und die farbliche Ausprägung sowie die
+Auswahl der Schriftart und deren Größe. Als Grundeinstellung für die Klasse
+\Class{tudscrposter} sind die Schriften des \TUDCDs aktiviert. Diese lassen
+sich~-- wie auch bei den Hauptklassen~-- anpassen. Weitere Informationen hierzu
+sind der Erläuterung zur Option \Option{cdfont}'full' zu entnehmen.
+
+Nachfolgend wird kurz erläutert, wie sich allgemeine Formatierung eines mit
+\Class{tudscrposter} erstellten Posters anpassen lässt. Der Inhalt kann völlig
+frei gestaltet werden, es gibt hierfür bisher keinerlei von \TUDScript
+vordefinierte Befehle und Optionen, welche die Inhalte in ein bestimmtes Layout
+übersetzen.
+
+
+
+\subsection{Die Wahl von Papierformat und Schriftgröße}
+\tudhyperdef*{sec:fontsize}%
+\index{Papierformat|!}%
+\index{Schriftgröße|!}%
+
+Die Festlegung von \emph{Papierformat} und \emph{Schriftgröße} ist essentiell
+für das Erstellen eines Posters und sollten \emph{immer} vorgenommen werden.
+\Attention{Beide Einstellungen müssen zwingend als Klassenoption erfolgen.}
+Bei der Schriftgrößenauswahl ist darauf zu achten, ob der Satz des Posters
+ein- oder mehrspaltig erfolgen soll. Für letzteres Unterfangen ist die
+\Environment{multicols}(\Package{multicol})'none'"~Umgebung aus dem Paket
+\Package{multicol} sehr empfehlenswert.
+
+Zur Festlegung des Papierformats ist die \KOMAScript-Option
+\Option{paper=\PSet}(\Package{typearea})'none'|declare| zu verwenden. Dabei
+lassen sich mit \Option{paper=\PValueName{Format}}(\Package{typearea})'none'
+unter anderem die gängigen Klassen der ISO/DIN"~Reihen A~bis~D als auch Quer-
+oder Längsformat auswählen. Ein beliebiges Format kann mit der Einstellung
+\Option{paper=\PValueName{Höhe}{:}\PValueName{Breite}}(\Package{typearea})'none'
+gewählt werden. Für zusätzliche Hinweise ist das \scrguide zu Rate zu ziehen.
+
+Passend zum ausgewählten Papierformat sowie der gewünschten Anzahl an
+Textspalten des Posters sollte unbedingt die Schriftgröße mit
+\Option{fontsize=\PName{Schriftgröße}}(\Package{koma-script})'none'|declare|
+angegeben werden. Für eine passend abgestimmte Auswahl von Papierformat und
+Schriftgröße ist \autoref{tab:font+paper} als Referenz zu nutzen. Sollten Sie
+aufgrund der Schriftgrößenänderung eine oder mehrere Warnungen vom Typ
+%
+\begin{quoting}
+\begin{Code}
+Font shape `T1/cmr/m/n' in size <...> not available
+\end{Code}
+\end{quoting}
+%
+erhalten, so beachten Sie bitte die Hinweise aus \autoref{sec:tips:fontsize}.
+
+
+\begin{table}
+ \index{Papierformat|!}%
+ \index{Schriftgröße|!}%
+ \newcommand*\mtm{\small min\dots{}max}%
+ \newcommand*\rng[2]{\small #1\dots{}#2pt}%
+ \ttabbox[\linewidth]{%
+ \setlength\tabcolsep{5pt}%
+ \centering%
+ \begin{subfloatrow}%
+ \ttabbox{%
+\begin{tabular}{r*{7}c}
+ \toprule
+ &\multicolumn{7}{c}{Klasse} \tabularnewline\midrule
+ & 6 & 5 & 4 & 3 & 2 & 1 & 0 \tabularnewline\midrule
+Reihe & \mtm & \mtm & \mtm & \mtm & \mtm & \mtm & \mtm \tabularnewline\midrule
+ D &\rng{05}{07} &\rng{06}{09} &\rng{10}{14} &\rng{14}{20}%
+ &\rng{20}{29} &\rng{28}{40} &\rng{40}{60} \tabularnewline\midrule
+ A &\rng{06}{08} &\rng{07}{10} &\rng{11}{16} &\rng{16}{23}%
+ &\rng{23}{33} &\rng{32}{46} &\rng{45}{66} \tabularnewline\midrule
+ C &\rng{07}{09} &\rng{08}{11} &\rng{12}{18} &\rng{18}{26}%
+ &\rng{26}{37} &\rng{36}{52} &\rng{50}{72} \tabularnewline\midrule
+ B &\rng{08}{10} &\rng{09}{12} &\rng{13}{20} &\rng{20}{29}%
+ &\rng{29}{41} &\rng{40}{58} &\rng{55}{78} \tabularnewline\bottomrule
+\end{tabular}
+ }{\caption{Einspaltiges Layout}}%
+ \end{subfloatrow}%
+ \par\medskip
+ \begin{subfloatrow}%
+ \ttabbox{%
+\begin{tabular}{r*{4}c}
+ \toprule
+ &\multicolumn{4}{c}{Klasse} \tabularnewline\midrule
+ & 3 & 2 & 1 & 0 \tabularnewline\midrule
+ Reihe & \mtm & \mtm & \mtm & \mtm \tabularnewline\midrule
+D&\rng{07}{10}&\rng{10}{14}&\rng{14}{19}&\rng{19}{28}\tabularnewline\midrule
+A&\rng{08}{11}&\rng{11}{16}&\rng{16}{22}&\rng{22}{32}\tabularnewline\midrule
+C&\rng{09}{12}&\rng{12}{18}&\rng{18}{25}&\rng{25}{36}\tabularnewline\midrule
+B&\rng{10}{13}&\rng{13}{20}&\rng{20}{28}&\rng{28}{40}\tabularnewline\bottomrule
+\end{tabular}
+ }{\caption{Zweispaltiges Layout}}%
+ \ttabbox{%
+\begin{tabular}{r*{2}c}
+ \toprule
+ &\multicolumn{2}{c}{Klasse} \tabularnewline\midrule
+ & 1 & 0 \tabularnewline\midrule
+ Reihe & \mtm & \mtm \tabularnewline\midrule
+ D &\rng{07}{10} &\rng{10}{14} \tabularnewline\midrule
+ A &\rng{08}{11} &\rng{11}{16} \tabularnewline\midrule
+ C &\rng{09}{12} &\rng{12}{18} \tabularnewline\midrule
+ B &\rng{10}{13} &\rng{13}{20} \tabularnewline\bottomrule
+\end{tabular}
+ }{\caption{Dreispaltiges Layout}}%
+ \end{subfloatrow}%
+ }{%
+ \caption{%
+ Empfohlene Kombinationen für die Wahl von Papierformat
+ (\Option{paper}(\Package{typearea})'none') und Schriftgröße
+ (\Option{fontsize}(\Package{koma-script})'none')%
+ }%
+ \label{tab:font+paper}%
+ }%
+\end{table}
+
+
+
+\subsection{Die Gestalt eines Posters}
+
+Die Festlegung der Farbausprägung eines Posters erfolgt mit der Option
+\Option{cd}, welche nachfolgend beschrieben wird. Dabei kann aus einigen
+Varianten zur Farbgestaltung gewählt werden. Sollte keiner dieser
+vordefinierten Werte das gewünschte Layout zur Verfügung stellen, lässt sich
+dieses mit den Optionen \Option{cdhead} und \Option{cdfoot} sowie
+\Option{cdtitle}, \Option{cdpart} und \Option{cdsection} nachträglich
+noch genauer anpassen.
+
+
+\begin{Declaration}{\Option{cd=\PSet}}[bicolor]
+\printdeclarationlist%
+%
+Äquivalent zu den \TUDScript-Hauptklassen wird mit dieser Option die Verwendung
+des \TUDCDs für das Poster festgelegt. Sie hat Einfluss auf die Farbgestaltung
+der Gliederungsüberschriften sowie des Seitenstils, welcher standardmäßig auf
+\PageStyle{empty.tudheadings} gesetzt wird.
+%
+\begin{values}{\Option{cd}}
+\itemfalse
+ Hiermit wird das \CD komplett deaktiviert und es werden keine spezifischen
+ Einstellungen für ein Poster vorgenommen. Lediglich der Seitenstil wird auf
+ \PageStyle{empty} festgelegt.
+\itemtrue*[nocolor/monochrome]
+ Es wird schwarze Schrift für Überschriften und den Seitenkopf verwendet. Der
+ Fußbereich wird nicht farbig akzentuiert.
+\item[lightcolor/pale]
+ Die Einstellung entspricht weitestgehend der Option \Option{cd=true},
+ allerdings wird die primäre Hausfarbe \Color{HKS41} für Kopf sowie Fuß und
+ die Überschriften genutzt.
+\item[barcolor]
+ Zusätzlich zur vorherigen Einstellung wird außerdem der Querbalken farbig
+ abgesetzt.
+\item[bicolor/color/fullcolor]
+ Der Kopf wird mit einem farbigen Hintergrund in der primären Hausfarbe
+ \Color{HKS41} gesetzt, der Querbalken wird farbig abgesetzt. Ebenso wird für
+ alle Überschriften die Hausfarbe verwendet, der Fußbereich erhält ebenfalls
+ einen farbigen Hintergrund.
+\end{values}
+\end{Declaration}
+
+\begin{Declaration}{\Option{backcolor=\PSet}}[true]
+\printdeclarationlist%
+%
+Mit dieser Option kann die Hintergrundfarbe eines Posters definiert werden.
+%
+\begin{values}{\Option{backcolor}}
+\itemfalse[nocolor]
+ Es wird keine Farbe festgelegt, der Hintergrund erscheint weiß.
+\itemtrue*[color]
+ Der Seitenhintergrund wird in der primären Hausfarbe \Color{HKS41} gewählt.
+\item[\PValueName{Farbe}]
+ Die angegebene \PName{Farbe} wird als Hintergrund für das Poster genutzt.
+\end{values}
+\end{Declaration}
+
+\begin{Declaration}{\Option{bleedmargin=\PName{Längenwert}}}[0.2in]
+\printdeclarationlist%
+\index{Beschnittzugabe|?}%
+\index{Schnittmarken|?}%
+%
+Soll das Poster in einem Papierformat gedruckt werden, welches anschließend
+noch auf das Zielformat zugeschnitten wird, weil beispielsweise ein randloses
+Drucken nicht möglich ist, kann diese Option genutzt werden, um die farbigen
+Elemente des Layouts in den Bereich der Beschnittzugabe respektive Überfüllung
+zu vergrößern. Damit ist ein \enquote{Zuschneiden in die Farbe} sehr einfach
+und ohne große Probleme realisierbar.
+
+Die von der Einstellung \Option{bleedmargin=\PName{Längenwert}} abhängigen
+Elemente sind zum einen Kopf- und Fußbereich, beeinflusst durch die Optionen
+\Option{cdhead} und \Option{cdfoot}. Werden diese farbig gesetzt, so werden
+diese um den angegebenen \PName{Längenwert} über das gewünschte Zielformat
+hinaus vergrößert. Zum anderen wird auch der mit \Option{backcolor}
+gegebenenfalls eingestellte, farbige Seitenhintergrund erweitert. Wie sich der
+Entwurf eines Posters in einem bestimmten Zielformat auf einem übergroßem
+Papierbogen tatsächlich realisieren lässt, wird in \fullref{sec:tips:crop}
+exemplarisch dargestellt.
+\end{Declaration}
+
+
+
+\section{Felder für den Fußbereich}
+\tudhyperdef*{sec:poster:foot}%
+%
+Der Fußbereich eines Posters kann mit \Macro{footcontent} eigens und frei
+definiert werden. Geschieht dies nicht, wird standardmäßig ein vordefinierte
+Fuß gesetzt, welcher Angaben von bestimmten Feldern ausgibt, die insbesondere
+als Kontaktinformationen gedacht sind. Welche das im Einzelnen sind, wird
+nachfolgend erläutert. Die farbliche Ausprägung des Fußes wird durch die Option
+\Option{cdfoot} festgelegt.
+
+\begin{Declaration}{%
+ \Macro{faculty}[\OParameter{Fußzeile}\Parameter{Fakultät}]%
+}
+\begin{Declaration}{%
+ \Macro{department}[\OParameter{Fußzeile}\Parameter{Einrichtung}]%
+}
+\begin{Declaration}{%
+ \Macro{institute}[\OParameter{Fußzeile}\Parameter{Institut}]%
+}
+\begin{Declaration}{%
+ \Macro{chair}[\OParameter{Fußzeile}\Parameter{Lehrstuhl}]%
+}
+\printdeclarationlist%
+%
+Die mit diesen Befehlen gemachten Angaben werden nicht nur im Kopf sondern
+zusätzlich auch im linken Teil des Fußbereichs ausgegeben. Sollen diese für den
+Fußbereich angepasst werden, lässt das optionale Argument hierfür verwenden,
+wobei die Angabe eines leeren optionalen Argumentes das Feld für den Fuß
+komplett unterdrückt. Vor allen Angaben wird der Bezeichner \Term{contactname}
+in fetter Schrift ausgegeben.
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+
+\begin{Declaration}{\Macro{professor}[\Parameter{Name}]}
+\printdeclarationlist%
+%
+Zusätzlich zu den Angaben der Einrichtung kann mit \Macro{professor} der
+aktuelle Inhaber der genannten Professur im linken Fußbereich angegeben werden.
+\end{Declaration}
+
+\begin{Declaration}{\Macro{author}[\Parameter{Autor(en)}]}
+\begin{Declaration}{\Macro{contactperson}[\Parameter{Name(n)}]}
+\begin{Declaration}{\Macro{authormore}[\Parameter{Autorenzusatz}]}
+\begin{Declaration}{\Macro{course}[\Parameter{Studiengang}]}
+\begin{Declaration}{\Macro{discipline}[\Parameter{Studienrichtung}]}
+\begin{Declaration}{\Macro{office}[\Parameter{Adresse/Gebäude}]}
+\begin{Declaration}{\Macro{telephone}[\Parameter{Telefonnummer}]}
+\begin{Declaration}{\Macro{telefax}[\Parameter{Telefaxnummer}]}
+\printdeclarationlist%
+%
+Der oder die mit \Macro{author} angegebenen Autoren werden im rechten Teil des
+Fußbereichs (nacheinander) ausgegeben, mehrere Autoren sind mit \Macro{and}
+voneinander zu trennen. Die Befehle \Macro{authormore}, \Macro{course} und
+\Macro{discipline} sowie \Macro{office}, \Macro{telephone}, \Macro{telefax} und
+\Macro{emailaddress} können für zusätzliche Angaben zu jedem Autor innerhalb
+des Argumentes von \Macro{author} verwendet werden. Vor der Ausgabe aller
+Autoreninformationen wird der Bezeichner \Term{authorname} in fetter Schrift
+gesetzt. Ohne die Angabe von \Macro{author} erfolgt keine Ausgabe.
+
+Danach folgen alle mit \Macro{contactperson} gemachten Angaben. Auch hier ist
+\Macro{and} für eine Trennung mehrerer Personen zu nutzen, wobei hier lediglich
+die Befehle \Macro{emailaddress}, \Macro{office}, \Macro{telephone} und
+\Macro{telefax} nicht jedoch \Macro{authormore} sowie \Macro{course} und
+\Macro{discipline} für zusätzliche Angaben zu verwenden sind. Bevor die
+Ansprechpartner ausgegeben werden, wird der Bezeichner \Term{contactpersonname}
+in fetter Schrift gesetzt. Es ist natürlich auch möglich nur Autor(en) oder
+Ansprechpartner anzugeben.
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Macro{webpage}[\OParameter{Einstellungen}\Parameter{URL}]}
+\begin{Declaration}{\Macro{webpage*}[\Parameter{URL}]}
+\printdeclarationlist%
+%
+Ganz zum Schluss kann für die rechte Spalte des Fußbereichs eine Homepage
+angegeben werden. Wurde das Paket \Package{hyperref} geladen, wird diese in
+einen Hyperlink gewandelt. Über das optionale Argument können beliebige
+Einstellungen an \Macro{hypersetup}(\Package{hyperref})'none' aus besagtem
+Paket übergeben werden. Soll die Formatierung des Eintrags manuell erfolgen, so
+kann die Sternversion \Macro{webpage*} verwendet werden, wobei alle gewünschten
+Einstellungen innerhalb des Argumentes~-- gegebenenfalls in einer Gruppe~--
+vorgenommen werden müssen.
+\end{Declaration}
+\end{Declaration}
+
+
+\section{Sprachabhängige Bezeichner für den Fußbereich}
+
+\begin{Declaration}{\Term{contactname}}
+\begin{Declaration}{\Term{authorname}}
+\begin{Declaration}{\Term{contactpersonname}}
+\printdeclarationlist%
+%
+Wie bereits zuvor erläutert, werden diese Bezeichner in der linken respektive
+rechten Spalte im Fuß vor der Ausgabe der eigentlichen Felder gesetzt.
+\TermTable{contactname,authorname,contactpersonname}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\ToDo[imp]{%
+ Symbole für Telefon, Fax und E-Mail in \autoref{sec:poster:foot}?
+ Woher? marvosym?%\Email\fax\Faxmachine\FAX\Letter\Mobilefone\Telefon
+}[v2.07]
+\end{Bundle*}
diff --git a/macros/latex/contrib/tudscr/source/doc/tudscr-preface.tex b/macros/latex/contrib/tudscr/source/doc/tudscr-preface.tex
new file mode 100644
index 0000000000..b37950fb16
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/tudscr-preface.tex
@@ -0,0 +1,57 @@
+\addchap[tocentry={}]{\prefacename}
+In diesem Handbuch werden die für das Erstellen von \hologo{LaTeX}"=Dokumenten
+im \hrfn{https://tu-dresden.de/cd/}{\TUDCD} entwickelten Klassen und Pakete
+beschrieben. Diese basieren auf den gerade im deutschsprachigen Raum häufig
+verwendeten \KOMAScript"=Klassen, die eine Vielzahl von Einstellmöglichkeiten
+bieten, welche weit über die Möglichkeiten der \hologo{LaTeX}"=Standardklassen
+hinausgehen. Zusätzlich bietet das \TUDScript-Bundle weitere, insbesondere das
+Dokumentlayout betreffende Auswahlmöglichkeiten.
+
+Es sei angemerkt, dass die hier beschriebenen Klassen eine Abweichung vom
+\TUDCD zulassen, da dieses gerade unter typografischen Gesichtspunkten
+durchaus als diskussionswürdig zu erachten ist. Prinzipiell ist es mit den
+entsprechenden Einstellungen möglich, auf das Layout der \KOMAScript"=Klassen
+zurückzuschalten. Ohne die gezielte Verwendung dieser Optionen durch den
+Anwender werden per Voreinstellung alle Vorgaben des \CDs umgesetzt.
+
+Dieses Handbuch enthält eine Beschreibung der \emph{zusätzlich} zu den
+\KOMAScript"=Klassen nutzbaren Optionen und Befehle. Dabei werden
+Grundkenntnisse in der Verwendung von \hologo{LaTeX} vorausgesetzt. Sollten
+diese nicht vorhanden sein, wird das Lesen der \hologo{LaTeXe}"=Kurzbeschreibung
+\hrfn{http://mirrors.ctan.org/info/lshort/german/l2kurz.pdf}{\File{l2kurz.pdf}}
+dringend empfohlen. Für den vertiefenden Einstieg in \hologo{LaTeX} stellt
+Nicola~L.~C.~Talbot sehr ausführliche Tutorials für
+\hrfn{http://www.dickimaw-books.com/latex/novices/}{\hologo{LaTeX}-Novizen}
+und \hrfn{http://www.dickimaw-books.com/latex/thesis/}{Dissertationen} zur
+freien Verfügung. Zusätzlich werden in \autoref{part:additional} dieses
+Handbuchs Minimalbeispiele sowie etwas ausführlichere Tutorials angeboten.
+
+Des Weiteren sollte \emph{jeder} Anwender das \hologo{LaTeXe}"=Sündenregister
+\hrfn{http://mirrors.ctan.org/info/l2tabu/german/l2tabu.pdf}{\File{l2tabu.pdf}}
+kennen, um typische Fehler zu vermeiden. Antworten auf häufig gestellte Fragen
+liefert \hrfn{http://projekte.dante.de/DanteFAQ/WebHome}{DanteFAQ}. Falls der
+Nutzer unerfahren bei der Verwendung von \KOMAScript{} sein sollte, so ist ein
+Blick in das \scrguide[dazugehörige Handbuch] sehr zu empfehlen, wenn nicht
+sogar unumgänglich.
+
+Der aktuelle Stand der Klassen und Pakete aus dem \TUDScript-Bundle in der
+Version~\vTUDScript{} wurde nach bestem Wissen und Gewissen auf Herz und Nieren
+getestet. Dennoch kann nicht für das Ausbleiben von Fehlern garantiert werden.
+Beim Auftreten eines Problems sollte dieses genauso wie Inkompatibilitäten mit
+anderen Paketen im \Forum* respektive im \GitHubRepo*[issues] unter
+\begin{quoting}
+\Forum'\newline\GitHubRepo'[issues]%
+\end{quoting}
+gemeldet werden. Für eine schnelle und erfolgreiche Fehlersuche sollte bitte
+ein \hrfn{http://www.komascript.de/minimalbeispiel}{\textbf{Minimalbeispiel}}
+bereitgestellt werden. Auf Anfragen ohne dieses werde ich gegebenenfalls
+verspätet oder gar nicht reagieren. Ebenso sind im genannten Forum auch
+\emph{Fragen}, \emph{Kritik} und \emph{Verbesserungsvorschläge}~-- sowohl das
+Bundle selbst als auch die Dokumentation betreffend~-- gerne gesehen. Da dieses
+Bundle in meiner Freizeit entstanden ist und auch gepflegt wird, bitte ich um
+Nachsicht, falls ich nicht sofort antworte und/oder eine Fehlerkorrektur
+vornehmen kann.
+
+\bigskip
+\noindent Falk Hanisch\newline
+Dresden, \getfield{date}
diff --git a/macros/latex/contrib/tudscr/source/doc/tudscr-supervisor.tex b/macros/latex/contrib/tudscr/source/doc/tudscr-supervisor.tex
new file mode 100644
index 0000000000..845fdd3360
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/tudscr-supervisor.tex
@@ -0,0 +1,411 @@
+\setchapterpreamble{\tudhyperdef'{sec:supervisor}}
+\chapter[Das Paket \Package*{tudscrsupervisor} -- Studentische Betreuung]{%
+ Betreuung studentischer Arbeiten
+}
+\begin{Bundle*}{\Package{tudscrsupervisor}}
+%
+Dieses Paket stellt für das Erstellen von Aufgabenstellungen und Gutachten
+wissenschaftlicher Arbeiten sowie offiziellen Aushängen im \CD passende
+Umgebungen und Befehle für den Anwender bereit. Deshalb richtet es sich
+vornehmlich an Mitarbeiter an der \TnUD, kann jedoch natürlich auch von
+Studenten genutzt werden.
+
+
+\section{Aufgabenstellung für eine wissenschaftliche Arbeit}
+\index{Aufgabenstellung|!(}%
+%
+\begin{Declaration}{\Environment{task}[\OLParameter{Überschrift}]}{%
+ \Environment{tudpage}'auto'%
+}
+\begin{Declaration}{\Key{\Environment{task}}{headline=\PName{Überschrift}}}
+\begin{Declaration}[v2.05]{\Key{\Environment{task}}{style=\PName{Stil}}}
+\printdeclarationlist%
+%
+Mit der \Environment{task}"=Umgebung kann ein Aufgabenstellung für eine
+wissenschaftliche Arbeit ausgegeben werden. Diese basiert auf der Umgebung
+\Environment{tudpage} und akzeptiert deshalb im optionalen Argument alle
+Parameter, welche bei der Beschreibung von \Environment{tudpage}'full'
+erläutert wurden.
+
+Für die Aufgabenstellung wird normalerweise eine Überschrift gesetzt, welche
+sich aus \Term{taskname} und~-- falls der Typ der Abschlussarbeit angegeben
+wurde~-- noch aus \Term{tasktext} und \Macro{thesis} zusammensetzt. Der
+Parameter \Key{\Environment{task}}{headline} kann genutzt werden, um diese
+automatisch generierte Überschrift anzupassen.
+
+Zu Beginn der Aufgabenstellung erscheint eine Tabelle mit den angegebenen
+Informationen zum Autor respektive zu den Autoren der Abschlussarbeit. Zwingend
+anzugeben sind dafür lediglich der Name des oder der Verfasser (\Macro{author})
+sowie der Titel der Arbeit (\Macro{title}), welcher am Ende der Tabelle in
+fetter Schrift aufgeführt wird. Optional werden noch die Felder für den
+Studiengang (\Macro{course}), die Fachrichtung (\Macro{discipline}) sowie die
+Matrikelnummer (\Macro{matriculationnumber}) und das Immatrikulationsjahr
+(\Macro{matriculationyear}) ausgegeben, wobei nicht angegebene Felder bei der
+Ausgabe ignoriert werden. Der eigentliche Inhalt der Umgebung~-- sprich die
+Aufgabenstellung selbst~-- wird nach dem generierten Kopf ausgegeben
+
+Dem Inhalt der Aufgabenstellung folgt eine zeilenweise Auflistung des oder der
+definierten Gutachter beziehungsweise Prüfer (\Macro{referee}) sowie Betreuer
+(\Macro{supervisor}). Dabei wird vor dem jeweiligen Namen der dazugehörige
+Bezeichner (\Term{refereename}, \Term{refereeothername} respektive
+\Term{supervisorname}, \Term{supervisorothername}) gesetzt.
+\ChangedAt{v2.05}
+Dies ist das voreingestellte Verhalten und kann über die Wahl des Parameters
+\Key{\Environment{task}}{style=\PValue{table}} aktiviert werden. Wird hingegen
+der Parameter \Key{\Environment{task}}{style=\PValue{inline}} gesetzt, so
+erfolgt die Ausgabe von mehreren Prüfern und Betreuern in einer Zeile. Die
+Bezeichner sind problemlos anpassbar, siehe dazu \autoref{sec:localization}.
+Danach erscheinen das Ausgabedatum (\Macro{issuedate}) sowie der verpflichtende
+Abgabetermin (\Macro{duedate}). Zum Schluss wird die Unterschriftzeile für den
+Prüfungsausschussvorsitzenden (\Macro{chairman}) und den betreuenden
+Hochschullehrer (\Macro{professor}) gesetzt. Für genannte Personen werden unter
+dem Namen selbst die Bezeichner ausgegeben (\Term{chairmanname} und
+\Term{professorname}).
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{%
+ \Macro{taskform}[\LParameter\Parameter{Ziele}\Parameter{Schwerpunkte}]%
+}
+\printdeclarationlist%
+%
+Zusätzlich zur der frei gestaltbaren Umgebung \Environment{task} zur Erstellung
+einer Aufgabenstellung wird ein separater Befehl für eine standardisierte
+Ausgabe zur Verfügung gestellt. Dieser strukturiert die Aufgabenstellung in die
+zwei Bereiche \emph{Ziele} und \emph{Schwerpunkte} der Arbeit mit dazugehörigen
+Überschriften (\Term{objectivesname}, \Term{focusname}).
+
+Im optionalen Argument können alle Parameter der Umgebung \Environment{task}
+verwendet werden. Im ersten obligatorischen Argument sollte ein Text mit einer
+kurzen thematischen Einordnung und dem eigentlichen Ziel der Arbeit erscheinen,
+im zweiten Argument sollen die thematischen Schwerpunkte in Stichpunkten
+benannt werden. Der Inhalt des zweiten notwendigen Argumentes wird in einer
+\Environment{itemize}(\Package{koma-script},\Package{enumitem})'none'"=Umgebung
+gesetzt. Deshalb \emph{muss} jedem Stichpunkt
+\Macro{item}(\Package{koma-script},\Package{enumitem})'none' vorangestellt
+werden.
+\end{Declaration}
+%
+\begin{Example}
+Die empfohlene Verwendung des Befehls \Macro{taskform} ist wie folgt:
+\begin{Code}[escapechar=§]
+\taskform{%
+ Motivation der Arbeit im ersten Absatz§\dots§
+
+ Ziele der Arbeit im zweiten Absatz§\dots§
+}{%
+ \item Schwerpunkt 1
+ \item Schwerpunkt 2
+}
+\end{Code}
+Hierzu sei auch auf das Minimalbeispiel in \autoref{sec:exmpl:task} verwiesen.
+\index{Aufgabenstellung|!)}%
+\end{Example}
+
+\begin{Declaration}{\Macro{chairman}[\Parameter{Prüfungsausschussvorsitzender}]}
+\printdeclarationlist%
+%
+Wird dieses Feld genutzt, wird neben dem betreuenden Hochschullehrer
+(\Macro{professor}) auch der Vorsitzende des Prüfungsausschusses am Ende der
+Aufgabenstellung aufgeführt. Dies wird zumeist für Abschlussarbeiten wie
+beispielsweise \masterthesisname{} oder \diplomathesisname{} benötigt.
+\end{Declaration}
+
+\begin{Declaration}{\Macro{issuedate}[\Parameter{Ausgabedatum}]}
+\begin{Declaration}{\Macro{duedate}[\Parameter{Abgabetermin}]}
+\printdeclarationlist%
+%
+Mit diesen beiden Befehlen sollte das Datum der Ausgabe der Aufgabenstellung
+sowie der spätest mögliche Abgabetermin angegeben werden. Wurde das Paket
+\Package{isodate} oder \Package{datetime2} geladen, wird die damit eingestellte
+Ausgabeformatierung des Datums mit \Macro{printdate}(\Package{isodate})'none'
+beziehungsweise \Macro{DTMDate}(\Package{datetime2})'none' für \Macro{duedate}
+und \Macro{issuedate} verwendet.
+\end{Declaration}
+\end{Declaration}
+
+
+\section{Gutachten für wissenschaftliche Arbeiten}
+\index{Gutachten|!(}%
+%
+\begin{Declaration}{\Environment{evaluation}[\OLParameter{Überschrift}]}{%
+ \Environment{tudpage}'auto'%
+}
+\begin{Declaration}{%
+ \Key{\Environment{evaluation}}{headline=\PName{Überschrift}}%
+}
+\begin{Declaration}{\Key{\Environment{evaluation}}{grade=\PName{Note}}}
+\printdeclarationlist%
+%
+Diese Umgebung wird für das Erstellen eines Gutachtens einer wissenschaftlichen
+Arbeit bereitgestellt. Auch diese unterstützt alle Parameter, welche für die
+Umgebung \Environment{tudpage}'full' beschrieben wurden.
+
+Für ein Gutachten wird gewöhnlich eine Überschrift aus \Term{evaluationname}
+und~-- falls der Abschlussarbeitstyp angegeben wurde~-- \Term{evaluationtext}
+sowie \Macro{thesis} generiert. Diese automatisch generierte Überschrift kann
+mit dem Parameter \Key{\Environment{evaluation}}{headline} ersetzt werden. Am
+Ende des Gutachtens wird die mit \Key{\Environment{evaluation}}{grade}
+gegebene Note in fetter Schrift ausgezeichnet.
+
+Am Anfang der \Environment{evaluation}"=Umgebung wird die gleiche Tabelle mit
+Autorenangaben ausgegeben, wie dies bei der \Environment{task}"=Umgebung der
+Fall ist. Nach dem Tabellenkopf folgt auch hier der eigentliche Inhalt, sprich
+das Gutachten der Abschlussarbeit. Abgeschlossen wird die Umgebung mit der
+gegebenen Note~-- welche innerhalb von \Term{gradetext} ausgegeben wird~--
+sowie der Orts- und Datumsangabe (\Macro{place}, \Macro{date}) und der
+darauffolgenden Unterschriftzeile für den oder die Gutachter (\Macro{referee}),
+welche wiederum mit den entsprechenden sprachabhängigen Bezeichner
+(\Term{refereename}, \Term{refereeothername}) ergänzt werden.
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{%
+ \hskip-.06em\Macro{evaluationform}[%
+ \LParameter\Parameter{Aufgabe}\Parameter{Inhalt}%
+ \Parameter{Bewertung}\Parameter{Note}\hskip-.06em%
+ ]%
+}
+\printdeclarationlist%
+%
+Neben der individuell nutzbaren Umgebung \Environment{evaluation} wird ein
+separater Befehl zur Erstellung eines standardisierten Gutachtens
+bereitgestellt. Dieser strukturiert die Ausgabe in die vier Bereiche
+\emph{Aufgabe}, \emph{Inhalt}, \emph{Bewertung} und \emph{Note} und versieht
+diese jeweils mit der dazugehörigen Überschrift beziehungsweise Textausgabe
+(\Term{taskname}, \Term{contentname}, \Term{assessmentname} und
+\Term{gradetext}). Das optionale Argument unterstützt alle Parameter der
+\Environment{evaluation}"=Umgebung.
+\end{Declaration}
+%
+\begin{Example}
+Die empfohlene Verwendung des Befehls \Macro{evaluationform} ist wie folgt:
+\begin{Code}[escapechar=§]
+\evaluationform{%
+ Kurzbeschreibung der Aufgabenstellung§\dots§
+}{%
+ Zusammenfassung von Inhalt und Struktur§\dots§
+}{%
+ Bewertung der schriftlichen Abschlussarbeit§\dots§
+}{%
+ Zahl (Note)
+}
+\end{Code}
+Hierzu sei auch auf das Minimalbeispiel in \autoref{sec:exmpl:evaluation}
+verwiesen.
+\index{Gutachten|!)}%
+\end{Example}
+
+\begin{Declaration}{\Macro{grade}[\Parameter{Note}]}
+\printdeclarationlist%
+%
+Neben der Angabe der Note für ein Gutachten über den Parameter
+\Key{\Environment{evaluation}}{grade} der Umgebung \Environment{evaluation}
+kann dafür auch dieser global wirkende Befehl verwendet werden.
+\end{Declaration}
+
+
+\section{Aushang}
+\index{Aushang|!(}%
+%
+\begin{Declaration}{\Environment{notice}[\OLParameter{Überschrift}]}{%
+ \Environment{tudpage}'auto'%
+}
+\begin{Declaration}{\Key{\Environment{notice}}{headline=\PName{Überschrift}}}
+\printdeclarationlist%
+%
+Für das Anfertigen eines Aushangs kann diese Umgebung verwendet werden. Diese
+basiert abermals auf der Umgebung \Environment{tudpage} und unterstützt alle
+deren Parameter.
+
+Wurde ein Datum angegeben, wird dieses standardmäßig rechtsbündig oberhalb des
+Textbereiches angezeigt (\seeref{\Key{\Environment{tudpage}}{cdhead}}). Danach
+erfolgt die Ausgabe der Überschrift, welche für gewöhnlich dem Inhalt von
+\Term{noticename} entspricht und mit \Key{\Environment{notice}}{headline}
+geändert werden kann. Nach der Überschrift folgt der Inhalt der Umgebung. Wurde
+mit \Macro{contactperson} ein oder mehrere Ansprechpartner angegeben, werden
+diese Informationen am Ende der Umgebung gesetzt.
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{%
+ \Macro{noticeform}[\LParameter\Parameter{Inhalt}\Parameter{Schwerpunkte}]%
+}
+\printdeclarationlist%
+%
+Auch für diese Umgebung gibt es einen Befehl für eine normierte Form. Diese
+soll vor allem Verwendung für den Aushang studentischer Arbeitsthemen finden.
+Für das optionale Argument können sämtliche Parameter verwendet werden, die
+auch die \Environment{notice}"=Umgebung unterstützt.
+
+Das erste obligatorische Argument wird für eine kurze Inhaltsbeschreibung
+verwendet. Neben dem Text sollte hier wenn möglich eine thematisch passende
+Abbildung eingefügt werden (\Macro{includegraphics}(\Package{graphicx})'none').
+Das zweite Argument wird~-- wie schon bei \Macro{taskform}~-- dazu verwendet,
+einige Schwerpunkte aufzuzählen. Auch hier kommt nach der gliedernden
+Überschrift (\Term{focusname}) eine
+\Environment{itemize}(\Package{koma-script},\Package{enumitem})'none'"=Umgebung
+zum Einsatz, allen Schwerpunkten muss ein
+\Macro{item}(\Package{koma-script},\Package{enumitem})'none' vorangestellt
+werden.
+\end{Declaration}
+%
+\begin{Example}
+Die empfohlene Verwendung des Befehls \Macro{noticeform} ist wie folgt:
+\begin{Code}[escapechar=§]
+\noticeform{%
+ Kurzbeschreibung des Inhaltes der studentischen Arbeit§\dots§
+
+ Bild (optional), einzubinden mit:
+ \includegraphics[§\PName{Einstellungen}§]{§\PName{Datei}§}
+}{%
+ \item Schwerpunkt 1
+ \item Schwerpunkt 2
+}
+\end{Code}
+Hierzu sei auch auf das Minimalbeispiel in \autoref{sec:exmpl:notice} verwiesen.
+\index{Aushang|!)}%
+\end{Example}
+
+\begin{Declaration}[v2.02]{\Macro{contactperson}[\Parameter{Kontaktperson(en)}]}
+\begin{Declaration}{\Macro{office}[\Parameter{Dienstsitz}]}
+\begin{Declaration}[v2.02]{\Macro{telephone}[\Parameter{Telefonnummer}]}
+\begin{Declaration}[v2.05]{\Macro{telefax}[\Parameter{Telefaxnummer}]}
+
+\printdeclarationlist%
+%
+Am Ende eines Aushangs können mit \Macro{contactperson} Kontaktinformationen
+für eine oder mehrere Ansprechpartner angegeben werden. Soll mehr als eine
+Kontaktperson genannt werden, so müssen diese innerhalb des Befehls
+\Macro{contactperson} mit dem Befehl \Macro{and} getrennt werden. Für jede
+Person kann innerhalb des Argumentes von \Macro{contactperson} der Dienstsitz
+(\Macro{office}), die dienstliche Telefon- (\Macro{telephone}) sowie "~faxnummer
+(\Macro{telefax}) und die geschäftliche E"~Mail"=Adresse (\Macro{emailaddress})
+angegeben werden.
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+\end{Declaration}
+
+
+
+\section{Zusätzliche sprachabhängige Bezeichner}
+\index{Bezeichner|!(}%
+%
+Für das Paket \Package{tudscrsupervisor} werden für die zusätzlichen Befehle
+und Umgebungen weitere Bezeichner definiert. Für eine etwaige Anpassung dieser
+sei auf \autoref{sec:localization} verwiesen.
+
+\begin{Declaration}{\Term{taskname}}
+\begin{Declaration}{\Term{tasktext}}
+\printdeclarationlist%
+%
+Die Bezeichnung der Aufgabenstellung selbst ist in \Term{taskname} enthalten.
+Für die Generierung einer Überschrift wird dieser verwendet. Wurde außerdem mit
+\Macro{thesis} oder \Macro{subject} der Typ der Abschlussarbeit%
+\footnote{%
+ \Option{subjectthesis} oder spezieller Wert aus \autoref{tab:thesis}%
+}
+angegeben, wird die Überschrift zusammen mit dem Bezeichner \Term{tasktext}
+um die Typisierung erweitert. Falls gewünscht, kann die automatisch generierte
+Überschrift mit dem Parameter \Key{\Environment{task}}{headline} der Umgebung
+\Environment{task} überschrieben werden.
+\TermTable{taskname,tasktext}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}[v2.04]{\Term{namesname}}
+\begin{Declaration}{\Term{titlename}}
+\printdeclarationlist%
+%
+Diese beiden Bezeichner werden in der Tabelle mit den Autoreninformationen zu
+Beginn der Aufgabenstellung verwendet.
+\TermTable{namesname,titlename}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Term{issuedatetext}}
+\begin{Declaration}{\Term{duedatetext}}
+\printdeclarationlist%
+%
+Am Ende der Aufgabenstellung wird nach dem oder der Betreuer das Ausgabedatum
+und der Abgabetermin (\Macro{issuedate}, \Macro{duedate}) der Abschlussarbeit
+mit folgenden Bezeichner erläutert.
+\TermTable{issuedatetext,duedatetext}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Term{chairmanname}}
+\printdeclarationlist%
+%
+Wurde der Prüfungsausschussvorsitzende (\Macro{chairman}) angegeben, erfolgt
+unter dem Namen selbst die Ausgabe des Bezeichners.
+\TermTable{chairmanname}
+\end{Declaration}
+
+\begin{Declaration}{\Term{focusname}}
+\begin{Declaration}{\Term{objectivesname}}
+\printdeclarationlist%
+%
+Die Standardformen für Aufgabenstellung (\Macro{taskform}) respektive Aushang
+(\Macro{noticeform}) nutzen für die gesetzten Überschriften diese Bezeichner.
+\TermTable{focusname,objectivesname}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Term{evaluationname}}
+\begin{Declaration}{\Term{evaluationtext}}
+\printdeclarationlist%
+%
+Die Bezeichnung des Gutachten selbst ist in \Term{evaluationname} enthalten.
+Für die Generierung der Überschrift wird der Bezeichner \Term{evaluationtext}
+sowie der mit \Macro{thesis} oder gegebenenfalls mit \Macro{subject} gegebenen
+Typ der Abschlussarbeit verwendet. Diese automatisch generierte Überschrift
+kann mit dem Parameter \Key{\Environment{evaluation}}{headline} der
+Umgebung \Environment{evaluation} durch den Anwender überschrieben werden.
+\TermTable{evaluationname,evaluationtext}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Term{contentname}}
+\begin{Declaration}{\Term{assessmentname}}
+\printdeclarationlist%
+%
+Bei der standardisierten Form des Gutachtens (\Macro{evaluationform}) werden
+die darin~-- für eine strukturierte Gliederung~-- erzeugten Überschriften mit
+den Bezeichnern \Term{taskname}, \Term{contentname} und \Term{assessmentname}
+gesetzt.
+\TermTable{taskname,contentname,assessmentname}
+\end{Declaration}
+\end{Declaration}
+
+\begin{Declaration}{\Term{gradetext}}
+\printdeclarationlist%
+%
+Wird für das Gutachten einer wissenschaftlichen Arbeit die erzielte Note
+entweder mit dem Befehl \Macro{grade}[\Parameter{Note}] oder alternativ dazu
+mit dem Parameter \Key{\Environment{evaluation}}{grade=\PName{Note}} der
+Umgebung \Environment{evaluation} angegeben, so wird diese innerhalb von
+\Term{gradetext} verwendet.
+\grade{\PName{Note}}
+\TermTable*{gradetext}{.8\textwidth}
+\end{Declaration}
+
+\begin{Declaration}{\Term{noticename}}
+\begin{Declaration}[v2.02]{\Term{contactpersonname}}
+\printdeclarationlist%
+%
+Die Bezeichnung des Aushangs selbst ist in \Term{noticename} enthalten. Für
+die Generierung einer Überschrift wird dieser verwendet. Falls gewünscht, kann
+diese mit dem Parameter \Key{\Environment{notice}}{headline} der Umgebung
+\Environment{notice} überschrieben werden. Wurde eine Kontaktperson mit dem
+Befehl \Macro{contactperson} angegeben, wird als Überschrift der Kontaktdaten
+der Bezeichner \Term{contactpersonname} verwendet.
+
+\TermTable{noticename,contactpersonname}
+\end{Declaration}
+\end{Declaration}
+\index{Bezeichner|!)}%
+\end{Bundle*}
diff --git a/macros/latex/contrib/tudscr/source/doc/tudscr.tex b/macros/latex/contrib/tudscr/source/doc/tudscr.tex
new file mode 100644
index 0000000000..23ecb82dce
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/tudscr.tex
@@ -0,0 +1,162 @@
+\documentclass[english,ngerman,ttfont=roboto]{tudscrmanual}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\lstset{%
+ inputencoding=utf8,extendedchars=true,
+ literate=%
+ {ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
+ {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
+ {~}{{\textasciitilde}}1 {ß}{{\ss}}1
+}
+\usepackage{bookmark}
+
+\TUDoption{ToDo}{true}
+\KOMAoptions{headings=optiontoheadandtoc}
+
+%\tracinglabels[all]
+%\tracingmarkup
+%\tracingbundle
+
+\begin{document}
+\newrobustcmd*\cdurl{%
+ \begingroup%
+ \hypersetup{hidelinks}%
+ \href{https://tu-dresden.de/cd/}{https://tu-dresden.de/cd}%
+ \endgroup%
+}
+\faculty{\cdurl}
+\date{27.08.2019}
+\author{%
+ Falk Hanisch%
+ \expandafter\emailaddress\expandafter{\tudscrmail}%
+}
+\publishers{\GitHubRepo'[]}
+\subject{\TUDScript \vTUDScript{} basierend auf \KOMAScript}
+\title{Ein {LaTeX}-Bundle für Dokumente im \TUDCD}
+\ifdef{\tudprintflag}{%
+ \subtitle{Benutzerhandbuch\thanks{\href{tudscr}{Online-Version}}}%
+}{%
+ \subtitle{Benutzerhandbuch\thanks{\href{tudscr_print}{Druckversion}}}%
+}
+
+
+\makeatletter
+\begingroup%
+ \def\and{, }%
+ \let\thanks\@gobble%
+ \let\footnote\@gobble%
+ \let\emailaddress\@gobble%
+ \hypersetup{%
+ pdfauthor = {\@author},%
+ pdftitle = {\@title},%
+ pdfsubject = {Benutzerhandbuch für \TUDScript},%
+ pdfkeywords = {LaTeX, \TUDScript, Benutzerhandbuch},%
+ }%
+\endgroup%
+\makeatother
+
+
+\maketitle
+
+
+\include{tudscr-preface}
+\tableofcontents
+\include{tudscr-introduction}
+
+
+
+\setpartpreamble{%
+ \begin{abstract}
+ \hypersetup{linkcolor=red}
+ \noindent Dies ist der Hauptteil des \TUDScript-Bundles. Hier findet der
+ Anwender alle verfügbaren Optionen, Umgebungen und Befehle, die über
+ die Funktionalität von \KOMAScript{} hinausgehen.
+ \end{abstract}
+}%
+\part{Das \TUDScript-Bundle}
+\label{part:main}
+\include{tudscr-mainclasses}
+\include{tudscr-poster}
+\include{tudscr-supervisor}
+\include{tudscr-bundle}
+
+
+
+\setpartpreamble{%
+ \begin{abstract}
+ \hypersetup{linkcolor=red}
+ \noindent Für die Verwendung des \TUDScript-Bundles ist es nicht notwendig,
+ diesen Teil zu lesen. In \autoref{sec:exmpl} werden insbesondere für
+ \hologo{LaTeX}"=Neulinge sowie neue Anwender des \TUDScript-Bundles
+ mehrere einfache Beispiele gezeigt. Zusätzlich sind in \autoref{sec:tut}
+ umfangreichere Tutorials für das Erstellen von wissenschaftlichen Arbeiten
+ zu finden. Die darin gegebenen Empfehlungen sind nicht auf \TUDScript
+ beschränkt sondern lassen sich auch mit anderen \hologo{LaTeX}"=Klassen
+ umsetzen. In \autoref{sec:packages} werden Einsteigern~-- und versierten
+ \hologo{LaTeX}-Nutzern~-- meiner Meinung nach empfehlenswerte Pakete kurz
+ vorgestellt.
+
+ Anwendungshinweise sowie der eine oder andere allgemeine Hinweis bei der
+ Verwendung von \hologo{LaTeXe} wird in \autoref{sec:tips} gegeben. Dabei
+ sind diese durchaus für die Verwendung sowohl des \TUDScript-Bundles als
+ auch anderer \hologo{LaTeX}-Klassen interessant. Für Anregungen, Hinweise,
+ Ratschläge oder Empfehlungen zu weiteren Pakete sowie Tipps bin ich
+ jederzeit empfänglich.
+ \end{abstract}
+}
+\part{Ergänzungen und Hinweise}
+\label{part:additional}
+\include{tudscr-examples}
+\include{tudscr-packages}
+\include{tudscr-hints}
+
+
+
+\part{Anhang}
+\appendix
+\include{tudscr-installation}
+\include{tudscr-obsolete}
+\include{tudscr-additional}
+\include{tudscr-index}
+
+
+
+\clearpage
+
+\ToDo[imp,doc]{%
+ Benutzerdefinierte Anpassungen von \TUDScript, Kapitelstile, Farbeinsatz etc.%
+}[v2.07]
+\ToDo[imp]{%
+ Spezialseite zur freien Gestaltung mit Hintergrundebene für Bilder und Texte
+ (CD-Handbuch S. 80 ff.); Seitenstil: \PageStyle*{special.tudheadings}
+}[v2.07]
+\ToDo[doc,imp]{%
+ Rückseite bei Kapitelseiten (auch bei Teilen?) im doppelseitigen Satz per
+ Option nicht als Vakatseite setzen. Implementierung von farbigen Seiten
+ davor (\Option*{open=right}) sowie danach (\Option*{open=left}). Setzen von
+ speziellen Inhalten auf diesen Seiten äquivalent zu \Macro*{setpartpreamble}
+ bzw. \Macro*{setchapterpreamble}; ggf. temporär umschalten bzw. Warnung bei
+ Konflikt.
+ \url{http://latex.wcms-file3.tu-dresden.de/phpBB3/viewtopic.php?f=11&t=396}
+}[v2.07]
+
+\ToDo[imp]{LyX: layout-Dateien in das Projekt integrieren lassen?}[v2.07]
+\ToDo[imp]{\Package*{glossaries}: Paket für Stile aus Tutorial}[v2.07]
+
+\ToDo[imp]{TeXstudio: cwl-Dateien über docstrip, separate .ins-Datei}[v2.07]
+\ToDo[rls]{TeXstudio: alle *.cwl erneuern, automatisch über *.dtx}
+
+\ToDo[rls]{GitHub auf offene Issues prüfen}
+\ToDo[rls]{\emph{alle} dtx-Dateien der vorherigen Version mit WinMerge sichten}
+\ToDo[rls]{Layout und Umbrüche kontrollieren}
+\ToDo[rls]{Datum in tudscr-version.dtx, tudscr-comp.dtx, Handbuch \& README}
+\ToDo[rls]{%
+ Release auf GitHub und CTAN, Tag für Homepage und im Forum ändern\\
+ {\small\url{http://latex.wcms-file3.tu-dresden.de/phpBB3/viewtopic.php?t=303}}%
+}
+\ListOfToDo
+\end{document}
diff --git a/macros/latex/contrib/tudscr/source/doc/tutorials/mathswap.tex b/macros/latex/contrib/tudscr/source/doc/tutorials/mathswap.tex
new file mode 100644
index 0000000000..92e081b5b6
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/tutorials/mathswap.tex
@@ -0,0 +1,227 @@
+\documentclass[english,ngerman]{tudscrartcl}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+
+\usepackage{tudscrtutorial}
+\lstset{%
+ inputencoding=utf8,extendedchars=true,
+ literate=%
+ {ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
+ {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
+ {~}{{\textasciitilde}}1 {ß}{{\ss}}1
+}
+
+\usepackage{mathswap}
+\usepackage{bookmark}
+
+\begin{document}
+\begin{Bundle}{\Package{mathswap}}
+\date{07.11.2016}
+\author{Falk Hanisch\thanks{\noexpand\scriptsize\noexpand\mailto{\tudscrmail}}}
+\title{Änderung der Trennzeichen im Mathematikmodus}
+\makeatletter
+\begingroup%
+ \def\and{, }%
+ \let\thanks\@gobble%
+ \let\footnote\@gobble%
+ \hypersetup{%
+ pdfauthor = {\@author},%
+ pdftitle = {\@title},%
+ pdfsubject = {Mathematiksatz in \hologo{LaTeXe}},%
+ pdfkeywords = {LaTeX, \TUDScript, Tutorial, Mathematiksatz},%
+ }%
+\endgroup%
+\markright{\@title}
+\makeatother
+\StartTutorial[%
+ Werden in einer wissenschaftlichen Abhandlung vielerlei Daten importiert und
+ beispielsweise tabellarisch dargestellt, kann es durchaus sein, dass diese
+ importierten Datensätze bezüglich der darin enthaltenen Gruppierungs- und
+ Dezimaltrennzeichen nicht dem Zahlenformat entsprechen, welches für die
+ verwendete Dokumentsprache normalerweise notwendig wäre.
+
+ Dieses Tutorial behandelt die typografischen Eigenheiten von Gruppierungs-
+ und Dezimaltrennzeichen bei der Angabe von Zahlen in einem
+ \hologo{LaTeXe}"=Dokument. Sowohl bei der Einbindung von externen Daten als
+ auch bei der Erstellung von fremdsprachigen Dokumenten ist dies ein durchaus
+ relevantes Thema. Um sich die manuelle Konvertierung der Daten zu ersparen,
+ kann alternativ dazu die Möglichkeit genutzt werden, dies mit Hilfe von
+ \hologo{LaTeXe} selbst zu bewerkstelligen.
+
+ Es wird beschrieben, wie das \TUDScript-Paket \Package{mathswap}'manual' für
+ diese Zwecke genutzt werden kann. Wird es in einer der \TUDScript-Klassen
+ geladen, so wird das angenommene Zahlenformat an die gewählte Dokumentsprache
+ angepasst. Alternativ dazu kann auch das Paket \Package{ionumbers}()'manual'
+ verwendet werden.
+]
+Bevor das eigentliche Tutorial beginnt, werden sowohl eine Dokumentklasse als
+auch die für jedes \hologo{pdfLaTeX}-Dokument meiner Meinung nach sinnvollen
+Pakete geladen.
+%
+\begin{Preamble}
+\documentclass[english,ngerman]{tudscrartcl}% andere Klassen möglich
+\usepackage[T1]{fontenc}
+\ifpdftex{\usepackage[ngerman=ngerman-x-latest]{hyphsubst}}{}
+\usepackage{babel}
+\usepackage{microtype}
+
+\end{Preamble}
+%
+Zusätzlich wird das Paket \Package{mathswap}'manual' aus dem \TUDScript-Bundle
+geladen, welches die Änderung der Gruppierungs- und Dezimaltrennzeichen im
+Mathematikmodus ermöglicht. Dadurch werden einerseits Zahlen im zur jeweiligen
+Dokumentsprache gehörigen Format typografisch korrekt gesetzt. Andererseits ist
+es so möglich, Zahlen im englischen Format typografisch korrekt in deutschen
+Texten zu setzen~-- et vice versa.
+%
+\begin{Preamble}
+\usepackage{mathswap}
+\end{Preamble}
+%
+\addsec{Typografisch korrekte Ausgabe für deutschsprachige Dokumente}
+%
+Für dieses Tutorial wird zunächst angenommen, dass die wissenschaftlichen
+Abhandlung in deutscher Sprache verfasst wird. Ohne die Nutzung eines
+speziellen Paketes zur Ausgabeformatierung von Zahlen werden diese durch
+\hologo{LaTeXe} im mathematischen Modus bei der Angabe im deutschen
+Zahlenformat~-- Punkt~(\PValue{.}) als Gruppierungs- und Komma~(\PValue{,}) als
+Dezimaltrennzeichen~-- folgendermaßen ausgegeben:%
+\footnote{%
+ Da in der Präambel dieses Dokumentes das Paket \Package{mathswap}'manual'
+ bereits geladen wurde, wird mit \Macro{mathswapoff}'manual' auf das
+ Standardverhalten von \hologo{LaTeXe} geschaltet. Die Funktionalität wird mit
+ \Macro{mathswapon}'manual' wieder aktiviert.%
+}
+%
+\CodePreamble{%
+ Ohne \Package{mathswap}'manual' keine typografische Zifferngruppierung%
+}
+\begin{Trunk*}
+\mathswapoff
+\(4.523,58\)
+\mathswapon
+
+\end{Trunk*}
+%
+Mit dem Paket \Package{mathswap}'manual' wird das Ziel verfolgt, unabhängig vom
+genutzten Zahlenformat für die Eingabe, eine typografisch korrekte Ausgabe zu
+erzeugen. Wird das Paket zusammen mit einer \TUDScript-Klasse verwendet, werden
+die Gruppierungs- und Dezimaltrennzeichen bei der Eingabe im Mathematikmodus
+sprachabhängig interpretiert. Bei der Nutzung einer \KOMAScript-Dokumentklasse
+respektive einer \hologo{LaTeX}-Standardklasse werden diese im Mathematikmodus
+immer nach dem englischen Zahlenformat~-- Komma~(\PValue{,}) als Gruppierungs-
+und Punkt~(\PValue{,}) als Dezimaltrennzeichen~-- betrachtet.
+
+Da dieses Dokument mit einer \TUDScript-Klasse (\TUDClassName) gesetzt wird und
+die Spracheinstellung~\PValue{ngerman} gewählt wurde, wird für die folgenden
+Zahlen das deutsche Eingabeformat angenommen. Wird nun die bereits zuvor
+verwendete Zahl bei aktiver Funktionalität von \Package{mathswap}'manual' im
+Mathematikmodus angegeben werden, so wird diese den typografischen Konventionen
+folgend~-- halbes Leerzeichen zur Zahlengruppierung und Komma ohne umgebenden
+Leerraum als Dezimaltrennzeichen~-- entsprechend ausgegeben:
+%
+\CodePreamble{%
+ Zifferngruppierung korrekt (Spracheinstellung~\PValue{ngerman})%
+}
+\begin{Trunk*}
+\(4.523,58\)
+
+\end{Trunk*}
+%
+Wird die gleiche Zahl in englischer Formatierung angegeben, funktioniert dies
+nicht mehr:
+%
+\CodePreamble{%
+ Zifferngruppierung falsch (Spracheinstellung~\PValue{ngerman})%
+}
+\begin{Trunk*}
+\(4,523.58\)
+
+\end{Trunk*}
+%
+Um nun Zahlen, welche in englischer Formatierung eingegeben oder importiert
+werden, in deutschsprachigen Dokumenten typografisch korrekt auszugeben, können
+die beiden Befehle \Macro{commaswap}[\PParameter{\dots}]'manual' sowie
+\Macro{dotswap}[\PParameter{\dots}]'manual' genutzt werden. Mit diesen lässt
+sich festlegen, wie die im Mathematikmodus zur Zifferngruppierung eingegeben
+Trennzeichen~-- Komma~(\PValue{,}) und Punkt~(\PValue{.})~-- substituiert
+werden sollen, um damit die gewünschte Typografie zu erhalten. Die Argumente
+der beiden Befehle geben also an, wodurch im mathematischen Modus Komma und
+Punkt bei der Ausgabe ersetzt werden sollen.
+
+Im englischen Zahlenformat wird bei der Eingabe das Komma~(\PValue{,}) als
+Gruppierungs- und der Punkt~(\PValue{.}) als Dezimaltrennzeichen genutzt. Bei
+der Ausgabe für deutschsprachige Dokumente nach den typografischen Konventionen
+muss folglich das Komma durch ein halbes Leerzeichen (\Macro*{,}) ersetzt
+werden. Dies lässt sich mit \Macro{commaswap}[\PParameter{\Macro*{,}}]
+bewerkstelligen. Der Punkt ist demzufolge mit einem Komma durch die Angabe von
+\Macro{dotswap}[\PParameter{,}] zu ersetzen:%
+\footnote{%
+ Die Verwendung von \Macro*{begingroup} und \Macro*{endgroup} führt hierbei
+ dazu, dass die Änderungen der beiden Trennzeichen nur lokal innerhalb dieser
+ Gruppe erfolgt.
+}
+%
+\CodePreamble{%
+ Englisches Zahlenformat in korrekter deutscher Zifferngruppierung%
+}
+\begin{Trunk*}
+\begingroup
+ \commaswap{\,}
+ \dotswap{,}
+ \(4,523.58\)
+\endgroup
+
+\end{Trunk*}
+%
+Somit können in einem deutschsprachigen Dokument Zahlen im englischen Format
+problemlos verwendet beziehungsweise importiert und dennoch typografisch
+korrekt gesetzt werden.
+%
+\addsec{Typografisch korrekte Ausgabe für englischsprachige Dokumente}
+%
+Wird das Paket \Package{mathswap}'manual' zusammen mit einer \TUDScript-Klasse
+verwendet, werden die Gruppierungs- und Dezimaltrennzeichen im Mathematikmodus
+sprachabhängig definiert. Wird also die Dokumentsprache auf \PValue{english}
+gesetzt, so werden die Trennzeichen standardmäßig nach dem englischsprachigen
+Zahlenformat interpretiert.
+%
+\CodePreamble{%
+ Zifferngruppierung (Spracheinstellung~\PValue{english})%
+}
+\begin{Trunk*}
+\begingroup
+ \selectlanguage{english}%
+ \(4,523.58\)\newline
+ \(4.523,58\)
+\endgroup
+
+\end{Trunk*}
+%
+Für englischsprachige Dokumente wird für die Auszeichnung der Gruppierung von
+Ziffern ebenfalls ein halbes Leerzeichen und als Dezimaltrennzeichen ein Punkt
+verwendet. Werden nun Zahlen in der deutschen Formatierung eingelesen, so muss
+folglich das Komma durch einen Punkt \Macro{commaswap}[\PParameter{.}] und der
+Punkt mit \Macro{dotswap}[\PParameter{\Macro*{,}}] durch ein halbes Leerzeichen
+ersetzt werden:%
+%
+\CodePreamble{%
+ Deutsches Zahlenformat in korrekter englischer Zifferngruppierung%
+}
+\begin{Trunk*}
+\begingroup
+ \selectlanguage{english}%
+ \commaswap{.}
+ \dotswap{\,}
+ \(4.523,58\)
+\endgroup
+\end{Trunk*}
+%
+\FinishTutorial
+\ListOfToDo
+\end{Bundle}
+\end{document}
diff --git a/macros/latex/contrib/tudscr/source/doc/tutorials/mathtype.tex b/macros/latex/contrib/tudscr/source/doc/tutorials/mathtype.tex
new file mode 100644
index 0000000000..9f9625ab7b
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/tutorials/mathtype.tex
@@ -0,0 +1,204 @@
+\documentclass[english,ngerman]{tudscrartcl}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+
+\usepackage{tudscrtutorial}
+\lstset{%
+ inputencoding=utf8,extendedchars=true,
+ literate=%
+ {ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
+ {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
+ {~}{{\textasciitilde}}1 {ß}{{\ss}}1
+}
+
+\usepackage{mathtools}
+\usepackage{bookmark}
+
+\begin{document}
+\date{07.11.2016}
+\author{Falk Hanisch\thanks{\noexpand\scriptsize\noexpand\mailto{\tudscrmail}}}
+\title{Ein Beitrag zum mathematischen Satz in \hologo{LaTeX}}
+\makeatletter
+\begingroup%
+ \def\and{, }%
+ \let\thanks\@gobble%
+ \let\footnote\@gobble%
+ \hypersetup{%
+ pdfauthor = {\@author},%
+ pdftitle = {\@title},%
+ pdfsubject = {Mathematiksatz in \hologo{LaTeXe}},%
+ pdfkeywords = {LaTeX, \TUDScript, Tutorial, Mathematiksatz},%
+ }%
+\endgroup%
+\markright{\@title}
+\makeatother
+\StartTutorial[%
+ Im mathematischen Satz sollten lediglich Formelzeichen für physikalische
+ Größen und Variablen sowie Funktions- und Operatorzeichen mit frei wählbarer
+ Bedeutung kursiv geschrieben werden. Dagegen werden Einheiten und ihre
+ Vorsätze, Zahlen, Funktions- und Operatorzeichen mit feststehender Bedeutung
+ sowie Chemische Elemente und Verbindungen aufrecht gesetzt. Weiterhin werden
+ Indizes, welche ein Formelzeichen näher beschreiben, ebenfalls aufrecht
+ gesetzt. Dieses Tutorial zeigt, wie mit einfachen Mitteln die Auszeichnung
+ von beschreibenden Indizes bei Formelzeichen typografisch korrekt erfolgen
+ kann.
+]
+Bevor das eigentliche Tutorial beginnt, werden sowohl eine Dokumentklasse als
+auch die für jedes \hologo{pdfLaTeX}-Dokument meiner Meinung nach sinnvollen
+Pakete geladen.
+%
+\begin{Preamble}
+\documentclass[ngerman]{tudscrartcl}% andere Klassen sind möglich
+\usepackage[T1]{fontenc}
+\ifpdftex{\usepackage[ngerman=ngerman-x-latest]{hyphsubst}}{}
+\usepackage{babel}
+\usepackage{microtype}
+
+\end{Preamble}
+%
+Zusätzlich wird das Paket \Package{amsmath} geladen, welches unter anderem die
+in diesem Tutorial verwendeten Mathematikumgebungen \Environment{equation},
+\Environment{gathered} und \Environment{aligned} zur Verfügung stellt.
+%
+\begin{Preamble}
+\usepackage{amsmath}
+\end{Preamble}
+%
+Zunächst wird ein kurzes Beispiel gegeben, welches für die nachfolgenden
+Ausführungen als Grundlage dienen soll.
+%
+\CodePreamble{}%
+\begin{Trunk*}
+\begin{equation*}
+\begin{gathered}
+M_{EM} = \frac{M_{Rad}}{i_g \cdot i_A} - M_{VM} \\
+\textrm{für }
+\begin{aligned}
+0\leq M_{VM}\leq M_{VMmax} \\
+M_{EMmin}\leq M_{EM}\leq M_{EMmax}
+\end{aligned}
+\end{gathered}
+\end{equation*}
+
+\end{Trunk*}
+%
+Ein guter Mathematiksatz ist in \hologo{LaTeX} durchaus Sisyphusarbeit. Wenn
+mikrotypografisch alles richtig gemacht werden soll, gibt es einiges zu
+beachten. Generell gilt, dass Variablen kursiv oder geneigt, Bezeichnungen und
+Konstanten aufrecht gesetzt werden. Um beschreibende Indizes formal richtig zu
+setzen, ist ohne weitere Maßnahmen die exzessive Nutzung der Befehle
+\Macro{mathrm}[\PParameter{\dots}] und \Macro{mathit}[\PParameter{\dots}]
+respektive \Macro{mathnormal}[\PParameter{\dots}] wohl oder übel notwendig.
+Aus dem vorhergehenden Beispiel wird mit ziemlich viel Anpassungsarbeit:
+%
+\CodePreamble{}%
+\begin{Trunk*}
+\begin{equation*}
+\begin{gathered}
+M_\mathrm{EM} = \frac{M_\mathrm{Rad}}{i_g \cdot i_A} - M_\mathrm{VM} \\
+\textrm{für }
+\begin{aligned}
+0\leq M_\mathrm{VM}\leq M_\mathrm{VM_{max}} \\
+M_\mathrm{EM_{min}}\leq M_\mathrm{EM}\leq M_\mathrm{EM_{max}}
+\end{aligned}
+\end{gathered}
+\end{equation*}
+
+\end{Trunk*}
+%
+Augenscheinlich ist dabei sehr viel Handarbeit notwendig. Allerdings lässt sich
+dies relativ gut vereinfachen. Zu diesem Zwecke wird für das Setzen von Indizes
+bei Formelzeichen der Befehl \Macro{ind}[\PParameter{\dots}] definiert. Danach
+können~-- wenn dies für nötig und sinnvoll erachtet wird~-- noch zusätzliche
+Befehle für häufig verwendete Ausdrücke definiert werden. Als Beispiel wird das
+schon eben genutzte Drehmoment \ensuremath{M} verwendet. Hierfür wäre folgende
+Definition möglich:%
+\footnote{%
+ Dabei sorgt \Macro*{kern.03em} für das Einfügen eins kleinen Abstandes
+ zwischen kursiver Variable und dem aufrechten Index. Abhängig von der
+ verwendeten Schriftart sollte dieser Abstand leicht angepasst werden.
+}
+%
+\CodeHook{\let\newcommand\renewcommand}
+\begin{Trunk*}
+\newcommand*{\ind}[1]{\ensuremath{\kern.03em_\mathrm{#1}}}
+\newcommand*{\M}[1]{\ensuremath{M\ind{#1}}}
+
+\end{Trunk*}
+\CodePreamble{}
+\begin{Trunk*}
+\begin{equation*}
+\begin{gathered}
+\M{EM} = \frac{\M{Rad}}{i_g \cdot i_A} - \M{VM} \\
+\textrm{für }
+\begin{aligned}
+0\leq \M{VM}\leq \M{VM_{max}} \\
+\M{EM_{min}}\leq \M{EM}\leq \M{EM_{max}}
+\end{aligned}
+\end{gathered}
+\end{equation*}
+
+\end{Trunk*}
+%
+Ein gewünschter Nebeneffekt der vorhergehenden Definition ist, dass dieser
+Befehl aufgrund der Verwendung von \Macro{ensuremath}[\PParameter{\dots}] nun
+auch im Fließtext verwenden werden kann. Beispielsweise lässt sich im Textteil
+das induzierten Moment einer Verbrennungskraftmaschine~\M{VM_{ind}} angeben
+(\Macro{M}[\PParameter{VM\_\PParameter{ind}}]).
+
+Für noch mehr Bequemlichkeit bei der Nutzung kann eine Lösung gefunden werden,
+mit welcher~-- im Gegensatz zur Standardbefehlsdefinition in \hologo{LaTeXe}~--
+\textbf{nach} dem obligatorischen noch ein optionales Argument für einen
+zusätzlichen Subindex angegeben werden kann, um damit der natürlichen
+Schreibweise zu entsprechen. Es wird der Befehl \Macro{M} so definiert, das
+dieser entweder mit \Macro{M}[\Parameter{Index}] oder in der Variante
+\Macro{M}[\Parameter{Index}\OParameter{Indexindex}] mit nachgelagertem
+optionalen Argument genutzt werden kann.
+%
+\CodeHook{\let\newcommand\renewcommand}
+\begin{Trunk*}
+\makeatletter
+\renewcommand*{\M}[1]{\@ifnextchar[{\o@M{#1}}{\n@M{#1}}}
+\newcommand*{\n@M}{}
+\newcommand*{\o@M}{}
+\def\n@M#1{\ensuremath{M\ind{#1}}}
+\def\o@M#1[#2]{\ensuremath{M\ind{#1_{#2}}}}
+\makeatother
+
+\end{Trunk*}
+%
+Somit vereinfacht sich das zu Beginn vorgestellte Beispiel recht deutlich:
+%
+\begin{Trunk*}
+\begin{equation*}
+\begin{gathered}
+\M{EM} = \frac{\M{Rad}}{i_g \cdot i_A} - \M{VM} \\
+\textrm{für }
+\begin{aligned}
+0\leq \M{VM}\leq \M{VM}[max] \\
+\M{EM}[min]\leq \M{EM}\leq \M{EM}[max]
+\end{aligned}
+\end{gathered}
+\end{equation*}
+\end{Trunk*}
+%
+Das Definieren von \Macro{M}[\Parameter{Index}\OParameter{Indexindex}] mit
+angehängtem optionalen Argument ist ehrlich gesagt nur ein wenig Spielerei und
+soll zeigen, wie dies prinzipiell mit \hologo{LaTeXe}"=Mitteln funktioniert.
+Das Paket \Package{xparse} könnte alternativ zum hier vorgestellten Vorgehen
+für die Befehlsdeklaration des optionalen \textbf{nach} dem obligatorischen
+Argument genutzt werden. Damit würde die Befehlsdeklaration für \Macro{M}
+folgendermaßen lauten:
+\begin{Hint}
+\NewDocumentCommand \M { m o } {%
+ \ensuremath{M\ind{#1\IfValueT{#2}{_{#2}}}}%
+}
+\end{Hint}
+%
+\FinishTutorial
+\ListOfToDo
+\end{document}
diff --git a/macros/latex/contrib/tudscr/source/doc/tutorials/treatise.tex b/macros/latex/contrib/tudscr/source/doc/tutorials/treatise.tex
new file mode 100644
index 0000000000..30b1399ce8
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/doc/tutorials/treatise.tex
@@ -0,0 +1,3351 @@
+\RequirePackage{fix-cm}
+\documentclass[%
+ english,ngerman,%
+ cdgeometry=no,DIV=12,automark%
+]{tudscrartcl}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+
+\usepackage{tudscrtutorial}
+\lstset{%
+ inputencoding=utf8,extendedchars=true,
+ literate=%
+ {ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
+ {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
+ {~}{{\textasciitilde}}1 {ß}{{\ss}}1
+}
+\lstset{escapechar=§}
+
+\usepackage{lmodern}
+\TUDoptions{cdfont=false}
+\KOMAoptions{headings=normal}
+
+\usepackage{tudscrsupervisor}
+\usepackage{array}
+\usepackage{tabu}
+\usepackage{tabularx}
+\usepackage{tabulary}
+\usepackage{booktabs}
+\usepackage{siunitx}
+\sisetup{%
+ locale = DE,%
+ input-decimal-markers={,},%
+ input-ignore={.},%
+ group-separator={\,},%
+ group-minimum-digits=3%
+}
+\usepackage{xfrac}
+\AfterPackage*{hyperref}{%
+ \usepackage[%
+ automake,%
+ xindy={language=german-din},%
+ acronym,%
+ symbols,%
+ nomain,%
+ translate=babel,%
+ nogroupskip,%
+ nostyles,%
+ ]{glossaries}
+ \renewcommand*{\glsglossarymark}[1]{}
+ \newignoredglossary{abbreviation}
+ \newcommand*\newabbreviation[4][]{%
+ \newacronym[type=abbreviation,#1]{#2}{#3}{#4}%
+ }%
+ \makeglossaries
+}
+\usepackage{csquotes}
+\usepackage[backend=biber,style=alphabetic]{biblatex}
+\addbibresource{\jobname.bib}
+\DefineBibliographyStrings{ngerman}{urlseen = {Am:}}
+
+\usepackage{enumitem}
+
+\usepackage{caption}
+\DeclareCaptionSubType[alph]{figure}
+\DeclareCaptionSubType[alph]{table}
+\usepackage{floatrow}
+\renewcommand{\floatpagefraction}{0.7}
+
+\usepackage{tikz}
+\usetikzlibrary{chains}
+\usetikzlibrary{decorations.markings}
+\tikzset{on grid}
+
+\usepackage{pstricks,pst-node}
+
+\makeatletter
+\newcommand*\pcolumnfuzz[1]{\pretocmd{\@endpbox}{\hfuzz=#1}{}{}}
+\makeatother
+
+\usepackage{bookmark}
+
+\begin{filecontents}{\jobname.bib}
+@book{talbot2012,
+ author = {Nicola L. C. Talbot},
+ title = {{\LaTeX} for Complete Novices},
+ publisher = {Dickimaw Books},
+ series = {Dickimaw {\LaTeX} Series},
+ volume = {1},
+ isbn = {978-1-909440-00-5},
+ address = {Norfolk, UK},
+ year = {2012},
+ url = {http://www.dickimaw-books.com/latex/novices/},
+ urldate = {2014-12-01},
+}
+@book{talbot2013,
+ author = {Nicola L. C. Talbot},
+ title = {Using {\LaTeX} to Write a PhD Thesis},
+ publisher = {Dickimaw Books},
+ series = {Dickimaw {\LaTeX} Series},
+ volume = {2},
+ isbn = {978-1-909440-02-9},
+ address = {Norfolk, UK},
+ year = {2013},
+ url = {http://www.dickimaw-books.com/latex/thesis/},
+ urldate = {2014-12-01},
+}
+@online{reichert2012,
+ author = {Reichert, Axel and Voß, Herbert},
+ title = {\LaTeX~-- Satz von Tabellen},
+ organization = {Freie Universität Berlin},
+ date = {2012-01-12},
+ url = {http://userpage.fu-berlin.de/latex/Materialien/tabsatz.pdf},
+ urldate = {2014-12-01}
+}
+@article{neubauer1996,
+ author = {Marion Neubauer},
+ title = {Feinheiten bei wissenschaftlichen Publikationen~--
+ Mikrotypographie"=Regeln, Teil~I},
+ journaltitle = {Die \TeX{}nische Komödie},
+ year = {1997},
+ month = {2},
+ volume = {4/96},
+ pages = {23-40},
+ url = {http://www.dante.de/tex/Dokumente/dtk-neubauer.pdf},
+ urldate = {2014-12-01},
+}
+@article{neubauer1997,
+ author = {Marion Neubauer},
+ title = {Feinheiten bei wissenschaftlichen Publikationen~--
+ Mikrotypographie"=Regeln, Teil~II},
+ journaltitle = {Die \TeX{}nische Komödie},
+ year = {1997},
+ month = {5},
+ volume = {1/97},
+ pages = {25--44},
+ url = {http://www.dante.de/tex/Dokumente/dtk-neubauer.pdf},
+ urldate = {2014-12-01},
+}
+@online{struckmann2007,
+ author = {Struckmann, Werner},
+ title = {Einige typographische Grundregeln und ihre Umsetzung in \LaTeX},
+ date = {2007-09-03},
+ url = {http://www2.informatik.hu-berlin.de/sv/lehre/typographie.pdf},
+ urldate = {2014-12-01}
+}
+@online{bier2009,
+ author = {Bier, Christoph},
+ title = {typokurz~-- Einige wichtige typografische Regeln},
+ date = {2009-05-21},
+ url = {http://zvisionwelt.wordpress.com/downloads/#typokurz},
+ urldate = {2014-12-01}
+}
+\end{filecontents}
+
+
+\begin{document}
+\date{29.03.2017}
+\author{Falk Hanisch\thanks{\noexpand\scriptsize\noexpand\mailto{\tudscrmail}}}
+\title{%
+ Ein Anwenderleitfaden für das Erstellen einer wissenschaftlichen Abhandlung%
+}
+\makeatletter
+\begingroup%
+ \def\and{, }%
+ \let\thanks\@gobble%
+ \let\footnote\@gobble%
+ \hypersetup{%
+ pdfauthor = {\@author},%
+ pdftitle = {\@title},%
+ pdfsubject = {Tutorial für \hologo{LaTeXe}},%
+ pdfkeywords = {LaTeX, \TUDScript, Tutorial, Anwenderleitfaden},%
+ }%
+\endgroup%
+\makeatother
+\StartTutorial[%
+ Der Versuch, ein allumfassendes Tutorial für eine wissenschaftliche Arbeit
+ zur Verfügung zu stellen gleicht der beschwerlichen Suche nach einer
+ eierlegenden Wollmilchsau. Es ist quasi nicht möglich, alle potenziellen
+ Anforderungen an eine wissenschaftliche Arbeit in einem Dokument abzudecken,
+ insbesondere weil es für diese fast von jedem Lehrstuhl mehr oder weniger
+ unterschiedliche Vorgaben zu Formatierung und Layout gibt. Dennoch soll hier
+ versucht werden, einen Großteil der für gewöhnlich auftretenden Erfordernisse
+ zu bearbeiten.
+
+ Dieses Tutorial hat \emph{nicht} die Intention, \hologo{LaTeX}"=Einsteigern
+ sämtliche Grundlagen zu erläutern. Vielmehr wird davon ausgegangen, dass Sie
+ bereits erste Erfahrungen mit \hologo{LaTeXe} gesammelt haben. Dennoch wird
+ versucht, alle Schritte möglichst leicht nachvollziehbar zu gestalten. Sollte
+ Ihnen beim Lesen und Durcharbeiten des Tutorials etwas auf- oder missfallen,
+ so dürfen Sie mich gerne per E"~Mail kontaktieren. Auch Anregungen und
+ Wünsche dürfen sie mir gegenüber gerne kommunizieren.
+
+ Für absolute Neueinsteiger gibt es einige freie Tutorials, welche die ersten
+ Schritte mit \hologo{LaTeXe} stark erleichtern. Nicola~L.~C.~Talbot stellt
+ sehr gute Tutorials für
+ \hrfn{http://www.dickimaw-books.com/latex/novices/}{\hologo{LaTeX}-Novizen}
+ \cite{talbot2012} sowie
+ \hrfn{http://www.dickimaw-books.com/latex/thesis/}{Dissertationen}
+ \cite{talbot2013} zur freien Verfügung.
+
+ In erster Linie ist dieser Leitfaden für Anwender gedacht, die für ihre
+ wissenschaftliche Arbeit eine \TUDScript"=Dokumentklasse verwenden wollen.
+ Das vorgestellte Vorgehen kann jedoch~-- natürlich mit gewissen Abstrichen~--
+ auch mit anderen Klassen, insbesondere denen aus dem \KOMAScript"=Bundle,
+ umgesetzt werden. Viele der hier im Folgenden verwendeten Optionen und
+ Befehle aus dem \TUDScript-Bundle werden lediglich sporadisch in ihrer
+ Grundfunktion erläutert. Allerdings lassen sich detaillierte Erläuterung über
+ die türkisfarbigen Hyperlinks zum \tudhyperref{}{\TUDScript-Handbuch}
+ jederzeit sehr einfach öffnen. Des Weiteren wird auf eine Vielzahl von
+ Paketen verwiesen, deren Dokumentation über die magentafarbigen Links im
+ \CTAN* geöffnet werden kann. Alternativ kann dies auch über das Terminal
+ respektive die Kommandozeile mit dem Aufruf \Path{texdoc~\PName{Paket}}
+ direkt lokal erfolgen. Ein Großteil dieser Pakete wird zusätzlich kurz im
+ \TUDScript-Handbuch beschrieben.
+
+ Der Anwenderleitfaden muss nicht zwingend vollständig nachvollzogen werden.
+ Dieser ist in einzelne Abschnitte untergliedert, damit Sie sich bestimmte
+ Aspekte erarbeiten können. Sollten Querbezüge zu den einzelnen Abschnitten
+ bestehen, werden diese auch genannt. Zu guter Letzt findet sich am Ende
+ dieses Dokumentes das komplette Tutorial als ausführbarer Quelltext.
+]
+\tableofcontents
+\listoffigures
+\listoftables
+
+
+
+\section{Einleitung}
+\label{sec:introduction}%
+%
+Zu Beginn werden einige Pakete geladen, die quasi in jedem neu erstellten
+Dokument verwendet werden sollten. Alle weiteren in diesem Tutorial genutzten
+und/oder empfohlenen Pakete werden in den relevanten Abschnitten des Tutorials
+genauer erläutert.
+
+Beim Laden der Klasse mit \Macro*{documentclass} können Sie globale Optionen
+angeben. Diese werden sowohl an die Klasse selbst weitergereicht als auch allen
+in der Präambel geladenen Pakete zur Verfügung gestellt. Falls das Paket
+\Package{babel} für die Sprachauswahl im Dokument verwendet wird, sollten auf
+alle Fälle die verwendeten Sprachen als Klassenoption angegeben werden, wobei
+die zuletzt angegebene als aktuelle Sprache aktiviert wird. Dadurch werden
+diese nicht nur an das Paket \Package{babel} sondern auch an andere Pakete
+übergeben, welche sprachspezifische Einstellungen vornehmen.
+%
+\begin{Preamble}
+\documentclass[english,ngerman]{tudscrreprt}
+\usepackage{babel}
+\end{Preamble}
+%
+Mit dem Paket \Package{fontenc} lässt sich die Kodierung der für die Ausgabe
+der verwendeten Schriften im Dokument spezifizieren, wobei die europäische
+Zeichenkodierung mit der Option~\Option{T1}(\Package{fontenc}) aktiviert wird.
+Kommt mit \Engine{LuaLaTeX} oder \Engine{XeLaTeX} ein Unicode"=Textsatzsystem
+zum Einsatz, sollte besser das Paket \Package{fontspec} geladen werden.
+
+Weiterhin kann die Eingabekodierung der kompilierten Datei eingestellt werden.
+Diese ist standardmäßig \PValue{utf8}. Bei der Verwendung von \Engine{pdfLaTeX}
+sind auch andere Kodierungen möglich.%
+\footnote{%
+ Sollte die Datei in einer anderen Kodierung gespeichert sein, so kann das
+ Paket \Package{selinput} genutzt werden, um die Kodierung automatisch zu
+ erkennen. Alternativ lässt sich die Eingabekodierung auch mit dem Paket
+ \Package{inputenc} auch manuell festgelegen. In beiden Fällen sollte das
+ Paket \Package{fontenc} \emph{vorher} geladen worden sein.
+}
+
+Wurde ein Sprachpaket für die deutsche Sprache geladen (\Package{babel} oder
+\Package{polyglossia}), so werden für \Engine{LuaLaTeX} und \Engine{XeLaTeX}
+erweiterte Trennmuster verwendet. Für \Engine{pdfLaTeX} lässt sich eine
+wesentlich verbesserte Worttrennung für die deutsche Sprache mit dem Paket
+\Package{hyphsubst} aktivieren. In \autoref{sec:hyphenation} können Sie weitere
+Informationen zur Verwendung von \Package{hyphsubst} sowie zum Thema
+\emph{Worttrennung} finden.
+%
+\begin{Preamble}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\end{Preamble}
+%
+Für die \KOMAScript-Klassen wird außerdem das Paket \Package{scrhack}
+bereitgestellt. Dieses behebt einige Probleme bei der Kompatibilität mit
+anderen Paketen bezüglich des Erstellens von Verzeichnissen. Deshalb sollte
+dieses bei Bedarf frühzeitig in der Präambel geladen werden.
+%
+\begin{Preamble}
+\usepackage{scrhack}
+\end{Preamble}
+%
+Damit sind die allgemein notwendigen Pakete eingebunden. Es werden zwar weitere
+benötigt, diese werden allerdings in den einzelnen Abschnitten dieses Tutorials
+aufgeführt.
+
+
+
+\section{Makrotypografie}
+\subsection{Satzspiegel}
+Gleich zu Beginn und bevor das eigentliche Verfassen der Arbeit beginnt, sollte
+sich der Verfasser Gedanken über das zu nutzenden Layout und den Satzspiegel
+machen, um bei der Finalisierung des Dokumentes keine böse Überraschung bei
+Seitenumbrüchen oder der Position von Gleitobjekten zu erleben.
+
+Zuerst gilt es zu entscheiden, ob das Dokument einseitig oder beidseitig
+gesetzt werden soll. Ist Letzteres der Fall, so sollte die \KOMAScript-Option
+\Option{twoside}(\Package{typearea}) als Klassenoption angegeben werden. Im
+nächsten Schritt ist der zu verwendende Satzspiegel festzulegen. Hierfür kann
+die \TUDScript-Option \Option{cdgeometry}'manual' verwendet werden, welche im
+\TUDScript-Handbuch beschrieben ist. Normalerweise wird das Dokument im
+asymmetrischen Layout des \CDs gesetzt.
+%
+Dieses Verhalten wird mit \Option*{cdgeometry=false}'manual' deaktiviert und
+der Satzspiegel durch das Paket \Package{typearea} nach typografischen
+Gesichtspunkten konstruiert. Dabei ist für dessen Aufteilung maßgeblich die
+\KOMAScript-Option \Option{DIV}(\Package{typearea}) verantwortlich, mit der
+\KOMAScript"=Option \Option{BCOR}(\Package{typearea}) wird die Bindekorrektur
+angegeben. Diese wird in \autoref{sec:bcor} erläutert.
+
+\subsection{Änderung des Zeilenabstandes (Durchschuss)}
+Auf eine Änderung des Zeilenabstandes sollte aus typografischer Sicht bei der
+Verwendung einer Standardschrift im Normalfall verzichtet werden. Die Gründe
+hierfür werden im Handbuch von \TUDScript bei der Vorstellung des Paketes
+\Package{setspace} erklärt, welches für dieses Anliegen den Befehl
+\Macro{setstretch}[\Parameter{Faktor}](\Package{setspace}) bereitstellt. Wird
+die \OpenSans-Hausschrift der \TnUD verwendet, sollte der Faktor im Bereich
+\PValue{1.05}--\PValue{1.1} liegen.
+
+\subsection{Bindekorrektur}
+\label{sec:bcor}%
+%
+Falls die Arbeit nach der Fertigstellung gebunden werden soll, so ist auf den
+notwendigen Binderand zu achten, quasi der Teil einer Seite, welcher durch die
+Bindung \enquote{verschwindet} und nicht mehr als sichtbarer Teil der Seite
+vorhanden ist. Als Faustregel gilt, dass die erforderliche Bindekorrektur in
+etwa der halben Höhe des Buchblocks entsprechen sollte. Dessen Höhe wiederum
+ist abhängig von der Anzahl der Seiten sowie der Papierdichte.
+
+Wird qualitativ höherwertiges Papier mit einer Dichte von \SI{100}{g/m^2}
+verwendet, so entsprechen 100~Blatt einer Buchblockhöhe von zirka~\SI{12}{mm}.
+Dementsprechend wäre in diesem Beispiel eine Bindekorrektur von~\SI{6}{mm}
+notwendig, die sich mit der Klassenoption \Option*{BCOR=6mm} einstellen ließe.
+Sollte die erwartete Seitenzahl davon abweichen, kann die einzustellende
+Bindekorrektur linear skaliert werden. Für differierende Papierdichten sollte
+die Buchblockhöhe für die geschätzte Gesamtseitenanzahl in Erfahrung gebracht
+werden.
+
+
+
+\section{Umschlagseite und Titel}
+Die Umschlagseite und der Titel sind sich in ihrer Gestalt sehr ähnlich.
+Allerdings gibt es ein paar kleine Unterschiede. Einerseits werden auf dem
+Cover weniger Informationen als auf der Titelseite ausgegeben. Andererseits
+wird der Titel immer im Satzspiegel des restlichen Dokumentes ausgegeben,
+wohingegen die Umschlagseite~-- ohne weitere Optionen~-- im asymmetrischen
+Layout des \CDs der \TnUD erscheint. Wie dieses Verhalten geändert werden kann,
+ist im Handbuch für \Macro{makecover}'manual' erläutert. Die resultierende
+Ausgabe des nachfolgenden Quelltextauszugs ist in \autoref{fig:title} zu sehen
+und stellt eine mögliche Ausprägung von Umschlagseite und Titel dar.
+%
+\begin{figure}
+\IncludeStandalone{title}[1,2]
+\caption{Umschlagseite und Titel}
+\label{fig:title}
+\end{figure}
+
+\begin{Trunk!}{title}
+\faculty{Juristische Fakultät}
+\department{Fachrichtung Strafrecht}
+\institute{Institut für Kriminologie}
+\chair{Lehrstuhl für Kriminalprognose}
+\title{%
+ Entwicklung eines optimalen Verfahrens zur Eroberung des
+ Geldspeichers in Entenhausen
+}
+\thesis{master}
+\graduation[M.Sc.]{Master of Science}
+\author{%
+ Mickey Mouse%
+ \matriculationnumber{12345678}%
+ \dateofbirth{2.1.1990}%
+ \placeofbirth{Dresden}%
+ \course{Klinische Prognostik}%
+ \discipline{Individualprognose}%
+\and%
+ Donald Duck%
+ \matriculationnumber{87654321}%
+ \dateofbirth{1.2.1990}%
+ \placeofbirth{Berlin}%
+ \course{Statistische Prognostik}%
+ \discipline{Makrosoziologische Prognosen}%
+}
+\matriculationyear{2010}
+\supervisor{Dagobert Duck \and Mac Moneysac}
+\professor{Prof. Dr. Kater Karlo}
+\date{10.09.2014}
+\makecover
+\maketitle
+
+\end{Trunk!}
+
+
+
+\section{Vor- und Nachspann}
+In den folgenden Unterabschnitten werden Elemente vorgestellt, welche häufig
+als Bestandteil einer wissenschaftlichen (Abschluss"~)Arbeit gefordert werden.
+Die Platzierung oder Position der vorgestellten Elemente innerhalb der Arbeit
+ist nicht eindeutig durch eine Norm oder dergleichen festgelegt. Vielmehr gibt
+es meist eine Richtlinie vom verantwortlichen Prüfungsamt oder eine konkrete
+Vorgabe des betreuenden wissenschaftlichen Mitarbeiters oder Hochschullehrers.
+
+Verwenden Sie für ihre Arbeit eine Buchklasse, so können die entsprechenden
+Abschnitte mit \Macro{frontmatter}(\Package{koma-script}) (Vorspann),
+\Macro{mainmatter}(\Package{koma-script}) (Hauptteil) und
+\Macro{backmatter}(\Package{koma-script}) (Nachspann) gekennzeichnet werden.
+Einen Anhang starten Sie mit \Macro{appendix}(\Package{koma-script}), womit
+unter anderem die Kapitelnummerierung auf Großbuchstaben umgeschaltet wird.
+Weitere Hinweise zu den genannten Befehlen sind im \scrguide nachzulesen.
+
+
+\subsection{Aufgabenstellung}
+\label{sec:task}%
+%
+Das Erstellen der Aufgabenstellung einer Abschlussarbeit im \CD der \TnUD muss
+das Paket \Package{tudscrsupervisor}'manual' geladen werden.
+%
+\begin{Preamble}
+\usepackage{tudscrsupervisor}
+
+\end{Preamble}
+%
+Dieses Paket stellt die Umgebung \Environment{task}'manual' sowie den Befehl
+\Macro{taskform}'manual' bereit. Bei beiden Varianten wird zu Beginn eine
+Tabelle mit Autoreninformationen erzeugt. Am Ende werden der oder die Betreuer
+der Arbeit sowie Professor und gegebenenfalls der Prüfungsausschussvorsitzende
+ausgegeben. Mit der Umgebung \Environment{task}'manual' kann zwischen Kopf und
+Fuß ein beliebiger Inhalt gesetzt werden. Der Befehl \Macro{taskform}'manual'
+hingegen erzeugt eine standardisierte Ausgabe, wobei der Inhalt des zweiten
+obligatorischen Arguments in einer
+\Environment{itemize}(\Package{koma-script},\Package{enumitem})-Umgebung
+verwendet wird und somit \Macro{item}(\Package{koma-script},\Package{enumitem})
+zu nutzen ist. Das Resultat des folgenden Quelltextes ist in \autoref{fig:task}
+zu sehen.
+%
+\begin{figure}
+\IncludeStandalone{task}[1,2]
+\caption{Aufgabenstellung in freier und standardisierter Form}
+\label{fig:task}
+\end{figure}
+
+\begin{Hint!}{task}
+\faculty{Juristische Fakultät}
+\department{Fachrichtung Strafrecht}
+\institute{Institut für Kriminologie}
+\chair{Lehrstuhl für Kriminalprognose}
+\title{%
+ Entwicklung eines optimalen Verfahrens zur Eroberung des
+ Geldspeichers in Entenhausen
+}
+\thesis{master}
+\author{%
+ Mickey Mouse%
+ \matriculationnumber{12345678}%
+ \course{Klinische Prognostik}%
+ \discipline{Individualprognose}%
+\and%
+ Donald Duck%
+ \matriculationnumber{87654321}%
+ \course{Statistische Prognostik}%
+ \discipline{Makrosoziologische Prognosen}%
+}
+\matriculationyear{2010}
+\issuedate{1.2.2015}
+\duedate{1.8.2015}
+\supervisor{Dagobert Duck \and Mac Moneysac}
+\chairman{Prof. Dr. Primus von Quack}
+\professor{Prof. Dr. Kater Karlo}
+
+\newcommand{\taskcontent}{%
+ Momentan ist das besagte Thema in aller Munde. Insbesondere wird es
+ gerade in vielen~-- wenn nicht sogar in allen~-- Medien diskutiert.
+ Es ist momentan noch nicht abzusehen, ob und wann sich diese Situation
+ ändert. Eine kurzfristige Verlagerung aus dem Fokus der Öffentlichkeit
+ wird nicht erwartet.
+
+ Als Ziel dieser Arbeit soll identifiziert werden, warum das Thema
+ gerade so omnipräsent ist und wie dieser Effekt abgeschwächt werden
+ könnte. Zusätzlich sind Methoden zu entwickeln, mit denen sich ein
+ ähnlicher Vorgang zukünftig vermeiden lässt.
+}
+
+\begin{task}
+\smallskip
+\par\noindent
+\taskcontent
+\end{task}
+
+\taskform[pagestyle=empty]{\taskcontent}{%
+ \item Recherche
+ \item Analyse
+ \item Entwicklung eines Konzeptes
+ \item Anwendung der entwickelten Methodik
+ \item Dokumentation und grafische Aufbereitung der Ergebnisse
+}
+
+\end{Hint!}
+\begin{Trunk+}
+\newcommand{\taskcontent}{%
+ Momentan ist das besagte Thema in aller Munde. Insbesondere wird es
+ gerade in vielen~-- wenn nicht sogar in allen~-- Medien diskutiert.
+ Es ist momentan noch nicht abzusehen, ob und wann sich diese Situation
+ ändert. Eine kurzfristige Verlagerung aus dem Fokus der Öffentlichkeit
+ wird nicht erwartet.
+
+ Als Ziel dieser Arbeit soll identifiziert werden, warum das Thema
+ gerade so omnipräsent ist und wie dieser Effekt abgeschwächt werden
+ könnte. Zusätzlich sind Methoden zu entwickeln, mit denen sich ein
+ ähnlicher Vorgang zukünftig vermeiden lässt.
+}
+\taskform[pagestyle=empty]{\taskcontent}{%
+ \item Recherche
+ \item Analyse
+ \item Entwicklung eines Konzeptes
+ \item Anwendung der entwickelten Methodik
+ \item Dokumentation und grafische Aufbereitung der Ergebnisse
+}
+
+\end{Trunk+}
+
+
+\subsection{Zusammenfassung}
+Häufig wird zu Beginn einer wissenschaftliche Arbeit die Motivation und der
+Inhalt dieser zusammengefasst, um den Leser die Thematik der Abhandlung
+vorzustellen. in den meisten Fällen wird diese dabei in deutscher und
+englischer Sprache verfasst. Hierfür stellt \KOMAScript{} bereits die Umgebung
+\Environment{abstract}'manual' bereit. Vielfach wird der Wunsch geäußert,
+sowohl die deutsche als auch die englische Zusammenfassung auf derselben Seite
+zu setzen. Diese Variante kann mithilfe der \TUDScript-Klassen sehr einfach
+umgesetzt werden, wie der nachfolgende Quelltextauszug zeigt. Die resultierende
+Ausgabe ist in \autoref{fig:abstr} zu sehen.
+%
+\begin{figure}
+\centering
+\IncludeStandalone[width=.5\textwidth]{abstract}
+\caption{Zusammenfassung in deutscher und englischer Sprache}
+\label{fig:abstr}
+\end{figure}
+
+\begin{Trunk!}{abstract}
+\TUDoption{abstract}{multiple,section}
+\begin{abstract}
+ Dies ist der deutschsprachige Teil der Zusammenfassung, in dem die
+ Motivation sowie der Inhalt der nachfolgenden wissenschaftlichen
+ Abhandlung kurz dargestellt werden.
+\nextabstract[english]
+ This is the english part of the summary, in which the motivation and
+ the content of the following academic treatise are briefly presented.
+\end{abstract}
+
+\end{Trunk!}
+
+
+
+\subsection{Selbstständigkeitserklärung und Sperrvermerk}
+Für die meisten Abschlussarbeiten an der \TnUD wird vom Verfasser eine
+Selbstständigkeitserklärung verlangt. Für diese wird ein Standardtext
+bereitgestellt. Dieser kann mit dem Befehl \Macro{confirmation}'manual'
+ausgegeben werden. Wurde das Thema in Kooperation mit einem Unternehmen
+bearbeitet, so wird zumeist auch ein Sperrvermerk gefordert, welcher mit
+\Macro{blocking}'manual' erzeugt werden kann. Mit \Macro{declaration}'manual'
+lassen sich beide Erklärungen direkt nacheinander erzeugen. Die verwendete
+Überschrift und ein möglicher Eintrag in das Inhaltsverzeichnis können über die
+Option \Option{declaration}'manual' reguliert werden. Eine mögliche Ausprägung
+der Erklärungen ist in \autoref{fig:decl} abgebildet.
+%
+\begin{figure}
+\centering
+\IncludeStandalone[width=.5\textwidth]{declaration}
+\caption{Selbstständigkeitserklärung und Sperrvermerk}
+\label{fig:decl}
+\end{figure}
+
+\begin{Hint!}{declaration}
+\title{%
+ Entwicklung eines optimalen Verfahrens zur Eroberung des
+ Geldspeichers in Entenhausen
+}
+\author{Mickey Mouse\and Donald Duck}
+\declaration[company=FIRMA]
+\end{Hint!}
+\begin{Trunk+}
+\declaration[company=FIRMA]
+
+\end{Trunk+}
+
+\subsection{Inhalts-, Abbildungs-, und Tabellenverzeichnis}
+Das Inhaltsverzeichnis wird mit \Macro{tableofcontents}(\Package{koma-script})
+erzeugt und führt die Gliederung des erstellten Dokumentes entsprechend der
+verwendeten Befehle%
+\footnote{%
+ \Macro{part}(\Package{koma-script}),
+ \Macro{addpart}(\Package{koma-script}),
+ \Macro{chapter}(\Package{koma-script}),
+ \Macro{addchap}(\Package{koma-script}),
+ \Macro{section}(\Package{koma-script}),
+ \Macro{addsec}(\Package{koma-script}) etc.%
+}
+auf. Wurde das Paket \Package{hyperref} geladen, so werden im
+Inhaltsverzeichnis PDF"~Hyperlinks auf die einzelnen Abschnitte erzeugt.
+
+Sowohl Abbildungen als auch Tabellen werden in \hologo{LaTeX} normalerweise
+mit speziellen Umgebungen~-- \Environment{figure} und \Environment{table}~--
+eingebunden. Innerhalb dieser sogenannten Gleitumgebungen kann der Befehl
+\Macro{caption}[%
+ \OParameter{Verzeichniseintrag}\Parameter{Bezeichnung}%
+](\Package{koma-script},\Package{caption}) genutzt werden, um diesen eine
+Bezeichnung hinzuzufügen. Mit \Macro{listoffigures}(\Package{koma-script})
+beziehungsweise \Macro{listoftables}(\Package{koma-script}) lassen sich
+Verzeichnisse erstellen, in denen alle Gleitobjekte des jeweiligen Typs
+ausgegeben werden, falls diese denn eine Bezeichnung hinzugefügt wurde.
+
+Sollen Abbildungen oder Tabellen außerhalb ihrer angestammten Gleitumgebung
+\Environment{figure} beziehungsweise \Environment{table} genutzt und benannt
+werden, kann dies entweder mit dem Befehl
+\Macro{captionof}[%
+ \Parameter{Typ}\OParameter{Verzeichniseintrag}\Parameter{Bezeichnung}%
+](\Package{koma-script}) oder~-- falls die beiden Pakete \Package{caption} und
+\Package{hyperref} genutzt werden~-- auch wie gewohnt mit
+\Macro{caption}(\Package{koma-script},\Package{caption}) allerdings zusätzlich
+ergänzt mit einem zuvor aufgerufenem
+\Macro{captionsetup}[\PParameter{type=figure/table}](\Package{caption})
+erfolgen. Weitere Informationen diesbezüglich sind dem \scrguide respektive der
+Anleitung zu \Package{caption} zu entnehmen. In \autoref{sec:floats} wird
+genauer auf Gleitumgebungen eingegangen.
+%
+\begin{Trunk}
+\tableofcontents
+\listoffigures
+\listoftables
+
+\end{Trunk}
+\begin{Trunk+}
+\printacronyms[style=acrotabu]
+\printsymbols[style=symblongtabu]
+
+\setchapterpreamble{%
+ \renewcommand*{\dictumwidth}{.4\textwidth}%
+ \dictum[Johann Wolfgang von Goethe]{%
+ Es irrt der Mensch, solang er strebt.%
+ }%
+ \bigskip
+}
+\chapter{Einleitung}
+Nachdem nun der Vorspann und~-- bis auf das Literaturverzeichnis am
+Ende des Dokumentes auf Seite~\pageref{sec:bibliography}~-- alle
+Verzeichnisse erfolgreich ausgegeben wurden, wird nun die Verwendung
+der weiteren Umgebungen und Befehle demonstriert, welche im Tutorial
+\texturn{treatise.pdf} vorgestellt wurden.
+
+\end{Trunk+}
+
+
+\subsection{Abkürzungs- und Symbolverzeichnis}
+\label{sec:glossaries}%
+%
+Für die Auszeichnung von Abkürzungen gibt es zwei sehr gute Pakete, die dieses
+Unterfangen stark vereinfachen. Die einfachere~-- jedoch nicht so mächtige~--
+der beiden Varianten ist die Nutzung des Paketes \Package{acro}. Sollen nur
+Abkürzungen und gegebenenfalls eine sortierte Liste dieser gesetzt werden, ist
+dieses allerdings absolut ausreichend. Für ein Symbolverzeichnis lässt sich in
+dieser Variante das Paket \Package{nomencl} nutzen. Dieses bietet meiner
+Meinung nach jedoch keine großen Vorteile, stattdessen kann auch einfach eine
+Tabelle händisch erzeugt werden. Das Paket \Package{acro} ist sehr gut und
+ausführlich dokumentiert. Deshalb wird hier auf eine exemplarische Erläuterung
+verzichtet und stattdessen auf dessen Dokumentationen verwiesen. Alternativ
+kann auch das Paket \Package{acronym} verwendet werden, wobei die alphabetische
+Sortierung der Abkürzungen durch den Anwender erfolgen muss, weshalb ich von
+diesem eher abrate.
+
+Die andere Möglichkeit ist die Nutzung des Paketes \Package{glossaries}, das
+eine große Zahl an Einstellmöglichkeiten und Optionen besitzt, allerdings auch
+etwas Zeit für die Einarbeitung und Studium der Dokumentation benötigt. Der
+ursprüngliche Einsatzzweck dieses Paketes ist das Setzen eines fachsprachlichen
+oder technischen Glossars. Es bietet zusätzlich die Mittel zum Erzeugen eines
+Abkürzungs- sowie Symbolverzeichnis. Es soll folgend hier kurz erläutert
+werden, wie das Paket zu verwenden ist. Für weiterführende Beispiele sollte
+die Dokumentationen zu Rate gezogen werden, welche dahingehend keine Wünsche
+offen lässt.
+
+Das Paket \Package{glossaries} sollte immer \emph{nach} \Package{hyperref}
+geladen werden. Entweder Sie achten explizit darauf oder Sie verwenden den
+Befehl \Macro{AfterPackage*}(\Package{scrbase}) aus dem \KOMAScript-Bundle. Mit
+diesem können Sie die Quelltext nach dem Laden eines Paketes ausführen.
+\Attention{%
+ Es ist allerdings darauf zu achten, dass der Quelltext nur ausgeführt wird,
+ wenn das avisierte Zielpaket auch tatsächlich geladen wird.
+}
+Falls Sie demnach auf \Package{hyperref} jedoch nicht auf \Package{glossaries}
+verzichten möchten, sollte der nachfolgende Quelltext am Ende der Präambel
+eingefügt werden.
+
+Die für \Package{glossaries} verwendeten Optionen werden kurz erläutert.
+%
+\begin{Preamble+}
+\AfterPackage*{hyperref}{%
+\end{Preamble+}
+\begin{Preamble}
+\usepackage[%
+\end{Preamble}
+%
+Die zwei Paketoptionen \Option{acronym}(\Package{glossaries}) sowie
+\Option{symbols}(\Package{glossaries}) erzeugen die beiden Verzeichnisse für
+Abkürzungen und Symbole. Die Option \Option{nomain}(\Package{glossaries}) wird
+immer dann verwendet, wenn im Dokument kein zusätzliches allgemeines oder
+technisches Glossar erzeugt werden soll.
+%
+\begin{Preamble}
+ acronym,% Abkürzungen
+ symbols,% Formelzeichen
+ nomain,% kein Glossar
+\end{Preamble}
+%
+Durch \Option{nogroupskip}(\Package{glossaries}) wird der automatische Abstand
+zwischen den Einträgen zur Gruppierung innerhalb eines Glossars entfernt, die
+Option \Option{toc}(\Package{glossaries}) fügt alle erzeugten Verzeichnisse
+dem Inhaltsverzeichnis hinzu, \Option{section}(\Package{glossaries}) bestimmt
+die Gliederungsebene der Überschrift.
+%
+\begin{Preamble}
+ nogroupskip,%
+ toc,%
+ section=chapter,%
+\end{Preamble}
+%
+Mit der Option \Option{nostyles}(\Package{glossaries}) kann man gegebenenfalls
+das Laden der von \Package{glossaries} vordefinierten Stilen verhindern. Dies
+ist insbesondere sinnvoll, wenn für die einzelnen Glossare und Verzeichnisse
+ohnehin eigene Stile erstellt werden, wie dies nachfolgend geschieht.
+%
+\begin{Preamble}
+ nostyles,%
+\end{Preamble}
+%
+Mit der Option \Option{translate}(\Package{glossaries}) werden die Überschriften
+aller Glossare in der Dokumentsprache gesetzt, wobei \Option*{translate=babel}
+die Nutzung des Paketes \Package{babel} erzwingt.
+%
+\begin{Preamble}
+ translate=babel,%
+\end{Preamble}
+%
+Das Paket \Package{glossaries} erstellt bei der Kompilierung des Dokumentes
+Hilfsdateien, anhand derer die Indexe erzeugt und sortiert werden können. Da
+\Engine{pdfLaTeX} diese Funktionalität nicht bereitstellt, ist hierfür der
+Aufruf einer passenden Anwendung notwendig. Die meisten Distributionen stellen
+dafür \Application{makeindex} bereit. Dieses Programm kann prinzipiell zwar
+Einträge alphabetisch sortieren, bietet allerdings weder die Nutzung von
+Unicode-Symbolen noch eine Sprachunterstützung. Aufgrund der genannten
+Nachteile ist \Application{xindy} zum Sortieren der Einträge zu empfehlen, da
+dieses Programm sowohl eine Unterstützung von Unicode als auch die Möglichkeit,
+nach sprachabhängigen Regeln zu sortieren, bietet. Allein für die deutsche
+Sprache gibt es beispielsweise zwei Varianten der Sortierung~-- nach DIN und
+nach Duden.
+
+Ohne weiteres Zutun des Anwenders wird vom Paket \Package{glossaries} in der
+Grundeinstellung \Application{makeindex} genutzt. Soll stattdessen für die
+Sortierung der Glossar- und Verzeichniseinträge \Application{xindy} zum Einsatz
+kommen, muss die Option \Option{xindy}(\Package{glossaries}) aktiviert werden.
+Dieser kann zusätzlich sowohl die zu nutzende Spracheinstellung zur Sortierung
+als auch die gewünschte Eingabekodierung an \Application{xindy} übergeben
+werden. Beispielsweise wird mit \Option*{xindy=\PParameter{language=german-din}}
+die deutsche Sortierung nach~DIN aktiviert.
+%
+%
+\begin{Hint}
+% mit Tex Live einfach verwendbar
+ xindy=§\{§language=german-din§\}§,
+\end{Hint}
+\begin{Preamble+}
+% mit Tex Live einfach verwendbar
+ xindy={language=german-din},
+\end{Preamble+}
+%
+Das Erstellen aller Glossare~-- unabhängig davon, ob \Application{xindy} oder
+\Application{makeindex} für die Sortierung zum Einsatz kommt~-- sollte das
+Perl"~Skript \File{makeglossaries}(\Package{glossaries}) verwendet werden,
+welches alle notwendigen Optionen an die jeweilige Anwendung weiterleitet.
+
+\Attention{%
+ Für den Aufruf von \Application{xindy} selbst als auch für die Ausführung des
+ Skriptes \File{makeglossaries}(\Package{glossaries}) ist ein Perl"=Interpreter
+ notwendig. Dieser wird lediglich von \Distribution{\hologo{TeX}~Live} nicht
+ jedoch von \Distribution{\hologo{MiKTeX}} direkt bereitgestellt. Wird die
+ letztgenannte Distribution verwendet, muss der Anwender gegebenenfalls diesen
+ zusätzlich installieren.
+}
+
+Kann das Skript \File{makeglossaries}(\Package{glossaries}) nicht genutzt
+werden, kann alternativ dazu die Option \Option{automake}(\Package{glossaries})
+aktiviert werden. Diese sorgt dafür, dass am Ende des \Engine{pdfLaTeX}"~Laufs
+der Aufruf von \Application{xindy} oder \Application{makeindex} direkt erfolgt.
+Soll \Application{xindy} verwendet werden, sind dafür allerdings erweiterte
+Schreibrechte notwendig, weshalb für diese Variante \Engine{pdfLaTeX} mit der
+Option \Option{-{}-shell-escape}(\Engine{pdfLaTeX}) respektive
+\Option{-{}-enable-write18}(\Engine{pdfLaTeX}) aufgerufen werden muss. Für
+\Application{xindy} ist außerdem die Angabe der Sprache über die Option
+\Option*{xindy=\PParameter{language=\dots}} zwingend notwendig.
+
+Ist weder die Nutzung des Skriptes \File{makeglossaries}(\Package{glossaries})
+noch der~-- im Zweifel sicherheitskritische~-- Aufruf von \Engine{pdfLaTeX} mit
+erweiterten Schreibrechten möglich, so muss die gewünschte Anwendung für die
+Sortierung explizit durch den Anwender aufgerufen werden, wobei auf die Angabe
+der richtigen Parameter zu achten ist. Genaueres hierzu sowie Lösungen für
+Probleme beim Erstellen der Glossare und Verzeichnisse sind in der Dokumentation
+von \Package{glossaries} zu finden.
+%
+\begin{Hint}
+ automake,%
+\end{Hint}
+%
+Damit sind alle verwendeten Optionen erläutert. Schließlich sorgt der Befehl
+\Macro{makeglossaries}(\Package{glossaries}) für das Erstellen der
+optionsabhängigen Stildateien für \Application{makeindex} respektive
+\Application{xindy} sowie das Erzeugen der benötigten Hilfsdateien.
+%
+\begin{Preamble}
+]{glossaries}
+\makeglossaries
+\end{Preamble}
+\begin{Preamble+}
+}% Ende von AfterPackage
+
+\AfterPackage*{glossaries}{%
+\end{Preamble+}
+%
+Damit wäre der erste Teil zur Initialisierung überstanden und wir können zum
+eigentlichen Problem kommen. Wie wird nun ein Abkürzungs- und/oder
+Symbolverzeichnis erstellt?
+
+\subsubsection{Abkürzungsverzeichnis}
+Das Paket \Package{glossaries} stellt für die Definition von Abkürzungen einen
+speziellen Befehl bereit. Mit \Macro{newacronym}[%
+ \LParameter\Parameter{Label}\Parameter{Abkürzung}\Parameter{Wortgruppe}%
+](\Package{glossaries}) wird eine Abkürzung definiert und kann später über
+\Parameter{Label} genutzt werden. Die möglichen optionalen Parameter können in
+der Dokumentation zu \Package{glossaries} nachgeschlagen werden. Für ein
+kleines Beispiel werden drei Abkürzungen erstellt\dots
+%
+\begin{Trunk+}
+\section{Die Verwendung von Akronymen und Symbolen}
+\end{Trunk+}
+\begin{Trunk*}
+\newacronym{apsp}{APSP}{All-Pairs Shortest Path}
+\newacronym{spsp}{SPSP}{Single-Pair Shortest Path}
+\newacronym{sssp}{SSSP}{Single-Source Shortest Path}
+
+\end{Trunk*}
+%
+\dots und diese in einer kurzen Textpassage mit dem \Package{glossaries}"=Befehl
+\Macro{gls}[\Parameter{Label}](\Package{glossaries}) verwendet.
+%
+\begin{Trunk*}
+In der Graphentheorie wird häufig die Lösung des Problems des kürzesten
+Pfades zwischen zwei Knoten gesucht. Dieses Problem wird häufig auch
+mit \gls{spsp} bezeichnet. Es lässt sich auf die Variationen \gls{sssp}
+und \gls{apsp} erweitern. Für die Lösung von \gls{spsp}, \gls{sssp}
+oder \gls{apsp} kommen unterschiedliche Algorithmen zum Einsatz.
+
+\end{Trunk*}
+%
+Gut zu sehen ist, dass sich die Ausgabe der Abkürzung bei der ersten Verwendung
+mit \Macro{gls}(\Package{glossaries}) von der zweiten~-- und jeder weiteren~--
+unterscheidet. Das Verhalten lässt sich über verschiedene Stile mit
+\Macro{setacronymstyle}(\Package{glossaries}) anpassen. Die Ausgabe einer Liste
+aller Abkürzungen erfolgt mit:
+%
+\begin{Hint}
+\printacronyms
+\end{Hint}
+\newglossarystyle{simple}{%
+ \renewenvironment{theglossary}{}{\par}%
+ \renewcommand*{\glossentry}[2]{%
+ \noindent%
+ \textsbn{\glsentryitem{##1}\glstarget{##1}\glossentryname{##1}}\quad
+ \glossentrydesc{##1}\glspostdescription\space ##2%
+ \par%
+ }%
+}
+\begin{quoting}[rightmargin=0pt]
+\glsdisablehyper
+\printacronyms[style=simple]
+\end{quoting}
+%
+Dabei werden die Akronyme in einer \Environment*{description}"=Umgebung gesetzt,
+was absolut ausreichend ist. Mir persönlich ist allerdings die Darstellung in
+einer quasi"~tabellarischen Form lieber. Dabei soll der Stil mit fettgedruckten
+Abkürzungen beibehalten werden. Das \Package{glossaries}"=Paket stellt zwar
+auch eine Vielzahl an Stilen in Tabellenform bereit, allerdings nicht in dem
+gewünschten. Deshalb wird nachfolgend gezeigt, wie sich ein eigener Stil in
+Tabellenform kreieren lässt.
+
+Es bieten sich die Umgebungen \Environment{tabularx}(\Package{tabularx}) oder
+\Environment{tabu}(\Package{tabu}) an, bei denen die Spaltenbreite teilweise
+automatisch berechnet wird, um sich manuelle Formatierungsarbeiten zu sparen.
+Folgend werden beide Varianten vorgestellt. Falls Sie noch keine Erfahrungen
+mit dem Tabellensatz in \hologo{LaTeXe} haben, lohnt sich vorher ein Blick in
+\autoref{sec:tables}, um die verwendeten Befehle und Umgebungen zu verstehen.
+Wie Sie Stile definieren, die Seitenumbrüche in einer Tabelle zulassen, können
+Sie in diesem \autorefname[sec:glossaries] bei der Symbolverzeichniserstellung
+erfahren.
+
+\minisec{Eigener Stil mit \Environment*{tabularx}}
+Ein eigener Glossarstil kann mit \Macro{newglossarystyle}(\Package{glossaries})
+definiert werden, wobei für den neu definierten Stil die Umgebung
+\Environment{theglossary}(\Package{glossaries}) umdefiniert wird. Als erstes
+kommt die Tabellenumgebung \Environment{tabularx}(\Package{tabularx}) aus dem
+gleichnamigen Paket, welches in \autoref{sec:tabularx} vorgestellt wird, zum
+Einsatz.
+
+Es werden in der Tabelle drei Spalten definiert. Die erste und letzte Spalte
+sind schlicht linksbündige Standardspalten~(\PValue{l}). In diesen werden die
+Abkürzungen selbst sowie die Seitenzahlen eingetragen. Die Verwendung
+von~\PValue{@\PParameter{}} führt dazu, dass der normalerweise vor der ersten
+und nach der letzten Spalte eingefügte Abstand von \Length{tabcolsep} entfällt.
+Die Breite der Spalte vom Typ~\PValue{X} wird automatisch berechnet.
+
+Aufgrund der Implementierung von \Environment{tabularx}(\Package{tabularx})
+lässt sich diese nicht als verschachtelte Umgebung verwenden. Allerdings kann
+stattdessen die mit \Macro*{tabularx} sowie \Macro*{endtabularx} die
+Low"~Level"~Variante genutzt werden. Die Definition des neuen Stils
+\PValue{acrotabularx} wird nachfolgend ausgegeben, die weitergehende
+Erläuterung schließt sich daran an.
+%
+\CodeHook{\let\newglossarystyle\renewglossarystyle}
+\begin{Hint*}
+\newglossarystyle{acrotabularx}{%
+ \renewenvironment{theglossary}{%
+ \tabularx{\linewidth}{@{}lXl@{}}%
+ }{%
+ \endtabularx\par\bigskip%
+ }%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand*{\glsgroupskip}{}%
+ \renewcommand*{\glossentry}[2]{%
+ \glsentryitem{##1}% Entry number if required
+ \glstarget{##1}{\sffamily\bfseries\glossentryname{##1}} &
+ \glsentrydesc{##1} &
+ ##2\tabularnewline
+ }
+}
+
+\end{Hint*}
+%
+Der Rest des Stils ist schnell erläutert. Zunächst wird auf Tabellenköpfe
+(\Macro{glossaryheader}(\Package{glossaries})) sowie Überschriften und Abstände
+bei Gruppierungen (\Macro{glsgroupheading}(\Package{glossaries}) sowie
+\Macro{glsgroupskip}(\Package{glossaries})) verzichtet. Der Befehl
+\Macro{glossentry}(\Package{glossaries}) ist verantwortlich für die
+Formatierung der Einträge im Abkürzungsverzeichnis. Dieser wird intern durch
+\Package{glossaries} mit zwei obligatorischen Argumenten aufgerufen. Das erste
+enthält das entsprechende Label, das zweite ein kommaseparierte Liste der
+Seitenzahlen. Dabei stehen verschiedene Makros zur Auswahl, um anhand des
+gegebenen Labels die gewünschten Informationen zu extrahieren.%
+\footnote{%
+ bspw. mit \Macro{glossentryname}(\Package{glossaries}) die Bezeichnung oder
+ mit \Macro{glsentrydesc}(\Package{glossaries}) die dazugehörige Beschreibung%
+}
+
+Der Befehl \Macro{glossentry}(\Package{glossaries}) wurde so definiert, dass
+für jeden Eintrag eine separate Zeile in der Tabelle erzeugt wird, wo in der
+ersten Spalte die Abkürzung selbst, in der zweiten die Langform und in der
+dritten Spalte schließlich die Liste der Seiten, auf welchen die jeweilige
+Abkürzung mit \Macro{gls}[\Parameter{Label}](\Package{glossaries}) verwendet
+wurde, ausgegeben wird. Zum Abschluss die resultierende Ausgabe des
+Abkürzungsverzeichnisses im neuen Stil.
+%
+\begin{Hint}
+\printacronyms[style=acrotabularx]
+\end{Hint}
+\begin{quoting}[rightmargin=0pt]
+\InputCode
+\end{quoting}
+%
+Sollte der Platz für die Erläuterungen wie in diesem Beispiel in der mittleren
+Spalte mehr als ausreichend sein und kein Zeilenumbruch benötigt werden, kann
+auch einfach eine \Environment{tabular}"=Umgebung mit einer \PValue{l}"~Spalte
+anstelle von \PValue{X} verwendet werden.
+
+\minisec{Eigener Stil mit \Environment*{tabu}}
+Die sehr komfortabel zu nutzende Umgebung \Environment{tabu}(\Package{tabu})
+wird durch das Paket \Package{tabu} bereitgestellt. Es wird später in
+\autoref{sec:tabu} vorgestellt, wobei die dortigen Anmerkungen \emph{unbedingt}
+zu beachten sind. Für die bereits verwendeten
+\Environment{tabularx}(\Package{tabularx})"=Tabellen muss generell eine feste
+Tabellenbreite angegeben werden. Die Breite der \PValue{X}"~Spalten wird anhand
+der angegebenen Gesamtbreite und dem für andere Spalten vom
+Typ~\PValue{l},~\PValue{r}~und~\PValue{c} benötigten Platz berechnet.
+
+Wie \Environment{tabularx}(\Package{tabularx}) bietet auch die Umgebung
+\Environment{tabu}(\Package{tabu}) einen \PValue{X}"~Spaltentyp. Für diese kann
+jedoch anstelle einer fest vorgegebenen Breite auch \PValue{spread~0pt}
+angegeben werden. Dadurch werden \PValue{X}"~Spalten anfänglich in ihrer
+natürlichen Breite gesetzt. Sobald jedoch die Gesamtbreite der Tabelle den zur
+Verfügung stehenden Platz bis zum Zeilenende überschreiten würde, werden die
+\PValue{X}"~Spalten automatisch umbrochen.
+
+In umbrochenen Spalten gibt es beim Paket \Package{tabu} jedoch ein kleineres
+Problem. In diesen setzt \Package{tabu} zu wenig vertikalen Leerraum am unteren
+Ende. Um dieses Manko zu beheben, wird am Schluss jeder \PValue{X}"~Spalte mit
+\PValue{X<\PParameter{\Macro{strut}}} einfach der Befehl \Macro{strut}
+angehängt, der vertikalen Leerraum ober- und unterhalb der aktuellen Grundlinie
+einfügt. In \autoref{sec:tables} wird ein Ansatz aufgezeigt, wie dies
+automatisiert über einen neuen Spaltenstil ausgemerzt werden kann. Der Rest des
+Stils ist identisch zu \PValue{acrotabularx}.
+%
+\CodeHook{\let\newglossarystyle\renewglossarystyle}
+\begin{Preamble*}
+\newglossarystyle{acrotabu}{%
+ \renewenvironment{theglossary}{%
+ \begin{tabu}{@{}lX<{\strut}l@{}}% 'spread 0pt' defekt in v2.9
+ }{%
+ \end{tabu}\par\bigskip%
+ }%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand*{\glsgroupskip}{}%
+ \renewcommand*{\glossentry}[2]{%
+ \glsentryitem{##1}% Entry number if required
+ \glstarget{##1}{\sffamily\bfseries\glossentryname{##1}} &
+ \glsentrydesc{##1} &
+ ##2\tabularnewline
+ }
+}
+
+\end{Preamble*}
+\begin{Hint}
+\printacronyms[style=acrotabu]
+\end{Hint}
+\begin{quoting}[rightmargin=0pt]
+\glsdisablehyper
+\InputCode
+\end{quoting}
+%
+Welche Variante gewählt wird, ist letztendlich eine Frage, was für spezifische
+Anforderungen an die Formatierung des Abkürzungsverzeichnis gestellt werden.
+Natürlich ist auch die Definition eines eigenen Stils möglich. Wenn Sie wissen
+wollen, wie Sie einen Stil in Tabellenform erstellen können, welcher einen
+Seitenumbruch zulässt, sollte Sie den nächsten Abschnitt lesen.
+
+
+\subsubsection{Symbolverzeichnis}
+Für das Erzeugen eines Symbolverzeichnisses kann ebenfalls \Package{glossaries}
+verwendet werden. Allerdings muss dazu ein wenig mehr Aufwand getrieben werden,
+da das Paket hierfür keine dedizierte Schnittstelle bereitstellt. Wurde die
+Paketoption \Option{symbols}(\Package{glossaries}) angegeben wird jedoch
+zumindest das notwendige Glossar erstellt.
+
+Als erstes sollte ein gut nutzbarer Befehl zum Definieren eines neuen Symbols
+erstellt werden. In Anlehnung an den Befehl für Abkürzungen \Macro*{newacronym}
+wird er \Macro{newformulasymbol}|?| genannt. Dieser hat ein optionales und vier
+obligatorische Argumente, wobei das optionale Argument prinzipiell alle
+Schlüssel"~Wert"~Paare enthalten kann, die durch das Paket \Package{glossaries}
+akzeptiert werden. Welche davon letztlich auch Auswirkungen haben, hängt
+allerdings von der Gestaltung des Stils durch den Anwender ab. Der Befehl hat
+folgende Definition:
+%
+\begin{quoting}[leftmargin=\parindent]
+\Macro{newformulasymbol}[%
+ \LParameter\Parameter{Label}\Parameter{Name}%
+ \Parameter{Symbol}\Parameter{Einheit}%
+]|?|%
+\end{quoting}
+%
+Mit \PName{Label} erfolgt die eindeutige Kennzeichnung des Symbols. Außerdem
+wird dies standardmäßig für die Sortierung verwendet, was unter Umständen etwas
+problematisch sein könnte. In diesem Fall ist eine manuelle Festlegung für den
+dazugehörigen Schlüssel durch den Anwender über das optionale Argument mit
+\PValue{sort=}\PName{Sortierung} eventuell sinnvoll. Nach dem \PName{Label}
+schließt der \PName{Name} für das Formelzeichen an, gefolgt vom \PName{Symbol}
+sowie der dazugehörige physikalische \PName{Einheit}.
+%
+\CodeHook{\let\newcommand\renewcommand}
+\begin{Preamble*}
+\newcommand*{\newformulasymbol}[5][]{%
+ \newglossaryentry{#2}{%
+ type=symbols,%
+ name={#3},%
+ description={\nopostdesc},%
+ symbol={\ensuremath{#4}},%
+ user1={\ensuremath{\mathrm{#5}}},%
+ sort={#2},%
+ #1%
+ }%
+}
+
+\end{Preamble*}
+%
+Da es sich zumeist um mathematische Symbole handelt, wird für das Symbol und
+die Einheit mit \Macro{ensuremath} Sorge getragen, dass diese auch im
+Textmodus ohne Probleme verwendet werden können. Für das aufrechte Setzen der
+Einheit wird für diese außerdem \Macro{mathrm} verwendet. Als Alternative dazu
+könnte der Befehl \Macro{si}(\Package{siunitx}) aus dem Paket \Package{siunitx}
+genutzt werden. Für ein kleines Beispiel werden folgend fünf Formelzeichen
+definiert. Damit die Darstellung der mathematischen Brüche auch für den
+Fließtext gut genutzt werden kann und ansehnlich ist, wird für diese der Befehl
+\Macro{sfrac}(\Package{xfrac}) aus dem Paket \Package{xfrac} genutzt.
+%
+\begin{Trunk*}
+\newformulasymbol{l}{Länge}{l}{m}
+\newformulasymbol{m}{Masse}{m}{kg}
+\newformulasymbol{a}{Beschleunigung}{a}{\sfrac{m}{s^2}}
+\newformulasymbol{t}{Zeit}{t}{s}
+\newformulasymbol{f}{Frequenz}{f}{s^{-1}}
+\newformulasymbol{F}{Kraft}{F}{m \cdot kg \cdot s^{-2} = \sfrac{J}{m}}
+
+\end{Trunk*}
+%
+Die soeben definierten Symbole werden für ein kleines Beispiel mit dem Befehl
+\Macro{gls}[\Parameter{Label}](\Package{glossaries}) in einer kurzen
+Textpassage verwendet.
+%
+\begin{Hint*}
+Die Einheiten für die \gls{f} sowie die \gls{F} werden aus den
+SI"=Einheiten der Basisgrößen \gls{l}, \gls{m} und \gls{t} abgeleitet.
+Und dann gibt es noch die Grundgleichung der Mechanik, welche für den
+Fall einer konstanten Kraftwirkung in die Bewegungsrichtung einer
+Punktmasse lautet:
+\[\gls{F} = \gls{m} \cdot \gls{a}\]
+\end{Hint*}
+%
+Das Ergebnis ist nur bedingt befriedigend. Sowohl im Fließtext als auch im
+Mathematikmodus werden lediglich die Bezeichnungen jedoch nicht die Symbole
+selbst verwendet. Damit die Formelzeichen auch für den mathematischen Satz
+sinnvoll nutzbar sind, sollte das Erscheinungsbild der Einträge mit
+\Macro{defglsentryfmt}(\Package{glossaries}) angepasst werden.
+%
+\begin{Preamble*}
+\defglsentryfmt[symbols]{%
+ \ifmmode%
+ \glssymbol{\glslabel}%
+ \else%
+ \glsgenentryfmt~\glsentrysymbol{\glslabel}%
+ \fi%
+}
+\end{Preamble*}
+%
+Bei der Verwendung von \Macro{gls}[\Parameter{Label}](\Package{glossaries})
+führt diese Definition dazu, dass im Mathematikmodus allein das Symbol
+verwendet wird. Im Fließtext wird diesem zusätzlich die Bezeichnung
+vorangestellt. Das nachfolgende Beispiel macht dies deutlich.
+%
+\begin{Trunk*}
+Die Einheiten für die \gls{f} sowie die \gls{F} werden aus den
+SI"=Einheiten der Basisgrößen \gls{l}, \gls{m} und \gls{t} abgeleitet.
+Und dann gibt es noch die Grundgleichung der Mechanik, welche für den
+Fall einer konstanten Kraftwirkung in die Bewegungsrichtung einer
+Punktmasse lautet:
+\[\gls{F} = \gls{m} \cdot \gls{a}\]
+
+\end{Trunk*}
+%
+Als nächstes kümmern wir uns um die Ausgabe des Symbolverzeichnisses. Momentan
+erzeugt der Befehl \Macro{printsymbols}(\Package{glossaries}) jedenfalls kein
+sinnvolles Verzeichnis:
+%
+\begin{Hint}
+\printsymbols
+\end{Hint}
+\begin{quoting}[rightmargin=0pt]
+\glsdisablehyper
+\printsymbols[style=simple]
+\end{quoting}
+%
+Für dieses muss erst ein Stil definiert werden, was nachfolgend ähnlich zum
+Stil \PValue{acrotabularx} respektive \PValue{acrotabu} geschieht. Allerdings
+wird hier eine Variante gezeigt, mit der die Tabelle einen Seitenumbruch
+zulässt.
+
+\minisec{Eigener Stil mit \Environment*{tabularx} und \Environment*{longtable}}
+Soweit mir bekannt ist, lassen sich umbruchfähige Tabellen nicht direkt mit
+\Environment{tabularx}(\Package{tabularx}) setzen. Vielmehr ist für die
+Verwendung der Umgebung \Environment{longtable}(\Package{longtable}) das Paket
+\Package{ltxtable} notwendig. Dieses wiederum verlangt, dass die zu setzende
+Tabelle in einer separaten Datei abgelegt wird. Soll diese dennoch innerhalb
+des Hauptdokumentes erstellt werden, kann für dieses Unterfangen die Umgebung
+\Environment{filecontents}(\Package{filecontents}) aus dem gleichnamigen Paket
+genutzt werden, womit \emph{bereits existierende Dateien} überschrieben werden.
+
+Leider habe ich keine Möglichkeit gefunden, diesen Prozess ohne wahnsinnig
+großen Aufwand für das Erstellen eines Glossars zu portieren. Für umbruchfähige
+Tabellen mit automatisch berechneten Spaltenbreiten kommt meines Wissens nach
+momentan nur die Umgebung \Environment{longtabu}(\Package{tabu}) aus dem Paket
+\Package{tabu} infrage.
+
+\minisec{Eigener Stil mit \Environment*{longtabu}}
+Das Paket \Package{tabu} definiert für umbruchfähige Tabellen die Umgebung
+\Environment{longtabu}(\Package{tabu}), welche wiederum auf der Umgebung
+\Environment{longtable}(\Package{longtable}) basiert und nachfolgend verwendet
+wird. Damit diese linksbündig gesetzt wird, muss vor dem obligatorischen
+Argument mit den Spaltendefinitionen noch das optionale Argument \OParameter{l}
+angegeben werden. Die im nachfolgend definierten Stil verwendeten Befehle
+\Macro{toprule}(\Package{booktabs}), \Macro{midrule}(\Package{booktabs}) sowie
+\Macro{cmidrule}(\Package{booktabs}) und \Macro{bottomrule}(\Package{booktabs})
+für unterschiedliche horizontale Linien stammen allesamt aus dem Paket
+\Package{booktabs}, welches für den Satz von hochwertigen Tabellen eine große
+Hilfe ist.
+%
+\CodeHook{\let\newglossarystyle\renewglossarystyle}
+\begin{Preamble*}
+\newglossarystyle{symblongtabu}{%
+ \renewenvironment{theglossary}{%
+ \begin{longtabu}[l]{ccX<{\strut}l}% 'spread 0pt' defekt in v2.9
+ }{%
+ \end{longtabu}%
+ }%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand*{\glsgroupskip}{}%
+ \renewcommand*{\glossaryheader}{%
+ \toprule
+ \bfseries Symbol & \bfseries Einheit &
+ \bfseries Bezeichnung & \bfseries Seite(n)
+ \tabularnewline\midrule\endhead%
+ \bottomrule\endfoot%
+ }%
+ \renewcommand*{\glossentry}[2]{%
+ \glsentryitem{##1}% Entry number if required
+ \glstarget{##1}{\glossentrysymbol{##1}} &
+ \glsentryuseri{##1} &
+ \glossentryname{##1} &
+ ##2\tabularnewline%
+ }%
+}
+\end{Preamble*}
+%
+Innerhalb von \Macro{newglossarystyle}(\Package{glossaries}) wird der Befehl
+\Macro{glossaryheader}(\Package{glossaries}) für einen Tabellenkopf definiert,
+wie er auch für eine \Environment{longtable}(\Package{longtable})"=Umgebung
+erscheinen würde. In hier vorgestellten Fall werden der Kopf mit dem Makro
+\Macro{endhead}(\Package{longtable}) beziehungsweise der Fuß durch
+\Macro{endfoot}(\Package{longtable}) terminiert. Diese werden beim
+einem möglichen Seitenumbruch zu Beginn und am Ende auf jeder Seite gesetzt.
+%
+\begin{Preamble+}
+}% Ende von AfterPackage
+
+\end{Preamble+}
+%
+Das Symbolverzeichnis kann sich nun durchaus sehen lassen.
+%
+\begin{Hint}
+\printsymbols[style=symblongtabu]
+\end{Hint}
+\begin{quoting}[rightmargin=0pt]
+\newglossarystyle{symbtabu}{%
+ \setglossarystyle{symblongtabu}%
+ \renewenvironment{theglossary}{%
+ \begin{tabu}{ccX<{\strut}l}% 'spread 0pt' defekt in v2.9
+ }{%
+ \bottomrule\end{tabu}%
+ }%
+ \renewcommand*{\glossaryheader}{%
+ \toprule
+ \bfseries Symbol & \bfseries Einheit &
+ \bfseries Bezeichnung & \bfseries Seite(n)
+ \tabularnewline\midrule%
+ }%
+}
+\printsymbols[style=symbtabu]
+\end{quoting}
+
+\minisec{Unterteilung nach griechischen und lateinischen Symbolen}
+Oftmals wird es für Abschlussarbeiten verlangt, das Symbolverzeichnis nach
+griechischen und lateinischen Formelzeichen zu untergliedern. Für die Umsetzung
+dieser Anforderung ist die zuvor beschriebene Lösung prinzipiell nutzbar,
+allerdings muss diese etwas erweitert werden.
+
+Realisiert wird das Ganze, indem die zwei Kategorien respektive Elterneinträge
+\PValue{greekletters} sowie \PValue{romanletters} definiert und sämtliche
+Formelzeichen einem der beiden als Untereintrag zugeordnet werden.
+%
+\begin{Hint*}
+\providecommand*\greeklettersname{Greek letters}
+\providecommand*\romanlettersname{Roman letters}
+\newglossaryentry{greekletters}{%
+ type=symbols,%
+ name={\greeklettersname},%
+ description={\nopostdesc},%
+ sort={a}%
+}
+\newglossaryentry{romanletters}{%
+ type=symbols,%
+ name={\romanlettersname},%
+ description={\nopostdesc},%
+ sort={b}%
+}
+\end{Hint*}
+%
+Die Bezeichnungen der beiden Kategorien könnten auch als Parameter von
+\Macro*{newglossaryentry} mit \PValue{name=\PName{Bezeichung}} direkt
+eingetragen werden. Um bei der Definition jedoch eine gewisse Flexibilität zu
+gewährleisten, wird dies über die zwei Befehle \Macro*{greeklettersname} sowie
+\Macro*{romanlettersname} realisiert. Diese werden mit \KOMAScript-Mitteln
+als sprachabhängige Bezeichner definiert.
+%
+\begin{Hint*}
+\providecaptionname{%
+ american,australian,british,canadian,english,newzealand%
+}{\greeklettersname}{Greek letters}
+\providecaptionname{%
+ german,ngerman,austrian,naustrian,swissgerman,nswissgerman%
+}{\greeklettersname}{Griechische Symbole}
+\providecaptionname{%
+ american,australian,british,canadian,english,newzealand%
+}{\romanlettersname}{Roman letters}
+\providecaptionname{%
+ german,ngerman,austrian,naustrian,swissgerman,nswissgerman%
+}{\romanlettersname}{Lateinische Symbole}
+\end{Hint*}
+%
+Für die Ausgabe wird der Glossarstil \PValue{symbsplitlongtabu} in ähnlicher
+Manier wie die Stile zuvor definiert. Dieser wird darauf ausgelegt, dass alle
+aufzulistenden Formelzeichen als Untereintrag von einem der beiden zuvor
+erstellten Elterneinträge angegeben werden. Allerdings ist bei diesem Stil
+aufgrund der Verwendung von \Environment{longtabu}(\Package{tabu}) etwas
+Aufwand zu betreiben, um die gewünschte Ausgabe zu erhalten. Das grundlegende
+Problem ist das Setzen von Überschriften und dem folgenden Tabellenkopf
+innerhalb der Tabelle. Die Erläuterung des Quelltextauszugs erfolgt nach dessen
+Ausgabe.
+%
+\CodeHook{\let\newglossarystyle\renewglossarystyle}
+\begin{Hint*}
+\newglossarystyle{symbsplitlongtabu}{%
+ \newcommand*\symbollevel{-1}%
+ \renewenvironment{theglossary}{%
+ \begin{longtabu}[l]{ccX<{\strut}l}% 'spread 0pt' defekt in v2.9
+ }{%
+ \end{longtabu}%
+ }%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand*{\glsgroupskip}{}%
+ \newcommand*\symbolhead{%
+ \toprule
+ \bfseries Symbol & \bfseries Einheit &
+ \bfseries Bezeichnung & \bfseries Seite(n)
+ \tabularnewline\midrule
+ }%
+ \renewcommand*{\glossaryheader}{%
+ \endfirsthead%
+ \symbolhead\endhead%
+ \bottomrule\endfoot%
+ \gdef\symbollevel{-1}%
+ }%
+ \renewcommand*{\glossentry}[2]{%
+ \ifglshaschildren{##1}{%
+ \ifnum\symbollevel>0\relax%
+ \tabularnewline\bottomrule\tabularnewline[\smallskipamount]%
+ \fi
+ \gdef\symbollevel{0}%
+ \tabularnewline[%
+ \arraystretch\dimexpr-\ht\strutbox-\dp\strutbox\relax%
+ ]%
+ \multicolumn{4}{@{}l@{}}{\minisec{\glsentryname{##1}}}%
+ }{%
+ \GlossariesWarning{%
+ There are no childrens for entry ##1.\MessageBreak
+ Nothing will be printed. Maybe you should\MessageBreak
+ specify ##1 as a child entry.
+ }%
+ }%
+ }%
+ \renewcommand*{\subglossentry}[3]{%
+ \ifnum\symbollevel=0\relax%
+ \tabularnewline[\medskipamount]\symbolhead%
+ \else%
+ \tabularnewline
+ \fi%
+ \gdef\symbollevel{##1}%
+ \glsentryitem{##2}% Entry number if required
+ \glstarget{##2}{\glossentrysymbol{##2}} &
+ \glsentryuseri{##2} &
+ \glossentryname{##2} &
+ ##3%
+ }%
+}
+\end{Hint*}
+%
+Der neu definierte Befehl \Macro*{symbollevel} wird benötigt, um bei der
+Ausgabe zu überprüfen, um es sich beim zuletzt gesetzten Eintrag um einen
+Elterneintrag (\Macro*{glossentry}) oder Untereintrag (\Macro*{subglossentry})
+gehandelt hat. Im Makro \Macro*{symbolhead} wird die Definition für den zu
+setzenden Tabellenkopf gespeichert. Der Inhalt von \Macro*{glossaryheader} wird
+direkt zu Beginn der Umgebung \Environment{theglossary}(\Package{glossaries})
+ausgeführt. Dieser wird so umdefiniert, dass die Tabelle keinen Kopf vor der
+ersten Überschrift erhält, jedoch nach einem Seitenumbruch sehr wohl der
+Tabellenkopf gesetzt wird. Abgeschlossen wird die Tabelle mit einer Fußlinie.
+
+Danach erfolgt die Formatierung der Einträge. Der Befehl \Macro*{glossentry}
+setzt \enquote{\greeklettersname} und \enquote{\romanlettersname} sowie
+gegebenenfalls weitere Elterneinträge als Überschriften. Bevor dies passieren
+kann wird eine vorher begonnene Tabelle mit einer Fußlinie beendet. Um die
+Überschrift innerhalb von \Environment{longtabu}(\Package{tabu}) linksbündig zu
+setzen, wird mit \Macro*{multicolumn} gearbeitet. Dieser Befehl muss in der
+ersten Zelle zwingend als aller erstes genutzt werden. Um dies sicherzustellen,
+wird zuvor eine neue Tabellenspalte eingefügt. Damit jedoch kein zusätzlicher
+Leerraum entsteht, wird diese über das optionale Argument nach oben verschoben.
+Die Einträge für Formelzeichen selber erfolgen mit \Macro*{subglossentry}. Im
+Gegensatz zum vorher beschriebenen Stil \PValue{symblongtabu} wird zusätzlich
+der notwendige Tabellenkopf nach der Überschrift gesetzt, falls es sich um den
+\emph{ersten} Untereintrags handelt.
+
+Jetzt könnte man den Glossarstil \PValue{symbsplitlongtabu} bereits verwenden
+und jedem Formelzeichen bei der Definition mit
+\begin{quoting}[leftmargin=\parindent]
+\Macro{newformulasymbol}[%
+ \POParameter{parent={greekletters/romanletters}}%
+ \PParameter{\dots}\PParameter{\dots}\PParameter{\dots}\PParameter{\dots}%
+]|?|%
+\end{quoting}
+eine der beiden Elterneinträge zuweisen. Für wenige Formelzeichen mag dies
+ausreichen. Komfortabler wäre es natürlich, wenn die Zuweisung zu einer der
+beiden Kategorien automatisch erfolgen würde. Ein Ansatz für dieses Unterfangen
+wird folgend vorgestellt.
+
+\Attention{%
+ Es kann nicht garantiert werden, dass dieser Ansatz in jedem Fall und für
+ sämtliche Anwendungsszenarien funktioniert. Tatsächlich ist die Idee auf eine
+ \hrfn{http://latex.wcms-file3.tu-dresden.de/phpBB3/viewtopic.php?f=11&t=427}{%
+ Frage aus dem \Forum*%
+ }
+ heraus entstanden. Für auftretende Probleme bei der Verwendung ist dort der
+ beste Anlaufpunkt.
+}
+
+Die Grundidee ist, das zu definierende Formelzeichen mit einer Liste der Makros
+für griechische Buchstaben abzugleichen und so zu entscheiden, in welche der
+beiden Kategorien das Symbol einzuordnen ist. Hierfür werden nachfolgend eine
+Liste \Macro*{greeksymbollist} aller griechischen Buchstaben sowie der Befehl
+\Macro*{ifisgreeksymbol}[\Parameter{Symbol}\Parameter{Dann}\Parameter{Sonst}]
+zur Fallunterscheidung definiert. Problematisch bei der Umsetzung ist, dass ein
+als Argument übergebenes Formelzeichen auch mit diakritischen Zeichen und
+Indizes verwendet werden kann~-- beispielsweise $\dot{\varphi}_{\mathrm{max}}$
+(%
+ \Macro*{dot}[\PParameter{\Macro*{varphi}}]\PValue{\textunderscore}%
+ \PParameter{\Macro*{mathrm}[\PParameter{max}]}%
+). Deshalb werden bei der Ausführung von \Macro*{ifisgreeksymbol} temporär alle
+diakritische Zeichen sowie \Macro*{boldsymbol} für den Mathematikmodus
+\enquote{unschädlich} gemacht und das Argument \Parameter{Symbol} expandiert.
+Anschließend werden alle Anteile für Hoch- sowie Tiefstellung abgeschnitten und
+das Resultat mit der Liste \Macro*{greeksymbollist} abgeglichen.
+%
+\CodeHook{\let\newcommand\renewcommand}
+\begin{Hint*}
+\makeatletter
+\newcommand*\greeksymbollist{}
+\def\@tempa#1{\ifdefvoid{#1}{}{\listadd\greeksymbollist{#1}}}
+\forcsvlist{\@tempa}{%
+ \alpha,\beta,\varbeta,\gamma,\delta,\epsilon,\varepsilon,\zeta,%
+ \eta,\theta,\vartheta,\iota,\kappa,\varkappa,\lambda,\mu,\nu,%
+ \xi,\omicron,\pi,\varpi,\rho,\varrho,\sigma,\varsigma,\tau,%
+ \upsilon,\phi,\varphi,\chi,\psi,\omega,%
+ \Alpha,\Beta,\Gamma,\Delta,\Epsilon,\Zeta,\Eta,\Theta,\Iota,%
+ \Kappa,\Lambda,\Mu,\Nu,\Xi,\Omicron,\Pi,\Rho,\Sigma,\Tau,\Upsilon,%
+ \Phi,\Chi,\Psi,\Omega%
+}
+\newcommand*\ifisgreeksymbol[1]{%
+ \begingroup%
+ \def\@tempa##1{\let##1\@firstofone}%
+ \forcsvlist{\@tempa}{%
+ \acute,\bar,\breve,\check,\dot,\ddot,\dddot,\ddddot,%
+ \hat,\widehat,\grave,\tilde,\widetilde,\vec,%
+ \Acute,\Bar,\Breve,\Check,\Dot,\Ddot,\Hat,\Grave,\Tilde,\Vec%
+ }%
+ \def\boldsymbol{}%
+ \protected@edef\@tempa{#1}%
+ \def\@tempb##1_##2\relax{\def\@tempa{##1}}%
+ \expandafter\@tempb\@tempa_\relax\relax%
+ \def\@tempb##1^##2\relax{\def\@tempa{##1}}%
+ \expandafter\@tempb\@tempa^\relax\relax%
+ \expandafter\ifinlist\expandafter{\@tempa}{\greeksymbollist}{%
+ \aftergroup\@firstoftwo%
+ }{%
+ \aftergroup\@secondoftwo%
+ }%
+ \endgroup%
+}
+\makeatother
+\end{Hint*}
+%
+Mit \Macro*{ifisgreeksymbol} kann jetzt auf die Art des Symbols getestet. Dies
+wird innerhalb von \Macro{newformulasymbol}|?| genutzt, um den passenden
+Elterneintrag auszuwählen. Über das optionale Argument kann jederzeit mit
+\POParameter{parent={greekletters/romanletters}} der automatische ermittelte
+Elterneintrag überschrieben werden.
+%
+\begin{Hint}
+\newcommand*\symbollettergroup{}
+\newcommand*{\newformulasymbol}[5][]{%
+ \ifisgreeksymbol{#4}{%
+ \renewcommand*{\symbollettergroup}{greekletters}%
+ }{%
+ \renewcommand*{\symbollettergroup}{romanletters}%
+ }%
+ \newglossaryentry{#2}{%
+ type=symbols,%
+ name={#3},%
+ description={\nopostdesc},%
+ symbol={\ensuremath{#4}},%
+ user1={\ensuremath{\mathrm{#5}}},%
+ sort={#2},%
+ parent={\symbollettergroup},%
+ #1%
+ }%
+}
+\end{Hint}
+
+
+\subsection{Literaturverzeichnis}
+\label{sec:biblatex}%
+%
+Für das Erstellen eines Literaturverzeichnisses wurde in der Vergangenheit fast
+ausschließlich \hologo{BibTeX} verwendet. Leider wird auch heute immer noch
+darauf verwiesen, obwohl es seit einigen Jahren das Paket \Package{biblatex}
+gibt, welches insbesondere für neue Dokumente den Vorzug erhalten sollte. Auch
+die Umstellung älterer \hologo{BibTeX}"=Datenbanken ist mit wenigen Handgriffen
+realisierbar. Für \Package{biblatex} existieren eine Menge unterschiedlicher,
+vordefinierter Zitierstile, welche sich im Vergleich zu \hologo{BibTeX} auch
+wesentlich leichter an die individuellen Bedürfnisse anpassen lassen.
+
+Ein weiterer Vorteil ist die Unterstützung von Datenbanken, welche eine
+UTF"~8"~Kodierung nutzen, wenn \Application{biber} zur Sortierung der Einträge
+verwendet wird. Zitierstil und Backend zur Sortierung lassen sich durch das
+optionale Argument beim Laden des Paketes festlegen. Damit die Zitierstile das
+optimale Ergebnis erzielen wird das Laden von \Package{csquotes} sehr empfohlen.
+%
+\begin{Preamble}
+\usepackage{csquotes}
+\usepackage[backend=biber,style=alphabetic]{biblatex}
+
+\end{Preamble}
+%
+Die Erstellung einer Literaturdatenbank kann entweder von Hand oder mithilfe
+einer externen Anwendung erfolgen. Für die letztgenannte Variante sind die
+Programme \Application{Citavi} respektive \Application{JabRef} empfehlenswert.
+Auf eine Einführung in diese Anwendungen wird jedoch verzichtet.
+
+Die \Environment{filecontents}(\Package{filecontents})"=Umgebung kann verwendet
+werden, um innerhalb eines \hologo{LaTeX}"=Dokumentes externe Dateien direkt
+beim Kompilieren zu erstellen. Damit wird nachfolgend für dieses Tutorial eine
+Literaturdatenbank \File{\jobname-temp.bib} mit drei Einträgen manuell erzeugt.
+Die Umgebung gehört standardmäßig zu den Bordmitteln von \hologo{LaTeXe}. Das
+Paket \Package{filecontents} erweitert die Umgebung dahingehend, dass
+\emph{bereits existierende Dateien} überschrieben werden. Hier ist folglich
+Vorsicht geboten. Der große Vorteil ist jedoch, dass die erweiterte
+\Environment{filecontents}(\Package{filecontents})"=Umgebung~-- im Gegensatz
+zur Standardversion~-- die Dateien in der gleichen Eingabekodierung erzeugt,
+wie das verwendete Dokument. Diese Funktionalität wird für dieses Tutorial
+benötigt, weshalb auf das Laden des Paketes \Package{filecontents} nicht
+verzichtet werden kann.
+%
+\begin{Preamble}
+\usepackage{filecontents}
+\end{Preamble}
+%
+Folgend wird eine Literaturdatenbank mit drei Einträge definiert. Jeder Eintrag
+einer \File*{.bib}"~Datei beginnt mit \PValue{@}\PName{Eintragstyp}. Direkt
+danach ist für jeden Eintrag ein \emph{eindeutiges} \PParameter{Label}
+festzulegen. Anschließend können für unterschiedliche Felder die dazugehörigen
+Werte eingetragen werden. Die verwendbaren Eintragstypen sowie die für den
+jeweiligen Typ obligatorischen und optionalen Felder sind in der Dokumentation
+von \Package{biblatex} zu finden.
+%
+\begin{Preamble*}
+\begin{filecontents}{\jobname-temp.bib}
+@book{goossens94,
+ author = {Goossens, Michel and Mittelbach, Frank
+ and Samarin, Alexander},
+ title = {The LaTeX Companion},
+ date = {1994},
+ publisher = {Addison-Wesley},
+ location = {Reading, Massachusetts},
+ language = {english},
+}
+@book{knuth84,
+ author = {Knuth, Donald E.},
+ title = {The \TeX book},
+ date = {1984},
+ maintitle = {Computers \& Typesetting},
+ volume = {A},
+ publisher = {Addison-Wesley},
+ location = {Reading, Massachusetts},
+ language = {english},
+}
+@manual{hanisch14,
+ author = {Hanisch, Falk},
+ title = {Ein \LaTeX"=Bundle für Dokumente im neuen Corporate
+ Design der Technischen Universität Dresden},
+ date = {2014},
+ subtitle = {Benutzerhandbuch},
+ location = {Dresden},
+ language = {german},
+}
+\end{filecontents}
+\end{Preamble*}
+%
+Nachdem die Literaturdatenbank erstellt wurde, muss diese auch noch eingebunden
+werden:
+%
+\begin{Preamble}
+\addbibresource{\jobname-temp.bib}
+
+\end{Preamble}
+%
+Im einfachsten Fall werden die gewünschten Einträge der Literaturdatenbank im
+Dokument mit \Macro{cite}[\Parameter{macro}](\Package{biblatex}) referenziert,
+von \Package{biblatex} werden zusätzliche Möglichkeiten angeboten.
+%
+\begin{refsection}[\jobname-temp.bib]
+\begin{Trunk+}
+\section{Referenzen und das Literaturverzeichnis}
+Das Literaturverzeichnis wird auf Basis der nachfolgend verwendeten
+Zitate erstellt und ist auf Seite~\pageref{sec:bibliography} zu finden.
+\end{Trunk+}
+\begin{Trunk*}
+In diesem Textabschnitt werden die zwei bekannten \LaTeX-Bücher
+\cite{knuth84} und \cite{goossens94} sowie das Anwenderhandbuch
+\cite{hanisch14} zitiert.
+
+\end{Trunk*}
+%
+Das Literaturverzeichnis wird mit \Macro{printbibliography}(\Package{biblatex})
+ausgegeben, wobei nicht alle Einträge der Literaturdatenbank sondern lediglich
+die tatsächlich referenzierten verwendet werden. Der Parameter
+\PValue{heading=bibintoc} führt zu einem Eintrag in das Inhaltsverzeichnis.
+%
+\begin{Hint}
+\printbibliography[heading=bibintoc]
+\end{Hint}
+\begin{quoting}[rightmargin=0pt]
+\makeatletter
+\let\markboth\@gobbletwo
+\let\markright\@gobble
+\makeatother
+\printbibliography
+\end{quoting}
+\end{refsection}
+
+
+
+\section{Anfangszitat oder Schlauer Spruch}
+\renewcommand*\dictumwidth{.4\textwidth}%
+\dictum[Johann Wolfgang von Goethe]{Es irrt der Mensch, solang er strebt.}%
+\bigskip\noindent
+Oftmals möchte der Autor einer wissenschaftlichen Arbeit für das erste oder
+auch jedes Kapitel ein Zitat oder ähnliches voranstellen. Dies kann mit dem
+Befehl \Macro{dictum}[\OParameter{Autor}\Parameter{Text}](\Package{koma-script})
+erfolgen. Damit wird der im obligatorischen Argument angegeben Ausspruch in
+einer \Macro{parbox} ausgegeben. Das optionale Argument kann für die Angabe des
+Autors verwendet werden. Soll das Ganze für einen Teil oder ein Kapitel
+erfolgen, sollte der Befehl \Macro{dictum}(\Package{koma-script}) innerhalb von
+\Macro{setpartpreamble}(\Package{koma-script}) beziehungsweise
+\Macro{setchapterpreamble}(\Package{koma-script}) verwendet werden. Genaueres
+hierzu und zu den weiteren Möglichkeiten, die Gestalt eines Zitats zu
+beeinflussen, ist in der \scrguide[Anleitung von \KOMAScript] zu finden. Es
+folgt ein Beispiel zur Verwendung.
+%
+\begin{Hint}
+\setchapterpreamble{%
+ \dictum[Johann Wolfgang von Goethe]{%
+ Es irrt der Mensch, solang er strebt.%
+ }%
+ \bigskip
+}
+\chapter{Einleitung}
+
+\end{Hint}
+
+
+
+\section{Gleitumgebungen für Abbildungen und Tabellen}
+\label{sec:floats}%
+%
+Die Positionierung von Abbildungen mit \hologo{LaTeX} kann zu Beginn für viele
+Anfänger durchaus frustrierend sein. Das liegt häufig am Missverständnis der
+beiden Standard"=Gleitobjektumgebungen für Tabellen (\Environment{table}) und
+Abbildungen (\Environment{figure}). Diese sind in erster Linie zur Ergänzung
+des Fließtextes gedacht und sollten für das prinzipielle Verständnis des
+Geschriebenen nicht notwendig sein. Das oft geforderte Verhalten, ein
+Gleitobjekt an einer ganz bestimmten und explizit festgelegten Position im Text
+zu setzen, ist nicht erforderlich, insbesondere weil dadurch der Lesefluss
+unnötig unterbrochen wird.
+
+Vielmehr ist es sinnvoll, Gleitobjekte entweder am Anfang oder Ende einer Seite
+zu platzieren, wo sie den Lesefluss deutlich weniger stören. Allerdings sollte
+auf jedes Gleitobjekt im Fließtext über eine Referenz~-- beispielsweise mit dem
+Befehl \Macro{autoref}(\Package{hyperref}) aus dem Paket \Package{hyperref}~--
+Bezug genommen und gegebenenfalls eine kurze Erläuterung gegeben werden.
+Zusätzliche Erläuterungen zum Thema \emph{Querverweise} sind unter
+\autoref{sec:references} zu finden.
+
+Ein weitere Grund, \hologo{LaTeX} die Platzierung von Tabellen und Abbildungen
+vollständig zu überlassen, ist die Ungewissheit über den vorhandenen Platz auf
+der momentan erzeugten Seite. In nicht wenigen Fällen kann es passieren, dass
+das einzufügende Objekt zu groß für die aktuelle Seite ist, was einen wahrlich
+schlechten Seitenumbruch mit einer schlecht gefüllten Seite zur Folge hätte.
+Die Verwendung einer Gleitumgebung für eine Abbildung wird im nachfolgenden
+Quelltextauszug exemplarisch gezeigt, das Ergebnis ist in \autoref{fig:example}
+zu sehen. Bei Gleitobjekten sollte in jedem Fall darauf geachtet werden, dass
+der Befehl \Macro{label} immer erst \emph{nach}
+\Macro{caption}(\Package{koma-script},\Package{caption}) verwendet wird, da
+der erzeugte Anker sich sonst nicht auf das Objekt bezieht.
+%
+\begin{Trunk+}
+\section{Grafiken und Tabellen in Gleitumgebungen}
+Es folgt die Demonstration von Gleitumgebungen, welche sowohl für
+Grafiken als auch Tabellen verwendet werden sollten. Im vorliegenden
+Beispiel kann unter Umständen der Eindruck entstehen, dass diese Seite
+etwas zu überladen mit Gleitobjekten ist. Dies liegt nicht an der
+Verwendung der Gleitobjekte sondern vielmehr am zu geringen Textvolumen
+und den eingeschränkten Möglichkeiten von \LaTeX{}, diese an geeigneten
+Stellen zu platzieren.
+
+\subsection{Abbildungen als Gleitobjekte und das Einbinden von Grafiken}
+In \autoref{fig:example} wird dargestellt, wie eine Grafik im PDF"~Format
+in ein Dokument eingebunden und auf diese verwiesen werden kann. Ein
+Querverweis auf ein Gleitobjekt sollte im Fließtext am besten mit Befehl
+\texttt{\textbackslash autoref\{\emph{<Label>}\}} erstellt werden.
+Hierfür ist ein entsprechender Anker am zu referenzierenden Objekt nötig,
+welcher mit dem Makro \texttt{\textbackslash label} erzeugt wird. Dabei
+ist entscheidend, dass dieser Anker erst \emph{nach} der Beschriftung des
+Objektes, welche mit \texttt{\textbackslash caption} zu erstellen ist,
+definiert werden sollte.
+
+\end{Trunk+}
+\begin{Trunk}
+\begin{figure}
+\centering
+\includegraphics{TUD-black}
+\caption{Beispielgrafik}\label{fig:example}
+\end{figure}
+
+\end{Trunk}
+\InputCode\noindent
+%
+In der Konsequenz ist dies hier ein Plädoyer, bei der Platzierung von Tabellen
+und Abbildungen vollständig auf \hologo{LaTeX} zu vertrauen. Anfangs kann der
+Anwender dies als Kontrollverlust empfinden. Sobald Sie jedoch Änderungen am
+Dokument vornehmen und eventuell in einem Kapitel einen Absatz ergänzen oder
+gar einen ganzen Abschnitt hinzufügen werden sie dankbar sein, sich in der
+Folge nicht mit der Neupositionierung sämtlicher Objekte herumschlagen zu
+müssen. Leidgeprüfte Anwender einschlägiger Textverarbeitungsprogramme können
+gewiss ein Lied darüber singen.
+
+
+
+\subsection{Gleitobjektlayout}
+\label{sec:floatlayout}%
+%
+Es wurde bis jetzt das prinzipielle Vorgehen bei der Nutzung von Gleitobjekten
+beschrieben. Allerdings gibt es auch noch einige typografische Aspekte, welche
+zu beachten sind. Zum einen sollte beachtet werden, dass die Beschriftung einer
+Abbildung immer unterhalb dieser erfolgen sollte, bei Tabellen hingegen eine
+Überschrift gesetzt wird. Hierfür muss der Anwender ohne die Verwendung eines
+zusätzlichen Paketes selber Sorge tragen, indem er den Befehl
+\Macro{caption}(\Package{koma-script},\Package{caption}) entweder vor oder
+nach dem eigentlichen Objekt in der Gleitumgebung verwendet. Der zweite Punkt
+ist die verwendete Schrift innerhalb der Gleitumgebungen.
+
+Damit sich der Inhalt dieser besser vom restlichen Fließtext abhebt und vom
+Leser direkt als nicht dazugehörig erkannt werden kann ist es ratsam, diesen in
+serifenloser Schrift zu setzen~-- die Verwendung einer Serifenschrift für den
+Fließtext vorausgesetzt. Das Paket \Package{floatrow} bietet die Möglichkeiten,
+diese beiden Punkte automatisiert umzusetzen. Außerdem wird zur Formatierung
+der Beschriftungen das Paket \Package{caption} benötigt. Sollten Sie noch keine
+Erfahrung mit dem Setzen von Tabellen mit \hologo{LaTeX} haben, so wäre zuvor
+ein Blick in \autoref{sec:tables} sehr sinnvoll.
+
+\newcommand*\tableexample[1][]{%
+ \begin{tabularx}{.75\textwidth}{@{}XXX@{}}
+ \toprule
+ \textbf{Erste Spalte} & \textbf{Zweite Spalte} &
+ \textbf{Dritte Spalte} \tabularnewline\midrule
+ Etwas Blindtext für die erste Spalte &
+ Etwas Blindtext für die zweite Spalte &
+ Etwas Blindtext für die dritte Spalte
+ \tabularnewline\bottomrule
+ \end{tabularx}
+ #1%
+}
+\begin{table}
+\tableexample[%
+ \caption{Eine Tabelle in einer Gleitumgebung}\label{tab:tabular}%
+]
+\end{table}
+
+Normalerweise wird eine Tabelle sowie deren Beschriftung innerhalb einer
+\Environment{table}"=Gleitumgebung in der selben Schrift wie der Fließtext
+gesetzt, die korrekte Platzierung der Bezeichnungen bleibt dem Anwender
+überlassen. Zu sehen ist dies in \autoref{tab:tabular}. Im Folgenden wird
+gezeigt, wie sich dies automatisiert für alle Gleitobjekte im Dokument ändern
+lässt. Die \emph{Formatierung} der Bezeichnungen von Gleitobjekten kann
+mithilfe des Paketes \Package{caption} angepasst werden.
+%
+\begin{Preamble}
+\usepackage{caption}
+\end{Preamble}
+%
+Diese stellt den Befehl \Macro{captionsetup}(\Package{caption}) bereit. Mit
+diesem werden die Beschriftungen in Serifenlosen und das Label zur besseren
+Unterscheidung im fetter Schriftstärke gesetzt.
+%
+\begin{Preamble*}
+\captionsetup{font=sf,labelfont=bf,labelsep=space}
+\end{Preamble*}
+%
+Um die \emph{Platzierung} der Beschriftungen beeinflussen sowie den Inhalt
+einer Gleitumgebung formatieren zu können, wird \Package{floatrow} geladen.
+\begin{Preamble}
+\usepackage{floatrow}
+\end{Preamble}
+%
+Der Inhalt von Gleitobjekten wird~-- entgegen des normalen Verhaltens~-- durch
+\Package{floatrow} automatisch zentriert gesetzt. Zusätzlich soll der Inhalt
+noch die serifenlose Schriftfamilie verwenden. Dies lässt sich mit der Nutzung
+des Befehls \Macro{floatsetup}(\Package{floatrow}) realisieren.
+%
+\begin{Preamble*}
+\floatsetup{font=sf}
+\end{Preamble*}
+%
+Ohne weitere Maßnahmen werden durch \Package{floatrow} alle Beschriftungen
+unterhalb der Gleitobjekte ausgegeben. Da das Ziel jedoch die Verwendung von
+Tabellenüberschriften und Abbildungsunterschriften ist, wird dies für Tabellen
+angepasst.
+%
+\begin{Preamble*}
+\floatsetup[table]{style=plaintop}
+\end{Preamble*}
+%
+\begin{table}
+\tableexample[%
+ \caption{%
+ Eine Tabelle in einer Gleitumgebung mit einer angepassten Formatierung%
+ }%
+ \label{tab:tabularnew}%
+]
+\end{table}%
+%
+Damit wären alle Einstellungen soweit erfolgt, in \autoref{tab:tabularnew} ist
+das Ergebnis zu sehen. Zumeist soll die Beschriftung für Gleitobjekte nicht
+zentriert sondern linksbündig gesetzt werden. Dies lässt sich ebenfalls mit den
+Mitteln des Paketes \Package{caption} und der passenden Paketoption
+\Option{justification}(\Package{caption}) erreichen. Damit dies auch für
+einzeilige Beschriftungen angewendet wird, muss zusätzlich die Einstellung
+\Option{singlelinecheck}(\Package{caption}) deaktiviert werden. Mit der
+Paketoption \Option{format}(\Package{caption}) kann außerdem beeinflusst
+werden, ob eine mehrzeilige Beschriftung nach einem Zeilenumbruch direkt unter
+dem Label oder mit Einzug fortgesetzt werden soll.
+%
+\begin{Preamble*}
+\captionsetup{singlelinecheck=off,format=hang,justification=raggedright}
+\end{Preamble*}
+%
+In \autoref{tab:tabularnew} fällt die Beschriftung auf, welche die Breite der
+Tabelle überragt. Falls linksbündige Gleitumgebungsbezeichnungen verwendet
+werden, wie dies gerade eingestellt wurde, besteht das Problem quasi bei jeder
+Beschriftung, da diese immer am linken Seitenrand beginnen. Auch hierfür stellt
+das Paket \Package{floatrow} die Befehle \Macro{ttabbox}(\Package{floatrow})
+für Tabellen sowie \Macro{ffigbox}(\Package{floatrow}) für Abbildungen bereit.
+
+Beide Makros erwarten im ersten obligatorischen Argument den Befehl
+\Macro{caption}(\Package{koma-script},\Package{caption}) für die Beschriftung
+gegebenenfalls gefolgt von einem mit \Macro{label} gesetzten Textanker. Im
+zweiten Argument wird das Objekt selbst~-- sprich Tabelle oder Abbildung~--
+angegeben. Zu verwenden sind diese folgendermaßen:
+%
+\begin{Hint}
+\begin{table}
+\ttabbox
+ §\Parameter{Tabellendefinition}§
+ {\caption§\Parameter{Beschriftung}§\label§\Parameter{Label}§}
+\end{table}
+\begin{figure}
+\ffigbox
+ §\Parameter{Abbildungsdefinition}§
+ {\caption§\Parameter{Beschriftung}§\label§\Parameter{Label}§}
+\end{figure}
+\end{Hint}
+%
+Diese beiden Befehle sorgen dafür, dass die Beschriftungen in der jeweiligen
+Breite des Objektes gesetzt werden. Entspricht das zu setzende Objekt in seiner
+Breite dem Wert \Length{textwidth}~-- es ist genauso Breit wie die Laufweite
+des Fließtextes~--, so ist deren Gebrauch nicht notwendig. Das Ergebnis der
+Verwendung von des Befehls \Macro{ttabbox}(\Package{floatrow}) ist in
+\autoref{tab:tabularbox} zu sehen.
+
+Bei der Nutzung der beiden Befehle sollte darauf geachtet werden, dass zwischen
+dem Ende des Objektes und der schließender Klammer des zweiten Argumentes kein
+ungewolltes Leerzeichen gesetzt wird. Dies lässt sich leicht vermeiden, indem
+direkt nach dem Ende des Objektes mit \Macro*{end}[\PParameter{tabularx}],
+\Macro*{end}[\PParameter{tabu}], \Macro*{end}[\PParameter{tikz}] etc. die
+schließende Klammer des zweiten Argumentes oder das Zeichen für einen Kommentar
+\PValue{\%} folgt.
+
+\begin{table}
+\ttabbox{\tableexample}{%
+ \caption[%
+ Eine mit \Macro{ttabbox}(\Package{floatrow}) gesetzte Tabelle in einer
+ Gleitumgebung%
+ ]{%
+ Eine in einer Gleitumgebung gesetzte Tabelle in Verbindung mit dem Befehl
+ \Macro{ttabbox}(\Package{floatrow}), der durch das Paket \Package{floatrow}
+ für Beschriftungen in Objektbreite zur Verfügung gestellt wird%
+ }%
+ \label{tab:tabularbox}%
+}
+\end{table}
+
+
+\subsection{Untergleitobjekte}
+\label{sec:subfloats}%
+%
+Das Paket \Package{floatrow} stellt allerhand Möglichkeiten zur Erstellung von
+nebeneinanderliegenden Gleitobjekten sowie \enquote{Untergleitobjekten} bereit
+und ist insbesondere in Verbindung mit den Fähigkeiten von \Package{caption}
+respektive \Package{subcaption} sehr gut für dieses Unterfangen nutzbar. Dafür
+werden die Umgebungen \Environment{floatrow}(\Package{floatrow}) sowie
+\Environment{subfloatrow}(\Package{floatrow}) angeboten, wobei die letztere für
+ein Beispiel verwendet wird. Als erstes muss der Typ der zu erzeugenden Labels
+für Abbildungen und Tabellen definiert werden. Dies geschieht mit dem Befehl
+\Macro{DeclareCaptionSubType}(\Package{subcaption}) aus dem Paket
+\Package{subcaption}.
+%
+\begin{Preamble}
+\DeclareCaptionSubType[alph]{figure}
+\DeclareCaptionSubType[alph]{table}
+\end{Preamble}
+%
+Anschließend werden die Untergleitobjekte formatiert. Dabei wird zum einen nach
+dem alphanumerischen Label eine schließende Klammer gesetzt. Zum andern wird
+ein Eintragen der Untergleitobjekte in das Abbildungsverzeichnis unterdrückt.
+Lediglich die Bildunterschrift der Hauptabbildung wird in dieses eingetragen.
+%
+\begin{Preamble*}
+\captionsetup[subfloat]{labelformat=brace,list=off}
+
+\end{Preamble*}
+%
+Mit diesen Einstellungen wird eine gleitende Abbildung erstellt, welche in
+\autoref{fig:logos} zu sehen ist. Wurde der entsprechende Anker gesetzt, kann
+zusätzlich auf die untergeordnete \autoref{fig:tud} sowie \autoref{fig:ddc}
+verwiesen werden.
+%
+\begin{Trunk+}
+\subsection{Untergleitobjekte}
+Nachdem nun schon eine gleitende Abbildung und zwei gleitende Tabellen
+erstellt wurden, folgt jetzt noch eine gleitende Abbildung mit zwei
+Unterabbildungen. Durch die drei gesetzten Anker kann im Fließtext
+sowohl auf \autoref{fig:logos} als auch auf \autoref{fig:tud} sowie
+\autoref{fig:ddc} verwiesen werden.
+
+\end{Trunk+}
+\begin{Trunk}
+\begin{figure}
+\ffigbox[\FBwidth]%
+ {\begin{subfloatrow}%
+ \ffigbox[\FBwidth]%
+ {\fbox{\includegraphics[height=2cm]{TUD-black}}}%
+ {\caption{Eine Abbildung}\label{fig:tud}}%
+ \ffigbox[\FBwidth]%
+ {\fbox{\includegraphics[height=2cm]{DDC-21}}}%
+ {\caption{Eine weitere Abbildung}\label{fig:ddc}}%
+ \end{subfloatrow}}%
+ {\caption{Eine Gleitumgebung mit zwei Abbildungen}\label{fig:logos}}%
+\end{figure}
+
+\end{Trunk}
+\InputCode
+
+
+\subsection{Beeinflussung des Gleitprozesses}
+Sobald das Dokument inhaltlich den finalen Zustand erreicht hat, haben Sie sich
+zu diesem Zeitpunkt schon mit Sicherheit an das standardmäßige Vorgehen von
+\hologo{LaTeX} gewöhnt und müssen respektive wollen gegebenenfalls nur noch bei
+wenigen Gleitobjekten~-- über das optionale Argument der Gleitumgebungen zur
+individuellen Empfehlung für die Platzierung~-- nachjustieren. Mögliche Werte
+sind:
+%
+\begin{description}[labelindent=\parindent,leftmargin=*,style=nextline]
+\item[\POParameter{h} (here)]
+ An der Stelle, wo es im Quelltext angegeben wurde~-- falls genügend Platz
+ vorhanden ist
+\item[\POParameter{t} (top)]
+ Am oberen Ende der aktuellen oder der folgenden Seite
+\item[\POParameter{b} (bottom)]
+ Am unteren Ende der aktuellen Seite
+\item[\POParameter{p} (page)]
+ Auf einer separaten Seite für mindestens ein Gleitobjekt
+\end{description}
+%
+Sie können eine, mehrere oder alle Optionen angeben, wobei die Reihenfolge
+keine Rolle spielt. Der Algorithmus arbeitet alle ihm zur Verfügung gestellten
+Optionen immer in der zuvor aufgezählten Reihenfolge ab, wobei diese nur als
+Empfehlung und nicht als Verpflichtung angesehen werden. Es gibt folglich keine
+Garantie, dass Ihr Vorschlag akzeptiert wird. Fügen sie dem optionalen Argument
+ein~\PValue{!} an, so verhindern Sie, dass \hologo{LaTeX} weitere Optionen
+evaluiert. Das Gleitobjekt wird anhand der optionalen Parameter positioniert,
+selbst wenn dabei ein unschönes Seitenlayout entsteht. Kann das Gleitobjekt
+technisch unmöglich auf die angegebene Weise positioniert werden, wird dieses
+sowie alle folgenden aufgeschoben und am Ende des Abschnitts oder Kapitels
+angehängt. Dieser Effekt ist wohl in den seltensten Fällen gewollt.
+
+Außerdem können die Pakete \Package{flafter} sowie \Package{placeins} genutzt
+werden. Das erstgenannte verhindert das Auftreten von Gleitobjekten im Dokument
+vor ihrer Definition im Quelltext. In der Konsequent bedeutet dies, dass die
+Option \POParameter{t} Gleitobjekte nur am oberen Ende der nächsten Seite
+jedoch nicht auf der aktuellen zulässt. Mit dem zweiten Paket können Barrieren
+definiert werden, an welchen die Ausgabe aller noch in der Warteschlange
+befindlichen Gleitobjekte forciert wird~-- beispielsweise vor bestimmten
+Gliederungsüberschriften. Im Handbuch zu \TUDScript findet sich außerdem zum
+Thema \enquote{\tudhyperref{sec:tips:floats}{Platzierung von Gleitobjekten}}
+ein eigener Abschnitt mit weiterführenden Informationen.
+
+
+\subsection{Abstellen des Gleitprozesses}
+Trotz der zuvor genannten Vorteile von Gleitobjekten wird oftmals verlangt, den
+Gleitprozess vollständig abzustellen. Dies bringt jedoch in den meisten Fällen
+einige Probleme mit sich. Die Folge sind ein sehr unruhiges Erscheinungsbild
+des Satzspiegels aufgrund schlecht gefüllter Seiten, außerdem im Zweifelsfall
+viel Handarbeit mit hart kodierten Seitenumbrüchen sowie daraus resultierend
+ein gegenüber von Umbruchänderungen äußerst anfälliges Dokument. Sollte es in
+\emph{Einzelfällen} dennoch erforderlich sein, dass eine Abbildung oder Tabelle
+nicht gleitet, ist die einzig logische Konsequenz, auf die Verwendung einer
+Gleitumgebung gänzlich zu verzichten.
+
+Hierfür eignet sich beispielsweise die Umgebung \Environment{center}, welche
+zum einen etwas Abstand vor und nach dem Objekt zum umgebenden Text erzeugt
+und zum anderen die Grafik respektive Tabelle und die dazugehörige Bezeichnung
+zusammenhält. \KOMAScript{} stellt für diesen Anwendungsfall das Makro
+\Macro{captionof}(\Package{koma-script}) für die Beschriftung zur Verfügung.
+Werden die Pakete \Package{caption} und \Package{hyperref} geladen, sollte
+weiterhin \Macro{caption}(\Package{koma-script},\Package{caption}) ergänzt um
+ein zuvor aufgerufenes
+\Macro{captionsetup}[\PParameter{type=figure/table}](\Package{caption})
+genutzt werden. Damit lassen sich Bildunter- sowie Tabellenüberschriften auch
+ohne die bekannten Gleitumgebungen \Environment{figure} respektive
+\Environment{table} erzeugen. Das Vorgehen wird folgend demonstriert, in
+\autoref{fig:nonfloating-A} ist das Ergebnis zu sehen.
+%
+\begin{Hint}
+\begin{center}
+\captionsetup{type=figure}
+\includegraphics{TUD-black}
+\caption{Eine nichtgleitende Grafik in einer \texttt{center}"=Umgebung}
+\label{fig:nonfloating-A}
+\end{center}
+
+\end{Hint}
+\InputCode\noindent
+%
+Alternativ zu diesem Ansatz kann das Paket \Package{float} zum Einsatz kommen,
+welches für Gleitumgebungen den Platzierungsparameter \POParameter{H}
+bereitstellt. Das Resultat ist identisch zu \autoref{fig:nonfloating-A}.
+%
+\begin{Hint}
+\begin{figure}[H]
+\includegraphics{TUD-black}
+\caption{Eine nichtgleitende Grafik in einer \texttt{figure}"=Umgebung}
+\label{fig:nonfloating-B}
+\end{figure}
+
+\end{Hint}
+%
+Mit den Mitteln des Paketes \Package{floatrow} lässt sich eine etwas bessere
+Variante entwickeln, wobei für eine mehrmalige Anwendung ein eigenes Makro mit
+den passenden Argumenten definiert werden sollte. Zum besseren Verständnis des
+Quelltextauszuges ist die Dokumentation von \Package{floatrow} zu beachten.
+%
+\begin{Hint}
+\floatbox[\captionsetup{type=figure}]{figure}[\FBwidth][%
+ \dimexpr\FBheight+\abovedisplayskip\relax%
+][b]{\includegraphics{TUD-black}}{%
+ \caption{%
+ Eine nichtgleitende Grafik mit \texttt{\textbackslash floatbox}%
+ }%
+ \label{fig:nonfloating-C}%
+}
+\end{Hint}
+\InputCode\noindent
+%
+Es wird hier trotz der vorhergehenden Ausführungen abermals ausdrücklich
+empfohlen, Tabellen und Abbildungen in Gleitumgebungen zu setzen und die
+korrekte Platzierung dem \hologo{LaTeX}"=Algorithmus zu überlassen.
+
+
+
+
+\section{Tabellensatz}
+\label{sec:tables}%
+%
+Zum Thema \enquote{Tabellensatz mit \hologo{LaTeX}} sind bereits zahlreiche
+\hrfn{http://userpage.fu-berlin.de/latex/Materialien/tabsatz.pdf}{Leitfäden}
+\cite{reichert2012} im Internet zu finden. Deshalb werde ich meine Ausführungen
+zu diesem Punkt relativ kurz halten. Zwei Regeln sollten beim Satz von Tabellen
+in jedem Fall beachtet werden:
+%
+\begin{enumerate}[%
+ itemindent=0pt,noitemsep,%
+ labelwidth=*,labelsep=1em,label=\Roman*.%
+]
+\item keine vertikalen Linien
+\item keine doppelten Linien
+\end{enumerate}
+%
+Das Paket \Package{booktabs} ist für den Satz von hochwertigen Tabellen eine
+große Hilfe und stellt die Befehle \Macro{toprule}(\Package{booktabs}),
+\Macro{midrule}(\Package{booktabs}) sowie \Macro{cmidrule}(\Package{booktabs})
+und \Macro{bottomrule}(\Package{booktabs}) für unterschiedliche horizontale
+Linien bereit.
+%
+\begin{Preamble}
+\usepackage{booktabs}
+\end{Preamble}
+%
+Außerdem existiert das Paket \Package{array}, welches mit dem Befehl
+\Macro{newcolumntype}(\Package{array}) die Definition eigener Spaltentypen
+sowie die Verwendung von \enquote{Hooks} vor (\PValue{>\PParameter{\dots}}) und
+nach (\PValue{<\PParameter{\dots}}) Einträgen innerhalb einer Spalte
+(\PValue{>\PParameter{\dots}}\PName{Spaltentyp}\PValue{<\PParameter{\dots}})
+ermöglicht.
+%
+\begin{Preamble}
+\usepackage{array}
+\end{Preamble}
+%
+Für alle im Folgenden vorgestellten Umgebungen zum Setzen von Tabellen gilt,
+dass die Inhalte zeilenweise angegeben werden, wobei die Einträge für die
+einzelnen Spalten mit~\PValue{\&} voneinander zu trennen sind. Das Beenden
+einer Tabellenzeile und der Wechsel zur nächsten erfolgt normalerweise mit
+\PValue{\textbackslash\textbackslash}. Da jedoch einige \hologo{LaTeX}"=Pakete
+diesen Befehl innerhalb von Tabellen lokal ändern ist es zur Vermeidung
+unnötiger Fehler wesentlich sicherer, das Zeilenende ausschließlich mit
+\Macro{tabularnewline} zu setzen.
+
+Im Folgenden wird in einigen Tabellen bei der Definition der Spalten vor der
+ersten und nach der letzten das Konstrukt~\PValue{@\PParameter{}} verwendet,
+was das \tudhyperref{sec:tips:table}{Einrücken der Tabellenspalten verhindert}
+und im Handbuch genauer erläutert wird.
+
+
+\subsection{Die Standardumgebung \Environment*{tabular}}
+Normalerweise gibt es für \Environment{tabular} vier unterschiedliche
+Spaltentypen. Die drei Spaltentypen~\PValue{l},~\PValue{c}~und~\PValue{r}
+stehen für linksbündige, zentrierte und rechtsbündige Spalten zu Verfügung,
+welche allerdings keinen Zeilenumbruch erlauben. Der Inhalt wird quasi wie in
+einer \Macro{mbox} gesetzt, wodurch die Spalten sehr breit werden und über den
+Seitenrand hinausragen können.
+
+Der Spaltentyp~\PValue{p}\Parameter{Breite} hingegen legt die Spaltenbreite
+fest und setzt die Zellinhalte in einer \Macro{parbox}, wobei diese mit ihrer
+obersten Zeile an der Grundlinie ausgerichtet wird. Das Paket \Package{array}
+stellt außerdem die Spaltentypen~\PValue{m}\Parameter{Breite}
+und~\PValue{b}\Parameter{Breite} bereit, welche ebenfalls mit \Macro{parbox}
+gesetzt werden, die Ausrichtung an der Grundlinie jedoch zentriert respektive
+an der unteren Zeile erfolgt. Es folgt ein Beispiel zur Nutzung der
+\Environment{tabular}"=Umgebung.
+%
+\begingroup
+\pcolumnfuzz{70pt}
+\begin{Hint*}
+\begin{tabular}{lcrp{33mm}}
+\toprule
+\textbf{Linksbündig} & \textbf{Zentriert} &
+\textbf{Rechtsbündig} & \textbf{Blocksatz} \tabularnewline\midrule
+a & b & c & Dieser Text wird im Blocksatz gesetzt\tabularnewline
+aa & bb & cc & Auch Zeilenumbrüche sind vorhanden\tabularnewline
+aaa & bbb & ccc & Worttrennungsmusterkontrolle\tabularnewline
+\bottomrule
+\end{tabular}
+\end{Hint*}
+\endgroup
+%
+Die Tabellenbreite ergibt sich aus der Breite der einzelnen Spalten. Bei dieser
+Umgebung liegt es allein beim Anwender, auf die korrekte Breite der Tabelle zu
+achten, damit diese nicht über die Seitenränder hinausragt. Das kann auf Dauer
+recht aufwändig werden. Das Festlegen der Gesamtbreite einer Tabelle und das
+automatische Berechnen einiger oder aller Spaltenbreiten ist sicher die
+angenehmere Variante. Wie sich dies sehr komfortabel bewerkstelligen lässt,
+wird~-- ebenso wie die Lösung des Problems eines nicht umbrochenen Eintrags wie
+in der letzten Spalte der dritten Zeile der obigen Tabelle~-- im nachfolgenden
+Abschnitt demonstriert.
+
+
+\subsection{Tabellen mit variabler Spaltenbreite}
+Die Pakete \Package{tabularx}, \Package{tabulary} oder auch \Package{tabu}
+stehen für das Setzen von Tabellen mit dynamisch berechneter Spaltenbreite bei
+fest vorgegebener Gesamtbreite zur Verfügung, welche nun kurz vorgestellt
+werden sollen. Die beiden erstgenannte Pakete \Package{tabularx} sowie
+\Package{tabulary} stammen vom gleichen Paketautor und haben sich als sehr
+stabil erwiesen. Das Paket \Package{tabu} ist relativ neu und versucht, viele
+Funktionalitäten ganz unterschiedlicher Pakete für den Tabellensatz in sich zu
+vereinen und glänzt insbesondere durch seine Vielseitigkeit.
+%
+\begin{Preamble}
+\usepackage{tabularx}
+\usepackage{tabulary}
+\usepackage{tabu}
+\usepackage{longtable}
+
+\end{Preamble}
+%
+Jedes der Pakete stellt einen oder mehrere neue Spaltentypen zur Verfügung.
+Dies bedeutet jedoch nicht, dass in den dazugehörigen Tabellenumgebungen
+lediglich diese genutzt werden können. Vielmehr werden diese zusätzlich
+angeboten, was bedeutet, dass auch in den neuen Tabellenumgebungen weiterhin
+die gewohnten Spaltentypen~\PValue{l},~\PValue{c},~\PValue{r}~und~\PValue{p}
+verfügbar sind.
+
+\subsubsection{Die Tabellenumgebung \Environment*{tabularx}}
+\label{sec:tabularx}%
+%
+Das Paket \Package{tabularx} stellt den Spaltentyp~\PValue{X} bereit, welcher
+prinzipiell dem Spaltentyp~\PValue{p} entspricht. Auch für diesen wird eine
+\Macro{parbox} verwendet, allerdings wird deren Breite \emph{automatisch}
+berechnet. Die Umgebung \Environment{tabularx}(\Package{tabularx}) erwartet vor
+der Spaltentypenangabe als obligatorisches Argument die gewünschte Breite der
+Tabelle. Spalten vom Typ~\PValue{l},~\PValue{c}~und~\PValue{r} werden jedoch
+weiterhin \emph{ohne} Zeilenumbruch gesetzt werden. Nur für Spalten vom
+Typ~\PValue{X} und deren Derivate wird aus dem verbliebenen Platz die Breite
+berechnet. Für die \Environment{tabularx}(\Package{tabularx})"~Umgebung wird
+das vorherige Beispiel wiederholt.
+%
+\begingroup
+\pcolumnfuzz{70pt}
+\begin{Hint*}
+\begin{tabularx}{11.7cm}{lcrX}
+\toprule
+\textbf{Linksbündig} & \textbf{Zentriert} &
+\textbf{Rechtsbündig} & \textbf{Blocksatz} \tabularnewline\midrule
+a & b & c & Dieser Text wird im Blocksatz gesetzt\tabularnewline
+aa & bb & cc & Auch Zeilenumbrüche sind vorhanden\tabularnewline
+aaa & bbb & ccc & Worttrennungsmusterkontrolle\tabularnewline
+aaaa & bbbb & cccc & \hspace{0pt}Worttrennungsmusterkontrolle
+\tabularnewline\bottomrule
+\end{tabularx}
+\end{Hint*}
+\endgroup
+%
+Die Breite der letzten Spalte wurde dabei aus der Angabe der Gesamtbreite mit
+\PValue{11.7cm} berechnet. Des Weiteren ist zu sehen, wie das Problem des
+Zeilenumbruchs behandelt werden kann. Normalerweise wird das erste Wort in
+einem Absatz von \hologo{LaTeX} \emph{nie} umbrochen. Dies kann durch das
+Einfügen eines breitenlosen Leerzeichens mit \Macro{hspace}[\PParameter{0pt}]
+umgangen werden. Die gefundene Lösung ist allerdings alles andere als elegant.
+
+Mit den Möglichkeiten des Paketes \Package{array} ist das Problem relativ
+schnell gelöst. Es wird mit \Macro{newcolumntype}(\Package{array}) ein neuer
+Spaltentyp definiert. Das erste Argument legt den Namen des Spaltentyps fest.
+Mit \PValue{>\Parameter{Definitionen}}\Parameter{Typ} wird im zweiten Argument
+das Ausführen von \PName{Definitionen} vor dem Setzen des eigentlichen Inhaltes
+in einer \Parameter{Typ}"~Spalte definiert. Es wird ein neuer, auf der
+\PValue{X}"~Spalte basierender Typ~\PValue{Y} definiert, welcher zu Beginn der
+Spalte den Phantomabstand automatisch einfügt. Darauf basierend werden drei
+Spaltentypen für den links- und rechtsbündigen sowie zentrierten Textsatz mit
+einem möglichen Zeilenumbruch erstellt.
+%
+\begin{Trunk+}
+\subsection{Tabellen als Gleitobjekte}
+Tabellen sollten in der \texttt{table}"=Gleitumgebung gesetzt werden.
+Welche Umgebung für die Tabelle selbst dabei genutzt wird ist dabei
+nicht relevant. Es können sowohl die normale \texttt{tabular}"=Umgebung
+als auch die Umgebungen \texttt{tabularx}, \texttt{tabulary} sowie
+\texttt{tabu} für variable Spaltenbreiten bei einer fest vorgegebenen
+Tabellenbreite oder jede andere Tabellenumgebung genutzt werden.
+Nachfolgend wird dies an mehreren Beispielen demonstriert.
+
+\subsubsection{Eine gleitende tabularx-Tabelle}
+Es wird eine Tabelle mithilfe der \texttt{tabularx}"=Umgebung erstellt.
+Zu sehen ist diese in \autoref{tab:tabularx}. Für diese werden zuvor
+neue Spaltentypen definiert.
+
+\end{Trunk+}
+\CodeHook{\renewcommand*{\newcolumntype}[2]{}}
+\begin{Trunk*}
+\newcolumntype{Y}{>{\hspace{0pt}}X}
+\newcolumntype{D}{>{\raggedright}Y}
+\newcolumntype{E}{>{\centering}Y}
+\newcolumntype{F}{>{\raggedleft}Y}
+
+\end{Trunk*}
+%
+Nachfolgend wird die Tabelle gesetzt mit den neuen Spaltentypen gesetzt.
+%
+\begin{Trunk}
+\begin{table}
+\begin{tabularx}{\textwidth}{@{}DEFY@{}}
+\toprule
+\textbf{Linksbündig} & \textbf{Zentriert} &
+\textbf{Rechtsbündig} & \textbf{Blocksatz} \tabularnewline
+\midrule
+Ein linksbündiger Blindtext zur Demonstration einer S"~Spalte &
+Ein zentrierter Blindtext zur Demonstration einer T"~Spalte &
+Ein rechtsbündiger Blindtext zur Demonstration einer U"~Spalte &
+Ein längerer Blindtext im Blocksatz zur besseren Demonstration
+einer Y"~Spalte\tabularnewline
+\bottomrule
+\end{tabularx}
+\caption{Eine \texttt{tabularx}"=Tabelle}\label{tab:tabularx}
+\end{table}
+
+\end{Trunk}
+\InputCode\noindent
+%
+Die Breite der einzelnen \PValue{X}"~Spalten und deren Derivaten ist dabei
+identisch. Ein Gewichten der Spaltenbreiten untereinander ist prinzipiell
+möglich, allerdings mit einigen Einschränkungen verbunden. Genaueres hierzu ist
+der Dokumentation des Paketes \Package{tabularx} zu entnehmen.
+
+\subsubsection{Die Tabellenumgebung \Environment*{tabulary}}
+\label{sec:tabulary}%
+%
+Das Paket \Package{tabulary} verfolgt im Vergleich zum zuvor beschrieben Paket
+\Package{tabularx} einen etwas anderen Ansatz. Anstatt die verfügbare Breite
+über alle Spalten gleichmäßig zu verteilen, werden die Spaltenbreite anhand des
+jeweils darin befindlichen Inhaltes zueinander gewichtet. Dafür werden die vier
+Spaltentypen~\PValue{L},~\PValue{C},~\PValue{R}~sowie~\PValue{J} zur Verfügung
+gestellt. Diese entsprechen prinzipiell dem Spaltentyp~\PValue{p}, allerdings
+wird deren Breite \emph{automatisch} berechnet, wobei Spalten mit mehr Inhalt
+breiter gesetzt werden. Für die automatische Berechnung der Spaltenbreiten muss
+verständlicherweise die gewünschte Gesamtbreite der Tabelle angegeben werden,
+was bei der \Environment{tabulary}(\Package{tabulary})"~Umgebung mit dem ersten
+obligatorischen Argument vor der Angabe der Spaltendefinition erfolgt. Werden
+eine oder mehrere Spalten vom Typ~\PValue{l},~\PValue{c}~und~\PValue{r}
+angegeben, so werden diese weiterhin in ihrer natürlichen Breite und ohne
+Zeilenumbruch gesetzt.
+
+Die Gewichtung der Spalten vom Typ~\PValue{LCRJ} und deren Derivate wird aus
+dem verbliebenen Platz die Breite berechnet. Die Berechnung der Spaltenbreite
+kann durch den Anwender außerdem über zwei Längen beeinflusst werden. Mit
+\Length{tymin}(\Package{tabulary}) wird die Mindestgröße für Spalten
+festgelegt. Sollten Sie wissen, dass eine Spalte sehr schmal wird, können Sie
+allerdings auch einfach eine der Standardspalten~\PValue{lcrp} nutzen. Mit der
+Länge \Length{tymax}(\Package{tabulary}) kann die maximale Ausdehnung einer der
+Spalten vom Typ~\PValue{LCRJ} festgelegt werden.
+
+Für die \Environment{tabulary}(\Package{tabulary})"~Umgebung wird das vorherige
+Beispiel wiederholt. Zu beachten ist, dass die Spaltentypen~\PValue{LCRJ} mit
+dem Makro \Macro{tyformat}(\Package{tabulary}) bereits ein breitenloses
+Leerzeichen einsetzen, womit sich das manuelle Einfügen von selbigem durch den
+Anwender erübrigt.
+%
+\begin{Trunk+}
+\subsubsection{Eine gleitende tabulary-Tabelle}
+Es wird eine Tabelle mithilfe der \texttt{tabulary}"=Umgebung erstellt.
+Zu sehen ist diese in \autoref{tab:tabulary}.
+
+\end{Trunk+}
+\begin{Trunk}
+\begin{table}
+\begin{tabulary}{\textwidth}{@{}LCRJ@{}}
+\toprule
+\textbf{Linksbündig} & \textbf{Zentriert} &
+\textbf{Rechtsbündig} & \textbf{Blocksatz} \tabularnewline\midrule
+Ein linksbündiger Blindtext zur Demonstration einer L"~Spalte &
+Ein zentrierter Blindtext zur Demonstration einer C"~Spalte &
+Ein rechtsbündiger Blindtext zur Demonstration einer R"~Spalte &
+Ein wesentlich längerer und absolut inhaltsleerer Blindtext im
+Blocksatz für eine um einiges bessere Demonstration einer J"~Spalte
+\tabularnewline\bottomrule
+\end{tabulary}
+\caption{Eine \texttt{tabulary}"=Tabelle}\label{tab:tabulary}
+\end{table}
+
+\end{Trunk}
+\InputCode
+
+
+\subsubsection{Die Tabellenumgebung \Environment*{tabu}}
+\label{sec:tabu}%
+%
+Das Paket \Package{tabu} bietet eine mächtige und komfortable Alternative zu
+\Package{tabularx}. Es kam in diesem Tutorial bereits für die Verzeichnisse von
+Abkürzungen und Symbolen in \autoref{sec:glossaries} zum Einsatz. Leider ist
+das Paket in er aktuellen Version~v2.8 mit Vorsicht zu genießen. Zum einen
+wären für das Paket in der aktuellen Version seit geraumer Zeit ein paar
+kleinere Bugfixes notwendig, mehr dazu sehen Sie später. Außerdem wird sich die
+\hrfn{https://groups.google.com/d/topic/comp.text.tex/xRGJTC74uCI}{%
+ Benutzerschnittstelle in einer zukünftigen Version%
+}
+sehr stark ändern. Sie sollten sich bewusst sein, dass mit der Version~v2.8
+gesetzte Dokumente gegebenenfalls später angepasst werden müssen.
+
+Nichtsdestotrotz soll hier folgend die individuelle Verwendung einer
+\Environment{tabu}(\Package{tabu})"~Umgebung gezeigt werden, insbesondere weil
+für das Setzen umbruchfähiger Tabellen mit automatisch berechneten
+Spaltenbreiten momentan (fast) keine Alternative zu der Umgebung
+\Environment{longtabu}(\Package{tabu}) existiert.
+
+Dieses Paket definiert ebenso einen Spaltentyp~\PValue{X}, welchem allerdings
+zusätzlich ein optionales Argument angehangen werden kann. Mit diesem lässt
+sich sowohl die Gewichtung der automatisch berechneten Spalten untereinander
+als auch die Positionierung zur Grundlinie sowie die Ausrichtung des Inhaltes
+ändern.
+%
+\begingroup
+\pcolumnfuzz{70pt}
+\begin{Hint*}
+\begin{tabu} to 11.7cm {lcrX}
+\toprule
+\textbf{Linksbündig} & \textbf{Zentriert} &
+\textbf{Rechtsbündig} & \textbf{Blocksatz} \tabularnewline\midrule
+a & b & c & Dieser Text wird im Blocksatz gesetzt\tabularnewline
+aa & bb & cc & Auch Zeilenumbrüche sind vorhanden\tabularnewline
+aaaa & bbbb & cccc & Worttrennungsmus\-terkontrolle\tabularnewline
+aaa & bbb & ccc & Worttrennungsmusterkontrolle
+\tabularnewline\bottomrule
+\end{tabu}
+\end{Hint*}
+\endgroup
+%
+Das Beispiel zeigt auch gleich das momentan meiner Meinung nach größte Problem
+des Paketes: Bei mehrzeiligen Zellen fehlt vertikale Zwischenraum zur nächsten
+Tabellenzeile. Nun besteht entweder die Möglichkeit, bei jeder Angabe einer
+Spalte im Tabellenkopf, welche eine \Macro{parbox} verwendet, mit dem Ausdruck
+\PValue{>\PParameter{\Macro{strut}}} die fehlenden Unterlänge auszugleichen
+oder es wird abermals ein entsprechender Spaltentyp definiert. Das ist für
+die \PValue{X}"~Spalten der Umgebung \Environment{tabu}(\Package{tabu}) etwas
+schwieriger, da \Macro{newcolumntype}(\Package{array}) normalerweise die
+Definition eines optionalen Argumentes nicht vorgesehen ist. Mit ein wenig
+Trickserei ist das dennoch möglich:
+%
+\begin{Trunk+}
+\subsubsection{Eine gleitende tabu-Tabelle}
+In \autoref{tab:tabu} ist eine weitere Tabelle mit variabler Breite der
+Spalten und festgelegter Gesamtbreite zu sehen, welche in der Umgebung
+\texttt{tabu} gesetzt wurde. Auch für diese wird zuerst ein neuer
+Spaltentyp definiert, der die Unzulänglichkeiten der Umgebung reduziert.
+Mit \texttt{\textbackslash ttabbox} aus dem Paket \texttt{floatrow} wird
+die Beschriftung auf die Breite der Tabelle begrenzt.
+
+\end{Trunk+}
+\CodeHook{\renewcommand*{\newcolumntype}[2]{}}
+\begin{Trunk*}
+\makeatletter
+\newcolumntype{Z}{}
+\renewcommand*{\NC@rewrite@Z}[1][]{%
+ \NC@find>{\hspace{0pt}}X[#1]<{\@finalstrut\@arstrutbox}%
+}
+\makeatother
+
+\end{Trunk*}
+%
+Anschließend kann der \PValue{Z}"~Spaltentyp äquivalent zu \PValue{X} genutzt
+werden. Zu beachten ist dabei insbesondere die Möglichkeit, die Spalten in
+ihrer resultierenden Breite sehr einfach zueinander gewichten zu können~-- im
+Gegensatz zur Umgebung \Environment*{tabularx}, wo dieses Unterfangen etwas
+schwieriger ist. Das Ergebnis ist in \autoref{tab:tabu} zu sehen. Zu beachten
+ist die Verwendung von \Macro{ttabbox}(\Package{floatrow}) aus dem Paket
+\Package{floatrow}, um die Beschriftung an die Breite der Tabelle anzupassen.
+Genaueres dazu in \autoref{sec:floatlayout}.
+%
+\begin{Trunk}
+\begin{table}
+\ttabbox{%
+ \begin{tabu} to .8\textwidth {@{}Z[3,l]Z[3,c]Z[3,r]Z[2,j]@{}}
+ \toprule
+ \textbf{Linksbündig} & \textbf{Zentriert} &
+ \textbf{Rechtsbündig} & \textbf{Blocksatz} \tabularnewline\midrule
+ Ein linksbündiger Blindtext zur Demonstration einer Z[l]"~Spalte &
+ Ein zentrierter Blindtext zur Demonstration einer Z[c]"~Spalte &
+ Ein rechtsbündiger Blindtext zur Demonstration einer Z[r]"~Spalte &
+ Ein Blindtext im Blocksatz innerhalb einer Z"~Spalte
+ \tabularnewline\bottomrule
+ \end{tabu}%
+}{%
+ \caption[Eine \texttt{tabu}"=Tabelle]{%
+ Eine \texttt{tabu}"=Tabelle in Verbindung mit dem Befehl
+ \texttt{\textbackslash ttabbox}, welcher vom Paket \texttt{floatrow}
+ für Beschriftungen in Objektbreite bereitgestellt wird%
+ }%
+ \label{tab:tabu}%
+}
+\end{table}
+
+\end{Trunk}
+\InputCode
+
+
+
+\section{Querverweise}
+\label{sec:references}%
+%
+Damit alle möglichen Querverweise in einem PDF"~Dokument automatisch verlinkt
+werden, sollte das Paket \Package{hyperref} geladen werden. Um die erzeugten
+Links verträglich aussehen zu lassen, werden die beiden Paketoptionen
+\Option{colorlinks}(\Package{hyperref}) sowie \Option*{linkcolor=blue}
+verwendet. Da \Package{hyperref} allerhand Veränderungen an vielen
+Standardbefehlen vornimmt, sollte dieses als letztes in der Präambel
+eingebunden werden. Nur Pakete, bei denen in der Dokumentation explizit darauf
+hingewiesen wird, dass diese nach \Package{hyperref} zu laden sind, sollten
+auch danach folgen. Eines dieser wenigen Pakete ist das in diesem Tutorial
+verwendete \Package{glossaries}.
+%
+\begin{Hint}
+\usepackage[colorlinks,linkcolor=blue]{hyperref}
+
+\end{Hint}
+%
+Um auf ein bestimmtes Objekt wie beispielsweise eine Tabelle, eine Abbildung
+oder einen bestimmten Anschnitt im Dokument referenzieren zu können, muss mit
+\Macro{label}[\Parameter{label}] ein Anker für selbiges an der entsprechenden
+Stelle gesetzt werden. Bei Überschriften sollte dies direkt nach der Nutzung
+des Gliederungsbefehls%
+\footnote{%
+ \Macro{chapter}(\Package{koma-script}),
+ \Macro{section}(\Package{koma-script}) etc.%
+}
+erfolgen. Für Abbildungen, Tabellen oder andere Objekte in Gleitumgebungen muss
+der Anker unmittelbar nach der Verwendung von
+\Macro{caption}(\Package{koma-script},\Package{caption}) respektive
+\Macro{captionof}(\Package{koma-script}) erstellt werden. Um nun auf diesen
+Anker zu referenzieren, sollte nicht \Macro{ref} sondern
+\Macro{autoref}(\Package{hyperref}) im Fließtext genutzt werden. Letztgenannter
+Befehl erzeugt nicht nur einen Link mit der dazugehörigen Nummerierung sondern
+stellt dieser die Bezeichnung des referenzierten Objektes%
+\footnote{\enquote{Abbildung}, \enquote{Tabelle}, \dots}
+voran.
+
+Mit dem Befehl \Macro{pageref} lässt sich auf die Seite eines Ankers verweisen.
+Das Paket \Package{varioref} kann dabei unterscheiden, ob der Anker sich auf
+der aktuellen Seite, auf einer Seite direkt davor beziehungsweise danach oder
+auf einer entfernteren Seite befindet und dementsprechend einen Hinweis darauf
+ausgeben. Hierfür werden die Befehle \Macro{vref}(\Package{varioref}) sowie
+\Macro{vpageref}(\Package{varioref}) zur Verfügung gestellt. Das Paket
+\Package{cleveref} vereint die Vorzüge von \Macro{autoref}(\Package{hyperref})
+in Verbindung mit \Macro{vref}(\Package{varioref}) durch den Befehl
+\Macro{cref}(\Package{cleverref}).
+
+
+
+\section{Zitate}
+Für das wörtliche Zitieren kann das Paket \Package{csquotes} verwendet werden.
+Dieses stellt den Befehl \Macro{enquote}(\Package{csquotes}) bereit, der die
+kennzeichnenden Anführungszeichen automatisch in Abhängigkeit der verwendeten
+Dokumentsprache setzt.
+%
+\begin{Hint}
+\usepackage{csquotes}
+\end{Hint}
+%
+Da für die unterschiedlichen Fachdisziplinen teils sehr unterschiedliche
+Zitierrichtlinien existieren, kann hier keine allgemeingültige Empfehlung zu
+Stilfragen gegeben werden. Zu beachten ist auf jeden Fall, dass zu wörtlichen
+Zitaten eine Quellenangabe erfolgen \emph{muss}. Dabei sollte darauf geachtet
+werden, dass nicht nur die Quelle selbst sondern zumindest auch die Seitenzahl
+des Zitats angegeben wird.
+%
+\begin{refsection}[\jobname-temp.bib]
+\begin{Trunk+}
+\section{Zitate}
+Bei der Verwendung von wörtlichen Zitaten sollten diese als solche
+gekennzeichnet werden.
+\end{Trunk+}
+\begin{Trunk*}
+\enquote{Dies ist ein zugegebenermaßen nicht sehr sinnvolles Zitat.}
+\cite[58]{hanisch14}
+\end{Trunk*}
+\begin{Trunk+}
+Für eine möglichst gut nachvollziehbare Referenz sollte nicht nur
+das Werk selber sondern zumindest die Seitenzahl und gegebenenfalls
+der Absatz der originalen Textstelle angegeben werden.
+\end{Trunk+}
+%
+Längere Zitate sollten abgesetzt vom Fließtext ausgegeben werden. Hierfür
+bieten sowohl die Standard"~ als auch die \KOMAScript-Klassen standardmäßig
+die Umgebungen \Environment{quote}(\Package{koma-script}) und
+\Environment{quotation}(\Package{koma-script}) an. Allerdings verwenden beide
+fest eingestellte Absatzauszeichnungen. Sollen jedoch die mit der Option
+\Option{parskip}(\Package{koma-script}) vorgegebenen Einstellungen für Absätze
+beachtet werden, so bietet sich das Paket \Package{quoting} an, welches die
+gleichnamige Umgebung \Environment{quoting}(\Package{quoting}) definiert und
+die Absätze wie im restlichen Dokument auszeichnet.
+%
+\begin{Preamble}
+\usepackage{quoting}
+
+\end{Preamble}
+%
+\begin{Trunk*}
+\begin{quoting}
+\enquote{%
+ Dies ist ein noch sinnloseres Zitat. Allerdings wird zumindest die
+ Wirkung der Umgebung \texttt{quoting} bei der Absatzauszeichnung
+ deutlich.
+
+ Wie zu sehen ist, wird der zweite Absatz~-- wie jeder weitere~--
+ aufgrund der Option \texttt{parskip=false} eingezogen.
+}
+\cite[sinngemäß nach][\pno{} 12, zweiter Absatz]{hanisch14}
+\end{quoting}
+\end{Trunk*}
+\begin{Trunk+}
+Ebenfalls sollten sinngemäße Zitate mit einer möglichst genauen Referenz
+angegeben werden. Dies kann im Laufe der Arbeit auch für einen selbst von
+Vorteil sein, wenn beispielsweise die originale Textpassage noch einmal
+analysiert werden soll.
+
+\end{Trunk+}
+\begin{quoting}[rightmargin=0pt]
+\makeatletter
+\let\markboth\@gobbletwo
+\let\markright\@gobble
+\makeatother
+\printbibliography
+\end{quoting}
+\end{refsection}
+
+
+
+\section{Worttrennungen}
+\label{sec:hyphenation}%
+%
+Bei der Verwendung von \hologo{LaTeXe} gibt es ab und an das Problem, dass
+bestimmte Wörter am Zeilenende falsch getrennt werden. Dies hat historische
+Gründe. Als \hologo{TeX} in den 1980er"~Jahren entwickelt wurde, war es
+aufgrund der zu dieser Zeit zur Verfügung stehenden Speichergrößen schier
+unmöglich, die Worttrennungen mit einem Wörterbuchansatz umzusetzen.
+Stattdessen wurde~-- um den benötigten Speicherbedarf möglichst gering zu
+halten~-- ein Algorithmus entworfen, der mögliche Trennstellen in einem Wort
+mit einer Mustererkennung ermittelt. Die verwendeten Muster basieren jedoch
+auf der englischen Sprache, weshalb in nicht"~englischsprachigen Texten auch
+heute noch teilweise falsche Trennstellen gefunden werden.
+
+In \autoref{sec:introduction} wurde bereits auf das Paket
+\Package{hyphsubst} hingewiesen, welches dieses Manko~-- aufgrund der nicht
+mehr so stark gegebenen Restriktionen bezüglich des Speicherbedarfes~-- mit
+einem Wörterbuch behebt. Dieses Paket muss für \Engine{pdfLaTeX} vom Anwender
+eingebunden werden, \Engine{LuaLaTeX} und \Engine{XeLaTeX} verwenden die
+Trennmuster~-- ein geladenes Sprachpaket wie \Package{polyglossia} oder
+\Package{babel} vorausgesetzt~-- automatisch. Damit auch Wörter mit Umlauten
+richtig getrennt werden, ist zudem das Paket \Package{fontenc} mit der
+\PValue{T1}"~Schriftkodierung respektive \Package{fontspec} notwendig. Der
+Beginn einer Dokumentpräambel könnte folgendermaßen aussehen:
+%
+\begin{Hint}
+\documentclass[ngerman,§\PName{Klassenoptionen}§]§\Parameter{Dokumentklasse}§
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\end{Hint}
+%
+Die Option \Option{ngerman}(\Package{hyphsubst}) lädt dabei die Trennmuster für
+die neue deutsche Rechtschreibung, wobei der Wert \PValue{ngerman-x-latest} die
+neuesten aller verfügbaren Trennmuster lädt. Für die alte Orthografie ist
+stattdessen die Option \Option{german}(\Package{hyphsubst}) mit dem Wert
+\PValue{german-x-lastest} zu verwenden.
+
+
+\subsection{Einmalige und globale Worttrennungskorrektur}
+Sollte es dennoch passieren, dass ein Wort nicht korrekt getrennt wird, lässt
+sich dies manuell korrigieren. Dafür stellt das Paket \Package{babel} mehrere
+Kurzbefehle zur Verfügung. Mit dem Makro \Macro{hyphenation} lassen sich für
+ein bestimmtes Wort außerdem alle potenziellen Trennstellen angeben. Zum Thema
+\tudhyperref{sec:tips:hyphenation}{Worttrennungen in deutschsprachigen Texten}
+ist im \TUDScript-Handbuch unter dem Kapitel Tipps~\&~Tricks mehr zu finden.
+Dort wird auch erläutert, wie das Problem der alleinigen Trennung von Wörtern
+mit Bindestrich an selbigem umgangen werden kann.
+
+
+\subsection{Worttrennung im Flattersatz}
+Normalerweise ist bei \hologo{LaTeXe} die Worttrennung für den Flattersatz%
+\footnote{\Macro{raggedright}, \Macro{raggedleft}, \Macro{centering}}
+deaktiviert. Mit dem Paket \Package{ragged2e} kann diese aktiviert werden. Nach
+dem Laden stehen die Befehle \Macro{Centering}(\Package{ragged2e}),
+\Macro{RaggedLeft}(\Package{ragged2e}) sowie
+\Macro{RaggedRight}(\Package{ragged2e}) für den Anwender zur Verfügung, um
+Worttrennungen im Flattersatz zu verwenden. Die Option
+\Option{newcommands}(\Package{ragged2e}) überschreibt die originalen Befehle
+\Macro{centering}, \Macro{raggedleft} und \Macro{raggedright} mit den
+korrelierten Befehlen aus dem Paket. Genaueres dazu ist der Dokumentation des
+Paketes zu entnehmen.
+
+
+
+\section{Mikrotypografische Feinheiten}
+Unter Mikrotypografie oder Detailtypografie wird die Gestaltung folgender
+Feinheiten des Schriftsatzes verstanden:
+\begin{itemize}[noitemsep]
+\item korrekte Anwendung der Satzzeichen
+\item Schriftart, Kapitälchen und Ligaturen
+\item Wortabstände sowie Laufweite (Buchstaben- und Zeichenabstände)
+\item optischer Randausgleich
+\end{itemize}
+
+\noindent Die letzten beiden Punkte werden sensationell gut durch das Paket
+\Package{microtype} bearbeitet. Dieses muss lediglich in der Präambel geladen
+werden, wobei es nicht mit der klassischen \hologo{TeX}"~Engine, wohl jedoch
+mit \Engine{pdfTeX} als auch \Engine{LuaTeX} sowie \Engine{XeTeX} funktioniert.
+%
+\begin{Preamble}
+\usepackage[babel]{microtype}
+
+\end{Preamble}
+%
+Die Option \Option{babel}(\Package{microtype}) ist nur notwendig, wenn einzelne
+Textpassagen oder das gesamte Dokument in Englisch oder Französisch verfasst
+werden und hierfür die genutzte Sprache mit den entsprechenden Möglichkeiten
+von \Package{babel} eingestellt wird.
+
+Das korrekte Anwenden von Satzzeichen wird für deutschsprachige Texte bereits
+in mehreren Artikeln \cite{neubauer1996,neubauer1997,struckmann2007,bier2009}
+sehr gut erläutert, weshalb ein Hinweis auf diese Arbeiten für weitergehende
+Informationen zu dieser Thematik absolut ausreichend ist. Nachfolgend werden
+Tipps gegeben sowie einige \hologo{LaTeXe}"=Pakete vorgestellt, die bei der
+Umsetzung der in den genannten Artikeln erläuterten Empfehlungen helfen.
+
+
+\subsection{Abkürzungen}
+In \cite{struckmann2007} wird gleich zu Beginn darauf hingewiesen, wie häufig
+verwendete Abkürzungen sehr einfach im Dokument verwendet werden können und
+dabei typografisch richtig gesetzt werden. Beispielsweise gelingt dies für die
+Abkürzung \enquote{zum~Beispiel~(z.\,B.)} mit dieser Definition:
+%
+\begin{Hint}
+\newcommand{\zB}{\mbox{z.\,B.}\xspace}
+\end{Hint}
+%
+Wenn ohnehin das Paket \Package{glossaries} für Akronyme verwendet wird, kann
+alternativ dazu auch dessen Funktionalität genutzt werden. Nach dem Einbinden
+muss in der Präambel lediglich Folgendes eingefügt werden:
+%
+\begin{Hint}
+ \newignoredglossary{abbreviation}
+ \newcommand*{\newabbreviation}[4][]{%
+ \newacronym[type=abbreviation,#1]{#2}{\mbox{#3\xspace}}{#4}%
+ }%
+\end{Hint}
+%
+Mit \Macro{newignoredglossary}(\Package{glossaries}) wird dabei ein Glossar
+erstellt, welche bei der Ausgabe aller Glossare mit
+\Macro{printglossaries}(\Package{glossaries}) ignoriert wird. Im Dokument kann
+die gewünschte Abkürzung mit
+%
+\begin{Hint*}
+\newabbreviation{zB}{z.\,B.}{zum Beispiel}
+\end{Hint*}
+%
+definiert und über die gewohnten Befehlen aus \Package{glossaries} verwendet
+werden.
+%
+\begin{Hint*}
+Die Ausgabe der soeben definierten Abkürzung \enquote{\acrshort{zB}}
+erfolgt mit dem Befehl \texttt{\textbackslash acrshort}. Wurde das
+Paket \texttt{glossaries} mit der Option \texttt{shortcut} geladen,
+kann auch das Makro \texttt{\textbackslash acs} genutzt werden.
+\end{Hint*}
+
+
+\subsection{Listen}
+\label{sec:lists}%
+%
+Für Auflistungen aller Art bietet \hologo{LaTeX} die drei Standardumgebungen
+\Environment{itemize}(\Package{koma-script},\Package{enumitem}),
+\Environment{enumerate}(\Package{koma-script},\Package{enumitem}) und
+\Environment{description}(\Package{koma-script},\Package{enumitem}). Das
+häufigste Anliegen bei der Verwendung dieser Umgebungen ist das Reduzieren
+der Abstände zwischen den einzelnen, mit
+\Macro{item}(\Package{koma-script},\Package{enumitem}) gesetzten Punkten,
+welche sehr häufig als zu groß empfunden werden. Eine Aufzählung erscheint ohne
+Anpassungen wie folgt:
+%
+\CodePreamble{Aufzählung mit vertikalen Standardabständen}
+\begin{Hint*}
+\begin{itemize}
+\item erster Punkt
+\item zweiter Punkt
+\item dritter Punkt
+\end{itemize}
+\end{Hint*}
+%
+Dabei wirken die Abstände zwischen den Punkten tatsächlich etwas
+überdimensioniert. Mit \Package{enumitem} können alle Listenumgebungen an die
+individuellen Bedürfnisse angepasst werden.
+%
+\begin{Preamble}
+\usepackage{enumitem}
+\end{Preamble}
+%
+Um diese ungewollten Abstände zwischen den Listenpunkten zu entfernen, kann der
+Schlüssel \Option{noitemsep}(\Package{enumitem}) verwendet werden. Mit dem
+Befehl \Macro{setlist}(\Package{enumitem}) werden~-- ohne zusätzliche Angaben
+im optionalen Argument~-- alle Umgebungen für Aufzählungen global geändert.
+Hier soll dies lediglich für die Umgebung \Environment*{itemize} geschehen:
+\begin{Preamble*}
+\setlist[itemize]{noitemsep}
+
+\end{Preamble*}
+\CodePreamble{Aufzählung ohne vertikale Abstände}
+\begin{Hint*}
+\begin{itemize}
+\item erster Punkt
+\item zweiter Punkt
+\item dritter Punkt
+\end{itemize}
+
+\end{Hint*}
+%
+Alternativ zur globalen Änderung einer speziellen oder aller Aufzählungslisten
+kann der Schlüssel \PValue{noitemsep} auch nur gezielt an einzelne Umgebung
+über das optionale Argument weitergereicht werden
+(\Macro*{begin}[\PParameter{itemize}\POParameter{noitemsep}]).
+
+Natürlich erlaubt das Paket noch weitergehende Einstellungen für die Umgebungen
+\Environment{itemize}(\Package{koma-script},\Package{enumitem}),
+\Environment{enumerate}(\Package{koma-script},\Package{enumitem}) und
+\Environment{description}(\Package{koma-script},\Package{enumitem}).
+Zusätzlich können diese für eigene Aufzählungsumgebungen geklont und den
+eigenen Bedürfnissen angepasst werden. Genaueres hierzu ist der Dokumentation
+des Paketes \Package{enumitem} entnehmen.
+
+
+\subsection{Ligaturen}
+Die meisten \hologo{LaTeX}"=Schriftfamilien enthalten Ligaturen, die für einen
+typografisch sauberen Satz bei zusammengesetzten Wörtern, wie sie gerade im
+Deutschen häufig vorkommen, aufgetrennt werden müssten. Mit der Anwendung
+\Application{DeLig}<delig> kann dies automatisiert geschehen. Wird
+\Engine{LuaLaTeX} als Textsatzsystem genutzt, kann alternativ das Paket
+\Package{selnolig} verwendet werden.
+
+
+\subsection{Auslassungspunkte}
+Das typografisch richtige Setzen von Auslassungspunkten mit den Befehlen
+\Macro{dots} respektive \Macro{textellipsis} wird im Handbuch unter
+\tudhyperref{sec:tips:dots}{Das Setzen von Auslassungspunkten} genauer
+beschrieben, weshalb hier nur kurz darauf eingegangen wird. Es wird das Paket
+\Package{ellipsis} benötigt.
+%
+\begin{Preamble}
+\usepackage{ellipsis}
+\end{Preamble}
+%
+Für deutschsprachige Texte sollten außerdem noch folgendes ausgeführt werden:
+%
+\begin{Preamble}
+\let\ellipsispunctuation\relax
+
+\end{Preamble}
+
+
+\subsection{Mathematiksatz}
+Von \hologo{LaTeXe} werden einige Umgebungen für das Setzen mathematischer
+Formeln und Ausdrücke bereitgestellt, welche meist jedoch nicht \emph{alle}
+Anforderungen eines Nutzers an den Mathematiksatz erfüllen können. Das Paket
+\Package{amsmath} bietet deshalb eine Reihe weiterführender Umgebungen für das
+Setzen von einzeiligen und mehrzeiligen sowie ausgerichteter Formeln zur
+Verfügung. Auf eine Einführung in das Paket wird~-- aufgrund der bereits in
+großer Zahl vorhandenen Einführungen~-- in diesem Tutorial verzichtet. Außerdem
+stehen mit \Tutorial{mathtype} und \Tutorial{mathswap} zwei weitere Tutorials
+zur Verfügung, die sich explizit mit der Thematik eines guten mathematischen
+Satz beschäftigen.
+
+Das Paket \Package{amsmath} stellt für \hologo{LaTeXe} den De"~facto"~Standard
+für den mathematischen Satz dar. Allerdings wird es~-- insbesondere aus diesem
+Grund~-- sehr \enquote{vorsichtig} weiterentwickelt. Für das Setzen neuer
+Dokumente sollte deshalb das Paket \Package{mathtools} verwendet werden, das
+auf \Package{amsmath} basiert und dieses um zusätzliche Funktionalitäten
+ergänzt sowie Bugfixes bereithält.
+
+
+\subsection{Darstellung von mathematischen Brüchen}
+Für ansehnliche und insbesondere im Fließtext gut lesbare mathematische Brüche
+stellt das Paket \Package{xfrac} den Befehl \Macro{sfrac}(\Package{xfrac}) zur
+Verfügung.
+%
+\begin{Preamble}
+\usepackage{xfrac}
+
+\end{Preamble}
+
+
+\subsection{Einheiten}
+Mit dem Paket \Package{siunitx} lassen sich sowohl physikalische Einheiten als
+auch Zahlen typografisch korrekt setzen. Sollen die Funktionalitäten in einem
+deutschsprachigen Dokument problemlos nutzbar sein, so sind die Hinweise zum
+\tudhyperref{sec:tips:siunitx}{Setzen von Einheiten mit \Package{siunitx}} im
+\TUDScript-Handbuch zu beachten. Das Paket \Package{units} ist nicht ganz so
+mächtig wie \Package{siunitx}, kann allerdings als pragmatische Alternative
+gesehen und genutzt werden.
+
+
+\subsection{Datumsformatierung}
+Das Paket \Package{isodate} stellt \Macro{printdate}(\Package{isodate}) bereit.
+Dieser Befehl kann für die Formatierung von Datumsangaben verwendet werden.
+Wird das Paket mit einer der Dokumentklassen aus dem \TUDScript-Bundle geladen,
+wird der genannte Befehl automatisch für alle bereitgestellten Datumsfelder
+verwendet. Alternativ dazu kann das Paket \Package{datetime2} genutzt werden,
+dessen Befehl \Macro{DTMDate}(\Package{datetime2}) wird ebenfalls unterstützt.
+%
+\begin{Preamble}
+\usepackage{isodate}
+
+\end{Preamble}
+
+
+
+\section{Erstellen von Abbildungen}
+\label{sec:figures}%
+%
+Die einfachste Möglichkeit, in einer wissenschaftlichen Abhandlung Grafiken zu
+verwenden, ist sicherlich das Einbinden von externen Abbildungen mit dem Befehl
+\Macro{includegraphics}(\Package{graphicx}) aus dem Paket \Package{graphicx}.
+Allerdings ist für eine wissenschaftliche Arbeit in höchster Qualität meiner
+Meinung nach das bloße Einfügen einer gescannten oder heruntergeladenen Grafik
+unzureichend. Vielmehr sollte diese zum einen als skalierbare Vektorgrafik
+vorliegen, um sowohl die höchste Druckqualität als auch die
+Wiederverwendbarkeit sicherzustellen, und zum anderen in ihrer Gestaltung dem
+verwendeten Layout des verfassten Dokumentes entsprechen. Dies betrifft sowohl
+die eingesetzten Farben und Schriften als auch die Stärke der verwendeten
+Linien.
+
+Zum Zeichnen von Grafiken sind die freien Programme \Application{LaTeXDraw} und
+besonders \Application{Inkscape} empfehlenswert, da diese die Verwendung der
+Dokumentschriften innerhalb der erstellten Grafiken ermöglichen. Im Handbuch zu
+\TUDScript wird dies für \tudhyperref{sec:tips:svg}{\Application{Inkscape}}
+genauer erläutert. Eine andere Variante ist das \enquote{Programmieren} von
+Grafiken. Die zwei bekanntesten \hologo{LaTeX}"=Pakete sind \Package{tikz}<pgf>
+und \Package{pstricks}<pstricks-base>. Mit beiden wird folgend eine Abbildung
+exemplarisch erstellt, ohne dabei ins Detail zu gehen, da es~-- neben den
+umfangreichen Dokumentationen~-- zahlreiche Beispiele und Erläuterungen im
+Internet gibt.
+
+
+
+\subsection{Das Paket \Package{tikz}}
+Zur Verwendung von \Package{tikz}<pgf> ist nicht viel zu sagen. Einfach in der
+Dokumentpräambel einbinden und es kann losgehen. Für das nachfolgende Beispiel
+sind außerdem noch zwei weitere Programmbibliotheken für \Package{tikz}<pgf>
+notwendig.
+%
+\begin{Hint}
+\usepackage{tikz}
+\usetikzlibrary{chains}
+\usetikzlibrary{decorations.markings}
+\tikzset{on grid}
+\end{Hint}
+%
+Ein kurze Anmerkungen zur Skalierung der Grafiken möchte ich mir erlauben.
+Normalerweise verwendet \Package{tikz}<pgf> Koordinaten im Zentimeter"=Raster.
+Ich persönlich bevorzuge der relativierte Skalierung auf die Textbreite des
+Dokumentes, wobei eine Einheit genau \SI{1}{\percent} dieser entspricht. Das
+kann mit folgendem Quelltext erreicht werden:
+%
+\CodeHook{\renewcommand\newlength[1]{}}
+\begin{Hint*}
+\newlength{\tikzunit}
+\setlength{\tikzunit}{.01\textwidth}
+\tikzset{x=\tikzunit,y=\tikzunit}
+\end{Hint*}
+%
+Nachfolgend wird eine Grafik innerhalb einer Gleitumgebung exemplarisch
+erstellt. Das Ergebnis ist in \autoref{fig:tikz} zu sehen.
+
+\begin{Hint?}
+\begin{figure}
+\begin{tikzpicture}
+ \tikzstyle{inner box}=[%
+ text width=17\tikzunit,
+ align=center,
+ rectangle,
+ inner sep=.5\tikzunit,
+ minimum height=8\tikzunit,
+ font=\hspace{0pt},
+ draw
+ ]
+ \tikzstyle{inner label}=[align=center, font=\scriptsize]
+ \tikzstyle{inner box chain}=[every node/.style={on chain}]
+ \tikzstyle{inner box chain below}=[%
+ inner box chain, node distance=8\tikzunit,continue chain=going below
+ ]
+ \tikzstyle{inner box chain right}=[%
+ inner box chain,node distance=35\tikzunit,continue chain=going right
+ ]
+ \tikzstyle{inner box chain above}=[%
+ inner box chain,node distance=16\tikzunit,continue chain=going above
+ ]
+ \tikzstyle{pstarrow->}=[%
+ decoration={markings,
+ mark=at position 1 with {\arrow[xscale=1.5]{stealth}};
+ },
+ postaction={decorate},
+ shorten >=0.7pt
+ ]
+ \newcommand{\tikzparbox}[2][9]{%
+ \parbox{#1\tikzunit}{\centering\hspace{0pt}#2}%
+ }
+ \begin{scope}[start chain]
+ \begin{scope}[inner box chain below]
+ \node(NE)[inner box]{Navigations\-ebene};
+ \node(NB)[inner label]{gewählte Fahrtroute\\ zeitlicher Ablauf};
+ \node(BE)[inner box]{{Bahnführungs\-ebene}};
+ \node(BS)[inner label]{%
+ gewählte Führungsgrößen:\\ Sollspur, Sollgeschwindigkeit%
+ };
+ \node(SE)[inner box]{Stabilisierungs\-ebene};
+ \end{scope}
+ \begin{scope}[inner box chain right]
+ \node(LQ)[inner box]{Längs- und Querdynamik};
+ \node(FO)[inner box]{Fahrbahn\-oberfläche};
+ \end{scope}
+ \begin{scope}[inner box chain above]
+ \node(FR)[inner box]{Fahrraum\\ \smallskip{\scriptsize Straße
+ und\\ \vspace{-1.5ex}Verkehrssituation}};
+ \node(SN)[inner box]{Straßennetz};
+ \end{scope}
+ \end{scope}
+ \begin{scope}[inner label,minimum size=0pt]
+ \draw [pstarrow->] (FO) -| ++(13.5,-12) to
+ node [above]{Istspur, Istgeschwindigkeit} ++(-97,0) |- (SE);
+ \draw [pstarrow->] (FR) -| ++(14 ,-32) to
+ node [above]{Bereich sicherer Führungsgrößen} ++(-98,0) |- (BE);
+ \draw [pstarrow->] (SN) -| ++(14.5 ,-52) to
+ node [above]{mögliche Fahrtroute} ++(-99,0) |- (NE);
+ \end{scope}
+ \begin{scope}[inner label]
+ \draw (NE) to (NB);
+ \draw [pstarrow->] (NB) to (BE);
+ \draw (BE) to (BS);
+ \draw [pstarrow->] (BS) to (SE);
+ \draw [pstarrow->] (SE) to
+ node[above] {\tikzparbox{Stell\-größen}}
+ node[below] {\tikzparbox{Lenken Gasgeben Bremsen}}
+ (LQ);
+ \draw [pstarrow->] (LQ) to
+ node[above]{\tikzparbox{Regel\-größen}}
+ node[below]{\tikzparbox{Fahrzeugbewegung}}
+ (FO);
+ \draw [pstarrow->] (LQ)+(24,0) |- (FR);
+ \draw [pstarrow->] (LQ)+(24,0) |- (SN);
+ \end{scope}
+ \begin{scope}[very thick,rounded corners=5\tikzunit]
+ \draw (-12.5,-40) rectangle (12.5,14);
+ \draw ( 22.5,-40) rectangle (47.5,-18);
+ \draw ( 57.5,-40) rectangle (82.5,14);
+ \end{scope}
+ \begin{scope}[font=\bfseries]
+ \node at (0,9) {Fahrer};
+ \node at (35,-23) {Fahrzeug};
+ \node at (70,9) {Umwelt};
+ \end{scope}
+\end{tikzpicture}
+\caption{Eine mit TikZ erstellte Grafik}\label{fig:tikz}
+\end{figure}
+\end{Hint?}
+
+
+
+\subsection{Das Paket \Package{pstricks}}
+Die zuvor mit \Package{tikz}<pgf> erstellte Grafik wird nachfolgend mit dem
+Paket \Package{pstricks} erstellt. Mit diesem lassen sich PostScript"=Grafiken
+erstellen. Ähnlich wie bei \Package{tikz}<pgf> gibt es ein Kernpaket und
+zusätzliche Ergänzungen. Diese werden jedoch nicht als Programmbibliotheken
+sondern ganz normal als \hologo{LaTeX}"=Pakete eingebunden.
+%
+\begin{Hint}
+\usepackage{pstricks,pst-node}
+\end{Hint}
+%
+Die Verwendung von PostScript hat zahlreiche Vorteile, macht die direkte
+Nutzung von \Engine{pdfLaTeX} etwas schwierig. Das Paket \Package{auto-pst-pdf}
+schafft hier jedoch Abhilfe. Wird das Textsatzsystem \Engine{pdfLaTeX} über die
+zusätzliche Option \Option{-{}-shell-escape}(\Engine{pdfLaTeX}) beziehungsweise
+\Option{-{}-enable-write18}(\Engine{pdfLaTeX}) mit erweiterten Schreibrechten
+aufgerufen, so werden die Abbildungen automatisch im PDF"~Format erzeugt und
+eingebunden.
+%
+\begin{Hint}
+\usepackage{auto-pst-pdf}
+\end{Hint}
+%
+Bei einigen Pakete kommt es in der Kombination mit \Package{auto-pst-pdf} zu
+kleineren Problemen, die sich jedoch meist relativ leicht beheben lassen. Im
+Handbuch wird die \tudhyperref{sec:tips:auto-pst-pdf}{gleichzeitige Verwendung}
+von \Package{auto-pst-pdf} in Kombination mit den Paketen \Package{tikz}<pgf>,
+\Package{todonotes} sowie \Package{floatrow}~-- bei der Nutzung des Befehls
+\Macro{ffigbox}(\Package{floatrow})~-- erklärt. Diese Hinweise sollten Sie
+gegebenenfalls beachten.
+
+Ähnlich wie zuvor bei der \Package{tikz}<pgf>"~Grafik wird die nachfolgende
+\Package{pstricks}"=Abbildung auf die Textbreite des Dokumentes skaliert, wobei
+eine Einheit genau \SI{1}{\percent} dieser entspricht. Außerdem werden noch ein
+paar weitere Einstellungen gemacht. Dies geschieht mit:
+%
+\begin{Hint*}
+\psset{%
+ unit=.01\textwidth,%
+ cornersize=absolute,%
+ labelsep=.8ex,%
+ linewidth=.4pt,%
+ arrowscale=1.5,%
+}
+\end{Hint*}
+%
+Die innerhalb einer Gleitumgebung erzeugte \Package{pstricks}"=Grafik ist in
+\autoref{fig:pstricks} dargestellt.
+%
+\begin{Hint?}
+\begin{figure}
+\begin{pspicture}(0,-2)(100,64)
+\newcommand{\fnodetext}{}
+\def\fnodetext(#1)#2#3{%
+ \fnode[framesize=18 8](#1){#2}%
+ \rput(#1){\parbox{17\psunit}{\centering\hspace{0pt}#3}}%
+}
+\newcommand{\scriptbox}[2][24]{%
+ \parbox{#1\psunit}{\scriptsize\centering\hspace{0pt}#2}%
+}
+\rput(15,10){%
+ \rput(0,49){\textbf{Fahrer}}
+ \fnodetext(0,40){NE}{Navigations\-ebene}
+ \fnodetext(0,24){BE}{Bahnführungs\-ebene}
+ \fnodetext(0,08){SE}{Stabilisierungs\-ebene}
+ \ncline{->}{NE}{BE}
+ \ncput*{\scriptbox{gewählte Fahrtroute\\ zeitlicher Ablauf}}
+ \ncline{->}{BE}{SE}
+ \ncput*{%
+ \scriptbox{gewählte Führungsgrößen:\\ Sollspur,~Sollgeschwindigkeit}%
+ }
+ \psframe[dimen=middle,linewidth=1.2pt,linearc=5](-12.5,0)(12.5,54)
+}
+\rput(50,10){%
+ \rput(0,17){\textbf{Fahrzeug}}
+ \fnodetext(0,8){FZ}{Längs- und\\ Querdynamik}
+ \psframe[dimen=middle,linewidth=1.2pt,linearc=5](-12.5,0)(12.5,22)
+}
+\rput(85,10){%
+ \rput(0,49){\textbf{Umwelt}}
+ \fnodetext(0,40){SN}{Straßennetz}
+ \fnodetext(0,24){FR}{%
+ Fahrraum\\ \smallskip\scriptsize{Straße und Verkehrssituation}%
+ }
+ \fnodetext(0,08){FO}{Fahrbahn\-oberfläche}
+ \psframe[dimen=middle,linewidth=1.2pt,linearc=5](-12.5,0)(12.5,54)
+}
+
+\ncline{->}{SE}{FZ}
+\naput{\scriptbox[9]{Stell\-größen}}
+\nbput{\scriptbox[9]{Lenken Gasgeben Bremsen}}
+\ncline{->}{FZ}{FO}
+\naput{\scriptbox[9]{Regel\-größen}}
+\nbput{\scriptbox[9]{Fahrzeugbewegung}}
+
+\psset{armA=15,armB=0,angleA=0,angleB=180}
+\ncangles{->}{FZ}{FR}
+\ncangles{->}{FZ}{SN}
+
+\psset{angleA=180,angleB=0}
+\ncloop[loopsize=12,arm=4.5]{<-}{SE}{FO}
+\naput{\scriptbox{Istspur, Istgeschwindigkeit}}
+\ncloop[loopsize=32,arm=5]{<-}{BE}{FR}
+\naput{\scriptbox[30]{Bereich sicherer Führungsgrößen}}
+\ncloop[loopsize=52,arm=5.5]{<-}{NE}{SN}
+\naput{\scriptbox{mögliche Fahrtroute}}
+\end{pspicture}
+\caption{Eine mit pstricks erstellte Grafik}\label{fig:pstricks}
+\end{figure}
+\end{Hint?}
+
+
+\subsection{Auslagern von Grafiken in separate Dateien}
+Damit \enquote{programmierte} Grafiken zum einen das Dokument respektive dessen
+Struktur nicht unnötig unübersichtlich machen und zum anderen nur nach einer
+Änderung abermals kompiliert werden, um die Kompilierungsdauer möglichst gering
+zu halten, können diese in separate Dateien ausgelagert werden. Hierfür bieten
+sich die Pakete \Package{subfiles}'manual' und \Package{standalone}'manual' an.
+
+
+
+\section{Dokumentation von Quelltexten}
+Sollen in einer Dokument Quelltextauszüge beschrieben werden oder ganze
+Quelltextdateien eingebunden werden, so empfiehlt sich für dieses Vorhaben das
+Paket \Package{listings}. Neben der bloßen Einbindung der Quelltexte bietet es
+zusätzlich die Möglichkeit, die Syntax in Abhängigkeit der verwendeten
+Programmiersprache hervorzuheben. Zusätzlich lässt sich ein Verzeichnis mit
+allen eingebundenen sowie direkt im Dokument angegebenen Quelltextauszügen
+erstellen.
+%
+\begin{Hint}
+\usepackage{listings}
+\end{Hint}
+%
+Wird das Paket in einem Dokument mit UTF"~8"~Kodierung verwendet, muss dies dem
+Paket in der Präambel mitgeteilt werden:
+%
+\begin{Hint}
+\lstset{%
+ inputencoding=utf8,extendedchars=true,
+ literate=%
+ {ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
+ {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
+ {~}{{\textasciitilde}}1 {ß}{{\ss}}1
+}
+\end{Hint}
+%
+Nachdem nun die Grundeinstellungen erfolgt sind, kann ein eigener Stil für eine
+gewünschte Programmiersprache definiert werden. Im folgenden Beispiel wird dies
+für ein MATLAB"~Skript demonstriert. Als erstes wird mit dem Befehl
+\Macro{lstdefinestyle}(\Package{listings}) ein eigener \Package{listings}"~Stil
+erstellt:
+%
+\begin{Hint*}
+\lstdefinestyle{matlab}{%
+ language=Matlab,%
+ basicstyle=\ttfamily,%
+ commentstyle={\color{green!50!black}},
+ keywordstyle={\color{blue!75!black}},%
+ columns=flexible,keepspaces,%
+}
+\end{Hint*}
+%
+Dabei wird die verwendete Programmiersprache definiert sowie die Formatierung
+für die Quelltextauszüge festgelegt. Für weitere Einstellungsmöglichkeiten
+sollte die Dokumentation zum Paket zu Rate gezogen werden. Der so definierte
+Stil lässt sich anschließend folgendermaßen verwenden.
+%
+\begin{Hint}
+\begin{lstlisting}[style=matlab]
+§\dots§
+\end{lstlisting}
+\end{Hint}
+%
+Soll innerhalb eines Quelltextauszuges ein Abschnitt nicht ausgegeben sondern
+als \hologo{LaTeX}"~Code interpretiert und ausgeführt werden, lässt sich mit
+\Macro{lstset}[%
+ \PParameter{\PValue{escapechar=\PName{Zeichen}}}%
+](\Package{listings}) ein spezielles Escape-Zeichen definieren. Alle innerhalb
+einer \Package{listings}"=Umgebung zwischen zwei Escape-Zeichen eingefügten
+Angaben in der Form \PName{Zeichen}\PValue{\dots}\PName{Zeichen} werden als
+\hologo{LaTeX}"~Code gelesen und ausgeführt. Außerdem ist es mit dem Befehl
+\Macro{lstnewenvironment}(\Package{listings}) möglich, eine individuelle
+\Package{listings}"=Umgebung zu definieren.
+
+Das Einbinden und Darstellen von externen Quelldateien in ein Dokument ist über
+den Befehl
+\Macro{lstinputlisting}[\LParameter\Parameter{Dateiname}](\Package{listings})
+möglich, wobei dabei im optionalen Argument ebenfalls der definierte Stil
+angegeben werden sollte. Es folgt die Ausgabe eines kurzen Beispiels mit dem
+zuvor definierten Stil~\PValue{matlab}.
+%
+\begin{lstlisting}[style=matlab]
+function perfect = isperfect(test_value)
+ % This function checks to see if the given number is "perfect";
+ % a "perfect" number is an integer whose factors
+ % (excluding itself) add up to it.
+ %
+ % Example: 6 is a perfect number: 1 + 2 + 3 = 6 == 6
+ % 8 is not: 1 + 2 + 4 = 7 ~= 8
+ % 28 is a perfect number: 1 + 2 + 4 + 7 + 14 = 28 == 28
+ %
+ % Arguments:
+ % test_value (input) check to see if this value
+ % is perfect or not
+ % perfect (output) if yes, set this to 1
+ % if no, set this to 0
+ %
+ % this will keep track of the sum of all integer divisors
+ tempsum = 0;
+ % we check all possible divisors
+ for (divisor = 1 : test_value - 1)
+ div_result = test_value / divisor;
+ if (div_result == floor(div_result))
+ % this is an integer divisor, so add it to the sum
+ tempsum = tempsum + divisor;
+ end
+ end
+ % now, does the sum equal the test_value?
+ if (tempsum == test_value)
+ perfect = 1;
+ else
+ perfect = 0;
+ end
+end
+\end{lstlisting}
+
+
+
+
+\section{Und ganz zum Schluss \dots}
+Mit Sicherheit werden Sie im Laufe der Zeit auf die eine oder andere Frage zu
+\hologo{LaTeXe} stoßen, die in diesem Tutorial nicht behandelt wurde. Sollten
+Sie an diesen Punkt gelangen, so empfehle zunächst einen Blick in die Kapitel
+\tudhyperref{sec:packages}{Benötigte, unterstützte und empfehlenswerte Pakete}
+sowie \tudhyperref{sec:tips}{Praktische Tipps \& Tricks} im Handbuch zu
+\TUDScript. Sollte Ihre Frage trotzdem unbeantwortet bleiben, so wäre der
+Besuch eines \hologo{LaTeX}"=Forums der nächste Schritt. Für allgemeine
+Anfragen kann ich unter anderem folgende Foren empfehlen:
+%
+\begin{itemize}
+\item \hrfn{http://mrunix.de/forums/forumdisplay.php?38-LaTeX-Forum}{mrunix}
+\item \hrfn{http://golatex.de/}{golatex}
+\item \hrfn{http://tex.stackexchange.com/}{\hologo{LaTeX} Stack Exchange}
+\item \hrfn{http://www.latex-community.org/forum/}{\hologo{LaTeX} Community}
+\end{itemize}
+%
+Insbesondere alle \TUDScript betreffende Fragen sollten natürlich direkt im
+dazugehörigen \Forum gestellt werden.
+
+\begin{Trunk+}
+\printbibliography[heading=bibintoc]\label{sec:bibliography}%
+\end{Trunk+}
+\printbibliography[heading=bibintoc]
+
+\begin{Preamble+}
+\usepackage[colorlinks,linkcolor=blue]{hyperref}
+
+\end{Preamble+}
+
+\addsec{Index}
+Da das Tutorial etwas umfangreicher ist, wird für alle erläuterten Optionen,
+Umgebungen und Befehle ein Index erstellt. Bei Elementen, die weder \TUDScript
+noch \KOMAScript{} zuzuordnen sind, wird das dazugehörige Paket mit angeführt.
+\PrintIndex
+
+\FinishTutorial[%
+ Um das im kopierten Beispiel erstellte Literaturverzeichnis in das Dokument
+ einbinden zu können, bedarf es dem einmaligen Aufruf von \Application{biber}
+ frühestens nach dem ersten Durchlauf von \Engine{pdfLaTeX}. Dies erfolgt mit
+ dem Aufruf \Path{biber }\PName{Dateiname}. Für das Erzeugen von Abkürzungs-
+ und Symbolverzeichnis ist das Ausführen des Perl"=Skriptes
+ \Path{makeglossaries }\PName{Dateiname} ausreichend. Danach ist ein weiteres
+ mal die Verwendung von \Path{pdflatex }\PName{Dateiname} notwendig, um die
+ Verzeichnisse in das Dokument einzubinden. Gegebenenfalls ist für korrekte
+ Seitenangaben in Abkürzungs- und Symbolverzeichnis ein abermaliges Ausführen
+ des Skriptes notwendig.
+ \Attention{%
+ Nutzer von \Distribution{\hologo{MiKTeX}} müssen für die Verwendung des
+ Perl"~Skriptes \File{makeglossaries}(\Package{glossaries}) unter Umständen
+ einen separaten Perl"=Interpreter installieren. In \autoref{sec:glossaries}
+ ist dazu mehr zu finden.%
+ }%
+]
+\ListOfToDo
+\end{document}
diff --git a/macros/latex/contrib/tudscr/source/tudscr-area.dtx b/macros/latex/contrib/tudscr/source/tudscr-area.dtx
new file mode 100644
index 0000000000..818f3e0097
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/tudscr-area.dtx
@@ -0,0 +1,2317 @@
+% \CheckSum{2247}
+% \iffalse meta-comment
+%
+% TUD-Script -- Corporate Design of Technische Universität Dresden
+% ----------------------------------------------------------------------------
+%
+% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2019
+%
+% ----------------------------------------------------------------------------
+%
+% This work may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License, version 1.3c of the license. The latest
+% version of this license is in http://www.latex-project.org/lppl.txt and
+% version 1.3c or later is part of all distributions of LaTeX 2005/12/01
+% or later and of this work. This work has the LPPL maintenance status
+% "author-maintained". The current maintainer and author of this work
+% is Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+% in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
+% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+% Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
+% oder später und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status
+% "author-maintained", wird somit allein durch den Autor verwaltet. Der
+% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: tudscr-area.dtx
+%<*dtx>
+% \fi%
+%
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{tudscr-area.dtx}[2019/07/19 v2.06c TUD-Script\space%
+ (type or page area)%
+]
+%
+% \iffalse
+\documentclass[english,ngerman,xindy]{tudscrdoc}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{tudscrfonts}
+\KOMAoptions{parskip=half-}
+\usepackage{bookmark}
+\usepackage[babel]{microtype}
+
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tudscr-area.dtx}
+\title{\file{\filename}}
+\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
+\date{\fileversion\nobreakspace(\filedate)}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.02}{2014/06/23}{Paket \pkg{titlepage} nicht weiter unterstützt}^^A
+% \changes{v2.02}{2014/07/08}{\cs{FamilyKeyState} wird von Optionen genutzt}^^A
+% \changes{v2.05}{2015/07/06}{Seitenstil für Poster}^^A
+% \changes{v2.05}{2016/04/03}{Unterstützung von Schnittmarken mit den Paketen
+% \pkg{geometry} und \pkg{crop}}^^A
+%
+% \section{Der Satzspiegel für \TUDScript}
+%
+% Das \CD verlangt (eigentlich) einen fest vorgegebenen Satzspiegel. Für das
+% Setzen längerer wissenschaftlicher Abhandlungen ist dieser jedoch alles
+% andere als glücklich gewählt. Insbesondere für den doppelseitigen Satz ist
+% das Standardlayout nicht gut nutzbar. Für die \TUDScript-Klassen wird
+% deshalb die Abweichung vom sonst fest vorgegebenen Satzspiegel ermöglicht.
+% \ToDo{%
+% Unterstützung von PDF-Boxen für die Druckausgabe
+%^^A\url{https://groups.google.com/forum/#!topic/de.comp.text.tex/1gouJ0Zov6o}
+%^^A\url{http://tex.stackexchange.com/questions/248902/}
+%^^A\url{https://wiki.scribus.net/canvas/PDF_Boxes_:_mediabox,_cropbox,_bleedbox,_trimbox,_artbox}
+%^^A\url{http://www.prepressure.com/pdf/basics/page-boxes}
+% }[v2.07]
+%
+% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%
+% \iffalse
+%<*class&body>
+% \fi
+%
+% \subsection{Kompatibilität der Satzspiegeleinstellungen mit weiteren Paketen}
+% \subsubsection{Unterstützung von Schnittmarken mit dem Paket \pkg{crop}}
+%
+% Insbesondere für das Erstelen von Postern sollen häufig Schnittmarken auf dem
+% ausgegebenen Papierbogen erscheinen. Dies lässt sich entweder mit den Mitteln
+% des Paketes \pkg{geometry} oder aber durch das Paket \pkg{crop} realisieren.
+% Für letzteres ist dafür ein kleiner Patch notwendig.
+%
+% \begin{macro}{\if@tud@x@crop@center}
+% \changes{v2.05}{2016/04/03}{neu}^^A
+% \begin{macro}{\CROP@center}
+% \changes{v2.05}{2016/04/03}{neu}^^A
+% Das Paket \pkg{crop} bietet die Option, den Satzspiegel auf dem Papierbogen
+% zu zentrieren. Diese Einstellung geht beim Laden eines neuen Satzspiegels mit
+% \cs{loadgeometry} verloren. Hiermit wird das Problem behoben.
+% \begin{macrocode}
+\newif\if@tud@x@crop@center
+\AfterPackage{crop}{%
+ \CheckCommand*\CROP@center{%
+ \voffset\stockheight
+ \advance\voffset-\paperheight
+ \voffset.5\voffset
+ \hoffset\stockwidth
+ \advance\hoffset-\paperwidth
+ \hoffset.5\hoffset
+ }%
+ \pretocmd{\CROP@center}{%
+ \@tud@x@crop@centertrue%
+ }{}{\tud@patch@wrn{CROP@center}}%
+}
+% \end{macrocode}
+% \end{macro}^^A \CROP@center
+% \end{macro}^^A \if@tud@x@crop@center
+%
+% \subsubsection{Unterstützung der Klasse \cls{standalone}}
+%
+% \changes{v2.02}{2014/07/25}{Unterstützung der \cls{standalone}-Klasse}^^A
+%
+% Mit der Klasse~\cls{standalone} können insbesondere Grafiken als separate
+% (PDF-)Dateien erzeugt und später im Dokument eingebunden werden. Diese Klasse
+% ändert allerhand an den Einstellungen der Seitenränder. Damit sich diese bei
+% der Verwendung mit den \TUDScript-Klassen nicht in die Quere kommen, müssen
+% für einige Einstellungen unterdrückt werden.
+%
+% \begin{macro}{\if@tud@x@standalone@crop}
+% \changes{v2.02}{2014/09/08}{neu}^^A
+% Mit diesem Makro kann die Verwendung der Option \opt{crop} mit der Klasse
+% \cls{standalone} geprüft werden. Das erste Argument wird ausgeführt, wenn
+% die Klasse geladen und die Option aktiv ist. Das zweite Argument wird
+% ausgeführt, wenn entweder die Option \opt{crop} deaktiviert ist oder die
+% Klasse \cls{standalone} gar nicht geladen wurde.
+% \begin{macrocode}
+\newif\if@tud@x@standalone@crop
+\AfterClass*{standalone}{\let\if@tud@x@standalone@crop\ifsa@crop}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@x@standalone@crop
+%
+% \subsection{Definition der Größen und Maße in abhängig vom Papierformat}
+%
+% Die \TUDScript-Klassen sollen neben den vom \CD vorgegebenen Seitenrändern
+% weitere Satzspiegel ermöglichen und u.\,a. auch die Nutzung des Paketes
+% \pkg{typearea} erlauben. Damit ein einheitliches Verfahren zur Wahl bzw.
+% Umschaltung des Satzspiegels genutzt werden kann, wird momentan das Paket
+% \pkg{geometry} genutzt. Dabei werden entweder die gewünschten Maße der
+% Seitenränder direkt gewählt oder aber die mit \pkg{typearea} berechneten Maße
+% an \pkg{geometry} durchgereicht.
+%
+% \begin{length}{\tud@len@widemargin}
+% \begin{length}{\tud@len@slimmargin}
+% \begin{length}{\tud@len@both}
+% Die Seitenränder für links und rechts sowie deren Summe, welche später für
+% weitere Satzspiegeleinstelungen dazu verwendet wird, diese anteilig zu
+% verteilen.
+% \begin{macrocode}
+\newlength\tud@len@widemargin
+\newlength\tud@len@slimmargin
+\newlength\tud@len@both
+% \end{macrocode}
+% \end{length}^^A \tud@len@both
+% \end{length}^^A \tud@len@slimmargin
+% \end{length}^^A \tud@len@widemargin
+% \begin{length}{\tud@len@topmargin}
+% \begin{length}{\tud@len@barheight}
+% \begin{length}{\tud@len@headsep}
+% \begin{length}{\tud@len@footsep}
+% Es folgen die speziellen Maße für die Seiten mit dem TUD-Kopf, also die Höhe
+% oberhalb des Querbalkens, die Höhe des Querbalkens selbst sowie der vertikale
+% (Mindest"~)Abstand zwischen Querbalken und Textkörper sowie der Fußzeile.
+% \begin{macrocode}
+\newlength\tud@len@topmargin
+\newlength\tud@len@barheight
+\newlength\tud@len@headsep
+\newlength\tud@len@footsep
+% \end{macrocode}
+% \end{length}^^A \tud@len@footsep
+% \end{length}^^A \tud@len@headsep
+% \end{length}^^A \tud@len@barheight
+% \end{length}^^A \tud@len@topmargin
+% \begin{length}{\tud@len@logox}
+% \begin{length}{\tud@len@logoy}
+% \begin{length}{\tud@len@logowidth}
+% Außerdem müssen Abmessungen und Position des TUD-Logos definiert werden,
+% genauer der horizontale (Soll"~)Abstand zwischen linkem Seitenrand und Logo,
+% der vertikale (Soll"~)Abstand zwischen oberem Seitenrand und Logo sowie die
+% Breite und Höhe\footnote{Proportionen sind durch die Grafik vorgegeben} des
+% Logos.
+% \begin{macrocode}
+\newlength\tud@len@logox
+\newlength\tud@len@logoy
+\newlength\tud@len@logowidth
+% \end{macrocode}
+% \end{length}^^A \tud@len@logowidth
+% \end{length}^^A \tud@len@logoy
+% \end{length}^^A \tud@len@logox
+% \begin{length}{\tud@len@line}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% \begin{length}{\tud@len@heavyline}
+% \begin{length}{\tud@len@thinline}
+% Die Linienstärke der Outline im Kopf ist für ein monochromes Layout schmaler
+% als im Layout mit farbigem Hintergrund.\footnote{monochrom
+% \cs{tud@len@thinline}, koloriert \cs{tud@len@heavyline}} Da im Dokument beide
+% Varianten vorkommen können, wird die Breite \cs{tud@len@line} durch den
+% Seitenstil situativ entweder auf den Wert von \cs{tud@len@thinline} oder aber
+% \cs{tud@len@heavyline} gesetzt.
+% \begin{macrocode}
+\newlength\tud@len@line
+\newlength\tud@len@heavyline
+\newlength\tud@len@thinline
+% \end{macrocode}
+% \end{length}^^A \tud@len@thinline
+% \end{length}^^A \tud@len@heavyline
+% \end{length}^^A \tud@len@line
+% \begin{length}{\tud@len@areaheadvskip}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% \begin{length}{\tud@len@areadiff}
+% \begin{length}{\tud@len@areavskip}
+% Die Längen für den vertikalen Standardversatz der Überschriften sowie die
+% Differenz der Kopfhöhen von normalem und TUD-Kopf-Satzspiegel. Die Differenz
+% zwischen den unterschiedlichen Kopfhöhen der Satzspiegelvarianten wird durch
+% \cs{tud@cdgeometry@@process} berechnet und dabei in \cs{tud@len@areadiff}
+% gespeichert. Dabei muss unterschieden werden, ober der Satzspiegel des \CDs
+% oder der durch \pkg{typearea} berechnete respektive durch den Anwender mit
+% \pkg{geometry} vorgegebene genutzt wird. Davon abhängig wird zum Ausgleich
+% die Länge \cs{tud@len@areavskip} definiert.
+% \begin{macrocode}
+\newlength\tud@len@areaheadvskip
+\newlength\tud@len@areadiff
+\newlength\tud@len@areavskip
+% \end{macrocode}
+% \end{length}^^A \tud@len@areavskip
+% \end{length}^^A \tud@len@areadiff
+% \end{length}^^A \tud@len@areaheadvskip
+% \begin{length}{\tud@len@ddcdiff}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% Zu guter Letzt noch die Länge \cs{tud@len@ddcdiff} für den Höhenausgleich des
+% Seitenfußes, welcher bei der Verwendung des \DDC-Logos in der Fußzeile bei
+% Version~v2.02 für den Satzspiegel notwendig war. Dieser etwas verschrobene
+% Satzspiegel wird im Kompatibilitätsmodus weiterhin angeboten.
+% \begin{macrocode}
+\tud@if@v@lower{2.03}{\newlength\tud@len@ddcdiff}{}
+% \end{macrocode}
+% \end{length}^^A \tud@len@ddcdiff
+% \begin{macro}{\tud@head@fontsize}
+% Für den Querbalken wird außerdem die zu verwendende Schriftgröße definiert.
+% \begin{macrocode}
+\newcommand*\tud@head@fontsize{}
+% \end{macrocode}
+% \end{macro}^^A \tud@head@fontsize
+% \begin{macro}{\tud@cdgeometry@set}
+% \changes{v2.03}{2015/01/23}{Längenberechnung für den Satzspiegel an
+% Referenzlänge \cs{tud@len@widemargin} gekoppelt}^^A
+% \changes{v2.05}{2015/07/15}{Fallunterscheidung an DIN-B-Reihe angepasst}^^A
+% \changes{v2.05}{2016/04/03}{Option \opt{layout} von \pkg{geometry} möglich}^^A
+% \begin{macro}{\if@tud@cdgeometry@adjust}
+% \changes{v2.05}{2015/11/29}{neu}^^A
+% \begin{macro}{\tud@cdgeometry@assignlayout}
+% \changes{v2.06}{2018/08/13}{neu}^^A
+% \begin{length}{\tud@len@layoutwidth}
+% \changes{v2.05}{2016/04/03}{neu}^^A
+% \begin{length}{\tud@len@layoutheight}
+% \changes{v2.05}{2016/04/03}{neu}^^A
+% \begin{length}{\tud@len@layouthoffset}
+% \changes{v2.05}{2016/04/03}{neu}^^A
+% \begin{length}{\tud@len@layoutvoffset}
+% \changes{v2.05}{2016/04/03}{neu}^^A
+% Hiermit werden in Abhängigkeit der gewählten Papiergröße die Maße für die
+% Größe der Kopfzeile, die Position des Logos, die Seitenränder sowie die
+% Schriftgröße in der Kopfzeile definiert. Aufgerufen wird der Befehl durch
+% \cs{tud@cdgeometry@@process}. Dabei fungiert \cs{tud@len@widemargin} als
+% Bezugslänge. Die maßgebliche Papiergröße ist DIN~A4 bzw. DIN~B4. Die Längen
+% für alle anderen Papiermaße unterscheiden sich um den Faktor~$\sqrt{2}$,
+% wobei das Format DIN~A5 nach den Vorgaben des \CDs übersprungen wird.
+%
+% Um die Überschriften und den Satzspiegel auch in diesem Fall vertikal richtig
+% zu positionieren, wird der Schalter \cs{if@tud@cdgeometry@adjust} benötigt.
+% Mit der Einstellung \opt{cdgeometry}|=|\val{adapted} wird auch das Format
+% DIN~A5 mit den skalierten Seitenrändern erstellt.
+% \begin{macrocode}
+\newif\if@tud@cdgeometry@adjust
+\newlength\tud@len@layoutwidth
+\newlength\tud@len@layoutheight
+\newlength\tud@len@layouthoffset
+\newlength\tud@len@layoutvoffset
+% \end{macrocode}
+% Mit \cs{tud@cdgeometry@assignlayout} wird die Layoutgröße, welche ggf. mit
+% dem Paket \pkg{geometry} angegeben wurde, entsprechend gesetzt.
+% \begin{macrocode}
+\newcommand*\tud@cdgeometry@assignlayout{%
+ \ifdim\tud@len@layoutwidth<\p@\relax%
+ \setlength\tud@len@layoutwidth{\paperwidth}%
+ \fi%
+ \ifdim\tud@len@layoutheight<\p@\relax%
+ \setlength\tud@len@layoutheight{\paperheight}%
+ \fi%
+}
+\newcommand*\tud@cdgeometry@set{%
+ \tud@cdgeometry@assignlayout%
+ \tud@if@v@lower{2.05}{%
+ \ifdim\tud@len@layoutheight<\dimexpr105mm+1.5mm\relax%
+ \def\@tempa{0}%
+ \else\ifdim\tud@len@layoutheight<\dimexpr148mm+1.5mm\relax%
+ \def\@tempa{1}%
+ \else\ifdim\tud@len@layoutheight<\dimexpr229mm+2mm\relax%
+ \def\@tempa{2}%
+ \else\ifdim\tud@len@layoutheight<\dimexpr297mm+2mm\relax%
+ \def\@tempa{3}%
+ \else\ifdim\tud@len@layoutheight<\dimexpr420mm+2mm\relax%
+ \def\@tempa{4}%
+ \else\ifdim\tud@len@layoutheight<\dimexpr594mm+2mm\relax%
+ \def\@tempa{5}%
+ \else\ifdim\tud@len@layoutheight<\dimexpr841mm+3mm\relax%
+ \def\@tempa{6}%
+ \else\ifdim\tud@len@layoutheight<\dimexpr1189mm+3mm\relax%
+ \def\@tempa{7}%
+ \else%
+ \def\@tempa{8}%
+ \fi\fi\fi\fi\fi\fi\fi\fi%
+ }{%
+ \ifdim\tud@len@layoutheight<\dimexpr125mm+1.5mm\relax%
+ \def\@tempa{0}%
+ \else\ifdim\tud@len@layoutheight<\dimexpr176mm+2mm\relax%
+ \def\@tempa{1}%
+ \else\ifdim\tud@len@layoutheight<\dimexpr250mm+2mm\relax%
+ \def\@tempa{2}%
+ \else\ifdim\tud@len@layoutheight<\dimexpr353mm+2mm\relax%
+ \def\@tempa{3}%
+ \else\ifdim\tud@len@layoutheight<\dimexpr500mm+2mm\relax%
+ \def\@tempa{4}%
+ \else\ifdim\tud@len@layoutheight<\dimexpr707mm+3mm\relax%
+ \def\@tempa{5}%
+ \else\ifdim\tud@len@layoutheight<\dimexpr1000mm+3mm\relax%
+ \def\@tempa{6}%
+ \else\ifdim\tud@len@layoutheight<\dimexpr1414mm+3mm\relax%
+ \def\@tempa{7}%
+ \else%
+ \def\@tempa{8}%
+ \fi\fi\fi\fi\fi\fi\fi\fi%
+ }%
+% \end{macrocode}
+% In Abhängigkeit von der gefundenen Gestaltungshöhe wird nun der Satzspiegel
+% definiert. Dabei wird geprüft, ob dieser im entweder innerhalb des durch das
+% \CD vorgegebenen Rasters erzeugt oder anhand der Gestaltungshöhe berechnet
+% werden soll.
+% \begin{macrocode}
+ \@tud@cdgeometry@adjustfalse%
+% \end{macrocode}
+% Eine Berechnung des Satzspiegels findet in jedem Fall außerhalb des Rasters
+% statt. Ansonsten wird DIN~A4 als Referenzformat ausgewählt.
+% \begin{macrocode}
+ \ifnum\tud@cdgeometry@calc@num=\tw@\relax%
+ \ifnum\@tempa>\z@\relax%
+ \ifnum\@tempa<8\relax%
+ \def\@tempa{3}%
+ \fi%
+ \fi%
+ \fi%
+% \end{macrocode}
+% Bei Formaten, welche kleiner als das Raster sind, wird die Gestaltungshöhe
+% für DIN~A6 als Referenz genommen, um den Satzspiegel zu brechnen.
+% \begin{macrocode}
+ \ifcase\@tempa\relax% <=A7/B7
+ \ifnum\tud@cdgeometry@calc@num=\tw@\relax\else%
+ \ClassWarning{\TUD@Class@Name}{%
+ There's no type area defined for such a\MessageBreak%
+ small paper height. It is recommended to increase\MessageBreak%
+ the paper size. Nevertheless, it will be tried to\MessageBreak%
+ calculate a proper type area%
+ }%
+ \fi%
+ \tud@divide\@tempa{\tud@len@layoutheight}{148mm}%
+ \setlength\tud@len@widemargin{15mm}%
+ \setlength\tud@len@widemargin{\@tempa\tud@len@widemargin}%
+ \setlength\tud@len@heavyline{0.5pt}%
+ \setlength\tud@len@heavyline{\@tempa\tud@len@heavyline}%
+ \setlength\tud@len@thinline{0.25pt}%
+ \setlength\tud@len@thinline{\@tempa\tud@len@thinline}%
+ \setlength\@tempdima{4.5pt}%
+ \setlength\@tempdima{\@tempa\@tempdima}%
+ \edef\tud@head@fontsize{\strip@pt\@tempdima}%
+ \or% <=A6/B6
+ \setlength\tud@len@widemargin{15mm}%
+ \setlength\tud@len@heavyline{0.5pt}%
+ \setlength\tud@len@thinline{0.25pt}%
+ \renewcommand*\tud@head@fontsize{4.5}%
+% \end{macrocode}
+% Für Formate der Klasse~5 gibt es zwei Varianten. Entweder, es wird sich an
+% das Raster des \CDs geahtlen oder es wird ein eigener Satzspiegel für das
+% Papierformat definiert. Wird das Raster gehalten, muss bei den Überschriften
+% etwas getrickst werden, weshalb der Schalter \cs{if@tud@cdgeometry@adjust}
+% gesetzt wird.
+% \begin{macrocode}
+ \or% <=A5/B5
+ \ifnum\tud@cdgeometry@calc@num=\z@\relax% restricted
+ \@tud@cdgeometry@adjusttrue%
+ \setlength\tud@len@widemargin{30mm}%
+ \setlength\tud@len@heavyline{1pt}%
+ \setlength\tud@len@thinline{0.5pt}%
+ \renewcommand*\tud@head@fontsize{9}%
+ \else%
+ \setlength\tud@len@widemargin{21.213203mm}%
+ \setlength\tud@len@heavyline{0.707107pt}%
+ \setlength\tud@len@thinline{0.353553pt}%
+ \renewcommand*\tud@head@fontsize{6.363961}%
+ \fi%
+ \or% <=A4/B4
+ \setlength\tud@len@widemargin{30mm}%
+ \setlength\tud@len@heavyline{1pt}%
+ \setlength\tud@len@thinline{0.5pt}%
+ \renewcommand*\tud@head@fontsize{9}%
+ \or% <=A3/B3
+ \setlength\tud@len@widemargin{42.426407mm}%
+ \setlength\tud@len@heavyline{1.414214pt}%
+ \setlength\tud@len@thinline{0.707107pt}%
+ \renewcommand*\tud@head@fontsize{12.727922}%
+ \or% <=A2/B2
+ \setlength\tud@len@widemargin{60mm}%
+ \setlength\tud@len@heavyline{2pt}%
+ \setlength\tud@len@thinline{1pt}%
+ \renewcommand*\tud@head@fontsize{18}%
+ \or% <=A1/B1
+ \setlength\tud@len@widemargin{84.852814mm}%
+ \setlength\tud@len@heavyline{2.828427pt}%
+ \setlength\tud@len@thinline{1.414214pt}%
+ \renewcommand*\tud@head@fontsize{25.455844}%
+ \or% <=A0/B0
+ \setlength\tud@len@widemargin{120mm}%
+ \setlength\tud@len@heavyline{4pt}%
+ \setlength\tud@len@thinline{2pt}%
+ \renewcommand*\tud@head@fontsize{36}%
+ \else% >A0/B0
+% \end{macrocode}
+% Wei bei zu kleinen Formaten wird auch bei Formaten oberhalb des Rasters die
+% der Satzspiegel aus der Gestaltungshöhe berechnet, wobei hier DIN~A0 als
+% Referenz verwendet wird.
+% \begin{macrocode}
+ \ifnum\tud@cdgeometry@calc@num=\tw@\relax\else%
+ \ClassWarning{\TUD@Class@Name}{%
+ There's no type area defined for such a\MessageBreak%
+ huge paper height. It is recommended to reduce\MessageBreak%
+ the paper size. Nevertheless, it will be tried to\MessageBreak%
+ calculate a proper type area%
+ }%
+ \fi%
+ \tud@divide\@tempa{\tud@len@layoutheight}{1189mm}%
+ \setlength\tud@len@widemargin{120mm}%
+ \setlength\tud@len@widemargin{\@tempa\tud@len@widemargin}%
+ \setlength\tud@len@heavyline{4pt}%
+ \setlength\tud@len@heavyline{\@tempa\tud@len@heavyline}%
+ \setlength\tud@len@thinline{2pt}%
+ \setlength\tud@len@thinline{\@tempa\tud@len@thinline}%
+ \setlength\@tempdima{36pt}%
+ \setlength\@tempdima{\@tempa\@tempdima}%
+ \edef\tud@head@fontsize{\strip@pt\@tempdima}%
+ \fi%
+% \end{macrocode}
+% Wurde die Berechnung aktiviert, dann erfolgt diese anhand der Referenz im
+% Format DIN~A4.
+% \begin{macrocode}
+ \ifnum\tud@cdgeometry@calc@num=\tw@\relax%
+ \tud@divide\@tempa{\tud@len@layoutheight}{297mm}%
+ \setlength\tud@len@widemargin{\@tempa\tud@len@widemargin}%
+ \setlength\tud@len@heavyline{\@tempa\tud@len@heavyline}%
+ \setlength\tud@len@thinline{\@tempa\tud@len@thinline}%
+ \setlength\@tempdima{\tud@head@fontsize pt}%
+ \setlength\@tempdima{\@tempa\@tempdima}%
+ \edef\tud@head@fontsize{\strip@pt\@tempdima}%
+ \fi%
+% \end{macrocode}
+% Zum Schluss werden die restlichen Längen aus der Referenzlänge berechnet und
+% das Erstellen der Kopfzeile aufgrund der möglichen Änderung der Schriftgröße
+% forciert.
+% \begin{macrocode}
+ \global\@tud@head@font@settrue%
+ \setlength\tud@len@slimmargin{\dimexpr2\tud@len@widemargin/3\relax}%
+ \setlength\tud@len@both{\dimexpr5\tud@len@widemargin/3\relax}%
+ \setlength\tud@len@topmargin{\dimexpr7\tud@len@widemargin/6\relax}%
+ \setlength\tud@len@barheight{\dimexpr\tud@len@widemargin/6\relax}%
+ \setlength\tud@len@headsep{\dimexpr2\tud@len@widemargin/5\relax}%
+ \setlength\tud@len@logox{\dimexpr1.1\tud@len@widemargin/3\relax}%
+ \setlength\tud@len@logoy{\dimexpr0.45\tud@len@widemargin\relax}%
+ \setlength\tud@len@logowidth{\dimexpr1.9\tud@len@widemargin\relax}%
+ \setlength\tud@len@footsep{%
+ \dimexpr\tud@len@widemargin-.6\tud@len@topmargin\relax%
+ }%
+% \end{macrocode}
+% Wird die Gestaltungshöhe DIN~A5 im Raster verwendet, werden die Abstände
+% zwischen Kopf- unf Fußzeile angepasst.
+% \begin{macrocode}
+ \if@tud@cdgeometry@adjust%
+ \setlength\tud@len@headsep{\dimexpr.707107\tud@len@headsep\relax}%
+ \setlength\tud@len@footsep{\dimexpr.707107\tud@len@footsep\relax}%
+ \fi%
+}
+% \end{macrocode}
+% \end{length}^^A \tud@len@layoutvoffset
+% \end{length}^^A \tud@len@layouthoffset
+% \end{length}^^A \tud@len@layoutheight
+% \end{length}^^A \tud@len@layoutwidth
+% \end{macro}^^A \tud@cdgeometry@assignlayout
+% \end{macro}^^A \if@tud@cdgeometry@adjust
+% \end{macro}^^A \tud@cdgeometry@set
+%
+% \iffalse
+%</class&body>
+%<*class&option>
+% \fi
+%
+% \begin{macro}{\tud@cdgeometry@reset}
+% \changes{v2.06}{2018/08/17}{neu}^^A
+% \begin{macro}{\if@tud@cdgeometry@reset}
+% \changes{v2.06}{2018/08/17}{neu}^^A
+% Mit diesem Befehl wird das Laden von zuvor definierte Satzspiegeln durch die
+% Option \opt{cdgeometry} temporär deaktiviert. Dies geschieht, um lediglich
+% die im Hintergrund verwendeten Makros neu zu setzen.
+% \begin{macrocode}
+\newif\if@tud@cdgeometry@reset
+\newcommand*\tud@cdgeometry@reset[1]{%
+ \@tud@cdgeometry@resettrue%
+ \TUDoptions{cdgeometry=#1}%
+ \@tud@cdgeometry@resetfalse%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@cdgeometry@reset
+% \end{macro}^^A \tud@cdgeometry@reset
+% \subsection{Optionen für den Satzspiegel}
+% \begin{option}{cdgeometry}
+% \changes{v2.05}{2016/03/06}{\val{custom} neu}^^A
+% \begin{macro}{\tud@cdgeometry@num}
+% \begin{macro}{\if@tud@cdgeometry@num@locked}
+% \begin{macro}{\tud@cdgeometry@calc@num}
+% \changes{v2.05}{2015/11/29}{neu}^^A
+% Für das \CD sind standardmäßig feste Seitenränder vorgegeben. Diese sind
+% jedoch leider nur aus gestalterischen Motiven und ohne die Beachtung
+% typographischer Belange gewählt und festgelegt worden. Beispielweise ist ein
+% doppelseitiger Satz einer Abschlussarbeit im \CD nur mit einem grauenhaften
+% Satzspiegel möglich. Um dem Anwender einen gewissen Spielraum zu geben, wird
+% alternativ zum asymmetrischen (\opt{geometry}|=|\val{on}) ein symmetrischer
+% Satzspiegel bereitgestellt (\opt{geometry}|=|\val{normal}), welcher bei
+% einseitigem Satz zentriert ist und bei zweiseitigem Satz den inneren Rand
+% kleiner setzt als den äußeren. Des Weiteren kann die Satzspiegelberechnung
+% auch direkt durch das Paket \pkg{typearea} aus dem \KOMAScript-Paket erfolgen
+% (\opt{geometry}|=|\val{no}). Mit \cs{tud@cdgeometry@@process} werden alle
+% getroffenen Satzspiegeloptionen umgesetzt und nachfolgend definiert.
+% \begin{macrocode}
+\tud@locked@newnum{tud@cdgeometry@num}{0}
+\newcommand*\tud@cdgeometry@calc@num{0}
+\TUD@key{cdgeometry}[true]{%
+ \TUD@set@numkey{cdgeometry}{@tempa}{%
+ \TUD@bool@numkey,%
+ {typearea}{0},%
+ {cd}{1},{tud}{1},{asymmetric}{1},%
+ {symmetric}{2},{centred}{2},{centered}{2},%
+ {normal}{2},{standard}{2},{std}{2},%
+ {twoside}{3},{balanced}{3},%
+ {oneside}{4},%
+ {restricted}{5},%
+ {adapted}{6},{adapt}{6},{adapting}{6},{unrestricted}{6},%
+ {calculated}{7},{calc}{7},{calculate}{7},{calculating}{7},%
+ {custom}{8},{user}{8},{package}{8}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\@tempa\relax% false/typearea
+ \tud@locked@num@set{tud@cdgeometry@num}{0}%
+ \or% true/cd
+ \tud@locked@num@set{tud@cdgeometry@num}{2}%
+ \or% symmetric
+ \tud@locked@num@set{tud@cdgeometry@num}{3}%
+ \or% twoside
+ \tud@locked@num@set{tud@cdgeometry@num}{4}%
+ \TUD@KOMAoptions{twoside=true}%
+ \or% oneside
+ \ifnum\tud@cdgeometry@num>\thr@@\relax%
+ \tud@locked@num@set{tud@cdgeometry@num}{3}%
+ \fi%
+ \TUD@KOMAoptions{twoside=false}%
+ \or% restricted
+ \tud@locked@num@preset{tud@cdgeometry@num}{2}%
+ \renewcommand*\tud@cdgeometry@calc@num{0}%
+ \or% adapted
+ \tud@locked@num@preset{tud@cdgeometry@num}{2}%
+ \renewcommand*\tud@cdgeometry@calc@num{1}%
+ \or% calculated
+ \tud@locked@num@preset{tud@cdgeometry@num}{2}%
+ \renewcommand*\tud@cdgeometry@calc@num{2}%
+ \or% custom
+ \tud@locked@num@set{tud@cdgeometry@num}{1}%
+ \fi%
+% \end{macrocode}
+% Innerhalb des Dokumentes kann die Option genutzt werden, um zwischen den
+% unterschiedlichen Satzspiegeln zu wechseln. Da bei der Konstruktion dieser
+% die internen Längen verwendet werden, welche von \pkg{typearea} respektive
+% \pkg{geometry} definiert werden, muss beim Umschalten der jeweils zuletzt
+% definierte Satzspiegel geladen werden. Falls jedoch eine Neuberechnung
+% erfolgte, wird auf das Laden verzichtet (\cs{if@tud@cdgeometry@reset}).
+% \begin{macrocode}
+ \if@atdocument%
+ \if@tud@cdgeometry@reset\else%
+ \ifcase\tud@cdgeometry@num\relax%
+ \tud@loadgeometry{current@typearea}%
+ \@tud@x@geometry@fixmarginstrue%
+ \or%
+ \tud@loadgeometry{current@custom}%
+ \@tud@x@geometry@fixmarginstrue%
+ \fi%
+ \TUD@SpecialOptionAtDocument{tud@cdgeometry@process}%
+ \fi%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cdgeometry@calc@num
+% \end{macro}^^A \if@tud@cdgeometry@num@locked
+% \end{macro}^^A \tud@cdgeometry@num
+% \end{option}^^A cdgeometry
+% \begin{option}{extrabottommargin}
+% \begin{macro}{\tud@dim@extrabottommargin}
+% Diese Option dient dazu, die Höhe des Fußes anzupassen. Dies ist jedoch nur
+% möglich, wenn der Satzspiegel des \CDs verwendet wird. Kommt \pkg{typearea}
+% zum Einsatz, ist die Option wirkungslos. Da für die Länge ggf. auch Werte
+% angegeben werden können, die abhängig von der Schriftgröße sind, wird die
+% Ausführung dieser Option verzögert.
+% \begin{macrocode}
+\newcommand*\tud@dim@extrabottommargin{\z@}
+\TUD@key{extrabottommargin}{%
+ \TUD@set@dimenkey{extrabottommargin}{\tud@dim@extrabottommargin}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \TUD@SpecialOptionAtDocument{tud@cdgeometry@process}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@dim@extrabottommargin
+% \begin{option}{bleedmargin}
+% \changes{v2.05}{2016/06/14}{neu}^^A
+% \begin{macro}{\tud@dim@bleedmargin}
+% \changes{v2.05}{2016/04/03}{neu}^^A
+% Wird entweder das Paket \pkg{crop} oder aber die Option \opt{layout} des
+% Paketes \pkg{geometry} für Schnittmarken verwendet, werden alle farbigen
+% Elemente des Layouts dahingehend vergrößert, dass beim Zuschneiden des
+% Papierbogens \emph{in die Farbe} geschnitten wird. Verantwortlich hierfür ist
+% das Makro \cs{tud@dim@bleedmargin}, welches natürlich auch vom Anwender mit
+% der Option \opt{bleedmargin} beliebig gesetzt werden kann. Als Standardwert
+% werden 5\% der größten Randbreite gesetzt.
+% \begin{macrocode}
+\newcommand*\tud@dim@bleedmargin{.2in}
+\TUD@key{bleedmargin}{%
+ \TUD@set@dimenkey{bleedmargin}{\tud@dim@bleedmargin}{#1}%
+% \end{macrocode}
+% Negative Werte sind nicht möglich, diese werden automatisch korrigiert.
+% \begin{macrocode}
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifdim\dimexpr\tud@dim@bleedmargin\relax<\z@\relax%
+ \def\@tempa-##1\@nil{\def\tud@dim@bleedmargin{##1}}%
+ \@tempa#1\@nil%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@dim@bleedmargin
+% \end{option}^^A bleedmargin
+% \end{option}^^A extrabottommargin
+% \begin{option}{twoside}
+% \begin{option}{twocolumn}
+% Sollte einer der beiden \KOMAScript-Optionen im Dokument nach der Präambel
+% verwendet werden, erfolgt die Anpassung des Satzspiegels.
+% \begin{macrocode}
+\DefineFamilyMember{KOMA}
+\DefineFamilyKey{KOMA}{twoside}{%
+ \TUD@SpecialOptionAtDocument{tud@cdgeometry@process}%
+ \FamilyKeyStateProcessed%
+}
+\DefineFamilyKey{KOMA}{twocolumn}{%
+ \TUD@SpecialOptionAtDocument{tud@cdgeometry@process}%
+ \FamilyKeyStateProcessed%
+}
+% \end{macrocode}
+% \end{option}^^A twocolumn
+% \end{option}^^A twoside
+%
+% \iffalse
+%</class&option>
+%<*class&body>
+% \fi
+%
+% \subsection{Realisierung der Satzspiegeleinstellungen}
+% Das Paket \pkg{geometry} erlaubt eine genaue Vorgabe des Satzspiegels und
+% der Seitenränder, wie es vom \CD der \TnUD verlangt wird.
+% \ToDo{Satzspiegel ohne \pkg{geometry}; besser über \cs{storeareas}?!}[v2.07]%
+% \ToDo{Benutzerschnittstelle äquivalent zu \pkg{geometry}}[v2.07]%
+% \begin{macro}{\tud@cdgeometry@process}
+% \changes{v2.05}{2015/11/29}{neu}^^A
+% Mit \cs{tud@cdgeometry@process} bzw. \cs{tud@cdgeometry@@process} erfolgt die
+% Festlegung des Satzspiegels. Für die Erstellung des Satzspiegels wird das
+% Paket \pkg{geometry} verwendet. Mit der Option (\opt{cdgeometry}|=|\val{no})
+% wird jedoch der von \pkg{typearea} berechnete Satzspiegel an \pkg{geometry}
+% weitergereicht. Somit wird es möglich, unabhängig vom genutzten Paket
+% (\pkg{typearea} oder \pkg{geometry}) zur Festlegung des Satzspiegels, diesen
+% innerhalb des Dokumentes zu ändern.
+% \begin{macrocode}
+\newcommand*\tud@cdgeometry@process{%
+ \tud@cdgeometry@@process%
+ \KOMAoptions{pagesize=\@pagesizelast}%
+% \end{macrocode}
+% Nachder Änderung des Satzspiegels werden alle Logoboxen neu erstellt.
+% \begin{macrocode}
+ \global\@tud@mainlogo@settrue%
+% \end{macrocode}
+% Damit Änderungen am Satzspiegel im Dokument sicher übernommen werden, wird
+% das Setzen des Satzspiegels forciert. Dafür wird \cs{tud@currentgeometry}
+% zurückgesetzt und anschließend der aktuelle Seitenstil erneut geladen, um das
+% erneute Ausführen von \cs{tud@BeforeSelectAnyPageStyle} zu erzwingen.
+% \begin{macrocode}
+ \gdef\tud@currentgeometry{}%
+ \expandafter\pagestyle\expandafter{\currentpagestyle}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cdgeometry@process
+% Wurde die \cls{standalone}-Klasse mit der Option \opt{crop} geladen, werden
+% sämtliche Einstellungen für den Satzspiegel unterdrückt.
+% \begin{macrocode}
+\if@tud@x@standalone@crop
+ \PreventPackageFromLoading{geometry}%
+ \let\tud@cdgeometry@process\relax%
+\else
+ \RequirePackage{geometry}[2010/09/12]%
+\fi%
+\AfterPackage*{geometry}{%
+ \CheckCommand*\Gm@initnewgm{%
+ \Gm@passfalse
+ \Gm@swap@papersizefalse
+ \Gm@dimlist={}
+ \Gm@hbodyfalse
+ \Gm@vbodyfalse
+ \Gm@heightroundedfalse
+ \Gm@includeheadfalse
+ \Gm@includefootfalse
+ \Gm@includempfalse
+ \let\Gm@width\@undefined
+ \let\Gm@height\@undefined
+ \let\Gm@textwidth\@undefined
+ \let\Gm@textheight\@undefined
+ \let\Gm@lines\@undefined
+ \let\Gm@hscale\@undefined
+ \let\Gm@vscale\@undefined
+ \let\Gm@hmarginratio\@undefined
+ \let\Gm@vmarginratio\@undefined
+ \let\Gm@lmargin\@undefined
+ \let\Gm@rmargin\@undefined
+ \let\Gm@tmargin\@undefined
+ \let\Gm@bmargin\@undefined
+ \Gm@layoutfalse
+ \Gm@layouthoffset\z@
+ \Gm@layoutvoffset\z@
+ \Gm@bindingoffset\z@
+ }%
+ \expandafter\CheckCommand%
+ \csname\expandafter\@gobble\string\Gm@changelayout\space\endcsname{%
+ \setlength{\@colht}{\textheight}
+ \setlength{\@colroom}{\textheight}%
+ \setlength{\vsize}{\textheight}
+ \setlength{\columnwidth}{\textwidth}%
+ \if@twocolumn%
+ \advance\columnwidth-\columnsep
+ \divide\columnwidth\tw@%
+ \@firstcolumntrue%
+ \fi%
+ \setlength{\hsize}{\columnwidth}%
+ \setlength{\linewidth}{\hsize}%
+ }%
+ \CheckCommand*\Gm@@process{%
+ \Gm@expandlengths
+ \Gm@adjustpaper
+ \addtolength\Gm@layoutwidth{-\Gm@bindingoffset}%
+ \Gm@adjustmp
+ \Gm@adjustbody
+ \Gm@detall{h}{width}{lmargin}{rmargin}%
+ \Gm@detall{v}{height}{tmargin}{bmargin}%
+ \setlength\textwidth{\Gm@width}%
+ \setlength\textheight{\Gm@height}%
+ \setlength\topmargin{\Gm@tmargin}%
+ \setlength\oddsidemargin{\Gm@lmargin}%
+ \addtolength\oddsidemargin{-1\Gm@truedimen in}%
+ \ifGm@includemp
+ \advance\textwidth-\Gm@wd@mp
+ \advance\oddsidemargin\Gm@odd@mp
+ \fi
+ \if@mparswitch
+ \setlength\evensidemargin{\Gm@rmargin}%
+ \addtolength\evensidemargin{-1\Gm@truedimen in}%
+ \ifGm@includemp
+ \advance\evensidemargin\Gm@even@mp
+ \fi
+ \else
+ \evensidemargin\oddsidemargin
+ \fi
+ \advance\oddsidemargin\Gm@bindingoffset
+ \addtolength\topmargin{-1\Gm@truedimen in}%
+ \ifGm@includehead
+ \addtolength\textheight{-\headheight}%
+ \addtolength\textheight{-\headsep}%
+ \else
+ \addtolength\topmargin{-\headheight}%
+ \addtolength\topmargin{-\headsep}%
+ \fi
+ \ifGm@includefoot
+ \addtolength\textheight{-\footskip}%
+ \fi
+ \ifGm@heightrounded
+ \setlength\@tempdima{\textheight}%
+ \addtolength\@tempdima{-\topskip}%
+ \@tempcnta\@tempdima
+ \@tempcntb\baselineskip
+ \divide\@tempcnta\@tempcntb
+ \setlength\@tempdimb{\baselineskip}%
+ \multiply\@tempdimb\@tempcnta
+ \advance\@tempdima-\@tempdimb
+ \multiply\@tempdima\tw@
+ \ifdim\@tempdima>\baselineskip
+ \addtolength\@tempdimb{\baselineskip}%
+ \fi
+ \addtolength\@tempdimb{\topskip}%
+ \textheight\@tempdimb
+ \fi
+ \advance\oddsidemargin\Gm@layouthoffset%
+ \advance\evensidemargin\Gm@layouthoffset%
+ \advance\topmargin\Gm@layoutvoffset%
+ \addtolength\Gm@layoutwidth{\Gm@bindingoffset}%
+ }%
+ \CheckCommand\geometry[1]{%
+ \Gm@clean
+ \setkeys{Gm}{#1}%
+ \Gm@process%
+ }%
+ \CheckCommand\newgeometry[1]{%
+ \clearpage
+ \Gm@restore@org
+ \Gm@initnewgm
+ \Gm@newgmtrue
+ \setkeys{Gm}{#1}%
+ \Gm@newgmfalse
+ \Gm@process
+ \ifnum\mag=\@m\else\Gm@magtooffset\fi
+ \Gm@changelayout
+ \Gm@showparams{newgeometry}%
+ }%
+ \CheckCommand\restoregeometry{%
+ \clearpage
+ \Gm@restore@pkg
+ \Gm@changelayout%
+ }%
+ \CheckCommand*\savegeometry[1]{%
+ \Gm@save
+ \expandafter\edef\csname Gm@restore@@#1\endcsname{\Gm@restore}%
+ }%
+ \CheckCommand*\loadgeometry[1]{%
+ \clearpage
+ \@ifundefined{Gm@restore@@#1}{%
+ \PackageError{geometry}{%
+ \string\loadgeometry : name `#1' undefined}{%
+ The name `#1' should be predefined with \string\savegeometry}%
+ }{\@nameuse{Gm@restore@@#1}%
+ \Gm@changelayout}%
+ }%
+% \end{macrocode}
+% \begin{macro}{\geometry}
+% \begin{macro}{\newgeometry}
+% \begin{macro}{\restoregeometry}
+% \begin{macro}{\Gm@changelayout}
+% \begin{macro}{\if@tud@x@geometry@enabled}
+% \changes{v2.05}{2016/03/06}{neu}^^A
+% \begin{macro}{\tud@x@geometry@fixmargins}
+% \changes{v2.06}{2018/08/13}{neu}^^A
+% \begin{macro}{\if@tud@x@geometry@fixmargins}
+% \changes{v2.06}{2018/08/13}{neu}^^A
+% Für einen benutzerdefinierten Satzspiegel ist es notwendig, die durch den
+% Anwender in der Präambel getätigten Einstellungen zu sichern und am Ende der
+% Präambel für die unterschiedlichen, durch die Klasse benötigten Satzspiegel
+% der einzelnen Seitenstile umzusetzen. Dabei werden auch etwaige Optionen von
+% \KOMAScript{} beachtet. Hierfür werden die originalen Befehle \cs{geometry}
+% und \cs{newgeometry} angepasst, weshalb diese vorher gesichert werden.
+% \begin{macrocode}
+ \newif\if@tud@x@geometry@enabled%
+ \@tud@x@geometry@enabledtrue%
+ \tud@cs@store{geometry}%
+ \tud@cs@store{newgeometry}%
+ \renewcommand*\geometry[1]{%
+ \tud@x@geometry@user{#1}{geometry}%
+ }%
+ \renewcommand*\newgeometry[1]{%
+ \tud@cs@store{Gm@restore@org}%
+ \tud@x@geometry@user{#1}{newgeometry}%
+ \tud@cs@restore{Gm@restore@org}%
+ }%
+% \end{macrocode}
+% Bei der Verwendung von \cs{restoregeometry} wird der am Ende der Präambel
+% der passend zur entsprechende Einstellung von \opt{cdgeometry} gesicherte
+% Satzspiegel geladen. Über das optinale Argument kann der gewünschte Wert für
+% die Option \opt{cdgeometry} angegeben werden.
+% \begin{macrocode}
+ \renewcommand*\restoregeometry[1][custom]{%
+ \tud@cdgeometry@reset{#1}%
+ \if@atdocument%
+ \ifcase\tud@cdgeometry@num\relax% false
+ \tud@loadgeometry{init@typearea}%
+ \@tud@x@geometry@fixmarginstrue%
+ \or% custom
+ \tud@loadgeometry{init@custom}%
+ \@tud@x@geometry@fixmarginstrue%
+ \fi%
+ \tud@cdgeometry@process%
+ \fi%
+ }%
+% \end{macrocode}
+% Sollte im Dokument durch den Anwender der Satzspiegel manuell geändert
+% werden, muss darauf reagiert und die unterschiedlichen Satzspiegel der Klasse
+% angepasst werden. Hierfür wird am Ende von \cs{Gm@changelayout} ein Patch
+% eingehängt.
+% \begin{macrocode}
+ \apptocmd{\Gm@changelayout}{%
+ \if@tud@x@geometry@enabled%
+ \if@atdocument%
+ \@tud@x@geometry@fixmarginstrue%
+ \tud@cdgeometry@reset{custom}%
+ \tud@cdgeometry@process%
+ \fi%
+ \fi%
+ }{}{\tud@patch@wrn{Gm@changelayout}}%
+% \end{macrocode}
+% Das Paket \pkg{geometry} bietet die Möglichkeit, den kompletten Satzspiegel
+% bzw. das Layout mit einem Offset zu beaufschlagen. Dieser wird den Längen
+% \cs{oddsidemargin} und \cs{evensidemargin} bzw. \cs{topmargin} zugeschlagen.
+% Da intern jedoch diese Längen nach der einmaligen Anwendung der Nutzerbefehle
+% mehrmals wiederverwendet werden, müssen diese u.U. korrigert bzw. auf ihren
+% ursprünglichen Wert zurückgesetzt werden.
+% \begin{macrocode}
+ \newif\if@tud@x@geometry@fixmargins%
+ \newcommand*\tud@x@geometry@fixmargins{%
+ \ifGm@pass\else%
+ \addtolength\oddsidemargin{-\tud@len@layouthoffset}%
+ \addtolength\evensidemargin{-\tud@len@layouthoffset}%
+ \addtolength\topmargin{-\tud@len@layoutvoffset}%
+ \@tud@x@geometry@fixmarginsfalse%
+ \fi%
+ }%
+% \end{macrocode}
+% \end{macro}^^A \if@tud@x@geometry@fixmargins
+% \end{macro}^^A \tud@x@geometry@fixmargins
+% \end{macro}^^A \if@tud@x@geometry@enabled
+% \end{macro}^^A \Gm@changelayout
+% \end{macro}^^A \restoregeometry
+% \end{macro}^^A \newgeometry
+% \end{macro}^^A \geometry
+% \begin{macro}{\tud@x@geometry@user}
+% \changes{v2.05}{2016/03/06}{neu}^^A
+% \begin{parameter}{paper}
+% \begin{parameter}{papername}
+% \begin{parameter}{paperwidth}
+% \begin{parameter}{paperheight}
+% \begin{parameter}{papersize}
+% \begin{parameter}{layout}
+% \begin{parameter}{layoutname}
+% \begin{parameter}{layoutwidth}
+% \begin{parameter}{layoutheight}
+% \begin{parameter}{layoutsize}
+% \begin{parameter}{bleedmargin}
+% \begin{macro}{\tud@x@geometry@area@def}
+% \changes{v2.05}{2016/03/06}{neu}^^A
+% \begin{macro}{\tud@x@geometry@area@set}
+% \changes{v2.05}{2016/03/06}{neu}^^A
+% \begin{macro}{\tud@x@geometry@paper}
+% \changes{v2.05}{2016/07/20}{neu}^^A
+% \begin{macro}{\tud@x@geometry@layout}
+% \changes{v2.05}{2016/07/20}{neu}^^A
+% \begin{macro}{\tud@x@geometry@parameter}
+% \changes{v2.05}{2016/07/20}{neu}^^A
+% \begin{macro}{\tud@x@geometry@init}
+% \changes{v2.05}{2016/03/06}{neu}^^A
+% Bei der Redefinition der Befehle \cs{geometry} und \cs{newgeometry} kommt
+% intern das Makro \cs{tud@x@geometry@user} zum Einsatz, womit kleinere
+% Feinheiten zwischen den beiden Befehlen unterschieden werden können.
+% \begin{macrocode}
+ \newcommand*\tud@x@geometry@paper{}%
+ \newcommand*\tud@x@geometry@layout{}%
+ \newcommand*\tud@x@geometry@parameter{}%
+ \newcommand*\tud@x@geometry@init{}%
+ \newcommand*\tud@x@geometry@user[2]{%
+ \let\tud@x@geometry@paper\@empty%
+ \let\tud@x@geometry@layout\@empty%
+ \let\tud@x@geometry@parameter\@empty%
+ \TUD@parameter@set{geometry}{#1}%
+ \ifx\tud@x@geometry@layout\@empty\else%
+ \begingroup%
+ \tud@x@geometry@area@set{layout}%
+ \edef\tud@res@a{%
+ \endgroup%
+ \noexpand\setlength\noexpand\tud@len@layoutwidth{\the\paperwidth}%
+ \noexpand\setlength\noexpand\tud@len@layoutheight{\the\paperheight}%
+ }%
+ \tud@res@a%
+ \fi%
+ \tud@x@geometry@area@set{paper}%
+ \ifstr{#2}{newgeometry}{%
+ \eappto\Gm@restore@org{%
+ \noexpand\paperwidth=\the\paperwidth\relax%
+ \noexpand\paperheight=\the\paperheight\relax%
+ }%
+ \tud@x@geometry@getlayout{\tud@res@a}%
+ \epreto\tud@x@geometry@parameter{\tud@res@a,}%
+ \def\tud@res@a{\tud@cs@use{newgeometry}}%
+ \expandafter\tud@res@a\expandafter{\tud@x@geometry@parameter}%
+ \edef\tud@x@geometry@init{\tud@x@geometry@parameter}%
+ }{%
+ \eappto\tud@x@geometry@init{\tud@x@geometry@parameter}%
+ }%
+ }%
+% \end{macrocode}
+% Das folgende Konstrukt ist aus der Idee entstanden, die Parameter \val{paper}
+% sowie \val{layout} des Paketes \pkg{geometry} auf die passenden Optionen von
+% \KOMAScript{} abbilden zu können und insbesondere Schnittmarken für alle
+% Seitenstile bereitzustellen. %
+% \ToDo{%
+% Leider ist aus der dem Versuch, eine halbwegs einheitliche Schnittstelle
+% zwischen den Paketen \pkg{typearea} und \pkg{geometry} zu schaffen, ein
+% ziemlich unübersichtliches Konstrukt geworden, weshalb das Ganze in einer
+% folgenden Version mit \KOMAScript-Mitteln neu implementiert werden soll.
+% }[v2.07]
+% \ToDo{Orientierung automatisch aus paperwidth/paperheight}[v2.07]
+% \begin{macrocode}
+ \TUD@parameter@family{geometry}{%
+ \TUD@parameter@def{paper}{\tud@x@geometry@area@def{paper}{#1}}%
+ \TUD@parameter@let{papername}{paper}%
+ \TUD@parameter@def{papersize}{%
+ \def\@tempa##1,##2,##3\@nil{%
+ \IfArgIsEmpty{##2}{%
+ \tud@x@geometry@area@def{paper}{##1:##1}%
+ }{%
+ \tud@x@geometry@area@def{paper}{##1:##2}%
+ }%
+ }%
+ \@tempa#1,,\@nil%
+ }%
+ \TUD@parameter@def{paperwidth}{%
+ \tud@x@geometry@area@def{paper}{#1:\paperheight}%
+ }%
+ \TUD@parameter@def{paperheight}{%
+ \tud@x@geometry@area@def{paper}{\paperwidth:#1}%
+ }%
+ \TUD@parameter@def{layout}{%
+ \ifstr{#1}{false}{%
+ \setlength\tud@len@layoutwidth{\z@}%
+ \setlength\tud@len@layoutheight{\z@}%
+ \setlength\tud@len@layouthoffset{\z@}%
+ \setlength\tud@len@layoutvoffset{\z@}%
+ }{%
+ \tud@x@geometry@area@def{layout}{#1}%
+ }%
+ }%
+ \TUD@parameter@let{layoutname}{layout}%
+ \TUD@parameter@def{layoutsize}{%
+ \def\@tempa##1,##2,##3\@nil{%
+ \IfArgIsEmpty{##2}{%
+ \tud@x@geometry@area@def{layout}{##1:##1}%
+ }{%
+ \tud@x@geometry@area@def{layout}{##1:##2}%
+ }%
+ }%
+ \@tempa#1,,\@nil%
+ }%
+ \TUD@parameter@def{layoutwidth}{\setlength\tud@len@layoutwidth{#1}}%
+ \TUD@parameter@def{layoutheight}{\setlength\tud@len@layoutheight{#1}}%
+ \TUD@parameter@def{layoutoffset}{%
+ \def\@tempa##1,##2,##3\@nil{%
+ \IfArgIsEmpty{##2}{%
+ \setlength\tud@len@layouthoffset{##1}%
+ \setlength\tud@len@layoutvoffset{##1}%
+ }{%
+ \setlength\tud@len@layouthoffset{##1}%
+ \setlength\tud@len@layoutvoffset{##2}%
+ }%
+ }%
+ \@tempa#1,,\@nil%
+ }%
+ \TUD@parameter@def{layouthoffset}{\setlength\tud@len@layouthoffset{#1}}%
+ \TUD@parameter@def{layoutvoffset}{\setlength\tud@len@layoutvoffset{#1}}%
+ \TUD@parameter@def{bleedmargin}{\TUDoption{bleedmargin}{#1}}%
+ \TUD@parameter@handler@macro{%
+ \eappto\tud@x@geometry@parameter{%
+ \expandonce\kv@key=\expandonce\kv@value,%
+ }%
+ }{%
+ \tud@x@geometry@area@def{paper}{#2}%
+ }%
+ }%
+% \end{macrocode}
+% Wenig Kommentar dazu, weil eigentlich schon wieder obsolet! Die möglichen
+% Werte für \val{paper} und \val{layout} werden abgefangen und für die beiden
+% Befehle \cs{geometry} und \cs{newgeometry} aufgearbeitet. Alle anderen werden
+% einfach an \pkg{geometry} durchgereicht. Dies geschieht über die jeweiligen
+% Hilfsmakros \cs{tud@x@geometry@\dots} für \val{paper}, \val{layout} sowie
+% \val{parameter} für alles Übrige.
+% \begin{macrocode}
+ \newcommand*\tud@x@geometry@area@def[2]{%
+ \tud@lowerstring{\@tempa}{#2}%
+ \def\@tempb##1paper##2\@nil{%
+ \ifstr{##2}{paper}{\def\@tempa{##1}}{}%
+ }%
+ \expandafter\@tempb\@tempa paper\@nil%
+ \@tempswafalse%
+ \ifstr{\@tempa}{seascape}{\@tempswatrue}{}%
+ \ifstr{\@tempa}{landscape}{\@tempswatrue}{}%
+ \ifstr{\@tempa}{portrait}{\@tempswatrue}{}%
+ \ifstr{\@tempa}{letter}{\@tempswatrue}{}%
+ \ifstr{\@tempa}{executive}{\@tempswatrue}{}%
+ \ifstr{\@tempa}{legal}{\@tempswatrue}{}%
+ \if@tempswa\else%
+ \ifx\@tempa\@empty\relax\else%
+ \def\@tempb##1##2\@nil{%
+ \if ##1a\@tempswatrue%
+ \else\if ##1b\@tempswatrue%
+ \else\if ##1c\@tempswatrue%
+ \else\if ##1d\@tempswatrue%
+ \fi\fi\fi\fi%
+ \if@tempswa%
+ \@tempswafalse%
+ \IfArgIsEmpty{##2}{}{\ifnumber{##2}{\@tempswatrue}{}}%
+ \fi%
+ }%
+ \expandafter\@tempb\@tempa\@nil%
+ \if@tempswa\else%
+ \def\@tempb##1:##2:##3\@nil{%
+ \IfArgIsEmpty{##2}{}{%
+ \@tempswatrue%
+ \def\@tempa{##1:##2}%
+ }%
+ }%
+ \expandafter\@tempb\@tempa::\@nil%
+ \fi%
+ \if@tempswa\else%
+ \def\tud@reserved##1:##2:##3:##4\@nil{%
+ \if@tempswa\else%
+ \ifstr{\@tempa}{##1}{%
+ \@tempswatrue%
+ \def\@tempa{##2##4:##3##4}%
+ }{}%
+ \fi%
+ }%
+ \tud@reserved b0j:1030:1456:mm\@nil%
+ \tud@reserved b1j:728:1030:mm\@nil%
+ \tud@reserved b2j:515:728:mm\@nil%
+ \tud@reserved b3j:364:515:mm\@nil%
+ \tud@reserved b4j:257:364:mm\@nil%
+ \tud@reserved b5j:182:257:mm\@nil%
+ \tud@reserved b6j:128:182:mm\@nil%
+ \tud@reserved ansia:8.5:11:in\@nil%
+ \tud@reserved ansib:11:17:in\@nil%
+ \tud@reserved ansic:17:22:in\@nil%
+ \tud@reserved ansid:22:34:in\@nil%
+ \tud@reserved ansie:34:44:in\@nil%
+ \tud@reserved screen:225:180:mm\@nil%
+ \fi%
+ \fi%
+ \fi%
+ \if@tempswa%
+ \cseappto{tud@x@geometry@#1}{\@tempa,}%
+ \else%
+ \appto\tud@x@geometry@parameter{#2,}%
+ \fi%
+ }%
+% \end{macrocode}
+% Der Befehl \cs{tud@x@geometry@area@set} bewerkstelligt die Abarbeitung der
+% zuvor gesammelten Schlüssel.
+% \begin{macrocode}
+ \newcommand*\tud@x@geometry@area@set[1]{%
+ \letcs{\@tempa}{tud@x@geometry@#1}%
+ \ifdefvoid{\@tempa}{}{%
+ \def\@tempb##1:##2:##3\@nil{%
+ \begingroup%
+ \IfArgIsEmpty{##2}{%
+ \def\@tempb{\KOMAoption{paper}{##1}}%
+ }{%
+ \if@landscape%
+ \def\@tempb{\KOMAoption{paper}{##2:##1}}%
+ \else%
+ \def\@tempb{\KOMAoption{paper}{##1:##2}}%
+ \fi%
+ }%
+ \edef\@tempb{\endgroup\expandonce\@tempb}%
+ \@tempb%
+ }%
+ \def\@tempc##1{\@tempb##1::\@nil}%
+ \expandafter\forcsvlist\expandafter\@tempc\expandafter{\@tempa}%
+ }%
+ }%
+% \end{macrocode}
+% \end{macro}^^A \tud@x@geometry@init
+% \end{macro}^^A \tud@x@geometry@parameter
+% \end{macro}^^A \tud@x@geometry@layout
+% \end{macro}^^A \tud@x@geometry@paper
+% \end{macro}^^A \tud@x@geometry@area@set
+% \end{macro}^^A \tud@x@geometry@area@def
+% \end{parameter}^^A bleedmargin
+% \end{parameter}^^A layoutsize
+% \end{parameter}^^A layoutheight
+% \end{parameter}^^A layoutwidth
+% \end{parameter}^^A layoutname
+% \end{parameter}^^A layout
+% \end{parameter}^^A papersize
+% \end{parameter}^^A paperheight
+% \end{parameter}^^A paperwidth
+% \end{parameter}^^A papername
+% \end{parameter}^^A paper
+% \end{macro}^^A \tud@x@geometry@user
+% \begin{macro}{\tud@x@geometry@getlayout}
+% \changes{v2.06}{2018/08/13}{neu}^^A
+% \begin{macrocode}
+ \newcommand*\tud@x@geometry@getlayout[1]{%
+% \end{macrocode}
+% Unabhängig von der gewählten Option \opt{cdgeometry} für den Satzspiegel
+% sollen die von \pkg{geometry} bereitgestellten Möglichkieten für den
+% Papierbogen nutzbar bleiben. Die zu setzenden Einstellungen für das Layout
+% werden in das im Argument übergebene Makro geschrieben.
+% \begin{macrocode}
+ \ifGm@pass%
+ \let#1\@empty%
+ \else%
+ \tud@cdgeometry@assignlayout%
+ \begingroup%
+% \end{macrocode}
+% Das Setzen des Layouts erfolgt nur, wenn die dazugehörigen Längen \emph{nicht}
+% denen des Papierbogens entsprechen.
+% \begin{macrocode}
+ \@tud@res@swafalse%
+ \ifdim\tud@len@layoutwidth=\paperwidth\relax\else\@tud@res@swatrue\fi%
+ \ifdim\tud@len@layoutheight=\paperheight\relax\else\@tud@res@swatrue\fi%
+ \edef\tud@res@a{%
+ \endgroup%
+ \etex@unexpanded{\def#1}{%
+ layoutoffset={%
+ \the\tud@len@layouthoffset,\the\tud@len@layoutvoffset%
+ }%
+ \if@tud@res@swa%
+ ,layoutsize={\the\tud@len@layoutwidth,\the\tud@len@layoutheight}%
+ \fi%
+ }%
+ }%
+ \tud@res@a%
+ \fi%
+ }%
+% \end{macrocode}
+% \end{macro}^^A \tud@x@geometry@getlayout
+% \begin{macro}{\tud@x@geometry@set}
+% \changes{v2.04}{2015/03/12}{neu}^^A
+% \begin{macro}{\tud@savegeometry}
+% \changes{v2.05}{2016/04/03}{neu}^^A
+% \begin{macro}{\tud@loadgeometry}
+% \changes{v2.05}{2016/03/06}{neu}^^A
+% Mit dem Befehl \cs{tud@x@geometry@set} wird abhängig davon, ob dieser in der
+% Präambel oder im Dokument von \cs{tud@cdgeometry@@process} verwendet wird,
+% entweder \cs{geometry} oder \cs{newgeometry} aufgerufen. Mit dem Schalter
+% \cs{if@tud@x@geometry@enabled} wird im Fall, dass ein der Satzspiegel durch
+% den Anwender eingestellt wurde, das rekursive Aufrufen von \cs{geometry} bzw.
+% \cs{newgeometry} und einer daraus resultierenden Endlosschleife unterbunden.
+% \begin{macrocode}
+ \newcommand*\tud@x@geometry@set[1]{%
+ \@tud@x@geometry@enabledfalse%
+% \end{macrocode}
+% Um etwaige Änderungen am Papierformat innerhalb des Dokumentes beachten zu
+% können, werden die aktuellen Maße für das Papierformat an \cs{Gm@restore@org}
+% angehangen.
+% \begin{macrocode}
+ \if@atdocument%
+ \edef\@tempa{#1}%
+ \tud@cs@store{Gm@restore@org}%
+ \eappto\Gm@restore@org{%
+ \noexpand\paperwidth=\the\paperwidth\relax%
+ \noexpand\paperheight=\the\paperheight\relax%
+ }%
+ \def\@tempc{\tud@cs@use{newgeometry}}%
+ \expandafter\@tempc\expandafter{\@tempa}%
+ \tud@cs@restore{Gm@restore@org}%
+ \else%
+% \end{macrocode}
+% Zu Beginn des Dokumentes werden mit \cs{Gm@initnewgm} vor jedem Satzspiegel
+% die zuvor gemachten Einstellungen zurückgesetzt.
+% \begin{macrocode}
+ \Gm@initnewgm%
+ \edef\@tempa{%
+ paperwidth=\the\paperwidth,paperheight=\the\paperheight,#1%
+ }%
+ \def\@tempc{\tud@cs@use{geometry}}%
+ \expandafter\@tempc\expandafter{\@tempa,driver=none}%
+ \fi%
+ \@tud@x@geometry@enabledtrue%
+ }%
+% \end{macrocode}
+% Beim Speichern eines Satzspiegels sichert \pkg{geometry} tatsächlich nicht
+% alle notwendigen Einstellungen und Befehle. Deshalb wird etwas nachgeholfen.
+% \begin{macrocode}
+ \newcommand*\tud@savegeometry[1]{%
+ \let\Gm@restore\@empty%
+ \savegeometry{#1}%
+ \csepreto{Gm@restore@@#1}{%
+ \noexpand\Gm@bindingoffset=\the\Gm@bindingoffset%
+ \ifGm@includehead%
+ \noexpand\Gm@includeheadtrue%
+ \else%
+ \noexpand\Gm@includeheadfalse%
+ \fi%
+ \ifGm@includefoot%
+ \noexpand\Gm@includefoottrue%
+ \else%
+ \noexpand\Gm@includefootfalse%
+ \fi%
+ \ifGm@includemp%
+ \noexpand\Gm@includemptrue%
+ \else%
+ \noexpand\Gm@includempfalse%
+ \fi%
+ \ifGm@layout%
+ \noexpand\Gm@layouttrue%
+ \else%
+ \noexpand\Gm@layoutfalse%
+ \fi%
+ }%
+ }%
+ \newcommand*\tud@loadgeometry[1]{%
+ \@tud@x@geometry@enabledfalse%
+ \loadgeometry{#1}%
+% \end{macrocode}
+% Die nächsten beiden Makros müssen nach der Satzspiegeländerung des ausgeführt
+% werden, um den Durchschuss und eine etwaige Zentrierung durch das Paket
+% \pkg{crop} wiederherzustellen.
+% \begin{macrocode}
+ \@currsize%
+ \if@tud@x@crop@center\CROP@center\fi%
+ \@tud@x@geometry@enabledtrue%
+ }%
+% \end{macrocode}
+% \end{macro}^^A \tud@loadgeometry
+% \end{macro}^^A \tud@savegeometry
+% \end{macro}^^A \tud@x@geometry@set
+% \begin{macro}{\tud@cdgeometry@@process}
+% \changes{v2.02}{2014/06/23}{geändert für das Paket \pkg{scrlayer-scrpage}}^^A
+% \changes{v2.03}{2015/01/09}{Satzspiegel des \CDs angepasst}^^A
+% \changes{v2.03}{2015/01/09}{intiale Festlegung der Länge \cs{marginpar}}^^A
+% \changes{v2.03}{2015/01/13}{Satzspiegel kompatibilitätsabhängig}^^A
+% \begin{macro}{\tud@cdgeometry@@@process}
+% \begin{macro}{\tud@cdgeometry@layout}
+% \changes{v2.06}{2018/08/13}{neu}^^A
+% \begin{macro}{\tud@cdgeometry@hmargin}
+% \begin{macro}{\tud@cdgeometry@vmargin}
+% \begin{macro}{\tud@cdgeometry@tudmargin}
+% \begin{macro}{\tud@cdgeometry@ddcmargin}
+% Dies sind Hilfsmakros für die Definition der unterschiedichen Seitenlayouts
+% (horizontale und vertikale Ränder). Es handelt sich dabei um die Seitenränder
+% für den normalen Textbereich sowie die angepassten vertikalen Einstellungen
+% für die Seitenstilvarianten mit TUD-Kopf. Im Kompatibilitätsmodus für die
+% Version~v2.02 gibt es außerdem einen separaten Satzspiegel für den \DDC-Fuß.
+% Gesetzt werden diese in Abhängigkeit von der Option \opt{cdgeometry} im
+% Makro \cs{tud@cdgeometry@@process} bzw. \cs{tud@cdgeometry@@@process}.
+% \begin{macrocode}
+ \newcommand*\tud@cdgeometry@layout{}%
+ \newcommand*\tud@cdgeometry@hmargin{}%
+ \newcommand*\tud@cdgeometry@vmargin{}%
+ \newcommand*\tud@cdgeometry@tudmargin{}%
+ \tud@if@v@lower{2.03}{\newcommand*\tud@cdgeometry@ddcmargin{}}{}%
+% \end{macrocode}
+% Das Makro \cs{tud@cdgeometry@@process} setzt die Option für den gewünschten
+% Satzspiegel um, sowohl für die Seitenränder als auch zur Einberechnung der
+% Kopf- und/oder Fußzeile. Um mehrere Satzspiegel verwenden zu können~-- was
+% für die unterschiedlichen Höhen für Kopf- und Fußzeile nötig ist~-- wird das
+% Paket \pkg{geometry} verwendet. Soll \pkg{typearea} zur Satzspiegelerstellung
+% genutzt werden, so werden die damit berechneten Werte an \pkg{geometry}
+% weitergereicht.
+% Es werden drei Layouts erstellt: normaler Satzspiegel, nur TUD-Kopf sowie
+% TUD-Kopf und "~Fuß und mit \cs{savegeometry}\marg{Stil} gesichert. Damit kann
+% innerhalb des Dokumentes mit dem Befehl \cs{loadgeometry}\marg{Stil} oberer
+% sowie ggf. untere Seitenrand geändert werden.
+% \begin{macrocode}
+ \newcommand*\tud@cdgeometry@@process{%
+ \csuse{@ta@usegeometryfalse}%
+% \end{macrocode}
+% Die Maßvorgaben werden entsprechend der Seitengröße gesetzt.
+% \begin{macrocode}
+ \tud@cdgeometry@set%
+% \end{macrocode}
+% Für den Fall, dass \pkg{typearea} die Satzspiegelberechnung übernimmt oder
+% dieser durch den Benutzer definiert wurde, werden die Ergebnisse aus der
+% Berechnung respektive die aktiven Einstellungen direkt an \pkg{geometry}
+% weitergereicht. Dazu werden die berechneten Werte in die entsprechenden
+% Hilfsmakros für die Erstellung der \pkg{geometry}-Satzspiegel übergeben.
+% Gegebenenfalls werden die Offsets für das Layout korrigiert.
+% \begin{macrocode}
+ \ifnum\tud@cdgeometry@num<\tw@\relax% false/custom
+ \if@tud@x@geometry@fixmargins%
+ \tud@x@geometry@fixmargins%
+ \fi%
+% \end{macrocode}
+% Die von \pkg{typearea} berechneten Seitenränder werden an \pkg{geometry}
+% weitergereicht.
+% \begin{macrocode}
+ \ifcase\tud@cdgeometry@num\relax%
+ \edef\tud@cdgeometry@hmargin{%
+ left=\the\dimexpr\oddsidemargin+1in-\ta@bcor\relax,%
+ textwidth=\the\textwidth,%
+ \tud@cdgeometry@mpincl,%
+ marginparwidth=\the\marginparwidth,%
+ marginparsep=\the\marginparsep,%
+ \if@reversemargin%
+ reversemarginpar=true,%
+ \else%
+ reversemarginpar=false,%
+ \fi%
+ bindingoffset=\the\ta@bcor%
+ }%
+ \edef\tud@cdgeometry@vmargin{%
+ \if@hincl%
+ includehead=true,%
+ top=\the\dimexpr\topmargin+1in\relax,%
+ \else%
+ includehead=false,%
+ top=\the\dimexpr\topmargin%
+ +\headheight+\headsep+1in\relax,%
+ \fi%
+ headheight=\the\headheight,%
+ headsep=\the\headsep,%
+ textheight=\the\textheight,%
+ \tud@cdgeometry@fincl,%
+ footskip=\the\footskip%
+ }%
+% \end{macrocode}
+% Und nun für den benutzerdefinierten Satzspiegel.
+% \begin{macrocode}
+ \else% custom
+ \ifGm@pass\else%
+ \edef\tud@cdgeometry@hmargin{%
+ left=\the\dimexpr\oddsidemargin+1in-\Gm@bindingoffset\relax,%
+ textwidth=\the\textwidth,%
+ \ifGm@includemp%
+ includemp=true,%
+ \else%
+ includemp=false,%
+ \fi%
+ marginparwidth=\the\marginparwidth,%
+ marginparsep=\the\marginparsep,%
+ \if@reversemargin%
+ reversemarginpar=true,%
+ \else%
+ reversemarginpar=false,%
+ \fi%
+ bindingoffset=\the\Gm@bindingoffset%
+ }%
+ \edef\tud@cdgeometry@vmargin{%
+ \ifGm@includehead%
+ includehead=true,%
+ top=\the\dimexpr\topmargin+1in\relax,%
+ \else%
+ includehead=false,%
+ top=\the\dimexpr\topmargin%
+ +\headheight+\headsep+1in\relax,%
+ \fi%
+ headheight=\the\headheight,%
+ headsep=\the\headsep,%
+ textheight=\the\textheight,%
+ \ifGm@includefoot%
+ includefoot=true,%
+ \else%
+ includefoot=false,%
+ \fi%
+ footskip=\the\footskip%
+ }%
+ \fi%
+ \fi%
+% \end{macrocode}
+% Es wird die Höhendifferenz zwischen TUD-Kopf und Standardkopfzeile für den
+% benutzerdefnierten bzw. \pkg{typearea}-Satzspiegel berechnet. Für den
+% Satzspiegel mit TUD-Kopf muss unterschieden werden, ob der Abstand zwischen
+% Kopf und Textbereich vergrößert wurde. Ist dies der Fall, wird die Höhe des
+% Textbereiches über \cs{@tempdima} entsprechend verkleinert. Sollte der
+% benutzerdefinierten bzw. \pkg{typearea}-Satzspiegel noch unterhalb des
+% TUD-Kopfes liegen, wird der Abstand zum Kopf vergrößert.
+% \begin{macrocode}
+ \setlength\tud@len@areadiff{%
+ \dimexpr\tud@len@topmargin+\tud@len@barheight+\tud@len@headsep%
+ -\topmargin-\headheight-\headsep-1in\relax%
+ }%
+ \ifdim\tud@len@areadiff<\z@\relax%
+ \addtolength\tud@len@headsep{-\tud@len@areadiff}%
+ \setlength\@tempdima{\z@}%
+ \else%
+ \setlength\@tempdima{\tud@len@areadiff}%
+ \fi%
+ \edef\tud@cdgeometry@tudmargin{%
+ ignorehead=true,%
+ top=\the\dimexpr\tud@len@topmargin+\tud@len@barheight%
+ +\tud@len@headsep\relax,%
+ headheight=\the\dimexpr\tud@len@topmargin+\tud@len@barheight%
+ -\tud@len@logoy\relax,%
+ headsep=\the\tud@len@headsep,%
+ textheight=\the\dimexpr\textheight-\@tempdima\relax%
+ }%
+% \end{macrocode}
+% Für den Kompatibilitätsmodus der Version~v2.02 gibt es für den \DDC-Fuß einen
+% separaten Satzspiegel.
+% \begin{macrocode}
+ \tud@if@v@lower{2.03}{%
+ \setlength\tud@len@ddcdiff{%
+ \dimexpr.6\tud@len@topmargin-\footskip+\tud@len@headsep%
+ +\footheight-1.25\baselineskip\relax%
+ }%
+ \edef\tud@cdgeometry@ddcmargin{%
+ textheight=\the\dimexpr\textheight-\tud@len@areadiff%
+ -\tud@len@ddcdiff\relax,%
+ footskip=\the\dimexpr\footskip+\tud@len@ddcdiff\relax%
+ }%
+ }{}%
+% \end{macrocode}
+% Sollte die Option \opt{extrabottommargin} verwendet worden sein, wird eine
+% Warnung ausgegeben, dass diese für den \pkg{typearea}-Satzspiegel wirkungslos
+% ist.
+% \begin{macrocode}
+ \ifdim\dimexpr\tud@dim@extrabottommargin\relax=\z@\relax\else%
+ \begingroup%
+ \edef\tud@res@a{%
+ The key `extrabottommargin' is ineffective\MessageBreak%
+ when\space%
+ \ifcase\tud@cdgeometry@num%
+ package `typearea' is used for layout with\MessageBreak%
+ `cdgeometry=typearea'%
+ \else%
+ a user-defined layout is used with\MessageBreak%
+ `cdgeometry=custom'%
+ \fi%
+ }%
+ \edef\tud@res@a{%
+ \endgroup%
+ \noexpand\ClassWarning{\noexpand\TUD@Class@Name}{\tud@res@a}%
+ }%
+ \tud@res@a%
+ \fi%
+% \end{macrocode}
+% Hier erfolgt die Definition der Hilfsmakros für das CD-konforme asymmetrische
+% bzw. an das \CD angelehnte Layout für einseitigen und zweiseitigen Satz.
+% Zuerst werden die verschiedenen unterschiedlichen horizontalen Ränder für die
+% unterschiedlichen Optionen definiert. Dies betrifft im einzelnen den äußeren
+% Seitenrand (\cs{@tempdima}), die Textbreite (\cs{@tempdimb}) sowie die Breite
+% der Randnotizen (\cs{@tempdimc}). Danach kommt der Gleichanteil.
+% \begin{macrocode}
+ \else% true/symmetric/twoside
+ \ifcase\tud@cdgeometry@num\relax\or\or% true
+ \setlength\@tempdima{\tud@len@widemargin}%
+ \if@reversemargin%
+ \setlength\@tempdimc{\tud@len@widemargin}%
+ \else%
+ \setlength\@tempdimc{\tud@len@slimmargin}%
+ \fi%
+% \end{macrocode}
+% Die zweite Variante ist eigentlich nicht konform mit dem \CD. Sie ist sowohl
+% im einseitigen als auch im zweiseitgigen Satz symmetrisch.
+% \begin{macrocode}
+ \or% symmetric
+ \setlength\@tempdima{.5\tud@len@both}%
+ \setlength\@tempdimc{.5\tud@len@both}%
+% \end{macrocode}
+% Eigentlich ist auch die dritte Variante nach dem \CD nicht zulässig. Sie ist
+% im einseitigen Satz symmetrisch, im zweiseitgigen Satz wird die innere Seite
+% schmaler gesetzt als die äußere, wobei hier auf das in den Seitenrand ragende
+% TUD-Logo geachtet werden muss.
+% \begin{macrocode}
+ \or% twoside
+ \if@twoside%
+ \setlength\@tempdima{.4\tud@len@both}%
+ \else%
+ \setlength\@tempdima{.5\tud@len@both}%
+ \fi%
+ \setlength\@tempdimc{.5\tud@len@both}%
+ \if@twoside%
+ \if@reversemargin%
+ \setlength\@tempdimc{.4\tud@len@both}%
+ \else%
+ \setlength\@tempdimc{.6\tud@len@both}%
+ \fi%
+ \fi%
+ \fi%
+% \end{macrocode}
+% Die \emph{Berechnung} der Textbreite ist für alle Varainten identisch. Danach
+% erfolgt die Zuweisung zum Makro.
+% \begin{macrocode}
+ \addtolength\@tempdimc{-\headsep}%
+ \setlength\@tempdimb{%
+ \dimexpr\tud@len@layoutwidth-\tud@len@both-\ta@bcor\relax%
+ }%
+ \if@mincl%
+ \addtolength\@tempdimb{-\@tempdimc}%
+ \fi%
+ \edef\tud@cdgeometry@hmargin{%
+ left=\the\@tempdima,%
+ textwidth=\the\@tempdimb,%
+ \tud@cdgeometry@mpincl,%
+ marginparwidth=\the\@tempdimc,%
+ marginparsep=\the\dimexpr.5\headsep\relax,%
+ \if@reversemargin%
+ reversemarginpar=true,%
+ \else%
+ reversemarginpar=false,%
+ \fi%
+ bindingoffset=\the\ta@bcor%
+ }%
+ \if@twoside%
+ \ifcase\tud@cdgeometry@num\relax\or\or% true
+ \appto\tud@cdgeometry@hmargin{,asymmetric}%
+ \else% symmetric/twoside
+ \appto\tud@cdgeometry@hmargin{,twoside}%
+ \fi%
+ \fi%
+ \if@twocolumn%
+ \appto\tud@cdgeometry@hmargin{,twocolumn}%
+ \fi%
+% \end{macrocode}
+% Für alle drei Varianten der vertikale Gleichanteil. Der Satzspiegel der
+% Version~v2.02 wird aus Gründen der Kompatibilität weiterhin vorgehalten.
+% \begin{macrocode}
+ \tud@if@v@lower{2.03}{%
+ \edef\tud@cdgeometry@vmargin{%
+ \tud@cdgeometry@hincl,%
+ top=\the\dimexpr.5\tud@len@both\relax,%
+ headheight=\the\headheight,%
+ headsep=\the\tud@len@headsep,%
+ bottom=\the\dimexpr.5\tud@len@both+\tud@dim@extrabottommargin\relax,%
+ \tud@cdgeometry@fincl,%
+ footskip=\the\dimexpr\tud@len@headsep+\footheight%
+ -1.25\baselineskip\relax%
+ }%
+ }{%
+ \edef\tud@cdgeometry@vmargin{%
+ \tud@cdgeometry@hincl,%
+ top=\the\tud@len@slimmargin,%
+ headheight=\the\headheight,%
+ headsep=\the\headsep,%
+ bottom=\the\dimexpr\tud@len@widemargin%
+ +\tud@dim@extrabottommargin\relax,%
+ \tud@cdgeometry@fincl,%
+ footskip=\the\dimexpr\tud@len@footsep+\footheight\relax%
+ }%
+ }%
+ \edef\tud@cdgeometry@tudmargin{%
+ ignorehead=true,%
+ top=\the\dimexpr\tud@len@topmargin+\tud@len@barheight%
+ +\tud@len@headsep\relax,%
+ headheight=\the\dimexpr\tud@len@topmargin+\tud@len@barheight%
+ -\tud@len@logoy\relax,%
+ headsep=\the\tud@len@headsep%
+ }%
+% \end{macrocode}
+% Es wird die Differenz der Höhen zwischen TUD-Kopf und Standardkopfzeile
+% für den Satzspiegel des \CDs berechnet.
+% \begin{macrocode}
+ \setlength\tud@len@areadiff{%
+ \dimexpr\tud@len@topmargin+\tud@len@barheight+\tud@len@headsep%
+ -\tud@len@slimmargin\relax%
+ }%
+% \end{macrocode}
+% Für die Kompatibilitätsvariante wieder mal die Extrawurst.
+% \begin{macrocode}
+ \tud@if@v@lower{2.03}{%
+ \setlength\tud@len@areadiff{%
+ \dimexpr\tud@len@topmargin+\tud@len@barheight+\tud@len@headsep%
+ -.5\tud@len@both\relax%
+ }%
+% \end{macrocode}
+% Wird die Fußzeile zum Satzspiegel gerechnet, ist für Seiten mit \DDC-Fuß
+% etwas Handarbeit notwendig, damit dieser nicht allzu weit nach oben ragt.
+% \begin{macrocode}
+ \setlength\tud@len@ddcdiff{.6\tud@len@topmargin}%
+ \edef\tud@cdgeometry@ddcmargin{%
+ \if@fincl%
+ bottom=\the\dimexpr.5\tud@len@both+\tud@dim@extrabottommargin%
+ +\tud@len@ddcdiff+\tud@len@headsep+\footheight%
+ -1.25\baselineskip\relax,%
+ \else%
+ bottom=\the\dimexpr.5\tud@len@both+\tud@dim@extrabottommargin%
+ +\tud@len@ddcdiff\relax,%
+ \fi%
+ footskip=\the\dimexpr\tud@len@headsep+\footheight%
+ -1.25\baselineskip+\tud@len@ddcdiff\relax,%
+ }%
+ }{}%
+ \fi%
+% \end{macrocode}
+% Es wird die Differenz der Höhen zwischen TUD-Kopf und Standardkopfzeile
+% für den Satzspiegel des \CDs berechnet. Außerdem wird die standardmäßige
+% vertikale Verschiebung der Überschriften festgelegt, wobei hier insbesondere
+% auf die Gestaltungshöhe DIN~A5 geachtet werden muss.
+% \begin{macrocode}
+ \ifdim\tud@len@areadiff<\z@\relax\setlength\tud@len@areadiff{\z@}\fi%
+ \global\tud@len@areadiff=\tud@len@areadiff%
+%<*book|report|article>
+ \setlength\tud@len@areaheadvskip{.22\tud@len@topmargin}%
+ \if@tud@cdgeometry@adjust%
+ \setlength\tud@len@areaheadvskip{.5\tud@len@areaheadvskip}%
+ \fi%
+ \global\tud@len@areaheadvskip=\tud@len@areaheadvskip%
+%</book|report|article>
+% \end{macrocode}
+% Für den Satzspiegel der Version~v2.02 wird außerdem die Länge für den höheren
+% Seitenfuß gesetzt.
+% \begin{macrocode}
+ \tud@if@v@lower{2.03}{%
+ \ifdim\tud@len@ddcdiff<\z@\relax\setlength\tud@len@ddcdiff{\z@}\fi%
+ \global\tud@len@ddcdiff=\tud@len@ddcdiff%
+ }{}%
+% \end{macrocode}
+% Es wird \cs{tud@cdgeometry@@@process} aufgerufen, was die zuvor definierten
+% Hilfsmakros nutzt, um alle benötigten Seitenlayouts optionsabhängig zu
+% erstellen.
+% \begin{macrocode}
+ \tud@cdgeometry@@@process%
+ }%
+% \end{macrocode}
+% Der Befehl \cs{tud@cdgeometry@@@process} setzt mit den zuvor definierten
+% Hilfsmakros die \pkg{geometry}-Optionen für sowohl die seitlichen als auch
+% die oberen sowie unteren Seitenränder und inkludiert ggf. Kopf- und Fußzeile
+% in den Satzspiegel. Die unterschiedlichen Layouts sind dabei \val{tudareaddc}
+% für TUD-Kopf und \DDC-Fuß, \val{tudarea} für den alleinigen TUD-Kopf sowie
+% \val{stdarea} für den normalen bzw. mit \pkg{typearea} berechneten
+% Satzspiegel.
+% \begin{macrocode}
+ \newcommand*\tud@cdgeometry@@@process{%
+ \tud@x@geometry@getlayout{\tud@cdgeometry@layout}%
+% \end{macrocode}
+% Für den Satzspiegel der Version~v2.02 wird als erstes der Satzspiegel für den
+% TUD-Kopf zusammen mit dem \DDC-Fuß erstellt. Das Einbeziehen der Fußzeile in
+% den Satzspiegel erfolgt nicht ggf. über die Option \opt{includefoot} sondern
+% manuell bei der Definition von \cs{tud@cdgeometry@ddcmargin}.
+% \begin{macrocode}
+ \tud@if@v@lower{2.03}{%
+ \tud@x@geometry@set{%
+ \tud@cdgeometry@layout,%
+ \tud@cdgeometry@hmargin,%
+ \tud@cdgeometry@vmargin,%
+ \tud@cdgeometry@tudmargin,%
+ \tud@cdgeometry@ddcmargin,%
+ ignorehead,ignorefoot%
+ }%
+ \tud@savegeometry{tudareaddc}%
+ }{}%
+% \end{macrocode}
+% Danach folgt der Seitenstil, mit dem TUD-Kopf und der Standardfußzeile.
+% \begin{macrocode}
+ \tud@x@geometry@set{%
+ \tud@cdgeometry@layout,%
+ \tud@cdgeometry@hmargin,%
+ \tud@cdgeometry@vmargin,%
+ \tud@cdgeometry@tudmargin%
+ }%
+ \tud@savegeometry{tudarea}%
+% \end{macrocode}
+% Als letztes wird der Standardsatzspiegel erstellt.
+% \begin{macrocode}
+ \tud@x@geometry@set{%
+ \tud@cdgeometry@layout,%
+ \tud@cdgeometry@hmargin,%
+ \tud@cdgeometry@vmargin%
+ }%
+ \tud@savegeometry{stdarea}%
+% \end{macrocode}
+% Je nach gewählter Option wird der aktuelle Satzspiegel für \pkg{typearea}
+% oder \pkg{geometry} gesichert.
+% \begin{macrocode}
+ \ifcase\tud@cdgeometry@num\relax% false
+ \tud@savegeometry{current@typearea}%
+ \or% custom
+ \tud@savegeometry{current@custom}%
+ \fi%
+% \end{macrocode}
+% Falls die (abermalige) Erstellung der Satzspiegel im Dokument erfolgt, sollte
+% anschließend auch der richtige Satzspiegel wieder ausgewählt werden.
+% \begin{macrocode}
+ \if@atdocument%
+ \ifstr{\tud@currentgeometry}{stdarea}{}{%
+ \expandafter\tud@loadgeometry\expandafter{\tud@currentgeometry}%
+ }%
+ \fi%
+ }%
+% \end{macrocode}
+% \end{macro}^^A \tud@cdgeometry@ddcmargin
+% \end{macro}^^A \tud@cdgeometry@tudmargin
+% \end{macro}^^A \tud@cdgeometry@vmargin
+% \end{macro}^^A \tud@cdgeometry@hmargin
+% \end{macro}^^A \tud@cdgeometry@layout
+% \end{macro}^^A \tud@cdgeometry@@@process
+% \end{macro}^^A \tud@cdgeometry@@process
+% \begin{macro}{\tud@cdgeometry@hincl}
+% \changes{v2.02}{2014/06/23}{geändert für das Paket \pkg{scrlayer-scrpage}}^^A
+% \begin{macro}{\tud@cdgeometry@fincl}
+% \begin{macro}{\tud@cdgeometry@mpincl}
+% \changes{v2.04}{2015/03/09}{neu}^^A
+% Diese Hilfsmakros werten die Optionen für das Einbeziehen von Kopf- und
+% Fußzeile sowie der Randnotizen aus.
+% \begin{macrocode}
+ \newcommand*\tud@cdgeometry@hincl{%
+ \if@hincl%
+ includehead=true%
+ \else%
+ includehead=false%
+ \fi%
+ }%
+ \newcommand*\tud@cdgeometry@fincl{%
+ \if@fincl%
+ includefoot=true%
+ \else%
+ includefoot=false%
+ \fi%
+ }%
+ \newcommand*\tud@cdgeometry@mpincl{%
+ \if@mincl%
+ includemp=true%
+ \else%
+ includemp=false%
+ \fi%
+ }%
+% \end{macrocode}
+% \end{macro}^^A \tud@cdgeometry@mpincl
+% \end{macro}^^A \tud@cdgeometry@fincl
+% \end{macro}^^A \tud@cdgeometry@hincl
+% \begin{macro}{\tud@cdgeometry@@init}
+% \changes{v2.04}{2015/03/10}{neu}^^A
+% Damit alle Satzspiegeleinstellungen korrekt vorgenommen und auch alle
+% Klassenoptionen korrekt verarbeitet werden, wird die Berechnung erstmalig mit
+% \cs{AtEndPreamble} am Ende der Präambel ausgeführt. Dabei werden sowohl der
+% benutzerdefinierte Satzspiegel als auch die durch \pkg{typearea} berechneten
+% Einstellungen gesichert.
+% \begin{macrocode}
+ \newcommand*\tud@cdgeometry@@init{%
+ \csuse{@ta@usegeometryfalse}%
+ \tud@x@geometry@getlayout{\tud@cdgeometry@layout}%
+ \tud@cs@store{tud@cdgeometry@num}%
+% \end{macrocode}
+% Bei der Initialisierung der zusätzlichen Satzspiegel soll keine Warnung
+% bezüglich der Angabe eines vergrößerten Fußbereichs erscheinen.
+% \begin{macrocode}
+ \tud@cs@store{tud@dim@extrabottommargin}%
+ \def\tud@dim@extrabottommargin{\z@}%
+% \end{macrocode}
+% Zunächst werden die benutzerdefinierten Einstellungen für den Satzspiegel
+% gesichert.
+% \begin{macrocode}
+ \tud@cdgeometry@reset{custom}%
+ \begingroup%
+ \epreto\tud@x@geometry@init{%
+ paperwidth=\the\paperwidth,paperheight=\the\paperheight,%
+ \tud@cdgeometry@layout,%
+ \tud@cdgeometry@mpincl,%
+ \if@reversemargin%
+ reversemarginpar=true,%
+ \else%
+ reversemarginpar=false,%
+ \fi%
+ bindingoffset=\the\ta@bcor,%
+ \tud@cdgeometry@hincl,%
+ \tud@cdgeometry@fincl,%
+ }%
+ \edef\tud@res@a{%
+ \endgroup%
+ \noexpand\tud@cs@use{geometry}{\tud@x@geometry@init,driver=none}%
+ \noexpand\@tud@x@geometry@fixmarginstrue%
+ }%
+ \tud@res@a%
+ \tud@cdgeometry@@process%
+ \tud@savegeometry{init@custom}%
+% \end{macrocode}
+% Und nun der Teil für \pkg{typearea}. Bei der Initialisierung werden mögliche
+% Warnungen des Paketes deaktiviert. Diese werden nur ausgegeben, wenn der
+% Schlüssel \opt{cdgeometry=typearea} angegeben wurde oder im Dokument mit
+% \cs{restoregeometry[typearea]} auf den initialen Satzspiegel umgestellt wird.
+% \begin{macrocode}
+ \tud@cdgeometry@reset{typearea}%
+ \tud@x@typearea@warnings@off[\tud@res@a]%
+ \tud@x@typearea@init%
+ \tud@x@typearea@warnings@on%
+ \tud@cdgeometry@@process%
+ \tud@savegeometry{init@typearea}%
+% \end{macrocode}
+% Alle gesammelten Warnungen von \pkg{typearea} werden dem initialisierten
+% Satzspiegel hinzugefügt.
+% \begin{macrocode}
+ \def\tud@res@b##1{%
+ \eappto\Gm@restore@@init@typearea{%
+ \noexpand\PackageWarningNoLine{typearea}{##1}%
+ }%
+ }%
+ \forlistloop\tud@res@b{\tud@res@a}%
+% \end{macrocode}
+% Hier werden die temporär geäanderten Einstellungen zurückgesetzt.
+% \begin{macrocode}
+ \tud@cs@restore{tud@cdgeometry@num}%
+ \tud@cs@restore{tud@dim@extrabottommargin}%
+% \end{macrocode}
+% Der Kopf im \CD der \TnUD erfordert einen eigenen Satzspiegel, der ggf. durch
+% \cs{tud@BeforeSelectAnyPageStyle} aktiviert bzw. deaktiviert wird.
+% \begin{macrocode}
+ \BeforeSelectAnyPageStyle{\tud@BeforeSelectAnyPageStyle{##1}}%
+% \end{macrocode}
+% Ganz zum Schluss wird der Satzspiegel für die aktuelle Einstellung von
+% \opt{cdgeometry} gesetzt.
+% \begin{macrocode}
+ \ifcase\tud@cdgeometry@num\relax% typearea
+ \tud@loadgeometry{init@typearea}%
+ \or% custom
+ \tud@loadgeometry{init@custom}%
+ \fi%
+ \@tud@x@geometry@fixmarginstrue%
+ \tud@cdgeometry@process%
+ \let\tud@cdgeometry@@init\relax%
+ }%
+% \end{macrocode}
+% \end{macro}^^A \tud@cdgeometry@@init
+% \begin{macro}{\tud@BeforeSelectAnyPageStyle}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% \changes{v2.04}{2015/04/21}{Auswahl der Schriften für Fußbereich ergänzt}^^A
+% \begin{macro}{\tud@currentgeometry}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% Mit \cs{tud@BeforeSelectAnyPageStyle} wird beim Umschalten des Seitenstils
+% ggf. der Satzspiegel geändert. Es wird der aktivierte Satzspiegel in dem
+% Makro \cs{tud@currentgeometry} gesichert, um darauf zu einem späteren
+% Zeitpunkt prüfen zu können.
+%
+% Für den Fall, dass das Dokument nicht ausschließlich mit dem Kopf im \CD
+% auf jeder Seite gesetzt wird, muss der komplette vertikale Satzspiegel
+% angepasst werden, sonst wäre der obere Rand optisch viel zu groß. Hierfür
+% wird das Paket \pkg{geometry} genutzt. Durch \cs{tud@cdgeometry@@process}
+% werden zwei~-- für die KOmpatibilitätsvariante drei~-- Layouts erstellt.
+% Diese können mit \cs{loadgeometry}\marg{Stil} geladen werden.
+% \begin{macrocode}
+ \newcommand*\tud@currentgeometry{}
+ \newcommand*\tud@BeforeSelectAnyPageStyle[1]{%
+% \end{macrocode}
+% Der \pgs{tudheadings}-Seitenstil wird mit dem Befehl \cs{newpairofpagestyles}
+% derart definiert, dass zwischen \pgs{tudheadings} und \pgs{plain.tudheadings}
+% auch mit \LaTeX-Standardseitenstilen \pgs{headings} bzw. \pgs{plain}
+% umgeschaltet werden kann. Dies wird hiermit beachtet.
+% \begin{macrocode}
+ \ifstr{#1}{\GetRealPageStyle{#1}}{%
+% \end{macrocode}
+% Für den Fall, das ein \pgs{tudheadings}-Seitenstil geladen werden soll, muss
+% der dazugehörige Satzspiegel ausgewählt werden\dots
+% \begin{macrocode}
+ \tud@if@tudheadings{#1}{%
+% \end{macrocode}
+% \dots wobei in der Version~v2.02 zwei unterschiedliche existierten, und
+% abhängig von der Verwendung des \DDC-Logos im Fuß waren.
+% \begin{macrocode}
+ \tud@if@v@lower{2.03}{%
+% \end{macrocode}
+% In diesem Fall werden die Seitenfußeinstellungen mit \cs{tud@ddc@check} in
+% \cs{@tempb} geschrieben und abhängig davon der richtige Satzspiegel geladen.
+% Dabei wird zuvor mit dem Wert aus \cs{tud@currentgeometry} geprüft, ob dies
+% überhaupt notwendig ist.
+% \begin{macrocode}
+ \tud@ddc@check%
+% \end{macrocode}
+% Das \DDC-Logo im Fuß ist nicht aktiviert.
+% \begin{macrocode}
+ \ifcase\@tempb\relax% \tud@ddc@foot@num=false
+ \ifstr{\tud@currentgeometry}{tudarea}{}{%
+ \tud@loadgeometry{tudarea}%
+ \gdef\tud@currentgeometry{tudarea}%
+ }%
+% \end{macrocode}
+% Das \DDC-Logo im Fuß ist aktiviert.
+% \begin{macrocode}
+ \else% \tud@ddc@foot@num!=false
+ \ifstr{\tud@currentgeometry}{tudareaddc}{}{%
+ \tud@loadgeometry{tudareaddc}%
+ \gdef\tud@currentgeometry{tudareaddc}%
+ }%
+ \fi%
+% \end{macrocode}
+% Ab der Version~v2.03 ist nur noch ein Satzspiegel vonnöten.
+% \begin{macrocode}
+ }{%
+ \ifstr{\tud@currentgeometry}{tudarea}{}{%
+ \tud@loadgeometry{tudarea}%
+ \gdef\tud@currentgeometry{tudarea}%
+ }%
+ }%
+% \end{macrocode}
+% Die Länge \cs{tud@len@areavskip} gibt an, wie groß die Differenz zwischen
+% Kopfhöhe zwischen aktuellem und dem speziellen \pgs{tudheadings}-Seitenstil
+% ist. Da diese in diesem Fall identisch sind, wird die Länge zu \cs{z@}
+% gesetzt.
+% \begin{macrocode}
+ \setlength\tud@len@areavskip{\z@}%
+% \end{macrocode}
+% Im Seitenfuß wird für die Seitenzahl und ggf. die Kolumnentitel die passende
+% Schrift verwendet.
+% \begin{macrocode}
+ \tud@komafont@set{pagenumber}{\usekomafont{tudheadings}}%
+ \tud@komafont@set{pagefoot}{\usekomafont{tudheadings}}%
+% \end{macrocode}
+% Dies ist der Fall, wenn kein \pgs{tudheadings}-Seitenstil geladen werden soll.
+% Zusätzlich zum Satzspeigel wird außerdem der Seitenstil \pgs{empty}
+% zurückgesetzt.
+% \begin{macrocode}
+ }{%
+ \ifstr{\tud@currentgeometry}{stdarea}{}{%
+ \tud@loadgeometry{stdarea}%
+ \gdef\tud@currentgeometry{stdarea}%
+ }%
+% \end{macrocode}
+% Die Länge \cs{tud@len@areavskip} wird auf den berechneten Wert gesetzt.
+% Nur für den Fall, dass die Kopfzeile zum Satzspiegel gerechnet wird und
+% dieser nicht durch \pkg{typearea} berechnet wurde, muss diese Länge etwas
+% angepasst werden.
+% \begin{macrocode}
+ \setlength\tud@len@areavskip{\tud@len@areadiff}%
+ \ifnum\tud@cdgeometry@num>\@ne\relax% true/symmetric/twoside
+ \if@hincl%
+ \addtolength\tud@len@areavskip{%
+ \dimexpr-\headheight-\tud@len@headsep\relax%
+ }%
+ \fi%
+ \fi%
+% \end{macrocode}
+% Die Schriften für Seitenzahl und Kolumnentitel werden zurückgesetzt.
+% \begin{macrocode}
+ \tud@komafont@unset{pagenumber}%
+ \tud@komafont@unset{pagefoot}%
+ }%
+% \end{macrocode}
+% Die Länge \cs{tud@len@areavskip} wird vorsichtshalber global gesetzt.
+% \begin{macrocode}
+ \global\tud@len@areavskip=\tud@len@areavskip%
+ }{}%
+ }
+% \end{macrocode}
+% \end{macro}^^A \tud@currentgeometry
+% \end{macro}^^A \tud@BeforeSelectAnyPageStyle
+% Damit sind alle notwendigen Satzspiegel für die unterschiedlichen Seitenstile
+% definiert. Im Normalfall werden durch \cs{tud@cdgeometry@@process} alle
+% benötigten Satzspiegel erstellt. Mit dem Setzen des Seitenstils wird der
+% jeweils richtige bzw. benötigte Satzspiegel ausgewählt.
+% \begin{macrocode}
+}
+% \end{macrocode}
+% \begin{macro}{\typearea}
+% \begin{macro}{\areaset}
+% \begin{macro}{\storereareas}
+% \begin{macro}{\tud@x@typearea@before}
+% \changes{v2.06}{2018/08/13}{neu}^^A
+% \begin{macro}{\tud@x@typearea@after}
+% \changes{v2.06}{2018/08/13}{neu}^^A
+% \begin{macro}{\tud@x@typearea@init}
+% \changes{v2.06}{2018/08/13}{neu}^^A
+% Für die Verwendung von \pkg{typearea} ist eine Sonderbehandlung notwendig,
+% falls mit \cs{geometry} eine Größe für den Druckbereich/das Layout angegeben
+% wurde. Dafür wird das Papierformat temporär auf die Größe des angegebenen
+% Layouts geändert bevor der Satzspiegel berechnet wird. Die Einstellungen in
+% der Präambel werden in \cs{tud@x@typearea@init} gesichert.
+% \begin{macrocode}
+\newcommand*\tud@x@typearea@before{%
+ \tud@skip@store{paperheight}%
+ \tud@skip@store{paperwidth}%
+ \begingroup%
+ \tud@cdgeometry@assignlayout%
+ \edef\tud@res@a{%
+ \endgroup%
+ \etex@unexpanded{\setlength\paperheight}{\the\tud@len@layoutheight}%
+ \etex@unexpanded{\setlength\paperwidth}{\the\tud@len@layoutwidth}%
+ }%
+ \tud@res@a%
+}
+\newcommand*\tud@x@typearea@after{%
+ \tud@skip@restore{paperheight}%
+ \tud@skip@restore{paperwidth}%
+ \if@atdocument%
+ \tud@cdgeometry@reset{typearea}%
+ \tud@cdgeometry@process%
+ \else%
+ \TUD@key@preset{cdgeometry}{false}%
+ \fi%
+}
+\newcommand*\tud@x@typearea@init{\recalctypearea}%
+% \end{macrocode}
+% Die notwendigen Patches für die Befehle aus \pkg{typearea}.
+% \begin{macrocode}
+\xpretocmd{\typearea}{%
+ \tud@x@typearea@before%
+ \def\tud@x@typearea@init{\typearea[#1]{#2}}%
+}{}{\tud@patch@wrn{typearea}}
+\xapptocmd{\typearea}{\tud@x@typearea@after}{}{\tud@patch@wrn{typearea}}
+\xpretocmd{\areaset}{%
+ \tud@x@typearea@before%
+ \begingroup%
+ \setlength\@tempdima{#2}%
+ \setlength\@tempdimb{#3}%
+ \edef\tud@res@a{%
+ \endgroup%
+ \noexpand\def\noexpand\tud@x@typearea@init{%
+ \noexpand\areaset[#1]{\the\@tempdima}{\the\@tempdimb}%
+ }%
+ }%
+ \tud@res@a%
+}{}{\tud@patch@wrn{areaset}}
+\xapptocmd{\areaset}{\tud@x@typearea@after}{}{\tud@patch@wrn{areaset}}
+% \end{macrocode}
+% Nach einer Wiederherstellung gespeicherter Satzspiegel durch \pkg{typearea}
+% werden die für die Seitenstile benötigten Satzspiegel mit \pkg{geometry} neu
+% erstellt.
+% \begin{macrocode}
+\tud@cs@store{storeareas}
+\renewcommand*\storeareas[1]{%
+ \begingroup
+ \tud@x@geometry@fixmargins%
+ \tud@cs@use{storeareas}{#1}%
+ \edef\tud@res@a{%
+ \endgroup%
+ \etex@unexpanded{\def#1}{%
+ \expandonce#1%
+ \def\noexpand\tud@cdgeometry@num{\tud@cdgeometry@num}%
+ }%
+ }%
+ \tud@res@a%
+}
+\AfterRestoreareas{\tud@cdgeometry@process}%
+% \end{macrocode}
+% \end{macro}^^A \tud@x@typearea@init
+% \end{macro}^^A \tud@x@typearea@after
+% \end{macro}^^A \tud@x@typearea@before
+% \end{macro}^^A \storereareas
+% \end{macro}^^A \areaset
+% \end{macro}^^A \typearea
+%
+% \iffalse
+%</class&body>
+%<*class&option>
+% \fi
+%
+% \begin{macro}{\tud@x@typearea@warnings@off}
+% \changes{v2.06}{2018/08/22}{neu}^^A
+% \begin{macro}{\tud@x@typearea@warnings@on}
+% \changes{v2.06}{2018/08/22}{neu}^^A
+% Das Paket \pkg{typearea} meldet schlechte Einstellungen für den Satzspiegel
+% mittels Warnungen an den Anwender. Diese sind allerdings~-- abhängig von der
+% gewählten Option opt{cdgeometry} für den Satzspiegel~-- gegebenefalls nicht
+% relevant. Da \TUDScript innerhalb von \cs{tud@cdgeometry@@init} am Ende der
+% Präambel ohnehin anhand von \cs{tud@x@typearea@init} den Satzspiegel von
+% \pkg{typearea} neu berechnet, werden alle relevanten Warnungen beim Laden des
+% Paketes deaktivert.
+%
+% Dem Befehl \cs{tud@x@typearea@warnings@off} kann im optionalen Argument ein
+% Makro übergeben werden, für welches eine \pkg{etoolbox}-Liste erzeugt wird,
+% in der alle Inhalte der ignorierten Warnungen gepseichert wird, um später auf
+% diese zurückgreifen zu können.
+% \begin{macrocode}
+\newcommand*\tud@x@typearea@warnings@off[1][]{%
+ \IfArgIsEmpty{#1}{}{\let#1\@empty}%
+ \tud@cs@store{PackageWarningNoLine}%
+ \renewcommand*\PackageWarningNoLine[2]{%
+ \@tud@res@swatrue%
+ \ifstr{##1}{typearea}{%
+ \ifstrstart{##2}{Bad type area settings!}{\@tud@res@swafalse}{}%
+ \ifstrstart{##2}{%
+ Maybe no optimal type area settings!%
+ }{\@tud@res@swafalse}{}%
+ \ifstrstart{##2}{Very low DIV value!}{\@tud@res@swafalse}{}%
+ }{}%
+ \if@tud@res@swa%
+ \tud@cs@use{PackageWarning}{##1}{##2}%
+ \else%
+ \IfArgIsEmpty{#1}{}{\listeadd#1{##2}}%
+ \fi%
+ }%
+}
+\newcommand*\tud@x@typearea@warnings@on{%
+ \tud@cs@restore{PackageWarningNoLine}%
+}
+\BeforePackage{typearea}{%
+ \tud@x@typearea@warnings@off%
+}
+\AfterPackage{typearea}{%
+ \tud@x@typearea@warnings@on%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@x@typearea@warnings@on
+% \end{macro}^^A \tud@x@typearea@warnings@off
+%
+% \iffalse
+%</class&option>
+%<*class&body>
+% \fi
+%
+% Die Seitenstile und Satzspiegel korrelieren sehr stark, weshalb das Paket
+% \pkg{scrlayer-scrpage} geladen sein muss und auch alle darauf aufbauenden
+% Einstellungen abgeschlossen sein müssen, um die Satzspiegel zu definieren.
+% Deshalb wird \cs{tud@cdgeometry@init} erst nach besagtem Paket aufgerufen.
+% Sollte das Laden des Paketes \pkg{geometry} verhindert werden, sind einige
+% wenige Befehle vorzuhalten.
+% \ToDo{Abhängigkeiten Satzspiegel<>Seitenstil beseitigen}[v2.07]
+% \begin{macrocode}
+\TUD@UnwindPackage{geometry}{%
+ \newcommand*\tud@cdgeometry@@init{%
+ \tud@cdgeometry@process%
+ \let\tud@cdgeometry@@init\relax%
+ }%
+ \newcommand*\tud@cdgeometry@@process{%
+ \setlength\tud@len@layoutwidth{\paperwidth}%
+ \setlength\tud@len@layoutheight{\paperheight}%
+ \tud@cdgeometry@set%
+ }%
+ \newcommand*\tud@x@geometry@fixmargins{}%
+}
+% \end{macrocode}
+% \begin{macro}{\tud@cdgeometry@@init}
+% \changes{v2.04}{2015/03/10}{neu}^^A
+% Wird das Paket \pkg{svg-extract} für das Erzeugen einer solitären Grafik
+% genutzt, so sollen keinerlei Einstellungen für den Satzspiegel vorgenommen
+% werden.
+% \begin{macrocode}
+\newcommand*\tud@cdgeometry@init{\tud@cdgeometry@@init}%
+\AfterPackage{svg-extract}{%
+ \renewcommand*\tud@cdgeometry@init{%
+ \if@svgx@standalone%
+ \@tud@x@scr@fontsize@settrue%
+ \else%
+ \tud@cdgeometry@@init%
+ \fi%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cdgeometry@@init
+% \begin{macro}{\cleardoubleoddpageusingstyle}
+% \begin{macro}{\cleardoubleevenpageusingstyle}
+% \begin{macro}{\cleardoublepageusingstyle}
+% Damit die Satzspiegelumstellungen nicht durchgeführt werden, wenn durch die
+% folgenden \KOMAScript-Befehle Leerseiten erzeugt werden, müssen diese minimal
+% angepasst werden.
+% \begin{macrocode}
+\patchcmd{\cleardoubleoddpageusingstyle}{\pagestyle}{%
+ \let\tud@BeforeSelectAnyPageStyle\@gobble\pagestyle%
+}{}{\tud@patch@wrn{cleardoubleoddpageusingstyle}}
+\patchcmd{\cleardoubleevenpageusingstyle}{\pagestyle}{%
+ \let\tud@BeforeSelectAnyPageStyle\@gobble\pagestyle%
+}{}{\tud@patch@wrn{cleardoubleevenpageusingstyle}}
+\patchcmd{\cleardoublepageusingstyle}{\pagestyle}{%
+ \let\tud@BeforeSelectAnyPageStyle\@gobble\pagestyle%
+}{}{\tud@patch@wrn{cleardoublepageusingstyle}}
+% \end{macrocode}
+% \end{macro}^^A \cleardoublepageusingstyle
+% \end{macro}^^A \cleardoubleevenpageusingstyle
+% \end{macro}^^A \cleardoubleoddpageusingstyle
+% \begin{macro}{\tud@ddc@enlargepage}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% Der Befehl wird nur für den Kompatibilitätsmodus zur Version~v2.02 benötigt
+% und für die Titelkopf- und Kapitelseiten verwendet. Er verkleinert die
+% entsprechenden Seiten, wenn für diese mit dem Befehl \cs{thispagestyle} einer
+% der \pgs{tudheadings}-Seitenstile gewählt wird \emph{und} das \DDC-Logo im
+% Fuß gesetzt werden soll. Der entsprechende Seitenstil kann im optionalen
+% Argument angegeben werden, wenn der Befehl bedingt ausgeführt werden soll.
+% \begin{macrocode}
+\tud@if@v@lower{2.03}{%
+ \newcommand*\tud@ddc@enlargepage[1][]{%
+ \tud@if@tudheadings{#1}{%
+ \ifstr{\tud@currentgeometry}{tudareaddc}{}{%
+ \tud@ddc@check%
+ \ifcase\@tempb\relax\else% \tud@ddc@foot@num!=false
+ \enlargethispage{-\tud@len@ddcdiff}%
+ \fi%
+ }%
+ }{}%
+ }%
+}{}
+% \end{macrocode}
+% \end{macro}^^A \tud@ddc@enlargepage
+%
+% \iffalse
+%</class&body>
+% \fi
+%
+% \Finale
+%
+\endinput
diff --git a/macros/latex/contrib/tudscr/source/tudscr-base.dtx b/macros/latex/contrib/tudscr/source/tudscr-base.dtx
new file mode 100644
index 0000000000..746e696de4
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/tudscr-base.dtx
@@ -0,0 +1,1467 @@
+% \CheckSum{821}
+% \iffalse meta-comment
+%
+% TUD-Script -- Corporate Design of Technische Universität Dresden
+% ----------------------------------------------------------------------------
+%
+% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2019
+%
+% ----------------------------------------------------------------------------
+%
+% This work may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License, version 1.3c of the license. The latest
+% version of this license is in http://www.latex-project.org/lppl.txt and
+% version 1.3c or later is part of all distributions of LaTeX 2005/12/01
+% or later and of this work. This work has the LPPL maintenance status
+% "author-maintained". The current maintainer and author of this work
+% is Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+% in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
+% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+% Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
+% oder später und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status
+% "author-maintained", wird somit allein durch den Autor verwaltet. Der
+% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: tudscr-base.dtx
+%<*dtx>
+% \fi
+%
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{tudscr-base.dtx}[2019/08/27 v2.06d TUD-Script\space%
+%
+% \iffalse
+%</dtx>
+%<package&base>\ProvidesPackage{tudscrbase}[%
+%<*package&base>
+%!TUD@Version
+%</package&base>
+%<package&base> package
+%<*dtx|package&base>
+% \fi
+ (basics for the bundle)%
+]
+% \iffalse
+%</dtx|package&base>
+%<*dtx>
+\documentclass[english,ngerman,xindy]{tudscrdoc}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{tudscrfonts}
+\KOMAoptions{parskip=half-}
+\usepackage{bookmark}
+\usepackage[babel]{microtype}
+
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tudscr-base.dtx}
+\title{\file{\filename}}
+\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
+\date{\fileversion\nobreakspace(\filedate)}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.02}{2014/06/23}{Paket \pkg{titlepage} nicht weiter unterstützt}^^A
+%
+% \section{Das Paket \pkg{tudscrbase} -- Basisdefinitionen für \TUDScript}
+%
+% Für die Erstellung der \TUDScript-Klassen werden die dafür benötigten Pakete
+% eingebunden und Steuerungsbefehle definiert. Die Klassen sowie einige Pakete
+% benötigen das Paket und laden dieses auch.
+%
+% \ToDo{%
+% Schnittstelle äquivalent zu \cs{KOMA@kav@\dots}? Dann hierfür
+% \pkg{etoolbox}-Listen und \cs{listadd} sowie \cs{listremove} nutzen
+% }[v2.??]
+% \ToDo{%
+% Teile im Quelltext suchen, die nur einmalig durchlaufen werden müssen
+% (bspw. notwendige Pakete und Schriften) und über aux-Eintrag abkürzen?!
+% siehe \cs{TUD@CheckPackage}%
+% }[v2.??]
+%^^A\BeforeClosingMainAux{%
+%^^A \if@tud@xxx\if@filesw%
+%^^A \immediate\write\@mainaux{%
+%^^A \string\global\string\let\string\tud@test@xxx\string\relax%
+%^^A }%
+%^^A \fi\fi%
+%^^A}
+%
+%
+% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%
+% \begin{macrocode}
+%<*load>
+\RequirePackage{tudscrbase}[\TUD@Version]
+%</load>
+% \end{macrocode}
+%
+% \subsection{Notwendige Pakete für \TUDScript}
+%
+% \iffalse
+%<*package&base>
+% \fi
+%
+% Das Paket \pkg{scrbase} wird zur Optionsdefinition benötigt, \pkg{scrlfile}
+% für verschiedene Hooks vor sowie nach Klassen und Paketen.
+% \begin{macrocode}
+\RequirePackage{scrbase}[2018/03/30]
+% \end{macrocode}
+% Die folgenden Pakete werden für die Manipulation bereits definierter
+% Makros sowie zur erweiterten Auswertung boolescher Ausdrücke benötigt.
+% \begin{macrocode}
+\RequirePackage{etoolbox}[2011/01/03]
+\RequirePackage{xpatch}[2012/10/02]
+\RequirePackage{letltxmacro}[2016/05/16]
+\RequirePackage{etexcmds}[2011/02/16]
+% \end{macrocode}
+% Das Paket \pkg{kvsetkeys} erweitert \pkg{keyval} um die Möglichkeit, das
+% Verhalten bei der Angabe eines nicht definierten Schlüssels festzulegen.
+% \ToDo{sollte eigentlich auch mit KOMA-Option \val{@else@} gehen}[v2.07]
+% \begin{macrocode}
+\RequirePackage{kvsetkeys}[2012/04/25]
+% \end{macrocode}
+% Mit dem Paket \pkg{trimspaces} können eventuell vorhandene Leerzeichen aus
+% einem Argument entfernt. Dies wird beispielsweise beim Einlesen von Feldern
+% oder bei der expliziten Auswahl einer Schrift des \CD sgenutzt.
+% \begin{macrocode}
+\RequirePackage{trimspaces}[2009/09/17]
+% \end{macrocode}
+%
+% \subsection{Grundlegende Befehle für \TUDScript}
+% \subsubsection{Temporäre Makros zur internen Verwendung durch \TUDScript}
+%
+% Hier werden Makros definiert, die allein für die interne temporäre Nutzung
+% gedacht sind.
+% \ToDo{Sämtliche \cs{@temp\dots}-Makros auf \cs{tud@res@\dots} ändern}[v2.??]
+% \ToDo{\cs{tud@reserved} in \cs{tud@res@?}, Achtung bei Dopplungen!}[v2.??]
+% \begin{macro}{\tud@reserved}
+% \changes{v2.05}{2015/10/27}{neu}^^A
+% \begin{macro}{\tud@res@a}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud@res@b}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud@res@c}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\if@tud@res@swa}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud@res@cnt}
+% \changes{v2.06}{2019/06/13}{neu}^^A
+% \begin{macro}{\tud@res@read}
+% \changes{v2.06}{2019/06/21}{neu}^^A
+% Makros zur temporären Verwendung.
+% \begin{macrocode}
+\newcommand*\tud@reserved{}
+\newcommand*\tud@res@a{}
+\newcommand*\tud@res@b{}
+\newcommand*\tud@res@c{}
+\newif\if@tud@res@swa
+\newcount\tud@res@cnt
+\newread\tud@res@read
+% \end{macrocode}
+% \end{macro}^^A \tud@res@read
+% \end{macro}^^A \tud@res@cnt
+% \end{macro}^^A \if@tud@res@swa
+% \end{macro}^^A \tud@res@c
+% \end{macro}^^A \tud@res@b
+% \end{macro}^^A \tud@res@a
+% \end{macro}^^A \tud@reserved
+% \begin{macro}{\tud@toks@}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% \begin{macro}{\eaddto@hook}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% Es wird ein token-Regsiter reserviert, welches im weiteren Verlauf an allen
+% möglichen Punkten verwendet wird. Mit \cs{eaddto@hook} wird~-- in Ergänzung
+% zu \cs{addto@hook}~-- ein Makro zum Anfügen des expandierten Arguments an ein
+% token-Register bereitgestellt.
+% \begin{macrocode}
+\newtoks\tud@toks@
+\newcommand*\eaddto@hook[2]{%
+ \expandafter\addto@hook\expandafter#1\expandafter{#2}%
+}
+% \end{macrocode}
+% \end{macro}^^A \eaddto@hook
+% \end{macro}^^A \tud@toks@
+%
+% \subsubsection{Robuster Test auf leeres Argument}
+%
+% \begin{macro}{\ifxblank}
+% Hiermit kann ein Argument geprüft werden, ob dieses blank ist (leer oder
+% Leerzeichen). In seiner Syntax ist er identisch zu \cs{ifblank}, allerdings
+% expandiert er im Gegensatz zu diesem das gegebene Argument.
+% \begin{macrocode}
+\newcommand*\ifxblank{\ifstr{}}
+% \end{macrocode}
+% \end{macro}^^A \ifxblank
+%
+% \subsubsection{Test auf booleschen Ausdruck in Form eines Strings}
+%
+% \begin{macro}{\ifstrbool}
+% \changes{v2.03}{2015/01/09}{neu}^^A
+% Dieser Befehl dient zum Testen, ob ein gegebener String als boolescher
+% Ausdruck interpretiert werden kann. Ist der String als \enquote{wahr}
+% interpretierbar, wird das zweite Argument ausgeführt. Kann der String als
+% \enquote{falsch} angesehen werden, dementsprechen das dritte. Ist der String
+% kein logischer Wert, kommt das letzte Argument zum Tragen. Die Syntax lautet:
+%
+% \cs{ifstrbool}\marg{Argument}\marg{Wahr}\marg{Falsch}\marg{Andernfalls}
+% \begin{macrocode}
+\newcommand*\ifstrbool[4]{%
+ \ifstr{#1}{true}{#2}{%
+ \ifstr{#1}{on}{#2}{%
+ \ifstr{#1}{yes}{#2}{%
+ \ifstr{#1}{false}{#3}{%
+ \ifstr{#1}{no}{#3}{%
+ \ifstr{#1}{off}{#3}{%
+ #4%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \ifstrbool
+%
+% \subsubsection{Test auf eine verwendbare Sprache}
+%
+% \begin{macro}{\iflanguageloaded}
+% \changes{v2.05}{2015/11/23}{neu}^^A
+% Hiermit kann getestet werden, ob das Argument als Sprache nutzbar ist.
+% \begin{macrocode}
+\newcommand*\iflanguageloaded[1]{%
+ \PackageWarning{tudscrbase}{%
+ Whether package `babel' nor package `polyglossia' has been loaded%
+ }%
+ \expandafter\@secondoftwo%
+}
+\AfterPackage*{babel}{%
+ \renewcommand*\iflanguageloaded[1]{%
+ \@expandtwoargs\in@{,#1,}{,\bbl@loaded,}%
+ \ifin@%
+ \expandafter\@firstoftwo%
+ \else%
+ \expandafter\@secondoftwo%
+ \fi%
+ }%
+}
+\AfterPackage*{polyglossia}{%
+ \renewcommand*\iflanguageloaded[1]{\ifcsdef{#1@loaded}}%
+}
+% \end{macrocode}
+% \end{macro}^^A \iflanguageloaded
+%
+% \subsubsection{Expansion geschützter Makros}
+%
+% Im \LaTeX-Kernel wird der Befehl \cs{@expandtwoargs} definiert, welcher zwei
+% Argumente in ein angegebenes Makro vollständig expandiert. Dabei erfolgt die
+% Expansion der beiden Argumente aufgrund der standardmäßigen Verwendung von
+% \cs{edef} allerdings vollständig und ohne die Beachtung von \cs{protect}.
+% \begin{macro}{\protected@expandtwoargs}
+% \changes{v2.02}{2014/11/13}{neu}^^A
+% Der Befehl \cs{protected@expandtwoargs} kann äquivalent genutzt werden,
+% lässt dabei aber mit \cs{protect} geschützte Makros unberührt.
+% \begin{macrocode}
+\providecommand*\protected@expandtwoargs[3]{%
+ \protected@edef\reserved@a{\noexpand#1{#2}{#3}}\reserved@a%
+}
+% \end{macrocode}
+% \end{macro}^^A \protected@expandtwoargs
+%
+% \subsubsection{Division für rationale Zahlen}
+%
+% Mit \LaTeXe{} kann~-- ohne die Verwendung zusätzlicher Pakete~-- nicht ohne
+% Weiteres eine Division durchgeführt werden, die als Ergenis eine rationale
+% Zahl liefert. Dem wird hier Abhilfe geleistet.
+% \begin{macro}{\tud@divide}
+% \changes{v2.04}{2015/04/09}{neu}^^A
+% Der Befehl erwartet im ersten Argument das Makro, in welches das Ergebnis
+% der Division expandiert werden soll, danach folgen Dividend und Divisor. Die
+% Berechnung erfolgt in einer Gruppe, damit die benötigten Längenregister nach
+% dieser erhalten bleiben.
+% \begin{macrocode}
+\newcommand*\tud@divide[3]{%
+ \begingroup%
+% \end{macrocode}
+% Die Division wird über temporäre Längenregister durchgeführt. Die zu
+% teilenden Zahlen werden normiert, wodurch auch Längen mit unterschiedlichen
+% Einheiten geteilt werden können.
+% \begin{macrocode}
+ \@defaultunits\@tempdima #2pt\relax\@nnil%
+ \@defaultunits\@tempdimb #3pt\relax\@nnil%
+% \end{macrocode}
+% Danach wird mit der größeren der beiden Zahlen der größtmögliche, durch
+% \val{2} teilbare Faktor zur Berechnung ermittelt.
+% \begin{macrocode}
+ \ifdim\@tempdima>\@tempdimb\relax%
+ \@whiledim\@tempdimb>1pt\relax\do{%
+ \setlength\@tempdima{.1\@tempdima}%
+ \setlength\@tempdimb{.1\@tempdimb}%
+ }%
+ \setlength\@tempdimc{\@tempdima}%
+ \else%
+ \@whiledim\@tempdima>1pt\relax\do{%
+ \setlength\@tempdima{.1\@tempdima}%
+ \setlength\@tempdimb{.1\@tempdimb}%
+ }%
+ \setlength\@tempdimc{\@tempdimb}%
+ \fi%
+ \@tempcnta=1\relax%
+ \@whiledim\dimexpr\@tempcnta\@tempdimc\relax<.01\maxdimen\do{%
+ \multiply\@tempcnta by 10\relax%
+ }%
+% \end{macrocode}
+% Mit dem im temporären Zählerregister \cs{@tempcnta} gespeicherten Faktor
+% wird der Dividend erweitert und der berechnete Quotient wieder gekürzt.
+% \begin{macrocode}
+ \setlength\@tempdimc{%
+ \dimexpr(\@tempcnta\@tempdima / \@tempdimb * \p@)\relax%
+ }%
+ \setlength\@tempdimc{\dimexpr \@tempdimc/\@tempcnta\relax}%
+% \end{macrocode}
+% Das Ergebnis wird in das angegebene Makro expandiert.
+% \begin{macrocode}
+ \edef\@tempa{\endgroup\def\noexpand#1{\strip@pt\@tempdimc}}%
+ \@tempa%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@divide
+%
+% \subsubsection{Erzwungene Kleinschreibung von Strings}
+%
+% Um angegebene Werte bei Schlüssel-Wert-Paaren oder Schlüsselwörter in
+% bestimmten Feldern mit Sicherheit erkennen zu können, werden diese zwingend
+% in Kleinbuchstaben geschieben.
+% \begin{macro}{\tud@lowerstring}
+% Das Makro wird mit \cs{tud@lowerstring}\marg{Zielmakro}\marg{String} benutzt.
+% \ToDo{geht das eleganter als mit \cs{expandafter}?}[v2.07]
+% \begin{macrocode}
+\newcommand*\tud@lowerstring[2]{%
+ \protected@edef#1{#2}%
+ \lowercase\expandafter{%
+ \expandafter\def\expandafter #1\expandafter{#1}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@lowerstring
+%
+% \subsubsection{Test auf vorhandene Dateien von Schriftdefinitionen}
+%
+% \begin{macro}{\tud@if@fdfileexists}
+% \changes{v2.06b}{2019/07/17}{neu}^^A
+% Der Befehl wird genutzt, um \file{\dots.fd}~Dateien zu suchen. Dabei muss
+% beachtet werden, dass \cs{IfFileExists} auf unixoiden Betriebssystemen
+% case-sensitiv ist.
+% \begin{macrocode}
+\newcommand*\tud@if@fdfileexists[2]{%
+ \begingroup%
+% \end{macrocode}
+% Der Schalter \cs{if@tud@res@swa} wird \val{false} gesetzt, falls die Schrift
+% gefunden wurde. Der zu prüfenden Schriftname wird dabei in unterschiedlichen
+% Varianten getestet. Zunächst die Standardvariante in Kleinschreibung\dots
+% \begin{macrocode}
+ \@tud@res@swatrue%
+ \tud@lowerstring\tud@res@a{#1#2.fd}%
+ \IfFileExists{\tud@res@a}{\@tud@res@swafalse}{}%
+% \end{macrocode}
+% \dots gefolgt von der Variante mit Kleinschreibung der Kodierung und dem
+% Namen der Schrift wie angegeben\dots
+% \begin{macrocode}
+ \if@tud@res@swa%
+ \tud@lowerstring\tud@res@a{#1}%
+ \edef\tud@res@a{\tud@res@a#2.fd}%
+ \IfFileExists{\tud@res@a}{\@tud@res@swafalse}{}%
+ \fi%
+% \end{macrocode}
+% \dots abgeschlossen mit der Variante wie gegeben.
+% \begin{macrocode}
+ \if@tud@res@swa%
+ \edef\tud@res@a{#1#2.fd}%
+ \IfFileExists{\tud@res@a}{\@tud@res@swafalse}{}%
+ \fi%
+% \end{macrocode}
+% Wurde die Schriftdatei gefunden, ist \cs{if@tud@res@swa}|=|\cs{iffalse}.
+% \begin{macrocode}
+ \if@tud@res@swa%
+ \aftergroup\@secondoftwo%
+ \else%
+ \aftergroup\@firstoftwo%
+ \fi%
+ \endgroup%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@if@fdfileexists
+%
+% \subsubsection{Sicherung und Wiederherstellung originaler Befehle und Längen}
+%
+% \begin{macro}{\tud@cs@letltx}
+% \changes{v2.06}{2019/06/13}{\cs{LetLtxMacro} zum Sichern originärer Makros}^^A
+% \begin{macro}{\tud@cs@store}
+% \changes{v2.06}{2018/07/15}{%
+% mit \cs{DeclareRobustCommand} definierte Befehle unterstüzt%
+% }^^A
+% \begin{macro}{\tud@cs@restore}
+% \changes{v2.06}{2018/07/15}{%
+% stellt originäre Makros auch wieder her, wenn diese mit \cs{undef}
+% zwischendurch \emph{undefiniert} gesetzt wurden%
+% }^^A
+% \begin{macro}{\tud@cs@reset}
+% \begin{macro}{\tud@cs@update}
+% \changes{v2.04}{2015/03/03}{neu}^^A
+% \begin{macro}{\tud@cs@use}
+% \begin{macro}{\tud@cs@check}
+% \changes{v2.03}{2015/01/09}{neu}^^A
+% Mit diesen Befehlen wird es möglich, Originalbefehle sichern, nutzen und
+% wiederherstellen zu können. Dies wird benötigt, um zwischen den einzelnen
+% Layouts über Optionseinstellungen zu wechseln und dabei von einem definierten
+% Anfangszustand auszugehen.
+%
+% Der Befehl \cs{tud@cs@letltx} nutzt intern \cs{LetLtxMacro} aus dem Paket
+% \pkg{letltxmacro}, um auch robust definierte Befehle korrekt zu sichern.
+% \begin{macrocode}
+\newcommand*\tud@cs@letltx[2]{%
+ \expandafter\expandafter\expandafter\LetLtxMacro%
+ \expandafter\csname #1\expandafter\endcsname\csname #2\endcsname%
+}
+% \end{macrocode}
+% Mit dem Aufruf \cs{tud@cs@store}\marg{Befehlsname} wird der im Argument
+% angegebene Befehl in einem neuem Makro \cs{@@tud@\meta{Befehlsname}}
+% gespeichert. Dieser kann danach beliebig angepasst werden. Soll der Befehl zu
+% einem späteren Zeitpunkt auf den Orginalzustand zurücksetzen, kann hierfür
+% jederzeit der Befehl \cs{tud@cs@reset}\marg{Befehlsname} verwendet werden.
+% Durch das Makro \cs{tud@cs@restore}\marg{Befehlsname} wird das mit
+% \cs{tud@cs@store} erstellte Hilfsmakro zusätzlich noch gelöscht. Der
+% ursprüngliche Befehl kann als solcher mit \cs{tud@cs@use}\marg{Befehlsname}
+% weiterhin genutzt werden. Ein zuvor bereits gesicherter Befehl kann mit
+% \cs{tud@cs@update}\marg{Befehlsname} auf die momentane Definition
+% aktualisiert werden.
+% \begin{macrocode}
+\newrobustcmd*\tud@cs@store[1]{%
+ \tud@cs@check{#1}%
+ \ifcsdef{@@tud@#1}{}{%
+ \tud@cs@letltx{@@tud@#1}{#1}%
+ }%
+}
+\newrobustcmd*\tud@cs@restore[1]{%
+% \end{macrocode}
+% Sollte ein zuvor gesichertes Makro mit \cs{undef} oder \cs{csundef}
+% zwischenzeitlich \emph{undefiniert} gesetzt worden sein, wird das originäre
+% Makro dennoch wiederhergestellt. Hierfür wird es zu \cs{relax} gesetzt, damit
+% die Überprüfung mit \cs{tud@cs@check} keinen Fehler erzeugt.
+% \begin{macrocode}
+ \ifcsdef{#1}{}{%
+ \ifcsdef{@@tud@#1}{%
+ \cslet{#1}{\relax}%
+ }{}%
+ }%
+% \end{macrocode}
+% Die eigentliche Wiederherstellung.
+% \begin{macrocode}
+ \tud@cs@check{#1}%
+ \ifcsdef{@@tud@#1}{%
+ \tud@cs@letltx{#1}{@@tud@#1}%
+ \csundef{@@tud@#1}%
+ }{}%
+}
+\newrobustcmd*\tud@cs@reset[1]{%
+ \tud@cs@check{#1}%
+ \ifcsdef{@@tud@#1}{%
+ \tud@cs@letltx{#1}{@@tud@#1}%
+ }{}%
+}
+\newrobustcmd*\tud@cs@update[1]{%
+ \tud@cs@check{#1}%
+ \ifcsdef{@@tud@#1}{%
+ \tud@cs@letltx{@@tud@#1}{#1}%
+ }{}%
+}
+\newrobustcmd*\tud@cs@use[1]{%
+ \tud@cs@check{#1}%
+ \ifcsdef{@@tud@#1}{%
+ \csuse{@@tud@#1}%
+ }{%
+ \csuse{#1}%
+ }%
+}
+% \end{macrocode}
+% Dieses Makro dient zum Überprüfen, ob der zu sichernde beziehungsweise
+% wiederherzustellende Befehl überhaupt definiert ist. Sollte das nicht der
+% Fall sein, wird ein Fehler ausgegeben.
+% \begin{macrocode}
+\newrobustcmd*\tud@cs@check[1]{%
+ \ifcsdef{#1}{}{%
+ \PackageError{tudscrbase}{%
+ `\@backslashchar#1' is not defined}{%
+ The command `\@backslashchar#1' was never defined. \MessageBreak%
+ Please contact the TUD-Script maintainer\MessageBreak%
+ via \tudscrmail. A bugfix is urgently required.%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cs@check
+% \end{macro}^^A \tud@cs@use
+% \end{macro}^^A \tud@cs@update
+% \end{macro}^^A \tud@cs@reset
+% \end{macro}^^A \tud@cs@restore
+% \end{macro}^^A \tud@cs@store
+% \end{macro}^^A \tud@cs@letltx
+% \begin{macro}{\tud@skip@store}
+% \changes{v2.04}{2015/03/02}{neu}^^A
+% \changes{v2.05}{2016/07/13}{Verwendung von \cs{tud@skip@check}}^^A
+% \begin{macro}{\tud@skip@restore}
+% \changes{v2.04}{2015/03/02}{neu}^^A
+% \changes{v2.05}{2016/07/13}{Verwendung von \cs{tud@skip@check}}^^A
+% \begin{macro}{\tud@skip@reset}
+% \changes{v2.05}{2016/07/13}{neu}^^A
+% \begin{macro}{\tud@skip@set}
+% \changes{v2.04}{2015/05/05}{neu}^^A
+% \changes{v2.05}{2016/07/13}{Verwendung von \cs{tud@skip@check}}^^A
+% \begin{macro}{\tud@skip@check}
+% \changes{v2.05}{2016/07/13}{neu}^^A
+% Hiermit können~-- äquivalent zum Sichern und Wiederherstellen von Befehlen~--
+% Längenregister abgespeichert werden.
+% \begin{macrocode}
+\newcommand*\tud@skip@store[1]{%
+ \tud@skip@check{#1}{%
+ \ifcsdef{@@tud@skip@#1}{}{%
+ \csedef{@@tud@skip@#1}{\expandafter\the\csname #1\endcsname}%
+ }%
+ }%
+}
+\newcommand*\tud@skip@restore[1]{%
+ \tud@skip@check{#1}{%
+ \ifcsdef{@@tud@skip@#1}{%
+ \csname #1\endcsname=\csname @@tud@skip@#1\endcsname%
+ \csundef{@@tud@skip@#1}%
+ }{}%
+ }%
+}
+\newcommand*\tud@skip@reset[1]{%
+ \tud@skip@check{#1}{%
+ \ifcsdef{@@tud@skip@#1}{%
+ \csname#1\endcsname=\csname @@tud@skip@#1\endcsname%
+ }{}%
+ }%
+}
+\newcommand*\tud@skip@set[2]{%
+ \tud@skip@check{#1}{%
+ \expandafter\setlength\csname #1\endcsname{#2}%
+ }%
+}
+\newcommand*\tud@skip@check[1]{%
+ \begingroup%
+ \@tempswafalse%
+ \expandafter\ifisskip\expandafter{\csname#1\endcsname}{\@tempswatrue}{}%
+ \expandafter\ifisdimen\expandafter{\csname#1\endcsname}{\@tempswatrue}{}%
+ \if@tempswa%
+ \aftergroup\@firstofone%
+ \else%
+ \aftergroup\@gobble%
+ \fi%
+ \endgroup%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@skip@check
+% \end{macro}^^A \tud@skip@set
+% \end{macro}^^A \tud@skip@reset
+% \end{macro}^^A \tud@skip@restore
+% \end{macro}^^A \tud@skip@store
+% \begin{macro}{\tud@patch@wrn}
+% \TUDScript verwendet die Möglichkeiten von \pkg{etoolbox} und \pkg{xpatch},
+% um mit den Makros (\cs{[x]apptocmd}, \cs{[x]pretocmd}, \cs{[x]patchcmd})
+% bereits definierte Befehle anzupassen. Falls dies nicht gelingt, wird eine
+% Warnung ausgegeben, die hier definiert wird.
+% \begin{macrocode}
+\newcommand*\tud@patch@wrn[1]{%
+ \PackageWarning{tudscrbase}{%
+ It wasn't possible to patch `\@backslashchar#1'\MessageBreak%
+ Please contact the TUD-Script maintainer\MessageBreak%
+ via \tudscrmail. Without a bugfix an\MessageBreak%
+ erroneous output may occur%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@patch@wrn
+%
+% \subsection{Schlüsseldefinitionen für \TUDScript}
+%
+% In Anlehnung an \KOMAScript{} werden hier Befehle zur Definition und
+% Ausführung unterschiedlicher Klassenoptionen mithilfe der Funktionen aus
+% dem \pkg{scrbase}-Paket erstellt.
+%
+% \begin{macro}{\TUDProcessOptions}
+% \begin{macro}{\TUDExecuteOptions}
+% \begin{macro}{\TUDoptions}
+% \begin{macro}{\TUDoption}
+% Zuerst ein paar Makros zur einfacheren Verwendung.
+% \begin{macrocode}
+\DefineFamily{TUD}
+\newcommand*\TUDProcessOptions{\FamilyProcessOptions{TUD}}
+\newcommand*\TUDExecuteOptions{\FamilyExecuteOptions{TUD}}
+\newcommand*\TUDoptions{\FamilyOptions{TUD}}
+\newcommand*\TUDoption{\FamilyOption{TUD}}
+% \end{macrocode}
+% \end{macro}^^A \TUDoption
+% \end{macro}^^A \TUDoptions
+% \end{macro}^^A \TUDExecuteOptions
+% \end{macro}^^A \TUDProcessOptions
+%
+% \subsubsection{Optionsdefinitionen}
+%
+% \begin{macro}{\TUD@key}
+% \begin{macro}{\TUD@key@define}
+% \changes{v2.06}{2018/07/19}{neu}^^A
+% \begin{macro}{\TUD@key@@define}
+% \changes{v2.06}{2018/07/19}{neu}^^A
+% \begin{macro}{\TUD@key@preset}
+% \changes{v2.06}{2018/07/19}{neu}^^A
+% Dies ist der zentrale Befehl zur Definition von Optionen, welcher die von
+% \KOMAScript{} Schnittstelle \cs{DefineFamilyKey} nutzt.
+%
+% Da sich die Klassenoptionen teilweise selbst gegenseitig beeinflussen oder
+% aber in bestimmten Fällen eine Option in Abhängigkeit von einer anderen
+% unterschiedliche Standardwerte annehmen soll, wird dafür eine Möglichkeit
+% geschaffen. Hierfür wird für jede Option ein korrelierende Schalter
+% \cs{if@tud@key@\meta{Schlüssel}@set} definiert. Dieser wird auf \val{true}
+% gesetzt, sobald der Schlüssel explizit gesetzt wurde, womit ein Standardwert
+% einer Klassenoption überschrieben werden kann. Das Setzen der Standardwerte
+% erfolgt intern mit dem Befehl \cs{TUD@key@preset}.
+% \begin{macrocode}
+\newcommand*\TUD@key[2][.\@currname.\@currext]{%
+% \end{macrocode}
+% Basierend auf dem Namen des Schalters wird die notwendige, boolesche Variable
+% erzeugt (\cs{if@tud@key@\meta{Schlüssel}@set}), welche im Falle des direkten
+% Aufrufs des Schlüssels, ein Überschreiben mit einem Standardwert verhindert.
+% \begin{macrocode}
+ \providebool{@tud@key@#2@set}%
+ \DefineFamilyMember[{#1}]{TUD}%
+ \kernel@ifnextchar[%]
+ {\TUD@key@define{#1}{#2}}%
+ {\TUD@key@@define{#1}{#2}}%
+}
+\newcommand*\TUD@key@define{}
+\def\TUD@key@define#1#2[#3]#4{%
+ \DefineFamilyKey[{#1}]{TUD}{#2}[{#3}]{%
+ #4%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \booltrue{@tud@key@#2@set}%
+ \fi%
+ }%
+}
+\newcommand*\TUD@key@@define{}
+\def\TUD@key@@define#1#2#3{%
+ \DefineFamilyKey[{#1}]{TUD}{#2}{%
+ #3%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \booltrue{@tud@key@#2@set}%
+ \fi%
+ }%
+}
+% \end{macrocode}
+% Es kann intern über \cs{if@tud@key@\meta{Schlüssel}@set} geprüft werden, ob
+% einem Schlüssel ein explizites Wert zugewiesen wurde. Sollte dies nicht der
+% Fall sein, kann dieser hiermit intern beliebig angepasst werden. Da es durch
+% das Setzen der Option mit \cs{TUDoption} zu einer Sperrung kommt, muss diese
+% folgend wieder rückgängig gemacht werden.
+% \begin{macrocode}
+\newcommand*\TUD@key@preset[2]{%
+ \ifbool{@tud@key@#1@set}{}{%
+ \TUDoption{#1}{#2}%
+ \boolfalse{@tud@key@#1@set}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \TUD@key@preset
+% \end{macro}^^A \TUD@key@@define
+% \end{macro}^^A \TUD@key@define
+% \end{macro}^^A \TUD@key
+% \begin{macro}{\TUD@set@ifkey}
+% \changes{v2.06}{2018/08/01}{forcierte Kleinschreibung Schlüsselwerte}^^A
+% \begin{macro}{\TUD@set@numkey}
+% \changes{v2.02}{2014/11/05}{neu}^^A
+% \changes{v2.06}{2018/08/01}{forcierte Kleinschreibung Schlüsselwerte}^^A
+% \begin{macro}{\TUD@bool@numkey}
+% \changes{v2.03}{2015/01/09}{neu}^^A
+% \begin{macro}{\TUD@set@dimenkey}
+% \changes{v2.05}{2016/06/15}{neu}^^A
+% \changes{v2.06}{2018/08/01}{forcierte Kleinschreibung Schlüsselwerte}^^A
+% \begin{macro}{\TUD@unknown@keyval}
+% Dies sind die Befehle zum Setzen der Optionen. Diese können entweder als
+% Schalter (\cs{TUD@set@ifkey}) oder aber mit mehreren möglichen Werten
+% (\cs{TUD@set@numkey}) definiert werden. Prinzipiell ist auch eine freie
+% Definition mit anschließender Abarbeitung ohne die zuvor genannten Befehle
+% möglich.
+% \begin{macrocode}
+\newcommand*\TUD@set@ifkey[3]{%
+ \tud@lowerstring\tud@res@a{#3}%
+ \edef\tud@res@b{%
+ \etex@unexpanded{\FamilySetBool{TUD}{#1}{#2}}{\tud@res@a}%
+ }\tud@res@b%
+}
+\newcommand*\TUD@set@numkey[4]{%
+ \tud@lowerstring\tud@res@a{#4}%
+ \edef\tud@res@b{%
+ \etex@unexpanded{\FamilySetNumerical{TUD}{#1}{#2}{#3}}{\tud@res@a}%
+ }\tud@res@b%
+}
+% \end{macrocode}
+% Um Dopplungen im Code zu vermeiden, werden für die numerische Schlüssel die
+% booleschen Standardwertzuweisungen in einem Makro gespeichert.
+% \begin{macrocode}
+\newcommand*\TUD@bool@numkey{%
+ {false}{0},{off}{0},{no}{0},{true}{1},{on}{1},{yes}{1}%
+}
+% \end{macrocode}
+% Mit \cs{TUD@set@dimenkey} wird der übergebene Längenwert im spezifiezierten
+% Makro gespeichert.
+% \begin{macrocode}
+\newcommand*\TUD@set@dimenkey[3]{%
+ \tud@lowerstring\tud@res@a{#3}%
+ \edef\tud@res@b{%
+ \etex@unexpanded{\FamilySetUseLengthMacro{TUD}{#1}{#2}}{\tud@res@a}%
+ }\tud@res@b%
+}
+% \end{macrocode}
+% Dieser Befehl wird lediglich pro forma definiert. An diesen kann eine Liste
+% möglicher Wertzuweisungen übergeben werden, welche durch \KOMAScript{}
+% derzeit jedoch nicht abgearbeitet und ausgegeben wird.
+% \begin{macrocode}
+\newcommand*\TUD@unknown@keyval{\FamilyUnknownKeyValue{TUD}}
+% \end{macrocode}
+% \end{macro}^^A \TUD@unknown@keyval
+% \end{macro}^^A \TUD@set@dimenkey
+% \end{macro}^^A \TUD@set@numkey
+% \end{macro}^^A \TUD@bool@numkey
+% \end{macro}^^A \TUD@set@ifkey
+% \begin{macro}{\tud@locked@newnum}
+% \begin{macro}{\tud@locked@num@preset}
+% \begin{macro}{\tud@locked@num@set}
+% Mit \cs{tud@locked@newnum}\marg{Name}\marg{Definition} lässt sich ein Makro
+% definieren, für das mit \cs{tud@locked@num@preset}\marg{Name}\marg{Definition}
+% eine Voreinstellung definiert werden kann, solange der Wert nicht mit
+% \cs{tud@locked@num@set}\marg{Name}\marg{Definition} explizit überschrieben
+% wurde.
+% \begin{macrocode}
+\newcommand*\tud@locked@newnum[2]{%
+ \expandafter\newcommand\expandafter*\csname#1\endcsname{#2}%
+ \newbool{#1@locked}%
+ \tud@num@set{#1}{#2}%
+}
+\newcommand*\tud@locked@num@preset[2]{%
+ \ifbool{#1@locked}{}{%
+ \tud@num@set{#1}{#2}%
+ \boolfalse{#1@locked}%
+ }%
+}
+\newcommand*\tud@locked@num@set[2]{%
+ \tud@num@set{#1}{#2}%
+ \booltrue{#1@locked}%
+}
+\newcommand*\tud@num@set[2]{%
+ \ifcsdef{#1}{%
+ \ifnumber{#2}{%
+ \csdef{#1}{#2}%
+ }{%
+ \PackageError{tudscrbase}{%
+ `#2' is not a valid numerical expression%
+ }{%
+ You set the numerical expression `\@backslashchar#1'\MessageBreak%
+ to value `#2', which isn't numerical.%
+ }%
+ }%
+ }{%
+ \PackageError{tudscrbase}{%
+ `\@backslashchar#1' was never defined%
+ }{%
+ You tried using the numerical expression `\@backslashchar#1'\MessageBreak%
+ but you didn't define it with `\string\tud@locked@newnum'.%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@locked@num@set
+% \end{macro}^^A \tud@locked@num@preset
+% \end{macro}^^A \tud@locked@newnum
+% \begin{macro}{\tud@locked@newbool}
+% \begin{macro}{\tud@locked@bool@preset}
+% \begin{macro}{\tud@locked@bool@set}
+% \begin{macro}{\tud@bool@set}
+% \changes{v2.05}{2015/07/03}{neu}^^A
+% Diese Makros dienen in Anlehnung an die vorherigen zum Definieren und Setzen
+% von sperrbaren booleschen Schaltern. Dabei wird \cs{tud@bool@set} definiert,
+% um nicht nur \val{true} und \val{false} sondern auch alle anderen bekannten
+% booleschen Zuweisungen (\val{yes} und \val{on} sowie \val{no} und \val{off})
+% mit diesen Befehlen verwenden zu können.
+% \begin{macrocode}
+\newcommand*\tud@locked@newbool[2][false]{%
+ \newbool{#2}%
+ \newbool{#2@locked}%
+ \tud@bool@set{#2}{#1}%
+}
+\newcommand*\tud@locked@bool@preset[2]{%
+ \ifbool{#1@locked}{}{%
+ \tud@bool@set{#1}{#2}%
+ \boolfalse{#1@locked}%
+ }%
+}
+\newcommand*\tud@locked@bool@set[2]{%
+ \tud@bool@set{#1}{#2}%
+ \booltrue{#1@locked}%
+}
+\newcommand*\tud@bool@set[2]{%
+ \ifstrbool{#2}{\booltrue{#1}}{\boolfalse{#1}}{%
+ \PackageError{tudscrbase}{%
+ `#2' is not a valid boolean expression%
+ }{%
+ You tried to set the boolean switch `\@backslashchar if#1'\MessageBreak%
+ to value `#2' but only `true' `on' and `yes' as well as \MessageBreak%
+ `false' `no' and `off' are valid values.%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@bool@set
+% \end{macro}^^A \tud@locked@bool@set
+% \end{macro}^^A \tud@locked@bool@preset
+% \end{macro}^^A \tud@locked@newbool
+%
+% \subsubsection{Parameterdefinitionen}
+%
+% \begin{macro}{\TUD@parameter@family}
+% \begin{macro}{\TUD@parameter@@family}
+% \begin{macro}{\TUD@parameter@checkfamily}
+% Mit \cs{TUD@parameter@family}\marg{Familienname}\marg{Definitionen} können
+% Schlüssel"=Wert"=Parameter für die optionalen Argumente von Befehle definiert
+% werden. Das erste Argument definiert den Familiennamen für den jeweiligen
+% Befehl, welcher eindeutig gewählt werden sollte. Dieser wird im Hilfsmakro
+% \cs{TUD@parameter@@family} gesichert. Dies soll im Zusammenspiel mit dem
+% Makro \cs{TUD@parameter@checkfamily} dafür sorgen, dass die im Folgenden
+% bereitgestellten Befehle \cs{TUD@parameter@def}, \cs{TUD@parameter@let} und
+% \cs{TUD@parameter@handler@macro}~-- welche die eigentliche Definition der
+% Parameter für den Benutzer bewerkstelligen~-- ohne die Angabe der Familie
+% nur innerhalb des zweiten Argumentes von \cs{TUD@parameter@family} verwendet
+% werden können.
+% \ToDo{%
+% Eine Katastrophe, dringend überarbeiten; generelle Lösung mit \cs{toks@}?%
+% KOMA-Option \val{@else@} verwenden?
+% }[v2.07]%
+% \begin{macrocode}
+\newcommand*\TUD@parameter@@family{}
+\newcommand*\TUD@parameter@family[2]{%
+ \xdef\TUD@parameter@@family{#1}%
+ #2%
+ \gdef\TUD@parameter@@family{}%
+}
+% \end{macrocode}
+% Dieser Befehl prüft, ob eine Familie für den Paramter definiert wurde.
+% \begin{macrocode}
+\newcommand*\TUD@parameter@checkfamily[2]{%
+ \ifxblank{#1}{%
+ \PackageError{tudscrbase}{%
+ No family for \@backslashchar#2 defined%
+ }{%
+ You have to use \@backslashchar#2\space within the\MessageBreak%
+ second argument of \string\TUD@parameter@family. The first\MessageBreak%
+ argument of \string\TUD@parameter@family\space has to be\MessageBreak%
+ a unique family name. Alternatively, you can specify\MessageBreak%
+ the family name within the optional argument of\MessageBreak%
+ \@backslashchar#2.%
+ }%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \TUD@parameter@checkfamily
+% \end{macro}^^A \TUD@parameter@@family
+% \end{macro}^^A \TUD@parameter@family
+% \begin{macro}{\TUD@parameter@def}
+% \begin{macro}{\TUD@parameter@let}
+% \changes{v2.02}{2014/07/25}{Beachtung der gegebenen Standardwerte}^^A
+% \cs{TUD@parameter@def}\marg{Name}\oarg{Säumniswert}\marg{Verarbeitung} nutzt
+% \cs{define@key} aus dem \pkg{keyval}-Paket, um einen Schlüssel und dessen
+% Verarbeitung zu definieren, wobei auf den zugewiesenen Wert innerhalb des
+% zweiten obligatorischen Argumentes mit |#1| zugegriffen werden kann.
+% \begin{macrocode}
+\newcommand*\TUD@parameter@def[1][\TUD@parameter@@family]{%
+ \TUD@parameter@checkfamily{#1}{TUD@parameter@def}%
+ \expandafter\define@key\expandafter{#1}%
+}
+% \end{macrocode}
+% Mit \cs{TUD@parameter@let}\marg{Name}\marg{Name} kann äquivalent zur
+% \mbox{\TeX-Primitive \cs{let}} die Definition der Verarbeitung eines
+% Parameters auf einen weiteren übertragen werden.
+% \begin{macrocode}
+\newcommand*\TUD@parameter@let[3][\TUD@parameter@@family]{%
+ \TUD@parameter@checkfamily{#1}{TUD@parameter@let}%
+ \@expandtwoargs{\csletcs}{KV@#1@#2}{KV@#1@#3}%
+ \@expandtwoargs{\csletcs}{KV@#1@#2@default}{KV@#1@#3@default}%
+}
+% \end{macrocode}
+% \end{macro}^^A \TUD@parameter@let
+% \end{macro}^^A \TUD@parameter@def
+% \begin{macro}{\TUD@parameter@set}
+% \changes{v2.05}{2016/05/26}{robustere Verarbeitung von Default-Argumenten}^^A
+% \begin{macro}{\TUD@parameter@nokey}
+% \changes{v2.05}{2016/05/26}{neu}^^A
+% Mit \cs{TUD@parameter@set}\marg{Familienname}\marg{Parameterliste} wird die
+% Verarbeitung aller gegebenen Parameter veranlasst. Normalerweise wird dieser
+% Befehl \emph{nicht} innerhalb des Argumentes von \cs{TUD@parameter@family}
+% verwendet. In jedem Fall muss die zu verwendende Familie angegeben werden.
+% \begin{macrocode}
+\newcommand*\TUD@parameter@nokey{@nokey@}
+\newcommand*\TUD@parameter@set[2]{%
+ \IfArgIsEmpty{#2}{}{%
+% \end{macrocode}
+% Hierfür wird die angegebene Parameterliste sukzessive abgearbeitet. Elemente,
+% welche in Schlüssel"=Wert"=Syntax angegeben wurden, bleiben unverändert\dots
+% \begin{macrocode}
+ \let\@tempb\@empty%
+ \def\@tempa##1{%
+ \@expandtwoargs\in@{=}{##1}%
+ \ifin@%
+ \appto\@tempb{##1,}%
+ \else%
+% \end{macrocode}
+% \dots ebenso wie Schlüssel ohne Wert, falls diese definiert wurden. Zu
+% beachten ist, dass es mit \cs{TUD@parameter@handler@value} respektive
+% \cs{TUD@parameter@handler@default} auch möglich ist, für einen mit einem der
+% beiden Makros gewählten Schlüssel, lediglich den passenden Wert anzugeben.
+% Dies wird genutzt, um optionale Argumente direkt für den Hauptparameter eines
+% Makros oder einer Umgebung~-- wie beispielsweise für eine Überschrift~--
+% nutzen zu können, aber zusätzlich die Möglichkeit zu bieten, auch eine
+% Parameterliste zu verwenden. Hierfür werden Umlaute sowie das \enquote*{ß}
+% unschädlich gemacht.
+% \begin{macrocode}
+ \begingroup%
+ \let\IeC\@firstofone%
+ \def\"####1{####1e}%
+ \def\ss{ss}%
+ \def\SS{SS}%
+ \protected@edef\tud@reserved{%
+ \endgroup%
+ \noexpand\protected@edef\noexpand\@tempc{KV@#1@##1}%
+ }%
+ \tud@reserved%
+ \ifcsdef{\@tempc}{%
+ \appto\@tempb{##1,}%
+ }{%
+ \protected@eappto\@tempb{\TUD@parameter@nokey=##1,}%
+ }%
+ \fi%
+ }%
+ \forcsvlist\@tempa{#2}%
+ \@expandtwoargs\kvsetkeys{#1}{\@tempb}%
+ }%
+}
+% Ursprünglich entwickelte sich dieser Ansatz aus der Situation, dass das Makro
+% \cs{maketitle} in seiner Standarddefinition ein optionales Argument für eine
+% Seitenzahl bereithält, bei den \TUDScript-Klassen jedoch auch die Möglichkeit
+% besteht, verschiedene zusätzliche Parameter für diesen Befehl zu verwenden.
+% Um allerdings für den Anwender das gewohnte Vorgehen beibehalten zu können,
+% wurde diese Sonderbehandlung implementiert.
+% \end{macrocode}
+% \end{macro}^^A \TUD@parameter@nokey
+% \end{macro}^^A \TUD@parameter@set
+% \begin{macro}{\TUD@parameter@handler@macro}
+% \changes{v2.05}{2016/05/26}{robustere Verarbeitung von Default-Argumenten}^^A
+% Durch \cs{TUD@parameter@handler@macro} kann definiert werden, wie mit einem
+% zuvor nicht mit \cs{TUD@parameter@def} definiertem Parameter beziehungsweise
+% gewöhnlichem optionalen Argument umzugehen ist. Dabei wird unterschieden, ob
+% es sich bei dem unbekannten Parameter um ein normales optionales Argument
+% oder um eine Angabe in Schlüssel-Wert-Syntax handelt. Dabei wurden einfache
+% optionale Argumente zuvor durch \cs{TUD@parameter@set} dem Schlüssel
+% \cs{TUD@parameter@nokey} als Wert zugewiesen, um Umlaute etc. ohne Bedenken
+% verwenden zu können.
+%
+% Das erste obligatorische Argument von \cs{TUD@parameter@handler@macro} wird
+% für die Verarbeitung unbekannter Schlüssel-Wert-Paare genutzt, das zweite für
+% einfache optionale Argumente.
+% \ToDo{%
+% Eine Katastrophe, dringend überarbeiten; generelle Lösung mit \cs{toks@}?%
+% KOMA-Option \val{@else@} verwenden?
+% }[v2.07]%
+% \begin{macrocode}
+\newcommand*\TUD@parameter@handler@macro[3][\TUD@parameter@@family]{%
+ \TUD@parameter@checkfamily{#1}{TUD@parameter@handler@macro}%
+ \expandafter\kv@set@family@handler\expandafter{#1}{%
+ \ifstr{\kv@key}{\TUD@parameter@nokey}{#3}{#2}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \TUD@parameter@handler@macro
+% \begin{macro}{\TUD@parameter@handler@value}
+% \changes{v2.05}{2016/05/26}{neu}^^A
+% Mit diesem Makro wird einem optionalen Argument, welches ohne Schlüssel
+% angegeben wurde, ein expliziter Parameter zugewiesen, welcher damit gesetzt
+% wird. Unbekannte Schlüssel-Wert-Argumente werden durch \cs{kv@handled@false}
+% immer als Fehler zurückgemeldet.
+% \begin{macrocode}
+\newcommand*\TUD@parameter@handler@value[2][\TUD@parameter@@family]{%
+ \TUD@parameter@checkfamily{#1}{TUD@parameter@handler@value}%
+ \protected@edef\@tempa{%
+ \noexpand\TUD@parameter@set{#1}{#2=\noexpand\kv@value}%
+ }%
+ \def\@tempb{\TUD@parameter@handler@macro[#1]{\kv@handled@false}}%
+ \expandafter\@tempb\expandafter{\@tempa}%
+}
+% \end{macrocode}
+% \end{macro}^^A \TUD@parameter@handler@value
+% \begin{macro}{\TUD@parameter@handler@default}
+% Hiermit kann sowohl die zu verwendende Sprache als auch die Anzahl der
+% gewünschten Spalten für bestimmte Umgebungen ohne die explizite Angabe eines
+% Schlüssels festgelegt werden. Momentan betrifft das die beiden Umgebungen
+% \env{abstract} und \env{tudpage} sowie Befehle und Umgebungen, welche auf
+% letzterer basieren. Unbekannte Argumente in Schlüssel-Wert-Syntax werden
+% nicht unterstützt.
+% \begin{macrocode}
+\newcommand*\TUD@parameter@handler@default[2][\TUD@parameter@@family]{%
+ \TUD@parameter@checkfamily{#1}{TUD@parameter@handler@default}%
+ \ifxblank{#2}{%
+ \def\@tempa{\let\tud@reserved\relax}%
+ }{%
+ \def\@tempa{\def\tud@reserved{#2=\kv@value}}%
+ }%
+ \appto\@tempa{%
+ \ifstr{\kv@value}{twocolumn}{\def\kv@value{2}}{}%
+ \ifnumber{\kv@value}{\def\tud@reserved{columns=\kv@value}}{}%
+ \iflanguageloaded{\kv@value}{\def\tud@reserved{language=\kv@value}}{}%
+ \ifx\tud@reserved\relax%
+ \PackageError{tudscrbase}{%
+ Unknown default value `\kv@value'%
+ }{%
+ If `\kv@value' is a language, you haven't loaded it. \MessageBreak%
+ Otherwise, there's no handler for the given value. \MessageBreak%
+ You should specify a certian key (<key>=\kv@value).%
+ }%
+ \fi%
+ }%
+ \protected@eappto\@tempa{%
+ \noexpand\ifx\noexpand\tud@reserved\noexpand\relax\noexpand\else%
+ \noexpand\TUD@parameter@set{#1}{\noexpand\tud@reserved}%
+ \noexpand\fi%
+ }%
+ \def\@tempb{\TUD@parameter@handler@macro[#1]{\kv@handled@false}}%
+ \expandafter\@tempb\expandafter{\@tempa}%
+}
+% \end{macrocode}
+% \end{macro}^^A \TUD@parameter@handler@default
+% \begin{macro}{\TUD@parameter@error}
+% Das Makro \cs{TUD@parameter@wrn}\marg{Parameter}\marg{Werteliste} gibt für
+% den Fall einer ungültigen Wertzuweisung an einen bestimmten \meta{Parameter}
+% eine Warnung mit einem entsprechenden Hinweis auf gültige Werte innerhalb von
+% \meta{Werteliste} aus.
+% \begin{macrocode}
+\newcommand*\TUD@parameter@error[2]{%
+ \PackageError{tudscrbase}{Unsupported value for parameter `#1'}{%
+ `#1' can only be used with values:\MessageBreak#2%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \TUD@parameter@error
+%
+% \subsection{Ausführung von paketspezifischem Quellcode}
+%
+% Ab und an ist es notwendig, bestimmten Quelltext gezielt in Abhängigkeit vom
+% Ladezustand eines Paketes auszuführen.
+% \begin{macro}{\TUD@UnwindPackage}
+% \changes{v2.05}{2015/10/28}{neu}^^A
+% Dieser Befehl dient zur Ausführung von Quelltext, falls ein Paket bis zum
+% Ende der Dokumentpräambel nicht geladen wurde. Im ersten obligatorischen
+% Argument wird das Paket angegeben, im zweiten der Quellcode.
+% \begin{macrocode}
+\newcommand*\TUD@UnwindPackage[2]{\AtEndPreamble{\@ifpackageloaded{#1}{}{#2}}}
+\@onlypreamble\TUD@UnwindPackage
+% \end{macrocode}
+% \end{macro}^^A \TUD@UnwindPackage
+% \begin{macro}{\TUD@CheckPackage}
+% \changes{v2.06}{2019/06/21}{neu}^^A
+% \begin{macro}{\tud@if@packagelater@exists}
+% \changes{v2.06}{2019/06/21}{neu}^^A
+% Mit \cs{TUD@CheckPackage} wird geprüft, ob ein Paket mindestens in der
+% angegebenen Version existiert. Sollte das Paket in einer früheren Version
+% existieren, wird eine Warnung ausgegeben. Dabei wird das Paket \emph{nicht}
+% geladen. Damit lässt sich sicherstellen, dass beispielsweise Schriftdateien
+% in einer bestimmten Version vorhanden sind, ohne diese durch das Paket selbst
+% zu laden. Ist das Paket gar nicht installiert, wird durch den Aufruf von
+% \cs{RequirePackage} ein Fehler erzeugt respektive MiKTeX zur automatischen
+% Nachinstallation animiert.
+% \begin{macrocode}
+\newcommand*\TUD@CheckPackage[2]{%
+ \tud@if@packagelater@exists{#1}{#2}{}{%
+ \PackageWarningNoLine{tudscrbase}{%
+ The version `#2' of package `#1'\MessageBreak%
+ is urgently required. An erroneous output\MessageBreak
+ may occur. Please update your distribution%
+ }%
+ \IfFileExists{#1.sty}{}{\RequirePackage{#1}[#2]}%
+ }%
+}
+\@onlypreamble\TUD@CheckPackage
+% \end{macrocode}
+% Hiermit wird geprüft, ob ein installiertes Paket in einer bestimmten Version
+% installiert ist, ohne dieses zu laden. Hierfür wird die Datei zeilenweise
+% gelesen, bis der Eintrag \cs{ProvidesPackage\marg{Paketname}\oarg{Version}}
+% gefunden wird.
+% \begin{macrocode}
+\newcommand*\tud@if@packagelater@exists[2]{%
+ \begingroup%
+ \let\tud@res@a\@empty%
+ \def\tud@res@b[##1]{\def\tud@res@a{##1}}%
+ \def\ProvidesPackage##1{%
+ \@ifnextchar[%]
+ {\tud@res@b}{\tud@res@b[]}%
+ }%
+ \IfFileExists{#1.sty}{%
+ \openin\tud@res@read=#1.sty%
+ \@tud@res@swatrue%
+ \loop%
+ \read\tud@res@read to\tud@res@c%
+ \@expandtwoargs\in@{\string\ProvidesPackage}%
+ {\expandafter\detokenize\expandafter{\tud@res@c}}%
+ \ifin@%
+ \@tud@res@swafalse%
+ \tud@res@c%
+ \fi%
+ \ifeof\tud@res@read\@tud@res@swafalse\fi%
+ \if@tud@res@swa%
+ \repeat%
+ \closein\tud@res@read%
+ }{}%
+ \edef\tud@res@a{\endgroup\noexpand\@ifl@t@r{\tud@res@a}{#2}}
+ \tud@res@a%
+}
+\@onlypreamble\tud@if@packagelater@exists
+% \end{macrocode}
+% \end{macro}^^A \tud@if@packagelater@exists
+% \end{macro}^^A \TUD@CheckPackage
+% \begin{macro}{\TUD@RecommendPackage}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% Bestimmte Pakete sind für die Funktionalität von \TUDScript empfohlen, aber
+% nicht zwingend erforderlich. Sind diese nicht vorhanden, wird eine Warnung
+% ausgegeben.
+% \begin{macrocode}
+\newcommand*\TUD@RecommendPackage[1]{%
+ \kernel@ifnextchar[%]
+ {\TUD@@RecommendPackage#1}%
+ {\TUD@@RecommendPackage#1[]}%
+}
+\@onlypreamble\TUD@RecommendPackage
+\newcommand*\TUD@@RecommendPackage{}
+\def\TUD@@RecommendPackage#1[#2]{%
+ \IfFileExists{#1.sty}{%
+ \RequirePackage{#1}[#2]%
+ }{%
+ \PackageWarning{tudscrbase}{%
+ The usage of package `#1' (#2) is\MessageBreak%
+ recommended but it isn't installed%
+ }%
+ }%
+}
+\@onlypreamble\TUD@@RecommendPackage
+% \end{macrocode}
+% \end{macro}^^A \TUD@RecommendPackage
+% \begin{macro}{\TUD@AfterPackage@set}
+% \changes{v2.04}{2015/03/09}{neu}^^A
+% \begin{macro}{\TUD@AfterPackage@do}
+% \changes{v2.03}{2015/02/15}{neu}^^A
+% Mit diesen beiden Befehlen wird die Ausführung von Quellcode erst nach dem
+% Laden des gewünschten Paketes oder~-- falls das Paket geladen wurde~--
+% direkt im Dokument ausgeführt. Im ersten Argument wird das Paket angegeben,
+% im zweiten der Quellcode.
+% \begin{macrocode}
+\newcommand*\TUD@AfterPackage@set[1]{%
+ \newbool{@tud@#1@loaded}%
+ \AfterPackage!{#1}{\booltrue{@tud@#1@loaded}}%
+}
+\newcommand*\TUD@AfterPackage@do[2]{%
+ \ifcsdef{if@tud@#1@loaded}{%
+ \if@atdocument%
+ \ifbool{@tud@#1@loaded}{#2}{}%
+ \else%
+ \AfterPackage!{#1}{#2}%
+ \fi%
+ }{%
+ \PackageError{tudscrbase}{\string\TUD@AfterPackage@set{#1} missing}{%
+ You have to set \string\TUD@AfterPackage@set{#1} before\MessageBreak%
+ the usage of \string\TUD@AfterPackage@do{#1}{<code>} is\MessageBreak%
+ possible.%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \TUD@AfterPackage@do
+% \end{macro}^^A \TUD@AfterPackage@set
+%
+% \iffalse
+%</package&base>
+% \fi
+%
+% \subsection{Bedingt verzögerte Ausführung von \KOMAScript-Optionen}
+%
+% \begin{macro}{\TUD@KOMAoptions}
+% \changes{v2.05}{2015/07/17}{neu}^^A
+% Dieses Makro wird verwendet, um innerhalb der \TUDScript-Klassen zu
+% unterschieden, wie eine \KOMAScript-Option auszuführen ist. Wurde bereits
+% das Paket \pkg{scrextend} oder eine \KOMAScript-Klasse geladen, erfolgt die
+% Ausführung des Arguments direkt über \cs{KOMAoptions}. Andernfalls wird das
+% angegebene Argument an die zuladende Klasse durchgereicht.
+% \begin{macrocode}
+%<*package&base>
+\newcommand*\TUD@KOMAoptions[1]{}
+\ifundef{\KOMAClassName}{%
+ \renewcommand*\TUD@KOMAoptions[1]{%
+ \PackageWarning{tudscrbase}{%
+ You should load package `scrextend' right after the\MessageBreak%
+ documentclass. Option \string\TUD@KOMAoptions{`#1'} is gobbled%
+ }%
+ }%
+ \AfterPackage*{scrextend}{\let\TUD@KOMAoptions\KOMAoptions}%
+}{%
+ \let\TUD@KOMAoptions\KOMAoptions%
+}
+%</package&base>
+% \end{macrocode}
+% Nach dem Laden einer \TUDScript-Klasse wird der Befehl so angepasst, dass
+% dieser vor dem Laden der dazugehörigen \KOMAScript-Elternklasse die Optionen
+% einfach durchreicht. Nach dem Laden der Klasse steht dann \cs{KOMAoptions}
+% zur Verfügung.
+% \begin{macrocode}
+%<*load&class>
+%<*!inherit>
+\renewcommand*\TUD@KOMAoptions[1]{\PassOptionsToClass{#1}{\TUD@Class@KOMA}}
+\AfterClass{\TUD@Class@KOMA}{\let\TUD@KOMAoptions\KOMAoptions}
+%</!inherit>
+%<*inherit>
+\renewcommand*\TUD@KOMAoptions[1]{\PassOptionsToClass{#1}{\TUD@Class@Parent}}
+\AfterClass{\TUD@Class@Parent}{\let\TUD@KOMAoptions\KOMAoptions}
+%</inherit>
+%</load&class>
+% \end{macrocode}
+% \end{macro}^^A \TUD@KOMAoptions
+%
+% \iffalse
+%<*class&option>
+% \fi
+%
+% \section{Zusätzliches für die \TUDScript-Klassen}
+%
+% \subsection{Erweiterung von \KOMAScript-Schriftelementen}
+%
+% \begin{macro}{\tud@komafont@set}
+% \begin{macro}{\tud@komafont@unset}
+% \begin{macro}{\tud@komafont@reset}
+% \changes{v2.02}{2014/08/24}{neu}^^A
+% Es wird die Möglichkeit geschaffen, bestimmten Schriftelementen weitere
+% Eigenschaften mitzugeben. Damit dies optionsabhängig geschehen kann und
+% \cs{addtokomafont} nur einmalig verwendete werden muss, wird im Zweifelsfall
+% einem Schriftelement ein Hilfsmakro \cs{tud@komafont@\meta{Element}}
+% zugewiesen, welches intern angepasst werden kann. Mit \cs{tud@komafont@set}
+% werden dem angegebenen Element die gewünschten Schriftattribute zugeteilt.
+% \begin{macrocode}
+\newcommand*\tud@komafont@set[2]{%
+ \ifcsdef{tud@komafont@#1}{}{\addtokomafont{#1}{\csuse{tud@komafont@#1}}}%
+ \csdef{tud@komafont@#1}{#2\nobreak}%
+}
+% \end{macrocode}
+% Mit \cs{tud@komafont@unset} kann das angegebene Element wieder zurückgesetzt
+% werden. Dabei wird das hinzugefügte Makro auf \cs{relax} gesetzt.
+% \begin{macrocode}
+\newcommand*\tud@komafont@unset[1]{%
+ \ifcsdef{tud@komafont@#1}{}{\addtokomafont{#1}{\csuse{tud@komafont@#1}}}%
+ \csdef{tud@komafont@#1}{\relax}%
+}
+% \end{macrocode}
+% Werden \KOMAScript-Schriftelemente auf ihre Ausgangsdefinition zurückgesetzt,
+% so kann diesen mit \cs{tud@komafont@reset} kann das passende Hilfsmakro
+% abermals zugewiesen werden.
+% \begin{macrocode}
+\newcommand*\tud@komafont@reset[1]{%
+ \ifcsdef{tud@komafont@#1}{\addtokomafont{#1}{\csuse{tud@komafont@#1}}}{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@komafont@unset
+% \end{macro}^^A \tud@komafont@reset
+% \end{macro}^^A \tud@komafont@set
+%
+% \iffalse
+%</class&option>
+%<*class&body>
+% \fi
+%
+% \subsection{Externe Pakete für die \TUDScript-Klassen}
+%
+% \changes{v2.01}{2014/04/24}{Versionsanforderungen bei benötigten Paketen}^^A
+% \changes{v2.02}{2014/07/08}{Warnung bei Verwendung von \pkg{graphics}}^^A
+%
+% Für die Verwendung der hier erstellten \KOMAScript-Wrapper-Klassen werden
+% einige wenige Pakete eingebunden. Dabei wurde versucht, die Anzahl der
+% Pakete möglichst gering zu halten und nur die wirklich notwendigen zu
+% verwenden.
+%
+% \subsubsection{Erweiterte Umgebungsdefinition mit dem Paket \pkg{environ}}
+%
+% Die \env{abstract}-Umgebung wird im Vergleich zu den \KOMAScript-Klassen
+% stark erweitert. Für diese sowie für die Umgebungen \env{declarations} und
+% \env{tudpage} wird das Paket \pkg{environ} für die Umgebungsdefinition
+% benötigt.
+% \begin{macrocode}
+\RequirePackage{environ}[2013/04/01]
+% \end{macrocode}
+%
+% Innerhalb dieser Umgebungen soll es außerdem möglich sein, ein mehrspaltiges
+% Layout~-- auch konträr zu den globalen Dokumenteinstellungen~-- zu verwenden.
+% Mit diesen Befehlen lässt sich die Anzahl der Spalten über einen Parameter
+% anpassen, falls das Paket \pkg{multicol} geladen wurde.
+% \begin{macro}{\tud@x@multicol@num}
+% \begin{macro}{\tud@x@multicol@check}
+% Im Makro \cs{tud@x@multicol@num} wird die Anzahl der gewünschten Spalten in
+% einer Umgebung für die Verwendung des \pkg{multicol}-Paketes gespeichert.
+% \begin{macrocode}
+\newcommand*\tud@x@multicol@num{1}
+% \end{macrocode}
+% Der Befehl \cs{tud@x@multicol@check} prüft, ob das Paket \pkg{multicol}
+% geladen wurde. Falls dies nicht der Fall ist, wird eine Warnung ausgegeben
+% und die Änderung des Wertes über einen Parameter der Umgebungen \env{tudpage}
+% respektive \env{abstract} sowie \env{declarations} verhindert.
+% \begin{macrocode}
+\newcommand*\tud@x@multicol@check{%
+ \ifnum\tud@x@multicol@num>\@ne\relax%
+ \ClassWarning{\TUD@Class@Name}{%
+ The option `columns=\tud@x@multicol@num' is only\MessageBreak%
+ supported, when package `multicol' is loaded%
+ }%
+ \renewcommand*\tud@x@multicol@num{1}%
+ \fi%
+}
+\AfterPackage{multicol}{\let\tud@x@multicol@check\relax}
+% \end{macrocode}
+% \end{macro}^^A \tud@x@multicol@check
+% \end{macro}^^A \tud@x@multicol@num
+%
+% \subsubsection{Pakete für Grafiken und Farben}
+%
+% Es folgen die Pakete, welche bei Bedarf am Ende der Präambel geladen werden.
+% \begin{macrocode}
+\AtEndPreamble{%
+% \end{macrocode}
+% Mit \pkg{graphicx} werden die Logos der TU~Dresden sowie von Dresden Concept
+% mit dem Befehl \cs{includegraphics} u.\,a. auf der Titelseite eingebunden.
+% Sollte lediglich das \pkg{graphics}-Paket geladen worden sein, so wird der
+% Nutzer mit einer Warnung informiert, dass zusätzlich das \pkg{graphicx}-Paket
+% geladen wird.
+% \begin{macrocode}
+ \@ifpackageloaded{graphicx}{}{%
+ \@ifpackageloaded{graphics}{%
+ \ClassWarningNoLine{\TUD@Class@Name}{%
+ Package `graphics' was superseded by `graphicx',\MessageBreak%
+ which now will be loaded automatically%
+ }%
+ }{}%
+ \RequirePackage{graphicx}[1999/02/16]%
+ }%
+% \end{macrocode}
+% Mit dem Paket \pkg{tudscrcolor} werden die Befehle für die Auswahl der Farben
+% des \CDs definiert, welches wiederum \pkg{xcolor} lädt.
+% \begin{macrocode}
+ \RequirePackage{tudscrcolor}[\TUD@Version]%
+}
+% \end{macrocode}
+%
+% \iffalse
+%</class&body>
+% \fi
+%
+% \Finale
+%
+\endinput
+
+%
+% \begin{macro}{\TUD@noworlater}
+% \changes{v2.05}{2015/07/03}{neu implementiert}^^A
+% \begin{macro}{\TUD@noworlater@simple}
+% \changes{v2.05}{2015/07/03}{neu}^^A
+% Hiermit kann die Abarbeitung der Optionen an das Ende der verwendeten
+% Klasse bzw. des Paketes verzögert werden. Aufgrund der Besonderheiten der
+% Befehle \cs{AtEndOfClass} und \cs{AtEndOfPackage} können diese nicht
+% innerhalb von \pkg{tudscrbase} sondern erst außerhalb nach dem Laden
+% definiert werden. Damit keine Probleme dabei auftreten, falls das Paket
+% geladen wird ohne daran anschließend die notwendigen Redefinitionen
+% durchzuführen, werden die beiden Varianten des Befehls \cs{TUD@noworlater}
+% im Paket definiert.
+%
+% Im ersten Argument von \cs{TUD@noworlater} wird einer der wertzuweisenden
+% Befehle für Optionen (\cs{TUD@set@\dots}) erwartet. Dieser wird immer
+% ausgeführt, um ungültige Wertzuweisungen einer Option, welche als globale
+% Klassenoption angegeben wurde, über die \LaTeX-Standardroutine als Warnung
+% auszugeben. Bei der eigentlichen~-- sprich verzögerten~-- Ausführung der
+% Option wird die Wertzuweisung abermals ausgeführt, gefolgt von der im
+% zweiten Argument definierten Abarbeitung dieser.
+% \begin{macrocode}
+%<*package&base>
+\newcommand*\TUD@noworlater[2]{}
+\newcommand*\TUD@noworlater@simple[2]{%
+ \PackageWarning{tudscrbase}{%
+ The content of \string\TUD@noworlater will be executed immediately%
+ }%
+ #1#2%
+}
+\let\TUD@noworlater\TUD@noworlater@simple
+%</package&base>
+% \end{macrocode}
+% Nach dem Laden des Paketes wird geprüft, ob die ursprüngliche Definition
+% des Befehls aus dem Paket noch besteht. Ist dies der Fall, wird der Befehl
+% zur Verzögerung an das Ende der Klasse bzw. des Paketes umdefiniert.
+% \begin{macrocode}
+%<*load>
+\ifx\TUD@noworlater\TUD@noworlater@simple
+%<*class>
+ \renewcommand*\TUD@noworlater[2]{#1\AtEndOfClass{#1#2}}%
+ \AtEndOfClass{\renewcommand*\TUD@noworlater[2]{#1#2}}%
+%</class>
+%<*package>
+ \renewcommand*\TUD@noworlater[2]{#1\AtEndOfPackage{#1#2}}%
+ \AtEndOfPackage{\renewcommand*\TUD@noworlater[2]{#1#2}}%
+%</package>
+\fi
+%</load>
+% \end{macrocode}
+% \end{macro}^^A \TUD@noworlater@simple
+% \end{macro}^^A \TUD@noworlater
+%
diff --git a/macros/latex/contrib/tudscr/source/tudscr-color.dtx b/macros/latex/contrib/tudscr/source/tudscr-color.dtx
new file mode 100644
index 0000000000..c581f28f6b
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/tudscr-color.dtx
@@ -0,0 +1,459 @@
+% \CheckSum{216}
+% \iffalse meta-comment
+%
+% TUD-Script -- Corporate Design of Technische Universität Dresden
+% ----------------------------------------------------------------------------
+%
+% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2019
+%
+% ----------------------------------------------------------------------------
+%
+% This work may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License, version 1.3c of the license. The latest
+% version of this license is in http://www.latex-project.org/lppl.txt and
+% version 1.3c or later is part of all distributions of LaTeX 2005/12/01
+% or later and of this work. This work has the LPPL maintenance status
+% "author-maintained". The current maintainer and author of this work
+% is Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+% in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
+% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+% Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
+% oder später und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status
+% "author-maintained", wird somit allein durch den Autor verwaltet. Der
+% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: tudscr-color.dtx
+%<*dtx>
+% \fi
+%
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{tudscr-color.dtx}[2019/06/28 v2.06 TUD-Script\space%
+%
+% \iffalse
+%</dtx>
+%<package>\ProvidesPackage{tudscrcolor}[%
+%<*package>
+%!TUD@Version
+%</package>
+%<package> package
+%<*dtx|package>
+% \fi
+ (corporate design colors)%
+]
+% \iffalse
+%</dtx|package>
+%<*dtx>
+\documentclass[english,ngerman,xindy]{tudscrdoc}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{tudscrfonts}
+\KOMAoptions{parskip=half-}
+\usepackage{bookmark}
+\usepackage[babel]{microtype}
+
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tudscr-color.dtx}
+\title{\file{\filename}}
+\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
+\date{\fileversion\nobreakspace(\filedate)}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \section{Das Paket \pkg{tudscrcolor} -- Die Farben des \CDs}
+%
+% Das \TUDCD legt nicht nur die zu nutzenden Schriften und das Layout sondern
+% auch die zu verwendenden Farben fest. Diese werden nachfolgend für das CMYK"~
+% und RGB"~Farbmodel definiert. Sie können im Dokument mit sämtlichen Befehlen
+% zur Farbauswahl wie \cs{color}\marg{Farbe} oder \cs{textcolor}\marg{Farbe}
+% verwendet werden.
+%
+% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%
+% \iffalse
+%<*package>
+% \fi
+%
+% \subsection{Optionen und Befehle}
+%
+% \begin{option}{newcolors}
+% \begin{option}{reduced}
+% \begin{option}{oldcolors}
+% \begin{option}{full}
+% Das Paket kann entweder mit einfachen, für \TUDScript ausreichenden oder
+% erweiterten Farbdefinitionen geladen werden. Letztere definieren zusätzliche
+% Farbbezeichnungen für die Kompatibilität zu alten TUD-Klassen.
+% \begin{macrocode}
+\DeclareOption{newcolors}{\let\tud@setcolors@add\relax}
+\DeclareOption{reduced}{\let\tud@setcolors@add\relax}
+\DeclareOption{oldcolors}{\let\tud@setcolors@add\tud@setcolors@old}
+\DeclareOption{full}{\let\tud@setcolors@add\tud@setcolors@old}
+% \end{macrocode}
+% \end{option}^^A full
+% \end{option}^^A oldcolors
+% \end{option}^^A reduced
+% \end{option}^^A newcolors
+% \begin{macro}{\setcdcolors}
+% Der Befehl \cs{setcdcolors} definiert die Farben des \CDs. Das Argument dient
+% zur Auswahl des gewünschten Farbmodels. Dies kann dazu genutzt werden,
+% innerhalb des Dokumentes die Definition der Farben für ein neues Farbmodell
+% zu ändern.
+% \begin{macrocode}
+\newcommand*\setcdcolors[1]{%
+ \selectcolormodel{#1}%
+ \tud@setcolors@do%
+}
+% \end{macrocode}
+% \end{macro}^^A \setcdcolors
+% \begin{macro}{\tud@color}
+% \changes{v2.04}{2015/04/21}{neu}^^A
+% Der Befehl wählt eine in einem Makro gespeicherte Farbe nur aus, wenn dieses
+% auch tatsächlich definiert ist. Dieser Befehl wird von den \TUDScript-Klassen
+% für die Umsetzung des Layouts verwendet.
+% \begin{macrocode}
+\newcommand*\tud@color[1]{\ifdefvoid{#1}{}{\color{#1}}}
+% \end{macrocode}
+% \end{macro}^^A \tud@color
+%
+% \subsection{Farbdefinitionen}
+% \subsubsection{Notwendige Farben für \TUDScript}
+%
+% \begin{macro}{\tud@setcolors@do}
+% Die Definitionen der Farben erfolgt erst durch die Ausführung von
+% \cs{tud@setcolors@do}. Damit wird es möglich, auf die angegebenen Optionen in
+% Form von \cs{tud@setcolors@add} oder den durch das Paket \pkg{xcolor}
+% angegebenen Farbraum zu reagieren.
+% \begin{macrocode}
+\newcommand*\tud@setcolors@do{%
+% \end{macrocode}
+% \begin{TUDcolor}{HKS41}
+% Die primäre Hausfarbe (dunkles Blau)
+% \begin{macrocode}
+ \definecolor{HKS41}{cmyk/RGB/rgb}{%
+ 1.00,0.70,0.10,0.50/011,042,081/0.0431372549,0.16470588235,0.31764705882%
+ }%
+% \end{macrocode}
+% \end{TUDcolor}^^A HKS41
+% \begin{TUDcolor}{HKS92}
+% Die sekundäre Hausfarbe (grau), allein und ausschließlich für die Verwendung
+% in der Geschäftsausstattung und nicht für Fließtext, Grafiken etc.
+% \begin{macrocode}
+ \definecolor{HKS92}{cmyk/RGB/rgb}{%
+ 0.10,0.00,0.05,0.65/080,089,085/0.31372549019,0.34901960784,0.33333333333%
+ }%
+% \end{macrocode}
+% \end{TUDcolor}^^A HKS92
+% \begin{TUDcolor}{HKS44}
+% Auszeichnungen 1. Kategorie (helles Blau)
+% \begin{macrocode}
+ \definecolor{HKS44}{cmyk/RGB/rgb}{%
+ 1.00,0.50,0.00,0.00/000,089,163/0,0.34901960784,0.63921568627%
+ }%
+% \end{macrocode}
+% \end{TUDcolor}^^A HKS44
+% \begin{TUDcolor}{HKS36}
+% \begin{TUDcolor}{HKS33}
+% \begin{TUDcolor}{HKS57}
+% \begin{TUDcolor}{HKS65}
+% Auszeichnungen 2. Kategorie (Indigo, Purpur, dunkles Grün, helles Grün)
+% \begin{macrocode}
+ \definecolor{HKS36}{cmyk/RGB/rgb}{%
+ 0.80,0.90,0.00,0.00/081,041,127/0.31764705882,0.16078431372,0.49803921568%
+ }%
+ \definecolor{HKS33}{cmyk/RGB/rgb}{%
+ 0.50,1.00,0.00,0.00/129,026,120/0.50588235294,0.10196078431,0.47058823529%
+ }%
+ \definecolor{HKS57}{cmyk/RGB/rgb}{%
+ 1.00,0.00,0.90,0.20/000,122,071/0,0.47843137254,0.28235294117%
+ }%
+ \definecolor{HKS65}{cmyk/RGB/rgb}{%
+ 0.65,0.00,1.00,0.00/034,173,054/0.13333333333,0.67843137254,0.21176470588%
+ }%
+% \end{macrocode}
+% \end{TUDcolor}^^A HKS65
+% \end{TUDcolor}^^A HKS57
+% \end{TUDcolor}^^A HKS33
+% \end{TUDcolor}^^A HKS36
+% \begin{TUDcolor}{HKS07}
+% Ausnahmefarbe (Orange)
+% \begin{macrocode}
+ \definecolor{HKS07}{cmyk/RGB/rgb}{%
+ 0.00,0.60,1.00,0.00/232,123,020/0.90980392156,0.48235294117,0.07843137254%
+ }%
+% \end{macrocode}
+% \end{TUDcolor}^^A HKS07
+% \begin{TUDcolor}{cddarkblue}
+% \begin{TUDcolor}{cdgray}
+% \begin{TUDcolor}{cdgrey}
+% \begin{TUDcolor}{cdblue}
+% \begin{TUDcolor}{cdindigo}
+% \begin{TUDcolor}{cdpurple}
+% \begin{TUDcolor}{cddarkgreen}
+% \begin{TUDcolor}{cdgreen}
+% \begin{TUDcolor}{cdorange}
+% Die definierten Grundfarben werden zur einfacheren Verwendung im Dokument
+% noch einmal speziell benannt.
+% \begin{macrocode}
+ \colorlet{cddarkblue}{HKS41}%
+ \colorlet{cdgray}{HKS92}%
+ \colorlet{cdgrey}{HKS92}%
+ \colorlet{cdblue}{HKS44}%
+ \colorlet{cdindigo}{HKS36}%
+ \colorlet{cdpurple}{HKS33}%
+ \colorlet{cddarkgreen}{HKS57}%
+ \colorlet{cdgreen}{HKS65}%
+ \colorlet{cdorange}{HKS07}%
+% \end{macrocode}
+% \end{TUDcolor}^^A cdorange
+% \end{TUDcolor}^^A cdgreen
+% \end{TUDcolor}^^A cddarkgreen
+% \end{TUDcolor}^^A cdpurple
+% \end{TUDcolor}^^A cdindigo
+% \end{TUDcolor}^^A cdblue
+% \end{TUDcolor}^^A cdgrey
+% \end{TUDcolor}^^A cdgray
+% \end{TUDcolor}^^A cddarkblue
+% Damit enden die notwendigen Farbdefinitionen für das \pkg{tudscrcolor}-Paket.
+% Abhängig von den gewählten Optionen werden mit \cs{tud@setcolors@add} ggf.
+% zusätzliche Farbnamen definiert.
+% \begin{macrocode}
+ \tud@setcolors@add%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@setcolors@do
+%
+% \subsubsection{Zusätzliche Farben für alte TUD-Klassen}
+%
+% \begin{macro}{\tud@setcolors@add}
+% \begin{macro}{\tud@setcolors@old}
+% Die erweiterten Farbbefehle werden durch \pkg{tudscrcolor} definiert, wenn
+% das Paket explizit mit der Option \opt{oldcolors} geladen wird. Damit werden
+% alle gängigen Farbdefinitionen der vielen Insellösungen des \LaTeX-Universums
+% an der \TnUD unterstützt.
+% \begin{macrocode}
+\newcommand*\tud@setcolors@add{}
+\newcommand*\tud@setcolors@old{%
+ \colorlet{HKS41K10}{HKS41!10}%
+ \colorlet{HKS41K20}{HKS41!20}%
+ \colorlet{HKS41K30}{HKS41!30}%
+ \colorlet{HKS41K40}{HKS41!40}%
+ \colorlet{HKS41K50}{HKS41!50}%
+ \colorlet{HKS41K60}{HKS41!60}%
+ \colorlet{HKS41K70}{HKS41!70}%
+ \colorlet{HKS41K80}{HKS41!80}%
+ \colorlet{HKS41K90}{HKS41!90}%
+ \colorlet{HKS41K100}{HKS41!100}%
+ \colorlet{HKS92K10}{HKS92!10}%
+ \colorlet{HKS92K20}{HKS92!20}%
+ \colorlet{HKS92K30}{HKS92!30}%
+ \colorlet{HKS92K40}{HKS92!40}%
+ \colorlet{HKS92K50}{HKS92!50}%
+ \colorlet{HKS92K60}{HKS92!60}%
+ \colorlet{HKS92K70}{HKS92!70}%
+ \colorlet{HKS92K80}{HKS92!80}%
+ \colorlet{HKS92K90}{HKS92!90}%
+ \colorlet{HKS92K100}{HKS92!100}%
+ \colorlet{HKS44K10}{HKS44!10}%
+ \colorlet{HKS44K20}{HKS44!20}%
+ \colorlet{HKS44K30}{HKS44!30}%
+ \colorlet{HKS44K40}{HKS44!40}%
+ \colorlet{HKS44K50}{HKS44!50}%
+ \colorlet{HKS44K60}{HKS44!60}%
+ \colorlet{HKS44K70}{HKS44!70}%
+ \colorlet{HKS44K80}{HKS44!80}%
+ \colorlet{HKS44K90}{HKS44!90}%
+ \colorlet{HKS44K100}{HKS44!100}%
+ \colorlet{HKS36K10}{HKS36!10}%
+ \colorlet{HKS36K20}{HKS36!20}%
+ \colorlet{HKS36K30}{HKS36!30}%
+ \colorlet{HKS36K40}{HKS36!40}%
+ \colorlet{HKS36K50}{HKS36!50}%
+ \colorlet{HKS36K60}{HKS36!60}%
+ \colorlet{HKS36K70}{HKS36!70}%
+ \colorlet{HKS36K80}{HKS36!80}%
+ \colorlet{HKS36K90}{HKS36!90}%
+ \colorlet{HKS36K100}{HKS36!100}%
+ \colorlet{HKS33K10}{HKS33!10}%
+ \colorlet{HKS33K20}{HKS33!20}%
+ \colorlet{HKS33K30}{HKS33!30}%
+ \colorlet{HKS33K40}{HKS33!40}%
+ \colorlet{HKS33K50}{HKS33!50}%
+ \colorlet{HKS33K60}{HKS33!60}%
+ \colorlet{HKS33K70}{HKS33!70}%
+ \colorlet{HKS33K80}{HKS33!80}%
+ \colorlet{HKS33K90}{HKS33!90}%
+ \colorlet{HKS33K100}{HKS33!100}%
+ \colorlet{HKS57K10}{HKS57!10}%
+ \colorlet{HKS57K20}{HKS57!20}%
+ \colorlet{HKS57K30}{HKS57!30}%
+ \colorlet{HKS57K40}{HKS57!40}%
+ \colorlet{HKS57K50}{HKS57!50}%
+ \colorlet{HKS57K60}{HKS57!60}%
+ \colorlet{HKS57K70}{HKS57!70}%
+ \colorlet{HKS57K80}{HKS57!80}%
+ \colorlet{HKS57K90}{HKS57!90}%
+ \colorlet{HKS57K100}{HKS57!100}%
+ \colorlet{HKS65K10}{HKS65!10}%
+ \colorlet{HKS65K20}{HKS65!20}%
+ \colorlet{HKS65K30}{HKS65!30}%
+ \colorlet{HKS65K40}{HKS65!40}%
+ \colorlet{HKS65K50}{HKS65!50}%
+ \colorlet{HKS65K60}{HKS65!60}%
+ \colorlet{HKS65K70}{HKS65!70}%
+ \colorlet{HKS65K80}{HKS65!80}%
+ \colorlet{HKS65K90}{HKS65!90}%
+ \colorlet{HKS65K100}{HKS65!100}%
+ \colorlet{HKS07K10}{HKS07!10}%
+ \colorlet{HKS07K20}{HKS07!20}%
+ \colorlet{HKS07K30}{HKS07!30}%
+ \colorlet{HKS07K40}{HKS07!40}%
+ \colorlet{HKS07K50}{HKS07!50}%
+ \colorlet{HKS07K60}{HKS07!60}%
+ \colorlet{HKS07K70}{HKS07!70}%
+ \colorlet{HKS07K80}{HKS07!80}%
+ \colorlet{HKS07K90}{HKS07!90}%
+ \colorlet{HKS07K100}{HKS07!100}%
+ \colorlet{HKS41-10}{HKS41!10}%
+ \colorlet{HKS41-20}{HKS41!20}%
+ \colorlet{HKS41-30}{HKS41!30}%
+ \colorlet{HKS41-40}{HKS41!40}%
+ \colorlet{HKS41-50}{HKS41!50}%
+ \colorlet{HKS41-60}{HKS41!60}%
+ \colorlet{HKS41-70}{HKS41!70}%
+ \colorlet{HKS41-80}{HKS41!80}%
+ \colorlet{HKS41-90}{HKS41!90}%
+ \colorlet{HKS41-100}{HKS41!100}%
+ \colorlet{HKS92-10}{HKS92!10}%
+ \colorlet{HKS92-20}{HKS92!20}%
+ \colorlet{HKS92-30}{HKS92!30}%
+ \colorlet{HKS92-40}{HKS92!40}%
+ \colorlet{HKS92-50}{HKS92!50}%
+ \colorlet{HKS92-60}{HKS92!60}%
+ \colorlet{HKS92-70}{HKS92!70}%
+ \colorlet{HKS92-80}{HKS92!80}%
+ \colorlet{HKS92-90}{HKS92!90}%
+ \colorlet{HKS92-100}{HKS92!100}%
+ \colorlet{HKS44-10}{HKS44!10}%
+ \colorlet{HKS44-20}{HKS44!20}%
+ \colorlet{HKS44-30}{HKS44!30}%
+ \colorlet{HKS44-40}{HKS44!40}%
+ \colorlet{HKS44-50}{HKS44!50}%
+ \colorlet{HKS44-60}{HKS44!60}%
+ \colorlet{HKS44-70}{HKS44!70}%
+ \colorlet{HKS44-80}{HKS44!80}%
+ \colorlet{HKS44-90}{HKS44!90}%
+ \colorlet{HKS44-100}{HKS44!100}%
+ \colorlet{HKS36-10}{HKS36!10}%
+ \colorlet{HKS36-20}{HKS36!20}%
+ \colorlet{HKS36-30}{HKS36!30}%
+ \colorlet{HKS36-40}{HKS36!40}%
+ \colorlet{HKS36-50}{HKS36!50}%
+ \colorlet{HKS36-60}{HKS36!60}%
+ \colorlet{HKS36-70}{HKS36!70}%
+ \colorlet{HKS36-80}{HKS36!80}%
+ \colorlet{HKS36-90}{HKS36!90}%
+ \colorlet{HKS36-100}{HKS36!100}%
+ \colorlet{HKS33-10}{HKS33!10}%
+ \colorlet{HKS33-20}{HKS33!20}%
+ \colorlet{HKS33-30}{HKS33!30}%
+ \colorlet{HKS33-40}{HKS33!40}%
+ \colorlet{HKS33-50}{HKS33!50}%
+ \colorlet{HKS33-60}{HKS33!60}%
+ \colorlet{HKS33-70}{HKS33!70}%
+ \colorlet{HKS33-80}{HKS33!80}%
+ \colorlet{HKS33-90}{HKS33!90}%
+ \colorlet{HKS33-100}{HKS33!100}%
+ \colorlet{HKS57-10}{HKS57!10}%
+ \colorlet{HKS57-20}{HKS57!20}%
+ \colorlet{HKS57-30}{HKS57!30}%
+ \colorlet{HKS57-40}{HKS57!40}%
+ \colorlet{HKS57-50}{HKS57!50}%
+ \colorlet{HKS57-60}{HKS57!60}%
+ \colorlet{HKS57-70}{HKS57!70}%
+ \colorlet{HKS57-80}{HKS57!80}%
+ \colorlet{HKS57-90}{HKS57!90}%
+ \colorlet{HKS57-100}{HKS57!100}%
+ \colorlet{HKS65-10}{HKS65!10}%
+ \colorlet{HKS65-20}{HKS65!20}%
+ \colorlet{HKS65-30}{HKS65!30}%
+ \colorlet{HKS65-40}{HKS65!40}%
+ \colorlet{HKS65-50}{HKS65!50}%
+ \colorlet{HKS65-60}{HKS65!60}%
+ \colorlet{HKS65-70}{HKS65!70}%
+ \colorlet{HKS65-80}{HKS65!80}%
+ \colorlet{HKS65-90}{HKS65!90}%
+ \colorlet{HKS65-100}{HKS65!100}%
+ \colorlet{HKS07-10}{HKS07!10}%
+ \colorlet{HKS07-20}{HKS07!20}%
+ \colorlet{HKS07-30}{HKS07!30}%
+ \colorlet{HKS07-40}{HKS07!40}%
+ \colorlet{HKS07-50}{HKS07!50}%
+ \colorlet{HKS07-60}{HKS07!60}%
+ \colorlet{HKS07-70}{HKS07!70}%
+ \colorlet{HKS07-80}{HKS07!80}%
+ \colorlet{HKS07-90}{HKS07!90}%
+ \colorlet{HKS07-100}{HKS07!100}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@setcolors@old
+% \end{macro}^^A \tud@setcolors@add
+%
+% \subsection{Ausführung der Optionen}
+%
+% Zum Schluss werden die Optionen ausgeführt und ggf. an \pkg{xcolor}
+% weitergereicht. Anschließend werden die Farben für das Dokument definiert.
+% Ohne die Angabe eines optionalen Argumentes an das Paket \pkg{xcolor} erfolgt
+% die Definition für den gewählten bzw. standardmäßig eingestellten Farbraum.
+% \begin{macrocode}
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{xcolor}}
+\ExecuteOptions{reduced}
+\ProcessOptions\relax
+\RequirePackage{xcolor}[2007/01/21]
+\tud@setcolors@do%
+% \end{macrocode}
+%
+% \iffalse
+%</package>
+% \fi
+%
+% \Finale
+%
+\endinput
diff --git a/macros/latex/contrib/tudscr/source/tudscr-comp.dtx b/macros/latex/contrib/tudscr/source/tudscr-comp.dtx
new file mode 100644
index 0000000000..e2edc9dd9f
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/tudscr-comp.dtx
@@ -0,0 +1,2265 @@
+% \CheckSum{1451}
+% \iffalse meta-comment
+%
+% TUD-Script -- Corporate Design of Technische Universität Dresden
+% ----------------------------------------------------------------------------
+%
+% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2019
+%
+% ----------------------------------------------------------------------------
+%
+% This work may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License, version 1.3c of the license. The latest
+% version of this license is in http://www.latex-project.org/lppl.txt and
+% version 1.3c or later is part of all distributions of LaTeX 2005/12/01
+% or later and of this work. This work has the LPPL maintenance status
+% "author-maintained". The current maintainer and author of this work
+% is Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+% in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
+% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+% Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
+% oder später und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status
+% "author-maintained", wird somit allein durch den Autor verwaltet. Der
+% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: tudscr-comp.dtx
+%<*dtx>
+% \fi
+%
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{tudscr-comp.dtx}[2019/08/27 v2.06d TUD-Script\space%
+%
+% \iffalse
+%</dtx>
+%<*package&identify>
+%<comp&base>\ProvidesPackage{tudscrcomp}[%
+%<comp&book>\ProvidesPackage{tudscrcomp-book}[%
+%<comp&poster>\ProvidesPackage{tudscrcomp-poster}[%
+%<fixfonts>\ProvidesPackage{fix-tudscrfonts}[%
+%!TUD@Version
+%<comp> package
+%<fixfonts> package for font fixes
+%</package&identify>
+%<*dtx|package&identify>
+% \fi
+ (compatibility for old tud(scr) classes)%
+]
+% \iffalse
+%</dtx|package&identify>
+%<*dtx>
+\documentclass[english,ngerman,xindy]{tudscrdoc}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{tudscrfonts}
+\KOMAoptions{parskip=half-}
+\usepackage{bookmark}
+\usepackage[babel]{microtype}
+
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tudscr-comp.dtx}
+\title{\file{\filename}}
+\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
+\date{\fileversion\nobreakspace(\filedate)}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.02}{2014/09/30}{\pkg{tudscrfonts}: Nutzung alter TUD-Klassen
+% mit neuen Schriftfamilien ermöglicht}^^A
+% \changes{v2.04}{2015/04/22}{\pkg{tudscrfonts}: Unterstützung veralteter
+% Posterklassen}^^A
+%
+% \section{Kompatibilität zu früheren \TUDScript-Versionen}
+%
+% Mit der Version v2.02 wurde eine Menge~-- teilweise sehr tiefgreifend~-- an
+% der Benutzerschnittstelle in \TUDScript geändert. Dabei wird versucht, die
+% Kompatibilität zu früheren Versionen so weit es geht aufrecht zu erhalten und
+% veraltete Optionen und Befehle zumindest weiter bereitzustellen, wobei bei
+% der Verwendung dieser der Anwender darüber informiert wird. Die Vorkehrungen
+% betreffen sowohl die Klassen selber als auch die zusätzlich bereitgestellten
+% Pakete.
+%
+% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%
+% \iffalse
+%<*class|package&fonts>
+%<*option>
+% \fi
+%
+% \begin{macro}{\TUD@deprecated@key}
+% \changes{v2.03}{2015/02/05}{neu}^^A
+% \begin{macro}{\TUD@deprecated@cs}
+% \changes{v2.03}{2015/02/05}{neu}^^A
+% \begin{macro}{\TUD@deprecated@@cs}
+% \changes{v2.06}{2018/08/07}{neu}^^A
+% \begin{macro}{\TUD@deprecated@lengthcs}
+% \changes{v2.05}{2016/06/20}{neu}^^A
+% Um alte Optionen und Befehle dem Anwender bei der Verwendung kenntlich zu
+% machen, werden entsprechende Warnungen definiert. Für Optionen wird dabei
+% lediglich die empfohlene Option ausgegeben. Das Ausführen dieser wird später
+% definiert.
+% \begin{macrocode}
+\newcommand*\TUD@deprecated@key[2]{%
+%<*class>
+ \ClassWarning{\TUD@Class@Name}%
+%</class>
+%<*package&fonts>
+ \PackageWarning{tudscrfonts}%
+%</package&fonts>
+ {%
+ The key `#1' is deprecated. It's\MessageBreak%
+ recommended to use `#2'\MessageBreak%
+ instead%
+ }%
+ \TUDoptions{#2}%
+}
+% \end{macrocode}
+% Bei alten Befehlen wird nach der Warnung die Definition des neuen Befehls auf
+% den alten überschrieben.
+% \begin{macrocode}
+\newcommand*\TUD@deprecated@cs[2]{%
+ \begingroup%
+ \edef\tud@res@a{%
+ \endgroup%
+ \noexpand\AfterEndPreamble{%
+ \noexpand\TUD@deprecated@@cs{#1}{#2}%
+ }%
+ }%
+ \tud@res@a%
+}
+\newcommand*\TUD@deprecated@@cs[2]{%
+ \ifcsundef{#1}{%
+ \begingroup%
+ \def\tud@res@a{%
+ The command `\@backslashchar#1' is deprecated. \MessageBreak%
+ }%
+ \def\tud@res@b##1@##2\@nil{%
+ \IfArgIsEmpty{##2}{%
+ \appto\tud@res@a{%
+ You should use `\@backslashchar#2' instead%
+ }%
+ }{%
+ \appto\tud@res@a{%
+ You should not use this command. It is substituted\MessageBreak%
+ with `\@backslashchar#2' internally%
+ }%
+ }%
+ }%
+ \tud@res@b#2@\@nil%
+ \edef\tud@res@c{%
+ \endgroup%
+ \noexpand\newrobustcmd\csname #1\endcsname{%
+%<*class>
+ \noexpand\ClassWarning{\noexpand\TUD@Class@Name}%
+%</class>
+%<*package&fonts>
+ \noexpand\PackageWarning{tudscrfonts}%
+%</package&fonts>
+ {\tud@res@a}%
+ \noexpand\csletcs{#1}{#2}%
+ \noexpand\csuse{#2}%
+ }%
+ }%
+ \tud@res@c%
+ }{}%
+}
+%<*class>
+\newcommand*\TUD@deprecated@lengthcs[2][]{%
+ \ifdim\csuse{#2}<\maxdimen\relax%
+ \ClassWarning{\TUD@Class@Name}{%
+ Using the length `\@backslashchar#2' is deprecated. \MessageBreak%
+ You should use option `#2' instead%
+ }%
+ \csxdef{tud@dim@#2}{\the\csuse{#2}}%
+ \expandafter\setlength\csname #2\endcsname{\maxdimen}%
+ \global\csuse{#2}=\csuse{#2}%
+ #1%
+ \fi%
+}
+%</class>
+% \end{macrocode}
+% \end{macro}^^A \TUD@deprecated@lengthcs
+% \end{macro}^^A \TUD@deprecated@@cs
+% \end{macro}^^A \TUD@deprecated@cs
+% \end{macro}^^A \TUD@deprecated@key
+%
+% \begin{option}{tudscrver}
+% \changes{v2.02}{2014/08/22}{neu}^^A
+% \begin{macro}{\tud@v@comp}
+% \changes{v2.02}{2014/08/22}{neu}^^A
+% In einigen Fällen sind Änderungen mit früheren Versionen nicht kompatibel
+% oder unerwünscht, weil diese beispielsweise das Ausgabeergebnis verändern.
+% Standardmäßig werden die Klassen in der aktuellen Version geladen. Mit
+% \opt{tudscrver}|=|\val{\meta{Version}} kann auf das Verhalten einer früheren
+% Version geschaltet werden. Die eingestellte Kompatibilität wird als Zahl in
+% \cs{tud@v@comp} gespeichert. In den Makros \cs{tud@v@\meta{Version}} werden
+% die zugehörigen Nummern gespeichert.
+% \begin{macrocode}
+\newcommand*\tud@v@comp{\tud@v@last}
+% \end{macrocode}
+% Damit dieser Schlüssel gezielt als erstes bei der Abarbeitung der Optionen
+% aufgerufen werden kann, wird diesem ein spezielles Mitglied zugeteilt.
+% \begin{macrocode}
+\TUD@key[.comp]{tudscrver}[last]{%
+ \tud@v@get\@tempa{#1}%
+ \ifcsundef{tud@v@\@tempa}{%
+%<*class>
+ \ClassWarningNoLine{\TUD@Class@Name}%
+%</class>
+%<*package&fonts>
+ \PackageWarningNoLine{tudscrfonts}%
+%</package&fonts>
+ {%
+ You have set option `tudscrver' to `\@tempa', but\MessageBreak%
+ this value is not supported. Because of this,\MessageBreak%
+ `tudscrver=first' was set%
+ }%
+ \renewcommand*\tud@v@comp{0}%
+ }{%
+%<*class>
+ \ClassInfoNoLine{\TUD@Class@Name}%
+%</class>
+%<*package&fonts>
+ \PackageInfoNoLine{tudscrfonts}%
+%</package&fonts>
+ {%
+ Switching compatibility level to `v\@tempa'%
+ }%
+ \edef\tud@v@comp{\csuse{tud@v@\@tempa}}%
+ }%
+ \FamilyKeyStateProcessed%
+}
+% \end{macrocode}
+% Da die Schlüssel global für \emph{jedes} Mitglied ausgewertet werden, muss
+% auch ein Schlüssel für das Standardmitglied definiert werden, der einfach
+% nichts macht.
+% \begin{macrocode}
+\TUD@key{tudscrver}{\FamilyKeyStateProcessed}%
+% \end{macrocode}
+% Eine zusätzliche Bedingung gibt es noch: Die Kompatibilität kann nur beim
+% Laden der Klasse bzw. des Paketes gesetzt werden, danach nicht mehr.
+% \begin{macrocode}
+%<*class>
+\AtEndOfClass%
+%</class>
+%<*package>
+\AtEndOfPackage%
+%</package>
+{%
+ \RelaxFamilyKey[.comp]{TUD}{tudscrver}%
+ \TUD@key@toolate{tudscrver}%
+% \end{macrocode}
+% Außerdem wird darauf geachtet, dass die mindestens benötigte Version von
+% \KOMAScript{} installiert ist. (\cs{\TUD@Version@KOMA}: \TUD@Version@KOMA).
+% Sollte dies nicht der Fall sein, wird ein Fehler erzeugt.
+% \begin{macrocode}
+%<*class>
+ \ifcsdef{scr@v@\TUD@Version@KOMA}{%
+ \ifnum\scr@compatibility<\csuse{scr@v@3.12}\relax%
+ \ClassError{\TUD@Class@Name}{%
+ KOMA-Script compatibility level too low%
+ }{%
+ \TUD@Version\space must be used at least with\MessageBreak%
+ `version=3.12' KOMA-Script compatibility option.%
+ }%
+ \fi%
+ }{%
+ \ClassError{\TUD@Class@Name}{%
+ KOMA-Script v\TUD@Version@KOMA is required%
+ }{%
+ \TUD@Version\space must at least be used with\MessageBreak%
+ KOMA-Script v\TUD@Version@KOMA, but \KOMAScriptVersion was found.%
+ }%
+ }%
+%</class>
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@v@comp
+% \end{option}^^A tudscrver
+% \ToDo{Für jede neue Version der entsprechende Befehl}[Release]
+% \begin{macro}{\tud@v@first}
+% \changes{v2.02}{2014/08/22}{neu}^^A
+% \begin{macro}{\tud@v@2.00}
+% \changes{v2.02}{2014/08/22}{neu}^^A
+% \begin{macro}{\tud@v@2.01}
+% \changes{v2.02}{2014/08/22}{neu}^^A
+% \begin{macro}{\tud@v@2.01a}
+% \changes{v2.02}{2014/08/22}{neu}^^A
+% \begin{macro}{\tud@v@2.01b}
+% \changes{v2.02}{2014/08/22}{neu}^^A
+% \begin{macro}{\tud@v@2.02}
+% \changes{v2.02}{2014/08/22}{neu}^^A
+% \begin{macro}{\tud@v@2.03}
+% \changes{v2.03}{2015/01/13}{neu}^^A
+% \begin{macro}{\tud@v@2.03a}
+% \changes{v2.03a}{2015/06/12}{neu}^^A
+% \begin{macro}{\tud@v@2.04}
+% \changes{v2.04}{2015/02/18}{neu}^^A
+% \begin{macro}{\tud@v@2.04a}
+% \changes{v2.04a}{2015/07/24}{neu}^^A
+% \begin{macro}{\tud@v@2.04b}
+% \changes{v2.04b}{2015/10/06}{neu}^^A
+% \begin{macro}{\tud@v@2.04c}
+% \changes{v2.04c}{2015/11/29}{neu}^^A
+% \begin{macro}{\tud@v@2.04d}
+% \changes{v2.04d}{2016/03/26}{neu}^^A
+% \begin{macro}{\tud@v@2.04e}
+% \changes{v2.04e}{2016/06/17}{neu}^^A
+% \begin{macro}{\tud@v@2.05}
+% \changes{v2.05}{2015/07/03}{neu}^^A
+% \begin{macro}{\tud@v@2.05a}
+% \changes{v2.05a}{2015/08/24}{neu}^^A
+% \begin{macro}{\tud@v@2.05b}
+% \changes{v2.05b}{2015/09/09}{neu}^^A
+% \begin{macro}{\tud@v@2.05c}
+% \changes{v2.05c}{2015/09/15}{neu}^^A
+% \begin{macro}{\tud@v@2.05d}
+% \changes{v2.05d}{2015/09/21}{neu}^^A
+% \begin{macro}{\tud@v@2.05e}
+% \changes{v2.05e}{2016/10/10}{neu}^^A
+% \begin{macro}{\tud@v@2.05f}
+% \changes{v2.05f}{2016/10/12}{neu}^^A
+% \begin{macro}{\tud@v@2.05g}
+% \changes{v2.05g}{2017/01/26}{neu}^^A
+% \begin{macro}{\tud@v@2.05h}
+% \changes{v2.05h}{2017/02/04}{neu}^^A
+% \begin{macro}{\tud@v@2.05i}
+% \changes{v2.05i}{2017/02/17}{neu}^^A
+% \begin{macro}{\tud@v@2.05k}
+% \changes{v2.05k}{2017/03/27}{neu}^^A
+% \begin{macro}{\tud@v@2.05l}
+% \changes{v2.05l}{2017/03/29}{neu}^^A
+% \begin{macro}{\tud@v@2.05m}
+% \changes{v2.05m}{2017/05/30}{neu}^^A
+% \begin{macro}{\tud@v@2.06}
+% \changes{v2.06}{2018/06/26}{neu}^^A
+% \begin{macro}{\tud@v@2.06a}
+% \changes{v2.06a}{2019/07/09}{neu}^^A
+% \begin{macro}{\tud@v@2.06b}
+% \changes{v2.06b}{2019/07/17}{neu}^^A
+% \begin{macro}{\tud@v@2.06c}
+% \changes{v2.06c}{2019/08/20}{neu}^^A
+% \begin{macro}{\tud@v@2.06d}
+% \changes{v2.06d}{2019/08/27}{neu}^^A
+% \begin{macro}{\tud@v@last}
+% \changes{v2.02}{2014/08/22}{neu}^^A
+% \changes{v2.03}{2015/01/13}{angepasst}^^A
+% \changes{v2.04}{2015/02/18}{angepasst}^^A
+% \changes{v2.05}{2015/07/03}{angepasst}^^A
+% \changes{v2.06}{2018/06/26}{angepasst}^^A
+% Die numerischen Werte zu den einzelnen Versionen.
+% \begin{macrocode}
+\csdef{tud@v@first}{0}
+\csdef{tud@v@2.00}{0}
+\csdef{tud@v@2.01}{0}
+\csdef{tud@v@2.01a}{0}
+\csdef{tud@v@2.01b}{0}
+\csdef{tud@v@2.02}{0}
+\csdef{tud@v@2.03}{1}
+\csdef{tud@v@2.03a}{1}
+\csdef{tud@v@2.04}{2}
+\csdef{tud@v@2.04a}{2}
+\csdef{tud@v@2.04b}{2}
+\csdef{tud@v@2.04c}{2}
+\csdef{tud@v@2.04d}{2}
+\csdef{tud@v@2.04e}{2}
+\csdef{tud@v@2.05}{3}
+\csdef{tud@v@2.05a}{3}
+\csdef{tud@v@2.05b}{3}
+\csdef{tud@v@2.05c}{3}
+\csdef{tud@v@2.05d}{3}
+\csdef{tud@v@2.05e}{3}
+\csdef{tud@v@2.05f}{3}
+\csdef{tud@v@2.05g}{3}
+\csdef{tud@v@2.05h}{3}
+\csdef{tud@v@2.05i}{3}
+\csdef{tud@v@2.05k}{3}
+\csdef{tud@v@2.05l}{3}
+\csdef{tud@v@2.05m}{3}
+\csdef{tud@v@2.06}{4}
+\csdef{tud@v@2.06a}{4}
+\csdef{tud@v@2.06b}{4}
+\csdef{tud@v@2.06c}{4}
+\csdef{tud@v@2.06d}{4}
+\csdef{tud@v@last}{4}
+% \end{macrocode}
+% \end{macro}^^A \tud@v@last
+% \end{macro}^^A \tud@v@2.06d
+% \end{macro}^^A \tud@v@2.06c
+% \end{macro}^^A \tud@v@2.06b
+% \end{macro}^^A \tud@v@2.06a
+% \end{macro}^^A \tud@v@2.06
+% \end{macro}^^A \tud@v@2.05m
+% \end{macro}^^A \tud@v@2.05l
+% \end{macro}^^A \tud@v@2.05k
+% \end{macro}^^A \tud@v@2.05i
+% \end{macro}^^A \tud@v@2.05h
+% \end{macro}^^A \tud@v@2.05g
+% \end{macro}^^A \tud@v@2.05f
+% \end{macro}^^A \tud@v@2.05e
+% \end{macro}^^A \tud@v@2.05d
+% \end{macro}^^A \tud@v@2.05c
+% \end{macro}^^A \tud@v@2.05b
+% \end{macro}^^A \tud@v@2.05a
+% \end{macro}^^A \tud@v@2.05
+% \end{macro}^^A \tud@v@2.04e
+% \end{macro}^^A \tud@v@2.04d
+% \end{macro}^^A \tud@v@2.04c
+% \end{macro}^^A \tud@v@2.04b
+% \end{macro}^^A \tud@v@2.04a
+% \end{macro}^^A \tud@v@2.04
+% \end{macro}^^A \tud@v@2.03a
+% \end{macro}^^A \tud@v@2.03
+% \end{macro}^^A \tud@v@2.02
+% \end{macro}^^A \tud@v@2.01b
+% \end{macro}^^A \tud@v@2.01a
+% \end{macro}^^A \tud@v@2.01
+% \end{macro}^^A \tud@v@2.00
+% \end{macro}^^A \tud@v@first
+% \begin{macro}{\tud@v@get}
+% \changes{v2.05}{2016/05/31}{neu}^^A
+% Mit \cs{tud@v@get} wird die angegebene Versionsnummer in eine Normalform
+% gebracht und an das Makro im ersten Argument übergeben. Damit spielt es keine
+% Rolle, ob die im zweiten Argument übergebene Versionsnummer mit oder ohne
+% führendes \enquote*{\texttt{v}} angegeben wird.
+% \begin{macrocode}
+\newcommand*\tud@v@get[2]{%
+ \begingroup%
+ \def\@tempa{\kernel@ifnextchar v{\@tempb}{\@tempb v}}%
+ \def\@tempb v##1\@nil{\def\@tempc{##1}}%
+ \@tempa #2\@nil%
+ \edef\tud@reserved{%
+ \endgroup%
+ \etex@unexpanded{\def#1}{\@tempc}%
+ }%
+ \tud@reserved%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@v@get
+% \begin{macro}{\tud@if@v@lower}
+% \changes{v2.03}{2015/01/13}{neu}^^A
+% Mit diesem Befehl können abhängig von der gegebenen Kompatibilitätsversion in
+% den Klassen unterschiedliche Einstellungen vorgenommen werden.
+% \begin{macrocode}
+\newcommand*\tud@if@v@lower[1]{%
+ \begingroup%
+ \tud@v@get\@tempa{#1}%
+ \ifcsdef{tud@v@\@tempa}{%
+ \ifnum\tud@v@comp<\csuse{tud@v@\@tempa}\relax%
+ \def\tud@reserved{\endgroup\@firstoftwo}%
+ \else%
+ \def\tud@reserved{\endgroup\@secondoftwo}%
+ \fi%
+ }{%
+ \def\tud@reserved{%
+%<*class>
+ \ClassWarningNoLine{\TUD@Class@Name}%
+%</class>
+%<*package&fonts>
+ \PackageWarningNoLine{tudscrfonts}%
+%</package&fonts>
+ {%
+ Erroneous usage of `\string\tud@if@v@lower'. \MessageBreak%
+ There's no defined macro `\string\tud@v@\@tempa'%
+ }%
+ \endgroup\@firstoftwo%
+ }%
+ }%
+ \tud@reserved%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@if@v@lower
+%
+% \subsection{Veraltete Optionen}
+%
+% \begin{option}{cdfonts}
+% \begin{option}{tudfonts}
+% Diese Optionen werden nur aus Gründen der Kompatibilität zu v1.0 definiert.
+% \begin{macrocode}
+\TUD@key{cdfonts}[true]{%
+ \TUD@set@ifkey{cdfonts}{@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \TUD@deprecated@key{cdfonts=#1}{cdfont=#1}%
+ \fi%
+}
+\TUD@key{tudfonts}[true]{%
+ \TUD@set@ifkey{tudfonts}{@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \TUD@deprecated@key{tudfonts=#1}{cdfont=#1}%
+ \fi%
+}
+% \end{macrocode}
+% \end{option}^^A tudfonts
+% \end{option}^^A cdfonts
+% \begin{option}{heavyfont}
+% Hiermit lässt sich die Schriftstärke im Dokument beeinflussen.
+% \begin{macrocode}
+\TUD@key{heavyfont}[true]{%
+ \TUD@set@ifkey{heavyfont}{@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@tempswa%
+ \TUD@deprecated@key{heavyfont}{cdfont=heavy}%
+ \else%
+ \TUD@deprecated@key{heavyfont=#1}{cdfont=true}%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{option}^^A heavyfont
+% \begin{option}{sansmath}
+% \begin{option}{serifmath}
+% Mit dieser Option kann die genutzte Standardschrift für den Mathematiksatz
+% für das gesamte Dokument umgestellt werden. Die \cls{tudbook}-Klasse hat
+% neben der Option \opt{sansmath} außerdem den zusätzlichen Schlüssel
+% \opt{serifmath} definiert, welcher aus Gründen der Kompatibilität hier
+% ebenfalls vorgehalten wird.
+% \begin{macrocode}
+\TUD@key{sansmath}[true]{%
+ \TUD@set@ifkey{sansmath}{@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@tempswa%
+ \TUD@deprecated@key{sansmath}{cdmath=true}%
+ \else%
+ \TUD@deprecated@key{sansmath=#1}{cdmath=false}%
+ \fi%
+ \fi%
+}
+\TUD@key{serifmath}[true]{%
+ \TUD@set@ifkey{serifmath}{@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@tempswa%
+ \TUD@deprecated@key{serifmath}{cdmath=false}%
+ \else%
+ \TUD@deprecated@key{serifmath=#1}{cdmath=true}%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{option}^^A serifmath
+% \end{option}^^A sansmath
+% \begin{option}{din}
+% \begin{option}{nodin}
+% \begin{option}{noDIN}
+% \changes{v2.04}{2015/04/22}{neu}^^A
+% Diese Optionen dienten zur Auswahl, ob die Schrift \DIN für die Überschriften
+% verwendet werden soll.
+% \begin{macrocode}
+\TUD@key{din}[true]{%
+ \TUD@set@ifkey{din}{@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@tempswa%
+ \TUD@deprecated@key{din}{cdoldfont=din}%
+ \else%
+ \TUD@deprecated@key{din=#1}{cdoldfont=nodin}%
+ \fi%
+ \fi%
+}
+\TUD@key{nodin}[true]{%
+ \TUD@set@ifkey{nodin}{@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@tempswa%
+ \TUD@deprecated@key{nodin}{cdoldfont=nodin}%
+ \else%
+ \TUD@deprecated@key{nodin=#1}{cdoldfont=din}%
+ \fi%
+ \fi%
+}
+\TUD@key{noDIN}[true]{%
+ \TUD@set@ifkey{noDIN}{@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@tempswa%
+ \TUD@deprecated@key{noDIN}{cdoldfont=nodin}%
+ \else%
+ \TUD@deprecated@key{noDIN=#1}{cdoldfont=din}%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{option}^^A noDIN
+% \end{option}^^A nodin
+% \end{option}^^A din
+%
+% \iffalse
+%<*class>
+% \fi
+%
+% \begin{option}{geometry}
+% \changes{v2.02}{2014/07/08}{neu}^^A
+% Umbenennung der zu allgemein bezeichneten Option, um zukünftig potenziellen
+% Konflikten mit \KOMAScript{} aus dem Weg zu gehen.
+% \begin{macrocode}
+\TUD@key{geometry}[true]{\TUD@deprecated@key{geometry=#1}{cdgeometry=#1}}
+% \end{macrocode}
+% \end{option}^^A geometry
+% \begin{option}{barfont}
+% \changes{v2.02}{2014/07/08}{neu}^^A
+% Mit dieser Option kann die Schrift des \CDs und deren Schriftstärke in der
+% TUD-Kopfzeile unabhängig von der gewählten Schriftart für den Fließtext
+% aktiviert werden.
+% \begin{macrocode}
+\TUD@key{barfont}[true]{%
+ \TUD@set@numkey{barfont}{@tempa}{%
+ \TUD@bool@numkey,%
+ {nocd}{0},{nocdfont}{0},{nocdfonts}{0},{notudfonts}{0},%
+ {cd}{1},{cdfont}{1},{cdfonts}{1},{tudfonts}{1},%
+ {light}{1},{lightfont}{1},{lite}{1},{litefont}{1},{noheavyfont}{1},%
+ {heavy}{2},{heavyfont}{2},{bold}{2},{boldfont}{2}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\@tempa\relax% false
+ \TUD@deprecated@key{barfont=#1}{cdhead=false}%
+ \or% true
+ \TUD@deprecated@key{barfont=#1}{cdhead=true}%
+ \or% heavy
+ \TUD@deprecated@key{barfont=#1}{cdhead=heavy}%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{option}^^A barfont
+% \begin{option}{widehead}
+% Der Schalter dient zur Steuerung der Breite des Querbalkens im Kopf der
+% \env{tudpage}-Seite. Entweder der Querbalken liegt im Satzspiegel oder
+% aber über die komplette Papierbreite.
+% \begin{macrocode}
+\TUD@key{widehead}[true]{%
+ \TUD@set@ifkey{widehead}{@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@tempswa%
+ \TUD@deprecated@key{widehead}{cdhead=paperwidth}%
+ \else%
+ \TUD@deprecated@key{widehead=#1}{cdhead=textwidth}%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{option}^^A widehead
+% \begin{option}{tudfoot}
+% Diese Option wird nur aus Gründen der Kompatibilität zu v1.0 definiert.
+% \begin{macrocode}
+\TUD@key{tudfoot}[true]{%
+ \TUD@set@ifkey{tudfoot}{@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@tempswa%
+ \TUD@deprecated@key{tudfoot}{cdfoot=true}%
+ \else%
+ \TUD@deprecated@key{tudfoot=#1}{cdfoot=false}%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{option}^^A tudfoot
+% \begin{option}{color}
+% \begin{option}{colour}
+% Die alte \cls{tudbook}-Klasse hat die Option \opt{color} definiert, mit
+% welcher ein Umschalten auf farbige Titel- und Kapitelseiten möglich ist. Aus
+% Kompatibilitätsgründen wird diese hier ebenfalls vorgehalten.
+% \begin{macrocode}
+\TUD@key{color}[true]{%
+ \TUD@set@numkey{color}{@tempa}{%
+ \TUD@bool@numkey,%
+ {nocolor}{0},{nocolour}{0},{monochrome}{0},{monochromatic}{0},%
+ {color}{1},{colour}{1},%
+ {lite}{2},{light}{2},{pale}{2},%
+ {colorlite}{2},{litecolor}{2},{colourlite}{2},{litecolour}{2},%
+ {colorlight}{2},{lightcolor}{2},{colourlight}{2},{lightcolour}{2},%
+ {colorpale}{2},{palecolor}{2},{colourpale}{2},{palecolour}{2},%
+ {bicolor}{3},{bicolour}{3},{twocolor}{3},{twocolour}{3},%
+ {bichrome}{3},{bichromatic}{3},{dichrome}{3},{dichromatic}{3},%
+ {full}{4},{colorfull}{4},{fullcolor}{4},{colourfull}{4},{fullcolour}{4}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\@tempa\relax% false
+ \TUD@deprecated@key{color=#1}{cd=true}%
+ \or% true
+ \TUD@deprecated@key{color=#1}{cd=color}%
+ \or% litecolor
+ \TUD@deprecated@key{color=#1}{cd=pale}%
+ \or% bicolor
+ \TUD@deprecated@key{color=#1}{cd=bicolor}%
+ \or% full
+ \TUD@deprecated@key{color=#1}{cd=fullcolor}%
+ \fi%
+ \fi%
+}
+\TUD@key{colour}[true]{\TUDoptions{color=#1}}
+% \end{macrocode}
+% \end{option}^^A colour
+% \end{option}^^A color
+% \begin{option}{clearcolor}
+% \changes{v2.06}{2018/08/21}{in \opt{cleardoublespecialpage} integriert}^^A
+% \begin{option}{clearcolour}
+% Die Option wurde in Option \opt{cleardoublespecialpage} integriert.
+% \begin{macrocode}
+%<*book|report>
+\TUD@key{clearcolor}[true]{%
+ \TUD@set@ifkey{clearcolor}{@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@tempswa%
+ \TUD@deprecated@key{clearcolor}{cleardoublespecialpage=color}%
+ \else%
+ \TUD@deprecated@key{clearcolor=#1}{cleardoublespecialpage=nocolor}%
+ \fi%
+ \fi%
+}
+\TUD@key{clearcolour}[true]{\TUDoptions{clearcolor=#1}}
+%</book|report>
+% \end{macrocode}
+% \end{option}^^A clearcolour
+% \end{option}^^A clearcolor
+%
+% \iffalse
+%</class>
+% \fi
+%
+% \begin{option}{fontspec}
+% \changes{v2.02}{2014/08/29}{neu}^^A
+% \changes{v2.05}{2015/07/06}{veraltet}^^A
+% \begin{macro}{\if@tud@x@fontspec@requested}
+% Früher musste die Unterstützung für die Schriftauswahl via \pkg{fontspec}
+% manuell über die folgende Option aktiviert werden.
+% \begin{macrocode}
+\newif\if@tud@x@fontspec@requested
+\TUD@key{fontspec}[true]{%
+ \TUD@set@ifkey{fontspec}{@tud@x@fontspec@requested}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+%<*class>
+ \ClassWarningNoLine{\TUD@Class@Name}%
+%</class>
+%<*package&fonts>
+ \PackageWarningNoLine{tudscrfonts}%
+%</package&fonts>
+ {%
+ The key `fontspec' is deprecated. \MessageBreak%
+ You should load the package `fontspec' manually%
+ }%
+ \fi%
+}
+% \end{macrocode}
+% Da dieser Prozess sehr tief in die Schriftauswahl eingreift und das Laden des
+% Paketes die Schriftauswahl für das ganze Dokument verändert, wird diese
+% Option nur beim Laden der Klasse dzw. des Paketes zugelassen.
+% \begin{macrocode}
+%<*class>
+\AtEndOfClass%
+%</class>
+%<*package&fonts>
+\AtEndOfPackage%
+%</package&fonts>
+{%
+ \TUD@key@toolate{fontspec}%
+ \if@tud@x@fontspec@requested%
+ \RequirePackage{fontspec}[2017/01/24]%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@x@fontspec@requested
+% \end{option}^^A fontspec
+%
+% \iffalse
+%</option>
+%</class|package&fonts>
+%<*body>
+%<*class>
+% \fi
+%
+% \subsection{Veraltete Befehle und Längen}
+%
+% \begin{length}{\footlogoheight}
+% \changes{v2.03}{2015/01/27}{neu}^^A
+% Um die Höhe von Logos im Fußbereich der \pgs{tudheadings}-Seitenstile
+% einheitlich festzulegen, gab es bis einschließlich der Version~v2.04 die
+% Länge \cs{footlogoheight} anstelle der Option \opt{footlogoheight}. Sollte
+% der Anwender diese anpassen, wird \cs{tud@dim@footlogoheight} auf diesen Wert
+% gesetzt und eine Warnung erzeugt.
+% \begin{macrocode}
+\newlength\footlogoheight
+\setlength\footlogoheight{\maxdimen}
+% \end{macrocode}
+% \end{length}^^A \footlogoheight
+% \begin{length}{\pageheadingsvskip}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% \begin{length}{\headingsvskip}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% Mit diesen Längen konnte der Anwender vor der Version~v2.05 die Überschriften
+% von Titel, Teilen und Kapiteln vertikal verschieben. Diese Funktionalität
+% wird seitdem mit den Optionen \opt{headingsvskip} und \opt{pageheadingsvskip}
+% abgedeckt.
+% \begin{macrocode}
+%<*book|report|article>
+\newlength\pageheadingsvskip
+\setlength\pageheadingsvskip{\maxdimen}
+\newlength\headingsvskip
+\setlength\headingsvskip{\maxdimen}
+%</book|report|article>
+% \end{macrocode}
+% \end{length}^^A \headingsvskip
+% \end{length}^^A \pageheadingsvskip
+% \begin{length}{\chapterheadingvskip}
+% Die Länge \cs{chapterheadingvskip} wird aus Gründen der Kompatibilität zu
+% älteren Versionen definiert.
+% \begin{macrocode}
+%<*book|report>
+\newcommand*\chapterheadingvskip{}
+\let\chapterheadingvskip\headingsvskip
+%</book|report>
+% \end{macrocode}
+% \end{length}^^A \chapterheadingvskip
+% \begin{macro}{\professorship}
+% Für die Angabe des Lehrstuhls bzw. der Professur mit kann anstelle von
+% \cs{chair} als Aliasbefehl auch \cs{professorship} genutzt werden.
+% \begin{macrocode}
+\TUD@deprecated@cs{professorship}{chair}
+% \end{macrocode}
+% \end{macro}^^A \professorship
+%
+% \iffalse
+%<*book|report|article>
+% \fi
+%
+% \begin{macro}{\studentid}
+% \begin{macro}{\matriculationid}
+% Zur Angabe von Matrikelnummer kann auch \cs{studentid} oder
+% \cs{matriculationnumber} genutzt werden.
+% \begin{macrocode}
+\TUD@deprecated@cs{studentid}{matriculationnumber}
+\TUD@deprecated@cs{matriculationid}{matriculationnumber}
+% \end{macrocode}
+% \end{macro}^^A \matriculationid
+% \end{macro}^^A \studentid
+% \begin{macro}{\enrolmentyear}
+% Das Immatrikulationsjahr kann auch mit \cs{enrolmentyear} angegeben werden.
+% \begin{macrocode}
+\TUD@deprecated@cs{enrolmentyear}{matriculationyear}
+% \end{macrocode}
+% \end{macro}^^A \enrolmentyear
+% \begin{macro}{\birthplace}
+% Zur Angabe des Geburtsortes kann auch \cs{birthplace} verwendet werden.
+% \begin{macrocode}
+\TUD@deprecated@cs{birthplace}{placeofbirth}
+% \end{macrocode}
+% \end{macro}^^A \birthplace
+% \begin{macro}{\submissiondate}
+% Der Befehl \cs{submissiondate} kann als Aliasbefehl für den Standardbefehl
+% \cs{date} zur Datumsangabe genutzt werden.
+% \begin{macrocode}
+\TUD@deprecated@cs{submissiondate}{date}
+% \end{macrocode}
+% \end{macro}^^A \submissiondate
+% \begin{macro}{\oralexaminationdate}
+% Für \cs{defensedate} kann als Aliasbefehl auch \cs{oralexaminationdate}
+% verwendet werden.
+% \begin{macrocode}
+\TUD@deprecated@cs{oralexaminationdate}{defensedate}
+% \end{macrocode}
+% \end{macro}^^A \oralexaminationdate
+% \begin{macro}{\birthday}
+% Der Geburtstag kann auch mit \cs{birthday} angegeben werden.
+% \begin{macrocode}
+\TUD@deprecated@cs{birthday}{dateofbirth}
+% \end{macrocode}
+% \end{macro}^^A \birthday
+%
+% \iffalse
+%</book|report|article>
+% \fi
+%
+% \begin{macro}{\location}
+% Für die Angabe des Ortes kann auch \cs{location} genutzt werden.
+% \begin{macrocode}
+\TUD@deprecated@cs{location}{place}
+% \end{macrocode}
+% \end{macro}^^A \location
+% \begin{macro}{\logofile}
+% \begin{macro}{\logofilename}
+% Diese beiden Befehle können anstelle von \cs{headlogo} eingesetzt werden.
+% \begin{macrocode}
+\TUD@deprecated@cs{logofile}{headlogo}
+\TUD@deprecated@cs{logofilename}{headlogo}
+% \end{macrocode}
+% \end{macro}^^A \logofilename
+% \end{macro}^^A \logofile
+% \begin{macro}{\startdate}
+% \begin{macro}{\finaldate}
+% \begin{macro}{\maturitydate}
+% Für das Paket \pkg{tudscrsupervisor} sind auch einige Befehle als veraltet
+% anzusehen.
+% \begin{macrocode}
+\AfterPackage{tudscrsupervisor}{%
+ \TUD@deprecated@cs{startdate}{issuedate}%
+ \TUD@deprecated@cs{finaldate}{duedate}%
+ \TUD@deprecated@cs{maturitydate}{duedate}%
+}
+% \end{macrocode}
+% \end{macro}^^A \maturitydate
+% \end{macro}^^A \finaldate
+% \end{macro}^^A \startdate
+%
+% \iffalse
+%</class>
+%<*class|package&fonts>
+% \fi
+%
+% \begin{macro}{\textcdfont}
+% \begin{macro}{\tudfont}
+% \begin{macro}{\univln}
+% \begin{macro}{\univrn}
+% \begin{macro}{\univbn}
+% \begin{macro}{\univxn}
+% \begin{macro}{\univls}
+% \begin{macro}{\univrs}
+% \begin{macro}{\univbs}
+% \begin{macro}{\univxs}
+% \begin{macro}{\textuln}
+% \begin{macro}{\texturn}
+% \begin{macro}{\textubn}
+% \begin{macro}{\textuxn}
+% \begin{macro}{\textuls}
+% \begin{macro}{\texturs}
+% \begin{macro}{\textubs}
+% \begin{macro}{\textuxs}
+% \begin{macro}{\dinbn}
+% \begin{macro}{\textdbn}
+% Für die Klassen und das Paket \pkg{tudscrfonts} werden die expliziten Befehle
+% zur Schriftauswahl zumindest vorgehalten und auf die neuen Schriften gelegt.
+% \begin{macrocode}
+\TUD@deprecated@cs{textcdfont}{textcd}%
+\TUD@deprecated@cs{tudfont}{cdfont}%
+\TUD@deprecated@cs{univln}{cdfontln}%
+\TUD@deprecated@cs{univrn}{cdfontrn}%
+\TUD@deprecated@cs{univbn}{cdfontsn}%
+\TUD@deprecated@cs{univxn}{cdfontbn}%
+\TUD@deprecated@cs{univls}{cdfontli}%
+\TUD@deprecated@cs{univrs}{cdfontri}%
+\TUD@deprecated@cs{univbs}{cdfontsi}%
+\TUD@deprecated@cs{univxs}{cdfontbi}%
+\TUD@deprecated@cs{textuln}{textcdln}%
+\TUD@deprecated@cs{texturn}{textcdrn}%
+\TUD@deprecated@cs{textubn}{textcdsn}%
+\TUD@deprecated@cs{textuxn}{textcdbn}%
+\TUD@deprecated@cs{textuls}{textcdli}%
+\TUD@deprecated@cs{texturs}{textcdri}%
+\TUD@deprecated@cs{textubs}{textcdsi}%
+\TUD@deprecated@cs{textuxs}{textcdbi}%
+\TUD@deprecated@cs{dinbn}{cdfontxn}%
+\TUD@deprecated@cs{textdbn}{textcdxn}%
+% \end{macrocode}
+% \end{macro}^^A \textdbn
+% \end{macro}^^A \dinbn
+% \end{macro}^^A \textuxs
+% \end{macro}^^A \textubs
+% \end{macro}^^A \texturs
+% \end{macro}^^A \textuls
+% \end{macro}^^A \textuxn
+% \end{macro}^^A \textubn
+% \end{macro}^^A \texturn
+% \end{macro}^^A \textuln
+% \end{macro}^^A \univxs
+% \end{macro}^^A \univbs
+% \end{macro}^^A \univrs
+% \end{macro}^^A \univls
+% \end{macro}^^A \univxn
+% \end{macro}^^A \univbn
+% \end{macro}^^A \univrn
+% \end{macro}^^A \univln
+% \end{macro}^^A \tudfont
+% \end{macro}^^A \textcdfont
+% \begin{macro}{\ifdin}
+% \changes{v2.02}{2014/08/29}{Anpassungen für \pkg{fontspec}}^^A
+% \changes{v2.06}{2018/07/10}{für \OpenSans hinfällig}^^A
+% \begin{macro}{\tud@ifdin}
+% \changes{v2.06}{2018/08/02}{neu}^^A
+% Der Befehl \cs{ifdin} ist für \OpenSans hinfällig.
+% \begin{macrocode}
+\TUD@deprecated@cs{ifdin}{@secondoftwo}
+% \end{macrocode}
+% Für die alten Schriften prüft er auf die Verwendung von \DIN. Davon abhängig
+% wird entweder das erste oder das zweite Argument ausgeführt. Dies kann für die
+% Befehle aller Gliederungsebenen genutzt werden, um zwischen der Ausgabe im
+% Dokument sowie Inhaltsverzeichnis und/oder Kolumnentitel zu unterscheiden.
+% Um nicht alle Klassen und Pakete anpassen zu müssen, wird \cs{tud@ifdin} zur
+% internen Nutzung in jedem Fall definiert, um die Kompatibilität gewährleisten
+% zu können.
+% \begin{macrocode}
+\newrobustcmd*\tud@ifdin{%
+ \ifx\f@family\tud@cdfont@db%
+ \expandafter\@firstoftwo%
+ \else%
+ \expandafter\@secondoftwo%
+ \fi%
+}
+\if@tud@cdoldfont@active
+ \newcommand*\ifdin{}%
+ \let\ifdin\tud@ifdin%
+\fi
+% \end{macrocode}
+% \end{macro}^^A \tud@ifdin
+% \end{macro}^^A \ifdin
+% \begin{macro}{\varGamma}
+% \begin{macro}{\varDelta}
+% \begin{macro}{\varTheta}
+% \begin{macro}{\varLambda}
+% \begin{macro}{\varXi}
+% \begin{macro}{\varPi}
+% \begin{macro}{\varSigma}
+% \begin{macro}{\varUpsilon}
+% \begin{macro}{\varPhi}
+% \begin{macro}{\varPsi}
+% \begin{macro}{\varOmega}
+% Die veralteten Befehle für kursive griechische Majuskeln.
+% \begin{macrocode}
+\def\tud@res@a#1{%
+ \TUD@deprecated@cs{var#1}{it#1}%
+}
+\tud@math@loop@greeks@uc\tud@res@a%
+% \end{macrocode}
+% \end{macro}^^A \varOmega
+% \end{macro}^^A \varPsi
+% \end{macro}^^A \varPhi
+% \end{macro}^^A \varUpsilon
+% \end{macro}^^A \varSigma
+% \end{macro}^^A \varPi
+% \end{macro}^^A \varXi
+% \end{macro}^^A \varLambda
+% \end{macro}^^A \varTheta
+% \end{macro}^^A \varDelta
+% \end{macro}^^A \varGamma
+%
+% \iffalse
+%</class|package&fonts>
+%</body>
+% \fi
+%
+% \section{Das Paket \pkg{tudscrcomp} -- Kompatibilität veralteter Klassen}
+%
+% Neben den \TUDScript-Klassen gibt es zahlreiche andere \LaTeX-Umsetzungen des
+% \CDs der \TnUD. Um eine Migration von diesen \enquote{veralteten} Klassen
+% zu erleichtern, wird das Paket \pkg{tudscrcomp} bereitgestellt. Mit diesem
+% können bei der Verwendung von \TUDScript die meisten Optionen und Befehle
+% genutzt werden, welche durch die Klasse \cls{tudbook} und teilweise vormals
+% durch die Klassen die \TUDScript-Klassen in der Version~v1.0 sowie die
+% Posterklassen \cls{tudmathposter} bzw. \cls{tudposter} bereitgestellt wurden.
+%
+% \iffalse
+%<*package&comp>
+%<*base>
+% \fi
+%
+% \subsection{Erkennen der geladenen Klasse}
+%
+% Damit je nach geladener Klasse die passenden Kompatibilitätseinstellungen und
+% -befehle bereitgestellt werden können, wird auf die geladene Klasse geprüft.
+% Danach wird das dazu passende Paket geladen.
+% \begin{macrocode}
+\PassOptionsToPackage{oldcolors}{tudscrcolor}
+\@ifclassloaded{tudscrposter}{%
+ \RequirePackageWithOptions{tudscrcomp-poster}[\TUD@Version]%
+}{%
+ \RequirePackageWithOptions{tudscrcomp-book}[\TUD@Version]%
+}
+% \end{macrocode}
+%
+% \iffalse
+%</base>
+%<*!base>
+%<*body>
+% \fi
+%
+% \subsection{Gemeinsame Optionen und Befehle für alle Klassen}
+%
+% Zunächst werden alle Optionen und Befehle definiert, die unabhängig von der
+% geladenen Klasse generell bereitgestellt werden.
+%
+% \begin{macro}{\einrichtung}
+% \begin{macro}{\fachrichtung}
+% \begin{macro}{\institut}
+% \begin{macro}{\professur}
+% Es werden Aliasbefehle für die Eingabefelder definiert.
+% \begin{macrocode}
+\newcommand*\einrichtung{\faculty}
+\newcommand*\fachrichtung{\department}
+\newcommand*\institut{\institute}
+\newcommand*\professur{\chair}
+% \end{macrocode}
+% \end{macro}^^A \professur
+% \end{macro}^^A \institut
+% \end{macro}^^A \fachrichtung
+% \end{macro}^^A \einrichtung
+% \begin{macro}{\dinBold}
+% \changes{v2.05}{2015/07/13}{neu}^^A
+% \begin{macro}{\dinfamily}
+% \changes{v2.05}{2015/07/13}{neu}^^A
+% Für die explizite Schriftauswahl gibt es ebenfalls zwei ältere Befehle.
+% \begin{macrocode}
+\newcommand*\dinBold{\dinbn}
+\newcommand*\dinfamily{\dinbn}
+% \end{macrocode}
+% \end{macro}^^A \dinfamily
+% \end{macro}^^A \dinBold
+%
+% \iffalse
+%</body>
+%<*book>
+%<*option>
+% \fi
+%
+% \subsection{Kompatibilität zu \cls{tudbook}}
+%
+% Die folgenden Optionen und Befehle werden durch die Klasse \cls{tudbook} und
+% teilweise durch \TUDScript~v1.0 definiert.
+%
+% \begin{option}{colortitle}
+% \begin{option}{nocolortitle}
+% Für farbige Einstellungen wird von \cls{tudbook} die Option \opt{color}
+% definiert. Soll die Titelseite konträr dazu gesetzt werden, muss sich mit den
+% Schlüsseln \opt{colortitle} und \opt{nocolortitle} beholfen werden.
+% \begin{macrocode}
+\TUD@key{colortitle}[true]{%
+ \TUD@set@ifkey{colortitle}{@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@tempswa%
+ \TUDoptions{cdtitle=color}%
+ \else%
+ \TUDoptions{cdtitle=true}%
+ \fi%
+ \fi%
+}
+\TUD@key{nocolortitle}[true]{%
+ \TUD@set@ifkey{nocolortitle}{@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@tempswa%
+ \TUDoptions{cdtitle=true}%
+ \else%
+ \TUDoptions{cdtitle=color}%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{option}^^A nocolortitle
+% \end{option}^^A colortitle
+% \begin{option}{ddcfooter}
+% Außer der Option \opt{ddc} gibt es bei der alten \cls{tudbook}-Klasse noch
+% den Schlüssel \opt{ddcfooter}. Dieser wird auf die Option \opt{ddcfoot}
+% gelegt.
+% \begin{macrocode}
+\TUD@key{ddcfooter}[true]{%
+ \TUD@set@ifkey{ddcfooter}{@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@tempswa%
+ \TUDoptions{ddcfoot=true}%
+ \else%
+ \TUDoptions{ddcfoot=false}%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{option}^^A ddcfooter
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+% \begin{macro}{\moreauthor}
+% \begin{macro}{\submitdate}
+% \begin{macro}{\supervisorII}
+% \begin{macro}{\supervisedby}
+% \begin{macro}{\supervisedIIby}
+% \begin{macro}{\submittedon}
+% Es werden weitere Aliasbefehle für die Eingabefelder der \cls{tudbook}-Klasse
+% definiert.
+% \begin{macrocode}
+\newcommand*\moreauthor{\authormore}
+\newcommand*\submitdate{\date}
+\newcommand*\supervisorII[1]{\g@addto@macro\@supervisor{\and #1}}
+\newcommand*\supervisedby[1]{\gdef\supervisorname{#1}}
+\newcommand*\supervisedIIby[1]{\gdef\supervisorothername{#1}}
+\newcommand*\submittedon[1]{\gdef\datetext{#1}}
+% \end{macrocode}
+% \end{macro}^^A \submittedon
+% \end{macro}^^A \supervisedIIby
+% \end{macro}^^A \supervisedby
+% \end{macro}^^A \supervisorII
+% \end{macro}^^A \submitdate
+% \end{macro}^^A \moreauthor
+% \begin{macro}{\dissertation}
+% Bei der Definition des Typs der Abschlussarbeit mit \cs{dissertation} wird
+% die Lokalisierungsvariable \cs{dissertationname} verwendet und die Feldnamen
+% angepasst.
+% \begin{macrocode}
+\newcommand*\dissertation{%
+ \thesis{\dissertationname}%
+ \let\supervisorname\refereename%
+ \let\supervisorothername\refereeothername%
+}
+% \end{macrocode}
+% \end{macro}^^A \dissertation
+% \begin{environment}{theglossary}
+% \begin{macro}{\glossaryname}
+% \begin{macro}{\glossitem}
+% Eine rudimentäre Umgebung für ein Glossar.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \ifundef{\theglossary}{%
+ \providecommand*\glossaryname{Glossar}%
+ \newenvironment{theglossary}[1][]{%
+ \PackageWarning{tudscrcomp}{%
+ Using the environment `theglossary' is not\MessageBreak%
+ recommended. You should rather use an appropriate\MessageBreak%
+ package such as glossaries%
+ }%
+ \let\bibname\glossaryname%
+ \bib@heading%
+ #1%
+ \list{}{%
+ \setlength\labelsep{\z@}%
+ \setlength\labelwidth{\z@}%
+ \setlength\itemindent{-\leftmargin}%
+ }%
+ }{\endlist}%
+ \newcommand\glossitem[1]{\item[] #1\par}%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \glossitem
+% \end{macro}^^A \glossaryname
+% \end{environment}^^A theglossary
+% \begin{macro}{\chapterpage}
+% \begin{macro}{\if@tud@comp@chapterpage}
+% \begin{macro}{\tud@comp@chapterpage@set}
+% \begin{macro}{\tud@comp@chapterpage@unset}
+% \begin{macro}{\tud@comp@chapterpage@wrn}
+% Die alte \cls{tudbook}-Klasse stellt den Befehl \cs{chapterpage} bereit.
+% Mit diesem ist es möglich, das Verhalten der Kapitelseiten~-- welches durch
+% die Option \opt{chapterpage} gesteuert wird~-- temporär umzuschalten, also
+% statt Kapitelseiten lediglich Überschriften zu setzen und umgekehrt. Dies ist
+% typographisch durchaus zu hinterfragen, allerdings sollen die neuen Klassen
+% möglichst kompatibel zu der alten sein, weshalb diese Funktionalität trotzdem
+% implementiert wird. Der Befehl \cs{chapterpage} setzt den globalen Schalter
+% \cs{if@tud@comp@chapterpage}. Der Befehl \cs{tud@comp@chapterpage@set} setzt
+% für Kapitel das komplementäre Verhalten zur eigentlich gewählten
+% \opt{chapterpage}-Option. Nach dem Setzen der entsprechenden Überschrift
+% wird \cs{tud@comp@chapterpage@set} nochmals aufgerufen, das Verhalten auf den
+% ursprünglichen Zustand geschaltet und der globale Schalter
+% \cs{if@tud@comp@chapterpage} zurückgesetzt.
+% \begin{macrocode}
+\newif\if@tud@comp@chapterpage
+\newcommand*\chapterpage{%
+ \global\@tud@comp@chapterpagetrue%
+ \tud@comp@chapterpage@wrn%
+}
+\newcommand*\tud@comp@chapterpage@set{%
+ \if@tud@comp@chapterpage%
+ \if@tud@chapterpage%
+ \TUDoptions{chapterpage=false}%
+ \else%
+ \TUDoptions{chapterpage=true}%
+ \fi%
+ \fi%
+}
+\newcommand*\tud@comp@chapterpage@unset{%
+ \tud@comp@chapterpage@set%
+ \global\@tud@comp@chapterpagefalse%
+}
+% \end{macrocode}
+% Da wie bereits beschrieben das Vorgehen äußerst fragwürdig ist, wird bei der
+% Verwendung von \cs{chapterpage} zumindest einmalig eine Warnung ausgegeben.
+% \begin{macrocode}
+\newcommand*\tud@comp@chapterpage@wrn{%
+ \PackageWarning{tudscrcomp}{%
+ The command \string\chapterpage\space is not\MessageBreak%
+ recommended. You should use the same style for\MessageBreak%
+ chapters throughout the document%
+ }%
+ \global\let\tud@comp@chapterpage@wrn\relax%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@comp@chapterpage@wrn
+% \end{macro}^^A \tud@comp@chapterpage@unset
+% \end{macro}^^A \tud@comp@chapterpage@set
+% \end{macro}^^A \if@tud@comp@chapterpage
+% \end{macro}^^A \chapterpage
+% \begin{macro}{\tud@chapter@pre}
+% \begin{macro}{\tud@chapter@app}
+% Hier erfolgt die notwendige Anpassungen der internen Gliederungsbefehle.
+% \begin{macrocode}
+\AtEndPreamble{%
+ \if@chapter%
+ \pretocmd{\tud@chapter@pre}{\tud@comp@chapterpage@set}%
+ {}{\tud@patch@wrn{tud@chapter@pre}}%
+ \apptocmd{\tud@chapter@app}{\tud@comp@chapterpage@unset}%
+ {}{\tud@patch@wrn{tud@chapter@app}}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@chapter@app
+% \end{macro}^^A \tud@chapter@pre
+%
+%
+% \iffalse
+%</body>
+%</book>
+%<*poster>
+%<*option>
+% \fi
+%
+% \subsection{Kompatibilität zu \cls{tudmathposter}}
+%
+% Die hier bereitgestellten Optionen und Befehle werden durch die Klasse
+% \cls{tudmathposter} bzw. \cls{tudposter} definiert.
+%
+% \begin{option}{bluebg}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% Mit der Option \opt{bluebg} kann der Hintergrund des Posters in \val{HKS41}
+% gesetzt werden.
+% \begin{macrocode}
+\TUD@key{bluebg}[true]{%
+ \TUD@set@ifkey{bluebg}{@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@tempswa%
+ \TUDoptions{backcolor=true}%
+ \else%
+ \TUDoptions{backcolor=false}%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{option}^^A bluebg
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+% \begin{layerpagestyle}{tudposter}
+% \changes{v2.05}{2016/07/26}{neu}^^A
+% Der Seitenstil \pgs{tudposter} wird als Alias für \pgs{empty.tudheadings}
+% definiert.
+% \begin{macrocode}
+\newcommand*\ps@tudposter{}
+\let\ps@tudposter\ps@empty
+\AfterPackage*{scrlayer-scrpage}{%
+ \DeclarePageStyleAlias{tudposter}{empty.tudheadings}%
+}
+% \end{macrocode}
+% \end{layerpagestyle}^^A tudposter
+% \begin{macro}{\telefon}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% \begin{macro}{\fax}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% \begin{macro}{\email}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% \begin{macro}{\tud@split@author@list}
+% Hier werden alle alten Feldbefehle auf die Pendants von \TUDScript gelegt und
+% das Makro \cs{tud@split@author@list} um diese Befehle erweitert.
+% \begin{macrocode}
+\newrobustcmd*\telefon{\telephone}
+\patchcmd{\tud@split@author@list}{telephone}{%
+ telephone,telefon%
+}{}{\tud@patch@wrn{tud@split@author@list}}
+\newrobustcmd*\fax{\telefax}
+\patchcmd{\tud@split@author@list}{telefax}{%
+ telefax,fax%
+}{}{\tud@patch@wrn{tud@split@author@list}}
+\newrobustcmd*\email[1]{\emailaddress*{#1}}
+\patchcmd{\tud@split@author@list}{emailaddress}{%
+ emailaddress,email%
+}{}{\tud@patch@wrn{tud@split@author@list}}
+% \end{macrocode}
+% \end{macro}^^A \tud@split@author@list
+% \end{macro}^^A \email
+% \end{macro}^^A \fax
+% \end{macro}^^A \telefon
+% \begin{macro}{\homepage}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% Für die Angabe einer Website wird \cs{webpage*} verwendet, um etwaige Makros
+% zur Formatierung nicht beachten zu müssen.
+% \begin{macrocode}
+\newcommand*\homepage[1]{\webpage*{#1}}
+% \end{macrocode}
+% \end{macro}^^A \homepage
+% \begin{macro}{\zweitlogofile}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% \begin{macro}{\zweitlogo}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% \begin{macro}{\institutslogofile}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% \begin{macro}{\institutslogo}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% \begin{macro}{\drittlogofile}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% \begin{macro}{\drittlogo}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% Die Makros zur Angabe von Logo-Dateien (\cs{\dots{}logofile}) werden auf die
+% passenden \TUDScript-Befehle gelegt. Die Änderung der Makros, welche für die
+% Einbindung der Logos verantwortlich sind (\cs{\dots{}logo}), wird allerdings
+% nicht unterstützt.
+% \begin{macrocode}
+\newcommand*\zweitlogofile[2][]{\headlogo[#1]{#2}}
+\newcommand*\zweitlogo[1]{%
+ \PackageWarning{tudscrcomp}{%
+ It isn't possible to redefine the definition for\MessageBreak%
+ including a logo in the header. Please see the\MessageBreak%
+ documentation of \string\headlogo%
+ }%
+}
+\newcommand*\institutslogofile[2][]{\footlogo[#1]{,,,,,,,#2,}}
+\newcommand*\institutslogo[1]{%
+ \PackageWarning{tudscrcomp}{%
+ It isn't possible to redefine the definition for\MessageBreak%
+ including a logo in the footer. Please see the\MessageBreak%
+ documentation of \string\footlogo%
+ }%
+}
+\newcommand*\drittlogofile[1]{%
+ \PackageWarning{tudscrcomp}{%
+ Nothing happened, you should use \string\footlogo\MessageBreak%
+ instead. Please see the documentation of \string\footlogo\MessageBreak%
+ and option `ddc' or `ddcfoot'%
+ }%
+}
+\newcommand*\drittlogo[1]{%
+ \PackageWarning{tudscrcomp}{%
+ It isn't possible to redefine the definition for\MessageBreak%
+ including a logo in the footer. Please see the\MessageBreak%
+ documentation of \string\footlogo\space and option\MessageBreak%
+ `ddc' or `ddcfoot'%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \drittlogo
+% \end{macro}^^A \drittlogofile
+% \end{macro}^^A \institutslogo
+% \end{macro}^^A \institutslogofile
+% \end{macro}^^A \zweitlogo
+% \end{macro}^^A \zweitlogofile
+% \begin{macro}{\topsection}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% \begin{counter}{topsection}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% \begin{macro}{\topsubsection}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% \begin{counter}{topsubsection}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% Die Klasse \cls{tudmathposter} definiert zusätzliche Gliederungsbefehle,
+% welche allerdings völlig willkürliche vertikale Abstände davor und danach
+% verwendet. Es besteht keinerlei Ambition, diese genau abzubilden. Falls hier
+% tatsächlich ein Anpassungsbedarf besteht, kann dies mit den entsprechenden
+% Mitteln von \KOMAScript{} (\cs{RedeclareSectionCommand}) nach dem Laden von
+% \pkg{tudscrcomp} erfolgen.
+%
+% Die neuen Gliederungsbefehle erschließen sich mir ohnehin nicht, wirken eher
+% so, als ob diese entstanden sind, weil auf Anwendungsebene etwas nicht so
+% funktioniert hat, wie gewollt und statt einer vernünftigen Ursachenforschung
+% einfach ein eigenes Konstrukt erschaffen wurde, um unzulängliche Fähigkeiten
+% zu umgehen. Sei's drum. Für die Umsetzung werden die Basisgliederungsbefehle
+% geklont und anschließend der gewünschte vertikale Abstand vor der Überschrift
+% entfernt.
+% \ToDo{Klonen Gliederungsebenen über Makro (Markus fragen?!)}[v2.??]
+% \begin{macrocode}
+\newcommand*\topsectionnumdepth{\sectionnumdepth}
+\newcommand*\scr@topsection@sectionindent{\scr@section@sectionindent}
+\newcommand*\scr@topsection@beforeskip{\scr@section@beforeskip}
+\newcommand*\scr@topsection@afterskip{\scr@section@afterskip}
+\newcommand*\topsectiontocdepth{\sectiontocdepth}
+\newcommand*\scr@topsection@tocindent{\scr@section@tocindent}
+\newcommand*\scr@topsection@tocnumwidth{\scr@section@tocnumwidth}
+\newcommand*\l@topsection{\l@section}
+\DeclareNewSectionCommand[%
+ style=section,%
+ font={\usekomafont{section}},%
+ beforeskip=\z@,%
+]{topsection}
+\let\c@topsection\c@section
+\newcommand*\topsubsectionnumdepth{\subsectionnumdepth}
+\newcommand*\scr@topsubsection@sectionindent{\scr@subsection@sectionindent}
+\newcommand*\scr@topsubsection@beforeskip{\scr@subsection@beforeskip}
+\newcommand*\scr@topsubsection@afterskip{\scr@subsection@afterskip}
+\newcommand*\topsubsectiontocdepth{\subsectiontocdepth}
+\newcommand*\scr@topsubsection@tocindent{\scr@subsection@tocindent}
+\newcommand*\scr@topsubsection@tocnumwidth{\scr@subsection@tocnumwidth}
+\newcommand*\l@topsubsection{\l@subsection}
+\DeclareNewSectionCommand[%
+ style=section,%
+ font={\usekomafont{subsection}},%
+ beforeskip=\z@,%
+]{topsubsection}
+\let\c@topsubsection\c@subsection
+% \end{macrocode}
+% \end{counter}^^A topsubsection
+% \end{macro}^^A \topsubsection
+% \end{counter}^^A topsection
+% \end{macro}^^A \topsection
+% \begin{macro}{\centersection}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% \begin{macro}{\centersubsection}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% \begin{macro}{\topcentersection}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% \begin{macro}{\topcentersubsection}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% \begin{macro}{\tud@comp@centersection}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% Weiterhin werden Gliederungsebenen definiert, die unabhängig vom restlichen
+% Layout zentriert gesetzt werden. Eine Mischung von unterschiedlichen Stilen
+% gleichartiger Ebenen ist aus sicht von Typographie und Layout eher fraglich.
+% \begin{macrocode}
+\newcommand*\centersection[2][\@nil]{%
+ \tud@comp@centersection{section}{#1}{#2}%
+}
+\newcommand*\centersubsection[2][\@nil]{%
+ \tud@comp@centersection{subsection}{#1}{#2}%
+}
+\newcommand*\topcentersection[2][\@nil]{%
+ \tud@comp@centersection{topsection}{#1}{#2}%
+}
+\newcommand*\topcentersubsection[2][\@nil]{%
+ \tud@comp@centersection{topsubsection}{#1}{#2}%
+}
+% \end{macrocode}
+% Alle Gliederungsbefehle nutzen die passenden Ebenen mit der standardmaßig
+% Ausrichtung und passen kurzfristig \cs{raggedsection} an. Dabei auch darauf
+% geachtet, ob das optionale Argument durch den Anwender verwendet wird.
+% \begin{macrocode}
+\newcommand*\tud@comp@centersection[3]{%
+ \tud@cs@store{raggedsection}%
+ \let\raggedsection\centering%
+ \ifx#2\@nil\relax%
+ \csuse{#1}{#3}%
+ \else%
+ \csuse{#1}[#2]{#3}%
+ \fi%
+ \tud@cs@restore{raggedsection}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@comp@centersection
+% \end{macro}^^A \topcentersubsection
+% \end{macro}^^A \topcentersection
+% \end{macro}^^A \centersubsection
+% \end{macro}^^A \centersection
+% \begin{macro}{\sectiontopskip}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% \begin{macro}{\subsectiontopskip}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% Die Klasse \cls{tudmathposter} stellt zu den neuen Gliederungsbefehlen noch
+% zusätzlich die beiden Makros \cs{sectiontopskip} und \cs{subsectiontopskip}
+% bereit. Diese werden in darin bei der Definition dieser Gliederungsebenen
+% verwendet. Da die \TUDScript-Klassen den Ansatz verfolgen, dem Benutzer
+% weitestgehende Freiheiten bei der Gestaltung des Layouts einzuräumen, werden
+% diese an die Einstellungen der zentralen \KOMAScript"=Benutzerschnittstelle
+% gekoppelt.
+% \begin{macrocode}
+\newcommand\sectiontopskip{\scr@section@beforeskip}
+\newcommand\subsectiontopskip{\scr@subsection@beforeskip}
+% \end{macrocode}
+% \end{macro}^^A \subsectiontopskip
+% \end{macro}^^A \sectiontopskip
+% \begin{counter}{secnumdepth}
+% Standardmäßig wird die Nummerierung aller Gliederungsebenen deaktiviert.
+% \begin{macrocode}
+\setcounter{secnumdepth}{\m@ne}
+% \end{macrocode}
+% \end{counter}^^A secnumdepth
+% \begin{macro}{\fusszeile}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% \begin{macro}{\footcolumn}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% Mit diesen Befehlen lässt sich der Inhalt des Fußbereiches angepassen. Wird
+% in einem und/oder beiden Argumente von \cs{footcontent} ein Stern \val{*}
+% verwendet, so bleibt der bisherige Inhalt erhalten.
+% \begin{macrocode}
+\newcommand*\fusszeile[2][]{\footcontent[#1]{#2}}
+\newcommand*\footcolumn[2]{%
+ \ifnumber{#1}{%
+ \ifcase#1\relax%
+ \footcontent{#2}%
+ \or%
+ \footcontent{#2}[*]%
+ \or%
+ \footcontent{*}[#2]%
+ \fi%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \footcolumn
+% \end{macro}^^A \fusszeile
+%
+% \iffalse
+%</body>
+%<*option>
+% \fi
+%
+% \begin{option}{tudmathposterfoot}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% \begin{macro}{\if@tud@mathposterfoot}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% Mit der Option \opt{tudmathposterfoot} kann die Darstellung des Fußes im
+% Poster angepasst werden. Die Klasse \cls{tudmathposter} setzt den Fußbereich
+% in zwei asymmetrischen Spalten, wohingegen die \TUDScript-Klassen diesen
+% zentriert und symmetrisch zum Satzspiegel platzieren.
+% \begin{macrocode}
+\newif\if@tud@mathposterfoot
+\TUD@key{tudmathposterfoot}[true]{%
+ \TUD@set@ifkey{tudmathposterfoot}{@tud@mathposterfoot}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@tud@mathposterfoot%
+ \footcontent[\small]{%
+ \tud@footcontent@@left{}%
+ }[%
+ \tud@footcontent@@right{}{}%
+ ]%
+ \else%
+ \footcontent{%
+ \tud@footcontent@@left{\contactname}%
+ }[%
+ \tud@footcontent@@right{\authorname}{\contactpersonname}%
+ ]%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% Die Option \opt{cdfoot} wird um Werte für die Einstellung des Posterfußes
+% erweitert.
+% \begin{macrocode}
+\TUD@key{cdfoot}[true]{%
+ \TUD@set@numkey{cdfoot}{@tempa}{%
+ {tudscrposter}{0},{tudscrposterfoot}{0},{cdposter}{0},{poster}{0},%
+ {tudmathposter}{1},{tudmathposterfoot}{1},{mathposter}{1},{tudposter}{1}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\@tempa\relax% tudscrposter
+ \TUDoptions{tudmathposterfoot=false}%
+ \else% tudmathposter
+ \TUDoptions{tudmathposterfoot=true}%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@mathposterfoot
+% \end{option}^^A tudmathposterfoot
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+% \begin{macro}{\tud@footcontent@use}
+% \begin{macro}{\tud@comp@mathposterwidth}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% Um die Option \opt{tudmathposterfoot} umzusetzen, muss für die Ausgabe des
+% Fußbereichs eine Anpassung des Makros \cs{tud@footcontent@use} erfolgen.
+% Normalerweise wird der Fußbereich in zwei gleichbreite Spalten über die
+% komplette Textbreite aufgeteilt. Dahingegen werden durch die Klasse
+% \cls{tudmathposter} beide Fußspalten nicht über den kompletten Textbereich
+% verteilt, sondern es verbleibt etwas ungenutzter Platz rechts davon, welcher
+% für ein etwaiges Logo verwendet wird. Dieses Verhalten kann über die Option
+% \opt{tudmathposterfoot} aktiviert werden und wird hier nachgebildet.
+% \begin{macrocode}
+\newcommand*\tud@comp@mathposterwidth{4.2\tud@len@widemargin}
+\patchcmd{\tud@footcontent@use}{%
+ \hsize=\dimexpr#2-\@tempdimc\relax%
+}{%
+ \if@tud@mathposterfoot%
+ \hsize=\dimexpr\tud@comp@mathposterwidth\relax%
+ \else%
+ \hsize=\dimexpr#2-\@tempdimc\relax%
+ \fi%
+}{}{\tud@patch@wrn{tud@footcontent@use}}
+\patchcmd{\tud@footcontent@use}{%
+ \hsize=\dimexpr(#2-\columnsep)/2\relax%
+}{%
+ \if@tud@mathposterfoot%
+ \hsize=\dimexpr(\tud@comp@mathposterwidth-\columnsep)/2\relax%
+ \else%
+ \hsize=\dimexpr(#2-\columnsep)/2\relax%
+ \fi%
+}{}{\tud@patch@wrn{tud@footcontent@use}}
+\patchcmd{\tud@footcontent@use}{%
+ \hsize=\dimexpr(#2-\columnsep)/2-\@tempdimc\relax%
+}{%
+ \if@tud@mathposterfoot%
+ \hsize=\dimexpr(\tud@comp@mathposterwidth-\columnsep)/2\relax%
+ \else%
+ \hsize=\dimexpr(#2-\columnsep)/2-\@tempdimc\relax%
+ \fi%
+}{}{\tud@patch@wrn{tud@footcontent@use}}
+% \end{macrocode}
+% \end{macro}^^A \tud@comp@mathposterwidth
+% \end{macro}^^A \tud@footcontent@use
+% \begin{environment}{figurehere}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% \begin{environment}{tablehere}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% Weiterhin stellt die Klasse \cls{tudmathposter} zwei Umgebungen bereit, mit
+% denen sich Tabellen und Bilder an einer bestimmten Stelle exakt platzieren
+% lassen. Prinzipiell könnte hierfür auch das Paket \pkg{float} zum Einsatz
+% kommen.
+% \ToDo{Für \cls{tudscrposter} übernehmen?}[v2.07]
+% \begin{macrocode}
+\newenvironment{figurehere}{%
+ \def\@captype{figure}%
+ \renewcommand*\caption{\captionof{figure}}%
+ \renewcommand*\captionabove{\captionaboveof{figure}}%
+ \renewcommand*\captionbelow{\captionbelowof{figure}}%
+ \vskip\intextsep%
+ \vbox \bgroup%
+ \hsize=\columnwidth%
+ \@parboxrestore%
+ \ignorespaces%
+}{%
+ \egroup%
+ \vskip\intextsep%
+ \ignorespaces%
+}
+\newenvironment{tablehere}{%
+ \def\@captype{table}%
+ \renewcommand*\caption{\captionof{table}}%
+ \renewcommand*\captionabove{\captionaboveof{table}}%
+ \renewcommand*\captionbelow{\captionbelowof{table}}%
+ \vskip\intextsep%
+ \vbox \bgroup%
+ \hsize=\columnwidth%
+ \@parboxrestore%
+ \ignorespaces%
+}{%
+ \egroup%
+ \vskip\intextsep%
+ \ignorespaces%
+}
+% \end{macrocode}
+% \end{environment}^^A tablehere
+% \end{environment}^^A figurehere
+% \begin{environment}{farbtabellen}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% \begin{macro}{\if@tud@comp@graytable}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% \begin{macro}{\blautabelle}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% \begin{macro}{\grautabelle}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% Außerdem wird eine Umgebung für farbige Tabellen sowie zwei Umschaltbefehle
+% für die farbliche Ausprägung der Tabellenzeilen definiert.
+% \begin{macrocode}
+\PassOptionsToPackage{table}{xcolor}
+\newif\if@tud@comp@graytable
+\newcommand*\blautabelle{\@tud@comp@graytablefalse}
+\newcommand*\grautabelle{\@tud@comp@graytabletrue}
+\newenvironment{farbtabellen}{%
+ \if@tud@comp@graytable%
+ \rowcolors{1}{HKS92!20}{HKS92!10}%
+ \else%
+ \rowcolors{1}{HKS41!20}{HKS41!10}%
+ \fi%
+}{}
+% \end{macrocode}
+% \end{macro}^^A \grautabelle
+% \end{macro}^^A \blautabelle
+% \end{macro}^^A \if@tud@comp@graytable
+% \end{environment}^^A farbtabellen
+% \begin{macro}{\schnittrand}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% Zu guter Letzt geht es an das Makro \cs{schnittrand}. Zur Intension dieses
+% Befehls gab es auf \hrfn{https://github.com/tud-cd/tud-cd/issues/6}{GitHub}
+% bereits eine angeregte Diskussion. Deshalb wird das Makro als Wertzuweisung
+% für die Option \opt{bleedmargin} genutzt.
+% \ToDo{Für \cls{tudscrposter} übernehmen?}[v2.07]
+% \begin{macrocode}
+\ifundef{\schnittrand}{}{%
+ \ifisdimension{\schnittrand}{%
+ \edef\@tempa{%
+ paperwidth=\the\dimexpr\paperwidth+\schnittrand*2\relax,%
+ paperheight=\the\dimexpr\paperheight+\schnittrand*2\relax,%
+ layout=\the\paperwidth:\the\paperheight,%
+ layoutoffset=\the\dimexpr\schnittrand\relax,%
+ showcrop%
+ }%
+ \expandafter\geometry\expandafter{\@tempa}%
+ }{%
+ \PackageErrorNoLine{tudscrcomp}{%
+ Wrong definition for `\string\schnittrand'%
+ }{%
+ The definition of `\string\schnittrand' does not expand to\MessageBreak%
+ a valid dimension expression.%
+ }%
+ }%
+}%
+% \end{macrocode}
+% \end{macro}^^A \schnittrand
+%
+% Die Klasse \cls{tudmathposter} lädt allerhand Pakete. Dies ist jedoch für den
+% Anwender alles andere als vorteilhaft, da dadurch unter Umständen Konflikte
+% mit anderen Paketen entstehen oder der Nutzer im Zweifelsfall gar nicht weiß,
+% dass verwendete Befehle aus bestimmten Paketen entspringen. Dennoch werden
+% aus Kompatibilitätsgründen einige Pakete geladen, um bestehende Dokumente
+% trotz alledem nach der Portierung kompiliert werden können. Um den Nutzer die
+% Möglichkeit zu geben, die Pakete selber ggf. mit Optionen zu laden, erfolgt
+% die Anforderung der Pakete erst am ende der Präambel.
+% \begin{macrocode}
+\AtEndPreamble{%
+ \RequirePackage{amsmath}[2016/06/28]%
+ \RequirePackage{amsfonts}[2013/01/14]%
+ \RequirePackage{calc}[2014/10/28]%
+ \RequirePackage{textcomp}[2016/06/19]%
+ \RequirePackage{tabularx}[2016/02/03]%
+}
+% \end{macrocode}
+%
+% \iffalse
+%</body>
+%</poster>
+%</!base>
+%</package&comp>
+% \fi
+%
+% \section{Das Paket \pkg{fix-tudscrfonts} -- Schriften für alte TUD-Klassen}
+%
+% \changes{v2.05}{2015/12/08}{\pkg{fix-tudscrfonts}: Dieses Paket übernimmt die
+% Bereitstellung der Schriften für veraltete Klassen}^^A
+%
+% Das Paket \pkg{fix-tudscrfonts} bietet die Schriftfamilien des \TUDCDs im
+% \TUDScript-Stil für die \enquote{veralteten} Klassen von Klaus Bergmann sowie
+% die Posterklassen an.
+%
+% \iffalse
+%<*package&fixfonts>
+%<*body>
+% \fi
+%
+% Das Paket \pkg{tudscrfonts} wird am Ende der Präambel geladen, falls dies
+% zuvor nicht durch den Anwender geschieht.
+% \begin{macrocode}
+\AtEndPreamble{%
+ \tud@fixfonts@class@check%
+ \RequirePackage{tudscrfonts}[\TUD@Version]%
+}
+% \end{macrocode}
+%
+% \subsection{Verwendbarkeit und Ladezeitpunkt von \pkg{fix-tudscrfonts}}
+%
+% Da das Paket eine Vielzahl an Anpassungen der Schriftbefehle vornimmt sowie
+% die Definition von \LaTeXe-Standardbefehlen bereits vor dem Laden der
+% eigentlichen Dokumentklasse sichern muss, kann dieses Paket ausschließlich
+% vor \cs{documentclass} mit \cs{RequirePackage} geladen werden.
+%
+% \begin{macro}{\tud@fixfonts@class@check}
+% \changes{v2.05}{2016/01/02}{neu}^^A
+% Dieser Befehl wird nach dem Laden einer unterstützten Klasse zu \cs{relax}
+% gesetzt. Sollte das Paket jedoch erst nach einer Dokumentklasse geladen
+% werden, so wird ein Fehler ausgegeben.
+% \begin{macrocode}
+\ifx\usepackage\RequirePackage
+ \newcommand*\tud@fixfonts@class@check{%
+ \PackageError{fix-tudscrfonts}{Package too late}{%
+ You must load `fix-tudscrfonts' with\MessageBreak%
+ `\string\RequirePackage' before any document class.%
+ }%
+ }%
+% \end{macrocode}
+% Wird das Paket mit einer nicht unterstützten Dokumentklasse verwendet, wird
+% ebenfalls ein Fehler ausgegeben.
+% \begin{macrocode}
+\else
+ \newcommand*\tud@fixfonts@class@check{%
+ \PackageError{fix-tudscrfonts}{Unsupported class found}{%
+ You have to use `fix-tudscrfonts' only\MessageBreak%
+ with supported classes. These are: `tudbook',\MessageBreak%
+ `tudbeamer', `tudfax', `tudform', `tudhaus',\MessageBreak%
+ and `tudletter' as well as `tudposter'\MessageBreak%
+ and `tudmathposter'. Otherwise it's adequate\MessageBreak%
+ to use package `tudscrfonts' as usual.%
+ }%
+ }%
+\fi
+% \end{macrocode}
+% \end{macro}^^A \tud@fixfonts@class@check
+%
+% \subsection{Patches für die unterstützten Klassen}
+%
+% Für alle unterstützten Klassen sind vor und nach dem Laden einige Anpassungen
+% an den bereitgestellten Schriftbefehlen notwendig.
+%
+% \begin{macro}{\tud@fixfonts@class@adapt}
+% \changes{v2.05}{2016/01/02}{neu}^^A
+% \begin{macro}{\dinBold}
+% \changes{v2.05}{2015/07/13}{neu}^^A
+% \begin{macro}{\dinfamily}
+% \changes{v2.05}{2015/07/13}{neu}^^A
+% \begin{macro}{\univLightVII}
+% \begin{macro}{\univLightObliqueVII}
+% \begin{macro}{\univBoldVII}
+% \begin{macro}{\univLightIX}
+% \begin{macro}{\univLightObliqueIX}
+% \begin{macro}{\univBoldIX}
+% \begin{macro}{\univLightXI}
+% \begin{macro}{\univLightObliqueXI}
+% \begin{macro}{\univBoldXI}
+% \begin{macro}{\univLightXV}
+% \begin{macro}{\univLightObliqueXV}
+% \begin{macro}{\univBoldXV}
+% \begin{macro}{\univLightHead}
+% \begin{macro}{\univBoldHead}
+% \begin{macro}{\tud@head@fontsize}
+% Mit diesen beiden Befehlen werden vor dem Laden der alten Klassen einige
+% Befehle gesichert und die benötigten Optionen gesetzt. Nach dem Laden der
+% jeweiligen Klasse werden die gesicherten Makrodefinitionen wiederhergestellt
+% und einige Schriftdefinitionen angepasst. Bei den alten TUD-Klassen betrifft
+% dies in erster Linie die Mathematikschriften sowie die in den Klassen
+% definierten, fixen Schriften.
+% \begin{macrocode}
+\newcommand*\tud@fixfonts@class@adapt[2]{%
+ \BeforeClass{#1}{%
+ \let\tud@fixfonts@class@check\relax%
+ \tud@cs@store{DeclareFixedFont}%
+ \renewcommand*\DeclareFixedFont[6]{}%
+ \tud@cs@store{rmdefault}%
+ \tud@cs@store{sfdefault}%
+ \tud@cs@store{ttdefault}%
+ \tud@cs@store{bfdefault}%
+ \tud@cs@store{mddefault}%
+ \tud@cs@store{itdefault}%
+ \tud@cs@store{sldefault}%
+ \tud@cs@store{scdefault}%
+ \tud@cs@store{updefault}%
+ \tud@cs@store{rmfamily}%
+ \tud@cs@store{sffamily}%
+ \tud@cs@store{ttfamily}%
+ \tud@cs@store{familydefault}%
+ \tud@cs@store{seriesdefault}%
+ \tud@cs@store{shapedefault}%
+ \tud@cs@store{normalfont}%
+ \let\normalfont\relax%
+ \PassOptionsToClass{serifmath}{#1}%
+ }%
+ \AfterClass{#1}{%
+ \tud@cs@restore{DeclareFixedFont}%
+ \tud@cs@restore{rmdefault}%
+ \tud@cs@restore{sfdefault}%
+ \tud@cs@restore{ttdefault}%
+ \tud@cs@restore{bfdefault}%
+ \tud@cs@restore{mddefault}%
+ \tud@cs@restore{itdefault}%
+ \tud@cs@restore{sldefault}%
+ \tud@cs@restore{scdefault}%
+ \tud@cs@restore{updefault}%
+ \tud@cs@restore{rmfamily}%
+ \tud@cs@restore{sffamily}%
+ \tud@cs@restore{ttfamily}%
+ \tud@cs@restore{familydefault}%
+ \tud@cs@restore{seriesdefault}%
+ \tud@cs@restore{shapedefault}%
+ \tud@cs@restore{normalfont}%
+ #2%
+ \AfterPackage{tudscrfonts}{%
+ \def\dinBold{\dinbn}%
+ \def\dinfamily{\dinbn}%
+ \AtBeginDocument{%
+ \newcommand*\univLightVII{}%
+ \newcommand*\univLightObliqueVII{}%
+ \newcommand*\univBoldVII{}%
+ \newcommand*\univLightIX{}%
+ \newcommand*\univLightObliqueIX{}%
+ \newcommand*\univBoldIX{}%
+ \newcommand*\univLightXI{}%
+ \newcommand*\univLightObliqueXI{}%
+ \newcommand*\univBoldXI{}%
+ \newcommand*\univLightXV{}%
+ \newcommand*\univLightObliqueXV{}%
+ \newcommand*\univBoldXV{}%
+ \newcommand*\univLightHead{}%
+ \newcommand*\univBoldHead{}%
+ \providecommand*\tud@head@fontsize{9}%
+ \if@tud@cdfont@fam@exist%
+ \DeclareFixedFont{\univLightVII}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{l}{n}{7}%
+ \DeclareFixedFont{\univLightObliqueVII}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{l}{sl}{7}%
+ \DeclareFixedFont{\univBoldVII}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{b}{n}{7}%
+ \DeclareFixedFont{\univLightIX}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{l}{n}{9}%
+ \DeclareFixedFont{\univLightObliqueIX}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{l}{sl}{9}%
+ \DeclareFixedFont{\univBoldIX}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{b}{n}{9}%
+ \DeclareFixedFont{\univLightXI}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{l}{n}{11}%
+ \DeclareFixedFont{\univLightObliqueXI}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{l}{sl}{11}%
+ \DeclareFixedFont{\univBoldXI}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{b}{n}{11}%
+ \DeclareFixedFont{\univLightXV}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{l}{n}{15}%
+ \DeclareFixedFont{\univLightObliqueXV}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{l}{sl}{15}%
+ \DeclareFixedFont{\univBoldXV}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{b}{n}{15}%
+ \DeclareFixedFont{\univLightHead}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{l}{n}{\tud@head@fontsize}%
+ \DeclareFixedFont{\univBoldHead}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{b}{n}{\tud@head@fontsize}%
+ \else%
+ \DeclareFixedFont{\univLightVII}{\encodingdefault}%
+ {\sfdefault}{\mddefault}{\updefault}{7}%
+ \DeclareFixedFont{\univLightObliqueVII}{\encodingdefault}%
+ {\sfdefault}{\mddefault}{\sldefault}{7}%
+ \DeclareFixedFont{\univBoldVII}{\encodingdefault}%
+ {\sfdefault}{\bfdefault}{\updefault}{7}%
+ \DeclareFixedFont{\univLightIX}{\encodingdefault}%
+ {\sfdefault}{\mddefault}{\updefault}{9}%
+ \DeclareFixedFont{\univLightObliqueIX}{\encodingdefault}%
+ {\sfdefault}{\mddefault}{\sldefault}{9}%
+ \DeclareFixedFont{\univBoldIX}{\encodingdefault}%
+ {\sfdefault}{\bfdefault}{\updefault}{9}%
+ \DeclareFixedFont{\univLightXI}{\encodingdefault}%
+ {\sfdefault}{\mddefault}{\updefault}{11}%
+ \DeclareFixedFont{\univLightObliqueXI}{\encodingdefault}%
+ {\sfdefault}{\mddefault}{\sldefault}{11}%
+ \DeclareFixedFont{\univBoldXI}{\encodingdefault}%
+ {\sfdefault}{\bfdefault}{\updefault}{11}%
+ \DeclareFixedFont{\univLightXV}{\encodingdefault}%
+ {\sfdefault}{\mddefault}{\updefault}{15}%
+ \DeclareFixedFont{\univLightObliqueXV}{\encodingdefault}%
+ {\sfdefault}{\mddefault}{\sldefault}{15}%
+ \DeclareFixedFont{\univBoldXV}{\encodingdefault}%
+ {\sfdefault}{\bfdefault}{\updefault}{15}%
+ \DeclareFixedFont{\univLightHead}{\encodingdefault}%
+ {\sfdefault}{\mddefault}{\updefault}{\tud@head@fontsize}%
+ \DeclareFixedFont{\univBoldHead}{\encodingdefault}%
+ {\sfdefault}{\bfdefault}{\updefault}{\tud@head@fontsize}%
+ \fi%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@head@fontsize
+% \end{macro}^^A \univBoldHead
+% \end{macro}^^A \univLightHead
+% \end{macro}^^A \univBoldXV
+% \end{macro}^^A \univLightObliqueXV
+% \end{macro}^^A \univLightXV
+% \end{macro}^^A \univBoldXI
+% \end{macro}^^A \univLightObliqueXI
+% \end{macro}^^A \univLightXI
+% \end{macro}^^A \univBoldIX
+% \end{macro}^^A \univLightObliqueIX
+% \end{macro}^^A \univLightIX
+% \end{macro}^^A \univBoldVII
+% \end{macro}^^A \univLightObliqueVII
+% \end{macro}^^A \univLightVII
+% \end{macro}^^A \dinfamily
+% \end{macro}^^A \dinBold
+% \end{macro}^^A \tud@fixfonts@class@adapt
+%
+% Nach der Definition der notwendigen Befehle erfolgt nun die Umsetzung für
+% alle unterstützten Klassen.
+% \begin{macrocode}
+\tud@fixfonts@class@adapt{tudletter}{}
+\tud@fixfonts@class@adapt{tudfax}{}
+\tud@fixfonts@class@adapt{tudform}{}
+\tud@fixfonts@class@adapt{tudhaus}{}
+\tud@fixfonts@class@adapt{tudposter}{}
+\tud@fixfonts@class@adapt{tudbeamer}{}
+% \end{macrocode}
+%
+% Wird das Paket \pkg{fix-tudscrfonts} mit den alten TUD-Klassen \cls{tudbook},
+% \cls{tudmathposter} etc. oder \TUDScript in der Version~v1.0 verwendet,
+% müssen einige Kompatibilitätseinstellungen vorgenmommen werden. Hierfür sind
+% wenige Patches notwendig.
+%
+% \subsection{Spezielle Patches für die Klasse \cls{tudbook}}
+%
+% Die notwendigen Anpassungen der Klasse \cls{tudbook} betreffen die
+% Schriftauswahl bei Überschriften.
+%
+% \begin{macro}{\@makechapterhead}
+% \begin{macro}{\@makeschapterhead}
+% \begin{macro}{\section}
+% \begin{macro}{\showtitle}
+% Die Überschriften sollen abhängig von der Option \opt{cdfont} und nicht immer
+% zwingend in \DIN gesetzt werden.
+% \begin{macrocode}
+\tud@fixfonts@class@adapt{tudbook}{%
+ \patchcmd{\@makechapterhead}{\dinBold\Huge\bfseries}{%
+ \tud@sec@fontface%
+ \if@color\color{HKS41-100}\fi%
+ \Huge%
+ }{}{\tud@patch@wrn{@makechapterhead}}%
+ \patchcmd{\@makechapterhead}{\MakeUppercase}{%
+ \tud@sec@format%
+ }{}{\tud@patch@wrn{@makechapterhead}}%
+ \patchcmd{\@makeschapterhead}{\dinBold\Huge\bfseries}{%
+ \tud@sec@fontface%
+ \if@color\color{HKS41-100}\fi%
+ \Huge%
+ }{}{\tud@patch@wrn{@makeschapterhead}}%
+ \patchcmd{\@makeschapterhead}{\MakeUppercase}{%
+ \tud@sec@format%
+ }{}{\tud@patch@wrn{@makeschapterhead}}%
+ \patchcmd{\section}{\dinBold\Large\bfseries\MakeUppercase}{%
+ \tud@sec@fontface%
+ \if@color\color{HKS41-100}\fi%
+ \Large%
+ \tud@sec@format%
+ }{}{\tud@patch@wrn{section}}%
+ \patchcmd{\showtitle}{\dinBold\Huge\bfseries\MakeUppercase}{%
+ \tud@sec@fontface%
+ \if@colortitle\color{HKS41-30}\fi%
+ \Huge%
+ \tud@sec@format%
+ }{}{\tud@patch@wrn{showtitle}}%
+}
+% \end{macrocode}
+% \end{macro}^^A \showtitle
+% \end{macro}^^A \section
+% \end{macro}^^A \@makeschapterhead
+% \end{macro}^^A \@makechapterhead
+%
+% \subsection{Spezielle Patches für die Klasse \cls{tudmathposter}}
+%
+% Auch für die Posterklasse \cls{tudmathposter} sowie das Paket \pkg{tudfonts}
+% sind kleine Anpassungen notwendig.
+%
+% \begin{KOMAfont}{title}
+% \changes{v2.04}{2015/04/24}{\cls{tudmathposter} wird unterstützt}^^A
+% \begin{macro}{\maketitle}
+% \changes{v2.04}{2015/04/24}{\cls{tudmathposter} wird unterstützt}^^A
+% \begin{macro}{\subtitlefont}
+% \changes{v2.04}{2015/04/24}{\cls{tudmathposter} wird unterstützt}^^A
+% \begin{macro}{\preprocesstitle}
+% \changes{v2.04}{2015/04/24}{\cls{tudmathposter} wird unterstützt}^^A
+% \begin{macro}{\sectionfont}
+% \changes{v2.04}{2015/04/24}{\cls{tudmathposter} wird unterstützt}^^A
+% \begin{macro}{\subsectionfont}
+% \changes{v2.04}{2015/04/24}{\cls{tudmathposter} wird unterstützt}^^A
+% \begin{macro}{\ps@tudposter}
+% \changes{v2.04}{2015/04/24}{\cls{tudmathposter} wird unterstützt}^^A
+% Es werden einige Einstellungen für die Überschriften angepasst.
+% \begin{macrocode}
+\tud@fixfonts@class@adapt{tudmathposter}{%
+ \def\raggedtitle{\tud@raggedright}%
+ \renewcommand*\raggedpart{\tud@raggedright}%
+ \renewcommand*\raggedsection{\tud@raggedright}%
+ \setkomafont{title}{\tud@sec@fontface\Huge}%
+ \CheckCommand\maketitle{%
+ \if@matheanull
+ \setlength\@tempskipa{31.194586mm-\topsep}%
+ \else
+ \setlength\@tempskipa{33.02mm-\topskip}%
+ \fi
+ \vskip\@tempskipa
+ {%
+ \ifx\@title\@empty\else
+ \usekomafont{title}\preprocesstitle{\@title}%
+ \ifx\@subtitle\@empty\else\\\fi
+ \fi
+ }{
+ \ifx\@subtitle\@empty\else
+ \subtitlefont\preprocesstitle{\@subtitle}%
+ \fi
+ \if@matheanull
+ \vskip 2.9948cm\relax
+ \else
+ \vskip 3.17cm\relax
+ \fi
+ }%
+ }%
+ \apptocmd{\maketitle}{\vspace{-6ex}}{}{\tud@patch@wrn{maketitle}}%
+ \renewcommand*\subtitlefont{%
+ \unskip%
+ \tud@sec@fontface%
+ \huge%
+ }%
+ \renewcommand*\preprocesstitle[1]{\raggedtitle\tud@sec@format{#1}}%
+ \if@mathevorgabe%
+ \undef\sectionfont%
+ \undef\subsectionfont%
+ \fi%
+ \newcommand*\sectionfont{\bfseries\LARGE}%
+ \newcommand*\subsectionfont{\sectionfont\large}%
+% \end{macrocode}
+% Für die Schriftstärke in der Kopfzeile muss der Seitenstil angepasst und
+% anschließend nochmals akiviert werden.
+% \begin{macrocode}
+ \patchcmd{\ps@tudposter}{\textbf{\@einrichtung}}{%
+ \textbf{\fontseries{b}\selectfont\@einrichtung}%
+ }{}{\tud@patch@wrn{ps@tudposter}}%
+ \pagestyle{tudposter}%
+}
+% \end{macrocode}
+% \end{macro}^^A \ps@tudposter
+% \end{macro}^^A \subsectionfont
+% \end{macro}^^A \sectionfont
+% \end{macro}^^A \preprocesstitle
+% \end{macro}^^A \subtitlefont
+% \end{macro}^^A \maketitle
+% \end{KOMAfont}^^A title
+%
+% \begin{macro}{\tud@x@tudfonts@prevent}
+% \changes{v2.06}{2018/02/14}{%
+% neu, nur einmaliges Ausführen des Fixes für \pkg{tudfonts}%
+% }^^A
+% \begin{macro}{\if@tudfonts@nodin}
+% \changes{v2.04}{2015/04/24}{\cls{tudmathposter} wird unterstützt}^^A
+% Die Klasse \cls{tudmathposter} lädt für die Einstellungen der Schriften das
+% Paket \pkg{tudfonts}. Wenn \pkg{tudscrfonts} zum Einsatz kommen soll, ist das
+% unerwünscht, weshalb das Laden hiermit unterbunden wird.
+% \begin{macrocode}
+\newcommand*\tud@x@tudfonts@prevent{%
+ \RequirePackage{amsmath}%
+ \RequirePackage{amsfonts}%
+ \newif\if@tudfonts@nodin%
+ \let\DeclareTudMathSizes\@gobblefour%
+ \let\tud@x@tudfonts@prevent\relax%
+}
+\PreventPackageFromLoading[\tud@x@tudfonts@prevent]{tudfonts}
+% \end{macrocode}
+% \end{macro}^^A \if@tudfonts@nodin
+% \end{macro}^^A \tud@x@tudfonts@prevent
+%
+% \iffalse
+%</body>
+%</package&fixfonts>
+% \fi
+%
+% \Finale
+%
+\endinput
diff --git a/macros/latex/contrib/tudscr/source/tudscr-doc.dtx b/macros/latex/contrib/tudscr/source/tudscr-doc.dtx
new file mode 100644
index 0000000000..ef3754d43a
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/tudscr-doc.dtx
@@ -0,0 +1,1598 @@
+% \CheckSum{2094}
+% \iffalse meta-comment
+%
+% TUD-Script -- Corporate Design of Technische Universität Dresden
+% ----------------------------------------------------------------------------
+%
+% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2019
+%
+% ----------------------------------------------------------------------------
+%
+% This work may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License, version 1.3c of the license. The latest
+% version of this license is in http://www.latex-project.org/lppl.txt and
+% version 1.3c or later is part of all distributions of LaTeX 2005/12/01
+% or later and of this work. This work has the LPPL maintenance status
+% "author-maintained". The current maintainer and author of this work
+% is Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+% in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
+% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+% Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
+% oder später und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status
+% "author-maintained", wird somit allein durch den Autor verwaltet. Der
+% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: tudscr-doc.dtx
+%<*dtx>
+% \fi
+%
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{tudscr-doc.dtx}[2019/07/18 v2.06c TUD-Script\space%
+ (source code documentation based on scrartcl/scrdoc)%
+]
+%
+% \iffalse
+\documentclass[english,ngerman,xindy]{tudscrdoc}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{tudscrfonts}
+\KOMAoptions{parskip=half-}
+\usepackage{bookmark}
+\usepackage[babel]{microtype}
+
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tudscr-doc.dtx}
+\title{\file{\filename}}
+\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
+\date{\fileversion\nobreakspace(\filedate)}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.03}{2015/01/09}{\cls{tudscrdoc}: Indextyp Seitenstilebene}^^A
+% \changes{v2.05}{2016/04/21}{Verwendung von \app{texindy} möglich}^^A
+%
+% \section{Die Klasse \cls{tudscrdoc} -- Erweiterte Quelltextdokumentation}
+%
+% Mit dieser Klasse erfolgt die Quelltextdokumentation des \TUDScript-Bundles.
+% Sie lädt standarmäßig die Klasse \cls{ltxdoc}, ersetzt allerdings im Stile
+% von \cls{scrdoc} im Hintergrund \cls{article} durch \cls{scrartcl}.
+%
+% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%
+% \iffalse
+%<*class&option>
+% \fi
+%
+% Damit der zu \cls{scrartcl} gehörige Titel genutzt werden kann, wird dieser
+% temporär gesichert.
+% \begin{macrocode}
+\newcommand*\scr@maketitle{}%
+\PassOptionsToClass{toc=left,fontsize=10pt}{scrartcl}%
+\AfterClass{scrartcl}{\let\scr@maketitle\@maketitle}%
+% \end{macrocode}
+% Der folgende Quelltext ist 1:1 aus \cls{scrdoc} kopiert.
+% \begin{macrocode}
+\newcommand*\sd@saved@LoadClass{}
+\let\sd@saved@LoadClass=\LoadClass
+\renewcommand*\LoadClass[2][]{%
+ \begingroup%
+ \edef\@tempc{#2}\def\@tempb{article}%
+ \ifx\@tempc\@tempb%
+ \let\LoadClass\sd@saved@LoadClass%
+ \def\@tempc{scrartcl}%
+ \fi%
+ \edef\@tempc{%
+ \noexpand\endgroup\noexpand\sd@saved@LoadClass[{#1}]{\@tempc}}%
+ \@tempc%
+}
+\newcommand*\sd@saved@PassOptionsToClass{}
+\let\sd@saved@PassOptionsToClass=\PassOptionsToClass
+\renewcommand*\PassOptionsToClass[2]{%
+ \begingroup%
+ \edef\@tempc{#2}\def\@tempb{article}%
+ \ifx\@tempc\@tempb%
+ \def\@tempc{scrartcl}%
+ \fi%
+ \edef\@tempc{%
+ \noexpand\endgroup\noexpand\sd@saved@PassOptionsToClass{#1}{%
+ \@tempc}}%
+ \@tempc%
+}
+\LoadClassWithOptions{ltxdoc}[2015/03/26]
+\setcounter{IndexColumns}{2}
+\setcounter{StandardModuleDepth}{2}
+% \end{macrocode}
+%
+% \subsection{Klassenoptionen}
+%
+% \begin{option}{final}
+% \begin{macro}{\tudfinalflag}
+% Option bzw. Flag für das automatisierte Erzeugen der Quelltextdokumentation
+% mit einem Skript ohne ToDo-Befehle.
+% \begin{macrocode}
+\DeclareOption{final}{\let\tudfinalflag\relax}
+% \end{macrocode}
+% \end{macro}^^A \tudfinalflag
+% \end{option}^^A final
+% \begin{option}{texindy}
+% \changes{v2.05}{2016/04/21}{neu}^^A
+% \begin{option}{xindy}
+% \changes{v2.05}{2016/04/21}{neu}^^A
+% \begin{option}{xdy}
+% \changes{v2.05}{2016/04/21}{neu}^^A
+% \begin{macro}{\tudxdyflag}
+% \changes{v2.05}{2016/04/21}{neu}^^A
+% Option(en) für das Erstellen der Indexdateien im Stil von \app{texindy}.
+% \begin{macrocode}
+\DeclareOption{texindy}{\let\tudxdyflag\relax}
+\DeclareOption{xindy}{\let\tudxdyflag\relax}
+\DeclareOption{xdy}{\let\tudxdyflag\relax}
+% \end{macrocode}
+% \end{macro}^^A \tudxdyflag
+% \end{option}^^A xdy
+% \end{option}^^A xindy
+% \end{option}^^A texindy
+% Die beiden Optionen werden abgearbeitet
+% \begin{macrocode}
+\ProcessOptions\relax
+% \end{macrocode}
+%
+% \subsection{Ignorierte Makros bei der Nutzung von zusätzlichen Indexeinträgen}
+%
+% Befehle, welche bei der Verwendung von \cs{EnableCrossrefs} dennoch nicht im
+% Index erscheinen sollen.
+%
+% \begin{macro}{\DisableCrossrefsForced}
+% \changes{v2.05i}{2017/03/02}{neu}^^A
+% Deaktivieren von Makroeinträgen im Index nach der Verwendung von
+% \cs{EnableCrossrefs}. Sollte in einer Gruppe genutzt werden!
+% \begin{macrocode}
+\newcommand*\DisableCrossrefsForced{}
+\let\DisableCrossrefsForced\DisableCrossrefs
+% \end{macrocode}
+% \end{macro}^^A \DisableCrossrefsForced
+%
+% \begingroup%
+% \DisableCrossrefsForced%
+% \begin{macrocode}
+%^^A\DoNotIndex{\ ,\",\.,\@,\\,\{,\}}
+%^^A\DoNotIndex{\@abstrtfalse,\@abstrttrue,\@addtoreset}
+%^^A\DoNotIndex{\@afterheading,\@afterindentfalse}
+%^^A\DoNotIndex{\@Alph,\@alph,\@arabic}
+%^^A\DoNotIndex{\@beginparpenalty}
+%^^A\DoNotIndex{\@car,\@cdr,\@centercr}
+%^^A\DoNotIndex{\@dblfloat,\@dotsep,\@dottedtocline}
+%^^A\DoNotIndex{\@empty,\@endparpenalty}
+%^^A\DoNotIndex{\@float,\@fontswitch}
+%^^A\DoNotIndex{\@gobbletwo}
+%^^A\DoNotIndex{\@hangfrom,\@highpenalty}
+%^^A\DoNotIndex{\@ifnextchar,\@ifundefined,\@itempenalty}
+%^^A\DoNotIndex{\@latex@warning}
+%^^A\DoNotIndex{\@M,\@m,\@medpenalty,\@minus,\@mkboth}
+%^^A\DoNotIndex{\@mparswitchfalse,\@mparswitchtrue}
+%^^A\DoNotIndex{\@ne,\@nil,\@nobreakfalse,\@nobreaktrue,\@nomath}
+%^^A\DoNotIndex{\@plus}
+%^^A\DoNotIndex{\@Roman,\@roman}
+%^^A\DoNotIndex{\@tempa,\@tempb,\@tempc}
+%^^A\DoNotIndex{\@tempcnta,\@tempcntb,\@tempcntc}
+%^^A\DoNotIndex{\@tempdima,\@tempdimb,\@tempdimc}
+%^^A\DoNotIndex{\@tempskipka,\@tempskipkb,\@tempskipkc}
+%^^A\DoNotIndex{\@tempswafalse,\@tempswatrue,\@tempswbfalse,\@tempswbtrue}
+%^^A\DoNotIndex{\@tocrmarg,\@topnewpage,\@topnum}
+%^^A\DoNotIndex{\@twocolumnfalse,\@twocolumntrue,\@twosidefalse,\@twosidetrue}
+%^^A\DoNotIndex{\@undefined,\@whiledim,\@whilenum}
+%^^A\DoNotIndex{\addcontentsline,\addpenalty,\addtocontents}
+%^^A\DoNotIndex{\addtolength,\addvspace,\advance}
+%^^A\DoNotIndex{\begin,\begingroup,\bfseries,\box,\bullet}
+%^^A\DoNotIndex{\c@figure,\c@page,\c@secnumdepth,\c@table,\c@tocdepth,\cdot}
+%^^A\DoNotIndex{\centering,\changes,\cleardoublepage,\clearpage,\cmd}
+%^^A\DoNotIndex{\CodelineIndex,\col@number,\cs,\CurrentOption}
+%^^A\DoNotIndex{\dblfloatpagefraction,\dbltopfraction,\def,\divide,\DoNotIndex}
+%^^A\DoNotIndex{\DeclareOldFontCommand,\DeclareOption,\DisableCrossrefs}
+%^^A\DoNotIndex{\else,\em,\empty,\EnableCrossrefs,\end,\end@dblfloat,\end@float}
+%^^A\DoNotIndex{\endgroup,\endlist,\endquotation,\endtitlepage,\everypar}
+%^^A\DoNotIndex{\ExecuteOptions,\expandafter}
+%^^A\DoNotIndex{\fboxrule,\fboxsep,\fi}
+%^^A\DoNotIndex{\gdef,\global}
+%^^A\DoNotIndex{\hangindent,\hbox,\hfil,\hrule,\hsize,\hskip,\hspace,\hss}
+%^^A\DoNotIndex{\if,\if@tempswa,\ifcase,\ifdim,\ifnum,\ifodd,\ifx,\include}
+%^^A\DoNotIndex{\input,\InputIfFileExists,\item,\itshape}
+%^^A\DoNotIndex{\kern}
+%^^A\DoNotIndex{\leavevmode,\leftmark,\leftskip,\let,\lineskip,\list,\long}
+%^^A\DoNotIndex{\m@ne,\m@th,\marginpar,\markboth,\markright}
+%^^A\DoNotIndex{\mathbf,\mathcal,\mathit,\mathnormal,\mathrm,\mathsf,\mathtt}
+%^^A\DoNotIndex{\MessageBreak,\month}
+%^^A\DoNotIndex{\newblock,\newcommand,\newcount,\newcounter,\newdimen}
+%^^A\DoNotIndex{\newenvironment,\newlength,\newpage,\nobreak,\noindent}
+%^^A\DoNotIndex{\normalcolor,\normalfont,\normallineskip,\normalsize}
+%^^A\DoNotIndex{\null,\number,\numberline}
+%^^A\DoNotIndex{\OldMakeindex,\OnlyDescription,\or,\overfullrule}
+%^^A\DoNotIndex{\p@,\PackageError,\PackageInfo,\PackageWarningNoLine}
+%^^A\DoNotIndex{\pagenumbering,\pagestyle,\par,\paragraph,\parbox}
+%^^A\DoNotIndex{\PassOptionsToPackage,\pcal,\penalty,\protect,\providecommand}
+%^^A\DoNotIndex{\PrintIndex,\PrintChanges,\ProcessOptions,\ProvidesClass}
+%^^A\DoNotIndex{\raggedbottom,\raggedleft,\raggedright,\refstepcounter,\relax}
+%^^A\DoNotIndex{\renewcommand,\RequirePackage,\reset@font,\rightmargin}
+%^^A\DoNotIndex{\rightmark,\rightskip,\rmfamily}
+%^^A\DoNotIndex{\scshape,\secdef,\setbox,\setcounter,\setlength,\settowidth}
+%^^A\DoNotIndex{\sfcode,\sffamily,\skip,\sloppy,\slshape,\space,\string}
+%^^A\DoNotIndex{\the,\thispagestyle,\ttfamily,\twocolumn,\typeout}
+%^^A\DoNotIndex{\undefined,\usecounter}
+%^^A\DoNotIndex{\vfil,\vfill,\vspace}
+%^^A\DoNotIndex{\wd}
+%^^A\DoNotIndex{\xdef}
+%^^A\DoNotIndex{\year}
+%^^A\DoNotIndex{\z@}
+% \end{macrocode}
+% \endgroup%
+%
+% \iffalse
+%</class&option>
+%<*class&body>
+% \fi
+%
+% \subsection{Definition und Erscheinungsbild von Deklarationselementen}
+%
+% Mit dem Paket~\pkg{dox} können weitere Deklarationselemente erstellt werden.
+% Dieses lädt außerdem das Paket~\pkg{doc}, welches die Grundfunktionalitäten
+% für die Erstellung von \file{.dtx}-Dateien bereitstellt. In der momentanen
+% Version unterstützt das Paket~\pkg{dox} die aktuellen Anpassungen an die
+% Erstellung von Änderungsnotizen durch \pkg{doc} nicht, weshalb im Folgenden
+% einige Patches notwendig sind.
+% \begin{macrocode}
+\RequirePackage{dox}[2010/12/16]
+\@ifpackagelater{dox}{2017/12/07}{%
+ \ClassWarning{\TUD@Class@Name}{%
+ Package `dox' was updated so some patches\MessageBreak%
+ are maybe outdated%
+ }%
+}{}%
+% \end{macrocode}
+% \begin{macro}{\m@cro@}
+% Nach dem Laden des Paketes werden die Definitionen einiger Makros überprüft.
+% \begin{macrocode}
+\CheckCommand\m@cro@[2]{%
+ \endgroup \topsep\MacroTopsep \trivlist
+ \edef\saved@macroname{\string#2}%
+ #1
+ \let\saved@indexname\saved@macroname
+ \else
+ \edef\saved@indexname{\expandafter\@gobble\string#2}%
+ \fi
+ \def\makelabel##1{\llap{##1}}%
+ \if@inlabel
+ \let\@tempa\@empty \count@\macro@cnt
+ \loop \ifnum\count@>\z@
+ \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne \repeat
+ \edef\makelabel##1{\llap{\vtop to\baselineskip
+ {\@tempa\hbox{##1}\vss}}}%
+ \advance \macro@cnt \@ne
+ \else \macro@cnt\@ne \fi
+ \edef\@tempa{\noexpand\item[%
+ #1%
+ \noexpand\PrintMacroName
+ \else
+ \noexpand\PrintEnvName
+ \fi
+ {\string#2}]}%
+ \@tempa
+ \global\advance\c@CodelineNo\@ne
+ #1%
+ \SpecialMainIndex{#2}\nobreak
+ \DoNotIndex{#2}%
+ \else
+ \SpecialMainEnvIndex{#2}\nobreak
+ \fi
+ \global\advance\c@CodelineNo\m@ne
+ \ignorespaces
+}
+% \end{macrocode}
+% \end{macro}^^A \m@cro@
+%
+% \subsubsection{Erweiterte Einträge für Index und Änderungsliste}
+%
+% \begin{macro}{\doxitem}
+% Mit dem Befehl \cs{doxitem} werden beliebige Deklarationselemente erstellt.
+% das Makro wird für das Hinzufügen des Eintragstyps für Index, Änderungsliste
+% und Randnotiz angepasst.
+% \begin{macrocode}
+\CheckCommand\doxitem[4][]{%
+ \@nameuse{dox@macrolike\dox@macrolikedefault}%
+ \def\dox@idxtype{#3}%
+ \setkeys{dox}{#1}
+ \@ifundefined{Print#2Name}{%
+ \ifdox@macrolike
+ \expandafter\def\csname Print#2Name\endcsname##1{%
+ \strut\MacroFont\string ##1\ }
+ \else
+ \expandafter\def\csname Print#2Name\endcsname##1{%
+ \strut\MacroFont ##1\ }
+ \fi}{}
+ \ifdox@macrolike
+ \def\@doxexpr{\@doxcreatespecialmainmacrolikeindex{#2}}%
+ \else
+ \def\@doxexpr{\@doxcreatespecialmainindex{#2}}%
+ \fi
+ \expandafter\@doxexpr\expandafter{\dox@idxtype}{#4}%
+ \@ifundefined{PrintDescribe#2}{%
+ \ifdox@macrolike
+ \expandafter\def\csname PrintDescribe#2\endcsname##1{%
+ \strut\MacroFont\string ##1\ }
+ \else
+ \expandafter\def\csname PrintDescribe#2\endcsname##1{%
+ \strut\MacroFont ##1\ }
+ \fi}{}
+ \ifdox@macrolike
+ \def\@doxexpr{\@doxcreatespecialmacrolikeindex{#2}}%
+ \else
+ \def\@doxexpr{\@doxcreatespecialindex{#2}}%
+ \fi
+ \expandafter\@doxexpr\expandafter{\dox@idxtype}{#4}%
+ \@doxcreatedescribe{#2}
+ \@doxcreateenv{#2}{#3}
+ \ifdox@macrolike
+ \expandafter\let\csname @Save#2IndexName\endcsname%
+ \@doxsavemacrolikeindexname%
+ \else
+ \expandafter\let\csname @Save#2IndexName\endcsname\@doxsaveindexname%
+ \fi
+}
+% \end{macrocode}
+% Das Makro wird dahingehend angepasst, dass alle für die Ausgabe erzeugten
+% Befehle der Form \cs{Print\meta{Typ}Name} und \cs{PrintDescribe\meta{Typ}}
+% um den Eintragstyp ergänzt werden, erstellt durch \cs{doxcreateprintname}
+% bzw. \cs{doxcreatemacrolikeprintname}. Zusätzlich werden für die Klasse
+% \cls{tudscrdoc} Befehle in der Form \cs{@Save\meta{Typ}IndexName} mit den
+% neuen Makros \cs{doxcreateindexname} bzw. \cs{doxcreatemacrolikeindexname}
+% erstellt. Mit diesen wird beim Aufruf einer Deklarationsumgebung der aktuelle
+% Name und Eintragstyp des jeweiligen Deklarationselementes gesichert, um diese
+% Informationen in der Änderungsliste nutzen zu können. Außerdem werden mit dem
+% Makro \cs{@doxcreatedescribes} Befehle erzeugt, mit denen eine Liste von zu
+% beschreibenden Elementen via \cs{DescribeOption\meta{Typ}s} erzeugt werden
+% kann. Dies dient insbesondere zum Erzeugen der Randnotizen mit \cs{marginnote}
+% aus dem glecihnamigen Paket.
+% \begin{macrocode}
+\renewcommand*\doxitem[4][]{%
+ \@nameuse{dox@macrolike\dox@macrolikedefault}%
+ \def\dox@idxtype{#3}%
+ \setkeys{dox}{#1}%
+ \ifdox@macrolike%
+ \def\@doxexpr{\@doxcreatespecialmainmacrolikeindex{#2}}%
+ \else%
+ \def\@doxexpr{\@doxcreatespecialmainindex{#2}}%
+ \fi%
+ \expandafter\@doxexpr\expandafter{\dox@idxtype}{#4}%
+ \ifdox@macrolike%
+ \def\@doxexpr{\@doxcreatespecialmacrolikeindex{#2}}%
+ \else%
+ \def\@doxexpr{\@doxcreatespecialindex{#2}}%
+ \fi%
+ \expandafter\@doxexpr\expandafter{\dox@idxtype}{#4}%
+ \ifdox@macrolike%
+ \def\@doxexpr{\@doxcreatemacrolikeprintname{#2}}%
+ \else%
+ \def\@doxexpr{\@doxcreateprintname{#2}}%
+ \fi%
+ \expandafter\@doxexpr\expandafter{\dox@idxtype}%
+ \ifdox@macrolike%
+ \def\@doxexpr{\@doxcreatemacrolikeindexname{#2}}%
+ \else%
+ \def\@doxexpr{\@doxcreateindexname{#2}}%
+ \fi%
+ \expandafter\@doxexpr\expandafter{\dox@idxtype}%
+ \@doxcreatedescribe{#2}%
+ \@doxcreatedescribes{#2}%
+ \@doxcreateenv{#2}{#3}%
+}
+% \end{macrocode}
+% \end{macro}^^A \doxitem
+% \begin{macro}{\@doxcreatedescribes}
+% \changes{v2.05i}{2017/03/09}{neu}^^A
+% \begin{length}{\marginnotevskip}
+% \changes{v2.05i}{2017/03/09}{neu}^^A
+% \begin{macro}{\marginpar}
+% Hiermit werden Befehle der Form \cs{DescribeOption\meta{Typ}s} erzeugt, mit
+% welchen mehrere Eintragstypen erzeugt werden können. Gleichzeitig werden die
+% Randnotizen via \cs{marginnote} mit den passenden vertikalen Abständen
+% erstellt.
+% \begin{macrocode}
+\newlength\marginnotevskip
+\newcommand*\@doxcreatedescribes[1]{%
+ \expandafter\def\csname Describe#1s\endcsname##1{%
+ \setlength\marginnotevskip{\z@}%
+ \def\@tempc{##1}%
+ \@for\@tempa:=\@tempc\do{%
+ \expandafter\ifblank\expandafter{\@tempa}{}{%
+ \edef\@tempb{%
+ \expandonce{\csname Describe#1\endcsname}{\expandonce{\@tempa}}%
+ }%
+ \@tempb%
+ \addtolength\marginnotevskip{\baselineskip}%
+ }%
+ }%
+ \setlength\marginnotevskip{\z@}%
+ \ignorespaces%
+ }%
+}
+\@doxcreatedescribes{Macro}
+\AfterPackage*{marginnote}{%
+ \renewcommand*\marginpar[2][]{%
+ \IfArgIsEmpty{#1}{%
+ \marginnote{#2}[\marginnotevskip]%
+ }{%
+ \marginnote[{#1}]{#2}[\marginnotevskip]%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \marginpar
+% \end{length}^^A \marginnotevskip
+% \end{macro}^^A \@doxcreatedescribes
+% \begin{macro}{\index@type}
+% \changes{v2.05g}{2016/11/10}{neu}^^A
+% Dieses Makro dient zur Formatierung des Typen der Deklarationselemente in
+% Index und Änderungsliste.
+% \begin{macrocode}
+\newrobustcmd*\index@type[1]{%
+ \begingroup%
+ \normalfont\scriptsize\space(#1)%
+ \endgroup%
+}
+% \end{macrocode}
+% \end{macro}^^A \index@type
+% \begin{macro}{\@doxcreatespecialmainmacrolikeindex}
+% \begin{macro}{\@doxcreatespecialmainindex}
+% \begin{macro}{\@doxcreatespecialmacrolikeindex}
+% \begin{macro}{\@doxcreatespecialindex}
+% Für den Index muss bei diesen Makros eine Anpassung erfolgen, damit die
+% Sortierung auch bei der Verwendung von \app{texindy} richtig erfolgt und
+% keine Einträge, welche es trotz gleicher Bezeichnung für unterschiedliche
+% Deklarationselemente (beispielsweise Umgebung \env{abstract} und Option
+% \opt{abstract}) gibt, unterschlagen werden. Außerdem wird hier die Definition
+% der Quelltextanker eingehangen und die Elterneinträge für Parameteränderungen
+% zurückgesetzt.
+% \begin{macrocode}
+\CheckCommand*\@doxcreatespecialmainmacrolikeindex[3]{%
+ \expandafter\def\csname SpecialMain#1Index\endcsname##1{%
+ \@SpecialIndexHelper@##1\@nil
+ \@bsphack%
+ \special@index{\@gtempa\actualchar
+ \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar
+ \space(#2)\encapchar main}%
+ \special@index{#3:\levelchar\@gtempa\actualchar%
+ \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar
+ \encapchar main}%
+ \@esphack%
+ }%
+}
+% \end{macrocode}
+% Um den Typ der Deklarationselemente in den Index einzutragen, wird der Typ
+% geschützt expandiert, um beispielsweise Umlaute problemlos nutzen zu können.
+% \begin{macrocode}
+\renewcommand*\@doxcreatespecialmainmacrolikeindex[3]{%
+ \expandafter\def\csname SpecialMain#1Index\endcsname##1{%
+ \@SpecialIndexHelper@##1\@nil%
+ \@bsphack%
+ \protected@edef\tud@reserved{#2}%
+ \special@index{%
+ \@gtempa\space\expandonce\tud@reserved\actualchar%
+ \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar%
+ \index@type{\expandonce\tud@reserved}\encapchar main%
+ }%
+ \protected@edef\tud@reserved{#3}%
+ \special@index{%
+ \expandonce\tud@reserved:\levelchar\@gtempa\actualchar%
+ \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar%
+ \encapchar main%
+ }%
+ \@esphack%
+ \let\parameter@parent@changes\relax%
+ \hypersourcedef{\filesep\number\c@CodelineNo}%
+ }%
+}
+\CheckCommand*\@doxcreatespecialmainindex[3]{%
+ \expandafter\def\csname SpecialMain#1Index\endcsname##1{%
+ \@bsphack%
+ \special@index{##1\actualchar{\string\ttfamily\space##1} (#2)%
+ \encapchar main}%
+ \special@index{#3:\levelchar##1\actualchar{\string\ttfamily\space##1}%
+ \encapchar main}%
+ \@esphack%
+ }%
+}
+\renewcommand*\@doxcreatespecialmainindex[3]{%
+ \expandafter\def\csname SpecialMain#1Index\endcsname##1{%
+ \@bsphack%
+ \protected@edef\tud@reserved{#2}%
+ \special@index{%
+ ##1\space\expandonce\tud@reserved\actualchar%
+ {\string\ttfamily\space##1}\index@type{\expandonce\tud@reserved}%
+ \encapchar main%
+ }%
+ \protected@edef\tud@reserved{#3}%
+ \special@index{%
+ \expandonce\tud@reserved:\levelchar##1\actualchar%
+ {\string\ttfamily\space##1}\encapchar main%
+ }%
+ \@esphack%
+ \let\parameter@parent@changes\relax%
+ \hypersourcedef{\filesep\number\c@CodelineNo}%
+ }%
+}
+\CheckCommand*\@doxcreatespecialmacrolikeindex[3]{%
+ \expandafter\def\csname Special#1Index\endcsname##1{%
+ \@SpecialIndexHelper@##1\@nil
+ \@bsphack%
+ \index{\@gtempa\actualchar
+ \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar
+ \space(#2)\encapchar usage}%
+ \index{#3:\levelchar\@gtempa\actualchar
+ \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar
+ \encapchar usage}%
+ \@esphack%
+ }%
+}
+\renewcommand*\@doxcreatespecialmacrolikeindex[3]{%
+ \expandafter\def\csname Special#1Index\endcsname##1{%
+ \@SpecialIndexHelper@##1\@nil%
+ \@bsphack%
+ \protected@edef\tud@reserved{#2}%
+ \index{%
+ \@gtempa\space\expandonce\tud@reserved\actualchar%
+ \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar%
+ \index@type{\expandonce\tud@reserved}\encapchar usage%
+ }%
+ \protected@edef\tud@reserved{#3}%
+ \index{%
+ \expandonce\tud@reserved:\levelchar\@gtempa\actualchar%
+ \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar%
+ \encapchar usage%
+ }%
+ \@esphack%
+ }%
+}
+\CheckCommand*\@doxcreatespecialindex[3]{%
+ \expandafter\def\csname Special#1Index\endcsname##1{%
+ \@bsphack%
+ \index{##1\actualchar{\protect\ttfamily##1} (#2)\encapchar usage}%
+ \index{#3:\levelchar##1\actualchar{\protect\ttfamily##1}%
+ \encapchar usage}%
+ \@esphack%
+ }%
+}
+\renewcommand*\@doxcreatespecialindex[3]{%
+ \expandafter\def\csname Special#1Index\endcsname##1{%
+ \@bsphack%
+ \protected@edef\tud@reserved{#2}%
+ \index{%
+ ##1\space\expandonce\tud@reserved\actualchar%
+ {\protect\ttfamily##1}\index@type{\expandonce\tud@reserved}%
+ \encapchar usage%
+ }%
+ \protected@edef\tud@reserved{#3}%
+ \index{%
+ \expandonce\tud@reserved:\levelchar##1\actualchar%
+ {\protect\ttfamily##1}\encapchar usage%
+ }%
+ \@esphack%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \@doxcreatespecialindex
+% \end{macro}^^A \@doxcreatespecialmacrolikeindex
+% \end{macro}^^A \@doxcreatespecialmainindex
+% \end{macro}^^A \@doxcreatespecialmainmacrolikeindex
+% \begin{macro}{\@doxcreatemacrolikeprintname}
+% \begin{macro}{\@doxcreateprintname}
+% \begin{macro}{\@doxcreatemacrolikeindexname}
+% \begin{macro}{\@doxcreateindexname}
+% \begin{macro}{\saved@indextype}
+% Hiermit werden die Makros zur Ausgabe als Randnotiz definiert. Mit diesen
+% wird dem eigentlichen Eintrag der Eintragstyp angehängt. Zu beachten ist, das
+% entgegen der ursprünglichen Definition \cs{strut} erst zum Schluss ausgeführt
+% wird. Somit lassen sich potenzielle Probleme mit dem Paket \pkg{microtype}
+% vermeiden.
+% \begin{macrocode}
+\def\@doxcreatemacrolikeprintname#1#2{%
+ \ifcsundef{Print#1Name}{%
+ \expandafter\def\csname Print#1Name\endcsname##1{%
+ \MacroFont\string##1\index@type{#2}\strut\ %
+ }%
+ }{}%
+ \ifcsundef{PrintDescribe#1}{%
+ \expandafter\def\csname PrintDescribe#1\endcsname##1{%
+ \MacroFont\string##1\index@type{#2}\strut\ %
+ }%
+ }{}%
+}
+\def\@doxcreateprintname#1#2{%
+ \ifcsundef{Print#1Name}{%
+ \expandafter\def\csname Print#1Name\endcsname##1{%
+ \MacroFont##1\index@type{#2}\strut\ %
+ }%
+ }{}%
+ \ifcsundef{PrintDescribe#1}{%
+ \expandafter\def\csname PrintDescribe#1\endcsname##1{%
+ \MacroFont##1\index@type{#2}\strut\ %
+ }%
+ }{}%
+}
+% \end{macrocode}
+% Ziel ist es, in den
+% Makros \cs{saved@indexname} und \cs{saved@indextype} den Namen und den Typ
+% des aktuellen Deklarationselementes zu speichern.
+% \begin{macrocode}
+\newcommand*\saved@indextype{}
+\def\@doxcreatemacrolikeindexname#1#2{%
+ \expandafter\def\csname @Save#1IndexName\endcsname##1{%
+ \edef\saved@indexname{\expandafter\@gobble##1}%
+ \protected@edef\saved@indextype{#2}%
+ }%
+}
+\def\@doxcreateindexname#1#2{%
+ \expandafter\def\csname @Save#1IndexName\endcsname##1{%
+ \let\saved@indexname##1%
+ \protected@edef\saved@indextype{#2}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \saved@indextype
+% \end{macro}^^A \@doxcreateindexname
+% \end{macro}^^A \@doxcreatemacrolikeindexname
+% \end{macro}^^A \@doxcreateprintname
+% \end{macro}^^A \@doxcreatemacrolikeprintname
+% \begin{macro}{\@SaveMacroIndexName}
+% \begin{macro}{\@SaveEnvIndexName}
+% \begin{macro}{\SpecialMainMacroIndex}
+% Da für Makros die notwendigen Befehle für die Anpassungen der Änderungsliste
+% nicht über \cs{doxitem} kreiert werden, erfolgt dies hier direkt.
+% \begin{macrocode}
+\CheckCommand*\@SaveMacroIndexName[1]{%
+ \edef\saved@indexname{\expandafter\@gobble#1}%
+}
+\CheckCommand*\@SaveEnvIndexName[1]{\let\saved@indexname#1}
+\apptocmd{\@SaveMacroIndexName}{%
+ \let\saved@indextype\@empty%
+}{}{\tud@patch@wrn{@SaveMacroIndexName}}
+\CheckCommand*\SpecialMainMacroIndex[1]{%
+ \SpecialMainIndex{#1}\nobreak%
+ \DoNotIndex{#1}%
+}
+\apptocmd{\SpecialMainMacroIndex}{%
+ \let\parameter@parent@changes\relax%
+ \hypersourcedef{\filesep\number\c@CodelineNo}%
+}{}{\tud@patch@wrn{SpecialMainMacroIndex}}
+% \end{macrocode}
+% \end{macro}^^A \SpecialMainMacroIndex
+% \end{macro}^^A \@SaveEnvIndexName
+% \end{macro}^^A \@SaveMacroIndexName
+%
+% \subsubsection{Erstellen aller Deklarationselemente}
+%
+% Nachdem nun die Anpassungen für die Änderungsliste erfolgt sind, können nun
+% die für die Dokumentatiton notwendigen Umgebungen mit \cs{docitem} erstellt
+% werden. Dabei kommen die Lokalisierungsvariablen \cs{tud@\dots{}@name} zum
+% Tragen.
+% \begin{macrocode}
+\renewcommand*\tud@reserved[3][]{%
+ \doxitem[#1,idxtype=\csname tud@#3@name\endcsname]{#2}{#3}{%
+ \csname tud@#3s@name\endcsname%
+ }%
+}
+\undef\PrintEnvName
+\undef\PrintDescribeEnv
+\tud@reserved{Env}{environment}
+\tud@reserved{Option}{option}
+\tud@reserved{LayerPageStyle}{layerpagestyle}
+\tud@reserved{Layer}{layer}
+\tud@reserved[macrolike]{Length}{length}
+\tud@reserved{Counter}{counter}
+\tud@reserved{Color}{TUDcolor}
+\tud@reserved[macrolike]{Localization}{localization}
+\tud@reserved[macrolike]{Field}{field}
+\tud@reserved{Font}{KOMAfont}
+\tud@reserved{Parameter}{parameter}
+% \end{macrocode}
+%
+% \subsubsection{Besonderheiten des Deklarationselementes \emph{Parameter}}
+%
+% \begin{macro}{\parameter@parent@changes}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{macro}{\parameter@parent@indexname}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{macro}{\parameter@parent@indexformat}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% Um für Parameter sowohl im Index als auch in der Änderungsliste eine weitere
+% Ebene zu definieren, werden diese Befehle eigens definiert.
+% \begin{macrocode}
+\newcommand*\parameter@parent@changes{}
+\let\parameter@parent@changes\relax
+\newcommand*\parameter@parent@indexname{}
+\let\parameter@parent@indexname\relax
+\newcommand*\parameter@parent@indexformat{}
+\let\parameter@parent@indexformat\relax
+% \end{macrocode}
+% \end{macro}^^A \parameter@parent@indexformat
+% \end{macro}^^A \parameter@parent@indexname
+% \end{macro}^^A \parameter@parent@changes
+% \begin{macro}{\@SaveMacroIndexName}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{macro}{\@SaveEnvIndexName}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% Bei der Ausführung einer dieser beiden Befehle bei der Definition von einem
+% Makro oder einer Umgebung werden diese für evtl. nachfolgende Parameter als
+% Elterneinträge definiert. Hierfür werden die Einträge zur Sortierung sowohl
+% für den Index als auch die Änderungsliste in \cs{parameter@parent@indexname}
+% und für die Formatierung in \cs{parameter@parent@indexformat} gespeichert.
+% \begin{macrocode}
+\apptocmd{\@SaveMacroIndexName}{%
+ \edef\parameter@parent@indexname{\expandafter\@gobble#1}%
+ \edef\parameter@parent@indexformat{%
+ \string\verb\quotechar*\verbatimchar#1\verbatimchar%
+ }%
+}{}{\tud@patch@wrn{@SaveMacroIndexName}}
+\apptocmd{\@SaveEnvIndexName}{%
+ \protected@edef\parameter@parent@indexname{#1\space\saved@indextype}%
+ \protected@edef\parameter@parent@indexformat{%
+ \string\verb\quotechar*\verbatimchar#1\verbatimchar%
+ \index@type{\saved@indextype}%
+ }%
+}{}{\tud@patch@wrn{@SaveEnvIndexName}}
+% \end{macrocode}
+% \end{macro}^^A \@SaveEnvIndexName
+% \end{macro}^^A \@SaveMacroIndexName
+% \begin{macro}{\SpecialMainParameterIndex}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% Hier wird nun die Gestalt der Einträge für Parameter als Haupteintrag
+% festgelegt.
+% \begin{macrocode}
+\renewcommand*\SpecialMainParameterIndex[1]{%
+ \ifx\parameter@parent@indexname\relax%
+ \ClassError{\TUD@Class@Name}{No previous macro or environment}{%
+ Since parameters can only be used for macros or\MessageBreak%
+ environments, you have to use `parameter' within\MessageBreak%
+ `macro' or `environment'.%
+ }%
+ \fi%
+ \protected@edef\parameter@parent@changes{%
+ \parameter@parent@indexname\actualchar%
+ \parameter@parent@indexformat:\levelchar%
+ }%
+ \@bsphack%
+ \special@index{%
+ \parameter@parent@indexname\actualchar%
+ \parameter@parent@indexformat\levelchar%
+ #1\space\tud@parameter@name\actualchar%
+ {\string\ttfamily\space#1}\index@type{\tud@parameter@name}%
+ \encapchar main%
+ }%
+ \special@index{%
+ \tud@parameters@name:\levelchar%
+ #1\space\parameter@parent@indexname%
+ \actualchar{\string\ttfamily\space#1}%
+ \noexpand\,--\noexpand\,\parameter@parent@indexformat%
+ \encapchar main%
+ }%
+ \@esphack%
+ \hypersourcedef{\filesep\number\c@CodelineNo}%
+}
+% \end{macrocode}
+% \end{macro}^^A \SpecialMainParameterIndex
+% \begin{environment}{DescribeParameterParent}
+% \changes{v2.05i}{2017/02/20}{neu}^^A
+% \begin{macro}{\SpecialParameterIndex}
+% \changes{v2.05i}{2017/02/20}{neu}^^A
+% Selbiges für die Verwendung durch \cs{Describe\dots}
+% \begin{macrocode}
+\newenvironment{DescribeParameterParent}[2]{%
+ \@nameuse{@Save#1IndexName}{\string#2}%
+}{}
+\renewcommand*\SpecialParameterIndex[1]{%
+ \ifx\parameter@parent@indexname\relax%
+ \ClassError{\TUD@Class@Name}{No previous macro or environment}{%
+ Since parameters can only be used for macros or\MessageBreak%
+ environments, you have to use macro\MessageBreak%
+ `\string\DescribeParameter' only within the environment\MessageBreak%
+ `DescribeParameterParent'.%
+ }%
+ \fi%
+ \@bsphack%
+ \index{%
+ \parameter@parent@indexname\actualchar%
+ \parameter@parent@indexformat\levelchar%
+ #1\space\tud@parameter@name\actualchar%
+ {\protect\ttfamily#1}\index@type{\tud@parameter@name}%
+ \encapchar usage%
+ }%
+ \index{%
+ \tud@parameters@name:\levelchar#1\space\parameter@parent@indexname%
+ \actualchar{\protect\ttfamily#1}%
+ \noexpand\,--\noexpand\,\parameter@parent@indexformat%
+ \encapchar usage%
+ }%
+ \@esphack%
+}
+% \end{macrocode}
+% \end{macro}^^A \SpecialParameterIndex
+% \end{environment}^^A DescribeParameterParent
+%
+% \subsubsection{Erzeugen von Änderungseinträgen}
+%
+% \begin{macro}{\changes@}
+% Bei der Erstellung der Änderungsliste fehlt bei Makros in der aktuellen
+% Version von \pkg{doc} ein Leerzeichen. Das Problem ist bereits gemeldet.
+% \begin{macrocode}
+\CheckCommand*\changes@[3]{%
+ \protected@edef\@tempa{%
+ \noexpand\glossary{%
+ #1\levelchar
+ \ifx\saved@macroname\@empty
+ \space
+ \actualchar
+ \generalname
+ \else
+ \saved@indexname
+ \actualchar
+ \string\verb\quotechar*%
+ \verbatimchar\saved@macroname
+ \verbatimchar
+ \fi
+ :\levelchar #3%
+ }%
+ }%
+ \@tempa\endgroup\@esphack%
+}
+% \end{macrocode}
+% Bei der Erzeugung der Änderungseinträge wird zwischen der Verwendung von
+% \app{makeindex} und \app{texindy} unterschieden. Für die Reihenfolge des
+% Erscheinens der einzelnen Einträge wird das angegebene Datum zur Sortierung
+% genutzt.
+% \begin{macrocode}
+\ifdefined\tudxdyflag%
+ \renewcommand*\changes@[3]{%
+% \end{macrocode}
+% Einträge sollen nur erzeugt werden, wenn diese vollständig sind.
+% \begin{macrocode}
+ \@tempswatrue%
+ \ifblank{#1}{\@tempswafalse}{}%
+ \ifblank{#3}{\@tempswafalse}{}%
+ \if@tempswa%
+% \end{macrocode}
+% Es wird dabei unterschieden, ob der Änderungseintrag einem Parameter gilt.
+% Ist dies nicht der Fall, so wird der Eintrag mehr oder weniger standardmäßig
+% erzeugt.
+% \begin{macrocode}
+ \ifx\parameter@parent@changes\relax%
+ \protected@edef\@tempb{%
+ \saved@indexname%
+ \ifx\saved@indextype\@empty\else%
+ \space\saved@indextype%
+ \fi%
+ \actualchar%
+ \string\verb\quotechar*%
+ \verbatimchar\saved@macroname%
+ \verbatimchar%
+ \ifx\saved@indextype\@empty\else%
+ \index@type{\saved@indextype}%
+ \fi%
+ :\levelchar%
+ }%
+% \end{macrocode}
+% Andernfalls wird eine zusätzliche Ebene vor dem eigentlichen Eintrag des
+% Parameters erzeugt und der zuvor in \cs{parameter@parent@changes} gesicherte
+% Elterneintrag~-- Befehl oder Umgebung~-- dafür eingefügt.
+% \begin{macrocode}
+ \else%
+ \protected@edef\@tempb{%
+ \parameter@parent@changes%
+ \saved@indexname%
+ \ifx\saved@indextype\@empty\else%
+ \space\saved@indextype%
+ \fi%
+ \actualchar%
+% \end{macrocode}
+% Der so erzeugte Änderungseintrag soll durch \app{texindy} bei der Erzeugung
+% der Änderungsliste noch speziell sortiert werden. Daher wird nicht \cs{verb}
+% sondern lediglich \cs{ttfamily} verwendet.
+% \begin{macrocode}
+ {\noexpand\ttfamily\saved@macroname}%
+ \ifx\saved@indextype\@empty\else%
+ \index@type{\saved@indextype}%
+ \fi%
+ :\levelchar%
+ }%
+ \fi%
+ \protected@edef\@tempa{%
+ \noexpand\glossary{%
+ #1\levelchar%
+ \ifx\saved@macroname\@empty%
+ \tud@general@name%
+ \else%
+ \tud@implementation@name%
+ \fi%
+ \levelchar%
+ \ifx\saved@macroname\@empty\else%
+ \@tempb%
+ \fi%
+ #2 #3%
+ \actualchar%
+ #3% (#2)%
+ }%
+ }%
+ \else%
+ \let\@tempa\relax%
+ \fi%
+ \@tempa\endgroup\@esphack%
+ }%
+\else%
+% \end{macrocode}
+% Für \app{makeindex} wird der Befehl insebsondere für das Listen der Parameter
+% angepasst.
+% \begin{macrocode}
+ \renewcommand*\changes@[3]{%
+ \protected@edef\@tempa{%
+ \noexpand\glossary{%
+ #1\levelchar%
+ \ifx\saved@macroname\@empty%
+ \quotechar!%
+ \actualchar%
+ \tud@general@name%
+ :\levelchar%
+ \else%
+ \ifx\parameter@parent@changes\relax\else%
+ \parameter@parent@changes zzz\space%
+ \fi%
+ \saved@indexname%
+ \ifx\saved@indextype\@empty\else%
+ \space\saved@indextype%
+ \fi%
+ \actualchar%
+ \string\verb\quotechar*%
+ \verbatimchar\saved@macroname%
+ \verbatimchar%
+ \ifx\saved@indextype\@empty\else%
+ \index@type{\saved@indextype}%
+ \fi%
+ \ifx\parameter@parent@changes\relax%
+ :\levelchar%
+ \else%
+ :\space%
+ \fi%
+ \fi%
+ #3%
+ }%
+ }%
+ \@tempa\endgroup\@esphack%
+ }%
+\fi%
+% \end{macrocode}
+% \end{macro}^^A \changes@
+% \begin{macro}{\@wrglossary}
+% Für die Ausgabe der Änderungsliste soll nicht einfach nur die Seitenzahl
+% sondern zumindest für die Implementierungen die Codezeile ausgegeben werden.
+% \begin{macrocode}
+\CheckCommand*\@wrglossary[1]{%
+ \protected@write\@glossaryfile{}%
+ {\string\glossaryentry{#1}{\thepage}}%
+ \endgroup
+ \@esphack%
+}
+% \end{macrocode}
+% Allgemeine Einträge werden mit Seitenzahlenerzeugt. Für Einträge bzgl. einer
+% Implementierungen werden Codezeilen als Basis verwendet, falls aktiv.
+% \begin{macrocode}
+\def\@wrglossary#1{%
+ \ifx\saved@macroname\@empty%
+ \protected@write\@glossaryfile{}{%
+ \string\glossaryentry{#1|usage}{\thepage}%
+ }%
+ \else%
+ \ifcodeline@index%
+ \global\advance\c@CodelineNo\@ne%
+ \protected@write\@glossaryfile{}{%
+ \string\glossaryentry{#1|main}{\filesep\number\c@CodelineNo}%
+ }%
+ \global\advance\c@CodelineNo\m@ne%
+ \else%
+ \protected@write\@glossaryfile{}{%
+ \string\glossaryentry{#1|main}{\thepage}%
+ }%
+ \fi%
+ \fi%
+ \endgroup%
+ \@esphack%
+}
+% \end{macrocode}
+% \end{macro}^^A \@wrglossary
+%
+% \subsubsection{Erscheinung von Einträgen in der Änderungsliste}
+%
+% \begin{macro}{\tud@lst@def}
+% \changes{v2.05}{2016/04/25}{neu}^^A
+% \begin{macro}{\tud@lst@values}
+% \changes{v2.05}{2016/04/25}{neu}^^A
+% \begin{macro}{\if@tud@lst@multi}
+% \changes{v2.05}{2016/04/25}{neu}^^A
+% \begin{macro}{\tud@lst@init}
+% \changes{v2.05}{2016/04/25}{neu}^^A
+% \begin{macro}{\tud@lst@add}
+% \changes{v2.05}{2016/04/25}{neu}^^A
+% \begin{macro}{\tud@lst@process}
+% \changes{v2.05}{2016/04/25}{neu}^^A
+% \begin{macro}{\tud@lst@@values}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{macro}{\if@tud@lst@@multi}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{macro}{\tud@lst@@init}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{macro}{\tud@lst@@add}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{macro}{\tud@lst@@process}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{macro}{\tud@lst@subsub}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{macro}{\tud@lst@subsubsub}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{macro}{\subsubsubitem}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{macro}{\efil}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% Falls für die Sortierung der Änderungsliste in \cls{tudscrdoc} \app{texindy}
+% zum Einsatz kommt, wird bei der Beschreibung von Einträgen oder Parametern
+% nur dann eine Unterebene verwendet, wenn zu einem Eintrag mehrere Angaben
+% existieren. Sollte nur eine Anmerkung vorhanden sein, wird diese direkt in
+% der dazugehörigen Ebene nach dem Eintrag selbst ausgegeben.
+% \begin{macrocode}
+\newcommand*\tud@lst@subsub{}
+\newcommand*\tud@lst@subsubsub{}
+\newcommand*\subsubsubitem{\@idxitem\hspace*{35\p@}}
+\newcommand*\efil{\hfil\nopagebreak}%
+\newcommand*\tud@lst@def{%
+ \newcommand*\tud@lst@values{}%
+ \newif\if@tud@lst@multi%
+ \newcommand*\tud@lst@init{%
+ \let\tud@lst@values\relax%
+ \let\tud@lst@subsub\relax%
+ \@tud@lst@multifalse%
+ }%
+ \newcommand*\tud@lst@add[1]{%
+ \ifx\tud@lst@values\relax\else%
+ \@tud@lst@multitrue%
+ \def\tud@lst@subsub{\subsubitem}%
+ \fi%
+ \listadd\tud@lst@values{\tud@lst@subsub ##1}%
+ }%
+ \newcommand*\tud@lst@process{%
+ \if@tud@lst@multi%
+ \preto\tud@lst@values{\efill}%
+ \fi%
+ \forlistloop{}{\tud@lst@values}%
+ \tud@lst@init%
+ }%
+ \newcommand*\tud@lst@@values{}%
+ \newif\if@tud@lst@@multi%
+ \newcommand*\tud@lst@@init{%
+ \let\tud@lst@@values\relax%
+ \def\tud@lst@subsub{\subsubitem}%
+ \def\tud@lst@subsubsub{\space}%
+ \@tud@lst@@multifalse%
+ }%
+ \newcommand*\tud@lst@@add[1]{%
+ \@tud@lst@multitrue%
+ \ifx\tud@lst@@values\relax\else%
+ \@tud@lst@@multitrue%
+ \def\tud@lst@subsubsub{\subsubsubitem}%
+ \fi%
+ \listadd\tud@lst@@values{##1}%
+ }%
+ \newcommand*\tud@lst@@process{%
+ \if@tud@lst@@multi%
+ \appto\tud@lst@values{\efill}%
+ \fi%
+ \edef\tud@reserved####1{%
+ \noexpand\listadd\noexpand\tud@lst@values{%
+ \expandonce\tud@lst@subsubsub####1%
+ }%
+ }%
+ \forlistloop{\tud@reserved}{\tud@lst@@values}%
+ \tud@lst@@init%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \efil
+% \end{macro}^^A \subsubsubitem
+% \end{macro}^^A \tud@lst@subsubsub
+% \end{macro}^^A \tud@lst@subsub
+% \end{macro}^^A \tud@lst@@process
+% \end{macro}^^A \tud@lst@@add
+% \end{macro}^^A \tud@lst@@init
+% \end{macro}^^A \if@tud@lst@@multi
+% \end{macro}^^A \tud@lst@@values
+% \end{macro}^^A \tud@lst@process
+% \end{macro}^^A \tud@lst@add
+% \end{macro}^^A \tud@lst@init
+% \end{macro}^^A \if@tud@lst@multi
+% \end{macro}^^A \tud@lst@values
+% \end{macro}^^A \tud@lst@def
+%
+% \subsubsection{Erzeugen von Index und Änderungsliste}
+%
+% \begin{macro}{\tud@write@replace}
+% \changes{v2.05}{2016/04/21}{neu}^^A
+% \begin{macro}{\tud@read@replace}
+% \changes{v2.05}{2016/04/21}{neu}^^A
+% \begin{macro}{\tud@line@replace}
+% \changes{v2.05}{2016/04/21}{neu}^^A
+% \begin{macro}{\actualchar}
+% \begin{macro}{\quotechar}
+% \begin{macro}{\levelchar}
+% Damit die erzeugten Dateien für Index und Änderungsliste von \app{texindy}
+% verarbeitet werden können, müssen einige Steuerzeichen in der originalen
+% \file{.ind}-Datei getauscht werden. Dafür wird diese zeilenweise eingelesen,
+% die fraglichen Zeichen ersetzt und in eine weitere Hilfsdatei geschrieben.
+% \begin{macrocode}
+\ifdefined\tudxdyflag
+ \newcommand*\tud@write@replace{}%
+ \newwrite\tud@write@replace%
+ \newcommand*\tud@read@replace{}%
+ \newread\tud@read@replace%
+% \end{macrocode}
+% Die Makros für die fraglichen Steuerzeichen werden so angepasst, dass die
+% Wahrscheinlichkeit für eine Verwendung dieser Kombination in einem Makro-
+% oder Umgebungsnamen sehr gering ist. Anschließend werden die erzeugten
+% Hilfsdateien für Index und Änderungsliste für \app{texindy} angepasst. Dabei
+% werden diese automatisch erzeugt, falls dies möglich ist.
+% \begin{macrocode}
+ \def\actualchar{<|1|>}%
+ \def\quotechar{<|2|>}%
+ \def\levelchar{<|3|>}%
+ \begingroup%
+ \endlinechar=\m@ne\relax%
+ \def\tud@reserved#1#2{%
+ \IfFileExists{\jobname.#1}{%
+ \immediate\openin\tud@read@replace=\jobname.#1\relax%
+ \immediate\openout\tud@write@replace=\jobname-xdy.#1\relax%
+ \@tempswafalse%
+ \loop\unless\ifeof\tud@read@replace%
+ \readline\tud@read@replace to\tud@line@replace%
+ \tud@replace\tud@line@replace{"}{""}%
+ \tud@replace\tud@line@replace{!}{"!}%
+ \tud@replace\tud@line@replace{:}{":}%
+ \tud@replace\tud@line@replace{@}{"@}%
+ \tud@replace\tud@line@replace{\"@}{"\@backslashchar"@}%
+ \expandafter\tud@replace\expandafter\tud@line@replace%
+ \expandafter{\actualchar}{@}%
+ \expandafter\tud@replace\expandafter\tud@line@replace%
+ \expandafter{\quotechar}{"}%
+ \expandafter\tud@replace\expandafter\tud@line@replace%
+ \expandafter{\levelchar}{!}%
+ \tud@replace\tud@line@replace{" @}{}%
+ \ifeof\tud@read@replace\else%
+ \immediate\write\tud@write@replace{%
+ \unexpanded\expandafter{\tud@line@replace}%
+ }%
+ \@tempswatrue%
+ \fi%
+ \repeat%
+ \immediate\closein\tud@read@replace%
+ \immediate\closeout\tud@write@replace%
+ \ifnum\pdf@shellescape=\@ne\relax%
+ \if@tempswa%
+ \ShellEscape{%
+ texindy\space%
+ -o \jobname.#2\space%
+ -M \@currname-#2.xdy\space%
+ -t \jobname-#2.xlg\space%
+ \jobname-xdy.#1%
+ }%
+% \end{macrocode}
+% Falls nichts geschrieben wurde, wird eine leere Ausgabedatei erzeugt.
+% \begin{macrocode}
+ \else%
+ \immediate\openout\tud@write@replace=\jobname.#2\relax%
+ \immediate\closeout\tud@write@replace%
+ \fi%
+ \fi%
+ }{}%
+ }%
+ \tud@reserved{idx}{ind}%
+ \tud@reserved{glo}{gls}%
+ \endgroup%
+% \end{macrocode}
+% Sollte \app{texindy} nicht aktiv sein, werden Index und Änderungsliste mit
+% \app{makeindex} automatisch erzeugt.
+% \begin{macrocode}
+\else
+ \ifnum\pdf@shellescape=\@ne\relax%
+ \ShellEscape{%
+ makeindex -s gglo.ist -t \jobname.glg -o \jobname.gls \jobname.glo%
+ }%
+ \ShellEscape{%
+ makeindex -s gind.ist -t \jobname.ilg -o \jobname.ind \jobname.idx%
+ }%
+ \fi%
+\fi
+% \end{macrocode}
+% \end{macro}^^A \levelchar
+% \end{macro}^^A \quotechar
+% \end{macro}^^A \actualchar
+% \end{macro}^^A \tud@line@replace
+% \end{macro}^^A \tud@read@replace
+% \end{macro}^^A \tud@write@replace
+% Jetzt werden noch die Einleitungen für Index und Änderungsliste angepasst.
+% \begin{macrocode}
+\IndexPrologue{\addsec{\indexname}\tud@index@text}
+\GlossaryPrologue{\addsec{\tud@changes@name}}
+% \end{macrocode}
+%
+% \subsection{ToDo-Liste}
+%
+% \begin{macro}{\PrintToDos}
+% \changes{v2.05}{2016/05/19}{neu}^^A
+% \begin{macro}{\@docinclude}
+% Für ToDo-Notizen wird am Ende eine Liste aller offenen Punkte ausgegeben.
+% \begin{macrocode}
+\DeclareNewTOC[%
+ type=todo,%
+ listname={\tud@todo@name},%
+ name=ToDo,%
+ tocentryindent=\z@,%
+ owner=\@currname,%
+]{tdo}
+\setuptoc{tdo}{totoc}
+\newcommand*\PrintToDos{\ifdefined\tudfinalflag\else\listoftodos\fi}
+% \end{macrocode}
+% Damit die Liste der ToDo-Notizen bei der Erzeugung der gesamten Dokumentation
+% des Quelltextes einmalig sowie vollständig und nicht nach jeder Quelldatei
+% einzeln ausgegeben wird, muss der Befehl \cs{@docinclude} angepasst werden.
+% \begin{macrocode}
+\patchcmd{\@docinclude}{%
+ \let\@ltxdoc@PrintIndex\PrintIndex
+ \let\PrintIndex\relax
+ \let\@ltxdoc@PrintChanges\PrintChanges
+ \let\PrintChanges\relax
+}{%
+ \let\@ltxdoc@PrintIndex\PrintIndex
+ \let\PrintIndex\relax
+ \let\@ltxdoc@PrintChanges\PrintChanges
+ \let\PrintChanges\relax
+ \let\@ltxdoc@PrintToDos\PrintToDos
+ \let\PrintToDos\relax
+}{}{\tud@patch@wrn{@docinclude}}
+\patchcmd{\@docinclude}{%
+ \let\PrintIndex\@ltxdoc@PrintIndex
+ \let\PrintChanges\@ltxdoc@PrintChanges
+}{%
+ \let\PrintIndex\@ltxdoc@PrintIndex
+ \let\PrintChanges\@ltxdoc@PrintChanges
+ \let\PrintToDos\@ltxdoc@PrintToDos
+}{}{\tud@patch@wrn{@docinclude}}
+% \end{macrocode}
+% \end{macro}^^A \@docinclude
+% \end{macro}^^A \PrintToDos
+% \begin{macro}{\ToDo}
+% \changes{v2.02}{2014/07/25}{neu}^^A
+% \begin{macro}{\@ToDo}
+% \changes{v2.02}{2014/07/25}{neu}^^A
+% Die Befehle für die ToDo-Notizen. Um in der gleichen Nomenklatur wie beim
+% Handbuch bleiben zu können, wird die Randnotizmarke als optionales Argument
+% hinter dem eigentlichen Text angegeben.
+% \begin{macrocode}
+\newcommand*\ToDo[2][]{%
+ \kernel@ifnextchar[{\@ToDo{#2}}{\@ToDo{#2}[]}%
+}
+\newcommand*\@ToDo{}
+\def\@ToDo#1[#2]{%
+ \ifdefined\tudfinalflag\else%
+ \begingroup%
+ \csuse{phantomsection}%
+ \IfArgIsEmpty{#2}{%
+ \def\tud@reserved{??}%
+ }{%
+ \def\tud@reserved{#2}%
+ }%
+ \endgraf%
+ \hfuzz0.8pt%
+ \leavevmode%
+ \def\@tempa{\raggedleft\fbox{ToDo:\space\tud@reserved\strut}}%
+ \ifdefined\marginnote%
+ \expandafter\marginnote\expandafter{\@tempa}[%
+ \dimexpr-\fboxsep-\fboxrule\relax%
+ ]%
+ \else%
+ \expandafter\marginpar\expandafter{\@tempa}%
+ \fi%
+ \fbox{\parbox{\dimexpr\textwidth-2\fboxsep\relax}{#1\strut}}%
+ \endgraf%
+% \end{macrocode}
+% Werden mit \cs{DocInclude} mehrere Dateien in das Dokument eingefügt, so
+% erhält die ToDo-Notiz einen entsprechenden Hinweis.
+% \begin{macrocode}
+ \let\@tempa\@empty%
+ \ifdefined\currentfile%
+ \def\@tempa{\,--\,\texttt{\currentfile}}%
+ \fi%
+ \addxcontentsline{tdo}{todo}{\tud@reserved\@tempa:\space#1}%
+ \endgroup%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \@ToDo
+% \end{macro}^^A \ToDo
+%
+% \subsection{Schriften und Satzspiegel}
+%
+% \begin{macro}{\MacroFont}
+% \begin{macro}{\AltMacroFont}
+% Wird das Paket \pkg{mweights} geladen, so soll der passende Schriftschnitt
+% für die ausgewählten TypeWriter-Schriften genutzt werden. Damit dies mit dem
+% Paket \pkg{doc} funktioniert, muss der Befehl \cs{MacroFont} angepasst werden.
+% \begin{macrocode}
+\AfterPackage{mweights}{%
+ \CheckCommand*\MacroFont{%
+ \fontencoding\encodingdefault%
+ \fontfamily\ttdefault%
+ \fontseries\mddefault%
+ \fontshape\updefault%
+ \small%
+ }%
+ \renewcommand*\MacroFont{%
+ \fontencoding\encodingdefault%
+ \fontfamily\ttdefault%
+ \fontseries\mdseries@tt%
+ \fontshape\updefault%
+ \small%
+ }%
+ \CheckCommand*\AltMacroFont{%
+ \fontencoding\encodingdefault%
+ \fontfamily\ttdefault%
+ \fontseries\mddefault%
+ \fontshape\sldefault%
+ \small%
+ }%
+ \renewcommand*\AltMacroFont{%
+ \fontencoding\encodingdefault%
+ \fontfamily\ttdefault%
+ \fontseries\mdseries@tt%
+ \fontshape\sldefault%
+ \small%
+ }%
+% \end{macrocode}
+% Am Ende der Präambel wird dafür gesorgt, dass der Befehl \cs{mdseries@tt} in
+% jedem Fall definiert ist.
+% \begin{macrocode}
+ \AtEndPreamble{%
+ \ifundef{\mdseries@tt}{\edef\mdseries@tt{\mddefault}}{}%
+ }%
+}
+% \end{macrocode}
+% Wird das Paket \pkg{tudscrfonts} genutzt, erscheinen die TypeWriter-Schriften
+% zur Quelltextdokumentation sowohl für Latin~Modern als auch Roboto etwas zu
+% schlank.
+% \begin{macrocode}
+\PassOptionsToPackage{ttfont=lmtt}{tudscrfonts}
+\AfterPackage{tudscrfonts}{%
+ \AtEndPreamble{%
+ \ifnum\tud@ttfont@num>\z@\relax%
+ \edef\mdseries@tt{\tud@ttfont@bf}%
+ \fi%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \AltMacroFont
+% \end{macro}^^A \MacroFont
+%
+% Um den zur Verfügung stehenden Platz möglichst effektiv zu nutzen, soll der
+% Satzspiegel dahingehend aufgeteilt werden, dass für die Darstellung jeder
+% Quelltextzeile genau 80~Zeichen zur Verfügung stehen. Dies ist allerdings
+% abhängig von der geladenen TypeWriter-Schrift. Deshalb wird die Berechnung
+% des Satzspiegels erst zum Beginn des Dokumentes ausgeführt, um auf etwaige
+% Pakete zur Schriftauswahl reagieren zu können.
+%
+% \begin{macro}{\tud@setarea}
+% \changes{v2.05g}{2016/11/10}{neu}^^A
+% \begin{length}{\topmargin}
+% \begin{length}{\headheight}
+% \begin{length}{\headsep}
+% \begin{length}{\footskip}
+% \begin{length}{\textheight}
+% \begin{length}{\textwidth}
+% \begin{length}{\columnsep}
+% \begin{length}{\marginparsep}
+% \begin{length}{\marginparwidth}
+% \begin{length}{\oddsidemargin}
+% Hiermit wird die Berechnung des Satzspiegels ausgeführt.
+% \begin{macrocode}
+\newcommand*\tud@setarea{%
+ \setlength\topmargin{-1in}%
+ \setlength\headheight{0pt}%
+ \setlength\headsep{3em}%
+ \setlength\footskip{1.5\headsep}%
+ \setlength\textheight{\dimexpr\paperheight-2.5\headsep-\footskip\relax}%
+ \@colht=\textheight%
+ \@colroom=\textheight%
+ \vsize=\textheight%
+ \settowidth\MacroIndent{\rmfamily\scriptsize 0000\ }%
+ \begingroup%
+ \MacroFont\selectfont%
+ \settowidth\@tempdima{\space}%
+ \setlength\@tempdima{80\@tempdima}%
+%^^A \addtolength\@tempdima{\dimexpr\MacroIndent+.1\p@\relax}%
+ \addtolength\@tempdima{\MacroIndent}%
+ \edef\@tempa{%
+ \endgroup%
+ \noexpand\setlength\noexpand\textwidth{\the\@tempdima}%
+ }%
+ \@tempa%
+ \columnwidth=\textwidth%
+ \hsize=\columnwidth%
+ \linewidth=\hsize%
+ \setlength\columnsep{1em}%
+ \setlength\marginparsep{1em}%
+ \setlength\marginparwidth{%
+ \dimexpr\paperwidth-\textwidth-2\marginparsep\relax%
+ }%
+ \setlength\oddsidemargin{\dimexpr\marginparwidth+\marginparsep-1in\relax}%
+}
+\AtBeginDocument{\tud@setarea}
+% \end{macrocode}
+% \end{length}^^A \oddsidemargin
+% \end{length}^^A \marginparwidth
+% \end{length}^^A \marginparsep
+% \end{length}^^A \columnsep
+% \end{length}^^A \textwidth
+% \end{length}^^A \textheight
+% \end{length}^^A \footskip
+% \end{length}^^A \headsep
+% \end{length}^^A \headheight
+% \end{length}^^A \topmargin
+% \end{macro}^^A \tud@setarea
+%
+% \subsection{Zusätzliche Markup-Befehle}
+%
+% \begin{macro}{\app}
+% \begin{macro}{\cls}
+% \begin{macro}{\pkg}
+% \begin{macro}{\opt}
+% \begin{macro}{\val}
+% \begin{macro}{\pgs}
+% \begin{macro}{\env}
+% \begin{macro}{\prm}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{macro}{\cnt}
+% \changes{v2.05i}{2017/02/23}{neu}^^A
+% \begin{macro}{\file}
+% Zusätzliche Auszeichnungsbefehle.
+% \begin{macrocode}
+\newrobustcmd*\app[1]{\mbox{\textsl{\textbf{#1}}}}
+\newrobustcmd*\cls[1]{\mbox{\textsf{\textbf{#1}}}}
+\newrobustcmd*\pkg[1]{\mbox{\textsf{\textbf{#1}}}}
+\newrobustcmd*\opt[1]{\mbox{\texttt{#1}}}
+\newrobustcmd*\val[1]{\mbox{\texttt{#1}}}
+\newrobustcmd*\pgs[1]{\mbox{\texttt{#1}}}
+\newrobustcmd*\env[1]{\mbox{\texttt{#1}}}
+\newrobustcmd*\prm[1]{\mbox{\texttt{#1}}}
+\newrobustcmd*\cnt[1]{\mbox{\texttt{#1}}}
+\newrobustcmd*\file[1]{\mbox{\texttt{#1}}}
+\AfterPackage{hyperref}{%
+ \pdfstringdefDisableCommands{%
+ \let\app\@firstofone%
+ \let\cls\@firstofone%
+ \let\pkg\@firstofone%
+ \let\opt\@firstofone%
+ \let\val\@firstofone%
+ \let\pgs\@firstofone%
+ \let\env\@firstofone%
+ \let\prm\@firstofone%
+ \let\file\@firstofone%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \file
+% \end{macro}^^A \cnt
+% \end{macro}^^A \prm
+% \end{macro}^^A \env
+% \end{macro}^^A \pgs
+% \end{macro}^^A \val
+% \end{macro}^^A \opt
+% \end{macro}^^A \pkg
+% \end{macro}^^A \cls
+% \end{macro}^^A \app
+%
+% \subsection{Rückfalloptionen bei fehlenden Paketen}
+%
+% Zum Schluss erfolgen einige Anpassungen mit \cs{AtEndPreamble}, um abhängig
+% vom Ladezustand einiger Pakete reagieren zu können.
+% \begin{macrocode}
+\AtEndPreamble{%
+% \end{macrocode}
+% \begin{macro}{\selectlanguage}
+% \begin{macro}{\glqq}
+% \begin{macro}{\grqq}
+% Etwas Kleinkram für \pkg{babel}\dots
+% \begin{macrocode}
+ \@ifpackageloaded{babel}{}{%
+ \ClassWarning{\TUD@Class@Name}{Package `babel' not loaded}%
+ \providecommand*\selectlanguage[1]{}%
+ \providecommand*\glqq{}%
+ \providecommand*\grqq{}%
+ }%
+% \end{macrocode}
+% \end{macro}^^A \grqq
+% \end{macro}^^A \glqq
+% \end{macro}^^A \selectlanguage
+% \begin{macro}{\enquote}
+% \dots und \pkg{csquotes}.
+% \begin{macrocode}
+ \@ifpackageloaded{csquotes}{}{%
+ \ClassWarning{\TUD@Class@Name}{Package `csquotes' not loaded}%
+ \providecommand\enquote[1]{\emph{#1}}%
+ }%
+% \end{macrocode}
+% \end{macro}^^A \enquote
+% Sollte das Paket \pkg{tudscrfonts} nicht geladen worden sein, so wird das
+% Paket \pkg{lmodern} geladen und die fehlenden Befehle zur Schriftauswahl
+% rudimentär definiert.
+% \begin{macrocode}
+ \@ifpackageloaded{tudscrfonts}{}{%
+ \RequirePackage{lmodern}[2009/10/30]%
+ \providecommand*\textcdln[1]{\textsf{#1}}%
+ \providecommand*\textcdrn[1]{\textcdln{#1}}%
+ \providecommand*\textcdsn[1]{\textcdln{#1}}%
+ \providecommand*\textcdbn[1]{\textbf{\textcdln{#1}}}%
+ \providecommand*\textcdxn[1]{\textcdbn{#1}}%
+ \providecommand*\textcdli[1]{\textsl{\textcdln{#1}}}%
+ \providecommand*\textcdri[1]{\textcdli{#1}}%
+ \providecommand*\textcdsi[1]{\textcdli{#1}}%
+ \providecommand*\textcdbi[1]{\textbf{\textcdli{#1}}}%
+ \providecommand*\textcdxi[1]{\textcdbi{#1}}%
+ }%
+}
+% \end{macrocode}
+%
+% \iffalse
+%</class&body>
+% \fi
+%
+% \Finale
+%
+\endinput
diff --git a/macros/latex/contrib/tudscr/source/tudscr-fields.dtx b/macros/latex/contrib/tudscr/source/tudscr-fields.dtx
new file mode 100644
index 0000000000..dbf9cb46b8
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/tudscr-fields.dtx
@@ -0,0 +1,1253 @@
+% \CheckSum{875}
+% \iffalse meta-comment
+%
+% TUD-Script -- Corporate Design of Technische Universität Dresden
+% ----------------------------------------------------------------------------
+%
+% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2019
+%
+% ----------------------------------------------------------------------------
+%
+% This work may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License, version 1.3c of the license. The latest
+% version of this license is in http://www.latex-project.org/lppl.txt and
+% version 1.3c or later is part of all distributions of LaTeX 2005/12/01
+% or later and of this work. This work has the LPPL maintenance status
+% "author-maintained". The current maintainer and author of this work
+% is Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+% in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
+% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+% Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
+% oder später und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status
+% "author-maintained", wird somit allein durch den Autor verwaltet. Der
+% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: tudscr-fields.dtx
+%<*dtx>
+% \fi
+%
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{tudscr-fields.dtx}[2019/08/20 v2.06c TUD-Script\space%
+ (input fields)%
+]
+%
+% \iffalse
+\documentclass[english,ngerman,xindy]{tudscrdoc}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{tudscrfonts}
+\KOMAoptions{parskip=half-}
+\usepackage{bookmark}
+\usepackage[babel]{microtype}
+
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tudscr-fields.dtx}
+\title{\file{\filename}}
+\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
+\date{\fileversion\nobreakspace(\filedate)}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.02}{2014/06/23}{Paket \pkg{titlepage} nicht weiter unterstützt}^^A
+%
+% \section{Anwenderbefehle für Eingabefelder}
+%
+% Das \TUDScript-Bundle für das \TUDCD definieren mehrere Felder, welche durch
+% den Anwender festgelegt werden können und dadurch auf der Titelseite bzw. auf
+% der Aufgabenstellung~-- falls das Paket \pkg{tudscrsupervisor} zum Einsatz
+% kommt~-- ausgegeben werden. Ein Großteil der definierten Felder wird unter
+% anderem für den Satz der Titelseite benötigt.
+%
+% Das Setzen einer speziellen Titelseite mit \LaTeX{} ist eines der häufigsten
+% anliegen. Dafür ist von Markus Kohm\footnote{Autor von \KOMAScript} das
+% \pkg{titlepage}-Paket entworfen worden. Um gleichzeitig konsistent zu diesem
+% Paket zu sein, werden für die entsprechenden Felder Alias-Befehle definiert.
+%
+% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%
+% \iffalse
+%<*class&!manual>
+% \fi
+%
+% \begin{macro}{\getfield}
+% \changes{v2.06}{2018/08/20}{neu}^^A
+% Hiermit wird der Inhalt des im zweiten (obligatorischen) Argument namentlich
+% genannten Feldes in die im ersten (optionalen) Argument gegebene Anweisung
+% expandiert.
+% \begin{macrocode}
+\newcommand*\getfield[2][\@firstofone]{%
+ \begingroup%
+ \def\tud@res@b{#1}%
+ \ifcsdef{@@#2}{%
+ \letcs\tud@res@a{@@#2}%
+ }{%
+ \ifcsdef{@#2}{%
+ \letcs\tud@res@a{@#2}%
+ }{%
+ \let\tud@res@a\@empty%
+ \ClassWarning{\TUD@Class@Name}{%
+ The internal field `@#2' does not exist%
+ }%
+ }%
+ }%
+ \edef\tud@res@a{%
+ \endgroup%
+ \expandonce\tud@res@b{\expandonce\tud@res@a}%
+ }%
+ \tud@res@a%
+}
+% \end{macrocode}
+% \end{macro}^^A \getfield
+%
+% \subsection{Textfelder für die \TUDScript-Klassen}
+%
+% Von den Klassen benötigte Formularfelder werden definiert. Für das Setzen von
+% Feldern werden mit dem Makro \cs{trim@spaces} aus dem Paket \pkg{trimspaces}
+% bei einem übergebenen Argument führende und angehängte Leerzeichen beseitigt.
+% \begin{macro}{\faculty}
+% \begin{field}{\@faculty}
+% \begin{field}{\@facultyfoot}
+% \changes{v2.05}{2015/07/06}{neu}^^A
+% \begin{macro}{\department}
+% \begin{field}{\@department}
+% \begin{field}{\@departmentfoot}
+% \changes{v2.05}{2015/07/06}{neu}^^A
+% \begin{macro}{\institute}
+% \begin{field}{\@institute}
+% \begin{field}{\@institutefoot}
+% \changes{v2.05}{2015/07/06}{neu}^^A
+% \begin{macro}{\chair}
+% \begin{field}{\@chair}
+% \begin{field}{\@chairfoot}
+% \changes{v2.05}{2015/07/06}{neu}^^A
+% Für die für die TUD-Kopfzeile kann mit \cs{faculty}\marg{Fakultät} die
+% Fakultät angegeben werden, welche im Makro \cs{@faculty} gespeichert wird.
+% Das gilt ebenso für die Angabe von Einrichtung, Institut und Lehrstuhls bzw.
+% Professur. Dies erfolgt mit den Makros \cs{department}\marg{Fachrichtung},
+% \cs{institute}\marg{Institut} sowie \cs{chair}\marg{Lehrstuhl}, welche in
+% \cs{@department}, \cs{@institute} und \cs{@chair} gespeichert werden.
+%
+% Das optionale Argument wird zur Kompatibilität zur Klasse \cls{tudscrposter}
+% vorgehalten. Wird das Paket geladen, kann mit dem optionalen Argument die
+% Angabe der Struktureinheiten im Fußbereich variiert werden. Dafür werden die
+% Felder \cs{@facultyfoot}, \cs{@departmentfoot}, \cs{@institutefoot} sowie
+% \cs{@chairfoot}
+% definiert.
+% \begin{macrocode}
+\newcommand*\@faculty{}
+\newcommand*\@department{}
+\newcommand*\@institute{}
+\newcommand*\@chair{}
+%<*book|report|article>
+\newcommand*\faculty[2][]{\tud@head@text@field{faculty}{#2}}
+\newcommand*\department[2][]{\tud@head@text@field{department}{#2}}
+\newcommand*\institute[2][]{\tud@head@text@field{institute}{#2}}
+\newcommand*\chair[2][]{\tud@head@text@field{chair}{#2}}
+%</book|report|article>
+%<*poster>
+\newcommand*\@facultyfoot{}
+\newcommand*\@departmentfoot{}
+\newcommand*\@institutefoot{}
+\newcommand*\@chairfoot{}
+\newcommand*\faculty[2][\@empty]{\tud@foot@line@add{faculty}{#2}{#1}}
+\newcommand*\department[2][\@empty]{\tud@foot@line@add{department}{#2}{#1}}
+\newcommand*\institute[2][\@empty]{\tud@foot@line@add{institute}{#2}{#1}}
+\newcommand*\chair[2][\@empty]{\tud@foot@line@add{chair}{#2}{#1}}
+%</poster>
+% \end{macrocode}
+% \end{field}^^A \@chairfoot
+% \end{field}^^A \@chair
+% \end{macro}^^A \chair
+% \end{field}^^A \@institutefoot
+% \end{field}^^A \@institute
+% \end{macro}^^A \institute
+% \end{field}^^A \@departmentfoot
+% \end{field}^^A \@department
+% \end{macro}^^A \department
+% \end{field}^^A \@facultyfoot
+% \end{field}^^A \@faculty
+% \end{macro}^^A \faculty
+% \begin{macro}{\extraheadline}
+% \begin{field}{\@extraheadline}
+% Für die Angabe weiteren, freien Textzeile im Kopf. Dies ist laut \CD nur in
+% besonderen Ausnahmefällen gestattet.
+% \begin{macrocode}
+\newcommand*\@extraheadline{}
+\newcommand*\extraheadline[1]{\tud@head@text@field{extraheadline}{#1}}
+% \end{macrocode}
+% \end{field}^^A \@extraheadline
+% \end{macro}^^A \extraheadline
+% \begin{macro}{\tud@head@text@field}
+% \changes{v2.05}{2015/11/26}{neu}^^A
+% Wird ein Feld gesetzt, muss im Zweifel die Kopfzeile neu erstellt werden.
+% \begin{macrocode}
+\newcommand*\tud@head@text@field[2]{%
+ \csgdef{@#1}{\trim@spaces{#2}}%
+ \global\@tud@head@text@settrue%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@head@text@field
+% \begin{macro}{\tud@foot@line@add}
+% \changes{v2.05}{2015/07/06}{neu}^^A
+% \begin{macro}{\tud@foot@line@write}
+% \changes{v2.05}{2015/07/06}{neu}^^A
+% Mit \cs{tud@foot@line@add} wird der Inhalt eines Feldes in \cs{@\meta{Feld}}
+% gespeichert. Der Befehl erwartet als erstes obligatorisches Argument den
+% Feldnamen und als zweites den Inhalt. Entspricht das dritte obligatorische
+% Argument \cs{@empty}, so wird in \cs{@\meta{Feld}foot} ebenfalls das zweite
+% Argument abgelegt, andernfalls das dritte.
+%
+% Damit wird es für Poster möglich, die Befehle \cs{faculty}, \cs{department},
+% \cs{institute}, \cs{chair} und \cs{professor} dahingehend zu erweitern, dass
+% unterschiedliche Angaben für die Kopf- und Fußzeile gemacht werden können.
+% Wird eines der zuvor genannten Makros lediglich mit einem obligatorischen
+% Argument verwendet, so enthalten Kopf und Fuß den gleichen Eintrag. Wird
+% jedoch zusätzlich das optionale Argument genutzt, so wird dessen Inhalt im
+% Fußbereich mit \cs{tud@foot@line@write} ausgegeben.
+% \begin{macrocode}
+%<*poster>
+\newcommand*\tud@foot@line@add[3]{%
+ \tud@head@text@field{#1}{#2}%
+ \ifx\@empty#3\relax%
+ \global\csletcs{@#1foot}{@#1}%
+ \else%
+ \csgdef{@#1foot}{\trim@spaces{#3}}%
+ \fi%
+}
+\newcommand*\tud@foot@line@write[1]{%
+ \protected@edef\@tempa{\csuse{@#1foot}}%
+ \ifx\@tempa\@empty\else\newline\mbox{\csuse{@#1foot}}\fi%
+}
+%</poster>
+% \end{macrocode}
+% \end{macro}^^A \tud@foot@line@write
+% \end{macro}^^A \tud@foot@line@add
+% \begin{macro}{\title}
+% \begin{field}{\@title}
+% \begin{field}{\@@title}
+% \changes{v2.02}{2014/11/06}{\cs{protected@xdef} genutzt}^^A
+% Für die spätere Verwendung im Dokument des Titels~-- beispielsweise für die
+% Aufgabenstellung oder die Selbstständigkeitserklärung~-- wird das Feld
+% \cs{@@title} definiert. In diesem wird der mit \cs{title} gesicherte Eintrag
+% ohne die etwaigen Fußnoten gespeichert.
+% \begin{macrocode}
+\newcommand*\@@title{}
+\robustify\@title
+\renewcommand*\title[1]{%
+ \gdef\@title{#1}%
+ \begingroup%
+ \let\thanks\@gobble%
+ \let\footnote\@gobble%
+ \def\newline{\space\ignorespaces}%
+ \def\\{\space\ignorespaces}%
+ \protected@xdef\@@title{\trim@spaces{#1}}%
+ \endgroup%
+}
+% \end{macrocode}
+% \end{field}^^A \@@title
+% \end{field}^^A \@title
+% \end{macro}^^A \title
+% \begin{macro}{\author}
+% \begin{field}{\@author}
+% \begin{field}{\@@author}
+% \begin{macro}{\authormore}
+% \begin{field}{\@authormore}
+% Die Ausgabe einer zusätzlichen Zeile mit \cs{authormore}\marg{Textzeile}
+% direkt unterhalb der Angabe des Autors auf der Titelseite, wird im Makro
+% \cs{@authormore} gespeichert.
+% \begin{macrocode}
+\newcommand*\@@author{}
+\renewcommand*\author[1]{%
+ \gdef\@author{#1}%
+% \end{macrocode}
+% Das Feld \cs{@@author} soll lediglich die Autoren ohne weitere Anmerkungen
+% enthalten. Deshalb werden die gewöhnlichen Formatierungsbefehle des Titels
+% temporär unschädlich gemacht.
+% \begin{macrocode}
+ \begingroup%
+ \let\thanks\@gobble%
+ \let\footnote\@gobble%
+ \def\newline{\space\ignorespaces}%
+ \def\\{\space\ignorespaces}%
+% \end{macrocode}
+% Die Makros aus \cs{tud@split@author@list} werden zu \cs{@tempc} gesetzt, um
+% diese nach der Expansion weiter zu behandeln.
+% \begin{macrocode}
+ \let\@tempc\relax%
+ \def\@tempa##1{\csedef{##1}####1{\@tempc}}%
+ \let\@tempb\tud@split@author@list%
+ \ifx\and\relax\else%
+ \robustify\and%
+ \fi%
+ \expandafter\forcsvlist\expandafter\@tempa\expandafter{\@tempb}%
+% \end{macrocode}
+% Da die Befehle für Zusatzinformationen unter Umständen ungewollte Leerzeichen
+% im Feld \cs{@@author} hinterlassen, werden diese entfernt.
+% \begin{macrocode}
+ \def\@tempa##1##2{%
+ \def\@tempb####1##2####2\@nil{%
+ \IfArgIsEmpty{####2}{%
+ \def##1{####1}%
+ }{%
+ \@tempb####1####2\@nil%
+ }%
+ }%
+ \expandafter\@tempb##1##2\@nil%
+ }%
+ \protected@edef\@@author{#1}%
+ \@tempa{\@@author}{ \@tempc }%
+ \@tempa{\@@author}{\@tempc }%
+ \@tempa{\@@author}{ \@tempc}%
+ \@tempa{\@@author}{\@tempc}%
+ \xdef\@@author{\expandonce\@@author}%
+ \endgroup%
+}
+\newcommand*\@authormore{}
+\newrobustcmd*\authormore[1]{\gdef\@authormore{#1}\ignorespaces}
+% \end{macrocode}
+% \end{field}^^A \@authormore
+% \end{macro}^^A \authormore
+% \end{field}^^A \@@author
+% \end{field}^^A \@author
+% \end{macro}^^A \author
+% \begin{macro}{\emailaddress}
+% \changes{v2.02}{2014/05/16}{neu, Umbenennung des Makros \cs{email}}^^A
+% \begin{field}{\@emailaddress}
+% \changes{v2.02}{2014/05/16}{neu, Umbenennung des Makros \cs{@email}}^^A
+% \begin{macro}{\tud@emailaddress@simple}
+% \changes{v2.05}{2016/07/09}{neu}^^A
+% \begin{macro}{\tud@emailaddress@hyper}
+% \changes{v2.05}{2016/07/09}{neu}^^A
+% \begin{macrocode}
+\newcommand*\@emailaddress{}
+\newrobustcmd*\emailaddress{%
+ \kernel@ifstar{\tud@emailaddress@simple}{\tud@emailaddress@hyper}%
+}
+\newrobustcmd*\tud@emailaddress@simple[1]{\gdef\@emailaddress{#1}}
+\newrobustcmd*\tud@emailaddress@hyper[2][]{\gdef\@emailaddress{#2}}
+\AfterPackage{hyperref}{%
+ \renewrobustcmd*\tud@emailaddress@hyper[2][hidelinks]{%
+ \gdef\@emailaddress{%
+ \begingroup%
+ \urlstyle{same}%
+ \hypersetup{#1}%
+ \href{mailto:#2}{\nolinkurl{#2}}%
+ \endgroup%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@emailaddress@hyper
+% \end{macro}^^A \tud@emailaddress@simple
+% \end{field}^^A \@emailaddress
+% \end{macro}^^A \emailaddress
+% \begin{macro}{\course}
+% \begin{field}{\@course}
+% Studiengang für den Titel sowie den Kopf der Aufgabenstellung, wird im Makro
+% \cs{@course} gespeichert.
+% \begin{macrocode}
+\newcommand*\@course{}
+\newrobustcmd*\course[1]{\gdef\@course{#1}\ignorespaces}
+% \end{macrocode}
+% \end{field}^^A \@course
+% \end{macro}^^A \course
+% \begin{macro}{\discipline}
+% \changes{v2.02}{2014/05/16}{neu, von \cs{branch} umbenannt}^^A
+% \begin{field}{\@discipline}
+% \changes{v2.02}{2014/05/16}{neu, von \cs{@branch} umbenannt}^^A
+% Studienrichtung bzw. Fachrichtung für Titel und Kopf der Aufgabenstellung,
+% wird im Makro \cs{@discipline} gespeichert.
+% \begin{macrocode}
+\newcommand*\@discipline{}
+\newrobustcmd*\discipline[1]{\gdef\@discipline{#1}\ignorespaces}
+% \end{macrocode}
+% \end{field}^^A \@discipline
+% \end{macro}^^A \discipline
+%
+% \iffalse
+%<*book|report|article>
+% \fi
+%
+% \begin{macro}{\matriculationnumber}
+% \begin{field}{\@matriculationnumber}
+% Die Matrikelnummer für Titelseite und Aufgabenstellung, wird in
+% \cs{@matriculationid} gespeichert.
+% \begin{macrocode}
+\newcommand*\@matriculationnumber{}
+\newrobustcmd*\matriculationnumber[1]{%
+ \gdef\@matriculationnumber{#1}\ignorespaces%
+}
+% \end{macrocode}
+% \end{field}^^A \@matriculationnumber
+% \end{macro}^^A \matriculationnumber
+% \begin{macro}{\matriculationyear}
+% \begin{field}{\@matriculationyear}
+% Das Immatrikulationsjahr für den Titel wird in \cs{@matriculationyear}
+% gespeichert.
+% \begin{macrocode}
+\newcommand*\@matriculationyear{}
+\newrobustcmd*\matriculationyear[1]{\gdef\@matriculationyear{#1}\ignorespaces}
+% \end{macrocode}
+% \end{field}^^A \@matriculationyear
+% \end{macro}^^A \matriculationyear
+% \begin{macro}{\placeofbirth}
+% \begin{field}{\@placeofbirth}
+% Der Geburtsort für den Titel wird in \cs{@placeofbirth} gespeichert.
+% \begin{macrocode}
+\newcommand*\@placeofbirth{}
+\newrobustcmd*\placeofbirth[1]{\gdef\@placeofbirth{#1}\ignorespaces}
+% \end{macrocode}
+% \end{field}^^A \@placeofbirth
+% \end{macro}^^A \placeofbirth
+% \begin{macro}{\thesis}
+% \begin{field}{\@thesis}
+% \changes{v2.02}{2014/11/06}{\cs{protected@xdef} genutzt}^^A
+% \begin{field}{\@@thesis}
+% \changes{v2.02}{2014/11/06}{\cs{protected@xdef} genutzt}^^A
+% \begin{macro}{\subject}
+% \begin{field}{\@subject}
+% \begin{macro}{\tud@thesis@do}
+% \begin{macro}{\tud@thesis@@do}
+% \begin{macro}{\tud@thanks}
+% Art bzw. Typ der Abschlussarbeit kann \cs{thesis}\marg{Abschlussarbeit}
+% angegeben werden und wird im Makro \cs{@thesis} gespeichert. Alternativ
+% dazu kann auch der Befehl \cs{subject} verwendet werden. Mit dem Befehl
+% \cs{tud@thesis@do} wird in den Feldern \cs{@thesis} respektive \cs{@subject}
+% nach bestimmten Schlagwörtern für Abschlussarbeiten o.\,ä. gesucht. Wird
+% eines dieser Wörter gefunden, wird der entsprechende Bezeichner für dieses
+% Feld gesetzt. Zusätzlich wird durch \cs{tud@thesis@@do} dafür gesorgt, dass
+% gegebenenfalls der Inhalt von \cs{@subject} in \cs{@thesis} verschoben und
+% entsprechend die Option \opt{subjectthesis} gesetzt wird. In \cs{@@thesis}
+% wird die angegebene Abschlussarbeit ohne etwaige Fußnoten gespeichert.
+% \begin{macrocode}
+\newcommand*\@thesis{}
+\newcommand*\@@thesis{}
+\newcommand*\thesis[1]{\tud@thesis@do{thesis}{#1}}
+\renewcommand*\subject[1]{\tud@thesis@do{subject}{#1}}
+\newcommand*\tud@thanks{}
+\newcommand*\tud@thesis@do[2]{%
+ \begingroup%
+% \end{macrocode}
+% Hier das gleiche wie an anderer Stelle auch schon. Der Inhalt einer eventuell
+% vorhandenen Fußnote wird gesichert
+% \begin{macrocode}
+ \global\let\tud@thanks\relax%
+ \def\thanks##1{\gdef\tud@thanks{##1}}%
+ \let\footnote\thanks%
+ \sbox\z@{#2}%
+ \let\thanks\@gobble%
+ \let\footnote\@gobble%
+ \tud@lowerstring{\@tempa}{#2}%
+ \ifstr{#1}{thesis}{\protected@xdef\@@thesis{#2}}{}%
+ \protected@edef\@tempa{%
+ \endgroup%
+ \def\noexpand\@tempa{\@tempa}%
+ }%
+ \@tempa%
+ \ifstr{\@tempa}{diss}{\tud@thesis@@do{#1}{\dissertationname}}{%
+ \ifstr{\@tempa}{doctoral}{\tud@thesis@@do{#1}{\dissertationname}}{%
+ \ifstr{\@tempa}{phd}{\tud@thesis@@do{#1}{\dissertationname}}{%
+ \ifstr{\@tempa}{diploma}{\tud@thesis@@do{#1}{\diplomathesisname}}{%
+ \ifstr{\@tempa}{master}{\tud@thesis@@do{#1}{\masterthesisname}}{%
+ \ifstr{\@tempa}{bachelor}{\tud@thesis@@do{#1}{\bachelorthesisname}}{%
+ \ifstr{\@tempa}{student}{\tud@thesis@@do{#1}{\studentthesisname}}{%
+ \ifstr{\@tempa}{evidence}{\tud@thesis@@do{#1}{\studentresearchname}}{%
+ \ifstr{\@tempa}{project}{\tud@thesis@@do{#1}{\projectpapername}}{%
+ \ifstr{\@tempa}{seminar}{\tud@thesis@@do{#1}{\seminarpapername}}{%
+ \ifstr{\@tempa}{term}{\tud@thesis@@do{#1}{\termpapername}}{%
+ \ifstr{\@tempa}{research}{\tud@thesis@@do{#1}{\researchname}}{%
+ \ifstr{\@tempa}{log}{\tud@thesis@@do{#1}{\logname}}{%
+ \ifstr{\@tempa}{report}{\tud@thesis@@do{#1}{\reportname}}{%
+ \ifstr{\@tempa}{internship}{\tud@thesis@@do{#1}{\internshipname}}{%
+ \csdef{@#1}{#2}%
+ }}}}}}}}}}}}}}}%
+}
+\newcommand*\tud@thesis@@do[2]{%
+ \ifstr{#1}{subject}{%
+ \ifx\@thesis\@empty\else%
+ \ClassWarning{\TUD@Class@Name}{%
+ Field `thesis' is overwritten by `subject'%
+ }%
+ \fi%
+ \TUD@key@preset{subjectthesis}{true}%
+ }{%
+ \TUD@key@preset{subjectthesis}{false}%
+ }%
+ \ifx\tud@thanks\relax%
+ \gdef\@thesis{#2}%
+ \else%
+ \protected@xdef\@thesis{\noexpand#2\noexpand\thanks{\tud@thanks}}%
+ \fi%
+ \protected@xdef\@@thesis{\trim@spaces{#2}}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@thanks
+% \end{macro}^^A \tud@thesis@@do
+% \end{macro}^^A \tud@thesis@do
+% \end{field}^^A \@subject
+% \end{macro}^^A \subject
+% \end{field}^^A \@@thesis
+% \end{field}^^A \@thesis
+% \end{macro}^^A \thesis
+% \begin{macro}{\graduation}
+% \changes{v2.02}{2014/05/16}{neu, von \cs{degree} umbenannt}^^A
+% \begin{field}{\@graduation}
+% \changes{v2.02}{2014/05/16}{neu, von \cs{@degree} umbenannt}^^A
+% \begin{field}{\@graduationabbreviation}
+% \changes{v2.02}{2014/05/16}{neu, \cs{@degreeabbr} umbenannt}^^A
+% Der angestrebte Abschluss bzw. der zu erwerbende akademische Grad, welcher
+% auf der Titelseite ausgegeben werden soll, wird im Makro \cs{@graduation}
+% gespeichert. Zusätzlich kann als optionales Argument die Kurzform des
+% akademischen Grades angegeben werden, wird in \cs{@graduationabbr}
+% gespeichert.
+% \begin{macrocode}
+\newcommand*\@graduation{}
+\newcommand*\@graduationabbreviation{}
+\newcommand*\graduation[2][]{%
+ \gdef\@graduationabbreviation{}%
+ \ifxblank{#1}{}{\gdef\@graduationabbreviation{(#1)}}%
+ \gdef\@graduation{#2}%
+}
+% \end{macrocode}
+% \end{field}^^A \@graduationabbreviation
+% \end{field}^^A \@graduation
+% \end{macro}^^A \graduation
+%
+% \iffalse
+%</book|report|article>
+% \fi
+%
+% \begin{macro}{\professor}
+% \begin{field}{\@professor}
+% \begin{field}{\@professorfoot}
+% \changes{v2.05}{2015/07/06}{neu}^^A
+% Angabe des verantwortlichen Hochschullehrers für Titel und Aufgabenstellung,
+% wird im Makro \cs{@professor} gespeichert.
+% \begin{macrocode}
+%<*book|report|article>
+\newcommand*\@professor{}
+\newcommand*\professor[1]{\gdef\@professor{#1}}
+%</book|report|article>
+%<*poster>
+\newcommand*\@professorfoot{}
+\newcommand*\professor[1]{\gdef\@professorfoot{#1}}
+%</poster>
+% \end{macrocode}
+% \end{field}^^A \@professorfoot
+% \end{field}^^A \@professor
+% \end{macro}^^A \professor
+% \begin{macro}{\supervisor}
+% \changes{v2.02}{2014/05/16}{erzeugter Eintrag der Betreuer mit
+% \cs{supervisor} für Selbstständigkeitserklärung verworfen}^^A
+% \begin{field}{\@supervisor}
+% (Erst- und Zweit"~)Betreuer bei Abschlussarbeiten, wird in \cs{@supervisor}
+% gespeichert. Mehrere Betreuer werden durch \cs{and} getrennt. Für Poster kann
+% der Befehl als Äquivalent zu \cs{contactperson} genutzt werden.
+% \begin{macrocode}
+%<*book|report|article>
+\newcommand*\@supervisor{}
+\newcommand*\supervisor[1]{\gdef\@supervisor{#1}}
+%</book|report|article>
+%<*poster>
+\newcommand*\supervisor[1]{}
+%</poster>
+% \end{macrocode}
+% \end{field}^^A \@supervisor
+% \end{macro}^^A \supervisor
+%
+% \iffalse
+%<*book|report|article>
+% \fi
+%
+% \begin{macro}{\supporter}
+% \changes{v2.02}{2014/05/16}{erzeugter Eintrag der Betreuer mit
+% \cs{supervisor} für Selbstständigkeitserklärung verworfen}^^A
+% \begin{field}{\@supporter}
+% Diese Feld ist für die Hilfesteller bei der Anfertigung der Abschlussarbeit,
+% welche auf der Selbstständigkeitserklärung aufgeführt werden. Mehrere
+% Hilfesteller werden durch \cs{and} voneinander getrennt.
+% \begin{macrocode}
+\newcommand*\@supporter{}
+\newcommand*\supporter[1]{\gdef\@supporter{#1}}
+% \end{macrocode}
+% \end{field}^^A \@supporter
+% \end{macro}^^A \supporter
+% \begin{macro}{\company}
+% \begin{field}{\@company}
+% Angabe einer externen Firma, wird im Makro \cs{@company} gespeichert.
+% \begin{macrocode}
+\newcommand*\@company{}
+\newcommand*\company[1]{\gdef\@company{#1}}
+% \end{macrocode}
+% \end{field}^^A \@company
+% \end{macro}^^A \company
+% \begin{macro}{\referee}
+% \begin{field}{\@referee}
+% Gutachter bei einer Dissertation, werden im Makro \cs{@referee} gespeichert.
+% Mehrere Gutachter werden durch \cs{and} getrennt.
+% \begin{macrocode}
+\newcommand*\@referee{}
+\newcommand*\referee[1]{\gdef\@referee{#1}}
+% \end{macrocode}
+% \end{field}^^A \@referee
+% \end{macro}^^A \referee
+% \begin{macro}{\advisor}
+% \begin{field}{\@advisor}
+% Fachreferenten bei einer Dissertation, werden im Makro \cs{@advisor}
+% gespeichert. Mehrere Fachreferenten werden durch \cs{and} getrennt.
+% \begin{macrocode}
+\newcommand*\@advisor{}
+\newcommand*\advisor[1]{\gdef\@advisor{#1}}
+% \end{macrocode}
+% \end{field}^^A \@advisor
+% \end{macro}^^A \advisor
+% \begin{length}{\tud@len@signatureskip}
+% \changes{v2.04}{2015/05/06}{neu}^^A
+% Für alle Formatvorlagen, welche eine Unterschriftenzeile bereitstellen, wird
+% ein einheitlicher Abstand verwendet.
+% \begin{macrocode}
+\newlength\tud@len@signatureskip
+\setlength\tud@len@signatureskip{8ex plus 6ex minus 6ex}
+% \end{macrocode}
+% \end{length}^^A \tud@len@signatureskip
+% \begin{macro}{\confirmationclosing}
+% \begin{field}{\@confirmationclosing}
+% Als Abschluss der Selbstständigkeitserklärung für Ort und Unterschrift.
+% \begin{macrocode}
+\newcommand*\@confirmationclosing{%
+ \tud@date@check%
+ \ifx\@date\@empty\else%
+ \medskip\noindent%
+ \ifx\@place\@empty\else\@place,\nobreakspace\fi\@date%
+ \fi%
+ \vskip\tud@len@signatureskip\noindent%
+ \begingroup%
+ \let\and\hfil%
+ \@@author\hfil%
+ \endgroup%
+}
+\newcommand*\confirmationclosing[1]{\gdef\@confirmationclosing{#1}}
+% \end{macrocode}
+% \end{field}^^A \@confirmationclosing
+% \end{macro}^^A \confirmationclosing
+% \begin{macro}{\place}
+% \begin{field}{\@place}
+% Die Angabe des Ortes mit \cs{place} für die Selbstständigkeitserklärung und
+% ggf. das Datum wird im Makro \cs{@place} gespeichert und standardmäßig mit
+% \enquote{Dresden} gesetzt.
+% \begin{macrocode}
+\newcommand*\@place{Dresden}
+\newcommand*\place[1]{\gdef\@place{#1}}
+% \end{macrocode}
+% \end{field}^^A \@place
+% \end{macro}^^A \place
+%
+% \iffalse
+%</book|report|article>
+% \fi
+%
+% \begin{macro}{\publisher}
+% Kleine Korrektur für \KOMAScript, der Befehl sollte im Singular stehen.
+% \begin{macrocode}
+\providecommand*\publisher[1]{\publishers{#1}}
+% \end{macrocode}
+% \end{macro}^^A \publisher
+%
+% \iffalse
+%<*poster>
+% \fi
+%
+% \begin{macro}{\webpage}
+% \changes{v2.05}{2015/07/06}{neu}^^A
+% \begin{field}{\@webpage}
+% \changes{v2.05}{2015/07/06}{neu}^^A
+% \begin{macro}{\tud@webpage@simple}
+% \changes{v2.05}{2016/07/09}{neu}^^A
+% \begin{macro}{\tud@webpage@hyper}
+% \changes{v2.05}{2016/07/09}{neu}^^A
+% Im Fußbereich eines Posters kann zusätzlich eine Web-Seite angegeben werden.
+% \begin{macrocode}
+\newcommand*\@webpage{}
+\newrobustcmd*\webpage{%
+ \kernel@ifstar{\tud@webpage@simple}{\tud@webpage@hyper}%
+}
+\newrobustcmd*\tud@webpage@simple[1]{\gdef\@webpage{#1}}
+\newrobustcmd*\tud@webpage@hyper[2][]{\gdef\@webpage{#2}}
+\AfterPackage{hyperref}{%
+ \renewrobustcmd*\tud@webpage@hyper[2][hidelinks]{%
+ \gdef\@webpage{%
+ \begingroup%
+ \urlstyle{same}%
+ \hypersetup{#1}%
+ \url{#2}%
+ \endgroup%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@webpage@hyper
+% \end{macro}^^A \tud@webpage@simple
+% \end{field}^^A \@webpage
+% \end{macro}^^A \webpage
+%
+% \iffalse
+%</poster>
+% \fi
+%
+% \subsection{Datumsfelder für die \TUDScript-Klassen}
+%
+% \begin{macro}{\printdate}
+% Im Folgenden werden mehrere Datumsfelder definiert. Damit diese optional
+% durch eines der Pakete \pkg{isodate} oder \pkg{datetime2} formatiert werden
+% können, wird der zu \pkg{isodate} gehörende Befehl \cs{printdate} in die
+% Definition der eigentlichen Datumsfelder integriert. Sollte das Paket nicht
+% geladen sein, so verwendet der Befehl die Schnittstelle von \pkg{datetime2},
+% welches nur ein spezielles Datenformat als Eingabe akzeptiert. Wird keines
+% der beiden Pakete verwendet, wird das Argument direkt durchgereicht.
+% \begin{macrocode}
+\TUD@UnwindPackage{isodate}{%
+ \@ifpackageloaded{datetime2}{%
+ \providecommand*\printdate[1]{\DTMDate{#1}}%
+ }{%
+ \providecommand*\printdate[1]{#1}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \printdate
+% \begin{macro}{\tud@printdate}
+% Damit die Datumsfelder definiert werden können und eines der Datumspakete
+% unterstützen, muss beim Festlegen der Datumsfelder einiges beachtet werden.
+% So müssen beispielsweise leere Argumente und Sonderfälle separat betrachtet
+% werden. Damit dies einheitlich für alle Felder geschehen kann, wird dieser
+% Befehl genutzt. Dabei wird als erstes Argument der Befehlsname für das
+% Datumsfeld übergeben, als zweites Argument der gewünschte Inhalt.
+% \begin{macrocode}
+\newcommand*\tud@printdate[2]{%
+ \ifx\today#2\relax%
+ \gdef#1{#2}%
+ \else%
+ \ifxblank{#2}%
+ {\gdef#1{}}%
+ {\gdef#1{\printdate{#2}}}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@printdate
+% \begin{macro}{\tud@date@check}
+% \changes{v2.04}{2015/05/06}{neu}^^A
+% Das Makro prüft vor der Nutzung des Datumfeldes \cs{@date}, ob selbiges
+% explizit angegeben wurde. Falls dies nicht der Fall ist, wird eine Warnung
+% ausgegeben.
+% \begin{macrocode}
+\newcommand*\tud@date@check{%
+ \ifdefvoid{\@duedate}{%
+ \ClassWarning{\TUD@Class@Name}{%
+ `\string\date' was not given\MessageBreak%
+ Since a thesis is a self-contained work, an end\MessageBreak%
+ date should be specified by the author. \MessageBreak%
+ Nevertheless, today's date is used%
+ }%
+ }{%
+ \ClassWarning{\TUD@Class@Name}{%
+ `\string\date' was not given\MessageBreak%
+ It's substituted by the given due date%
+ }%
+ \global\let\@date\@duedate%
+ }%
+ \global\let\tud@date@check\relax%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@date@check
+% \begin{macro}{\date}
+% \begin{parameter}{before}
+% \changes{v2.05}{2016/05/27}{neu}^^A
+% \begin{parameter}{after}
+% \changes{v2.05}{2016/05/27}{neu}^^A
+% \begin{parameter}{prefix}
+% \changes{v2.05}{2016/05/27}{neu}^^A
+% \begin{parameter}{suffix}
+% \changes{v2.05}{2016/05/27}{neu}^^A
+% \begin{parameter}{pre}
+% \changes{v2.05}{2016/05/27}{neu}^^A
+% \begin{parameter}{app}
+% \changes{v2.05}{2016/05/27}{neu}^^A
+% \begin{parameter}{place}
+% \changes{v2.05}{2016/05/27}{neu}^^A
+% \begin{macro}{\tud@date@set}
+% \changes{v2.05}{2016/05/27}{neu}^^A
+% \changes{v2.06}{2018/08/08}{optionales Argument nutzt \cs{tud@toks@}}^^A
+% \begin{field}{\@date}
+% \begin{field}{\@beforedate}
+% \changes{v2.05}{2016/05/27}{neu}^^A
+% \begin{field}{\@afterdate}
+% \changes{v2.05}{2016/05/27}{neu}^^A
+% Das Abgabedatum der Arbeit für den Titel, wird im originalen Makro \cs{@date}
+% gespeichert. Zusätzlich kann über die Parameter im optionalen Argument eine
+% Ergänzung davorgesetzt angehängt werden~-- beispielsweise als Erklärung für
+% eine verspätete Abgabe aufgrund einer Verlängerung der Bearbeitungszeit~--
+% welche in den Feldern \cs{@beforedate} und \cs{@afterdate} gespeichert
+% wird. Hierfür wird der originale Befehl für das Datum \cs{date} erweitert,
+% wobei die Sternversion \cs{date*} den angegebenen Ort als Präfix verwendet.
+% \begin{macrocode}
+\renewcommand*\date{%
+ \kernel@ifstar{%
+ \TUD@parameter@set{date}{pre=\noexpand\@place{,}}%
+ \tud@date@set%
+ }{\tud@date@set}%
+}
+\newcommand*\tud@date@set[2][]{%
+ \tud@toks@{#1}%
+ \TUD@parameter@set{date}{\the\tud@toks@}%
+ \tud@printdate{\@date}{#2}%
+ \global\let\tud@date@check\relax%
+}
+\newcommand*\@beforedate{}
+\newcommand*\@afterdate{}
+\TUD@parameter@family{date}{%
+ \TUD@parameter@def{before}{\def\@beforedate{#1}}%
+ \TUD@parameter@let{pre}{before}%
+ \TUD@parameter@let{prefix}{before}%
+ \TUD@parameter@def{after}{\def\@afterdate{#1}}%
+ \TUD@parameter@let{app}{after}%
+ \TUD@parameter@let{suffix}{after}%
+ \TUD@parameter@def{place}{\def\@place{#1}\def\@beforedate{#1,}}%
+ \TUD@parameter@handler@value{after}%
+}
+% \end{macrocode}
+% \end{field}^^A \@afterdate
+% \end{field}^^A \@beforedate
+% \end{field}^^A \@date
+% \end{macro}^^A \tud@date@set
+% \end{parameter}^^A place
+% \end{parameter}^^A app
+% \end{parameter}^^A pre
+% \end{parameter}^^A suffix
+% \end{parameter}^^A prefix
+% \end{parameter}^^A after
+% \end{parameter}^^A before
+% \end{macro}^^A \date
+% \begin{macro}{\tud@date@print}
+% \changes{v2.05}{2016/05/27}{neu}^^A
+% Mit diesem Makro erfolgt die eigentliche Ausgabe des Datums und ggf. der
+% optionalen Ergänzungen.
+% \begin{macrocode}
+\newcommand*\tud@date@print{%
+ \ifx\@date\@empty\else%
+ \ifx\@beforedate\@empty\else%
+ \expandafter\trim@spaces@noexp\expandafter{\@beforedate}\nobreakspace%
+ \fi%
+ \@date%
+ \ifx\@afterdate\@empty\else%
+ \nobreakspace\expandafter\trim@spaces@noexp\expandafter{\@afterdate}%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@date@print
+%
+% \iffalse
+%<*book|report|article>
+% \fi
+%
+% \begin{macro}{\defensedate}
+% \begin{field}{\@defensedate}
+% Das Verteidigungsdatum erscheint auf dem Titel und wird in \cs{@defensedate}
+% gespeichert.
+% \begin{macrocode}
+\newcommand*\@defensedate{}
+\newcommand*\defensedate[1]{\tud@printdate{\@defensedate}{#1}}
+% \end{macrocode}
+% \end{field}^^A \@defensedate
+% \end{macro}^^A \defensedate
+% \begin{macro}{\dateofbirth}
+% \begin{field}{\@dateofbirth}
+% Angabe des Geburtstages für die Titelseite, wird im Makro \cs{@dateofbirth}
+% gespeichert.
+% \begin{macrocode}
+\newcommand*\@dateofbirth{}
+\newrobustcmd*\dateofbirth[1]{%
+ \tud@printdate{\@dateofbirth}{#1}\ignorespaces%
+}
+% \end{macrocode}
+% \end{field}^^A \@dateofbirth
+% \end{macro}^^A \dateofbirth
+%
+% \iffalse
+%</book|report|article>
+%</class&!manual>
+%<*package&supervisor|class&manual>
+% \fi
+%
+% \subsection{%
+% Felder für die Klasse \cls{tudscrposter}%
+% und das Paket \pkg{tudscrsupervisor}%
+% }
+%
+% Die Klasse \cls{tudscrposter} und das Paket \pkg{tudscrsupervisor} stellen
+% einige weitere Felder bereit bzw. erweitern deren Funktionalitäten.
+%
+% \begin{macro}{\chairman}
+% \begin{field}{\@chairman}
+% Die Angabe des Prüfungsausschussvorsitzenden für die Aufgabenstellung, wird
+% im Makro \cs{@chairman} gespeichert.
+% \begin{macrocode}
+\newcommand*\@chairman{}
+\newcommand*\chairman[1]{\gdef\@chairman{#1}}
+% \end{macrocode}
+% \end{field}^^A \@chairman
+% \end{macro}^^A \chairman
+% \begin{macro}{\grade}
+% \begin{field}{\@grade}
+% \begin{field}{\@headline}
+% Die Befehle dienen zum Abspeichern der entsprechenden Parameter innerhalb
+% der neu definierten Umgebungen aus dem Paket \pkg{tudscrsupervisor}.
+% \begin{macrocode}
+\newcommand*\@grade{}
+\newcommand*\grade[1]{\gdef\@grade{#1}}
+\newcommand*\@headline{}
+% \end{macrocode}
+% \end{field}^^A \@headline
+% \end{field}^^A \@grade
+% \end{macro}^^A \grade
+% \begin{macro}{\issuedate}
+% \begin{field}{\@issuedate}
+% Angabe des Anfangsdatums für die Aufgabenstellung, wird im Makro
+% \cs{@issuedate} gespeichert.
+% \begin{macrocode}
+\newcommand*\@issuedate{}
+\newcommand*\issuedate[1]{\tud@printdate{\@issuedate}{#1}}
+% \end{macrocode}
+% \end{field}^^A \@issuedate
+% \end{macro}^^A \issuedate
+% \begin{macro}{\duedate}
+% \begin{field}{\@duedate}
+% Angabe des geplanten Abgabedatums für die Aufgabenstellung, wird im Makro
+% \cs{@duedate} gespeichert.
+% \begin{macrocode}
+\newcommand*\@duedate{}
+\newcommand*\duedate[1]{\tud@printdate{\@duedate}{#1}}
+% \end{macrocode}
+% \end{field}^^A \@duedate
+% \end{macro}^^A \duedate
+%
+% \iffalse
+%</package&supervisor|class&manual>
+%<*class&poster|package&supervisor|class&manual>
+% \fi
+%
+% Einige Befehle werden nur definiert, falls das Paket nicht mit der Klasse
+% \cls{tudscrposter} verwendet wird -- was allerdings nicht sinnvoll ist.
+% \begin{macrocode}
+%<*supervisor>
+\@ifclassloaded{tudscrposter}{\@tempswafalse}{\@tempswatrue}
+\if@tempswa
+%</supervisor>
+% \end{macrocode}
+% \begin{macro}{\contactperson}
+% \changes{v2.02}{2014/05/16}{neu, Makro \cs{contact} umbenannt}^^A
+% \begin{field}{\@contactperson}
+% \changes{v2.02}{2014/05/16}{neu, Makro \cs{@contact} umbenannt}^^A
+% \begin{macro}{\office}
+% \begin{field}{\@office}
+% \begin{macro}{\telephone}
+% \changes{v2.02}{2014/05/16}{neu, Umbenennung des Makros \cs{phone}}^^A
+% \begin{field}{\@telephone}
+% \changes{v2.02}{2014/05/16}{neu, Umbenennung des Makros \cs{@phone}}^^A
+% \begin{macro}{\telefax}
+% \changes{v2.05}{2016/04/05}{neu}^^A
+% \begin{field}{\@telefax}
+% \changes{v2.05}{2016/04/05}{neu}^^A
+% Für einen Aushang bzw. ein Poster kann eine oder mehrere Kontaktpersonen
+% angegeben werden. Zusätzlich lassen sich für jede einzelne Person ein Raum,
+% eine Telefonnummer und die E"~Mail-Adresse hinzugefügen.
+% \begin{macrocode}
+\newcommand*\@contactperson{}
+\newcommand*\contactperson[1]{\gdef\@contactperson{#1}}
+%<*poster>
+\let\supervisor\contactperson
+%</poster>
+\newcommand*\@office{}
+\newrobustcmd*\office[1]{\gdef\@office{#1}}
+\newcommand*\@telephone{}
+\newrobustcmd*\telephone[1]{\gdef\@telephone{#1}}
+\newcommand*\@telefax{}
+\newrobustcmd*\telefax[1]{\gdef\@telefax{#1}}
+% \end{macrocode}
+% \end{field}^^A \@telefax
+% \end{macro}^^A \telefax
+% \end{field}^^A \@telephone
+% \end{macro}^^A \telephone
+% \end{field}^^A \@office
+% \end{macro}^^A \office
+% \end{field}^^A \@contactperson
+% \end{macro}^^A \contactperson
+%
+% \iffalse
+%</class&poster|package&supervisor|class&manual>
+%<*!manual>
+%<*class>
+% \fi
+%
+% \subsection{Verarbeitung bestimmter Feldinhalte für die Ausgabe}
+%
+% Einige Felder sind darauf ausgelegt, dass deren kommagetrennte Inhalte
+% einzeln abgearbeitet und ausgewertet werden können. Die folgenden Makros
+% übernehmen diese Aufgabe.
+% \begin{macro}{\tud@multiple@split}
+% \begin{macro}{\tud@multiple@@split}
+% \begin{macro}{\tud@multiple@@@split}
+% Für Felder, die mehrere Personen~-- getrennt durch \cs{and}~-- beinhalten
+% können und für die zusätzliche Angaben durch die Verwendung weiterer Makros
+% innerhalb des Feldbefehlargumentes möglich sind, werden diese Befehle zum
+% Aufteilen der Angaben bereitgestellt. Mit diesen wird es möglich, die durch
+% \cs{and} getrennten Teile separat auszuwerten. Für diese Unterfangen wird der
+% Befehl \cs{tud@multiple@@split} definiert. Dessen obligatorisches Argument
+% ist dabei das Feld mit dem auszuwertenden Inhalt.
+%
+% Dafür müssen für jedes so auszuwertende Feld zum einen zum Zeitpunkt der
+% Ausgabe das entsprechende Makro \cs{tud@split\meta{Feld}} und zum anderen
+% eine Liste der auszuwertenden lokalen Angaben \cs{tud@split\meta{Feld}@list}
+% definiert sein. Momentan werden die beiden Felder \cs{@author} und~-- für die
+% Klasse \cls{tudscrposter} sowie das Paket Pakete \pkg{tudscrsupervisor}~--
+% \cs{@contactperson} zur Angabe zusätzlicher Informationen unterstützt.
+% \begin{macrocode}
+\newcommand*\tud@multiple@@split{}
+\newcommand*\tud@multiple@split[1]{%
+% \end{macrocode}
+% Sollte ein Feld verwendet werden, welches initial eine Fehlermeldung enthält,
+% so die vorhandene Warnung ausgegeben und danach das Feld als leer definiert.
+% \begin{macrocode}
+ \expandafter\ifpatchable\expandafter{\csname#1\endcsname}{%
+ \@latex@warning@no@line%
+ }{%
+ \csuse{#1}\csgdef{#1}{}%
+ }{}%
+% \end{macrocode}
+% Das Makro \cs{tud@multiple@@split} wird so definiert, dass der Befehl
+% \cs{and} als Separator für die einzelnen Argumente dient. Mit den beiden
+% freigestellten Argumenten kann das Makro zur eigentlichen Ausgabe aufgerufen
+% werden, welches aus dem obligatorischen Argument |#1| konstruiert wird
+% (\cs{tud@split\meta{Feld}}). An dieses wird der jeweils aktuelle Autor
+% im ersten Argument und die restlichen im zweiten Argument übergeben.
+% \begin{macrocode}
+ \def\tud@multiple@@split##1\and##2\relax{%
+ \expandafter\csname tud@split#1@do\endcsname{##1}{##2}%
+ }%
+ \begingroup%
+ \let\and\relax%
+ \let\newline\@empty%
+ \let\\\@empty%
+% \end{macrocode}
+% Das Feld wird mit \cs{and} terminiert, um der Definition von
+% \cs{tud@multiple@@split} in jedem Fall zu entsprechen.
+% \begin{macrocode}
+ \edef\@tempa{\csname#1\endcsname\and}%
+ \expandafter\endgroup%
+ \expandafter\tud@multiple@@split\@tempa\relax%
+}
+% \end{macrocode}
+% Der Befehl \cs{tud@multiple@@@split} prüft zum Schluss, ob noch weitere
+% Autoren angegeben sind. Sollte dies der Fall sein, so wird der Inhalt des
+% zweiten Argumentes ausgeführt und \cs{tud@multiple@@split} ein weiteres Mal
+% aufgerufen, um so sequentiell alle Autoren abzuarbeiten. Dafür muss
+% \cs{tud@multiple@@@split} innerhalb des verarbeitenden Makro
+% (\cs{tud@split\meta{Feld}}) aufgerufen werden.
+% \begin{macrocode}
+\newcommand*\tud@multiple@@@split[2]{%
+ \ifx\relax#1\relax%
+ \let\@tempb\relax%
+ \else%
+ \def\@tempb{#2\tud@multiple@@split#1\relax}%
+ \fi%
+ \@tempb%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@multiple@@@split
+% \end{macro}^^A \tud@multiple@@split
+% \end{macro}^^A \tud@multiple@split
+% \begin{macro}{\tud@multiple@fields@store}
+% \changes{v2.04}{2015/05/12}{neu}^^A
+% \begin{macro}{\tud@multiple@fields@restore}
+% \changes{v2.04}{2015/05/12}{neu}^^A
+% Mit \cs{tud@multiple@fields@store} und \cs{tud@multiple@fields@restore}
+% werden Hilfsmakros definiert, um einzelne Feldinhalte lokal ändern und nach
+% der Verarbeitung auf den ursprünglichen Wert zurücksetzen zu können.
+%
+% Nach der Sicherung der globalen Feldinhalte wird der übergebene Teilinhalt
+% des zweiten Argumentes mit \cs{sbox}\cs{z@}\marg{\#2} in eine Box expandiert.
+% Der Teilinhalt entspricht dabei dem aktuellen Teil des Feldes vor dem
+% nächsten \cs{and}. Damit werden die ggf. angegebenen lokalen Felder gesetzt,
+% welche in \cs{tud@split\meta{Feld}@list} aufgelistet sind ohne eine Ausgabe
+% zu erzeugen.
+% \begin{macrocode}
+\newcommand*\tud@multiple@fields@store[2]{%
+ \def\@tempa##1{\ifcsdef{@##1}{\tud@cs@store{@##1}}{}}%
+ \letcs\@tempb{tud@split#1@list}%
+ \let\and\relax%
+ \expandafter\forcsvlist\expandafter\@tempa\expandafter{\@tempb}%
+ \begingroup%
+ \let\thanks\@gobble%
+ \let\footnote\@gobble%
+ \sbox\z@{#2}%
+ \endgroup%
+}
+% \end{macrocode}
+% Nach dem Verarbeiten und der Ausgabe der lokalen Felder werden die zuvor
+% bestehenden Feldwerte zurückgesetzt.
+% \begin{macrocode}
+\newcommand*\tud@multiple@fields@restore[1]{%
+ \def\@tempa##1{%
+ \ifcsdef{@##1}{%
+ \tud@cs@restore{@##1}%
+ \global\csletcs{@##1}{@##1}%
+ }{}%
+ }%
+ \letcs\@tempb{tud@split#1@list}%
+ \let\and\relax%
+ \expandafter\forcsvlist\expandafter\@tempa\expandafter{\@tempb}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@multiple@fields@restore
+% \end{macro}^^A \tud@multiple@fields@store
+% \begin{macro}{\tud@multiple@fields@preset}
+% \changes{v2.04}{2015/05/12}{neu}^^A
+% Mit diesem Makro wird es möglich, die Inhalte bestimmter Felder aus einer
+% definierten Liste \cs{tud@split\meta{Feld}@list} auf Standardwerte zu setzen.
+% \begin{macrocode}
+\newcommand*\tud@multiple@fields@preset[3]{%
+ \def\@tempa##1{%
+ \edef\@tempc{\csuse{##1}}%
+ \ifstr{#2}{*}{%
+ \csdef{@##1}{}%
+ }{%
+ \begingroup%
+ \protected@expandtwoargs\in@{\@tempc}{\csuse{#1}}%
+ \ifin@%
+ \ifcsvoid{@##1}{\@tempc{#2}}{}%
+ \fi%
+ \endgroup%
+ }%
+ }%
+ \letcs\@tempb{tud@split#1@list}%
+ \let\and\relax%
+ \expandafter\forcsvlist\expandafter\@tempa\expandafter{\@tempb}%
+ \begingroup%
+ \let\thanks\@gobble%
+ \let\footnote\@gobble%
+ \sbox\z@{#3}%
+ \endgroup%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@multiple@fields@preset
+%
+% \iffalse
+%</class>
+% \fi
+%
+% Auf der Titelseite sowie für die Aufgabenstellung (\pkg{tudscrsupervisor})
+% und den Seitenfuß von Postern (\cls{tudscrposter}) wird die Angabe einer
+% kollaborativen Autorenschaft ermöglicht, wo für jeden einzelnen Autor weitere
+% Angaben (Matrikelnummer etc.) gemacht werden können. Hierfür werden die
+% folgenden Makros bereitgestellt.
+% \begin{macro}{\tud@split@author@do}
+% \changes{v2.02}{2014/07/25}{neu, aus Umbenennung \cs{tud@split@@author}}^^A
+% \begin{macro}{\tud@split@author@list}
+% \changes{v2.02}{2014/07/25}{neu, Umbenennung \cs{tud@split@@author@list}}^^A
+% \begin{macro}{\tud@split@contactperson@do}
+% \changes{v2.05}{2015/07/06}{neu}^^A
+% \begin{macro}{\tud@split@contactperson@list}
+% \changes{v2.05}{2015/07/06}{neu}^^A
+% Die beiden Makros \cs{tud@split@author@do} und \cs{tud@split@contactperson@do}
+% werden zunächst jeweils als Dummy initialisiert und an den entsprechenden
+% Stellen umdefiniert. Dies betrifft den Titel, die Aufgabenstellung und den
+% Aushang in den Umgebungen \env{task} und \env{notice} sowie den Seitenfuß bei
+% Postern. Im Makro \cs{tud@split@author@list} werden alle Felder hinterlegt,
+% die durch \cs{tud@multiple@fields@\dots} geprüft und ggf. initialisiert
+% werden sollen.
+%
+% Für die Angabe mehrerer Kontaktpersonen im Posterfuß (\cls{tudscrposter})
+% oder auf einem Aushang (\pkg{tudscrsupervisor}) wird äquivalent verfahren.
+% \begin{macrocode}
+%<*class>
+\newcommand*\tud@split@author@do[2]{}
+%<*book|report|article>
+\newcommand*\tud@split@author@list{%
+ authormore,course,discipline,emailaddress,%
+ matriculationyear,enrolmentyear,%
+ matriculationnumber,studentid,matriculationid,%
+ placeofbirth,birthplace,dateofbirth,birthday,%
+}
+%</book|report|article>
+% \end{macrocode}
+% Der Befehl \cs{tud@split@author@list} für die Klasse \cls{tudscrposter}.
+% \begin{macrocode}
+%<*poster>
+\newcommand*\tud@split@author@list{%
+ authormore,course,discipline,emailaddress,office,telephone,telefax%
+}
+%</poster>
+%</class>
+%<*class&poster|package&supervisor>
+\newcommand*\tud@split@contactperson@do[2]{}
+\newcommand*\tud@split@contactperson@list{emailaddress,office,telephone,telefax}
+%</class&poster|package&supervisor>
+% \end{macrocode}
+% Damit ist der Teil für das Paket \pkg{tudscrsupervisor} abgeschlossen, wo
+% bei der Verwendung von \cls{tudscrposter} die vorhergenden Befehle nicht
+% definiert werden, beendet.
+% \begin{macrocode}
+%<*package&supervisor>
+\fi
+%</package&supervisor>
+% \end{macrocode}
+% \end{macro}^^A \tud@split@contactperson@list
+% \end{macro}^^A \tud@split@contactperson@do
+% \end{macro}^^A \tud@split@author@list
+% \end{macro}^^A \tud@split@author@do
+%
+% \iffalse
+%</!manual>
+% \fi
+%
+% \Finale
+%
+\endinput
diff --git a/macros/latex/contrib/tudscr/source/tudscr-fonts.dtx b/macros/latex/contrib/tudscr/source/tudscr-fonts.dtx
new file mode 100644
index 0000000000..228304d9ee
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/tudscr-fonts.dtx
@@ -0,0 +1,4268 @@
+% \CheckSum{3123}
+% \iffalse meta-comment
+%
+% TUD-Script -- Corporate Design of Technische Universität Dresden
+% ----------------------------------------------------------------------------
+%
+% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2019
+%
+% ----------------------------------------------------------------------------
+%
+% This work may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License, version 1.3c of the license. The latest
+% version of this license is in http://www.latex-project.org/lppl.txt and
+% version 1.3c or later is part of all distributions of LaTeX 2005/12/01
+% or later and of this work. This work has the LPPL maintenance status
+% "author-maintained". The current maintainer and author of this work
+% is Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+% in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
+% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+% Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
+% oder später und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status
+% "author-maintained", wird somit allein durch den Autor verwaltet. Der
+% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: tudscr-fonts.dtx
+%<*dtx>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+% \fi
+%
+\ProvidesFile{tudscr-fonts.dtx}[2019/08/27 v2.06d TUD-Script\space%
+%
+% \iffalse
+%</dtx>
+%<package&identify>\ProvidesPackage{tudscrfonts}[%
+%<*package&identify>
+%!TUD@Version
+%</package&identify>
+%<package&identify> package
+%<*dtx|package&identify>
+% \fi
+ (corporate design fonts)%
+]
+% \iffalse
+%</dtx|package&identify>
+%<*dtx>
+\documentclass[english,ngerman,xindy]{tudscrdoc}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{tudscrfonts}
+\KOMAoptions{parskip=half-}
+\usepackage{bookmark}
+\usepackage[babel]{microtype}
+
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tudscr-fonts.dtx}
+\title{\file{\filename}}
+\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
+\date{\fileversion\nobreakspace(\filedate)}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.02}{2014/06/23}{Paket \pkg{titlepage} nicht weiter unterstützt}^^A
+% \changes{v2.02}{2014/07/08}{\cs{FamilyKeyState} wird von Optionen genutzt}^^A
+% \changes{v2.02}{2014/08/29}{Verwendung von \pkg{mweights} unnötig}^^A
+% \changes{v2.02}{2014/08/29}{Unterstützung für \pkg{fontspec}}^^A
+% \changes{v2.04}{2015/02/27}{Interaktion mit Paketen insbesondere für
+% den Mathematiksatz verbessert}^^A
+% \changes{v2.04c}{2015/11/29}{Bugfix für \pkg{fontspec} bei fehlenden
+% Schriften}^^A
+%
+% \section{Die Hausschrift der \TnUD}
+%
+% Für das \TUDCD wird die Schrift \OpenSans benötigt. Die Type1-Variante wird
+% mit diesen Klassen mitgeliefert, die OTF-Variante muss entweder durch das
+% Paket \pkg{opensans} oder über das System bereitgestellt werden. Hier werden
+% die Optionen und Befehle zur Verwendung der Schriften im Dokument definiert.
+%
+% Die Schriften des \CDs können nicht nur mit den \TUDScript-Klassen sondern
+% auch mit anderen \LaTeX-Dokumentklassen verwendet werden. Hierfür wird das
+% Paket \pkg{tudscrfonts} bereitgestellt. Damit kann auf die Installtion der
+% Schriftfamilien für die alten Klassen verzichtet werden. Im Vergleich zu
+% dieser Installation werden dabei fehlende Glyphen ergänzt und Probleme beim
+% Kerning behoben.
+%
+% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%
+% \iffalse
+%<*class&option>
+% \fi
+%
+% \subsection{%
+% Verwendung durch die \TUDScript-Klassen und das Paket \pkg{tudscrfonts}%
+% }
+%
+% Die Schriften des \TUDCDs werden standardmäßig durch die \TUDScript-Klassen
+% verwendet. Für Dokumentklassen, welche nicht zum \TUDScript-Bundle gehören,
+% können diese über das Paket \pkg{tudscrfonts} geladen werden.
+% \begin{macrocode}
+\PreventPackageFromLoading[%
+ \ClassWarning{\TUD@Class@Name}{%
+ The package `tudscrfonts' must not be used with\MessageBreak%
+ a TUD-Script class%
+ }%
+]{tudscrfonts}
+% \end{macrocode}
+%
+% \iffalse
+%</class&option>
+%<*package&identify>
+% \fi
+%
+% Sollte keine \KOMAScript-Klasse genutzt werden, wird zusätzlich das Paket
+% \pkg{scrextend} benötigt.
+% \begin{macrocode}
+\ifcsname KOMAClassName\endcsname\else
+ \RequirePackage{scrextend}[2013/12/19]
+\fi
+% \end{macrocode}
+% Wird das Paket \pkg{tudscrfonts} nach einer der Klassen verwendet, welche die
+% veralteten Schriftfamilien für \Univers und \DIN definieren, so wird eine
+% Warnung mit dem Hinweis auf das Paket \pkg{fix-tudscrfonts} ausgegeben.
+% \begin{macrocode}
+\@tempswafalse%
+\@for\@tempa:={%
+ tudbook,tudbeamer,tudfax,tudform,tudhaus,tudletter,tudposter,tudmathposter%
+}\do{%
+ \@ifclassloaded{\@tempa}{%
+ \if@tempswa\else\@tempswatrue\let\@tempb\@tempa\fi%
+ }{}%
+}%
+\if@tempswa%
+ \@ifpackageloaded{fix-tudscrfonts}{}{%
+ \PackageWarning{tudscrfonts}{%
+ As you loaded class `\@tempb', you should\MessageBreak%
+ load `fix-tudscrfonts' before the class\MessageBreak%
+ with `\string\RequirePackage'%
+ }%
+ }%
+\fi%
+% \end{macrocode}
+%
+% \iffalse
+%</package&identify>
+%<*body>
+% \fi
+%
+% \begin{macro}{\tud@cdfont@wrn}
+% \changes{v2.06}{2018/06/17}{neu}^^A
+% \begin{macro}{\tud@cdmath@wrn}
+% \changes{v2.06}{2019/06/17}{neu}^^A
+% Diese beiden Makros dienen als zentrale Hooks, die während der Initialiserung
+% der Schrfiten des \CDs befüllt werden, falls beispielsweise Warnungen wegen
+% fehlender Schriftdateien oder inkompatibler Pakete ausgegeben werden müssen.
+% Diese werden gegebebfalls nur einmalig bei der Aktivierung der Schriften des
+% \CDs ausgegeben.
+% \begin{macrocode}
+\newcommand*\tud@cdfont@wrn{\global\let\tud@cdfont@wrn\relax}
+\newcommand*\tud@cdmath@wrn{\global\let\tud@cdmath@wrn\relax}
+% \end{macrocode}
+% \end{macro}^^A \tud@cdmath@wrn
+% \end{macro}^^A \tud@cdfont@wrn
+%
+% \subsection{Auswahl des Fontformates}
+%
+% Das \TUDScript-Bundle unterstützt sowohl die Schriftauswahl im klassischen
+% New Font Selection Scheme (NFSS) als auch das Einbinden der Schriften im
+% OpenType-Format aus dem System über das Paket \pkg{fontspec} für Lua\LaTeX{}
+% bzw. Xe\LaTeX{}, wobei die letztere Variante nicht ideal ist. Zum einen
+% funktioniert das Kerning nicht sonderlich gut und zum anderen sind keine
+% Schriften für den mathematischen Satz vorhanden.
+%
+% \begin{macro}{\if@tud@x@fontspec@enabled}
+% \changes{v2.02}{2014/08/29}{neu}^^A
+% Wird das Paket \pkg{fontspec} durch den Nutzer geladen, wird der passende
+% Schlüssel gesetzt und die Schrifteinstellungen erfolgen mit den dazugehörigen
+% Befehlen. Dies wurde in früheren Versionen mit der Option \opt{fontspec}
+% realisiert, die auch weiterhin bereitgehalten wird. Nach dem Laden des Paketes
+% wird geprüft, ob diesem mit den entsprechenden Optionen das Bereitstellen der
+% Mathematikschriften überlassen wurde. In diesem Fall wird eine entsprechende
+% Warnung an \cs{tud@cdmath@wrn} angehängt.
+% \begin{macrocode}
+\newif\if@tud@x@fontspec@enabled
+\PassOptionsToPackage{no-math}{fontspec}
+\AfterPackage*{fontspec}{%
+ \@ifpackagelater{fontspec}{2017/01/24}{%
+ \@tud@x@fontspec@enabledtrue%
+ \@tud@res@swafalse%
+ \@ifpackagewith{fontspec}{no-math}{}{\@tud@res@swatrue}%
+ \@ifpackagewith{fontspec}{math}{\@tud@res@swatrue}{}%
+ \if@tud@res@swa%
+ \appto\tud@cdmath@wrn{%
+%<*class>
+ \ClassWarningNoLine{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageWarningNoLine{tudscrfonts}%
+%</package>
+ {%
+ It's recommended to load package `fontspec'\MessageBreak%
+ with option `no-math', if you want to use the\MessageBreak%
+ corporate design fonts in math mode%
+ }%
+ }%
+ \fi%
+ }{%
+ \@tud@x@fontspec@enabledfalse%
+%<*class>
+ \ClassWarningNoLine{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageWarningNoLine{tudscrfonts}%
+%</package>
+ {%
+ Version `2017/01/24' of package `fontspec' is needed,\MessageBreak%
+ but only version\MessageBreak%
+ `\csname ver@fontspec.sty\endcsname'\MessageBreak%
+ is available, so a fallback layout is used%
+ }%
+ }%
+}
+% \end{macrocode}
+% Bei der Nutzung des Pakets \pkg{unicode-math} kann es ebenfalls zu Problemen
+% mit den mathematischen Schriften kommen, weshalb auch hier eine Warnung an
+% \cs{tud@cdmath@wrn} angehängt wird.
+% \begin{macrocode}
+\AfterPackage*{unicode-math}{%
+ \appto\tud@cdmath@wrn{%
+%<*class>
+ \ClassWarningNoLine{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageWarningNoLine{tudscrfonts}%
+%</package>
+ {%
+ The usage of package `unicode-math' will\MessageBreak%
+ most likely cause erroneous outputs in math mode\MessageBreak%
+ with corporate design fonts%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@x@fontspec@enabled
+% \begin{macro}{\if@tud@x@mweights@enabled}
+% \changes{v2.04}{2015/04/24}{Erkennung des Paketes \pkg{mweights}}^^A
+% Das Paket \pkg{mweights} wird geladen, um unterschiedliche Schriftschnitte
+% für beispielsweise die TypeWriter-Schriften nutzen zu können.
+% \begin{macrocode}
+\TUD@RecommendPackage{mweights}[2017/03/30]%
+\newif\if@tud@x@mweights@enabled
+\AfterPackage*{mweights}{\@tud@x@mweights@enabledtrue}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@x@mweights@enabled
+%
+% \subsection{Prüfen der Schriftverfügbarkeit}
+%
+% Nachfolgend werden Makros definiert, mit denen geprüft werden kann, ob die
+% notwendigen Schriften im passenden Fontformat auch installiert sind. Seit
+% 2018 wird \OpenSans als die Hausschrift verwendet. Um weiterhin noch alte
+% Dokumente mit den Schriften \Univers und \DIN nutzen zu können, werden die
+% entsprechenden Befehle ebenfalls vorgehalten.
+%
+% \begin{macro}{\if@tud@cdfont@fam@exist}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\if@tud@cdfont@db@exist}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud@cdfont@fam}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud@cdfont@fam@lf}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud@cdfont@fam@osf}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud@cdfont@db}
+% Zu Beginn werden Schalter und Hilfsmakros sowohl für den Fließtext\dots
+% \begin{macrocode}
+\newif\if@tud@cdfont@fam@exist
+\newif\if@tud@cdfont@db@exist
+\newcommand*\tud@cdfont@fam{opensans-TLF}
+\newcommand*\tud@cdfont@fam@lf{opensans-TLF}
+\newcommand*\tud@cdfont@fam@osf{opensans-TOsF}
+\if@tud@cdoldfont@active
+ \renewcommand*\tud@cdfont@fam{lun}
+ \renewcommand*\tud@cdfont@fam@lf{lun}
+ \renewcommand*\tud@cdfont@fam@osf{lun}
+ \newcommand*\tud@cdfont@db{0m6}
+\fi
+% \end{macrocode}
+% \end{macro}^^A \tud@cdfont@db
+% \end{macro}^^A \tud@cdfont@fam@osf
+% \end{macro}^^A \tud@cdfont@fam@lf
+% \end{macro}^^A \tud@cdfont@fam
+% \end{macro}^^A \if@tud@cdfont@db@exist
+% \end{macro}^^A \if@tud@cdfont@fam@exist
+% \begin{macro}{\tud@ttfont@fam}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud@ttfont@rb}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud@ttfont@lm}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \dots als auch für die TypeWriter-Schriften definiert.
+% \begin{macrocode}
+\newcommand*\tud@ttfont@fam{tudtt}
+\newcommand*\tud@ttfont@rb{tudtt}
+\newcommand*\tud@ttfont@lm{lmtt}
+% \end{macrocode}
+% \end{macro}^^A \tud@ttfont@lm
+% \end{macro}^^A \tud@ttfont@rb
+% \end{macro}^^A \tud@ttfont@fam
+% \begin{macro}{\if@tud@ttfont@rb@exist}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% Die TypeWriter-Schrift aus \pkg{roboto-mono} kann nur genutzt werden, wenn
+% diese tatsächlich auch vorhanden ist.
+% \begin{macrocode}
+\newif\if@tud@ttfont@rb@exist
+\IfFileExists{roboto-mono.sty}{%
+ \@tud@ttfont@rb@existtrue%
+}{%
+ \TUD@key@preset{ttfont}{lmodern}%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@ttfont@rb@exist
+% \begin{macro}{\tud@cdfont@check}
+% \changes{v2.04}{2015/03/10}{neu}^^A
+% \begin{macro}{\tud@cdfont@@check}
+% \changes{v2.06}{2018/07/12}{Auswahl der Schriftfamilie angepasst}^^A
+% \changes{v2.06b}{2019/07/17}{Verwendung von \cs{tud@if@fdfileexists}}^^A
+% \begin{macro}{\tud@cdfont@@@check}
+% \changes{v2.06}{2019/06/18}{neu}^^A
+% \changes{v2.06b}{2019/07/17}{Verwendung von \cs{tud@if@fdfileexists}}^^A
+% \begin{macro}{\tud@cdfont@missing}
+% \changes{v2.05l}{2017/03/29}{neu}^^A
+% Mit \cs{tud@cdfont@check} wird geprüft, ob die Schrift \OpenSans respektive
+% die veralteten Schriften \Univers und \DIN im OTF-Format respektive im
+% Type1-Format vorhanden sind. Die Schriftschnitte der \OpenSans werden für
+% beide Formate vom Paket \pkg{opensans} geliefert, die veralteten Schriften
+% \Univers und \DIN müssen aus lizenrechtlichen Gründen installiert werden. Bei
+% Nichtvorhandensein der Schriften wird eine Warnung ausgegeben sowie eine
+% Rückfallebene definiert.
+% \begin{macrocode}
+\newcommand*\tud@cdfont@check{%
+ \if@tud@cdoldfont@active%
+ \tud@cdfont@@check{Univers}{%
+ Light,,Bold,Black,%
+ LightOblique,Oblique,BoldOblique,BlackOblique%
+ }{\tud@cdfont@fam@lf}{@tud@cdfont@fam@exist}%
+ \tud@cdfont@@check{DIN}{Bold}{\tud@cdfont@db}{@tud@cdfont@db@exist}%
+ \tud@cdfont@@@check{OT1,OML,OMS}{\tud@cdfont@fam@lf}%
+ \tud@cdfont@@@check{OT1,OML,OMS}{\tud@cdfont@db}%
+ \else%
+% \end{macrocode}
+% Die Version von \pkg{opensans} wird geprüft. Das Paket \pkg{iwona} wird
+% genutzt, um fehlende Glyphen und Symbole für die Mathematikschriften des \CDs
+% zu ergänzen.
+% \begin{macrocode}
+ \@ifpackageloaded{opensans}{%
+%<*class>
+ \ClassWarningNoLine{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageWarningNoLine{tudscrfonts}%
+%</package>
+ {%
+ You should not load package `opensans'\MessageBreak%
+ manually but just use option `cdfont=true'%
+ }%
+ }{}%
+ \if@tud@cdfont@active%
+ \TUD@CheckPackage{opensans}{2019/06/20}%
+ \TUD@CheckPackage{iwona}{2005/10/03}%
+ \fi%
+ \tud@cdfont@@check{OpenSans}{%
+ Light,Regular,SemiBold,Bold,ExtraBold,%
+ LightItalic,Italic,SemiBoldItalic,BoldItalic,ExtraBoldItalic%
+ }{\tud@cdfont@fam@lf,\tud@cdfont@fam@osf}{@tud@cdfont@fam@exist}%
+ \fi%
+}
+% \end{macrocode}
+% Dieses Makro prüft auf das Vorhandensein der Schriften für den Fließtext.
+% Im optionalen Argument wird das Trennzeichen zwischen dem Hauptnamen für die
+% OTF-Schriften aus dem ersten obligatorischen Argument und der Liste der
+% Bezeichnungen für die einzelnen Schriftschnitte im zweiten obligatorischen
+% Argument angegeben. Die darauffolgenden Argumente enthalten die zu prüfenden
+% Type1-Schriftfamilien und die Bezeichnung des zu setzenden Schalters.
+% \begin{macrocode}
+\newcommand*\tud@cdfont@@check[5][-]{%
+ \@tud@res@swatrue%
+ \def\tud@res@a##1{%
+ \@tud@res@swafalse%
+ \tud@cdfont@missing{##1}{\tud@cdfont@wrn}%
+ }%
+% \end{macrocode}
+% Für jede der OTF-Schriften wird eine Warnung ausgegeben, falls diese nicht
+% installiert ist. Um sicher zu gehen, dass das Layout komplett genutzt werden
+% kann, ist es hinreichend, wenn eine der benötigten Schriften nicht existiert,
+% um die Rückfallebene zu aktivieren.
+% \begin{macrocode}
+ \if@tud@x@fontspec@enabled%
+ \def\tud@res@b##1{\IfFontExistsTF{##1}{}{\tud@res@a{##1}}}%
+ \@for\tud@res@c:={#3}\do{%
+ \expandafter\IfArgIsEmpty\expandafter{\tud@res@c}%
+ {\tud@res@b{#2}}%
+ {\tud@res@b{#2#1\tud@res@c}}%
+ }%
+ \else%
+% \end{macrocode}
+% Ist \pkg{fontspec} nicht aktiv, wird auf die Type1-Schriften für den
+% Fließtext für die aktuelle Kodierung im gleichen Maße geprüft.
+% \begin{macrocode}
+ \def\tud@res@b##1##2{%
+% \end{macrocode}
+% Der Schalter \cs{if@tud@res@swa} wird \val{false} gesetzt, falls die Schrift
+% gefunden wurde. Der zu prüfenden Schriftname wird dabei in unterschiedlichen
+% Varianten getestet, da \cs{IfFileExists} auf unixoiden Betriebssystemen
+% case-sensitiv ist.
+% \begin{macrocode}
+ \tud@if@fdfileexists{##1}{##2}{}{%
+% \end{macrocode}
+% Existiert die Schrift nicht, wird die entsprechende Warnung ausgegeben.
+% \begin{macrocode}
+ \begingroup%
+ \edef\tud@res@a{%
+ \endgroup%
+ \noexpand\tud@res@a{##1##2.fd}%
+ }%
+ \tud@res@a%
+ }%
+ }%
+ \@for\tud@res@c:={#4}\do{\tud@res@b{\encodingdefault}{\tud@res@c}}%
+ \fi%
+% \end{macrocode}
+% Zuletzt wird der angegebene Schalter gesetzt.
+% \begin{macrocode}
+ \if@tud@res@swa%
+ \booltrue{#5}%
+ \else%
+ \boolfalse{#5}%
+ \fi%
+}
+% \end{macrocode}
+% Hiermit wird auf Type1-Schriften in den notwendigen Kodierungen für den
+% Mathematiksatz geprüft. Warnungen für fehlende Schriften werden dem Hook
+% \cs{tud@cdmath@wrn} hinzugefügt.
+% \begin{macrocode}
+\newcommand*\tud@cdfont@@@check[2]{%
+ \@tud@res@swatrue%
+ \def\tud@res@a##1##2{%
+ \@tud@res@swafalse%
+ \tud@cdfont@missing[##1]{##2}{\tud@cdmath@wrn}%
+ }%
+ \def\tud@res@b##1##2{%
+ \tud@if@fdfileexists{##1}{##2}{}{%
+ \begingroup%
+ \edef\tud@res@a{%
+ \endgroup%
+ \noexpand\tud@res@a{##1}{##1##2.fd}%
+ }%
+ \tud@res@a%
+ }%
+ }%
+ \@for\tud@res@c:={#1}\do{\tud@res@b{\tud@res@c}{#2}}%
+% \end{macrocode}
+% Wurde mindestens eine notwendige nicht gefunden, wird \opt{cdmath=false}
+% gesetzt. War diese zuvor aktiv, wird eine Warnung dazu ausgegeben.
+% \begin{macrocode}
+ \if@tud@res@swa\else%
+ \AtBeginDocument{%
+ \if@tud@cdmath@active%
+%<*class>
+ \ClassWarning{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageWarning{tudscrfonts}%
+%</package>
+ {%
+ Some math font encodings are missing. \MessageBreak%
+ The option `cdmath=false' is executed. You should\MessageBreak%
+ either use this option by yourself or install\MessageBreak%
+ all necessary fonts with a installation script\MessageBreak%
+ listed in the manual
+ }%
+ \fi%
+ \TUDoptions{cdmath=false}%
+ }%
+ \fi%
+}
+% \end{macrocode}
+% Das Makro für die Erstellung einer Warnung bei fehlenden Schriften. Diese
+% wird an den Hook im letzten Argument angehängt.
+% \begin{macrocode}
+\newcommand*\tud@cdfont@missing[3][\encodingdefault]{%
+ \begingroup%
+ \def\tud@res@a{%
+ `#2' font\MessageBreak%
+ not found for `#1' encoding. \MessageBreak%
+ }%
+ \if@tud@x@fontspec@enabled%
+ \ifstr{\encodingdefault}{#1}{%
+ \appto\tud@res@a{%
+ It seems, you haven't installed the required\MessageBreak%
+ OTF-font on your system. You should provide\MessageBreak%
+ the fonts manually to your OS\MessageBreak%
+ \if@tud@cdoldfont@active\else%
+ or install package `opensans'\MessageBreak%
+ \fi%
+ }%
+ }{}%
+ \else%
+ \if@tud@cdoldfont@active%
+ \def\tud@res@b{T1,OT1,OMS,OML}%
+ \else%
+ \def\tud@res@b{T1,OT1,T2A,T2B,T2C,X2,LGR}%
+ \fi%
+ \@tud@res@swafalse%
+ \@for\tud@res@c:=\tud@res@b\do{%
+ \ifstr{\tud@res@c}{#1}{\@tud@res@swatrue}{}%
+ }%
+% \end{macrocode}
+% Wird eine unterstützte Kodierung verwendet, müssen die Schriften installiert
+% werden.
+% \begin{macrocode}
+ \if@tud@res@swa%
+ \appto\tud@res@a{%
+ You should %
+ \if@tud@cdoldfont@active%
+ try to install the necessary fonts\MessageBreak%
+ with a installation script listed in the manual%
+ \else%
+ install package `opensans'%
+ \fi%
+ . \MessageBreak%
+ }%
+ \else%
+ \ifstr{\encodingdefault}{#1}{%
+ \ifstr{TU}{#1}{%
+ \appto\tud@res@a{%
+ You should either load package `fontspec'\MessageBreak%
+ or %
+ }%
+ }{%
+ \appto\tud@res@a{Please }%
+ }%
+ \appto\tud@res@a{%
+ choose a possible encoding with package\MessageBreak%
+ `fontenc' (\tud@res@b). \MessageBreak%
+ }%
+ }{}%
+ \fi%
+ \fi%
+ \appto\tud@res@a{A fallback layout is used}%
+ \edef\tud@res@c{%
+%<*class>
+ \etex@unexpanded{\ClassWarning{\TUD@Class@Name}}%
+%</class>
+%<*package>
+ \etex@unexpanded{\PackageWarning{tudscrfonts}}%
+%</package>
+ {\tud@res@a}
+ }%
+ \xappto#3{\expandonce\tud@res@c}%
+ \endgroup%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cdfont@missing
+% \end{macro}^^A \tud@cdfont@@@check
+% \end{macro}^^A \tud@cdfont@@check
+% \end{macro}^^A \tud@cdfont@check
+%
+% \subsection{Kompatibilität der Schriften}
+% \subsubsection{Majuskel-ß für Unicode-Prozessoren}
+%
+% Es wird für die Majuskelvariante der Glyphe \enquote*{ß} eine Rückfallebene
+% (Substitution mit \enquote*{SS}) definiert, da diese für Unicode-Engines
+% standardmäßig nicht bereitgestellt wird. Um diese zu erkennen, wird auf die
+% gleiche Methodik wie im Paket \pkg{newunicodechar} zurückgegriffen.
+% \begin{macrocode}
+\begingroup
+\catcode`\^=7
+\catcode30=12
+\catcode`\!=12
+\edef\tud@reserved{\@gobble^^^^0021}
+\expandafter\endgroup
+% \end{macrocode}
+% Wurde eine Unicode-Engine erkannt (|^^^^0021| wird als ein Token gelesen),
+% dann werden die Kodierungen für kleines und großes \enquote*{ß} dahingehend
+% angepasst, dass diese \enquote*{ss} bzw. \enquote*{SS} verwenden, wenn die
+% entsprechende Glyphe nicht vorhanden ist.
+% \begin{macrocode}
+\ifx\tud@reserved\@empty\relax
+ \RequirePackage{newunicodechar}[2012/11/12]%
+ \uccode"00DF="1E9E%
+ \lccode"1E9E="00DF%
+ \newunicodechar{^^^^00df}{\iffontchar\font"00DF \symbol{"00DF}\else ss\fi}%
+ \newunicodechar{^^^^1e9e}{\iffontchar\font"1E9E \symbol{"1E9E}\else SS\fi}%
+\fi
+% \end{macrocode}
+%
+% \subsubsection{Ausrichtung von Überschriften und das Paket \pkg{ragged2e}}
+%
+% \begin{macro}{\tud@raggedright}
+% \begin{macro}{\tud@RaggedRight}
+% Die Überschriften sollen laut \CD linksbündig und ohne Silbentrennung gesetzt
+% werden. Normalerweise ist das dies beim linksbündigen Satz bei \LaTeX{} der
+% Fall. Allerdings ist es mit dem Paket \pkg{ragged2e} möglich, das Verhalten
+% für den Flattersatz zu ändern und die Silbentrennung zu aktivieren. Mit der
+% Option \opt{newcommands} werden dabei die originalen Befehle überschrieben,
+% vorher jedoch in \cs{LaTeX\dots} gesichert. Diese Makros dienen dazu, die
+% Überschriften in jedem Fall~-- auch bei der Verwendung von \pkg{ragged2e} mit
+% der Option \opt{newcommands}~-- ohne Trennungen zu setzen.
+% \begin{macrocode}
+\newcommand*\tud@raggedright{\raggedright}
+\newcommand*\tud@RaggedRight{\raggedright}
+\AfterPackage*{ragged2e}{%
+ \ifundef{\LaTeXraggedright}{}{%
+ \renewcommand*\tud@raggedright{\LaTeXraggedright}%
+ }%
+ \renewcommand*\tud@RaggedRight{\RaggedRight}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@RaggedRight
+% \end{macro}^^A \tud@raggedright
+%
+% \subsubsection{Anpassungen für das Paket \pkg{siunitx}}
+%
+% \begin{macro}{\lseries}
+% \begin{macro}{\if@tud@x@siunitx@enabled}
+% \changes{v2.05m}{2017/05/29}{neu}
+% Das Paket \pkg{siunitx} nutzt den Befehl \cs{lseries} für den Fall, dass für
+% den Fließtext eine Schrift die Serie \val{l} verwendet. Dem wird hier
+% Rechnung getragen. Außerdem muss bei der Auswahl der Schriften evtl. auf das
+% Paket reagiert werden, weil es sich bei der Definition der Schriften für den
+% Mathematikmodus auf \cs{familydefault} bzw. \cs{rmfamily} verlässt.
+% \begin{macrocode}
+\newif\if@tud@x@siunitx@enabled
+\AfterPackage*{siunitx}{%
+ \@tud@x@siunitx@enabledtrue%
+ \providecommand*\lseries{\fontseries{l}\selectfont}%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@x@siunitx@enabled
+% \end{macro}^^A \lseries
+%
+% \subsubsection{Anpassungen für die Klasse \cls{beamer}}
+%
+% Die \cls{beamer}-Klasse lädt standardmäßig serifenlose Mathematikschriften.
+% Dies soll verhindert werden, damit die Auswahl über die Option \opt{cdmath}
+% erfolgen kann.
+% \begin{macrocode}
+%<*package>
+\AfterClass*{beamer}{\usefonttheme[onlymath]{serif}}
+%</package>
+% \end{macrocode}
+%
+% \subsubsection{Mathematikschriften in Verbindung mit dem Paket \pkg{bm}}
+%
+% \begin{macro}{\if@tud@x@bm@requested}
+% Das Paket \pkg{bm} stellt den Befehl \cs{bm} für fette und kursive Symbole im
+% Mathematiksatz bereit. Damit dies funktioniert, muss das Laden des Paketes
+% auf das Ende der Präambel verzögert werden, um zuvor alle Einstellungen für
+% die mathematischen Symbole vornehmen zu können.
+% \begin{macrocode}
+\newif\if@tud@x@bm@requested
+%<*package>
+\@ifpackageloaded{bm}{%
+ \PackageWarning{tudscrfonts}{%
+ Package `bm' must be loaded after `tudscrfonts'. \MessageBreak%
+ Otherwise the functionality can not be guaranteed%
+ }%
+}{%
+%</package>
+\PreventPackageFromLoading[\@tud@x@bm@requestedtrue]{bm}
+%<*package>
+}
+%</package>
+% \end{macrocode}
+% \end{macro}^^A \if@tud@x@bm@requested
+%
+% \iffalse
+%</body>
+%<*option>
+% \fi
+%
+% \subsection{Schriftauswahl und -optionen}
+%
+% Hier werden die Optionen und Befehle zur Schriftauswahl definiert.
+%
+% \subsubsection{Schriften für den Fließtext}
+% \begin{option}{cdfont}
+% \changes{v2.02}{2014/07/08}{Schlüsselwerte für \opt{cdhead}}^^A
+% \changes{v2.02}{2014/08/29}{Schlüsselwerte für \opt{fontspec}}^^A
+% \changes{v2.05}{2016/04/04}{Schlüsselwerte für \val{ultrabold}}^^A
+% \changes{v2.05l}{2017/03/29}{Standardeinstellungen für \opt{cdmath}}^^A
+% \begin{macro}{\if@tud@cdfont@active}
+% \changes{v2.06}{2018/06/26}{neu}^^A
+% \begin{macro}{\if@tud@cdfont@heavy}
+% \changes{v2.06}{2018/06/26}{neu}^^A
+% \begin{macro}{\if@tud@cdfont@ultrabold}
+% \changes{v2.05}{2016/04/04}{neu}^^A
+% \begin{macro}{\if@tud@cdfont@lining}
+% \changes{v2.06}{2018/07/10}{neu}^^A
+% \begin{macro}{\tud@cdfont@activate}
+% \changes{v2.06}{2018/07/02}{neu}^^A
+% \begin{macro}{\tud@cdfont@deactivate}
+% \changes{v2.06}{2018/07/24}{neu}^^A
+% Mit dieser Option wird die zentrale Benutzerschnittstelle für alle möglichen
+% Schrifteinstellungen innerhalb Dokumentes geschaffen. Durch diese Option
+% können sowohl die verwendete Schrift für den Fließtext, als auch die Stärke
+% der Schrift geändert werden. Zusätzlich lässt sich die Verwendung von
+% Minuskelziffern im Fließtext aktivieren. Außerdem kann eingestellt werden, ob
+% für den Mathematiksatz serifenlose Schriften zum Einsatz kommen sollen.
+% \ToDo{%
+% Option evtl. überarbeiten und nicht mehr im Dokument zulassen;
+% das macht alles um einiges einfacher, siehe \opt{cdoldfont}, \opt{cdmath}
+% }[v2.07]
+% \begin{macrocode}
+\newif\if@tud@cdfont@active
+\newif\if@tud@cdfont@heavy
+\newif\if@tud@cdfont@ultrabold
+\newif\if@tud@cdfont@lining
+\@tud@cdfont@liningtrue
+\TUD@key{cdfont}[true]{%
+ \TUD@set@numkey{cdfont}{@tempa}{%
+ \TUD@bool@numkey,%
+ {light}{1},{lightfont}{1},{lite}{1},{litefont}{1},{noheavyfont}{1},%
+ {heavy}{2},{heavyfont}{2},{bold}{2},{boldfont}{2},%
+ {normalbold}{3},{boldnormal}{3},%
+ {ultrabold}{4},{boldultra}{4},{heavybold}{4},{boldheavy}{4},%
+ {extendedbold}{4},{boldextended}{4},%
+ {lf}{5},{lfigures}{5},{liningfigures}{5},{lining}{5},%
+ {ln}{5},{lnumbers}{5},{liningnumbers}{5},%
+ {nf}{5},{nfigures}{5},{normalfigures}{5},%
+ {nn}{5},{nnumbers}{5},{normalnumbers}{5},%
+ {osf}{6},{osfigures}{6},{oldfigures}{6},{oldstylefigures}{6},{oldstyle}{6},%
+ {osn}{6},{osnumbers}{6},{oldnumbers}{6},{oldstylenumbers}{6},%
+ {nomath}{7},{nocdmath}{7},%
+ {serifmath}{7},{serif}{7},{nosansmath}{7},{nosans}{7},%
+ {math}{8},{cdmath}{8},{sansmath}{8},{sans}{8},%
+ {upgreek}{9},{uprightgreek}{9},{uprightgreeks}{9},%
+ {slgreek}{10},{slantedgreek}{10},{slantedgreeks}{10},%
+ {itgreek}{10},{italicgreek}{10},{italicgreeks}{10},%
+ {texgreek}{11},{latexgreek}{11},{texgreeks}{11},{latexgreeks}{11},%
+ {standardgreek}{11},{standardgreeks}{11},%
+ {fontspec}{12},{luatex}{12},{lualatex}{12}{xetex}{12},{xelatex}{12},%
+ {nofontspec}{13},{nfss}{13},{pdftex}{13},{pdflatex}{13}%
+%<*class>
+ ,{nohead}{14},{nocdhead}{14},{noheadfont}{14},{noheadcdfont}{14},%
+ {nocdheadfont}{14},{nobar}{14},{nobarfont}{14},%
+ {head}{15},{headfont}{15},{cdhead}{15},{headcdfont}{15},{cdheadfont}{15},%
+ {bar}{15},{barfont}{15},%
+ {lighthead}{15},{lightheadfont}{15},{lightfonthead}{15},%
+ {lightcdhead}{15},{lightheadcdfont}{15},{lightcdheadfont}{15},%
+ {lightbar}{15},{lightbarfont}{15},{lightfontbar}{15},%
+ {headlight}{15},{headfontlight}{15},{headlightfont}{15},%
+ {cdheadlight}{15},{headcdfontlight}{15},{cdheadfontlight}{15},%
+ {barlight}{15},{barfontlight}{15},{barlightfont}{15},%
+ {litehead}{15},{liteheadfont}{15},{litefonthead}{15},%
+ {litecdhead}{15},{liteheadcdfont}{15},{litecdheadfont}{15},%
+ {litebar}{15},{litebarfont}{15},{litefontbar}{15},%
+ {headlite}{15},{headfontlite}{15},{headlitefont}{15},%
+ {cdheadlite}{15},{headcdfontlite}{15},{cdheadfontlite}{15},%
+ {barlite}{15},{barfontlite}{15},{barlitefont}{15},%
+ {noheavyhead}{15},{noheavyheadfont}{15},{noheavyfonthead}{15},%
+ {noheavycdhead}{15},{noheavyheadcdfont}{15},{noheavycdheadfont}{15},%
+ {noheavybar}{15},{noheavybarfont}{15},{noheavyfontbar}{15},%
+ {headnoheavy}{15},{headfontnoheavy}{15},{headnoheavyfont}{15},%
+ {cdheadnoheavy}{15},{headcdfontnoheavy}{15},{cdheadfontnoheavy}{15},%
+ {barnoheavy}{15},{barfontnoheavy}{15},{barnoheavyfont}{15},%
+ {heavyhead}{16},{heavyheadfont}{16},{heavyfonthead}{16},%
+ {heavycdhead}{16},{heavyheadcdfont}{16},{heavycdheadfont}{16},%
+ {heavybar}{16},{heavybarfont}{16},{heavyfontbar}{16},%
+ {headheavy}{16},{headfontheavy}{16},{headheavyfont}{16},%
+ {cdheadheavy}{16},{headcdfontheavy}{16},{cdheadfontheavy}{16},%
+ {barheavy}{16},{barfontheavy}{16},{barheavyfont}{16}%
+%</class>
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+% \end{macrocode}
+% Die ersten drei Werte dienen zum Umschalten auf die Schriften des \CDs für
+% den Fließtext.
+% \begin{macrocode}
+ \ifcase\@tempa\relax% false
+ \tud@cdfont@deactivate%
+ \or% true
+ \@tud@cdfont@heavyfalse%
+ \tud@cdfont@activate%
+ \or% heavy
+ \@tud@cdfont@heavytrue%
+ \tud@cdfont@activate%
+% \end{macrocode}
+% Für die Definition der fetten Schriftstärke kommt je nach Einstellung ein
+% anderer Schriftschnitt zum Einsatz.
+% \begin{macrocode}
+ \or% normalbold
+ \@tud@cdfont@ultraboldfalse%
+ \tud@cdfont@activate%
+ \or% ultrabold
+ \@tud@cdfont@ultraboldtrue%
+ \tud@cdfont@activate%
+% \end{macrocode}
+% Hier wird die Art der Ziffern für den Fleißtext festgelegt.
+% \begin{macrocode}
+ \or% liningfigures
+ \@tud@cdfont@liningtrue%
+ \tud@cdfont@activate%
+ \or% oldstylefigures
+ \@tud@cdfont@liningfalse%
+ \tud@cdfont@activate%
+% \end{macrocode}
+% Die Mathematikschriften.
+% \begin{macrocode}
+ \or% nomath
+ \TUDoptions{cdmath=false}%
+ \or% math
+ \TUDoptions{cdmath=true}%
+% \end{macrocode}
+% Die Neigung der großen griechischen Buchstaben.
+% \begin{macrocode}
+ \or% uprightgreek
+ \TUDoptions{slantedgreek=false}%
+ \or% slantedgreek
+ \TUDoptions{slantedgreek=true}%
+ \or% standardgreek
+ \TUDoptions{slantedgreek=standard}%
+% \end{macrocode}
+% Die Verwendung von \pkg{fontspec}.
+% \begin{macrocode}
+ \or% fontspec
+ \TUDoptions{fontspec=true}%
+ \or% nofontspec
+ \TUDoptions{fontspec=false}%
+% \end{macrocode}
+% Die Schrift für den Querbalken.
+% \begin{macrocode}
+%<*class>
+ \or% nohead
+ \TUDoptions{cdhead=false}%
+ \or% head
+ \TUDoptions{cdhead=true}%
+ \or% heavyhead
+ \TUDoptions{cdhead=heavy}%
+%</class>
+ \fi%
+% \end{macrocode}
+% Wird kein gültiger Wert für die Option angegeben, so wird davon ausgegangen,
+% dass es sich bei diesem um die gewünschte Schriftgröße handelt.
+% \begin{macrocode}
+ \else%
+ \tud@lowerstring\tud@res@a{#1}%
+ \ifdimen{\tud@res@a}{%
+ \ifdim\tud@res@a>\z@\relax%
+ \TUDoptions{fontsize=#1}%
+ \tud@cdfont@activate%
+ \FamilyKeyStateProcessed%
+ \fi%
+ }{}%
+ \fi%
+}
+\newcommand*\tud@cdfont@activate{%
+ \@tud@cdfont@activetrue%
+% \end{macrocode}
+% Die Schrift im Querbalken wird bei den Klassen angepasst.
+% \begin{macrocode}
+%<*class>
+ \if@tud@cdfont@heavy%
+ \tud@locked@num@preset{tud@head@font@num}{2}%
+ \else%
+ \tud@locked@num@preset{tud@head@font@num}{1}%
+ \fi%
+%</class>
+ \TUD@SpecialOptionAtDocument{tud@font@set}%
+ \tud@locked@bool@preset{@tud@cdmath@active}{true}%
+ \TUD@SpecialOptionAtDocument{tud@math@set}%
+}
+\newcommand*\tud@cdfont@deactivate{%
+ \@tud@cdfont@activefalse%
+%<*class>
+ \tud@locked@num@preset{tud@head@font@num}{0}%
+%</class>
+ \TUD@SpecialOptionAtDocument{tud@font@set}%
+ \tud@locked@bool@preset{@tud@cdmath@active}{false}%
+ \TUD@SpecialOptionAtDocument{tud@math@set}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cdfont@deactivate
+% \end{macro}^^A \tud@cdfont@activate
+% \end{macro}^^A \if@tud@cdfont@lining
+% \end{macro}^^A \if@tud@cdfont@ultrabold
+% \end{macro}^^A \if@tud@cdfont@heavy
+% \end{macro}^^A \if@tud@cdfont@active
+% \end{option}^^A cdfont
+% \begin{option}{cdoldfont}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\if@tud@cdoldfont@active}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\if@tud@cdoldfont@nodin}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% Seit 2018 wird \OpenSans als Hausschrift im \TUDCD genutzt. Für die Nutzung
+% der vormals verwendeten Schriften \Univers und \DIN für ältere Dokumente wird
+% die Option \pkg{cdoldfont} bereitgestellt. Damit werden die Befehle zur
+% Schriftauswahl für die \TUDScript-Klassen oder das Paket \pkg{tudscrfonts}
+% entsprechend angepasst.
+% \begin{macrocode}
+\newif\if@tud@cdoldfont@active
+\newif\if@tud@cdoldfont@nodin
+\TUD@key{cdoldfont}[true]{%
+ \TUD@set@numkey{cdoldfont}{@tempa}{%
+ \TUD@bool@numkey,%
+ {din}{1},{dinbold}{1},%
+ {nodin}{2},{nodinbold}{2},%
+ {onlydin}{3},{onlydinbold}{3}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\@tempa\relax% false
+ \@tud@cdoldfont@activefalse%
+ \@tud@cdoldfont@nodintrue%
+% \end{macrocode}
+% Achtung, nicht verwirren lassen! Mit \opt{cdoldfonts=false} kann beim Laden
+% der Klasse die Verwendung der alten Schriften deaktiviert werden. Dabei wird
+% nicht beeinflusst, ob die Schriften des \CDs (\opt{cdfont=true/false}) denn
+% überhaupt zum Einsatz kommen. Nachdem die Klasse geladen wurde, wird jedoch
+% \opt{cdoldfonts} eingefroren, ist diese aktiv, kann sie ab diesem Zeitpunkt
+% nicht mehr deaktiviert werden. Dann kann mit \opt{cdoldfonts=false} quasi das
+% gleiche Verhalten wie mit \opt{cdfont=false} erzeugt werden.
+% \begin{macrocode}
+ \if@tud@cdoldfont@active%
+ \tud@cdfont@deactivate%
+ \fi%
+ \or% true/din
+ \@tud@cdoldfont@activetrue%
+ \@tud@cdoldfont@nodinfalse%
+ \tud@cdfont@activate%
+ \or% nodin
+ \@tud@cdoldfont@activetrue%
+ \@tud@cdoldfont@nodintrue%
+ \tud@cdfont@activate%
+ \or% onlydin
+ \@tud@cdoldfont@activetrue%
+ \@tud@cdoldfont@nodinfalse%
+ \tud@cdfont@deactivate%
+ \fi%
+ \else%
+ \@tud@cdoldfont@activetrue%
+ \TUDoptions{cdfont=#1}%
+ \fi%
+}
+%<*class>
+\AtEndOfClass%
+%</class>
+%<*package>
+\AtEndOfPackage%
+%</package>
+{%
+ \if@tud@cdoldfont@active%
+% \end{macrocode}
+% Der aktive Zustand der Option \opt{cdoldfont} wird \enquote{eingefroren}.
+% \begin{macrocode}
+ \let\@tud@cdoldfont@activefalse\@tud@cdoldfont@activetrue%
+% \end{macrocode}
+% Wenn die Option \opt{cdoldfont} beim Laden der Klasse aktiviert wurde, kann
+% sie auch im Dokument genutzt werden. Um möglichst einfach alte Dokumente mit
+% den alten Schriften setzen zu können, wird die Option \opt{cdfont} in diesem
+% Fall um die alten Werte erweitert.
+% \begin{macrocode}
+ \TUD@key[.comp]{cdfont}{%
+ \TUD@set@numkey{cdfont}{@tempa}{%
+ {din}{1},{dinbold}{1},%
+ {nodin}{2},{nodinbold}{2},%
+ {onlydin}{3},{onlydinbold}{3}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \TUDoptions{cdoldfont=#1}%
+ \fi%
+ }%
+% \end{macrocode}
+% Andernfalls wird \opt{cdoldfont} schlichtweg deaktiviert.
+% \begin{macrocode}
+ \else%
+ \TUD@key{cdoldfont}[]{%
+%<*class>
+ \ClassError{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageError{tudscrfonts}%
+%</package>
+ {Option `cdoldfont' not active}{%
+ Option `cdoldfont' must be activated while loading the\MessageBreak%
+%<*class>
+ class `\TUD@Class@Name'\space%
+%</class>
+%<*package>
+ package `tudscrfonts'\space%
+%</package>
+ but you have tried to set it up later.%
+ }%
+ \FamilyKeyStateProcessed%
+ }%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@cdoldfont@nodin
+% \end{macro}^^A \if@tud@cdoldfont@active
+% \end{option}^^A cdoldfont
+% \begin{option}{fontsize}
+% \changes{v2.04}{2015/04/24}{Option aus \KOMAScript{} erweitert}^^A
+% \begin{macro}{\if@tud@x@scr@fontsize@set}
+% \changes{v2.05}{2015/07/24}{neu}^^A
+% Die genutzte Grundschriftgröße kann mit der \KOMAScript-Option \opt{fontsize}
+% eingestellt werden. Um ein aktives Setzen der Schriftgröße zu erkennen, wird
+% für das Laden der \TUDScript-Klasse ein Schlüssel definiert, der den Wert an
+% \KOMAScript{} weiterreicht.
+% \begin{macrocode}
+\newif\if@tud@x@scr@fontsize@set
+\TUD@key{fontsize}{%
+ \TUD@set@dimenkey{fontsize}{\@tempa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+% \end{macrocode}
+% Für das Paket wird geprüft, ob die gerade abgearbeitete Option global als
+% Klassenoption angegeben wurde. Für den Fall, dass dies nicht so ist~-- die
+% Option also lokal dem Paket selbst übergeben wurde~--, wird eine Warnung mit
+% dem Hinweis auf das vorgeschlagene Vorgehen ausgegeben.
+% \begin{macrocode}
+%<*package>
+ \@expandtwoargs\in@{,\CurrentOption,}{,\@globaloptionslist,}%
+ \ifin@\else%
+ \edef\tud@res@a{%
+ \noexpand\PackageWarning{tudscrfonts}%
+ {%
+ The key `\CurrentOption' should only be\MessageBreak%
+ used as class option%
+ }%
+ }%
+ \expandafter\AtEndOfPackage\expandafter{\tud@res@a}%
+ \fi
+%</package>
+ \@tud@x@scr@fontsize@settrue%
+ \TUD@KOMAoptions{fontsize=#1}%
+ \fi%
+}
+%<*class>
+\AtEndOfClass%
+%</class>
+%<*package>
+\AtEndOfPackage%
+%</package>
+{%
+ \RelaxFamilyKey{TUD}{fontsize}%
+ \DefineFamilyMember{KOMA}%
+ \DefineFamilyKey{KOMA}{fontsize}{%
+ \@tud@x@scr@fontsize@settrue%
+%<*class>
+ \ClassWarning{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageWarning{tudscrfonts}%
+%</package>
+ {%
+ The key `fontsize=#1' should only be\MessageBreak%
+ used as class option%
+ }%
+ \TUD@SpecialOptionAtDocument{tud@font@set}%
+ \FamilyKeyStateProcessed%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@x@scr@fontsize@set
+% \end{option}^^A fontsize
+% \begin{option}{relspacing}
+% \changes{v2.05}{2015/12/17}{neu}^^A
+% \begin{macro}{\if@tud@relspacing}
+% \changes{v2.05}{2015/12/17}{neu}^^
+% Die Option \opt{relspacing} setzt einige Abstände und Längen in Abhängigkeit
+% der aktuellen Grundschriftgröße, wenn sie aktiviert wurde. Die verwendete
+% Grundschriftgröße kann mit der \KOMAScript-Option \opt{fontsize} eingestellt
+% werden. Die Definiton der Längen wird durch das Makro \cs{tud@font@skip@set}
+% vorgenommen.
+% \begin{macrocode}
+\newif\if@tud@relspacing
+\TUD@key{relspacing}[true]{%
+ \TUD@set@numkey{relspacing}{@tempa}{%
+ \TUD@bool@numkey,%
+ {absolute}{0},{classic}{0},{standard}{0},%
+ {relative}{1},{fontsize}{1},{font}{1},{size}{1}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\@tempa\relax% false
+ \@tud@relspacingfalse%
+ \or% true
+ \@tud@relspacingtrue%
+ \fi%
+ \TUD@SpecialOptionAtDocument{tud@font@skip@set}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@relspacing
+% \end{option}^^A relspacing
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+% \begin{macro}{\tud@x@fontspec@init}
+% \changes{v2.06}{2018/06/28}{neu}^^A
+% Dieses Makro wird bei der Initialisierun der Schriftfamilien aufgerufen,
+% falls \pkg{fontspec} aktiv ist. Das erste Argument enthält den NFSS-Namen
+% der Schriftfamilie, das zweite Argument spezifiziert die Schriften für die
+% jeweiligen Schriftschnitte.
+% \begin{macrocode}
+\newcommand*\tud@x@fontspec@init[2]{%
+% \end{macrocode}
+% Durch die Verwendung des optionalen Argumentes von \cs{defaultfontfeatures}
+% werden die gewünschten Features einem Schriftfamiliennamen zugewiesen. Diese
+% können anschließend einfach bspw. mit \cs{setsansfont}\marg{Name} genutzt
+% werden. Damit alle Änderungen lokal bleiben, werden die Argumente in einer
+% Gruppe expandiert.
+% \begin{macrocode}
+ \begingroup%
+ \edef\tud@res@a{%
+ \noexpand\defaultfontfeatures[#1]{%
+ NFSSFamily=#1,%
+ Ligatures=TeX,%
+ BoldFont={},%
+ ItalicFont={},%
+ BoldItalicFont={},%
+ SmallCapsFont={},%
+ #2%
+ }%
+ }%
+% \end{macrocode}
+% Damit die Schrift mit ihrem NFSS-Namen auf jeden Fall definiert ist, auch
+% wenn die Schriften des \CDs nicht aktiviert wurden, wird \cs{newfontfamily}
+% aufgerufen.
+% \begin{macrocode}
+ \edef\tud@res@b{%
+ \noexpand\newfontfamily%
+ \expandafter\noexpand\csname tud@x@fontspec@fam@#1\endcsname{#1}%
+ }%
+% \end{macrocode}
+% Die expandierten Argumente werden nach der Gruppe ausgeführt.
+% \begin{macrocode}
+ \edef\tud@res@c{%
+ \endgroup\expandonce\tud@res@a\expandonce\tud@res@b%
+ }%
+ \tud@res@c%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@x@fontspec@init
+% \begin{macro}{\tud@x@fontspec@set}
+% \changes{v2.06}{2018/08/31}{neu}^^A
+% Das Paket \pkg{fontspec} ermöglicht es leider nicht, mit \cs{newfontfamily}
+% bereits definierte Schriftfamilien für die Zuweisung mit \cs{setmainfont}
+% etc. zu nutzen. Deshalb wird folgendes Hilfsmakro definiert, welches diese
+% Aufgabe übernimmt.
+% \begin{macrocode}
+\newcommand*\tud@x@fontspec@set[2]{%
+ \begingroup%
+ \edef\tud@res@a{%
+ \expandafter\noexpand\csname tud@x@fontspec@fam@#2\endcsname%
+ }%
+ \edef\tud@res@a{%
+ \endgroup%
+ \noexpand\DeclareRobustCommand%
+ \expandafter\noexpand\csname #1family\endcsname{%
+ \expandafter\noexpand\csname tud@x@fontspec@fam@#2\endcsname%
+ }%
+ \def\expandafter\noexpand\csname #1default\endcsname{\tud@cdfont@fam}%
+ }%
+ \tud@res@a%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@x@fontspec@set
+% \begin{macro}{\tud@font@set}
+% \changes{v2.04}{2015/03/01}{Unterstützung für das Paket \pkg{mweights}}^^A
+% \begin{macro}{\bfseries@rm}
+% \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A
+% \begin{macro}{\mdseries@rm}
+% \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A
+% \begin{macro}{\bfseries@sf}
+% \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A
+% \begin{macro}{\mdseries@sf}
+% \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A
+% \begin{macro}{\bfseries@tt}
+% \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A
+% \begin{macro}{\mdseries@tt}
+% \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A
+% \begin{macro}{\rmdef@ult}
+% \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A
+% \begin{macro}{\sfdef@ult}
+% \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A
+% \begin{macro}{\ttdef@ult}
+% \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A
+% \begin{macro}{\bfdef@ult}
+% \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A
+% \begin{macro}{\mddef@ult}
+% \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A
+% Mit \cs{tud@font@set} werden entweder die normalen oder aber die Schriften
+% des \CDs aktiviert. Dabei werden die Pakete \pkg{fontspec} und \pkg{mweights}
+% beachtet.
+% \begin{macrocode}
+\newcommand*\tud@font@set{%
+% \end{macrocode}
+% Ist die Verwendung der Schriften des \CDs gewünscht, werden die Schnitte der
+% Standardschriften vorher vorher gesichert, um diese später vollständig
+% wiederherstellen zu können.
+% \begin{macrocode}
+ \if@tud@cdfont@active%
+ \tud@cs@store{rmdefault}%
+ \tud@cs@store{sfdefault}%
+ \tud@cs@store{ttdefault}%
+ \tud@cs@store{bfdefault}%
+ \tud@cs@store{mddefault}%
+ \tud@cs@store{updefault}%
+ \tud@cs@store{sldefault}%
+ \tud@cs@store{itdefault}%
+ \tud@cs@store{familydefault}%
+ \tud@cs@store{seriesdefault}%
+ \tud@cs@store{shapedefault}%
+ \if@tud@x@mweights@enabled%
+ \tud@cs@store{bfseries@rm}%
+ \tud@cs@store{mdseries@rm}%
+ \tud@cs@store{bfseries@sf}%
+ \tud@cs@store{mdseries@sf}%
+ \tud@cs@store{bfseries@tt}%
+ \tud@cs@store{mdseries@tt}%
+ \fi%
+% \end{macrocode}
+% Das Paket \pkg{fontspec} definiert u.\,U. die Familienauswahlbefehle um, so
+% dass diese ebenfalls gesichert werden.
+% \begin{macrocode}
+ \if@tud@x@fontspec@enabled%
+ \tud@cs@store{rmfamily}%
+ \tud@cs@store{sffamily}%
+ \tud@cs@store{ttfamily}%
+ \fi%
+% \end{macrocode}
+% Zunächst werden die Standardwerte für die Schriftfamilien gesetzt.
+% \begin{macrocode}
+ \renewcommand*\rmdefault{\sfdefault}%
+ \renewcommand*\updefault{n}%
+ \renewcommand*\itdefault{it}%
+ \renewcommand*\sldefault{sl}%
+ \renewcommand*\familydefault{\sfdefault}%
+ \renewcommand*\seriesdefault{\mddefault}%
+ \renewcommand*\shapedefault{\updefault}%
+% \end{macrocode}
+% Danach erfolgt die Definition der Schriften des \CDs.
+% \begin{macrocode}
+ \tud@cdfont@set%
+ \tud@ttfont@set%
+ \if@tud@x@mweights@enabled%
+ \edef\bfseries@rm{\tud@cdfont@bf}%
+ \edef\mdseries@rm{\tud@cdfont@md}%
+ \edef\bfseries@sf{\tud@cdfont@bf}%
+ \edef\mdseries@sf{\tud@cdfont@md}%
+ \edef\bfseries@tt{\tud@ttfont@bf}%
+ \edef\mdseries@tt{\tud@ttfont@md}%
+ \fi%
+ \let\bfdefault\tud@cdfont@bf%
+ \let\mddefault\tud@cdfont@md%
+% \end{macrocode}
+% Werden die Schriften des \CDs deaktiviert, wird auf die zu Dokumentbeginn
+% gesicherten Schriften\footnote{mit und ohne Serifen} zurückgeschaltet.
+% \begin{macrocode}
+ \else%
+ \tud@cs@restore{rmdefault}%
+ \tud@cs@restore{sfdefault}%
+ \tud@cs@restore{ttdefault}%
+ \tud@cs@restore{bfdefault}%
+ \tud@cs@restore{mddefault}%
+ \tud@cs@restore{updefault}%
+ \tud@cs@restore{sldefault}%
+ \tud@cs@restore{itdefault}%
+ \tud@cs@restore{familydefault}%
+ \tud@cs@restore{seriesdefault}%
+ \tud@cs@restore{shapedefault}%
+ \if@tud@x@mweights@enabled%
+ \tud@cs@restore{bfseries@rm}%
+ \tud@cs@restore{mdseries@rm}%
+ \tud@cs@restore{bfseries@sf}%
+ \tud@cs@restore{mdseries@sf}%
+ \tud@cs@restore{bfseries@tt}%
+ \tud@cs@restore{mdseries@tt}%
+ \fi%
+ \if@tud@x@fontspec@enabled%
+ \tud@cs@restore{rmfamily}%
+ \tud@cs@restore{sffamily}%
+ \tud@cs@restore{ttfamily}%
+ \fi%
+ \fi%
+ \if@tud@x@mweights@enabled%
+ \edef\rmdef@ult{\rmdefault}%
+ \edef\sfdef@ult{\sfdefault}%
+ \edef\ttdef@ult{\ttdefault}%
+ \edef\bfdef@ult{\bfdefault}%
+ \edef\mddef@ult{\mddefault}%
+ \edef\famdef@ult{\familydefault}%
+ \fi%
+% \end{macrocode}
+% Zum Ende werden einige Abstände abhängig von der gewählten Schriftgröße
+% definiert. Danach wird gewählte Standardschrift aktiviert und für die Klassen
+% das Layout erneuert.
+% \begin{macrocode}
+ \tud@font@skip@set%
+ \normalfont\selectfont%
+%<*class>
+ \tud@cd@process%
+ \global\@tud@head@font@settrue%
+%</class>
+}
+% \end{macrocode}
+% \end{macro}^^A \mddef@ult
+% \end{macro}^^A \bfdef@ult
+% \end{macro}^^A \ttdef@ult
+% \end{macro}^^A \sfdef@ult
+% \end{macro}^^A \rmdef@ult
+% \end{macro}^^A \mdseries@tt
+% \end{macro}^^A \bfseries@tt
+% \end{macro}^^A \mdseries@sf
+% \end{macro}^^A \bfseries@sf
+% \end{macro}^^A \mdseries@rm
+% \end{macro}^^A \bfseries@rm
+% \end{macro}^^A \tud@font@set
+% \begin{macro}{\tud@cdfont@set}
+% \changes{v2.06}{2018/06/28}{neu}^^A
+% \begin{macro}{\tud@cdfont@@set}
+% \changes{v2.06}{2018/06/28}{neu}^^A
+% \begin{macro}{\tud@cdfont@md}
+% \changes{v2.06}{2018/06/28}{neu}^^A
+% \begin{macro}{\tud@cdfont@bf}
+% \changes{v2.06}{2018/06/28}{neu}^^A
+% \begin{macro}{\tud@cdfont@ebf}
+% \changes{v2.06}{2018/06/28}{neu}^^A
+% Hiermit erfolgt die eigentliche Auswahl der Schriftfamilien für das \CD.
+% \begin{macrocode}
+\newcommand*\tud@cdfont@set{%
+ \if@tud@cdfont@fam@exist%
+ \if@tud@cdfont@lining%
+ \let\tud@cdfont@fam\tud@cdfont@fam@lf%
+ \else%
+ \let\tud@cdfont@fam\tud@cdfont@fam@osf%
+ \fi%
+% \end{macrocode}
+% Das Aktivieren der Schriften erfolgt entweder mit dem Paket \pkg{fontspec}
+% oder\dots
+% \begin{macrocode}
+ \if@tud@x@fontspec@enabled%
+ \tud@x@fontspec@set{sf}{\tud@cdfont@fam}%
+% \end{macrocode}
+% \dots nach dem NFSS.
+% \begin{macrocode}
+ \else%
+ \renewcommand*\sfdefault{\tud@cdfont@fam}%
+ \fi%
+ \tud@cdfont@@set%
+ \fi%
+% \end{macrocode}
+% Sollte versucht werden, die Schriften zu aktivieren, obwohl diese nicht
+% installiert sind, werden die entsprechenden Warnungen ausgegeben.
+% \begin{macrocode}
+ \tud@cdfont@wrn%
+}
+\newcommand*\tud@cdfont@md{m}
+\newcommand*\tud@cdfont@bf{b}
+\newcommand*\tud@cdfont@ebf{bx}
+\newcommand*\tud@cdfont@@set{%
+ \if@tud@cdfont@heavy%
+ \renewcommand*\tud@cdfont@md{m}%
+ \if@tud@cdfont@ultrabold%
+ \renewcommand*\tud@cdfont@bf{b}%
+ \renewcommand*\tud@cdfont@ebf{eb}%
+ \else%
+ \renewcommand*\tud@cdfont@bf{sb}%
+ \renewcommand*\tud@cdfont@ebf{b}%
+ \fi%
+ \else%
+ \renewcommand*\tud@cdfont@md{l}%
+ \if@tud@cdfont@ultrabold%
+ \renewcommand*\tud@cdfont@bf{sb}%
+ \renewcommand*\tud@cdfont@ebf{b}%
+ \else%
+ \renewcommand*\tud@cdfont@bf{m}%
+ \renewcommand*\tud@cdfont@ebf{sb}%
+ \fi%
+ \fi%
+}
+\if@tud@cdoldfont@active
+ \renewcommand*\tud@cdfont@@set{%
+ \if@tud@cdfont@heavy%
+ \renewcommand*\tud@cdfont@md{m}%
+ \if@tud@cdfont@ultrabold%
+ \renewcommand*\tud@cdfont@bf{eb}%
+ \renewcommand*\tud@cdfont@ebf{eb}%
+ \else%
+ \renewcommand*\tud@cdfont@bf{b}%
+ \renewcommand*\tud@cdfont@ebf{eb}%
+ \fi%
+ \else%
+ \renewcommand*\tud@cdfont@md{l}%
+ \if@tud@cdfont@ultrabold%
+ \renewcommand*\tud@cdfont@bf{b}%
+ \renewcommand*\tud@cdfont@ebf{eb}%
+ \else%
+ \renewcommand*\tud@cdfont@bf{m}%
+ \renewcommand*\tud@cdfont@ebf{b}%
+ \fi%
+ \fi%
+ }%
+\fi
+% \end{macrocode}
+% \end{macro}^^A \tud@cdfont@ebf
+% \end{macro}^^A \tud@cdfont@bf
+% \end{macro}^^A \tud@cdfont@md
+% \end{macro}^^A \tud@cdfont@@set
+% \end{macro}^^A \tud@cdfont@set
+% \begin{macro}{\tud@font@skip@set}
+% \changes{v2.04}{2015/02/17}{neu}^^A
+% \begin{macro}{\tud@font@skip@@set}
+% \changes{v2.04}{2015/03/27}{neu}^^A
+% \begin{macro}{\smallskipamount}
+% \changes{v2.04}{2015/04/24}{Wert abhängig von der Schriftgröße}^^A
+% \begin{macro}{\medskipamount}
+% \changes{v2.04}{2015/04/24}{Wert abhängig von der Schriftgröße}^^A
+% \begin{macro}{\bigskipamount}
+% \changes{v2.04}{2015/04/24}{Wert abhängig von der Schriftgröße}^^A
+% \begin{macro}{\abovecaptionskip}
+% \changes{v2.04}{2015/04/24}{Wert abhängig von der Schriftgröße}^^A
+% \begin{macro}{\belowcaptionskip}
+% \begin{macro}{\columnsep}
+% \changes{v2.04}{2015/04/24}{Wert abhängig von der Schriftgröße}^^A
+% Mit diesem Befehl wird nach der Auswahl der Schriftgröße die Länge einiger
+% Abstände angepasst, die bei den \KOMAScript-Klassen nicht abhängig von dieser
+% sind.
+% \begin{macrocode}
+\newcommand*\tud@font@skip@set{%
+% \end{macrocode}
+% Es werden die Standardeinstellungen abhängig von \opt{cdfont} entweder
+% wiederhergestellt oder gesichert und neu definiert.
+% \begin{macrocode}
+ \if@tud@relspacing%
+ \tud@skip@store{smallskipamount}%
+ \tud@skip@store{medskipamount}%
+ \tud@skip@store{bigskipamount}%
+ \tud@skip@store{abovecaptionskip}%
+ \tud@skip@store{belowcaptionskip}%
+ \tud@skip@store{columnsep}%
+ \tud@font@skip@@set%
+ \else%
+ \tud@skip@restore{smallskipamount}%
+ \tud@skip@restore{medskipamount}%
+ \tud@skip@restore{bigskipamount}%
+ \tud@skip@restore{abovecaptionskip}%
+ \tud@skip@restore{belowcaptionskip}%
+ \tud@skip@restore{columnsep}%
+ \fi%
+}
+% \end{macrocode}
+% Hiermit erfolgt das eigentliche Setzen der Abstände.
+% \begin{macrocode}
+\newcommand*\tud@font@skip@@set{%
+ \smallskipamount=\partopsep%
+ \medskipamount=\partopsep%
+ \multiply\medskipamount by 2%
+ \bigskipamount=\partopsep%
+ \multiply\bigskipamount by 4%
+ \tud@skip@set{abovecaptionskip}{\dimexpr\bigskipamount*5/6\relax}%
+ \tud@skip@set{belowcaptionskip}{\z@}%
+ \tud@skip@set{columnsep}{1.1\baselineskip}%
+}
+% \end{macrocode}
+% \end{macro}^^A \columnsep
+% \end{macro}^^A \belowcaptionskip
+% \end{macro}^^A \abovecaptionskip
+% \end{macro}^^A \bigskipamount
+% \end{macro}^^A \medskipamount
+% \end{macro}^^A \smallskipamount
+% \end{macro}^^A \tud@font@skip@@set
+% \end{macro}^^A \tud@font@skip@set
+% \begin{macro}{\tud@cdfont@init}
+% \changes{v2.04}{2015/03/10}{neu}^^A
+% \begin{macro}{\cdfontln}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\cdfontrn}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\cdfontsn}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\cdfontbn}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\cdfontxn}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\cdfontli}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\cdfontri}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\cdfontsi}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\cdfontbi}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\cdfontxi}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\textcdln}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\textcdrn}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\textcdsn}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\textcdbn}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\textcdxn}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\textcdli}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\textcdri}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\textcdsi}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\textcdbi}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\textcdxs}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% Das Makro \cs{tud@cdfont@init} wird für die Defintion aller Befehle zur
+% Auswahl der Schriften des \CDs verwendet.
+% \begin{macrocode}
+\newcommand*\tud@cdfont@init{%
+% \end{macrocode}
+% Zur Nutztung der OTF"~Schriften werden mit \cs{tud@x@fontspec@init} alle
+% benötigten Schriftfamilien mit ihren einzelnen Schriftschnitten definiert.
+% \begin{macrocode}
+ \if@tud@cdfont@fam@exist%
+ \if@tud@x@fontspec@enabled%
+ \def\tud@res@a{%
+ UprightFont={OpenSans-Regular},%
+ FontFace={l}{n}{OpenSans-Light},%
+ FontFace={m}{n}{OpenSans-Regular},%
+ FontFace={sb}{n}{OpenSans-SemiBold},%
+ FontFace={b}{n}{OpenSans-Bold},%
+ FontFace={bx}{n}{OpenSans-Bold},%
+ FontFace={eb}{n}{OpenSans-ExtraBold},%
+ FontFace={l}{it}{OpenSans-LightItalic},%
+ FontFace={m}{it}{OpenSans-Italic},%
+ FontFace={sb}{it}{OpenSans-SemiBoldItalic},%
+ FontFace={b}{it}{OpenSans-BoldItalic},%
+ FontFace={bx}{it}{OpenSans-BoldItalic},%
+ FontFace={eb}{it}{OpenSans-ExtraBoldItalic}%
+ }%
+ \tud@x@fontspec@init{\tud@cdfont@fam@osf}{Numbers=OldStyle,\tud@res@a}%
+ \tud@x@fontspec@init{\tud@cdfont@fam@lf}{\tud@res@a}%
+% \end{macrocode}
+% Da einige Befehle mit \cs{DeclareTextSymbolDefault} für den Textmodus
+% definiert werden und dabei lediglich die Kodierung auf \val{OMS} oder
+% \val{OML} jedoch nicht den Namen der Schriftfamilie anpassen, werden hierfür
+% Aliasbefehle definiert, welche sich der Schriften des Paketes \pkg{iwona}
+% bedienen.
+% \begin{macrocode}
+ \else%
+ \IfFileExists{omliwona.fd}{%
+ \input{omliwona.fd}%
+ \@for\tud@res@a:={l,m,sb,b,eb}\do{%
+ \csletcs{OML/\tud@cdfont@fam@lf/\tud@res@a/it}%
+ {OML/iwona/\tud@res@a/it}%
+ \csletcs{OML/\tud@cdfont@fam@osf/\tud@res@a/it}%
+ {OML/iwona/\tud@res@a/it}%
+ }%
+ }{}%
+ \IfFileExists{omsiwona.fd}{%
+ \input{omsiwona.fd}%
+ \@for\tud@res@a:={l,m,sb,b,eb}\do{%
+ \csletcs{OMS/\tud@cdfont@fam@lf/\tud@res@a/n}%
+ {OMS/iwona/\tud@res@a/n}%
+ \csletcs{OMS/\tud@cdfont@fam@osf/\tud@res@a/n}%
+ {OMS/iwona/\tud@res@a/n}%
+ }%
+ }{}%
+ \AtBeginDocument{%
+ \ifcsundef{textrightarrow}{}{%
+ \tud@cs@store{textrightarrow}%
+ \renewrobustcmd*{\textrightarrow}{%
+ \begingroup%
+ \if@tud@cdfont@active\fontfamily{iwona}\selectfont\fi%
+ \tud@cs@use{textrightarrow}%
+ \endgroup%
+ }%
+ }%
+ }%
+ \fi%
+% \end{macrocode}
+% Es werden mehrere Schalter zur expliziten Auswahl für die Schriftschnitte
+% \textcdln{Open~Sans~Light}, \textcdrn{Open~Sans~Regular},
+% \textcdsn{Open~Sans~SemiBold}, \textcdbn{Open~Sans~Bold} und
+% \textcdxn{Open~Sans~ExtraBold} sowie \textcdli{Open~Sans~Light~Italic},
+% \textcdri{Open~Sans~Regular~Italic}, \textcdsi{Open~Sans~SemiBold}
+% \textcdbi{Open~Sans~Bold~Italic} und \textcdxi{Open~Sans~ExtraBold~Italic}
+% definiert. Diese können so im Dokument unabhängig von der Option
+% \opt{cdfont} genutzt werden.
+% \begin{macrocode}
+ \newrobustcmd*\cdfontln{\usefont{\encodingdefault}{\tud@cdfont@fam}{l}{n}}
+ \newrobustcmd*\cdfontrn{\usefont{\encodingdefault}{\tud@cdfont@fam}{m}{n}}
+ \newrobustcmd*\cdfontsn{\usefont{\encodingdefault}{\tud@cdfont@fam}{sb}{n}}
+ \newrobustcmd*\cdfontbn{\usefont{\encodingdefault}{\tud@cdfont@fam}{b}{n}}
+ \newrobustcmd*\cdfontxn{\usefont{\encodingdefault}{\tud@cdfont@fam}{eb}{n}}
+ \newrobustcmd*\cdfontli{\usefont{\encodingdefault}{\tud@cdfont@fam}{l}{it}}
+ \newrobustcmd*\cdfontri{\usefont{\encodingdefault}{\tud@cdfont@fam}{m}{it}}
+ \newrobustcmd*\cdfontsi{\usefont{\encodingdefault}{\tud@cdfont@fam}{sb}{it}}
+ \newrobustcmd*\cdfontbi{\usefont{\encodingdefault}{\tud@cdfont@fam}{b}{it}}
+ \newrobustcmd*\cdfontxi{\usefont{\encodingdefault}{\tud@cdfont@fam}{eb}{it}}
+% \end{macrocode}
+% Sind die notwendigen Schriften nicht installiert, werden die Schalter für die
+% Rückfallebene so definiert, dass diese eine Warnung ausgeben.
+% \begin{macrocode}
+ \else%
+ \tud@cdfont@fallback\cdfontln{OpenSans-Light}{md}{up}
+ \tud@cdfont@fallback\cdfontrn{OpenSans-Regular}{md}{up}
+ \tud@cdfont@fallback\cdfontsn{OpenSans-SemiBold}{md}{up}
+ \tud@cdfont@fallback\cdfontbn{OpenSans-Bold}{bf}{up}
+ \tud@cdfont@fallback\cdfontxn{OpenSans-ExtraBold}{bf}{up}
+ \tud@cdfont@fallback\cdfontli{OpenSans-LightItalic}{md}{it}
+ \tud@cdfont@fallback\cdfontri{OpenSans-Italic}{md}{it}
+ \tud@cdfont@fallback\cdfontsi{OpenSans-SemiBoldItalic}{md}{it}
+ \tud@cdfont@fallback\cdfontbi{OpenSans-BoldItalic}{bf}{it}
+ \tud@cdfont@fallback\cdfontxi{OpenSans-ExtraBoldItalic}{bf}{it}
+ \fi%
+% \end{macrocode}
+% Außerdem werden für die Schriften noch die entsprechenden Textauswahlbefehle
+% bereitgestellt.
+% \begin{macrocode}
+ \newcommand*\textcdln{}%
+ \newcommand*\textcdrn{}%
+ \newcommand*\textcdsn{}%
+ \newcommand*\textcdbn{}%
+ \newcommand*\textcdxn{}%
+ \newcommand*\textcdli{}%
+ \newcommand*\textcdri{}%
+ \newcommand*\textcdsi{}%
+ \newcommand*\textcdbi{}%
+ \newcommand*\textcdxi{}%
+ \DeclareTextFontCommand\textcdln{\cdfontln}%
+ \DeclareTextFontCommand\textcdrn{\cdfontrn}%
+ \DeclareTextFontCommand\textcdsn{\cdfontsn}%
+ \DeclareTextFontCommand\textcdbn{\cdfontbn}%
+ \DeclareTextFontCommand\textcdxn{\cdfontxn}%
+ \DeclareTextFontCommand\textcdli{\cdfontli}%
+ \DeclareTextFontCommand\textcdri{\cdfontri}%
+ \DeclareTextFontCommand\textcdsi{\cdfontsi}%
+ \DeclareTextFontCommand\textcdbi{\cdfontbi}%
+ \DeclareTextFontCommand\textcdxi{\cdfontxi}%
+}
+% \end{macrocode}
+% \end{macro}^^A \textcdxi
+% \end{macro}^^A \textcdbi
+% \end{macro}^^A \textcdsi
+% \end{macro}^^A \textcdri
+% \end{macro}^^A \textcdli
+% \end{macro}^^A \textcdxn
+% \end{macro}^^A \textcdbn
+% \end{macro}^^A \textcdsn
+% \end{macro}^^A \textcdrn
+% \end{macro}^^A \textcdln
+% \end{macro}^^A \cdfontxi
+% \end{macro}^^A \cdfontbi
+% \end{macro}^^A \cdfontsi
+% \end{macro}^^A \cdfontri
+% \end{macro}^^A \cdfontli
+% \end{macro}^^A \cdfontxn
+% \end{macro}^^A \cdfontbn
+% \end{macro}^^A \cdfontsn
+% \end{macro}^^A \cdfontrn
+% \end{macro}^^A \cdfontln
+% \end{macro}^^A \tud@cdfont@init
+% \begin{macro}{\univln}
+% \begin{macro}{\univrn}
+% \begin{macro}{\univbn}
+% \begin{macro}{\univxn}
+% \begin{macro}{\univls}
+% \begin{macro}{\univrs}
+% \begin{macro}{\univbs}
+% \begin{macro}{\univxs}
+% \begin{macro}{\dinbn}
+% \begin{macro}{\tud@db}
+% \begin{macro}{\tud@db@wrn}
+% \begin{macro}{\textuln}
+% \begin{macro}{\texturn}
+% \begin{macro}{\textubn}
+% \begin{macro}{\textuxn}
+% \begin{macro}{\textuls}
+% \begin{macro}{\texturs}
+% \begin{macro}{\textubs}
+% \begin{macro}{\textuxs}
+% \begin{macro}{\textdbn}
+% Die Definition der Befehle der veralteten Schriften des \CDs.
+% \begin{macrocode}
+\if@tud@cdoldfont@active
+ \renewcommand*\tud@cdfont@init{%
+ \if@tud@cdfont@fam@exist%
+ \if@tud@x@fontspec@enabled%
+ \def\tud@res@a{%
+ UprightFont={Univers},%
+ FontFace={l}{n}{Univers-Light},%
+ FontFace={m}{n}{Univers},%
+ FontFace={b}{n}{Univers-Bold},%
+ FontFace={bx}{n}{Univers-Bold},%
+ FontFace={eb}{n}{Univers-Black},%
+ FontFace={l}{it}{Univers-LightOblique},%
+ FontFace={m}{it}{Univers-Oblique},%
+ FontFace={b}{it}{Univers-BoldOblique},%
+ FontFace={bx}{it}{Univers-BoldOblique},%
+ FontFace={eb}{it}{Univers-BlackOblique}%
+ }%
+ \tud@x@fontspec@init{\tud@cdfont@fam@lf}{\tud@res@a}%
+ \fi%
+% \end{macrocode}
+% Die Schalter zur expliziten Auswahl für die \Univers-Schriftschnitte.
+% \begin{macrocode}
+ \newrobustcmd*\univln{\usefont{\encodingdefault}{\tud@cdfont@fam}{l}{n}}
+ \newrobustcmd*\univrn{\usefont{\encodingdefault}{\tud@cdfont@fam}{m}{n}}
+ \newrobustcmd*\univbn{\usefont{\encodingdefault}{\tud@cdfont@fam}{b}{n}}
+ \newrobustcmd*\univxn{\usefont{\encodingdefault}{\tud@cdfont@fam}{eb}{n}}
+ \newrobustcmd*\univls{\usefont{\encodingdefault}{\tud@cdfont@fam}{l}{sl}}
+ \newrobustcmd*\univrs{\usefont{\encodingdefault}{\tud@cdfont@fam}{m}{sl}}
+ \newrobustcmd*\univbs{\usefont{\encodingdefault}{\tud@cdfont@fam}{b}{sl}}
+ \newrobustcmd*\univxs{\usefont{\encodingdefault}{\tud@cdfont@fam}{eb}{sl}}
+% \end{macrocode}
+% Sind die notwendigen Schriften nicht installiert, werden die Schalter für die
+% Rückfallebene so definiert, dass diese eine Warnung ausgeben.
+% \begin{macrocode}
+ \else%
+ \tud@cdfont@fallback\univln{Univers-Light}{md}{up}
+ \tud@cdfont@fallback\univrn{Univers}{md}{up}
+ \tud@cdfont@fallback\univbn{Univers-Bold}{bf}{up}
+ \tud@cdfont@fallback\univxn{Univers-Black}{bf}{up}
+ \tud@cdfont@fallback\univls{Univers-LightOblique}{md}{sl}
+ \tud@cdfont@fallback\univrs{Univers-Oblique}{md}{sl}
+ \tud@cdfont@fallback\univbs{Univers-BoldOblique}{bf}{sl}
+ \tud@cdfont@fallback\univxs{Univers-BlackOblique}{bf}{sl}
+ \fi%
+% \end{macrocode}
+% Außerdem werden für die Schriften noch die entsprechenden Textauswahlbefehle
+% bereitgestellt.
+% \begin{macrocode}
+ \newcommand*\textuln{}%
+ \newcommand*\texturn{}%
+ \newcommand*\textubn{}%
+ \newcommand*\textuxn{}%
+ \newcommand*\textuls{}%
+ \newcommand*\texturs{}%
+ \newcommand*\textubs{}%
+ \newcommand*\textuxs{}%
+ \DeclareTextFontCommand\textuln{\univln}%
+ \DeclareTextFontCommand\texturn{\univrn}%
+ \DeclareTextFontCommand\textubn{\univbn}%
+ \DeclareTextFontCommand\textuxn{\univxn}%
+ \DeclareTextFontCommand\textuls{\univls}%
+ \DeclareTextFontCommand\texturs{\univrs}%
+ \DeclareTextFontCommand\textubs{\univbs}%
+ \DeclareTextFontCommand\textuxs{\univxs}%
+% \end{macrocode}
+% Diese werden auch für die Definition der neuen Schriftauswahlbefehle genutzt.
+% \begin{macrocode}
+ \newrobustcmd*\cdfontln{\univln}%
+ \newrobustcmd*\cdfontrn{\univrn}%
+ \newrobustcmd*\cdfontsn{\univrn}%
+ \newrobustcmd*\cdfontbn{\univbn}%
+ \newrobustcmd*\cdfontxn{\univxn}%
+ \newrobustcmd*\cdfontli{\univls}%
+ \newrobustcmd*\cdfontri{\univrs}%
+ \newrobustcmd*\cdfontsi{\univrs}%
+ \newrobustcmd*\cdfontbi{\univbs}%
+ \newrobustcmd*\cdfontxi{\univxs}%
+ \newcommand*\textcdln{}%
+ \newcommand*\textcdrn{}%
+ \newcommand*\textcdsn{}%
+ \newcommand*\textcdbn{}%
+ \newcommand*\textcdxn{}%
+ \newcommand*\textcdli{}%
+ \newcommand*\textcdri{}%
+ \newcommand*\textcdsi{}%
+ \newcommand*\textcdbi{}%
+ \newcommand*\textcdxi{}%
+ \DeclareTextFontCommand\textcdln{\cdfontln}%
+ \DeclareTextFontCommand\textcdrn{\cdfontrn}%
+ \DeclareTextFontCommand\textcdsn{\cdfontsn}%
+ \DeclareTextFontCommand\textcdbn{\cdfontbn}%
+ \DeclareTextFontCommand\textcdxn{\cdfontxn}%
+ \DeclareTextFontCommand\textcdli{\cdfontli}%
+ \DeclareTextFontCommand\textcdri{\cdfontri}%
+ \DeclareTextFontCommand\textcdsi{\cdfontsi}%
+ \DeclareTextFontCommand\textcdbi{\cdfontbi}%
+ \DeclareTextFontCommand\textcdxi{\cdfontxi}%
+% \end{macrocode}
+% Anschließend wird für \DIN äquivalent verfahren.
+% \begin{macrocode}
+ \if@tud@cdfont@db@exist%
+ \if@tud@x@fontspec@enabled%
+ \def\tud@res@a{%
+ UprightFont={DIN-Bold},%
+ FontFace={l}{n}{DIN-Bold},%
+ FontFace={m}{n}{DIN-Bold},%
+ FontFace={b}{n}{DIN-Bold},%
+ FontFace={bx}{n}{DIN-Bold},%
+ FontFace={eb}{n}{DIN-Bold},%
+ FontFace={l}{it}{Font=DIN-Bold,FakeSlant=0.15},%
+ FontFace={m}{it}{Font=DIN-Bold,FakeSlant=0.15},%
+ FontFace={b}{it}{Font=DIN-Bold,FakeSlant=0.15},%
+ FontFace={bx}{it}{Font=DIN-Bold,FakeSlant=0.15},%
+ FontFace={eb}{it}{Font=DIN-Bold,FakeSlant=0.15}%
+ }%
+ \tud@x@fontspec@init{\tud@cdfont@db}{\tud@res@a}%
+ \fi%
+% \end{macrocode}
+% Bei der Schriftauswahl wird die entsprechende Mathematikschrift aktiviert.
+% \begin{macrocode}
+ \newrobustcmd*\tud@db{%
+ \usefont{\encodingdefault}{\tud@cdfont@db}{b}{n}%
+ \if@tud@cdmath@active\mathversion{tuddin}\fi%
+ }%
+ \newrobustcmd*\dinbn{\tud@db}%
+% \end{macrocode}
+% Da der Schalter \cs{dinbn} innerhalb der Überschriften verwendet wird, sollte
+% dieser zumindest auch auf den Überschriftenstil schalten, falls die benötigte
+% Schrift selbst nicht installiert ist.
+% \begin{macrocode}
+ \else%
+ \newrobustcmd*\tud@db{\tud@db@wrn\sectfont}%
+ \newcommand*\tud@db@wrn{%
+%<*class>
+ \ClassWarning{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageWarning{tudscrfonts}%
+%</package>
+ {%
+ Font `DIN-Bold' is not available and therefore\MessageBreak
+ can not be used for headings%
+ }%
+ \global\let\tud@db@wrn\relax%
+ }%
+ \newrobustcmd*\dinbn{\tud@cdfont@fallback@wrn{DIN-Bold}\sectfont}%
+ \fi%
+ \newcommand*\textdbn{}%
+ \DeclareTextFontCommand\textdbn{\dinbn}%
+ }%
+\fi
+% \end{macrocode}
+% \end{macro}^^A \textdbn
+% \end{macro}^^A \textuxs
+% \end{macro}^^A \textubs
+% \end{macro}^^A \texturs
+% \end{macro}^^A \textuls
+% \end{macro}^^A \textuxn
+% \end{macro}^^A \textubn
+% \end{macro}^^A \texturn
+% \end{macro}^^A \textuln
+% \end{macro}^^A \tud@db@wrn
+% \end{macro}^^A \tud@db
+% \end{macro}^^A \dinbn
+% \end{macro}^^A \univxs
+% \end{macro}^^A \univbs
+% \end{macro}^^A \univrs
+% \end{macro}^^A \univls
+% \end{macro}^^A \univxn
+% \end{macro}^^A \univbn
+% \end{macro}^^A \univrn
+% \end{macro}^^A \univln
+% \begin{macro}{\tud@cdfont@fallback}
+% \changes{v2.05}{2015/12/14}{neu}^^A
+% \begin{macro}{\tud@cdfont@fallback@wrn}
+% \changes{v2.05}{2015/12/14}{neu}^^A
+% Hier wird die Rückfallebene für die Schriftschalter sowie die dazugehörige
+% Warnung definiert.
+% \begin{macrocode}
+\newcommand*\tud@cdfont@fallback[4]{%
+ \newrobustcmd*#1{%
+ \tud@cdfont@fallback@wrn{#2}%
+ \sffamily\csuse{#3series}\csuse{#4shape}%
+ }%
+}
+\newcommand*\tud@cdfont@fallback@wrn[1]{%
+%<*class>
+ \ClassWarning{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageWarning{tudscrfonts}%
+%</package>
+ {%
+ The requested font `#1'\MessageBreak%
+ is not available, a fallback layout is used%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cdfont@fallback@wrn
+% \end{macro}^^A \tud@cdfont@fallback
+% \begin{macro}{\cdfont}
+% \changes{v2.04}{2015/03/04}{neu}^^A
+% \begin{macro}{\tudfont}
+% \changes{v2.04}{2015/04/24}{\cls{tudmathposter} wird unterstützt}^^A
+% \begin{macro}{\textcd}
+% \changes{v2.04}{2015/03/04}{neu}^^A
+% \begin{macro}{\tud@cdfont@get}
+% \changes{v2.04}{2015/03/04}{neu}^^A
+% \changes{v2.06}{2018/06/29}{für \OpenSans überarbeitet}^^A
+% \begin{macro}{\tud@cdfont@trim}
+% \changes{v2.04}{2015/03/04}{neu}^^A
+% \changes{v2.06}{2018/06/29}{für \OpenSans überarbeitet}^^A
+% \begin{macro}{\tud@cdfont@@trim}
+% \changes{v2.04}{2015/03/04}{neu}^^A
+% Die Klassen \cls{tudposter} und \cls{tudmathposter} definieren den Befehl
+% \cs{tudfont}, mit welchem die Schriften des \CDs der \TnUD auch mit Klarnamen
+% ausgewählt werden können. Zur Kompatibilität wird der Befehl \cs{cdfont}
+% definiert, welcher die gleiche Funktionalität bereitstellt. Zusätzlich wird
+% der Befehl \cs{textcd} bereitgestellt, der die Auswahl der Schrift als
+% Textbefehl ermöglicht.
+% \begin{macrocode}
+\newcommand*\cdfont[1]{%
+ \tud@cdfont@get{#1}%
+ \ifx\@tempc\relax\else%
+ \csuse{cdfont\@tempc}%
+ \fi%
+}
+\newcommand*\textcd[2]{%
+ \tud@cdfont@get{#1}%
+ \ifx\@tempc\relax%
+ \textsf{#2}%
+ \else%
+ \csuse{textcd\@tempc}{#2}%
+ \fi%
+}
+\if@tud@cdoldfont@active
+ \renewcommand*\cdfont[1]{%
+ \tud@cdfont@get{#1}%
+ \ifx\@tempc\relax\else%
+ \ifstr{\@tempc}{dinbn}{\dinbn}{\csuse{univ\@tempc}}%
+ \fi%
+ }%
+ \renewcommand*\textcd[2]{%
+ \tud@cdfont@get{#1}%
+ \ifx\@tempc\relax%
+ \textsf{#2}%
+ \else%
+ \ifstr{\@tempc}{dinbn}{\textdbn{#2}}{\csuse{textu\@tempc}{#2}}%
+ \fi%
+ }%
+\fi
+\newcommand*\tud@cdfont@get[1]{%
+ \tud@cdfont@trim\@tempa{#1}%
+ \ifstr{\@tempa}{l}{\def\@tempc{ln}}{%
+ \ifstr{\@tempa}{}{\def\@tempc{rn}}{%
+ \ifstr{\@tempa}{r}{\def\@tempc{rn}}{%
+ \ifstr{\@tempa}{s}{\def\@tempc{sn}}{%
+ \ifstr{\@tempa}{b}{\def\@tempc{bn}}{%
+ \ifstr{\@tempa}{x}{\def\@tempc{xn}}{%
+ \ifstr{\@tempa}{li}{\def\@tempc{li}}{%
+ \ifstr{\@tempa}{il}{\def\@tempc{li}}{%
+ \ifstr{\@tempa}{i}{\def\@tempc{ri}}{%
+ \ifstr{\@tempa}{ri}{\def\@tempc{ri}}{%
+ \ifstr{\@tempa}{ir}{\def\@tempc{ri}}{%
+ \ifstr{\@tempa}{si}{\def\@tempc{si}}{%
+ \ifstr{\@tempa}{is}{\def\@tempc{si}}{%
+ \ifstr{\@tempa}{bi}{\def\@tempc{bi}}{%
+ \ifstr{\@tempa}{ib}{\def\@tempc{bi}}{%
+ \ifstr{\@tempa}{xi}{\def\@tempc{xi}}{%
+ \ifstr{\@tempa}{ix}{\def\@tempc{xi}}{%
+ \let\@tempc\relax%
+%<*class>
+ \ClassWarning{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageWarning{tudscrfonts}%
+%</package>
+ {The font `#1' is unknown}%
+ }}}}}}}}}}}}}}}}}%
+}
+\if@tud@cdoldfont@active
+ \renewcommand*\tud@cdfont@get[1]{%
+ \tud@cdfont@trim\@tempa{#1}%
+ \ifstr{\@tempa}{45}{\def\@tempc{ln}}{%
+ \ifstr{\@tempa}{55}{\def\@tempc{rn}}{%
+ \ifstr{\@tempa}{65}{\def\@tempc{bn}}{%
+ \ifstr{\@tempa}{75}{\def\@tempc{xn}}{%
+ \ifstr{\@tempa}{45oblique}{\def\@tempc{ls}}{%
+ \ifstr{\@tempa}{55oblique}{\def\@tempc{rs}}{%
+ \ifstr{\@tempa}{65oblique}{\def\@tempc{bs}}{%
+ \ifstr{\@tempa}{75oblique}{\def\@tempc{xs}}{%
+ \ifstr{\@tempa}{oblique45}{\def\@tempc{ls}}{%
+ \ifstr{\@tempa}{oblique55}{\def\@tempc{rs}}{%
+ \ifstr{\@tempa}{oblique65}{\def\@tempc{bs}}{%
+ \ifstr{\@tempa}{oblique75}{\def\@tempc{xs}}{%
+ \ifstr{\@tempa}{din}{\def\@tempc{dinbn}}{%
+ \ifstr{\@tempa}{din65}{\def\@tempc{dinbn}}{%
+ \let\@tempc\relax%
+%<*class>
+ \ClassWarning{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageWarning{tudscrfonts}%
+%</package>
+ {The font `#1' is unknown}%
+ }}}}}}}}}}}}}}%
+ }%
+\fi
+\newcommand*\tud@cdfont@trim[2]{%
+ \protected@edef\@tempa{\trim@spaces{#2}}%
+ \tud@lowerstring{\@tempa}{\@tempa}%
+ \tud@cdfont@@trim{ }{}%
+ \tud@cdfont@@trim{-}{}%
+ \tud@cdfont@@trim{_}{}%
+ \tud@cdfont@@trim{~}{}%
+ \tud@cdfont@@trim{opensans}{}%
+ \tud@cdfont@@trim{light}{l}%
+ \tud@cdfont@@trim{regular}{r}%
+ \tud@cdfont@@trim{book}{r}%
+ \tud@cdfont@@trim{semibold}{s}%
+ \tud@cdfont@@trim{demi}{s}%
+ \tud@cdfont@@trim{extrabold}{x}%
+ \tud@cdfont@@trim{black}{x}%
+ \tud@cdfont@@trim{bold}{b}%
+ \tud@cdfont@@trim{italic}{i}%
+ \tud@cdfont@@trim{oblique}{i}%
+ \tud@cdfont@@trim{slanted}{i}%
+ \let#1\@tempa%
+}
+\if@tud@cdoldfont@active
+ \renewcommand*\tud@cdfont@trim[2]{%
+ \protected@edef\@tempa{\trim@spaces{#2}}%
+ \tud@lowerstring{\@tempa}{\@tempa}%
+ \tud@cdfont@@trim{ }{}%
+ \tud@cdfont@@trim{-}{}%
+ \tud@cdfont@@trim{_}{}%
+ \tud@cdfont@@trim{~}{}%
+ \tud@cdfont@@trim{ce}{}%
+ \tud@cdfont@@trim{ff}{}%
+ \tud@cdfont@@trim{univers}{}%
+ \tud@cdfont@@trim{60}{65}%
+ \tud@cdfont@@trim{light}{45}%
+ \tud@cdfont@@trim{regular}{55}%
+ \tud@cdfont@@trim{bold}{65}%
+ \tud@cdfont@@trim{black}{75}%
+ \tud@cdfont@@trim{4545}{45}%
+ \tud@cdfont@@trim{5555}{55}%
+ \tud@cdfont@@trim{6565}{65}%
+ \tud@cdfont@@trim{7575}{75}%
+ \tud@cdfont@@trim{italic}{oblique}%
+ \tud@cdfont@@trim{slanted}{oblique}%
+ \let#1\@tempa%
+ }%
+\fi
+\newcommand*\tud@cdfont@@trim[2]{%
+ \def\@tempb##1#1##2\relax{\def\@tempa{##1#2##2}}%
+ \@expandtwoargs\in@{#1}{\@tempa}%
+ \@whilesw\ifin@\fi{%
+ \expandafter\@tempb\@tempa\relax%
+ \@expandtwoargs\in@{#1}{\@tempa}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cdfont@@trim
+% \end{macro}^^A \tud@cdfont@trim
+% \end{macro}^^A \tud@cdfont@get
+% \end{macro}^^A \textcd
+% \end{macro}^^A \tudfont
+% \end{macro}^^A \cdfont
+%
+% \iffalse
+%</body>
+%<*option>
+% \fi
+%
+% \subsubsection{TypeWriter-Schriften}
+%
+% \begin{option}{ttfont}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud@ttfont@num}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% Mit dieser Option regelt, ob die TypeWriter-Schriften durch den Anwender
+% manuell eingestellt werden oder aber die entsprechenden Schriften aus den
+% Paketen \pkg{lmodern} oder \pkg{roboto-mono} zum Einsatz kommt.
+% \begin{macrocode}
+\newcommand*\tud@ttfont@num{0}
+\TUD@key{ttfont}[true]{%
+ \TUD@set@numkey{ttfont}{@tempa}{%
+ \TUD@bool@numkey,%
+ {roboto}{1},{roboto-mono}{1},{robo}{1},%
+ {lm}{2},{lmtt}{2},{lmodern}{2}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\@tempa\relax% false
+ \renewcommand*\tud@ttfont@num{0}%
+ \or% roboto
+ \renewcommand*\tud@ttfont@num{1}%
+ \or% lmodern
+ \renewcommand*\tud@ttfont@num{2}%
+ \fi%
+ \TUD@SpecialOptionAtDocument{tud@font@set}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@ttfont@num
+% \end{option}^^A ttfont
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+% \begin{macro}{\tud@ttfont@set}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud@ttfont@@set}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud@ttfont@md}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud@ttfont@bf}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud@ttfont@ebf}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% Die Auswahl der TypeWriter-Schrift.
+% \begin{macrocode}
+\newcommand*\tud@ttfont@set{%
+ \if@tud@ttfont@rb@exist\else\ifnum\tud@ttfont@num=\@ne\relax%
+%<*class>
+ \ClassWarning{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageWarning{tudscrfonts}%
+%</package>
+ {%
+ The package `roboto-mono' is missing so the\MessageBreak%
+ typewriter font of package `lmodern' is used%
+ }%
+ \TUDoptions{ttfont=lmodern}%
+ \fi\fi%
+ \ifcase\tud@ttfont@num\relax% false
+ \let\tud@ttfont@fam\ttdefault%
+ \or% roboto
+ \let\tud@ttfont@fam\tud@ttfont@rb%
+ \or% lmodern
+ \let\tud@ttfont@fam\tud@ttfont@lm%
+ \fi%
+ \ifcase\tud@ttfont@num\relax\else% !false
+ \if@tud@x@fontspec@enabled%
+% \end{macrocode}
+% Das Setzen der TypeWriter-Schriften aus dem Paket \pkg{lmodern} erfolgt nur,
+% wenn diese nicht standardmäßig durch \pkg{fontspec} aktiviert ist.
+% \begin{macrocode}
+ \ifx\ttdefault\tud@ttfont@fam\else%
+ \tud@x@fontspec@set{tt}{\tud@ttfont@fam}%
+ \fi%
+ \else%
+ \renewcommand*\ttdefault{\tud@ttfont@fam}%
+ \fi%
+ \fi%
+ \tud@ttfont@@set%
+}
+\newcommand*\tud@ttfont@md{}
+\newcommand*\tud@ttfont@bf{}
+\newcommand*\tud@ttfont@ebf{}
+\newcommand*\tud@ttfont@@set{%
+ \ifcase\tud@ttfont@num\relax%
+ \ifundef{\mdseries@tt}{%
+ \edef\tud@ttfont@md{\tud@cs@use{mddefault}}%
+ }{%
+ \edef\tud@ttfont@md{\mdseries@tt}%
+ }%
+ \ifundef{\bfseries@tt}{%
+ \edef\tud@ttfont@bf{\tud@cs@use{bfdefault}}%
+ }{%
+ \edef\tud@ttfont@bf{\bfseries@tt}%
+ }%
+ \edef\tud@ttfont@ebf{\tud@ttfont@bf}%
+ \or% roboto
+ \renewcommand*\tud@ttfont@md{\tud@cdfont@md}%
+ \renewcommand*\tud@ttfont@bf{\tud@cdfont@bf}%
+ \renewcommand*\tud@ttfont@ebf{\tud@cdfont@ebf}%
+ \else% lmodern
+ \if@tud@cdfont@heavy%
+ \renewcommand*\tud@ttfont@md{m}%
+ \renewcommand*\tud@ttfont@bf{b}%
+ \renewcommand*\tud@ttfont@ebf{b}%
+ \else%
+ \renewcommand*\tud@ttfont@md{l}%
+ \if@tud@cdfont@ultrabold%
+ \renewcommand*\tud@ttfont@bf{b}%
+ \renewcommand*\tud@ttfont@ebf{b}%
+ \else%
+ \renewcommand*\tud@ttfont@bf{m}%
+ \renewcommand*\tud@ttfont@ebf{b}%
+ \fi%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@ttfont@ebf
+% \end{macro}^^A \tud@ttfont@bf
+% \end{macro}^^A \tud@ttfont@md
+% \end{macro}^^A \tud@ttfont@@set
+% \end{macro}^^A \tud@ttfont@set
+% \begin{macro}{\tud@ttfont@init}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud@ttfont@rb@scale}
+% \changes{v2.06}{2018/08/30}{neu}^^A
+% Mit \cs{tud@ttfont@init} erfolgt die Defintion der TypeWriter-Schriften.
+% \begin{macrocode}
+\newcommand*\tud@ttfont@init{%
+% \end{macrocode}
+% Für die \texttt{RobotoMono} wird der Skalierungsfaktor fest definiert.
+% \begin{macrocode}
+ \newcommand*\tud@ttfont@rb@scale{0.9}%
+ \if@tud@x@fontspec@enabled%
+ \if@tud@ttfont@rb@exist%
+ \tud@x@fontspec@init{\tud@ttfont@rb}{%
+ Scale={\tud@ttfont@rb@scale},%
+ UprightFont={RobotoMono-Regular},%
+ FontFace={l}{n}{RobotoMono-Light},%
+ FontFace={m}{n}{RobotoMono-Regular},%
+ FontFace={sb}{n}{RobotoMono-Medium},%
+ FontFace={b}{n}{RobotoMono-Bold},%
+ FontFace={bx}{n}{RobotoMono-Bold},%
+ FontFace={eb}{n}{RobotoMono-Bold},%
+ FontFace={l}{it}{RobotoMono-LightItalic},%
+ FontFace={m}{it}{RobotoMono-Italic},%
+ FontFace={sb}{it}{RobotoMono-MediumItalic},%
+ FontFace={b}{it}{RobotoMono-BoldItalic},%
+ FontFace={bx}{it}{RobotoMono-BoldItalic},%
+ FontFace={eb}{it}{RobotoMono-BoldItalic}%
+ }%
+ \fi%
+% \end{macrocode}
+% Gewöhnlich ist die Schrift \texttt{lmtt} via \pkg{fontspec} voreingestellt.
+% Allerdings wird diese von einigen Paketen mit \cs{setmonofont} überschrieben.
+% Für diesen Fall wird die Schriftfamilie \texttt{lmtt} mit den Mitteln von
+% \pkg{fontspec} definiert.
+% \begin{macrocode}
+ \ifx\ttdefault\tud@ttfont@lm\else%
+ \tud@x@fontspec@init{\tud@ttfont@lm}{%
+ UprightFont={LMMono10-Regular},%
+ FontFace={l}{n}{LMMonoLt10-Regular},%
+ FontFace={m}{n}{LMMono10-Regular},%
+ FontFace={b}{n}{LMMonoLt10-Bold},%
+ FontFace={bx}{n}{LMMonoLt10-Bold},%
+ FontFace={l}{it}{LMMonoLt10-Oblique},%
+ FontFace={m}{it}{LMMonoSlant10-Regular},%
+ FontFace={b}{it}{LMMonoLt10-BoldOblique},%
+ FontFace={bx}{it}{LMMonoLt10-BoldOblique}%
+ }%
+ \fi%
+ \else%
+% \end{macrocode}
+% Existiert das Paket \pkg{roboto-mono}, wird die Schriftfamilie \val{tudtt}
+% definiert und die passenden Type1-Schriften für diese definiert.
+% \begin{macrocode}
+ \if@tud@ttfont@rb@exist%
+% \end{macrocode}
+% Der Skalierungsfaktor für das NFSS gesetzt.
+% \begin{macrocode}
+ \edef\tud@ttfont@rb@scale{s*[\tud@ttfont@rb@scale]}%
+ \begingroup%
+ \def\tud@res@c##1##2{%
+ \tud@lowerstring\tud@res@a{##1}%
+ \DeclareFontFamily{##1}{\tud@ttfont@rb}{\hyphenchar\font=\m@ne}%
+% \end{macrocode}
+% Das temporäre Makro verlangt im ersten Argument die NFSS-Serie, im zweiten
+% den Teil des Dateinamens der \texttt{RobotoMono} für aufrechte Metriken und
+% im dritten Argument den für kursive.
+% \begin{macrocode}
+ \def\tud@res@b####1####2####3{%
+ \DeclareFontShape{##1}{\tud@ttfont@rb}{####1}{n}{%
+ <->\tud@ttfont@rb@scale RobotoMono-####2-tlf-\tud@res@a%
+ }{}%
+ \DeclareFontShape{##1}{\tud@ttfont@rb}{####1}{it}{%
+ <->\tud@ttfont@rb@scale RobotoMono-####3-tlf-\tud@res@a%
+ }{}%
+ \DeclareFontShape{##1}{\tud@ttfont@rb}{####1}{sl}{%
+ <->ssub*\tud@ttfont@rb/####1/it%
+ }{}%
+% \end{macrocode}
+% Kapitälchen sind nicht für alle Kodierungen definiert, weshalb diese nur
+% optional definiert werden.
+% \begin{macrocode}
+ \ifbool{##2}{%
+ \DeclareFontShape{##1}{\tud@ttfont@rb}{####1}{sc}{%
+ <->\tud@ttfont@rb@scale RobotoMono-####2-tlf-sc-\tud@res@a%
+ }{}%
+ \DeclareFontShape{##1}{\tud@ttfont@rb}{####1}{scit}{%
+ <->\tud@ttfont@rb@scale RobotoMono-####3-tlf-sc-\tud@res@a%
+ }{}%
+ \DeclareFontShape{##1}{\tud@ttfont@rb}{####1}{scsl}{%
+ <->ssub*\tud@ttfont@rb/####1/scit%
+ }{}%
+ }{}%
+ }%
+ \tud@res@b{l}{Light}{LightItalic}%
+ \tud@res@b{m}{Regular}{Italic}%
+ \tud@res@b{sb}{Medium}{MediumItalic}%
+ \tud@res@b{b}{Bold}{BoldItalic}%
+ \tud@res@b{bx}{Bold}{BoldItalic}%
+ }%
+ \tud@res@c{OT1}{true}%
+ \tud@res@c{T1}{true}%
+ \ifcsundef{T@TS1}{}{\tud@res@c{TS1}{false}}%
+ \endgroup%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@ttfont@rb@scale
+% \end{macro}^^A \tud@ttfont@init
+%
+% \iffalse
+%</body>
+%<*option>
+% \fi
+%
+% \subsubsection{Schriften für den Mathematiksatz}
+%
+% Für den mathematischen Satz werden ergänzend zur \OpenSans die Symbole aus
+% dem Paket \pkg{mdsymbol} genutzt. Diese werden bereits bei der Erstellung der
+% Type1-Schriften eingefügt.
+%
+% Die veralteten Schriften des \CDs \Univers und \DIN besitzen keine Glyphen für
+% den Mathematiksatz. Daher musste~-- insbesondere für griechische Symbole~--
+% eine passende Alternative gefunden werden. Die Auswahl an Mathematikschriften
+% für \LaTeX{} ist relativ gering. Dennoch schien das \pkg{cmbright}-Paket dafür
+% geeignet, weshalb die darin enthaltenen Glyphen direkt bei der Installation
+% der Schriften eingebunden werden.
+%
+% \begin{option}{cdmath}
+% \begin{macro}{\if@tud@cdmath@active}
+% \begin{macro}{\if@tud@cdmath@active@locked}
+% Mit dieser Option kann die genutzte Standardschrift für den Mathematiksatz
+% für das gesamte Dokument umgestellt werden.
+% \ToDo{%
+% Option evtl. überarbeiten und nicht mehr im Dokument zulassen;
+% andernfalls müssten alle bereitgestellte Befehle für den Mathematiksatz
+% gesichert und neu definiert werden, weil diese ggf. von anderen Paketen
+% umdefiniert werden. Bspw. \cs{the}\cs{mathcode`!}
+% }[v2.07]
+% \begin{macrocode}
+\tud@locked@newbool{@tud@cdmath@active}
+\tud@locked@bool@preset{@tud@cdmath@active}{true}%
+\TUD@key{cdmath}[true]{%
+ \TUD@set@numkey{cdmath}{@tempa}{%
+ \TUD@bool@numkey,%
+ {serifmath}{0},{serif}{0},{nosansmath}{0},{nosans}{0},%
+ {sansmath}{1},{sans}{1},%
+ {upgreek}{2},{uprightgreek}{2},{uprightgreeks}{2},%
+ {slgreek}{3},{slantedgreek}{3},{slantedgreeks}{3},%
+ {itgreek}{3},{italicgreek}{3},{italicgreeks}{3},%
+ {texgreek}{4},{latexgreek}{4},{texgreeks}{4},{latexgreeks}{4},%
+ {standardgreek}{4},{standardgreeks}{4}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\@tempa\relax% false
+ \tud@locked@bool@set{@tud@cdmath@active}{false}%
+ \TUD@SpecialOptionAtDocument{tud@math@set}%
+ \or% true
+ \tud@locked@bool@set{@tud@cdmath@active}{true}%
+ \TUD@SpecialOptionAtDocument{tud@math@set}%
+ \or% uprightgreek
+ \TUDoptions{slantedgreek=false}%
+ \or% slantedgreek
+ \TUDoptions{slantedgreek=true}%
+ \or% standardgreek
+ \TUDoptions{slantedgreek=standard}%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@cdmath@active@locked
+% \end{macro}^^A \if@tud@cdmath@active
+% \end{option}^^A cdmath
+% \begin{option}{slantedgreek}
+% \begin{option}{slantedGreek}
+% \begin{option}{slantedGreeks}
+% \changes{v2.04}{2015/02/27}{neu}^^A
+% \begin{macro}{\if@tud@slantedgreek}
+% Mit dieser Option kann die Neigung der griechischen Majuskeln geändert werden.
+% \begin{macrocode}
+\newcommand*\tud@slantedgreek@num{0}
+\TUD@key{slantedgreek}[true]{%
+ \TUD@set@numkey{slantedgreek}{@tempa}{%
+ \TUD@bool@numkey,%
+ {up}{0},{upright}{0},%
+ {sl}{1},{slanted}{1},{it}{1},{italic}{1},%
+ {standard}{2},{std}{2},{tex}{2},{latex}{2},{stdgrk}{2},{stdgrks}{2},%
+ {standardgreek}{2},{standardgreeks}{2},%
+ {texgreek}{2},{latexgreek}{2},{texgreeks}{2},{latexgreeks}{2}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\@tempa\relax% upright
+ \renewcommand*\tud@slantedgreek@num{0}%
+ \or% slanted
+ \renewcommand*\tud@slantedgreek@num{1}%
+ \or% standard
+ \renewcommand*\tud@slantedgreek@num{2}%
+ \fi%
+ \TUD@SpecialOptionAtDocument{tud@math@set}%
+ \fi%
+}
+\TUD@key{slantedGreek}[true]{\TUDoptions{slantedgreek=#1}}
+\TUD@key{slantedGreeks}[true]{\TUDoptions{slantedgreek=#1}}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@slantedgreek
+% \end{option}^^A slantedGreeks
+% \end{option}^^A slantedGreek
+% \end{option}^^A slantedgreek
+% \begin{option}{lgrgreek}
+% \changes{v2.06}{2019/06/13}{neu}^^A
+% \begin{option}{lgrgreeks}
+% \changes{v2.06}{2019/06/13}{neu}^^A
+% \begin{option}{LGRgreek}
+% \changes{v2.06}{2019/06/13}{neu}^^A
+% \begin{option}{LGRgreeks}
+% \changes{v2.06}{2019/06/13}{neu}^^A
+% \begin{macro}{\if@tud@lgrgreeks}
+% \changes{v2.06}{2019/06/13}{neu}^^A
+% Mit dieser Option lässt sich die Nutzung von griechischen Glyphen der aus der
+% LGR-Kodierung der aktuellen Schriftfamilie für den Mathematiksatz aktivieren.
+% \begin{macrocode}
+\newif\if@tud@lgrgreeks
+\TUD@key{lgrgreeks}[true]{\TUD@set@ifkey{lgrgreeks}{@tud@lgrgreeks}{#1}}
+\TUD@key{lgrgreek}[true]{\TUDoptions{lgrgreeks=#1}}
+\TUD@key{LGRgreeks}[true]{\TUDoptions{lgrgreeks=#1}}
+\TUD@key{LGRgreek}[true]{\TUDoptions{lgrgreeks=#1}}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@lgrgreeks
+% \end{option}^^A LGRgreeks
+% \end{option}^^A LGRgreek
+% \end{option}^^A lgrgreeks
+% \end{option}^^A lgrgreek
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+% \begin{macro}{\tud@if@issymbolfont}
+% \changes{v2.06}{2019/06/17}{neu}^^A
+% \begin{macro}{\tud@if@ismathalphabet}
+% \changes{v2.06}{2019/06/17}{neu}^^A
+% Diese Abfragen prüfen, ob der gegebene Bezeichner bzw. das gegebene Makro
+% für eine Deklaration mit \cs{DeclareSymbolFont} bzw. \cs{DeclareMathAlphabet}
+% verwendet wurde.
+% \begin{macrocode}
+\newcommand*\tud@if@issymbolfont[1]{%
+ \begingroup%
+ \edef\tud@res@a{%
+ \noexpand\in@\expandafter\noexpand%
+ \csname sym#1\endcsname%
+ {\expandonce\group@list}%
+ }%
+ \tud@res@a%
+ \ifin@%
+ \aftergroup\@firstoftwo%
+ \else%
+ \aftergroup\@secondoftwo%
+ \fi%
+ \endgroup%
+}
+\@onlypreamble\tud@if@issymbolfont
+\newcommand*\tud@if@ismathalphabet[1]{%
+ \begingroup%
+ \edef\tud@res@a{%
+ \noexpand\in@\expandafter\noexpand%
+ \csname\expandafter\@gobble\string#1\space\endcsname%
+ {\expandonce\alpha@list}%
+ }%
+ \tud@res@a%
+ \ifin@%
+ \aftergroup\@firstoftwo%
+ \else%
+ \aftergroup\@secondoftwo%
+ \fi%
+ \endgroup%
+}
+\@onlypreamble\tud@if@ismathalphabet
+% \end{macrocode}
+% \end{macro}^^A \tud@if@ismathalphabet
+% \end{macro}^^A \tud@if@issymbolfont
+% \begin{macro}{\tud@math@loop@greeks@all}
+% \changes{v2.04}{2015/03/10}{neu}^^A
+% \begin{macro}{\tud@math@loop@greeks@uc}
+% \changes{v2.06}{2018/07/17}{neu}^^A
+% \begin{macro}{\tud@math@loop@greeks@lc}
+% \changes{v2.06}{2018/07/17}{neu}^^A
+% Um Änderungen an den griechischen Glyphen vornehmen zu können, wird das Makro
+% \cs{tud@math@loop@greeks@all} definiert, mit dem eine Namensliste der Glyphen
+% durchlaufen wird. Dabei wird in Majuskeln und Minuskeln unterschieden.
+% \begin{macrocode}
+\newcommand*\tud@math@loop@greeks@all[1]{%
+ \tud@math@loop@greeks@uc{#1}%
+ \tud@math@loop@greeks@lc{#1}%
+}
+\newcommand*\tud@math@loop@greeks@uc[1]{%
+ \@for\@tempa:={%
+ Gamma,Delta,Theta,Lambda,Xi,Pi,Sigma,Upsilon,Phi,Psi,Omega%
+ }\do{\expandafter#1\expandafter{\@tempa}}%
+}
+\newcommand*\tud@math@loop@greeks@lc[1]{%
+ \@for\@tempa:={%
+ alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa,lambda,%
+ mu,nu,xi,pi,rho,sigma,tau,upsilon,phi,chi,psi,omega,%
+ varepsilon,vartheta,varpi,varrho,varsigma,varphi%
+ }\do{\expandafter#1\expandafter{\@tempa}}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@math@loop@greeks@lc
+% \end{macro}^^A \tud@math@loop@greeks@uc
+% \end{macro}^^A \tud@math@loop@greeks@all
+% \begin{macro}{\tud@math@declare@lgrgreeks}
+% \changes{v2.06}{2019/06/18}{neu}^^A
+% Hiermit werden die beiden Symbolschriften \val{tudupgrk} und \val{tuditgrk}
+% in der LGR-Kodierung definiert. Diese werden insbesondere für die \OpenSans
+% benötigt, da das Paket \pkg{opensans} keine Schriften in mathematischen
+% Kodierungen enthält. Das etrste Argument enthält die zu deklarierende
+% Schriftfamilie, zweites und drittes Argument die Schriftstärke für normale
+% und fette Glyphen, die letzten beiden die Schriftgestalt für aufrechte und
+% kursive Variante.
+% \begin{macrocode}
+\newcommand*\tud@math@declare@lgrgreeks[5]{%
+ \ifundef{\T@LGR}{\DeclareFontEncoding{LGR}{}{}}{}%
+ \tud@if@issymbolfont{tudupgrk}{%
+ \SetSymbolFont{tudupgrk}{normal}{LGR}{#1}{#2}{#4}%
+ }{%
+ \DeclareSymbolFont{tudupgrk}{LGR}{#1}{#2}{#4}%
+ }%
+ \SetSymbolFont{tudupgrk}{bold}{LGR}{#1}{#3}{#4}%
+ \tud@if@issymbolfont{tuditgrk}{%
+ \SetSymbolFont{tuditgrk}{normal}{LGR}{#1}{#2}{#5}%
+ }{%
+ \DeclareSymbolFont{tuditgrk}{LGR}{#1}{#2}{#5}%
+ }%
+ \SetSymbolFont{tuditgrk}{bold}{LGR}{#1}{#3}{#5}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@math@declare@lgrgreeks
+% \begin{macro}{\tud@math@map@greeks}
+% \changes{v2.06}{2018/07/02}{neu}^^A
+% \begin{macro}{\tud@math@map@@greeks}
+% \changes{v2.06}{2018/07/02}{neu}^^A
+% \begin{macro}{\tud@math@map@@@greeks}
+% \changes{v2.06}{2018/07/02}{neu}^^A
+% \begin{macro}{\tud@math@supplement@greeks}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% \begin{macro}{\upDelta}
+% \begin{macro}{\upGamma}
+% \begin{macro}{\upLambda}
+% \begin{macro}{\upOmega}
+% \begin{macro}{\upPhi}
+% \begin{macro}{\upPi}
+% \begin{macro}{\upPsi}
+% \begin{macro}{\upSigma}
+% \begin{macro}{\upTheta}
+% \begin{macro}{\upUpsilon}
+% \begin{macro}{\upXi}
+% \begin{macro}{\upalpha}
+% \begin{macro}{\upbeta}
+% \begin{macro}{\upgamma}
+% \begin{macro}{\updelta}
+% \begin{macro}{\upepsilon}
+% \begin{macro}{\upzeta}
+% \begin{macro}{\upeta}
+% \begin{macro}{\uptheta}
+% \begin{macro}{\upiota}
+% \begin{macro}{\upkappa}
+% \begin{macro}{\uplambda}
+% \begin{macro}{\upmu}
+% \begin{macro}{\upnu}
+% \begin{macro}{\upxi}
+% \begin{macro}{\uppi}
+% \begin{macro}{\uprho}
+% \begin{macro}{\upsigma}
+% \begin{macro}{\uptau}
+% \begin{macro}{\upupsilon}
+% \begin{macro}{\upphi}
+% \begin{macro}{\upchi}
+% \begin{macro}{\uppsi}
+% \begin{macro}{\upomega}
+% \begin{macro}{\upvarepsilon}
+% \begin{macro}{\upvartheta}
+% \begin{macro}{\upvarpi}
+% \begin{macro}{\upvarrho}
+% \begin{macro}{\upvarsigma}
+% \begin{macro}{\upvarphi}
+% \begin{macro}{\itDelta}
+% \begin{macro}{\itGamma}
+% \begin{macro}{\itLambda}
+% \begin{macro}{\itOmega}
+% \begin{macro}{\itPhi}
+% \begin{macro}{\itPi}
+% \begin{macro}{\itPsi}
+% \begin{macro}{\itSigma}
+% \begin{macro}{\itTheta}
+% \begin{macro}{\itUpsilon}
+% \begin{macro}{\itXi}
+% \begin{macro}{\italpha}
+% \begin{macro}{\itbeta}
+% \begin{macro}{\itgamma}
+% \begin{macro}{\itdelta}
+% \begin{macro}{\itepsilon}
+% \begin{macro}{\itzeta}
+% \begin{macro}{\iteta}
+% \begin{macro}{\ittheta}
+% \begin{macro}{\itiota}
+% \begin{macro}{\itkappa}
+% \begin{macro}{\itlambda}
+% \begin{macro}{\itmu}
+% \begin{macro}{\itnu}
+% \begin{macro}{\itxi}
+% \begin{macro}{\itpi}
+% \begin{macro}{\itrho}
+% \begin{macro}{\itsigma}
+% \begin{macro}{\ittau}
+% \begin{macro}{\itupsilon}
+% \begin{macro}{\itphi}
+% \begin{macro}{\itchi}
+% \begin{macro}{\itpsi}
+% \begin{macro}{\itomega}
+% \begin{macro}{\itvarepsilon}
+% \begin{macro}{\itvartheta}
+% \begin{macro}{\itvarpi}
+% \begin{macro}{\itvarrho}
+% \begin{macro}{\itvarsigma}
+% \begin{macro}{\itvarphi}
+% \begin{macro}{\otherDelta}
+% \begin{macro}{\otherGamma}
+% \begin{macro}{\otherLambda}
+% \begin{macro}{\otherOmega}
+% \begin{macro}{\otherPhi}
+% \begin{macro}{\otherPi}
+% \begin{macro}{\otherPsi}
+% \begin{macro}{\otherSigma}
+% \begin{macro}{\otherTheta}
+% \begin{macro}{\otherUpsilon}
+% \begin{macro}{\otherXi}
+% \begin{macro}{\otheralpha}
+% \begin{macro}{\otherbeta}
+% \begin{macro}{\othergamma}
+% \begin{macro}{\otherdelta}
+% \begin{macro}{\otherepsilon}
+% \begin{macro}{\otherzeta}
+% \begin{macro}{\othereta}
+% \begin{macro}{\othertheta}
+% \begin{macro}{\otheriota}
+% \begin{macro}{\otherkappa}
+% \begin{macro}{\otherlambda}
+% \begin{macro}{\othermu}
+% \begin{macro}{\othernu}
+% \begin{macro}{\otherxi}
+% \begin{macro}{\otherpi}
+% \begin{macro}{\otherrho}
+% \begin{macro}{\othersigma}
+% \begin{macro}{\othertau}
+% \begin{macro}{\otherupsilon}
+% \begin{macro}{\otherphi}
+% \begin{macro}{\otherchi}
+% \begin{macro}{\otherpsi}
+% \begin{macro}{\otheromega}
+% \begin{macro}{\othervarepsilon}
+% \begin{macro}{\othervartheta}
+% \begin{macro}{\othervarpi}
+% \begin{macro}{\othervarrho}
+% \begin{macro}{\othervarsigma}
+% \begin{macro}{\othervarphi}
+% Es gibt eine Vielzahl von Paketen, die das Setzen von aufrechten griechischen
+% Glyphen adressieren. Allerdings gibt es keinen einheitlichen Standard, was
+% die Nomenklatur der Auswahlbefehle betrifft. Mit diesem Makro wird nach den
+% am häufigsten auftretenden Varianten für die Auswahl für aufrechte und
+% kursive Glyphen gesucht, um diese auf die von \TUDScript verwendete
+% Nomenklatur abzubilden, damit diese unabhängig von der Einstellung für
+% \opt{cdmath} genutzt werden kann und somit neben den normalen Makros für die
+% zusätzlichen Befehle (\cs{up\meta{Bezeichner}}, \cs{it\meta{Bezeichner}})
+% für das explizite Auswählen aufrechter und kursiver Buchstaben bereitstehen.
+% \begin{macrocode}
+\newcommand*\tud@math@map@greeks{%
+ \tud@math@loop@greeks@all\tud@math@map@@greeks%
+ \tud@math@loop@greeks@uc\tud@math@map@@@greeks%
+ \tud@math@supplement@greeks%
+}
+\newcommand*\tud@math@map@@greeks[1]{%
+ \ifcsundef{it#1}{%
+ \@for\tud@res@a:={#1sl,sl#1,#1it}\do{%
+ \ifcsundef{\tud@res@a}{}{\csedef{it#1}{\csname\tud@res@a\endcsname}}%
+ }%
+ }{}%
+ \ifcsundef{up#1}{%
+ \ifcsundef{#1up}{}{\csedef{up#1}{\csname#1up\endcsname}}%
+ }{}%
+ \ifcsundef{other#1}{%
+ \ifcsundef{#1other}{}{\csedef{other#1}{\csname#1other\endcsname}}%
+ }{}%
+}
+% \end{macrocode}
+% Einige Pakete stellen für griechische Majuskeln die Befehle \cs{var\dots}
+% bereit, um diese im kursiven Schnitt zu setzen. Weiterhin existiert für
+% aufrechte Majuskeln auch noch die Form \cs{Up\meta{Bezeichner}}. Diese werden
+% ebenfalls ausgewertet und ggf. auf die \TUDScript-Nomenklatur abgebildet.
+% \begin{macrocode}
+\newcommand*\tud@math@map@@@greeks[1]{%
+ \ifcsundef{it#1}{%
+ \ifcsundef{var#1}{}{\csedef{it#1}{\csname var#1\endcsname}}%
+ }{}%
+ \ifcsundef{up#1}{%
+ \tud@lowerstring\tud@res@a{#1}%
+ \edef\tud@res@a{Up\tud@res@a}%
+ \ifcsundef{\tud@res@a}{}{\csedef{up#1}{\csname\tud@res@a\endcsname}}%
+ }{}%
+}
+% \end{macrocode}
+% Mit diesem Makro werden in letztendlich~-- nachdem \cs{tud@math@map@greeks}
+% bereits ausgeführt wurde~-- die standardmäßig definierten Symbolschriften
+% \val{operators} und \val{letters} geprüft, ob diese in den Kodierungen
+% \val{OT1} bzw. \val{OML} genutzt werden. Trifft dies zu, so werden die
+% Schriftfamilien der Symbolschriften genutzt, um die Auswahlbefehle für die
+% griechischen Glyphen zu definieren, sofern dies noch notwendig ist.
+% \begin{macrocode}
+\newcommand*\tud@math@supplement@greeks{%
+% \end{macrocode}
+% Um keine globalen Änderungen vorzunehmen, wird die normale Mathematikversion
+% in einer Gruppe durchsucht. Alle mit \cs{DeclareMathSymbol} vorzunehmenden
+% Deklarationen werden in \cs{tud@res@c} gesichert und nach der Gruppe
+% aufgerufen.
+% \begin{macrocode}
+ \begingroup%
+ \newcommand*\tud@math@operators@enc{}%
+ \newcommand*\tud@math@operators@fam{}%
+ \newcommand*\tud@math@letters@enc{}%
+ \newcommand*\tud@math@letters@fam{}%
+ \def\getanddefine@fonts##1##2{%
+ \ifx\symoperators##1%
+ \expandafter\tud@res@a\string##2\@nil%
+ \else\ifx\symletters##1%
+ \expandafter\tud@res@b\string##2\@nil%
+ \fi\fi%
+ }%
+ \def\tud@res@a##1##2/##3/##4\@nil{%
+ \def\tud@math@operators@enc{##2}%
+ \def\tud@math@operators@fam{##3}%
+ }%
+ \def\tud@res@b##1##2/##3/##4\@nil{%
+ \def\tud@math@letters@enc{##2}%
+ \def\tud@math@letters@fam{##3}%
+ }%
+ \tud@cs@use{mv@normal}%
+ \let\tud@res@c\@empty%
+ \ifstr{\tud@math@letters@enc}{\detokenize{OML}}{%
+ \def\tud@res@a##1{%
+ \ifcsundef{it##1}{%
+ \eappto\tud@res@c{%
+ \noexpand\DeclareMathSymbol{\csname it##1\endcsname}%
+ {\noexpand\mathalpha}{letters}{\the\tud@res@cnt}%
+ }%
+ }{}%
+ \advance\tud@res@cnt\@ne\relax%
+ }%
+ \tud@res@cnt=\z@\relax%
+ \tud@math@loop@greeks@all\tud@res@a%
+ }{}%
+ \ifstr{\tud@math@operators@enc}{\detokenize{OT1}}{%
+ \def\tud@res@a##1{%
+ \ifcsundef{up##1}{%
+ \eappto\tud@res@c{%
+ \noexpand\DeclareMathSymbol{\csname up##1\endcsname}%
+ {\noexpand\mathalpha}{operators}{\the\tud@res@cnt}%
+ }%
+ }{}%
+ \advance\tud@res@cnt\@ne\relax%
+ }%
+ \tud@res@cnt=\z@\relax%
+ \tud@math@loop@greeks@uc\tud@res@a%
+ }{}%
+% \end{macrocode}
+% Mit der Option \opt{lgrgreeks} besteht zusätzlich die Möglichkeit, fehlende
+% Glyphen aus einer potenziell sinnvollen Schriftfamilie in der LGR-Kodierung
+% zu ergänzen. Wird eine solche gefunden, wird diese in \cs{tud@res@a} abgelegt.
+% \begin{macrocode}
+ \let\tud@res@a\@empty%
+ \if@tud@lgrgreeks%
+ \tud@if@fdfileexists{LGR}{\tud@cs@use{familydefault}}{%
+ \def\tud@res@a{\tud@cs@use{familydefault}}%
+ }{%
+ \tud@if@fdfileexists{LGR}{\tud@math@letters@fam}{%
+ \let\tud@res@a\tud@math@letters@fam%
+ }{%
+ \tud@if@fdfileexists{LGR}{\tud@math@operators@fam}{%
+ \let\tud@res@a\tud@math@operators@fam%
+ }{}%
+ }%
+ }%
+ \fi%
+% \end{macrocode}
+% Die Gruppe wird beendet, die in \cs{tud@res@c} gesicherten Deklarationen
+% werden ausgeführt, und der Inhalt von \cs{tud@res@a} wird erhalten.
+% \begin{macrocode}
+ \edef\tud@res@a{%
+ \endgroup%
+ \expandonce\tud@res@c%
+ \edef\noexpand\tud@res@a{\tud@res@a}%
+ }%
+ \tud@res@a%
+ \ifx\tud@res@a\@empty\else%
+% \end{macrocode}
+% Mit der gefunden LGR-Schriftfamilie werden alle bisher nicht vorhanden
+% aufrechte und kursive griechische Glyphen aus den entsprechenden Slots
+% ergänzt.
+% \begin{macrocode}
+ \tud@math@declare@lgrgreeks{\tud@res@a}%
+ {\tud@cs@use{mddefault}}{\tud@cs@use{bfdefault}}%
+ {\tud@cs@use{updefault}}{\tud@cs@use{itdefault}}%
+ \let\tud@res@c\@empty%
+ \def\tud@res@b##1##2{%
+ \ifcsundef{it##1}{%
+ \eappto\tud@res@c{%
+ \noexpand\DeclareMathSymbol{\csname it##1\endcsname}%
+ {\noexpand\mathalpha}{tuditgrk}{##2}%
+ }%
+ }{}%
+ \ifcsundef{up##1}{%
+ \eappto\tud@res@c{%
+ \noexpand\DeclareMathSymbol{\csname up##1\endcsname}%
+ {\noexpand\mathalpha}{tudupgrk}{##2}%
+ }%
+ }{}%
+ }%
+ \tud@res@b{Gamma}{71}%
+ \tud@res@b{Delta}{68}%
+ \tud@res@b{Theta}{74}%
+ \tud@res@b{Lambda}{76}%
+ \tud@res@b{Xi}{88}%
+ \tud@res@b{Pi}{80}%
+ \tud@res@b{Sigma}{83}%
+ \tud@res@b{Upsilon}{85}%
+ \tud@res@b{Phi}{70}%
+ \tud@res@b{Psi}{89}%
+ \tud@res@b{Omega}{87}%
+ \tud@res@b{alpha}{97}%
+ \tud@res@b{beta}{98}%
+ \tud@res@b{gamma}{103}%
+ \tud@res@b{delta}{100}%
+ \tud@res@b{epsilon}{101}%
+ \tud@res@b{zeta}{122}%
+ \tud@res@b{eta}{104}%
+ \tud@res@b{theta}{106}%
+ \tud@res@b{iota}{105}%
+ \tud@res@b{kappa}{107}%
+ \tud@res@b{lambda}{108}%
+ \tud@res@b{mu}{109}%
+ \tud@res@b{nu}{110}%
+ \tud@res@b{xi}{120}%
+ \tud@res@b{pi}{112}%
+ \tud@res@b{rho}{114}%
+ \tud@res@b{sigma}{115}%
+ \tud@res@b{tau}{116}%
+ \tud@res@b{upsilon}{117}%
+ \tud@res@b{phi}{102}%
+ \tud@res@b{chi}{113}%
+ \tud@res@b{psi}{121}%
+ \tud@res@b{omega}{119}%
+ \tud@res@c%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \othervarphi
+% \end{macro}^^A \othervarsigma
+% \end{macro}^^A \othervarrho
+% \end{macro}^^A \othervarpi
+% \end{macro}^^A \othervartheta
+% \end{macro}^^A \othervarepsilon
+% \end{macro}^^A \otheromega
+% \end{macro}^^A \otherpsi
+% \end{macro}^^A \otherchi
+% \end{macro}^^A \otherphi
+% \end{macro}^^A \otherupsilon
+% \end{macro}^^A \othertau
+% \end{macro}^^A \othersigma
+% \end{macro}^^A \otherrho
+% \end{macro}^^A \otherpi
+% \end{macro}^^A \otherxi
+% \end{macro}^^A \othernu
+% \end{macro}^^A \othermu
+% \end{macro}^^A \otherlambda
+% \end{macro}^^A \otherkappa
+% \end{macro}^^A \otheriota
+% \end{macro}^^A \othertheta
+% \end{macro}^^A \othereta
+% \end{macro}^^A \otherzeta
+% \end{macro}^^A \otherepsilon
+% \end{macro}^^A \otherdelta
+% \end{macro}^^A \othergamma
+% \end{macro}^^A \otherbeta
+% \end{macro}^^A \otheralpha
+% \end{macro}^^A \otherXi
+% \end{macro}^^A \otherUpsilon
+% \end{macro}^^A \otherTheta
+% \end{macro}^^A \otherSigma
+% \end{macro}^^A \otherPsi
+% \end{macro}^^A \otherPi
+% \end{macro}^^A \otherPhi
+% \end{macro}^^A \otherOmega
+% \end{macro}^^A \otherLambda
+% \end{macro}^^A \otherGamma
+% \end{macro}^^A \otherDelta
+% \end{macro}^^A \itvarphi
+% \end{macro}^^A \itvarsigma
+% \end{macro}^^A \itvarrho
+% \end{macro}^^A \itvarpi
+% \end{macro}^^A \itvartheta
+% \end{macro}^^A \itvarepsilon
+% \end{macro}^^A \itomega
+% \end{macro}^^A \itpsi
+% \end{macro}^^A \itchi
+% \end{macro}^^A \itphi
+% \end{macro}^^A \itupsilon
+% \end{macro}^^A \ittau
+% \end{macro}^^A \itsigma
+% \end{macro}^^A \itrho
+% \end{macro}^^A \itpi
+% \end{macro}^^A \itxi
+% \end{macro}^^A \itnu
+% \end{macro}^^A \itmu
+% \end{macro}^^A \itlambda
+% \end{macro}^^A \itkappa
+% \end{macro}^^A \itiota
+% \end{macro}^^A \ittheta
+% \end{macro}^^A \iteta
+% \end{macro}^^A \itzeta
+% \end{macro}^^A \itepsilon
+% \end{macro}^^A \itdelta
+% \end{macro}^^A \itgamma
+% \end{macro}^^A \itbeta
+% \end{macro}^^A \italpha
+% \end{macro}^^A \itXi
+% \end{macro}^^A \itUpsilon
+% \end{macro}^^A \itTheta
+% \end{macro}^^A \itSigma
+% \end{macro}^^A \itPsi
+% \end{macro}^^A \itPi
+% \end{macro}^^A \itPhi
+% \end{macro}^^A \itOmega
+% \end{macro}^^A \itLambda
+% \end{macro}^^A \itGamma
+% \end{macro}^^A \itDelta
+% \end{macro}^^A \upvarphi
+% \end{macro}^^A \upvarsigma
+% \end{macro}^^A \upvarrho
+% \end{macro}^^A \upvarpi
+% \end{macro}^^A \upvartheta
+% \end{macro}^^A \upvarepsilon
+% \end{macro}^^A \upomega
+% \end{macro}^^A \uppsi
+% \end{macro}^^A \upchi
+% \end{macro}^^A \upphi
+% \end{macro}^^A \upupsilon
+% \end{macro}^^A \uptau
+% \end{macro}^^A \upsigma
+% \end{macro}^^A \uprho
+% \end{macro}^^A \uppi
+% \end{macro}^^A \upxi
+% \end{macro}^^A \upnu
+% \end{macro}^^A \upmu
+% \end{macro}^^A \uplambda
+% \end{macro}^^A \upkappa
+% \end{macro}^^A \upiota
+% \end{macro}^^A \uptheta
+% \end{macro}^^A \upeta
+% \end{macro}^^A \upzeta
+% \end{macro}^^A \upepsilon
+% \end{macro}^^A \updelta
+% \end{macro}^^A \upgamma
+% \end{macro}^^A \upbeta
+% \end{macro}^^A \upalpha
+% \end{macro}^^A \upXi
+% \end{macro}^^A \upUpsilon
+% \end{macro}^^A \upTheta
+% \end{macro}^^A \upSigma
+% \end{macro}^^A \upPsi
+% \end{macro}^^A \upPi
+% \end{macro}^^A \upPhi
+% \end{macro}^^A \upOmega
+% \end{macro}^^A \upLambda
+% \end{macro}^^A \upGamma
+% \end{macro}^^A \upDelta
+% \end{macro}^^A \tud@math@supplement@greeks
+% \end{macro}^^A \tud@math@map@@@greeks
+% \end{macro}^^A \tud@math@map@@greeks
+% \end{macro}^^A \tud@math@map@greeks
+% \begin{macro}{\tud@math@checkslanted@greeks}
+% \changes{v2.05d}{2016/09/22}{neu}^^A
+% Für die Verwendung der griechischen Glyphen im Mathematikmodus wird versucht,
+% ein hohes Maß an Kompatibilität für andere Pakete zu gewährleisten. Es wird
+% versucht zu erkennen, ob Pakete mit einer Option wie \opt{slantedGreek},
+% \opt{frenchmath} oder ähnlichem geladen wurde. Hierfür wird nach Definitionen
+% für \cs{upalpha} als auch \cs{itGamma} gesucht. Existieren die Makros nicht,
+% wird zumindest auf die aktuelle Definition von \cs{Gamma} geprüft und mit der
+% standardmäßigen Variant der Glyphe verglichen. Wurde eine passende Definition
+% gefunden, wird die Option \opt{slantedgreek} voreingestellt.
+% \begin{macrocode}
+\newcommand*\tud@math@checkslanted@greeks{%
+ \begingroup%
+% \end{macrocode}
+% Wird keine Änderung durch Pakete erkannt, werden ab \TUDScript-Version~v2.06
+% die Glyphen kursiv gesetzt. Dies betrifft insbesondere die Majuskeln, welche
+% bei \LaTeX{} normalerweise aufrecht gesetzt werden.
+% \begin{macrocode}
+ \def\tud@res@c{%
+ \tud@if@v@lower{2.06}{%
+ \TUD@key@preset{slantedgreek}{standard}%
+ }{%
+ \TUD@key@preset{slantedgreek}{true}%
+ }%
+ }%
+ \@tud@res@swafalse%
+ \ifcsdef{upalpha}{%
+ \ifx\upalpha\alpha%
+ \@tud@res@swatrue%
+ \fi%
+ }{}%
+% \end{macrocode}
+% Existiert \cs{upalpha} und ist mit \cs{alpha} identisch, werden \emph{alle}
+% griechischen Glyphen aufrecht gesetzt.
+% \begin{macrocode}
+ \if@tud@res@swa%
+ \def\tud@res@c{\TUD@key@preset{slantedgreek}{false}}%
+ \else%
+% \end{macrocode}
+% Existiert \cs{itGamma} und ist mit \cs{Gamma} oder\dots
+% \begin{macrocode}
+ \ifcsdef{itGamma}{%
+ \ifx\itGamma\Gamma%
+ \@tud@res@swatrue%
+ \fi%
+ }{%
+% \end{macrocode}
+% \dots\cs{Gamma} entspricht einer möglichen Standarddefnition,\dots
+% \begin{macrocode}
+ \let\tud@res@a\relax%
+ \let\tud@res@b\relax%
+ \DeclareMathSymbol{\tud@res@a}{\mathalpha}{letters}{0}%
+ \DeclareMathSymbol{\tud@res@b}{\mathord}{letters}{0}%
+ \ifx\Gamma\tud@res@a\relax\@tud@res@swatrue\fi%
+ \ifx\Gamma\tud@res@b\relax\@tud@res@swatrue\fi%
+ }%
+% \end{macrocode}
+% \dots werden \emph{alle} griechischen Glyphen kursiv gesetzt.
+% \begin{macrocode}
+ \if@tud@res@swa%
+ \def\tud@res@c{\TUD@key@preset{slantedgreek}{true}}%
+ \fi%
+ \fi%
+ \edef\tud@res@c{\endgroup\expandonce\tud@res@c}%
+ \tud@res@c%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@math@checkslanted@greeks
+% \begin{macro}{\tud@cdmath@init}
+% \changes{v2.06}{2018/07/02}{neu}^^A
+% \begin{macro}{\tud@cdmath@@init}
+% \changes{v2.06}{2018/07/02}{neu}^^A
+% \changes{v2.06a}{2019/07/09}{Bugfix für \pkg{mathastext} Eingabekodierung}^^A
+% \begin{macro}{\tud@x@mathastext@enc}
+% \changes{v2.06a}{2019/07/09}{neu}^^A
+% \begin{macro}{\mv@tudnormal}
+% \begin{macro}{\mv@tudbold}
+% \begin{macro}{\mv@tuddin}
+% \begin{macro}{\tud@mathversion}
+% \changes{v2.06}{2019/06/17}{neu}^^A
+% \begin{macro}{\MTDeclareVersion}
+% \changes{v2.06}{2019/06/17}{neu}^^A
+% \begin{macro}{\MTversion@@}
+% \changes{v2.06}{2019/06/17}{neu}^^A
+% Die folgenden Befehle dienen allesamt für das Bereitstellen der Schriften des
+% \CDs im mathematischen Satz. Hierbei kommt das Paket \pkg{mathastext} zum
+% Einsatz, falls \OpenSans verwendet wird.
+% \begin{macrocode}
+\newcommand*\mv@tudnormal{}
+\newcommand*\mv@tudbold{}
+\newcommand*\mv@tuddin{}
+% \end{macrocode}
+% Um das Umschalten der Mathematikversion mit \cs{mathversion} auch nutzen zu
+% können, wenn \pkg{mathastext} für die Schriften des \CDs aktiv ist, wird ein
+% Wrappermakro benötigt, welches im Bedarfsfall\cs{MTversion*} aufruft. Hierfür
+% wird zunächst auf die gewünschte Mathematikversion, danach der originale
+% Befehl \cs{mathversion} wiederhergestellt, aufgerufen und anschließend wieder
+% auf das Wrappermakro \cs{tud@mathversion} zurückgesetzt.
+% \begin{macrocode}
+\AfterPackage*{mathastext}{%
+ \newrobustcmd*\tud@mathversion[1]{%
+ \begingroup%
+ \let\tud@res@a\relax%
+ \if@tud@cdmath@active%
+ \ifstr{#1}{normal}{%
+ \def\tud@res@a{tudnormal}%
+ }{%
+ \ifstr{#1}{bold}{%
+ \def\tud@res@a{tudbold}%
+ }{}%
+ }%
+ \fi%
+ \edef\tud@res@a{%
+ \endgroup%
+ \noexpand\tud@cs@restore{mathversion}%
+ \ifx\tud@res@a\relax%
+ \noexpand\mathversion{#1}%
+ \else%
+ \noexpand\MTversion*{\tud@res@a}%
+ \fi%
+ \noexpand\tud@cs@store{mathversion}%
+ \noexpand\tud@cs@letltx{mathversion}{tud@mathversion}%
+ }%
+ \tud@res@a%
+ }%
+ \AtEndPreamble{%
+ \tud@cs@store{mathversion}%
+ \tud@cs@letltx{mathversion}{tud@mathversion}%
+ }%
+}
+% \end{macrocode}
+% Mit \cs{tud@cdmath@init} werden für den Mathematikmodus die Schriften im
+% \CD deklariert.
+% \begin{macrocode}
+\newcommand*\tud@cdmath@init{%
+% \end{macrocode}
+% Für die Schriftfamilie \OpenSans existieren leider bisher keine Kodierung für
+% den Mathematikmodus (\val{OML}, \val{OMS}, \val{OMX}), weshalb hierfür das
+% Paket \pkg{mathastext} genutzt wird, um trotzdem einen mathematischen Satz zu
+% ermöglichen. Dabei wird die Computer~Modern in der \val{LGR}~Kodierung
+% zwingend benötigt.
+%
+% Für die LGR-Kodierung werden die Bundles \pkg{cbfonts} und \pkg{cbfonts-fd}
+% benötigt. Leider lässt sich momentan nur auf letzteres testen. Für ersteres
+% ließe sich |\font\testfont=grmn1200|\footnote{\file{ltxcheck.tex}} oder
+% \verb+\immediate\openin\pathfont="|kpsewhich grmn1200.tfm"+\ignorespaces%
+% \footnote{\url{https://tex.stackexchange.com/questions/306980/}} oder nutzen.
+% Beide Ansätze sind aber nicht vollends stimmig. Der erste funktioniert nicht,
+% sobald der Anwender \val{-interaction-mode} selbst definiert und für den
+% zweiten müssen zumindest eingeschränkte Schreibrechte aktiviert sein.
+% \begin{macrocode}
+ \@tud@res@swafalse%
+ \if@tud@cdfont@fam@exist%
+ \@tud@res@swatrue%
+ \if@tud@cdoldfont@active\else%
+ \tud@if@fdfileexists{LGR}{cmr}{}{%
+ \@tud@res@swafalse%
+ \def\tud@res@a{%
+%<*class>
+ \ClassWarningNoLine{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageWarningNoLine{tudscrfonts}%
+%</package>
+ {%
+ The packages `cbfonts/cbgreek' and\MessageBreak%
+ `cbfonts-fd' have to be installed for using\MessageBreak%
+ corporate design fonts in math mode. As they\MessageBreak%
+ are not, standard math versions are applied%
+ }%
+ }%
+ \if@tud@cdmath@active%
+ \tud@res@a%
+ \else%
+ \eappto\tud@cdmath@wrn{\expandonce\tud@res@a}%
+ \fi%
+ }%
+ \fi%
+ \fi%
+% \end{macrocode}
+% Um die Mathematikschriften sauber zu definieren, ist das Laden von bestimmten
+% Paketen durch den Anwender ungünstig. Deshalb wird für diesen Fall eine
+% Warnung ausgegeben.
+% \begin{macrocode}
+ \if@tud@res@swa%
+ \if@tud@cdoldfont@active\else%
+ \if@tud@cdmath@active%
+ \def\tud@res@a##1{%
+%<*class>
+ \ClassWarningNoLine{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageWarningNoLine{tudscrfonts}%
+%</package>
+ {%
+ You should not load package `##1'\MessageBreak%
+ manually when option `cdmath=true' is active as\MessageBreak%
+ TUD-Script uses package `mathastext' internally\MessageBreak%
+ with a specific set of required options for the\MessageBreak%
+ math font setup%
+ }%
+ }%
+ \@ifpackageloaded{sansmath}{%
+ \tud@res@a{sansmath}%
+ }{}%
+ \@ifpackageloaded{mathastext}{%
+ \tud@res@a{mathastext}%
+ }{}%
+ \fi%
+ \PassOptionsToPackage{%
+ subdued,defaultmathsizes,nosmalldelims,noequal,%
+ defaultrm,defaultbf,defaultit,defaultsf,defaulttt%
+ }{mathastext}%
+ \RequirePackage{mathastext}[2018/08/22]%
+ \tud@math@declare@lgrgreeks{cmr}{m}{bx}{n}{it}%
+ \fi%
+ \providecommand*\MTDeclareVersion[6][]{\DeclareMathVersion{##2}}%
+ \providecommand*\MTversion@@[1]{}%
+ \tud@cdmath@@init{\tud@cdfont@fam@lf}{\tud@ttfont@fam}%
+% \end{macrocode}
+% Die Symbole für aufrechte und kursive griechische Glyphen werden definiert.
+% Da im Paket \pkg{opensans} keine mathematischen Schriftkodierungen enthalten
+% sind, wird in diesem Fall auf die LGR-Kodierung zurückgegriffen.
+% \ToDo{kann mit \pkg{opensans-math} raus}[v2.??]
+% \begin{macrocode}
+ \if@tud@cdoldfont@active%
+ \tud@res@cnt=\z@\relax%
+ \tud@math@loop@greeks@uc\tud@cdmath@declare@greek@uc%
+ \tud@math@loop@greeks@lc\tud@cdmath@declare@greek@lc%
+ \else%
+ \tud@cdmath@declare@greek@lgr%
+ \fi%
+% \end{macrocode}
+% Abschließend werden einzelne Zeichen für die Mathematikversionen definiert.
+% \begin{macrocode}
+ \tud@cdmath@declare@char{*}{\mathbin}{symbols}{"03}%
+% \end{macrocode}
+% Nach der Definition der griechischen Glyphen werden diese~-- inklusive aller
+% Auswahlvariationen~-- deklariert.
+% \begin{macrocode}
+ \tud@cdmath@also@greeks%
+% \end{macrocode}
+% Sollten die notwendigen Schriftfamilien nicht gefunden worden sein, werden
+% keine separaten Mathematikversionen definiert.
+% \begin{macrocode}
+ \else%
+ \let\mv@tudnormal\mv@normal%
+ \let\mv@tudbold\mv@bold%
+ \if@tud@cdoldfont@active%
+ \let\mv@tuddin\mv@bold%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% Mit \cs{tud@cdmath@@init} werden die notwendigen Mathematikversionen und die
+% dazugehörigen Symbolschriften sowie Alphabete deklariert.
+% \begin{macrocode}
+\newcommand*\tud@x@mathastext@enc{OT1}
+\newcommand*\tud@cdmath@@init[2]{%
+% \end{macrocode}
+% Mit \cs{tud@cdfont@@set} werden die Schriftstärken gemäß den ausgewählten
+% Schriftoptionen aktiviert (\cs{tud@cdfont@md}, \cs{tud@cdfont@bf},
+% \cs{tud@cdfont@ebf}), um diese auch für die Mathematikschriften zu nutzen.
+% \begin{macrocode}
+ \tud@cdfont@@set%
+ \tud@ttfont@@set%
+% \end{macrocode}
+% Die Deklaration der Mathematikversionen für die alten Schriften. Auch für die
+% Schrift \DIN werden mathematische Glyphen bereitgestellt. Diese wurden schon
+% bei der Installation aus dem \pkg{iwona}-Paket entnommen. Die verwendeten
+% Symbole stammen aus diesem Paket.
+% \begin{macrocode}
+ \if@tud@cdoldfont@active%
+ \DeclareMathVersion{tudnormal}%
+ \DeclareMathVersion{tudbold}%
+ \DeclareMathVersion{tuddin}%
+ \SetSymbolFont{operators}{tudnormal}{OT1}{#1}{\tud@cdfont@md}{n}%
+ \SetSymbolFont{operators}{tudbold}{OT1}{#1}{\tud@cdfont@bf}{n}%
+ \SetSymbolFont{operators}{tuddin}{OT1}{\tud@cdfont@db}{b}{n}%
+ \SetSymbolFont{letters}{tudnormal}{OML}{#1}{\tud@cdfont@md}{sl}%
+ \SetSymbolFont{letters}{tudbold}{OML}{#1}{\tud@cdfont@bf}{sl}%
+ \SetSymbolFont{letters}{tuddin}{OML}{\tud@cdfont@db}{b}{sl}%
+ \SetSymbolFont{symbols}{tudnormal}{OMS}{#1}{\tud@cdfont@md}{n}%
+ \SetSymbolFont{symbols}{tudbold}{OMS}{#1}{\tud@cdfont@bf}{n}%
+ \SetSymbolFont{symbols}{tuddin}{OMS}{\tud@cdfont@db}{b}{n}%
+ \SetSymbolFont{largesymbols}{tudnormal}{OMX}{iwona}{\tud@cdfont@md}{n}%
+ \SetSymbolFont{largesymbols}{tudbold}{OMX}{iwona}{\tud@cdfont@bf}{n}%
+ \SetSymbolFont{largesymbols}{tuddin}{OMX}{iwona}{ebc}{n}%
+ \SetMathAlphabet{\mathnormal}{tudnormal}{OML}{#1}{\tud@cdfont@md}{sl}%
+ \SetMathAlphabet{\mathnormal}{tudbold}{OML}{#1}{\tud@cdfont@bf}{sl}%
+ \SetMathAlphabet{\mathnormal}{tuddin}{OML}{\tud@cdfont@db}{b}{sl}%
+ \tud@if@ismathalphabet{\mathbold}{%
+ \SetMathAlphabet{\mathbold}{tudnormal}{OML}{#1}{\tud@cdfont@bf}{sl}%
+ \SetMathAlphabet{\mathbold}{tudbold}{OML}{#1}{\tud@cdfont@ebf}{sl}%
+ \SetMathAlphabet{\mathbold}{tuddin}{OML}{\tud@cdfont@db}{b}{sl}%
+ }{}%
+ \else%
+% \end{macrocode}
+% Für \OpenSans wird mangels der Kodierungen \val{OML}, \val{OMS} und \val{OMX}
+% im Paket \pkg{opensans} zur Deklaration der Mathematikversionen der Befehl
+% \cs{MTDeclareVersion} aus dem Paket \pkg{mathastext} genutzt. Dabei wird die
+% Kodierung der Mathematikschriften identisch zur genutzten Eingabekodierung
+% für den Text gesetzt, da diese in der Version \val{v1.3t} nicht problemfrei
+% unabhängig davon gewählt werden kann. Sämtliche fehlenden Kodierungen werden
+% notdürftig mit dem Paket \pkg{iwona} definiert. Zur Definition griechischer
+% Glyphen wird die LGR-Kodierung der \OpenSans genutzt.
+% \begin{macrocode}
+ \edef\tud@res@b{\encodingdefault}%
+ \@tfor\tud@res@a:={T1}{TU}{EU1}{EU2}\do{%
+ \ifx\tud@res@a\tud@res@b%
+ \let\tud@x@mathastext@enc\tud@res@b%
+ \@break@tfor
+ \fi%
+ }%
+ \MTDeclareVersion[it]{tudnormal}%
+ {\tud@x@mathastext@enc}{#1}{\tud@cdfont@md}{n}%
+ \MTDeclareVersion[it]{tudbold}%
+ {\tud@x@mathastext@enc}{#1}{\tud@cdfont@bf}{n}%
+ \SetSymbolFont{operators}{tudnormal}{OT1}{iwona}{\tud@cdfont@md}{n}%
+ \SetSymbolFont{operators}{tudbold}{OT1}{iwona}{\tud@cdfont@bf}{n}%
+% \end{macrocode}
+% \ToDo{%
+% sollte \pkg{opensans-math} irgendwann einmal real werden, dann würde es
+% sich anbieten, die OML-Kodierung ähnlich zu \pkg{euler[vm]} auf eine
+% U-Kodierung zu erweitern und aufrechte griechische Glyphen einzubinden, um
+% ein Alphabet zu sparen. Siehe Kodierungen FML/FMS, LML/LMS, LBL/LBS, LS1/LS2
+% }[v2.??]
+% \begin{macrocode}
+ \SetSymbolFont{letters}{tudnormal}{OML}{iwona}{\tud@cdfont@md}{it}%
+ \SetSymbolFont{letters}{tudbold}{OML}{iwona}{\tud@cdfont@bf}{it}%
+%^^A \SetSymbolFont{letters}{tudnormal}{U}{#1m}{\tud@cdfont@md}{it}%
+%^^A \SetSymbolFont{letters}{tudbold}{U}{#1m}{\tud@cdfont@bf}{it}%
+ \SetSymbolFont{symbols}{tudnormal}{OMS}{iwona}{\tud@cdfont@md}{n}%
+ \SetSymbolFont{symbols}{tudbold}{OMS}{iwona}{\tud@cdfont@bf}{n}%
+ \SetSymbolFont{largesymbols}{tudnormal}{OMX}{iwona}{\tud@cdfont@md}{n}%
+ \SetSymbolFont{largesymbols}{tudbold}{OMX}{iwona}{\tud@cdfont@bf}{n}%
+ \SetSymbolFont{tudupgrk}{tudnormal}{LGR}{#1}{\tud@cdfont@md}{n}%
+ \SetSymbolFont{tuditgrk}{tudnormal}{LGR}{#1}{\tud@cdfont@md}{it}%
+ \SetSymbolFont{tudupgrk}{tudbold}{LGR}{#1}{\tud@cdfont@bf}{n}%
+ \SetSymbolFont{tuditgrk}{tudbold}{LGR}{#1}{\tud@cdfont@bf}{it}%
+%^^A \SetMathAlphabet{\mathnormal}{tudnormal}{U}{#1m}{\tud@cdfont@md}{it}%
+%^^A \SetMathAlphabet{\mathnormal}{tudbold}{U}{#1m}{\tud@cdfont@bf}{it}%
+ \tud@if@ismathalphabet{\mathbold}{%
+ \SetMathAlphabet{\mathbold}{tudnormal}%
+ {\tud@x@mathastext@enc}{#1}{\tud@cdfont@bf}{it}%
+ \SetMathAlphabet{\mathbold}{tudbold}%
+ {\tud@x@mathastext@enc}{#1}{\tud@cdfont@ebf}{it}%
+%^^A \SetMathAlphabet{\mathbold}{tudnormal}{U}{#1m}{\tud@cdfont@bf}{it}%
+%^^A \SetMathAlphabet{\mathbold}{tudbold}{U}{#1m}{\tud@cdfont@ebf}{it}%
+ }{}%
+ \fi%
+ \SetMathAlphabet{\mathrm}{tudnormal}{OT1}{#1}{\tud@cdfont@md}{n}%
+ \SetMathAlphabet{\mathrm}{tudbold}{OT1}{#1}{\tud@cdfont@bf}{n}%
+ \SetMathAlphabet{\mathbf}{tudnormal}{OT1}{#1}{\tud@cdfont@bf}{n}%
+ \SetMathAlphabet{\mathbf}{tudbold}{OT1}{#1}{\tud@cdfont@ebf}{n}%
+ \SetMathAlphabet{\mathsf}{tudnormal}{OT1}{#1}{\tud@cdfont@md}{n}%
+ \SetMathAlphabet{\mathsf}{tudbold}{OT1}{#1}{\tud@cdfont@bf}{n}%
+ \SetMathAlphabet{\mathit}{tudnormal}{OT1}{#1}{\tud@cdfont@md}{it}%
+ \SetMathAlphabet{\mathit}{tudbold}{OT1}{#1}{\tud@cdfont@bf}{it}%
+ \SetMathAlphabet{\mathtt}{tudnormal}{OT1}{#2}{\tud@ttfont@md}{n}%
+ \SetMathAlphabet{\mathtt}{tudbold}{OT1}{#2}{\tud@ttfont@bf}{n}%
+ \if@tud@cdoldfont@active%
+ \SetMathAlphabet{\mathrm}{tuddin}{OT1}{\tud@cdfont@db}{b}{n}%
+ \SetMathAlphabet{\mathbf}{tuddin}{OT1}{\tud@cdfont@db}{b}{n}%
+ \SetMathAlphabet{\mathsf}{tuddin}{OT1}{\tud@cdfont@db}{b}{n}%
+ \SetMathAlphabet{\mathit}{tuddin}{OT1}{\tud@cdfont@db}{b}{sl}%
+ \SetMathAlphabet{\mathtt}{tuddin}{OT1}{#2}{\tud@ttfont@ebf}{n}%
+ \fi%
+ \IfFileExists{ueus.fd}{%
+ \SetMathAlphabet{\mathcal}{tudnormal}{U}{eus}{m}{n}%
+ \SetMathAlphabet{\mathcal}{tudbold}{U}{eus}{b}{n}%
+ \if@tud@cdoldfont@active%
+ \SetMathAlphabet{\mathcal}{tuddin}{U}{eus}{b}{n}%
+ \fi%
+ }{}%
+ \tud@if@ismathalphabet{\mathfrak}{%
+ \IfFileExists{ueuf.fd}{%
+ \SetMathAlphabet{\mathfrak}{tudnormal}{U}{euf}{m}{n}%
+ \SetMathAlphabet{\mathfrak}{tudbold}{U}{euf}{b}{n}%
+ \if@tud@cdoldfont@active%
+ \SetMathAlphabet{\mathfrak}{tuddin}{U}{euf}{b}{n}%
+ \fi%
+ }{}%
+ }{}%
+% \end{macrocode}
+% Das Paket \pkg{cmbright} stelt zusätzlich noch Schriftschnitte für die
+% Symbolschriften \val{AMSa} und \val{AMSb} bereit, welche gegebenenfalls für
+% die alten Schriften geladen werden.
+% \begin{macrocode}
+ \AtBeginDocument{%
+ \@tud@res@swafalse%
+ \tud@if@issymbolfont{AMSa}{\@tud@res@swatrue}{}%
+ \tud@if@issymbolfont{AMSb}{\@tud@res@swatrue}{}%
+ \if@tud@res@swa%
+ \if@tud@cdoldfont@active%
+ \DeclareFontFamily{U}{\tud@cdfont@fam@lf a}{}%
+ \DeclareFontShape{U}{\tud@cdfont@fam@lf a}{m}{n}{<->cmbras10}{}%
+ \SetSymbolFont{AMSa}{tudnormal}{U}{\tud@cdfont@fam@lf a}{m}{n}%
+ \SetSymbolFont{AMSa}{tudbold}{U}{\tud@cdfont@fam@lf a}{m}{n}%
+ \DeclareFontFamily{U}{\tud@cdfont@fam@lf b}{}%
+ \DeclareFontShape{U}{\tud@cdfont@fam@lf b}{m}{n}{<->cmbrbs10}{}%
+ \SetSymbolFont{AMSb}{tudnormal}{U}{\tud@cdfont@fam@lf b}{m}{n}%
+ \SetSymbolFont{AMSb}{tudbold}{U}{\tud@cdfont@fam@lf b}{m}{n}%
+% \end{macrocode}
+% Wurde ein Paket geladen, welches die \pkg{amsfonts}-Schriftfamilie definiert,
+% so wird bei der Verwendung von \OpenSans eine Information ausgegeben, dass im
+% Zweifel das Paket \pkg{mdsymbol} besser zu den Schriften des \CDs passt.
+% \begin{macrocode}
+ \else%
+ \@ifpackageloaded{mdsymbol}{}{%
+ \appto\tud@cdmath@wrn{%
+%<*class>
+ \ClassInfoNoLine{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageInfoNoLine{tudscrfonts}%
+%</package>
+ {%
+ You may load package `mdsymbol' in order to\MessageBreak%
+ get symbols matching the used math font%
+ }%
+ }%
+ }%
+ \fi%
+ \fi%
+% \end{macrocode}
+% Wurde das Paket \pkg{fontspec} mit der Option \opt{math} geladen, so wird
+% durch dieses die Symbolschrift \val{legacymaths} erstellt. Diese wird
+% gegebenenfalls für die Mathematikversionen sinnvoll definiert.
+% \begin{macrocode}
+ \tud@if@issymbolfont{legacymaths}{%
+ \SetSymbolFont{legacymaths}{tudnormal}{OT1}{#1}{\tud@cdfont@md}{n}%
+ \SetSymbolFont{legacymaths}{tudbold}{OT1}{#1}{\tud@cdfont@bf}{n}%
+ \if@tud@cdoldfont@active%
+ \SetSymbolFont{legacymaths}{tuddin}{OT1}{\tud@cdfont@db}{b}{n}%
+ \fi%
+ }{}%
+% \end{macrocode}
+% Daran anschließend wird die zuvor definierte Schrift in einer Box verwendet,
+% um das Laden der Schriftdefinitionen am Dokumentbeginn zu forcieren.
+% \begin{macrocode}
+ \if@tud@cdoldfont@active%
+ \if@tud@cdmath@active%
+ \sbox\z@{\mathversion{tudnormal}$ $\mathversion{tuddin}$ $}%
+ \fi%
+ \fi%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \MTversion@@
+% \end{macro}^^A \MTDeclareVersion
+% \end{macro}^^A \tud@mathversion
+% \end{macro}^^A \mv@tuddin
+% \end{macro}^^A \mv@tudbold
+% \end{macro}^^A \mv@tudnormal
+% \end{macro}^^A \tud@x@mathastext@enc
+% \end{macro}^^A \tud@cdmath@@init
+% \end{macro}^^A \tud@cdmath@init
+% \begin{macro}{\tud@cdmath@declare@symb}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% \begin{macro}{\tud@cdmath@declare@alias}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% \begin{macro}{\tud@cdmath@symb@list}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% \begin{macro}{\tud@cdmath@declare@char}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% \begin{macro}{\tud@cdmath@char@list}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% \begin{macro}{\tud@DeclareMathSymbol}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% Mit \cs{tud@cdmath@declare@symb} und \cs{tud@cdmath@declare@char} können
+% Glyhen respektive einzelne Zeichen definiert werden, welche über das Makro
+% \cs{tud@cdmath@symbols@set} nur zum Einsatz kommen, wenn \opt{cdmath=true}
+% aktiviert wurde. Damit können in den unterschiedlichen Mathematikversionen
+% Symbole wie beispielsweise \cs{alpha} unterschiedlich kodiert werden, was
+% über die einfache Verwendung von \cs{DeclareMathSymbol} nicht möglich ist.
+% \begin{macrocode}
+\newcommand*\tud@cdmath@symb@list{}
+\newcommand*\tud@cdmath@declare@symb[4]{%
+ \listeadd\tud@cdmath@symb@list{#1}%
+ \tud@DeclareMathSymbol{#1}{#2}{#3}{#4}%
+}
+% \end{macrocode}
+% Hiermit kann ein Alias-Befehl für ein Symbol definiert werden.
+% \begin{macrocode}
+\newcommand*\tud@cdmath@declare@alias[2]{%
+ \listeadd\tud@cdmath@symb@list{#1}%
+ \ifcsdef{tud@cdmath@symbol@#2}{%
+ \csedef{tud@cdmath@symbol@#1}{\csname tud@cdmath@symbol@#2\endcsname}%
+ }{}%
+}
+\newcommand*\tud@cdmath@char@list{}
+\newcommand*\tud@cdmath@declare@char[4]{%
+ \listeadd\tud@cdmath@char@list{#1}%
+ \tud@DeclareMathSymbol{#1}{#2}{#3}{#4}%
+}
+% \end{macrocode}
+% Die an \cs{tud@cdmath@declare@symb} und \cs{tud@cdmath@declare@char}
+% übergebene Bezeichner für Auswahlbefehle erhalten \cs{tud@cdmath@symbol@} als
+% Präfix, wodurch sich die Definitionen für die einzelnen Mathematikversionen
+% beliebig tauschen lassen.
+% \begin{macrocode}
+\newcommand*\tud@DeclareMathSymbol[4]{%
+ \begingroup%
+ \edef\tud@res@a{%
+ \endgroup%
+ \noexpand\DeclareMathSymbol%
+ {\csname tud@cdmath@symbol@#1\endcsname}%
+ {\etex@unexpanded{#2}}{#3}{#4}%
+ }%
+ \tud@res@a%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@DeclareMathSymbol
+% \end{macro}^^A \tud@cdmath@char@list
+% \end{macro}^^A \tud@cdmath@declare@char
+% \end{macro}^^A \tud@cdmath@symb@list
+% \end{macro}^^A \tud@cdmath@declare@alias
+% \end{macro}^^A \tud@cdmath@declare@symb
+% \begin{macro}{\tud@cdmath@symbols@set}
+% \changes{v2.04}{2015/03/10}{neu}^^A
+% \begin{macro}{\tud@cdmath@symbols@toks}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% \begin{macro}{\tud@cdmath@symbols@set@cmd}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% \begin{macro}{\tud@cdmath@symbols@set@chr}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% \begin{macro}{\tud@cdmath@symbols@reset}
+% \changes{v2.04}{2015/03/10}{neu}^^A
+% Mit diesen beiden Befehlen kann innerhalb des Dokumentes problemlos zwischen
+% mathematischen Symbolen und Zeichen für die Schriften des \CDs, welche mit
+% \cs{tud@cdmath@declare@symb} sowie \cs{tud@cdmath@declare@char} deklariert
+% wurden, und den normalen gewechselt werden.
+% \begin{macrocode}
+\newtoks\tud@cdmath@symbols@toks
+\newcommand*\tud@cdmath@symbols@set{%
+% \end{macrocode}
+% Die Sicherung der alten Definitionen erfolgt nur einmalig. Die Liste der
+% Symbole respektive Zeichen wird durchlaufen und die erfolgten Definitionen
+% werden umgesetzt.
+% \begin{macrocode}
+ \expandafter\IfArgIsEmpty\expandafter{\the\tud@cdmath@symbols@toks}{%
+ \forlistloop\tud@cdmath@symbols@set@cmd\tud@cdmath@symb@list%
+ \forlistloop\tud@cdmath@symbols@set@chr\tud@cdmath@char@list%
+% \end{macrocode}
+% Wird das Tokenregister abgerufen, soll es anschließend auch wieder geleert
+% werden.
+% \begin{macrocode}
+ \addto@hook\tud@cdmath@symbols@toks{\tud@cdmath@symbols@toks{}}%
+ }{}%
+}
+% \end{macrocode}
+% Beim Setzen der Mathematikversion im \CD wird zur Wiederherstellung der
+% Standardmathematikversion das Vorgehen im Token \cs{tud@cdmath@symbols@toks}
+% definiert.
+% \begin{macrocode}
+\newcommand*\tud@cdmath@symbols@set@cmd[1]{%
+% \end{macrocode}
+% Existiert ein Befehl in der Standardmathematikversion, dann wird dieser
+% gesichert und später wiederhergestellt. Andernfalls wird er wieder undefinert
+% gesetzt.
+% \begin{macrocode}
+ \ifcsdef{#1}{%
+ \tud@cs@store{#1}%
+ \addto@hook\tud@cdmath@symbols@toks{\tud@cs@restore{#1}}%
+ }{%
+ \addto@hook\tud@cdmath@symbols@toks{\csundef{#1}}%
+ }%
+% \end{macrocode}
+% Nur wenn ein gewünschtes Symbol auch existiert, wird es gesetzt. Damit können
+% Symbole für \opt{cdmath=true} auch gezielt undefiniert gesetzt werden.
+% \begin{macrocode}
+ \ifcsdef{tud@cdmath@symbol@#1}{%
+ \tud@cs@letltx{#1}{tud@cdmath@symbol@#1}%
+ }{%
+ \csundef{#1}%
+ }%
+}
+% \end{macrocode}
+% Für einzelne Zeichen ist das Vorgehen vom Prinzip her gleich. Allerdings wird
+% hier der zu sichernde \cs{mathcode} direkt in \cs{tud@cdmath@symbols@toks}
+% geschrieben.
+% \begin{macrocode}
+\newcommand*\tud@cdmath@symbols@set@chr[1]{%
+ \edef\tud@res@a{\global\mathcode`#1=\the\mathcode`#1\relax}%
+ \eaddto@hook\tud@cdmath@symbols@toks{\tud@res@a}%
+% \end{macrocode}
+% Für das Überschreiben des \cs{mathcode} des gewünschen \meta{Zeichen} wird
+% dieser aus der Bedeutung von \cs{tud@cdmath@symbols@\meta{Zeichen}} mit
+% \cs{meaning} herausgelöst.
+% \begin{macrocode}
+ \begingroup%
+ \edef\tud@res@a{\expandafter\meaning\csname tud@cdmath@symbol@#1\endcsname}%
+ \def\tud@res@b##1"##2\@nil{"##2}%
+ \edef\tud@res@c{\expandafter\tud@res@b\tud@res@a\@nil}%
+ \edef\tud@res@a{%
+ \endgroup%
+ \global\mathcode`#1=\tud@res@c%
+ }%
+ \tud@res@a%
+}
+% \end{macrocode}
+% Für das Zurücksetzen muss lediglich das Tokenregister aufgerufen werden.
+% \begin{macrocode}
+\newcommand*\tud@cdmath@symbols@reset{\the\tud@cdmath@symbols@toks}
+% \end{macrocode}
+% \end{macro}^^A \tud@cdmath@symbols@reset
+% \end{macro}^^A \tud@cdmath@symbols@set@chr
+% \end{macro}^^A \tud@cdmath@symbols@set@cmd
+% \end{macro}^^A \tud@cdmath@symbols@toks
+% \end{macro}^^A \tud@cdmath@symbols@set
+% \begin{macro}{\tud@cdmath@declare@greek@uc}
+% \changes{v2.04}{2015/03/10}{neu}^^A
+% \begin{macro}{\tud@cdmath@symbol@upGamma}
+% \begin{macro}{\tud@cdmath@symbol@upDelta}
+% \begin{macro}{\tud@cdmath@symbol@upTheta}
+% \begin{macro}{\tud@cdmath@symbol@upLambda}
+% \begin{macro}{\tud@cdmath@symbol@upXi}
+% \begin{macro}{\tud@cdmath@symbol@upPi}
+% \begin{macro}{\tud@cdmath@symbol@upSigma}
+% \begin{macro}{\tud@cdmath@symbol@upUpsilon}
+% \begin{macro}{\tud@cdmath@symbol@upPhi}
+% \begin{macro}{\tud@cdmath@symbol@upPsi}
+% \begin{macro}{\tud@cdmath@symbol@upOmega}
+% \begin{macro}{\tud@cdmath@symbol@itGamma}
+% \begin{macro}{\tud@cdmath@symbol@itDelta}
+% \begin{macro}{\tud@cdmath@symbol@itTheta}
+% \begin{macro}{\tud@cdmath@symbol@itLambda}
+% \begin{macro}{\tud@cdmath@symbol@itXi}
+% \begin{macro}{\tud@cdmath@symbol@itPi}
+% \begin{macro}{\tud@cdmath@symbol@itSigma}
+% \begin{macro}{\tud@cdmath@symbol@itUpsilon}
+% \begin{macro}{\tud@cdmath@symbol@itPhi}
+% \begin{macro}{\tud@cdmath@symbol@itPsi}
+% \begin{macro}{\tud@cdmath@symbol@itOmega}
+% In Anlehnung an verschiedene Pakete für Mathematikschriften werden Symbole
+% für aufrechte und kursive Majuskeln der griechischen Lettern definiert. Damit
+% auch bei diesen Buchstaben ein Umschalten für die unterschiedlichen Schriften
+% möglich ist, wird eine interne Version definiert und im Bedarfsfall der
+% dazugehörige \LaTeX-Befehl mit dieser überschrieben. Hierfür sind die beiden
+% Befehle \cs{tud@cdmath@symbols@set} und \cs{tud@cdmath@symbols@reset}
+% verantwortlich.
+% \ToDo{Codierungen \val{LS1/LS2}; siehe \pkg{stix,libertinust1math}}[v2.??]
+% \begin{macrocode}
+\newcommand*\tud@cdmath@declare@greek@uc[1]{%
+ \tud@cdmath@declare@symb{it#1}{\mathalpha}{letters}{\the\tud@res@cnt}%
+ \tud@cdmath@declare@symb{up#1}{\mathalpha}{operators}{\the\tud@res@cnt}%
+ \advance\tud@res@cnt\@ne\relax%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cdmath@symbol@itOmega
+% \end{macro}^^A \tud@cdmath@symbol@itPsi
+% \end{macro}^^A \tud@cdmath@symbol@itPhi
+% \end{macro}^^A \tud@cdmath@symbol@itUpsilon
+% \end{macro}^^A \tud@cdmath@symbol@itSigma
+% \end{macro}^^A \tud@cdmath@symbol@itPi
+% \end{macro}^^A \tud@cdmath@symbol@itXi
+% \end{macro}^^A \tud@cdmath@symbol@itLambda
+% \end{macro}^^A \tud@cdmath@symbol@itTheta
+% \end{macro}^^A \tud@cdmath@symbol@itDelta
+% \end{macro}^^A \tud@cdmath@symbol@itGamma
+% \end{macro}^^A \tud@cdmath@symbol@upOmega
+% \end{macro}^^A \tud@cdmath@symbol@upPsi
+% \end{macro}^^A \tud@cdmath@symbol@upPhi
+% \end{macro}^^A \tud@cdmath@symbol@upUpsilon
+% \end{macro}^^A \tud@cdmath@symbol@upSigma
+% \end{macro}^^A \tud@cdmath@symbol@upPi
+% \end{macro}^^A \tud@cdmath@symbol@upXi
+% \end{macro}^^A \tud@cdmath@symbol@upLambda
+% \end{macro}^^A \tud@cdmath@symbol@upTheta
+% \end{macro}^^A \tud@cdmath@symbol@upDelta
+% \end{macro}^^A \tud@cdmath@symbol@upGamma
+% \end{macro}^^A \tud@cdmath@declare@greek@uc
+% \begin{macro}{\tud@cdmath@declare@greek@lc}
+% \changes{v2.06}{2018/07/17}{neu}^^A
+% \begin{macro}{\tud@cdmath@symbol@upalpha}
+% \begin{macro}{\tud@cdmath@symbol@upbeta}
+% \begin{macro}{\tud@cdmath@symbol@upgamma}
+% \begin{macro}{\tud@cdmath@symbol@updelta}
+% \begin{macro}{\tud@cdmath@symbol@upepsilon}
+% \begin{macro}{\tud@cdmath@symbol@upzeta}
+% \begin{macro}{\tud@cdmath@symbol@upeta}
+% \begin{macro}{\tud@cdmath@symbol@uptheta}
+% \begin{macro}{\tud@cdmath@symbol@upiota}
+% \begin{macro}{\tud@cdmath@symbol@upkappa}
+% \begin{macro}{\tud@cdmath@symbol@uplambda}
+% \begin{macro}{\tud@cdmath@symbol@upmu}
+% \begin{macro}{\tud@cdmath@symbol@upnu}
+% \begin{macro}{\tud@cdmath@symbol@upxi}
+% \begin{macro}{\tud@cdmath@symbol@uppi}
+% \begin{macro}{\tud@cdmath@symbol@uprho}
+% \begin{macro}{\tud@cdmath@symbol@upsigma}
+% \begin{macro}{\tud@cdmath@symbol@uptau}
+% \begin{macro}{\tud@cdmath@symbol@upupsilon}
+% \begin{macro}{\tud@cdmath@symbol@upphi}
+% \begin{macro}{\tud@cdmath@symbol@upchi}
+% \begin{macro}{\tud@cdmath@symbol@uppsi}
+% \begin{macro}{\tud@cdmath@symbol@upomega}
+% \begin{macro}{\tud@cdmath@symbol@upvarepsilon}
+% \begin{macro}{\tud@cdmath@symbol@upvartheta}
+% \begin{macro}{\tud@cdmath@symbol@upvarpi}
+% \begin{macro}{\tud@cdmath@symbol@upvarrho}
+% \begin{macro}{\tud@cdmath@symbol@upvarsigma}
+% \begin{macro}{\tud@cdmath@symbol@upvarphi}
+% \begin{macro}{\tud@cdmath@symbol@italpha}
+% \begin{macro}{\tud@cdmath@symbol@itbeta}
+% \begin{macro}{\tud@cdmath@symbol@itgamma}
+% \begin{macro}{\tud@cdmath@symbol@itdelta}
+% \begin{macro}{\tud@cdmath@symbol@itepsilon}
+% \begin{macro}{\tud@cdmath@symbol@itzeta}
+% \begin{macro}{\tud@cdmath@symbol@iteta}
+% \begin{macro}{\tud@cdmath@symbol@ittheta}
+% \begin{macro}{\tud@cdmath@symbol@itiota}
+% \begin{macro}{\tud@cdmath@symbol@itkappa}
+% \begin{macro}{\tud@cdmath@symbol@itlambda}
+% \begin{macro}{\tud@cdmath@symbol@itmu}
+% \begin{macro}{\tud@cdmath@symbol@itnu}
+% \begin{macro}{\tud@cdmath@symbol@itxi}
+% \begin{macro}{\tud@cdmath@symbol@itpi}
+% \begin{macro}{\tud@cdmath@symbol@itrho}
+% \begin{macro}{\tud@cdmath@symbol@itsigma}
+% \begin{macro}{\tud@cdmath@symbol@ittau}
+% \begin{macro}{\tud@cdmath@symbol@itupsilon}
+% \begin{macro}{\tud@cdmath@symbol@itphi}
+% \begin{macro}{\tud@cdmath@symbol@itchi}
+% \begin{macro}{\tud@cdmath@symbol@itpsi}
+% \begin{macro}{\tud@cdmath@symbol@itomega}
+% \begin{macro}{\tud@cdmath@symbol@itvarepsilon}
+% \begin{macro}{\tud@cdmath@symbol@itvartheta}
+% \begin{macro}{\tud@cdmath@symbol@itvarpi}
+% \begin{macro}{\tud@cdmath@symbol@itvarrho}
+% \begin{macro}{\tud@cdmath@symbol@itvarsigma}
+% \begin{macro}{\tud@cdmath@symbol@itvarphi}
+% Aufrechte griechische Minuskeln sind in den mathematischen Kodierungen von
+% \LaTeXe{} leider nicht enthalten, weshalb diese hier auch nicht für die
+% normale OML-Kodierung deklariert werden können.
+% \begin{macrocode}
+\newcommand*\tud@cdmath@declare@greek@lc[1]{%
+ \tud@cdmath@declare@symb{it#1}{\mathalpha}{letters}{\the\tud@res@cnt}%
+% \end{macrocode}
+% Für aufrechte griechische Minuskeln gibt es gewöhnlich keine Symbolschrift,
+% weshalb ein einfacher Eintrag \cs{up\meta{Bezeichner}} in die Liste
+% {tud@cdmath@symb@list} gesetzt wird, was in Verbindung mit einem fehlenden
+% Symbol \cs{tud@cdmath@symbol@\meta{Bezeichner}} zu einem undefinierten
+% cs{up\meta{Bezeichner}} bei \opt{cdmath=true} führt.
+% \ToDo{falls irgendwann erweiterte OML-Kodierung existiert, dann nutzen}[v2.??]
+% \begin{macrocode}
+%^^A \tud@cdmath@declare@symb{it##1}{\mathalpha}{letters}%
+%^^A {\the\numexpr\tud@res@cnt+128\relax}%
+ \listeadd\tud@cdmath@symb@list{up#1}%
+ \advance\tud@res@cnt\@ne\relax%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cdmath@symbol@itvarphi
+% \end{macro}^^A \tud@cdmath@symbol@itvarsigma
+% \end{macro}^^A \tud@cdmath@symbol@itvarrho
+% \end{macro}^^A \tud@cdmath@symbol@itvarpi
+% \end{macro}^^A \tud@cdmath@symbol@itvartheta
+% \end{macro}^^A \tud@cdmath@symbol@itvarepsilon
+% \end{macro}^^A \tud@cdmath@symbol@itomega
+% \end{macro}^^A \tud@cdmath@symbol@itpsi
+% \end{macro}^^A \tud@cdmath@symbol@itchi
+% \end{macro}^^A \tud@cdmath@symbol@itphi
+% \end{macro}^^A \tud@cdmath@symbol@itupsilon
+% \end{macro}^^A \tud@cdmath@symbol@ittau
+% \end{macro}^^A \tud@cdmath@symbol@itsigma
+% \end{macro}^^A \tud@cdmath@symbol@itrho
+% \end{macro}^^A \tud@cdmath@symbol@itpi
+% \end{macro}^^A \tud@cdmath@symbol@itxi
+% \end{macro}^^A \tud@cdmath@symbol@itnu
+% \end{macro}^^A \tud@cdmath@symbol@itmu
+% \end{macro}^^A \tud@cdmath@symbol@itlambda
+% \end{macro}^^A \tud@cdmath@symbol@itkappa
+% \end{macro}^^A \tud@cdmath@symbol@itiota
+% \end{macro}^^A \tud@cdmath@symbol@ittheta
+% \end{macro}^^A \tud@cdmath@symbol@iteta
+% \end{macro}^^A \tud@cdmath@symbol@itzeta
+% \end{macro}^^A \tud@cdmath@symbol@itepsilon
+% \end{macro}^^A \tud@cdmath@symbol@itdelta
+% \end{macro}^^A \tud@cdmath@symbol@itgamma
+% \end{macro}^^A \tud@cdmath@symbol@itbeta
+% \end{macro}^^A \tud@cdmath@symbol@italpha
+% \end{macro}^^A \tud@cdmath@symbol@upvarphi
+% \end{macro}^^A \tud@cdmath@symbol@upvarsigma
+% \end{macro}^^A \tud@cdmath@symbol@upvarrho
+% \end{macro}^^A \tud@cdmath@symbol@upvarpi
+% \end{macro}^^A \tud@cdmath@symbol@upvartheta
+% \end{macro}^^A \tud@cdmath@symbol@upvarepsilon
+% \end{macro}^^A \tud@cdmath@symbol@upomega
+% \end{macro}^^A \tud@cdmath@symbol@uppsi
+% \end{macro}^^A \tud@cdmath@symbol@upchi
+% \end{macro}^^A \tud@cdmath@symbol@upphi
+% \end{macro}^^A \tud@cdmath@symbol@upupsilon
+% \end{macro}^^A \tud@cdmath@symbol@uptau
+% \end{macro}^^A \tud@cdmath@symbol@upsigma
+% \end{macro}^^A \tud@cdmath@symbol@uprho
+% \end{macro}^^A \tud@cdmath@symbol@uppi
+% \end{macro}^^A \tud@cdmath@symbol@upxi
+% \end{macro}^^A \tud@cdmath@symbol@upnu
+% \end{macro}^^A \tud@cdmath@symbol@upmu
+% \end{macro}^^A \tud@cdmath@symbol@uplambda
+% \end{macro}^^A \tud@cdmath@symbol@upkappa
+% \end{macro}^^A \tud@cdmath@symbol@upiota
+% \end{macro}^^A \tud@cdmath@symbol@uptheta
+% \end{macro}^^A \tud@cdmath@symbol@upeta
+% \end{macro}^^A \tud@cdmath@symbol@upzeta
+% \end{macro}^^A \tud@cdmath@symbol@upepsilon
+% \end{macro}^^A \tud@cdmath@symbol@updelta
+% \end{macro}^^A \tud@cdmath@symbol@upgamma
+% \end{macro}^^A \tud@cdmath@symbol@upbeta
+% \end{macro}^^A \tud@cdmath@symbol@upalpha
+% \end{macro}^^A \tud@cdmath@declare@greek@lc
+% \begin{macro}{\tud@cdmath@declare@greek@lgr}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% \begin{macro}{\tud@cdmath@declare@greek@@lgr}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% \changes{v2.06d}{2019/08/27}{Ligaturen für Lua\LaTeX{} deaktiviert}^^A
+% Die \OpenSans hält die griechischen Glyphen nur in der LGR-Kodierung bereit.
+% Hiermit werden diese für den mathematischen Satz definiert. Die übergebenen
+% Argumente an das Makro \cs{tud@cdmath@declare@greek@@lgr} sind Bezeichnung
+% und LGR-Slot der Glyphe.
+% \begin{macrocode}
+\newcommand*\tud@cdmath@declare@greek@lgr{%
+ \tud@cdmath@declare@greek@@lgr{Gamma}{71}%
+ \tud@cdmath@declare@greek@@lgr{Delta}{68}%
+ \tud@cdmath@declare@greek@@lgr{Theta}{74}%
+ \tud@cdmath@declare@greek@@lgr{Lambda}{76}%
+ \tud@cdmath@declare@greek@@lgr{Xi}{88}%
+ \tud@cdmath@declare@greek@@lgr{Pi}{80}%
+ \tud@cdmath@declare@greek@@lgr{Sigma}{83}%
+ \tud@cdmath@declare@greek@@lgr{Upsilon}{85}%
+ \tud@cdmath@declare@greek@@lgr{Phi}{70}%
+ \tud@cdmath@declare@greek@@lgr{Psi}{89}%
+ \tud@cdmath@declare@greek@@lgr{Omega}{87}%
+ \tud@cdmath@declare@greek@@lgr{alpha}{97}%
+ \tud@cdmath@declare@greek@@lgr{beta}{98}%
+ \tud@cdmath@declare@greek@@lgr{gamma}{103}%
+ \tud@cdmath@declare@greek@@lgr{delta}{100}%
+ \tud@cdmath@declare@greek@@lgr{epsilon}{101}%
+ \tud@cdmath@declare@greek@@lgr{zeta}{122}%
+ \tud@cdmath@declare@greek@@lgr{eta}{104}%
+ \tud@cdmath@declare@greek@@lgr{theta}{106}%
+ \tud@cdmath@declare@greek@@lgr{iota}{105}%
+ \tud@cdmath@declare@greek@@lgr{kappa}{107}%
+ \tud@cdmath@declare@greek@@lgr{lambda}{108}%
+ \tud@cdmath@declare@greek@@lgr{mu}{109}%
+ \tud@cdmath@declare@greek@@lgr{nu}{110}%
+ \tud@cdmath@declare@greek@@lgr{xi}{120}%
+ \tud@cdmath@declare@greek@@lgr{pi}{112}%
+ \tud@cdmath@declare@greek@@lgr{rho}{114}%
+ \tud@cdmath@declare@greek@@lgr{sigma}{115}%
+ \tud@cdmath@declare@greek@@lgr{tau}{116}%
+ \tud@cdmath@declare@greek@@lgr{upsilon}{117}%
+ \tud@cdmath@declare@greek@@lgr{phi}{102}%
+ \tud@cdmath@declare@greek@@lgr{chi}{113}%
+ \tud@cdmath@declare@greek@@lgr{psi}{121}%
+ \tud@cdmath@declare@greek@@lgr{omega}{119}%
+ \tud@cdmath@declare@greek@@lgr{varepsilon}{101}%
+ \tud@cdmath@declare@greek@@lgr{vartheta}{106}%
+ \tud@cdmath@declare@greek@@lgr{varpi}{119}%
+ \tud@cdmath@declare@greek@@lgr{varrho}{114}%
+ \tud@cdmath@declare@greek@@lgr{varsigma}{99}%
+ \tud@cdmath@declare@greek@@lgr{varphi}{102}%
+}
+\newcommand*\tud@cdmath@declare@greek@@lgr[2]{%
+ \tud@cdmath@declare@symb{it#1}{\mathalpha}{tuditgrk}{#2}%
+ \tud@cdmath@declare@symb{up#1}{\mathalpha}{tudupgrk}{#2}%
+% \end{macrocode}
+% Normalerweise sollten Ligaturen für angrenzende Glyphen (boundary ligatures)
+% im Mathematikmodus deaktiviert werden. Bei Lua\LaTeX{} ist dies jedoch nicht
+% der Fall, weshalb hier etwas nachgeholfen werden muss, indem nach der Glyphe
+% schlichtweg ein Klammernpaar in der richtigen Kodierung eingefügt wird.
+% \begin{macrocode}
+ \scr@ifluatex{%
+ \begingroup%
+ \def\tud@res@a{\if@tud@cdmath@active\fontencoding{LGR}\selectfont{}\fi}%
+ \def\tud@res@b##1{%
+ \csxdef{tud@cdmath@symbol@##1}{%
+ {%
+ \mathchar\expandafter\the\csuse{tud@cdmath@symbol@##1}%
+ \expandonce\tud@res@a%
+ }%
+ }%
+ }%
+ \tud@res@b{it#1}%
+ \tud@res@b{up#1}%
+ \endgroup%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cdmath@declare@greek@@lgr
+% \end{macro}^^A \tud@cdmath@declare@greek@lgr
+% \begin{macro}{\tud@cdmath@also@greeks}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% \begin{macro}{\tud@cdmath@also@@greeks}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% \begin{macro}{\tud@cdmath@also@@@greeks}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% Das ist quasi das Gegenstück zu \cs{tud@math@map@greeks}. Alle bekannten
+% Variationen der Auswahlbefehle für griechische Glyphen werden durch die
+% Definitionen für die Mathematikschriften im \CD gespiegelt.
+% \begin{macrocode}
+\newcommand*\tud@cdmath@also@greeks{%
+ \tud@math@loop@greeks@all\tud@cdmath@also@@greeks%
+ \tud@math@loop@greeks@uc\tud@cdmath@also@@@greeks%
+}
+\newcommand*\tud@cdmath@also@@greeks[1]{%
+ \tud@cdmath@declare@alias{#1}{it#1}%
+ \tud@cdmath@declare@alias{other#1}{up#1}%
+ \ifcsundef{#1up}{}{%
+ \tud@cdmath@declare@alias{#1up}{up#1}%
+ }%
+ \@for\tud@res@a:={#1sl,sl#1,#1it}\do{%
+ \ifcsundef{\tud@res@a}{}{%
+ \expandafter\tud@cdmath@declare@alias\expandafter{\tud@res@a}{it#1}%
+ }%
+ }%
+ \ifcsundef{#1other}{}{%
+ \tud@cdmath@declare@alias{#1other}{other#1}%
+ }%
+}
+\newcommand*\tud@cdmath@also@@@greeks[1]{%
+ \tud@lowerstring\tud@res@a{#1}%
+ \edef\tud@res@a{Up\tud@res@a}%
+ \ifcsundef{\tud@res@a}{}{%
+ \expandafter\tud@cdmath@declare@alias\expandafter{\tud@res@a}{up#1}%
+ }%
+ \ifcsundef{var#1}{}{%
+ \expandafter\tud@cdmath@declare@alias\expandafter{var#1}{it#1}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cdmath@also@@@greeks
+% \end{macro}^^A \tud@cdmath@also@@greeks
+% \end{macro}^^A \tud@cdmath@also@greeks
+% \begin{macro}{\tud@math@set}
+% Mit diesem Befehl werden die Einstellungen für den Mathematiksatz übernommen.
+% Die Option \opt{cdmath} wird ausgewertet, um zwischen dem Standard"~ und
+% neuem Mathematiksatz hin"~ und herschalten zu können. Dabei wird zum einen
+% das Mapping der griechischen Glyphen geändert, zum anderen werden die
+% originalen Mathematikversionen überschrieben respektive wiederhergestellt.
+% \begin{macrocode}
+\newcommand*\tud@math@set{%
+% \end{macrocode}
+% Beim Aktivieren der Mathematikschriften im \CD werden einmalig alle Warnungen
+% ausgegeben, falls bei der Initialisierung Probleme aufgetreten sind und
+% dementsprechend der Hook \cs{tud@cdmath@wrn} gefüllt wurde.
+% \begin{macrocode}
+ \if@tud@cdmath@active%
+ \tud@cdmath@wrn%
+ \tud@cs@store{mv@normal}%
+ \tud@cs@store{mv@bold}%
+ \let\mv@normal\mv@tudnormal%
+ \let\mv@bold\mv@tudbold%
+ \tud@cdmath@symbols@set%
+% \end{macrocode}
+% Anschließend erfolgt~-- abhängig von der Option \opt{slantedgreek}~-- die
+% Einstellung der Neigung der griechischen Glyphen.
+% \begin{macrocode}
+ \ifcase\tud@slantedgreek@num\relax% upright
+ \tud@math@loop@greeks@all\tud@math@upright@greeks%
+ \or% slanted
+ \tud@math@loop@greeks@all\tud@math@slanted@greeks%
+ \or% standard
+ \tud@math@loop@greeks@uc\tud@math@upright@greeks%
+ \tud@math@loop@greeks@lc\tud@math@slanted@greeks%
+ \fi%
+ \else%
+ \tud@cs@restore{mv@normal}%
+ \tud@cs@restore{mv@bold}%
+ \tud@cdmath@symbols@reset%
+ \fi%
+ \mathversion{normal}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@math@set
+% \begin{macro}{\tud@math@upright@greeks}
+% \changes{v2.06}{2018/07/02}{neu}^^A
+% \begin{macro}{\tud@math@slanted@greeks}
+% \changes{v2.06}{2018/07/02}{neu}^^A
+% Mit den beiden Befehlen kann die Definition der griechischen Buchstaben
+% entweder auf aufrecht bzw. kursiv gesetzt werden.
+% \begin{macrocode}
+\newcommand*\tud@math@upright@greeks[1]{%
+ \ifcsundef{up#1}{}{%
+ \csletcs{#1}{up#1}%
+ \csletcs{other#1}{it#1}%
+ }%
+}
+\newcommand*\tud@math@slanted@greeks[1]{%
+ \ifcsundef{up#1}{}{%
+ \csletcs{#1}{it#1}%
+ \csletcs{other#1}{up#1}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@math@slanted@greeks
+% \end{macro}^^A \tud@math@upright@greeks
+% Sämtliche Schrifteinstellungen erfolgen erst am Ende der Präambel, um etwaige
+% Einstellungen irgendwelcher Schriftpakete beachten zu können. Dabei erfolgt
+% das Setzen der Mathematikschriften durch \cs{AtBeginDocument} innerhalb von
+% \cs{AtEndPreamble} am Ende \emph{aller} \cs{AtBeginDocument}.
+% \begin{macrocode}
+\AtEndPreamble{%
+% \end{macrocode}
+% Falls das Paket \pkg{mweights} geladen wurde, werden im Bedarfsfall die vom
+% Paket erwarteten Makros für die Schriftstärken der einzelnen Schriftfamilien
+% definiert. Beim Aufruf von \cs{tud@font@set} werden diese anschließend
+% gesichert.
+% \begin{macrocode}
+ \if@tud@x@mweights@enabled%
+ \ifundef{\bfseries@rm}{\edef\bfseries@rm{\bfdefault}}{}%
+ \ifundef{\mdseries@rm}{\edef\mdseries@rm{\mddefault}}{}%
+ \ifundef{\bfseries@sf}{\edef\bfseries@sf{\bfdefault}}{}%
+ \ifundef{\mdseries@sf}{\edef\mdseries@sf{\mddefault}}{}%
+ \ifundef{\bfseries@tt}{\edef\bfseries@tt{\bfdefault}}{}%
+ \ifundef{\mdseries@tt}{\edef\mdseries@tt{\mddefault}}{}%
+ \fi%
+% \end{macrocode}
+% Hier wird auf das Vorhandensein aller benötigten Schriften geprüft.
+% \begin{macrocode}
+ \tud@cdfont@check%
+% \end{macrocode}
+% Damit \pkg{tudscrfonts} reibungslos mit den nachfolgenden Definitionen
+% funktioniert, wird im Bedarfsfall der Befehl \cs{sectfont} vorgehalten.
+% \begin{macrocode}
+%<package> \ifdef{\sectfont}{}{\let\sectfont\relax}%
+% \end{macrocode}
+% Nachdem auf die Schriften geprüft wurde, werden noch die Schriftschalter und
+% die dazugehörigen Befehle definiert. Auch die mathematischen Schriften werden
+% initialisiert.
+% \begin{macrocode}
+ \tud@cdfont@init%
+ \tud@ttfont@init%
+ \tud@cdmath@init%
+% \end{macrocode}
+% Die Einstellungen für den Mathematiksatz erfolgen erst zu Dokumentbeginn, um
+% auf Einstellungen von anderen Schriftpaketen reagieren zu können. Da es
+% so gut wie keine freien OpenType-Schriften für den mathmatischen Formelsatz
+% gibt, werden \emph{immer} die Type1-Schriften verwendet, falls diese
+% installiert sind. Wurde jedoch das Paket \pkg{bm} angefordert, so müssen die
+% Mathematikschriften spätestens zum Ende der Präambel initialisiert werden.
+% \begin{macrocode}
+ \if@tud@x@bm@requested%
+ \UnPreventPackageFromLoading{bm}%
+ \if@tud@cdmath@active%
+ \tud@cs@store{mv@normal}%
+ \tud@cs@store{mv@bold}%
+ \let\mv@normal\mv@tudnormal%
+ \let\mv@bold\mv@tudbold%
+ \fi%
+ \RequirePackage{bm}[2017/01/16]%
+ \tud@cs@restore{mv@normal}%
+ \tud@cs@restore{mv@bold}%
+ \fi%
+% \end{macrocode}
+% Wurde das Paket \pkg{siunitx} geladen, so werden die Schrifteinstellungen
+% mit \opt{cdfont}|=|\val{false} deaktiviert und zu Beginn des Dokumentes
+% auf die aktuelle Einstellung gesetzt.
+% \begin{macrocode}
+ \if@tud@x@siunitx@enabled%
+ \if@tud@cdfont@active%
+ \if@tud@cdfont@heavy%
+ \def\tud@reserved{\TUDoptions{cdfont=heavy}}%
+ \else%
+ \def\tud@reserved{\TUDoptions{cdfont=true}}%
+ \fi%
+ \else%
+ \def\tud@reserved{\TUDoptions{cdfont=false}}%
+ \fi%
+ \expandafter\AfterEndPreamble\expandafter{\tud@reserved}%
+ \TUDoptions{cdfont=false}%
+ \fi%
+% \end{macrocode}
+% Damit die Schrift im Dokument später noch umgestellt werden kann, werden
+% sämtliche Einstellungen erst am Ende der Präambel gesichert. Deshalb wird
+% der dafür verantwortliche Befehl \cs{tud@font@set} hier zum ersten Mal
+% verwendet. Damit ist es möglich, die Schriften eventuell geladener Pakete wie
+% \pkg{lmodern} oder \pkg{libertine} vorher zu sichern und später wieder zu
+% aktivieren.
+% \begin{macrocode}
+ \tud@font@set%
+ \AtBeginDocument{%
+% \end{macrocode}
+% Bereitstellung der Auswahlbefehle für griechische Glyphen in der Nomenklatur
+% von \TUDScript (\cs{up\meta{Bezeichner}}, \cs{it\meta{Bezeichner}}).
+% \begin{macrocode}
+ \tud@math@map@greeks%
+% \end{macrocode}
+% Für die griechischen Glyphen wird mit \cs{tud@math@checkslanted@greeks}
+% geprüft, ob diese durch ein Paket explizit auf kursive Majuskeln oder eine
+% vollständig aufrechte Variante gesetzt wurden. Ist dies der Fall, wird der
+% Standardwert für die Option \opt{slantedgreek} entsprechend angepasst.
+% \begin{macrocode}
+ \tud@math@checkslanted@greeks%
+% \end{macrocode}
+% Nachdem alle Vorbereitungen getroffen wurden, werden die Schriften für den
+% mathematischen Satz nun endlich gesetzt.
+% \begin{macrocode}
+ \tud@math@set%
+ }%
+}
+% \end{macrocode}
+%
+% \iffalse
+%<*class>
+% \fi
+%
+% \subsubsection{Schriften für die speziellen Seitenstile}
+%
+% \begin{macro}{\tud@head@font@set}
+% \changes{v2.02}{2014/07/08}{Unterstützung für \opt{cdhead} hinzugefügt}^^A
+% \changes{v2.03}{2015/01/30}{Bugfix für die Änderung von \cs{spaceskip} durch
+% das Paket \pkg{ragged2e}}^^A
+% \begin{macro}{\tud@head@cdfont@set}%
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\tud@head@font@light}
+% \begin{macro}{\tud@head@font@bold}
+% \begin{macro}{\tud@head@font@@bold}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% Die Schrift der Kopfzeile wird entweder in den Schriften des \CDs oder aber
+% in den serifenlosen Standardschriften gesetzt, wobei für beide Varianten
+% sowohl eine fettgedruckte als auch eine normale Version benötigt wird. Die
+% Schrifthöhe ist durch das \CD unabhängig von der gewählten Schriftgröße im
+% Dokument vorgegeben und wird in Abhängigkeit von der Papiergröße gewählt und
+% in \cs{tud@head@fontsize} gespeichert. Das Makro \cs{tud@head@font@@bold}
+% wird verwendet, um die Einstellung der fetten Schriften ohne die fixierte
+% Schriftgröße nutzen zu können.
+% \begin{macrocode}
+\newcommand*\tud@head@font@light{}
+\newcommand*\tud@head@font@bold{}
+%<poster>\newcommand*\tud@head@font@@bold{}
+\newcommand*\tud@head@font@set{%
+% \end{macrocode}
+% Die Option \opt{cdhead} wird ausgewertet. Sollte diese inkompatibel gesetzt
+% sein, wird eine Warnung ausgegeben.
+% \begin{macrocode}
+ \if@tud@cdfont@active\ifcase\tud@head@font@num\relax% false
+ \if@tud@head@font@set%
+ \ClassWarning{\TUD@Class@Name}{%
+ It isn't possible to use `cdhead=false'\MessageBreak%
+ together with `cdfont=true'%
+ }%
+ \fi%
+ \if@tud@cdfont@heavy%
+ \TUDoptions{cdhead=heavy}%
+ \else%
+ \TUDoptions{cdhead=true}%
+ \fi%
+ \fi\fi%
+% \end{macrocode}
+% Die Schriften für die Kopfzeile werden hier definiert. Abhängig von
+% \cs{if@tud@cdfont@active} werden entweder die Schriften des \CDs oder die
+% serifenlose Standardschrift für die Kopfzeile verwendet. Die Rückfallebene:
+% \begin{macrocode}
+ \if@tud@head@font@set%
+ \if@tud@x@mweights@enabled%
+ \DeclareFixedFont{\tud@head@font@light}{\encodingdefault}%
+ {\sfdefault}{\mdseries@sf}{\updefault}{\tud@head@fontsize}%
+ \DeclareFixedFont{\tud@head@font@bold}{\encodingdefault}%
+ {\sfdefault}{\bfseries@sf}{\updefault}{\tud@head@fontsize}%
+%<*poster>
+ \protected\gdef\tud@head@font@@bold{%
+ \usefont{\encodingdefault}{\sfdefault}{\bfseries@sf}{\updefault}%
+ }%
+%</poster>
+ \else%
+ \DeclareFixedFont{\tud@head@font@light}{\encodingdefault}%
+ {\sfdefault}{\mddefault}{\updefault}{\tud@head@fontsize}%
+ \DeclareFixedFont{\tud@head@font@bold}{\encodingdefault}%
+ {\sfdefault}{\bfdefault}{\updefault}{\tud@head@fontsize}%
+%<*poster>
+ \protected\gdef\tud@head@font@@bold{%
+ \usefont{\encodingdefault}{\sfdefault}{\bfdefault}{\updefault}%
+ }%
+%</poster>
+ \fi%
+ \ifcase\tud@head@font@num\relax\else% true/heavy
+ \tud@head@cdfont@set%
+ \fi%
+ \global\@tud@head@font@setfalse%
+ \global\@tud@head@text@settrue%
+ \fi%
+}
+% \end{macrocode}
+% Hiermit werden die eigentlichen Schriften des \CDs gesetzt.
+% \begin{macrocode}
+\newcommand*\tud@head@cdfont@set{%
+ \if@tud@cdfont@fam@exist%
+ \ifcase\tud@head@font@num\relax\or% true
+ \DeclareFixedFont{\tud@head@font@light}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{l}{n}{\tud@head@fontsize}%
+ \DeclareFixedFont{\tud@head@font@bold}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{sb}{n}{\tud@head@fontsize}%
+%<*poster>
+ \protected\gdef\tud@head@font@@bold{%
+ \usefont{\encodingdefault}{\tud@cdfont@fam@lf}{sb}{n}%
+ }%
+%</poster>
+ \or% heavy
+ \DeclareFixedFont{\tud@head@font@light}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{m}{n}{\tud@head@fontsize}%
+ \DeclareFixedFont{\tud@head@font@bold}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{b}{n}{\tud@head@fontsize}%
+%<*poster>
+ \protected\gdef\tud@head@font@@bold{%
+ \usefont{\encodingdefault}{\tud@cdfont@fam@lf}{b}{n}%
+ }%
+%</poster>
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% Und noch die Variante für die alten Schriften.
+% \begin{macrocode}
+\if@tud@cdoldfont@active
+ \renewcommand*\tud@head@cdfont@set{%
+ \if@tud@cdfont@fam@exist%
+ \ifcase\tud@head@font@num\relax\or% true
+ \DeclareFixedFont{\tud@head@font@light}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{l}{n}{\tud@head@fontsize}%
+ \or% heavy
+ \DeclareFixedFont{\tud@head@font@light}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{m}{n}{\tud@head@fontsize}%
+ \fi%
+ \DeclareFixedFont{\tud@head@font@bold}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{b}{n}{\tud@head@fontsize}%
+%<*poster>
+ \protected\gdef\tud@head@font@@bold{%
+ \usefont{\encodingdefault}{\tud@cdfont@fam@lf}{b}{n}%
+ }%
+%</poster>
+ \fi%
+ }%
+\fi
+% \end{macrocode}
+% \end{macro}^^A \tud@head@font@@bold
+% \end{macro}^^A \tud@head@font@bold
+% \end{macro}^^A \tud@head@font@light
+% \end{macro}^^A \tud@head@cdfont@set
+% \end{macro}^^A \tud@head@font@set
+%
+% \iffalse
+%</class>
+%</body>
+% \fi
+%
+% \Finale
+%
+\endinput
diff --git a/macros/latex/contrib/tudscr/source/tudscr-frontmatter.dtx b/macros/latex/contrib/tudscr/source/tudscr-frontmatter.dtx
new file mode 100644
index 0000000000..57017e1136
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/tudscr-frontmatter.dtx
@@ -0,0 +1,1339 @@
+% \CheckSum{815}
+% \iffalse meta-comment
+%
+% TUD-Script -- Corporate Design of Technische Universität Dresden
+% ----------------------------------------------------------------------------
+%
+% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2019
+%
+% ----------------------------------------------------------------------------
+%
+% This work may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License, version 1.3c of the license. The latest
+% version of this license is in http://www.latex-project.org/lppl.txt and
+% version 1.3c or later is part of all distributions of LaTeX 2005/12/01
+% or later and of this work. This work has the LPPL maintenance status
+% "author-maintained". The current maintainer and author of this work
+% is Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+% in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
+% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+% Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
+% oder später und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status
+% "author-maintained", wird somit allein durch den Autor verwaltet. Der
+% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: tudscr-frontmatter.dtx
+%<*dtx>
+% \fi
+%
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{tudscr-frontmatter.dtx}[2019/06/28 v2.06 TUD-Script\space%
+ (frontmatter)%
+]
+%
+% \iffalse
+\documentclass[english,ngerman,xindy]{tudscrdoc}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{tudscrfonts}
+\KOMAoptions{parskip=half-}
+\usepackage{bookmark}
+\usepackage[babel]{microtype}
+
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tudscr-frontmatter.dtx}
+\title{\file{\filename}}
+\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
+\date{\fileversion\nobreakspace(\filedate)}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.02}{2014/07/08}{\cs{FamilyKeyState} wird von Optionen genutzt}^^A
+% \changes{v2.05}{2015/07/07}{Umgebung \env{abstract} für Poster}^^A
+%
+% \section{Befehle und Umgebungen für den Vorspann}
+%
+% Im Vorspann des Dokumentes kann der Benutzer eine Zusammenfassung oder auch
+% Kurzfassung angegeben. Des Weiteren kann eine Selbstständigkeitserklärung
+% sowie ein Sperrvermerk hinzugefügt werden. Damit sich für diese das Layout
+% möglichst individuell wählen lässt, werden hier entsprechende Optionen und
+% die dafür notwendige Ausgabe definiert. Im weiteren Verlauf der Dokumentation
+% werden die Begriffe \enquote*{Zusammenfassung}, \enquote*{Kurzfassung} sowie
+% \enquote*{Erklärung} für die unterschiedlichen Elemente als gleichwertige
+% Synonyme verwendet. Die Schalter und Befehle zum Setzen der Optionen heißen
+% entweder \cs{tud@abstract@\dots} oder aber \cs{tud@declaration@\dots} je nach
+% Element.
+%
+% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%
+% \iffalse
+%<*class&body>
+% \fi
+%
+% \begin{macro}{\tud@fm@check}
+% \changes{v2.02}{2014/07/18}{neu}^^A
+% Mit diesem Befehl wird für den Fall, dass eine oder mehrerer Erklärungen auf
+% einer einzelnen Seite gesetzt werden sollen geprüft, ob dies überhaupt
+% möglich ist. Sollte dies nicht der Fall sein, wird eine Warnung ausgegeben.
+% \begin{macrocode}
+\newcommand*\tud@fm@check[2]{%
+% \end{macrocode}
+% Das Makro \cs{tud@fm@set} wird zur erstmaligen Verwendung in jedem Fall auf
+% die Definition von \cs{tud@fm@first} gesetzt.
+% \begin{macrocode}
+%<*book|report|article>
+ \global\let\tud@fm@set\tud@fm@first%
+% \end{macrocode}
+% Danach erfolgt ggf. die Prüfung der resultierenden Seitenhöhe.
+% \begin{macrocode}
+ \ifnumless{\csuse{tud@#1@level@num}}{3}{% false/true/section
+ \ifboolexpr{%
+ bool {@titlepage} and bool {@tud@#1@fil} and bool {@tud@#1@multi}%
+ }{%
+ \sbox\z@{\vbox{#2}}%
+ \ifdim\textheight<\dimexpr\ht\z@+\dp\z@\relax%
+ \ClassWarning{\TUD@Class@Name}{%
+ The given content within the `#1'\MessageBreak%
+ environment is too large, so it wasn't possible\MessageBreak%
+ to center the body vertically. Setting the option\MessageBreak%
+ `#1=nofill' would be a solution. You\MessageBreak%
+ could also use multiple `#1' environments%
+ }%
+ \boolfalse{@tud@#1@fil}%
+ \fi%
+ }{}%
+% \end{macrocode}
+% Sollte die Gliederungsebene der Erklärung einem Kapitel entsprechen, wird
+% jede Erklärung immer auf eine neue Seite gesetzt. Die Optionen zum vertikalen
+% Zentrieren wird ignoriert. Auf eine Warnung für den Anwender wird verzichtet.
+% \begin{macrocode}
+ }{% chapter
+%<*book|report>
+ \boolfalse{@tud@#1@multi}%
+ \boolfalse{@tud@#1@fil}%
+%</book|report>
+ }%
+% \end{macrocode}
+% Zum Schluss wird ggf. der gesammelte Eintrag im Inhaltsverzeichnis erstellt.
+% Danach wird das übergebene Argument ausgeführt.
+% \begin{macrocode}
+ \ifnum\csuse{tud@#1@toc@num}>\tw@\relax%
+ \tud@fm@toc{#1}{#2}%
+ \fi%
+% \end{macrocode}
+% Das Makro \cs{tud@fm@set} wird~-- aufgrund der immanenten Zuweisung auf
+% \cs{tud@fm@next} innerhalb von \cs{tud@fm@first}~-- abermals auf die
+% Definition von \cs{tud@fm@first} gesetzt.
+% \begin{macrocode}
+%</book|report|article>
+ \global\let\tud@fm@set\tud@fm@first%
+ #2%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@fm@check
+%
+% \iffalse
+%<*book|report|article>
+% \fi
+%
+% \begin{macro}{\tud@fm@toc}
+% \changes{v2.04}{2015/03/20}{neu}^^A
+% \changes{v2.06}{2018/02/22}{%
+% Bugfix: \cs{csuse\{phantomsection\}} für Anker%
+% }^^A
+% \begin{macro}{\tud@fm@@toc}
+% \changes{v2.04}{2015/03/20}{neu}^^A
+% \begin{macro}{\tud@fm@@@toc}
+% \changes{v2.04}{2015/03/20}{neu}^^A
+% Ist die Einstellung \val{tocaggregate} aktiv, wird der gesammelte Eintrag ins
+% Inhaltsverzeichnis generiert.
+% \begin{macrocode}
+\newcommand*\tud@fm@@toc{}
+\newcommand*\tud@fm@@@toc{}
+\newcommand*\tud@fm@toc[2]{%
+% \end{macrocode}
+% Der gesammelte Eintrag aller Überschriften ins Inhaltsverzeichnis.
+% \begin{macrocode}
+ \ifbool{@tud@#1@multi}{%
+ \begingroup%
+ \let\tud@fm@@@toc\@empty%
+ \renewcommand*\tud@fm@head[2]{%
+ \protected@edef\@tempa{##2}%
+ \protected@xdef\tud@fm@@toc{\tud@fm@@@toc\@tempa}%
+ \protected@xdef\tud@fm@@@toc{\tud@fm@@toc/}%
+ }%
+ \let\clearpage\relax%
+ \sbox\z@{\vbox{#2}}%
+ \csuse{phantomsection}%
+ \protected@edef\@tempa{%
+ \noexpand\endgroup%
+ \noexpand\ifnumodd{\csname tud@#1@toc@num\endcsname}{%
+%<*book|report>
+ \noexpand\addchaptertocentry{}{\tud@fm@@toc}%
+%</book|report>
+%<*article>
+ \noexpand\addsectiontocentry{}{\tud@fm@@toc}%
+%</article>
+ }{%
+%<*book|report>
+ \noexpand\addsectiontocentry{}{\tud@fm@@toc}%
+%</book|report>
+%<*article>
+ \noexpand\addsubsectiontocentry{}{\tud@fm@@toc}%
+%</article>
+ }%
+ }%
+ \@tempa%
+ }{%
+ \ClassWarning{\TUD@Class@Name}{%
+ It isn't possible to use `#1=single'\MessageBreak%
+%<*book|report>
+ or `#1=chapter'\space%
+%</book|report>
+ with `#1=tocmultiple'%
+ }%
+ \edef\@tempa{%
+ \noexpand\tud@locked@num@set{tud@#1@toc@num}{%
+ \the\numexpr\csuse{tud@#1@toc@num}-2\relax%
+ }%
+ }%
+ \@tempa%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@fm@@@toc
+% \end{macro}^^A \tud@fm@@toc
+% \end{macro}^^A \tud@fm@toc
+%
+% \iffalse
+%</book|report|article>
+% \fi
+%
+% \begin{macro}{\tud@fm@set}
+% \changes{v2.02}{2014/07/18}{Neuimplementierung für \pkg{scrlayer-scrpage}}^^A
+% \changes{v2.04}{2015/03/20}{Reimplementierung}^^A
+% \begin{macro}{\tud@fm@first}
+% \changes{v2.04}{2015/03/20}{neu}^^A
+% \begin{macro}{\tud@fm@next}
+% \changes{v2.02}{2014/07/19}{neu}^^A
+% \changes{v2.04}{2015/03/20}{Reimplementierung}^^A
+% \changes{v2.05}{2015/07/14}{Bugfix bei vertikaler Zentrierung}^^A
+% Mit diesen Makros werden bei der Ausgabe der einzelnen Erklärungen alle
+% relevanten Optionen\footnote{\ignorespaces%
+% \opt{titlepage}, \opt{twocolumn}, \opt{abstract/declaration}|=|\val{multi},
+% \opt{abstract/declaration}|=|\val{fill}\ignorespaces%
+% } ausgewertet und die notwendigen vertikalen Abstände entsprechend gesetzt.
+% Dabei wird durch jede Zusammenfassung bzw. Erklärung \cs{tud@fm@set} über
+% \cs{tud@fm@body@start} verwendet. Der Inhalt der beiden Umgebungen
+% \env{abstract} und \env{descriptions} wird mit \cs{tud@fm@check} ausgegeben.
+% \begin{macrocode}
+\newcommand\tud@fm@set[1]{}
+\newcommand\tud@fm@first[1]{%
+% \end{macrocode}
+% Im Zweispaltensatz wird der Inhalt der Umgebung einfach ausgegeben, eine
+% vertikale Zentrierung findet nicht statt. Beim einspaltigen Satz wird die
+% \opt{titlepage}-Option beachtet.
+% \begin{macrocode}
+%<*book|report|article>
+ \if@twocolumn\else%
+% \end{macrocode}
+% Sollte diese aktiv sein, wird jede Erklärung oder Zusammenfassung abhängig
+% von der Einstellung von \opt{abstract/declaration}|=|\val{multi} entweder auf
+% eine neue Seite gesetzt, oder aber auf der aktuellen ausgegeben. Dabei werden
+% diese ggf. vertikal auf der Seite ausgerichtet.
+% \begin{macrocode}
+ \if@titlepage%
+ \ifbool{@tud@#1@fil}{\null\vfil}{}%
+ \fi%
+ \fi%
+%</book|report|article>
+% \end{macrocode}
+% Das Makro \cs{tud@fm@check} setzt die Definition von \cs{tud@fm@set} auf
+% \cs{tud@fm@first}. Bei der erstmaligen Verwendung von \cs{tud@fm@first} wird
+% diese auf \cs{tud@fm@next} geändert.
+% \begin{macrocode}
+ \global\let\tud@fm@set\tud@fm@next%
+}
+% \end{macrocode}
+% Bei der abermaligen Verwendung des Makros \cs{tud@fm@set} in der gleichen
+% Umgebung wird \cs{tud@fm@next} ausgeführt, um die vertikalen Abstände
+% zwischen den einzelnen Teilen einzufügen.
+% \begin{macrocode}
+\newcommand\tud@fm@next[1]{%
+% \end{macrocode}
+% Im Zweispaltensatz wird entweder ein Absatz eingefügt oder eine neue Spalte
+% begonnen.
+% \begin{macrocode}
+ \if@twocolumn%
+%<book|report|article> \ifbool{@tud@#1@multi}{\par}{\newpage}%
+%<poster> \par%
+ \else%
+% \end{macrocode}
+% Wird eine Titelseite verwendet, wird jede Erklärung oder Zusammenfassung
+% abhängig von der Einstellung von \opt{abstract/declaration}|=|\val{multi}
+% entweder auf eine neue Seite gesetzt, oder aber auf der aktuellen ausgegeben.
+% Dabei werden diese ggf. vertikal auf der Seite ausgerichtet.
+% \begin{macrocode}
+%<*book|report|article>
+ \if@titlepage%
+ \ifbool{@tud@#1@multi}{%
+ \ifbool{@tud@#1@fil}{\vfil}{}%
+ }{%
+ \ifbool{@tud@#1@fil}{\vfil\null\clearpage\null\vfil}{\clearpage}%
+ }%
+ \else%
+%</book|report|article>
+% \end{macrocode}
+% Werden weder Titelseite noch Überschriften verwendet, so führt die Auswahl
+% einer Sprache mit \cs{selectlanguage} zu einem zusätzlichen vertikalen
+% Abstand. Dieser wird hiermit negiert.
+% \begin{macrocode}
+ \ifnum\csuse{tud@#1@level@num}=\z@\relax%
+ \ifundef{\main@language}{}{\vspace*{-\baselineskip}}%
+ \fi%
+%<*book|report|article>
+ \fi%
+%</book|report|article>
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@fm@next
+% \end{macro}^^A \tud@fm@first
+% \end{macro}^^A \tud@fm@set
+% \begin{macro}{\tud@fm@body@start}
+% \changes{v2.04}{2015/03/20}{neu}^^A
+% \begin{macro}{\tud@fm@body@end}
+% \changes{v2.04}{2015/03/20}{neu}^^A
+% Das Makro \cs{tud@fm@body@start} setzt erst alle übergebenen Parameter für
+% die aktuelle Umgebung. Anschließend werden alle notwendigen vertikalen
+% Abstände mit \cs{tud@fm@set} eingefügt und ggf. notwendige Umgebungen
+% geöffnet. Der Gegenpart dazu ist das Makro \cs{tud@fm@body@end}.
+% \begin{macrocode}
+\newcommand*\tud@fm@body@start[3]{%
+ \begingroup%
+ \TUD@parameter@set{#1}{#2}%
+ \tud@fm@set{#1}%
+% \end{macrocode}
+% Bei deaktivierter \opt{titlepage}-Option werden die Inhalte jeder erzeugten
+% Erklärung oder Zusammenfassung direkt nacheinander ausgegeben. Sollte die
+% Überschrift \emph{nicht} als Gliederungsebene (\cs{section}, \cs{chapter})
+% gesetzt werden, wird der Inhalt entweder in der \env{quotation}-Umgebung
+% oder~-- wenn entsprechend das Paket \pkg{quoting} geladen wurde~-- in der
+% \env{quoting}-Umgebung gesetzt. Die entsprechende Umgebung wird hierfür im
+% Makro \cs{tud@quoting} gespeichert.
+% \begin{macrocode}
+ \if@twocolumn\else\if@titlepage\else\relax%
+ \ifnum\csuse{tud@#1@level@num}<\tw@\relax% false/true
+ \begin{\tud@quoting}%
+ \fi%
+ \fi\fi%
+% \end{macrocode}
+% Sollte das Paket \pkg{multicol} Verwendung finden, wird die entsprechende
+% Umgebung gestartet. Für das Setzen der Überschrift und der Kolumnentitel wird
+% \cs{tud@fm@head} verwendet, welches abhängig von den gewählten Optionen die
+% Gliederungsebene der Überschrift und die dazugehörigen Abstände setzt. Daher
+% wird die Länge \cs{multicolsep} auf Null gesetzt.
+% \begin{macrocode}
+ \ifnum\tud@x@multicol@num>\@ne\relax%
+ \vspace{-\multicolsep}%
+ \begin{multicols}{\tud@x@multicol@num}[{\tud@fm@head{#1}{#3}}]%
+ \else%
+% \end{macrocode}
+% Ansonsten wird lediglich die Überschrift der Zusammenfassung oder Erklärung
+% im dritten Argument entsprechend der gewählten Option erzeugt.
+% \begin{macrocode}
+ \tud@fm@head{#1}{#3}%
+ \fi%
+}
+% \end{macrocode}
+% Nach der Ausgabe des Inhaltes werden mit \cs{tud@fm@body@end} alle ggf.
+% geöffneten Umgebungen wieder geschlossen.
+% \begin{macrocode}
+\newcommand*\tud@fm@body@end[1]{%
+ \ifnum\tud@x@multicol@num>\@ne\relax%
+ \end{multicols}%
+ \vspace{-\multicolsep}%
+ \else%
+ \par%
+ \fi%
+ \if@twocolumn\else\if@titlepage\else\relax%
+ \ifnum\csuse{tud@#1@level@num}<\tw@\relax% false/true
+ \end{\tud@quoting}\par%
+ \fi%
+ \fi\fi%
+ \endgroup%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@fm@body@end
+% \end{macro}^^A \tud@fm@body@start
+% \begin{macro}{\tud@fm@head}
+% \changes{v2.02}{2014/07/18}{an \pkg{scrlayer-scrpage} angepasst}^^A
+% \changes{v2.02}{2014/10/09}{Bugfix für Kolumnentitel}^^A
+% \changes{v2.02}{2014/11/05}{Bugfix Kolumnentitel und Inhaltsverzeichnis}^^A
+% \changes{v2.04}{2015/04/21}{Abstände nur, wenn keine Zitatumgebung aktiv}^^A
+% Dieses Makro dient zur Ausgabe der Erklärungsüberschrift auf der gewünschten
+% Gliederungsebene. Die gewählte Ebene ist in \cs{tud@\meta{Typ}@level@num}
+% gespeichert. Verwendet wird das Makro folgendermaßen:
+% \cs{tud@fm@head}\marg{Erklärungstyp}\marg{Überschrift}. Damit
+% die ggf. aktive Option \opt{abstract/declaration}|=|\val{toc} funktionieren
+% kann, wird für die Level, in denen keine Standardüberschrift verwendet wird,
+% mit dem Befehl \cs{phantomsection} aus dem Paket \pkg{hyperref}~-- wenn es
+% tatsächlich geladen wurde~-- ein Anker für einen Hyperlink erzeugt.
+%
+% Ist \cs{tud@\meta{Typ}@toc@num} ungerade, so entspricht die Ebene des
+% erzeugten Eintrags ins Inhaltsverzeichnis für \cls{tudscrartcl} normalerweise
+% dem eines Abschnitts, der für \cls{tudscrbook} und \cls{tudscrreprt} dem eines
+% Kapitels.\footnote{sonst sieht das Inhaltsverzeichnis recht bescheiden aus}
+% Mit der Eintellung \val{tocleveldown} kann der Eintrag um eine Ebene
+% reduziert werden.
+% \begin{macrocode}
+\newcommand*\tud@fm@head[2]{%
+ \ifcase\csuse{tud@#1@level@num}\relax% false
+ \if@titlepage\endgraf\fi%
+ \csuse{phantomsection}%
+ \ifstr{\@currenvir}{\tud@quoting}{}{%
+ \if@twocolumn%
+ \vskip\dimexpr\smallskipamount-\parskip\relax%
+ \else%
+ \vskip\dimexpr\bigskipamount-\parskip\relax%
+ \fi%
+ }%
+ \or% true
+ \if@titlepage\endgraf\fi%
+ \csuse{phantomsection}%
+ \@afterindentfalse%
+ \ifstr{\@currenvir}{\tud@quoting}{}{%
+ \vskip\dimexpr\bigskipamount-\parskip\relax%
+ }%
+ \begingroup%
+ \noindent\centering%
+ \normalfont\sectfont\nobreak#2%
+ \@endparpenalty\@M%
+ \endgraf%
+ \endgroup%
+ \nopagebreak%
+ \vskip\dimexpr\medskipamount-\parskip\relax%
+ \@afterheading%
+ \or% section
+ \section*{#2}%
+%<*book|report|article>
+ \ifx\@mkboth\@gobbletwo\else\markright{\MakeMarkcase{#2}}\fi%
+%<*book|report>
+ \or% chapter
+ \chapter*{#2}%
+ \@mkdouble{\MakeMarkcase{#2}}%
+%</book|report>
+%</book|report|article>
+ \fi%
+%<*book|report|article>
+ \ifbool{@tud@#1@markboth}{%
+ \markboth{\MakeMarkcase{#2}}{\MakeMarkcase{#2}}%
+ }{}%
+ \ifcase\csuse{tud@#1@toc@num}\relax\or% totoc
+%<*book|report>
+ \addchaptertocentry{}{#2}%
+%</book|report>
+%<*article>
+ \addsectiontocentry{}{#2}%
+%</article>
+ \or% totocleveldown
+%<*book|report>
+ \addsectiontocentry{}{#2}%
+%</book|report>
+%<*article>
+ \addsubsectiontocentry{}{#2}%
+%</article>
+ \fi%
+%</book|report|article>%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@fm@head
+%
+% \iffalse
+%<*book|report|article>
+% \fi
+%
+% \begin{macro}{\tud@fm@pagestyle}
+% \changes{v2.02}{2014/07/19}{neu}^^A
+% Dieser Befehl sorgt für die Auswahl des Seitenstiles über die Parameter von
+% \env{abstract} und \env{declarations}.
+% \begin{macrocode}
+\newcommand*\tud@fm@pagestyle[2]{%
+ \if@titlepage%
+ \ifcsundef{ps@#2}{%
+ \ClassError{\TUD@Class@Name}{`#2' is no valid pagestyle}{%
+ You tried to use `#2' as a pagestyle for the\MessageBreak%
+ `#1' environment, but it was never defined.%
+ }%
+ }{\def\tud@envir@ps{#2}}%
+ \else%
+ \ClassWarning{\TUD@Class@Name}{%
+%<*article>
+ The key `pagestyle' can only be used with\MessageBreak%
+ activated option `titlepage'%
+%</article>
+%<*book|report>
+ The key `pagestyle' can only be used either with\MessageBreak%
+ activated option `titlepage' or with chapter\MessageBreak%
+ headings (`#1=chapter')%
+%</book|report>
+ }%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@fm@pagestyle
+%
+% \iffalse
+%</book|report|article>
+% \fi
+%
+% \begin{macro}{\tud@quoting}
+% Mit diesem Befehl kann das empfehlenswerte Paket \pkg{quoting} unterstützt
+% werden. Sollte dieses geladen werden, wird für das Setzen der Zusammenfassung
+% bei einem Titelkopf die \env{quoting}-Umgebung genutzt.
+% \begin{macrocode}
+\newcommand*\tud@quoting{quotation}
+\AfterPackage{quoting}{\renewcommand*\tud@quoting{quoting}}
+% \end{macrocode}
+% \end{macro}^^A \tud@quoting
+%
+% \iffalse
+%</class&body>
+%<*class&option>
+% \fi
+%
+% \begin{macro}{\tud@fm@switch}
+% \changes{v2.02}{2014/11/05}{neu}^^A
+% Das aus \KOMAScript{} bekannte Verhalten für die Zusammenfassung wird für die
+% beiden Klassen \cls{tudscrartcl} und \cls{tudscrreprt} adaptiert. Dazu werden
+% boolesche Schlüssel bei der Definiton der beiden Optionen \opt{abstract} und
+% \opt{declaration} eingefügt. Außerdem werden zusätzliche Werte zur Auswahl
+% einer Gliederungsebene für die gesetzten Überschriften wie \cs{section} oder
+% \cs{chapter}\footnote{nicht für \cls{tudscrartcl}} oder bereitgestellt,
+% welche auch für die Buchklasse \cls{tudscrbook} zur Verfügung stehen. Das
+% Setzen von Einträgen ins Inhaltsverzeichnis lässt sich ebenfalls anpassen.
+%
+% Des Weiteren werden mehrere Schlüssel für die Anordnung und Positionierung
+% von Zusammenfassung bzw. Erklärungen bereitgestellt. Diese dienen dem Setzen
+% der Optionen \opt{abstract} bzw. \opt{declaration} mit den Werten
+% \val{single/multi}, \val{toc/notoc}, \val{fill/nofill} sowie \val{leveldown}.
+% \begin{macrocode}
+\newcommand*\tud@fm@switch{%
+ {section}{2},{sect}{2},{sec}{2},{addsec}{2},%
+%<*article|poster>
+ {new}{2},{standard}{2},{heading}{2},%
+%</article|poster>
+%<*book|report>
+ {chapter}{3},{chap}{3},{addchap}{3},%
+ {new}{3},{standard}{3},{heading}{3},%
+%</book|report>
+%<*book|report|article>
+ {single}{4},{one}{4},{simple}{4},%
+ {multiple}{5},{multi}{5},{all}{5},{aggregate}{5},%
+ {two}{5},{both}{5},{double}{5},%
+ {nofil}{6},{nofill}{6},{novfil}{6},{novfill}{6},%
+ {fil}{7},{fill}{7},{vfil}{7},{vfill}{7},%
+ {markboth}{8},{mark}{8},%
+ {nomarkboth}{9},{nomark}{9},%
+ {nottotoc}{10},{notoc}{10},%
+ {totoc}{11},{toc}{11},{totoclevelup}{11},{toclevelup}{11},{levelup}{11},%
+ {totocleveldown}{12},{tocleveldown}{12},{leveldown}{12},%
+ {tocmultiple}{13},{tocmulti}{13},{tocall}{13},{tocaggregate}{13},%
+ {totocmultiple}{13},{totocmulti}{13},{totocall}{13},{totocaggregate}{13}%
+%</book|report|article>
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@fm@switch
+%
+% \subsection{Erweiterung der Umgebung für eine Zusammenfassung}
+%
+% Die \env{abstract}-Umgebung wird um mehrere Optionen erweitert. So kann
+% in den neuen \TUDScript-Klassen die Sprache der Zusammenfassung leicht
+% eingestellt und auch zwei Zusammenfassungen auf eine Seite gesetzt werden.
+% \begin{macro}{\tud@abstract@level@num}
+% \begin{macro}{\tud@abstract@toc@num}
+% \changes{v2.04}{2015/04/24}{neu}^^A
+% \begin{macro}{\tud@abstract@toc@num@locked}
+% \changes{v2.04}{2015/04/24}{neu}^^A
+% Der Befehl \cs{tud@abstract@level@num} beschreibt die Gliederungsebene der
+% Überschrift der Zusammenfassung numerisch und wird über die Schlüssel der
+% Option \opt{abstract} gesetzt. Über \opt{abstract}|=|\val{toc/notoc} wird
+% festgelegt, ob die Zusammenfassung einen Eintrag ins Inhaltsverzeichnis
+% bekommt. Da unterschiedliche Gliederungsebenen der Überschriften möglich
+% sind, wird das Standardverhalten in Abhängigkeit dieser gewählt. Initial
+% erscheint für \cls{tudscrreprt} und \cls{tudscrartcl}~-- wie in \KOMAScript{}
+% auch~-- keine Überschrift und kein Eintrag im Inhaltsverzeichnis. In
+% \cls{tudscrbook} wird standardmäßig eine Überschrift in Form eines Kapitels
+% mit Eintrag ins Inhaltsverzeichnis gesetzt.
+%
+% Mit \cs{tud@abstract@toc@num} wird die Gestalt des Inhaltsverzeichniseintrag
+% festgelegt. Folgende Werte sind möglich:
+% \begin{description}
+% \item[0] kein Eintrag ins Inhaltverzeichnis
+% \item[1] Individuelle Einträge auf der obersten Gliederungsebene
+% \item[2] Individuelle Einträge auf der zweithöchsten Gliederungsebene
+% \item[3] Ein gesammelter Eintrag auf der obersten Gliederungsebene
+% \item[4] Ein gesammelter Eintrag auf der zweithöchsten Gliederungsebene
+% \end{description}
+% Dabei ist die oberste Gliederungsebene \cs{chapter} für \cls{tudscrbook} und
+% \cls{tudscrreprt} sowie \cs{section} für \cls{tudscrartcl}.
+% \begin{macrocode}
+%<*report|article|poster>
+\newcommand*\tud@abstract@level@num{0}
+%<report|article>\tud@locked@newnum{tud@abstract@toc@num}{0}
+%</report|article|poster>
+%<*book>
+\newcommand*\tud@abstract@level@num{3}
+\tud@locked@newnum{tud@abstract@toc@num}{1}
+%</book>
+% \end{macrocode}
+% \end{macro}^^A \tud@abstract@toc@num@locked
+% \end{macro}^^A \tud@abstract@toc@num
+% \end{macro}^^A \tud@abstract@level@num
+%
+% \iffalse
+%<*book|report|article>
+% \fi
+%
+% \begin{macro}{\if@tud@abstract@multi}
+% Is dieser Schalter aktiviert, wird eine durch \cs{nextabstract} angegebene
+% zweite~-- wahrscheinlich in einer Fremdsprache verfasste~-- Zusammenfassung
+% auf die gleiche Seite wie die erste zu setzen. Gesetzt wird der Schalter über
+% die Option \opt{abstract}|=|\val{single/multi}.
+% \begin{macrocode}
+\newif\if@tud@abstract@multi
+\@tud@abstract@multitrue
+% \end{macrocode}
+% \end{macro}^^A \if@tud@abstract@multi
+% \begin{macro}{\if@tud@abstract@fil}
+% Mit diesem Schalter wird bestimmt, ob eine Zusammenfassung auf einer Seite
+% vertikal zentriert wird. Er wird mit \opt{abstract}|=|\val{fill/nofill}
+% gesetzt und ist normalerweise aktiviert.
+% \begin{macrocode}
+\newif\if@tud@abstract@fil
+\@tud@abstract@filtrue
+% \end{macrocode}
+% \end{macro}^^A \if@tud@abstract@fil
+% \begin{macro}{\if@tud@abstract@markboth}
+% \changes{v2.02}{2014/11/05}{neu}^^A
+% Dieser Schalter setzt rechten und linken Kolumnentitel automatisch auf die
+% verwendete Überschrift.
+% \begin{macrocode}
+\newif\if@tud@abstract@markboth
+% \end{macrocode}
+% \end{macro}^^A \if@tud@abstract@markboth
+%
+% \iffalse
+%</book|report|article>
+% \fi
+%
+% \begin{option}{abstract}
+% Alle Klassen unterstützen die Werte, welche in \cs{tud@fm@switch} definiert
+% wurden. Die beiden Klassen \cls{tudscrartcl} und \cls{tudscrreprt} adaptieren
+% außerdem das aus \KOMAScript{} bekannte Verhalten über die booleschen Werte
+% aus \cs{TUD@bool@numkey}.
+% \begin{macrocode}
+%<*report|article|poster>
+\TUD@key{abstract}[true]{%
+ \edef\@tempb{\TUD@bool@numkey,\tud@fm@switch}%
+%</report|article|poster>
+%<*book>
+\TUD@key{abstract}[chapter]{%
+ \edef\@tempb{\tud@fm@switch}%
+%</book>
+ \TUD@set@numkey{abstract}{@tempa}{\@tempb}{#1}%
+% \end{macrocode}
+% Bei der Einstellungen der Überschriftgliederungsebene wird außerdem das
+% Standardverhalten für einen Eintrag ins Inhaltsverzeichnis festgelegt, was
+% allerdings vom Anwender jederzeit überschrieben werden kann.
+% \begin{macrocode}
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\@tempa\relax% false
+%<*report|article|poster>
+ \renewcommand*\tud@abstract@level@num{0}%
+%<report|article> \tud@locked@num@preset{tud@abstract@toc@num}{0}%
+%</report|article|poster>
+ \or% true
+%<*report|article|poster>
+ \renewcommand*\tud@abstract@level@num{1}%
+%<report|article> \tud@locked@num@preset{tud@abstract@toc@num}{0}%
+%</report|article|poster>
+ \or% section
+ \renewcommand*\tud@abstract@level@num{2}%
+%<*book|report|article>
+ \tud@locked@num@preset{tud@abstract@toc@num}{1}%
+ \or% chapter
+%<*book|report>
+ \renewcommand*\tud@abstract@level@num{3}%
+ \tud@locked@num@preset{tud@abstract@toc@num}{1}%
+%</book|report>
+%</book|report|article>
+% \end{macrocode}
+% Neben den Einstellungen für die Art der Gliederungsebene der Überschrift für
+% die Zusammenfassung können außerdem noch die Optionen gesetzt werden, ob
+% versucht werden soll, eine mögliche Zusammenfassung in einer anderen Sprache
+% auf die gleiche Seite wie die erste zu setzen (\opt{abstract}|=|\val{multi}).
+% \begin{macrocode}
+%<*book|report|article>
+ \or% single
+ \@tud@abstract@multifalse%
+ \or% multiple
+ \@tud@abstract@multitrue%
+ \or% nofil
+ \@tud@abstract@filfalse%
+ \or% fil
+ \@tud@abstract@filtrue%
+ \or% markboth
+ \@tud@abstract@markbothtrue%
+ \or% nomarkboth
+ \@tud@abstract@markbothfalse%
+% \end{macrocode}
+% Bei den Einstellungen für das Inhaltsverzeichnis werden die unterschiedlichen
+% Möglichkeiten im Makro \cs{tud@abstract@toc@num} zusammengefasst.
+% \begin{macrocode}
+ \or% nottotoc
+ \tud@locked@num@set{tud@abstract@toc@num}{0}%
+ \or% totoc
+ \ifnum\tud@abstract@toc@num<\thr@@\relax%
+ \tud@locked@num@set{tud@abstract@toc@num}{1}%
+ \else%
+ \tud@locked@num@set{tud@abstract@toc@num}{3}%
+ \fi%
+ \or% totocleveldown
+ \ifnum\tud@abstract@toc@num<\thr@@\relax%
+ \tud@locked@num@set{tud@abstract@toc@num}{2}%
+ \else%
+ \tud@locked@num@set{tud@abstract@toc@num}{4}%
+ \fi%
+ \or% totocmutliple
+ \ifnum\tud@abstract@toc@num=\z@\relax%
+ \tud@locked@num@set{tud@abstract@toc@num}{1}%
+ \fi%
+ \ifnum\tud@abstract@toc@num<\thr@@\relax%
+ \edef\@tempa{%
+ \noexpand\tud@locked@num@set{tud@abstract@toc@num}{%
+ \the\numexpr\tud@abstract@toc@num+2\relax%
+ }%
+ }\@tempa%
+ \fi%
+%</book|report|article>
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% Damit der Anwender die erweiterten Einstellungen für die Zusammenfassung auch
+% wie gewohnt über \cs{KOMAoptions} setzen kann, wird die entsprechende Option
+% ebenfalls definiert.
+% \begin{macrocode}
+\DefineFamilyMember{KOMA}
+\DefineFamilyKey{KOMA}{abstract}[true]{%
+ \AtEndOfFamilyOptions{\TUDoptions{abstract=#1}}%
+}
+% \end{macrocode}
+% \end{option}^^A abstract
+%
+% \iffalse
+%</class&option>
+%<*class&body>
+% \fi
+%
+% \begin{environment}{abstract}
+% \changes{v2.03}{2015/01/09}{Bugfix für Seitenstilauswahl}^^A
+% \changes{v2.04}{2015/03/20}{Reimplementierung}^^A
+% \begin{parameter}{language}
+% \begin{parameter}{columns}
+% \begin{parameter}{pagestyle}
+% \changes{v2.02}{2014/07/19}{neu}^^A
+% \begin{parameter}{markboth}
+% \changes{v2.02}{2014/11/05}{neu}^^A
+% \begin{parameter}{abstract}
+% \begin{parameter}{option}
+% \begin{macro}{\nextabstract}
+% \changes{v2.02}{2014/11/05}{neu}^^A
+% Die \env{abstract}-Umgebung wird komplett überarbeitet. Um alle gewünschten
+% Optionen\footnote{\ignorespaces%
+% \opt{titlepage}, \opt{twocolumn}, \opt{abstract}|=|\val{multi},
+% \opt{abstract}|=|\val{fill}\ignorespaces%
+% } sowie Gliederungsebene der Überschrift beachten zu können, wird auf die
+% Möglichkeiten der Definition mit \cs{NewEnviron} aus dem Paket \pkg{environ}
+% zurückgegriffen. Damit ist es möglich, gezielt auf den Inhalt der Umgebung
+% selbst mit dem Befehl \cs{BODY} zuzugreifen. Dieser Mechanismus wird
+% innerhalb von \cs{tud@abstractbody} verwendet.
+% \begin{macrocode}
+%<*report|article|poster>
+\undef\abstract
+\undef\endabstract
+%</report|article|poster>
+\NewEnviron{abstract}[1][]{%
+% \end{macrocode}
+% Sollten Überschriften in Form von Kapiteln gewählt worden sein, so wird
+% temporär die \opt{titlepage}-Option aktivert, da alle weiteren notwendigen
+% Einstellungen dieser entsprechen. Über den Parameter \opt{pagestyle} kann bei
+% der Verwendung einer Titelseite der Seitenstil definiert werden. Dafür wird
+% das dafür verantwortliche Makro \cs{tud@envir@ps} auf \cs{relax} gesetzt.
+% \begin{macrocode}
+%<*book|report>
+ \ifnum\tud@abstract@level@num>\tw@\relax\@titlepagetrue\fi% chapter
+%</book|report>
+%<*book|report|article>
+ \let\tud@envir@ps\relax%
+%</book|report|article>
+% \end{macrocode}
+% Als nächstes werden die Optionen verarbeitet. Sollte nach Abarbeitung der
+% Optionen für \env{abstract} festgestellt werden, dass eine spezielle
+% Spaltenanzahl gewünscht ist, so wird~-- für den Fall, dass das Paket
+% \pkg{multicol} geladen ist~-- diese gesetzt. Sonst wird die angegbene Anzahl
+% der Spalten ignoriert und eine Warnung ausgegeben.
+% \begin{macrocode}
+ \TUD@parameter@set{abstract}{#1}%
+ \tud@x@multicol@check%
+% \end{macrocode}
+% Bei aktiver \opt{titlepage}-Option wird anschließend der aktuelle Seitenstil
+% gesichert, um diesen nach der Umgebung wiederherstellen zu können. Wurde über
+% die möglichen Parameter \opt{pagestyle} oder indirekt mit \opt{markboth} kein
+% Seitenstil definiert, so wird dieser auf \val{empty} gesetzt.
+% \begin{macrocode}
+%<*book|report|article>
+ \if@titlepage%
+ \tud@currentpagestyle@set%
+ \ifx\tud@envir@ps\relax%
+ \tud@if@tudheadings{\currentpagestyle}{%
+ \def\tud@envir@ps{empty.tudheadings}%
+ }{%
+ \def\tud@envir@ps{empty}%
+ }%
+ \fi%
+ \clearpage%
+ \tud@envir@selectps%
+ \fi%
+%</book|report|article>
+% \end{macrocode}
+% Mit dem Befehl \cs{nextabstract} können einzelne Abschnitte innerhalb einer
+% Zusammenfassung getrennt werden.
+% \begin{macrocode}
+ \renewcommand*\nextabstract[1][]{%
+ \tud@fm@body@end{abstract}%
+ \tud@fm@body@start{abstract}{##1}{\abstractname}%
+ }%
+ \tud@fm@check{abstract}{%
+ \tud@fm@body@start{abstract}{#1}{\abstractname}%
+ \BODY%
+ \tud@fm@body@end{abstract}%
+ }%
+% \end{macrocode}
+% Nach der Umgebung wird bei aktiver \opt{titlepage}-Option der ursprüngliche
+% Seitenstil zurückgesetzt. Zuvor wird ggf. der notwendige vertikale Leerraum
+% eingefügt.
+% \begin{macrocode}
+}[%
+%<*book|report|article>
+ \if@titlepage%
+ \if@tud@abstract@fil\vfil\null\fi%
+ \aftergroup\tud@currentpagestyle@reset%
+ \clearpage%
+ \else%
+%</book|report|article>
+ \ifnum\tud@abstract@level@num=\tw@\relax%
+ \vskip\dimexpr\bigskipamount-\parskip\relax%
+ \fi%
+%<*book|report|article>
+ \fi%
+%</book|report|article>
+]
+% \end{macrocode}
+% Als Schlüssel für die \env{abstract}-Umgebung können Sprache, Anzahl der
+% Spalten oder auch die zur Umgebung gehörigen Klassenoptionen angegeben werden.
+% \begin{macrocode}
+\TUD@parameter@family{abstract}{%
+ \TUD@parameter@def{language}{\selectlanguage{#1}}%
+ \TUD@parameter@def{columns}{\renewcommand*\tud@x@multicol@num{#1}}%
+%<*book|report|article>
+ \TUD@parameter@def{pagestyle}{\tud@fm@pagestyle{abstract}{#1}}%
+% \end{macrocode}
+% Für das Setzen von Kolumnentiteln wird der Seitenstil auf \val{headings}
+% gesetzt, falls kein anderer mit \opt{pagestyle} angegeben wurde.
+% \begin{macrocode}
+ \TUD@parameter@def{markboth}[true]{%
+ \ifstrbool{#1}{%
+ \@tud@abstract@markbothtrue%
+ \ifx\tud@envir@ps\relax\def\tud@envir@ps{headings}\fi%
+ }{%
+ \@tud@abstract@markbothfalse%
+ }{%
+ \@tud@abstract@markbothfalse%
+ \ifx\tud@envir@ps\relax\def\tud@envir@ps{headings}\fi%
+ \manualmark\markboth{#1}{#1}%
+ }%
+ }%
+%</book|report|article>
+ \TUD@parameter@def{abstract}{\TUDoption{abstract}{#1}}%
+ \TUD@parameter@let{option}{abstract}%
+% \end{macrocode}
+% Für die Optionsangabe ohne Schlüssel und Wert kann eine Anzahl an Spalten
+% oder eine alternative Sprache angegeben werden. Für die Auswertung des
+% Argumentes verantwortlich ist der Befehl \cs{TUD@parameter@handler@default},
+% welcher auch von der Umgebung \env{tudpage} verwendet wird.
+% \begin{macrocode}
+ \TUD@parameter@handler@default{}%
+}
+% \end{macrocode}
+% Der Befehl \cs{nextabstract} lässt sich nur in der Umgebung \env{abstract}
+% verwenden.
+% \begin{macrocode}
+\newcommand*\nextabstract[1][]{%
+ \ClassError{\TUD@Class@Name}{Incorrect usage of `\string\nextabstract'}{%
+ The command `\string\nextabstract' can only be used within\MessageBreak%
+ the environment `abstract'.%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \nextabstract
+% \end{parameter}^^A option
+% \end{parameter}^^A abstract
+% \end{parameter}^^A markboth
+% \end{parameter}^^A pagestyle
+% \end{parameter}^^A columns
+% \end{parameter}^^A language
+% \end{environment}^^A abstract
+%
+% \iffalse
+%</class&body>
+%<*book|report|article>
+%<*class&option>
+% \fi
+%
+% \subsection{Selbstständigkeitserklärung und Sperrvermerk}
+%
+% Die Befehle für die Selbstständigkeitserklärung und den Sperrvermerk werden
+% äquivalent zur \env{abstract}-Umgebung mit den gleichen Optionen
+% ausgestattet.
+% \begin{macro}{\tud@declaration@level@num}
+% \begin{macro}{\tud@declaration@toc@num}
+% \changes{v2.04}{2015/04/24}{neu}^^A
+% \begin{macro}{\tud@declaration@toc@num@locked}
+% \changes{v2.04}{2015/04/24}{neu}^^A
+% \begin{macro}{\if@tud@declaration@multi}
+% \begin{macro}{\if@tud@declaration@fil}
+% \begin{macro}{\if@tud@declaration@markboth}
+% \changes{v2.02}{2014/11/05}{neu}^^A
+% Siehe die Option \opt{abstract}.
+% \begin{macrocode}
+%<*report|article>
+\newcommand*\tud@declaration@level@num{1}
+\tud@locked@newnum{tud@declaration@toc@num}{0}
+%</report|article>
+%<*book>
+\newcommand*\tud@declaration@level@num{3}
+\tud@locked@newnum{tud@declaration@toc@num}{1}
+%</book>
+\newif\if@tud@declaration@multi
+\@tud@declaration@multitrue
+\newif\if@tud@declaration@fil
+\@tud@declaration@filtrue
+\newif\if@tud@declaration@markboth
+% \end{macrocode}
+% \end{macro}^^A \if@tud@declaration@markboth
+% \end{macro}^^A \if@tud@declaration@fil
+% \end{macro}^^A \if@tud@declaration@multi
+% \end{macro}^^A \tud@declaration@toc@num@locked
+% \end{macro}^^A \tud@declaration@toc@num
+% \end{macro}^^A \tud@declaration@level@num
+% \begin{option}{declaration}
+% Siehe die Option \opt{abstract}.
+% \begin{macrocode}
+%<*report|article>
+\TUD@key{declaration}[true]{%
+%</report|article>
+%<*book>
+\TUD@key{declaration}[chapter]{%
+%</book>
+ \edef\@tempb{\TUD@bool@numkey,\tud@fm@switch}%
+ \TUD@set@numkey{declaration}{@tempa}{\@tempb}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\@tempa\relax% false
+ \renewcommand*\tud@declaration@level@num{0}%
+ \tud@locked@num@preset{tud@declaration@toc@num}{0}%
+ \or% true
+ \renewcommand*\tud@declaration@level@num{1}%
+ \tud@locked@num@preset{tud@declaration@toc@num}{0}%
+ \or% section
+ \renewcommand*\tud@declaration@level@num{2}%
+ \tud@locked@num@preset{tud@declaration@toc@num}{1}%
+ \or% chapter
+%<*book|report>
+ \renewcommand*\tud@declaration@level@num{3}%
+ \tud@locked@num@preset{tud@declaration@toc@num}{1}%
+%</book|report>
+ \or% single
+ \@tud@declaration@multifalse%
+ \or% multiple
+ \@tud@declaration@multitrue%
+ \or% nofil
+ \@tud@declaration@filfalse%
+ \or% fil
+ \@tud@declaration@filtrue%
+ \or% markboth
+ \@tud@declaration@markbothtrue%
+ \or% nomarkboth
+ \@tud@declaration@markbothfalse%
+ \or% nottotoc
+ \tud@locked@num@set{tud@declaration@toc@num}{0}%
+ \or% totoc
+ \ifnum\tud@declaration@toc@num<\thr@@\relax%
+ \tud@locked@num@set{tud@declaration@toc@num}{1}%
+ \else%
+ \tud@locked@num@set{tud@declaration@toc@num}{3}%
+ \fi%
+ \or% totocleveldown
+ \ifnum\tud@declaration@toc@num<\thr@@\relax%
+ \tud@locked@num@set{tud@declaration@toc@num}{2}%
+ \else%
+ \tud@locked@num@set{tud@declaration@toc@num}{4}%
+ \fi%
+ \or% totocmutliple
+ \ifnum\tud@declaration@toc@num=\z@\relax%
+ \tud@locked@num@set{tud@declaration@toc@num}{1}%
+ \fi%
+ \ifnum\tud@declaration@toc@num<\thr@@\relax%
+ \edef\@tempa{%
+ \noexpand\tud@locked@num@set{tud@declaration@toc@num}{%
+ \the\numexpr\tud@declaration@toc@num+2\relax%
+ }%
+ }\@tempa%
+ \fi%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{option}^^A declaration
+%
+% \iffalse
+%</class&option>
+%<*class&body>
+% \fi
+%
+% \begin{environment}{declarations}
+% \changes{v2.02}{2014/11/05}{neu}^^A
+% \changes{v2.03}{2015/01/09}{Bugfix für Seitenstilauswahl}^^A
+% \changes{v2.03}{2015/01/30}{Bugfix für Spaltenanzahl}^^A
+% \changes{v2.04}{2015/03/20}{Reimplementierung}^^A
+% \begin{parameter}{language}
+% \begin{parameter}{columns}
+% \changes{v2.02}{2014/07/19}{neu}^^A
+% \begin{parameter}{pagestyle}
+% \changes{v2.02}{2014/07/19}{neu}^^A
+% \begin{parameter}{markboth}
+% \changes{v2.02}{2014/11/05}{neu}^^A
+% \begin{parameter}{company}
+% \begin{parameter}{supporter}
+% \begin{parameter}{place}
+% \begin{parameter}{closing}
+% \begin{parameter}{declaration}
+% \begin{parameter}{option}
+% \begin{macro}{\if@tud@declarations}
+% Die \env{declarations}-Umgebung wird ähnlich zur \env{abstract}-Umgebung
+% definiert. Prinzipiell funktioniert diese genauso, inklusive der Parameter.
+% Der Schalter \cs{if@tud@declarations} wird verwendet, um die weiteren Befehle
+% \cs{declaration}, \cs{confirmation} und \cs{blocking} innerhalb und außerhalb
+% dieser Umgebung verwenden zu können.
+% \begin{macrocode}
+\newif\if@tud@declarations
+\NewEnviron{declarations}[1][]{%
+ \@tud@declarationstrue%
+%<*book|report>
+ \ifnum\tud@declaration@level@num>\tw@\relax\@titlepagetrue\fi% chapter
+%</book|report>
+ \let\tud@envir@ps\relax%
+ \TUD@parameter@set{declaration}{#1}%
+ \tud@x@multicol@check%
+ \if@titlepage%
+ \tud@currentpagestyle@set%
+ \ifx\tud@envir@ps\relax%
+ \tud@if@tudheadings{\currentpagestyle}{%
+ \def\tud@envir@ps{empty.tudheadings}%
+ }{%
+ \def\tud@envir@ps{empty}%
+ }%
+ \fi%
+ \clearpage%
+ \tud@envir@selectps%
+ \fi%
+% \end{macrocode}
+% Falls innerhalb der Erklärung durch den Anwender bestimmte Felder verwendet
+% werden, werden vorsichtshalber Befehle für die Titelei \enquote{entschärft}.
+% \begin{macrocode}
+ \def\and{, }%
+ \let\thanks\@gobble%
+% \end{macrocode}
+% Im Gegensatz zur \env{abstract}-Umgebung werden in der Umgebung
+% \env{declarations} alle Erklärungen als \emph{geschlossene} Variante genutzt,
+% um diese einzeln und nacheinander anzugeben. Jedes hierfür nutzbare Makro
+% (\cs{declaration}, \cs{nextdeclaration}, \cs{blocking} und \cs{confirmation})
+% kann so innerhalb der Umgebung verwendet werden und führt intern die beiden
+% Makros \cs{tud@fm@body@start} und \cs{tud@fm@body@end} selbstständig aus.
+% Alternativ dazu müsste relativ umständlich geprüft werden, ob der Aufruf von
+% \cs{tud@fm@body@start} bereits erfolgte \emph{und} danach auch schon Text
+% ausgegeben wurde. Einen Mehrwert bei der Nutzung hätte dies jedoch nicht
+% gehabt außer der äquivalenten Verwendung von \cs{nextdeclaration} und
+% \cs{nextabstract}, worauf der Einfachheit halber gerne verzichtet wurde,
+% insbesondere da die erwartete Nutzung des Befehls \cs{nextdeclaration} als
+% sehr gering einzustufen ist.
+% \begin{macrocode}
+ \tud@fm@check{declaration}{\BODY}%
+}[%
+ \if@titlepage%
+ \if@tud@declaration@fil\vfil\null\fi%
+ \aftergroup\tud@currentpagestyle@reset%
+ \clearpage%
+ \else%
+ \ifnum\tud@declaration@level@num=\tw@\relax%
+ \vskip\dimexpr\bigskipamount-\parskip\relax%
+ \fi%
+ \fi%
+]
+% \end{macrocode}
+% Dies sind die möglichen Schlüssel für die Befehle \cs{declaration},
+% \cs{confirmation} und \cs{blocking}. Die Schlüssel \opt{declaration} bzw.
+% \opt{option} dienen zum Setzen der Werte, welche auch als Klassenoptionen
+% gesetzt werden können.
+% \begin{macrocode}
+\TUD@parameter@family{declaration}{%
+ \TUD@parameter@def{language}{\selectlanguage{#1}}%
+ \TUD@parameter@def{columns}{\renewcommand*\tud@x@multicol@num{#1}}%
+ \TUD@parameter@def{pagestyle}{\tud@fm@pagestyle{declaration}{#1}}%
+ \TUD@parameter@def{markboth}[true]{%
+ \ifstrbool{#1}{%
+ \@tud@declaration@markbothtrue%
+ \ifx\tud@envir@ps\relax\def\tud@envir@ps{headings}\fi%
+ }{%
+ \@tud@declaration@markbothfalse%
+ }{%
+ \@tud@declaration@markbothfalse%
+ \ifx\tud@envir@ps\relax\def\tud@envir@ps{headings}\fi%
+ \manualmark\markboth{#1}{#1}%
+ }%
+ }%
+ \TUD@parameter@def{company}{\def\@company{#1}}%
+ \TUD@parameter@def{supporter}{\def\@supporter{#1}}%
+ \TUD@parameter@def{place}{\def\@place{#1}}%
+ \TUD@parameter@def{closing}{\def\@confirmationclosing{#1}}%
+ \TUD@parameter@let{confirmationclosing}{closing}%
+ \TUD@parameter@def{declaration}{\TUDoption{declaration}{#1}}%
+ \TUD@parameter@let{option}{declaration}%
+ \TUD@parameter@handler@default{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@declarations
+% \end{parameter}^^A option
+% \end{parameter}^^A declaration
+% \end{parameter}^^A closing
+% \end{parameter}^^A place
+% \end{parameter}^^A supporter
+% \end{parameter}^^A company
+% \end{parameter}^^A markboth
+% \end{parameter}^^A pagestyle
+% \end{parameter}^^A columns
+% \end{parameter}^^A language
+% \end{environment}^^A declarations
+% \begin{macro}{\tud@fm@supporter}
+% \changes{v2.05}{2015/10/27}{neu}^^A
+% Dies ist ein Hilfsmakro, um die Sternversionen der beiden Befehle
+% \cs{declaration} und \cs{confirmation} zu realisieren.
+% \begin{macrocode}
+\newcommand*\tud@fm@supporter{}
+% \end{macrocode}
+% \end{macro}^^A \tud@fm@supporter
+% \begin{macro}{\declaration}
+% \changes{v2.02}{2014/07/18}{Neuimplementierung für \pkg{scrlayer-scrpage}}^^A
+% \changes{v2.03}{2015/01/30}{Bugfix für Spaltenanzahl}^^A
+% \changes{v2.05}{2015/10/27}{Sternversion für Betreuer als Unterstützer}^^A
+% \begin{macro}{\tud@fm@declaration}
+% \changes{v2.05}{2015/10/27}{neu}^^A
+% \begin{macro}{\nextdeclaration}
+% \changes{v2.04}{2015/03/20}{neu}^^A
+% Dieser Befehl dient zur Ausgabe von sowohl Selbstständigkeitserklärung als
+% auch Sperrvermerk. Über das optionale Argument kann ohne Schlüssel die
+% gewünschte Sprache eingestellt werden. Zusätzlich können Optionen als
+% Schlüssel-Wert-Paare angegeben werden. Die Sternversion erzwingt die Ausgabe
+% der in \cs{@supporter} gespeicherten Betreuer als Unterstützer.
+% \begin{macrocode}
+\newcommand*\declaration{%
+ \kernel@ifstar{%
+ \def\tud@fm@supporter{supporter=\@supervisor}%
+ \tud@fm@declaration%
+ }{%
+ \def\tud@fm@supporter{supporter=\@supporter}%
+ \tud@fm@declaration%
+ }%
+}
+\newcommand*\tud@fm@declaration[1][]{%
+ \ifbool{@tud@declarations}{%
+ \begingroup%
+ \tud@fm@@confirmation[\tud@fm@supporter,#1]%
+ \tud@fm@blocking[#1]%
+ \endgroup%
+ }{%
+ \begin{declarations}[\tud@fm@supporter,#1]%
+ \tud@fm@@confirmation%
+ \tud@fm@blocking%
+ \end{declarations}%
+ }%
+}
+% \end{macrocode}
+% Mit \cs{nextdeclaration} kann eine freie Erklärung abgegeben werden. Dabei
+% sind~-- im Gegensatz zu \cs{nextabstract}~-- sowohl Überschrift als auch der
+% Inhalt als obligatorisches Argument anzugeben, da innerhalb der Umgebung
+% \env{declarations} die geschlossene Angabe des Inhalts innerhalb von
+% \cs{tud@fm@body@start} und \cs{tud@fm@body@end} notwendig ist.
+% \begin{macrocode}
+\newcommand*\nextdeclaration[3][]{%
+ \ifbool{@tud@declarations}{%
+ \tud@fm@body@start{declaration}{#1}{#2}%
+ #3%
+ \tud@fm@body@end{declaration}%
+ }{%
+ \ClassError{\TUD@Class@Name}{Incorrect usage of `\string\nextdeclaration'}{%
+ The command `\string\nextdeclaration' can only be used\MessageBreak%
+ within the environment `declarations'.%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \nextdeclaration
+% \end{macro}^^A \tud@fm@declaration
+% \end{macro}^^A \declaration
+% \begin{macro}{\confirmation}
+% \changes{v2.02}{2014/07/18}{Neuimplementierung für \pkg{scrlayer-scrpage}}^^A
+% \changes{v2.03}{2015/01/30}{Bugfix für Spaltenanzahl}^^A
+% \changes{v2.05}{2015/10/27}{Sternversion für Betreuer als Unterstützer}^^A
+% \begin{macro}{\tud@fm@confirmation}
+% \changes{v2.05}{2015/10/27}{neu}^^A
+% \begin{macro}{\tud@fm@@confirmation}
+% \changes{v2.02}{2014/07/18}{neu}^^A
+% Mit diesem Befehl kann die Selbstständigkeitserklärung ausgegeben werden. Das
+% optionale Argument bestimmt, wer als Unterstützer angegeben wird. Außerdem
+% sind Schlüssel-Wert-Paare als Option nutzbar. Mit der Sternversion werden die
+% mit \cs{supervisor} angegebenen Betreuer als Unterstützer genannt.
+% \begin{macrocode}
+\newcommand*\confirmation{%
+ \kernel@ifstar{%
+ \def\tud@fm@supporter{supporter=\@supervisor}%
+ \tud@fm@confirmation%
+ }{%
+ \def\tud@fm@supporter{supporter=\@supporter}%
+ \tud@fm@confirmation%
+ }%
+}
+\newcommand*\tud@fm@confirmation[1][]{%
+% \end{macrocode}
+% Damit das optionale Argument ohne Schlüssel für die Unterstützer verwendet
+% werden kann, wird der Handler lokal umdefiniert. Außerdem werden irrelevante
+% Parameter undefiniert gesetzt.
+% \begin{macrocode}
+ \begingroup%
+ \TUD@parameter@handler@default[declaration]{supporter}%
+ \undef\KV@declaration@company%
+ \ifbool{@tud@declarations}{%
+ \tud@fm@@confirmation[\tud@fm@supporter,#1]%
+ }{%
+ \begin{declarations}[\tud@fm@supporter,#1]%
+ \tud@fm@@confirmation%
+ \end{declarations}%
+ }%
+ \endgroup%
+}
+% \end{macrocode}
+% Dies ist der eigentliche Inhalt des Befehls \cs{confirmation}.
+% \begin{macrocode}
+\newcommand*\tud@fm@@confirmation[1][]{%
+ \tud@fm@body@start{declaration}{#1}{\confirmationname}%
+ \confirmationtext\vskip\z@\@confirmationclosing%
+ \tud@fm@body@end{declaration}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@fm@@confirmation
+% \end{macro}^^A \tud@fm@confirmation
+% \end{macro}^^A \confirmation
+% \begin{macro}{\blocking}
+% \changes{v2.02}{2014/05/16}{neu, \cs{restriction} umbenannt}^^A
+% \changes{v2.02}{2014/07/18}{an \pkg{scrlayer-scrpage} angepasst}^^A
+% \changes{v2.03}{2015/01/30}{Bugfix für Spaltenanzahl}^^A
+% \begin{macro}{\tud@fm@blocking}
+% \changes{v2.02}{2014/07/18}{neu}^^A
+% Für den Sperrvermerk wird äquivalent zu \cs{confirmation} verfahren. Das
+% optionale Argument ohne Schlüssel setzt hier die Firma für den Sperrvermerk.
+% \begin{macrocode}
+\newcommand*\blocking[1][]{%
+ \begingroup%
+ \TUD@parameter@handler@default[declaration]{company}%
+ \undef\KV@declaration@supporter%
+ \undef\KV@declaration@closing%
+ \undef\KV@declaration@confirmationclosing%
+ \ifbool{@tud@declarations}{%
+ \tud@fm@blocking[#1]%
+ }{%
+ \begin{declarations}[#1]%
+ \tud@fm@blocking%
+ \end{declarations}%
+ }%
+ \endgroup%
+}
+% \end{macrocode}
+% Dies ist der eigentliche Inhalt des Befehls \cs{blocking}.
+% \begin{macrocode}
+\newcommand*\tud@fm@blocking[1][]{%
+ \tud@fm@body@start{declaration}{#1}{\blockingname}%
+ \blockingtext%
+ \tud@fm@body@end{declaration}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@fm@blocking
+% \end{macro}^^A \blocking
+%
+% \iffalse
+%</class&body>
+%</book|report|article>
+% \fi
+%
+% \Finale
+%
+\endinput
diff --git a/macros/latex/contrib/tudscr/source/tudscr-layout.dtx b/macros/latex/contrib/tudscr/source/tudscr-layout.dtx
new file mode 100644
index 0000000000..4e6fe56ae7
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/tudscr-layout.dtx
@@ -0,0 +1,1825 @@
+% \CheckSum{1215}
+% \iffalse meta-comment
+%
+% TUD-Script -- Corporate Design of Technische Universität Dresden
+% ----------------------------------------------------------------------------
+%
+% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2019
+%
+% ----------------------------------------------------------------------------
+%
+% This work may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License, version 1.3c of the license. The latest
+% version of this license is in http://www.latex-project.org/lppl.txt and
+% version 1.3c or later is part of all distributions of LaTeX 2005/12/01
+% or later and of this work. This work has the LPPL maintenance status
+% "author-maintained". The current maintainer and author of this work
+% is Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+% in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
+% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+% Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
+% oder später und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status
+% "author-maintained", wird somit allein durch den Autor verwaltet. Der
+% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: tudscr-layout.dtx
+%<*dtx>
+% \fi
+%
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{tudscr-layout.dtx}[2019/07/19 v2.06c TUD-Script\space%
+ (layout)%
+]
+%
+% \iffalse
+\documentclass[english,ngerman,xindy]{tudscrdoc}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{tudscrfonts}
+\KOMAoptions{parskip=half-}
+\usepackage{bookmark}
+\usepackage[babel]{microtype}
+
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tudscr-layout.dtx}
+\title{\file{\filename}}
+\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
+\date{\fileversion\nobreakspace(\filedate)}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.02}{2014/07/08}{\cs{FamilyKeyState} wird von Optionen genutzt}^^A
+% \changes{v2.05}{2015/07/06}{Layout für Poster}^^A
+%
+% \section{Das Layout des \CDs}
+%
+% Unter Layout wird die Wahl von Schriftart und "~größe, die Positionierung
+% verschiedener Textelemente sowie die farbliche Gestaltung verstanden. Für das
+% \CD gibt es dabei drei wesentliche Ausprägungen, die für die verschiedenen
+% Elemente auch unabhängig gewählt werden können.
+%
+% Für das \CD werden sowohl Teile- als auch die Kapitelseiten neu gestaltet.
+% Es werden eine monochrome Version, eine Version mit leichtem Farbeinsatz und
+% eine durchweg farbige Version bereitgestellt. Außerdem wird hier das Aussehen
+% und die Position der Überschriften festgelegt.
+%
+% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%
+% \iffalse
+%<*class&option>
+% \fi
+%
+% \subsection{Gestalt von Umschlagseite, Titel, Teile und Kapitel}
+%
+% Ein zentraler Teil der Wrapper-Klassen ist die Auswahl der Darstellung des
+% \CDs. Dabei kann gewählt werden, ob es einfarbig, mit leichtem oder aber mit
+% starkem Farbeinsatz genutzt werden soll. Die folgenden Optionen sind hierfür
+% zuständig.
+%
+% \begin{macro}{\tud@cd@switch}
+% Dies sind die Standardoptionen für alle einzelnen Einstellungen des Layouts.
+% Es gibt die Varianten monochrom~(1), leichter~(2) und voller Farbeinsatz~(5)
+% sowie die Möglichkeit, das \CD vollständig zu deaktivieren~(0). Außerdem kann
+% die farbige Ausprägung des Querbalkens im Zusammenspiel mit dem Seitenkopf
+% festgelegt werden (farbiger Querbalken~(3), farbiger Kopf~(4) und voller
+% Farbeinsatz mit hervorgehobenem Querbalken~(6)).
+% \begin{macrocode}
+\newcommand*\tud@cd@switch{}
+\edef\tud@cd@switch{%
+ \TUD@bool@numkey,%
+ {nocolor}{1},{nocolour}{1},{monochrome}{1},{monochromatic}{1},%
+ {lite}{2},{colorlite}{2},{litecolor}{2},{colourlite}{2},{litecolour}{2},%
+ {light}{2},{colorlight}{2},{lightcolor}{2},{colourlight}{2},{lightcolour}{2},%
+ {pale}{2},{colorpale}{2},{palecolor}{2},{colourpale}{2},{palecolour}{2},%
+ {colorbar}{3},{barcolor}{3},{colourbar}{3},{barcolour}{3},%
+ {bicolor}{4},{bicolour}{4},{twocolor}{4},{twocolour}{4},%
+ {bichrome}{4},{bichromatic}{4},{dichrome}{4},{dichromatic}{4},%
+ {color}{5},{colour}{5},%
+ {full}{6},{colorfull}{6},{fullcolor}{6},{colourfull}{6},{fullcolour}{6}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cd@switch
+% \begin{option}{cd}
+% \changes{v2.04}{2015/05/18}{Wert \val{barcolor} neu}^^A
+% \begin{macro}{\tud@cd@num}
+% Diese Option dient für die Hauptklassen zur globalen Einstellung für Cover-
+% Titel-, Teil- und Kapitelseiten. Mit dem Schalter werden für alle Komponenten
+% die gleichen Einstellungen gesetzt. Die Standardfarbe des Kopfes der Seiten
+% im \pgs{tudheadings}-Stil ist schwarz und wird für die farbigen Layouts auf
+% dunkelblau gesetzt. Abhängig von der gewählten Option~-- der nummerische Wert
+% ist über \cs{tud@cd@switch} festgelegt~-- werden die sog. Layoutschlüssel
+% (\cs{tud@cd@\meta{Typ}@num}) auf einen Wert gesetzt (0\dots 6), welcher
+% später ausgewertet werden kann. Der Schalter für Kapitel wird lediglich für
+% die Klassen \cls{tudscrbook} und \cls{tudscrreprt} definiert und genutzt.
+% Damit werden alle Komponenten mit einer zentralen Option festgelegt, können
+% aber auch durch den Nutzer explizit überschrieben werden.
+%
+% Für die Klasse \cls{tudscrposter} wird mit der Option die farbige Ausprägung
+% eines Posters definiert. Dabei sind alle Werte gültig, die auch für die
+% meisten anderen Layouteinstellungen verwendet werden können. Abhängig vom
+% gewählten Wert, wird der Seitenstil, die Ausprägung der Fußzeile sowie die
+% farbliche Gestalt von Kopf- und Fußzeile festgelegt. Da dabei unter anderem
+% auch gegebenenfalls der Seitenstil auf einen vom Typ \pgs{tudheadings}
+% festgelegt wird, erfolgt die Ausführung der Option frühestens zu Beginn des
+% Dokumentes.
+% \begin{macrocode}
+\newcommand*\tud@cd@num{0}
+\TUD@key{cd}[true]{%
+ \TUD@set@numkey{cd}{tud@cd@num}{\tud@cd@switch}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+% \end{macrocode}
+% Die Umschlagseite wird standardmäßig immer monochrom gesetzt.
+% \begin{macrocode}
+%<*book|report|article>
+ \ifcase\tud@cd@num\relax% false
+ \TUD@key@preset{cdcover}{false}%
+ \else% !false
+ \TUD@key@preset{cdcover}{true}%
+ \fi%
+%</book|report|article>
+% \end{macrocode}
+% Alle übrigen Varianten des Layouts im \CD~-- schwarze Schrift und schwarzer
+% Kopf, blaue Schrift und blauer Kopf, blaue Schrift und farbiger Querbalken,
+% blaue Schrift und zweifarbiger Kopf sowie farbiger Hintergrund mit weißer
+% Schrift und entweder Outline oder farbigem Querbalken im Kopf~-- werden als
+% Voreinstellung an die anderen Schlüssel durgereicht.
+% \begin{macrocode}
+ \TUD@key@preset{cdtitle}{#1}%
+ \TUD@key@preset{cdpart}{#1}%
+%<*book|report>
+ \TUD@key@preset{cdchapter}{#1}%
+%</book|report>
+ \TUD@key@preset{cdsection}{#1}%
+% \end{macrocode}
+% Die Ausführung des Befehls \cs{tud@cd@process} sorgt dafür, dass alle
+% Optionen auch verarbeitet und wirksam werden. Dieser wird standardmäßig nach
+% der Abarbeitung aller Optionen innerhalb der Präambel einmalig ausgeführt.
+% Deshalb wird er hier nur innerhalb des Dokumentes genutzt. Dies gilt auch für
+% die folgenden Optionen.
+% \begin{macrocode}
+ \TUD@SpecialOptionAtDocument{tud@cd@process}%
+% \end{macrocode}
+% Innerhalb der Präambel wird der Satzspiegel abhängig vom gewünschten Layout
+% festgelegt. Dies kann vom Benutzer mit dem Setzen der Option \opt{cdgeometry}
+% überschrieben werden.
+% \begin{macrocode}
+ \if@atdocument\else%
+ \ifcase\tud@cd@num\relax% false
+ \tud@locked@num@preset{tud@cdgeometry@num}{0}%
+ \else% !false
+ \tud@locked@num@preset{tud@cdgeometry@num}{2}%
+ \fi%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cd@num
+% \end{option}^^A cd
+% \begin{option}{cdcover}
+% \changes{v2.02}{2014/08/08}{neue Option für \cs{makecover}}^^A
+% \changes{v2.04}{2015/05/18}{Wert \val{barcolor} neu}^^A
+% \begin{macro}{\tud@cd@cover@num}
+% \changes{v2.02}{2014/08/08}{neu}^^A
+% Das durch die Option \opt{cd} insgesamt festgelegte Layout kann für die
+% einzelnen Elemente Umschlagseite (\opt{cdcover}),\dots
+% \begin{macrocode}
+%<*book|report|article>
+\newcommand*\tud@cd@cover@num{0}
+\TUD@key{cdcover}[true]{%
+ \TUD@set@numkey{cdcover}{tud@cd@cover@num}{\tud@cd@switch}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \TUD@SpecialOptionAtDocument{tud@cd@process}%
+ \fi%
+}
+%</book|report|article>
+% \end{macrocode}
+% \end{macro}^^A \tud@cd@cover@num
+% \end{option}^^A cdcover
+% \begin{option}{cdtitle}
+% \changes{v2.04}{2015/05/18}{Wert \val{barcolor} neu}^^A
+% \begin{macro}{\tud@cd@title@num}
+% \dots Titel (\opt{cdtitle}),\dots
+% \begin{macrocode}
+\newcommand*\tud@cd@title@num{0}
+\TUD@key{cdtitle}[true]{%
+ \TUD@set@numkey{cdtitle}{tud@cd@title@num}{\tud@cd@switch}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \TUD@SpecialOptionAtDocument{tud@cd@process}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cd@title@num
+% \end{option}^^A cdtitle
+% \begin{option}{cdpart}
+% \changes{v2.04}{2015/05/18}{Wert \val{barcolor} neu}^^A
+% \begin{macro}{\tud@cd@part@num}
+% \dots Teile- (\opt{cdpart}) und\dots
+% \begin{macrocode}
+\newcommand*\tud@cd@part@num{0}
+\TUD@key{cdpart}[true]{%
+ \TUD@set@numkey{cdpart}{tud@cd@part@num}{\tud@cd@switch}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \TUD@SpecialOptionAtDocument{tud@cd@process}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cd@part@num
+% \end{option}^^A cdpart
+% \begin{option}{cdchapter}
+% \changes{v2.04}{2015/05/18}{Wert \val{barcolor} neu}^^A
+% \begin{macro}{\tud@cd@chapter@num}
+% \dots bei den entsprechenden Klassen (\cls{tudscrbook} und \cls{tudscrreprt})
+% auch für die Kapitelseiten (\opt{cdchapter}) separat für die einzelnen
+% Elemente geändert bzw. überschrieben werden.
+% \begin{macrocode}
+%<*book|report>
+\newcommand*\tud@cd@chapter@num{0}
+\TUD@key{cdchapter}[true]{%
+ \TUD@set@numkey{cdchapter}{tud@cd@chapter@num}{\tud@cd@switch}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifnum\tud@cd@chapter@num>4\relax% color/full
+ \TUD@key@preset{chapterpage}{true}%
+ \else%
+ \TUD@key@preset{chapterpage}{false}%
+ \fi%
+ \TUD@SpecialOptionAtDocument{tud@cd@process}%
+ \fi%
+}
+%</book|report>
+% \end{macrocode}
+% \end{macro}^^A \tud@cd@chapter@num
+% \end{option}^^A cdchapter
+% \begin{option}{cdsection}
+% \changes{v2.05}{2015/07/07}{neu}^^A
+% \begin{macro}{\tud@cd@section@num}
+% \changes{v2.05}{2015/07/07}{neu}^^A
+% Zuletzt noch alle nachgelagerten Gliederungsebenen.
+% \begin{macrocode}
+\newcommand*\tud@cd@section@num{0}
+\TUD@key{cdsection}[true]{%
+ \TUD@set@numkey{cdsection}{tud@cd@section@num}{\tud@cd@switch}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \TUD@SpecialOptionAtDocument{tud@cd@process}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cd@section@num
+% \end{option}^^A cdsection
+%
+% \iffalse
+%</class&option>
+%<*book|report>
+%<*class&option>
+% \fi
+%
+% Die nun folgenden Optionen und Befehle werden nur für die beiden Klassen
+% \cls{tudscrbook} und \cls{tudscrreprt} definiert.
+% \begin{option}{parttitle}
+% \begin{macro}{\if@tud@parttitle}
+% Der Schalter dient zur Steuerung, ob der Titel des Dokumentes wie im Handbuch
+% des \CDs auf den Teileseiten stehen soll.
+% \begin{macrocode}
+\newif\if@tud@parttitle
+\TUD@key{parttitle}[true]{%
+ \TUD@set@ifkey{parttitle}{@tud@parttitle}{#1}%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@parttitle
+% \end{option}^^A parttitle
+% \begin{option}{chapterpage}
+% \begin{macro}{\if@tud@chapterpage}
+% Mit dieser Option können Kapitelüberschriften alleine auf einer Seite stehen.
+% Es werden separate Kapitelseiten erzeugt.
+% \begin{macrocode}
+\newif\if@tud@chapterpage
+\TUD@key{chapterpage}[true]{%
+ \TUD@set@ifkey{chapterpage}{@tud@chapterpage}{#1}%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@chapterpage
+% \end{option}^^A chapterpage
+% \begin{option}{cleardoublespecialpage}
+% \changes{v2.02}{2014/07/08}{Werte für Seitenstil aus den \TUDScript- bzw.
+% \KOMAScript-Klassen möglich}^^A
+% \changes{v2.03}{2015/01/09}{Prüfung des Seitenstils mit \cs{AfterPreamble}
+% auf Beginn des Dokumentes verzögert}^^A
+% \changes{v2.06}{2018/08/21}{Farbeinstellungen integriert}^^A
+% \begin{macro}{\tud@cleardoublepage}
+% \begin{macro}{\if@tud@clearcolor}
+% Für Klassen mit separaten Teileseiten und Kapiteln wird eine zusätzliche
+% Option definiert, welche nur bei zweiseitigem Satz (\opt{twoside}) und
+% zusätzlich immer auf nur der rechten Seite öffnenden Teilen bzw. Kapiteln
+% (\opt{open}|=|\val{right}) zum Tragen kommen.
+%
+% Diese Option steuert, ob die Rückseite von Titel, Teilen und ggf. auch bei
+% separaten Kapitelseiten\footnote{bei aktivierter \opt{chapterpage}-Option}
+% entweder zwingend als leere Seite oder~-- abhängig von der \KOMAScript-Option
+% \opt{cleardoublepage}~-- als Vakatseite ausgegeben werden. Außerdem ist die
+% Festlegung eines bestimmten Seitenstiles möglich. Weiterhin kann eingestellt
+% werden, ob bei der Verwendung einer Hintergrundfarbe auf Titel- Teil- oder
+% Kapitelseiten im Stile des \CDs verwendet (\opt{cd\dots}|=|\val{color}) die
+% entsprechende Rückseite in der gleichen Farbe wie die Vorderseite erschienen
+% soll. Dafür muss die Option \opt{cleardoublespecialpage} aktiviert sein.
+%
+% Der Befehl \cs{tud@cleardoublepage} enthält die Definition der zu erzeugenden
+% Doppelseite.
+% \begin{macrocode}
+\newif\if@tud@clearcolor
+\newcommand*\tud@cleardoublepage{\cleardoubleoddpage}
+% \end{macrocode}
+% Mit der Option \opt{cleardoublespecialpage} kann dieser festgelegt werden.
+% \begin{macrocode}
+\TUD@key{cleardoublespecialpage}[true]{%
+ \TUD@set@numkey{cleardoublespecialpage}{@tempa}{%
+ \TUD@bool@numkey,%
+ {nocolor}{2},{nocolour}{2},{monochrome}{2},{monochromatic}{2},%
+ {bicolor}{3},{bicolour}{3},{twocolor}{3},{twocolour}{3},%
+ {bichrome}{3},{bichromatic}{3},{dichrome}{3},{dichromatic}{3},%
+ {color}{3},{colour}{3},%
+ {full}{3},{colorfull}{3},{fullcolor}{3},{colourfull}{3},{fullcolour}{3},%
+ {current}{4}%
+ }{#1}%
+% \end{macrocode}
+% Dabei wird die Rückseite entweder wie alle Vakatseiten oder leer gesetzt.
+% \begin{macrocode}
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\@tempa\relax% false
+ \renewcommand*\tud@cleardoublepage{\null\thispagestyle{empty}\newpage}%
+ \or% true
+ \renewcommand*\tud@cleardoublepage{\cleardoubleoddpage}%
+% \end{macrocode}
+% Zusätzlich kann die Vakatseite gegebenenfalls auch farbig ausgegeben werden,
+% was abhängig von \opt{cd=true/color/pale/bicolor/fullcolor} erfolgt.
+% \begin{macrocode}
+ \or% nocolor
+ \@tud@clearcolorfalse%
+ \or% color
+ \@tud@clearcolortrue%
+% \end{macrocode}
+% Außerdem kann ein Seitenstil gezielt ausgewählt werden.
+% \begin{macrocode}
+ \or% current
+ \renewcommand*\tud@cleardoublepage{\cleardoubleoddstandardpage}%
+ \fi%
+% \end{macrocode}
+% Beim Laden der Klasse selbst sind die speziellen Seitenstile der \KOMAScript-
+% bzw. \TUDScript-Klassen noch nicht definiert. Diese sollen als Werte jedoch
+% trotzdem erlaubt sein. Deshalb wird für diesen Fall das Überprüfen mit
+% \cs{AfterPreamble} auf den Beginn des Dokumentes verzögert.
+% \begin{macrocode}
+ \else%
+ \AfterPreamble{%
+ \ifcsundef{ps@#1}{%
+ \ClassError{\TUD@Class@Name}{`#1' is no valid pagestyle}{%
+ You tried to use `#1' as a pagestyle for option\MessageBreak%
+ `cleardoublespecialpage', but it was never defined.%
+ }%
+ }{%
+ \renewcommand*\tud@cleardoublepage{\cleardoubleoddpageusingstyle{#1}}%
+ }%
+ }%
+ \FamilyKeyStateProcessed%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@clearcolor
+% \end{macro}^^A \tud@cleardoublepage
+% \end{option}^^A cleardoublespecialpage
+%
+% \iffalse
+%</class&option>
+%<*class&body>
+% \fi
+%
+% \begin{macro}{\tud@cleardoublespecialpage}
+% \begin{macro}{\tud@clearcolor@wrn}
+% Der Befehl \cs{tud@cleardoublespecialpage} dient zur eigentlichen Umsetzung.
+% Das obligatorische Argument enthält alles, was innerhalb der Gruppe an
+% lokalen Einstellungen vorgenommen werden soll. Das optionale Argument wird
+% ggf. genutzt, um einen Inhalt auf der Rückseite auszugeben.
+% \begin{macrocode}
+\newcommand*\tud@cleardoublespecialpage[2][]{%
+ \begingroup%
+ \addtokomafont{pagenumber}{\usekomafont{tudheadings}}%
+ \addtokomafont{pagefoot}{\usekomafont{tudheadings}}%
+ #2%
+ \ifboolexpr{bool {@twoside} and bool {@openright}}{%
+ \if@tud@clearcolor%
+ \def\@tempa{%
+ #1%
+ \tud@cleardoublepage%
+ \endgroup%
+ }%
+ \else%
+ \def\@tempa{%
+ \endgroup%
+ #1%
+ \tud@cleardoublepage%
+ }%
+ \fi%
+ }{%
+ \if@tud@clearcolor\tud@clearcolor@wrn\fi%
+ \def\@tempa{%
+ \endgroup%
+ #1%
+ }%
+ }%
+ \@tempa%
+ \@afterindentfalse\@afterheading%
+}
+% \end{macrocode}
+% Die Warnung für den Fall, dass die Option \opt{clearcolor} ohne
+% \opt{open}|=|\val{right} und \opt{twoside} verwendet wird.
+% \begin{macrocode}
+\newcommand*\tud@clearcolor@wrn{%
+ \ClassWarning{\TUD@Class@Name}{%
+ Option `clearcolor' is only available together with\MessageBreak%
+ options `twoside' and `open=right'%
+ }%
+ \global\let\tud@clearcolor@wrn\relax%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@clearcolor@wrn
+% \end{macro}^^A \tud@cleardoublespecialpage
+%
+% \iffalse
+%</class&body>
+%</book|report>
+%<*class&option>
+% \fi
+%
+% Damit endet der Abschnitt für \cls{tudscrbook}- und \cls{tudscrreprt}-Klasse.
+%
+% \begin{macro}{\tud@pagecolor}
+% Der Befehl \cs{tud@pagecolor} dient für die Hauptklassen als Hilfsmakro, um
+% je nach gewählter Ausprägung des Layouts die farblichen Seitenhintergründe zu
+% aktivieren. Für die Klasse \cls{tudscrposter} wird der Befehl zusätzlich für
+% das benutzerdefinierte Festlegen einer standardmäßigen Hintergrundfarbe mit
+% der Option \opt{backcolor} genutzt.
+% \begin{macrocode}
+\newcommand*\tud@pagecolor{}%
+% \end{macrocode}
+% \end{macro}^^A \tud@pagecolor
+% \begin{option}{backcolor}
+% \changes{v2.05}{2016/04/15}{neu}^^A
+% \begin{option}{backgroundcolor}
+% \begin{option}{bgcolor}
+% \begin{macro}{\normalcolor}
+% Mit dieser Option kann die standardmäßige Hintergrundfarbe für Poster gesetzt
+% werden.
+% \begin{macrocode}
+%<*poster>
+\TUD@key{backcolor}[true]{%
+ \TUD@set@numkey{backcolor}{@tempa}{%
+ \TUD@bool@numkey,%
+ {nocolor}{0},{nocolour}{0},{none}{0},%
+ {color}{1},{colour}{1},{cdcolor}{1},{cdcolour}{1}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\@tempa\relax% false
+ \renewcommand*\tud@pagecolor{}%
+ \else% true
+ \renewcommand*\tud@pagecolor{HKS41}%
+ \fi%
+ \else%
+ \renewcommand*\tud@pagecolor{#1}%
+ \FamilyKeyStateProcessed%
+ \fi%
+% \end{macrocode}
+% Wird die Option innerhalb des Dokumentes verwendet, wird mit einer Box erst
+% die gewählte Farbe verifiziert und anschließend auf die am Dokumentbeginn
+% definierte Textfarbe umgestellt.
+% \begin{macrocode}
+ \if@atdocument%
+ \ifdefvoid{\tud@pagecolor}{}{\sbox\z@{\color{\tud@pagecolor}}}%
+ \normalcolor%
+ \fi%
+}
+\TUD@key{backgroundcolor}[true]{\TUDoptions{backcolor=#1}}
+\TUD@key{bgcolor}[true]{\TUDoptions{backcolor=#1}}
+% \end{macrocode}
+% Für das Aktivieren der Farbe \val{HKS41} wird \cs{normalcolor} erweitert, um
+% hier in jedem Fall als Schriftfarbe \emph{weiß} zu verwenden.
+% \begin{macrocode}
+\AfterPackage{xcolor}{%
+ \CheckCommand*\normalcolor{\let\current@color\default@color\set@color}%
+ \apptocmd{\normalcolor}{%
+ \ifstr{\tud@pagecolor}{HKS41}{\color{white}}{}%
+ }{}{\tud@patch@wrn{normalcolor}}%
+ \AtBeginDocument{%
+ \ifdefvoid{\tud@pagecolor}{}{\sbox\z@{\color{\tud@pagecolor}}}%
+ \normalcolor%
+ }%
+}
+%</poster>
+% \end{macrocode}
+% \end{macro}^^A \normalcolor
+% \end{option}^^A bgcolor
+% \end{option}^^A backgroundcolor
+% \end{option}^^A backcolor
+% \begin{option}{pageheadingsvskip}
+% \changes{v2.05}{2016/06/20}{neu}^^A
+% \begin{macro}{\tud@dim@pageheadingsvskip}
+% \changes{v2.05}{2016/06/20}{neu}^^A
+% \begin{option}{headingsvskip}
+% \changes{v2.05}{2016/06/20}{neu}^^A
+% \begin{macro}{\tud@dim@headingsvskip}
+% \changes{v2.05}{2016/06/20}{neu}^^A
+% Mit diesen Optionen kann der Anwender die Überschriften von Titel, Teilen und
+% Kapiteln vertikal von ihrer Standardposition verschieben, welche vom \CD
+% eigentlich vorgegeben ist. Die Option \opt{pageheadingsvskip} verschiebt
+% dabei Überschriften, welche allein auf einer Seite stehen, also Überschriften
+% von Teilen oder auf Kapitelseiten. Auch die vertikale Position des Titels
+% kann damit beeinflusst werden. Mit der Option \opt{headingsvskip} werden die
+% Überschriften von Kapiteln, bei denen direkt danach der Fließtext folgt, oder
+% die des Titelkopfes (\opt{titlepage}|=|\val{false}) verschoben.
+% \begin{macrocode}
+%<*book|report|article>
+\newcommand*\tud@dim@pageheadingsvskip{0pt}
+\TUD@key{pageheadingsvskip}{%
+ \TUD@set@dimenkey{pageheadingsvskip}{\tud@dim@pageheadingsvskip}{#1}%
+}
+\newcommand*\tud@dim@headingsvskip{0pt}
+\TUD@key{headingsvskip}{%
+ \TUD@set@dimenkey{headingsvskip}{\tud@dim@headingsvskip}{#1}%
+}
+%</book|report|article>
+% \end{macrocode}
+% \end{macro}^^A \tud@dim@headingsvskip
+% \end{option}^^A headingsvskip
+% \end{macro}^^A \tud@dim@pageheadingsvskip
+% \end{option}^^A pageheadingsvskip
+%
+% \iffalse
+%</class&option>
+%<*class|package&fixfonts>
+%<*option>
+% \fi
+%
+% \subsection{Schrifteinstellung und -größe der Überschriften}
+%
+% \begin{option}{headings}
+% \changes{v2.06}{2018/08/20}{neu}^^A
+% \begin{macro}{\if@tud@heavyheadings}
+% \changes{v2.06}{2018/08/20}{neu}^^A
+% Die Option wird dahingehend erweitert, dass die Überschriften auch im
+% extra-fetten Schnitt gesetzt werden können.
+% \begin{macrocode}
+\newif\if@tud@heavyheadings
+\TUD@key{headings}{%
+ \TUD@set@numkey{headings}{@tempa}{%
+ {light}{0},{lightfont}{0},{lite}{0},{litefont}{0},{noheavyfont}{0},%
+ {normal}{0},{standard}{0},{std}{0},{normalbold}{0},{boldnormal}{0},%
+ {heavy}{1},{heavyfont}{1},{bold}{1},{boldfont}{1},%
+ {ultrabold}{1},{boldultra}{1},{heavybold}{1},{boldheavy}{1},%
+ {extendedbold}{1},{boldextended}{1}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\@tempa\relax% light
+ \@tud@heavyheadingsfalse%
+ \or% heavy
+ \@tud@heavyheadingstrue%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@heavyheadings
+% \end{option}^^A headings
+%
+% \iffalse
+%</option>
+%</class|package&fixfonts>
+%<*class&option>
+% \fi
+%
+% \begin{option}{headings}
+% \begin{option}{open}
+% \begin{option}{chapterprefix}
+% Die \KOMAScript-Option \opt{headings} setzt für alle Überschriften die
+% Formatierung zurück. Um die Einstellungen für das \CD aktiv zu halten, werden
+% nach der Ausführung der Option durch \cs{tud@x@scr@headings@reset} die mit
+% \cs{tud@komafont@set} definierten Makros \cs{tud@komafont@\meta{Element}}
+% erneut an die entsprechenden Schriftelemente angehängt. Bei der Verwendung
+% der \KOMAScript-Option \opt{headings}|=|\val{standardclasses} werden außerdem
+% noch die Optionen \opt{open} und \opt{chapterprefix} ausgeführt, weshalb auch
+% auf diese reagiert werden muss.
+% \begin{macrocode}
+\DefineFamilyMember{KOMA}
+\DefineFamilyKey{KOMA}{headings}{%
+ \TUD@SpecialOptionAtDocument{tud@x@scr@headings@reset}%
+ \FamilyKeyStateProcessed%
+}
+%<*book|report>
+\DefineFamilyKey{KOMA}{open}{%
+ \TUD@SpecialOptionAtDocument{tud@x@scr@headings@reset}%
+ \FamilyKeyStateProcessed%
+}
+\DefineFamilyKey{KOMA}{chapterprefix}{%
+ \TUD@SpecialOptionAtDocument{tud@x@scr@headings@reset}%
+ \FamilyKeyStateProcessed%
+}
+%</book|report>
+% \end{macrocode}
+% \end{option}^^A chapterprefix
+% \end{option}^^A open
+% \end{option}^^A headings
+%
+% \iffalse
+%</class&option>
+%<*class&body>
+% \fi
+%
+% \begin{macro}{\tud@x@scr@headings@set}
+% \changes{v2.05}{2015/11/24}{neu}^^A
+% \begin{macro}{\tud@x@scr@headings@current}
+% \changes{v2.05}{2015/11/24}{neu}^^A
+% \begin{macro}{\tud@sec@fontsize}
+% \changes{v2.05}{2015/11/24}{neu}^^A
+% \begin{macro}{\tud@thesis@fontsize}
+% \changes{v2.05}{2015/11/24}{neu}^^A
+% Als erstes werden die Optionen verarbeitet, welche einen Einfluss auf die
+% Formatierung respektive die Schriftgröße der Überschriften haben. Wird über
+% die Option \opt{headings} eine andere Überschriftengröße gewählt, werden mit
+% dem Makro \cs{tud@x@scr@headings@set} die passenden Schriftgrößen sowohl für
+% die Überschriften (\cs{tud@sec@fontsize}) als auch die Titelseite
+% (\cs{tud@thesis@fontsize}) gesetzt. Dafür wird gewählte Schriftgröße
+% der Überschriften\footnote{\ignorespaces%
+% Option \opt{headings}|=|\val{standardclasses/big/normal/small}\ignorespaces%
+% } im Hilfsmakro \cs{tud@x@scr@headings@current} gesichert.
+% \begin{macrocode}
+\newcommand*\tud@x@scr@headings@current{}
+\newcommand*\tud@sec@fontsize{}
+\newcommand*\tud@thesis@fontsize{}
+\newcommand*\tud@x@scr@headings@set[1][]{%
+ \def\@tempa##1##2##3{%
+ \ifstr{##1}{\tud@x@scr@headings@current}{}{%
+ \renewcommand*\tud@x@scr@headings@current{##1}%
+ \renewcommand*\tud@sec@fontsize{##2}%
+ \renewcommand*\tud@thesis@fontsize{##3}%
+ #1%
+ }%
+ }%
+% \end{macrocode}
+% Wird \cs{tud@x@scr@headings@set} aufgerufen, so werden mit \cs{KOMAoptionOf}
+% die aktuellen Werte der Option \opt{headings} ausgelesen, welche in einer
+% Liste ausgegeben werden. Diese wird durchlaufen und dabei auf die relevanten
+% Werte reagiert.
+% \begin{macrocode}
+ \KOMAoptionOf[\def\@tempb]{\KOMAClassFileName}{headings}%
+ \@for\@tempc:=\@tempb\do{%
+ \ifstr{standardclasses}{\@tempc}{\@tempa{standardclasses}{\Huge}{\LARGE}}{%
+ \ifstr{big}{\@tempc}{\@tempa{big}{\Huge}{\LARGE}}{%
+ \ifstr{normal}{\@tempc}{\@tempa{normal}{\huge}{\Large}}{%
+ \ifstr{small}{\@tempc}{\@tempa{small}{\LARGE}{\large}}{}}}}%
+ }%
+% \end{macrocode}
+% Der Abstand nach Teil- und Kapitelüberschriften wird ebenso in Abhängigkeit
+% der gewählten Einstellung für \opt{headings} definiert.
+% \begin{macrocode}
+ \begingroup
+ \tud@sec@fontsize%
+ \@tempskipa=\glueexpr%
+ .8\baselineskip \@plus .05\baselineskip \@minus .1\baselineskip%
+ \relax\relax%
+ \edef\tud@res@a{%
+ \endgroup%
+ \def\noexpand\tud@cd@afterskip{\the\@tempskipa}%
+ }%
+ \tud@res@a%
+}
+% \end{macrocode}
+% Damit die Einstellungen für die Größe wirksam werden, wird das Makro einmalig
+% zu Beginn des Dokumentes ausgeführt.
+% \begin{macrocode}
+\AtEndPreamble{\tud@x@scr@headings@set}
+% \end{macrocode}
+% \end{macro}^^A \tud@thesis@fontsize
+% \end{macro}^^A \tud@sec@fontsize
+% \end{macro}^^A \tud@x@scr@headings@current
+% \end{macro}^^A \tud@x@scr@headings@set
+% \begin{macro}{\tud@x@scr@headings@reset}
+% \changes{v2.05}{2015/11/24}{neu}^^A
+% Hiermit wird nach dem Ausführen der Option \opt{headings} im Zweifelsfall die
+% Größe und Formatierung der Überschriften neu gesetzt.
+% \begin{macrocode}
+\newcommand*\tud@x@scr@headings@reset{%
+ \tud@cd@process%
+ \tud@x@scr@headings@set[%
+ \ifcase\tud@cd@part@num\relax\else% !false
+ \tud@komafont@reset{part}%
+ \tud@komafont@reset{partnumber}%
+ \fi%
+%<*book|report>
+ \ifcase\tud@cd@chapter@num\relax\else% !false
+ \tud@komafont@reset{chapter}%
+ \tud@komafont@reset{chapterprefix}%
+ \fi%
+%</book|report>
+ \ifcase\tud@cd@section@num\relax\else% !false
+ \tud@komafont@reset{section}%
+ \tud@komafont@reset{subsection}%
+ \tud@komafont@reset{subsubsection}%
+ \fi%
+ ]%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@x@scr@headings@reset
+%
+% \iffalse
+%</class&body>
+%<*body>
+%<*class|package&fixfonts>
+% \fi
+%
+% \subsection{Umsetzung des Layouts}
+%
+% \begin{macro}{\tud@sec@fontface}
+% \changes{v2.05}{2016/04/04}{Optionales Argument für \pkg{tudscrcomp}}^^A
+% \changes{v2.06}{2018/08/20}{extra-fette Überschriften möglich}^^A
+% \begin{macro}{\tud@sec@@fontface}
+% \begin{macro}{\tud@sec@format}
+% \begin{macro}{\tud@sec@uppercase}
+% \begin{macro}{\tud@sec@strut}
+% \changes{v2.06}{2018/07/24}{neu}^^A
+% Mit \cs{tud@sec@fontface} wird die Schriftart für Überschriften im
+% Layout des \CDs definiert.
+% \begin{macrocode}
+%<package&fixfonts>\AfterPackage{tudscrfonts}{%
+\newcommand*\tud@sec@fontface[1][]{\tud@sec@@fontface{#1}}%
+\newcommand*\tud@sec@@fontface[1]{%
+ \sectfont#1%
+ \if@tud@cdfont@active\if@tud@heavyheadings%
+ \if@tud@x@mweights@enabled%
+ \edef\bfseries@rm{\tud@cdfont@ebf}%
+ \edef\bfseries@sf{\tud@cdfont@ebf}%
+ \edef\bfseries@tt{\tud@ttfont@ebf}%
+ \fi%
+ \let\bfdefault\tud@cdfont@ebf%
+ \fontseries{\tud@cdfont@ebf}%
+ \fi\fi%
+ \selectfont%
+}
+% \end{macrocode}
+% Sind die alten Schriftfamilien aktiv, wird mit \cs{tud@sec@fontface} \DIN als
+% Schriftart für Überschriften im Layout des \CDs definiert. Allerdings kann
+% dies per Option auch deaktiviert werden.
+% \begin{macrocode}
+\if@tud@cdoldfont@active
+ \renewcommand*\tud@sec@fontface[1][]{%
+ \if@tud@cdoldfont@nodin%
+ \tud@sec@@fontface{#1}%
+ \else%
+ \tud@db\tud@raggedright%
+ \fi%
+ }%
+\fi
+% \end{macrocode}
+% Der Befehl \cs{tud@sec@format} dient zur Formatierung von Überschriften.
+% Dabei wird dieser mit der von \KOMAScript{} bereitgestellten Schnittstelle für
+% Teile\footnote{\cs{partlineswithprefixformat}},
+% Kapitel\footnote{\cs{chapterlineswithprefixformat}, \cs{chapterlinesformat}}
+% und
+% Abschnitte\footnote{\cs{sectionlinesformat}, \cs{sectioncatchphraseformat}}
+% verwendet. Dadurch wird eine Anpassung der Gliederungsbefehle~-- wie es
+% einschließlich Version~v2.05 für die erzwungene Großschreibung umgesetzt
+% wurde~-- vermieden. Für die \OpenSans führt das Makro \cs{tud@sec@format}
+% lediglich \cs{tud@sec@strut} aus.
+% \begin{macrocode}
+\newcommand*\tud@sec@format[2][]{%
+ \IfArgIsEmpty{#1}{%
+ \tud@sec@strut%
+ }{%
+ \begingroup%
+ \usefontofkomafont{#1}%
+ \tud@sec@strut%
+ \endgroup%
+ }%
+ #2%
+}
+% \end{macrocode}
+% Für die alten Schriften hat der Befehl eine erweiterte Funktionalität, wenn
+% die Schriftfamilie \DIN aktiv ist, welche für Überschriften einzusetzen ist.
+% Das \CD verlangt dabei, dass zwingend Majuskeln\footnote{Großbuchstaben} zu
+% verwenden sind. Hierfür wird der Befehl \cs{MakeTextUppercase} aus dem Paket
+% \pkg{textcase} genutzt, welcher den internen \LaTeX-Befehl \cs{MakeUppercase}
+% verbessert. Das optionale Argument kann genutzt werden, falls nicht die
+% aktuelle Schrift sondern ein durch \KOMAScript{} definiertes Schriftelement
+% ausgewertet werden soll.
+% \begin{macrocode}
+\if@tud@cdoldfont@active
+ \newcommand*\tud@sec@uppercase{\MakeUppercase}%
+ \AfterPackage*{textcase}{%
+ \renewcommand*\tud@sec@uppercase{\MakeTextUppercase}%
+ }%
+ \renewcommand*\tud@sec@format[2][]{%
+ \@tud@res@swafalse%
+ \IfArgIsEmpty{#1}{%
+ \tud@sec@strut%
+ \tud@ifdin{\@tud@res@swatrue}{}%
+ }{%
+ \begingroup%
+ \usefontofkomafont{#1}%
+ \tud@sec@strut%
+ \tud@ifdin{\aftergroup\@tud@res@swatrue}{}%
+ \endgroup%
+ }%
+ \if@tud@res@swa%
+ \tud@sec@uppercase{#2}%
+ \else%
+ #2%
+ \fi%
+ }%
+\fi
+% \end{macrocode}
+% Für Abschnitte etc. liegt auf einer neuen Seite dier erste Grundlinie höher,
+% als für Großbuchstaben in der größeren Schrift für \cs{section} etc. benötigt
+% wird. Deshalb wird die Grundlinie \enquote{notfallmäßig} so weit nach unten
+% verschoben, wie für den höchsten Buchstabe benötigt wird. Mit dem Befehl
+% \cs{tud@sec@strut} wird für alle Überschriften dafür gesorgt, dass immer der
+% gleiche Freiraum bereitgehalten wird, unabhängig vom Inhalt der spezifischen
+% Überschrift. Hierfür wird \cs{strutbox} aus dem \LaTeXe"~Kernel~-- nachdem
+% \cs{strut} zuvor bereits einmal ausgeführt wird, um die Standardgröße der Box
+% zu verwenden~-- temporär umdefiniert.
+% \begin{macrocode}
+\newrobustcmd*\tud@sec@strut{%
+%<*class>
+ \begingroup%
+ \strut\setbox\strutbox\hbox{\vphantom{\textsuperscript{\"A\"O\"U}}}\strut%
+ \endgroup%
+%</class>
+}
+%<package&fixfonts>}
+% \end{macrocode}
+% \end{macro}^^A \tud@sec@strut
+% \end{macro}^^A \tud@sec@uppercase
+% \end{macro}^^A \tud@sec@format
+% \end{macro}^^A \tud@sec@@fontface
+% \end{macro}^^A \tud@sec@fontface
+%
+% \iffalse
+%</class|package&fixfonts>
+%</body>
+%<*class&body>
+% \fi
+%
+% \begin{macro}{\tud@title@fontcolor}
+% \begin{macro}{\tud@part@fontcolor}
+% \begin{macro}{\tud@chapter@fontcolor}
+% \begin{macro}{\tud@section@fontcolor}
+% \changes{v2.05}{2015/07/07}{neu}^^A
+% Die Makros werden für die Farbe der Überschriften verwendet.
+% \begin{macrocode}
+\newcommand*\tud@title@fontcolor{}
+\newcommand*\tud@part@fontcolor{}
+%<*book|report>
+\newcommand*\tud@chapter@fontcolor{}
+%</book|report>
+\newcommand*\tud@section@fontcolor{}
+% \end{macrocode}
+% \end{macro}^^A \tud@section@fontcolor
+% \end{macro}^^A \tud@chapter@fontcolor
+% \end{macro}^^A \tud@part@fontcolor
+% \end{macro}^^A \tud@title@fontcolor
+% \begin{macro}{\raggedtitle}
+% \changes{v2.05}{2016/04/05}{neu}^^A
+% Dieses Makro wird für die Ausrichtung des Titels bereitgehalten.
+% \begin{macrocode}
+\providecommand*\raggedtitle{\tud@raggedright}
+% \end{macrocode}
+% \end{macro}^^A \raggedtitle
+% \begin{macro}{\tud@cd@process}
+% \changes{v2.02}{2014/08/29}{Anpassungen für \pkg{fontspec}}^^A
+% \changes{v2.05}{2016/04/04}{Schrift für \val{subtitle} abhängig von
+% \cs{mddefault}}^^A
+% \changes{v2.05}{2016/04/05}{Einstellung für Ausrichtung der Überschriften}^^A
+% Dieser Befehl kümmert sich darum, dass die gewählten Optionen für den
+% Seitenstil auch umgesetzt werden. Dabei wird insbesondere darauf Wert gelegt,
+% dass die Optionen auch im Dokument geändert und wiederhergestellt werden
+% können.
+% \ToDo{\cs{...pagecolor} und {\cs{...fontcolor} (part/chapter/title)}}[v2.07]
+% \ToDo{Schriftfarbauswahl in \cs{tud@cd@process}}[v2.07]
+% \begin{macrocode}
+\newcommand*\tud@cd@process{%
+% \end{macrocode}
+% Die Einstellungen für den Titel. Vor dessen Umstellung werden die relevanten
+% Originalbefehle mit \cs{tud@cs@store}\marg{Befehl} gesichert, damit diese
+% mit \cs{tud@cs@restore}\marg{Befehl} wiederhergestellt werden können.
+% \begin{macrocode}
+ \ifcase\tud@cd@title@num\relax% false
+%<*book|report|article>
+ \tud@cs@restore{titlepagestyle}%
+%</book|report|article>
+%<*poster>
+ \renewcommand*\titlepagestyle{empty}%
+%</poster>
+ \tud@komafont@unset{titlehead}%
+ \tud@komafont@unset{title}%
+ \tud@komafont@unset{subtitle}%
+ \tud@komafont@unset{subject}%
+%<*book|report|article>
+ \tud@komafont@unset{author}%
+ \tud@komafont@unset{date}%
+ \tud@komafont@unset{publishers}%
+%</book|report|article>
+ \else% !false
+%<*book|report|article>
+ \tud@cs@store{titlepagestyle}%
+ \renewcommand*\titlepagestyle{plain.tudheadings}%
+%</book|report|article>
+%<*poster>
+ \renewcommand*\titlepagestyle{empty.tudheadings}%
+%</poster>
+ \tud@komafont@set{titlehead}{\usekomafont{titlepage}}%
+ \tud@komafont@set{title}{%
+ \usekomafont{disposition}%
+ \raggedtitle%
+ \tud@sec@fontface%
+ \tud@sec@fontsize%
+ \tud@color{\tud@title@fontcolor}%
+ }%
+ \tud@komafont@set{subtitle}{%
+ \tud@thesis@fontsize%
+ \fontseries{\tud@cdfont@bf}\selectfont%
+ }%
+ \tud@komafont@set{subject}{%
+ \sffamily%
+ \usesizeofkomafont{section}%
+ \tud@color{\tud@title@fontcolor}%
+ }%
+%<*book|report|article>
+ \tud@komafont@set{author}{\usekomafont{subject}}%
+ \tud@komafont@set{publishers}{\usekomafont{author}}%
+ \tud@komafont@set{date}{\usekomafont{titlepage}}%
+%</book|report|article>
+ \fi%
+% \end{macrocode}
+% Das gleiche für die Teileseiten.
+% \begin{macrocode}
+ \ifcase\tud@cd@part@num\relax% false
+ \tud@cs@restore{scr@part@beforeskip}%
+%<*book|report>
+ \tud@cs@restore{scr@part@innerskip}%
+%</book|report>
+ \tud@cs@restore{scr@part@afterskip}%
+ \tud@cs@restore{partheadstartvskip}%
+%<*book|report>
+ \tud@cs@restore{partheadendvskip}%
+ \tud@cs@restore{partheademptypage}%
+ \tud@cs@restore{partpagestyle}%
+%</book|report>
+ \tud@cs@restore{partlineswithprefixformat}%
+ \tud@komafont@unset{part}%
+ \tud@komafont@unset{partnumber}%
+ \tud@cs@restore{raggedpart}%
+% \end{macrocode}
+% Es werden die Standardbefehle gesichert und für das \CD angepasst. Einigen
+% Makros werden mittels \cs{let} Definitionen von anderen Makros zugewiesen,
+% die sich wiederum am Original orientieren. Hintergrund ist, dass die
+% originalen Befehle angepasst werden sollen. Damit dies nicht bei jeder
+% Optionswahl sondern nur einmalig geschehen muss und um möglichst einfach auf
+% die Originaldefinition zurückschalten zu können, wird so verfahren. Die
+% angepassten Befehle selbst und die dazugehörige Beschreibung sind etwas
+% weiter unten im Quelltext zu finden.
+% \begin{macrocode}
+ \else% !false
+ \tud@cs@store{scr@part@beforeskip}%
+%<*book|report>
+ \renewcommand*\scr@part@beforeskip{\tud@cd@beforeskip}%
+%</book|report>
+%<*article|poster>
+ \renewcommand*\scr@part@beforeskip{\tud@cd@afterskip+\baselineskip}%
+%</article|poster>
+%<*book|report>
+ \tud@cs@store{scr@part@innerskip}%
+ \renewcommand*\scr@part@innerskip{\tud@cd@innerskip}%
+%</book|report>
+ \tud@cs@store{scr@part@afterskip}%
+ \renewcommand*\scr@part@afterskip{\tud@cd@afterskip}%
+ \tud@cs@store{partheadstartvskip}%
+ \let\partheadstartvskip\tud@partheadstartvskip%
+%<*book|report>
+ \tud@cs@store{partheadendvskip}%
+ \let\partheadendvskip\relax%
+ \tud@cs@store{partheademptypage}%
+ \let\partheademptypage\tud@partheademptypage%
+ \tud@cs@store{partpagestyle}%
+ \renewcommand*\partpagestyle{plain.tudheadings}%
+%</book|report>
+ \tud@cs@store{partlineswithprefixformat}%
+ \let\partlineswithprefixformat\tud@partlineswithprefixformat%
+% \end{macrocode}
+% Es wird die Schriftfarbe, "~größe und "~art angepasst, je nachdem ob der
+% Titel des Dokumentes auf den Teileseiten auftauchen soll oder eben nicht.
+% \begin{macrocode}
+ \tud@komafont@set{part}{%
+ \tud@sec@fontface%
+ \tud@color{\tud@part@fontcolor}%
+ }%
+ \tud@komafont@set{partnumber}{%
+ \tud@sec@fontface%
+ \tud@color{\tud@part@fontcolor}%
+ }%
+ \tud@cs@store{raggedpart}%
+ \renewcommand*\raggedpart{\tud@raggedright}%
+ \fi%
+% \end{macrocode}
+% Die Einstellungen für die Kapitel. Auch hier werden alle relevanten Befehle
+% gesichert, damit diese wiederhergestellt werden können. Verständlicherweise
+% fällt für die \cls{tudscrartcl}-Klasse der Anteil für die Kapitel weg.
+% \begin{macrocode}
+%<*book|report>
+ \ifcase\tud@cd@chapter@num\relax% false
+ \tud@cs@restore{scr@chapter@beforeskip}%
+ \tud@cs@restore{scr@chapter@innerskip}%
+ \tud@cs@restore{scr@chapter@afterskip}%
+ \tud@cs@restore{chapterheadstartvskip}%
+ \tud@cs@restore{chapterlineswithprefixformat}%
+ \tud@cs@restore{chapterlinesformat}%
+ \tud@cs@restore{tud@chapter@before@hook}%
+ \tud@cs@restore{tud@chapter@after@hook}%
+ \tud@komafont@unset{chapter}%
+ \tud@komafont@unset{chapterprefix}%
+ \tud@cs@restore{raggedchapter}%
+% \end{macrocode}
+% Auch hier werden die Standardbefehle für ein mögliches Deaktivieren der
+% Optionen gesichert und anschließend geändert. Dabei erfolgt die Zuweisung der
+% angepassten Befehle abermals über \cs{let}.
+% \begin{macrocode}
+ \else% !false
+ \tud@cs@store{scr@chapter@beforeskip}%
+ \renewcommand*\scr@chapter@beforeskip{\tud@cd@beforeskip}%
+ \tud@cs@store{scr@chapter@innerskip}%
+ \renewcommand*\scr@chapter@innerskip{\tud@cd@innerskip}%
+ \tud@cs@store{scr@chapter@afterskip}%
+ \renewcommand*\scr@chapter@afterskip{\tud@cd@afterskip}%
+ \tud@cs@store{chapterheadstartvskip}%
+ \let\chapterheadstartvskip\tud@chapterheadstartvskip%
+ \tud@cs@store{chapterlineswithprefixformat}%
+ \let\chapterlineswithprefixformat\tud@chapterlineswithprefixformat%
+ \tud@cs@store{chapterlinesformat}%
+ \let\chapterlinesformat\tud@chapterlinesformat%
+ \tud@cs@store{tud@chapter@before@hook}%
+ \renewcommand*\tud@chapter@before@hook{\tud@chapter@pre}%
+ \tud@cs@store{tud@chapter@after@hook}%
+ \renewcommand*\tud@chapter@after@hook{\tud@chapter@app}%
+ \tud@komafont@set{chapter}{%
+ \tud@sec@fontface%
+ \tud@sec@fontsize%
+ \tud@color{\tud@chapter@fontcolor}%
+ }%
+ \tud@komafont@set{chapterprefix}{\usesizeofkomafont{partnumber}}%
+ \tud@cs@store{raggedchapter}%
+ \renewcommand*\raggedchapter{\tud@raggedright}%
+ \fi%
+%</book|report>
+% \end{macrocode}
+% Die Einstellungen für die Abschnittsebene. Wiederum werden alle relevanten
+% Befehle gesichert.
+% \begin{macrocode}
+ \ifcase\tud@cd@section@num\relax% false
+ \tud@cs@restore{sectionlinesformat}%
+ \tud@cs@restore{sectioncatchphraseformat}%
+ \tud@komafont@unset{section}%
+ \tud@komafont@unset{subsection}%
+ \tud@komafont@unset{subsubsection}%
+ \tud@komafont@unset{paragraph}%
+ \tud@komafont@unset{subparagraph}%
+ \tud@cs@restore{raggedsection}%
+ \tud@cs@restore{minisec}%
+ \tud@komafont@unset{minisec}%
+ \else% !false
+ \tud@cs@store{sectionlinesformat}%
+ \let\sectionlinesformat\tud@sectionlinesformat%
+ \tud@cs@store{sectioncatchphraseformat}%
+ \let\sectioncatchphraseformat\tud@sectioncatchphraseformat%
+ \tud@komafont@set{section}{%
+ \tud@sec@fontface%
+ \tud@color{\tud@section@fontcolor}%
+ }%
+ \tud@komafont@set{subsection}{%
+ \tud@sec@fontface%
+ \tud@color{\tud@section@fontcolor}%
+ }%
+ \tud@komafont@set{subsubsection}{%
+ \tud@sec@fontface%
+ \tud@color{\tud@section@fontcolor}%
+ }%
+ \tud@komafont@set{paragraph}{%
+ \tud@color{\tud@section@fontcolor}%
+ }%
+ \tud@komafont@set{subparagraph}{%
+ \tud@color{\tud@section@fontcolor}%
+ }%
+ \tud@cs@store{raggedsection}%
+ \renewcommand*\raggedsection{\tud@raggedright}%
+ \tud@cs@store{minisec}%
+ \renewcommand\minisec[1]{%
+ \tud@cs@use{minisec}{\tud@sec@format{##1}}%
+ }%
+ \tud@komafont@set{minisec}{%
+ \tud@sec@fontface%
+ \ifcase\tud@cd@section@num\relax\or\else% *color
+ \ifstr{\tud@pagecolor}{HKS41}{}{\color{HKS41}}%
+ \fi%
+ }%
+ \fi%
+% \end{macrocode}
+% Für Poster wird außerdem der passende Seitenstil und die Ausprägung von Kopf
+% und Fuß sowie die Schriftfarbe festgelegt.
+% \begin{macrocode}
+%<*poster>
+ \ifcase\tud@cd@num\relax% false
+ \pagestyle{empty}%
+ \color{black}%
+ \else% !false
+ \pagestyle{empty.tudheadings}%
+ \ifcase\tud@cd@num\relax\or% true
+ \tud@locked@num@preset{tud@head@bar@num}{0}%
+ \tud@locked@bool@preset{@tud@foot@colored}{false}%
+ \color{black}%
+ \or% litecolor
+ \tud@locked@num@preset{tud@head@bar@num}{1}%
+ \tud@locked@bool@preset{@tud@foot@colored}{false}%
+ \color{HKS41}%
+ \or% barcolor
+ \tud@locked@num@preset{tud@head@bar@num}{2}%
+ \tud@locked@bool@preset{@tud@foot@colored}{false}%
+ \color{HKS41}%
+ \else% bicolor/color/full
+ \tud@locked@num@preset{tud@head@bar@num}{3}%
+ \tud@locked@bool@preset{@tud@foot@colored}{true}%
+ \color{HKS41}%
+ \fi%
+ \fi%
+%</poster>
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cd@process
+% \begin{macro}{\tud@cd@specialpage@set}
+% \changes{v2.04}{2015/04/21}{neu}^^A
+% \changes{v2.04d}{2016/03/26}{Bugfix für \cls{tudscrartcl}}^^A
+% \begin{macro}{\tud@cd@specialpage@unset}
+% \changes{v2.04}{2015/04/21}{neu}^^A
+% Diese beiden Hilfsmakros werden für Titel- Teile und separate Kapitelseite
+% benötigt, um die Fußnoten auf diesen speziellen Seiten in der gleichen Farbe
+% wie den Rest der verwendeten Schriften zu setzen.
+% \begin{macrocode}
+%<*book|report|article>
+\newcommand*\tud@cd@specialpage@set[1]{%
+ \tud@komafont@set{footnote}{%
+ \edef\@tempa{%
+ \noexpand\tud@color{%
+ \expandafter\noexpand\csname tud@#1@fontcolor\endcsname%
+ }%
+ }\@tempa%
+ }%
+ \tud@cs@store{footnoterule}%
+ \let\footnoterule\relax%
+}
+%</book|report|article>
+%<*book|report>
+\newcommand*\tud@cd@specialpage@unset{%
+ \tud@komafont@unset{footnote}%
+ \tud@cs@restore{footnoterule}%
+}
+%</book|report>
+% \end{macrocode}
+% \end{macro}^^A \tud@cd@specialpage@unset
+% \end{macro}^^A \tud@cd@specialpage@set
+% \begin{macro}{\tud@cd@headstartvskip}
+% \changes{v2.06}{2018/08/01}{neu}^^A
+% \begin{macro}{\tud@cd@vphantom}
+% \changes{v2.06}{2018/08/01}{neu}^^A
+% \begin{macro}{\tud@cd@beforeskip}
+% \changes{v2.06}{2018/08/01}{neu}^^A
+% \begin{macro}{\tud@cd@innerskip}
+% \changes{v2.06}{2018/08/01}{neu}^^A
+% \begin{macro}{\tud@cd@afterskip}
+% \changes{v2.06}{2018/08/01}{neu}^^A
+% Im \TUDCD werden sowohl Titel als auch Teil- und Kapitelüberschriften auf der
+% gleichen Grundlinienhöhe gesetzt. Hierfür sind Anpassungen der entsprechenden
+% Gliederungsbefehle notwendig. Insbesondere der vor den Überschriften gesetzte
+% Abstand wird für gewöhnlich über die Befehle \cs{partheadstartvskip} bzw.
+% \cs{chapterheadstartvskip} gesetzt. Um das Layout des \CDs umzusetzen, werden
+% diese beiden Makros als Haken genutzt.
+%
+% Das Makro \cs{tud@cd@beforeskip} enthält den Abstand vor einer Überschrift,
+% welcher über \cs{tud@cd@headstartvskip} gesetzt wird. Der Abstand zwischen
+% der Nummerierung eines Teils und der eigentlichen Bezeichnung wird mit
+% \cs{tud@cd@innerskip} definiert und durch \KOMAScript{} eingefügt. Gleiches
+% gilt für eine separate Kapitelnummernzeile (\opt{chapterprefix}) und dem
+% eigentlichen Kapiteltitel. Durch \cs{tud@cd@afterskip} wird der Abstand
+% zwischen Titel und Fließtext respektive der unteren Prääambel definiert.
+% Dieser Abstand ist abhängig von der gewählten Einstellung für \opt{headings}.
+% \begin{macrocode}
+\newcommand*\tud@cd@beforeskip{%
+ \dimexpr-\tud@len@areavskip-\tud@len@areaheadvskip\relax%
+}
+\newcommand*\tud@cd@innerskip{.25\baselineskip}%
+\newcommand*\tud@cd@afterskip{%
+ .75\baselineskip \@plus .05\baselineskip \@minus .1\baselineskip%
+}
+\newcommand*\tud@cd@headstartvskip{%
+ \@tempskipa=\glueexpr\tud@cd@beforeskip\relax\relax%
+ \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi%
+ \null\vskip-\baselineskip\vskip\@tempskipa%
+}
+% \end{macrocode}
+% Sollte keine Präfixzeile für Teile oder Kapitel verwendet werden, muss für
+% die exakte Positionierung der Grundlinie des Titels der entsprechende Abstand
+% eingefügt werden, wofür \cs{tud@cd@vphantom} genutzt wird.
+% \begin{macrocode}
+\newcommand*\tud@cd@vphantom{%
+ \begingroup%
+ \usekomafont{partnumber}{\nobreak\tud@sec@strut}%
+ \setlength\@tempskipa{\tud@cd@innerskip}%
+ \par\nobreak\vskip\@tempskipa%
+ \endgroup%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cd@afterskip
+% \end{macro}^^A \tud@cd@innerskip
+% \end{macro}^^A \tud@cd@beforeskip
+% \end{macro}^^A \tud@cd@vphantom
+% \end{macro}^^A \tud@cd@headstartvskip
+%
+% \iffalse
+%<*book|report>
+% \fi
+%
+% \subsection{Positionierung und Formatierung von Überschriften}
+% \subsubsection{Präambeln für Teile und Kapitel}
+%
+% \begin{macro}{\tud@preamble@fontcolor}
+% \changes{v2.06}{2018/08/08}{neu}^^A
+% Der Befehl wird innerhalb von \cs{set@@@@preamble} genutzt, um die notwendige
+% Farbe des Textes zu aktivieren.
+% \begin{macrocode}
+\newcommand*\tud@preamble@fontcolor{}
+% \end{macrocode}
+% \end{macro}^^A \tud@preamble@fontcolor
+% \begin{macro}{\tud@partpreamble}
+% Um die \KOMAScript-Befehle für die Teilepräambel auch für das farbige Layout
+% nutzen zu können, müssen diese leicht angepasst werden. Für die Präambeln wird
+% die Überschrift einer Zusammenfassung ausschließlich zentriert und relativ
+% klein gesetzt. Außerdem wird für eine mögliche Zusammenfassung die
+% \opt{titlepage}-Option deaktiviert. Aufgerufen wird der Befehl durch die
+% gepatchte Version von \cs{set@@@@preamble}.
+% \begin{macrocode}
+\newcommand*\tud@partpreamble{%
+% \end{macrocode}
+% Zunächst wird der unterschiedliche Abstand bei Teil- und Kapitelpräambeln
+% ausgeglichen.
+% \begin{macrocode}
+ \@tempskipa=\glueexpr\tud@cd@afterskip\relax%
+ \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi%
+ \vskip\@tempskipa%
+% \end{macrocode}
+% Anschließend folgen die Anpassungen für die Teilpräambel.
+% \begin{macrocode}
+ \ifnum\tud@abstract@level@num>\@ne\relax% sec/chap
+ \renewcommand*\tud@abstract@level@num{1}%
+ \fi%
+ \KOMAoptions{titlepage=false}%
+ \null\vskip-\baselineskip%
+ \addtokomafont{disposition}{\tud@color{\tud@part@fontcolor}}%
+ \addtokomafont{dictum}{\tud@color{\tud@part@fontcolor}}%
+ \let\tud@preamble@fontcolor\tud@part@fontcolor%
+ \@afterindentfalse\@afterheading%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@partpreamble
+% \begin{macro}{\tud@chapterpreamble}
+% Um die \KOMAScript-Befehle für die Kapitelpräambel auch für das farbige Layout
+% nutzen zu können, müssen diese leicht angepasst werden. Für die Präambeln der
+% Kapitel gilt das gleiche wie für die der Teileseiten. Auch hier erfolgt die
+% Ausführung des Befehls durch die gepatchte Version von \cs{set@@@@preamble}.
+% \begin{macrocode}
+\newcommand*\tud@chapterpreamble{%
+ \ifnum\tud@abstract@level@num>\@ne\relax% sec/chap
+ \renewcommand*\tud@abstract@level@num{1}%
+ \fi%
+ \KOMAoptions{titlepage=false}%
+ \null\vskip-\baselineskip%
+% \end{macrocode}
+% Die Farb- und Schrifteinstellungen sind nur für reine Kapitelseiten notwendig.
+% \begin{macrocode}
+ \if@tud@chapterpage%
+ \addtokomafont{disposition}{\tud@color{\tud@chapter@fontcolor}}%
+ \addtokomafont{dictum}{\tud@color{\tud@chapter@fontcolor}}%
+ \let\tud@preamble@fontcolor\tud@chapter@fontcolor%
+ \fi%
+ \@afterindentfalse\@afterheading%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@chapterpreamble
+% \begin{macro}{\set@@@@preamble}
+% Die beiden Befehle für Präambeln aus \KOMAScript{} ignorieren in ihrer
+% ursprünglichen Form die Einstellungen für \opt{parskip}. Dies wird mit diesem
+% Patch beseitigt. Außerdem wird das Makro für die Layouteinstellungen für
+% Teile (\cs{tud@partpreamble}) respektive Kapitel (\cs{tud@chapterpreamble})
+% aufgerufen. Für die Verwendung der \env{abstract}-Umgebung in den Präambeln
+% wird außerdem der Befehl \cs{phantomsection} auf \cs{relax} gesetzt, um mit
+% \cs{autoref} automatisch generierte Querverweise aus dem Paket \pkg{hyperref}
+% nicht zu verändern. Alternativ zu \cs{let}\cs{@parboxrestore}\cs{relax}
+% müsste innerhalb des Argumentes von \cs{parbox} die \KOMAScript-Option
+% \opt{parskip} neu gesetzt werden.
+% \begin{macrocode}
+\CheckCommand\set@@@@preamble[6]{%
+ \expandafter\gdef\csname #1@preamble\endcsname{%
+ \hbox to\hsize{#4\parbox[{#2}]{#3}{#6\par}#5\par}%
+ }%
+}
+\patchcmd{\set@@@@preamble}{%
+ \hbox to\hsize{#4\parbox[{#2}]{#3}{#6\par}#5\par}%
+}{%
+ \def\@tempa####1@####2{%
+ \@nameuse{tud@####1preamble}%
+ \tud@color{\tud@preamble@fontcolor}%
+ \KOMAoptionOf[\KOMAoption{parskip}]{\KOMAClassFileName}{parskip}%
+ }%
+ \hbox to\hsize{%
+ \let\phantomsection\relax%
+ #4\parbox[{#2}]{#3}{\@tempa#1#6\par\bigskip}#5\par%
+ }%
+}{}{\tud@patch@wrn{set@@@@preamble}}
+% \end{macrocode}
+% \end{macro}^^A \set@@@@preamble
+%
+% \iffalse
+%</book|report>
+% \fi
+%
+% \subsubsection{Untertitel für Teile und Kapitel}
+% Im Layout des \CDs können für Teile und Kapitel auch Untertitel angegeben
+% werden.
+%
+% \begin{macro}{\setpartsubtitle}
+% \changes{v2.06}{2018/08/20}{neu}^^A
+% \begin{KOMAfont}{partsubtitle}
+% \changes{v2.06}{2018/08/20}{neu}^^A
+% \begin{KOMAfont}{parttitle}
+% \begin{macro}{\tud@part@subtitle}
+% \changes{v2.06}{2018/08/20}{neu}^^A
+% Auf Anwenderebene können mit \cs{setpartsubtitle} und \cs{setchaptersubtitle}
+% die gewünschten Untertitel angegegben werden.
+% \begin{macrocode}
+\newcommand*\tud@part@subtitle{}
+\newcommand*\setpartsubtitle[1]{\gdef\tud@part@subtitle{#1}}
+% \end{macrocode}
+% Die Schriftelement für die Untertitel von Teilen.
+% \begin{macrocode}
+\newkomafont{partsubtitle}{%
+ \tud@thesis@fontsize%
+ \fontseries{\tud@cdfont@bf}\selectfont%
+ \tud@color{\tud@part@fontcolor}%
+}
+\aliaskomafont{parttitle}{partsubtitle}
+% \end{macrocode}
+% \end{macro}^^A \tud@part@subtitle
+% \end{KOMAfont}^^A parttitle
+% \end{KOMAfont}^^A partsubtitle
+% \end{macro}^^A \setpartsubtitle
+% \begin{macro}{\setchaptersubtitle}
+% \changes{v2.06}{2018/08/20}{neu}^^A
+% \begin{KOMAfont}{chaptersubtitle}
+% \changes{v2.06}{2018/08/20}{neu}^^A
+% \begin{macro}{\tud@chapter@subtitle}
+% \changes{v2.06}{2018/08/20}{neu}^^A
+% Das gleiche Spiel für Kapitel.
+% \begin{macrocode}
+%<*book|report>
+\newcommand*\tud@chapter@subtitle{}
+\newcommand*\setchaptersubtitle[1]{\gdef\tud@chapter@subtitle{#1}}
+% \end{macrocode}
+% Die Schriftelement für die Untertitel von Kapiteln.
+% \begin{macrocode}
+\newkomafont{chaptersubtitle}{%
+ \tud@thesis@fontsize%
+ \fontseries{\tud@cdfont@bf}\selectfont%
+ \tud@color{\tud@chapter@fontcolor}%
+}
+%</book|report>
+% \end{macrocode}
+% \end{macro}^^A \tud@chapter@subtitle
+% \end{KOMAfont}^^A chaptersubtitle
+% \end{macro}^^A \setchaptersubtitle
+% \begin{macro}{\tud@sec@subtitle}
+% \changes{v2.06}{2018/08/01}{neu}^^A
+% Dieses Makro dient zur Umsetzung der Untertitel.
+% \begin{macrocode}
+\newcommand*\tud@sec@subtitle[1]{%
+ \ifcsvoid{tud@#1@subtitle}{}{%
+ {\usekomafont{#1subtitle}{\tud@sec@format{\csuse{tud@#1@subtitle}}}}\par%
+ \global\cslet{tud@#1@subtitle}{\@empty}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@sec@subtitle
+%
+%
+% \subsubsection{Umsetzung für Teile}
+%
+% \begin{macro}{\tud@partheadstartvskip}
+% \begin{macro}{\partheadstartvskip}
+% Dieses Makro ersetzt den Standardbefehl \cs{partheadstartvskip} für die
+% CD-Teilseiten. Damit lassen sich insbesondere die Farbanpassungen für alle
+% Klassen einfach realisieren und gleichzeitig das Zurückschalten auf das
+% Standardverhalten gewährleisten.
+%
+% Für die \cls{tudscrartcl}-Klasse wird der vertikale Standardabstand
+% beibehalten und lediglich die Farbanpassung hinzugefügt.
+% \begin{macrocode}
+%<*article|poster>
+\newcommand*\tud@partheadstartvskip{}
+\let\tud@partheadstartvskip\partheadstartvskip
+\pretocmd{\tud@partheadstartvskip}{%
+ \renewcommand*\tud@part@fontcolor{}% false/true
+ \ifcase\tud@cd@part@num\relax\or\else% *color
+ \renewcommand*\tud@part@fontcolor{HKS41}%
+ \fi%
+}{}{\tud@patch@wrn{tud@partheadstartvskip}}
+%</article|poster>
+% \end{macrocode}
+% Für \cls{tudscrreprt}- und \cls{tudscrbook}-Klasse werden die Farben gesetzt
+% und die vertikalen Abstände neu definiert.
+% \begin{macrocode}
+%<*book|report>
+\newcommand*\tud@partheadstartvskip{%
+ \renewcommand*\tud@part@fontcolor{}% false/true
+ \ifcase\tud@cd@part@num\relax\or\or% litecolor
+ \renewcommand*\tud@part@fontcolor{HKS41}%
+ \or% barcolor
+ \renewcommand*\tud@part@fontcolor{HKS41}%
+ \or% bicolor
+ \renewcommand*\tud@part@fontcolor{HKS41}%
+ \or% color
+ \renewcommand*\tud@part@fontcolor{HKS41!30}%
+ \or% full
+ \renewcommand*\tud@part@fontcolor{HKS41!30}%
+ \fi%
+ \tud@cd@specialpage@set{part}%
+ \tud@cd@headstartvskip%
+ \TUD@deprecated@lengthcs{pageheadingsvskip}%
+ \vspace*{\tud@dim@pageheadingsvskip}%
+}
+%</book|report>
+% \end{macrocode}
+% \end{macro}^^A \partheadstartvskip
+% \end{macro}^^A \tud@partheadstartvskip
+% \begin{macro}{\tud@partheademptypage}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% Hiermit wird die Seitenfarbe gesetzt sowie die Schrift für Kopf und
+% Seitenzahl verändert. Die Änderungen sollen dabei lokal bleiben, wofür
+% der Befehl \cs{tud@cleardoublespecialpage} verwendet wird. Damit wird
+% abhängig von den beiden Optionen \opt{cleardoublespecialpage} und
+% \opt{clearcolor} die Rückseite farbig gesetzt.
+% \begin{macrocode}
+%<*book|report>
+\newcommand*\tud@partheademptypage{%
+ \tud@cleardoublespecialpage{%
+ \renewcommand*\tud@pagecolor{}%
+ \ifcase\tud@cd@part@num\relax\or% true
+ \tud@locked@num@preset{tud@head@bar@num}{0}%
+ \or% litecolor
+ \tud@locked@num@set{tud@head@bar@num}{1}%
+ \or% barcolor
+ \tud@locked@num@set{tud@head@bar@num}{2}%
+ \or% bicolor
+ \tud@locked@num@set{tud@head@bar@num}{3}%
+ \or% color
+ \renewcommand*\tud@pagecolor{HKS41}%
+ \tud@locked@num@set{tud@head@bar@num}{1}%
+ \or% full
+ \renewcommand*\tud@pagecolor{HKS41}%
+ \tud@locked@num@set{tud@head@bar@num}{3}%
+ \fi%
+ \clearpage%
+ }%
+ \tud@cd@specialpage@unset%
+}
+%</book|report>
+% \end{macrocode}
+% \end{macro}^^A \tud@partheademptypage
+% \begin{macro}{\tud@partlineswithprefixformat}
+% \changes{v2.06}{2018/08/01}{neu}^^A
+% \begin{macro}{\tud@partformat}
+% \changes{v2.06}{2018/08/01}{neu}^^A
+% Die Formatierungsbefehle für die Überschriften von Teilen.
+% \begin{macrocode}
+\newcommand*\tud@partformat{}%
+\newcommand*\tud@partlineswithprefixformat[3]{%
+%<*book|report>
+ \if@tud@parttitle%
+ \ifx\@@title\@empty%
+ \ClassWarning{\TUD@Class@Name}{%
+ You activated the option `parttitle' but\MessageBreak%
+ no title was given%
+ }%
+ \fi%
+ \tud@cd@vphantom%
+ \tud@sec@format[#1]{%
+ \usekomafont{#1}{\nobreak\interlinepenalty \@M\@@title\strut\@@par}%
+ }%
+ \setpartsubtitle{%
+ \setkomafont{part}{}%
+ \tud@sec@format[partnumber]{\IfUseNumber{\partformat\enskip}{}#3}%
+ }%
+ \else%
+%</book|report>
+ \edef\tud@partformat{\noexpand\tud@sec@format{\expandonce\partformat}}%
+ \let\partformat\tud@partformat%
+ \IfUseNumber{}{\tud@cd@vphantom}%
+ #2\tud@sec@format[#1]{#3}%
+%<*book|report>
+ \fi%
+%</book|report>
+ \tud@sec@subtitle{#1}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@partformat
+% \end{macro}^^A \tud@partlineswithprefixformat
+%
+% \iffalse
+%<*book|report>
+% \fi
+%
+% \subsubsection{Umsetzung für Kapitel}
+%
+% \begin{macro}{\tud@chapterheadstartvskip}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% \cs{chapterheadstartvskip} wird für die Position der Kapitelüberschriften im
+% \CD angepasst. Mit der Option \opt{headingsvskip} kann diese vertikal durch
+% den Benutzer verschoben werden. Außerdem werden die benötigten Farben für die
+% jeweils gewählte Option ausgewählt.
+% \begin{macrocode}
+\newcommand*\tud@chapterheadstartvskip{%
+ \renewcommand*\tud@chapter@fontcolor{}%
+ \ifcase\tud@cd@chapter@num\relax\or\else% *color
+ \renewcommand*\tud@chapter@fontcolor{HKS41}%
+ \fi%
+ \tud@cd@headstartvskip%
+ \if@tud@chapterpage%
+ \TUD@deprecated@lengthcs{pageheadingsvskip}%
+ \vspace*{\tud@dim@pageheadingsvskip}%
+ \else%
+ \TUD@deprecated@lengthcs{headingsvskip}%
+ \vspace*{\tud@dim@headingsvskip}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@chapterheadstartvskip
+% \begin{macro}{\tud@chapterlineswithprefixformat}
+% \changes{v2.06}{2018/08/01}{neu}^^A
+% \begin{macro}{\tud@chapterformat}
+% \changes{v2.06}{2018/08/01}{neu}^^A
+% \begin{macro}{\tud@chapterlinesformat}
+% \changes{v2.06}{2018/08/01}{neu}^^A
+% Die Formatierungsbefehle für die Überschriften von Kapiteln.
+% \begin{macrocode}
+\newcommand*\tud@chapterformat{}%
+\newcommand*\tud@chapterlineswithprefixformat[3]{%
+ \edef\tud@chapterformat{%
+ \noexpand\tud@sec@format{\expandonce\chapterformat}%
+ }%
+ \let\chapterformat\tud@chapterformat%
+ \IfUseNumber{}{\tud@cd@vphantom}%
+ #2\tud@sec@format[#1]{#3}%
+ \tud@sec@subtitle{#1}%
+}
+\newcommand*\tud@chapterlinesformat[3]{%
+ \tud@cd@vphantom%
+ \@hangfrom{#2}{\tud@sec@format[#1]{#3}}%
+ \tud@sec@subtitle{#1}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@chapterlinesformat
+% \end{macro}^^A \tud@chapterformat
+% \end{macro}^^A \tud@chapterlineswithprefixformat
+% \begin{macro}{\tud@chapter@pre}
+% \begin{macro}{\tud@chapter@app}
+% \begin{macro}{\tud@head@bar@restore}
+% \changes{v2.04}{2015/04/01}{neu}^^A
+% Diese Makros dienen zur Behandlung der Besonderheiten von Kapiteln. Dies gilt
+% sowohl für normale Kapitelüberschriften als auch für separate Kapitelseiten
+% (Option~\opt{chapterpage}). Eingefügt werden sie für die Gliederungsbefehle
+% der Kapitel durch die beiden Haken \cs{tud@chapter@before@hook} sowie
+% \cs{tud@chapter@after@hook}, den Start und das Ende der Gliederungsbefehle
+% für Kapitel definieren.
+% \begin{macrocode}
+\newcommand*\tud@chapter@pre{%
+ \if@tud@chapterpage%
+% \end{macrocode}
+% Für den zweispaltigen Satz und aktivierter \opt{chapterpage}-Option muss
+% für die Kapitelseiten temporär auf einseitigen Satz umgestellt werden, damit
+% alle Befehle und Einstellungen beim Erzeugen des jeweiligen Kapitels zum
+% Tragen kommen. Soll der Fehler behoben werden, dass bei Kapitelüberschriften
+% im zweispaltigen Satz der Abstand zwischen Überschrift und Textkörper nicht
+% stimmt, sei außerdem das Paket \pkg{twocolfix} empfohlen.
+% \begin{macrocode}
+ \@restonecolfalse%
+ \if@twocolumn\@restonecoltrue\onecolumn\fi%
+ \tud@cd@specialpage@set{chapter}%
+ \fi%
+}
+% \end{macrocode}
+% Unabhängig von der Nutzung einer Kapitelseite, wird die Einstellung der
+% Option \opt{cdchapter} für die Gestalt des TUD-Kopfes beachtet, falls dieser
+% zum Einsatz kommt.
+% \begin{macrocode}
+\newcommand*\tud@head@bar@restore{}
+\let\tud@head@bar@restore\relax
+\newcommand*\tud@chapter@app{%
+% \end{macrocode}
+% Nach dem Setzen der Kapitelüberschrift selbst werden die Farbe für den
+% Hintergrund, die Seitenzahl und den ggf. verwendeten TUD-Kopf angewendet.
+% Danach wird die Seite beendet. Sollte zweiseitiger Satz, immer rechts
+% öffnende Kapitel und die Option \opt{chapterpage} gewählt sein, so wird für
+% ein konsistentes Layout für Überschriften auf Einzelseiten die Rückseite
+% abhängig von der Option \opt{clearcolor} gegebenenfalls farbig gesetzt und
+% die Option \opt{cleardoublespecialpage} bezüglich des Seitenstils der
+% Rückseite beachtet. Umgesetzt wird dies mit \cs{tud@cleardoublespecialpage}.
+% \begin{macrocode}
+ \if@tud@chapterpage%
+ \tud@cleardoublespecialpage{%
+ \renewcommand*\tud@pagecolor{}%
+ \let\tud@foot@fontcolor\tud@chapter@fontcolor%
+ \ifcase\tud@cd@chapter@num\relax\or% true
+ \tud@locked@num@preset{tud@head@bar@num}{0}%
+ \or% litecolor
+ \tud@locked@num@set{tud@head@bar@num}{1}%
+ \or% barcolor
+ \tud@locked@num@set{tud@head@bar@num}{2}%
+ \or% bicolor
+ \tud@locked@num@set{tud@head@bar@num}{3}%
+ \or% color
+ \renewcommand*\tud@pagecolor{HKS41!10}%
+ \tud@locked@num@set{tud@head@bar@num}{1}%
+ \or% fullcolor
+ \renewcommand*\tud@pagecolor{HKS41!10}%
+ \tud@locked@num@set{tud@head@bar@num}{3}%
+ \fi%
+ \clearpage%
+ }%
+ \tud@cd@specialpage@unset%
+% \end{macrocode}
+% Außerdem wird für den Zweispaltensatz auf normales Verhalten zurückgestellt.
+% \begin{macrocode}
+ \if@restonecol\twocolumn\fi%
+% \end{macrocode}
+% Sollten keine reinen Kapitelseiten verwendet werden, wird die Einstellung für
+% die Gestalt des Seitenkopfes im restlichen Dokument (\cs{tud@head@bar@num})
+% in \cs{tud@head@bar@restore} gesichert. Dieser Befehl wird beim Ausführen der
+% Ebene \pgs{tudheadings.last} aufgerufen, wodurch der geischerte Wert ab der
+% darauffolgenden Seite wiederhergestellt wird.
+% \begin{macrocode}
+ \else%
+ \edef\tud@head@bar@restore{%
+ \gdef\noexpand\tud@head@bar@num{\tud@head@bar@num}%
+ \global\let\noexpand\tud@head@bar@restore\relax%
+ }%
+ \ifcase\tud@cd@chapter@num\relax\or% true
+ \tud@locked@num@preset{tud@head@bar@num}{0}%
+ \or% litecolor
+ \tud@locked@num@set{tud@head@bar@num}{1}%
+ \or% barcolor
+ \tud@locked@num@set{tud@head@bar@num}{2}%
+ \or% bicolor
+ \tud@locked@num@set{tud@head@bar@num}{3}%
+ \or% color
+ \tud@locked@num@set{tud@head@bar@num}{1}%
+ \or% fullcolor
+ \tud@locked@num@set{tud@head@bar@num}{3}%
+ \fi%
+% \end{macrocode}
+% Im Kompatibilitätsmodus muss genügend zusätzlicher Freiraum für ein ggf.
+% auszugebendes \DDC-Logo gelassen werden.
+% \begin{macrocode}
+ \tud@if@v@lower{2.03}{\tud@ddc@enlargepage[\chapterpagestyle]}{}%
+ \fi%
+% \end{macrocode}
+% Unabhängig von der Option \opt{chapterpage} wird deim zweispaltigen Layout
+% der Einzug des ersten Absatzes verhindert.
+% \begin{macrocode}
+ \if@twocolumn%
+ \@afterindentfalse\@afterheading%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@head@bar@restore
+% \end{macro}^^A \tud@chapter@pre
+% \end{macro}^^A \tud@chapter@app
+% \begin{macro}{\tud@chapter@before@hook}
+% \changes{v2.06}{2018/08/01}{neu}^^A
+% \begin{macro}{\tud@chapter@after@hook}
+% \changes{v2.06}{2018/08/01}{neu}^^A
+% \begin{macro}{\scr@startchapter}
+% \begin{macro}{\scr@@startchapter}
+% \begin{macro}{\scr@@startschapter}
+% Die beiden Haken \cs{tud@chapter@before@hook} und \cs{tud@chapter@after@hook}
+% werden den \KOMAScript-Befehlen hinzugefügt, welche den Start und das Ende
+% der Gliederungsbefehle für Kapitel definieren.
+% \begin{macrocode}
+\newcommand*\tud@chapter@before@hook{}
+\newcommand*\tud@chapter@after@hook{}
+\pretocmd{\scr@startchapter}{%
+ \tud@chapter@before@hook%
+}{}{\tud@patch@wrn{scr@startchapter}}
+\apptocmd{\scr@@startchapter}{%
+ \tud@chapter@after@hook%
+}{}{\tud@patch@wrn{scr@@startchapter}}
+\apptocmd{\scr@@startschapter}{%
+ \tud@chapter@after@hook%
+}{}{\tud@patch@wrn{scr@@startschapter}}
+% \end{macrocode}
+% \end{macro}^^A \scr@@startschapter
+% \end{macro}^^A \scr@@startchapter
+% \end{macro}^^A \scr@startchapter
+% \end{macro}^^A \tud@chapter@after@hook
+% \end{macro}^^A \tud@chapter@before@hook
+%
+% \iffalse
+%</book|report>
+% \fi
+%
+% \subsubsection{Umsetzung für Abschnitte etc.}
+%
+% Die Farbwahl wird einfach in dem von \KOMAScript{} bereitgestellten Haken
+% zu Beginn einer Abschnittsüberschrift ausgeführt.
+% \begin{macrocode}
+\At@startsection{%
+ \renewcommand*\tud@section@fontcolor{}%
+ \ifcase\tud@cd@section@num\relax\or\else% *color
+ \ifstr{\tud@pagecolor}{HKS41}{}{%
+ \renewcommand*\tud@section@fontcolor{HKS41}%
+ }%
+ \fi%
+}
+% \end{macrocode}
+% \begin{macro}{\tud@sectionlinesformat}
+% \changes{v2.06}{2018/08/01}{neu}^^A
+% \begin{macro}{\tud@sectioncatchphraseformat}
+% \changes{v2.06}{2018/08/01}{neu}^^A
+% Die Formatierungsbefehle für die Überschriften von Abschnitten etc.
+% \begin{macrocode}
+\newcommand*\tud@sectionlinesformat[4]{%
+ \@hangfrom{\hskip #2#3}{\tud@sec@format[#1]{#4}}%
+}
+% \end{macrocode}
+% Für Überschriften mit Einzug wird \cs{tud@sec@strut} wirkungslos definiert.
+% \begin{macrocode}
+\newcommand*\tud@sectioncatchphraseformat[4]{%
+ \let\tud@sec@strut\relax%
+ \hskip #2#3\tud@sec@format[#1]{#4}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@sectioncatchphraseformat
+% \end{macro}^^A \tud@sectionlinesformat
+%
+% \iffalse
+%</class&body>
+% \fi
+%
+%
+% \Finale
+%
+\endinput
diff --git a/macros/latex/contrib/tudscr/source/tudscr-localization.dtx b/macros/latex/contrib/tudscr/source/tudscr-localization.dtx
new file mode 100644
index 0000000000..954773033b
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/tudscr-localization.dtx
@@ -0,0 +1,1006 @@
+% \CheckSum{774}
+% \iffalse meta-comment
+%
+% TUD-Script -- Corporate Design of Technische Universität Dresden
+% ----------------------------------------------------------------------------
+%
+% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2019
+%
+% ----------------------------------------------------------------------------
+%
+% This work may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License, version 1.3c of the license. The latest
+% version of this license is in http://www.latex-project.org/lppl.txt and
+% version 1.3c or later is part of all distributions of LaTeX 2005/12/01
+% or later and of this work. This work has the LPPL maintenance status
+% "author-maintained". The current maintainer and author of this work
+% is Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+% in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
+% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+% Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
+% oder später und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status
+% "author-maintained", wird somit allein durch den Autor verwaltet. Der
+% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: tudscr-localization.dtx
+%<*dtx>
+% \fi
+%
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{tudscr-localization.dtx}[2019/07/19 v2.06c TUD-Script\space%
+ (localization)%
+]
+%
+% \iffalse
+\documentclass[english,ngerman,xindy]{tudscrdoc}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{tudscrfonts}
+\KOMAoptions{parskip=half-}
+\usepackage{bookmark}
+\usepackage[babel]{microtype}
+
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tudscr-localization.dtx}
+\title{\file{\filename}}
+\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
+\date{\fileversion\nobreakspace(\filedate)}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.02}{2014/06/23}{Paket \pkg{titlepage} nicht weiter unterstützt}^^A
+% \changes{v2.05}{2015/07/06}{Bezeichner für Poster}^^A
+%
+% \section{Lokalisierung mithilfe sprachabhängiger Bezeichner}
+%
+% Das \TUDScript-Bundle ist für die deutsche und englische Sprache lokalisiert.
+% Dies bedeutet, dass abhängig von der gewählten Sprache die entsprechenden
+% Bezeichner gesetzt werden. Hierfür werden die Möglichkeiten von \KOMAScript{}
+% in Form des Befehls \cs{providecaptionname} genutzt.
+%
+%
+% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%
+% \subsection{Definition der sprachabhängigen Bezeichner}
+%
+% \begin{macro}{\tud@localization@define}
+%
+% \iffalse
+%<*class&!manual>
+% \fi
+%
+% Die neu definierten Bezeichner werden mit einer Fehlermeldung initialisiert.
+% Wird eine unterstützte Dokumentsprache~-- momentan sind dies lediglich
+% Deutsch und Englisch~-- in der Präambel des Dokumentes geladen, so werden die
+% Bezeichner sprachspezifisch überschrieben. Andernfalls bekommt der Anwender
+% eine Fehlermeldung mit Hinweisen, wie er selbst die Bezeichner für die
+% gewählte Sprache manuell definieren muss.
+% \begin{macrocode}
+\newcommand*\tud@localization@define[1]{%
+ \providecommand*#1{%
+ \ClassError{\TUD@Class@Name}{%
+ `\string#1' not defined for language `\languagename'%
+ }{%
+ Currently the class `\TUD@Class@Name' only supports the\MessageBreak%
+ languages german and english an its dialects. You must\MessageBreak%
+ define single patterns by yourself, e.g.:\MessageBreak%
+ `\string\providecaptionname{\languagename}\string#1{<text>}'\MessageBreak%
+ You can send your definitions to \tudscrmail\space in\MessageBreak%
+ order to implement support for additional languages.%
+ }%
+ }%
+}
+% \end{macrocode}
+%
+% \iffalse
+%<*!doc>
+%<*book|report|article>
+% \fi
+%
+% \begin{localization}{\graduationtext}
+% \changes{v2.02}{2014/05/16}{neu, umbenannt von \cs{degreetext}}^^A
+% \begin{localization}{\refereename}
+% \changes{v2.02}{2014/05/20}{Unterscheidung, ob ein oder mehrere Gutachter
+% angegeben sind}^^A
+% \begin{localization}{\refereeothername}
+% \begin{localization}{\advisorname}
+% \begin{localization}{\advisorothername}
+% \begin{localization}{\supervisorname}
+% \begin{localization}{\supervisorothername}
+% \begin{localization}{\professorname}
+% \begin{localization}{\professorothername}
+% \changes{v2.02}{2014/09/03}{neu}^^A
+% \begin{localization}{\datetext}
+% \begin{localization}{\dateofbirthtext}
+% \begin{localization}{\placeofbirthtext}
+% \begin{localization}{\defensedatetext}
+% \begin{localization}{\matriculationnumbername}
+% \begin{localization}{\matriculationyearname}
+% \begin{localization}{\coverpagename}
+% \begin{localization}{\titlepagename}
+% \begin{localization}{\titlename}
+% \begin{localization}{\abstractname}
+% \begin{localization}{\confirmationname}
+% \begin{localization}{\confirmationtext}
+% \changes{v2.02}{2014/11/05}{Korrektur bei der Verwendung von \cs{@@title}}^^A
+% \begin{localization}{\blockingname}
+% \changes{v2.02}{2014/05/16}{neu, \cs{restrictionname} umbenannt}^^A
+% \begin{localization}{\blockingtext}
+% \changes{v2.02}{2014/05/16}{neu, \cs{restrictiontext} umbenannt}^^A
+% \changes{v2.02}{2014/11/05}{Korrektur bei der Verwendung von \cs{@@title}}^^A
+% Diese Bezeichner existieren nur für die drei Hauptklassen.
+% \begin{macrocode}
+\tud@localization@define{\graduationtext}
+\tud@localization@define{\refereename}
+\tud@localization@define{\refereeothername}
+\tud@localization@define{\advisorname}
+\tud@localization@define{\advisorothername}
+\tud@localization@define{\supervisorname}
+\tud@localization@define{\supervisorothername}
+\tud@localization@define{\professorname}
+\tud@localization@define{\professorothername}
+\tud@localization@define{\datetext}
+\tud@localization@define{\dateofbirthtext}
+\tud@localization@define{\placeofbirthtext}
+\tud@localization@define{\defensedatetext}
+\tud@localization@define{\matriculationyearname}
+\tud@localization@define{\matriculationnumbername}
+\tud@localization@define{\coverpagename}
+\tud@localization@define{\titlepagename}
+\tud@localization@define{\titlename}
+%<*book>
+\tud@localization@define{\abstractname}
+%</book>
+\tud@localization@define{\confirmationname}
+\tud@localization@define{\confirmationtext}
+\tud@localization@define{\blockingname}
+\tud@localization@define{\blockingtext}
+% \end{macrocode}
+% \end{localization}^^A \blockingtext
+% \end{localization}^^A \blockingname
+% \end{localization}^^A \confirmationtext
+% \end{localization}^^A \confirmationname
+% \end{localization}^^A \abstractname
+% \end{localization}^^A \titlename
+% \end{localization}^^A \titlepagename
+% \end{localization}^^A \coverpagename
+% \end{localization}^^A \matriculationyearname
+% \end{localization}^^A \matriculationnumbername
+% \end{localization}^^A \defensedatetext
+% \end{localization}^^A \placeofbirthtext
+% \end{localization}^^A \dateofbirthtext
+% \end{localization}^^A \datetext
+% \end{localization}^^A \professorothername
+% \end{localization}^^A \professorname
+% \end{localization}^^A \supervisorothername
+% \end{localization}^^A \supervisorname
+% \end{localization}^^A \advisorothername
+% \end{localization}^^A \advisorname
+% \end{localization}^^A \refereeothername
+% \end{localization}^^A \refereename
+% \end{localization}^^A \graduationtext
+%
+% \iffalse
+%</book|report|article>
+% \fi
+%
+% \begin{localization}{\coursename}
+% \begin{localization}{\disciplinename}
+% \changes{v2.02}{2014/05/16}{neu, Umbenennung von \cs{branchname}}^^A
+% \begin{localization}{\listingname}
+% \begin{localization}{\listlistingname}
+% \begin{localization}{\dissertationname}
+% \begin{localization}{\diplomathesisname}
+% \begin{localization}{\masterthesisname}
+% \begin{localization}{\bachelorthesisname}
+% \begin{localization}{\studentthesisname}
+% \begin{localization}{\studentresearchname}
+% \begin{localization}{\projectpapername}
+% \begin{localization}{\seminarpapername}
+% \begin{localization}{\termpapername}
+% \begin{localization}{\researchname}
+% \begin{localization}{\logname}
+% \begin{localization}{\internshipname}
+% \begin{localization}{\reportname}
+% Diese Bezeichner stehen zusätzlich auch für \cls{tudscrposter} zur Verfügung.
+% \begin{macrocode}
+\tud@localization@define{\coursename}
+\tud@localization@define{\disciplinename}
+\tud@localization@define{\listingname}
+\tud@localization@define{\listlistingname}
+\tud@localization@define{\dissertationname}
+\tud@localization@define{\diplomathesisname}
+\tud@localization@define{\masterthesisname}
+\tud@localization@define{\bachelorthesisname}
+\tud@localization@define{\studentthesisname}
+\tud@localization@define{\studentresearchname}
+\tud@localization@define{\projectpapername}
+\tud@localization@define{\seminarpapername}
+\tud@localization@define{\termpapername}
+\tud@localization@define{\researchname}
+\tud@localization@define{\logname}
+\tud@localization@define{\internshipname}
+\tud@localization@define{\reportname}
+% \end{macrocode}
+% \end{localization}^^A \reportname
+% \end{localization}^^A \internshipname
+% \end{localization}^^A \logname
+% \end{localization}^^A \researchname
+% \end{localization}^^A \termpapername
+% \end{localization}^^A \seminarpapername
+% \end{localization}^^A \projectpapername
+% \end{localization}^^A \studentresearchname
+% \end{localization}^^A \studentthesisname
+% \end{localization}^^A \bachelorthesisname
+% \end{localization}^^A \masterthesisname
+% \end{localization}^^A \diplomathesisname
+% \end{localization}^^A \dissertationname
+% \end{localization}^^A \listlistingname
+% \end{localization}^^A \listingname
+% \end{localization}^^A \disciplinename
+% \end{localization}^^A \coursename
+%
+% \iffalse
+%</!doc>
+%</class&!manual>
+%<*class&poster|package&supervisor|class&manual>
+% \fi
+%
+% \begin{localization}{\authorname}
+% \changes{v2.05}{2015/07/06}{neu}^^A
+% \begin{localization}{\contactname}
+% \changes{v2.05}{2015/07/06}{neu}^^A
+% \begin{localization}{\contactpersonname}
+% Diese Bezeichner stehen für \cls{tudscrposter} sowie \pkg{tudscrsupervisor}
+% bereit.
+% \begin{macrocode}
+\tud@localization@define{\authorname}
+\tud@localization@define{\contactname}
+\tud@localization@define{\contactpersonname}
+% \end{macrocode}
+% \end{localization}^^A \contactpersonname
+% \end{localization}^^A \contactname
+% \end{localization}^^A \authorname
+%
+% \iffalse
+%</class&poster|package&supervisor|class&manual>
+%<*package&supervisor|class&manual>
+% \fi
+%
+% \begin{localization}{\taskname}
+% \begin{localization}{\tasktext}
+% \begin{localization}{\namesname}
+% \changes{v2.04}{2015/05/06}{neu, Umbenennung von \cs{authorname}}^^A
+% \begin{localization}{\issuedatetext}
+% \begin{localization}{\duedatetext}
+% \begin{localization}{\chairmanname}
+% \begin{localization}{\focusname}
+% \begin{localization}{\objectivesname}
+% \begin{localization}{\evaluationname}
+% \begin{localization}{\evaluationtext}
+% \begin{localization}{\contentname}
+% \begin{localization}{\assessmentname}
+% \begin{localization}{\gradetext}
+% \begin{localization}{\noticename}
+% \changes{v2.02}{2014/05/16}{neu, umbenannt von \cs{contactname}}^^A
+% Die für das Paket \pkg{tudscrsupervisor} definierten Bezeichner werden durch
+% das Makro \cs{tud@localization@define} mit einer Fehlermeldung initialisiert.
+% \begin{macrocode}
+\tud@localization@define{\taskname}
+\tud@localization@define{\tasktext}
+\tud@localization@define{\namesname}
+\tud@localization@define{\issuedatetext}
+\tud@localization@define{\duedatetext}
+\tud@localization@define{\chairmanname}
+\tud@localization@define{\focusname}
+\tud@localization@define{\objectivesname}
+\tud@localization@define{\evaluationname}
+\tud@localization@define{\evaluationtext}
+\tud@localization@define{\contentname}
+\tud@localization@define{\assessmentname}
+\tud@localization@define{\gradetext}
+\tud@localization@define{\noticename}
+% \end{macrocode}
+% \end{localization}^^A \noticename
+% \end{localization}^^A \gradetext
+% \end{localization}^^A \assessmentname
+% \end{localization}^^A \contentname
+% \end{localization}^^A \evaluationtext
+% \end{localization}^^A \evaluationname
+% \end{localization}^^A \objectivesname
+% \end{localization}^^A \focusname
+% \end{localization}^^A \chairmanname
+% \end{localization}^^A \duedatetext
+% \end{localization}^^A \issuedatetext
+% \end{localization}^^A \namesname
+% \end{localization}^^A \tasktext
+% \end{localization}^^A \taskname
+%
+% \iffalse
+%</package&supervisor|class&manual>
+%<*class&doc>
+% \fi
+%
+% \begin{localization}{\tud@general@name}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{localization}{\tud@implementation@name}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{localization}{\tud@changes@name}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{localization}{\tud@todo@name}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{localization}{\tud@environment@name}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{localization}{\tud@environments@name}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{localization}{\tud@option@name}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{localization}{\tud@options@name}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{localization}{\tud@layerpagestyle@name}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{localization}{\tud@layerpagestyles@name}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{localization}{\tud@layer@name}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{localization}{\tud@layers@name}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{localization}{\tud@length@name}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{localization}{\tud@lengths@name}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{localization}{\tud@counter@name}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{localization}{\tud@counters@name}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{localization}{\tud@TUDcolor@name}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{localization}{\tud@TUDcolors@name}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{localization}{\tud@localization@name}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{localization}{\tud@localizations@name}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{localization}{\tud@field@name}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{localization}{\tud@fields@name}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{localization}{\tud@KOMAfont@name}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{localization}{\tud@KOMAfonts@name}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{localization}{\tud@parameter@name}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{localization}{\tud@parameters@name}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{localization}{\tud@index@text}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% Diese Bezeichner werden von der Klasse \cls{tudscrdoc} genutzt.
+% \begin{macrocode}
+\tud@localization@define{\tud@general@name}
+\tud@localization@define{\tud@implementation@name}
+\tud@localization@define{\tud@changes@name}
+\tud@localization@define{\tud@todo@name}
+\tud@localization@define{\tud@environment@name}
+\tud@localization@define{\tud@environments@name}
+\tud@localization@define{\tud@option@name}
+\tud@localization@define{\tud@options@name}
+\tud@localization@define{\tud@layerpagestyle@name}
+\tud@localization@define{\tud@layerpagestyles@name}
+\tud@localization@define{\tud@layer@name}
+\tud@localization@define{\tud@layers@name}
+\tud@localization@define{\tud@length@name}
+\tud@localization@define{\tud@lengths@name}
+\tud@localization@define{\tud@counter@name}
+\tud@localization@define{\tud@counters@name}
+\tud@localization@define{\tud@TUDcolor@name}
+\tud@localization@define{\tud@TUDcolors@name}
+\tud@localization@define{\tud@localization@name}
+\tud@localization@define{\tud@localizations@name}
+\tud@localization@define{\tud@field@name}
+\tud@localization@define{\tud@fields@name}
+\tud@localization@define{\tud@KOMAfont@name}
+\tud@localization@define{\tud@KOMAfonts@name}
+\tud@localization@define{\tud@parameter@name}
+\tud@localization@define{\tud@parameters@name}
+\tud@localization@define{\tud@index@text}
+% \end{macrocode}
+% \end{localization}^^A \tud@index@text
+% \end{localization}^^A \tud@parameters@name
+% \end{localization}^^A \tud@parameter@name
+% \end{localization}^^A \tud@KOMAfonts@name
+% \end{localization}^^A \tud@KOMAfont@name
+% \end{localization}^^A \tud@fields@name
+% \end{localization}^^A \tud@field@name
+% \end{localization}^^A \tud@localizations@name
+% \end{localization}^^A \tud@localization@name
+% \end{localization}^^A \tud@TUDcolors@name
+% \end{localization}^^A \tud@TUDcolor@name
+% \end{localization}^^A \tud@counters@name
+% \end{localization}^^A \tud@counter@name
+% \end{localization}^^A \tud@lengths@name
+% \end{localization}^^A \tud@length@name
+% \end{localization}^^A \tud@layers@name
+% \end{localization}^^A \tud@layer@name
+% \end{localization}^^A \tud@layerpagestyles@name
+% \end{localization}^^A \tud@layerpagestyle@name
+% \end{localization}^^A \tud@options@name
+% \end{localization}^^A \tud@option@name
+% \end{localization}^^A \tud@environments@name
+% \end{localization}^^A \tud@environment@name
+% \end{localization}^^A \tud@todo@name
+% \end{localization}^^A \tud@changes@name
+% \end{localization}^^A \tud@implementation@name
+% \end{localization}^^A \tud@general@name
+%
+% \iffalse
+%</class&doc>
+% \fi
+%
+% \end{macro}^^A \tud@localization@define
+%
+% \iffalse
+%<*class&!(manual|doc)>
+% \fi
+%
+% \subsection{Hilfsmakros für selektive Bezeichner}
+%
+% Einige Bezeichner verhalten sich je nach der Angabe für einzelne Felder
+% selektiv, die zur Auswahl notwendigen Makros werden hier definiert.
+%
+% \begin{macro}{\tud@ifin@and}
+% \changes{v2.05}{2015/08/05}{neu}^^A
+% Dieser Befehl prüft, ob innerhalb eines Feldes, welches im ersten Argument
+% angegeben werden muss, \cs{and} verwendet wurde. Ist dies der Fall, wird das
+% zweite Argument ausgeführt, andernfalls das dritte.
+% \begin{macrocode}
+\newcommand*\tud@ifin@and[1]{%
+ \begingroup%
+ \let\and\relax%
+ \robustify\\%
+ \protected@edef\@tempb{#1}%
+ \def\@tempa##1\and##2\relax{%
+ \IfArgIsEmpty{##2}{%
+ \aftergroup\@secondoftwo%
+ }{%
+ \aftergroup\@firstoftwo%
+ }%
+ }%
+ \expandafter\@tempa\@tempb\and\relax%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@ifin@and
+%
+% \iffalse
+%</class&!(manual|doc)>
+%<*class&!manual>
+% \fi
+%
+% \subsection{Deutschsprachige Bezeichner}
+% \begin{macro}{\tud@localization@german}
+% \changes{v2.02}{2014/07/07}{als Aliasbefehl für \cs{providecaptionname} mit
+% dem Argument \marg{deutsche Sprachliste}}^^A
+% Dieser Befehl dient zur Definition der deutschsprachigen Bezeichner. Dabei
+% müssen als Argumente der Bezeichnerbefehl selbst sowie die dazugehörige
+% Definition angegeben werden. Intern wird dabei \cs{providecaptionname}
+% verwendet.
+% \begin{macrocode}
+\newcommand*\tud@localization@german{%
+ \providecaptionname{%
+ german,ngerman,austrian,naustrian,swissgerman,nswissgerman%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@localization@german
+%
+% \iffalse
+%<*!doc>
+% \fi
+%
+% Hier erfolgt die eigentliche Definition der sprachabhängigen Bezeichner für
+% die deutsche Sprache und ihre Dialekte.
+% \begin{macrocode}
+%<*book|report|article>
+\tud@localization@german{\graduationtext}{%
+ zur Erlangung des akademischen Grades%
+}%
+% \end{macrocode}
+% Für die nachfolgenden Felder, für die es bedarfsweise einen Bezeichner für
+% eine zweite Person gibt (\cs{\dots{}othername}), werden jeweils verschiedene
+% Varianten definiert. Existiert in einem Feld nur eine Person, wird der
+% Singular der Bezeichnung verwendet. Wurden mindestens zwei Personen angegeben
+% (\cs{and}), so wird geprüft, ob der Bezeichner für die zusätzlichen Personen
+% nicht leer ist. Ist dies der Fall, wird die alternative Form des Bezeichners
+% der ersten Person verwendet, andernfalls wird der Bezeichner im Plural
+% verwendet.
+% \begin{macrocode}
+\tud@localization@german{\refereename}{%
+ \tud@ifin@and{\@referee}{%
+ \ifx\refereeothername\@empty%
+ Gutachter%
+ \else%
+ Erstgutachter%
+ \fi%
+ }{Gutachter}%
+}%
+\tud@localization@german{\refereeothername}{Zweitgutachter}%
+\tud@localization@german{\advisorname}{%
+ \tud@ifin@and{\@advisor}{%
+ \ifx\advisorothername\@empty%
+ Fachreferenten%
+ \else%
+ Erster Fachreferent%
+ \fi%
+ }{Fachreferent}%
+}%
+\tud@localization@german{\advisorothername}{}%
+\tud@localization@german{\supervisorname}{%
+ \tud@ifin@and{\@supervisor}{%
+ \ifx\supervisorothername\@empty%
+ Betreuer%
+ \else%
+ Erstbetreuer%
+ \fi%
+ }{Betreuer}%
+}%
+\tud@localization@german{\supervisorothername}{}%
+\tud@localization@german{\professorname}{%
+ \tud@ifin@and{\@professor}{%
+ \ifx\professorothername\@empty%
+ Betreuende Hochschullehrer%
+ \else%
+ Erster betreuender Hochschullehrer%
+ \fi%
+ }{Betreuender Hochschullehrer}%
+}%
+\tud@localization@german{\professorothername}{}%
+\tud@localization@german{\datetext}{Eingereicht am}%
+\tud@localization@german{\dateofbirthtext}{Geboren am}%
+\tud@localization@german{\placeofbirthtext}{in}%
+\tud@localization@german{\defensedatetext}{Verteidigt am}%
+\tud@localization@german{\matriculationyearname}{Immatrikulationsjahr}%
+\tud@localization@german{\matriculationnumbername}{Matrikelnummer}%
+\tud@localization@german{\coverpagename}{Umschlagseite}%
+\tud@localization@german{\titlepagename}{Titelblatt}%
+\tud@localization@german{\titlename}{Titel}%
+%<*book>
+\tud@localization@german{\abstractname}{Zusammenfassung}%
+%</book>
+\tud@localization@german{\confirmationname}{Selbstst\"andigkeitserkl\"arung}%
+\tud@localization@german{\confirmationtext}{%
+ Hiermit versichere ich, dass ich die vorliegende Arbeit
+ \ifx\@@title\@empty\else mit dem Titel \emph{\@@title} \fi
+ selbstst\"andig und ohne unzul\"assige Hilfe Dritter verfasst habe.
+ Es wurden keine anderen als die in der Arbeit angegebenen Hilfsmittel
+ und Quellen benutzt. Die w\"ortlichen und sinngem\"a\ss{}
+ \"ubernommenen Zitate habe ich als solche kenntlich gemacht.
+ \ifx\@supporter\@empty%
+ Es waren keine weiteren Personen an der geistigen Herstellung
+ der vorliegenden Arbeit beteiligt.
+ \else%
+ W\"ahrend der Anfertigung dieser Arbeit wurde ich nur von
+ folgenden Personen unterst\"utzt:%
+ \begin{quote}\def\and{\newline}\@supporter\end{quote}%
+ \noindent Weitere Personen waren an der geistigen Herstellung
+ der vorliegenden Arbeit nicht beteiligt.
+ \fi%
+ Mir ist bekannt, dass die Nichteinhaltung dieser Erkl\"arung zum
+ nachtr\"aglichen Entzug des Hochschulabschlusses f\"uhren kann.%
+}%
+\tud@localization@german{\blockingname}{Sperrvermerk}%
+\tud@localization@german{\blockingtext}{%
+ Diese Arbeit
+ \ifx\@@title\@empty\else mit dem Titel \emph{\@@title} \fi
+ enth\"alt vertrauliche Informationen\ifx\@company\@empty\else
+ , offengelegt durch \emph{\@company}\fi. Ver\"offentlichungen,
+ Vervielf\"altigungen und Einsichtnahme~-- auch nur auszugsweise~--
+ sind ohne ausdr\"uckliche Genehmigung \ifx\@company\@empty\else
+ durch \emph{\@company} \fi nicht gestattet, ebenso wie
+ Ver\"offentlichungen \"uber den Inhalt dieser Arbeit. Die
+ vorliegende Arbeit ist nur dem Betreuer an der Technischen
+ Universit\"at Dresden, den Gutachtern sowie den Mitgliedern
+ des Pr\"ufungsausschusses zug\"anglich zu machen.%
+}%
+%</book|report|article>
+\tud@localization@german{\coursename}{Studiengang}%
+\tud@localization@german{\disciplinename}{Studienrichtung}%
+\tud@localization@german{\listingname}{Quelltext}%
+\tud@localization@german{\listlistingname}{Quelltextverzeichnis}%
+\tud@localization@german{\dissertationname}{Dissertation}%
+\tud@localization@german{\diplomathesisname}{Diplomarbeit}%
+\tud@localization@german{\masterthesisname}{Master-Arbeit}%
+\tud@localization@german{\bachelorthesisname}{Bachelor-Arbeit}%
+\tud@localization@german{\studentthesisname}{Studienarbeit}%
+\tud@localization@german{\studentresearchname}{Gro\ss{}er Beleg}%
+\tud@localization@german{\projectpapername}{Projektarbeit}%
+\tud@localization@german{\seminarpapername}{Seminararbeit}%
+\tud@localization@german{\termpapername}{Hausarbeit}%
+\tud@localization@german{\researchname}{Forschungsbericht}%
+\tud@localization@german{\logname}{Protokoll}%
+\tud@localization@german{\internshipname}{Praktikumsbericht}%
+\tud@localization@german{\reportname}{Bericht}%
+% \end{macrocode}
+%
+% \iffalse
+%</!doc>
+%</class&!manual>
+%<*class&poster|package&supervisor|class&manual>
+% \fi
+%
+% Hier erfolgen für die Klasse \cls{tudscrposter} sowie das Paket
+% \pkg{tudscrsupervisor} weitere Definitionen.
+% \begin{macrocode}
+\tud@localization@german{\authorname}{Autor}%
+\tud@localization@german{\contactname}{Kontakt}%
+\tud@localization@german{\contactpersonname}{Ansprechpartner}%
+% \end{macrocode}
+%
+% \iffalse
+%</class&poster|package&supervisor|class&manual>
+%<*package&supervisor|class&manual>
+% \fi
+%
+% Hier erfolgen für das Paket \pkg{tudscrsupervisor} weitere Definitionen.
+% \begin{macrocode}
+\tud@localization@german{\taskname}{Aufgabenstellung}%
+\tud@localization@german{\tasktext}{f\"ur die Anfertigung einer}%
+\tud@localization@german{\namesname}{Name}%
+\tud@localization@german{\issuedatetext}{Ausgeh\"andigt am}%
+\tud@localization@german{\duedatetext}{Einzureichen am}%
+\tud@localization@german{\chairmanname}{Pr\"ufungsausschussvorsitzender}%
+\tud@localization@german{\focusname}{Schwerpunkte der Arbeit}%
+\tud@localization@german{\objectivesname}{Ziele der Arbeit}%
+\tud@localization@german{\evaluationname}{Gutachten}%
+\tud@localization@german{\evaluationtext}{f\"ur die}%
+\tud@localization@german{\contentname}{Inhalt}%
+\tud@localization@german{\assessmentname}{Bewertung}%
+\tud@localization@german{\gradetext}{%
+ Die Arbeit wird mit der Note \textbf{\@grade} bewertet.%
+}%
+\tud@localization@german{\noticename}{Aushang}%
+% \end{macrocode}
+%
+% \iffalse
+%</package&supervisor|class&manual>
+%<*class&doc>
+% \fi
+%
+% Dies sind die Bezeichner für die Quelltextdokumentation.
+% \begin{macrocode}
+\tud@localization@german{\tud@general@name}{Allgemein}%
+\tud@localization@german{\tud@implementation@name}{Implementierung}%
+\tud@localization@german{\tud@changes@name}{\"Anderungsliste}
+\tud@localization@german{\tud@todo@name}{Liste der noch zu erledigenden Punkte}
+\tud@localization@german{\tud@environment@name}{Umg.}
+\tud@localization@german{\tud@environments@name}{Umgebungen}
+\tud@localization@german{\tud@option@name}{Opt.}
+\tud@localization@german{\tud@options@name}{Optionen}
+\tud@localization@german{\tud@layerpagestyle@name}{Seitenstil}
+\tud@localization@german{\tud@layerpagestyles@name}{Seitenstile}
+\tud@localization@german{\tud@layer@name}{Layer}
+\tud@localization@german{\tud@layers@name}{Layer (Seitenstilebenen)}
+\tud@localization@german{\tud@length@name}{L\"ange}
+\tud@localization@german{\tud@lengths@name}{L\"angen}
+\tud@localization@german{\tud@counter@name}{Z\"ahler}
+\tud@localization@german{\tud@counters@name}{Z\"ahler}
+\tud@localization@german{\tud@TUDcolor@name}{Farbe}
+\tud@localization@german{\tud@TUDcolors@name}{Farben}
+\tud@localization@german{\tud@localization@name}{Lok.}
+\tud@localization@german{\tud@localizations@name}{Lokalisierungsmakros}
+\tud@localization@german{\tud@field@name}{Feld}
+\tud@localization@german{\tud@fields@name}{Eingabefelder}
+\tud@localization@german{\tud@KOMAfont@name}{Schriftel.}
+\tud@localization@german{\tud@KOMAfonts@name}{Schriftelemente}
+\tud@localization@german{\tud@parameter@name}{Param.}
+\tud@localization@german{\tud@parameters@name}{Parameter}
+\tud@localization@german{\tud@index@text}{%
+ Kursive Zahlen entsprechen der Seite, auf welcher der korrespondierende
+ Eintrag beschrieben wird. Unterstrichene Zahlen verweisen auf die
+ \ifcodeline@index Codezeile der \fi Definition.
+ \ifscan@allowed%
+ Alle weiteren Eintr\"age sind
+ \ifcodeline@index Zeilennummern\else Seitenzahlen\fi,
+ wo der jeweilige Eintrag verwendet wird.
+ \fi%
+}
+% \end{macrocode}
+%
+% \iffalse
+%</class&doc>
+%<*class&!manual>
+% \fi
+%
+% \subsection{Englischsprachige Bezeichner}
+%
+% \begin{macro}{\tud@localization@english}
+% \changes{v2.02}{2014/07/07}{Pseudonym für \cs{providecaptionname} mit
+% dem Argument \marg{englische Sprachliste}}^^A
+% Dieser Befehl dient zur Definition der englischsprachigen Bezeichner. Dabei
+% müssen als Argumente der Bezeichnerbefehl selbst sowie die dazugehörige
+% Definition angegeben werden. Intern wird dabei \cs{providecaptionname}
+% verwendet.
+% \begin{macrocode}
+\newcommand*\tud@localization@english{%
+ \providecaptionname{%
+ american,australian,british,canadian,english,newzealand,UKenglish,USenglish%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@localization@english
+%
+% \iffalse
+%<*!doc>
+% \fi
+%
+% Hier erfolgt die eigentliche Definition der sprachabhängigen Bezeichner für
+% die deutsche Sprache und ihre Dialekte.
+% \begin{macrocode}
+%<*book|report|article>
+\tud@localization@english{\graduationtext}{to achieve the academic degree}%
+\tud@localization@english{\refereename}{%
+ \tud@ifin@and{\@referee}{%
+ \ifx\refereeothername\@empty%
+ Referees%
+ \else%
+ First referee%
+ \fi%
+ }{Referee}%
+}%
+\tud@localization@english{\refereeothername}{Second referee}%
+\tud@localization@english{\advisorname}{%
+ \tud@ifin@and{\@advisor}{%
+ \ifx\advisorothername\@empty%
+ Advisors%
+ \else%
+ First advisor%
+ \fi%
+ }{Advisor}%
+}%
+\tud@localization@english{\advisorothername}{}%
+\tud@localization@english{\supervisorname}{%
+ \tud@ifin@and{\@supervisor}{%
+ \ifx\supervisorothername\@empty%
+ Supervisors%
+ \else%
+ First supervisor%
+ \fi%
+ }{Supervisor}%
+}%
+\tud@localization@english{\supervisorothername}{}%
+\tud@localization@english{\professorname}{%
+ \tud@ifin@and{\@professor}{%
+ \ifx\professorothername\@empty%
+ Supervising professors%
+ \else%
+ First supervising professor%
+ \fi%
+ }{Supervising professor}%
+}%
+\tud@localization@english{\professorothername}{}%
+\tud@localization@english{\datetext}{Submitted on}%
+\tud@localization@english{\dateofbirthtext}{Born on}%
+\tud@localization@english{\placeofbirthtext}{in}%
+\tud@localization@english{\defensedatetext}{Defended on}%
+\tud@localization@english{\matriculationyearname}{Matriculation year}%
+\tud@localization@english{\matriculationnumbername}{Matriculation number}%
+\tud@localization@english{\coverpagename}{Cover page}%
+\tud@localization@english{\titlepagename}{Title page}%
+\tud@localization@english{\titlename}{Title}%
+%<*book>
+\tud@localization@english{\abstractname}{Abstract}%
+%</book>
+\tud@localization@english{\confirmationname}{Statement of authorship}%
+\tud@localization@english{\confirmationtext}{%
+ I hereby certify that I have authored this
+ \ifx\@@thesis\@empty thesis\else\@@thesis{} \fi
+ \ifx\@@title\@empty\else entitled \emph{\@@title} \fi
+ independently and without undue assistance from third
+ parties. No other than the resources and references
+ indicated in this thesis have been used. I have marked
+ both literal and accordingly adopted quotations as such.
+ \ifx\@supporter\@empty%
+ There were no additional persons involved in the
+ intellectual preparation of the present thesis.
+ \else%
+ During the preparation of this thesis I was only
+ supported by the following persons:%
+ \begin{quote}\def\and{\newline}\@supporter\end{quote}%
+ \noindent Additional persons were not involved in the
+ intellectual preparation of the present thesis.
+ \fi%
+ I am aware that violations of this declaration may lead to
+ subsequent withdrawal of the degree.%
+}%
+\tud@localization@english{\blockingname}{Restriction note}%
+\tud@localization@english{\blockingtext}{%
+ This \ifx\@@thesis\@empty thesis \else\@@thesis{} \fi
+ \ifx\@@title\@empty\else entitled \emph{\@@title} \fi
+ contains confidential data\ifx\@company\@empty\else
+ , disclosed by \emph{\@company}\fi. Publications, duplications
+ and inspections---even in part---are prohibited without explicit
+ permission\ifx\@company\@empty\else\space by \emph{\@company}\fi,
+ as well as publications about the content of this thesis.
+ This thesis may only be made accessible to the supervisor at
+ Technische Universit\"at Dresden, the reviewers and also the
+ members of the examination board.%
+}%
+%</book|report|article>
+\tud@localization@english{\coursename}{Course}%
+\tud@localization@english{\disciplinename}{Discipline}%
+\tud@localization@english{\listingname}{Listing}%
+\tud@localization@english{\listlistingname}{List of Listings}%
+\tud@localization@english{\dissertationname}{Dissertation}%
+\tud@localization@english{\diplomathesisname}{Diploma Thesis}%
+\tud@localization@english{\masterthesisname}{Master Thesis}%
+\tud@localization@english{\bachelorthesisname}{Bachelor Thesis}%
+\tud@localization@english{\studentthesisname}{Student Thesis}%
+\tud@localization@english{\studentresearchname}{Student Research Project}%
+\tud@localization@english{\projectpapername}{Project Paper}%
+\tud@localization@english{\seminarpapername}{Seminar Paper}%
+\tud@localization@english{\termpapername}{Term Paper}%
+\tud@localization@english{\researchname}{Research Report}%
+\tud@localization@english{\logname}{Log}%
+\tud@localization@english{\internshipname}{Internship Report}%
+\tud@localization@english{\reportname}{Report}%
+% \end{macrocode}
+%
+% \iffalse
+%</!doc>
+%</class&!manual>
+%<*class&poster|package&supervisor|class&manual>
+% \fi
+%
+% Hier erfolgen für die Klasse \cls{tudscrposter} sowie das Paket
+% \pkg{tudscrsupervisor} weitere Definitionen.
+% \begin{macrocode}
+\tud@localization@english{\authorname}{Author}%
+\tud@localization@english{\contactname}{Contact}%
+\tud@localization@english{\contactpersonname}{Counterpart}%
+% \end{macrocode}
+%
+% \iffalse
+%</class&poster|package&supervisor|class&manual>
+%<*package&supervisor|class&manual>
+% \fi
+%
+% Hier erfolgen für das Paket \pkg{tudscrsupervisor} weitere Definitionen.
+% \begin{macrocode}
+\tud@localization@english{\taskname}{Task}%
+\tud@localization@english{\tasktext}{for the preparation of a}%
+\tud@localization@english{\namesname}{Name}%
+\tud@localization@english{\issuedatetext}{Issued on}%
+\tud@localization@english{\duedatetext}{Due date for submission}%
+\tud@localization@english{\chairmanname}{Chairman of the Audit Committee}%
+\tud@localization@english{\focusname}{Focus of work}%
+\tud@localization@english{\objectivesname}{Objectives of work}%
+\tud@localization@english{\evaluationname}{Evaluation}%
+\tud@localization@english{\evaluationtext}{for the}%
+\tud@localization@english{\contentname}{Content}%
+\tud@localization@english{\assessmentname}{Assessment}%
+\tud@localization@english{\gradetext}{%
+ The thesis is evaluated with a grade of \textbf{\@grade}.%
+}%
+\tud@localization@english{\noticename}{Notice}%
+% \end{macrocode}
+%
+% \iffalse
+%</package&supervisor|class&manual>
+%<*class&doc>
+% \fi
+%
+% Dies sind die Bezeichner für die Quelltextdokumentation.
+% \begin{macrocode}
+\tud@localization@english{\tud@general@name}{General}%
+\tud@localization@english{\tud@implementation@name}{Implementation}%
+\tud@localization@english{\tud@changes@name}{Change History}
+\tud@localization@english{\tud@todo@name}{List of ToDos}
+\tud@localization@english{\tud@environment@name}{env.}
+\tud@localization@english{\tud@environments@name}{environments}
+\tud@localization@english{\tud@option@name}{opt.}
+\tud@localization@english{\tud@options@name}{options}
+\tud@localization@english{\tud@layerpagestyle@name}{pagestyle}
+\tud@localization@english{\tud@layerpagestyles@name}{pagestyles}
+\tud@localization@english{\tud@layer@name}{layer}
+\tud@localization@english{\tud@layers@name}{layers (pagestyle)}
+\tud@localization@english{\tud@length@name}{length}
+\tud@localization@english{\tud@lengths@name}{lengths}
+\tud@localization@english{\tud@counter@name}{counter}
+\tud@localization@english{\tud@counters@name}{counters}
+\tud@localization@english{\tud@TUDcolor@name}{color}
+\tud@localization@english{\tud@TUDcolors@name}{colors}
+\tud@localization@english{\tud@localization@name}{localization}
+\tud@localization@english{\tud@localizations@name}{localizations}
+\tud@localization@english{\tud@field@name}{field}
+\tud@localization@english{\tud@fields@name}{input fields}
+\tud@localization@english{\tud@KOMAfont@name}{font}
+\tud@localization@english{\tud@KOMAfonts@name}{font elements}
+\tud@localization@english{\tud@parameter@name}{param.}
+\tud@localization@english{\tud@parameters@name}{parameters}
+\tud@localization@english{\tud@index@text}{%
+ Numbers written in italic refer to the page where the corresponding entry is
+ described. Numbers underlined refer to the
+ \ifcodeline@index code line of the \fi definition.
+ \ifscan@allowed%
+ All additional entries refer to the
+ \ifcodeline@index code lines \else pages \fi
+ where the entry is used.
+ \fi%
+}
+% \end{macrocode}
+%
+% \iffalse
+%</class&doc>
+%<*class&!(manual|doc)>
+% \fi
+%
+% \subsection{Kompatibilität der Bezeichner mit verschiedenen Pakete}
+% \subsubsection{Unterstützung des Paketes \pkg{listings}}
+%
+% Die Bezeichner des Paketes werden auf die bereits definierten gesetzt.
+% \begin{macrocode}
+\AfterPackage{listings}{%
+ \renewcommand*\lstlistingname{\listingname}%
+ \renewcommand*\lstlistlistingname{\listlistingname}%
+}
+% \end{macrocode}
+%
+% \subsubsection{Unterstützung des Paketes \pkg{mathswap}}
+%
+% Wird das Paket \pkg{mathswap} verwendet, werden die Ersetzungen für Punkt und
+% Komma im Mathematikmodus sprachspezifisch angepasst.
+% \begin{macrocode}
+\AfterPackage{mathswap}{%
+ \tud@localization@german{\@commaswap}{,}%
+ \tud@localization@german{\@dotswap}{\,}%
+ \tud@localization@english{\@commaswap}{\,}%
+ \tud@localization@english{\@dotswap}{.}%
+}
+% \end{macrocode}
+%
+% \iffalse
+%</class&!(manual|doc)>
+% \fi
+%
+% \Finale
+%
+\endinput
diff --git a/macros/latex/contrib/tudscr/source/tudscr-manual.dtx b/macros/latex/contrib/tudscr/source/tudscr-manual.dtx
new file mode 100644
index 0000000000..4df997a44b
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/tudscr-manual.dtx
@@ -0,0 +1,6388 @@
+% \CheckSum{4470}
+% \iffalse meta-comment
+%
+% TUD-Script -- Corporate Design of Technische Universität Dresden
+% ----------------------------------------------------------------------------
+%
+% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2019
+%
+% ----------------------------------------------------------------------------
+%
+% This work may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License, version 1.3c of the license. The latest
+% version of this license is in http://www.latex-project.org/lppl.txt and
+% version 1.3c or later is part of all distributions of LaTeX 2005/12/01
+% or later and of this work. This work has the LPPL maintenance status
+% "author-maintained". The current maintainer and author of this work
+% is Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+% in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
+% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+% Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
+% oder später und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status
+% "author-maintained", wird somit allein durch den Autor verwaltet. Der
+% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: tudscr-manual.dtx
+%<*dtx>
+% \fi
+%
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{tudscr-manual.dtx}[2019/08/20 v2.06c TUD-Script\space%
+%
+% \iffalse
+%</dtx>
+%<package&identify>\ProvidesPackage{tudscrtutorial}[%
+%<*package&identify>
+%!TUD@Version
+%</package&identify>
+%<package&identify> package
+%<*dtx|package&identify>
+% \fi
+ (internal tutorials)%
+]
+% \iffalse
+%</dtx|package&identify>
+%<*dtx>
+\documentclass[english,ngerman,xindy]{tudscrdoc}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{tudscrfonts}
+\KOMAoptions{parskip=half-}
+\usepackage{bookmark}
+\usepackage[babel]{microtype}
+
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tudscr-manual.dtx}
+\title{\file{\filename}}
+\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
+\date{\fileversion\nobreakspace(\filedate)}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.02}{2014/12/17}{Erstellung der \app{texindy}-Stildatei während
+% der Kompilierung}^^A
+% \changes{v2.02}{2014/11/18}{\pkg{tudscrtutorial}: Index für Tutorials}^^A
+% \changes{v2.05}{2015/08/04}{Geteilte Deklarationen für Klasse und Paket}^^A
+%
+% \section{Handbuch und Leitfäden zu \TUDScript}
+%
+% Es werden die Klasse \cls{tudscrmanual} für das Handuch sowie das Paket
+% \pkg{tudscrtutorial} für das Setzen von einigen Anwenderleitfäden bzw.
+% Tutorials erzeugt. Da es zwischen der Klasse und dem Paket es eine große
+% Menge an Überschneidungen gibt, basieren diese auf der gleichen Quelldatei.
+% Einiges davon wird auch für die Quelltextdokumentationsklasse \cls{tudscrdoc}
+% verwendet.
+%
+% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%
+% \iffalse
+%<*body|class&doc>
+% \fi
+%
+% \subsection{Notwendige Pakete und Befehle}
+%
+% Basis für die Handbuchklasse \cls{tudscrmanual} ist \cls{tudscrreprt}.
+% Zusätzlich wird das Paket \pkg{tudscrtutorial} erstellt, um an das Handbuch
+% angelehnte Tutorials in einem Unterordner zu erstellen. Sowohl für die Klasse
+% als auch das Paket werden einige Pakete geladen, um Einstellungen vorzunehmen
+% und nützliche Befehle zu definieren.
+%
+% Das Paket \pkg{xparse} erlaubt eine sehr freie Deklaration von Makros mit
+% nahezu beliebig arrangierbaren (optionalen) Argumenten.
+% \begin{macrocode}
+%<*!doc>
+\PassOptionsToPackage{log-declarations=false}{xparse}
+\RequirePackage{xparse}[2013/12/31]
+%</!doc>
+% \end{macrocode}
+% Bugfixes für unterschiedliche Pakete.
+% \begin{macrocode}
+\RequirePackage{scrhack}[2014/02/27]
+% \end{macrocode}
+% Die Sprachunterstützung für Klasse und Paket.
+% \begin{macrocode}
+%<*!doc>
+\RequirePackage{babel}[2014/03/24]
+%</!doc>
+% \end{macrocode}
+% Das Paket \pkg{marginnote} stellt nicht fließenden Randnotizen bereit, welche
+% für die Kennzeichnung von Änderungen, Hinweise oder ToDo-Notizen verwendet
+% werden. Die Randnotizen werden auf dem linken~-- weil größeren~-- Seitenrand
+% gesetzt.
+% \begin{macrocode}
+\PassOptionsToPackage{quiet}{marginnote}
+\RequirePackage{marginnote}[2012/03/29]
+%<!doc>\reversemarginpar
+% \end{macrocode}
+% Das Paket für intelligente Leerzeichen am Ende von Makros mit \cs{xspace}.
+% \begin{macrocode}
+\RequirePackage{xspace}[2009/10/20]
+\xspaceaddexceptions{"=}
+% \end{macrocode}
+% Für das Paket \pkg{geometry} erfolgen durch \TUDScript vielerlei Anpassungen.
+% Um bei einer signifikanten Änderung des Paketes passend reagieren zu können,
+% wird auf das aktuelle Paketdatum geprüft und für neue Versionen eine Warnung
+% erzeugt.
+% \ToDo{Kann raus, sobald \pkg{geometry} nicht mehr notwendig}[v2.07]
+% \begin{macrocode}
+%<*!(doc|package)>
+\@ifpackagelater{geometry}{2018/04/17}{%
+ \ClassWarning{\TUD@Class@Name}{%
+ Package `geometry' was updated so some patches\MessageBreak%
+ are maybe outdated%
+ }%
+}{}%
+%</!(doc|package)>
+% \end{macrocode}
+% \begin{macro}{\vTUDScript}
+% \begin{macro}{\vKOMAScript}
+% Diese Befehle geben in der Dokumentation die aktuelle Version von \TUDScript
+% sowie die mindestens notwendige Version von \KOMAScript{} aus.
+% \begin{macrocode}
+\newcommand*\vTUDScript{v\TUDScriptVersionNumber}
+\newcommand*\vKOMAScript{v\TUD@Version@KOMA}
+% \end{macrocode}
+% \end{macro}^^A \vKOMAScript
+% \end{macro}^^A \vTUDScript
+% \begin{macro}{\tud@english}
+% Mit diesem Befehl wird der Inhalt des Arumentes mit englischen Trennmustern
+% gesetzt, falls die Sprache geladen wurde.
+% \begin{macrocode}
+\newcommand*\tud@english[1]{#1}
+\AtBeginDocument{%
+ \iflanguageloaded{english}{%
+ \renewcommand*\tud@english[1]{\foreignlanguage{english}{#1}}%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@english
+% Das Paket \pkg{shellesc} ermöglicht mit dem Befehl \cs{ShellEscape} die
+% Verwendung von Systembefehlen auf der Kommandozeile unabhängig von der
+% genutzten Engine. Sollte \app{lualatex} als Dokumentprozessor eingesetzt
+% werden, sind dennoch die \app{pdflatex}-Primitiven \cs{pdf(@)strcmp} und
+% \cs{pdf(@)shellescape} nötig, wofür das Paket \pkg{pdftexcmds} geladen wird.
+% \begin{macrocode}
+\RequirePackage{shellesc}[2016/06/07]
+\RequirePackage{pdftexcmds}[2016/05/21]
+% \end{macrocode}
+%
+% \iffalse
+%</body|class&doc>
+%<*!doc>
+%<*body>
+%<*class>
+% \fi
+%
+% \begin{macro}{\tud@list@sort}
+% \changes{v2.02}{2014/07/25}{neu}^^A
+% \begin{macro}{\tud@list@@sort}
+% \changes{v2.02}{2014/07/25}{neu}^^A
+% \begin{macro}{\tud@templist}
+% \changes{v2.02}{2014/07/25}{neu}^^A
+% \begin{macro}{\if@tud@list@sorted}
+% \changes{v2.02}{2014/07/25}{neu}^^A
+% Der Befehl \cs{tud@list@sort} erwartet eine \pkg{etoolbox}-Liste und sortiert
+% diese mit dem Makro \cs{sort@list} in alphabetischer Reihenfolge in eine
+% kommagetrennte Auflistung. Diese wird anschließend wieder in eine
+% \pkg{etoolbox}-Liste umgewandelt.
+% \begin{macrocode}
+\newcommand*\tud@templist{}
+\let\tud@templist\relax
+\newcommand*\tud@list@sort[1]{%
+ \ifdefvoid{#1}{%
+ \ClassWarning{tudscrmanual}{%
+ The given list \string#1\space\MessageBreak%
+ is empty, nothing to sort here%
+ }%
+ }{%
+ \let\tud@reserved#1%
+ \let\tud@templist\relax%
+ \forlistloop\tud@list@@sort{\tud@reserved}%
+ \let\tud@reserved\relax%
+ \@for\@tempa:=\tud@templist\do{\listeadd\tud@reserved{\@tempa}}%
+ \let#1\tud@reserved%
+ }%
+}
+% \end{macrocode}
+% Hier erfolgt die eigentliche Sortierung der Liste.
+% \begin{macrocode}
+\newif\if@tud@list@sorted
+\newcommand*\tud@list@@sort[1]{%
+% \end{macrocode}
+% Der erste Eintrag wird direkt der Liste hinzugefügt.
+% \begin{macrocode}
+ \ifx\tud@templist\relax%
+ \def\tud@templist{#1}%
+% \end{macrocode}
+% Weitere Einräge werden mit \cs{pdfstrcmp} an der richtigen Stelle eingefügt.
+% Dabei wird die kommagetrennte Liste \cs{tud@templist} durchlaufen und
+% \cs{@tempb} als Hilfsmakro verwendet, in welches die aktuelle Liste innerhalb
+% der \cs{@for}-Schleife stückweise expandiert wird. Wenn das aktuelle Element
+% an der dafür passenden Stelle eingesetzt wurde, wird \cs{if@tud@list@sorted}
+% gesetzt.
+% \begin{macrocode}
+ \else%
+ \@tud@list@sortedfalse%
+ \let\@tempb\@empty%
+ \@for\@tempa:=\tud@templist\do{%
+% \end{macrocode}
+% Ist der Eintrag bereits erfolgt, wird der verbliebene Teil der Liste
+% angehangen.
+% \ToDo{\cs{expandafter}\cs{edef}\cs{expandafter} ist quatsch, oder?}[v2.07]
+% \begin{macrocode}
+ \if@tud@list@sorted%
+ \expandafter\edef\expandafter\@tempb\expandafter{\@tempb,\@tempa}%
+ \else%
+% \end{macrocode}
+% Liegt der Eintrag in alphabetischer Reihenfolge vor dem aktuellen der
+% durchlaufenenen Liste, so wird dieser davor eingefügt. Dabei muss der Fall,
+% dass das Element der erste Eintrag in der temporären Liste \cs{@tempb} ist,
+% eine Sonderbehandlung erfolgen. Anschließend wird \cs{@tud@list@sortedtrue}
+% gesetzt.
+% \begin{macrocode}
+ \expandafter\ifnum\pdf@strcmp{#1}{\@tempa}<\z@\relax%
+ \ifx\@tempb\@empty%
+ \expandafter\edef\expandafter\@tempb\expandafter{%
+ #1,\@tempa%
+ }%
+ \else%
+ \expandafter\edef\expandafter\@tempb\expandafter{%
+ \@tempb,#1,\@tempa%
+ }%
+ \fi%
+ \@tud@list@sortedtrue%
+ \else%
+% \end{macrocode}
+% Ist Eintrag in alphabetischer Reihenfolge nach dem aktuellen der geprüften
+% Liste, so wird dieser (noch) nicht eingefügt. Der Sonderfall des ersten
+% Elementes wird abgedeckt.
+% \begin{macrocode}
+ \ifx\@tempb\@empty%
+ \expandafter\edef\expandafter\@tempb\expandafter{\@tempa}%
+ \else%
+ \expandafter\edef\expandafter\@tempb\expandafter{\@tempb,\@tempa}%
+ \fi%
+ \fi%
+ \fi%
+ }%
+% \end{macrocode}
+% Wurde der Eintrag nach dem Durchlaufen der Liste nicht eingefügt, so erfolgt
+% dies hier am Ende der Liste.
+% \begin{macrocode}
+ \if@tud@list@sorted\else%
+ \expandafter\edef\expandafter\@tempb\expandafter{\@tempb,#1}%
+ \fi%
+% \end{macrocode}
+% Die temporäre Liste \cs{@tempb} wird auf \cs{tud@templist} überschrieben.
+% \begin{macrocode}
+ \let\tud@templist\@tempb%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@list@sorted
+% \end{macro}^^A \tud@templist
+% \end{macro}^^A \tud@list@@sort
+% \end{macro}^^A \tud@list@sort
+%
+% \iffalse
+%</class>
+%<*package>
+% \fi
+%
+% \subsection{Zusätzliche Pakete für das Paket \pkg{tudscrtutorial}}
+%
+% Mit dem Paket \pkg{scrwfile} lassen sich Probleme mit zu wenig verfügbaren
+% Streams für das Schreiben externer Datein beheben. Hintergrund ist die
+% Verwendung des Paketes \pkg{glossaries} in einem der Tutorials, welches eine
+% Vielzahl solcher Streams benötigt. Das Paket \pkg{morewrites} hat keinen
+% Einfluss auf \pkg{glossaries}.
+% \begin{macrocode}
+\RequirePackage{scrwfile}[2013/08/05]
+% \end{macrocode}
+% Die Umgebungen \env{Preamble}, \env{Trunk} und \env{Hint} sowie deren
+% Varianten nutzen das Paket \pkg{filecontents}, um ihren Inhalt in eine
+% temporäre Datei zu schreiben und diese direkt mit dem Paket \pkg{listings}
+% darzustellen sowie ggf. den Quelltext auszuführen. Beim Überschreiben einer
+% Datei wird für gewöhnlich eine Warnung erzeugt. Dies wird mit dem Patch
+% unterbunden.
+% \begin{macrocode}
+\RequirePackage{filecontents}[2011/10/08]
+\begingroup%
+ \catcode`\*=11%
+ \catcode`\^^M\active%
+ \catcode`\^^L\active\let^^L\relax%
+ \catcode`\^^I\active%
+ \patchcmd{\filec@ntents}{%
+ \@latex@warning@no@line{Overwriting file `\@currdir#1'}%
+ }{}{}{\tud@patch@wrn{filec@tents}}%
+ \global\let\filec@ntents\filec@ntents%
+\endgroup%
+% \end{macrocode}
+%
+% \iffalse
+%</package>
+%</body>
+%<*option>
+% \fi
+%
+% \subsection{%
+% Optionen für die Ausgabe von \cls{tudscrmanual} und \pkg{tudscrtutorial}%
+% }
+%
+% \begin{option}{final}
+% \begin{option}{print}
+% \begin{macro}{\tudfinalflag}
+% \begin{macro}{\tudprintflag}
+% Diese beiden Optionen dienen zur finalen und/oder der unbunten Ausgabe.
+% \begin{macrocode}
+\TUD@key{final}[true]{%
+ \TUD@set@ifkey{final}{@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@tempswa%
+ \let\tudfinalflag\relax%
+ \fi%
+ \fi%
+}
+\TUD@key{print}[true]{%
+ \TUD@set@ifkey{print}{@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@tempswa%
+ \let\tudprintflag\relax%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% Wurde eine oder beide der Optionen \opt{final} oder \opt{print} gesetzt bzw.
+% vor einem externen \app{pdflatex}-Aufruf die Flags \cs{tudfinalflag} und/oder
+% \cs{tudprintflag} definiert, werden die entsprechenden Einstellungen zur
+% finalen Ausgabe und/oder unbunten Druck vorgenommen und anschließend die
+% entsprechenden Optionen unschädlich gemacht.
+% \begin{macrocode}
+\AtEndPreamble{%
+ \ifdef{\tudfinalflag}{%
+ \TUDoptions{ToDo=false}%
+ \TUD@key{ToDo}{\FamilyKeyStateProcessed}%
+ }{%
+ \KOMAoptions{overfullrule}%
+ }%
+ \ifdef{\tudprintflag}{%
+ \ifnum\tud@cd@num>\z@\relax%
+ \TUDoptions{cd=true}%
+ \fi%
+ \TUD@key{cd}{\FamilyKeyStateProcessed}%
+ \ifundef{\hypersetup}{}{\hypersetup{hidelinks}}%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tudprintflag
+% \end{macro}^^A \tudfinalflag
+% \end{option}^^A print
+% \end{option}^^A final
+%
+% \iffalse
+%<*class>
+% \fi
+%
+% \subsection{Standardoptionen der Klasse \cls{tudscrmanual}}
+%
+% Es werden einige Optionen für das Handbuch standardmäßig aktiviert. Dazu
+% werden diese an die entsprechende Elternklasse übergeben.
+% \begin{macrocode}
+\PassOptionsToClass{%
+ cdfoot=true,%
+ chapterpage=true,%
+ chapterprefix=true,%
+ headings=optiontoheadandtoc,%
+ captions=tableheading,%
+ numbers=noenddot,%
+ cd=color,%
+}{\TUD@Class@Parent}
+\PassOptionsToPackage{automark}{scrlayer-scrpage}
+% \end{macrocode}
+%
+% \iffalse
+%</class>
+%</option>
+%<*body>
+%<*class>
+% \fi
+%
+% \subsection{Debug-Traces für die Klasse \cls{tudscrmanual}}
+%
+% Ab und an ist es beim Erstellen des Handbuchs recht sinnvoll, verschiedene
+% Dinge direkt im Logfile zu überprüfen. Hierfür werden folgend einige Befehle
+% zur Ablaufkontrolle definiert.
+%
+% \begin{macro}{\tracinglabels}
+% \changes{v2.05}{2015/10/29}{neu}^^A
+% \begin{macro}{\tud@trace@lbl@created@add}
+% \changes{v2.05}{2015/10/29}{neu}^^A
+% \begin{macro}{\tud@trace@lbl@missing@add}
+% \changes{v2.05}{2015/10/29}{neu}^^A
+% \begin{macro}{\tud@trace@lbl@created@list}
+% \changes{v2.05}{2015/10/29}{neu}^^A
+% \begin{macro}{\tud@trace@lbl@missing@list}
+% \changes{v2.05}{2015/10/29}{neu}^^A
+% Mit \cs{tracinglabels} wird die Nachverfolgung aller erstellten Labels in der
+% Dokumentation aktiviert werden. Die Label werden zum einen direkt im Logfile
+% ausgegeben und am Ende des selbigen in einer sortierten Liste ausgegeben. Die
+% Sternversion des Befehls erzeugt keine sortierte Liste. Über das optionale
+% Argument kann mit verschiedenen Schlüsseln zudem eingestellt werden, ob alle
+% Label (\val{all}) oder nur die erstellten (\val{created}) beziehungsweise die
+% fehlenden (\val{missing}) nachverfolgt werden sollen.
+% \begin{macrocode}
+\newcommand*\tud@trace@lbl@created@add[1]{}
+\newcommand*\tud@trace@lbl@missing@add[1]{}
+\NewDocumentCommand\tracinglabels{!s !O{missing}}{%
+ \newcommand*\tud@trace@lbl@created@list{}%
+ \newcommand*\tud@trace@lbl@missing@list{}%
+ \@tempswafalse%
+ \ifstr{#2}{created}{\@tempswatrue}{}%
+ \ifstr{#2}{all}{\@tempswatrue}{}%
+ \if@tempswa%
+ \renewcommand*\tud@trace@lbl@created@add[1]{%
+ \typeout{%
+ +++++ label created: ##1 on page \thepage%
+ }%
+ \xifinlist{##1}{\tud@trace@lbl@created@list}{}{%
+ \listxadd\tud@trace@lbl@created@list{##1}%
+ }%
+ }%
+ \IfBooleanF{#1}{%
+ \AfterEndDocument{%
+ \typeout{+++++ labels created (sorted) +++++}%
+ \tud@list@sort\tud@trace@lbl@created@list%
+ \forlistloop\typeout{\tud@trace@lbl@created@list}%
+ }%
+ }%
+ \fi%
+ \@tempswafalse%
+ \ifstr{#2}{missing}{\@tempswatrue}{}%
+ \ifstr{#2}{all}{\@tempswatrue}{}%
+ \if@tempswa%
+ \renewcommand*\tud@trace@lbl@missing@add[1]{%
+ \typeout{%
+ +++++ label missing: ##1 on page \thepage%
+ }%
+ \xifinlist{##1}{\tud@trace@lbl@missing@list}{}{%
+ \listxadd\tud@trace@lbl@missing@list{##1}%
+ }%
+ }%
+ \IfBooleanF{#1}{%
+ \AfterEndDocument{%
+ \typeout{+++++ labels missing (sorted) +++++}%
+ \tud@list@sort\tud@trace@lbl@missing@list%
+ \forlistloop\typeout{\tud@trace@lbl@missing@list}%
+ }%
+ }%
+ \fi%
+}
+\@onlypreamble\tracinglabels
+% \end{macrocode}
+% \end{macro}^^A \tud@trace@lbl@missing@list
+% \end{macro}^^A \tud@trace@lbl@created@list
+% \end{macro}^^A \tud@trace@lbl@missing@add
+% \end{macro}^^A \tud@trace@lbl@created@add
+% \end{macro}^^A \tracinglabels
+% \begin{macro}{\tracingmarkup}
+% \changes{v2.05}{2015/10/29}{neu}^^A
+% \begin{macro}{\tud@trace@markup}
+% \changes{v2.05}{2015/10/29}{neu}^^A
+% Mit \cs{tracinglabels} wird die Nachverfolgung aller Aufrufe von
+% \cs{Process@@MarkupDeclare} und \cs{Process@@MarkupInline} durch
+% \cs{Process@Markup} inklusive all ihrer Argumente aktiviert. Dies ist für die
+% Kontrolle des erzeugten Markups sinnvoll.
+% \begin{macrocode}
+\newcommand*\tud@trace@markup[2]{}
+\newcommand*\tracingmarkup{%
+ \renewcommand*\tud@trace@markup[2]{%
+ \typeout{+++++ markup ##1 on page \thepage^^J##2}%
+ }%
+}
+\@onlypreamble\tracingmarkup
+% \end{macrocode}
+% \end{macro}^^A \tud@trace@markup
+% \end{macro}^^A \tracingmarkup
+% \begin{macro}{\tracingbundle}
+% \changes{v2.05}{2015/10/29}{neu}^^A
+% \begin{macro}{\tud@trace@bdl@add}
+% \changes{v2.05}{2015/10/29}{neu}^^A
+% \begin{macro}{\tud@trace@bdl@list}
+% \changes{v2.05}{2015/10/29}{neu}^^A
+% Wird \cs{tracingbundle} in der Präambel verwendet, werden alle direkt oder
+% indirekt durch \cs{Process@Markup} im Handbuch erzeugten Querverweise auf
+% Klassen oder Pakete aus dem \TUDScript-Bundle nachverfolgt und am Ende des
+% Logfiles ausgegeben. Damit kann im Zweifel übeprüft werden, ob eventuell eine
+% falsche Referenz genutzt wurde, wodurch u.\,U. Querverweise oder Einträge in
+% Index und Änderungsliste fehlerhaft werden oder erst gar nicht erscheinen.
+% \begin{macrocode}
+\newcommand*\tud@trace@bdl@add[1]{}
+\newcommand*\tud@trace@bdl@list{}
+\newcommand*\tracingbundle{%
+ \renewcommand*\tud@trace@bdl@add[1]{%
+ \begingroup%
+ \def\Class####1{class:####1}%
+ \def\Package####1{package:####1}%
+ \xifinlist{##1}{\tud@trace@bdl@list}{}{%
+ \listxadd\tud@trace@bdl@list{##1}%
+ }%
+ \endgroup%
+ }%
+ \AfterEndDocument{%
+ \typeout{+++++ bundle list +++++}%
+ \forlistloop\typeout{\tud@trace@bdl@list}%
+ }%
+}
+\@onlypreamble\tracingbundle
+% \end{macrocode}
+% \end{macro}^^A \tud@trace@bdl@list
+% \end{macro}^^A \tud@trace@bfundle
+% \end{macro}^^A \tracingbundle
+%
+% \iffalse
+%</class>
+%</body>
+%</!doc>
+%<*body|class&doc>
+% \fi
+%
+% \subsection{Anpassungen für das Paket \pkg{hyperref} und Querverweise}
+%
+% Das Paket \pkg{hyperref} wird für alle möglichen Links und Querverweise
+% geladen, \pkg{bookmark} verbessert das Erstellen der Outline-Einträge.
+% \begin{macrocode}
+\PassOptionsToPackage{hyperindex=false,colorlinks,linkcolor=blue}{hyperref}
+\PassOptionsToPackage{open,openlevel=0}{bookmark}
+% \end{macrocode}
+% Es folgen einige Befehle, die an das Paket \pkg{hyperref} gekoppelt sind.
+% Sobald das Paket geladen wurde, werden die Makros mit der jeweiligen
+% Funktionalität definiert.
+% \begin{macrocode}
+\AfterPackage*{hyperref}{%
+% \end{macrocode}
+% Zuerst die Einstellungen für \cls{tudscrmanual} und \pkg{tudscrtutorial}.
+%
+% \iffalse
+%<*!doc>
+% \fi
+%
+% Die Bezeichner für die Abschnittsebenen werden umbenannt.
+% \begin{macrocode}
+ \renewcaptionname{ngerman}{\sectionautorefname}{Unterkapitel}%
+ \renewcaptionname{ngerman}{\subsectionautorefname}{Abschnitt}%
+ \renewcaptionname{ngerman}{\subsubsectionautorefname}{Unterabschnitt}%
+% \end{macrocode}
+% \begin{macro}{\tudhyperdef}
+% \changes{v2.02}{2014/10/27}{neu}^^A
+% \begin{macro}{\tudhyperref}
+% \changes{v2.02}{2014/10/27}{neu}^^A
+% \begin{macro}{\tud@manualname}
+% \changes{v2.05}{2015/1q/19}{neu}^^A
+% Diese Befehle dienen sowohl zum Definieren von Textankern im Handbuch als
+% auch zum Referenzieren auf diese. Bei der Erstellung des Ankers mit
+% \cs{tudhyperdef} wird zusätzlich auch noch ein Label (\cs{label}) erzeugt.
+% Der Anker wird mit \cs{Hy@raisedlink}~-- wie es auch bei pkg{hyperref}-Labels
+% geschieht~-- über die Grundlinie gehoben. Die Sternversion sollte nach
+% Überschriften verwendet werden und verschiebt die vertikale Position des
+% Ankers noch weiter nach oben.
+% \begin{macrocode}
+ \newcommand*\tud@manualname{tudscr}%
+%<*class>
+ \NewDocumentCommand\tudhyperdef{s t' m}{%
+ \@tempswafalse%
+ \IfBooleanT{#1}{\@tempswatrue\setlength\@tempdima{3\baselineskip}}%
+ \IfBooleanT{#2}{\@tempswatrue\setlength\@tempdima{15\baselineskip}}%
+ \if@tempswa%
+ \raisebox{\@tempdima}[0pt][0pt]{\hyperdef{\tud@manualname}{#3}{}}%
+ \par\nobreak\vskip\dimexpr-\parskip-\baselineskip\relax%
+ \@afterindentfalse\@afterheading%
+ \else%
+ \Hy@raisedlink{\hyperdef{\tud@manualname}{#3}{}}\ignorespaces%
+ \fi%
+ \label{#3}%
+ \tud@trace@lbl@created@add{#3}%
+ }%
+ \newcommand*\tudhyperref[2]{\hyperref{}{\tud@manualname}{#1}{#2}}%
+%</class>
+% \end{macrocode}
+% Aus einem Tutorial erfolgen alle Querverweise mit \cs{tudhyperref} auf das
+% Anwenderhandbuch \enquote*{tudscr} im übergeordneten Ordner.
+% \begin{macrocode}
+%<*package>
+ \newcommand*\tudhyperref[2]{%
+ \hyperref{../\tud@manualname.pdf}{\tud@manualname}{#1}{#2}%
+ }%
+%</package>
+% \end{macrocode}
+% \end{macro}^^A \tud@manualname
+% \end{macro}^^A \tudhyperref
+% \end{macro}^^A \tudhyperdef
+% \begin{macro}{\autorefname}
+% \begin{macro}{\auto@refname}
+% \begin{macro}{\auto@@refname}
+% Der Befehl \cs{autorefname} dient dazu, den Verweistyp beziehungsweise den
+% Bezeichner des aktuellen~-- oder optional eines speziellen~-- Labels ohne die
+% dazugehörige Nummerierung zu erhalten. Das zugrunde liegende Funktionsprinzip
+% wurde bei \hrfn{http://tex.stackexchange.com/q/33776/}{LaTeX Stack Exchange}
+% vorgestellt und hier übernommen.
+% \begin{macrocode}
+ \newcommand*\autorefname[1][current]{%
+ \ifstr{#1}{current}{%
+ \expandafter\HyPsd@@autorefname\@currentHref\@nil%
+ }{%
+ \auto@refname\HyPsd@@autorefname{#1}%
+ }%
+ \unskip\xspace%
+ }%
+ \newcommand*\auto@refname[2]{%
+ \expandafter\ifx\csname r@#2\endcsname\relax%
+ ??%
+ \else%
+ \expandafter\expandafter\expandafter\auto@@refname%
+ \csname r@#2\endcsname{}{}{}{}\@nil#1\@nil%
+ \fi%
+ }%
+ \newcommand*\auto@@refname{}%
+ \def\auto@@refname#1#2#3#4#5\@nil#6\@nil{#6#4.\@nil}%
+% \end{macrocode}
+% \end{macro}^^A \auto@@refname
+% \end{macro}^^A \auto@refname
+% \end{macro}^^A \autorefname
+% Nun die Einstellungen für \cls{tudscrdoc}.
+%
+% \iffalse
+%</!doc>
+%<*doc>
+% \fi
+%
+% \begin{macro}{\hypersourcedef}
+% \changes{v2.05}{2016/04/26}{neu}^^A
+% \begin{macro}{\hypersource@def}
+% \changes{v2.05}{2016/04/26}{neu}^^A
+% \begin{macro}{\hypersource@ref@codeline}
+% \changes{v2.05}{2016/04/26}{neu}^^A
+% \begin{macro}{\hypersource@ref@page}
+% \changes{v2.05}{2016/04/26}{neu}^^A
+% Diese Makros werden verwendet, um im Index respektive in der Änderungsliste
+% mithilfe von \pkg{hyperref} Hyperlinks auf Codezeilen respektive Seiten im
+% Dokument zu setzen.
+%
+% Mit \cs{hypersourcedef} wird ein Textanker gesetzt, falls dieser noch nicht
+% definiert wurde, was durch \cs{hypersource@def} abgesichert wird. Als
+% Argument wird hierfür die aktuelle Codezeile verwendet.
+% \begin{macrocode}
+ \newcommand*\hypersource@def{}
+ \newcommand*\hypersourcedef[1]{%
+ \ifstr{#1}{\hypersource@def}{}{%
+ \Hy@raisedlink{\hyperdef{}{source:#1}{}}%
+ \xdef\hypersource@def{#1}%
+ }%
+ }%
+% \end{macrocode}
+% Mit \cs{hypersource@ref@\dots} wird auf Anker im Dokument verlinkt. Dies
+% erfolgt indirekt über die Attribute \val{main} bzw. \val{usage}, welche bei
+% der Definitionen von Befehlen etc. im Index genutzt werden. Hierfür werden
+% die dazugehörigen Makros umdefiniert.
+% \begin{macrocode}
+ \newcommand*\hypersource@ref@codeline[2][\@firstofone]{%
+ \begingroup%
+ \def\@tempa##1{\hyperref{}{}{source:##1}{#1{##1}}}%
+ \forcsvlist\@tempa{#2}%
+ \endgroup%
+ }%
+ \newcommand*\hypersource@ref@page[2][\@firstofone]{%
+ \begingroup%
+ \def\@tempa##1{\hyperlink{page.##1}{#1{##1}}}%
+ \forcsvlist\@tempa{#2}%
+ \endgroup%
+ }%
+ \renewcommand*\main[1]{%
+ \ifcodeline@index%
+ \hypersource@ref@codeline[\underline]{#1}%
+ \else%
+ \hypersource@ref@page[\underline]{#1}%
+ \fi%
+ }%
+ \renewcommand*\usage[1]{\hypersource@ref@page[\textit]{#1}}%
+% \end{macrocode}
+% \end{macro}^^A \hypersource@ref@page
+% \end{macro}^^A \hypersource@ref@codeline
+% \end{macro}^^A \hypersource@def
+% \end{macro}^^A \hypersourcedef
+%
+% \iffalse
+%</doc>
+% \fi
+%
+% Das war's. Damit sind die Ausführungen für das Paket \pkg{hyperref} beendet.
+% \begin{macrocode}
+}
+% \end{macrocode}
+% Sollte das Paket \pkg{hyperref} nicht geladen werden, wird eine Rückfallebene
+% definiert, wodurch die Klasse dennoch verwendet werden kann.
+% \begin{macrocode}
+\TUD@UnwindPackage{hyperref}{%
+% \end{macrocode}
+% Zunächst die direkt innerhalb der Dokumentation verwendeten Befehle nebst
+% dazugehöriger Warnung.
+% \begin{macrocode}
+%<*!doc>
+%<*class>
+ \ClassWarningNoLine{tudscrmanual}%
+%</class>
+%<*package>
+ \PackageWarningNoLine{tudscrtutorial}%
+%</package>
+ {%
+ It is strongly recommended to load package `hyperref'. \MessageBreak%
+ Nevertheless, essential commands are rudimentarily\MessageBreak%
+ defined. At least the package `url' is loaded%
+ }%
+%</!doc>
+% \end{macrocode}
+% \begin{macro}{\hypersetup}
+% \begin{macro}{\href}
+% \begin{macro}{\phantomsection}
+% \begin{macro}{\texorpdfstring}
+% \begin{macro}{\nolinkurl}
+% Einige vom Paket \pkg{hyperref} definierten Befehle werden vorgehalten.
+% \begin{macrocode}
+ \providecommand*\hypersetup[1]{}%
+ \providecommand*\href[3][]{#3}%
+ \providecommand*\phantomsection{}%
+ \providecommand*\texorpdfstring[2]{#1}%
+ \RequirePackage{url}[2013/09/16]%
+ \providecommand*\nolinkurl[1]{\url{#1}}%
+% \end{macrocode}
+% \end{macro}^^A \nolinkurl
+% \end{macro}^^A \texorpdfstring
+% \end{macro}^^A \phantomsection
+% \end{macro}^^A \href
+% \end{macro}^^A \hypersetup
+%
+% \iffalse
+%<*!doc>
+% \fi
+%
+% \begin{macro}{\hyperpage}
+% \begin{macro}{\autoref}
+% Der Befehl \cs{autoref} wird auch in der Sternversion genutzt.
+% \begin{macrocode}
+ \providecommand*\hyperpage[1]{#1}%
+ \providecommand*\autoref{??\xspace\kernel@ifstar{\ref}{\ref}}%
+% \end{macrocode}
+% \end{macro}^^A \autoref
+% \end{macro}^^A \hyperpage
+% \begin{macro}{\hyperdef}
+% \begin{macro}{\hyperref}
+% \begin{macro}{\tud@hyperref@a}
+% \begin{macro}{\tud@hyperref@b}
+% Mit \cs{hyperdef} wird ein ein Label direkt vor dem Text eingefügt.
+% \begin{macrocode}
+ \providecommand*\hyperdef[3]{\label{#1.#2}#3}%
+% \end{macrocode}
+% Der Befehl \cs{hyperref} existiert in zwei Varianten. Entweder mit einem
+% optionalen und einem obligatorischen Argument oder mit vier Argumenten.
+% \begin{macrocode}
+ \providerobustcmd*\hyperref{%
+ \kernel@ifnextchar[{\tud@hyperref@a}{\tud@hyperref@b}%
+ }
+ \newcommand*\tud@hyperref@a[2][]{#2}
+ \newcommand*\tud@hyperref@b[4]{#4}
+% \end{macrocode}
+% \end{macro}^^A \tud@hyperref@b
+% \end{macro}^^A \tud@hyperref@a
+% \end{macro}^^A \hyperref
+% \end{macro}^^A \hyperdef
+% \begin{macro}{\partautorefname}
+% \begin{macro}{\chapterautorefname}
+% \begin{macro}{\sectionautorefname}
+% \begin{macro}{\subsectionautorefname}
+% \begin{macro}{\subsubsectionautorefname}
+% Die notwendigen, lokalen Bezeichner der Gliederungsebenen.
+% \begin{macrocode}
+ \tud@localization@german{\partautorefname}{Teil}%
+ \tud@localization@german{\chapterautorefname}{Kapitel}%
+ \tud@localization@german{\sectionautorefname}{Unterkapitel}%
+ \tud@localization@german{\subsectionautorefname}{Abschnitt}%
+ \tud@localization@german{\subsubsectionautorefname}{Unterabschnitt}%
+ \tud@localization@english{\partautorefname}{Part}%
+ \tud@localization@english{\chapterautorefname}{chapter}%
+ \tud@localization@english{\sectionautorefname}{section}%
+ \tud@localization@english{\subsectionautorefname}{subsection}%
+ \tud@localization@english{\subsubsectionautorefname}{subsubsection}%
+% \end{macrocode}
+% \end{macro}^^A \subsubsectionautorefname
+% \end{macro}^^A \subsectionautorefname
+% \end{macro}^^A \sectionautorefname
+% \end{macro}^^A \chapterautorefname
+% \end{macro}^^A \partautorefname
+% Anschließend folgen die für Anwenderdokumentation eigens definierten Befehle.
+% \begin{macrocode}
+%<*class>
+ \ProvideDocumentCommand\tudhyperdef{st'm}{\label{#3}}%
+%</class>
+ \providecommand*\tudhyperref[2]{#2}%
+ \providecommand*\autorefname[1][]{??\xspace}%
+%
+% \iffalse
+%</!doc>
+%<*doc>
+% \fi
+%
+% \end{macrocode}
+% Und hier der Teil für die Quelltextdokumentation.
+% \begin{macrocode}
+ \providecommand*\hypersourcedef[1]{}
+ \providecommand*\hypersource@def{}
+ \providecommand*\hypersource@ref@codeline[2][]{}
+ \providecommand*\hypersource@ref@page[2][]{}
+%
+% \iffalse
+%</doc>
+% \fi
+%
+% \begin{macrocode}
+}
+% \end{macrocode}
+% \begin{macro}{\hrfn}
+% \changes{v2.02}{2014/08/16}{neu}^^A
+% \changes{v2.04}{2015/02/18}{Schriftgröße mit \cs{scalebox}}^^A
+% Mit diesem Makro können Hyperlinks im Fließtext erzeugt werden, welche
+% zusätzlich noch die dazugeörige URL als Fußnote anzeigen.
+% \begin{macrocode}
+\newcommand*\hrfn[2]{%
+ \href{#1}{\trim@spaces{#2}}%
+ \footnote{%
+ \begingroup%
+% \end{macrocode}
+% Die Gruppe wird verwendet, um Unterstriche zu entschärfen, die im Zweifel zu
+% Fehlern führen können.
+% \begin{macrocode}
+ \def\_{_}%
+ \edef\@tempa{#1}%
+ \strut\expandafter\url\expandafter{\@tempa}%
+ \endgroup%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \hrfn
+% \begin{macro}{\mailto}
+% Ein Makro zur Angabe einer verlinkten E"~Mail-Adresse.
+% \begin{macrocode}
+\newrobustcmd*\mailto[1]{\mbox{\href{mailto:#1}{\nolinkurl{#1}}}}%
+% \end{macrocode}
+% \end{macro}^^A \mailto
+% Wenn \pkg{hyperref} geladen wird, erzeugt das Paket \pkg{babel} innerhalb von
+% \cs{pdfstringdef} ziemlich viele und absolut unnötige Infos in der Form
+% \texttt{Package babel Info: Redefining ngerman shorthand}. Dieser Patch dient
+% zum Unterdrücken dieser Infos.
+% \begin{macro}{\pdfstringdef}
+% \begin{macrocode}
+\AfterPackage*{hyperref}{%
+ \patchcmd{\pdfstringdef}{\csname HyPsd@babel@}{%
+ \let\bbl@info\@gobble\csname HyPsd@babel@%
+ }{}{\tud@patch@wrn{pdfstringdef}}%
+}
+% \end{macrocode}
+% \end{macro}^^A \pdfstringdef
+%
+% \iffalse
+%</body|class&doc>
+%<*body>
+% \fi
+%
+% \begin{macro}{\fullref}
+% Verbesserte Referenzierungen auf Seiten.
+% \begin{macrocode}
+\RequirePackage{varioref}[2011/10/02]
+\renewcommand*\fullref[1]{\hyperref[#1]{\autoref*{#1} \vpageref{#1}}}
+% \end{macrocode}
+% \end{macro}^^A \fullref
+% Das Paket \pkg{microtype} wird für den optischen Randausgleich verwendet. Es
+% sollte erst nach \pkg{hyperref} geladen werden.
+% \begin{macrocode}
+\AfterPackage*{hyperref}{\RequirePackage[babel]{microtype}[2013/05/23]}
+% \end{macrocode}
+% Wurde \pkg{hyperref} nicht geladen, dann soll auf \pkg{microtype} trotzdem
+% nicht verzichtet werden.
+% \begin{macrocode}
+\TUD@UnwindPackage{hyperref}{\RequirePackage[babel]{microtype}[2013/05/23]}
+% \end{macrocode}
+%
+% \iffalse
+%</body>
+%<*!doc>
+%<*body>
+%<*class>
+% \fi
+%
+% \subsection{Deklarationsumgebungen für die Klasse \cls{tudscrmanual}}
+%
+% Die Umgebungen beiden \env{Declaration} und \env{Declaration*} sowie
+% \env{Obsolete} und \env{Bundle} werden für die Beschreibung von Optionen,
+% Umgebungen, Befehlen etc. verwendet, welche von \TUDScript dem Anwender zur
+% Verfügung gestellt werden.
+%
+% \begin{macro}{\if@tud@declare}
+% \begin{macro}{\if@openindex}
+% \begin{macro}{\tud@declare@num}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% Dies sin ein paar Hilfsmakros zur Steuerung des Markup sowie der Ausgabe von
+% Deklarationen, Index und Änderungsliste, welche bei den nächsten Befehlen und
+% Umgebungen genutzt werden. Mit \cs{if@tud@declare} wird festgelegt, ob die
+% Befehle für das Markup in der Ausgabe als Deklaration oder anderweiteig
+% erfolgt. Der Schalter \cs{if@openindex} wird zu Beginn einer Deklaration auf
+% \val{true} gesetzt und vor dem Beenden auf \val{false}. Damit wird bestimmt,
+% ob ein öffnender oder ein schließender Indexeintrag erzeugt werden soll.
+% \begin{macrocode}
+\newif\if@tud@declare
+\newif\if@openindex
+% \end{macrocode}
+% Das Makro \cs{tud@declare@num} bestimmt innerhalb einer Deklaration, wie
+% das Markup erfolgen soll. Die möglichen Werte sind bei der Beschreibung von
+% \cs{Process@@MarkupDeclare} zu finden.
+% \begin{macrocode}
+\newcommand*\tud@declare@num{0}
+% \end{macrocode}
+% \end{macro}^^A \tud@declare@num
+% \end{macro}^^A \if@openindex
+% \end{macro}^^A \if@tud@declare
+% \begin{environment}{Declaration}
+% \begin{environment}{Obsolete}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% \begin{macro}{\tud@declaration@list}
+% \begin{macro}{\if@tud@obsolete}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% Es werden einige Hilfsmakros für die Ausgabe einer Deklaration sowie der
+% dazugehörigen Änderungsliste initialisiert.
+% \begin{macrocode}
+\newcommand*\tud@declaration@list{}
+\let\tud@declaration@list\relax
+% \end{macrocode}
+% Die \env{Declaration}-Umgebung dient zur Deklaration von Optionen, Umgebungen,
+% Befehlen, Parametern, Bezeichnern, Längen, Schriftelementen und Farben. Diese
+% werden mit den entsprechenden Auszeichnungsbefehlen als obligatorisches
+% Argument übergeben. Zuvor kann noch vorher im ersten optionalen Argument eine
+% Beschreibung für die Änderungsliste in der Form \oarg{Verison!Beschreibung}
+% angegeben werden. Danach kann im dritten Argument~-- das zweite optionale~--
+% die Voreinstellung für eine Option oder dergleichen angegeben werden. Das
+% nächste optionale Argument erlaubt die Angabe einer bedingten Voreinstellung,
+% also einer anderen Voreinstellung als der zuerst angegeben unter bestimmten
+% Voraussetzungen. Diese wird in der Form \oarg{Bedingung:Voreinstellung}
+% angegeben. Das letzte Argument ist ebenfalls optional, wird aber in der Form
+% \marg{Zusatz} angegeben und enthält ggf. zusätzliche Informationen.
+%
+% Die Umgebung \env{Obsolete} hat eine ganz ähnliche Funktion, wird allerdings
+% für die Deklaration veralteter Befehle, Umgebungen, Optionen etc. verwendet.
+% Da sich beide Umgebungen stark ähneln, werden zum Start bzw. zum Abschluss
+% die Makros \cs{tud@declare@start} bzw. \cs{tud@declare@end} aufgerufen. Zu
+% Beginn wird nichts weiter ausgegeben sondern lediglich alle übergebenen
+% Argumente in jeweiligen Listen gesammelt. Die eigentliche Ausgabe der
+% Deklaration erfolgt mit dem Befehl \cs{printdeclarationlist} bezieungsweise
+% \cs{printobsoletelist}.
+% \begin{macrocode}
+\NewDocumentEnvironment{Declaration}{omoog}{%
+ \listadd\tud@declaration@list{#2}%
+ \tud@declare@start[#1]{#2}[#3][#4]{#5}%
+}{%
+ \tud@declare@end{#2}{\printdeclarationlist}%
+}
+% \end{macrocode}
+% Für die Umgebung \env{Obsolete} sieht die Eingabe etwas anders aus. Das erste
+% obligatorische Argument sollte eine Versionsnummer enthalten, ab wann die
+% Deklaration veraltet ist. Das erste optionale Argument wird genutzt, wenn
+% für eine weiterhin gültige Deklaration lediglich ein bestimmter Wert
+% entfällt. Wird das erste Argument leer gelassen, erfolgt lediglich die
+% Ausgabe der Deklaration ohne einen Eintrag in die Änderungsliste. Dies ist
+% für Umgebungen und Befehle gedacht, bei denen lediglich ein oder mehrere
+% Parameter geändert wurden bzw. entfallen.
+% \begin{macrocode}
+\newif\if@tud@obsolete
+\NewDocumentEnvironment{Obsolete}{momoog}{%
+ \@tud@obsoletetrue%
+ \ifxblank{#1}{%
+% \end{macrocode}
+% Ohne Versionsnummer erfolgt die Ausgabe ohne Label. Für den Eintrag wird auch
+% keine Änderungsnotiz erzeugt.
+% \begin{macrocode}
+ \listadd\tud@declaration@list{%
+ \def\tud@declare@num{1}%
+ #3%
+ \def\tud@declare@num{0}%
+ }%
+ \tud@declare@start{#3}[#4][#5]{#6}%
+ }{%
+ \listadd\tud@declaration@list{#3}%
+% \end{macrocode}
+% Wurde ein optionales Argument angegeben, bezieht sich der Änderungseintrag
+% auf ebendieses Argument, die eigentliche, obsolete Deklaration wird als
+% Untereintrag genutzt.
+% \begin{macrocode}
+ \IfValueTF{#2}{%
+ \Changed@At@CreateList[#2]{#1!#3}%
+ }{%
+ \Changed@At@CreateList[#3]{#1}%
+ }%
+ \IfValueTF{#6}{%
+ \tud@declare@start{#3}[#4][#5]{#6}%
+% \end{macrocode}
+% Ohne eine zusätzliche Angabe imletzten optionalen Argument wird standardmäßig
+% der Entfall der Deklaration angegeben. Alternativ dazu kann im ersten
+% Argument der Versionsangabe mit einem Dopppelpunkt von dieser getrennt eine
+% neue bzw. aktuell gültige Deklaration als Querverweis angegeben werden.
+% \begin{macrocode}
+ }{%
+ \toks@{\tud@declare@start{#3}[#4][#5]}%
+ \def\@tempa{\emph{entf\"allt}}%
+ \in@{:}{#1}%
+ \ifin@%
+ \def\@tempb##1:##2\@nil{%
+ \IfArgIsEmpty{##2}{}{%
+ \def\@tempa{\seeref{##2'page'}}%
+ }%
+ }%
+ \@tempb#1\@nil%
+ \fi%
+ \eaddto@hook\toks@{\expandafter{\@tempa}}%
+ \the\toks@%
+ }%
+ }%
+ \@tud@obsoletefalse%
+}{%
+ \@tud@obsoletetrue%
+ \tud@declare@end{#3}{\printobsoletelist}%
+ \@tud@obsoletefalse%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@obsolete
+% \end{macro}^^A \tud@declaration@list
+% \end{environment}^^A Obsolete
+% \end{environment}^^A Declaration
+% \begin{macro}{\tud@preset@list}
+% \begin{macro}{\if@tud@preset@list}
+% \begin{macro}{\tud@additional@list}
+% \begin{macro}{\if@tud@additional@list}
+% Dies sind die temporären listen, die für alle Deklarationen verwendet werden.
+% \begin{macrocode}
+\newcommand*\tud@preset@list{}
+\let\tud@preset@list\relax
+\newif\if@tud@preset@list
+\newcommand*\tud@additional@list{}
+\let\tud@additional@list\relax
+\newif\if@tud@additional@list
+% \end{macrocode}
+% \end{macro}^^A \if@tud@additional@list
+% \end{macro}^^A \tud@additional@list
+% \end{macro}^^A \if@tud@preset@list
+% \end{macro}^^A \tud@preset@list
+% \begin{macro}{\tud@declare@start}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% \begin{macro}{\tud@declare@end}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% Dies sind die Makros für die eigentliche Abarbeitung der Deklarationsbefehle
+% zu Beginn und Ende der Umgebungen \env{Declaration} und \env{Obsolete}.
+% \begin{macrocode}
+\NewDocumentCommand\tud@declare@start{omr[]r[]m}{%
+% \end{macrocode}
+% Die optional angegebenen Änderungen werden mit \cs{Changed@At@CreateList} in
+% der Liste \cs{tud@changedat@list} gesichert und später sowohl für die
+% Randnotiz als auch die Änderungsliste verarbeitet.
+% \begin{macrocode}
+ \Changed@At@CreateList[#2]{#1}%
+% \end{macrocode}
+% Hier noch die Listen für Voreinstellungen\dots
+% \begin{macrocode}
+ \IfValueTF{#3}{%
+ \@tud@preset@listtrue%
+ \def\@tempa{Voreinstellung: \PValue{#3}}%
+ \IfValueT{#4}{%
+ \def\@tempb[##1:##2]{##1: \PValue{##2}}%
+ \eappto\@tempa{ | \expandonce{\@tempb[#4]}}%
+ }%
+ \listeadd\tud@preset@list{\expandonce\@tempa}%
+ }{%
+ \listadd\tud@preset@list{\relax}%
+ }%
+% \end{macrocode}
+% \dots sowie zusätliche Informationen.
+% \begin{macrocode}
+ \IfValueTF{#5}{%
+ \@tud@additional@listtrue%
+ \listadd\tud@additional@list{(#5)}%
+ \in@{\Environment}{#2}%
+ \ifin@\listadd\tud@additional@list{\tabularnewline}\fi%
+ }{%
+ \listadd\tud@additional@list{\relax}%
+ \in@{\Environment}{#2}%
+ \ifin@%
+ \listadd\tud@additional@list{\relax}%
+ \listadd\tud@additional@list{\relax}%
+ \fi%
+ }%
+}
+% \end{macrocode}
+% Am Ende der Umgebungen wird das übergebenen Hauptargument erneut ausgeführt,
+% was zum Beenden der Indexeinträge für die jeweilige Deklaration führt
+% (\cs{@openindexfalse}, siehe \cs{Process@Index}). Dafür werden die Makros für
+% die Angabe obligatorischer und optionaler Parameter lokal umdefiniert.
+% \begin{macrocode}
+\newcommand*\tud@declare@end[2]{%
+ \ifx\tud@declaration@list\relax\else%
+ \ClassError{tudscrmanual}{\string#2\space is missing}{%
+ \string\tud@declaration@list\space is not empty. Did you\MessageBreak%
+ forget to print this list with\MessageBreak%
+ \string#2?%
+ }%
+ \fi%
+ \vskip-\lastskip%
+ \@tud@declaretrue\@openindexfalse#1\@tud@declarefalse%
+ \pagebreak[1]%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@declare@end
+% \end{macro}^^A \tud@declare@start
+% \begin{environment}{Declaration*}
+% \changes{v2.02}{2014/10/09}{neu}^^A
+% \changes{v2.05}{2015/08/04}{Indexaufteilung/-markup für Klassen und Pakete}^^A
+% Die Sternversion der Umgebung \env{Declaration*} ist für die vereinfachte
+% Deklaration von Klassen, Paketen etc. gedacht, bei denen keine Ausgabe
+% sondern lediglich Hyperlink, Indexeintrag und Änderungsnotiz erzeugt werden
+% sollen. Hierbei werden die beiden Befehle \cs{tud@declare@special@start} und
+% \cs{tud@declare@special@end} genutzt, wobei der Anker des erzeugten Labels
+% nicht erhöht sondern auf der aktuellen Grundlinie erzeugt wird.
+% \begin{macrocode}
+\NewDocumentEnvironment{Declaration*}{om}{%
+ \tud@declare@special@start[#1]{#2}{2}%
+}{%
+ \tud@declare@special@end{#2}%
+}
+% \end{macrocode}
+% \end{environment}^^A Declaration*
+% \begin{environment}{Bundle*}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% Die Umgebung \env{Bundle*} wird verwendet, wenn ein zusätzliches Paket oder
+% eine weitere Klasse in Ergänzung zu den Hauptklassen dokumentiert wird.
+% Hierfür wird die Umgebung \env{Bundle} erst geöffnet, nachdem mit dem Makro
+% \cs{tud@declare@special@start} das obligatorische Argument~-- sprich die
+% Klasse oder das Paket~-- deklariert wird. Die Umgebung \env{Bundle*} sollte
+% dabei direkt nach einer Gliederungsüberschrift genutzt werden, in welcher das
+% zu deklarierende Element (Klasse, Paket etc.) genannt wird, da der Anker des
+% erzeugten Labels weiter nach oben auf die Höhe der Überschirft verschoben
+% wird. Zum Abschluss der Deklaration wird \cs{tud@declare@special@end} nach
+% dem Schließen der Umgebung \env{Bundle} genutzt.
+% \begin{macrocode}
+\NewDocumentEnvironment{Bundle*}{om}{%
+ \tud@declare@special@start[#1]{#2}{3}%
+ \Bundle{#2}%
+}{%
+ \endBundle%
+ \tud@declare@special@end{#2}%
+}
+% \end{macrocode}
+% \end{environment}^^A Bundle*
+% \begin{macro}{\tud@declare@special@start}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% \begin{macro}{\tud@declare@special@end}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% Die beiden dienen zur vereinfachten Deklaration. Es wird keine Ausgabe
+% sondern lediglich Hyperlink, Indexeintrag und Änderungsnotiz erzeugt. Das
+% optionale Argument dient einem Änderungseintrag, das erste obligaotrische
+% gilt der eigentlichen Deklaration, das zweite zur Einstellung des Makros
+% \cs{tud@declare@num}, mit welchem das Verhalten für das Erzeugen der Labels
+% gesteuert wird.
+% \begin{macrocode}
+\NewDocumentCommand\tud@declare@special@start{omm}{%
+ \Changed@At@CreateList(#2){#1}%
+ \def\tud@declare@num{#3}%
+ \@tud@declaretrue\@openindextrue#2\@tud@declarefalse%
+ \def\tud@declare@num{0}%
+}
+\newcommand*\tud@declare@special@end[1]{%
+ \ifx\tud@changedat@list\relax\else%
+ \ClassError{tudscrmanual}{\string\printchangedatlist\space is missing}{%
+ \string\tud@changedat@list\space is not empty. Did you\MessageBreak%
+ forget to print this list with \string\printchangedatlist?%
+ }%
+ \fi%
+ \@tud@declaretrue\@openindexfalse#1\@tud@declarefalse%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@declare@special@end
+% \end{macro}^^A \tud@declare@special@start
+% \begin{macro}{\printdeclarationlist}
+% \begin{length}{\tud@lastskip}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% \begin{macro}{\index}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% \begin{macro}{\label}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% Mit dem Befehl \cs{printdeclarationlist} erfolgt die eingentliche Ausgabe
+% aller Deklarationen. Zweck ist es, mehrere \env{Declaration}-Umgebungen
+% ineinander verschachteln zu können und eine Ausgabe aller auf einmal zu
+% erzeugen. Die durch die ggf. nacheinander folgenden Deklarationen wurden in
+% entsprechenden Listen gesammelt und werden hier jetzt formatiert ausgegben.
+%
+% Da die Verwendung der Befehle \cs{index} und \cs{label} nach Überschriften
+% dazu führt, dass \cs{addvspace} nicht mehr richtig verendet werden kann,
+% wird hier etwas gebastelt, damit das trotzdem funktioniert. Dabei wird
+% einfach bei der verwendung der genannten Befehle der zuvor gesetzte vertikale
+% Abstand in \cs{tud@lastskip} gesichert.
+% \begin{macrocode}
+\newskip\tud@lastskip
+\pretocmd{\index}{\tud@lastskip=\lastskip}{}{\tud@patch@wrn{index}}
+\pretocmd{\label}{\tud@lastskip=\lastskip}{}{\tud@patch@wrn{label}}
+\NewDocumentCommand\printdeclarationlist{!s !d()}{%
+ \ifx\tud@declaration@list\relax\else%
+ \ifhmode%
+ \vskip\medskipamount%
+ \else%
+% \end{macrocode}
+% Im vertikalen modus wird dann einfach vom eigentlich gewünschten Abstand der
+% durch \cs{label} bzw. \cs{index} erzwungene vertikale Freiraum abgezogen.
+% Sollte dann noch ein positiver Wert bestehen, wird dieser einfach zusätzlich
+% gesetzt.
+% \begin{macrocode}
+ \@tempskipa=\glueexpr\medskipamount-\tud@lastskip\relax%
+ \ifdim\@tempskipa>\z@\relax%
+ \addpenalty{\@beginparpenalty}%
+ \addvspace{\@tempskipa}%
+ \fi%
+ \fi%
+% \end{macrocode}
+% Anschließend wird die Länge auf jeden Fall zurückgesetzt.
+% \begin{macrocode}
+ \global\tud@lastskip=\z@%
+ \@afterindentfalse\@afterheading%
+ \@tud@declaretrue\@openindextrue%
+% \end{macrocode}
+% Die deklarierten Optionen, Umgebungen, Befehle etc. werden umrahmt. Dabei
+% erfolgt die Ausgabe mithilfe einer Box, um die Größe des Deklarationsrahmens
+% zu speichern und die Änderungsmarkierung am Seitenrand auf die richtige Höhe
+% zu platzieren. Da innerhalb von Tabellen der Wert von \cs{baselineskip} auf
+% \makeatletter\the\z@\makeatother~gesetzt wird, muss für einen richtig
+% platzierten Link dieser in \cs{HyperRaiseLinkDefault} gesichert werden.
+% \begin{macrocode}
+ \def\@tempa##1{\ignorespaces##1\tabularnewline}%
+ \edef\HyperRaiseLinkDefault{\the\baselineskip}%
+ \sbox\z@{%
+ \begin{tabular}{|l|}%
+ \hline%
+ \forlistloop\@tempa{\tud@declaration@list}%
+ \hline%
+ \end{tabular}%
+ }\usebox\z@%
+ \@tud@declarefalse%
+% \end{macrocode}
+% Danach werden ggf. die Voreinstellungen und Zusatzinformationen in etwas
+% kleinerer Schrift gesetzt.
+% \begin{macrocode}
+ \ifboolexpr{bool {@tud@preset@list} or bool {@tud@additional@list}}{%
+ \def\@tempa##1{\small\ignorespaces##1\tabularnewline}%
+ \hskip1.2em%
+ \if@tud@preset@list%
+ \begin{tabular}{@{}l@{}}%
+ \forlistloop\@tempa{\tud@preset@list}%
+ \end{tabular}%
+ \hspace{\tabcolsep}%
+ \fi%
+ \if@tud@additional@list%
+ \begin{tabular}{@{}l@{}}%
+ \forlistloop\@tempa{\tud@additional@list}%
+ \end{tabular}%
+ \fi%
+ }{}%
+% \end{macrocode}
+% Alle für die Deklaration verwendeten Listen werden nach ihrer Abarbeitung
+% zurückgesetzt.
+% \begin{macrocode}
+ \global\let\tud@declaration@list\relax%
+ \global\let\tud@preset@list\relax%
+ \global\let\tud@additional@list\relax%
+ \global\@tud@preset@listfalse%
+ \global\@tud@additional@listfalse%
+% \end{macrocode}
+% Die Einträge in der Änderungsliste sowie die dazugehörige Randnotiz werden
+% innerhalb der Deklaration mit \cs{printchangedatlist} erzeugt. Das optionale
+% Argument sorgt für die Verschiebung der Randnotiz auf die richtige Höhe, um
+% den Höhenversatz zwischen Randnotiz und Deklarationsrahmen auszugleichen.
+% \begin{macrocode}
+ \print@changedatlist{#1}{%
+ \dimexpr.5\ht\strutbox+.5\dp\strutbox-.5\ht0-.5\dp0\relax%
+ }%
+% \end{macrocode}
+% Zum Schluss wird das optionale Argument (in runden Klammern) neben der
+% Deklarationsbox ausgegeben.
+% \begin{macrocode}
+ \IfValueT{#2}{#2}%
+ \par\nobreak%
+ \vskip\medskipamount%
+ \@afterindentfalse\@afterheading%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \label
+% \end{macro}^^A \index
+% \end{length}^^A \tud@lastskip
+% \end{macro}^^A \printdeclarationlist
+% \begin{macro}{\printobsoletelist}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% Damit werden Deklarationen der Umgebung \env{Obsolete} ausgegeben.
+% \begin{macrocode}
+\newcommand*\printobsoletelist{%
+ \@tud@obsoletetrue%
+ \printdeclarationlist*%
+ \@tud@obsoletefalse%
+}
+% \end{macrocode}
+% \end{macro}^^A \printobsoletelist
+% \begin{macro}{\printchangedatlist}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% Damit werden Änderungsnotizen der Umgebungen \env{Declaration*}, \env{Bundle}
+% und \env{Bundle*} ausgegeben.
+% \begin{macrocode}
+\NewDocumentCommand\printchangedatlist{!s !O{\z@}}{%
+ \print@changedatlist{#1}{#2}%
+}
+% \end{macrocode}
+% \end{macro}^^A \printchangedatlista
+%
+% \iffalse
+%</class>
+% \fi
+%
+% \subsection{Markup von Klassen, Paketen, Optionen und weiteren Elementen}
+%
+% Es folgen die Definitionen für Befehle und Umgebungen für Klasse und Paket,
+% welche sich überschneidenden und für beide benötigt werden. Allerdings sind
+% diese für Klasse und Paket in ihrer Implementierung teilweise unterschiedlich.
+%
+% Als erstes werden für Klasse und Paket einige Hilfmakros definiert.
+%
+% \begin{macro}{\bsc}
+% \changes{v2.02}{2014/07/22}{\cs{newrobustcmd} aus \pkg{etoolbox} anstatt
+% \cs{DeclareRobustCommand}}^^A
+% Eine einfacher zu verwendende Kurzform.
+% \begin{macrocode}
+\newrobustcmd*\bsc{\@backslashchar}
+% \end{macrocode}
+% \end{macro}^^A \bsc
+% \begin{macro}{\suffix}
+% \changes{v2.05}{2015/10/27}{neu}^^A
+% Für alle möglichen, zusätzlichen Informationen bei Deklarationen, im Index
+% oder der normalen in Ausgabe im Fließtext wird eine etwas kleinere Schrift
+% verwendet.
+% \begin{macrocode}
+\newrobustcmd*\suffix[1]{\begingroup~\scriptsize(#1)\endgroup}
+% \end{macrocode}
+% \end{macro}^^A \suffix
+% \begin{macro}{\NewExpandableDocumentCommand}
+% \changes{v2.02}{2014/11/04}{neu}^^A
+% \changes{v2.05i}{2017/03/12}{wird mittlerweile von \pkg{xparse} definiert}^^A
+% Für Labels, Index- und Änderungs- sowie PDF-Outline-Einträge etc. müssen ganz
+% bestimmte Markup-Befehle durch eine expandierbare Version ersetzt werden. Um
+% dies möglichst einfach zu gestalten, wird \cs{NewExpandableDocumentCommand}
+% definiert.
+% \begin{macrocode}
+\providecommand*\NewExpandableDocumentCommand[3]{%
+ \NewDocumentCommand#1{#2}{}%
+ \DeclareExpandableDocumentCommand#1{#2}{#3}%
+}
+% \end{macrocode}
+% \end{macro}^^A \NewExpandableDocumentCommand
+%
+% \subsubsection{Definition der Markup-Befehle}
+%
+% \changes{v2.05}{2015/11/02}{Markup-Befehle komplett überarbeitet}^^A
+%
+% Im Folgenden werden allerhand Befehle mit Hilfe des Paketes \pkg{xparse}
+% definiert, um bestimmte Begriffe, Klassen, Pakete, Optionen, Umgebungen,
+% Befehle, Parameter, Bezeichner, Längen, Schriftelemente und Farben speziell
+% auszuzeichnen. Diese Befehle lauten für Klasse und Paket aus Gründen der
+% Konsistenz zwar gleich, unterschieden sich jedoch ein klein wenig in der
+% Implementierung.
+%
+% Die Sternversion all dieser Befehlen tragen nichts in den Index ein. Für
+% (fast) alle der folgenden Befehle gilt, dass diese mit zwei optionalen
+% Argumenten am Ende genutzt werden können. Sollte ein Label existieren, wird
+% automatisch ein Hyperlink erzeugt, welcher mit der optionalen Angabe von
+% |'|\meta{Referenzvariante}|'| um einen textuellen Querverweis ergänzt werden
+% kann. Mit \verb=|=\meta{Indexmarkup}\verb=|= kann die Erscheinung im Index
+% angepasst werden. Bei einigen Befehlen kann zusätzlich zuvor im Markup mit
+% dem optionalen Argument \parg{Bundleelement} die Zuweisung auf ein bestimmtes
+% Paket oder eine Klasse aus dem \TUDScript-Bundle erfolgen.
+%
+% Die eigentliche Behandlung erfolgt mit dem Befehl \cs{Process@Markup},
+% welcher die tatsächliche Auszeichnung im Fließtext bzw. als Deklaration
+% übernimmt. Das Auszeichnungsformat wird dafür zuvor mit \cs{Markup@SetFormat}
+% festgelegt. Ein Eintrag in den Index wird mit \cs{Process@Index} realisiert.
+% Für die Änderungsliste wird der Befehl \cs{Process@ChangedAt} genutzt, um die
+% entsprechende Formatierung zu gewährleisten, wobei dies nur für die Klasse
+% \cls{tudscrmanual} und nicht für das Paket \pkg{tudscrtutorial} gilt.
+%
+% \begin{macro}{\ProcessorKeyVal}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% \begin{macro}{\tud@keyval@error}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% Bei Optionen und Parametern können spezielle Werte einfach im Hauptargument
+% durch |=| getrennt angegeben werden. Um diese auszuwerten, wird dieser Befehl
+% definiert, welcher als Argumentprozessor verwendet wird.
+% \begin{macrocode}
+\newcommand*\ProcessorKeyVal[1]{%
+ \begingroup%
+ \in@{=}{#1}%
+% \end{macrocode}
+% Wird im Argument ein |=| gefunden, so wird alles Darauffolgende als Wert
+% erkannt und dem eigentlichen Hauptargument bei der Ausgabe angehangen. Das
+% Makro, welches diesen Argumentprozessor verwendet, erhält als Ausgabe also
+% entweder \marg{Schlüssel} oder \marg{Schlüssel}|=|\meta{Wert}|=| falls
+% \cs{ProcessorKeyVal} mit \marg{Schlüssel=Wert} verwendet wurde.
+% \begin{macrocode}
+ \ifin@%
+ \def\@tempa##1=##2\@nil{\toks@{{##1}=##2=}}%
+ \else%
+ \def\@tempa##1\@nil{\toks@{{##1}}}%
+ \fi%
+ \@tempa#1\@nil%
+ \edef\tud@reserved{%
+ \noexpand\endgroup%
+ \def\noexpand\ProcessedArgument{\the\toks@}%
+ }%
+ \tud@reserved%
+}
+% \end{macrocode}
+% Es gibt auch noch eine interne Variante für ein optioneles Werte-Argument.
+% Dabei sollte vermieden werden, dass im Markup das Argument für einen Wert
+% doppelt angegeben wird. In diesem Fall wird dieser Fehler ausgegeben.
+% \begin{macrocode}
+\newcommand*\tud@keyval@error{%
+%<*class>
+ \ClassError{tudscrmanual}%
+%</class>
+%<*package>
+ \PackageError{tudscrtutorial}%
+%</package>
+ {Wrong usage of optional argument for value}%
+ {There are two optional arguments for a value given!}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@keyval@error
+% \end{macro}^^A \ProcessorKeyVal
+% \begin{environment}{Bundle}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% \begin{macro}{\tud@bdl@curr}
+% \changes{v2.05}{2015/08/04}{neu}^^A
+% \begin{macro}{\tud@bdl@dflt}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% \begin{macro}{\tud@if@bdl}
+% \changes{v2.05}{2015/08/04}{neu}^^A
+% Die Umgebung \env{Bundle} kann nicht verschachtelt werden und prüft zuerst
+% dementsprechend die Verwendung. Anschließend wird lediglich das Makro
+% \cs{tud@bdl@curr} auf das übergebene Argument gesetzt, um innerhalb der
+% Umgebung erstellte Label und Indexeinträge zu beeinflussen.
+% \begin{macrocode}
+\newenvironment{Bundle}[1]{%
+ \tud@if@bdl{%
+%<*class>
+ \ClassError{tudscrmanual}%
+%</class>
+%<*package>
+ \PackageError{tudscrtutorial}%
+%</package>
+ {Nested environment `Bundle'}{%
+ It is not possible to nest this environment, when\MessageBreak%
+ a cross-label was given before.%
+ }%
+ }{%
+ \gdef\tud@bdl@curr{#1}%
+ }%
+ \ignorespaces%
+}{%
+ \global\let\tud@bdl@curr\tud@bdl@dflt%
+ \aftergroup\ignorespaces%
+}
+% \end{macrocode}
+% Diese Makros werden für das Definieren eines Bundle-Elements und ggf. das
+% Prüfen des selbigen benötigt.
+% \ToDo{Suffixe wie Klasse, Paket etc. lokalisieren (locale)}[v2.??]
+% \begin{macrocode}
+\newcommand*\tud@bdl@curr{}
+\newcommand*\tud@bdl@dflt{tudscr}
+\let\tud@bdl@curr\tud@bdl@dflt
+\newcommand*\tud@if@bdl[2]{\ifstr{\tud@bdl@curr}{\tud@bdl@dflt}{#2}{#1}}
+% \end{macrocode}
+% \end{macro}^^A \tud@if@bdl
+% \end{macro}^^A \tud@bdl@dflt
+% \end{macro}^^A \tud@bdl@curr
+% \end{environment}^^A Bundle
+% \begin{macro}{\Application}
+% \changes{v2.02}{2014/10/08}{überarbeitet}^^A
+% \begin{macro}{\@Application}
+% Die Auszeichnung und der Indexeintrag einer Anwendungssoftware.
+% \begin{macrocode}
+\NewExpandableDocumentCommand\@Application{sm}{#2}
+\NewDocumentCommand\Application{s m !d() !d<> !d||}{%
+ \Markup@SetFormat{\sbsfont}%
+ \IfValueTF{#4}{%
+ \Process@Markup{\Application{#2}}(#3)<#4>%
+ }{%
+ \Process@Markup{\Application{#2}}(#3)%
+ }%
+ \Process@Index{#1}{\Application{#2}}[Anwendungssoftware](#3)|#5|%
+}
+% \end{macrocode}
+% \end{macro}^^A \@Application
+% \end{macro}^^A \Application
+% \begin{macro}{\Distribution}
+% \changes{v2.02}{2014/10/08}{überarbeitet}^^A
+% \begin{macro}{\@Distribution}
+% Die Auszeichnung und der Indexeintrag einer \LaTeX-Distribution. Das
+% optionale Argument kann für das Anhängen einer Versionsnummer o.\,ä. im
+% Fließtext genutzt werden.
+% \begin{macrocode}
+\NewExpandableDocumentCommand\@Distribution{sm}{#2}
+\NewDocumentCommand\Distribution{s m !o !d() !d||}{%
+ \Markup@SetFormat{\sbnfont}%
+ \IfValueTF{#3}{%
+ \Process@Markup{\Distribution{#2}}[~#3](#4)%
+ }{%
+ \Process@Markup{\Distribution{#2}}(#4)%
+ }%
+ \Process@Index{#1}{\Distribution{#2}}[Distribution](#4)|#5|%
+}
+% \end{macrocode}
+% \end{macro}^^A \@Distribution
+% \end{macro}^^A \Distribution
+% \begin{macro}{\Engine}
+% \changes{v2.05}{2015/11/04}{neu}^^A
+% \begin{macro}{\@Engine}
+% \changes{v2.05}{2015/11/04}{neu}^^A
+% Die Auszeichnung und der Indexeintrag für ein bestimmtes Textsatzsystem.
+% \begin{macrocode}
+\NewExpandableDocumentCommand\@Engine{sm}{#2}
+\NewDocumentCommand\Engine{s m !d() !d||}{%
+ \Markup@SetFormat{\sbnfont}%
+ \Process@Markup{\Engine{\hologo{#2}}}(#3)%
+ \Process@Index{#1}{\Engine{#2}}[Textsatzsystem](#3)|#4|%
+}
+% \end{macrocode}
+% \end{macro}^^A \@Engine
+% \end{macro}^^A \Engine
+% \begin{macro}{\Path}
+% Pfade werden ohne zusätzliches Markup ausgegeben.
+% \begin{macrocode}
+\newrobustcmd*\Path[1]{\mbox{\texttt{#1}}}
+% \end{macrocode}
+% \end{macro}^^A \Path
+% \begin{macro}{\File}
+% \changes{v2.02}{2014/10/08}{überarbeitet}^^A
+% \begin{macro}{\@File}
+% Die Auszeichnung und der Indexeintrag einer Datei.
+% \begin{macrocode}
+\NewExpandableDocumentCommand\@File{sm}{#2}
+\NewDocumentCommand\File{s m !d() !d||}{%
+ \Markup@SetFormat{\sbnfont}%
+ \Process@Markup{\File{#2}}(#3)%
+ \Process@Index{#1}{\File{#2}}[Datei](#3)|#4|%
+}
+% \end{macrocode}
+% \end{macro}^^A \@File
+% \end{macro}^^A \File
+% \begin{macro}{\Class}
+% \changes{v2.02}{2014/10/08}{überarbeitet}^^A
+% \begin{macro}{\@Class}
+% Die Auszeichnung und der Indexeintrag einer Klasse. Das optionale Argument
+% zwischen Apostrophen kann für die Formatierung eines Querverweises im Text
+% genutzt werden, das optionale Argument zwischen senkrechten Strichen dient
+% der Formatierung des Indexeintrages.
+% \begin{macrocode}
+\NewExpandableDocumentCommand\@Class{sm}{#2}
+\NewDocumentCommand\Class{s m !d() !d'' !d||}{%
+%<*class>
+ \if@tud@changedat%
+ \Process@ChangedAt{\Class{#2}}[Klasse]%
+ \else%
+%</class>
+ \Markup@SetFormat{\sbnfont}%
+ \Process@Markup{\Class{#2}}(#3)'#4'%
+ \Process@Index{#1}{\Class{#2}}[Klasse](#3)|#5|%
+%<*class>
+ \fi%
+%</class>
+}
+% \end{macrocode}
+% \end{macro}^^A \@Class
+% \end{macro}^^A \Class
+% \begin{macro}{\Package}
+% \changes{v2.02}{2014/07/10}{Ausgabe für Änderungsliste hinzugefügt}^^A
+% \begin{macro}{\@Package}
+% Für die Auszeichnungen von Paketen gelten vorherigen Aussagen äquivalent.
+% Für Pakete wird ergänzend ein Hyperlink auf CTAN erzeugt, wenn für dieses
+% kein Label im Dokument besteht. Genaueres ist der Beschreibung und Definition
+% von \cs{Process@Markup} zu entnehmen. Das optionale Argument in einfachen
+% Guillemets dient zum Anpassen des CTAN-Links, welcher normalerweise aus
+% obligatorischen Argument generiert wird.
+% \begin{macrocode}
+\NewExpandableDocumentCommand\@Package{sm}{#2}
+\NewDocumentCommand\Package{s m !d() !d<> !d'' !d||}{%
+%<*class>
+ \if@tud@changedat%
+ \Process@ChangedAt{\Package{#2}}[Paket]%
+ \else%
+%</class>
+ \Markup@SetFormat{\sbnfont}%
+ \IfValueTF{#4}{%
+ \Process@Markup{\Package{#2}}(#3)<#4>'#5'%
+ }{%
+ \Process@Markup{\Package{#2}}(#3)<#2>'#5'%
+ }%
+ \Process@Index{#1}{\Package{#2}}[Paket](#3)|#6|%
+%<*class>
+ \fi%
+%</class>
+}
+% \end{macrocode}
+% \end{macro}^^A \@Package
+% \end{macro}^^A \Package
+% \begin{macro}{\Option}
+% \changes{v2.02}{2014/10/08}{überarbeitet}^^A
+% \begin{macro}{\Option@Value}
+% \changes{v2.05}{2015/11/02}{neu}^^A
+% \begin{macro}{\@Option}
+% \changes{v2.02}{2014/11/02}{neu}^^A
+% Im Gegensatz zu den vorherigen Befehlen, kann im Hauptargument ein spezieller
+% Wert für eine Option optional durch ein |=| getrennt angegeben werden. Durch
+% den Argumentprozessor \cs{ProcessorKeyVal} wird dieses vom eigentlichen
+% Schlüssel getrennt. Dabei wird der gegebene Schlüssel immer in der Form
+% \marg{Schlüssel} ausgegeben. Sollte ein optionaler Wert gegeben worden sein,
+% wird dieser in der Form |=|\meta{Wert}|=| einfach angehängt und als optionales
+% Argument von \cs{Option@Value} weiter verarbeitet. Mit dem optionalen Argument
+% in runden Klammern kann ggf. auf eine Option aus einem \TUDScript-Paket
+% verwiesen werden.
+% \begin{macrocode}
+\NewExpandableDocumentCommand\@Option{sm}{#2}
+\NewDocumentCommand\Option{s >{\ProcessorKeyVal}m !d== !d() !d'' !d||}{%
+ \Option@Value{#1}#2=#3=(#4)'#5'|#6|%
+}
+% \end{macrocode}
+% Für die interne Verwendung kann das optionale Argument für den Wert auch
+% direkt mit |=|\meta{Wert}|=| angehangen werden. Um die gleichzeitige
+% Verwendung beider Varianten zu unterdrücken, wird in diesem Fall ein Fehler
+% erzeugt.
+% \ToDo{%
+% Eigentlich sollte der Wert hier formatiert werden. Wünschenswert wäre die
+% Angabe von \val{Option=Wert} und \val{Option=<Spezialwert>}, damit das
+% Gezerre mit der Spezialbehandlung von \cs{PSet} etc. wegfallen könnte,
+% siehe \cs{tud@declare@start}
+% }[v2.??]%
+% \begin{macrocode}
+\NewDocumentCommand\Option@Value{mmd==d==d()d''d||}{%
+ \IfValueT{#4}{\tud@keyval@error}%
+%<*class>
+ \if@tud@changedat%
+ \Process@ChangedAt{\Option{#2}}=#3=[Option](#5)%
+ \else%
+%</class>
+ \Markup@SetFormat{\ttfamily}%
+ \Process@Markup{\Option{#2}}=#3=(#5)'#6'%
+ \Process@Index{#1}{\Option{#2}}=#3=(#5)|#7|%
+%<*class>
+ \fi%
+%</class>
+}
+% \end{macrocode}
+% \end{macro}^^A \@Option
+% \end{macro}^^A \Option@Value
+% \end{macro}^^A \Option
+% \begin{macro}{\Environment}
+% \changes{v2.02}{2014/10/08}{überarbeitet}^^A
+% \begin{macro}{\@Environment}
+% \changes{v2.02}{2014/11/02}{neu}^^A
+% Bei diesem Makro dient das optionale Argument für die Ausgabe der möglichen
+% Umgebungsargumente bzw. -parameter \emph{bei der Deklaration}.
+% \begin{macrocode}
+\NewExpandableDocumentCommand\@Environment{sm}{#2}
+\NewDocumentCommand\Environment{s m !o !d() !d'' !d||}{%
+%<*class>
+ \if@tud@changedat%
+ \Process@ChangedAt{\Environment{#2}}[Umgebung](#4)%
+ \else%
+%</class>
+% \end{macrocode}
+% Außerdem wird für den Fall, dass der \cs{Environment}-Befehl innerhalb der
+% Umgebung \env{Declaration} verwendet wird, eine spezielle Ausgabe erzeugt.
+% Nur hier kommt das optionale Argument von \cs{Markup@SetFormat} nach dem
+% Hauptargument zum Tragen. Die resultierende Ausgabe hat die Gesatlt:
+%
+% \begin{tabular}{l}%
+% \cs{begin}\marg{Umgebung}\tabularnewline
+% \dots\tabularnewline
+% \cs{end}\marg{Umgebung}\tabularnewline
+% \end{tabular}%
+% \begin{macrocode}
+ \Markup@SetFormat{\ttfamily}(%
+ \ttfamily\bsc{}begin\textbraceleft#2\textbraceright\IfValueT{#3}{#3}%
+ \tabularnewline\ttfamily\dots%
+ \tabularnewline\ttfamily\bsc{}end\textbraceleft#2\textbraceright%
+ )%
+ \Process@Markup{\Environment{#2}}[#3](#4)'#5'%
+ \Process@Index{#1}{\Environment{#2}}[Umgebung](#4)|#6|%
+%<*class>
+ \fi%
+%</class>
+}
+% \end{macrocode}
+% \end{macro}^^A \@Environment
+% \end{macro}^^A \Environment
+% \begin{macro}{\Macro}
+% \changes{v2.02}{2014/10/08}{überarbeitet}^^A
+% \begin{macro}{\@Macro}
+% \changes{v2.02}{2014/11/02}{neu}^^A
+% Die Auszeichnung und der Indexeintrag eines Befehls. Das ordinäre optionale
+% Argument ist für das Anhängen von Parametern o.\,ä. nach dem eigentlichen
+% Makro zu verwenden. Das optionale Argument in runden Klammern dient dem
+% Hyperlink zu einem Befehl aus einem anderen Paket oder einer anderen Klasse
+% aus dem \TUDScript-Bundle.
+% \begin{macrocode}
+\NewExpandableDocumentCommand\@Macro{sm}{#2}
+\NewDocumentCommand\Macro{s m !o !d() !d'' !d||}{%
+%<*class>
+ \if@tud@changedat%
+ \Process@ChangedAt{\Macro{#2}}[Befehl](#4)%
+ \else%
+%</class>
+ \Markup@SetFormat[\bsc]{\ttfamily}%
+ \Process@Markup{\Macro{#2}}[#3](#4)'#5'%
+ \Process@Index{#1}{\Macro{#2}}(#4)|#6|%
+%<*class>
+ \fi%
+%</class>
+}
+% \end{macrocode}
+% \end{macro}^^A \@Macro
+% \end{macro}^^A \Macro
+% \begin{macro}{\Length}
+% \changes{v2.02}{2014/10/08}{überarbeitet}^^A
+% \begin{macro}{\@Length}
+% Die Auszeichnung und der Indexeintrag einer \LaTeX-Länge.
+% \begin{macrocode}
+\NewExpandableDocumentCommand\@Length{sm}{#2}
+\NewDocumentCommand\Length{s m !d() !d'' !d||}{%
+%<*class>
+ \if@tud@changedat%
+ \Process@ChangedAt{\Length{#2}}[L\"ange](#3)%
+ \else%
+%</class>
+ \Markup@SetFormat[\bsc]{\ttfamily}[L\"ange]%
+ \Process@Markup{\Length{#2}}(#3)'#4'%
+ \Process@Index{#1}{\Length{#2}}[L\"ange](#3)|#5|%
+%<*class>
+ \fi%
+%</class>
+}
+% \end{macrocode}
+% \end{macro}^^A \@Length
+% \end{macro}^^A \Length
+% \begin{macro}{\Counter}
+% \changes{v2.02}{2014/10/08}{überarbeitet}^^A
+% Die Auszeichnung und der Indexeintrag einer \LaTeX-Zählers.
+% \begin{macrocode}
+\NewExpandableDocumentCommand\@Counter{sm}{#2}
+\NewDocumentCommand\Counter{s m !d() !d'' !d||}{%
+%<*class>
+ \if@tud@changedat%
+ \Process@ChangedAt{\Counter{#2}}[Z\"ahler](#3)%
+ \else%
+%</class>
+ \Markup@SetFormat{\ttfamily}[Z\"ahler]%
+ \Process@Markup{\Counter{#2}}(#3)'#4'%
+ \Process@Index{#1}{\Counter{#2}}[Z\"ahler](#3)|#5|%
+%<*class>
+ \fi%
+%</class>
+}
+% \end{macrocode}
+% \end{macro}^^A \Counter
+%
+% \iffalse
+%<*class>
+% \fi
+%
+% \minisec{Exklusive Auszeichnungen für die Klasse}
+% Alle weiteren Befehle werden ausschließlich für die Klasse \cls{tudscrmanual}
+% definiert.
+%
+% \begin{macro}{\Key}
+% \changes{v2.02}{2014/10/08}{überarbeitet}^^A
+% \begin{macro}{\Key@Value}
+% \changes{v2.05}{2015/11/02}{neu}^^A
+% \begin{macro}{\@Key}
+% Die Auszeichnung und der Indexeintrag eines Parameters für Umgebungen und
+% Befehle. Das erste Argument ist die Umgebung oder der Befehl, wofür der
+% Parameter gültig ist. Das zweite Argument ist der Parameter selbst. Die
+% optionale Zuweisung eines Wertes kann äquivalent zu \cs{Option} mit dem
+% Trennzeichen~|=| im Hauptargument erfolgen.
+% \ToDo{%
+% Eigentlich sollte der Wert hier formatiert werden. Die Angabe von
+% \val{Parameter=Wert} und \val{Parameter=<Spezialwert>} wäre gut, damit
+% das Gezerre mit der Spezialbehandlung von \cs{PSet} etc. wegfallen könnte,
+% siehe \cs{tud@declare@start}
+% }[v2.??]%
+% \begin{macrocode}
+\NewExpandableDocumentCommand\@Key{smm}{#2!#3}
+\NewDocumentCommand\Key{s m >{\ProcessorKeyVal}m !d== !d() !d'' !d||}{%
+ \Key@Value{#1}{#2}#3=#4=(#5)'#6'|#7|%
+}
+\NewDocumentCommand\Key@Value{mmmd==d==d()d''d||}{%
+ \IfValueT{#5}{\tud@keyval@error}%
+ \if@tud@changedat%
+ \Process@ChangedAt{\Key{#2}{#3}}=#4=[Parameter](#6)%
+ \else%
+ \Markup@SetFormat{\ttfamily}[Parameter]%
+ \Process@Markup{\Key{#2}{#3}}=#4=(#6)'#7'%
+ \Process@Index{#1}{\Key{#2}{#3}}=#4=(#6)|#8|%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \@Key
+% \end{macro}^^A \Key@Value
+% \end{macro}^^A \Key
+% \begin{macro}{\Term}
+% \changes{v2.02}{2014/10/08}{überarbeitet}^^A
+% \begin{macro}{\@Term}
+% Die Auszeichnung und der Indexeintrag eines sprachabhängigen Bezeichners.
+% \begin{macrocode}
+\NewExpandableDocumentCommand\@Term{sm}{#2}
+\NewDocumentCommand\Term{s m !d() !d'' !d||}{%
+ \if@tud@changedat%
+ \Process@ChangedAt{\Term{#2}}[Bezeichner](#3)%
+ \else%
+ \Markup@SetFormat[\bsc]{\ttfamily}[Bezeichner]%
+ \Process@Markup{\Term{#2}}(#3)'#4'%
+ \Process@Index{#1}{\Term{#2}}(#3)|#5|%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \@Term
+% \end{macro}^^A \Term
+% \begin{macro}{\PageStyle}
+% \changes{v2.02}{2014/07/25}{neu}^^A
+% \begin{macro}{\@PageStyle}
+% Die Auszeichnung und der Indexeintrag eines Seitenstils.
+% \begin{macrocode}
+\NewExpandableDocumentCommand\@PageStyle{sm}{#2}
+\NewDocumentCommand\PageStyle{s m !d() !d'' !d||}{%
+ \if@tud@changedat%
+ \Process@ChangedAt{\PageStyle{#2}}[Seitenstil](#3)%
+ \else%
+ \Markup@SetFormat{\ttfamily}[Seitenstil]%
+ \Process@Markup{\PageStyle{#2}}(#3)'#4'%
+ \Process@Index{#1}{\PageStyle{#2}}[Seitenstil](#3)|#5|%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \@PageStyle
+% \end{macro}^^A \PageStyle
+% \begin{macro}{\Font}
+% \changes{v2.02}{2014/10/08}{überarbeitet}^^A
+% \begin{macro}{\@Font}
+% Die Auszeichnung und der Indexeintrag eines Schriftelementes.
+% \begin{macrocode}
+\NewExpandableDocumentCommand\@Font{sm}{#2}
+\NewDocumentCommand\Font{s m !d() !d'' !d||}{%
+ \if@tud@changedat%
+ \Process@ChangedAt{\Font{#2}}[Schriftelement](#3)%
+ \else%
+ \Markup@SetFormat{\ttfamily}[Schriftelement]%
+ \Process@Markup{\Font{#2}}(#3)'#4'%
+ \Process@Index{#1}{\Font{#2}}[Schriftelement](#3)|#5|%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \@Font
+% \end{macro}^^A \Font
+% \begin{macro}{\Color}
+% \changes{v2.02}{2014/10/08}{überarbeitet}^^A
+% \begin{macro}{\@Color}
+% Die Auszeichnung und der Indexeintrag einer Farbe des \CDs. Das optionale
+% Argument kann sowohl bei der Deklaration als auch im Fließtext für das
+% Anhängen eines Suffix verwendet werden. Alle mit \cs{Color} ausgezeichneten
+% Farben referenzieren standardmäßig auf das Paket \pkg{tudscrcolor}.
+% \begin{macrocode}
+\NewExpandableDocumentCommand\@Color{sm}{#2}
+\NewDocumentCommand\Color{s m !o !D(){\Package{tudscrcolor}} !d'' !d||}{%
+ \if@tud@changedat%
+ \Process@ChangedAt{\Color{#2}}[Farbe](#4)%
+ \else%
+ \Markup@SetFormat{\ttfamily}[Farbe](%
+ \begingroup\ttfamily{#2\IfValueT{#3}{~(#3)}}\endgroup%
+ )%
+ \Process@Markup{\Color{#2}}[#3](#4)'#5'%
+ \Process@Index{#1}{\Color{#2}}[Farbe](#4)|#6|%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \@Color
+% \end{macro}^^A \Color
+%
+% \iffalse
+%</class>
+% \fi
+%
+% \subsubsection{Zuordnung der Markup-Befehle für Label und Index}
+%
+% \begin{macro}{\tud@attr@get}
+% \changes{v2.05}{2015/11/03}{neu}^^A
+% Der Befehl \cs{tud@attr@get} ordnet den einzelnen Markup-Befehlen ihren
+% spezifischen Präfix für ein Label oder in der Sternversion den passenden
+% Index zu. Im ersten obligatorischen Argument wird ein Makro angegeben,
+% welches die Zuordnung enthalten soll, das zweite ist der Markup-Befehl selbst.
+% \begin{macrocode}
+\NewDocumentCommand\tud@attr@get{smm}{%
+ \begingroup%
+% \end{macrocode}
+% Das temporäre Makro \cs{@tempa} definiert zunächst alle Markup-Befehle in
+% einer Gruppe neu und expandiert beim Aufruf jedes dieser lokal umdefinierten
+% Markup-Befehle~-- abhängig vom Aufruf von \cs{tud@attr@get} mit oder ohne
+% Stern~-- entweder zum Markup-Befehl passenden Index oder zum entsprechenden
+% Labelpräfix in \cs{@tempb}.
+% \begin{macrocode}
+ \def\@tempa##1##2##3{%
+ \def##1####1{%
+ \edef\@tempb{\IfBooleanTF{#1}{##2}{##3}}%
+ }%
+ }%
+ \@tempa\Application{\jobname}{app}%
+ \@tempa\Distribution{\jobname}{dst}%
+ \@tempa\Engine{\jobname}{eng}%
+ \@tempa\File{files}{fle}%
+ \@tempa\Class{files}{cls}%
+ \@tempa\Package{files}{pkg}%
+ \@tempa\Option{options}{opt}%
+ \@tempa\Environment{macros}{env}%
+ \@tempa\Macro{macros}{cmd}%
+ \@tempa\Length{misc}{len}%
+ \@tempa\Counter{misc}{cnt}%
+% \end{macrocode}
+% Da \cs{Key} mit zwei Hauptargumenten aufgerufen wird, ist nur die Expansion
+% des ersten Argumentes in \cs{@tempb} notwendig.
+% \begin{macrocode}
+%<*class>
+ \def\Key##1##2{%
+ \edef\@tempb{\IfBooleanTF{#1}{macros}{key}}%
+ }%
+ \@tempa\Term{terms}{term}%
+ \@tempa\PageStyle{elements}{pgs}%
+ \@tempa\Font{elements}{font}%
+ \@tempa\Color{elements}{clr}%
+%</class>
+% \end{macrocode}
+% Nachdem alle Markup-Befehle lokal redefiniert wurden, wird der nun angegebene
+% Befehl ausgeführt, was zum eigentlichen Definieren von \cs{@tempb} führt.
+% \begin{macrocode}
+ #3%
+% \end{macrocode}
+% Damit alle Änderungen der temporären Makros lokal bleiben, wird das Ergebnis
+% nach der Gruppe in das erste obligatorische Argument expandiert.
+% \begin{macrocode}
+ \edef\tud@reserved{%
+ \noexpand\endgroup%
+ \def\noexpand#2{\@tempb}%
+ }%
+ \tud@reserved%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@attr@get
+%
+% \subsubsection{Markup von Variablen, Parametern etc.}
+%
+% \ToDo{%
+% Verwendung der Befehle überprüfen, evtl. umbennenen. Wozu \cs{PValueName}?%
+% Evtl. sollte \cs{PValue} innerhalb von \cs{PName} lokal geändert werden?
+% Was passiert, wenn auch \cs{PName} von \cs{tud@doifPValue} akzeptiert?
+% Zeile 542--546 in tudscr-hints, 294 in tudscr-packages
+% }[v2.??]%
+% \ToDo{%
+% nach '=\cs{P(Value)?Name}' in *.tex suchen und ggf.
+% überarbeiten; \cs{PValueName} umbenennen%
+% }[v2.??]%
+% \ToDo{%
+% bei der Deklaration evtl. ein Hilfsmakro erstellen und den
+% Default-Eintrag hinterlegen, um ggf. darauf zu prüfen%
+% }[v2.??]%
+% \ToDo{%
+% neues Makro \cs{PLength} mit \cs{PName\{Längenwert\}}
+% }[v2.??]%
+% \begin{macro}{\PValue}
+% \begin{macro}{\PName}
+% \begin{macro}{\PValueName}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% \begin{macro}{\PSet}
+% \begin{macro}{\PBoolean}
+% \begin{macro}{\PBName}
+% \changes{v2.02}{2014/11/12}{neu}^^A
+% \begin{macro}{\Parameter}
+% \begin{macro}{\OParameter}
+% \begin{macro}{\LParameter}
+% \begin{macro}{\OLParameter}
+% \begin{macro}{\PParameter}
+% \begin{macro}{\POParameter}
+% \changes{v2.03}{2015/01/25}{neu}^^A
+% \begin{macro}{\textOR}
+% Diese Befehle dienen zum Auszeichnen von obligatorischen und optionalen
+% Parametern und Befehlen oder bestimmten Wertzuweisungen.
+% \begin{macrocode}
+\newrobustcmd*\PValue[1]{\mbox{\texttt{#1}}}
+\newrobustcmd*\PName[1]{\PValue{\textsl{<#1>}}}
+\newrobustcmd*\PValueName[1]{\PName{#1}}
+\newrobustcmd*\PSet{\PName{Einstellung}}
+\newrobustcmd*\PBoolean{\PName{Ein-Aus-Wert}}
+\newrobustcmd*\PBName[1]{\PBoolean\textOR\PName{#1}}
+\newrobustcmd*\Parameter[1]{%
+ \mbox{\texttt{\textbraceleft}\PName{#1}\texttt{\textbraceright}}%
+}
+\newrobustcmd*\OParameter[1]{\mbox{\texttt{[}\PName{#1}\texttt{]}}}
+\newrobustcmd*\LParameter{\mbox{\texttt{[}\PName{Parameterliste}\texttt{]}}}
+\newrobustcmd*\OLParameter[1]{%
+ \mbox{\texttt{[}\PName{#1}\textOR\PName{Parameterliste}\texttt{]}}%
+}
+\newrobustcmd*\PParameter[1]{\mbox{\texttt{\textbraceleft#1\textbraceright}}}
+\newrobustcmd*\POParameter[1]{\mbox{\texttt{[#1]}}}
+\newrobustcmd*\textOR{\PValue{\,\textbardbl\,}}
+% \end{macrocode}
+% \end{macro}^^A \textOR
+% \end{macro}^^A \POParameter
+% \end{macro}^^A \PParameter
+% \end{macro}^^A \OLParameter
+% \end{macro}^^A \LParameter
+% \end{macro}^^A \OParameter
+% \end{macro}^^A \Parameter
+% \end{macro}^^A \PBName
+% \end{macro}^^A \PBoolean
+% \end{macro}^^A \PSet
+% \end{macro}^^A \PValueName
+% \end{macro}^^A \PName
+% \end{macro}^^A \PValue
+% \begin{macro}{\tud@doifPValue}
+% \changes{v2.05}{2015/11/14}{neu}^^A
+% Der Befehl wird von den Makros \cs{tud@lbl@get@curr} und \cs{tud@idx@get}
+% genutzt, um bedingten Quelltext auszuführen, falls im ersten obligatorischen
+% Argument entweder Parameter entweder direkt oder aber mit einem der beiden
+% Parameter-Markup-Befehle \cs{PValue} oder \cs{PValueName} angegeben wurde.
+% Alle anderen Auszeichnungsbefehle für Parameter sollen ingnoriert werden.
+% \begin{macrocode}
+\newcommand*\tud@doifPValue[3][]{%
+ \IfValueT{#2}{%
+ \begingroup%
+% \end{macrocode}
+% Zunächst wird der Inhalt fast aller ausgezeichneten Parameter unterdrückt.
+% Lediglich das Argument der beiden Makros \cs{PValue} und \cs{PValueName} wird
+% durchgereicht.Dies wird bei der Generierung von Labeln sowie der Erstellung
+% für Einträge im Index und der Änderungsliste benötigt, um die Angabe von
+% speziellen Werten bei Schlüsseln zu erhalten.
+% \begin{macrocode}
+ \let\PValue\@firstofone%
+ \let\PName\@gobble%
+ \let\PValueName\@firstofone%
+ \let\PSet\@empty%
+ \let\PBoolean\@empty%
+ \let\PBName\@gobble%
+ \let\Parameter\@gobble%
+ \let\OParameter\@gobble%
+ \let\LParameter\@empty%
+ \let\OLParameter\@gobble%
+ \let\PParameter\@gobble%
+ \let\POParameter\@gobble%
+ \let\textOR\relax%
+ \let\emph\@firstofone%
+% \end{macrocode}
+% Im optionalen Argument können weitere Angaben gemacht werden, um zum Beispiel
+% weitere lokale Redefinitionen vorzunehmen.
+% \begin{macrocode}
+ #1%
+% \end{macrocode}
+% Falls tatsächlich ein passendes Argument angegeben wurde, wird der Quelltext
+% des zweiten obligatorischen Argumentes ausgeführt. Es ist zu beachten, dass
+% dieser \emph{expandiert} wird!
+% \begin{macrocode}
+ \ifxblank{#2}{%
+ \let\tud@reserved\endgroup%
+ }{%
+ \protected@edef\tud@reserved{\noexpand\endgroup#3}%
+ }%
+ \tud@reserved%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@doifPValue
+% \begin{macro}{\Markup@Gobble}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% Dieser Befehl definiert alle Markup-Befehle in der Form um, dass diese nur
+% noch das eigentliche Hauptargument unformatiert durchreichen. Dies wird für
+% die Erstellung von Label und Indexeinträgen benötigt. Die Sternversion führt
+% dies auch noch für die Auszeichnung von Parametern etc. durch.
+% \begin{macrocode}
+\NewDocumentCommand\Markup@Gobble{s}{%
+ \let\Application\@Application%
+ \let\Distribution\@Distribution%
+ \let\Engine\@Engine%
+ \let\File\@File%
+ \let\Class\@Class%
+ \let\Package\@Package%
+ \let\Option\@Option%
+ \let\Environment\@Environment%
+ \let\Macro\@Macro%
+ \let\Length\@Length%
+ \let\Counter\@Counter%
+%<*class>
+ \let\Key\@Key%
+ \let\Term\@Term%
+ \let\PageStyle\@PageStyle%
+ \let\Font\@Font%
+ \let\Color\@Color%
+%</class>
+ \IfBooleanF{#1}{%
+ \let\PValue\@firstofone%
+ \let\PName\@firstofone%
+ \let\PValueName\@firstofone%
+ \let\PSet\relax%
+ \let\PBoolean\relax%
+ \let\PBName\@firstofone%
+ \let\Parameter\@firstofone%
+ \let\OParameter\@firstofone%
+ \let\LParameter\relax%
+ \let\OLParameter\@firstofone%
+ \let\PParameter\@firstofone%
+ \let\POParameter\@firstofone%
+ \let\textOR\relax%
+ \let\hologoRobust\@firstofone%
+ \def\_{-}%
+ \protected\def~{~}%
+ }%
+}
+% \end{macrocode}
+% Mit dem zuvor definierten Makro \cs{Markup@Gobble} wird gleich dafür Sorge
+% getragen, dass die Auszeichnungsbefehle für PDF-Outline-Einträge korrekt
+% funktionieren.
+% \begin{macrocode}
+\AfterPackage*{hyperref}{%
+ \expandafter\pdfstringdefDisableCommands\expandafter{\Markup@Gobble}%
+}
+% \end{macrocode}
+% \end{macro}^^A \Markup@Gobble
+%
+% \subsubsection{Erstellung und Validierung von Labeln}
+%
+% \begin{macro}{\tud@lbl@tmp}
+% \changes{v2.05}{2015/11/03}{neu}^^A
+% \begin{macro}{\tud@lbl@fmt}
+% \changes{v2.05}{2015/11/03}{neu}^^A
+% In \cs{tud@lbl@tmp} werden nachfolgend die durch \cs{tud@lbl@get@curr} oder
+% \cs{tud@attr@get} erzeugten (Sub-)Label gespeichert. Mit dem Hilfsmakro
+% \cs{tud@lbl@fmt} wird innerhalb der beiden Befehle \cs{tud@lbl@@create} und
+% \cs{tud@lbl@get@@curr} dafür gesorgt, dass geschützte Leerzeichen sowie
+% eingabekodierungsabhängige Zeichen korrekt für ein Label umgesetzt werden.
+% Auch durch \cs{NoCaseChange} in Überschriften geschützte Inhalte werden
+% direkt übernommen.
+% \begin{macrocode}
+\newcommand*\tud@lbl@tmp{}
+\newcommand*\tud@lbl@fmt{%
+ \def~{-}%
+ \let\IeC\@firstofone%
+ \def\"##1{##1e}%
+ \def\ss{ss}%
+ \def\dots{...}%
+ \let\NoCaseChange\@firstofone%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@lbl@fmt
+% \end{macro}^^A \tud@lbl@tmp
+% \begin{macro}{\tud@lbl@get@curr}
+% \changes{v2.05}{2015/11/03}{neu}^^A
+% \begin{macro}{\tud@lbl@get@@curr}
+% \changes{v2.05}{2015/11/03}{neu}^^A
+% Für den Befehl \cs{tud@lbl@get@curr} wird das zweite obligatorische
+% Argument (|#3|) für gewöhnlich in der Form
+% |{\Bundle|\marg{Klasse/Paket}|:\Markup|\marg{Element}|}| angegeben. Dieses
+% wird beim Einlesen direkt an die beiden Argumentprozessoren
+% \cs{SplitArgument}|{2}{:}| gefolgt von \cs{tud@lbl@create} übergeben. Danach
+% enthält das zweite obligatorische Argument ein Label der Form
+% \meta{Bundlepräfix}|:|\meta{Labelpräfix}|:|\meta{Element}. Auch die Angabe
+% eines Makros als zweites obligatorische Argument, welches das Label in der
+% richtigen Formatierung enthält, ist möglich.
+% \begin{macrocode}
+\NewDocumentCommand\tud@lbl@get@curr{%
+ sm>{\tud@lbl@create}>{\SplitArgument{2}{:}}md==%
+}{%
+% \end{macrocode}
+% Mit \cs{tud@lbl@get@@curr} wird das im zweiten obligatorischen Argument
+% (|#3|) generierte Label in das im ersten obligatorischen Argument |#2|
+% angegebenen Makro gespeichert und ggf. diesem das letzte optionale Argument
+% für einen speziellen Wert zu einem Schlüssel angehangen.
+% \begin{macrocode}
+ \tud@lbl@get@@curr#2{#3}=#4=%
+% \end{macrocode}
+% Die Sternversion von \cs{tud@lbl@get@curr} wird für das Definieren von Labeln
+% bei Deklarationen etc. genutzt. Sollte diese verwendet worden sein, ist die
+% Generierung beendet.
+% \begin{macrocode}
+%<*class>
+ \IfBooleanF{#1}{%
+% \end{macrocode}
+% Andernfalls wird geprüft, ob das erstellte Label überhaupt existiert. Sollte
+% dies nicht der Fall sein wird ein passendes Label für den gegebenen Schlüssel
+% ohne speziellen Wert gesucht.
+% \begin{macrocode}
+ \@tempswafalse%
+ \tud@if@lbl@exists{#2}{%
+ \@tempswatrue%
+ }{%
+ \IfValueT{#4}{%
+ \tud@lbl@get@@curr\tud@reserved{#3}%
+ \tud@if@lbl@exists{\tud@reserved}{%
+ \let#2\tud@reserved%
+ \@tempswatrue%
+ }{}%
+ }%
+ }%
+% \end{macrocode}
+% Wurde auch danach noch kein passendes Label gefunden, gibt es u.\,U. eine
+% letzte Möglichkeit, ein passendes Label zu finden. Wird in der Dokumentation
+% gerade ein Paket oder eine sich von den Hauptklassen unterscheidende Klasse
+% aus dem \TUDScript-Bundle erläutert (Umgebungen \env{Bundle}, \env{Bundle*}),
+% so wird eventuell auf ein Element aus ebendiesen Hauptklassen referenziert.
+% In diesem Fall wird \cs{tud@lbl@get@dflt} aufgerufen, um den Bundlepräfix
+% für das Label entsprechend zu setzen.
+% \begin{macrocode}
+ \if@tempswa\else%
+ \tud@if@bdl{\tud@lbl@get@dflt#2{#3}=#4=}{}%
+ \fi%
+ }%
+%</class>
+}
+% \end{macrocode}
+% Mit \cs{tud@lbl@get@@curr} wird das generierte Label in Makro gespeichert,
+% welches beim Aufruf von \cs{tud@lbl@get@curr} angegebenen wurde.
+% \begin{macrocode}
+\NewDocumentCommand\tud@lbl@get@@curr{mmd==}{%
+ \def#1{#2}%
+% \end{macrocode}
+% Sollte optional mit \cs{PValue} bzw. \cs{PValueName} ein spezieller Wert für
+% einen Schlüssel übergeben worden sein, wird dieser ggf. angehängt.
+% \begin{macrocode}
+ \tud@doifPValue[\tud@lbl@fmt]{#3}{\noexpand\appto\noexpand#1{=#3}}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@lbl@get@@curr
+% \end{macro}^^A \tud@lbl@get@curr
+% \begin{macro}{\tud@lbl@get@dflt}
+% \changes{v2.05}{2015/11/04}{neu}^^A
+% \begin{macro}{\tud@lbl@get@@dflt}
+% \changes{v2.05}{2015/11/04}{neu}^^A
+% Diese beiden Makros werden genutzt, um mit \cs{tud@lbl@get@curr} innerhalb
+% der Umgebungen \env{Bundle} und \env{Bundle*} für den Fall, dass ein
+% gesuchtes Label für das aktuelle Bundle-Element nicht existiert, nach diesem
+% Element in den existierenden Labels der Hauptklassen zu suchen.
+%
+% Dabei wird das bereits generierte Label durch \cs{tud@lbl@get@dflt} in
+% seine drei Hauptbestandteile zur WEiterverarbeitung zerlegt.
+% \begin{macrocode}
+\NewDocumentCommand\tud@lbl@get@dflt{m>{\SplitArgument{2}{:}}mr==}{%
+ \tud@lbl@get@@dflt{#1}#2=#3=%
+}
+% \end{macrocode}
+% Durch \cs{tud@lbl@get@@dflt} wird als erstes geprüft, ob der Bundlepräfix
+% bereits dem Standardpräfix für die Hauptklassen entspricht. Nur wenn dies
+% nicht der Fall ist, wird die Labelgenerierung abermals ausgeführt.
+% \begin{macrocode}
+\NewDocumentCommand\tud@lbl@get@@dflt{mmmmr==}{%
+ \edef\tud@reserved{\expandafter\detokenize\expandafter{\tud@bdl@dflt}}%
+ \ifstr{\tud@reserved}{#2}{}{%
+% \end{macrocode}
+% Dabei erfolgt der Aufruf logischerweise mit dem richtigen Bundlepräfix.
+% \begin{macrocode}
+ \tud@lbl@get@curr#1{\tud@bdl@dflt:#3:#4}=#5=%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@lbl@get@@dflt
+% \end{macro}^^A \tud@lbl@get@dflt
+% \begin{macro}{\tud@if@lbl@exists}
+% \changes{v2.05}{2015/11/05}{neu}^^A
+% Mit dem Befehl \cs{tud@if@lbl@exists} wird eine Fallunterscheidung bezüglich
+% der Existenz eines Labels in der Form
+% \meta{Bundlepräfix}|:|\meta{Labelpräfix}|:|\meta{Element} durchgeführt. Das
+% zu prüfende Label ist in gleicher Weise wie beim Makro \cs{tud@lbl@get@curr}
+% anzugeben. Je nachdem, ob ein existierendes Label gefunden wird oder nicht,
+% wird das zweite oder das dritte obligatorische Argument ausgeführt.
+% \begin{macrocode}
+%<*class>
+\NewDocumentCommand\tud@if@lbl@exists{%
+ >{\tud@lbl@create}>{\SplitArgument{2}{:}}m%
+}{%
+ \ifcsdef{r@#1}{%
+ \expandafter\@firstoftwo%
+ }{%
+ \expandafter\@secondoftwo%
+ }%
+}
+%</class>
+% \end{macrocode}
+% \end{macro}^^A \tud@if@lbl@exists
+% \begin{macro}{\tud@lbl@create}
+% \changes{v2.05}{2015/11/03}{neu}^^A
+% \begin{macro}{\tud@lbl@@create}
+% \changes{v2.05}{2015/11/03}{neu}^^A
+% Das Makro \cs{tud@lbl@@create} ist ein Argumentprozessor, welcher als Eingabe
+% genau drei Argumente für das Erstellen eines gültigen Labels erwartet. Er
+% wird sowohl von \cs{tud@lbl@get@curr} als auch von \cs{tud@if@lbl@exists}
+% verwendet. Vor der Nutzung von \cs{tud@lbl@create} muss das Argument zuvor
+% bereits mit \cs{SplitArgument}|{2}{:}| aufgerufen worden sein. Diese
+% Eigenheit macht die Definition von \cs{tud@lbl@create} notwendig, um das
+% Ergebnis der zuvor vorgenommenen Argumentaufspaltung verarbeiten zu können,
+% in dem dieses an \cs{tud@lbl@@create} durchgereicht wird. Eine Integration
+% der Spaltung des Argumentes in \cs{tud@lbl@create} ist aufgrund des
+% mehrmaligen rekursiven Aufrufs von \cs{tud@lbl@create} nicht möglich.
+%
+% Mit dem Argumentprozessor \cs{tud@lbl@create} wird es ermöglicht, an die
+% beiden Befehle \cs{tud@lbl@get@curr} und \cs{tud@if@lbl@exists} sowohl ein
+% einzelnes Makro, welches das Label bereits beinhaltet als auch einen
+% Markup-Befehl ggf. mit einem Bundlepräfix zu übergeben. In beiden Fällen
+% wird aus dem übergebenen Argument ein eindeutiges Label in der Form
+% \meta{Bundlepräfix}|:|\meta{Labelpräfix}|:|\meta{Element} generiert und als
+% resultierendes Argument an das aufrufenden Makro übergeben.
+% \begin{macrocode}
+\NewDocumentCommand\tud@lbl@create{m}{\tud@lbl@@create#1}
+% \end{macrocode}
+% Es gibt insgesamt vier verschiedene Varianten der Argumentenübergabe an den
+% Argumentprozessor \cs{tud@lbl@@create}.
+% \begin{description}\let\itshape\slshape
+% \item[\cs{tud@lbl@@create}]\ignorespaces%
+% |{\LabelMakro}{-NoValue-}{-NoValue-}|\strut\newline%
+% Das Label ist bereits in \cs{LabelMakro} enthalten und soll expandiert
+% werden. Dabei spielt es keine Rolle, ob die durch |:| getrennten
+% Bestandteile innerhalb des Labels schon als einfacher String oder in der
+% Markupform gegeben sind.
+% \item[\cs{tud@lbl@@create}]\ignorespaces%
+% |{-NoValue-}{\Markup|\marg{Element}|}{-NoValue-}|\strut\newline%
+% Das Label soll für ein Markupelement generiert werden, wobei in jedem
+% Fall der Inhalt aus \cs{tud@bdl@curr} als Bundlepräfix genutzt wird.
+% \item[\cs{tud@lbl@@create}]\ignorespaces%
+% |{\Class/\Package|\marg{\dots}|}|\ignorespaces%
+% |{\Markup|\marg{Element}|}{-NoValue-}|\strut\newline%
+% Das Label soll für ein Markupelement generiert werden.
+% Dabei wurde explizit ein Paket oder eine Klasse aus dem Bundle angegeben
+% oder implizit das Makro \cs{tud@bdl@curr} als Argument verwendet,
+% welches innerhalb der Umgebungen \env{Bundle} und \env{Bundle*} auf
+% das/die aktuell beschriebene Paket/Klasse gesetzt wurde.
+% \item[\cs{tud@lbl@@create}]\ignorespaces%
+% \marg{Bundlepräfix}\marg{Labelpräfix}\marg{Element}\strut\newline
+% Das Label ist bereits vollständig bestimmt und die Argumente werden
+% entweder als String oder als Markup übergeben. Auch Mischformen sind
+% möglich. In diesem Fall wird es einfach wieder zusammengesetzt. Diese
+% Variante tritt durch rekursiven Aufruf des Argumentprozessors auf.
+% \end{description}
+% \begin{macrocode}
+\NewDocumentCommand\tud@lbl@@create{mmm}{%
+ \begingroup%
+% \end{macrocode}
+% Zu Beginn werden die Markup-Befehle auf ihre expandierbaren Varianten gesetzt
+% und die zusätzlichen Redefinitionen für die Labelgenerierung aktiviert.
+% \begin{macrocode}
+ \Markup@Gobble%
+ \tud@lbl@fmt%
+% \end{macrocode}
+% Sind alle drei Bestandteile bereits vorhanden, wird das Label einfach wieder
+% zusammengesetzt.
+% \begin{macrocode}
+ \IfValueTF{#3}{%
+ \edef\@tempa{#1:#2:#3}%
+ }{%
+% \end{macrocode}
+% Hier geschieht die eigentliche Erzeugung der Labels. Dabei wird mit
+% \cs{tud@attr@get} der für den jeweiligen Markup-Befehl aus dem zweiten
+% obligatorischen Argument spezifische Labelpräfix generiert. Abhängig davon,
+% ob im ersten obligatorischen Argument ein spezieller Bundlepräfix angegeben
+% wurde, wird dieser entweder verwendet oder aber implizit auf den Inhalt aus
+% \cs{tud@bdl@dflt} zurückgegriffen.
+% \begin{macrocode}
+ \IfValueTF{#2}{%
+ \tud@attr@get\@tempb{#2}%
+ \IfValueTF{#1}{%
+ \ifxblank{#1}{%
+ \edef\@tempa{\tud@bdl@dflt:\@tempb:#2}%
+ }{%
+ \edef\@tempa{#1:\@tempb:#2}%
+ }%
+ }{%
+ \edef\@tempa{\tud@bdl@curr:\@tempb:#2}%
+ }%
+ }{%
+% \end{macrocode}
+% Wurde lediglich ein Makro angegeben, wird dieses einfach expandiert.
+% \begin{macrocode}
+ \edef\@tempa{#1}%
+ }%
+ }%
+% \end{macrocode}
+% Das Ergebnis der Labelgenrierung wurde für alle der behandelten Fälle in
+% \cs{@tempa} geschrieben. Abschließnd wird \cs{ProcessedArgument} nach der
+% Gruppe mit dessen Inhalt definiert. Dabei werden bei der Expansion die
+% catcodes aller Zeichen in Tokens der Klasse \val{other} gewandelt, um diese
+% später sicher vergleichen zu können.
+% \begin{macrocode}
+ \edef\@tempc{%
+ \noexpand\endgroup%
+ \def\noexpand\ProcessedArgument{%
+ \expandafter\detokenize\expandafter{\@tempa}%
+ }%
+ }%
+ \@tempc%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@lbl@@create
+% \end{macro}^^A \tud@lbl@create
+%
+% \subsubsection{Abarbeitung der Markup-Befehle}
+%
+% Die Festlegung des individuellen Markups der Einzelnen Elemente erfolgt bei
+% der Definition mit \cs{Markup@SetFormat}. Bei der Nutztung der Markup-Befehle
+% im Fließtext wird zum einen das in \cs{Markup@Format} individuell definierte
+% Markup umgesetzt und zum anderen wird dabei gleich automatisch ein Eintrag
+% für das Element im Index erzeugt.
+%
+% \begin{macro}{\ifdisposition}
+% \changes{v2.06}{2018/08/02}{neu}^^A
+% \begin{macro}{\if@tud@disposition}
+% \begin{macro}{\tud@sec@format}
+% Für Markup oder andere Inhalte, die lediglich im Fließtext jedoch nicht in
+% Überschriften ausgegeben werden, wird der Schalter \cs{if@tud@disposition}
+% und der dazugehörige auswertende Befehl \cs{ifdisposition} definiert. Das
+% Setzen des Schalters wird in \cs{tud@sec@format} gepatcht.
+% \begin{macrocode}
+\newif\if@tud@disposition
+\newcommand*\ifdisposition{%
+ \if@tud@disposition%
+ \expandafter\@firstoftwo%
+ \else%
+ \expandafter\@secondoftwo%
+ \fi%
+}
+\pretocmd{\tud@sec@format}{%
+ \@tud@dispositiontrue%
+}{}{\tud@patch@wrn{tud@sec@format}}
+% \end{macrocode}
+% \end{macro}^^A \tud@sec@format
+% \end{macro}^^A \if@tud@disposition
+% \end{macro}^^A \tud@if@disposition
+%
+% In der Klasse \cls{tudscrmanual} werden die Markup-Befehle zusätzlich auch
+% als Argument der Umgebung \env{Declaration} genutzt. Für diese Verwendung
+% kommt die Definiton von \cs{Markup@Declare} und ggf. \cs{Markup@Suffix} zum
+% Einsatz.
+%
+% \begin{macro}{\Process@Markup}
+% \changes{v2.02}{2014/10/08}{Markup für Index und Fließtext getrennt}^^A
+% \changes{v2.02}{2014/10/09}{Anpassung für Umgebung \env{Declaration*}}^^A
+% \changes{v2.05}{2015/11/05}{Neuimplementierung}^^A
+% \begin{macro}{\Markup@Suppress}
+% \changes{v2.05}{2015/11/05}{neu}^^A
+% \begin{macro}{\Markup@@Suppress}
+% \changes{v2.05}{2015/11/05}{neu}^^A
+% Der Befehl \cs{Process@Markup} ist das Herzstück der Auszeichnungen aller
+% Elemente. Das obligatorische Argument ist das auszuzeichnende Element selbst,
+% welches im weiteren Verlauf der Abarbeitung expandiert wird. Darauf folgen
+% mehrere optionale Argumente. Mit |=|\meta{Wert}|=| kann ein Wert für einen
+% Schlüssel angegeben werden, was aktuell von \cs{Option} und \cs{Key} genutzt
+% wird. Darauf folgend kann in einem ordinären optionalen Argument ein Suffix
+% für die Fließtextausgabe angegeben werden, was von \cs{Distribution} sowie
+% \cs{Environment}, \cs{Macro} und \cs{Color} verwendet wird.
+%
+% Mit dem optionalen Argument in runden Klammern kann eine Klasse oder ein
+% Paket aus dem \TUDScript-Bundle angegeben werden, auf welche sich das
+% aktuelle auszuzeichnende Element bezieht und ggf. das Label und der
+% Indexeintrag dementsprechend erzeugt werden sollen. Verwendet wird es mit:
+% |(\Class|\marg{Klasse}|)| oder |(\Package|\marg{Paket}|)|
+%
+% Das optionale Argument in Guillemets wird von \cs{Package} benötigt, um ggf.
+% die automatisch generierten Links auf CTAN anzupassen. Zuletzt kann mit
+% |'|\meta{Referenzvariante}|'| der automatisch erzeugte Querverweis in
+% verschiedenen Varianten formatiert werden. Der vollständige Funktionsaufruf:
+% \newline\begingroup\scriptsize
+% \cs{Process@Markup}\marg{Element}|=|\meta{Wert}|=|\ignorespaces%
+% \oarg{Ausgabesuffix}\parg{Bundleelement}\ignorespaces%
+% |<|\meta{CTAN-Paket}|>||'|\meta{Referenzvariante}|'|\ignorespaces%
+% \endgroup
+%
+% In eingen Fällen ist es beim Aufruf eines Markup-Befehls nicht erwünscht,
+% dass dieser auch tatsächlich ausgegeben wird. Für diesen Fall wird gleich zu
+% Beginn der Befehl \cs{Markup@Suppress} definiert, der dies ermöglicht.
+% \begin{macrocode}
+\newcommand*\Markup@Suppress{\let\Process@Markup\Markup@@Suppress}
+\NewDocumentCommand\Markup@@Suppress{md==od()d<>d''}{}
+% \end{macrocode}
+% Nun folgt die eigentliche Befehlsdefinition.
+% \begin{macrocode}
+\NewDocumentCommand\Process@Markup{md==od()d<>d''}{%
+% \end{macrocode}
+% Zu Beginn wird mit dem Schalter \cs{if@tud@declare} geprüft, ob die der
+% Markup-Befehl in einer der Deklarationsumgebungen oder anderweitig genutzt
+% wird. Für den ersten Fall erfolgt die Weiterverarbeitung der Argumente mit
+% \cs{Process@@MarkupDeclare}, andernfalls kommt \cs{Process@@MarkupInline} zum
+% Einsatz. Da beide Makros die gleiche Reihenfolge der Argumente verlangen,
+% wird der jeweilige Befehlsaufruf über ein Token-Register realisiert, womit
+% das Zusammensetzen der notwendigen Übergabewerte erleichtert wird.
+%
+% Die Fallunterscheidung betrifft des Weiteren die Erzeugung des Labels. Für
+% eine Deklaration wird die Sternversion von \cs{tud@lbl@get@curr} verwendet,
+% welche ein Label aus den gegebenen Argumenten zusammensetzt. Ist keine
+% Deklaration aktiv, versucht \cs{tud@lbl@get@curr} ein gültiges, schon
+% vorhandenes Label zu verwenden. Das generierte Label wird anschließend als
+% erstes Argument für das weiterverabeitende Makro genutzt.
+% \begin{macrocode}
+%<*class>
+ \if@tud@declare%
+ \tud@toks@{\Process@@MarkupDeclare}%
+ \IfValueTF{#4}{%
+ \tud@lbl@get@curr*\tud@lbl@tmp{#4:#1}=#2=%
+ }{%
+ \tud@lbl@get@curr*\tud@lbl@tmp{\tud@bdl@curr:#1}=#2=%
+ }%
+ \else%
+%</class>
+ \tud@toks@{\Process@@MarkupInline}%
+ \tud@lbl@get@curr\tud@lbl@tmp{#4:#1}=#2=%
+%<*class>
+ \fi%
+%</class>
+ \eaddto@hook\tud@toks@{\expandafter{\tud@lbl@tmp}}%
+% \end{macrocode}
+% Danach wird der Inhalt des im ersten Argument übergebenen Markup-Befehls in
+% einer Gruppe ein temporäres Makro expandiert und als zweites Argument für die
+% Weiterverarbeitung genutzt.
+% \begin{macrocode}
+ \begingroup%
+ \Markup@Gobble*%
+ \protected@edef\tud@reserved{%
+ \noexpand\endgroup%
+ \def\noexpand\tud@reserved{#1}%
+ }%
+ \tud@reserved%
+ \eaddto@hook\tud@toks@{\expandafter{\tud@reserved}}%
+% \end{macrocode}
+% Es folgen gegebenenfalls die optionalen Argument |=|\meta{Wert}|=| sowie
+% \oarg{Ausgabesuffix}~-- falls diese angegeben wurden.
+% \begin{macrocode}
+ \IfValueT{#2}{\addto@hook\tud@toks@{=#2=}}%
+ \IfValueT{#3}{\addto@hook\tud@toks@{[#3]}}%
+% \end{macrocode}
+% Erfolgt gerade eine Deklaration, wird mit dem Schalter \cs{if@openindex}
+% eigentlich unterschieden, ob ein öffnender oder ein schließender Indexeintrag
+% erzeugt werden soll. Dieser wird mit \cs{Process@@Index} erstellt. Um den
+% schließenden Indexeintrag zu erzeugen, ist die Ausführung des Hauptargumentes
+% der Deklarationsumgebung am Ende dieser notwendig. Dabei soll allerdings das
+% Markup nicht noch ein weiteres Mal ausgegeben werden. Deshalb wird der
+% Schalter hier genutzt, um lediglich zu Beginn einer Deklaration das Markup
+% auszuführen. Dabei Angaben für eine |'|\meta{Referenzvariante}|'| nicht
+% erlaubt.
+% \begin{macrocode}
+%<*class>
+ \if@tud@declare%
+ \if@openindex%
+ \IfValueT{#6}{%
+ \ClassWarning{tudscrmanual}{%
+ It is not possible to use any cross-reference\MessageBreak%
+ shorthand like '#6' within the arguments of\MessageBreak%
+ the environment `Declaration'%
+ }%
+ }%
+% \end{macrocode}
+% Für ein eventuell notwendiges Debugging, wird \cs{Process@@MarkupDeclare} mit
+% seinen Argumenten ggf. in das Log-File geschrieben.
+% \begin{macrocode}
+ \tud@trace@markup{declare}{\the\tud@toks@}%
+ \else%
+ \tud@toks@{\relax}%
+ \fi%
+% \end{macrocode}
+% Findet der Auszeichnungsbefehl außerhalb einer Umgebung für Deklarationen
+% Verwendung, werden die optionalen Argumente für einen CTAN-Link
+% |<|\meta{CTAN-Paketname}|>| sowie die Formatierung des Querverweise
+% |'|\meta{Referenzvariante}|'| hinzugefügt~-- falls vorhanden. Dies geschieht
+% jedoch nur, wenn das Markup nicht innerhalb eines Index erfolgt, da hier
+% URL-Hyperlinks und formatierte Querverweise unerwünscht sind. Mit der Angabe
+% eines leeren Argumentes |<>| wird gar kein Hyperlink erstellt.
+% \begin{macrocode}
+ \else%
+%</class>
+ \if@tud@index\else%
+ \IfValueT{#5}{%
+ \ifxblank{#5}{}{\addto@hook\tud@toks@{<http://www.ctan.org/pkg/#5>}}%
+ }%
+ \IfValueT{#6}{\addto@hook\tud@toks@{'#6'}}%
+ \fi%
+%<*class>
+% \end{macrocode}
+% Auch hier wird ggf. ein Debug-Eintrag ins Log-File geschrieben.
+% \begin{macrocode}
+ \tud@trace@markup{output}{\the\tud@toks@}%
+ \fi%
+% \end{macrocode}
+% Ganz zum Schluss wird noch für beide Fälle geprüft, ob \parg{Bundleelement}
+% angegeben wurde. Ist dies der Fall, wird zum einen das \meta{Bundleelement}
+% zur Überprüfung ggf. in das Log-File geschrieben, zum anderen wird geprüft,
+% ob für das \meta{Element} überhaupt ein Link definiert wurde, der verwendet
+% werden soll. Ist dies nicht der Fall, wird eine Warnung ausgegeben. Dies ist
+% möglich, da durch die automatische Labelgenerierung normalerweise alle nicht
+% existierenden Labels mit \meta{Bundlepräfix} auf \cs{tud@bdl@dftl} verweisen
+% müssten. Für die wenigen Fälle, in denen gezielt auf einen Querverweis
+% verzichtet werden soll, kann ein leeres Argument \parg{} angegeben werden.
+% \begin{macrocode}
+ \if@tud@index\else%
+ \IfValueT{#4}{%
+ \ifxblank{#4}{}{%
+ \tud@trace@bdl@add{#4}%
+ \ifstr{#6}{none}{}{%
+ \tud@if@lbl@exists{\tud@lbl@tmp}{}{%
+ \ClassWarning{tudscrmanual}{%
+ No existing label \tud@lbl@tmp\space for #4%
+ }%
+ }%
+ }%
+ }%
+ }%
+ \fi%
+% \end{macrocode}
+% Nun erfolgt mit \cs{Process@@MarkupDeclare} bzw. \cs{Process@@MarkupInline}
+% die Ausführung der eigentlichen Auszeichnung.
+% \begin{macrocode}
+%</class>
+ \the\tud@toks@%
+}
+% \end{macrocode}
+% \end{macro}^^A \Markup@@Suppress
+% \end{macro}^^A \Markup@Suppress
+% \end{macro}^^A \Process@Markup
+% \begin{macro}{\Process@@MarkupDeclare}
+% \changes{v2.05}{2015/11/05}{neu}^^A
+% Mit \cs{Process@@MarkupDeclare} wird die formatierte Ausgabe der Deklaration
+% realisiert. Wie diese genau gestaltet ist, wird durch \cs{tud@declare@num}
+% bestimmt. Folgende Werte sind möglich:
+% \begin{description}
+% \item[\val{0}:] Ausgabe von Markup, Erzeugen eines Labels
+% \item[\val{1}:] Ausgabe von Markup, kein Label
+% \item[\val{2}:] keine Ausgabe, aber Erzeugen eines Labels
+% \item[\val{3}:] keine Ausgabe, Erzeugen eines nach oben verschobenen Labels
+% \end{description}
+% Normalerweise kommt die erste Variante zum Einsatz. Die zweite Variante wird
+% genutzt, wenn mit mit der Umgebung \env{Obsolete} zwar eine Ausgabe aber kein
+% Label erstellt werden soll. Dies wird verwendet, um bei der Beschreibung
+% veralteter Werte oder Parameter diese im Kontext ihrer Option oder Umgebung
+% bzw. ihres Befehls anzugeben.
+%
+% Die dritte Version kommt bei Erklärungen mit der Umgebung \env{Declaration*}
+% zum Einsatz, welche im Fließtext verwendet wird und kein Markup, wohl aber
+% eine Label für das beschriebene Element erzeugt werden soll. Für die vierte
+% Variante, welche die Umgebung \env{Bundle*} betrifft, gilt dies im Prinzip
+% gleichermaßen. Allerdings wird diese Umgebung zu Beginn der Deklarationen
+% eines Bundleelements direkt nach einer Überschrift verwendet. Hier soll der
+% erzeugte Link direkt auf der Höhe der Überschrift platziert werden.
+%
+% Das erste Argument enthält das zu definierende Label, gefolgt vom Element,
+% welches ausgezeichnet werden soll. Die tatsächliche Ausgabe erfolgt mit dem
+% Makro \cs{Markup@Output}. An dieses werden die beiden optionalen Argumente
+% |=|\meta{Wert}|=| und \oarg{Ausgabesuffix} direkt weitergereicht.
+%
+% Vor der eigentlichen Ausführung wird mit \cs{Markup@CheckFormat} geprüft, ob
+% für das auszuzeichnende Element mit \cs{Markup@SetFormat} überhaupt eine
+% Ausgabeformatierung defineirt wurde. Nach der Ausgabe wird diese Formatierung
+% mit \cs{Markup@ClearFormat} zurückgesetzt.
+% \begin{macrocode}
+%<*class>
+\NewDocumentCommand\Process@@MarkupDeclare{mmd==o}{%
+ \Markup@CheckFormat%
+ \ifcase\tud@declare@num\relax%
+ \tudhyperdef{#1}%
+ \Markup@Output{#2}=#3=[#4]%
+ \or%
+ \Markup@Output{#2}=#3=[#4]%
+ \or%
+ \tudhyperdef{#1}%
+ \or%
+ \tudhyperdef*{#1}%
+ \def\@tempa##1:##2:##3\@nil{\tudhyperdef*{##3:##2:##3}}%
+ \@tempa#1\@nil%
+ \fi%
+ \Markup@ClearFormat%
+}
+%</class>
+% \end{macrocode}
+% \end{macro}^^A \Process@@MarkupDeclare
+% \begin{macro}{\Process@@MarkupInline}
+% \changes{v2.05}{2015/11/05}{neu}^^A
+% Mit \cs{Process@@MarkupInline} wird die formatierte Ausgabe außerhalb der
+% Deklarationsumgebungen umgesetzt. Die ersten vier Argument entsprechen denen
+% des Befehls \cs{Process@@MarkupDeclare} und werden bis auf das Label ebenso an
+% \cs{Markup@Output} übergeben, nachdem mit dem Befehl \cs{Markup@CheckFormat}
+% auf eine existierende Markup-Definition geprüft wurde.
+% \ToDo{%
+% Hyperlinks auf erläuterte Element innerhalb der Umgenung \env{Declaration}
+% unterbinden? Könnte \cs{tud@declaration@list} genutzt werden?%
+% }[v2.07]%
+% \begin{macrocode}
+\NewDocumentCommand\Process@@MarkupInline{mmd==od<>d''}{%
+ \Markup@CheckFormat%
+% \end{macrocode}
+% Um die aktuelle Definiton der temporären Makros nicht zu ändern, erfolgt die
+% formatierte Ausgabe in einer Gruppe. Dabei wird in \cs{@tempc} die minimale
+% Variante gesichert.
+% \begin{macrocode}
+ \begingroup%
+ \def\@tempc{\Markup@Output{#2}=#3=[#4]}%
+% \end{macrocode}
+% Danach wird eine Fallunterscheidung anhand des im ersten Argument übergebenen
+% Labels getroffen. Existiert dieses, soll das Element als Hyperlink ausgegeben
+% werden. Die Definition dafür wird in \cs{@tempa} gespeichert.
+% \begin{macrocode}
+%<*class>
+ \tud@if@lbl@exists{#1}{%
+ \def\@tempa{\hyperref{}{\tud@manualname}{#1}{\@tempc}}%
+% \end{macrocode}
+% Anschließend wird \cs{@tempb} ggf. für den erweiterten Querverweis verwendet.
+% Wurde ein Format für den Querverweis gesetzt, muss dieses validiert werden.
+% Gültige Kürzel sind |'|\val{auto}|'|, |'|\val{page}|'| und |'|\val{full}|'|.
+% Damit werden die erzeugten Querverweise um den Gliederungsabschnitt, die
+% Seite oder beides ergänzt. Außerdem kann mit |'|\val{none}|'| der Hyperlink
+% komplett unterbunden werden. Für den Befehl \cs{Package} kann mit zusätzlich
+% |'|\val{url}|'| noch der CTAN-Link forciert werden, auch wenn eigentlich ein
+% Label für das Paket existiert.
+% \begin{macrocode}
+ \let\@tempb\relax%
+ \IfValueT{#6}{%
+ \def\@tempb{%
+%<*class>
+ \ClassWarning{tudscrmanual}%
+%</class>
+%<*package>
+ \PackageWarning{tudscrtutorial}%
+%</package>
+ {%
+ You've used the unknown cross-reference\MessageBreak%
+ shorthand '#6'. Only 'auto', 'page' and 'full'\MessageBreak%
+ as well as 'none' \IfValueT{#5}{or 'url' }are valid%
+ }%
+ }%
+ \ifstr{#6}{auto}{\def\@tempb{ in \autoref{#1}}}{%
+ \ifstr{#6}{page}{\def\@tempb{ \vpageref{#1}}}{%
+ \ifstr{#6}{ppage}{\def\@tempb{ \reftextfaraway{#1}}}{%
+ \ifstr{#6}{full}{\def\@tempb{ in \fullref{#1}}}{%
+ \ifstr{#6}{none}{\let\@tempa\@tempc\let\@tempb\relax}{}}}}}%
+ \IfValueT{#5}{%
+ \ifstr{#6}{url}{\def\@tempa{\href{#5}{\@tempc}}\let\@tempb\relax}{}%
+ }%
+ }%
+ }{%
+%</class>
+% \end{macrocode}
+% Existiert kein Label, so wird einfach die minimale Markup-Variante verwendet.
+% Für Pakete wird ein CTAN-Link erzeugt.
+% \begin{macrocode}
+ \let\@tempa\@tempc%
+ \IfValueT{#5}{\def\@tempa{\href{#5}{\@tempc}}}%
+% \end{macrocode}
+% Ein Querverweis kann logischerweise nicht erstellt werden. Wurde dennoch im
+% letzten optionalen Argument eine |'|\meta{Referenzvariante}|'| für den
+% Querverweis angegeben, wird eine Warnung erzeugt.
+% \begin{macrocode}
+ \let\@tempb\relax%
+ \IfValueT{#6}{%
+ \ifstr{#6}{none}{\let\@tempa\@tempc}{%
+%<package> \ifstr{#6}{manual}{\def\@tempa{\tudhyperref{#1}{\@tempc}}}{%
+ \def\@tempb{%
+%<*class>
+ \ClassWarning{tudscrmanual}%
+%</class>
+%<*package>
+ \PackageWarning{tudscrtutorial}%
+%</package>
+ {%
+%<*class>
+ Label #1\MessageBreak%
+ is missing, no cross-reference created%
+%</class>
+%<*package>
+ You've used the unknown cross-reference\MessageBreak%
+ shorthand '#6'. Only 'none' and 'manual'\MessageBreak%
+ are valid%
+%</package>
+ }%
+ }%
+%<package> }%
+ }%
+ }%
+% \end{macrocode}
+% Um im Zweifel nach allen fehlenden Labels im Log-File prüfen zu können, gibt
+% es den passenden Debug-Befehl.
+% \begin{macrocode}
+%<*class>
+ \tud@trace@lbl@missing@add{#1}%
+ }%
+%</class>
+% \end{macrocode}
+% Ganz zum Schluss erfolgt die Ausgabe als Hyperlink mit optional erweitertem
+% Querverweis nicht, wenn gerade eine Überschrift gesetzt wird.
+% \begin{macrocode}
+ \ifdisposition{\@tempc}{\@tempa\@tempb}%
+% \end{macrocode}
+% Zum Schluss wird die Formatierung mit \cs{Markup@ClearFormat} zurückgesetzt.
+% \begin{macrocode}
+ \endgroup%
+ \Markup@ClearFormat%
+}
+% \end{macrocode}
+% \end{macro}^^A \Process@@MarkupInline
+% \begin{macro}{\Markup@Output}
+% \changes{v2.05}{2015/11/05}{neu}^^A
+% \begin{macro}{\Markup@@Output}
+% \changes{v2.05}{2015/11/05}{neu}^^A
+% Der Befehl \cs{Markup@Output} wird für die formatierte Markup-Ausgabe von den
+% beiden Makros \cs{Process@@MarkupDeclare} sowie \cs{Process@@MarkupInline}
+% aufgerufen. Das erste Argument enthält dabei das auszuzeichnende Element.
+% Dabei ist die Besonderheit des Makros \cs{Key}\marg{Makro}\marg{Parameter} zu
+% beachten, dessen beiden Argumente hier in der Form \marg{Makro!Parameter}
+% übergeben werden. Deshalb wird das erste Argument mit dem Argumentprozessor
+% \cs{SplitArgument}|{1}{!}| getrennt und dann weiter verarbeitet.
+% \begin{macrocode}
+\NewDocumentCommand\Markup@Output{>{\SplitArgument{1}{!}}mr==r[]}{%
+ \Markup@@Output#1=#2=[#3]%
+}
+% \end{macrocode}
+% Anschließend wird entweder \cs{Markup@Declare} oder \cs{Markup@Inline}
+% aufgerufen~-- abermals abhängig vom Schalter \cs{if@tud@declare}. Auch hier
+% wird für den Befehlsaufruf mit dem dazugehörigen Argument zur Vereinfachung
+% ein Token-Register verwendet.
+% \begin{macrocode}
+\NewDocumentCommand\Markup@@Output{mmr==r[]}{%
+%<*class>
+ \if@tud@declare%
+ \tud@toks@{\Markup@Declare}%
+ \else%
+%</class>
+ \tud@toks@{\Markup@Inline}%
+%<*class>
+ \fi%
+%</class>
+% \end{macrocode}
+% Ist das aktuelle Element \cs{Key} wird nur das zweite Argument ausgegeben.
+% Das erste wird lediglich für Label und Indexeintrag benötigt.
+% \begin{macrocode}
+ \IfValueTF{#2}{%
+ \def\@tempa{#2}%
+ }{%
+ \def\@tempa{#1}%
+ }%
+% \end{macrocode}
+% Die beiden optionalen Argumente werden ggf. in der gleichen Formatierung
+% ausgegeben.
+% \begin{macrocode}
+ \IfValueT{#3}{\appto\@tempa{=#3}}%
+ \IfValueT{#4}{\appto\@tempa{#4}}%
+ \eaddto@hook\tud@toks@{\expandafter{\@tempa}}%
+ \the\tud@toks@%
+}
+% \end{macrocode}
+% \end{macro}^^A \Markup@@Output
+% \end{macro}^^A \Markup@Output
+% \begin{macro}{\Markup@Inline}
+% \changes{v2.05}{2015/11/05}{neu}^^A
+% \begin{macro}{\Markup@Declare}
+% \changes{v2.05}{2015/11/05}{neu}^^A
+% \begin{macro}{\Markup@@Declare}
+% \changes{v2.05}{2015/11/05}{neu}^^A
+% Die Ausgabe selbst ist alles andere als spektakulär. Die zur Formatierung
+% verwendeten Makros \cs{Markup@Format} und \cs{Markup@Suffix} werden durch
+% \cs{Markup@SetFormat} für jedes Markup-Element individuell definiert.
+% \begin{macrocode}
+\newcommand*\Markup@Inline[1]{\mbox{\Markup@Format{#1}}}
+%<*class>
+\newcommand*\Markup@Declare{}
+\newcommand*\Markup@@Declare[1]{\Markup@Format{#1}\Markup@Suffix}
+%</class>
+% \end{macrocode}
+% \end{macro}^^A \Markup@@Declare
+% \end{macro}^^A \Markup@Declare
+% \end{macro}^^A \Markup@Inline
+% \begin{macro}{\Markup@SetFormat}
+% \changes{v2.05}{2015/11/05}{neu}^^A
+% \begin{macro}{\Markup@CheckFormat}
+% \changes{v2.05}{2015/11/05}{neu}^^A
+% \begin{macro}{\Markup@ClearFormat}
+% \changes{v2.05}{2015/11/05}{neu}^^A
+% \begin{macro}{\Markup@Format}
+% \changes{v2.05}{2015/11/05}{neu}^^A
+% \begin{macro}{\Markup@Suffix}
+% \changes{v2.05}{2015/11/05}{neu}^^A
+% Der Befehl \cs{Markup@SetFormat} setzt das gewünschte Format für die jeweilge
+% Ausgabe. Dieses wird im ersten Argument angegeben. Das ordinäre optionale
+% Argument kann genutzt werden, wenn bei der Deklaration noch eine genauere
+% Beschreibung oder Spezifizierung erscheinen soll, beispielsweise etwas wie
+% \enquote{Umgebung} oder \enquote{Parameter}. Mit dem optionalen Argument in
+% runden Klammern wird es möglich, die Definition von \cs{Markup@Declare}, die
+% ohne eine Angabe der von \cs{Markup@@Declare} entspricht, zu ändern. Dies
+% wird insbesondere von \cs{Environment} genutzt, um bei der Deklaration eine
+% Tabelle zu erzeugen.
+% \begin{macrocode}
+\newcommand*\Markup@Format{}
+\undef\Markup@Format
+\newcommand*\Markup@Suffix{}
+\NewDocumentCommand\Markup@SetFormat{omod()}{%
+% \end{macrocode}
+% Außerdem ist noch eine weitere Besonderheit zu beachten. Sollte gerade eine
+% Überschrift gesetzt werden, wird das Hauptargument nicht formatiert sondern
+% lediglich mit \cs{tud@sec@format} ausgegeben.
+% \begin{macrocode}
+ \def\Markup@Format##1{%
+ \def\tud@res@a{#2}%
+ \tud@ifdin{\let\tud@res@a\tud@sec@format}{}%
+ \begingroup\tud@res@a{\IfValueT{#1}{#1}##1}\endgroup%
+ }%
+ \IfValueT{#3}{\def\Markup@Suffix{\suffix{#3}}}%
+%<*class>
+ \IfValueT{#4}{\renewcommand*\Markup@Declare[1]{#4\Markup@Suffix}}%
+%</class>
+}
+% \end{macrocode}
+% Nach der formatierten Ausgabe wird \cs{Markup@ClearFormat} aufgerufen, um die
+% aktuell definierte Formatierung zurückzusetzen und bei einem neuen Aufruf
+% eines der Markup-Befehle mit \cs{Markup@CheckFormat} auf die Verwendung von
+% \cs{Markup@SetFormat} prüfen zu können.
+% \begin{macrocode}
+\newcommand*\Markup@ClearFormat{%
+ \undef\Markup@Format%
+ \let\Markup@Declare\Markup@@Declare%
+ \let\Markup@Suffix\relax%
+}
+\Markup@ClearFormat
+\newcommand*\Markup@CheckFormat{%
+ \ifundef\Markup@Format{%
+%<*class>
+ \ClassError{tudscrmanual}%
+%</class>
+%<*package>
+ \PackageError{tudscrtutorial}%
+%</package>
+ {\string\Markup@SetFormat\space unused}%
+ {It seems you have forgotten to use \string\Markup@SetFormat.}%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \Markup@Suffix
+% \end{macro}^^A \Markup@Format
+% \end{macro}^^A \Markup@ClearFormat
+% \end{macro}^^A \Markup@SetFormat
+% \end{macro}^^A \Markup@CheckFormat
+% \begin{macro}{\tud@nonchangecase}
+% \changes{v2.05}{2015/11/20}{neu}^^A
+% \begin{macro}{\tud@x@textcase@uclcnotmath}
+% Die \TUDScript-Hauptklassen definieren in Ergänzung zum Paket \pkg{textcase}
+% den internen Befehl \cs{tud@x@textcase@uclcnotmath}, womit die Definition von
+% Makros ermöglicht wird, welche von \cs{MakeTextUppercase} nicht beachtet
+% werden sollen. Hierfür werden \emph{alle} Markup-Befehle der Liste zum
+% Ignorieren hinzugefügt. Damit aber bei der eigentlichen Ausgabe alles in
+% Majuskeln erscheint, wird für diesen Fall \cs{Markup@Format} genutzt.
+% \begin{macrocode}
+\ifundef{\tud@x@textcase@uclcnotmath}{}{%
+ \NewDocumentCommand\tud@nonchangecase{m}{%
+ \DeclareExpandableDocumentCommand#1{sm}{%
+ \IfBooleanT{##1}{\noexpand\@tud@indextrue}%
+ \NoCaseChange{#1{##2}}%
+ }%
+ }
+ \apptocmd{\tud@x@textcase@uclcnotmath}{%
+ \tud@nonchangecase\Application%
+ \tud@nonchangecase\Distribution%
+ \tud@nonchangecase\Engine%
+ \tud@nonchangecase\File%
+ \tud@nonchangecase\Class%
+ \tud@nonchangecase\Package%
+ \tud@nonchangecase\Option%
+ \tud@nonchangecase\Environment%
+ \tud@nonchangecase\Macro%
+ \tud@nonchangecase\Length%
+ \tud@nonchangecase\Counter%
+%<*class>
+ \DeclareExpandableDocumentCommand\Key{smm}{%
+ \IfBooleanT{##1}{\noexpand\@tud@indextrue}%
+ \NoCaseChange{#1{##2}{##3}}%
+ }%
+ \tud@nonchangecase\Term%
+ \tud@nonchangecase\PageStyle%
+ \tud@nonchangecase\Font%
+ \tud@nonchangecase\Color%
+%</class>
+ }{}{\tud@patch@wrn{tud@x@textcase@uclcnotmath}}
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@x@textcase@uclcnotmath
+% \end{macro}^^A \tud@nonchangecase
+%
+% \subsection{Index}
+%
+% Hier erscheint alles, was für Erstellen und Ausgabe der einzelnen Indexe
+% notwendig ist. Hierfür wird das Paket \pkg{imakeidx} in Verbindung mit
+% \app{texindy} verwendet. Diese können sowohl mit dem Paket als auch mit der
+% Klasse erzeugt werden.
+% \begin{macrocode}
+\PassOptionsToPackage{xindy,splitindex}{imakeidx}
+\RequirePackage{imakeidx}[2013/07/11]
+% \end{macrocode}
+% Zuerst ein paar kleinere Einstellungen für das Layout\dots
+% \begin{macrocode}
+\indexsetup{%
+%<*class>
+ level=\addsec,%
+%</class>
+%<*package>
+ level=\subsection*,%
+%</package>
+ noclearpage,firstpagestyle=headings,headers={\indexname}{\indexname},%
+ othercode={\renewcommand*\subitem{\@idxitem\hspace*{15\p@}}}%
+}
+% \end{macrocode}
+% \begin{environment}{theindex}
+% \dots gefolgt von einem Patch für die Umgebung \env{theindex}, um unschöne
+% Seitenumbrüche direkt nach Überschriften zu vermeiden. Diese treten auf, das
+% das Paket \pkg{imakeidx} meiner Meinung nach die Überschriften zusammen mit
+% der \env{multicols}-Umgebung falsch setzt. Der Patch sorgt dafür, dass die
+% Überschriften (\cs{imki@indexlevel}|{|\cs{indexname}|}|) nicht
+% vor der Umgebung sondern~-- wie für \pkg{multicol} auch dokumentiert~-- im
+% optionalen Argument von \env{multicols} aufgerufen werden.
+% \begin{macrocode}
+\ifimki@original\else%
+ \CheckCommand\theindex{%
+ \imki@maybeaddtotoc
+ \imki@indexlevel{\indexname}\imki@indexheaders
+ \thispagestyle{\imki@firstpagestyle}%
+ \ifnum\imki@columns>\@ne
+ \columnsep \imki@columnsep
+ \ifx\imki@idxprologue\relax
+ \begin{multicols}{\imki@columns}
+ \else
+ \begin{multicols}{\imki@columns}[\imki@idxprologue]
+ \fi
+ \else
+ \imki@idxprologue
+ \fi
+ \global\let\imki@idxprologue\relax
+ \parindent\z@
+ \parskip\z@ \@plus .3\p@\relax
+ \columnseprule \ifKV@imki@columnseprule.4\p@\else\z@\fi
+ \raggedright
+ \let\item\@idxitem
+ \imki@othercode%
+ }%
+ \patchcmd{\theindex}{%
+ \imki@indexlevel{\indexname}\imki@indexheaders%
+ }{%
+ \imki@indexheaders%
+ }{}{\tud@patch@wrn{theindex}}%
+ \patchcmd{\theindex}{%
+ \ifnum\imki@columns>\@ne
+ \columnsep \imki@columnsep
+ \ifx\imki@idxprologue\relax
+ \begin{multicols}{\imki@columns}
+ \else
+ \begin{multicols}{\imki@columns}[\imki@idxprologue]
+ \fi
+ \else
+ \imki@idxprologue
+ \fi
+ }{%
+ \ifnum\imki@columns>\@ne\relax%
+ \columnsep \imki@columnsep%
+ \ifx\imki@idxprologue\relax%
+ \begin{multicols}{\imki@columns}[\imki@indexlevel{\indexname}]%
+ \else%
+ \begin{multicols}{\imki@columns}[%
+ \imki@indexlevel{\indexname}%
+ \imki@idxprologue%
+ ]%
+ \fi%
+ \else%
+ \imki@indexlevel{\indexname}\imki@idxprologue%
+ \fi%
+ }{}{\tud@patch@wrn{theindex}}%
+\fi%
+% \end{macrocode}
+% \end{environment}^^A theindex
+% \begin{macro}{\makexdyindex}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% Um die einzelnen Indexe erstellen zu können, wird das Makro \cs{makexdyindex}
+% definiert. Die Sternversion dieses Befehle erstellt dabei neben dem normalen
+% Spezialindex einen weiteren, welcher explizit für Deklarationen genutzt wird.
+% Dieser wird anschließen als erstes an \app{texindy} weitergereicht, um die
+% richtige Formatierung der einzelnen Einträge gewährleisten zu können. Erst
+% danach wird die Datei mit den normalen Einträgen verarbeitet. Siehe hierzu
+% auch \cs{Process@@Index}.
+% \begin{macrocode}
+\NewDocumentCommand\makexdyindex{s o m !o}{%
+ \let\@tempb\@empty%
+%<*class>
+ \IfBooleanT{#1}{%
+ \def\@tempc{\jobname-#4-declare.idx}%
+ \makeindex[name={#4-declare}]%
+ \IfFileExists{\@tempc}{%
+ \edef\@tempb{-o \jobname-#4.ind \@tempc}%
+ }{%
+ \ClassWarning{tudscrmanual}{File \@tempc\space not found}%
+ }%
+ }%
+%</class>
+ \protected@edef\@tempa{%
+ title={#3},%
+ columnsep=\noexpand\f@size\noexpand\p@,%
+ \IfValueTF{#4}{%
+ name={#4},%
+ options={-M \@currname-ind.xdy -L german-din -t \jobname-#4.xlg \@tempb},%
+ }{%
+ options={-M \@currname-ind.xdy -L german-din -t \jobname.xlg},%
+ }%
+ \IfValueT{#2}{#2}%
+ }%
+ \expandafter\makeindex\expandafter[\@tempa]%
+}
+% \end{macrocode}
+% \end{macro}^^A \makexdyindex
+% Nun können mit \cs{makexdyindex} die einzelnen Indexe erstellt werden.
+% \begin{macrocode}
+\makexdyindex{Allgemeiner Index}
+\makexdyindex*{Klassen- und Paketoptionen}[options]
+\makexdyindex*{Befehle und Umgebungen mit zugeh\"origen Parametern}[macros]
+%<*class>
+\makexdyindex*{Sprachabh\"angige Bezeichner}[terms]
+\makexdyindex*{Seitenstile, Schriftelemente und Farben}[elements]
+%</class>
+\makexdyindex{L\"angen und Z\"ahler}[misc]
+\makexdyindex*{Klassen, Pakete und Dateien}[files]
+%<*class>
+\makexdyindex[columns=1]{\"Anderungsliste}[changelog]
+%</class>
+\undef\makexdyindex
+% \end{macrocode}
+% \begin{macro}{\if@tud@index}
+% \changes{v2.05}{2015/11/05}{neu}^^A
+% Dieser Schalter wird zwei unterschiedliche Aufgaben verwendet. Zum einen wird
+% er bei der Ausgabe von Verzeichnissen auf \val{true} gesetzt, um das Setzen
+% von Indexeinträgen durch Markup-Befehle in den Verzeichnissen selbst zu
+% unterbinden. Weiterhin verhindert der aktivierte Schalter bei der Ausführung
+% von \cs{Process@Markup} das Erstellen von erweiterten Querverweisen sowie das
+% Setzen von CTAN-Links bei Paketen (\cs{Package}), was weder in Verzeichnissen
+% noch im Index erwünscht ist, weshalb vom Makro \cs{@printindex} ebenfalls
+% \cs{@tud@indextrue} gesetzt wird.
+% \begin{macrocode}
+\newif\if@tud@index
+\addtoeachtocfile{\protect\@tud@indextrue}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@index
+%
+% \subsubsection{Formatierung von Indexeinträgen}
+%
+% \begin{macro}{\tud@idx@get}
+% \changes{v2.05}{2015/11/05}{neu}^^A
+% \begin{macro}{\tud@idx@key}
+% \changes{v2.05}{2015/11/05}{neu}^^A
+% \begin{macro}{\tud@idx@fmt}
+% \changes{v2.05}{2015/11/05}{neu}^^A
+% \begin{macro}{\tud@idx@val}
+% \changes{v2.05}{2015/11/05}{neu}^^A
+% \begin{macro}{\tud@idx@bdl}
+% \changes{v2.05}{2015/11/05}{neu}^^A
+% Mit dem Makro \cs{tud@idx@get} wird die Formatierung eines Indexeintrags für
+% einen Markup-Befehl realisiert. Für das Sortieren der Indexeinträge kommt
+% \app{texindy} zum Einsatz. Um die Indexeinträge wie gewünscht zu Formatieren,
+% gibt es zwei Möglichkeit.
+%
+% Bei der ersten Variante würde der Indexeintrag einfach direkt mit den
+% Markup-Befehlen erstellt und in der \app{texindy}-Stildatei wird für alle
+% Auszeichnungsbefehle die passende |merge-rule| erstellt, um die korrekte
+% Sortierung zu gewährleisten. Tatsächlich war in einer früheren Version genau
+% das der Ansatz. Allerdings werden die manuell erstellten RegExp-Regeln durch
+% \hrfn{http://sourceforge.net/p/xindy/bugs/22/}{\app{texindy} nicht korrekt}
+% genutzt werden, weshalb der Ansatz verworfen wurde.
+%
+% Damit das Sortieren verlässlich funktioniert, werden die Einträge für den
+% Index deshalb in der gewohnten Syntax von \app{makeindex} in der Form
+% \meta{Schlüsselwort}|@|\meta{Markup} erstellt. Diese Syntax kann auch mit
+% \app{texindy} genutzt werden.
+%
+% An \cs{tud@idx@get} werden vier obligatorische gefolgt von vier optionalen
+% Argumenten übergeben. Die ersten beiden Argumente sind die Makros, in welche
+% \meta{Schlüsselwort}~-- für gewöhnlich \cs{tud@idx@key}~-- sowie die
+% Formatierung \meta{Markup}~-- normalerweise \cs{tud@idx@fmt}~-- expandiert
+% werden. Mit dem Makro im dritten Argument wird es möglich, Untereinträge zu
+% einem \meta{Schlüsselwort} für beispielsweise Parameter von Umgebungen oder
+% Befehlen (\cs{Key}) sowie spezielle Schlüsselwerte von Optionen zu erzeugen.
+% Dabei wird vor der Erstellung des Untereintrages der direkt zuvor generierte
+% Indexhaupteintrag ins dritte Argument~-- normalerweise \cs{tud@idx@val}~--
+% gesichert. Das vierte und letzte obligatorische Argument enthält schließlich
+% den eigentlichen Markup-Befehl, für welchen der Indexeintrag erzeugt werden
+% soll.
+%
+% Daran schließen sich vier optionale Argumente an, mit denen die Formatierung
+% des Indexeintrags differenziert werden kann. Das erste optionale Argument
+% |=|\meta{Wert}|=| kann wie bereits gewohnt für das Hinzufügen eines
+% Schlüsselwertes genutzt werden. Das zweite, ordinäre optionale Argument
+% \oarg{Anmerkung} fügt dem Eintrag in den Index eine zusätzliche Anmerkung
+% hinzu. Soll der Indexeintrag für ein spezifisches Paket oder eine Klasse aus
+% dem \TUDScript-Bundle erstellt werden, wird das optionale Argument in runden
+% Klammern \parg{\string\Class\marg{Klasse}/\string\Package\marg{Paket}} für
+% einen Verweis auf das \parg{Bundleelement} verwendet, der in \cs{@idxbundle}
+% gespeichert wird. Das Argument \verb=|=\meta{Indexmarkup}\verb=|= wird bei
+% Deklarationen zur Unterdrückung von Untereinträgen verwendet.
+% Der vollständige Funktionsaufruf lautet:
+% \newline\begingroup\scriptsize
+% \cs{tud@idx@get}\cs{tud@idx@key}\cs{tud@idx@fmt}\ignorespaces%
+% \cs{tud@idx@val}\marg{Elem.}|=|\meta{Wert}|=|\oarg{Anm.}\ignorespaces%
+% \parg{Bundleelem.}\verb=|=\meta{Indexmark.}\verb=|=\ignorespaces%
+% \endgroup
+% \begin{macrocode}
+\newcommand*\tud@idx@key{}
+\newcommand*\tud@idx@fmt{}
+\newcommand*\tud@idx@val{}
+\newcommand*\tud@idx@bdl{}
+\NewDocumentCommand\tud@idx@get{smmmmr==r[]r()d||}{%
+% \end{macrocode}
+% Die Änderungen an allerhand temporären Makros sollen lokal bleibens.
+% \begin{macrocode}
+ \begingroup%
+% \end{macrocode}
+% In einer weiteren Gruppe wird der Markup-Befehl des vierten obligatorischen
+% Arguments ausgewertet. Es wird eine Fallunterschiedung durchgeführt, ob es
+% sich dabei um einen Parameter (\cs{Key}) handelt oder nicht. Ist dies der
+% Fall, wird für diesen Parameter der hier nachfolgend formatierte Indexeintrag
+% als Untereintrag verwendet. Dafür wird zuvor ein Haupteintrag aus dem ersten
+% Argument von \cs{Key} generiert und in das dritte obligatorische Argument
+% gespeichert (\cs{tud@idx@val}).
+% \begin{macrocode}
+ \begingroup%
+%<*class>
+ \let#4\@empty%
+ \in@{\Key}{#5}%
+% \end{macrocode}
+% Um den Haupteintrag zu extrahieren, wird mit \cs{Markup@Suppress} die Ausgabe
+% des Markups deaktiviert und das erste Argument von \cs{Key} ausgeführt. Dies
+% führt über \cs{Process@Index} zum rekursiven Aufruf von \cs{tud@idx@get}. Als
+% Ergebnis sind im zweiten und dritten Argument~-- sprich in \cs{tud@idx@key}
+% und \cs{tud@idx@fmt}~-- \meta{Markup} und \meta{Schlüsselwort} für den
+% Elterneintrag enthalten. Diese werden in das vierte Argument (\cs{idxentry})
+% gespeichert.
+% \begin{macrocode}
+ \ifin@%
+ \Markup@Suppress%
+ \let\Key\@firstoftwo%
+ #5%
+% \end{macrocode}
+% Da der Inhalt des vierten Arguments am Ende der Gruppe expandiert wird, wird
+% mit \cs{expandonce} dafür gesorgt, dass die Expansion nur einmalig erfolgt.
+% Zu beachten ist außerdem, dass der Hauptindexeintrag bereits in der Form
+% \meta{Schlüsselwort}|@|\meta{Markup}|!| zusammengefügt wird. Die Sternversion
+% wird für die Änderungsnotizen verwendet. Für diese wird eine kleine Anmerkung
+% im Haupteintrag ergänzt.
+% \begin{macrocode}
+ \let\@tempa\@empty%
+ \IfBooleanT{#1}{\def\@tempa{: Parameter angepasst}}%
+ \def#4{%
+ \expandonce#2\expandonce\@tempa{}@%
+ \expandonce#3\expandonce\@tempa{}!%
+ }%
+ \fi%
+%</class>
+% \end{macrocode}
+% Nachdem ein möglicher Haupteintrag für Parameter erzeugt wurde, folgt nun
+% der formatierte Indexeintrag für das aktuelle Markup-Element. Um diesen zu
+% erstellen, wird für \meta{Schlüsselwort} zunächst nur der Inhalt des
+% Hauptargumentes benötigt. Dieser wird hier in das zweite Argument
+% expandiert, der ggf. erzeugte Haupteintrag in das vierte. Für \cs{Key} ist
+% hier nur noch das zweite Argument relevant.
+% \begin{macrocode}
+ \Markup@Gobble%
+%<class> \let\Key\@secondoftwo%
+ \edef\tud@reserved{%
+ \noexpand\endgroup%
+ \def\noexpand#2{#5}%
+%<class> \def\noexpand#4{#4}%
+ }%
+ \tud@reserved%
+% \end{macrocode}
+% Die Auszeichnung für den Indexeintrag besteht in erster Linie aus dem
+% Markup-Befehl selbst. Damit ein |@|"~Zeichen beispielsweise in einem
+% Makronamen korrekt verarbeitet wird, wird dieses im Stil von \app{makeindex}
+% mit |"| maskiert.
+% \begin{macrocode}
+ \def#3{#5}%
+ \tud@replace#2{@}{"@}%
+ \tud@replace#3{@}{"@}%
+% \end{macrocode}
+% In \cs{@idxbundle} wird ggf. das Paket oder die Klasse gespeichert, für die
+% der aktuelle Eintrag erzeugt werden soll. Eine explizite Angabe wird in jedem
+% Fall genutzt,\dots
+% \begin{macrocode}
+ \let\tud@idx@bdl\tud@bdl@dflt%
+ \IfValueTF{#8}{%
+ \def\tud@idx@bdl{#8}%
+ }{%
+% \end{macrocode}
+% \dots eine implizite nur, wenn auch tatsächlich das passende Label existiert,
+% da sonst mit Sicherheit falsche Einträge im Index erscheinen würden.
+% \begin{macrocode}
+%<*class>
+ \tud@if@bdl{%
+ \tud@if@lbl@exists{\tud@bdl@curr:#5}{%
+ \edef\tud@idx@bdl{\expandonce\tud@bdl@curr}%
+% \end{macrocode}
+% Sollte der Eintrag selbst dem Suffix für Paket oder Klasse entsprechen, wird
+% dieser ignoriert.
+% \begin{macrocode}
+ \def\tud@reserved{#5}%
+ \ifx\tud@reserved\tud@idx@bdl%
+ \let\tud@idx@bdl\tud@bdl@dflt%
+ \fi%
+ }{}%
+ }{}%
+%</class>
+ }%
+% \end{macrocode}
+% Nachfolgend wird für den zu erzeugenden Indexeintrag die Zugehörigkeit des
+% aktuellen Elements zu einem Paket oder einer Klasse aus dem \TUDScript-Bundle
+% durch das Anhängen des jeweiligen \TUDScript-Bundle-Elements signalisiert.
+% Dabei werden für die Anpassung von Schlüssel und Formatierung des Eintrags
+% die temporären Makros \cs{@tempa}~(Schlüssel) und \cs{@tempb}~(Formatierung)
+% gespeichert. In \cs{@tempc} wird der Inhalt von \cs{@tempb} zwischenzeitlich
+% zur späteren Verwendung gesichert.
+% \begin{macrocode}
+ \let\@tempa\@empty%
+ \let\@tempb\@empty%
+ \let\@tempc\@empty%
+% \end{macrocode}
+% Der temporäre Schalter \cs{@tempswa} wird genutzt, um das Hinzufügen der
+% Ergänzungen zu steuern. Diese sollen nur für Elemente, welche nicht zu den
+% Hauptklassen gehören, erfolgen.
+% \begin{macrocode}
+ \@tempswatrue%
+ \ifx\tud@idx@bdl\tud@bdl@dflt%
+ \@tempswafalse%
+% \end{macrocode}
+% Ebenso werden die Anmerkungen für \cs{Key}-Elemente unterdrückt, da diese
+% sowieso als Untereintrag erzeugt werden. Einträge in der Änderungsliste
+% werden ohnehin separat für jedes \TUDScript-Bundle-Element ausgegeben. In
+% jedem Fall ist jedoch Formatierung beim Markup für das Erzeugen des richtigen
+% Querverweises notwendig und wird in \cs{@tempb} und \cs{@tempc} abgelegt.
+% \begin{macrocode}
+ \else%
+%<class> \in@{\Key}{#5}\ifin@\@tempswafalse\fi%
+ \IfBooleanT{#1}{\@tempswafalse}%
+ \edef\@tempb{(\expandonce\tud@idx@bdl)}%
+ \fi%
+ \let\@tempc\@tempb%
+% \end{macrocode}
+% Der Indexeintrag kann zur besseren Kenntnisnahme außerdem standardmäßig mit
+% einer Beschreibung versehen werden.
+% \begin{macrocode}
+ \IfValueT{#7}{%
+ \appto\@tempa{ #7}%
+ \appto\@tempb{\suffix{#7}}%
+ }%
+% \end{macrocode}
+% Wird die Anmerkung gesetzt, ist für den Schlüssel nur der Inhalt des in
+% \cs{@idxbundle} gesicherten Markup-Befehls relevant. Dieser wird in der
+% folgenden Gruppe extrahiert und \cs{@tempa} angehangen. Für die Formatierung
+% bleibt das Markup erhalten und wird \cs{tempb} hinzugefügt.
+% \begin{macrocode}
+ \if@tempswa%
+ \begingroup%
+ \Markup@Gobble%
+ \edef\tud@reserved{%
+ \noexpand\endgroup%
+ \noexpand\appto\noexpand\@tempa{ \tud@idx@bdl}%
+ }%
+ \tud@reserved%
+ \eappto\@tempb{\suffix{\expandonce\tud@idx@bdl}}%
+ \fi%
+% \end{macrocode}
+% Sollte mit |=|\meta{Wert}|=| ein spezieller Schlüsselwert angegeben worden
+% sein, wird für diesen normalerweise ein separater Untereintrag erstellt. Der
+% Schalter \cs{@tempswa} wird genutzt, um das Erzeugen dieses Untereintrages im
+% Zweifel zu unterdrücken und diesen stattdessen als normalen Eintrag zu
+% setzen. Dies ist zum einen bei Deklarationen und zum anderen in der
+% Änderungsliste notwendig. Außerdem kann dies auch mit der Angabe von
+% \val{default} als Indexargument erzwungen werden.
+% \begin{macrocode}
+ \@tempswafalse%
+ \IfBooleanT{#1}{\@tempswatrue}%
+ \IfValueT{#9}{\ifstr{#9}{declare}{\@tempswatrue}{}}%
+ \IfValueT{#9}{\ifstr{#9}{default}{\@tempswatrue}{}}%
+% \end{macrocode}
+% In diesem Fall werden die Ergänzungen für Schlüssel und Formatierung ggf. um
+% die speziellen Schlüsselwerte für das Element ergänzt.
+% \begin{macrocode}
+ \if@tempswa%
+ \protected@eappto#2{\expandonce\@tempa}%
+ \tud@doifPValue{#6}{\noexpand\appto\noexpand#2{=#6}}%
+ \protected@eappto#3{\IfValueT{#6}{=#6=}\expandonce\@tempb}%
+% \end{macrocode}
+% Andernfalls wird geprüft, ob ein verwertbarer Schlüsselwert angegeben wurde.
+% \begin{macrocode}
+ \else%
+ \tud@doifPValue{#6}{\noexpand\@tempswatrue}%
+% \end{macrocode}
+% Ist dies der Fall, wird aus den bisherigen Eingaben der Haupteintrag und
+% daran anschließend der dazugehörige Untereintrag erstellt\dots
+% \begin{macrocode}
+ \if@tempswa%
+ \eappto#4{%
+ \expandonce#2\expandonce\@tempa{}@%
+ \expandonce#3\expandonce\@tempb{}!%
+ }%
+ \appto#2{=#6}%
+ \appto#3{=#6=}%
+ \protected@eappto#3{\expandonce\@tempc}%
+% \end{macrocode}
+% \dots andernfalls bleibt es bei einem normalem Eintrag in den Index.
+% \begin{macrocode}
+ \else%
+ \protected@eappto#2{\expandonce\@tempa}%
+ \protected@eappto#3{\expandonce\@tempb}%
+ \fi%
+ \fi%
+% \end{macrocode}
+% Die Erzeugung eines formatierten Indexeintrages ist beendet, das Resultat
+% wird nach der letzten Gruppe definiert.
+% \begin{macrocode}
+ \let\emph\@firstofone%
+ \protected@edef\tud@reserved{%
+ \noexpand\endgroup%
+ \def\noexpand#2{#2}%
+ \def\noexpand#3{#3}%
+ \def\noexpand#4{#4}%
+ }%
+ \tud@reserved%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@idx@bdl
+% \end{macro}^^A \tud@idx@val
+% \end{macro}^^A \tud@idx@fmt
+% \end{macro}^^A \tud@idx@key
+% \end{macro}^^A \tud@idx@get
+% \begin{macro}{\cleversee}
+% \changes{v2.05}{2015/11/02}{neu}^^A
+% \begin{macro}{\cleverseealso}
+% \changes{v2.05}{2015/11/02}{neu}^^A
+% \begin{macro}{\tud@cleversee}
+% \changes{v2.05}{2015/11/02}{neu}^^A
+% \changes{v2.05k}{2017/03/20}{neu}^^A
+% Diese Befehle dienen zum smarten Setzen von Hinweisen im Index. Existiert
+% lediglich dieser Hinweis im Index, wird dieser mit dem Präfix \cs{seename}
+% ausgegeben. Sind jedoch für einen Indexeintrag auch Seitenzahlen vorhanden,
+% so werden diese zuerst ausgegeben, danach folgt der Querverweis mit dem
+% Präfix \cs{seealsoname}. Der Befehl \cs{cleverseealso} verwendet letzteren
+% Präfix in jedem Fall.
+% \begin{macrocode}
+\newrobustcmd*\cleversee{\tud@cleversee{\seename}}
+\newrobustcmd*\cleverseealso{%
+%<*class>
+ \ClassWarning{tudscrmanual}%
+%</class>
+%<*package>
+ \PackageWarning{tudscrtutorial}%
+%</package>
+ {You should use `|see' instead of `|seealso'}%
+ \tud@cleversee{\alsoname}%
+}
+% \end{macrocode}
+% Diese Makro übernimmt die eigentliche Arbeit. Es ist darauf angewiesen, dass
+% die angegebene Seitenzahlen eines Indexeintrages erst \emph{nach} den
+% Hinweisen ausgegeben und mit \cs{relax} abgeschlossen werden. Dies wird mit
+% der später definierten Stildatei für \app{texindy} sichergestellt. So wird es
+% möglich, dass das Makro \cs{tud@cleversee} auf alles ihm bis \cs{relax}
+% nachfolgende parsen kann und abhängig davon die Ausgabe gestaltet. Das zweite
+% obligatorische Argument beinhaltet dabei den Querverweis, das dritte Argument
+% ist alles nachfolgende bis \cs{relax}.
+% \begin{macrocode}
+\newcommand*\tud@cleversee{}
+\def\tud@cleversee#1#2#3\relax{%
+ \IfArgIsEmpty{#3}{%
+ \emph{#1}\space#2%
+ }{%
+% \end{macrocode}
+% Folgen im Index nach \cs{cleversee}\marg{Querverweis} noch weitere Einträge,
+% so sind diese zu Beginn durch \texttt{,\textvisiblespace} getrennt. Diese
+% zwei Zeichen werden mithilfe von \cs{@tempa} ignoriert.
+% \begin{macrocode}
+ \begingroup%
+ \def\@tempa, ##1\@nil{##1,\space\emph{\alsoname}\space#2}%
+ \@tempa#3\@nil%
+ \endgroup%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cleversee
+% \end{macro}^^A \cleverseealso
+% \end{macro}^^A \cleversee
+% \begin{macro}{\seeref}
+% \changes{v2.05}{2015/11/02}{neu}^^A
+% \begin{macro}{\seeidx}
+% Der Befehl \cs{seeref} kann anstelle von \cs{see} bzw. in der Sternversion
+% statt \cs{alsosee} genutzt werden. Das Makro \cs{seeidx} verweist auf die
+% Seite eines Indexes.
+% \begin{macrocode}
+%<*class>
+\NewDocumentCommand\seeref{s m}{%
+ \emph{\IfBooleanTF{#1}{\alsoname}{\seename}}\space#2%
+}
+\newcommand*\seeidx[2]{\pageref{idx:#1}}
+%</class>
+% \end{macrocode}
+% \end{macro}^^A \seeidx
+% \end{macro}^^A \seeref
+%
+% \subsubsection{Erstellen von Indexeinträgen}
+%
+% \begin{macro}{\Process@Index}
+% \changes{v2.05}{2015/11/15}{neu}^^A
+% \begin{macro}{\Process@@Index}
+% \changes{v2.05}{2015/11/15}{neu}^^A
+% Mit \cs{Process@Index} wird geprüft, ob mit dem im zweiten obligatorischen
+% Argument enthaltenen Markup-Befehl ein Indexeintrag erzeugt werden soll.
+% Ein Indexeintrag kann mit der Sternversion eines Markup-Befehls explizit
+% unterdrückt werden, wobei der boolesche Wert im ersten obligatorischen
+% Argument an \cs{Process@Index} zu Prüfung übergeben wird. Außerdem wird für
+% obsolete Deklarationen ebenso wie bei aktiviertem Schalter \cs{if@tud@index}
+% kein Eintrag erstellt. In allen genannten Fällen passiert beim Aufruf von
+% \cs{Process@Index} nichts, andernfalls wird \cs{Process@@Index} ausgeführt.
+%
+% Die auf die zwei obligatorischen Argumente folgenden optionalen sind in der
+% Nomenklatur identisch zu den bisherigen Erläuterungen, der vollständige
+% Funktionsaufruf lautet:
+% \newline\begingroup\scriptsize
+% \cs{Process@Index}\marg{Stern?}\marg{Element}\ignorespaces%
+% |=|\meta{Wert}|=|\oarg{Anmerkung}\parg{Bundleelement}\ignorespaces%
+% \verb=|=\meta{Indexmarkup}\verb=|=\ignorespaces%
+% \endgroup
+% \begin{macrocode}
+\NewDocumentCommand\Process@Index{mmd==od()d||}{%
+ \ifboolexpr{%
+%<class> bool {@tud@index} or bool {@tud@obsolete}%
+%<package> bool {@tud@index}%
+ }{}{%
+ \IfBooleanTF{#1}{%
+ \IfValueT{#6}{%
+%<*class>
+ \ClassWarning{tudscrmanual}%
+%</class>
+%<*package>
+ \PackageWarning{tudscrtutorial}%
+%</package>
+ {%
+ You've used the starred version. No index entry\MessageBreak%
+ for #2 is created. The\MessageBreak%
+ optional argument |#6| will be ignored%
+ }%
+ }%
+ }{%
+ \Process@@Index{#2}=#3=[#4](#5)|#6|%
+ }%
+ }%
+}
+% \end{macrocode}
+% Mit \cs{Process@@Index} erfolgt die eigentliche Erzeugung des Indexeintrages.
+% \begin{macrocode}
+\NewDocumentCommand\Process@@Index{mr==r[]r()r||}{%
+% \end{macrocode}
+% Dabei erledigt \cs{tud@idx@get} einen Großteil der Aufgabe. Mit besagtem
+% Makro werden Schlüssel und Format für den gewünschten Indexeintrag erzeugt.
+% Sollte optional ein spezieller |=|\meta{Wert}|=| für einen Schlüssel gegeben
+% sein, so wird ggf. auch der passende Haupteintrag erstellt.
+% \begin{macrocode}
+%<*class>
+ \if@tud@declare%
+ \tud@idx@get\tud@idx@key\tud@idx@fmt\tud@idx@val{#1}=#2=[#3](#4)|declare|%
+ \else%
+%</class>
+ \tud@idx@get\tud@idx@key\tud@idx@fmt\tud@idx@val{#1}=#2=[#3](#4)|#5|%
+%<*class>
+ \fi%
+%</class>
+% \end{macrocode}
+% Mit der Sternversion \cs{tud@attr@get*} wird der Zielindex für das im
+% ersten Argument übergebene \marg{Element} ermittelt.
+% \begin{macrocode}
+ \tud@attr@get*\tud@lbl@tmp{#1}%
+% \end{macrocode}
+% Markup-Befehle, welche in Deklarationen verwendet wurden, werden für eine
+% höhere Priorisierung in einem speziellen Index angelegt, wobei hier die
+% Formatierung dieses Eintrags fest vorgegeben ist.
+% \begin{macrocode}
+%<*class>
+ \if@tud@declare%
+ \if@openindex%
+ \IfValueT{#5}{%
+ \ClassWarning{tudscrmanual}{%
+ It is not possible to use any indexing format\MessageBreak%
+ like |#5| within the arguments of the\MessageBreak%
+ environments `Declaration' or `Declaration*'%
+ }%
+ }%
+% \end{macrocode}
+% Jetzt folgt~-- abhängig vom Schalter \cs{if@openindex}~-- der öffnende oder
+% schließende Indexeintrag der Deklaration. Für den schließenden ist dabei eine
+% Formatierung des Schlüssels nicht notwendig.
+% \begin{macrocode}
+ \index[\tud@lbl@tmp-declare]{%
+ \tud@idx@val\tud@idx@key{}@\tud@idx@fmt|(declare%
+ }%
+ \else%
+ \index[\tud@lbl@tmp-declare]{\tud@idx@val\tud@idx@key|declare)}%
+ \fi%
+% \end{macrocode}
+% Für Markup-Befehle außerhalb von Deklarationsumgebungen wird ein einfacher
+% Eintrag in den Index erzeugt, wobei auch im Fließtext über das Indexmarkup
+% \verb=|=\val{declare}\verb=|= eine Quasi-Deklaration verwendet werden kann.
+% Dies wird beispielsweise für \KOMAScript-Optionen genutzt, um diese in der
+% gewünschten Formatierung im Index erscheinen zu lassen.
+% \begin{macrocode}
+ \else%
+%</class>
+ \IfValueT{#5}{%
+%<*class>
+ \ifstr{#5}{declare}{%
+ \appto\tud@lbl@tmp{-declare}%
+ \appto\tud@idx@fmt{|declare}%
+ }{%
+ \appto\tud@idx@fmt{|#5}%
+ }%
+%</class>
+%<*package>
+ \appto\tud@idx@fmt{|#5}%
+%</package>
+ }%
+ \index[\tud@lbl@tmp]{\tud@idx@val\tud@idx@key{}@\tud@idx@fmt}%
+%<*class>
+ \fi%
+%</class>
+}
+% \end{macrocode}
+% \end{macro}^^A \Process@@Index
+% \end{macro}^^A \Process@Index
+%
+% \iffalse
+%<*class>
+% \fi
+%
+% \begin{macro}{\CrossIndex}
+% Der Befehl \cs{CrossIndex} dient zum Eintragen eines Schlagwortes, welches im
+% ersten obligatorischen Argument angegeben wird, in den allgemeinen Index und
+% verweist auf den im zweiten obligatorischen Argument, zum Schlagwort gehörigen
+% Spezialindex. Das ordinäre optionale Argument kann verwendet werden, um ggf.
+% den Eintrag in den allgemeinen Index, der normalerweise mit dem jeweiligen
+% Schlagwort erfolgt, zu überschrieben.
+%
+% Wird die Sternversion von \cs{CrossIndex} genutzt, so wird der Querverweis
+% als Eintrag in der obersten Ebene gesetzt, andernfalls wird ein Untereintrag
+% gesetzt. Mit der normalen Variante können so zu einem Schlagwort weitere
+% Verweise im allgemeinen Index erscheinen. Das zweite obligatorische Argument
+% kann eine kommagetrennte Liste enthalten.
+% \begin{macrocode}
+\NewDocumentCommand\CrossIndex{s m o m}{%
+ \def\@tempa##1##2##3{%
+ \index{%
+ \IfBooleanTF{#1}{##3@##3}{##3!"|@}%
+ \,\textrightarrow\,%
+ \tudhyperref{idx:##2}{\IfValueTF{##1}{##1}{Index der ##3}}|seeidx{##2}%
+ }%
+ }%
+ \forcsvlist{\@tempa{#3}{#4}}{#2}%
+}
+% \end{macrocode}
+% \end{macro}^^A \CrossIndex
+% \begin{macro}{\SeeRef}
+% \changes{v2.05}{2015/11/05}{neu}^^A
+% Mit \cs{SeeRef} wird unter dem im ersten Argument gegebenen Schlagwort ein
+% Indexuntereintrag erzeugt, der wiederum auf einen Indexeintrag des zweiten
+% Argumentes verweist. Dabei kann im zweiten Argument ein normaler Begriff oder
+% ein Markup-Befehl verwendet werden. Normalerweise wird für den Querverweis
+% die Referenzklasse \verb=|see= verwendet, die Sternversion des Befehls
+% hingegen nutzt \verb=|seeunverified=, um auf eine Prüfung des verwiesenen
+% Eintrags zu verzichten.
+% \begin{macrocode}
+\NewDocumentCommand\SeeRef{s m m}{%
+ \sbox\z@{%
+ \let\tud@idx@fmt\relax%
+ #3%
+% \end{macrocode}
+% Wurde im zweiten Argument ein Markup-Befehl angegeben, so wurde durch das
+% Erstellen der Box das dazugehörige Indexformat in \cs{tud@idx@fmt} für den
+% Eintrag erstellt. Andernfalls wurde die Definiton von \cs{tud@idx@fmt} nicht
+% geändert und das Argument wird nach der Box direkt in den Index eingetragen.
+% \begin{macrocode}
+ \ifx\tud@idx@fmt\relax%
+ \gdef\tud@reserved{#3}%
+ \else%
+ \global\let\tud@reserved\tud@idx@fmt%
+ \fi%
+ }%
+ \IfBooleanTF{#1}{\def\tud@idx@fmt{seeunverified}}{\def\tud@idx@fmt{see}}%
+ \index{#2!#3|\tud@idx@fmt{\tud@reserved}}%
+}
+% \end{macrocode}
+% \end{macro}^^A \SeeRef
+%
+% \iffalse
+%</class>
+% \fi
+%
+% \subsubsection{Indexausgabe}
+%
+% Dies sind alle Befehle, die zur Ausgabe der erzeugten Indexe benötigt werden.
+% \begin{macro}{\PrintIndex}
+% \changes{v2.02}{2014/08/20}{neu}^^A
+% \begin{macro}{\tud@indexprologue}
+% \changes{v2.02}{2014/08/20}{neu}^^A
+% Mit \cs{PrintIndex} erfolgt die Ausgabe aller erstellten Indexe. Dabei wird
+% für bestimmte Spezialindexe das Makro \cs{tud@indexprologue} neu gesetzt, um
+% für diese vor der eigentlichen Ausgabe einige Anmerkungen machen zu können.
+% Mit \cs{tud@indexprologue} kann der einleitende Teil für einen Index gesetzt
+% werden.
+% \begin{macrocode}
+%<*class>
+\newcommand*\tud@indexprologue{}
+%</class>
+\newcommand*\PrintIndex{%
+ \begingroup%
+ \providecommand*\lettergroup[1]{%
+ \par\textbf{\textsf{##1}}\par%
+ \nopagebreak%
+ }%
+%<*class>
+ \renewcommand\tud@indexprologue{%
+ Die im Folgenden aufgelisteten Schlagworte sollen f\"ur den Umgang mit
+ \hologo{LaTeXe} im Allgemeinen sowie dem \TUDScript-Bundle im Speziellen
+ sowohl Antworten bei generellen Fragen liefern als auch L\"osungen f\"ur
+ typische Probleme bereitstellen. Falls ein gesuchter Begriff hier nicht
+ auftaucht oder trotz vorhandener Hinweise kein zufriedenstellendes
+ Ergebnis erzielt werden kann, sollte das \Forum* erster Anlaufpunkt sein,
+ um weitere Hilfe bei der Nutzung von \TUDScript zu erhalten.%
+ }%
+%</class>
+%<*package>
+ \begingroup%
+ \let\lettergroup\@gobble%
+ \let\indexspace\relax%
+%</package>
+ \print@index%
+%<*package>
+ \endgroup%
+%</package>
+%<*class>
+ \clearpage%
+ \renewcommand\tud@indexprologue{%
+ Dies ist der Index aller im Handbuch erl\"auterten sowie erw\"ahnten
+ Optionen, wobei bei den meisten auch Untereintr\"age mit Seitenangaben
+ f\"ur spezielle Wertzuweisungen existieren.%
+ }%
+%</class>
+ \print@index[options]%
+%<*class>
+ \renewcommand\tud@indexprologue{%
+ Dies ist die Auflistung aller im Handbuch erl\"auterten sowie erw\"ahnten
+ Befehle und Umgebungen. Bei einigen existieren auch Untereintr\"age f\"ur
+ Schl\"ussel-Wert-Parameter, welche im optionalen Argument der jeweiligen
+ Anweisung verwendet werden k\"onnen. In der dritten Unterebene sind
+ gegebenenfalls Seitenverweise f\"ur explizite Wertzuweisungen an diese
+ Parameter zu finden.%
+ }%
+%</class>
+ \print@index[macros]%
+%<*class>
+ \renewcommand\tud@indexprologue{%
+ Dies sind alle von \TUDScript definierten, sprachabh\"angigen Bezeichner.
+ Informationen zur Verwendung sowie den Anpassungsm\"oglichkeiten sind in
+ \autoref{sec:localization} zu finden.%
+ }%
+ \print@index[terms]%
+ \print@index[elements]%
+%</class>
+%<*package>
+ \begingroup%
+ \let\lettergroup\@gobble%
+ \let\indexspace\relax%
+%</package>
+ \print@index[misc]%
+%<*package>
+ \endgroup%
+%</package>
+ \print@index[files]%
+ \endgroup%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@indexprologue
+% \end{macro}^^A \PrintIndex
+% \begin{macro}{\print@index}
+% \changes{v2.02}{2014/07/25}{neu}^^A
+% \begin{macro}{\tud@idx@skip}
+% \changes{v2.02}{2014/09/02}{neu}^^A
+% Mit \cs{@printindex} erfolgt die Ausgabe der einzelnen Indexe. Dabei wird in
+% der Klasse \cls{tudscrmanual} zuvor für jeden Index ein referenzierbares
+% Label erstellt und ggf. der Prolog gesetzt.
+%
+% Aufgrund der Verwendung der \env{multicols}-Umgebung durch das Paket
+% \pkg{imakeidx} werden normalerweise ohne einen Prolog zu große vertikale
+% Abstände gesetzt. Dies wird mit \cs{tud@idx@skip} behoben.
+% \begin{macrocode}
+\newcommand*\tud@idx@skip{%
+ \ifnum\imki@columns>\@ne\relax\vspace{-\multicolsep}\fi%
+}
+\newcommand*\print@index[1][]{%
+% \end{macrocode}
+% Falls ein Seitenumbruch notwendig ist, sollte dieser vor dem Index und nicht
+% unmittelbar nach dem Beginn erfolgen.
+% \begin{macrocode}
+ \pagebreak[3]%
+ \@tud@indextrue%
+%<*class>
+% \end{macrocode}
+% Das zu erstellende Label wird in \cs{tud@reserved} gespeichert. Dabei wird
+% die Sternversion von \cs{tudhyperdef} genutzt, um das Label auf die Höhe der
+% Überschrift zu setzen.
+% \begin{macrocode}
+ \ifblank{#1}{%
+ \def\tud@reserved{\tudhyperdef*{idx:main}}%
+ }{%
+ \def\tud@reserved{\tudhyperdef*{idx:#1}}%
+ }%
+% \end{macrocode}
+% Ohne Prolog wird der fehlerhafte vertikale Abstand behoben.
+% \begin{macrocode}
+ \ifx\tud@indexprologue\@empty%
+ \indexprologue[\tud@idx@skip]{\tud@reserved}%
+% \end{macrocode}
+% Mit Prolog wird der fehlerhafte vertikale Abstand nach diesem korrigiert.
+% \begin{macrocode}
+ \else%
+ \indexprologue{%
+ \tud@reserved%
+ \tud@indexprologue%
+ \tud@idx@skip%
+ }%
+ \fi%
+%</class>
+% \end{macrocode}
+% Fur das Paket \pkg{tudscrtutorial} erfolgt eine einfache Ausgabe der Indexe.
+% \begin{macrocode}
+%<package> \indexprologue[\tud@idx@skip]{}%
+% \end{macrocode}
+% Die Ausgabe des gewünschten Index und des leeren des Prologs.
+% \begin{macrocode}
+ \ifblank{#1}{\printindex}{\printindex[#1]}%
+ \ifnum\imki@columns>\@ne\relax\vspace{-\multicolsep}\fi%
+%<class> \let\tud@indexprologue\@empty%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@idx@skip
+% \end{macro}^^A \print@index
+%
+% \iffalse
+%<*class>
+% \fi
+%
+% \subsection{Änderungsliste}
+%
+% Um dem Anwender einen schnellen Überblick zu Änderungen der aktuellen Version
+% bereitstellen zu können, werden Befehle zur automatisierten Erzeugung einer
+% solchen Liste definiert. Die Änderungsliste ist der Klasse \cls{tudscrmanual}
+% vorbehalten.
+%
+% Änderungsnotizen lassen sich auf zwei unterschiedlichen Wegen generieren.
+% Entweder über die Nutzung von \cs{ChangedAt} oder über das optionale Argument
+% einer der Deklarationsumgebungen. Diese sind in der Form
+% \meta{Versionsnummer}|:|\meta{Änderungsnotiz} anzugeben. Die alleinige Angabe
+% der Versionsnummer ohne Änderungsnotiz ist ebenso möglich.
+%
+% Wird die Änderungsnotiz für ein bestimmtes Element wie eine Option oder ein
+% Befehl erstellt, wie es bei den Deklarationsumgebungen implizit oder bei der
+% Verwendung von \cs{ChangedAt} mit optionalem Argument geschieht, gibt es die
+% zusätzliche Möglichkeit, einen Untereintrag zu erstellen. Dabei ist dieser
+% nach Versionsnummer und vor Änderungsnotiz in folgender Form anzugeben:
+% \meta{Versionsnummer}|!|\meta{Untereintrag}|:|\meta{Änderungsnotiz}. Der
+% Untereintrag ist für die explizite Angabe eines Schlüssel-Wert-Paares gedacht.
+% \begin{macro}{\if@tud@changedat}
+% \begin{macro}{\Process@ChangedAt}
+% \changes{v2.02}{2014/07/25}{erweitert}^^A
+% \changes{v2.02}{2014/10/08}{Sternversion ergänzt}^^A
+% Der Schalter \cs{if@tud@changedat} wird im weiteren Verlauf dazu verwendet,
+% das Standardverhalten der einzelnen Markup-Befehle kurzeitig zu ändern und
+% anstelle der Makros \cs{Process@Markup} und \cs{Process@Index} den Befehl
+% \cs{Process@ChangedAt} auszuführen, mit welchem die Formatierung der Einträge
+% der Änderungsliste erfolgt.
+% \begin{macrocode}
+\newif\if@tud@changedat
+% \end{macrocode}
+% Die Formatierung der Änderungseinträge erfolgt~-- wie auch für den Index~--
+% mit dem Makro \cs{tud@idx@get}, wobei die Sternversion für die Identifikation
+% als Änderungseintrag fungiert. Aufgerufen wird \cs{Process@ChangedAt} während
+% der Erstellung der Änderungseinträge mit \cs{Changed@At@CreateEntry}. Der
+% Aufruf des Makros erfolgt dabei in gewohnter Form mit einem obligatorischen
+% gefolgt von drei optionalen Argumenten:
+% \newline\begingroup\scriptsize
+% \cs{Process@ChangedAt}\marg{Element}|=|\meta{Wert}|=|\ignorespaces%
+% \oarg{Ausgabesuffix}\parg{Bundleelement}\ignorespaces%
+% \endgroup
+% \begin{macrocode}
+\NewDocumentCommand\Process@ChangedAt{md==od()}{%
+ \tud@idx@get*\tud@idx@key\tud@idx@fmt\tud@idx@val{#1}=#2=[#3](#4)%
+}
+% \end{macrocode}
+% \end{macro}^^A \Process@ChangedAt
+% \end{macro}^^A \if@tud@changedat
+% \begin{macro}{\ChangedAt}
+% \changes{v2.02}{2014/07/25}{erweitert}^^A
+% \changes{v2.02}{2014/10/15}{Sternversion neu (keine Randnotiz)}^^A
+% \changes{v2.06}{2018/09/03}{optionale Angabe des Bundles}^^A
+% \begin{macro}{\@ChangedAt}
+% \changes{v2.06}{2019/06/24}{neu}^^A
+% \begin{length}{\changedatskip}
+% \changes{v2.04}{2015/06/08}{neu}^^A
+% Der Befehl \cs{ChangedAt} kann im Fließtext für das Erstellen einer freien
+% Änderungsnotiz genutzt werden. Das obligatorische Argument sollt wie kurz
+% zuvor beschrieben verwendet werden.
+%
+% Eine Änderungsnotiz wird für die angegebene Versionsnummer normalerweise im
+% Abschnitt \enquote{Allgemein} aufgeführt. Soll jedoch eine Notiz explizit für
+% eine Option, eine Umgebung, einen Befehlt etc. erstellt werden, kann dieses
+% Element vor dem obligatorischen im optionalen Argument angegeben werden. Der
+% Eintrag erfolgt dann im Abschnitt \enquote{Implementierung} für das gegebene
+% Element. Im obligatorischen Argument können auch mehrere Änderungsnotizen
+% gleichzeitig erzeugt werden. hierfür sind diese mit Semikolon voneinander zu
+% trennen. Das Erzeugen der Liste erfolgt mit \cs{Changed@At@CreateList}.
+%
+% Normalerweise wird bei der Nutzung von \cs{ChangedAt} zusätzlich zum Eintrag
+% in die Änderungsliste eine Randnotiz mit den angegebenen Versionsnummern
+% erzeugt. Mit dem letzten optionalen Argument nach dem obligatorischen kann
+% ein vertikaler Versatz dieser angegeben werden. Die Sternversion des Befehls
+% unterdrückt die Ausgabe der Randnotiz.
+% \begin{macrocode}
+\newlength\changedatskip
+\NewDocumentCommand\ChangedAt{s o d() m !O{\changedatskip}}{%
+ \IfValueTF{#2}{%
+ \Changed@At@CreateList[#2](#3){#4}%
+ }{%
+ \Changed@At@CreateList(#3){#4}%
+ }%
+% \end{macrocode}
+% Nach dem Erstellen der Liste wird diese abgearbeitet und ggf. die Randnotiz
+% ausgegeben.
+% \begin{macrocode}
+ \print@changedatlist{#1}{#5}%
+}
+% \end{macrocode}
+% Die expandierbare Version des Befehls ist innerhalb von Überschriften nötig.
+% \begin{macrocode}
+\NewExpandableDocumentCommand\@ChangedAt{s o d() m}{}
+\AfterPackage*{hyperref}{%
+ \pdfstringdefDisableCommands{%
+ \let\ChangedAt\@ChangedAt%
+ }%
+}
+\BeforeStartingTOC{\let\ChangedAt\@ChangedAt}
+% \end{macrocode}
+% \end{length}^^A \changedatskip
+% \end{macro}^^A \@ChangedAt
+% \end{macro}^^A \ChangedAt
+%
+% \subsubsection{Sukzessive Erstellung der Einträge für die Änderungsliste}
+%
+% Das Erstellen von Änderungsnotizen erfolgt in zwei Schritten. Diese werden
+% zuerst mit dem Befehl \cs{Changed@At@CreateList} in einer standardisierten
+% Form in der temporären Liste \cs{tud@changedat@list} gespeichert und später
+% mit dem Makro \cs{Changed@At@CreateEntry} verarbeitet. Dieses Vorgehen liegt
+% in den Umgebungen für Deklarationen begründet, welche verschachtelt werden
+% können, jedoch einmalig mit \cs{printdeclarationlist} abgearbeitet werden.
+%
+% \begin{macro}{\tud@changedat@list}
+% \changes{v2.02}{2014/07/25}{neu}^^A
+% \begin{macro}{\forssvlist}
+% \changes{v2.05}{2015/11/17}{neu}^^A
+% Hier werden die Liste \cs{tud@changedat@list} sowie das Makro \cs{forssvlist}
+% für die Aufspaltung der semikolongetrennten Änderungsnotizen definiert.
+% \begin{macrocode}
+\newcommand*\tud@changedat@list{}
+\let\tud@changedat@list\relax
+\DeclareListParser*{\forssvlist}{;}
+% \end{macrocode}
+% \end{macro}^^A \forssvlist
+% \end{macro}^^A \tud@changedat@list
+% \begin{macro}{\Changed@At@CreateList}
+% \changes{v2.02}{2014/09/02}{neu}^^A
+% \begin{macro}{\Changed@At@@CreateList}
+% \changes{v2.02}{2014/10/09}{neu}^^A
+% \begin{macro}{\Changed@At@@@CreateList}
+% \begin{macro}{\Changed@At@@@@CreateList}
+% Mit diesen Befehlen wird eine Liste im Format von \pkg{etoolbox} erzeugt,
+% welche alle notwendigen Angaben für das Erzeugen der Änderungshistorie in
+% Form eines Indexes mit \cs{Changed@At@CreateEntry} enthält.
+%
+% Der Befehl \cs{Changed@At@CreateList} kann vor dem obligatorischen Argument
+% mit einem ordinären optionalen Argument verwendet werden, in welchem ein
+% Makro, eine Umgebung, eine Option etc. angegeben wird. Ist dies der Fall, so
+% wird der Eintrag in die Änderungsliste für dieses Element generiert, sonst
+% wird eine allgemeiner Eintrag erzeugt. Das optionale Argument in runden
+% Klammern wird lediglich verwendet, wenn für eine der beiden Spezialumgebungen
+% \env{Declaration*} bzw. \env{Bundle*} eine Änderungsnotiz erstellt wird, um
+% diese für das jeweilige \TUDScript-Bundle-Element in den entsprechenden
+% Abschnitt der Änderungsliste einzutragen. Das Hauptargument verarbeitet
+% schließlich eine semikolongetrennte Liste und reicht jeden Bestandteil
+% zusammen mit den beiden optionalen Argumenten an \cs{Changed@At@@CreateList}
+% weiter.
+% \begin{macrocode}
+\NewDocumentCommand\Changed@At@CreateList{od()m}{%
+ \IfValueT{#3}{\forssvlist{\Changed@At@@CreateList[#1](#2)}{#3}}%
+}
+% \end{macrocode}
+% Mit \cs{Changed@At@@CreateList} wird lediglich die Versionsnummer von der
+% eigentlichen Änderungsnotiz getrennt.
+% \begin{macrocode}
+\NewDocumentCommand\Changed@At@@CreateList{r[]r()>{\SplitArgument{1}{:}}m}{%
+ \Changed@At@@@CreateList[#1](#2)#3%
+}
+% \end{macrocode}
+% Zuletzt wird durch \cs{Changed@At@@@CreateList} ein möglicher Untereintrag
+% in ein separates Argument abgetrennt und \cs{Changed@At@@@@CreateList} mit
+% allen Argumenten aufgerufen.
+% \begin{macrocode}
+\NewDocumentCommand\Changed@At@@@CreateList{r[]r()>{\SplitArgument{1}{!}}mm}{%
+ \Changed@At@@@@CreateList[#1](#2)#3{#4}%
+}
+% \end{macrocode}
+% Der Befehl \cs{Changed@At@@@@CreateList} übernimmt nun die Erstellung des
+% Eintrags in die Liste \cs{tud@changedat@list}. Wie bereits erwähnt, enthalten
+% die beiden ersten Argumente ggf. Markup-Befehl und \TUDScript-Bundle-Element.
+% Danach folgt die Versionsnummer der Änderungsnotiz, der mögliche Untereintrag
+% für einen Markup-Befehl sowie die Änderungsnotiz selbst.
+%
+% Die oberste Gliederungsebene der Änderungshistorie ist die Versionsnummer.
+% Unter dieser werden für jedes \TUDScript-Bundle-Element die Änderungsnotizen
+% separat ausgegeben, wobei diese nochmal in einen allgemeinen Teil und einen
+% zur Implementierung getrennt werden.
+%
+% Der im Folgenden erzeugte Eintrag für die Liste \cs{tud@changedat@list} wird
+% in zwei unterschiedlichen Varianten generiert. In der Form
+% \newline\begingroup\scriptsize
+% \meta{Versionsnummer}|!Allgemein!|\meta{Änderungsnotiz}\ignorespaces%
+% \endgroup\newline
+% werden allgemeine Änderungsnotizen erstellt, für Einträge bezüglich der
+% Implementierung wird die folgende Form genutzt:
+% \newline\begingroup\scriptsize
+% \meta{Versionsnummer}|!Implementierung!|\meta{Markup-Befehl}\ignorespaces%
+% |!|\meta{Untereintrag}|!|\meta{Änderungsnotiz}\ignorespaces%
+% \endgroup
+% \begin{macrocode}
+\NewDocumentCommand\Changed@At@@@@CreateList{r[]r()mmm}{%
+% \end{macrocode}
+% Die Aufteilung der Änderungsliste in die einzelnen \TUDScript-Bundle-Elemente
+% erfolgt entweder anhand des explizit angegebenen optionalen Argumentes in
+% runden Klammern oder aber implizit über den gegenwärtigen Inhalt des Makros
+% \cs{tud@bdl@curr}. Dafür wird das Makro \cs{@tempa} so definiert, dass es
+% das angegebene Argument in einer Box ausführt und das gesuchte Bundle-Element
+% in \cs{@tempb} gespeichert ist.
+% \begin{macrocode}
+ \def\@tempa##1{%
+ \sbox\z@{%
+ \let\tud@idx@fmt\relax%
+ \@tud@changedattrue%
+ ##1%
+ \@tud@changedatfalse%
+ \ifx\tud@idx@fmt\relax%
+ \gdef\@tempb{##1}%
+ \else%
+ \global\let\@tempb\tud@idx@fmt%
+ \fi%
+ }%
+ }%
+ \let\@tempb\@empty%
+ \IfValueTF{#2}{%
+ \@tempa{#2}%
+ }{%
+ \tud@if@bdl{\@tempa{\tud@bdl@curr}}{}%
+ }%
+% \end{macrocode}
+% Nachdem klar ist, für welches Bundle-Element ggf. der Änderungslisteneintrag
+% erzeugt werden soll, wird nun bestimmt, ob dieser im allgemeinen Teil oder in
+% den zur Implementierung erscheinen soll. Dies wird an der Existenz des ersten
+% Argumentes entschieden. Ist es vorhanden, handelt es sich um einen Eintrag
+% für den Implementierungsteil, welcher in \cs{tud@changedat@list} in der Form
+% \newline\begingroup\scriptsize
+% \meta{Versionsnummer}|!Implementierung!|\meta{Markup-Befehl}\ignorespaces%
+% |!|\meta{Untereintrag}|!|\meta{Änderungsnotiz}\ignorespaces%
+% \endgroup\newline
+% gespeichert wird, wobei der Untereintrag auch leer bleiben kann.
+% \begin{macrocode}
+ \IfValueTF{#1}{%
+ \toks@{#3!Implementierung }%
+% \end{macrocode}
+% Hier erfolgt ggf. der Eintrag des \TUDScript-Bundle-Elements, danach folgt
+% der Markup-Befehl.
+% \begin{macrocode}
+ \eaddto@hook\toks@{\@tempb}%
+ \addto@hook\toks@{!#1!}%
+% \end{macrocode}
+% Wurde ein Untereintrag angegeben, wird dieser hier gefolgt von der
+% eigentlichen Änderungsnotiz eingefügt. Für obsolete Deklarationen für die
+% Änderungsnotiz in jedem Fall ignoriert, da beim späteren Aufruf des Makros
+% \cs{Changed@At@CreateEntry} eine Standardmeldung ausgegeben wird.
+% \begin{macrocode}
+ \IfValueT{#4}{\addto@hook\toks@{#4}}%
+ \addto@hook\toks@{!}%
+ \if@tud@obsolete\else%
+ \IfValueT{#5}{\addto@hook\toks@{#5}}%
+ \fi%
+ }{%
+% \end{macrocode}
+% Handelt es sich um einen allgemeinen Änderungseintrag, wird dieser in der Form
+% \newline\begingroup\scriptsize
+% \meta{Versionsnummer}|!Allgemein!|\meta{Änderungsnotiz}\ignorespaces%
+% \endgroup\newline
+% in der Liste \cs{tud@changedat@list} gespeichert. Für den allgemeinen Teil
+% wird mit der Angabe eines \TUDScript-Bundle-Elements etwas anders verfahren.
+% Wurde dieses~-- wenn auch nur indirekt über eine der beiden Spezialumgebungen
+% \env{Declaration*} bzw. \env{Bundle*}~-- angegeben, so wird der Eintrag in
+% den allgemeinen Hauptteil als Untereintrag erzeugt. Erfolgte die Verwendung
+% jedoch innerhalb einer \TUDScript-Bundle-Deklaration, so erscheint der
+% Eintrag im allgemeinen Teil für das explizite Bundle-Element.
+% \begin{macrocode}
+ \toks@{#3!Allgemein }%
+ \IfValueTF{#2}{%
+ \addto@hook\toks@{!}%
+ \eaddto@hook\toks@{\@tempb:\space}%
+ \IfValueTF{#5}{%
+ \addto@hook\toks@{#5}%
+ }{%
+ \addto@hook\toks@{\emph{neu}}%
+ }%
+ }{%
+ \eaddto@hook\toks@{\@tempb}%
+ \addto@hook\toks@{!}%
+ \addto@hook\toks@{#5}%
+ }%
+ \IfValueT{#4}{%
+ \ClassError{tudscrmanual}{Using !#4 isn't allowed for a change notice}{%
+ At least, it has to be implemented!%
+ }%
+ }%
+ }%
+ \listeadd\tud@changedat@list{\the\toks@}%
+}
+% \end{macrocode}
+% \end{macro}^^A \Changed@At@@@@CreateList
+% \end{macro}^^A \Changed@At@@@CreateList
+% \end{macro}^^A \Changed@At@@CreateList
+% \end{macro}^^A \Changed@At@CreateList
+%
+% \subsubsection{Erzeugen der Änderungseinträge}
+%
+% Mit den nachfolgenden Makros erfolgt das eigentliche Eintragen der
+% Änderungseinträge aus der Liste \cs{tud@changedat@list} in den entsprechenden
+% Index~\val{changelog}.
+%
+% \begin{macro}{\Changed@At@CreateEntry}
+% \changes{v2.02}{2014/09/02}{neu}^^A
+% \begin{macro}{\Changed@At@@CreateEntry}
+% \changes{v2.02}{2014/09/02}{neu}^^A
+% Der Befehl \cs{Changed@At@CreateEntry} wird durch \cs{@printchangedatlist}
+% aufgerufen und teilt die gegebene Liste am Delimiter Ausrufezeichen |!| in
+% fünf Argumente auf und reicht sie an \cs{Changed@At@@CreateEntry} weiter.
+% Sind weniger als vier Ausrufezeichen vorhanden, so werden die ungenutzten
+% Argumente mit dem~-- durch das Paket \pkg{xparse} definierten~-- leeren Wert
+% \val{-NoValue-} an den Befehl \cs{Changed@At@@CreateEntry} übergeben.
+% \begin{macrocode}
+\NewDocumentCommand\Changed@At@CreateEntry{>{\SplitArgument{4}{!}}m}{%
+ \Changed@At@@CreateEntry#1%
+}
+% \end{macrocode}
+% Mit \cs{Changed@At@@CreateEntry} wird der Eintrag in die Änderungshistorie
+% erzeugt, falls denn überhaupt ein Eintrag generiert werden soll. Dies wird
+% daran erkannt, ob das dritte Argument dew Wert \val{-NoValue-} entspricht
+% oder eben nicht. Der zweite Fall tritt auf, wenn lediglich eine Randnotiz
+% gesetzt werden soll. Die in \cs{tud@changedat@list} gespeicherten Einträge
+% haben die Form
+% \newline\begingroup\scriptsize
+% \meta{Versionsnummer}|!Allgemein!|\meta{Änderungsnotiz}\ignorespaces%
+% \endgroup\newline
+% oder
+% \newline\begingroup\scriptsize
+% \meta{Versionsnummer}|!Implementierung!|\meta{Markup-Befehl}\ignorespaces%
+% |!|\meta{Untereintrag}|!|\meta{Änderungsnotiz}\ignorespaces%
+% \endgroup
+% \begin{macrocode}
+\newcommand*\Changed@At@@CreateEntry[5]{%
+ \IfValueT{#3}{%
+% \end{macrocode}
+% Bei der Deklaration von Optionen, Befehlen etc. werden diese automatisch in
+% der Liste der Änderungen im Bereich \enquote{Implementierung} vor der
+% gegebenen Erklärung selbst ausgegeben. Hierfür wird die Existenz des vierten
+% Arguments geprüft. Ist dieses vorhanden\dots
+% \begin{macrocode}
+ \IfValueTF{#4}{%
+% \end{macrocode}
+% \dots befindet sich im dritten Argument der Markup-Befehl für den Eintrag im
+% Implementierungsteil. Mit dem zwischenzeitlichen Aktivieren des Schalters
+% \cs{if@tud@changedat} wird beim nachfolgenden Aufruf des Markup-Befehls das
+% Makro \cs{Process@ChangedAt} ausgeführt und dadurch auch \cs{tud@idx@get*}
+% aufgerufen, wodurch in den Makros \cs{tud@idx@key}, \cs{tud@idx@fmt} und
+% \cs{tud@idx@val} die passend formatierten Indexeinträge enthalten sind.
+% \begin{macrocode}
+ \@tud@changedattrue%
+ #3%
+ \@tud@changedatfalse%
+% \end{macrocode}
+% Das vierte Argument erstellt in der Änderungsliste einen Untereintrag für den
+% im dritten Argument gegebenen Markup-Befehl. Dies wird für Anmerkungen zu
+% expliziten Schlüssel-Wert-Paaren bei Optionen oder Parametern genutzt.
+% \begin{macrocode}
+ \ifxblank{#4}{}{%
+% \end{macrocode}
+% Hierfür wird die zuvor erhaltene Formatierung des Markup-Befehls des dritten
+% Argumentes an den Haupteintrag \cs{tud@idx@val} mit der zusätzlichen
+% Anmerkung \enquote{Werte angepasst} angehängt.
+% \begin{macrocode}
+ \eappto\tud@idx@val{%
+ \expandonce\tud@idx@key: Werte angepasst@%
+ \expandonce\tud@idx@fmt: Werte angepasst!%
+ }%
+% \end{macrocode}
+% Anschließend werden die Formatierungsbefehle des vierten Arguments genutzt,
+% wobei vom Befehl \cs{suffix} nur das Argument selbst benötigt wird. Um den
+% Inhalt von \cs{tud@idx@val} zu schützen, erfolgt das ganze in einer Gruppe.
+% \begin{macrocode}
+ \begingroup%
+ \@tud@changedattrue%
+ #4%
+ \@tud@changedatfalse%
+ \let\suffix\@gobble%
+ \protected@edef\tud@reserved{%
+ \noexpand\endgroup%
+ \def\noexpand\tud@idx@key{\tud@idx@key}%
+ \def\noexpand\tud@idx@fmt{\tud@idx@fmt}%
+ }%
+ \tud@reserved%
+ }%
+% \end{macrocode}
+% Nachdem die Formatierung der Haupt- und Untereinträge soweit zusammengebaut
+% wurden, wird die eigentliche Änderungsnotiz des fünften Arguments angehangen.
+% Dabei wird für den Fall, dass \emph{keine} Erklärung angegeben wurde, in der
+% Änderungsliste vermerkt, ob es sich bei dem Markup-Befehl respektive dessen
+% Untereintrag um eine \emph{neue} bzw. eine \emph{obsolete} Variante handelt.
+% \begin{macrocode}
+ \ifxblank{#5}{%
+ \if@tud@obsolete%
+ \appto\tud@idx@fmt{: \emph{entf\"allt}}%
+ \else%
+ \appto\tud@idx@fmt{: \emph{neu}}%
+ \fi%
+% \end{macrocode}
+% Existiert ein Eintrag, wird dieser für Schlüssel und Format verwendet.
+% \begin{macrocode}
+ }{%
+ \appto\tud@idx@key{: #5}%
+ \appto\tud@idx@fmt{: #5}%
+ }%
+% \end{macrocode}
+% Nachdem alles abgearbeitet wurde, wird der Indexeintrag erstellt.
+% \begin{macrocode}
+ \index[changelog]{#1!#2!\tud@idx@val\tud@idx@key @\tud@idx@fmt}%
+% \end{macrocode}
+% Existiert das vierte Argument nicht, handelt es sich um einen allgemeinen
+% Eintrag in der Änderungshistorie. Dieser wird direkt ausgeführt.
+% \begin{macrocode}
+ }{%
+ \index[changelog]{#1!#2!#3}%
+ }%
+ }%
+% \end{macrocode}
+% Außerdem wird der Liste \cs{tud@templist} die aktuelle Version einmalig
+% hinzugefügt, um alle Versionsangaben in einer Randnotiz ausgeben zu können.
+% \begin{macrocode}
+ \ifinlist{#1}{\tud@templist}{}{\listadd\tud@templist{#1}}%
+}
+% \end{macrocode}
+% \end{macro}^^A \Changed@At@@CreateEntry
+% \end{macro}^^A \Changed@At@CreateEntry
+%
+% \subsubsection{Ausgabe der Änderungsliste}
+%
+% Ähnlich wie für den Index wird auch für die Änderungsliste bei der Ausgabe
+% verfahren.
+%
+% \begin{macro}{\PrintChangelog}
+% \begin{environment}{theindex}
+% Mit \cs{PrintChangelog} erfolgt die Ausgabe der Änderungsliste. Dabei ist zu
+% beachten, dass die Einträge im Index bis zur vierten Ebene erfolgen.
+% \begin{macrocode}
+\newcommand*\PrintChangelog{%
+ \begingroup%
+% \end{macrocode}
+% Die oberste Ebene enthält die Versionsnummer mit dem Präfix |v|. Diese Ebene
+% soll nicht als Indexeintrag selber sondern vielmehr als Überschrift der Ebene
+% \cs{subsection} genutzt werden. Dafür wird zum einen das durch das Paket
+% \pkg{imakeidx} definierte Makro \cs{lettergroup} \emph{unschädlich} gemacht,
+% zum anderen wird der Befehl \cs{item} so umdefiniert, dass dieser alles bis
+% zum nächsten Zeilenumbruch als Argument einliest. Alle darunter liegenden
+% \cs{item}-Befehle werden eine Ebene nach oben gehoben.
+% \begin{macrocode}
+ \let\lettergroup\@gobble%
+ \apptocmd{\theindex}{%
+ \let\subsubsubitem\subsubitem%
+ \let\subsubitem\subitem%
+ \let\subitem\item%
+ \renewcommand*\item{%
+ \begingroup%
+ \escapechar=`\\%
+ \catcode\endlinechar=\active%
+ \csname\string\item\endcsname%
+ }%
+ \begingroup%
+ \escapechar=`\\%
+ \lccode`\~=\endlinechar%
+ \lowercase{%
+ \expandafter\endgroup%
+ \expandafter\def\csname\string\item\endcsname##1~%
+ }{%
+ \endgroup%
+ \let\@tempb\@firstofone%
+ \if@tud@cdoldfont@active\def\@tempb##1{\NoCaseChange{##1}}\fi%
+ \addsec[##1]{\TUDScript \@tempb{##1}}%
+ \tudhyperdef*{idx:changelog:##1}%
+ \def\@tempa{\indexname: \TUDScript \@tempb{##1}}%
+ \@mkboth{\@tempa}{\@tempa}%
+ }%
+ }{}{\tud@patch@wrn{theindex}}%
+% \end{macrocode}
+% Mit der so angepassten \env{theindex}-Umgebung erfolgt die Ausgabe der
+% Änderungshistorie.
+% \begin{macrocode}
+ \clearpage%
+ \def\imki@indexlevel{\addchap}%
+ \print@index[changelog]%
+ \endgroup%
+}
+% \end{macrocode}
+% \end{environment}^^A theindex
+% \end{macro}^^A \PrintChangelog
+% \begin{macro}{\print@changedatlist}
+% \changes{v2.02}{2014/10/09}{neu}^^A
+% Die Einträge in der Liste der Änderungen \cs{tud@changedat@list} werden mit
+% dem Makro \cs{Changed@At@CreateList} abgearbeitet, sortiert und erstellt. Das
+% zweite obligatorische Argument von \cs{@printchangedatlist} steurrt den
+% vertikalen Versatz der Randnotiz. Wird im ersten Argument das boolesche Flag
+% zu \cs{BooleanTrue} gesetzt, wird die Randnotiz unterdrückt.
+% \begin{macrocode}
+\NewDocumentCommand\print@changedatlist{mm}{%
+ \ifx\tud@changedat@list\relax\else%
+ \let\tud@templist\relax%
+ \forlistloop\Changed@At@CreateEntry{\tud@changedat@list}%
+ \global\let\tud@changedat@list\relax%
+% \end{macrocode}
+% Nach der Verarbeitung der Einräge sind in \cs{tud@templist} alle angegebenen
+% Versionsnummern genau einmal enthalten. Mit \cs{tud@list@sort} werden diese
+% in die richtige Reihenfolge sortiert und anschließend als Randnotiz in einer
+% Tabelle ausgegeben, falls nicht die Sternversion verwendet wurde.
+% \begin{macrocode}
+ \IfBooleanF{#1}{%
+ \tud@list@sort\tud@templist%
+ \strut%
+ \marginnote{%
+ \def\@tempa####1{%
+ \ignorespaces%
+ \tudhyperref{idx:changelog:####1}{####1}%
+ \tabularnewline%
+ }%
+ \begin{tabular}{|l|}%
+ \hline%
+ \forlistloop\@tempa{\tud@templist}%
+ \hline%
+ \end{tabular}%
+ }[#2]%
+ \ignorespaces%
+ }%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \print@changedatlist
+%
+% \subsection{Erweiterte Listen für Erläuterungen im Handbuch}
+%
+% Es folgen einige Umgebungen, mit welchen bestimmte Aspekte oder Pakete im
+% Handbuch erläutert werden.
+%
+% Das Paket \pkg{enumitem} erlaubt das Beeinflussen der Standardlisten und die
+% Ableitung neuer Listen aus diesen. Mit \cs{setlist\{noitemsep\}} werden die
+% zusätzlichen Zwischenräume innerhalb der Listen beseitigt. Weiterhin wird
+% linksbündiger Flattersatz für die Standardlisten aktiviert.
+% \begin{macrocode}
+\RequirePackage{enumitem}[2011/09/28]
+\setlist{before*={\endgraf\tud@RaggedRight},partopsep=0pt,noitemsep}
+% \end{macrocode}
+% \begin{macro}{\stditem}
+% \begin{macro}{\tud@before@item}
+% Mit den Möglichkeiten des Paketes \pkg{enumitem} werden folgend Listen für
+% das Aufführen von möglichen Werten einer Option sowie der Beschreibung von
+% nützlichen Paketen erstellt. Für beide Listen soll dabei die originale
+% Definition von \cs{item} in \cs{stditem} gesichert und anschließend angepasst
+% werden. Die Sicherung und Redefinition von \cs{item} erfolgt dabei über das
+% Makro \cs{tud@before@item} über einen bereitgestellten \emph{hook} zu Beginn
+% der jeweiligen Liste.
+% \begin{macrocode}
+\newcommand*\stditem{}
+\newcommand*\tud@before@item[1]{%
+ \ifdefvoid{\stditem}{%
+ \let\stditem\item%
+ \letcs\item{tud@item@#1}%
+% \end{macrocode}
+% Damit die Änderungsnotizen in der passenden vertikalen Position erscheinen,
+% wird die Länge \cs{changedatskip} entsprechend angepasst.
+% \begin{macrocode}
+ \setlength\changedatskip{-\baselineskip}%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@before@item
+% \end{macro}^^A \stditem
+%
+% \subsubsection{Listen für gültige Werte von Optionen}
+%
+% \begin{environment}{values}
+% \begin{environment}{@values}
+% \begin{macro}{\tud@values}
+% Die Liste \env{@values} dient zum Benennen der möglichen Werte für einen
+% bestimmten Schlüssel. Im Handbuch kommt diese Liste vor allem bei Optionen
+% aber ggf. auch bei bestimmten Befehls- und Optionsparametern zum Einsatz.
+% Diese wird in der Umgebung \env{values} eingebettet, damit zum einen ein
+% \emph{obligatorisches} Argument verwendet werden kann und zum anderen
+% \emph{nach} diesem ein optionales für die Liste selbst verwendbar ist. Das
+% obligatorische Argument wird in \cs{tud@values} gesichert und sollte die
+% genauer zu beschreibende Option bzw. das Makro etc. enthalten.
+% \begin{macrocode}
+\newcommand*\tud@values{}
+\NewDocumentEnvironment{values}{mo}{%
+ \def\tud@values{#1}%
+ \IfValueTF{#2}{\@values[#2]}{\@values}%
+}{%
+ \end@values%
+}
+\newlist{@values}{description}{1}
+\setlist[@values]{%
+ topsep=\smallskipamount,labelwidth=\linewidth,labelsep=0pt,%
+ font=\normalfont,parsep=\parskip,listparindent=\parindent,%
+ before=\tud@before@item{values}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@values
+% \end{environment}^^A @values
+% \end{environment}^^A values
+% \begin{macro}{\tud@item@values}
+% \begin{macro}{\forslashlist}
+% Das Makro \cs{tud@item@values} ersetzt in der Umgebung \env{values} die
+% originale Definiton von \cs{item}. Die Sternversion kann dabei verwendet
+% werden, um die Einstellung für den Säumniswert hervorzuheben. Im ersten
+% optionalen Argument können die möglichen Werte einer Option oder eines
+% Parameters angegeben werden. Sind mehrere Werte gleichbedeutende Werte
+% verwendbar, so sind diese durch |/| zu trennen. Dabei wird der als erstes
+% angegebene Wert für den Untereintrag in den Index verwendet. Das zweite
+% optionale Argument kann genutzt werden, falls beispielsweise für
+% unterschiedliche Klassen sich der Säumniswert unterscheidet. Das letzte
+% optionale Argument in runden Klammern fügt zum Schluss einen ergänzenden
+% Eintrag hinzu.
+% \begin{macrocode}
+\DeclareListParser*{\forslashlist}{/}
+\NewDocumentCommand\tud@item@values{sood()}{%
+% \end{macrocode}
+% Alle Auszeichnungen kommen nur zum Tragen, wenn ein optionales Argument für
+% die Werte angegeben wurde.
+% \begin{macrocode}
+ \IfValueTF{#2}{%
+% \end{macrocode}
+% Die durch Schrägstrich getrennte Liste im optionalen Argument wird mit
+% \cs{forslashlist} durchlaufen. Der erste Eintrag wird für den Indexeintrag
+% benötigt und in \cs{@tempc} gesichert, alle weiteren Einträge werden in
+% \cs{@tempb} gespeichert und lediglich im Fließtext aufgelistet.
+% \begin{macrocode}
+ \let\@tempc\@empty%
+ \def\tud@reserved##1{%
+ \if@tempswa%
+ \appto\@tempb{/##1}%
+ \else%
+ \@tempswatrue%
+ \let\@tempb\@empty%
+ \def\@tempc{##1}%
+ \fi%
+ }%
+ \@tempswafalse%
+ \forslashlist\tud@reserved{#2}%
+% \end{macrocode}
+% Jetzt beginnt die Formatierung der Ausgabe. Zuerst wird die zu beschreibende
+% Option in \cs{@tempa} expandiert. Danach wird der erste Wert angehangen,
+% wobei dieser für die Sternversion als Säumniswert mit \cs{emph} hervorgehoben
+% wird. Zuletzt wird dafür Sorge getragen, dass auf den anschließend erzeugten
+% Eintrag selbst kein Hyperlink erzeugt wird und dieser im passenden Index als
+% fettmarkierter Eintrag erscheint.
+% \begin{macrocode}
+ \edef\@tempa{\expandonce\tud@values}%
+ \protected@eappto\@tempa{%
+ =\IfBooleanTF{#1}{\noexpand\emph}{\@firstofone}{\@tempc}=%
+ }%
+ \appto\@tempa{'none'|!|}%
+% \end{macrocode}
+% Danach werden alle weiteren möglichen Werte angegeben, wobei auch diese im
+% Zweifelsfall mit \cs{emph} hervorzuheben sind.
+% \begin{macrocode}
+ \edef\@tempb{%
+ \IfBooleanTF{#1}{\noexpand\emph}{\@firstofone}{%
+ \noexpand\PValue{\@tempb}%
+ }%
+ }%
+% \end{macrocode}
+% Zuletzt erfolgt die Auszeichnung, ob es sich bei den gelisteten Werten um
+% Säumniswerte handelt, gefolgt vom optionael Suffix.
+% \begin{macrocode}
+ \IfBooleanTF{#1}{%
+ \appto\@tempb{\suffix{S\"aumniswert}}%
+ }{%
+ \IfValueT{#3}{\appto\@tempb{\suffix{S\"aumniswert f\"ur #3}}}%
+ }%
+ \IfValueT{#4}{\appto\@tempb{\suffix{#4}}}%
+% \end{macrocode}
+% Die in \cs{tud@values} gespeicherte, zu beschreibende Option bzw. Makro etc.
+% und der erste im optionalen Argument angegebene Wert werden verwendet, um ein
+% Label zu erstellen.
+% \begin{macrocode}
+ \tud@lbl@get@curr*\tud@lbl@tmp{\tud@bdl@curr:\tud@values}=\@tempc=%
+% \end{macrocode}
+% Abschließend erfolgt wird die Ausgabe des generierten Eintrags mit dem
+% originalen Makro \cs{stditem}.
+% \begin{macrocode}
+ \stditem[\tudhyperdef{\tud@lbl@tmp}\@tempa\@tempb]%
+ }{%
+ \stditem%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \forslashlist
+% \end{macro}^^A \tud@item@values
+% \begin{macro}{\itemtrue}
+% \begin{macro}{\itemfalse}
+% \begin{macro}{\tud@item@bool}
+% Die folgenden beiden Befehle sind äquivalent zu \cs{tud@item@values} genutzt
+% werden. Diese enthalten allerdings im optionalen Argument zumindest die
+% Standardwerte für positive bzw. negative boolesche Schalter. Diese werden
+% durch den Befehl \cs{item@bool} gesetzt.
+% \begin{macrocode}
+\NewDocumentCommand\itemtrue{!s !o !o !d()}{%
+ \item@bool{#1}{true/on/yes}[#2][#3](#4)%
+}
+\NewDocumentCommand\itemfalse{!s !o !o !d()}{%
+ \item@bool{#1}{false/off/no}[#2][#3](#4)%
+}
+% \end{macrocode}
+% Der Befehl \cs{item@bool} setzt je nach angegebenen Argumenten über ein
+% token-Register den auszuführenden \cs{item}-Befehl zusammen.
+% \begin{macrocode}
+\NewDocumentCommand\item@bool{mmr[]r[]r()}{%
+ \toks@{\item}%
+ \IfBooleanT{#1}{\addto@hook\toks@{*}}%
+% \end{macrocode}
+% Die optionalen Werte werden im Zweifel den booleschen Standardwerten
+% angehängt und als einziges optionales Argument an \cs{item} übergeben.
+% \begin{macrocode}
+ \protected@edef\@tempa{#2\IfValueT{#3}{/#3}}%
+ \eaddto@hook\toks@{\expandafter[\@tempa]}%
+ \IfValueT{#4}{\addto@hook\toks@{[#4]}}%
+ \IfValueT{#5}{\addto@hook\toks@{(#5)}}%
+ \the\toks@%
+}
+% \end{macrocode}
+% \end{macro}^^A \itemfalse
+% \end{macro}^^A \itemtrue
+% \end{macro}^^A \tud@item@bool
+%
+% \subsubsection{Listen für die Beschreibung von Paketen}
+%
+% \begin{environment}{packages}
+% \begin{macro}{\tud@item@packages}
+% \changes{v2.02}{2014/10/09}{optionales Argument für CTAN-Link}^^A
+% \changes{v2.04}{2015/03/12}{optionales Argument für weitere Pakete}^^A
+% Ähnlich wie für die Auflistung von Werten eines Schlüssels wird auch mit der
+% Charakterisierung von Paketen verfahren. Diese werden in der Auflistung
+% speziell gekennzeichnet.
+% \begin{macrocode}
+\newlist{packages}{description}{2}
+\setlist[packages]{%
+ topsep=\smallskipamount,labelwidth=\linewidth,labelsep=0pt,%
+ font=\normalfont,parsep=\parskip,listparindent=\parindent,%
+ before=\tud@before@item{packages}%
+}
+% \end{macrocode}
+% Hiermit können ein oder mehrere Pakete erläutert werden. Des Weiteren werden
+% Textanker definiert, auf die im Zweifelsfall in der Dokumentation verlinkt
+% wird.
+% \begin{macrocode}
+\NewDocumentCommand\tud@item@packages{od<>d()}{%
+% \end{macrocode}
+% Die kommagetrennte Liste im optionalen Argument wird verwendet, um jedes
+% einzelnen Paket aufzulisten und einen dazugehörigen Textanker zu erzeugen.
+% Das optionale Argument in Guillemets kann genutzt werden, um \emph{alle}
+% gelisteten Pakete auf den gleichen CTAN-Link zielen zu lassen. Dies ist
+% beispielsweise für mehrere Pakete aus dem gleichen Bundle sinnvoll.
+% \begin{macrocode}
+ \def\@tempa##1{%
+ \@tempc%
+ \tud@lbl@get@curr*\tud@lbl@tmp{\tud@bdl@curr:\Package{##1}}%
+ \tudhyperdef{\tud@lbl@tmp}%
+ \begingroup%
+ \Package{##1}<#2>'url'|!|%
+ \endgroup%
+ \def\@tempc{, }%
+ }%
+ \stditem[{%
+ \IfValueT{#1}{%
+ \let\@tempc\relax%
+ \forcsvlist\@tempa{#1}%
+% \end{macrocode}
+% Wird im dritten optionalen Argument in runden Klammern ein Paket angegeben,
+% so wird ebenfalls ein Textanker erzeugt, allerdings auf einen Hyperlink zu
+% CTAN verzichtet.
+% \begin{macrocode}
+ \IfValueT{#3}{%
+ \tud@lbl@get@curr*\tud@lbl@tmp{\tud@bdl@curr:\Package{#3}}%
+ \quad(\tudhyperdef{\tud@lbl@tmp}\Package{#3}'none'|!|)%
+ }%
+ }%
+ }]%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@item@packages
+% \end{environment}^^A packages
+%
+% \subsection{Erläuterungen und weiterführende Ergänzungen im Handbuch}
+% \subsubsection{Tabelle mit automatisch berechneter Mehrspaltenzellenbreite}
+%
+% \begin{environment}{tabularm}
+% \begin{macro}{\tabularm@allcolumnpar}
+% \begin{macro}{\tabularm@box}
+% \begin{macro}{\tabularm@num}
+% \begin{length}{\tabularm@wd}
+% \begin{length}{\tempdim}
+% \changes{v2.02}{2014/08/16}{neu}^^A
+% Die Umgebung \env{tabularm} ist eine Erweiterung der \env{tabular}-Umgebung.
+% In dieser wird die Breite der zu setzenden Tabelle mit Hilfe der Box
+% \cs{tabularm@box} in \cs{tabularm@wd} gespeichert. Anschließend kann mit dem
+% Befehl \cs{allcolumnpar} eine Zeile über alle Spalten der Tabelle ausgegeben
+% werden. Dabei ist das zu übergebende Argument die Anzahl der zu erzeugenden,
+% linksbündigen Spalten.
+% \begin{macrocode}
+\newlength\tempdim
+\newsavebox\tabularm@box
+\newlength\tabularm@wd
+\newcommand*\tabularm@num{1}
+\NewEnviron{tabularm}[1]{%
+ \begin{lrbox}{\tabularm@box}%
+ \let\allcolumnpar\@gobble%
+ \begin{tabular}{*{#1}l}\BODY\end{tabular}%
+ \end{lrbox}%
+ \setlength\tabularm@wd{\wd\tabularm@box}%
+ \def\tabularm@num{#1}%
+ \let\allcolumnpar\tabularm@allcolumnpar%
+ \begin{tabular}{*{#1}l}\BODY\end{tabular}%
+}
+\newcommand*\tabularm@allcolumnpar[1]{%
+ \multicolumn{\tabularm@num}{@{}p{\tabularm@wd}@{}}{#1}%
+}
+% \end{macrocode}
+% \end{length}^^A \tempdim
+% \end{length}^^A \tabularm@wd
+% \end{macro}^^A \tabularm@box
+% \end{macro}^^A \tabularm@num
+% \end{macro}^^A \tabularm@allcolumnpar
+% \end{environment}^^A tabularm
+%
+% \subsubsection{Tabelle für mehrsprachigen Bezeichner}
+%
+% Mit Hilfe von \pkg{tabularx} können Tabellen bestimmter Breite und
+% automatisch berechneten Spaltenbreiten gesetzt werden.
+% \begin{macrocode}
+\RequirePackage{tabularx}[1999/01/07]
+% \end{macrocode}
+% \begin{macro}{\TermTable}
+% \begin{macro}{\Term@Table}
+% \begin{macro}{\Term@@Table}
+% Für sprachabhängige Bezeichner wird zusätzlich der Befehl \cs{TermTable}
+% definiert, dem eine kommaseparierte Liste übergeben werden kann. Anhand
+% dieser Liste werden die enthalten Begriffe für die Sprachen Deutsch und
+% English in einer Tabelle ausgegeben. Die Sternversion dieses Befehls nutzt
+% dafür die \env{tabularx}-Umgebung. Für diese kann ein zweites Argument
+% angegeben werden, welches die gewünschte Breite der Tabelle angibt.
+% \begin{macrocode}
+\NewDocumentCommand\TermTable{s m !g}{%
+ \let\tud@templist\relax%
+ \forcsvlist{\listadd\tud@templist}{#2}%
+ \ifhmode\par\fi%
+ \vskip\medskipamount%
+ \@afterindentfalse\@afterheading%
+ \IfBooleanTF{#1}{%
+ \IfValueTF{#3}{\setlength\@tempdima{#3}}{\setlength\@tempdima{\linewidth}}%
+ \setlength\@tempdimc{-.7\baselineskip}%
+ \begin{tabularx}{\@tempdima}{lXX}\Term@Table\end{tabularx}%
+ }{%
+ \setlength\@tempdimc{\z@}%
+ \begin{tabular}{lll}\Term@Table\end{tabular}%
+ }%
+ \par\addvspace{\medskipamount}%
+}
+\newcommand*\Term@Table{%
+ \toprule%
+ \textbf{Bezeichner} & \textbf{Deutsch} & \textbf{Englisch}\tabularnewline%
+ \midrule%
+ \forlistloop\Term@@Table{\tud@templist}%
+ \bottomrule%
+}
+\newcommand*\Term@@Table[1]{%
+ \Term{#1}'none' & %
+ \ifstr{\csuse{#1}}{}{\PName{leer}}{\csuse{#1}} & %
+ \selectlanguage{english}\vspace*{\@tempdimc}%
+ \ifstr{\csuse{#1}}{}{\PName{empty}}{\csuse{#1}}\tabularnewline%
+}
+% \end{macrocode}
+% \end{macro}^^A \Term@@Table
+% \end{macro}^^A \Term@Table
+% \end{macro}^^A \TermTable
+%
+% \subsubsection{Umgebung für die Angabe eines Beispiels}
+%
+% \begin{environment}{Example}
+% \begin{environment}{Example*}
+% Diese Umgebung wird für die exemplarische Erläuterung von bestimmten Aspekten
+% im Handbuch verwendet. Wenn dafür ein Quelltextauszug nötig ist, kann
+% innerhalb dieser die \env{Code}-Umgebung genutzt werden. Die Sternversion
+% unterdrückt dabei das Zurücksetzen des eigentlich entfernten vertikalen
+% Abstandes.
+% \begin{macrocode}
+\newenvironment{Example}{\csuse{Example*}}{%
+ \csuse{endExample*}%
+ \addvspace{-\topsep}%
+}
+\newenvironment{Example*}{%
+ \labeling{{\usekomafont{disposition}{Beispiel:\nobreakspace}}}%
+ \item[{\usekomafont{disposition}{Beispiel:\nobreakspace}}]%
+}{%
+ \endlabeling%
+}
+% \end{macrocode}
+% \end{environment}^^A Example*
+% \end{environment}^^A Example
+%
+% \iffalse
+%</class>
+% \fi
+%
+% \subsection{Lesen und Schreiben von Hilfsdateien}
+%
+% Für den Anwender werden im \TUDScript-Bundle einige Tutorials mit Hinweisen
+% zur Nutzung von \LaTeXe{} bereitgestellt. Innerhalb dieser werden Auszüge von
+% Quelltexten verwendet und erläutert. Zum einen soll die Möglichkeit
+% geschaffen werden, diese gesammelt am Ende eines Tutorials für ein
+% Copy"~\&"~Paste"~Beispiel zu verwenden. Andererseits soll auch das sofortige
+% Ausführen des beschriebenen Quelltextauszuges direkt im Tutorial möglich
+% sein.
+%
+% Dafür werden im Folgenden die Umgebungen \env{Preamble}, \env{Trunk} und
+% \env{Hint} sowie daraus abgeleitet Varianten definiert, womit sich die Angabe
+% und Erläuterung der Quelltexte im Tutorial logisch strukturieren lässt und
+% dennoch die notwendige Ordnung dieser für das Copy"~\&"~Paste"~Beispiel
+% aufrechterhalten werden kann. Hierfür zeichnen die beiden Umgebungen
+% \env{Preamble} und \env{Trunk} und deren Derivate verantwortlich. Die
+% Umgebung \env{Hint} steht für zusätzliche Erläuterungen bereit, welche jedoch
+% nicht in das Copy"~\&"~Paste"~Beispiel übernommen werden.
+%
+% \begin{macro}{\tud@write@a}
+% \changes{v2.02}{2014/10/22}{neu}^^A
+% \begin{macro}{\tud@write@b}
+% \changes{v2.02}{2014/11/02}{neu}^^A
+% \begin{macro}{\tud@read}
+% \changes{v2.02}{2014/08/19}{neu}^^A
+% Für die Erstellung der Indexe wird zum Sortieren das Programm \app{texindy}
+% genutzt. Für dieses wird eine eigene Stildatei verwendet, welche zur Laufzeit
+% erzeugt wofür zuerst ein Ausgabestream reserviert wird.
+% \begin{macrocode}
+\newcommand*\tud@write@a{}
+\newwrite\tud@write@a
+% \end{macrocode}
+% Für die Tutorials werden später zusätzlich noch ein weiterer Ausgabe- sowie
+% ein Eingabestream benötigt, die hier gleich mit initialisiert werden.
+% \begin{macrocode}
+%<*package>
+\newcommand*\tud@write@b{}
+\newwrite\tud@write@b
+\newcommand*\tud@read{}
+\newread\tud@read
+%</package>
+% \end{macrocode}
+% \end{macro}^^A \tud@read
+% \end{macro}^^A \tud@write@b
+% \end{macro}^^A \tud@write@a
+%
+% \subsection{Einbinden von Quelltextauszügen}
+%
+% Sowohl im Handbuch als auch in den Tutorials werden Quelltextauszüge für das
+% bessere Verständnis des Anwenders angegeben. Um diese darzustellen wird das
+% Paket \pkg{listings} verwendet.
+% \begin{macrocode}
+\RequirePackage{listings}[2014/03/04]
+\lstdefinestyle{tudscr}{%
+ basicstyle=\ttfamily\ifdef{\setstretch}{\setstretch{1}}{},%
+ keywordstyle=,%
+ columns=fullflexible,keepspaces,%
+ aboveskip=\smallskipamount,%
+ belowskip=\smallskipamount,%
+ language=[LaTeX]TeX,%
+ texcl,%
+}
+% \end{macrocode}
+%
+% \iffalse
+%<*class>
+% \fi
+%
+% \begin{environment}{Code}
+% \begin{macro}{\tud@currentHref}
+% Folgend werden Befehle und Umgebungen für die Darstellung von Quelltexten im
+% Handbuch definiert. Mit dieser Umgebung können kurze Quelltextbeispiele
+% ausgegeben werden. Sicherlich sinnvoll ist, die \env{Code}-Umgebung innerhalb
+% von \env{Example} oder \env{quoting} zu verwenden, um den Quelltext etwas
+% abzuheben.
+% \begin{macrocode}
+\lstnewenvironment{Code}[1][]{\lstset{style=tudscr,#1}}{}
+% \end{macrocode}
+% Innerhalb der Umgebung \env{Code} wird \cs{@currentHref} unerwünschter Weise
+% geändert. Um dies zu vermeiden, wird dieser Befehl gesichert und anschließend
+% zurückgesetzt.
+% \begin{macrocode}
+\newcommand*\tud@currentHref{}
+\BeforeBeginEnvironment{Code}{\global\let\tud@currentHref\@currentHref}
+\AfterEndEnvironment{Code}{\global\let\@currentHref\tud@currentHref}
+% \end{macrocode}
+% \end{macro}^^A \tud@currentHref
+% \end{environment}^^A Code
+%
+% \iffalse
+%</class>
+% \fi
+%
+% \subsection{Kompilieren von externen Dateien und Querverweise auf diese}
+%
+% Das Paket \pkg{filemod} wird genutzt, um externer Dateien nur zu kompilieren,
+% wenn dies aufgrund einer Änderung auch notwendig ist.
+% \begin{macrocode}
+\RequirePackage{filemod}[2011/09/19]
+% \end{macrocode}
+% Um \cs{ShellEscape} sowohl für Windows als auch für unixoide Betriebssysteme
+% nutzen zu können, wird das Paket \pkg{ifplatform} geladen.
+% \begin{macrocode}
+\RequirePackage{ifplatform}[2010/10/22]
+% \end{macrocode}
+% \begin{macro}{\tud@shellescape@wrn}
+% \changes{v2.02}{2014/10/14}{neu}^^A
+% Dieses Makro wird verwendet, wenn eine gesuchte Datei nicht gefunden wurde,
+% weil das Dokument noch nicht mit dem Schalter \file{-{}-shell-escape}
+% kompiliert wurde.
+% \begin{macrocode}
+\newcommand*\tud@shellescape@wrn[1]{%
+%<*class>
+ \ClassWarning{tudscrmanual}%
+%</class>
+%<*package>
+ \PackageWarning{tudscrtutorial}%
+%</package>
+ {%
+ File `#1' is missing!\MessageBreak%
+ You have to recompile this document with\MessageBreak%
+ activated shell escape option%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@shellescape@wrn
+% \begin{macro}{\tud@latex@ext}
+% \changes{v2.06}{2019/06/21}{neu}^^A
+% Für das verschachtelte Aufrufen von \app{pdflatex} bzw. \app{lualatex}.
+% \begin{macrocode}
+\newcommand*\tud@latex@ext{}
+\ifpdftex%
+ {\def\tud@latex@ext{pdflatex\space}}%
+ {\def\tud@latex@ext{lualatex\space}}%
+% \end{macrocode}
+% \end{macro}^^A \tud@latex@ext
+% \begin{macro}{\Tutorial}
+% \changes{v2.02}{2014/08/22}{neu}^^A
+% \changes{v2.02}{2014/10/22}{Reimplementierung}^^A
+% \begin{macro}{\hypertut}
+% \changes{v2.02}{2014/09/02}{neu}^^A
+% Die gegebenenfalls notwendige Kompilierung und die Referenzierung eines
+% Tutorials aus dem Handbuch erfolgt mit \cs{Tutorial}. Außerdem erfolgt mit
+% \cs{hypertut} ein verlinkter Eintrag in den Index.
+% \begin{macrocode}
+%<*class>
+\newrobustcmd*\hypertut[2]{%
+ \hyperref{tutorials/#1.pdf}{#1}{tutorials:#1}{\File*{#1.pdf}#2}%
+}
+\NewDocumentCommand\Tutorial{s m !d||}{%
+ \ifnum\pdf@shellescape=\@ne\relax%
+% \end{macrocode}
+% Um mit den verschachtelten Aufrufen von \app{pdflatex} umgehen zu können,
+% wird das ganze Prozedere in ein Skript ausgelagert. Somit können die Aufrufe
+% von \app{pdflatex} für die Tutorials aus dem entsprechenden Ordner und mit
+% den notwendigen Optionen erfolgen.
+% \begin{macrocode}
+ \filemodCmp{tutorials/#2.pdf}{tutorials/#2.tex}{}{%
+ \let\@tempa\@empty%
+ \ifdef{\tudfinalflag}{\appto\@tempa{\def\noexpand\tudfinalflag{}}}{}%
+ \ifdef{\tudprintflag}{\appto\@tempa{\def\noexpand\tudprintflag{}}}{}%
+ \appto\@tempa{\noexpand\input{#2.tex}}%
+ \def\@tempb##1{%
+ \immediate\openout\tud@write@a=tutorials.sh\relax%
+ \immediate\write\tud@write@a{cd tutorials^^J##1}%
+ \immediate\closeout\tud@write@a%
+% \end{macrocode}
+% Hier erfolgt die Unterscheidung der Befehle für die unterschiedlichen OS.
+% \begin{macrocode}
+ \ifwindows%
+ \ShellEscape{rename tutorials.sh tutorials.bat}%
+ \ShellEscape{tutorials.bat}%
+ \ShellEscape{del tutorials.bat}%
+ \else%
+ \ShellEscape{bash tutorials.sh}%
+ \ShellEscape{rm tutorials.sh}%
+ \fi%
+ }%
+ \@tempb{\tud@latex@ext -shell-escape "\@tempa"}%
+ \IfFileExists{tutorials/#2.bcf}{\@tempb{biber #2}}{}%
+ \@tempb{%
+ \tud@latex@ext "\@tempa"^^J%
+ \tud@latex@ext -shell-escape "\@tempa"^^J%
+ \tud@latex@ext -shell-escape "\@tempa"%
+ }%
+ }%
+ \fi%
+% \end{macrocode}
+% Hyperlink und Indexeintrag.
+% \begin{macrocode}
+ \IfFileExists{tutorials/#2.pdf}{%
+ \hypertut{#2}{}%
+ }{%
+ \File*{#2.pdf}%
+ \tud@shellescape@wrn{tutorials/#2.pdf}%
+ }%
+ \IfBooleanF{#1}{%
+ \index[files]{\hypertut{#2}{\suffix{Tutorial}}\IfValueT{#3}{|#3}}%
+ }%
+}
+%</class>
+% \end{macrocode}
+% Der Befehl für die Querverweise innerhalb von Tutorials.
+% \begin{macrocode}
+%<*package>
+\newcommand*\Tutorial[1]{\href{#1.pdf}{\textsbn{#1.pdf}}}
+%</package>
+% \end{macrocode}
+% \end{macro}^^A \hypertut
+% \end{macro}^^A \Tutorial
+% \begin{macro}{\IncludeExample}
+% \changes{v2.02}{2014/07/25}{Skalierung der eingefügten Seiten}^^A
+% Mit diesem Befehl wird eine \LaTeX-Datei ggf. übersetzt und anschließend als
+% PDF"~Datei wieder eingebunden. Zuvor wird der dazugehörige Quelltext mittels
+% \cs{lstinputlisting} im Dokument ausgegeben. Dieser Befehl wird lediglich für
+% die Klasse \cls{tudscrmanual} benötigt.
+% \begin{macrocode}
+%<*class>
+\newcommand*\IncludeExample[1]{%
+ \lstinputlisting[style=tudscr]{examples/#1}%
+% \end{macrocode}
+% Die Beispiele werden nur erneut kompiliert, wenn sich diese geändert haben
+% oder noch gar kein entsprechendes PDF"~Dokument existiert.
+% \begin{macrocode}
+ \ifnum\pdf@shellescape=\@ne\relax%
+ \filemodCmp{examples/#1.pdf}{examples/#1.tex}{}{%
+ \ShellEscape{%
+ \tud@latex@ext -output-directory examples examples/#1.tex^^J%
+ \tud@latex@ext -output-directory examples examples/#1.tex%
+ }%
+ }%
+% \end{macrocode}
+% Sollte es eine spezielle Version eines beispiels für die Druckausgabe geben,
+% wird auch dieses kompiliert.
+% \begin{macrocode}
+ \filemodCmp{examples/#1_print.pdf}{examples/#1_print.tex}{}{%
+ \ShellEscape{%
+ \tud@latex@ext -output-directory examples examples/#1_print.tex^^J%
+ \tud@latex@ext -output-directory examples examples/#1_print.tex%
+ }%
+ }%
+ \fi%
+% \end{macrocode}
+% Ist die gesuchte Datei vorhanden, wird diese auch eingebunden. Andernfalls
+% wird eine Warnung mit dem Hinweis auf die notwendige Verwendung von
+% \app{pdflatex} mit dem Schalter \file{-{}-shell-escape} erzeugt.
+% \begin{macrocode}
+ \def\@tempa{examples/#1.pdf}%
+ \ifdef{\tudprintflag}{%
+ \IfFileExists{examples/#1_print.pdf}{\def\@tempa{examples/#1_print.pdf}}{}%
+ }{}%
+ \IfFileExists{\@tempa}{%
+ \edef\@tempa{%
+ \noexpand\includepdf[%
+ pages=-,noautoscale,frame,keepaspectratio,pagecommand={},%
+ height=\noexpand\textheight,width=\noexpand\textwidth,offset=5mm 0mm%
+ ]{\@tempa}%
+ }%
+ \@tempa%
+ }{%
+ \tud@shellescape@wrn{\@tempa}%
+ }%
+}
+%</class>
+% \end{macrocode}
+% \end{macro}^^A \IncludeExample
+%
+% \iffalse
+%<*package>
+% \fi
+%
+% \begin{macro}{\tud@tut@temp}
+% \changes{v2.05}{2016/05/01}{neu}^^A
+% \begin{macro}{\tud@tut@readtostream}
+% \changes{v2.02}{2014/12/16}{neu}^^A
+% \begin{macro}{\tud@tut@append}
+% \changes{v2.02}{2014/08/19}{neu}^^A
+% Bei den Tutorials soll zum Schluss ein komplett kompilierbares Beispiel für
+% Copy~\&~Paste gegeben werden. Um dieses zusammenzubauen, werden alle im
+% Dokument innerhalb der Varianten der \env{Trunk}-Umgebungen gegebenen
+% Codefragmente zusammengesetzt. Um die Quelltexte einlesen und verarbeiten zu
+% können, werden zwei Eingabe- sowie ein Ausgabestream benötigt, welche bereits
+% zuvor initialisiert wurden.
+%
+% Mit \cs{tud@tut@readtostream} wird der Inhalt der Datei im ersten Argument
+% in den Ausgabestream des zweiten Argumentes geschrieben. Dies wird durch
+% \cs{tud@tut@append} genutzt.
+% \begin{macrocode}
+\newcommand*\tud@tut@temp{}
+\edef\tud@tut@temp{\@currname-temp}
+\newcommand*\tud@tut@readtostream[2]{%
+ \begingroup%
+ \endlinechar=\m@ne\relax%
+ \openin\tud@read=#1%
+% \end{macrocode}
+% Der Schalter \cs{if@tempswa} wird verwendet, um unnötige Leerzeilen in der
+% Ausgabedatei zu entfernen. Wurde eine nicht leere Zeile gefunden, wird diese
+% auf jeden Fall geschrieben, indem \cs{@tempswatrue} gesetzt wird. Eine leere
+% Zeile wird~-- bis auf den Sonderfall, dass es sich um die letzte Zeile in der
+% Datei handelt~-- zunächst nicht weiter beachtet. Im Zweifelsfall wird diese
+% (erste) Leerzeile geschrieben.
+% \begin{macrocode}
+ \@tempswafalse%
+ \loop\unless\ifeof\tud@read%
+ \readline\tud@read to\tud@reserved%
+ \ifx\tud@reserved\@empty%
+ \ifeof\tud@read\@tempswafalse\fi%
+ \else%
+ \@tempswatrue%
+ \fi%
+% \end{macrocode}
+% Hier erfolgt das eigentliche Schreiben im selektierten Stream.
+% \begin{macrocode}
+ \if@tempswa%
+ \immediate\write#2{\expandonce\tud@reserved}%
+ \fi%
+% \end{macrocode}
+% Im Nachgang wird überprüft, ob die aktuell geschriebene Zeile leer war. Ist
+% dies der Fall, so wird \cs{@tempswafalse} gesetzt, um eine etwaig folgende
+% Leerzeile nicht in die Ausgabedatei zu schrieben.
+% \begin{macrocode}
+ \ifx\tud@reserved\@empty\@tempswafalse\fi%
+ \repeat%
+ \closein\tud@read%
+ \endgroup%
+}
+% \end{macrocode}
+% Der innerhalb der Umgebungen \env{Preamble} und \env{Trunk}~-- sowie deren
+% Derivaten~-- angegebene Inhalt wird beim Schließen dieser Umgebungen in die
+% Hilfsdatei \cs{tud@tut@temp.tex} zwischengespeichert. Mit \cs{tud@tut@append}
+% wird der Inhalt dieser Datei ausgelesen und den Hilfsdateien
+% \cs{tud@tut@temp-preamble.tex} respektive \cs{tud@tut@temp-trunk.tex}
+% angehangen und damit gesichert, um die jeweiligen Quelltextauszüge aus dem
+% Tutorial für die Präambel sowie den Dokumentteil trennen beziehungsweise
+% sortieren zu können.
+% \begin{macrocode}
+\newcommand*\tud@tut@append[1]{%
+ \ifstr{#1}{preamble}{%
+ \tud@tut@readtostream{\tud@tut@temp.tex}{\tud@write@a}%
+ }{%
+ \ifstr{#1}{trunk}{%
+ \tud@tut@readtostream{\tud@tut@temp.tex}{\tud@write@b}%
+ }{%
+ \tud@tut@readtostream{\tud@tut@temp.tex}{#1}%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@tut@append
+% \end{macro}^^A \tud@tut@readtostream
+% \end{macro}^^A \tud@tut@temp
+% \begin{macro}{\StartTutorial}
+% \changes{v2.02}{2014/08/21}{neu}^^A
+% \begin{macro}{\FinishTutorial}
+% \changes{v2.02}{2014/08/21}{neu}^^A
+% Mit \cs{StartTutorial} wird ein Hyperlink für den Querverweis aus dem
+% Handbuch definiert. Außerdem wird gleich der Titel und~-- falls im optionalen
+% Argument angegeben~-- eine Zusammenfassung gesetzt. Die Sternversion gibt
+% nach der optionalen Beschreibung einen einleitenden Satz zur Dokumnentklasse
+% und sinnvollen Paketen an. Diese sollten direkt nach \cs{StartTutorial} in
+% der \env{Preamble}-Umgebung angegeben werden.
+% \begin{macrocode}
+\TUDoptions{headingsvskip=-10ex}
+\newcommand\StartTutorial[1][]{%
+ \immediate\openout\tud@write@a=\tud@tut@temp-preamble.tex\relax%
+ \immediate\openout\tud@write@b=\tud@tut@temp-trunk.tex\relax%
+ \immediate\write\tud@write@b{^^J\string\begin{document}^^J}%
+ \Hy@raisedlink{\hyperdef{\jobname}{tutorials:\jobname}{}}%
+ \faculty{}%
+ \maketitle%
+ \ifblank{#1}{}{%
+ \noindent%
+ \begin{abstract}%
+ \noindent#1%
+ \end{abstract}%
+ \medskip%
+ }%
+ \noindent\ignorespaces%
+}
+% \end{macrocode}
+% Der Befehl \cs{FinishTutorial} schleißt den noch offenen Ausgabestream und
+% gibt den vorgestellten Quelltext vollständig aus.
+% \begin{macrocode}
+\newcommand\FinishTutorial[1][]{%
+ \immediate\write\tud@write@b{^^J\string\end{document}^^J}%
+ \immediate\closeout\tud@write@b%
+ \immediate\closeout\tud@write@a%
+ \immediate\openout\tud@write@a\jobname-example.tex\relax%
+ \tud@tut@readtostream{\tud@tut@temp-preamble.tex}{\tud@write@a}%
+ \tud@tut@readtostream{\tud@tut@temp-trunk.tex}{\tud@write@a}%
+ \immediate\closeout\tud@write@a%
+ \clearpage%
+ \addsec{Copy\nobreakspace\&\nobreakspace{}Paste}%
+ \thispagestyle{empty}%
+ \pagestyle{empty}%
+ Zum Ende des Dokumentes wird das vorgestellte Tutorial als \"ubersetzbarer
+ Quelltext ausgegeben, um dieses via Copy~\&~Paste verwenden und alle Punkte
+ nachvollziehen zu k\"onnen. Bitte beachten Sie, dass~-- abh\"angig vom
+ genutzten PDF-Betrachter~-- beim Kopieren die dargestellten Einz\"uge und
+ Abs\"atze m\"oglicherweise verloren gehen k\"onnen. Dies kann insbesondere
+ aufgrund fehlender Leerzeilen zu einem unvorteilhaften Ausgabeergebnis
+ f\"uhren. Alternativ finden Sie den folgenden \hologo{LaTeX}-Quelltext auch
+ im Pfad \Path{\PName{texmf}/source/latex/tudscr/doc/examples/} als Datei
+ \File{\jobname-example.tex}. \par #1%
+ %
+ \begin{quoting}[rightmargin=0pt]%
+ \lstinputlisting[style=tudscr]{\jobname-example.tex}%
+ \end{quoting}%
+ %
+% \end{macrocode}
+% Falls es möglich ist, werden nach dem Durchlauf alle nicht mehr benötigten
+% Hilfsdateien gelöscht.
+% \begin{macrocode}
+ \ifnum\pdf@shellescape=\@ne\relax%
+ \ifwindows%
+ \def\@tempa{del}%
+ \else%
+ \def\@tempa{rm}%
+ \fi%
+ \ShellEscape{\@tempa\space\tud@tut@temp*.*}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \FinishTutorial
+% \end{macro}^^A \StartTutorial
+% \begin{macro}{\CodePreamble}
+% \changes{v2.02}{2014/08/20}{neu}^^A
+% \begin{macro}{\Code@Preamble}
+% \changes{v2.02}{2014/10/22}{neu}^^A
+% \begin{macro}{\CodeHook}
+% \changes{v2.02}{2014/10/11}{neu}^^A
+% \begin{macro}{\Code@Hook}
+% \changes{v2.02}{2014/10/11}{neu}^^A
+% Bereitstellung von Hilfsmakros für die formatierte Ausgabe von Quelltexten.
+% \begin{macrocode}
+\newcommand\Code@Preamble{}
+\let\Code@Preamble\relax
+\newcommand\CodePreamble[1]{%
+ \long\gdef\Code@Preamble{%
+ \hskip.5\leftmargin\textit{Die resultierende Ausgabe:}\space#1%
+ }%
+}
+\newcommand*\Code@Hook{}
+\let\Code@Hook\relax
+\newcommand*\CodeHook[1]{\gdef\Code@Hook{#1}}
+% \end{macrocode}
+% \end{macro}^^A \Code@Hook
+% \end{macro}^^A \CodeHook
+% \end{macro}^^A \Code@Preamble
+% \end{macro}^^A \CodePreamble
+% \begin{macro}{\StandaloneFile}
+% \changes{v2.02}{2014/08/19}{neu}^^A
+% \begin{macro}{\StandaloneDate}
+% \changes{v2.05}{2015/11/18}{neu}^^A
+% Die Umgebungen \env{Trunk!} und \env{Hint!} erzeugen nach der Ausgabe des
+% Quelltextes mit dem Makro \cs{tud@tut@pdf} eine PDF-Datei, welche mit
+% \cs{IncludeStandalone} in das Tutorial eingebunden werden kann.
+% \begin{macrocode}
+\newcommand*\StandaloneFile{}
+\let\StandaloneFile\relax
+\newcommand*\StandaloneDate{}
+% \end{macrocode}
+% \end{macro}^^A \StandaloneDate
+% \end{macro}^^A \StandaloneFile
+% \begin{macro}{\tud@tut@pre}
+% \changes{v2.02}{2014/08/19}{neu}^^A
+% \begin{macro}{\tud@tut@post}
+% \changes{v2.02}{2014/08/19}{neu}^^A
+% Dies sind Hilfsmakros, welche zu Beginn und Ende der Quelltextumgebungen
+% \env{Preamble}, \env{Trunk} und \env{Hint} für das Sichern der Inhalte in
+% eine Hilfsdatei verantwortlich sind, wofür die \env{filecontents}-Umgebung
+% genutzt wird.
+% \begin{macrocode}
+\newcommand*\tud@tut@pre{%
+ \csuse{filecontents*}{\tud@tut@temp.tex}%
+}
+\newcommand*\tud@tut@post{%
+ \csuse{endfilecontents*}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@tut@post
+% \end{macro}^^A \tud@tut@pre
+% Die nachfolgenden Umgebungen verwenden die beiden, gerade zuvor eingeführten
+% Hilfsmakros \cs{tud@tut@pre} und \cs{tud@tut@post}, welche den gegebenen
+% Inhalt in die temporäre Datei \file{\string\tud@tut@temp.tex} schreiben. Die
+% im Dokument in den Umgebungen gesetzten Quelltextauszüge werden mit dem Makro
+% \cs{tud@tut@append}~-- abhängig vom gegebenen Argument~-- zusätzlich für ein
+% Copy"~\&"~Paste"~Beispiel in \file{\string\tud@tut@temp-preamble.tex} oder
+% \file{\string\tud@tut@temp-trunk.tex} gepsiechert. Die damit gesammelten
+% Inhalte werden am Ende mit \cs{FinishTutorial} ausgegeben.
+% \begin{environment}{Preamble}
+% \changes{v2.02}{2014/11/02}{neu}^^A
+% \begin{environment}{Preamble*}
+% \changes{v2.02}{2014/11/03}{neu}^^A
+% \begin{environment}{Preamble+}
+% \changes{v2.02}{2014/11/03}{neu}^^A
+% Die Umgebung \env{Preamble} dient für die Ausgabe von Quelltextauszügenen,
+% welche in einem \LaTeXe-Dokument in der Präambel verwendet werden müssen oder
+% sollten. Die in ihr gesetzten Inhalte werden für das Copy"~\&"~Paste-Beispiel
+% vor den Inhalten aus der Umgebung \env{Trunk} ausgegeben. Die Sternversion
+% führt den Inhalt zusätzlich im Dokument aus. Die Pluszechen"=Version fügt dem
+% Ausgabestream ihren Inhalt hinzu, ohne das dieser ausgegeben oder ausgeführt
+% wird.
+% \begin{macrocode}
+\newenvironment{Preamble}{\tud@tut@pre}{%
+ \tud@tut@post%
+ \tud@tut@append{preamble}%
+ \gdef\@tempa{%
+ \tud@tut@lst%
+ \global\let\Code@Preamble\relax%
+ }%
+ \aftergroup\@tempa%
+}
+\newenvironment{Preamble*}{\tud@tut@pre}{%
+ \tud@tut@post%
+ \tud@tut@append{preamble}%
+ \gdef\@tempa{%
+ \tud@tut@lst%
+ \tud@tut@input%
+ \global\let\Code@Preamble\relax%
+ }%
+ \aftergroup\@tempa%
+}
+\newenvironment{Preamble+}{\tud@tut@pre}{%
+ \tud@tut@post%
+ \tud@tut@append{preamble}%
+ \gdef\@tempa{%
+ \global\let\Code@Preamble\relax%
+ }%
+ \aftergroup\@tempa%
+}
+% \end{macrocode}
+% \end{environment}^^A Preamble+
+% \end{environment}^^A Preamble*
+% \end{environment}^^A Preamble
+% \begin{environment}{Trunk}
+% \changes{v2.02}{2014/08/16}{neu}^^A
+% \begin{environment}{Trunk*}
+% \changes{v2.02}{2014/08/19}{neu}^^A
+% \begin{environment}{Trunk+}
+% \changes{v2.02}{2014/11/03}{neu}^^A
+% \begin{environment}{Trunk!}
+% \changes{v2.02}{2014/10/07}{neu}^^A
+% Die Umgebung \env{Trunk} dient zur Ausgabe von exemplarischen Quelltexten,
+% welche in einem \LaTeXe-Dokument innerhalb der \env{document}-Umgebung
+% verwendet werden müssen oder sollten. Für das Copy"~\&"~Paste-Beispiel werden
+% die gegebenen Inhalte nach den Inhalten aus der Umgebung \env{Preamble}
+% ausgegeben. Die Sternversion der Umgebung führt ihren Inhalt zusätzlich im
+% Dokument aus. Die Pluszeichen"=Version fügt dem Ausgabestream ihren Inhalt
+% hinzu, ohne diesen auszugeben oder auszuführen. Die Ausrufezeichen"=Version
+% fügt den Quelltext im Dokument ein und führt diesen zusätzlich in einer
+% separaten Datei mit einem minimalen Dokumentkörper aus, um daraus eine
+% PDF-Datei zu erzeugen, welche im Nachhinein mit \cs{IncludeStandalone} als
+% Grafik eingebunden werden kann. Dies ist für Quelltextabschnitte gedacht,
+% deren Ausgabe zu groß ist, um diese direkt anzuzeigen und dennoch dargestellt
+% werden sollen.
+% \begin{macrocode}
+\newenvironment{Trunk}{\tud@tut@pre}{%
+ \tud@tut@post%
+ \tud@tut@append{trunk}%
+ \gdef\@tempa{%
+ \tud@tut@lst%
+ \global\let\Code@Preamble\relax%
+ }%
+ \aftergroup\@tempa%
+}
+\newenvironment{Trunk*}{\tud@tut@pre}{%
+ \tud@tut@post%
+ \tud@tut@append{trunk}%
+ \gdef\@tempa{%
+ \tud@tut@lst%
+ \tud@tut@input%
+ \global\let\Code@Preamble\relax%
+ }%
+ \aftergroup\@tempa%
+}
+\newenvironment{Trunk+}{\tud@tut@pre}{%
+ \tud@tut@post%
+ \tud@tut@append{trunk}%
+ \gdef\@tempa{%
+ \global\let\Code@Preamble\relax%
+ }%
+ \aftergroup\@tempa%
+}
+\newenvironment{Trunk!}[1]{%
+ \gdef\StandaloneFile{#1}%
+ \tud@tut@pre%
+}{%
+ \tud@tut@post%
+ \tud@tut@append{trunk}%
+ \gdef\@tempa{%
+ \tud@tut@lst%
+ \tud@tut@pdf%
+ \global\let\Code@Preamble\relax%
+ }%
+ \aftergroup\@tempa%
+}
+% \end{macrocode}
+% \end{environment}^^A Trunk!
+% \end{environment}^^A Trunk+
+% \end{environment}^^A Trunk*
+% \end{environment}^^A Trunk
+% \begin{environment}{Hint}
+% \changes{v2.02}{2014/09/16}{neu}^^A
+% \begin{environment}{Hint*}
+% \changes{v2.02}{2014/10/13}{neu}^^A
+% \begin{environment}{Hint?}
+% \changes{v2.02}{2014/12/09}{neu}^^A
+% \begin{environment}{Hint!}
+% \changes{v2.02}{2014/11/13}{neu}^^A
+% Um Quelltextausschnitte zur weiterführenden Information anzugeben, wird die
+% Umgebung \env{Hint} definiert. Der Inhalt wird ausgegben und~-- falls die
+% Sternversion genutzt wurde~-- auch ausgeführt, allerdings nicht in das
+% Copy"~\&"~Paste"~Beispiel übernommen. Ansonsten entsprechen alle Umgebungen
+% in ihren Eigenschaften den äquivalenten \env{Trunk}-Umgebungen. Die Version
+% mit Fragezeichen ist für Quelltextauszüge gedacht, die ungeprüft \emph{vor}
+% dessen Ausgabe ausgeführt werden sollen.
+% \begin{macrocode}
+\newenvironment{Hint}{\tud@tut@pre}{%
+ \tud@tut@post%
+ \gdef\@tempa{%
+ \tud@tut@lst%
+ \global\let\Code@Preamble\relax%
+ }%
+ \aftergroup\@tempa%
+}
+\newenvironment{Hint*}{\tud@tut@pre}{%
+ \tud@tut@post%
+ \gdef\@tempa{%
+ \tud@tut@lst%
+ \tud@tut@input%
+ \global\let\Code@Preamble\relax%
+ }%
+ \aftergroup\@tempa%
+}
+\newenvironment{Hint?}{\tud@tut@pre}{%
+ \tud@tut@post%
+ \gdef\@tempa{%
+ \InputCode%
+ \tud@tut@lst%
+ \global\let\Code@Preamble\relax%
+ }%
+ \aftergroup\@tempa%
+}
+\newenvironment{Hint!}[1]{%
+ \gdef\StandaloneFile{#1}%
+ \tud@tut@pre%
+}{%
+ \tud@tut@post%
+ \gdef\@tempa{%
+ \tud@tut@lst%
+ \tud@tut@pdf%
+ \global\let\Code@Preamble\relax%
+ }%
+ \aftergroup\@tempa%
+}
+% \end{macrocode}
+% \end{environment}^^A Hint!
+% \end{environment}^^A Hint?
+% \end{environment}^^A Hint*
+% \end{environment}^^A Hint
+% \begin{macro}{\tud@tut@lst}
+% \changes{v2.02}{2014/10/07}{neu}^^A
+% Damit wird der Quelltext eingezogen ausgegeben.
+% \begin{macrocode}
+\newcommand*\tud@tut@lst{%
+ \begin{quoting}[rightmargin=0pt]%
+ \lstinputlisting[style=tudscr]{\tud@tut@temp.tex}%
+ \end{quoting}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@tut@lst
+% \begin{macro}{\tud@tut@input}
+% \changes{v2.02}{2014/10/13}{neu}^^A
+% Für die Ausgabe des Quelltextergebnisses erfolgt ein linker Einzug. Außerdem
+% werden unter anderem abhängig von der Verwendung eines erklärenden Textes die
+% eingefügten vertikalen Abstände angepasst.
+% \begin{macrocode}
+\newcommand*\tud@tut@input{%
+% \end{macrocode}
+% Nach dem Ausführen des ersten Argumentes von \cs{@tempa} wird geprüft, ob
+% dieses überhaupt eine sichtbare Ausgabe erzeugt hat. Nur für diesen Fall wird
+% nach dieser vertikaler Leerraum eingefügt. Der Anfang entspricht prinzipiell
+% dem Standardbefehl \cs{settoheight}, jedoch wird im Inneren zusätzlich eine
+% \cs{vbox} verwendet, um damit auch mathematische Umgebungen testen zu können.
+% Das Ganze findet innerhalb einer Gruppierung statt, um keine Änderungen zu
+% erzeugen.
+% \begin{macrocode}
+ \def\@tempa##1##2{%
+ ##1%
+ \begingroup%
+ ##2%
+ \setbox\@tempboxa\hbox{\vbox{##1}}%
+ \@tempdima=\ht\@tempboxa%
+ \setbox\@tempboxa\box\voidb@x%
+ \ifdim\@tempdima>\z@\relax%
+ \endgraf%
+ \vspace{\medskipamount}%
+ \noindent\ignorespaces%
+ \fi%
+ \endgroup%
+ }%
+% \end{macrocode}
+% Da aufgrund der Verwendung der \env{filecontents}-Umgebung ein optionales
+% Argument für alle Abwandlungen der Quelltextumgebungen nicht möglich ist,
+% wird \cs{CodePreamble} bereitgestellt, womit der Ausgabe ein erläuternder
+% Text vorangestellt werden kann.
+% \begin{macrocode}
+ \@tempa{\Code@Preamble}{}%
+ \setlength\@tempdimc{\leftskip}%
+ \setlength\leftskip{\leftmargin}%
+% \end{macrocode}
+% Durch die zweimalige Verwendung von \file{\string\tud@tut@temp.tex}~-- einmal
+% direkt und einmal innerhalb einer Box~-- können darin verwendete Befehle wie
+% \cs{newcommand} zu Fehler führen. Mit dem Makro \cs{CodeHook} lassen sich
+% diese Konflikte durch eine lokale Redefinition ebensolcher Befehle auflösen
+% (bspw. \cs{let}\cs{newcommand}\cs{renewcommand}).
+% \begin{macrocode}
+ \@tempa{\input{\tud@tut@temp.tex}}{\Code@Hook}%
+ \global\let\Code@Hook\relax%
+ \setlength\leftskip{\@tempdimc}%
+ \noindent\ignorespaces%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@tut@input
+% \begin{macro}{\InputCode}
+% \changes{v2.02}{2014/10/21}{neu}^^A
+% Mit \cs{InputCode} kann der Inhalt der letzen \env{Trunk}-Umgebung
+% direkt ausgeführt werden, ohne diesen zuvor mit \cs{tud@tut@input} zu prüfen
+% und zu formatieren.
+% \begin{macrocode}
+\newcommand*\InputCode{\input{\tud@tut@temp.tex}}
+% \end{macrocode}
+% \end{macro}^^A \InputCode
+% \begin{macro}{\tud@tut@pdf}
+% \changes{v2.02}{2014/10/22}{neu}^^A
+% Die Umgebungen \env{Trunk!} und \env{Hint!} verwenden nach der Ausgabe des
+% Quelltextes diesen abermals, um daraus eine PDF-Datei zu erzeugen. Dafür wird
+% eine temporäre \LaTeX-Datei mithilfe einer \env{filecontents}-Umgebung
+% erzeugt. Diese bindet die mit \env{Trunk!} erzeugte Datei ein und wird
+% anschließend via \cs{ShellEscape} kompiliert. Dabei sollte man sich nicht von
+% der doppelten Verwendung von \cs{jobname} verwirren lassen. Der Dateiname der
+% temporär erzeugten \LaTeX-Datei ist abhängig vom gesetzten Tutorial. Beim
+% Aufruf dieser wird über die Optionen von \app{pdflatex} der verwendete
+% \cs{jobname} angepasst (siehe \cs{tud@tut@pdf}).
+% \begin{macrocode}
+\IfFileExists{\tud@tut@temp-standalone.tex}{\@tempswafalse}{\@tempswatrue}
+\if@tempswa%
+\begin{filecontents*}{\tud@tut@temp-standalone.tex}
+\documentclass[english,ngerman]{tudscrreprt}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{tudscrsupervisor}
+\usepackage{isodate}
+\usepackage{enumitem}
+\setlist{noitemsep}
+\begin{document}
+\ifdefvoid{\StandaloneDate}{}{\date{\StandaloneDate}}%
+\input{\jobname.tex}%
+\end{document}
+\end{filecontents*}
+\fi
+% \end{macrocode}
+% Der Quelltext aus den Umgebungen \env{Trunk!} und \env{Hint!} wird~-- wie bei
+% allen anderen \env{Trunk}-Derivaten~-- in \file{\string\tud@tut@temp.tex}
+% gesichert. Beim Aufruf von \app{pdflatex} wird durch die Nutzung der Option
+% \file{-jobname=\string\tud@tut@temp} die Definition von \cs{jobname} in der
+% aufgerufenen Datei \file{\string\tud@tut@temp-standalone.tex} überschrieben
+% und der Inhalt von \file{\string\tud@tut@temp.tex} wie gewünscht eingebunden
+% und kompiliert. Damit die so erstellte PDF-Datei mit \cs{IncludeStandalone}
+% im weiteren Verlauf in das Tutorial eingebunden werden kann, wird diese
+% außerdem noch in \cs{\meta{Argument}-temp.pdf} umbenannt. Das Makro
+% \cs{StandaloneDate} wird auf das Datum der Master-Datei gesetzt, damit das
+% voreingestellte Datum der erzeugten Datei angepasst werden kann.
+% \begin{macrocode}
+\newcommand*\tud@tut@pdf{%
+ \ifnum\pdf@shellescape=\@ne\relax%
+ \filemodCmp{\jobname-standalone-\StandaloneFile.pdf}{\jobname.tex}{}{%
+ \begingroup%
+ \let\printdate\@firstofone%
+ \edef\@tempa{\expandonce\@date}%
+ \def\@tempb{\today}%
+ \ifx\@tempa\@tempb\relax%
+ \let\@tempb\@empty%
+ \else%
+ \edef\@tempb{\etex@unexpanded{\def\StandaloneDate}{\@date}}%
+ \fi%
+ \edef\@tempa{%
+ \tud@latex@ext -jobname=\tud@tut@temp\space%
+ "\noexpand\unexpanded{\expandonce\@tempb\noexpand\input}%
+ {\tud@tut@temp-standalone.tex}"%
+ }%
+ \ShellEscape{\@tempa^^J\@tempa^^J\@tempa}%
+ \ifwindows%
+ \def\@tempa{rename}%
+ \else%
+ \def\@tempa{mv}%
+ \fi%
+ \ShellEscape{%
+ \@tempa\space\tud@tut@temp.pdf\space%
+ \jobname-standalone-\StandaloneFile.pdf%
+ }%
+ \endgroup%
+ }%
+ \fi%
+ \global\let\StandaloneFile\relax%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@tut@pdf
+% \begin{macro}{\IncludeStandalone}
+% \changes{v2.02}{2014/09/10}{neu}^^A
+% Der Befehl \cs{IncludeStandalone} bindet die durch \env{Trunk!} generierten
+% PDF-Dateien ein. Das angehängte optionale Argument dient zur Angabe der
+% einzubindenden Seiten der PDF-Datei, wobei diese automatisch auf die passende
+% Breite skaliert werden.
+% \begin{macrocode}
+\NewDocumentCommand\IncludeStandalone{o m !O{1}}{%
+ \IfFileExists{\jobname-standalone-#2.pdf}{%
+ \@tempcnta\z@%
+ \@for\@tempa:=#3\do{\advance\@tempcnta\@ne}%
+ \ifnum\@tempcnta>\z@\relax%
+ \setlength\@tempdima{\textwidth}%
+ \divide\@tempdima\@tempcnta%
+ \advance\@tempcnta\m@ne%
+ \multiply\@tempcnta 2%
+ \addtolength\@tempdima{-\@tempcnta\tabcolsep}%
+ \@for\@tempa:=#3\do{%
+ \advance\@tempcnta\m@ne%
+ \edef\@tempb{%
+ keepaspectratio,page=\@tempa,width=\the\@tempdima,%
+ \IfValueT{#1}{#1}%
+ }%
+ \fbox{%
+ \expandafter\includegraphics\expandafter[\@tempb]{%
+ \jobname-standalone-#2.pdf%
+ }%
+ }%
+ \ifnum\@tempcnta>\z@\relax\hfill\fi%
+ }%
+ \fi%
+ }{%
+ \tud@shellescape@wrn{\jobname-standalone-#2.pdf}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \IncludeStandalone
+%
+% \iffalse
+%</package>
+% \fi
+%
+% \subsection{Automatische Erstellung von \pkg{pstricks}-Grafiken}
+%
+% Falls innerhalb eines Tutorials das Paket \pkg{pstricks} verwendet wird, muss
+% dafür Sorge getragen werden, dass die automatische Kompilierung reibungslos
+% mit \pkg{auto-pst-pdf} funktioniert.
+% \begin{macrocode}
+%<*package>
+\AfterPackage*{pstricks}{%
+ \ifnum\pdf@shellescape=\@ne\relax%
+ \filemodCmp{\jobname-pics.pdf}{\jobname.tex}{%
+ \PassOptionsToPackage{off}{auto-pst-pdf}%
+ }{}%
+ \else%
+ \PassOptionsToPackage{off}{auto-pst-pdf}%
+ \fi%
+ \RequirePackage{auto-pst-pdf}[2009/04/26]%
+% \end{macrocode}
+% Nach dem Paket \pkg{auto-pst-pdf} seine Arbeit verrichtet hat, werden alle
+% etwaigen temporär erzeugten Dateien radikal gelöscht.
+% \begin{macrocode}
+ \ifnum\pdf@shellescape=\@ne\relax%
+ \edef\@tempa{\app@exe{\app@rm "*\app@suffix*"}}%
+ \@tempa%
+ \fi%
+}
+%</package>
+% \end{macrocode}
+%
+% \subsection{ToDo-Liste}
+%
+% Für Klasse und Paket besteht die Möglichkeit, Änderungsnotizen zu nutzen,
+% wofür das Paket \pkg{todonotes} geladen wird.
+% \begin{macrocode}
+\PassOptionsToPackage{obeyFinal}{todonotes}
+% \end{macrocode}
+% Für den Druck wird die farbige Ausgabe der ToDo-Notizen deaktiviert.
+% \begin{macrocode}
+\ifdef{\tudprintflag}{%
+ \PassOptionsToPackage{color=white}{todonotes}%
+}{%
+ \PassOptionsToPackage{colorinlistoftodos,color=HKS92!10}{todonotes}%
+}
+\RequirePackage{todonotes}[2012/07/25]
+\AtEndPreamble{%
+ \ifdim\marginparwidth<2cm\relax%
+ \setlength\marginparwidth{2cm}%
+ \fi%
+}
+% \end{macrocode}
+%
+% \iffalse
+%</body>
+%<*option>
+% \fi
+%
+% \begin{option}{ToDo}
+% \changes{v2.02}{2014/07/10}{neu}^^A
+% \changes{v2.05}{2015/10/27}{Nutzung von Positiv- und Negativ-Liste}^^A
+% \begin{macro}{\if@tud@todo}
+% \changes{v2.02}{2014/07/10}{neu}^^A
+% \begin{macro}{\tud@todo@type@pos}
+% \changes{v2.05}{2015/10/27}{neu}^^A
+% \begin{macro}{\tud@todo@type@neg}
+% \changes{v2.05}{2015/10/27}{neu}^^A
+% Diese Option ist verantwortlich für den Schalter \cs{if@tud@todo}. Über
+% diesen wird gesteuert, ob ToDo-Notizen ausgegeben werden sollen.
+% \begin{macrocode}
+\newif\if@tud@todo
+\newcommand*\tud@todo@type@pos{}
+\let\tud@todo@type@pos\relax
+\newcommand*\tud@todo@type@neg{}
+\let\tud@todo@type@neg\relax
+\TUD@key{ToDo}[true]{%
+ \TUD@set@ifkey{ToDo}{@tud@todo}{#1}%
+% \end{macrocode}
+% Wird der Option ein boolescher Wert übergeben, sind sowohl die Positiv- als
+% auch die Negativ-Liste hinfällig.
+% \begin{macrocode}
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \let\tud@todo@type@pos\relax%
+ \let\tud@todo@type@neg\relax%
+ \else%
+% \end{macrocode}
+% Wird die Option nicht mit einem booleschen Wert verwendet, so kann über diese
+% gezielt der Typ einer (nicht) auszugebenden ToDo-Notiz angegeben werden. So
+% können bestimmte Typen von Notizen entweder ausschließlich ausgegeben oder
+% aber unterdrückt werden, wobei für letztere Variante das Suffix \val{not}
+% vor dem eigentlichen Typen verwendet werden muss.
+% \begin{macrocode}
+ \def\@tempa not##1##2##3##4\@nil{%
+ \ifstr{##1##2##3}{not}{%
+ \IfArgIsEmpty{##4}{}{%
+ \listeadd\tud@todo@type@neg{##4}%
+ \@tud@todotrue%
+ \FamilyKeyStateProcessed%
+ }%
+ }{%
+ \IfArgIsEmpty{##1}{}{%
+ \listeadd\tud@todo@type@pos{##1##2##3##4}%
+ \@tud@todotrue%
+ \FamilyKeyStateProcessed%
+ }%
+ }%
+ }%
+ \edef\@tempb{not\trim@spaces{#1}}%
+ \expandafter\@tempa\@tempb\@empty\@empty\@empty\@nil%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@todo@type@neg
+% \end{macro}^^A \tud@todo@type@pos
+% \end{macro}^^A \if@tud@todo
+% \end{option}^^A ToDo
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+% \begin{macro}{\ToDo}
+% \changes{v2.02}{2014/07/10}{Verwendung von \pkg{todonotes}}^^A
+% \changes{v2.03}{2015/01/25}{Ausgabe auf bestimmten Typ beschränkbar}^^A
+% \changes{v2.05}{2015/11/02}{Farbkodierung durch optionale Versionsnummer}^^A
+% \changes{v2.06}{2018/08/02}{farbige Ausgabe abhängig von Versionsnummer}^^A
+% \begin{macro}{\tud@todo@type@use}
+% \changes{v2.06}{2018/08/02}{neu}^^A
+% \begin{macro}{\ListOfToDo}
+% \changes{v2.02}{2014/07/10}{neu}^^A
+% Mit dem Befehl \cs{ToDo}\oarg{Option}\marg{ToDo-Notiz}\oarg{Versionsnummer}
+% kann bei aktivierter Option \opt{ToDo} eine Notiz mit einer offenen Aufgabe
+% erstellt werden. Das erste optionale Argument kann die Kategorisierungstypen
+% \val{doc}, \val{imp} und \val{rls} beinhalten, welche für eine spezifische
+% farbliche Kodierung sorgen, um die Aufgaben zu kategorisieren.
+% \begin{macrocode}
+\AfterPackage*{todonotes}{%
+ \newcommand*\tud@todo@type@use{}%
+% \end{macrocode}
+% Nun folgt die Definition des eigentlichen Befehls. Dabei wird zu Beginn
+% \cs{@currentHref} gesichert und am Ende wiederhergestellt.
+% \begin{macrocode}
+ \NewDocumentCommand\ToDo{s o m !o}{%
+ \ifbool{@tud@todo}{%
+ \global\let\tud@currentHref\@currentHref%
+ \begingroup%
+% \end{macrocode}
+% In \cs{tud@todo@type@use} werden alle im optionalen Argument angegeben Werte
+% gesischer, welche entweder über die Liste \cs{tud@todo@type@pos} explizit
+% angefordert oder nicht über die Liste \cs{tud@todo@type@neg} ausgeschlossen
+% wurden.
+% \begin{macrocode}
+ \let\tud@todo@type@use\@empty%
+% \end{macrocode}
+% Das optionale Argument enthält die gewüscnhten Kategorisierungstypen.
+% \begin{macrocode}
+ \IfValueTF{#2}{%
+ \IfArgIsEmpty{#2}{}{%
+% \end{macrocode}
+% Die Ausgabe erfolgt entweder für alle ToDo-Notizen oder nur für die per
+% Option festgelegten Typen. Dabei wird in einer Schleife geprüft, ob der in
+% der aktuellen Notiz angegebene Kategorisierungstyp entweder in der Positv-
+% oder aber in der Negativ-Liste enthalten ist.
+% \begin{macrocode}
+ \let\tud@todo@type@use\relax%
+ \ifx\tud@todo@type@pos\relax%
+ \def\tud@res@a##1{%
+ \ifinlist{##1}{\tud@todo@type@use}{}{%
+ \ifinlist{##1}{\tud@todo@type@neg}{}{%
+ \listadd\tud@todo@type@use{##1}%
+ }%
+ }%
+ }%
+ \else%
+ \def\tud@res@a##1{%
+ \ifinlist{##1}{\tud@todo@type@use}{}{%
+ \ifinlist{##1}{\tud@todo@type@pos}{%
+ \listadd\tud@todo@type@use{##1}%
+ }{}%
+ }%
+ }%
+ \fi%
+ \forcsvlist\tud@res@a{#2}%
+ }%
+ }{}%
+% \end{macrocode}
+% Nur wenn mindestens ein aktiver Kategorisierungstyp gefunden wurde oder aber
+% gar keine Angabe gemacht wurde, erfolgt die Ausgabe.
+% \begin{macrocode}
+ \ifx\tud@todo@type@use\relax\else%
+% \end{macrocode}
+% In den temporären Makros werden die Einstellungen für die farbige Ausprägung
+% von Randnotiz (\cs{tud@res@a}) und der Textbox im Fließtex(\cs{tud@res@b})
+% sowie das Label der Randnotiz (\cs{tud@res@c}) gespeichert.
+% \begin{macrocode}
+ \let\tud@res@a\@empty%
+ \let\tud@res@b\@empty%
+ \let\tud@res@c\@empty%
+% \end{macrocode}
+% Der Kategorisierungstyp für Releases \val{rls} ist quasi vorkonfiguriert.
+% Sind weitere Kategorisierungstypen angegeben, werden diese ignoriert. Der Typ
+% für Implemtierung \val{imp} wird vorangig zur Dokumentation \val{doc}
+% behandelt.
+% \begin{macrocode}
+ \ifinlist{rls}{\tud@todo@type@use}{%
+ \def\tud@res@a{color=HKS44!30,}%
+ \def\tud@res@b{color=HKS44!30,}%
+ \edef\tud@res@c{v\TUDScriptVersionNumber}%
+ }{%
+ \ifinlist{imp}{\tud@todo@type@use}{%
+ \def\tud@res@a{color=HKS57!50,}%
+ }{%
+ \ifinlist{doc}{\tud@todo@type@use}{%
+ \def\tud@res@a{color=HKS41!30,}%
+ }{}%
+ }%
+% \end{macrocode}
+% Das angestellte optionale Argument erzeugt zusätzlich eine Notiz am Rand, in
+% welcher vorzugsweise die angedachte Version eingetragen werden kann. Sollte
+% dieser angegeben sein, wird auf eine gültige Versionsnummer geprüft. Dabei
+% wird ein möglicherweise vorangestelltes |v| entfernt.
+% \begin{macrocode}
+ \def\tud@res@c{ToDo}%
+ \IfValueT{#4}{%
+ \begingroup%
+% \end{macrocode}
+% Die angegebene Versionsnummer wird geprüft, ob bereits zu einer vergangenen
+% Version gehört. In diesem Fall wird die ToDo-Notiz entsprechend als dringlich
+% gekennzeichnet. Entspricht die angegebene Versionsnummer einer späteren
+% Version, so wird ToDo-Notiz ebenfalls für diese gekennzeichnet.
+% \begin{macrocode}
+ \tud@v@get\tud@res@a{#4}%
+ \def\tud@res@c##1.##2##3##4\@nil{##1##2##3}%
+ \edef\tud@res@b{\expandafter\tud@res@c\tud@res@a.000\@nil}%
+ \ifnumber{\tud@res@b}{%
+ \edef\tud@res@c{%
+ \expandafter\tud@res@c\TUDScriptVersionNumber.000\@nil%
+ }%
+ \ifnum\tud@res@b>\tud@res@c\relax%
+ \def\tud@res@b{color=HKS92!30,}%
+ \else%
+ \ifnum\tud@res@b<\tud@res@c\relax%
+ \def\tud@res@b{color=HKS07!50,}%
+ \else%
+ \def\tud@res@b{color=HKS41!30,}%
+ \fi%
+ \fi%
+ \def\tud@res@c{v\tud@res@a}%
+ }{%
+ \let\tud@res@b\@empty%
+ \def\tud@res@c{#4}%
+ }%
+ \edef\tud@res@c{%
+ \endgroup%
+ \def\noexpand\tud@res@b{\tud@res@b}%
+ \def\noexpand\tud@res@c{\tud@res@c}%
+ }%
+ \tud@res@c%
+ }%
+ }%
+% \end{macrocode}
+% Vor der Ausgabe wird ein kleiner vertikaler Abstand eingefügt.
+% \begin{macrocode}
+ \ifhmode\par\fi%
+ \let\par\relax%
+ \vskip\medskipamount%
+ \noindent%
+% \end{macrocode}
+% Dann erfolgt die Ausgabe der eigentlichen ToDo-Notiz im Textbereich. Die
+% Sternversion von \cs{ToDo} unterdrückt dabei die Aufnahme in die ToDo-Liste.
+% \begin{macrocode}
+ \toks@\expandafter{\tud@res@b inline}%
+ \IfBooleanT{#1}{\addto@hook\toks@{,nolist}}%
+ \sbox\z@{%
+ \expandafter\todo\expandafter[\the\toks@]{\trim@spaces{#3}\strut}%
+ }\usebox\z@%
+% \end{macrocode}
+% Es folgt die dazugehörige Randnotiz. Damit diese nicht verrutscht, wird
+% \cs{marginnote} anstelle von \cs{marginpar} verwendet. Wurde das angestellte
+% optionale Argument verwendet, wird dieses für die Randnotiz genutzt.
+% Andernfalls erscheint im Rand die Anmerkung \emph{ToDo}.
+% \begin{macrocode}
+ \renewcommand*\marginpar[2][]{%
+ \marginnote[##1]{##2}[\dimexpr-\ht\z@+1.6ex+1.75pt\relax]%
+ }%
+ \toks@\expandafter{\tud@res@a noline,nolist}%
+ \settowidth\marginparwidth{\tud@res@c}%
+ \addtolength\marginparwidth{\dimexpr1.6ex+1pt\relax}%
+ \expandafter\todo\expandafter[\the\toks@]{\tud@res@c\strut}%
+ \aftergroup\par\aftergroup\noindent%
+% \end{macrocode}
+% Wurden im ersten optionalen Argument unbekannte Werte gefunden, werden diese
+% mit einer Warnung gemeldet.
+% \begin{macrocode}
+ \listremove{\tud@todo@type@use}{rls}%
+ \listremove{\tud@todo@type@use}{imp}%
+ \listremove{\tud@todo@type@use}{doc}%
+ \ifx\tud@todo@type@use\@empty\else%
+ \begingroup%
+ \let\tud@res@c\@empty%
+ \renewcommand*{\do}[1]{%
+ \appto\tud@res@c{,##1}%
+ }%
+ \dolistloop{\tud@todo@type@use}%
+ \edef\tud@res@c{%
+ \endgroup%
+ \edef\noexpand\tud@res@c{\expandafter\@gobble\tud@res@c}%
+ }%
+ \tud@res@c%
+ \ClassWarning{tudscrmanual}{%
+ Unknown key(s) `\string\ToDo[\tud@res@c]'%
+ }%
+ \fi%
+ \fi%
+ \endgroup%
+ \global\let\@currentHref\tud@currentHref%
+ }{}%
+ \ignorespaces%
+ }%
+% \end{macrocode}
+% Zum Schluss wird der Befehl \cs{ListOfToDo} definiert, der die Liste der noch
+% zu erledigenden Punkte ausgibt.
+% \begin{macrocode}
+ \newcommand*\ListOfToDo{\if@tud@todo\clearpage\listoftodos\fi}%
+}
+% \end{macrocode}
+% Sollte das Paket \pkg{todonotes} nicht geladen werden, erfolgt ein Definition
+% der beiden notwendigen Befehle als Dummy.
+% \begin{macrocode}
+\TUD@UnwindPackage{todonotes}{%
+ \NewDocumentCommand\ToDo{s o m !o}{}%
+ \newcommand*\ListOfToDo{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \ListOfToDo
+% \end{macro}^^A \tud@todo@type@use
+% \end{macro}^^A \ToDo
+%
+% \iffalse
+%</body>
+%</!doc>
+% \fi
+%
+% \subsection{Verschiedenes für die Dokumentationsklassen und -pakete}
+%
+% Sowohl für die Klasse \cls{tudscrmanual} als auch \cls{tudscrdoc} werden ein
+% paar Befehle zur komfortablen Verwendung im Fließtext definiert. Außerdem
+% erfolgen mittels einiger Pakete verschiedene Formateinstellungen.
+%
+% \subsubsection{Ergänzend geladene Pakete}
+%
+% Sprachabhängiges Setzen von Anführungszeichen. Das Laden des Paketes darf
+% erst nach \pkg{inputenc} oder \pkg{inputenx} erfolgen.
+% \begin{macrocode}
+%<*body|class&doc>
+\RequirePackage{csquotes}[2011/10/22]
+%</body|class&doc>
+% \end{macrocode}
+%
+% \iffalse
+%<*body>
+% \fi
+%
+% Für den Fließtext werden Pfeile u.\,ä. durch \pkg{textcomp} bereitgestellt.
+% \begin{macrocode}
+\RequirePackage{textcomp}[2005/09/27]
+% \end{macrocode}
+% Vergrößerung des Durchschusses.
+% \begin{macrocode}
+\RequirePackage{setspace}[2011/12/19]
+\setstretch{1.1}
+% \end{macrocode}
+% Verbesserte Zitate.
+% \begin{macrocode}
+\PassOptionsToPackage{vskip=\smallskipamount}{quoting}
+\RequirePackage{quoting}[2014/01/28]
+% \end{macrocode}
+% Automatisierte Datumsformatierung.
+% \begin{macrocode}
+\RequirePackage{isodate}[2010/01/03]
+% \end{macrocode}
+% Verschiedenste Symbole aus dem \LaTeX-Universum.
+% \begin{macrocode}
+\RequirePackage{hologo}[2012/04/26]
+% \end{macrocode}
+%
+% \iffalse
+%<*class>
+% \fi
+%
+% Mit dem Paket \pkg{ragged2e} wird~-- falls benötigt~-- die Silbentrennung im
+% Flattersatz aktiviert.
+% \begin{macrocode}
+\RequirePackage{ragged2e}[2009/05/21]
+% \end{macrocode}
+% Die Fußnoten werden nicht mit jedem Kapitel zurückgesetzt\dots
+% \begin{macrocode}
+\@removefromreset{footnote}{chapter}
+% \end{macrocode}
+% \dots und im Flattersatz ausgegeben.
+% \begin{macrocode}
+\renewcommand*\raggedfootnote{\tud@RaggedRight}%
+% \end{macrocode}
+% Das Paket wird für die Erstellung von Tabellen verwendet.
+% \begin{macrocode}
+\RequirePackage{booktabs}[2005/04/14]
+% \end{macrocode}
+% Die Formatierung von Gleitobjekten.
+% \begin{macrocode}
+\RequirePackage{caption}[2015/09/17]
+\RequirePackage{floatrow}[2008/08/02]
+\DeclareCaptionSubType[alph]{figure}
+\DeclareCaptionSubType[alph]{table}
+\captionsetup{font=sf,labelfont=bf,labelsep=space}
+\captionsetup{singlelinecheck=off,format=hang,justification=raggedright}
+\captionsetup[subfloat]{labelformat=brace,list=off}
+\KOMAoption{captions}{tableheading,figuresignature}
+\floatsetup[table]{style=plaintop}
+% \end{macrocode}
+% Erstellen von Grafiken.
+% \begin{macrocode}
+\RequirePackage{tikz}[2013/12/13]
+% \end{macrocode}
+% Einbinden von ganzseitigen PDF"~Dokumenten als Beispiel im Handbuch.
+% \begin{macrocode}
+\RequirePackage{pdfpages}[2013/08/25]
+% \end{macrocode}
+% Typographisch saubere Einheiten.
+% \begin{macrocode}
+\RequirePackage{units}[1998/08/04]
+% \end{macrocode}
+% Das Paket \pkg{ellipsis} sorgt für korrekte Auslassungpunkte.
+% \begin{macrocode}
+\AtEndPreamble{%
+ \RequirePackage{ellipsis}[2004/9/28]%
+ \let\ellipsispunctuation\relax%
+}
+% \end{macrocode}
+%
+% \iffalse
+%</class>
+%</body>
+%<*body|class&doc>
+% \fi
+%
+% \subsubsection{Gezieltes Ersetzen von Inhalten in Strings}
+%
+% \begin{macro}{\tud@replace}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% Mit diesem Befehl kann in einem gegebenen Makro ein bestimmtes Zeichen durch
+% ein anderes ersetzt werden. Dies wird verwendet, um für Indexbefehle oder
+% Labels die möglicherweise enthaltenen |@|"~Zeichen zu ersetzen.
+% \begin{macrocode}
+\newcommand*\tud@replace[3]{%
+ \begingroup%
+% \end{macrocode}
+% Zunächst wird \cs{@tempa} als ein durch \cs{@nil} abgegrenztes Makro mit
+% zwei Argumenten definiert, wobei diese durch das im zweiten Argument gegebene
+% \meta{Zeichen} voneinander abgegrenzt werden. Mit diese beiden Argumente wird
+% das Makro \cs{@tempb} aufgerufen.
+% \begin{macrocode}
+ \toks@{\def\@tempa##1}%
+ \eaddto@hook\toks@{\detokenize{#2}}%
+ \addto@hook\toks@{##2\@nil{\@tempb{##1}{##2}}}%
+% \end{macrocode}
+% Der Inhalt von \cs{toks@} ist
+% \cs{def}\cs{@tempa\#1\meta{Zeichen}\#2}\cs{@nil\{\cs{@tempb\{\#1\}\{\#2\}}\}}
+% und definiert \cs{@tempa}.
+% \begin{macrocode}
+ \the\toks@%
+% \end{macrocode}
+% Nun wird \cs{@tempb} definiert. Dieses Makro fügt dem Zielmakro das erste
+% Argumente gefolgt von \meta{Ersatzzeichen} hinzu. Mit dem zweiten Argument
+% wird anschließend \cs{@tempa\#\#2}\cs{@nil} so lange rekursiv aufgerufen, bis
+% es wirklich leer ist, wodurch das zweite Argument \meta{Zeichen} sukzessive
+% durch das dritte Argument \meta{Ersatzzeichen} ersetzt wird.
+% \begin{macrocode}
+ \def\@tempb##1##2{%
+ \IfArgIsEmpty{##2}{%
+ \appto#1{##1}%
+ \let\@tempc\relax%
+ }{%
+ \appto#1{##1#3}%
+ \def\@tempc{\@tempa##2\@nil}%
+ }%
+ \@tempc%
+ }%
+% \end{macrocode}
+% Nachdem die beiden notwendigen Makros definiert wurden, erfolgt jetzt die
+% eigentliche Ersetzung. Dafür wird der Inhalt des Zielmakros als Argument für
+% \cs{@tempa} verwendet. Diesem wird das zu ersetzende Zeichen gefolgt von
+% \cs{@nil} hinzugefügt, um das Argument abschließend zu begrenzen.
+% \begin{macrocode}
+ \toks@{\@tempa}%
+ \edef\@tempc{\expandafter\detokenize\expandafter{#1}}%
+ \eaddto@hook\toks@{\@tempc}%
+ \eaddto@hook\toks@{\detokenize{#2}\@nil}%
+% \end{macrocode}
+% Der Inhalt von \cs{toks@} hat die Form \cs{@tempa\#1\meta{Zeichen}}\cs{@nil},
+% wobei der Inhalt von \meta{\#1} expandiert wird.
+% \begin{macrocode}
+ \def#1{}%
+ \the\toks@%
+ \edef\tud@reserved{%
+ \noexpand\endgroup%
+ \def\noexpand#1{#1}%
+ }%
+ \tud@reserved%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@replace
+%
+% \iffalse
+%</body|class&doc>
+%<*body>
+% \fi
+%
+%
+% \subsubsection{Zusätzliche Markup-Befehle}
+%
+% \begin{macro}{\Attention}
+% \changes{v2.02}{2014/08/16}{neu}^^A
+% \begin{macro}{\Forum}
+% \begin{macro}{\CTAN}
+% \changes{v2.05}{2015/11/22}{neu}^^A
+% \begin{macro}{\GitHubRepo}
+% \changes{v2.02}{2014/08/16}{neu}^^A
+% \begin{macro}{\Download}
+% \changes{v2.05g}{2016/11/08}{neu}^^A
+% \begin{macro}{\notudscrartcl}
+% \begin{macro}{\scrguide}
+% \changes{v2.02}{2014/09/04}{neu}^^A
+% \changes{v2.05}{2015/07/23}{Hyperlinktext über optionales Argument}^^A
+% Für die Anwenderdokumentation werden weitere Auszeichnungsbefehle definiert.
+% \begin{macrocode}
+\newcommand*\Attention[2][\z@]{%
+ \marginnote{%
+ \setlength\fboxsep{0.25em}%
+ \fbox{Achtung!}%
+ }[#1]%
+ \emph{\trim@spaces{#2}}%
+}
+\NewDocumentCommand\Forum{!s !t'}{%
+ \IfBooleanTF{#1}{\toks@{\href}}{\toks@{\hrfn}}%
+ \IfBooleanT{#2}{\toks@{\url}}%
+ \addto@hook\toks@{{http://latex.wcms-file3.tu-dresden.de/phpBB3/}}%
+ \IfBooleanF{#2}{\addto@hook\toks@{{TUD-\LaTeX-Forum}}}%
+ \the\toks@\xspace%
+}
+\NewDocumentCommand\CTAN{!s !o !g}{%
+ \IfBooleanTF{#1}{\toks@{\href}}{\toks@{\hrfn}}%
+ \addto@hook\toks@{{http://www.ctan.org/\IfValueT{#2}{#2}}}%
+ \addto@hook\toks@{%
+ {\tud@english{Comprehensive TeX Archive Network (CTAN\IfValueT{#3}{~#3})}}%
+ }%
+ \the\toks@\xspace%
+}
+%<*class>
+\NewDocumentCommand\GitHubRepo{!s !t' !O{releases}}{%
+ \IfBooleanTF{#1}{\toks@{\href}}{\toks@{\hrfn}}%
+ \IfBooleanT{#2}{\toks@{\url}}%
+ \addto@hook\toks@{{https://github.com/tud-cd/tudscr/#3}}%
+ \IfBooleanF{#2}{%
+ \addto@hook\toks@{{\tud@english{GitHub-Repository~\Distribution*{tudscr}}}}%
+ }%
+ \the\toks@\xspace%
+}
+\newcommand*\Download[1]{%
+ https://github.com/tud-cd/tudscr/releases/download/#1%
+}
+\newcommand*\notudscrartcl{%
+ F\"ur die Klassen \Class{tudscrartcl} sowie \Class{tudscrposter} ist diese
+ Option nicht verf\"ugbar.%
+}
+%</class>
+\NewDocumentCommand\scrguide{!s !O{\KOMAScript-Handbuch}}{%
+ \IfBooleanTF{#1}{\toks@{\href}}{\toks@{\hrfn}}%
+ \addto@hook\toks@{%
+ {http://mirrors.ctan.org/macros/latex/contrib/koma-script/doc/scrguide.pdf}%
+ }%
+ \addto@hook\toks@{{#2}}%
+ \the\toks@\xspace%
+}
+% \end{macrocode}
+% \end{macro}^^A \scrguide
+% \end{macro}^^A \notudscrartcl
+% \end{macro}^^A \Download
+% \end{macro}^^A \GitHubRepo
+% \end{macro}^^A \CTAN
+% \end{macro}^^A \Forum
+% \end{macro}^^A \Attention
+%
+% \iffalse
+%</body>
+%<*body|class&doc>
+% \fi
+%
+% \begin{macro}{\CD}
+% \begin{macro}{\CDs}
+% \begin{macro}{\TUD}
+% \begin{macro}{\TnUD}
+% \begin{macro}{\TUDCD}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% \begin{macro}{\TUDCDs}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% \begin{macro}{\DDC}
+% Diese Befehle stellen regelmäßig in der Quelltextdokumentatuion und im
+% Handbuch genutzte Textbausteine bereit. Dazu wird der Befehl \cs{xspace} aus
+% dem \pkg{xspace}-Paket genutzt.
+% \begin{macrocode}
+\newcommand*\CD{\tud@english{Corporate Design}\xspace}
+\newcommand*\CDs{\tud@english{Corporate Designs}\xspace}
+\newcommand*\TUD{Technische Universit\"at Dresden\xspace}
+\newcommand*\TnUD{Technischen Universit\"at Dresden\xspace}
+\newcommand*\TUDCD{\CD der \TnUD}
+\newcommand*\TUDCDs{\CDs der \TnUD}
+\newrobustcmd*\DDC{%
+ \mbox{%
+ D\kern.05em R\kern.05em E\kern.05em S\kern.05em %
+ D\kern.05em E\kern.05em N\kern.1em-\kern.1em concept%
+ }\xspace%
+}
+\AfterPackage*{hyperref}{%
+ \pdfstringdefDisableCommands{%
+ \def\DDC{DRESDEN-concept}%
+ \def\TUDScript{TUD-Script}%
+ \def\KOMAScript{KOMA-Script}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \DDC
+% \end{macro}^^A \TUDCDs
+% \end{macro}^^A \TUDCD
+% \end{macro}^^A \TnUD
+% \end{macro}^^A \TUD
+% \end{macro}^^A \CDs
+% \end{macro}^^A \CD
+% \begin{macro}{\OpenSans}
+% \changes{v2.06}{2018/07/02}{neu}^^A
+% \begin{macro}{\tud@cdfont@texteb}
+% \changes{v2.06}{2018/08/31}{neu}^^A
+% \begin{macro}{\Univers}
+% \begin{macro}{\DIN}
+% Für die Nennung der Schriften spezielle Markos bereitgestellt.
+% \begin{macrocode}
+\DeclareTextFontCommand\tud@cdfont@texteb{%
+ \fontfamily{\tud@cdfont@fam}\fontseries{\tud@cdfont@ebf}\selectfont%
+}
+\newrobustcmd*\OpenSans{%
+ \texorpdfstring{\tud@cdfont@texteb{Open~Sans}}{Open Sans}\xspace%
+}
+\newrobustcmd*\Univers{\texorpdfstring{\textcdbi{Univers}}{Univers}\xspace}
+\newrobustcmd*\DIN{\texorpdfstring{\textcdxi{DIN~Bold}}{DIN Bold}\xspace}
+% \end{macrocode}
+% \end{macro}^^A \DIN
+% \end{macro}^^A \Univers
+% \end{macro}^^A \tud@cdfont@texteb
+% \end{macro}^^A \OpenSans
+% \begin{macro}{\@pnumwidth}
+% \begin{macro}{\@tocrmarg}
+% Für das Inhaltsverzeichnis werden die beiden Längen angepasst.
+% \begin{macrocode}
+\renewcommand*\@pnumwidth{2.1em}%
+\renewcommand*\@tocrmarg{3.1em}%
+% \end{macrocode}
+% \end{macro}^^A \@tocrmarg
+% \end{macro}^^A \@pnumwidth
+%
+% \iffalse
+%</body|class&doc>
+%<*body>
+% \fi
+%
+% \begin{macro}{\textsbn}
+% \changes{v2.02}{2014/08/16}{neu}^^A
+% \begin{macro}{\sbnfont}
+% \changes{v2.02}{2014/08/16}{neu}^^A
+% \begin{macro}{\textsbs}
+% \changes{v2.02}{2014/08/16}{neu}^^A
+% \begin{macro}{\sbsfont}
+% \changes{v2.02}{2014/08/16}{neu}^^A
+% Für die Anwenderdokumentation werden weitere Auszeichnungsbefehle definiert.
+% \begin{macrocode}
+\newcommand*\textsbn{}
+\newrobustcmd*\sbnfont{\sffamily\bfseries\upshape}
+\DeclareTextFontCommand\textsbn{\sbnfont}
+\newcommand*\textsbs{}
+\newrobustcmd*\sbsfont{\sffamily\bfseries\slshape}
+\DeclareTextFontCommand\textsbs{\sbsfont}
+% \end{macrocode}
+% \end{macro}^^A \sbsfont
+% \end{macro}^^A \textsbs
+% \end{macro}^^A \sbnfont
+% \end{macro}^^A \textsbn
+%
+% \iffalse
+%</body>
+% \fi
+%
+% \Finale
+%
+\endinput
diff --git a/macros/latex/contrib/tudscr/source/tudscr-mathswap.dtx b/macros/latex/contrib/tudscr/source/tudscr-mathswap.dtx
new file mode 100644
index 0000000000..158befa025
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/tudscr-mathswap.dtx
@@ -0,0 +1,297 @@
+% \CheckSum{149}
+% \iffalse meta-comment
+%
+% TUD-Script -- Corporate Design of Technische Universität Dresden
+% ----------------------------------------------------------------------------
+%
+% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2019
+%
+% ----------------------------------------------------------------------------
+%
+% This work may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License, version 1.3c of the license. The latest
+% version of this license is in http://www.latex-project.org/lppl.txt and
+% version 1.3c or later is part of all distributions of LaTeX 2005/12/01
+% or later and of this work. This work has the LPPL maintenance status
+% "author-maintained". The current maintainer and author of this work
+% is Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+% in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
+% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+% Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
+% oder später und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status
+% "author-maintained", wird somit allein durch den Autor verwaltet. Der
+% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: tudscr-mathswap.dtx
+%<*dtx>
+% \fi
+%
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{tudscr-mathswap.dtx}[2019/06/28 v2.06 TUD-Script\space%
+%
+% \iffalse
+%</dtx>
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesPackage{mathswap}[%
+%<*package>
+%!TUD@Version
+%</package>
+%<package> package
+%<*dtx|package>
+% \fi
+%
+ (swap mathematical separators)%
+]
+%
+% \iffalse
+%</dtx|package>
+%<*dtx>
+\documentclass[english,ngerman,xindy]{tudscrdoc}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{tudscrfonts}
+\KOMAoptions{parskip=half-}
+\usepackage{bookmark}
+\usepackage[babel]{microtype}
+
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tudscr-mathswap.dtx}
+\title{\file{\filename}}
+\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
+\date{\fileversion\nobreakspace(\filedate)}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.02}{2014/08/18}{\pkg{mathswap}: Schalter zum Aktivieren und
+% Deaktivieren der Funktionalität}^^A
+%
+% \section{Das Paket \pkg{mathswap} -- Aktive Trennzeichen im Mathematikmodus}
+%
+% Die Verwendung von Dezimal- und Tausendertrennzeichen im mathematischen Satz
+% sind regional sehr unterschiedlich. In den meisten englischsprachigen Ländern
+% wird der Punkt als Dezimaltrennzeichen und das Komma zur Zifferngruppierung
+% verwendet, im restlichen Europa wird dies genau entgegengesetzt praktiziert.
+% Dieses Paket soll dazu dienen, beliebige formatierte Zahlen in ihrer Ausgabe
+% anzupassen. Dafür werden die Zeichen Punkt (~.~) und Komma (~,~) als aktive
+% Zeichen im Mathematikmodus definiert.
+%
+% Ähnliche Funktionalitäten werden bereits durch die Pakete \pkg{icomma} und
+% \pkg{ziffer} bereitgestellt. Bei \pkg{icomma} muss jedoch beim
+% Verfassen des Dokumentes durch den Autor beachtet werden, ob das verwendete
+% Komma einem Dezimaltrennzeichen entspricht ($t=1,\!2$) oder aber einem
+% normalen Komma im Mathematiksatz ($z=f(x,y)$), wo ein gewisser Abstand nach
+% dem Komma durchaus gewünscht ist. Das Paket \pkg{ziffer} liefert dafür die
+% gewünschte Funktionalität,\footnote{kein Leerraum nach Komma, wenn direkt
+% danach eine Ziffer folgt} ist allerdings etwas unflexibel, was den Umgang mit
+% den Trennzeichen anbelangt. Als Alternative zu diesem Paket kann außerdem
+% \pkg{ionumbers} verwendet werden.
+%
+% Das Paket \pkg{mathswap} sorgt dafür, dass Trennzeichen direkt vor einer
+% Ziffer erkannt und nach bestimmten Vorgaben ersetzt werden. Sollte sich
+% jedoch zwischen Trennzeichen und Ziffer Leerraum befinden, wird dieser als
+% solcher auch gesetzt.
+%
+% \ToDo{Vergleich mit \pkg{ionumbers}, ist \pkg{mathswap} notwendig?}[v2.??]
+% \ToDo{Als eingenständiges Paket herauslösen}[v2.??]
+% \ToDo{Allgem. Bezeichnungen englisches/deutsches Format?}[v2.??]
+% \ToDo{Sprachabhängige Einstellungen in Paket und aus Klassen raus}[v2.??]
+% \ToDo{Makro(s)/Key-Value zum Festlegen von Eingabe- und Ausgabeformat}[v2.??]
+% \ToDo{Inhalte von \file{mathswap.tex} hier rein}[v2.??]
+%
+% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%
+% \iffalse
+%<*package>
+% \fi
+%
+% \begin{macro}{\commaswap}
+% \begin{macro}{\dotswap}
+% \begin{macro}{\@commaswap}
+% \begin{macro}{\@dotswap}
+% Die beiden Befehle \cs{commaswap} und \cs{dotswap} sind die zentrale
+% Benutzerschnittstelle des Paketes. Das Makro \cs{commaswap} definiert das
+% Trennzeichen oder den Inhalt, wodurch ein Komma ersetzt werden soll, auf
+% welches direkt danach eine Ziffer folgt. Normalerweise setzt \LaTeX{}
+% nach einem Komma im mathematischen Satz zusätzlich einen horizontalen Abstand.
+% Bei der Ersetzung durch \cs{commaswap} entfällt dieser. Die Voreinstellung
+% für \cs{commaswap} ist deshalb auf ein Komma (,) gesetzt.
+%
+% Mit dem Makro \cs{dotswap} kann definiert werden, wodurch der Punkt im
+% mathematischen Satz ersetzt werden soll, wenn auf diesen direkt anschließend
+% eine Ziffer folgt. Da der Punkt im deutschsprachigem Raum zur Gruppierung von
+% Ziffern genutzt wird, ist hierfür standardmäßig ein halbes geschütztes
+% Leerzeichen definiert (\cs{,}).
+%
+% Die mit \cs{commaswap}\marg{Trennzeichen} und \cs{dotswap}\marg{Trennzeichen}
+% definierten Trennzeichen werden in \cs{@commaswap} und \cs{@dotswap}
+% gesichert.
+% \begin{macrocode}
+\newcommand*\@commaswap{,}
+\newcommand*\commaswap[1]{\gdef\@commaswap{#1}\ignorespaces}
+\newcommand*\@dotswap{\,}
+\newcommand*\dotswap[1]{\gdef\@dotswap{#1}\ignorespaces}
+% \end{macrocode}
+% \end{macro}^^A \@dotswap
+% \end{macro}^^A \@commaswap
+% \end{macro}^^A \dotswap
+% \end{macro}^^A \commaswap
+% \begin{macro}{\ms@comma}
+% \begin{macro}{\ms@commachar}
+% \begin{macro}{\ms@dot}
+% \begin{macro}{\ms@dotchar}
+% In den Befehlen \cs{ms@commachar} und \cs{ms@dotchar} wird die originale
+% Definition von Komma und Punkt im Mathematikmodus gesichert, welche weiterhin
+% verwendet wird, falls nach diesen nicht direkt eine Ziffer folgt. Mit den
+% Makros \cs{ms@comma} und \cs{ms@dot} werden die Definitionen von Komma und
+% Punkt als normale Textzeichen für den mathematischen Satz bereitgehalten.
+% Anschließend werden beide als aktive Zeichen für den Mathematikmodus gesetzt.
+% \begin{macrocode}
+\newcommand*\ms@commachar{}
+\newcommand*\ms@dotchar{}
+\AtBeginDocument{%
+ \DeclareMathSymbol{\ms@comma}{\mathord}{letters}{"3B}%
+ \mathchardef\ms@commachar\mathcode\expandafter`,%
+ \mathcode\expandafter`,="8000%
+ \DeclareMathSymbol{\ms@dot}{\mathord}{letters}{"3A}%
+ \mathchardef\ms@dotchar\mathcode\expandafter`.%
+ \mathcode\expandafter`.="8000%
+ \mathswapon%
+}
+% \end{macrocode}
+% \end{macro}^^A \ms@dotchar
+% \end{macro}^^A \ms@dot
+% \end{macro}^^A \ms@commachar
+% \end{macro}^^A \ms@comma
+% \begin{macro}{\mathswapon}
+% \changes{v2.02}{2014/08/18}{neu}^^A
+% \begin{macro}{\mathswapoff}
+% \changes{v2.02}{2014/08/18}{neu}^^A
+% \begin{macro}{\ms@commaswap}
+% \changes{v2.02}{2014/08/18}{neu}^^A
+% \begin{macro}{\ms@dotswap}
+% \changes{v2.02}{2014/08/18}{neu}^^A
+% Mit den Befehlen \cs{mathswapon} und \cs{mathswapoff} kann die Funktionalität
+% des Paketes innerhalb des Dokumentes aktiviert und deaktiviert werden.
+% \begin{macrocode}
+\newcommand*\ms@commaswap{}
+\newcommand*\ms@dotswap{}
+\newcommand*\mathswapon{%
+ \def\ms@commaswap{\@commaswap}%
+ \def\ms@dotswap{\@dotswap}%
+}
+\newcommand*\mathswapoff{%
+ \def\ms@commaswap{\ms@commachar}%
+ \def\ms@dotswap{\ms@dotchar}%
+}
+% \end{macrocode}
+% \end{macro}^^A \ms@dotswap
+% \end{macro}^^A \ms@commaswap
+% \end{macro}^^A \mathswapoff
+% \end{macro}^^A \mathswapon
+% \begin{macro}{\ms@ifnum}
+% \begin{macro}{\ms@@ifnum}
+% Der Befehl \cs{ms@ifnum} reicht das erste Argument an \cs{ms@@ifnum} weiter,
+% falls der Inhalt von \cs{ms@token} zu einer Ziffer expandiert. Andernfalls
+% wird das zweite Argument ausgeführt.
+% \begin{macrocode}
+\newcommand*\ms@ifnum[2]{%
+ \ifx\ms@token0\ms@@ifnum{#1}\else%
+ \ifx\ms@token1\ms@@ifnum{#1}\else%
+ \ifx\ms@token2\ms@@ifnum{#1}\else%
+ \ifx\ms@token3\ms@@ifnum{#1}\else%
+ \ifx\ms@token4\ms@@ifnum{#1}\else%
+ \ifx\ms@token5\ms@@ifnum{#1}\else%
+ \ifx\ms@token6\ms@@ifnum{#1}\else%
+ \ifx\ms@token7\ms@@ifnum{#1}\else%
+ \ifx\ms@token8\ms@@ifnum{#1}\else%
+ \ifx\ms@token9\ms@@ifnum{#1}\else%
+ #2%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}
+% \end{macrocode}
+% Wurde eine nachfolgende Ziffer erkannt, so wird die Definition von Punkt und
+% Komma auf die eines normalen Textzeichens gesetzt und anschließend die mit
+% \cs{commaswap} bzw. \cs{dotswap} angegebene Ersetzung ausgegeben.
+% \begin{macrocode}
+\newcommand*\ms@@ifnum[1]{%
+ \begingroup%
+ \mathcode\expandafter`,=\the\ms@comma%
+ \mathcode\expandafter`.=\the\ms@dot%
+ #1%
+ \endgroup%
+}
+% \end{macrocode}
+% \end{macro}^^A \ms@@ifnum
+% \end{macro}^^A \ms@ifnum
+% \begin{macro}{\ms@token}
+% \begin{macro}{\ms@smartcomma}
+% \begin{macro}{\ms@smartdot}
+% Mit \cs{futurelet} wird dem Makro \cs{ms@token} das nachfolgende Zeichen von
+% Komma bzw. Punkt zugewiesen. Anschließend wird mittels \cs{ms@smartcomma} bzw.
+% \cs{ms@smartdot} geprüft, ob es sich beim Inhalt von \cs{ms@token} um eine
+% Ziffer handelt. Dazu wird der Befehl \cs{ms@ifnum} verwendet. Sollte dies der
+% Fall sein, so wird ein Komma innerhalb einer Zahl durch \cs{@commaswap} und
+% ein Punkt entsprechend mit \cs{@dotswap} ersetzt. Sollte direkt nach dem
+% Trennzeichen keine Ziffer folgen, wird für Punkt und Komma die originale
+% Definition aus \cs{ms@commachar} bzw. \cs{ms@dotchar} verwendet.
+% \begin{macrocode}
+\newcommand*\ms@token{}
+\begingroup
+ \catcode`,=\active
+ \gdef,{\futurelet\ms@token\ms@smartcomma}
+ \catcode`.=\active
+ \gdef.{\futurelet\ms@token\ms@smartdot}
+\endgroup
+\newcommand*\ms@smartcomma{\ms@ifnum{\ms@commaswap}{\ms@commachar}}
+\newcommand*\ms@smartdot{\ms@ifnum{\ms@dotswap}{\ms@dotchar}}
+% \end{macrocode}
+% \end{macro}^^A \ms@smartdot
+% \end{macro}^^A \ms@smartcomma
+% \end{macro}^^A \ms@token
+%
+% \iffalse
+%</package>
+% \fi
+%
+% \Finale
+%
+\endinput
diff --git a/macros/latex/contrib/tudscr/source/tudscr-misc.dtx b/macros/latex/contrib/tudscr/source/tudscr-misc.dtx
new file mode 100644
index 0000000000..72beb47c8a
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/tudscr-misc.dtx
@@ -0,0 +1,715 @@
+% \CheckSum{324}
+% \iffalse meta-comment
+%
+% TUD-Script -- Corporate Design of Technische Universität Dresden
+% ----------------------------------------------------------------------------
+%
+% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2019
+%
+% ----------------------------------------------------------------------------
+%
+% This work may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License, version 1.3c of the license. The latest
+% version of this license is in http://www.latex-project.org/lppl.txt and
+% version 1.3c or later is part of all distributions of LaTeX 2005/12/01
+% or later and of this work. This work has the LPPL maintenance status
+% "author-maintained". The current maintainer and author of this work
+% is Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+% in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
+% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+% Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
+% oder später und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status
+% "author-maintained", wird somit allein durch den Autor verwaltet. Der
+% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: tudscr-misc.dtx
+%<*dtx>
+% \fi
+%
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{tudscr-misc.dtx}[2019/08/20 v2.06c TUD-Script\space%
+ (miscellaneous)%
+]
+%
+% \iffalse
+\documentclass[english,ngerman,xindy]{tudscrdoc}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{tudscrfonts}
+\KOMAoptions{parskip=half-}
+\usepackage{bookmark}
+\usepackage[babel]{microtype}
+
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tudscr-misc.dtx}
+\title{\file{\filename}}
+\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
+\date{\fileversion\nobreakspace(\filedate)}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.02}{2014/06/23}{Paket \pkg{titlepage} nicht weiter unterstützt}^^A
+% \changes{v2.02}{2014/07/08}{\cs{FamilyKeyState} wird von Optionen genutzt}^^A
+%
+% \section{Verschiedenes für das \TUDScript-Bundle}
+%
+% Alles, wofür sich eine separate Datei nicht lohnt, landet hier.
+%
+% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%
+% \iffalse
+%<*class&option>
+% \fi
+%
+% \subsection{Sprungmarken}
+%
+% \begin{option}{tudbookmarks}
+% \begin{macro}{\if@tud@bookmarks}
+% Wird das Paket \pkg{hyperref} geladen, so kann die Option \opt{tudbookmarks}
+% genutzt werden, um zu steuern, ob für Titel und Inhaltsverzeichnis
+% automatisch ein Eintrag für die Sprungmarken erzeugt werden soll.
+% \begin{macrocode}
+\newif\if@tud@bookmarks
+\TUD@key{tudbookmarks}[true]{%
+ \TUD@set@ifkey{tudbookmarks}{@tud@bookmarks}{#1}%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@bookmarks
+% \end{option}^^A tudbookmarks
+%
+% \iffalse
+%</class&option>
+%<*class&body>
+% \fi
+%
+% \begin{macro}{\tudbookmark}
+% \begin{macro}{\tud@x@hyperref@realfootnotes}
+% Die Befehle zum Eintragen der Sprungmarken. Im Dokument kann \cs{tudbookmark}
+% auch vom Anwender genutzt werden, um weitere Lesezeichen abhängig von der
+% Option \opt{tudbookmarks} manuell zu erzeugen.
+%
+% Für die Titelseite werden~-- wie auch durch das Paket \pkg{hyperref}~-- die
+% Fußnoten mit dem Befehl \cs{tud@x@hyperref@realfootnotes} auf den originalen
+% Zustand zurückgesetzt.
+% \begin{macrocode}
+\newcommand*\tudbookmark[1][]{\@gobbletwo}
+\newcommand*\tud@x@hyperref@realfootnotes{}
+\AfterPackage{hyperref}{%
+ \renewcommand*\tudbookmark[3][]{%
+ \relax%
+ \if@tud@bookmarks%
+ \phantomsection%
+ \ifblank{#1}{\pdfbookmark{#2}{#3}}{\pdfbookmark[#1]{#2}{#3}}%
+ \fi%
+ }%
+ \renewcommand*\tud@x@hyperref@realfootnotes{%
+ \let\Hy@saved@footnotemark\@footnotemark%
+ \let\Hy@saved@footnotetext\@footnotetext%
+ \let\@footnotemark\H@@footnotemark%
+ \let\@footnotetext\H@@footnotetext%
+ }%
+ \pdfstringdefDisableCommands{\let\NoCaseChange\@firstofone}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@x@hyperref@realfootnotes
+% \end{macro}^^A \tudbookmark
+% \begin{macro}{\tud@x@bookmark@startatroot}
+% \changes{v2.05}{2015/08/05}{neu}^^A
+% Wird das Paket \pkg{bookmark} geladen, können die erzeugten Outlines gezielt
+% auf der obersten Ebene erzeugt werden.
+% \begin{macrocode}
+\newcommand*\tud@x@bookmark@startatroot{\relax}
+\AfterPackage{bookmark}{%
+ \renewcommand*\tud@x@bookmark@startatroot{%
+ \if@tud@bookmarks\bookmarksetup{startatroot}\fi%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@x@bookmark@startatroot
+% \begin{environment}{titlepage}
+% \changes{v2.05}{2015/08/05}{neu}^^A
+% \begin{macro}{\@maketitle}
+% \changes{v2.05}{2015/08/05}{neu}^^A
+% \begin{macro}{\tud@maketitle@inpage}
+% \changes{v2.05}{2015/08/05}{neu}^^A
+% Ist die Option \opt{tudbookmarks} aktiviert, werden für Umschlag- und
+% Titelseite PDF"=Lesezeichen bzw. Outline-Einträge erzeugt.
+% \begin{macrocode}
+%<*book|report|article>
+\apptocmd{\titlepage}{%
+ \tud@x@bookmark@startatroot%
+ \@tud@res@swafalse%
+ \if@tud@coverpage\@tud@res@swatrue\fi%
+ \if@titlepageiscoverpage\@tud@res@swatrue\fi%
+ \if@tud@res@swa%
+ \tudbookmark[%
+%<book|report> 0%
+%<article> 1%
+ ]{\coverpagename}{cover}%
+ \else%
+ \tudbookmark[%
+%<book|report> 0%
+%<article> 1%
+ ]{\titlepagename}{title}%
+ \fi%
+}{}{\tud@patch@wrn{titlepage}}
+%</book|report|article>
+% \end{macrocode}
+% Dies geschieht außerdem auch für die Titelköpfe.
+% \begin{macrocode}
+\pretocmd{\tud@maketitle@inpage}{%
+ \tud@x@bookmark@startatroot%
+ \tudbookmark[%
+%<book|report> 0%
+%<article|poster> 1%
+ ]{\titlename}{title}%
+}{}{\tud@patch@wrn{tud@maketitle@inpage}}
+\pretocmd{\@maketitle}{%
+ \tud@x@bookmark@startatroot%
+ \tudbookmark[%
+%<book|report> 0%
+%<article|poster> 1%
+ ]{\titlename}{title}%
+}{}{\tud@patch@wrn{@maketitle}}
+% \end{macrocode}
+% \end{macro}^^A \tud@maketitle@inpage
+% \end{macro}^^A \@maketitle
+% \end{environment}^^A titlepage
+% \begin{macro}{\tableofcontents}
+% \begin{macro}{\listoffigures}
+% \begin{macro}{\listoftables}
+% Für die Verzeichnisse geschieht dies auch. Für das Inhaltsverzeichnis ist
+% hierfür etwas mehr Aufwand notwendig. Für dieses wird im Normalfall keine
+% PDF-Outline erzeugt. Deshalb ist hier ein wenig Trickserei notwendig, um zwar
+% einen Outline-Eintrag für das Inhaltsverzeichnis zu erzeugen, dieses dabei
+% aber nicht in sich selbst einzutragen.
+% \begin{macrocode}
+\BeforeTOCHead[toc]{%
+ \tud@x@bookmark@startatroot%
+ \let\@tempc\relax%
+ \iftocfeature{toc}{totoc}{}{%
+ \if@tud@bookmarks%
+ \setuptoc{toc}{totoc}%
+ \tud@cs@store{addtocontents}%
+ \def\@tempc{%
+ \unsettoc{toc}{totoc}%
+ \tud@cs@restore{addtocontents}%
+ }%
+ \let\addtocontents\@gobbletwo%
+ \fi%
+ }%
+}
+\AfterTOCHead[toc]{\@tempc}
+\BeforeTOCHead[lof]{\tud@x@bookmark@startatroot}
+\BeforeTOCHead[lot]{\tud@x@bookmark@startatroot}
+% \end{macrocode}
+% \end{macro}^^A \listoftables
+% \end{macro}^^A \listoffigures
+% \end{macro}^^A \tableofcontents
+%
+% \iffalse
+%</class&body>
+%<*class&option>
+% \fi
+%
+% \subsection{Fußnoten in Überschriften}
+%
+% Eigentlich sollte die Option \opt{footnotes}|=|\val{symbolheadings} es
+% ermöglichen, Fußnoten mit Symbolen in Überschriften zu verwenden. Umgesetzt
+% werden sollte dies mit dem Paket \pkg{footmisc}. Da dieses aber mit
+% Inkompatibilitäten zu \pkg{hyperref} und \KOMAScript{} aufwartet, wird darauf
+% leider verzichtet.
+%^^A% \begin{option}{footnotes}
+%^^A% \changes{v2.02}{2014/06/27}{neu}^^A
+%^^A% \begin{macro}{\if@tud@symbolheadings}
+%^^A% \changes{v2.02}{2014/06/27}{neu}^^A
+%^^A% \begin{macro}{\tud@sec@note}
+%^^A% \changes{v2.02}{2014/06/27}{neu}^^A
+%^^A% \begin{counter}{symbolheadings}
+%^^A% \changes{v2.02}{2014/06/27}{neu}^^A
+%^^A% Die \KOMAScript-Option \opt{footnotes} wird um den Schlüssel
+%^^A% \val{symbolheadings} erweitert, mit welchem eingestellt werden kann, ob
+%^^A% in den Überschriften Symbole für die Fußnoten anstelle von Zahlen
+%^^A% verwendet werden sollen.
+%^^A% \begin{macrocode}
+%^^A\newif\if@tud@symbolheadings
+%^^A\TUD@key{footnotes}{%
+%^^A \TUD@set@numkey{footnotes}{@tempa}{%
+%^^A {nosymbolheadings}{0},{numberheadings}{0},%
+%^^A {symbolheadings}{1}%
+%^^A }{#1}%
+%^^A \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+%^^A \ifcase\@tempa\relax% nosymbolheadings
+%^^A \@tud@symbolheadingsfalse%
+%^^A \or% symbolheadings
+%^^A \@tud@symbolheadingstrue%
+%^^A \fi%
+%^^A \fi%
+%^^A}
+%^^A% \end{macrocode}
+%^^A% Mit \cs{tud@sec@note} wird die Option \opt{footnotes=symbolheadings}
+%^^A% umgesetzt. Hierfür wird das Paket \pkg{footmisc} benötigt.
+%^^A% \begin{macrocode}
+%^^A\newcommand*\tud@sec@note[1]{%
+%^^A \ClassWarning{\TUD@Class@Name}{%
+%^^A You have to load package `footmisc' with\MessageBreak%
+%^^A option `stable' in order to use\MessageBreak%
+%^^A footnotes with symbols in headings%
+%^^A }%
+%^^A}
+%^^A\AfterPackage{footmisc}{%
+%^^A \@ifpackagewith{footmisc}{stable}{%
+%^^A \renewcommand*\tud@sec@note[1]{%
+%^^A \begingroup%
+%^^A \if@tud@symbolheadings%
+%^^A \let\c@footnote\c@symbolheadings%
+%^^A \def\thefootnote{\fnsymbol{symbolheadings}}%
+%^^A \fi%
+%^^A \footnote{#1}%
+%^^A \endgroup%
+%^^A }%
+%^^A }{}%
+%^^A}
+%^^A% \end{macrocode}
+%^^A% Bei aktivierter Option \opt{footnotes}|=|\val{symbolheadings} wird
+%^^A% dieser Zähler für die Symboleauswahl von Fußnoten in Überschirften
+%^^A% inkrementiert.
+%^^A% \begin{macrocode}
+%^^A\AtEndOfClass{%
+%^^A%<book|report> \newcounter{symbolheadings}[chapter]
+%^^A%<article|poster> \newcounter{symbolheadings}
+%^^A}
+%^^A% \end{macrocode}
+%^^A% \end{counter}^^A symbolheadings
+%^^A% \end{macro}^^A \tud@sec@note
+%^^A% \end{macro}^^A \if@tud@symbolheadings
+%^^A% \end{option}^^A footnotes
+%
+% \subsection{Papierformat und Schriftgröße}
+%
+% Insbesondere für Poster aber auch für alle anderen \TUDScript-Klassen wird
+% überprüft, ob nach einer Änderung des Standardpapierformates auch die
+% Schriftgröße durch den Anwender angepasst wurde. Diese wird jedoch nicht auf
+% Plausibilität geprüft, da der Aufwand hierfür relativ hoch wäre. Vielmehr
+% wird davon ausgegangen, dass die explizite Angabe der Schriftgröße bewusst
+% und dem Papierformat sowie den verwendeten Textspalten entsprechend erfolgt.
+%
+% \begin{macro}{\tud@x@scr@checkoptions}
+% \changes{v2.06}{2018/07/31}{neu}^^A
+% \begin{macro}{\tud@x@scr@pt}
+% \changes{v2.06}{2018/07/31}{neu}^^A
+% Das Makro \cs{tud@x@scr@checkoptions} wird mit \cs{DeclareOption*} für alle
+% Optionen aufgerufen, welche kein Mitglied der Familie~\val{TUD} sind. Damit
+% kann auf nicht definierte Schlüssel reagiert werden. Anschließend werden diese
+% an die zugrundeliegende \KOMAScript-Klasse weitergereicht.
+% \begin{macrocode}
+\newcommand*\tud@x@scr@checkoptions{%
+ \expandafter\tud@x@scr@pt\CurrentOption pt\@nil%
+ \PassOptionsToClass{\CurrentOption}{\TUD@Class@KOMA}%
+}
+% \end{macrocode}
+% Wird die Schriftgröße im veralteten Format \val{\dots pt} übergeben, so wird
+% der Schalter \cs{if@tud@x@scr@fontsize@set} auf \val{true} gesetzt.
+% \begin{macrocode}
+\newcommand*\tud@x@scr@pt{}
+\def\tud@x@scr@pt #1pt#2\@nil{%
+ \ifstr{#2}{pt}{\ifnumber{#1}{\@tud@x@scr@fontsize@settrue}{}}{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@x@scr@pt
+% \end{macro}^^A \tud@x@scr@checkoptions
+%
+% \iffalse
+%</class&option>
+%<*class&body>
+% \fi
+%
+% Wurde das Papierformat jedoch nicht die Schriftgröße geändert, wird eine
+% Warnung erzeugt.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \if@tud@x@scr@fontsize@set\else%
+ \@tud@res@swafalse%
+ \ifdim\tud@len@layoutwidth<208mm\relax\@tud@res@swatrue\fi%
+ \ifdim\tud@len@layoutwidth>212mm\relax\@tud@res@swatrue\fi%
+ \ifdim\tud@len@layoutheight<295mm\relax\@tud@res@swatrue\fi%
+ \ifdim\tud@len@layoutheight>299mm\relax\@tud@res@swatrue\fi%
+ \if@tud@res@swa%
+ \ClassWarningNoLine{\TUD@Class@Name}{%
+ You've set a layout size, which is different from\MessageBreak%
+ default (paper=a4, paper=portrait). Therefore you\MessageBreak%
+ should additionally specify an explicit font size. \MessageBreak%
+ See the manual for further information%
+ }%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+%
+% \iffalse
+%</class&body>
+%<*class&!inherit|package&fonts>
+%<*option>
+% \fi
+%
+% \subsection{Sukkzessives Abarbeiten von Optionen im Dokument}
+%
+% Werden mit \cs{TUDoptions} nach \cs{begin\{document\}} mehrere Layoutoptionen
+% gleichzeitig angegeben, muss dafür Sorge getragen werden, dass diese in der
+% korrekten Reihenfolge abgearbeitet werden.
+%
+% Das Makro \cs{TUD@SpecialOptionAtDocument} kann innerhalb von \cs{TUD@key}
+% verwendet werden, um einen im obligatorischen Argument angegebenen Schalter
+% zu aktivieren. Dabei wird über \cs{tud@atdocument@hook} garantiert, dass der
+% Befehl \cs{tud@atdocument@process}, welcher für die Abarbeitung der einzelnen
+% Makros in der richtigen Reihenfolge verantwortlich ist, lediglich einmal über
+% \cs{AtEndOfFamilyOptions*} ausgeführt wird.
+%
+% \begin{macro}{\TUD@SpecialOptionAtDocument}
+% \changes{v2.05}{2016/06/14}{neu}^^A
+% \begin{macro}{\tud@atdocument@hook}
+% \changes{v2.05}{2016/06/14}{neu}^^A
+% \begin{macrocode}
+\newcommand*\tud@atdocument@hook{}
+\let\tud@atdocument@hook\relax
+\newcommand*\TUD@SpecialOptionAtDocument[1]{}
+\AfterEndPreamble{%
+ \renewcommand*\TUD@SpecialOptionAtDocument[1]{%
+ \ifx\tud@atdocument@hook\relax%
+ \gdef\tud@atdocument@hook{\global\let\tud@atdocument@hook\relax}%
+ \AtEndOfFamilyOptions*{%
+ \tud@atdocument@hook%
+ \tud@atdocument@process%
+ }%
+ \fi%
+ \gappto\tud@atdocument@hook{\global\booltrue{@#1}}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@atdocument@hook
+% \end{macro}^^A \TUD@SpecialOptionAtDocument
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+% \begin{macro}{\tud@atdocument@process}
+% \changes{v2.05}{2016/06/14}{neu}^^A
+% \begin{macro}{\if@tud@font@set}
+% \changes{v2.05}{2016/06/14}{neu}^^A
+% \begin{macro}{\if@tud@math@set}
+% \changes{v2.05}{2016/06/14}{neu}^^A
+% \begin{macro}{\if@tud@font@skip@set}
+% \changes{v2.05}{2016/06/14}{neu}^^A
+% \begin{macro}{\if@tud@x@scr@headings@reset}
+% \changes{v2.05}{2016/06/14}{neu}^^A
+% \begin{macro}{\if@tud@cd@process}
+% \changes{v2.05}{2016/06/14}{neu}^^A
+% \begin{macro}{\if@tud@cdgeometry@process}
+% \changes{v2.05}{2016/06/14}{neu}^^A
+% Das Makro \cs{tud@atdocument@process} wird im Dokument ausgeführt, wenn
+% mindestens eine Option gesetzt wurde, welche \cs{TUD@SpecialOptionAtDocument}
+% verwendet. Je nachdem, welche Schalter insgesamt aktiviert wurden, werden die
+% dazugehörigen Befehle für die Einstellungen von Schriften, Layout und/oder
+% Satzspiegel in der richtigen Reihenfolge ausgeführt.
+% \begin{macrocode}
+\newif\if@tud@font@set
+\newif\if@tud@math@set
+\newif\if@tud@font@skip@set
+%<*class>
+\newif\if@tud@x@scr@headings@reset
+\newif\if@tud@cd@process
+\newif\if@tud@cdgeometry@process
+%</class>
+\newcommand*\tud@atdocument@process{%
+ \if@tud@font@set%
+ \tud@font@set%
+ \global\@tud@font@setfalse%
+ \global\@tud@font@skip@setfalse%
+%<class> \global\@tud@cd@processfalse%
+ \fi%
+ \if@tud@font@skip@set%
+ \tud@font@skip@set%
+ \global\@tud@font@skip@setfalse%
+ \fi%
+ \if@tud@math@set%
+ \tud@math@set%
+ \global\@tud@math@setfalse%
+ \fi%
+%<*class>
+ \if@tud@x@scr@headings@reset%
+ \tud@x@scr@headings@reset%
+ \global\@tud@x@scr@headings@resetfalse%
+ \global\@tud@cd@processfalse%
+ \fi%
+ \if@tud@cd@process%
+ \tud@cd@process%
+ \global\@tud@cd@processfalse%
+ \fi%
+ \if@tud@cdgeometry@process%
+ \tud@cdgeometry@process%
+ \global\@tud@cdgeometry@processfalse%
+ \fi%
+%</class>
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@cdgeometry@process
+% \end{macro}^^A \if@tud@cd@process
+% \end{macro}^^A \if@tud@x@scr@headings@reset
+% \end{macro}^^A \if@tud@font@skip@set
+% \end{macro}^^A \if@tud@math@set
+% \end{macro}^^A \if@tud@font@set
+% \end{macro}^^A \tud@atdocument@process
+%
+% \iffalse
+%</body>
+%</class&!inherit|package&fonts>
+%<*execute>
+%<*class&!inherit|package&fonts>
+% \fi
+%
+% \subsection{Versionsabhängige Voreinstellungen}
+%
+% Voreinstellungen von neu eingeführten Optionen, welche die resultierende
+% Ausgabe entscheidend verändern könnten, werden hier versionsabhängig gesetzt.
+% Hierfür wird der Schlüssel \opt{tudscrver} des Mitglieds \val{.comp} vor
+% allen anderen Schlüsseln ausgewertet. Danach kann mit \cs{tud@if@v@lower} auf
+% die gewählte Kompatibilitäsversion getestet werden.
+% \begin{macrocode}
+\DeclareOption*{}
+\FamilyProcessOptions[.comp]{TUD}\relax
+% \end{macrocode}
+% Ab der \TUDScript-Version~v2.05 werden einige vertikale Abstände abhängig von
+% der Schriftgröße definiert. Sollte eine frühere Kompatibilitätseinstellung
+% angegeben worden sein, wird dieses verhalten deaktiviert.
+% \begin{macrocode}
+\tud@if@v@lower{2.05}{%
+ \TUD@key@preset{relspacing}{false}%
+}{%
+ \TUD@key@preset{relspacing}{true}%
+}
+% \end{macrocode}
+% Ab \TUDScript-Version~v2.06 werden die verwendeten Schriften auf \OpenSans
+% gesetzt, für die Komptibilität zu vorherigen Versionen auf \Univers und \DIN.
+% \begin{macrocode}
+\tud@if@v@lower{2.06}{%
+%<!(class&poster)> \TUD@key@preset{cdoldfont}{true}%
+%<class&poster> \TUD@key@preset{cdoldfont}{ultrabold}%
+ \TUD@key@preset{ttfont}{lmodern}%
+%<class> \TUD@key@preset{headings}{light}%
+}{%
+%<!(class&poster)> \TUD@key@preset{cdfont}{true}%
+%<class&poster> \TUD@key@preset{cdfont}{ultrabold}%
+ \TUD@key@preset{ttfont}{roboto}%
+%<class> \TUD@key@preset{headings}{heavy}%
+}
+% \end{macrocode}
+%
+% \iffalse
+%</class&!inherit|package&fonts>
+% \fi
+%
+% \subsection{Durchreichen von Optionen und Standardoptionen}
+%
+% Durchreichen aller Klassenoptionen an die \KOMAScript-Klasse bzw. an die
+% genutzte \TUDScript-Elternklasse. Für Klassen wird vor dem Durchreichen noch
+% geprüft, ob ein spezielles Papierformat angegeben wurde.
+% \begin{macrocode}
+%<*package>
+%<*fonts>
+\DeclareOption*{\KOMAoptions{\CurrentOption}}
+%</fonts>
+%<*fixfonts>
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{tudscrfonts}}
+%</fixfonts>
+%<*comp>
+\DeclareOption*{\TUDoptions{\CurrentOption}}
+%</comp>
+%</package>
+%<*class>
+%<*!inherit>
+\DeclareOption*{\tud@x@scr@checkoptions}
+%</!inherit>
+%<*inherit>
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\TUD@Class@Parent}}
+%</inherit>
+%</class>
+% \end{macrocode}
+% Es werden die Standardoptionen ausgeführt. Für die Klasse \cls{tudscrposter}
+% werden die Farben aktiviert.
+% \begin{macrocode}
+%<*package&tutorial>
+\KOMAoptions{headings=small}
+\TUDoptions{cdfoot=true}
+%</package&tutorial>
+\TUDExecuteOptions{%
+%<*package>
+%<*fixfonts>
+ headings=heavy%
+%</fixfonts>
+%<*tutorial>
+ ToDo=true%
+%</tutorial>
+%</package>
+%<*class&!inherit>
+%<*book|report|article>
+ cd=true,tudbookmarks=true%
+%</book|report|article>
+%<*poster>
+ cd=bicolor,tudbookmarks=false%
+%</poster>
+%</class&!inherit>
+}
+\TUDProcessOptions\relax
+% \end{macrocode}
+% Die korrespindierende \KOMAScript-Klasse bzw. \TUDScript-Elternklasse wird
+% geladen.
+% \begin{macrocode}
+%<*class&!inherit>
+\LoadClass{\TUD@Class@KOMA}[2018/03/30]
+%</class&!inherit>
+%<*class&inherit>
+%<manual>\PassOptionsToClass{ttfont=roboto}{\TUD@Class@Parent}
+\LoadClass{\TUD@Class@Parent}
+%</class&inherit>
+% \end{macrocode}
+%
+% \iffalse
+%<*class&!inherit|package&fonts>
+% \fi
+%
+% \subsection{Optionen ohne späte Wahlmöglichkeit}
+%
+% Einige Optionen können nur zum Zeitpunkt des Ladens einer Klasse oder eines
+% Paketes respektive in der Präambel gesetzt werden. Diese müssen \emph{nach}
+% \cs{TUDProcessOptions} mit \cs{TUD@key@toolate} redefiniert werden.
+%
+% \begin{macro}{\TUD@key@toolate}
+% \changes{v2.06c}{2019/08/20}{neu}^^A
+% Dieser Befehl definiert eine Fehlermeldung für Schlüssel respektive Optionen,
+% die zu spät verwendet wurden, wobei er innerhalb der Makros \cs{AtEndOfClass},
+% \cs{AtEndOfClass}, \cs{AtEndPreamble} etc. genutzt werden sollte. Wird dieser
+% noch im Kontext von Klasse oder Paket (\verb=\@currname.\@currext-h@@k=)
+% verwendet, wird gemeldet, dass der Schlüssel allein beim Laden der Klasse
+% respektive des Paketes genutzt werden darf. Andernfalls wird die zwingende
+% Verwendung in der Präambel angemerkt.
+% \begin{macrocode}
+\newcommand*\TUD@key@toolate[1]{%
+ \csedef{tud@key@#1@error}{%
+%<*class>
+ \noexpand\ClassError{\noexpand\TUD@Class@Name}%
+%</class>
+%<*package&fonts>
+ \noexpand\PackageError{tudscrfonts}%
+%</package&fonts>
+ {Option `#1' too late}{%
+ Option `#1' can only be set\space%
+ \ifcsname \@currname.\@currext-h@@k\endcsname%
+ as optional \MessageBreak argument while loading\space%
+%<*class>
+ class `\noexpand\TUD@Class@Name'%
+%</class>
+%<*package&fonts>
+ package `tudscrfonts'%
+%</package&fonts>
+ \else%
+ in the preamble
+ \fi%
+ \MessageBreak but you have tried to set it up later.%
+ }%
+ }%
+ \TUD@key{#1}[]%
+ {%
+ \csuse{tud@key@#1@error}
+ \FamilyKeyStateProcessed%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \TUD@key@toolate
+%
+%
+% \iffalse
+%</class&!inherit|package&fonts>
+%</execute>
+%<*body>
+% \fi
+%
+% \subsection{Anpassungen für das Paket \pkg{textcase}}
+%
+% \begin{macro}{\@uclcnotmath}
+% \begin{macro}{\tud@x@textcase@uclcnotmath}
+% \changes{v2.02}{2014/06/27}{\pkg{textcase}: Ignorieren von Fußnoten im
+% Argument des Befehls \cs{MakeTextUppercase}}^^A
+% \changes{v2.03}{2015/01/21}{\pkg{textcase}: Ignorieren des Befehls
+% \cs{@mkboth} im Argument des Befehls \cs{MakeTextUppercase}}^^A
+% Damit Fußnoten innerhalb von \cs{MakeTextUppercase} nicht in Majuskeln
+% gesetzt werden, wird der interne Befehl \cs{@uclcnotmath} aus dem Paket
+% \pkg{textcase} angepasst.
+% \begin{macrocode}
+\if@tud@cdoldfont@active
+ \RequirePackage{textcase}[2004/10/07]
+ \AfterPackage*{textcase}{%
+ \robustify\NoCaseChange%
+ \newcommand*\tud@x@textcase@uclcnotmath{%
+ \@nonchangecase\hologo%
+ \def\footnote##1##{\toks@{\noexpand\footnote##1}\@footnote}%
+ \def\@footnote##1{\NoCaseChange{\the\toks@{##1}}}%
+ \def\@mkboth##1##2{\NoCaseChange{\@mkboth{##1}{##2}}}%
+ }%
+ \patchcmd{\@uclcnotmath}{\@nonchangecase\ensuremath}{%
+ \@nonchangecase\ensuremath\tud@x@textcase@uclcnotmath%
+ }{}{\tud@patch@wrn{@uclcnotmath}}%
+ }%
+\fi
+\TUD@deprecated@cs{NoCaseChange}{@firstofone}
+% \end{macrocode}
+% \end{macro}^^A \tud@x@textcase@uclcnotmath
+% \end{macro}^^A \@uclcnotmath
+%
+% \iffalse
+%</body>
+% \fi
+%
+% \Finale
+%
+\endinput
diff --git a/macros/latex/contrib/tudscr/source/tudscr-pagestyle.dtx b/macros/latex/contrib/tudscr/source/tudscr-pagestyle.dtx
new file mode 100644
index 0000000000..e6cb0a94e4
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/tudscr-pagestyle.dtx
@@ -0,0 +1,2785 @@
+% \CheckSum{2044}
+% \iffalse meta-comment
+%
+% TUD-Script -- Corporate Design of Technische Universität Dresden
+% ----------------------------------------------------------------------------
+%
+% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2019
+%
+% ----------------------------------------------------------------------------
+%
+% This work may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License, version 1.3c of the license. The latest
+% version of this license is in http://www.latex-project.org/lppl.txt and
+% version 1.3c or later is part of all distributions of LaTeX 2005/12/01
+% or later and of this work. This work has the LPPL maintenance status
+% "author-maintained". The current maintainer and author of this work
+% is Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+% in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
+% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+% Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
+% oder später und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status
+% "author-maintained", wird somit allein durch den Autor verwaltet. Der
+% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: tudscr-pagestyle.dtx
+%<*dtx>
+% \fi
+%
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{tudscr-pagestyle.dtx}[2019/08/20 v2.06c TUD-Script\space%
+ (pagestyle)%
+]
+%
+% \iffalse
+\documentclass[english,ngerman,xindy]{tudscrdoc}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{tudscrfonts}
+\KOMAoptions{parskip=half-}
+\usepackage{bookmark}
+\usepackage[babel]{microtype}
+
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tudscr-pagestyle.dtx}
+\title{\file{\filename}}
+\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
+\date{\fileversion\nobreakspace(\filedate)}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.02}{2014/06/23}{Paket \pkg{titlepage} nicht weiter unterstützt}^^A
+% \changes{v2.02}{2014/07/08}{\cs{FamilyKeyState} wird von Optionen genutzt}^^A
+% \changes{v2.05}{2015/07/06}{Seitenstil für Poster}^^A
+%
+% \section{Der Seitenstil des \CDs}
+%
+% Es wird der Seitenstil des \CD der \TnUD mit Logo und dem charakteristischen
+% Querbalken im Kopfbereich definiert. Hierfür kommt das \KOMAScript-Paket
+% \pkg{scrlayer-scrpage} zum Einsatz.
+% \ToDo{Abhängigkeiten Satzspiegel<>Seitenstil beseitigen}[v2.07]
+%
+% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%
+% \iffalse
+%<*class&body>
+% \fi
+%
+% \subsection{Definition des Seitenstils mit dem Paket \pkg{scrlayer-scrpage}}
+%
+% Ein zentraler Bestandteil von \TUDScript ist der Seitenkopf des \CDs. Dieser
+% wird ab der Version~v2.02 mit Hilfe des Paketes \pkg{scrlayer-scrpage}
+% erzeugt. Dafür werden einzelnene Seitenstile erstellt, welche zum einen von
+% verschiedenen Befehlen wie beispielsweise von\cs{maketitle} oder \cs{part}
+% bzw. \cs{addpart} genutzt werden. Zum anderen kann der Anwender selbst diese
+% entweder direkt über die Wahl des Seitenstils oder aber mit der
+% \env{tudpage}-Umgebung nutzen.
+%
+% Ist die Klasse \cls{standalone} zusammen mit der Option \opt{crop} aktiv,
+% werden die Seitenränder auf die Einstellungen dieser Klasse gesetzt und das
+% Laden von \pkg{scrlayer-scrpage} verhindert.
+% \begin{macrocode}
+\if@tud@x@standalone@crop
+ \PreventPackageFromLoading{scrlayer-scrpage}%
+\else
+ \AtEndPreamble{\RequirePackage{scrlayer-scrpage}[2013/12/14]}%
+\fi
+% \end{macrocode}
+% Für das Erzeugen der Seitenstile wird das Paket \pkg{scrlayer-scrpage}
+% genutzt. Mit diesem können verschiedene Ebenen erstellt werden, aus welchen
+% anschließend der eigentliche Seitenstil zusammengesetzt wird. Dabei werden
+% verschiedene, sogenannte Layers respektive Ebenen für die einzelnen Elemente
+% auf einer Seite erstellt.
+% \begin{macrocode}
+\AfterPackage{scrlayer-scrpage}{%
+% \end{macrocode}
+% \begin{layerpagestyle}{tudheadings}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% \begin{layerpagestyle}{plain.tudheadings}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% \begin{layerpagestyle}{empty.tudheadings}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% Es wird ein neuer Seitenstil kreiert, der das \CD der \TnUD mit der
+% prägenden Kopfzeile umsetzt. Dabei soll dieser Kopf auch verwendbar sein,
+% wenn nicht die vom \CD vorgeschriebenen Seitenränder sondern das Paket
+% \pkg{typearea} genutzt wird. Dafür wird das Logo im Kopf so wie im \CD
+% vorgesehen mit dem Logo der \TnUD in den Rand und dem Schriftzug bündig zum
+% Textblock gesetzt.
+% \begin{layer}{tudheadings.head.content}
+% \changes{v2.04}{2015/05/31}{neu}^^A
+% Dies sind das links aus dem Satzspiegel verschobene Logo der \TnUD und das
+% Zweitlogo. Diese werden seit der Version~v2.04 nicht mehr in zwei getrennten
+% sondern in einer gemeinsamen Ebene gesetzt.
+% \begin{macrocode}
+ \DeclareNewLayer[%
+ background,headsep,%
+ addhoffset=\dimexpr\tud@len@logox-\tud@len@widemargin\relax,%
+ addwidth=\dimexpr-\tud@len@logox+\tud@len@widemargin\relax,%
+ voffset=\tud@len@logoy,%
+ addvoffset=\tud@len@layoutvoffset,%
+ contents={%
+% \end{macrocode}
+% Vor der Ausgabe der Logoboxen werden diese im Bedarfsfall neu gesetzt.
+% \begin{macrocode}
+ \tud@mainlogo@set%
+ \tud@headlogo@option@set%
+ \tud@mainlogo@use\hfill\tud@headlogo@use%
+ },%
+ ]{tudheadings.head.content}%
+% \end{macrocode}
+% \end{layer}^^A tudheadings.head.content
+% \begin{layer}{tudheadings.head.back}
+% \changes{v2.03}{2015/02/14}{neu}^^A
+% \begin{layer}{tudheadings.head.bar}
+% \changes{v2.03}{2015/02/14}{neu}^^A
+% \changes{v2.05}{2015/07/14}{Bugfix verschobener Balken}^^A
+% Außerdem gibt es eine Variante ohne Querbalken-Outline. Stattdessen werden
+% der Querbalken und der darüberliegende Kopf farbig abgesetzt.
+% \begin{macrocode}
+ \DeclareNewLayer[%
+ background,%
+ width=\dimexpr\tud@len@layoutwidth+\tud@dim@bleedmargin*2\relax,%
+ addhoffset=\dimexpr\tud@len@layouthoffset-\tud@dim@bleedmargin\relax,%
+ height=\dimexpr\tud@len@topmargin+\tud@dim@bleedmargin\relax,%
+ addvoffset=\dimexpr\tud@len@layoutvoffset-\tud@dim@bleedmargin\relax,%
+ contents={%
+ \ifnum\tud@head@bar@num>\tw@\relax% cdhead=color
+ \color{HKS41}%
+ \rule{\layerwidth}{\layerheight}%
+ \fi%
+ },%
+ ]{tudheadings.head.back}%
+ \DeclareNewLayer[%
+ background,%
+ width=\dimexpr\tud@len@layoutwidth+\tud@dim@bleedmargin*2\relax,%
+ addhoffset=\dimexpr\tud@len@layouthoffset-\tud@dim@bleedmargin\relax,%
+ height=\tud@len@barheight,%
+ voffset=\tud@len@topmargin,%
+ addvoffset=\tud@len@layoutvoffset,%
+ contents={%
+ \ifnum\tud@head@bar@num>\@ne\relax% cdhead=barcolor/color
+ \color{HKS41!60}%
+ \setlength\@tempdima{\dimexpr\ht\strutbox-\tud@len@barheight\relax}%
+ \ifdim\@tempdima<\z@\relax\setlength\@tempdima{\z@}\fi%
+ \raisebox{\@tempdima}{\rule{\layerwidth}{\layerheight}}%
+ \fi%
+ },%
+ ]{tudheadings.head.bar}%
+% \end{macrocode}
+% \end{layer}^^A tudheadings.head.bar
+% \end{layer}^^A tudheadings.head.back
+% \begin{layer}{tudheadings.head.text}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% Fakultät, Einrichtung, Institut und Lehrstuhl als Inhalt des Querbalkens.
+% \begin{macrocode}
+ \DeclareNewLayer[%
+ background,headsep,%
+ voffset=\dimexpr\tud@len@topmargin+\tud@len@line\relax,%
+ addvoffset=\tud@len@layoutvoffset,%
+ contents={%
+ \tud@head@font@set%
+ \tud@head@text@set%
+ \tud@head@text@box%
+ },%
+ ]{tudheadings.head.text}%
+% \end{macrocode}
+% \end{layer}^^A tudheadings.head.text
+% \begin{layer}{tudheadings.head.upline}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% \begin{layer}{tudheadings.head.lowline}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% \begin{layer}{tudheadings.head.uplinewide}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% \begin{layer}{tudheadings.head.lowlinewide}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% Die Ebenen für obere und untere Linie des Querbalkens sowohl in der normalen
+% Version, welche den Textbereich überspannt als auch in der Variante über die
+% komplette Seitenbreite. Dabei muss für beide Varianten der entsprechenden
+% horizontale Versatz beachtet werden. Dafür wird ggf. der Parameter \val{head}
+% von \pkg{scrlayer-scrpage} verwendet.
+% \begin{macrocode}
+ \DeclareNewLayer[%
+ background,headsep,%
+ voffset=\dimexpr\tud@len@topmargin-.5\tud@len@line\relax,%
+ addvoffset=\tud@len@layoutvoffset,%
+ contents={%
+ \ifnum\tud@head@bar@num<\tw@\relax% cdhead=nocolor/litecolor
+ \if@tud@head@widebar\else\tud@head@rule{\layerwidth}\fi%
+ \fi%
+ },%
+ ]{tudheadings.head.upline}%
+ \DeclareNewLayer[%
+ background,headsep,%
+ voffset=\dimexpr\tud@len@topmargin+\tud@len@barheight%
+ -.5\tud@len@line\relax,%
+ addvoffset=\tud@len@layoutvoffset,%
+ contents={%
+ \ifnum\tud@head@bar@num<\tw@\relax% cdhead=nocolor/litecolor
+ \if@tud@head@widebar\else\tud@head@rule{\layerwidth}\fi%
+ \fi%
+ },%
+ ]{tudheadings.head.lowline}%
+ \DeclareNewLayer[%
+ background,%
+ width=\dimexpr\tud@len@layoutwidth+\tud@dim@bleedmargin*2\relax,%
+ addhoffset=\dimexpr\tud@len@layouthoffset-\tud@dim@bleedmargin\relax,%
+ voffset=\dimexpr\tud@len@topmargin-.5\tud@len@line\relax,%
+ addvoffset=\tud@len@layoutvoffset,%
+ contents={%
+ \ifnum\tud@head@bar@num<\tw@\relax% cdhead=nocolor/litecolor
+ \if@tud@head@widebar\tud@head@rule{\layerwidth}\fi%
+ \fi%
+ },%
+ ]{tudheadings.head.uplinewide}%
+ \DeclareNewLayer[%
+ background,%
+ width=\dimexpr\tud@len@layoutwidth+\tud@dim@bleedmargin*2\relax,%
+ addhoffset=\dimexpr\tud@len@layouthoffset-\tud@dim@bleedmargin\relax,%
+ voffset=\dimexpr\tud@len@topmargin+\tud@len@barheight%
+ -.5\tud@len@line\relax,%
+ addvoffset=\tud@len@layoutvoffset,%
+ contents={%
+ \ifnum\tud@head@bar@num<\tw@\relax% cdhead=nocolor/litecolor
+ \if@tud@head@widebar\tud@head@rule{\layerwidth}\fi%
+ \fi%
+ },%
+ ]{tudheadings.head.lowlinewide}%
+% \end{macrocode}
+% \end{layer}^^A tudheadings.head.lowlinewide
+% \end{layer}^^A tudheadings.head.uplinewide
+% \end{layer}^^A tudheadings.head.lowline
+% \end{layer}^^A tudheadings.head.upline
+% \begin{layer}{tudheadings.head.date}
+% \changes{v2.05}{2016/05/27}{neu}^^A
+% Optionales Datum rechts oberhalb des Textbereiches.
+% \begin{macrocode}
+ \DeclareNewLayer[%
+ foreground,headsep,%
+ addvoffset=.5\tud@len@headsep,%
+ height=\baselineskip,%
+ contents={\if@tud@head@date\hfill\tud@date@print\fi},%
+ ]{tudheadings.head.date}%
+% \end{macrocode}
+% \end{layer}^^A tudheadings.head.date
+% \begin{layer}{tudheadings.foot.back}
+% \changes{v2.03}{2015/02/15}{neu}^^A
+% \begin{layer}{tudheadings.foot.logo}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% \changes{v2.04}{2015/05/31}{neu}^^A
+% \changes{v2.03}{2015/02/15}{überarbeitetet}^^A
+% \begin{layer}{tudheadings.foot.content}
+% \changes{v2.04}{2015/04/21}{neu}^^A
+% \changes{v2.05}{2015/07/06}{Bugfix für Kompatibilitätsmodus}^^A
+% Die folgenden Ebenen dienen für die Ausgabe des Fußbereiches. Dieser kann mit
+% einem farbigen Hintergrund und zusätzlichen Logos (\cs{footlogo}) sowie frei
+% wählbare Inhalte ein- oder zweispaltig mit \cs{footcontent} erstellt werden.
+% Dabei werden die Ebenen in Abhängigkeit vom gewählten Kompatibilitätsmodus
+% unterschiedlich definiert. Die erste Ebene bestimmt die Hintergrundgestaltung
+% des Fußbereiches.
+% \begin{macrocode}
+ \DeclareNewLayer[%
+ background,foot,%
+ width=\dimexpr\tud@len@layoutwidth+\tud@dim@bleedmargin*2\relax,%
+ hoffset=\dimexpr\tud@len@layouthoffset-\tud@dim@bleedmargin\relax,%
+ height=\dimexpr\tud@len@layoutheight-\layeryoffset%
+ +\tud@len@layoutvoffset+\tud@dim@bleedmargin\relax,%
+ addvoffset=-\dp\strutbox,%
+ contents={%
+ \if@tud@foot@colored%
+ \let\@tempc\relax%
+ \ifdefvoid{\tud@pagecolor}{%
+ \ifcase\tud@head@bar@num\relax\or% cdhead=litecolor
+ \def\@tempc{\color{HKS41!60}}%
+ \or% cdhead=barcolor
+ \def\@tempc{\color{HKS41!60}}%
+ \or% cdhead=color
+ \def\@tempc{\color{HKS41}}%
+ \fi%
+ }{%
+ \def\@tempc{\color{HKS41}}%
+ \ifstr{\tud@pagecolor}{HKS41}{\def\@tempc{\color{HKS41!60}}}{}%
+ }%
+ \ifx\@tempc\relax\else%
+ \@tempc\rule{\layerwidth}{\layerheight}%
+ \fi%
+ \fi%
+ },%
+ ]{tudheadings.foot.back}%
+% \end{macrocode}
+% Bis zur Version~v2.02 wurde für die Verwendung des \DDC-Logos der Satzspiegel
+% geändert. Hier wird dem Rechnung getragen, indem der farbige Hintergrund im
+% Zweifelsfall vergrößert wird.
+% \begin{macrocode}
+ \tud@if@v@lower{2.03}{%
+ \ModifyLayer[%
+ addvoffset=-\tud@len@ddcdiff+\ht\strutbox,%
+ contents={%
+ \if@tud@foot@colored%
+ \let\@tempc\relax%
+ \ifdefvoid{\tud@pagecolor}{%
+ \ifcase\tud@head@bar@num\relax\or\or% cdhead=barcolor
+ \def\@tempc{\color{HKS41!60}}%
+ \or% cdhead=color
+ \def\@tempc{\color{HKS41}}%
+ \fi%
+ }{%
+ \def\@tempc{\color{HKS41}}%
+ \ifstr{\tud@pagecolor}{HKS41}{\def\@tempc{\color{HKS41!60}}}{}%
+ }%
+ \ifx\@tempc\relax\else%
+ \tud@ddc@check%
+ \ifcase\@tempb\relax% \tud@ddc@foot@num=false
+ \vbox to \layerheight{%
+ \vfil\@tempc%
+ \rule{\layerwidth}{%
+ \dimexpr\layerheight-\tud@len@ddcdiff+\ht\strutbox\relax%
+ }%
+ }%
+ \else% \tud@ddc@foot@num!=false
+ \@tempc\rule{\layerwidth}{\layerheight}%
+ \fi%
+ \fi%
+ \fi%
+ },%
+ ]{tudheadings.foot.back}%
+ }{}%
+% \end{macrocode}
+% Die zweite Ebene wird für die Ausgabe von Drittlogos und des \DDC-Logos sowie
+% freien Inhalten im Seitenfuß erstellt. Ab Version~v2.03 wird der Satzspiegel
+% so gewählt, dass das \DDC-Logo und andere Inhalten in den normalen Seitenfuß
+% passen.
+% \begin{macrocode}
+ \DeclareNewLayer[%
+ background,foot,%
+ height=\dimexpr\tud@len@layoutheight-\layeryoffset%
+ +\tud@len@layoutvoffset\relax,%
+ contents={%
+% \end{macrocode}
+% Falls die Höhe der Logos im Fuß nicht durch den Anwender festgelegt wurden,
+% werden passende Standardwerte gesetzt. Außerdem wird die genutzte Höhe des
+% Layers nicht vollständig genutzt, um bei einem farbigen Fußbereich einen
+% gewissen Abstand vom Inhalt zur Kante zu erhalten.
+% \begin{macrocode}
+ \TUD@deprecated@lengthcs[%
+ \global\@tud@footlogo@option@settrue%
+ ]{footlogoheight}%
+ \setlength\@tempdima{\dimexpr\layerheight-\dp\strutbox\relax}%
+% \end{macrocode}
+% Im Bedarfsfall werden die Boxen vor der Ausgabe durch die einzelnen
+% \cs{\dots{}@use}-Befehle neu gesetzt. Danach erfolgt die Ausgabe, wobei die
+% Boxen übereinander gelegt werden.
+% \begin{macrocode}
+ \tud@footlogo@cmd@use{\@tempdima}{\layerwidth}%
+ \tud@footlogo@ddc@use{\@tempdima}{\layerwidth}%
+ \tud@footcontent@use{\@tempdima}{\layerwidth}%
+ },%
+ ]{tudheadings.foot.content}%
+% \end{macrocode}
+% Bis zur Version~v2.02 wurde für die Verwendung des \DDC-Logos der Satzspiegel
+% geändert. Hier wird dem Rechnung getragen.
+% \begin{macrocode}
+ \tud@if@v@lower{2.03}{%
+ \ModifyLayer[%
+ addvoffset=-\tud@len@ddcdiff+\ht\strutbox,%
+ contents={%
+ \TUD@deprecated@lengthcs[%
+ \global\@tud@footlogo@option@settrue%
+ ]{footlogoheight}%
+ \setlength\@tempdima{\dimexpr\layerheight-\dp\strutbox\relax}%
+ \tud@ddc@check%
+ \ifcase\@tempb\relax% \tud@ddc@foot@num=false
+ \addtolength\@tempdima{\dimexpr\ht\strutbox-\tud@len@ddcdiff\relax}%
+ \vskip\dimexpr\tud@len@ddcdiff-\ht\strutbox-\baselineskip\relax%
+ \fi%
+ \tud@footlogo@cmd@use{\@tempdima}{\layerwidth}%
+ \tud@footlogo@ddc@use{\@tempdima}{\layerwidth}%
+ \tud@footcontent@use{\@tempdima}{\layerwidth}%
+ },%
+ ]{tudheadings.foot.content}%
+ }{}%
+% \end{macrocode}
+% \end{layer}^^A tudheadings.foot.content
+% \end{layer}^^A tudheadings.foot.logo
+% \end{layer}^^A tudheadings.foot.back
+% \begin{layer}{tudheadings.last}
+% \changes{v2.04}{2015/04/02}{neu}^^A
+% Die letzte Ebene dient nicht der Ausgabe eines bestimmten Inhaltes sondern
+% wird für evtl. notwendige Aufräumarbeiten etc. bereitgehalten.
+% \begin{macrocode}
+ \DeclareNewLayer[%
+ background,%
+% \end{macrocode}
+% Falls ein Kapitel ohne die Option \opt{chapterpage} gesetzt wird und dennoch
+% die Gestalt des Kopfes des \pgs{tudheadings}-Seitenstils sich vom restlichen
+% Dokument unterscheiden soll (\opt{cd} bzw. \opt{cdchapter}), so dient das
+% Makro \cs{tud@head@bar@restore} zum Zurücksetzen auf das normale Verhalten.
+% Siehe \cs{tud@chapter@app}.
+% \begin{macrocode}
+%<book|report> contents=\tud@head@bar@restore,%
+ ]{tudheadings.last}%
+% \end{macrocode}
+% \end{layer}^^A tudheadings.last
+% Aus den zuvor erstellten Ebenen werden jetzt die eigentlichen Seitenstile
+% zusammengesetzt. Als erstes wird der \pgs{headings}-Seitenstil definiert.
+% Dieser verwendet den TUD-Kopf und die Fußzeilenebenen des Seitenstils
+% \pgs{scrheadings}, welche zur Definition des Seitenstils verwendet werden.
+% Beim Aktivieren des Seitenstils wird außerdem \cs{tud@ps@init} ausgeführt.
+% Damit die Benutzerschnittstelle von \pkg{scrlayer-scrpage} für die Fußzeile
+% weiterhin durch den Anwender verwendet werden kann, werden wie erwähnt die
+% entsprechenden \pgs{scrheadings}-Ebenen verwendet.
+% \begin{macrocode}
+ \DeclareNewPageStyleByLayers[%
+ onselect=\tud@ps@onselect,onbackground=\tud@ps@onbackground%
+ ]{tudheadings}{%
+ tudheadings.head.back,%
+ tudheadings.head.content,%
+ tudheadings.head.bar,%
+ tudheadings.head.text,%
+ tudheadings.head.upline,%
+ tudheadings.head.lowline,%
+ tudheadings.head.uplinewide,%
+ tudheadings.head.lowlinewide,%
+ tudheadings.head.date,%
+ tudheadings.foot.back,%
+ tudheadings.foot.content,%
+ tudheadings.last,%
+ scrheadings.foot.odd,%
+ scrheadings.foot.even,%
+ scrheadings.foot.oneside,%
+ scrheadings.foot.above.line,%
+ scrheadings.foot.below.line%
+ }%
+% \end{macrocode}
+% Zuletzt werden Aliasnamen für den Seitenstil definiert.
+% \begin{macrocode}
+ \DeclareNewPageStyleAlias{tud}{tudheadings}%
+ \DeclareNewPageStyleAlias{tudscr}{tudheadings}%
+ \DeclareNewPageStyleAlias{tudscrheadings}{tudheadings}%
+% \end{macrocode}
+% Für den \pgs{plain}-Seitenstil wird ebenso verfahren. Hier werden für die
+% Fußzeilenebenen des Seitenstils \pgs{plain.scrheadings} hinzugefügt.
+% \begin{macrocode}
+ \DeclareNewPageStyleByLayers[%
+ onselect=\tud@ps@onselect,onbackground=\tud@ps@onbackground%
+ ]{plain.tudheadings}{%
+ tudheadings.head.back,%
+ tudheadings.head.content,%
+ tudheadings.head.bar,%
+ tudheadings.head.text,%
+ tudheadings.head.upline,%
+ tudheadings.head.lowline,%
+ tudheadings.head.uplinewide,%
+ tudheadings.head.lowlinewide,%
+ tudheadings.head.date,%
+ tudheadings.foot.back,%
+ tudheadings.foot.content,%
+ tudheadings.last,%
+ plain.scrheadings.foot.odd,%
+ plain.scrheadings.foot.even,%
+ plain.scrheadings.foot.oneside,%
+ plain.scrheadings.foot.above.line,%
+ plain.scrheadings.foot.below.line%
+ }%
+ \DeclareNewPageStyleAlias{plain.tudscrheadings}{plain.tudheadings}%
+ \DeclareNewPageStyleAlias{tudplain}{plain.tudheadings}%
+ \DeclareNewPageStyleAlias{tudscrplain}{plain.tudheadings}%
+ \DeclareNewPageStyleAlias{tudheadingsplain}{plain.tudheadings}%
+ \DeclareNewPageStyleAlias{tudscrheadingsplain}{plain.tudheadings}%
+% \end{macrocode}
+% Des Weiteren gibt es einen selbstständigen \enquote{leeren} Seitenstil, der
+% lediglich aus dem Kopf besteht und einen lerren Seitenfuß hat.
+% \begin{macrocode}
+ \DeclareNewPageStyleByLayers[%
+ onselect=\tud@ps@onselect,onbackground=\tud@ps@onbackground%
+ ]{empty.tudheadings}{%
+ tudheadings.head.back,%
+ tudheadings.head.content,%
+ tudheadings.head.bar,%
+ tudheadings.head.text,%
+ tudheadings.head.upline,%
+ tudheadings.head.lowline,%
+ tudheadings.head.uplinewide,%
+ tudheadings.head.lowlinewide,%
+ tudheadings.head.date,%
+ tudheadings.foot.back,%
+ tudheadings.foot.content,%
+ tudheadings.last%
+ }%
+ \DeclareNewPageStyleAlias{empty.tudscrheadings}{empty.tudheadings}%
+ \DeclareNewPageStyleAlias{tudempty}{empty.tudheadings}%
+ \DeclareNewPageStyleAlias{tudscrempty}{empty.tudheadings}%
+ \DeclareNewPageStyleAlias{tudheadingsempty}{empty.tudheadings}%
+ \DeclareNewPageStyleAlias{tudscrheadingsempty}{empty.tudheadings}%
+% \end{macrocode}
+% \begin{layer}{tudheadings.pagecolor}
+% \changes{v2.03}{2015/01/09}{neu}^^A
+% Um farbige Titel- Teil- und Kapitelseiten \emph{unabhängig} vom aktuell
+% verwendeten Seitenstil erstellen zu können, wird die zusätzliche Ebene
+% \val{tudheadings.pagecolor} definiert, die \emph{allen} Seitenstilen
+% hinzugefügt wird. Dabei dient das Makros \cs{tud@pagecolor} zum Umschalten
+% der Hintergrundfarben.
+% \begin{macrocode}
+ \DeclareNewLayer[%
+ background,%
+ area=%
+ {\dimexpr\tud@len@layouthoffset-\tud@dim@bleedmargin\relax}%
+ {\dimexpr\tud@len@layoutvoffset-\tud@dim@bleedmargin\relax}%
+ {\dimexpr\tud@len@layoutwidth+\tud@dim@bleedmargin*2\relax}%
+ {\dimexpr\tud@len@layoutheight+\tud@dim@bleedmargin*2\relax}%
+ ,%
+ contents={%
+ \ifdefvoid{\tud@pagecolor}{}{%
+ \color{\tud@pagecolor}%
+ \rule{\layerwidth}{\layerheight}%
+ }%
+ },%
+ ]{tudheadings.pagecolor}%
+ \AddLayersToPageStyle{@everystyle@}{tudheadings.pagecolor}%
+% \end{macrocode}
+% \end{layer}^^A tudheadings.pagecolor
+% Damit wurden alle Ebenen und die darauf aufbauenden Seitenstile deklariert.
+% \end{layerpagestyle}^^A empty.tudheadings
+% \end{layerpagestyle}^^A plain.tudheadings
+% \end{layerpagestyle}^^A tudheadings
+% Damit ist die Deklaration der Seitenstile mit \pkg{scrlayer-scrpage} beendet.
+% \begin{macrocode}
+}
+% \end{macrocode}
+%
+% \subsubsection{Erweitertung der Seitenstilauswahl}
+%
+% Da sich die zuvor definierten Seitenstile von den Standardseitenstilen stark
+% unterscheiden und auch einen separaten Satzspiegel benötigen, sind einige
+% Makros zur Kontrollstrukturierung notwendig.
+%
+% \begin{macro}{\tud@if@tudheadings}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% \begin{macro}{\tud@ps@list}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% Mit dem Befehl \cs{tud@if@tudheadings} kann geprüft werden, ob der im ersten
+% Argument gegebene Seitenstil~-- was auch das Makro \cs{currentpagestyle} sein
+% kann, welches durch das Paket \pkg{scrlayer-scrpage} definiert wird und den
+% aktuellen Seitenstil beinhaltet~-- einem aus der Liste \cs{tud@ps@list}
+% entspricht. Ist dies der Fall, wird das zweite Argument ausgeführt,
+% anderfalls das dritte. In die Liste \cs{tud@ps@list} werden die drei zuvor
+% definierten Seitenstile eingetragen.
+% \begin{macrocode}
+\newcommand*\tud@ps@list{}
+\listadd\tud@ps@list{tudheadings}
+\listadd\tud@ps@list{plain.tudheadings}
+\listadd\tud@ps@list{empty.tudheadings}
+\newcommand*\tud@if@tudheadings[3]{%
+ \xifinlist{\GetRealPageStyle{#1}}{\tud@ps@list}{#2}{#3}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@ps@list
+% \end{macro}^^A \tud@if@tudheadings
+% \begin{macro}{\thispagestyle}
+% \changes{v2.03}{2015/01/20}{Auswahl eines Aliasseitenstils unterdrückt}^^A
+% Wird der Befehl \cs{thispagestyle} verwendet, muss dafür Sorge getragen
+% werden, dass kein Alias-Seitenstil expandiert wird.
+% \begin{macrocode}
+\patchcmd{\thispagestyle}{\gdef\@specialstyle{#1}}{%
+ \xdef\@specialstyle{\GetRealPageStyle{#1}}%
+}{}{\tud@patch@wrn{thispagestyle}}
+% \end{macrocode}
+% \end{macro}^^A \thispagestyle
+% \begin{macro}{\pagestyle}
+% \changes{v2.04}{2015/06/18}{Aktivierung der Seitenstile \pgs{tudheadings} vor
+% \pkg{scrlayer-scrpage} möglich}^^A
+% \begin{macro}{\tud@pagestyle}
+% \changes{v2.04}{2015/06/18}{neu}
+% Für den Fall, dass das Paket \pkg{scrlayer-scrpage} nicht geladen wird und
+% dennoch das Makro \cs{currentpagestyle} wie erwartet definiert ist, wird der
+% originale Befehl etwas angepasst.
+% \begin{macrocode}
+\newcommand*\tud@pagestyle{}
+\let\tud@pagestyle\pagestyle
+\newcommand*\currentpagestyle{plain}
+\pretocmd{\tud@pagestyle}{%
+ \tud@BeforeSelectAnyPageStyle{#1}%
+ \edef\currentpagestyle{#1}%
+}{}{\tud@patch@wrn{pagestyle}}
+% \end{macrocode}
+% Damit die neuen Seitenstile auch vor dem Laden von \pkg{scrlayer-scrpage}
+% bereits durch den Anwender ausgewählt werden können, wird \cs{pagestyle}
+% temporär zurechtgebogen. Die Definition des Makros wird gesichert und direkt
+% vor dem Laden des Paketes wiederhergestellt. Damit werden die Seitenstile
+% erst aktiviert, nachdem diese auch tatsächlich erstellt wurden.
+% \begin{macrocode}
+\tud@cs@store{pagestyle}
+\renewcommand*\pagestyle[1]{\AfterPackage!{scrlayer-scrpage}{\pagestyle{#1}}}
+\BeforePackage{scrlayer-scrpage}{%
+ \tud@cs@restore{pagestyle}%
+ \undef\tud@pagestyle%
+ \undef\currentpagestyle%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@pagestyle
+% \end{macro}^^A \pagestyle
+% Die Seitenstile und Satzspiegel korrelieren sehr stark, weshalb das Paket
+% \pkg{scrlayer-scrpage} geladen sein muss und auch alle darauf aufbauenden
+% Einstellungen abgeschlossen sein müssen, um die Satzspiegel zu definieren.
+% \ToDo{Abhängigkeiten Satzspiegel<>Seitenstil beseitigen}[v2.07]
+% \begin{macrocode}
+\AfterPackage!{scrlayer-scrpage}{\AtEndPreamble{\tud@cdgeometry@init}}
+% \end{macrocode}
+% \begin{macro}{\ps@tudheadings}
+% \begin{macro}{\ps@plain.tudheadings}
+% \begin{macro}{\ps@empty.tudheadings}
+% \begin{macro}{\currentpagestyle}
+% \begin{macro}{\BeforeSelectAnyPageStyle}
+% \begin{macro}{\GetRealPageStyle}
+% Um die rudimentäre Verwendung der Klassen auch zu ermöglichen, wenn das Laden
+% des Paketes \pkg{scrlayer-scrpage} verhindert wurde, werden für diesen Fall
+% einige notwendige Makros definiert.
+% \begin{macrocode}
+\TUD@UnwindPackage{scrlayer-scrpage}{%
+ \ifcsundef{if@chapter}{%
+ \newif\if@chapter%
+ \ifcsundef{chapter}{\@chapterfalse}{\@chaptertrue}%
+ }{}%
+ \cslet{ps@tudheadings}{\ps@headings}%
+ \cslet{ps@plain.tudheadings}{\ps@plain}%
+ \cslet{ps@empty.tudheadings}{\ps@empty}%
+ \providecommand*\currentpagestyle{plain}%
+ \providecommand*\BeforeSelectAnyPageStyle[1]{}%
+ \providecommand*\GetRealPageStyle[1]{#1}%
+% \end{macrocode}
+% Außerdem wird die angepasste Definition von \cs{pagestyle} verwendet.
+% \begin{macrocode}
+ \let\pagestyle\tud@pagestyle%
+ \undef\tud@pagestyle%
+% \end{macrocode}
+% Das Erstellen des Satzsiegels erfolgt normalerweise nach dem Paket.
+% \begin{macrocode}
+ \tud@cdgeometry@init%
+}
+% \end{macrocode}
+% \end{macro}^^A \GetRealPageStyle
+% \end{macro}^^A \BeforeSelectAnyPageStyle
+% \end{macro}^^A \currentpagestyle
+% \end{macro}^^A \ps@empty.tudheadings
+% \end{macro}^^A \ps@plain.tudheadings
+% \end{macro}^^A \ps@tudheadings
+% \begin{macro}{\tud@ps@onselect}
+% \changes{v2.03}{2015/01/09}{neu}^^A
+% Der Befehl wird bei der Initialisierung der Seitenstile aufgerufen.
+% \begin{macrocode}
+\newcommand*\tud@ps@onselect{%
+% \end{macrocode}
+% Normalerweise werden durch \pkg{scrlayer-scrpage} bei der Umschaltung auf
+% einen mit dem Befehl \cs{newpairofpagestyles}\marg{Seitenstil} definierten
+% Seitenstil, die Seitenstile \pgs{headings} und \pgs{plain} als Aliase für
+% \pgs{\meta{Seitenstil}} und \pgs{plain.\meta{Seitenstil}} festgelegt.
+% Allerdings definiert dieser Befehl zusätzliche Ebenen für Kopf- und Fußzeile,
+% weshalb auf die Verwendung verzichtet wird. Das automatische Umschalten soll
+% dennoch ermöglicht werden.
+% \begin{macrocode}
+ \DeclarePageStyleAlias{plain}{plain.tudheadings}%
+ \DeclarePageStyleAlias{headings}{tudheadings}%
+ \def\sls@currentheadings{tudheadings}%
+ \def\sls@currentplain{plain.tudheadings}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@ps@onselect
+%
+% \subsubsection{Gestaltungsvarianten für Kopf- und Fußzeile}
+%
+% \begin{macro}{\tud@ps@onbackground}
+% \changes{v2.03}{2015/02/14}{neu}^^A
+% \changes{v2.04}{2015/04/21}{Kopf- und Fußeinstellungen abhängig von der Farbe
+% des Seitenhintergrunds}^^A
+% \begin{macro}{\tud@head@logocolor}
+% \begin{macro}{\tud@head@fontcolor}
+% \changes{v2.04}{2015/05/18}{neu}^^A
+% \begin{macro}{\tud@foot@logocolor}
+% \changes{v2.03}{2015/02/15}{neu}^^A
+% \begin{macro}{\tud@foot@fontcolor}
+% \changes{v2.04}{2015/04/21}{neu}^^A
+% Das Makro \cs{tud@head@logocolor} enthält die Farbe des Kopfes. Die Gestalt
+% des Querbalkens kann über die Option \opt{cdhead} geändert werden. Für Titel,
+% Teil und Kapitel gibt es speziell dazugehörige Optionen, womit das Aussehen
+% des Kopfes ggf. angepasst werden kann. Mit \cs{tud@foot@logocolor} kann
+% die Farbe eines etwaigen \DDC-Logo gleichermaßen festgelegt werden, in
+% \cs{tud@foot@fontcolor} wird ggf. die Schriftfarbe für den Fuß gespeichert.
+% Um die Optionen innerhalb des Dokumentes ändern zu können, werden die
+% Anpassungen bei jeder Ausgabe eines Seitenstiles mit \cs{tud@ps@onbackground}
+% ausgeführt.
+% \begin{macrocode}
+\newcommand*\tud@head@logocolor{black}
+\newcommand*\tud@head@fontcolor{}
+\newcommand*\tud@foot@logocolor{black}
+\newcommand*\tud@foot@fontcolor{}
+\newcommand*\tud@ps@onbackground{%
+% \end{macrocode}
+% Zunächst die Einstellungen für Seiten ohne spezielle Hintergrundfarbe für den
+% Kopf\dots
+% \begin{macrocode}
+ \ifdefvoid{\tud@pagecolor}{%
+ \ifcase\tud@head@bar@num\relax% cdhead=nocolor
+ \renewcommand*\tud@head@logocolor{black}%
+ \renewcommand*\tud@head@fontcolor{}%
+ \or% cdhead=litecolor
+ \renewcommand*\tud@head@logocolor{HKS41}%
+ \renewcommand*\tud@head@fontcolor{HKS41}%
+ \or% cdhead=barcolor
+ \renewcommand*\tud@head@logocolor{HKS41}%
+ \renewcommand*\tud@head@fontcolor{white}%
+ \or% cdhead=color
+ \renewcommand*\tud@head@logocolor{white}%
+ \renewcommand*\tud@head@fontcolor{white}%
+ \fi%
+% \end{macrocode}
+% \dots und den Fuß.
+% \begin{macrocode}
+ \ifcase\tud@head@bar@num\relax% cdhead=nocolor
+ \renewcommand*\tud@foot@logocolor{black}%
+ \renewcommand*\tud@foot@fontcolor{}%
+ \if@tud@foot@colored%
+ \ClassWarning{\TUD@Class@Name}{%
+ It isn't possible to use a colored foot together\MessageBreak%
+ with a non-colored head (`cdhead=nocolor')%
+ }%
+ \fi%
+ \else% cdhead=*color
+ \if@tud@foot@colored%
+ \renewcommand*\tud@foot@logocolor{white}%
+ \renewcommand*\tud@foot@fontcolor{white}%
+ \else%
+ \renewcommand*\tud@foot@logocolor{HKS41}%
+ \renewcommand*\tud@foot@fontcolor{HKS41}%
+ \fi%
+ \fi%
+ }{%
+% \end{macrocode}
+% Die Einstellungen für Seiten mit Hintergrundfarbe variieren davon. Zuerst die
+% für farbige Titel- und Teileseiten\dots
+% \begin{macrocode}
+ \tud@locked@bool@preset{@tud@head@widebar}{true}%
+ \ifstr{\tud@pagecolor}{HKS41}{%
+ \renewcommand*\tud@head@logocolor{white}%
+ \renewcommand*\tud@head@fontcolor{white}%
+ \renewcommand*\tud@foot@logocolor{white}%
+% \end{macrocode}
+% Die Farbe für die Schrift im Fuß wird für Poster immer weiß gesetzt, falls
+% über die Option \opt{backcolor} für den Seitenhintergrund die primäre
+% Hausfarbe genutzt wird.
+% \begin{macrocode}
+%<*book|report|article>
+ \if@tud@foot@colored%
+%</book|report|article>
+ \renewcommand*\tud@foot@fontcolor{white}%
+%<*book|report|article>
+ \else%
+ \renewcommand*\tud@foot@fontcolor{HKS41!30}%
+ \fi%
+%</book|report|article>
+% \end{macrocode}
+% \dots sowie die für die farbigen Kapitelseiten.
+% \begin{macrocode}
+ }{%
+ \renewcommand*\tud@head@logocolor{HKS41}%
+ \renewcommand*\tud@head@fontcolor{HKS41}%
+ \ifcase\tud@head@bar@num\relax\or\or\or% cdhead=color
+ \renewcommand*\tud@head@logocolor{white}%
+ \renewcommand*\tud@head@fontcolor{white}%
+ \fi%
+ \if@tud@foot@colored%
+ \renewcommand*\tud@foot@logocolor{white}%
+ \renewcommand*\tud@foot@fontcolor{white}%
+ \else%
+ \renewcommand*\tud@foot@logocolor{HKS41}%
+ \renewcommand*\tud@foot@fontcolor{HKS41}%
+ \fi%
+ }%
+ }%
+% \end{macrocode}
+% Abhängig von der eingestzten Schriftfarbe des Kopfes wird die Linienstärke
+% des Querbalkens gesetzt, die Schriftfarbe des Fußes wird global geändert,
+% damit Seitenzahl und Kolumnentitel gegebenenfalls angepasst werden.
+% \begin{macrocode}
+ \let\tud@len@line\tud@len@thinline%
+ \ifstr{\tud@head@fontcolor}{white}{\let\tud@len@line\tud@len@heavyline}{}%
+ \global\let\tud@foot@fontcolor\tud@foot@fontcolor%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@foot@fontcolor
+% \end{macro}^^A \tud@foot@logocolor
+% \end{macro}^^A \tud@head@fontcolor
+% \end{macro}^^A \tud@head@logocolor
+% \end{macro}^^A \tud@ps@onbackground
+%
+% \subsubsection{Inhalt des Querbalkens in der Kopfzeile}
+%
+% Mit dem Makro \cs{tud@head@font@set} wird die zu verwendende Schrift für den
+% Querbalken definiert. Hier wird der zu verwendende Inhalt formatiert.
+%
+% \begin{macro}{\tud@head@text@line}
+% \begin{macro}{\tud@head@text@list}
+% \changes{v2.05}{2015/11/26}{neu}^^A
+% \begin{macro}{\tud@head@text@delimiter}
+% \begin{macro}{\tud@head@text@buffer}
+% Diese Befehle sind Hilfsmakros, die bei der Erzeugung der Textzeile inner- und
+% unterhalb des Querbalkens des TUD-Kopfes dienen.
+% \begin{macrocode}
+\newcommand*\tud@head@text@line{}
+\newcommand*\tud@head@text@list{}
+\newcommand*\tud@head@text@delimiter{}
+\newcommand*\tud@head@text@buffer{}
+% \end{macrocode}
+% \end{macro}^^A \tud@head@text@buffer
+% \end{macro}^^A \tud@head@text@delimiter
+% \end{macro}^^A \tud@head@text@list
+% \end{macro}^^A \tud@head@text@line
+% \begin{macro}{\tud@head@text@add}
+% \changes{v2.04}{2015/04/08}{Verwendung von \cs{protected@edef}}^^A
+% \changes{v2.05}{2015/11/26}{Redesign}^^A
+% Dieser Befehl dient zum Füllen einer Liste für die spätere Ausgabe der
+% Kopfzeilenfelder. Es werden sequentiellalle potenziellen Felder hinzugefügt.
+% Sollte das hinzuzufügende Feld dazu führen, dass der Text der Kopfzeile über
+% den Seitenrand hinausragen würde, so wird eine weitere Zeile begonnen. Das
+% Trennzeichen zwischen einzelnen Feldern muss gepuffert werden, da dieses nur
+% gesetzt werden soll, wenn ein weiteres Feld nachfolgt.
+% \begin{macrocode}
+\newcommand*\tud@head@text@add[3][{, }]{%
+ \ifxblank{#3}{}{%
+ \edef\tud@head@text@delimiter{\expandonce\tud@head@text@buffer}%
+ \def\tud@head@text@buffer{#1}%
+ \edef\@tempa{%
+ \expandonce\tud@head@text@line%
+ \expandonce\tud@head@text@delimiter%
+ \etex@unexpanded{#2#3}%
+ }%
+% \end{macrocode}
+% Sollte das hinzuzufügende Feld die aktuelle Kopfzeile \cs{tud@head@text@line}
+% über die Textbreite hinaus erweitern, wird der bisherige Inhalt in die Liste
+% \cs{tud@head@text@list} gespeichert und eine neue mit dem aktuellen Inhalt
+% begonnen. Andernfalls wird der aktuelle Inhalt dem bestehenden hinzugefügt.
+% \begin{macrocode}
+ \settowidth\@tempdima{\@tempa}%
+ \ifdim\@tempdima>\textwidth\relax%
+ \listeadd\tud@head@text@list{\expandonce\tud@head@text@line}%
+ \protected@edef\tud@head@text@line{#2#3}%
+ \else%
+ \edef\tud@head@text@line{\expandonce\@tempa}%
+ \fi%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@head@text@add
+% \begin{macro}{\tud@head@text@set}
+% \changes{v2.05}{2015/11/28}{neu}^^A
+% \begin{macro}{\tud@head@text@wrn}
+% \begin{macro}{\if@tud@head@text@set}
+% \changes{v2.05}{2015/11/28}{neu}^^A
+% Für die Felder im Kopf wird bei einer Änderung dieser die Warnung bezüglich
+% der zu großen Breite der Kopfinformationen, was bei kleinen Papierformaten
+% geschehen kann, (re-)definiert.
+% \begin{macrocode}
+\newif\if@tud@head@text@set
+\newcommand*\tud@head@text@wrn[1]{}
+\newcommand*\tud@head@text@set{%
+ \if@tud@head@text@set%
+% \end{macrocode}
+% Der Inhalt der Kopfzeile wird durch die angegeben Fakultät etc. vorgegeben.
+% Sollte der Platz in einer Zeile dafür nicht ausreichen, wird eine weitere
+% Zeile begonnen. Ob diese benötigt wird, ist abhängig vom Inhalt und von der
+% sich daraus ergebenden Breite der Textzeile. Das Erzeugen der einzelnen
+% Textzeilen im Kopf, die in \cs{tud@head@text@list} gesichert werden, erfolgt
+% mit \cs{tud@head@text@add}\oarg{Trennzeichen}\marg{Schrift}\marg{Feld}. Die
+% dafür benötigten Hilfsmakros werden vor der Verwendung initialisiert.
+% \begin{macrocode}
+ \let\tud@head@text@line\@empty%
+ \let\tud@head@text@list\@empty%
+ \let\tud@head@text@buffer\@empty%
+ \tud@head@text@add[\enskip]{\tud@head@font@bold}{\@faculty}%
+ \tud@head@text@add{\tud@head@font@light}{\@department}%
+ \tud@head@text@add{\tud@head@font@light}{\@institute}%
+ \tud@head@text@add{\tud@head@font@light}{\@chair}%
+% \end{macrocode}
+% Ganz zum Schluss wird der Rest aus \cs{tud@head@text@line} ebenso wie ggf.
+% die zusätzliche Zeile in die Liste expandiert.
+% \begin{macrocode}
+ \listeadd\tud@head@text@list{\expandonce\tud@head@text@line}%
+ \ifxblank{\@extraheadline}{}{%
+ \listadd\tud@head@text@list{\tud@head@font@light\@extraheadline}%
+ }%
+ \gdef\tud@head@text@wrn##1{%
+ \ClassWarning{\TUD@Class@Name}{%
+ The given entries for the headline\MessageBreak%
+ (faculty, institute etc.) are ##1\MessageBreak%
+ too wide for the textwidth%
+ }%
+ }%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@head@text@set
+% \end{macro}^^A \tud@head@text@wrn
+% \end{macro}^^A \tud@head@text@set
+% \begin{macro}{\tud@head@text@box}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% \changes{v2.03}{2015/01/09}{Zweite Zeile wird auch leer gesetzt.}^^A
+% Dieser Befehl ist der Inhalt der Ebene für den Text der Kopfzeile.
+% \begin{macrocode}
+\newcommand*\tud@head@text@box{%
+% \end{macrocode}
+% Die Ausgabe der Textzeile(n) mit Fakultät etc. im Kopfbereiche erfolgt über
+% das Makro \cs{tud@head@text@write}. Hierbei ist zu beachten, dass für die
+% erste Zeile bei einem zweifarbigem Kopf eine andere Textfarbe als für die
+% restlichen benötigt wird. Außerdem ist für diese aufgrund der Linien im
+% Querbalken ein etwas größerer Abstand zur zweiten Zeile notwendig, weshalb
+% die temporären Makros \cs{@tempb} und \cs{@tempc} einmalig genutzt werden.
+% Die Farbe des Textes der ersten Zeile entspricht immer der des Kopfes.
+% \begin{macrocode}
+ \def\@tempb{\tud@color{\tud@head@fontcolor}}%
+ \def\@tempc{\depth+\tud@len@heavyline}%
+% \end{macrocode}
+% Das Makro \cs{@tempa} wird zur Ababreitung der Liste \cs{tud@head@text@list}
+% definiert.
+% \begin{macrocode}
+ \def\@tempa##1{%
+ \settowidth\@tempdima{##1}%
+% \end{macrocode}
+% Sollte eine der Textzeilen zu lang sein, was insbesondere bei kleineren
+% Papierformaten vorkommen kann, dann wird eine Warnung ausgegeben.
+% \begin{macrocode}
+ \ifdim\@tempdima>\textwidth\relax%
+ \tud@head@text@wrn{\the\dimexpr\@tempdima-\textwidth\relax}%
+ \ifdim\dimexpr\@tempdima-\textwidth\relax>\hfuzz\relax%
+ \hfuzz=\dimexpr\@tempdima-\textwidth\relax%
+ \fi%
+ \fi%
+ \@tempb%
+ \tud@head@text@write[\@tempc]{##1}%
+ \def\@tempb{\newline}%
+ \def\@tempc{\z@}%
+% \end{macrocode}
+% Die weiteren Zeilen sind bei zweifarbigen Kopf normalerweise blau, nur für
+% einen dunklen Seitenhintergrund weiß.
+% \begin{macrocode}
+ \ifnum\tud@head@bar@num>\@ne\relax% cdhead=barcolor/color
+ \ifdefvoid{\tud@pagecolor}{\color{HKS41}}{%
+ \ifstr{\tud@pagecolor}{HKS41}{\color{white}}{\color{HKS41}}%
+ }%
+ \fi%
+ }%
+% \end{macrocode}
+% Dies ist nun die eigentliche Ausgabe, welche in einer vertikalen Box erfolgt.
+% \begin{macrocode}
+ \vbox{%
+% \end{macrocode}
+% Das Paket \pkg{ragged2e} ändert im Zweifelsfall die Länge \cs{spaceskip}. Um
+% den Kopf unbeeinflusst davon immer in der gleichen Gestalt erscheinen zu
+% lassen, wird dies hier temporär unterdrückt.
+% \begin{macrocode}
+ \let\@raggedtwoe@everyselectfont\relax%
+ \setlength\spaceskip{\z@}%
+ \selectfont%
+ \offinterlineskip%
+ \forlistloop\@tempa{\tud@head@text@list}%
+ }%
+ \global\let\tud@head@text@wrn\@gobble%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@head@text@box
+% \begin{macro}{\tud@head@text@write}
+% \changes{v2.02}{2014/06/23}{Vertikaler Freiraum für Ober- und Unterlängen
+% mit \cs{vphantom} eingefügt}^^A
+% \changes{v2.02}{2014/12/04}{Zentrierung des Zeilentextes}^^A
+% Befehl zur Ausgabe der ersten und evtl. zweiten Textzeile im TUD-Kopf
+% \begin{macrocode}
+\newcommand*\tud@head@text@write[2][\z@]{%
+ \raisebox{\dimexpr(\tud@len@barheight+2\tud@len@line-\totalheight)/2\relax}[%
+ \dimexpr\tud@len@barheight-\depth\relax%
+ ][\dimexpr#1\relax]{#2\vphantom{gjpqy\"A\"O\"U}}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@head@text@write
+% \begin{macro}{\tud@head@rule}
+% \changes{v2.02}{2014/06/23}{gewünschte Breite als Argument}^^A
+% Der Querbalken des Kopfes läuft je nach Parameterwahl \cs{tud@head@bar@num}
+% entweder nur über den Textbereich oder aber über die gesamte Seitenbreite.
+% Der Befehl erzeugt eine horizontale Linie mit der übergebenen Breite und
+% über \cs{tud@len@line} definierter Dicke.
+% \begin{macrocode}
+\newcommand*\tud@head@rule[1]{%
+ \tud@color{\tud@head@fontcolor}%
+ \rule[\ht\strutbox]{#1}{\tud@len@line}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@head@rule
+%
+% \subsubsection{Boxen für Layerinhalte}
+%
+% \begin{macro}{\tud@newlayerbox}
+% \changes{v2.04}{2015/05/31}{neu}^^A
+% \begin{macro}{\tud@savelayerbox}
+% \changes{v2.04}{2015/05/31}{neu}^^A
+% \begin{macro}{\tud@uselayerbox}
+% \changes{v2.04}{2015/05/31}{neu}^^A
+% Die Inhalte für Kopf und Fuß der \pgs{tudheadings}-Seitenstile~-- sprich das
+% Logo der \TnUD, die \DDC-Logos, ein mögliches Zweilogo sowie die Logos und
+% Inhalte im Fuß werden in Boxen gesetzt, um die Anzahl der benötigten Aufrufe
+% von \cs{includegraphics} möglichst gering zu halten.
+% \begin{macrocode}
+\newcommand*\tud@newlayerbox[1]{%
+ \expandafter\newsavebox\csname tud@layer@#1\endcsname%
+}
+\newcommand*\tud@savelayerbox[1]{%
+ \global\expandafter\sbox\csname tud@layer@#1\endcsname%
+}
+\newcommand*\tud@uselayerbox[1]{%
+ \expandafter\usebox\csname tud@layer@#1\endcsname%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@uselayerbox
+% \end{macro}^^A \tud@savelayerbox
+% \end{macro}^^A \tud@newlayerbox
+% \begin{macro}{\tud@vlayerbox}
+% \changes{v2.04}{2015/05/31}{neu}^^A
+% Für die Ausgabe der Logos und Inhalte wird dieser Befehl definiert. Dieser
+% setzt die im zweiten Argument angegebenen Inhalte in eine vertikale Box,
+% deren gewünschte Höhe im ersten Argument angegeben wird. Für den Fall, dass
+% die gewünschten Inhalte die maximale Höhe überschreiten, wird eine Warnung
+% erzeugt. Der Inhalt dieser Warnung wird im dritten Argument angegeben. Damit
+% soll dem Anwender geholfen werden, in diesem Fall die richtigen Maßnahmen zu
+% ergreifen und nicht lediglich eine Meldung einer zu übervollen \cs{vbox} zu
+% erhalten.
+% \begin{macrocode}
+\newcommand*\tud@vlayerbox[3]{%
+ \begingroup%
+ \setbox\z@\vbox{#2}%
+ \setlength\@tempdima{\dimexpr\ht\z@+\dp\z@-#1\relax}%
+ \ifdim\@tempdima>\z@\relax%
+ \ClassWarning{\TUD@Class@Name}{%
+ #3\MessageBreak%
+ The maximum height is exceeded by \the\@tempdima\MessageBreak%
+ }%
+ \fi%
+ \endgroup%
+ \vbox to #1{#2}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@vlayerbox
+%
+% \iffalse
+%</class&body>
+%<*class&option>
+% \fi
+%
+% \subsection{Der Kopfbereich der Seitenstile}
+%
+% Es folgen Option und Befehle zur Gestaltung des Kopfbereichs mit Hauptlogo,
+% Querbalken und ggf. Zweitlogo.
+%
+% \begin{option}{cdhead}
+% \changes{v2.03}{2015/01/29}{neu}^^A
+% \changes{v2.04}{2015/05/18}{Wert \val{barcolor} neu}^^A
+% \begin{macro}{\tud@head@font@num}
+% \changes{v2.03}{2015/02/04}{neu}^^A
+% \begin{macro}{\if@tud@head@font@num@locked}
+% \changes{v2.03}{2015/02/04}{neu}^^A
+% \begin{macro}{\tud@head@bar@num}
+% \changes{v2.03}{2015/02/04}{neu}^^A
+% \begin{macro}{\if@tud@head@bar@num@locked}
+% \changes{v2.04}{2015/04/01}{neu}^^A
+% \begin{macro}{\if@tud@head@widebar}
+% \changes{v2.03}{2015/02/14}{neu}^^A
+% \begin{macro}{\if@tud@head@widebar@locked}
+% \changes{v2.03}{2015/02/14}{neu}^^A
+% \begin{macro}{\if@tud@head@font@set}
+% \begin{macro}{\if@tud@head@date}
+% \changes{v2.05}{2016/05/27}{neu}^^A
+% Mit dieser Option wird die zentrale Benutzerschnittstelle für Einstellungen
+% des typischen Querbalkens für den TUD-Kopf geschaffen. Durch sie können
+% sowohl die verwendete Schrift als auch die Stärke für den Balkentext
+% (Institut, Fakultät etc.) geändert werden. Zusätzlich ist die Laufweite des
+% Querbalkens bzw. die Farbe einstellbar.
+% \begin{macrocode}
+\tud@locked@newnum{tud@head@font@num}{0}
+\tud@locked@newnum{tud@head@bar@num}{0}
+\tud@locked@newbool{@tud@head@widebar}
+\newif\if@tud@head@font@set
+\newif\if@tud@head@date
+\TUD@key{cdhead}[true]{%
+ \TUD@set@numkey{cdhead}{@tempa}{%
+ \TUD@bool@numkey,%
+ {nocd}{0},{nocdfont}{0},{nocdfonts}{0},{notudfonts}{0},%
+ {cd}{1},{cdfont}{1},{cdfonts}{1},{tudfonts}{1},%
+ {light}{1},{lightfont}{1},{lite}{1},{litefont}{1},{noheavyfont}{1},%
+ {heavy}{2},{heavyfont}{2},{bold}{2},{boldfont}{2},%
+ {nocolor}{3},{nocolour}{3},{monochrome}{3},{monochromatic}{3},%
+ {colorlite}{4},{litecolor}{4},{colourlite}{4},{litecolour}{4},%
+ {colorlight}{4},{lightcolor}{4},{colourlight}{4},{lightcolour}{4},%
+ {pale}{4},{colorpale}{4},{palecolor}{4},{colourpale}{4},{palecolour}{4},%
+ {colorbar}{5},{barcolor}{5},{colourbar}{5},{barcolour}{5},%
+ {bicolor}{6},{bicolour}{6},{twocolor}{6},{twocolour}{6},%
+ {bichrome}{6},{bichromatic}{6},{dichrome}{6},{dichromatic}{6},%
+ {color}{6},{colour}{6},%
+ {full}{6},{colorfull}{6},{fullcolor}{6},{colourfull}{6},{fullcolour}{6},%
+ {textwidth}{7},{slim}{7},{slimhead}{7},{nowide}{7},{nowidehead}{7},%
+ {narrow}{7},{narrowhead}{7},{small}{7},{smallhead}{7},%
+ {paperwidth}{8},{wide}{8},{widehead}{8},%
+ {date}{9},{showdate}{9},{dateon}{9},{datetrue}{9},{dateyes}{9},%
+ {nodate}{10},{hidedate}{10},{dateoff}{10},{datefalse}{10},{dateno}{10}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\@tempa\relax% false
+ \tud@locked@num@set{tud@head@font@num}{0}%
+ \or% true
+ \tud@locked@num@set{tud@head@font@num}{1}%
+ \or% heavy
+ \tud@locked@num@set{tud@head@font@num}{2}%
+ \or% nocolor
+ \tud@locked@num@set{tud@head@bar@num}{0}%
+ \or% litecolor
+ \tud@locked@num@set{tud@head@bar@num}{1}%
+ \or% barcolor
+ \tud@locked@num@set{tud@head@bar@num}{2}%
+ \or% color
+ \tud@locked@num@set{tud@head@bar@num}{3}%
+ \or% textwidth
+ \tud@locked@bool@set{@tud@head@widebar}{false}%
+ \or% paperwidth
+ \tud@locked@bool@set{@tud@head@widebar}{true}%
+ \or% date
+ \@tud@head@datetrue%
+ \or% nodate
+ \@tud@head@datefalse%
+ \fi%
+ \ifnum\@tempa<\thr@@\relax%
+ \global\@tud@head@font@settrue%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@head@date
+% \end{macro}^^A \if@tud@head@font@set
+% \end{macro}^^A \if@tud@head@widebar@locked
+% \end{macro}^^A \if@tud@head@widebar
+% \end{macro}^^A \if@tud@head@bar@num@locked
+% \end{macro}^^A \tud@head@bar@num
+% \end{macro}^^A \if@tud@head@font@num@locked
+% \end{macro}^^A \tud@head@font@num
+% \end{option}^^A cdhead
+%
+% \iffalse
+%</class&option>
+%<*class&body>
+% \fi
+%
+% \begin{macro}{\tud@layer@main@black}
+% \changes{v2.04}{2015/05/31}{neu}^^A
+% \begin{macro}{\tud@layer@main@HKS41}
+% \changes{v2.04}{2015/05/31}{neu}^^A
+% \begin{macro}{\tud@layer@main@white}
+% \changes{v2.04}{2015/05/31}{neu}^^A
+% Diese drei Boxen werden für das Logo der \TnUD reserviert. Abhängig von der
+% gewählten Option des Layouts und der Seitenfarbe wird eine der Logos in der
+% notwendigen Farbe ausgewählt.
+% \begin{macrocode}
+\tud@newlayerbox{main@black}
+\tud@newlayerbox{main@HKS41}
+\tud@newlayerbox{main@white}
+% \end{macrocode}
+% \end{macro}^^A \tud@layer@main@white
+% \end{macro}^^A \tud@layer@main@HKS41
+% \end{macro}^^A \tud@layer@main@black
+%
+% \subsubsection{Das Hauptlogo der \TnUD}
+%
+% \begin{macro}{\tud@mainlogo@set}
+% \changes{v2.04}{2015/05/31}{neu}^^A
+% \begin{macro}{\if@tud@mainlogo@wrn}
+% \changes{v2.04}{2015/05/31}{neu}^^A
+% \begin{length}{\tud@len@mainlogoheight}
+% \changes{v2.04}{2015/05/31}{neu}^^A
+% \begin{macro}{\tud@mainlogo@wrn}
+% \changes{v2.02}{2014/06/23}{Umbenennen von \cs{tud@head@logo@wrn}}^^A
+% Das Makro \cs{tud@mainlogo@set} setzt sowohl das Logo der \TnUD als auch~--
+% durch den Aufruf der entsprechenden Befehle zum Schluss~-- alle weiteren
+% Logos und Inhalte im Kopf und Fuß. Dies geschieht nach jeder Änderung des
+% Satzspiegels beim Ausführen der einzelnen Seitenstil-Layer. Dafür wird der
+% Schalter \cs{if@tud@mainlogo@set} im Hook \cs{tud@AfterChangingArea} gesetzt.
+% \begin{macrocode}
+\newlength\tud@len@mainlogoheight
+\newcommand*\tud@mainlogo@wrn[1]{}
+\newif\if@tud@mainlogo@set
+\newcommand*\tud@mainlogo@set{%
+ \if@tud@mainlogo@set%
+ \def\@tempa{\includegraphics[keepaspectratio,width=\tud@len@logowidth]}%
+ \tud@savelayerbox{main@black}{\@tempa{TUD-black}}%
+ \tud@savelayerbox{main@HKS41}{\@tempa{TUD-blue}}%
+ \tud@savelayerbox{main@white}{\@tempa{TUD-white}}%
+ \settoheight\tud@len@mainlogoheight{\tud@uselayerbox{main@black}}%
+ \global\tud@len@mainlogoheight=\tud@len@mainlogoheight%
+% \end{macrocode}
+% Es soll sichergestellt werden, dass das bei der Verwendung von \pkg{typearea}
+% über den Satzspiegel in den Seitenrand hinausragende TUD-Logo nicht außerhalb
+% des Druckrandes liegt. Dies kann beispielsweise bei kleinen Papierformaten,
+% zweiseitigem Satz und/oder einem zu großen \opt{DIV}-Wertes passieren. Es
+% wird in diesem Fall eine Warnung ausgegeben, damit das Problem durch den
+% Anwender behoben werden kann.
+% \begin{macrocode}
+ \gdef\tud@mainlogo@wrn##1{%
+ \ifdim##1<\ta@bcor\relax%
+ \ClassWarning{\TUD@Class@Name}{%
+ The selected page layout means that the\MessageBreak%
+ logo of TUD extends beyond the printing area. \MessageBreak%
+ The inner margin is smaller than BCOR\MessageBreak%
+ (`BCOR=\the\ta@bcor', inner margin is \the##1)\MessageBreak%
+ Maybe you should decrease the current value\MessageBreak%
+ of DIV (`DIV=\the\ta@div')%
+ }%
+ \global\let\tud@mainlogo@wrn\@gobble%
+ \fi%
+ }%
+% \end{macrocode}
+% Hier werden die beiden Makros aufgerufen, um die Inhalte von Kopf und Fuß in
+% den Boxen in der richtigen Größe neu zu setzen.
+% \begin{macrocode}
+ \tud@headlogo@set%
+ \@tud@footlogo@option@settrue%
+ \tud@footlogo@option@set%
+ \global\@tud@mainlogo@setfalse%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@mainlogo@wrn
+% \end{length}^^A \tud@len@mainlogoheight
+% \end{macro}^^A \if@tud@mainlogo@set
+% \end{macro}^^A \tud@mainlogo@set
+% \begin{macro}{\tud@mainlogo@use}
+% \changes{v2.04}{2015/05/31}{neu}^^A
+% Hiermit erfolgt die Ausgabe der gespeicherten Boxen für das Logo der \TnUD,
+% wobei \cs{tud@head@logocolor} die Farbe festlegt.
+% \begin{macrocode}
+\newcommand*\tud@mainlogo@use{%
+ \tud@mainlogo@wrn{%
+ \dimexpr\oddsidemargin+1in+\tud@len@logox-\tud@len@widemargin\relax%
+ }%
+ \tud@uselayerbox{main@\tud@head@logocolor}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@mainlogo@use
+%
+% \subsubsection{Optionales Zweit- oder \DDC-Logo}
+%
+% \begin{macro}{\tud@layer@head@black}
+% \changes{v2.04}{2015/05/31}{neu}^^A
+% \begin{macro}{\tud@layer@head@HKS41}
+% \changes{v2.04}{2015/05/31}{neu}^^A
+% \begin{macro}{\tud@layer@head@white}
+% \changes{v2.04}{2015/05/31}{neu}^^A
+% \begin{macro}{\tud@layer@head@option}
+% \changes{v2.04}{2015/05/31}{neu}^^A
+% Diese Boxen werden für das \DDC-Logo und das Zweitlogo im Kopf definiert. Der
+% Box \cs{tud@layer@head@option} fäält dabei die Rolle zu, entweder ein~-- per
+% Option gewähltes~-- \DDC-Logo oder aber das mit \cs{headlogo} angegebene
+% Zweitlogo zusichern und auszugeben. Die anderen drei Boxen speichern das Logo
+% von \DDC in den drei für die unterschiedlichen Layoutausprägung benötigten
+% Varianten.
+% \begin{macrocode}
+\tud@newlayerbox{head@black}
+\tud@newlayerbox{head@HKS41}
+\tud@newlayerbox{head@white}
+\tud@newlayerbox{head@option}
+% \end{macrocode}
+% \end{macro}^^A \tud@layer@head@option
+% \end{macro}^^A \tud@layer@head@white
+% \end{macro}^^A \tud@layer@head@HKS41
+% \end{macro}^^A \tud@layer@head@black
+% \begin{macro}{\headlogo}
+% \changes{v2.02}{2014/06/23}{Anpassung an automatische Wahl des \DDC-Logos}^^A
+% \begin{macro}{\tud@headlogo@filename}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% \begin{macro}{\tud@headlogo@fileoptions}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% \begin{macro}{\tud@headlogo@wrn}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% Diese Befehle dienen zum Einbinden eines möglichen Zweitlogos im Kopf bündig
+% zum rechten Seitenrand. Mit \cs{headlogo}\oarg{Optionsliste}\marg{Dateiname}
+% werden der Dateiname und das optionale Argument in \cs{tud@headlogo@filename}
+% bzw. \cs{tud@headlogo@fileoptions} gespeichert, damit diese später bei der
+% tatsächlichen Verwendung des Logos mit dem Makro \cs{tud@headlogo@set} an den
+% Befehl \cs{includegraphics} weitergereicht werden können.
+% \begin{macrocode}
+\newcommand*\tud@headlogo@filename{}
+\newcommand*\tud@headlogo@fileoptions{}
+\newcommand*\tud@headlogo@wrn{}
+\newcommand*\headlogo[2][]{%
+ \tud@comp@clearpage%
+ \renewcommand*\tud@headlogo@filename{#2}%
+ \renewcommand*\tud@headlogo@fileoptions{#1}%
+% \end{macrocode}
+% Nach dem Setzen des Zweitlogos müssen die Boxen mit den Logos von \DDC neu
+% gesetzt werden. Weil dieses dabei vom Kopf in den Fuß oder umgekehrt wandern
+% könnte, werden beide relevanten Makros ausgeführt.
+% \begin{macrocode}
+ \global\@tud@headlogo@option@settrue%
+ \global\@tud@footlogo@option@settrue%
+ \gdef\tud@headlogo@wrn{%
+ \ClassWarning{\TUD@Class@Name}{%
+ Secondary logo `\string\headlogo{\tud@headlogo@filename}'\MessageBreak%
+ is overwritten with DDC logo. Maybe you should\MessageBreak%
+ use `ddcfoot' or better `ddc' instead of `ddchead'%
+ }%
+ \global\let\tud@headlogo@wrn\relax%
+ }%
+ \tud@comp@resetpagestyle%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@headlogo@wrn
+% \end{macro}^^A \tud@headlogo@fileoptions
+% \end{macro}^^A \tud@headlogo@filename
+% \end{macro}^^A \headlogo
+% \begin{macro}{\tud@headlogo@set}
+% \changes{v2.04}{2015/05/31}{neu}^^A
+% \begin{macro}{\tud@headlogo@option@set}
+% \changes{v2.04}{2015/05/31}{neu}^^A
+% \changes{v2.05}{2015/07/27}{Bugfix für Dateien in Unterordnern}^^A
+% Äquivalent zum Logo der \TnUD werden auch für das Logo von \DDC drei
+% Farbvarianten erstellt.
+% \begin{macrocode}
+\newcommand*\tud@headlogo@set{%
+ \def\@tempa{%
+ \includegraphics[keepaspectratio,totalheight=\tud@len@mainlogoheight]%
+ }%
+ \tud@savelayerbox{head@black}{\@tempa{DDC-24}}%
+ \tud@savelayerbox{head@HKS41}{\@tempa{DDC-27}}%
+ \tud@savelayerbox{head@white}{\@tempa{DDC-30}}%
+ \tud@headlogo@option@set%
+}
+% \end{macrocode}
+% Hiermit werden die \DDC-Optionen \opt{ddc} bzw. \opt{ddchead} abgearbeitet
+% sowie ein ggf. gegebenes Zweitlogo gespeichert. Dies geschieht beim Aufruf
+% des passenden Layers, falls der Schalter \cs{if@tud@headlogo@option@set}
+% gesetzt wurde.
+% \begin{macrocode}
+\newcommand*\tud@headlogo@option@set{%
+ \if@tud@headlogo@option@set%
+ \def\@tempc##1##2{%
+ \tud@savelayerbox{head@option}{%
+ \includegraphics[%
+ keepaspectratio,totalheight=\tud@len@mainlogoheight,##2%
+ ]{##1}%
+ }%
+ }%
+ \tud@savelayerbox{head@option}{}%
+ \tud@ddc@check%
+ \ifcase\@tempa\relax% \tud@ddc@head@num=false
+ \ifdefvoid{\tud@headlogo@filename}{}{%
+ \protected@edef\tud@headlogo@filename{%
+ \expandafter\trim@spaces\expandafter{\tud@headlogo@filename}%
+ }%
+ \protected@edef\@tempb{%
+ \noexpand\@tempc{\tud@headlogo@filename}{\tud@headlogo@fileoptions}%
+ }%
+ \@tempb%
+ }%
+ \or\or% \tud@ddc@head@num=color
+ \@tempc{DDC-03}{}%
+ \or% \tud@ddc@head@num=colorblack
+ \@tempc{DDC-09}{}%
+ \or% \tud@ddc@head@num=gray
+ \@tempc{DDC-21}{}%
+ \or% \tud@ddc@head@num=black
+ \@tempc{DDC-24}{}%
+ \or% \tud@ddc@head@num=blue
+ \@tempc{DDC-27}{}%
+ \or% \tud@ddc@head@num=white
+ \@tempc{DDC-30}{}%
+ \fi%
+ \global\@tud@headlogo@option@setfalse%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@headlogo@option@set
+% \end{macro}^^A \tud@headlogo@set
+% \begin{macro}{\tud@headlogo@use}
+% \changes{v2.04}{2015/05/31}{neu}^^A
+% Die Ausgabe von \DDC- oder Zweitlogo im Kopf erfolgt mit diesem Makro. Dabei
+% werden diese in einer Box vertikal zentriert.
+% \begin{macrocode}
+\newcommand*\tud@headlogo@use{%
+ \tud@vlayerbox{\tud@len@mainlogoheight}{%
+ \vss%
+ \hbox{%
+ \tud@ddc@check%
+ \ifnum\@tempa=\@ne\relax% \tud@ddc@head@num=true
+ \tud@uselayerbox{head@\tud@head@logocolor}%
+ \else%
+ \tud@uselayerbox{head@option}%
+ \fi%
+ }%
+ \vss%
+ }{%
+ The given `\string\headlogo{\tud@headlogo@filename}' is too large.%
+ }%
+ \ifdefvoid{\tud@headlogo@filename}{}{%
+ \tud@ddc@check%
+ \ifnum\@tempa>\z@\relax\tud@headlogo@wrn\fi%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@headlogo@use
+%
+% \iffalse
+%</class&body>
+%<*class&option>
+% \fi
+%
+% \subsection{Der Fußbereich der Seitenstile}
+%
+% Es folgen Option und Befehle zur Gestaltung des Fußbereichs mit optionalem
+% Inhalt im Fuß, Drittlogos und \DDC-Logo.
+%
+% \begin{option}{cdfoot}
+% \changes{v2.03}{2015/02/02}{Bei Längenangabe wird \opt{extrabottommargin}
+% indirekt genutzt}^^A
+% \changes{v2.04}{2015/06/18}{bedingtes Setzen der Option \opt{automark}}^^A
+% \begin{macro}{\if@tud@foot@colored}
+% \changes{v2.03}{2015/02/15}{neu}^^A
+% \begin{macro}{\if@tud@foot@colored@locked}
+% \changes{v2.05}{2015/07/14}{neu}^^A
+% \begin{macro}{\tud@ps@store}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% \begin{macro}{\tud@ps@@store}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% \begin{macro}{\tud@ps@restore}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% \begin{macro}{\tud@ps@@restore}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% Dieser Seitenstil mit dem Kolumnentitel im Fuß wurde bereits für die alte
+% \cls{tudbook}-Klasse bereitgestellt und soll auch hier optional angeboten
+% werden. Zusätzlich kann mit dieser Option ggf. ein farbiger Hintergrund in
+% der Fußzeile aktiviert werden.
+%
+% Einige Einstellungen sind abhängig vom Paket \pkg{scrlayer-scrpage}, welches
+% unter Umständen nicht geladen wird. Mit \cs{TUD@AfterPackage@do} kann
+% Quelltext nur dann ausgeführt werden, wenn ein Paket auch tatsächlich geladen
+% wurde. Hierfür ist die Initialisierung mit \cs{TUD@AfterPackage@set} nötig.
+% \begin{macrocode}
+\TUD@AfterPackage@set{scrlayer-scrpage}
+\tud@locked@newbool{@tud@foot@colored}
+\TUD@key{cdfoot}[true]{%
+ \TUD@set@numkey{cdfoot}{@tempa}{%
+ \TUD@bool@numkey,%
+ {nocolor}{2},{nocolour}{2},{monochrome}{2},{monochromatic}{2},%
+ {bicolor}{3},{bicolour}{3},{twocolor}{3},{twocolour}{3},%
+ {bichrome}{3},{bichromatic}{3},{dichrome}{3},{dichromatic}{3},%
+ {color}{3},{colour}{3},%
+ {full}{3},{colorfull}{3},{fullcolor}{3},{colourfull}{3},{fullcolour}{3}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\@tempa\relax% false
+% \end{macrocode}
+% Die ursprünglichen Kopf- und Fußzeilen werden mit \cs{tud@ps@restore}
+% wiederhergestellt. Dies wird allerdings frühestens nach dem Laden von
+% \pkg{scrlayer-scrpage} durchgeführt.
+% \begin{macrocode}
+ \TUD@AfterPackage@do{scrlayer-scrpage}{%
+ \tud@ps@restore{scrheadings}%
+ \tud@ps@restore{plain.scrheadings}%
+ \tud@komafont@unset{pageheadfoot}%
+ }%
+% \end{macrocode}
+% Die ursprünglichen Kopf- und Fußzeilen werden mit dem Makro \cs{tud@ps@store}
+% gesichert, um gegebenenfalls zurückschalten zu können. Anschließend werden
+% diese mit dem neuen Stil überschrieben. Dies wird allerdings frühestens nach
+% dem Laden von \pkg{scrlayer-scrpage} durchgeführt.
+% \begin{macrocode}
+ \or% true
+ \TUD@AfterPackage@do{scrlayer-scrpage}{%
+ \tud@ps@store{scrheadings}%
+ \tud@ps@store{plain.scrheadings}%
+ \tud@komafont@set{pageheadfoot}{\upshape}%
+ \clearpairofpagestyles%
+ \ofoot[\pagemark]{%
+ \if@twoside\ifodd\value{page}\else\pagemark\quad\fi\fi%
+ {\footnotesize\headmark}%
+ \if@twoside\ifodd\value{page}\quad\pagemark\fi\else\quad\pagemark\fi%
+ }%
+ \ifx\@mkdouble\@gobble\else\KOMAoptions{automark}\fi%
+ }%
+% \end{macrocode}
+% Hier kann die Hintergrundfarbe des Fußes aktiviert bzw. deaktiviert werden.
+% \begin{macrocode}
+ \or% nocolor
+ \tud@locked@bool@set{@tud@foot@colored}{false}%
+ \or% color
+ \tud@locked@bool@set{@tud@foot@colored}{true}%
+ \fi%
+% \end{macrocode}
+% Außerdem kann mit der Option \opt{extrabottommargin} gesetzt werden.
+% \begin{macrocode}
+ \else%
+ \tud@lowerstring\tud@res@a{#1}%
+ \ifdimen{\tud@res@a}{\TUDoptions{extrabottommargin=#1}}{}%
+ \fi%
+}
+% \end{macrocode}
+% Die nächsten beiden Befehle dienen zum Sichern der Kopf- und Fußzeilen\dots
+% \begin{macrocode}
+\newcommand*\tud@ps@store[1]{%
+ \tud@ps@@store{#1}{odd}{left}{head}%
+ \tud@ps@@store{#1}{odd}{right}{head}%
+ \tud@ps@@store{#1}{odd}{middle}{head}%
+ \tud@ps@@store{#1}{even}{left}{head}%
+ \tud@ps@@store{#1}{even}{right}{head}%
+ \tud@ps@@store{#1}{even}{middle}{head}%
+ \tud@ps@@store{#1}{odd}{left}{foot}%
+ \tud@ps@@store{#1}{odd}{right}{foot}%
+ \tud@ps@@store{#1}{odd}{middle}{foot}%
+ \tud@ps@@store{#1}{even}{left}{foot}%
+ \tud@ps@@store{#1}{even}{right}{foot}%
+ \tud@ps@@store{#1}{even}{middle}{foot}%
+}
+% \end{macrocode}
+% \dots, wobei hierfür auf die internen Befehle von \pkg{scrlayer-scrpage}
+% zurückgegriffen werden muss.
+% \begin{macrocode}
+\newcommand*\tud@ps@@store[4]{%
+ \ifcsundef{@@tud@ps@#1@#2@#3@#4}{%
+ \csletcs{@@tud@ps@#1@#2@#3@#4}{sls@ps@#1@#2@#3@#4}%
+ }{}%
+}
+\newcommand*\tud@ps@restore[1]{%
+ \tud@ps@@restore{#1}{odd}{left}{head}%
+ \tud@ps@@restore{#1}{odd}{right}{head}%
+ \tud@ps@@restore{#1}{odd}{middle}{head}%
+ \tud@ps@@restore{#1}{even}{left}{head}%
+ \tud@ps@@restore{#1}{even}{right}{head}%
+ \tud@ps@@restore{#1}{even}{middle}{head}%
+ \tud@ps@@restore{#1}{odd}{left}{foot}%
+ \tud@ps@@restore{#1}{odd}{right}{foot}%
+ \tud@ps@@restore{#1}{odd}{middle}{foot}%
+ \tud@ps@@restore{#1}{even}{left}{foot}%
+ \tud@ps@@restore{#1}{even}{right}{foot}%
+ \tud@ps@@restore{#1}{even}{middle}{foot}%
+}
+\newcommand*\tud@ps@@restore[4]{%
+ \ifcsdef{@@tud@ps@#1@#2@#3@#4}{%
+ \csletcs{sls@ps@#1@#2@#3@#4}{@@tud@ps@#1@#2@#3@#4}%
+ \csundef{@@tud@ps@#1@#2@#3@#4}%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@ps@@restore
+% \end{macro}^^A \tud@ps@restore
+% \end{macro}^^A \tud@ps@@store
+% \end{macro}^^A \tud@ps@store
+% \end{macro}^^A \if@tud@foot@colored@locked
+% \end{macro}^^A \if@tud@foot@colored
+% \end{option}^^A cdfoot
+%
+% \iffalse
+%</class&option>
+%<*class>
+% \fi
+%
+% \subsubsection{Optionales \DDC-Logo oder Drittlogos}
+%
+% \begin{option}{footlogoheight}
+% \changes{v2.05}{2016/06/16}{neu}^^A
+% \begin{macro}{\tud@dim@footlogoheight}
+% \changes{v2.04}{2015/06/01}{neu}^^A
+% Für den Anwender besteht mit der Option \opt{footlogoheight} die Möglichkeit,
+% die Höhe aller Logos im Fußbereich~-- also eventuell das \DDC-Logo sowie
+% vom Anwender mit dem Befehl \cs{footlogo} angegebene Logos~-- zentral
+% festzulegen. Dabei wird der gewünschte Wert in \cs{tud@dim@footlogoheight}
+% abgelegt.
+% \begin{macrocode}
+%<*option>
+\newcommand*\tud@dim@footlogoheight{}
+\let\tud@dim@footlogoheight\relax
+\TUD@key{footlogoheight}{%
+ \TUD@set@dimenkey{footlogoheight}{\tud@dim@footlogoheight}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifdim\dimexpr\tud@dim@footlogoheight\relax<\z@\relax%
+ \def\@tempa-##1\@nil{\def\tud@dim@footlogoheight{##1}}%
+ \@tempa#1\@nil%
+ \fi%
+ \global\@tud@footlogo@option@settrue%
+ \fi%
+}
+%</option>
+% \end{macrocode}
+% Da sich mit der Version~v2.03 die Standardhöhe des \DDC-Logos im Fußbereich
+% geändert hat, wird dieser Wert abhängig von der Einstellung für die Option
+% \opt{tudscrver} nach der Abarbeitung der Optionen am Ende der Klasse gesetzt.
+% \begin{macrocode}
+%<*body>
+\AtEndOfClass{%
+ \ifdefvoid{\tud@dim@footlogoheight}{%
+ \tud@if@v@lower{2.03}{%
+ \def\tud@dim@footlogoheight{.6\tud@len@topmargin}%
+ }{%
+ \def\tud@dim@footlogoheight{\tud@len@mainlogoheight}%
+ }%
+ }{}%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \tud@dim@footlogoheight
+% \end{option}^^A footlogoheight
+%
+% \iffalse
+%</class>
+%<*class&body>
+% \fi
+%
+% \begin{macro}{\tud@layer@foot@black}
+% \changes{v2.04}{2015/06/01}{neu}^^A
+% \begin{macro}{\tud@layer@foot@HKS41}
+% \changes{v2.04}{2015/06/01}{neu}^^A
+% \begin{macro}{\tud@layer@foot@white}
+% \changes{v2.04}{2015/06/01}{neu}^^A
+% \begin{macro}{\tud@layer@foot@option}
+% \changes{v2.04}{2015/06/01}{neu}^^A
+% Im Fußbereich kann das \DDC-Logo rechtsbündig ausgegeben. Hierfür werden die
+% entsprechenden Boxen für alle Farbvarianten definiert. Diese werden genutzt,
+% wenn entweder die Option \opt{ddcfoot} oder aber \opt{ddc} in Verbindung mit
+% einem Zweitlogo (\cs{headlogo}) genutzt wird.
+% \begin{macrocode}
+\tud@newlayerbox{foot@black}
+\tud@newlayerbox{foot@HKS41}
+\tud@newlayerbox{foot@white}
+\tud@newlayerbox{foot@option}
+% \end{macrocode}
+% \end{macro}^^A \tud@layer@foot@option
+% \end{macro}^^A \tud@layer@foot@white
+% \end{macro}^^A \tud@layer@foot@HKS41
+% \end{macro}^^A \tud@layer@foot@black
+% \begin{macro}{\tud@footlogo@ddc@set}
+% \changes{v2.04}{2015/06/01}{neu}^^A
+% \begin{macro}{\tud@footlogo@option@set}
+% \changes{v2.04}{2015/06/01}{neu}^^A
+% Auch im Fuß werden für das \DDC-Logo verschiedene Boxen für die Farbvarianten
+% \val{black}, \val{HKS41} und \val{white} sowie eine für die gezielte Auswahl
+% über die Optionen \opt{ddc} bzw. \opt{ddcfoot} erstellt. Dafür wird zunächst
+% das Makro \cs{tud@footlogo@ddc@set} definiert.
+% \begin{macrocode}
+\newcommand*\tud@footlogo@ddc@set[2]{%
+ \tud@savelayerbox{foot@#1}{%
+ \includegraphics[keepaspectratio,totalheight=\tud@dim@footlogoheight]{#2}%
+ }%
+}
+% \end{macrocode}
+% Hiermit werden die \DDC-Optionen \opt{ddc} bzw. \opt{ddcfoot} abgearbeitet.
+% Dies geschieht, falls hierfür der Schalter \cs{if@tud@footlogo@option@set}
+% gesetzt wurde, bei der Ausgabe des dazugehörigen Layers.
+% \begin{macrocode}
+\newcommand*\tud@footlogo@option@set{%
+ \if@tud@footlogo@option@set%
+ \tud@footlogo@ddc@set{black}{DDC-22}%
+ \tud@footlogo@ddc@set{HKS41}{DDC-25}%
+ \tud@footlogo@ddc@set{white}{DDC-28}%
+ \tud@ddc@check%
+ \ifcase\@tempb\relax\or\or% \tud@ddc@foot@num=color
+ \tud@footlogo@ddc@set{option}{DDC-01}%
+ \or% \tud@ddc@foot@num=colorblack
+ \tud@footlogo@ddc@set{option}{DDC-07}%
+ \or% \tud@ddc@foot@num=gray
+ \tud@footlogo@ddc@set{option}{DDC-19}%
+ \or% \tud@ddc@foot@num=black
+ \tud@footlogo@ddc@set{option}{DDC-22}%
+ \or% \tud@ddc@foot@num=blue
+ \tud@footlogo@ddc@set{option}{DDC-25}%
+ \or% \tud@ddc@foot@num=white
+ \tud@footlogo@ddc@set{option}{DDC-28}%
+ \fi%
+ \global\@tud@footlogo@option@setfalse%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@footlogo@option@set
+% \end{macro}^^A \tud@footlogo@ddc@set
+% \begin{macro}{\tud@footlogo@ddc@use}
+% \changes{v2.04}{2015/06/01}{neu}^^A
+% Die Ausgabe des \DDC-Logos im Fuß erfolgt mit diesem Makro. Dabei wird dieses
+% in einer Box optisch~-- leicht nach oben verschoben~-- vertikal zentriert.
+% \begin{macrocode}
+\newcommand*\tud@footlogo@ddc@use[2]{%
+ \tud@ddc@check%
+ \ifcase\@tempb\relax\else% \tud@ddc@foot@num=!false
+ \tud@footlogo@option@set%
+ \setbox\z@\hbox{%
+ \tud@vlayerbox{#1}{%
+ \vss%
+ \hbox to #2{%
+ \hss%
+ \ifcase\@tempb\relax\or% \tud@ddc@foot@num=true
+ \tud@uselayerbox{foot@\tud@foot@logocolor}%
+ \else%
+ \tud@uselayerbox{foot@option}%
+ \fi%
+ }%
+ \vss\vss%
+ }{%
+ You should reduce `footlogoheight', because it is\MessageBreak%
+ too high (\the\dimexpr\tud@dim@footlogoheight\relax).%
+ \ifnum\tud@cdgeometry@num>\@ne% true/symmetric/twoside
+ \MessageBreak%
+ Alternatively you can enlarge the bottom margin\MessageBreak%
+ by using option `extrabottommargin'.%
+ \fi%
+ }%
+ }%
+% \end{macrocode}
+% Nach der Ausgabe wird ein begativer horizontaler Abstand in der Boxbreite
+% eingefügt, damit nachfolgende Boxen überlagert werden können.
+% \begin{macrocode}
+ \usebox\z@\hspace*{-\wd\z@}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@footlogo@ddc@use
+% \begin{macro}{\tud@layer@foot@cmd}
+% \changes{v2.04}{2015/06/01}{neu}^^A
+% Für das Setzen von benutzerdefinierten Logos im Fußbereich wird diese Box
+% verwendet.
+% \begin{macrocode}
+\tud@newlayerbox{foot@cmd}
+% \end{macrocode}
+% \end{macro}^^A \tud@layer@foot@cmd
+% \begin{macro}{\footlogo}
+% \changes{v2.03}{2015/01/27}{neu}^^A
+% \begin{macro}{\tud@footlogo@filenames}
+% \changes{v2.03}{2015/01/27}{neu}^^A
+% \begin{macro}{\tud@footlogo@fileoptions}
+% \changes{v2.03}{2015/01/27}{neu}^^A
+% \begin{macro}{\footlogosep}
+% \changes{v2.03}{2015/01/27}{neu}^^A
+% \begin{macro}{\tud@footlogo@cmd@set}
+% \changes{v2.04}{2015/06/01}{neu}^^A
+% \begin{macro}{\tud@footlogo@cmd@@set}
+% \changes{v2.03}{2015/01/27}{neu}^^A
+% \changes{v2.03}{2015/02/02}{optionale Parameter für unterschiedliche Dateien
+% individuell nutzbar}^^A
+% \begin{macro}{\if@tud@footlogo@cmd@set}
+% \changes{v2.04}{2015/06/01}{neu}^^A
+% Mit dem Befehl \cs{footlogo} kann eine kommasparierte Liste für Logos im
+% Fuß angegeben werden, die mit \cs{footlogosep} voneinander getrennt werden.
+% \begin{macrocode}
+\newcommand*\footlogosep{\hfill}
+\newcommand*\tud@footlogo@filenames{}
+\newcommand*\tud@footlogo@fileoptions{}
+\newcommand*\footlogo[2][]{%
+ \tud@comp@clearpage%
+ \renewcommand*\tud@footlogo@filenames{#2}%
+ \renewcommand*\tud@footlogo@fileoptions{#1}%
+ \global\@tud@footlogo@cmd@settrue%
+ \tud@comp@resetpagestyle%
+}
+% \end{macrocode}
+% Die mit \cs{footlogo} angegeben Logos und die dazugehörigen Einstellungen,
+% welche entweder allgemein über das optionale Argument oder aber individuell
+% durch \val{:} an den Dateinamen angehängt übergeben wurden, werden hier in
+% der Box \cs{tud@layer@foot@cmd} gespeichert.
+% \begin{macrocode}
+\newif\if@tud@footlogo@cmd@set
+\newcommand*\tud@footlogo@cmd@set[2]{%
+ \if@tud@footlogo@cmd@set%
+ \tud@savelayerbox{foot@cmd}{%
+ \hbox to #2{%
+% \end{macrocode}
+% Hier erfolgt die eigentliche Abarbeitung der mit \cs{footlogo} angegeben
+% Liste der benutzerdefinierten Logos. In \cs{@tempa} wird nach dem ersten
+% Durchlauf der Schleife der Inhalt von \cs{footlogosep} gespeichert und nach
+% dem ersten Logo vor jedem weiteren eingefügt. Um versehentlich angegebene
+% Leerzeichen zu entfernen, werden diese mit \cs{trim@spaces} entfernt.
+% \begin{macrocode}
+ \let\@tempa\relax%
+ \@for\@tempb:=\tud@footlogo@filenames\do{%
+ \edef\@tempb{\expandafter\trim@spaces\expandafter{\@tempb}}%
+ \@tempa%
+ \ifx\@tempb\@empty\else%
+ \expandafter\tud@footlogo@cmd@@set\expandafter{\@tempb}{#1}%
+ \fi%
+ \let\@tempa\footlogosep%
+ }%
+ \hss%
+ }%
+ }%
+ \global\@tud@footlogo@cmd@setfalse%
+ \fi%
+}
+% \end{macrocode}
+% Der Befehl \cs{tud@footlogo@cmd@set} wird genutzt, um die einzelnen Logos für
+% den Fuß nacheinander in der Box \cs{tud@layer@foot@cmd} zu setzen.
+% \begin{macrocode}
+\newcommand*\tud@footlogo@cmd@@set[2]{%
+ \begingroup%
+% \end{macrocode}
+% Dabei soll es möglich sein, optionale Parameter an \cs{includegraphics} zu
+% übergeben. Dies soll zum einen global für alle Dateien als auch individuell
+% für einzelne Logos möglich sein. Zu diesem Zweck wird die Schnittstelle für
+% den Anwender so gestaltet, dass individuelle Parameter mit einem Doppelpunkt
+% direkt an den Dateinamen angehangen werden können.
+% \begin{macrocode}
+ \let\@tempa\@empty%
+ \let\@tempb\@empty%
+ \@tempswatrue%
+ \def\do##1{%
+ \if@tempswa%
+ \def\@tempa{##1}%
+ \@tempswafalse%
+ \else%
+ \l@addto@macro\@tempb{,##1}%
+ \fi%
+ }%
+ \let\@tempc\relax%
+ \DeclareListParser{\@tempc}{:}%
+ \@tempc{#1}%
+% \end{macrocode}
+% In jedem Fall werden die Grundeinstellungen als erstes ausgeführt.
+% \begin{macrocode}
+ \preto\tud@footlogo@fileoptions{%
+ keepaspectratio,totalheight=\tud@dim@footlogoheight,%
+ }%
+% \end{macrocode}
+% Wurden tatsächlich inidviduelle Parameter übergeben, so werden diese als
+% letztes ausgeführt, um vorige Einstellungen überschreiben zu können.
+% \begin{macrocode}
+ \eappto\tud@footlogo@fileoptions{\expandonce\@tempb}%
+ \protected@edef\@tempc{%
+ \noexpand\includegraphics[\expandonce\tud@footlogo@fileoptions]{\@tempa}%
+ }%
+% \end{macrocode}
+% Die Logos werden~-- wie auch das \DDC-Logo im Fuß~-- individuell optisch
+% vertikal zentriert.
+% \begin{macrocode}
+ \tud@vlayerbox{#2}{\vss\hbox{\@tempc}\vss\vss}{%
+ The given `\string\footlogo{\@tempa}' is too large.%
+ }%
+ \endgroup%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@footlogo@cmd@set
+% \end{macro}^^A \tud@footlogo@cmd@@set
+% \end{macro}^^A \tud@footlogo@cmd@set
+% \end{macro}^^A \footlogosep
+% \end{macro}^^A \tud@footlogo@fileoptions
+% \end{macro}^^A \tud@footlogo@filenames
+% \end{macro}^^A \footlogo
+% \begin{macro}{\tud@footlogo@cmd@use}
+% \changes{v2.04}{2015/06/01}{neu}^^A
+% Der Befehl \cs{tud@footlogo@cmd@use} wird genutzt, um die einzelnen Logos für
+% den Fuß innerhalb der Ebene \val{tudheadings.foot.content} auszugeben.
+% \begin{macrocode}
+\newcommand*\tud@footlogo@cmd@use[2]{%
+ \tud@footlogo@option@set%
+ \tud@footlogo@cmd@set{#1}{#2}%
+ \setbox\z@\hbox{\tud@uselayerbox{foot@cmd}}%
+ \usebox\z@\hspace*{-\wd\z@}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@footlogo@cmd@use
+%
+% \subsubsection{Optionaler Inhalt im Fußbereich}
+%
+% \begin{macro}{\footcontent}
+% \changes{v2.04}{2015/04/21}{neu}^^A
+% \begin{KOMAfont}{tudheadings}
+% \changes{v2.04}{2015/04/21}{neu}^^A
+% \begin{macro}{\tud@footcontent@do}
+% \changes{v2.04}{2015/04/21}{neu}^^A
+% \begin{macro}{\tud@footcontent@@do}
+% \changes{v2.04}{2015/04/21}{neu}^^A
+% \changes{v2.05}{2016/04/17}{Stern im Argument erhält aktuellen Inhalt}^^A
+% \begin{macro}{\tud@footcontent@usefont}
+% \changes{v2.06}{2018/08/01}{neu}^^A
+% \begin{macro}{\tud@footcontent@fontsize}
+% \changes{v2.06}{2018/08/01}{neu}^^A
+% \begin{macro}{\tud@footcontent@fontface}
+% \changes{v2.04}{2015/06/01}{neu}^^A
+% \changes{v2.05}{2015/07/21}{Bugfix für die Schriftgröße und den Durchschuss
+% bei einer entsprechenden Anpassung der Schriftart \val{tudheadings}}^^A
+% \begin{macro}{\tud@footcontent@left}
+% \changes{v2.04}{2015/06/01}{neu}^^A
+% \begin{macro}{\tud@footcontent@right}
+% \changes{v2.04}{2015/06/01}{neu}^^A
+% Mit dem Befehl \cs{footcontent} kann der Inhalt für den Fußbereich der
+% Seiten im Stil \pgs{tudheadings} festgelegt werden. Dieser wird mit passenden
+% Schrifteinstellungen entweder einspaltig oder zweispaltig gesetzt. Die
+% Sternversion des Befehls nimmt keinerlei Einstellungen für die Schrift vor.
+% \begin{macrocode}
+\newkomafont{tudheadings}{\tud@color{\tud@foot@fontcolor}}
+% \end{macrocode}
+% Dieser Befehl wird zur Formatierung der Schrift im Fußbereich definiert.
+% \begin{macrocode}
+\newcommand*\tud@footcontent@usefont[1]{%
+ \usekomafont{tudheadings}{%
+ \tud@footcontent@fontsize%
+ \tud@footcontent@fontface%
+ \selectfont%
+ #1%
+ }%
+}
+% \end{macrocode}
+% Die mit \cs{footcontent} angegebenen Einstellungen und Inhalte werden in
+% diesen Makros gesichert, weshalb diese vorher alloziert werden. Anschließend
+% erfolgt die Definition des Befehls.
+% \begin{macrocode}
+\newcommand*\tud@footcontent@fontsize{}
+\newcommand*\tud@footcontent@fontface{}
+\newcommand*\tud@footcontent@left{}
+\newcommand*\tud@footcontent@right{\@nil}
+% \end{macrocode}
+% Die Sternversion ändert die Schriftgröße vom Inhalt nicht. Die Normalversion
+% nutzt die Schriftgröße der Kopfzeile mit einem passenden Durchschuss.
+% \begin{macrocode}
+\newcommand*\footcontent{%
+ \kernel@ifstar{%
+ \renewcommand*\tud@footcontent@fontsize{}%
+ \tud@footcontent@do%
+ }{%
+ \renewcommand*\tud@footcontent@fontsize{%
+ \setlength\@tempdima{\tud@head@fontsize\p@}%
+ \fontsize{\@tempdima}{1.25\@tempdima}%
+ }%
+ \tud@footcontent@do%
+ }%
+}
+% \end{macrocode}
+% Normalerweise wird der Inhalt vollständig über die verfügbare Seitenfußbreite
+% gesetzt. Wird das optionale Argument \emph{nach} dem obligatorischen genutzt,
+% so erfolgt die Ausgabe zweispaltig. Das optionale Argument kann für
+% zusätzliche Formatierungsbefehle genutzt werden.
+% \begin{macrocode}
+\newcommand*\tud@footcontent@do[2][]{%
+ \kernel@ifnextchar[%]
+ {\tud@footcontent@@do{#1}{#2}}%
+ {\tud@footcontent@@do{#1}{#2}[\@nil]}%
+}
+\newcommand*\tud@footcontent@@do{}
+\def\tud@footcontent@@do#1#2[#3]{%
+% \end{macrocode}
+% Wurde im optionalen Argument für zusätzliche Schrifteinstellungen ein Stern
+% verwendet, bleibt die bisherige Definition bestehen.
+% \begin{macrocode}
+ \if\detokenize{*#1}\relax\else%
+ \renewcommand*\tud@footcontent@fontface{#1}%
+ \fi%
+% \end{macrocode}
+% Wurde in einem der Argumente für den linken und/oder rechten Inhalt ein Stern
+% verwendet, bleibt die bisherige Definition bestehen.
+% \begin{macrocode}
+ \if\detokenize{*#2}\relax\else%
+ \renewcommand*\tud@footcontent@left{#2}%
+ \fi%
+ \if\detokenize{*#3}\relax\else%
+ \renewcommand*\tud@footcontent@right{#3}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@footcontent@right
+% \end{macro}^^A \tud@footcontent@left
+% \end{macro}^^A \tud@footcontent@fontface
+% \end{macro}^^A \tud@footcontent@fontsize
+% \end{macro}^^A \tud@footcontent@usefont
+% \end{macro}^^A \tud@footcontent@@do
+% \end{macro}^^A \tud@footcontent@do
+% \end{KOMAfont}^^A tudheadings
+% \end{macro}^^A \footcontent
+%
+% \iffalse
+%<*class&poster>
+% \fi
+%
+% \begin{macro}{\tud@footcontent@@left}
+% \changes{v2.05}{2015/07/06}{neu}^^A
+% \changes{v2.05}{2016/04/17}{Überschrift optional}^^A
+% \begin{macro}{\tud@footcontent@@right}
+% \changes{v2.05}{2015/07/06}{neu}^^A
+% \changes{v2.05}{2016/04/17}{Überschrift optional}^^A
+% \begin{macro}{\tud@newline@poster}
+% Mit diesen beiden Hilfsmakros werden die linke und die rechte Spalte des
+% Standard-Seitenfußes eines Posters festgelegt. In der linken Spalte werden
+% dabei Fakultät, Einrichtung, Institut und Lehrstuhl sowie der Professor
+% ausgegeben, wobei die Angaben über das optionale Argument der entsprechenden
+% Feldbefehle, die in den Klassen normalerweise nur für den Seitenkopf genutzt
+% werden, variiert werden können.
+% \begin{macrocode}
+\newcommand*\tud@newline@poster{}
+\newcommand*\tud@footcontent@@left[1]{%
+ \ifxblank{#1}{}{{\tud@head@font@@bold#1\newline}}%
+ Technische Universit\"at Dresden%
+ \tud@foot@line@write{faculty}%
+ \tud@foot@line@write{department}%
+ \tud@foot@line@write{institute}%
+ \tud@foot@line@write{chair}%
+ \tud@foot@line@write{professor}%
+}
+% \end{macrocode}
+% In der rechten Spalte werden der Autor oder die Autoren (\cs{author}) und
+% die Kontaktperson(en) (\cs{contactperson}) ausgegeben. Zu jeder Person können
+% individuelle Angaben bzgl. Büro, Telefonnummer und E"~Mail-Adresse gemacht
+% werden.
+% \begin{macrocode}
+\newcommand*\tud@footcontent@@right[2]{%
+ \def\tud@newline@poster{%
+ \ifx\@authormore\@empty\else\newline\@authormore\fi%
+ \ifx\@course\@empty%
+ \ifx\@discipline\@empty\else\newline\@discipline\fi%
+ \else%
+ \newline\@course%
+ \ifx\@discipline\@empty\else%
+ \nobreakspace(\@discipline)%
+ \fi%
+ \fi%
+ \ifx\@office\@empty\else\newline\@office\fi%
+ \ifx\@telephone\@empty\else\newline\@telephone\fi%
+ \ifx\@telefax\@empty\else\newline\@telefax\fi%
+ \ifx\@emailaddress\@empty\else\newline\@emailaddress\fi%
+ }%
+% \end{macrocode}
+% Wurde kein Autor angegeben, wird in diesem Fall die normalerweise erzeugte
+% Warnung bei der Verwendung des Feldes \cs{@author} unterdrückt.
+% \begin{macrocode}
+ \ifpatchable{\@author}{\@latex@warning@no@line}{%
+ \let\@tempa\@empty%
+ }{%
+ \let\@tempa\@author%
+ }%
+ \ifx\@tempa\@empty\else%
+ \ifxblank{#1}{}{{\tud@head@font@@bold#1\newline}}%
+% \end{macrocode}
+% Das Makro zum Aufteilen der Autorenangaben wird für die hier benötigte Form
+% definiert. Die Ausgabe aller nicht \emph{lokal} angegebenen Felder wird
+% unterdrückt, indem das Makro \cs{tud@multiple@fields@preset} im zweiten
+% Argument mit einem \val{*} aufgerufen wird.
+% \begin{macrocode}
+ \renewcommand*\tud@split@author@do[2]{%
+ \tud@multiple@fields@store{@author}{##1}%
+ \tud@multiple@fields@preset{@author}{*}{##1}%
+ \ignorespaces##1\tud@newline@poster%
+ \tud@multiple@fields@restore{@author}%
+ \tud@multiple@@@split{##2}{\newline}%
+ }%
+ \noindent\tud@multiple@split{@author}%
+ \tud@multiple@fields@restore{@author}%
+% \end{macrocode}
+% Wurde gültige Felder außerhalb von \cs{@author} global angegeben, so werden
+% diese \emph{nach} allen Autoren ausgegeben.
+% \begin{macrocode}
+ \tud@newline@poster%
+% \end{macrocode}
+% Werden Autor und Kontaktperson ausgegeben, ist eine Leerzeile einzufügen.
+% \begin{macrocode}
+ \ifx\@contactperson\@empty\else\newline\fi%
+ \fi%
+% \end{macrocode}
+% Die Ausgabe der Kontaktperson(en) erfolgt analog zu der Autorenausgabe.
+% \begin{macrocode}
+ \def\tud@newline@poster{%
+ \ifx\@office\@empty\else\newline\@office\fi%
+ \ifx\@telephone\@empty\else\newline\@telephone\fi%
+ \ifx\@telefax\@empty\else\newline\@telefax\fi%
+ \ifx\@emailaddress\@empty\else\newline\@emailaddress\fi%
+ }%
+ \ifx\@contactperson\@empty\else%
+ \ifxblank{#2}{}{{\tud@head@font@@bold#2\newline}}%
+ \renewcommand*\tud@split@contactperson@do[2]{%
+ \tud@multiple@fields@store{@contactperson}{##1}%
+ \tud@multiple@fields@preset{@contactperson}{*}{##1}%
+ \ignorespaces##1\tud@newline@poster%
+ \tud@multiple@fields@restore{@contactperson}%
+ \tud@multiple@@@split{##2}{\newline}%
+ }%
+ \noindent\tud@multiple@split{@contactperson}%
+ \tud@multiple@fields@restore{@contactperson}%
+ \tud@newline@poster%
+ \fi%
+% \end{macrocode}
+% Zu guter letzt noch eine mögliche Homepage.
+% \begin{macrocode}
+ \ifx\@webpage\@empty\else\newline\@webpage\fi%
+}
+\footcontent{%
+ \tud@footcontent@@left{\contactname}%
+}[%
+ \tud@footcontent@@right{\authorname}{\contactpersonname}%
+]
+% \end{macrocode}
+% \end{macro}^^A \tud@newline@poster
+% \end{macro}^^A \tud@footcontent@@right
+% \end{macro}^^A \tud@footcontent@@left
+%
+% \iffalse
+%</class&poster>
+% \fi
+%
+% \begin{macro}{\tud@footcontent@use}
+% \changes{v2.04}{2015/06/01}{neu}^^A
+% Mit \cs{tud@footcontent@use} erfolgt die Ausgabe der mit \cs{footcontent}
+% definierten Inhalte. Dabei wird darauf geachtet, ob ein \DDC-Logo im Fuß
+% verwendet wird. Die Ausgabe erfolgt jedoch nur, falls tatsächlich etwas
+% definiert wurde. Andernfalls wird lediglich eine leere Box der geforderten
+% Breite ausgegeben. Dies ist notwendig, da nachgelagerte Funktionen diese Box
+% fester Breite erwarten.
+% \begin{macrocode}
+\newcommand*\tud@footcontent@use[2]{%
+ \@tempswafalse%
+ \ifx\tud@footcontent@left\@empty\relax%
+ \def\@tempa{\@nil}%
+ \ifx\@tempa\tud@footcontent@right\relax\else%
+ \ifx\tud@footcontent@right\@empty\relax\else%
+ \@tempswatrue%
+ \fi%
+ \fi%
+ \else%
+ \@tempswatrue%
+ \fi%
+ \if@tempswa%
+ \tud@ddc@check%
+ \ifcase\@tempb\relax%
+ \setlength\@tempdimc{\z@}%
+ \else%
+ \settowidth\@tempdimc{\tud@uselayerbox{foot@black}}%
+ \addtolength\@tempdimc{\columnsep}%
+ \fi%
+% \end{macrocode}
+% Äquivalent zu den Logos wird auch der durch den Anwender frei definierbare
+% Inhalt des Fußes in einer vertikalen Box gesetzt. Mit \cs{@tempdimc} wird im
+% Bedarfsfall der Freiraum für das \DDC-Logo bereitgestellt.
+% \begin{macrocode}
+ \tud@vlayerbox{#1}{%
+ \linespread{1}%
+ \vss%
+ \hbox to #2{%
+ \tud@footcontent@usefont{%
+% \end{macrocode}
+% Wurde das optionale Argument nach dem obligatorischen nicht genutzt, so wird
+% der Inhalt über die komplette Breite des Textbereiches ausgegeben.
+% \begin{macrocode}
+ \def\@tempa{\@nil}%
+ \ifx\@tempa\tud@footcontent@right\relax%
+ \vtop{%
+ \hsize=\dimexpr#2-\@tempdimc\relax%
+ \strut\ignorespaces\tud@footcontent@left\strut%
+ }%
+% \end{macrocode}
+% Im zweispaltigen modus werden zwei vertikale Boxen erzeugt, zwischen denen
+% der Abstand \cs{columnsep} eingefügt wird.
+% \begin{macrocode}
+ \else%
+ \vtop{%
+ \hsize=\dimexpr(#2-\columnsep)/2\relax%
+ \strut\ignorespaces\tud@footcontent@left\strut%
+ }%
+ \hspace{\columnsep}%
+ \vtop{%
+ \hsize=\dimexpr(#2-\columnsep)/2-\@tempdimc\relax%
+ \strut\ignorespaces\tud@footcontent@right\strut%
+ }%
+ \fi%
+ \hss%
+ }%
+ }%
+ \vss\vss%
+% \end{macrocode}
+% Sollte der Inhalt für den Fußbereich zu groß sein, wird eine Warnung erzeugt.
+% \begin{macrocode}
+ }{%
+ The content for the footer (`\string\footcontent')\MessageBreak%
+ is too high. You should either reduce the content\MessageBreak%
+ or lower the fontsize via the optional argument.%
+ \ifnum\tud@cdgeometry@num>\@ne% true/symmetric/twoside
+ \MessageBreak%
+ Alternatively you can enlarge the bottom margin\MessageBreak%
+ by using option `extrabottommargin'.%
+ \fi%
+ }%
+ \else%
+ \hbox to #2{}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@footcontent@use
+%
+% \iffalse
+%</class&body>
+% \fi
+%
+% \subsection{Optionen für das \DDC-Logo}
+%
+% \begin{macro}{\tud@comp@clearpage}
+% \changes{v2.04}{2015/05/31}{neu}^^A
+% \begin{macro}{\tud@comp@resetpagestyle}
+% \changes{v2.04}{2015/05/31}{neu}^^A
+% \begin{macro}{\if@tud@ddc@internal}
+% \changes{v2.02}{2014/07/08}{neu}^^A
+% Bis zur Version~v2.02 wurden unterschiedliche Satzsiegel für den Seitenfuß
+% mit und ohne \DDC-Logo verwendet. Damit dieser im Zweifelsfall umgestellt
+% werden kann, wurde vor dem Ausführen der entsprechenden Optionen ein
+% Seitenumbruch erzwungen und nach dem Verarbeiten der Optionen der aktuelle
+% Seitenstil erneut aufgerufen. Die beiden folgenden Makros werden für dieses
+% Unterfangen definiert, jedoch bei der Abarbeitung der Optionen nur noch im
+% Kompatibilitätmodus ausgeführt. Der Schalter \cs{if@tud@ddc@internal} wird
+% intern von den Optionen \opt{ddc}, \opt{ddchead} und \opt{ddcfoot} verwendet,
+% um rekursive Aufrufe der Optionen zu verhindern.
+% \begin{macrocode}
+%<*class&option>
+\newif\if@tud@ddc@internal
+\newcommand*\tud@comp@clearpage{}%
+\newcommand*\tud@comp@resetpagestyle{}%
+%</class&option>
+%<*class&body>
+\tud@if@v@lower{2.04}{%
+ \renewcommand*\tud@comp@clearpage{%
+ \if@tud@ddc@internal\else%
+ \tud@if@tudheadings{\currentpagestyle}{\clearpage}{}%
+ \fi%
+ }%
+ \renewcommand*\tud@comp@resetpagestyle{%
+ \if@tud@ddc@internal\else%
+ \tud@if@tudheadings{\currentpagestyle}{%
+ \expandafter\pagestyle\expandafter{\currentpagestyle}%
+ }{}%
+ \fi%
+ }%
+}{}%
+%</class&body>
+% \end{macrocode}
+% \end{macro}^^A \if@tud@ddc@internal
+% \end{macro}^^A \tud@comp@clearpage
+% \end{macro}^^A \tud@comp@resetpagestyle
+%
+% \iffalse
+%<*class&option>
+% \fi
+%
+% \begin{option}{ddc}
+% \changes{v2.02}{2014/06/23}{automatische Logowahl}^^A
+% \begin{option}{ddchead}
+% \changes{v2.02}{2014/06/23}{Logo von \DDC entweder in Kopf oder Fuß}^^A
+% \begin{option}{ddcfoot}
+% \changes{v2.02}{2014/06/23}{Logo von \DDC entweder in Kopf oder Fuß}^^A
+% Diese Optionen dienen zur Auswahl des \DDC-Logos auf Seiten mit dem Stil
+% \pgs{tudheadings}. Die Option \opt{ddchead} setzt das Logo dabei immer in den
+% Kopf, wobei ein mit \cs{headlogo} definiertes Zweitlogo gegebenenfalls
+% überschrieben wird. Die Option \opt{ddcfoot} setzt das Logo immer in den Fuß.
+% Mit der Option \opt{ddc} wird das Logo nur in den Kopf gesetzt, wenn kein
+% Zweitlogo angegeben ist. Ist dies jedoch der Fall, wird das Logo stattdessen
+% im Fuß ausgegeben.
+% \begin{macro}{\tud@ddc@switch}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% Das Makro definiert die gültigen Werte für die \DDC-Optionen \opt{ddc},
+% \opt{ddchead} sowie \opt{ddcfoot}.
+% \begin{macrocode}
+\newcommand*\tud@ddc@switch{}
+\edef\tud@ddc@switch{%
+ \TUD@bool@numkey,%
+ {color}{2},{colour}{2},{cdcolor}{2},{cdcolour}{2},%
+ {colorblack}{3},{colourblack}{3},{cdcolorblack}{3},{cdcolourblack}{3},%
+ {gray}{4},{grey}{4},{hks92}{4},{cdgray}{4},{cdgrey}{4},%
+ {black}{5},{cdblack}{5},%
+ {blue}{6},{hks41}{6},{cdblue}{6},{cddarkblue}{6},%
+ {white}{7},{cdwhite}{7}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@ddc@switch
+% \begin{macro}{\tud@ddc@auto@num}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% \begin{macro}{\if@tud@ddc@auto}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% \begin{macro}{\if@tud@headlogo@option@set}
+% \changes{v2.04}{2015/05/31}{neu}^^A
+% \begin{macro}{\if@tud@footlogo@option@set}
+% \changes{v2.04}{2015/06/01}{neu}^^A
+% Die Option \opt{ddc}.
+% \begin{macrocode}
+\newif\if@tud@headlogo@option@set
+\newif\if@tud@footlogo@option@set
+\newif\if@tud@ddc@auto
+\newcommand*\tud@ddc@auto@num{0}
+\TUD@key{ddc}[true]{%
+% \end{macrocode}
+% Im Kompatibiltätsmodus wird ein Seitenumbruch erzwungen. Anschließend wird
+% die Option abgearbeitet.
+% \begin{macrocode}
+ \tud@comp@clearpage%
+ \TUD@set@numkey{ddc}{tud@ddc@auto@num}{\tud@ddc@switch}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+% \end{macrocode}
+% Wurde die Option \opt{ddc} intern durch \opt{ddchead} oder \opt{ddcfoot}
+% aufgerufen, wird die automatische Auswahl des \DDC-Logos deaktiviert.
+% \begin{macrocode}
+ \if@tud@ddc@internal%
+ \@tud@ddc@autofalse%
+ \else%
+% \end{macrocode}
+% Andernfalls wird die automatische Auswahl aktiviert und die beiden Optionen
+% \opt{ddchead} sowie \opt{ddcfoot} intern zurückgesetzt.
+% \begin{macrocode}
+ \@tud@ddc@autotrue%
+ \@tud@ddc@internaltrue%
+ \TUDoptions{ddchead=false}%
+ \TUDoptions{ddcfoot=false}%
+ \@tud@ddc@internalfalse%
+ \fi%
+% \end{macrocode}
+% Sowohl die \DDC-Logos als auch ein mögliches Zweilogo (\cs{headlogo}) werden
+% in den entsprechenden Layern durch Boxen ausgegeben. Die beiden Schalter
+% führen zum Erneuern der dazugehörigen Logoboxen. Siehe die Beschreibung der
+% Makros \cs{tud@headlogo@option@set} sowie \cs{tud@footlogo@option@set}.
+% \begin{macrocode}
+ \global\@tud@headlogo@option@settrue%
+ \global\@tud@footlogo@option@settrue%
+ \fi%
+% \end{macrocode}
+% Abschließend wird im Kompatibilitätsmodus der aktuelle Seitenstil aufgerufen,
+% um bei einem geänderten Fuß den notwendigen Satzspiegel zu laden.
+% \begin{macrocode}
+ \tud@comp@resetpagestyle%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@footlogo@option@set
+% \end{macro}^^A \if@tud@headlogo@option@set
+% \end{macro}^^A \if@tud@ddc@auto
+% \end{macro}^^A \tud@ddc@auto@num
+% \begin{macro}{\tud@ddc@head@num}
+% \changes{v2.03}{2015/01/22}{Seitenstilauswahl bei Deaktivierung verbessert}^^A
+% Die Option \opt{ddchead} dient zum zwingenden Setzen des \DDC-Logos im Kopf
+% der Seiten im Stil von \pgs{tudheadings}.
+% \begin{macrocode}
+\newcommand*\tud@ddc@head@num{0}
+\TUD@key{ddchead}[true]{%
+% \end{macrocode}
+% Der Seitenumbruch im Kompatibilitätsmodus.
+% \begin{macrocode}
+ \tud@comp@clearpage%
+ \TUD@set@numkey{ddchead}{tud@ddc@head@num}{\tud@ddc@switch}{#1}%
+% \end{macrocode}
+% Beim internen Aufruf soll lediglich der Wert des Schlüssels geändert werden.
+% Wurde die Option durch den Anwender genutzt, werden die korrespondierenden
+% Optionen zurückgesetzt. Der Aufruf der Option \opt{ddc} führt zum erneuten
+% setzen der Logoboxen.
+% \begin{macrocode}
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@tud@ddc@internal\else%
+ \@tud@ddc@internaltrue%
+ \TUDoptions{ddcfoot=false}%
+ \TUDoptions{ddc=false}%
+ \@tud@ddc@internalfalse%
+ \fi%
+ \fi%
+% \end{macrocode}
+% Das Setzen des Seitenstils im Kompatibilitätsmodus.
+% \begin{macrocode}
+ \tud@comp@resetpagestyle%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@ddc@head@num
+% \begin{macro}{\tud@ddc@foot@num}
+% \changes{v2.03}{2015/01/22}{Seitenstilauswahl bei Deaktivierung verbessert}^^A
+% Die Option \opt{ddcfoot} dient zum zwingenden Setzen des \DDC-Logos im Fuß
+% der Seiten im Stil von \pgs{tudheadings}. Das Vorgehen beim Umschalten des
+% Schlüssels ist äquivalent zur Option \opt{ddchead}
+% \begin{macrocode}
+\newcommand*\tud@ddc@foot@num{0}
+\TUD@key{ddcfoot}[true]{%
+% \end{macrocode}
+% Der Seitenumbruch im Kompatibilitätsmodus.
+% \begin{macrocode}
+ \tud@comp@clearpage%
+ \TUD@set@numkey{ddcfoot}{tud@ddc@foot@num}{\tud@ddc@switch}{#1}%
+% \end{macrocode}
+% Beim internen Aufruf soll lediglich der Wert des Schlüssels geändert werden.
+% Wurde die Option durch den Anwender genutzt, werden die korrespondierenden
+% Optionen zurückgesetzt. Der Aufruf der Option \opt{ddc} führt zum erneuten
+% setzen der Logoboxen.
+% \begin{macrocode}
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@tud@ddc@internal\else%
+ \@tud@ddc@internaltrue%
+ \TUDoptions{ddchead=false}%
+ \TUDoptions{ddc=false}%
+ \@tud@ddc@internalfalse%
+ \fi%
+ \fi%
+% \end{macrocode}
+% Das Setzen des Seitenstils im Kompatibilitätsmodus.
+% \begin{macrocode}
+ \tud@comp@resetpagestyle%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@ddc@foot@num
+% \end{option}^^A ddcfoot
+% \end{option}^^A ddchead
+% \end{option}^^A ddc
+%
+% \iffalse
+%</class&option>
+%<*class&body>
+% \fi
+%
+% \begin{macro}{\tud@ddc@check}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% Dieses Hilfsmakro wird aufgerufen, wenn geprüft wird, welche Einstellungen
+% für Kopf und Fuß des Seitenstiles \pgs{tudheadings} zum Tragen kommen sollen.
+% Über den Schalter \cs{if@tud@ddc@auto} wird festgelegt, ob die Auswahl des
+% \DDC-Logos automatisch erfolgen soll~-- Option \opt{ddc} wurde verwendet.
+% Ist dies der Fall, wird das Logo standardmäßig im Kopf gesetzt. Ist jedoch
+% durch den Befehl \cs{headlogo} ein Zweitlogo angegeben worde, wird dieses in
+% der Fußzeile ausgegeben. Die Verwendung einer der Optionen \opt{ddchead} bzw.
+% \opt{ddcfoot} forciert die Ausgabe des \DDC-Logos an der gewünschten Stelle.
+% Die jeweils gültige Auswahl für Kopf bzw. Fuß wird in den Makros \cs{@tempa}
+% bzw. \cs{@tempb} geschrieben und kann anschließend ausgewertet werden.
+% \begin{macrocode}
+\newcommand*\tud@ddc@check{%
+ \let\@tempa\tud@ddc@head@num%
+ \let\@tempb\tud@ddc@foot@num%
+ \if@tud@ddc@auto%
+ \ifdefvoid{\tud@headlogo@filename}{%
+ \let\@tempa\tud@ddc@auto@num%
+ \let\@tempb\z@%
+ }{%
+ \let\@tempa\z@%
+ \let\@tempb\tud@ddc@auto@num%
+ }%
+ \fi%
+% \end{macrocode}
+% Für die Satzspiegelvergrößerung wird beim Vorhandensein eines oder mehrerer
+% Logos im Fuß die Variable \cs{@tempb} auf einen negativen Wert gesetzt, um
+% auch ohne die Ausgabe eines \DDC-Logos den Fußbereich zu vergrößern.
+% \begin{macrocode}
+ \tud@if@v@lower{2.03}{%
+ \ifnum\@tempb=\z@\relax%
+ \ifdefvoid{\tud@footlogo@filenames}{}{\let\@tempb\m@ne}%
+ \fi%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@ddc@check
+%
+% \subsection{Umgebungsparameter für die neuen Seitenstile}
+%
+% \begin{macro}{\if@tud@parameter@ps@font@set}
+% \changes{v2.05m}{2017/05/30}{neu}^^A
+% Der Schalter wird verwendet, um das explizite Setzen der Schrifteinstellungen
+% über die Seitenstilparameter zu detektieren.
+% \begin{macrocode}
+\newif\if@tud@parameter@ps@font@set
+% \end{macrocode}
+% \end{macro}^^A \if@tud@parameter@ps@font@set
+% \begin{macro}{\TUD@parameter@ps@def}
+% Im Folgenden werden die einzelnen Parameter für die \env{tudpage}-Umgebung
+% definiert. Die Parameter für Kopf- und Fußzeile werden nicht nur für die
+% \env{tudpage}-Umgebung sondern auch noch für Titel und Umschlagseite
+% verwendet, weshalb deren Definitionen zur einfacheren Wiederverwendung in das
+% Makro \cs{TUD@parameter@ps@def} ausgelagert werden.
+% \begin{macrocode}
+\newcommand*\TUD@parameter@ps@def[1]{%
+% \end{macrocode}
+% \begin{parameter}{cdfont}
+% Die Option \opt{cdfont} bestimmt, ob die Schriften des \CDs oder aber die
+% standardmäßigen Serifenlosen für die Auszeichnugen in der Kopfzeile und
+% Serifen im Inhalt verwendet werden.
+% \begin{macrocode}
+ \TUD@parameter@def{cdfont}[true]{%
+ \TUDoption{cdfont}{#1}%
+ \@tud@parameter@ps@font@settrue%
+ }%
+% \end{macrocode}
+% \end{parameter}^^A cdfont
+% \begin{parameter}{cdhead}
+% \changes{v2.03}{2015/01/28}{\val{barfont} und \val{widehead} überlagert}^^A
+% Mit dem Parameter \val{cdhead} kann die Verwendung der Schriften des \CDs
+% aktiviert werden, wenn diese im Fließtext nicht zum Einsatz kommen. Die
+% Breite des Querbalkens kann über diesen Parameter ebenfalls geändert werden.
+% \begin{macrocode}
+ \TUD@parameter@def{cdhead}[true]{\TUDoption{cdhead}{#1}}%
+% \end{macrocode}
+% \end{parameter}^^A cdhead
+% \begin{parameter}{cdfoot}
+% \changes{v2.03}{2015/01/30}{neu}^^A
+% Über \val{cdfoot} kann gg. die Hintergrundfarbe sowie die Standardfußzeile
+% des \CDs aktiviert werden.
+% \begin{macrocode}
+ \TUD@parameter@def{cdfoot}[true]{\TUDoption{cdfoot}{#1}}%
+% \end{macrocode}
+% \end{parameter}^^A cdfoot
+% \begin{parameter}{headlogo}
+% \changes{v2.03}{2015/01/28}{neu}^^A
+% \begin{parameter}{footlogo}
+% \changes{v2.03}{2015/01/28}{neu}^^A
+% Das Zweit- und die Drittlogos können ebenfalls lokal geändert werden.
+% \begin{macrocode}
+ \TUD@parameter@def{headlogo}{\headlogo{#1}}%
+ \TUD@parameter@def{footlogo}{\footlogo{#1}}%
+% \end{macrocode}
+% \end{parameter}^^A footlogo
+% \end{parameter}^^A headlogo
+% \begin{parameter}{ddc}
+% \changes{v2.02}{2014/08/16}{neu}^^A
+% \begin{parameter}{ddchead}
+% \begin{parameter}{ddcfoot}
+% Mit diesen Parametern kann das \DDC-Logo im Kopf bzw. Fuß eingeblendet werden.
+% \begin{macrocode}
+ \TUD@parameter@def{ddc}[true]{\TUDoption{ddc}{#1}}%
+ \TUD@parameter@def{ddchead}[true]{\TUDoption{ddchead}{#1}}%
+ \TUD@parameter@def{ddcfoot}[true]{\TUDoption{ddcfoot}{#1}}%
+% \end{macrocode}
+% \end{parameter}^^A ddcfoot
+% \end{parameter}^^A ddchead
+% \end{parameter}^^A ddc
+% \begin{parameter}{cdfonts}
+% \begin{parameter}{tudfonts}
+% \begin{parameter}{barfont}
+% \begin{parameter}{widehead}
+% \begin{parameter}{tudfoot}
+% \begin{parameter}{logo}
+% Für die Kompatibilität werden auch veraltete Parameter bereitgestellt.
+% \begin{macrocode}
+ \TUD@parameter@def{cdfonts}[true]{%
+ \TUDoption{cdfonts}{#1}%
+ \@tud@parameter@ps@font@settrue%
+ }%
+ \TUD@parameter@def{tudfonts}[true]{%
+ \TUDoption{tudfonts}{#1}%
+ \@tud@parameter@ps@font@settrue%
+ }%
+ \TUD@parameter@def{barfont}[true]{\TUDoption{barfont}{#1}}%
+ \TUD@parameter@def{widehead}[true]{\TUDoption{widehead}{#1}}%
+ \TUD@parameter@def{tudfoot}[true]{\TUDoption{tudfoot}{#1}}%
+ \TUD@parameter@let{logo}{headlogo}%
+% \end{macrocode}
+% \end{parameter}^^A logo
+% \end{parameter}^^A tudfoot
+% \end{parameter}^^A widehead
+% \end{parameter}^^A barfont
+% \end{parameter}^^A tudfonts
+% \end{parameter}^^A cdfonts
+% Damit sind alle notwendigen Parameter für die Kopf- und Fußzeile der Seiten
+% im Stil \pgs{tudheadings} definiert.
+% \begin{macrocode}
+}
+% \end{macrocode}
+% \end{macro}^^A \TUD@parameter@ps@def
+%
+% \iffalse
+%<*book|report|article>
+% \fi
+%
+% \begin{environment}{tudpage}
+% \changes{v2.02}{2014/06/23}{an Paket \pkg{scrlayer-scrpage} angepasst}^^A
+% \begin{parameter}{language}
+% \begin{parameter}{columns}
+% \begin{parameter}{pagestyle}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% \changes{v2.03}{2015/01/28}{\cs{tud@if@tudheadings} verwendet}^^A
+% \begin{macro}{\tud@envir@ps}
+% \begin{macro}{\tud@envir@selectps}
+% \changes{v2.02}{2014/07/19}{neu}^^A
+% \begin{macro}{\tud@currentpagestyle@set}
+% \changes{v2.02}{2014/07/18}{neu}^^A
+% \begin{macro}{\tud@currentpagestyle@reset}
+% \changes{v2.02}{2014/07/18}{neu}^^A
+% \changes{v2.03}{2015/01/09}{Bugfix}^^A
+% \begin{macro}{\tud@currentpagestyle@value}
+% Durch den hohen TUD-Kopf muss bei der Verwendung dessens das Seitenlayout
+% temporär umgeschaltet werden, um die Höhe des Satzspiegels zu verringern.
+% Dies geschieht innerhalb dieser Umgebung reversibel mit \cs{pagestyle}.
+% Dabei wird mit \cs{loadgeometry} ein Seitenumbruch erzwungen und der
+% benötigte Satzspiegel geladen.
+%
+% Die Befehle \cs{tud@currentpagestyle@set} und \cs{tud@currentpagestyle@reset}
+% sind für die Sicherung und Wiederherstellung des vor der Umgebung geladenen
+% Seitenstils verantwortlich.
+%
+% Zu Beginn der Umgebung werden die weiter unten beschriebenen Optionen für
+% diese Umgebung mit \cs{TUD@parameter@set} ausgeführt. Nach dem Beenden der
+% Umgebung wird nache einem weiteren Seitenumbruch das Standardseitenlayout
+% wiederhergestellt. Die gewünschte Sprache der Umgebung kann als einzelner
+% Wert ohne Schlüssel angegben werden.
+% \begin{macrocode}
+\newcommand*\tud@envir@ps{tudheadings}
+\newcommand*\tud@envir@selectps{%
+ \expandafter\pagestyle\expandafter{\tud@envir@ps}%
+ \ifstr{\GetRealPageStyle{\tud@envir@ps}}{empty}{%
+ \renewcommand*\titlepagestyle{empty}%
+%<*book|report>
+ \renewcommand*\partpagestyle{empty}%
+ \renewcommand*\chapterpagestyle{empty}%
+%</book|report>
+ \renewcommand*\indexpagestyle{empty}%
+ }{}%
+ \ifstr{\GetRealPageStyle{\tud@envir@ps}}{empty.tudheadings}{%
+ \renewcommand*\titlepagestyle{empty.tudheadings}%
+%<*book|report>
+ \renewcommand*\partpagestyle{empty.tudheadings}%
+ \renewcommand*\chapterpagestyle{empty.tudheadings}%
+%</book|report>
+ \renewcommand*\indexpagestyle{empty.tudheadings}%
+ }{}%
+}
+\newcommand*\tud@currentpagestyle@value{}
+\newcommand*\tud@currentpagestyle@set{%
+ \ifdefvoid{\tud@currentpagestyle@value}{%
+ \xdef\tud@currentpagestyle@value{\currentpagestyle}%
+ }{}%
+}
+\newcommand*\tud@currentpagestyle@reset{%
+ \ifdefvoid{\tud@currentpagestyle@value}{}{%
+ \expandafter\pagestyle\expandafter{\tud@currentpagestyle@value}%
+ \let\tud@currentpagestyle@value\relax%
+ }%
+}
+\NewEnviron{tudpage}[1][]{%
+% \end{macrocode}
+% Um beim Umschalten des Seitenstils den aktuellen selbst zu behalten, wird
+% dieser im Hilfsmakro \cs{tud@currentpagestyle@value} gespeichert.
+% \begin{macrocode}
+ \tud@currentpagestyle@set%
+ \clearpage%
+ \def\tud@envir@ps{tudheadings}%
+ \TUD@parameter@set{tudpage}{#1}%
+ \tud@envir@selectps%
+% \end{macrocode}
+% Falls das \pkg{multicol}-Paket geladen ist und eine Spaltenanzahl angegeben
+% ist, wird die entsprechende Umgebung gesartet, mit \cs{BODY} der Inhalt der
+% \env{tudpage}-Umgebung ausgegeben und anschließend gegebenenfalls die
+% \env{multicols}-Umgebung beendet.
+% \begin{macrocode}
+ \tud@x@multicol@check%
+ \ifnum\tud@x@multicol@num>\@ne\relax%
+ \begin{multicols}{\tud@x@multicol@num}%
+ \fi%
+ \BODY%
+ \ifnum\tud@x@multicol@num>\@ne\relax%
+ \end{multicols}%
+ \fi%
+% \end{macrocode}
+% Am Ende der Umgebung wird der vorhergehende Seitenstil zurückgesetzt und der
+% dazugehörige Satzspiegel geladen. Dazu wird die Ausführung das Hilfsmakro
+% \cs{@tempa} auf das Beenden der Umgebung mit \cs{aftergroup} verzögert.
+% \begin{macrocode}
+}[%
+ \aftergroup\tud@currentpagestyle@reset%
+ \clearpage%
+]
+% \end{macrocode}
+% Mit \cs{TUD@parameter@family}\marg{Family}\marg{\dots} wird die Familie der
+% Parameter festgelegt und anschließend die Definitionen getätigt.
+% \begin{macrocode}
+\TUD@parameter@family{tudpage}{%
+% \end{macrocode}
+% Mit dem Parameter \prm{language} kann die in der Umgebung verwendete Sprache
+% umgeschaltet werden. Die Sprache kann auch ohne den entsprechenden Schlüssel
+% direkt als Parameter angegeben werden.
+% \begin{macrocode}
+ \TUD@parameter@def{language}{\selectlanguage{#1}}%
+% \end{macrocode}
+% Mit \prm{columns} kann die Anzahl der Spalten für die Umgebung angegeben
+% werden. Für mehr als zwei Spalten muss das Paket \pkg{multicol} geladen
+% werden. Die Spaltenanzahl kann auch ohne den entsprechenden Schlüssel direkt
+% Parameter angegeben werden.
+% \begin{macrocode}
+ \TUD@parameter@def{columns}{\renewcommand*\tud@x@multicol@num{#1}}%
+% \end{macrocode}
+% Mit dem Parameter \prm{pagestyle} kann der verwendete Seitenstil eingestellt
+% werden, wobei einer der \pgs{tudheadings}-Seitenstile verwendet wird.
+% \begin{macrocode}
+ \TUD@parameter@def{pagestyle}{%
+ \tud@if@tudheadings{#1}{\renewcommand*\tud@envir@ps{#1}}{%
+ \ifstr{#1}{empty}{\renewcommand*\tud@envir@ps{empty.tudheadings}}{%
+ \ifstr{#1}{plain}{\renewcommand*\tud@envir@ps{plain.tudheadings}}{%
+ \ifstr{#1}{headings}{\renewcommand*\tud@envir@ps{tudheadings}}{%
+ \TUD@parameter@error{pagestyle}{%
+ headings, plain, empty or any tudheadings page style type%
+ }%
+ }}}%
+ }%
+ }%
+% \end{macrocode}
+% Hier werden die Parameter für Kopf- und Fußzeile tatsächlich definiert.
+% \begin{macrocode}
+ \TUD@parameter@ps@def{#1}%
+% \end{macrocode}
+% Für den Fall, dass ein Wert nicht in der Schlüssel"=Wert"=Notation gegeben
+% wird, erfolgt eine Sonderbehandlung durch \cs{TUD@parameter@handler@default},
+% bei dererst auf eine Zahl geprüft wird und anschießend versucht wird, das
+% Argument als Sprache zu setzen. Nach der Definition aller Parameter wird der
+% Befehl \cs{TUD@parameter@family} und damit auch die aktuelle Parameterfamilie
+% beendet.
+% \begin{macrocode}
+ \TUD@parameter@handler@default{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@currentpagestyle@value
+% \end{macro}^^A \tud@currentpagestyle@reset
+% \end{macro}^^A \tud@currentpagestyle@set
+% \end{macro}^^A \tud@envir@selectps
+% \end{macro}^^A \tud@envir@ps
+% \end{parameter}^^A pagestyle
+% \end{parameter}^^A columns
+% \end{parameter}^^A language
+% \end{environment}^^A tudpage
+%
+% \iffalse
+%</book|report|article>
+% \fi
+%
+% Mit der Nutzung von \pkg{scrlayer-scrpage} ist die parallele Verwendung des
+% Paketes \pkg{fancyhdr} nicht möglich.
+% \begin{macrocode}
+\PreventPackageFromLoading[%
+ \ClassWarning{\TUD@Class@Name}{%
+ The package `fancyhdr' must not be used with a\MessageBreak%
+ TUD-Script class. You should make use of the\MessageBreak%
+ capabilities of package `scrlayer-scrpage' instead%
+ }%
+]{fancyhdr}
+% \end{macrocode}
+%
+% \iffalse
+%</class&body>
+% \fi
+%
+% \Finale
+%
+\endinput
diff --git a/macros/latex/contrib/tudscr/source/tudscr-supervisor.dtx b/macros/latex/contrib/tudscr/source/tudscr-supervisor.dtx
new file mode 100644
index 0000000000..7e73840d5c
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/tudscr-supervisor.dtx
@@ -0,0 +1,603 @@
+% \CheckSum{600}
+% \iffalse meta-comment
+%
+% TUD-Script -- Corporate Design of Technische Universität Dresden
+% ----------------------------------------------------------------------------
+%
+% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2019
+%
+% ----------------------------------------------------------------------------
+%
+% This work may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License, version 1.3c of the license. The latest
+% version of this license is in http://www.latex-project.org/lppl.txt and
+% version 1.3c or later is part of all distributions of LaTeX 2005/12/01
+% or later and of this work. This work has the LPPL maintenance status
+% "author-maintained". The current maintainer and author of this work
+% is Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+% in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
+% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+% Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
+% oder später und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status
+% "author-maintained", wird somit allein durch den Autor verwaltet. Der
+% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: tudscr-supervisor.dtx
+%<*dtx>
+% \fi
+%
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{tudscr-supervisor.dtx}[2019/08/20 v2.06c TUD-Script\space%
+%
+% \iffalse
+%</dtx>
+%<package>\ProvidesPackage{tudscrsupervisor}[%
+%<*package>
+%!TUD@Version
+%</package>
+%<package> package
+%<*dtx|package>
+% \fi
+ (commands for supervisors)%
+]
+% \iffalse
+%</dtx|package>
+%<*dtx>
+\documentclass[english,ngerman,xindy]{tudscrdoc}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{tudscrfonts}
+\KOMAoptions{parskip=half-}
+\usepackage{bookmark}
+\usepackage[babel]{microtype}
+
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tudscr-supervisor.dtx}
+\title{\file{\filename}}
+\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
+\date{\fileversion\nobreakspace(\filedate)}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \section{%
+% Das Paket \pkg{tudscrsupervisor} -- Betreuung wissenschaftlicher Arbeiten%
+% }
+%
+% Diese Paket stellt für die \TUDScript-Klassen mehrere Umgebungen und Befehle
+% zur Erstellung der Aufgabenstellung einer Abschlussarbeit sowie eines
+% Gutachtens und eines Aushangs bereit.
+%
+% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%
+% \iffalse
+%<*package>
+% \fi
+%
+% \begin{macro}{\tud@multiple@fields@output}
+% \changes{v2.05}{2016/03/09}{neu}^^A
+% \begin{macro}{\tud@multiple@fields@style}
+% \changes{v2.05}{2016/05/26}{neu}^^A
+% Diesen beiden Makros dienen dazu, unterschiedliche Varianten für die Ausgabe
+% innerhalb der nachfolgenden Umgebungen generieren zu können. Momentan werden
+% diese nur innerhalb der \env{task}-Umgebung verwendet.
+% \begin{macrocode}
+\newcommand*\tud@multiple@fields@output{}
+\newcommand*\tud@multiple@fields@style{table}
+% \end{macrocode}
+% \end{macro}^^A \tud@multiple@fields@style
+% \end{macro}^^A \tud@multiple@fields@output
+% \begin{macro}{\student}
+% Der Befehl \cs{student} kann als Alias für \cs{author} genutzt werden.
+% \begin{macrocode}
+\newcommand*\student{\author}
+% \end{macrocode}
+% \end{macro}^^A \student
+% \begin{macro}{\tud@authortable@set}
+% \changes{v2.01b}{2014/06/04}{Probleme mit Paket \pkg{calc} behoben}^^A
+% \begin{length}{\tud@len@authortable}
+% Der Befehl \cs{tud@authortable@set} dient bei Aufgabenstellung und Gutachten
+% zur Ausgabe einer Tabelle mit Informationen zum Autor beziehungsweise zu den
+% Autoren.\footnote{Matrikelnummer, Jahrgang, Studiengang etc.}
+% \begin{macrocode}
+\newlength\tud@len@authortable
+\newcommand*\tud@authortable@set{%
+ \begingroup%
+ \let\thanks\@gobble%
+ \let\footnote\@gobble%
+% \end{macrocode}
+% Zu Beginn wird eine Tabelle mit den Bezeichnern aller genutzten Feldern
+% ausgegeben. Danach folgen alle Autoren. Damit ein einheitliches Layout
+% entsteht und auch die Tabellen am Ende der Umgebung in der ersten Spalte die
+% gleiche Breite haben wie im oberen Teil, ist die Bestimmung einer festen
+% Spaltenbreite notwendig, die so breit wie der längste Bezeichner ist.
+% Dafür muss festgestellt werden, welche optionalen Felder denn nun überhaupt
+% genutzt werden. Dafür wird \cs{tud@multiple@fields@preset} mit \cs{null} als
+% Argument aufgerufen, um alle potenziellen Felder erkennen zu können.
+% \begin{macrocode}
+ \tud@multiple@split{@author}%
+ \tud@multiple@fields@preset{@author}{\null}{}%
+ \setlength\tud@len@authortable{2em}%
+% \end{macrocode}
+% Anschließend werden die Bezeichner sowohl der obligatorischen als auch der
+% genutzten, optionalen Felder in \cs{@tempa} gespeichert. Mit der Liste wird
+% der längste Bezeichner bestimmt und dessen Länge in \cs{tud@len@authortable}
+% gespeichert.
+% \begin{macrocode}
+ \def\@tempb##1{%
+ \expandafter\ifx\csname @##1\endcsname\@empty\else%
+ \expandafter\appto\expandafter\@tempa\expandafter{%
+ \expandafter,\csname ##1name\endcsname%
+ }%
+ \fi%
+ }%
+ \def\@tempa{%
+ \namesname,\titlename,\issuedatetext,\duedatetext,\supervisorname%
+ }%
+ \tud@ifin@and{\@supervisor}{\appto\@tempa{,\supervisorothername}}{}%
+ \@tempb{referee}%
+ \tud@ifin@and{\@referee}{\appto\@tempa{,\refereeothername}}{}%
+ \@tempb{matriculationnumber}%
+ \@tempb{matriculationyear}%
+ \@tempb{course}%
+ \@tempb{discipline}%
+ \@for\@tempb:=\@tempa\do{%
+ \settowidth\@tempdima{\@tempb\tud@title@delimiter}%
+ \ifdim\@tempdima>\tud@len@authortable\relax%
+ \setlength\tud@len@authortable{\@tempdima}%
+ \fi%
+ }%
+ \global\tud@len@authortable=\tud@len@authortable%
+% \end{macrocode}
+% Die Tabelle mit den benötigten Bezeichnern. Damit diese bis an den Seiterand
+% ohne Warnungen gesetzt werden können, wird die Auszeichnung von Absatzenden
+% aufgehoben.
+% \begin{macrocode}
+ \begingroup%
+ \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative%
+ \begin{tabular}{@{}p{\tud@len@authortable}}%
+ \ifx\@course\@empty\else%
+ \coursename\tud@title@delimiter\tabularnewline%
+ \fi%
+ \ifx\@discipline\@empty\else%
+ \disciplinename\tud@title@delimiter\tabularnewline%
+ \fi%
+ \namesname\tud@title@delimiter\tabularnewline%
+ \ifx\@matriculationnumber\@empty\else%
+ \matriculationnumbername\tud@title@delimiter\tabularnewline%
+ \fi%
+ \ifx\@matriculationyear\@empty\else%
+ \matriculationyearname\tud@title@delimiter\tabularnewline%
+ \fi%
+ \end{tabular}%
+% \end{macrocode}
+% Der Befehl \cs{tud@split@author@do} wird innerhalb der \TUDScript-Klassen zur
+% formatierten Ausgabe mehrerer Autoren auf der Titelseite verwendet, welche
+% durch \cs{author}\marg{Autor(en)} angegeben und mit \cs{and} getrennt wurden.
+% Er wird hier auf die Ausgabe der Autoren mit den jeweils zusätzlich gegebenen
+% Informationen in einer Tabelle angepasst.
+% \begin{macrocode}
+ \renewcommand*\tud@split@author@do[2]{%
+% \end{macrocode}
+% Weil alle Autoren in einer Tabelle gesetzt werden wird geprüft, welche Felder
+% individuell via \cs{author} angegeben wurden. Damit die Tabellen die gleiche
+% Höhe haben, auch wenn für einen Autor ein Feld ausgelassen wurde, werden alle
+% insgesamt angegebenen Felder mit via \cs{tud@multiple@fields@preset} mit
+% \cs{null} initialisiert. Anschließend werden die für den aktuellen Autor
+% angegebenen Felder gesetzt.
+% \begin{macrocode}
+ \tud@multiple@fields@store{@author}{##1}%
+ \tud@multiple@fields@preset{@author}{\null}{##1}%
+% \end{macrocode}
+% Nach viel Geplänkel kommt nun die eigentliche Tabelle mit ggf. zusätzlichen
+% Informationen zum Autor.
+% \begin{macrocode}
+ \begin{tabular}{l@{}}%
+ \ifx\@course\@empty\else\@course\tabularnewline\fi%
+ \ifx\@discipline\@empty\else\@discipline\tabularnewline\fi%
+ \textsf{\textbf{\ignorespaces##1}}\tabularnewline%
+ \ifx\@matriculationnumber\@empty\else%
+ \@matriculationnumber\tabularnewline%
+ \fi%
+ \ifx\@matriculationyear\@empty\else%
+ \@matriculationyear\tabularnewline%
+ \fi%
+ \end{tabular}%
+% \end{macrocode}
+% Sollte ein weiterer Autor folgen, wird \cs{tabcolsep} zusätzlich eingefügt,
+% um den Standardabstand bei Tabellen zu sichern, da die Tabelle vorher ohne
+% rechten \enquote{Rand} gesetzt wurde, um die letzte Tabelle ggf. genau bis
+% zum rechten Rand setzen zu können.
+% \begin{macrocode}
+ \tud@multiple@fields@restore{@author}%
+ \tud@multiple@@@split{##2}{\enskip\hspace{\tabcolsep}}%
+ }%
+% \end{macrocode}
+% Hier erfolgt die eigentliche Ausgabe.
+% \begin{macrocode}
+ \tud@multiple@split{@author}%
+% \end{macrocode}
+% Nach den Autoren wird der Titel über die komplette Textbreite ausgegeben.
+% Danach wird der Inhalt der Aufgabenstellung gesetzt.
+% \begin{macrocode}
+ \vskip\smallskipamount%
+ \begin{tabular}{@{}p{\tud@len@authortable}%
+ p{\dimexpr\textwidth-\tud@len@authortable-2\tabcolsep\relax}@{}}%
+ \titlename\tud@title@delimiter & \tud@RaggedRight\textsf{\textbf{\@@title}}%
+ \end{tabular}%
+ \par%
+ \endgroup%
+ \ifdim\parskip>\z@\else\vskip\topsep\fi%
+ \endgroup%
+ \noindent\ignorespaces%
+}
+% \end{macrocode}
+% \end{length}^^A \tud@len@authortable
+% \end{macro}^^A \tud@authortable@set
+%
+% \subsection{Aufgabenstellung}
+%
+% \begin{environment}{task}
+% \changes{v2.03}{2015/01/05}{Bugfix für initialen Seitenstil}^^A
+% \changes{v2.03}{2015/01/05}{Bugfix für Seitenstil im zweiseitigen Satz}^^A
+% \begin{parameter}{headline}
+% \begin{parameter}{heading}
+% \begin{parameter}{line}
+% \begin{parameter}{style}
+% Die Umgebung für die Aufgabenstellung nutzt die \env{tudpage}-Umgebung. Sie
+% wird auf einer neuen (rechten) Seite gesetzt. Es wird zu Beginn eine Tabelle
+% mit Informationen zum Autor gesetzt. Zum Abschluss werden Betreuer,
+% Hochschullehrer und ggf. Vorsitzender des Prüfungsausschusses ausgegeben.
+% \begin{macrocode}
+\newenvironment{task}[1][]{%
+% \end{macrocode}
+% Die \env{tudpage}-Umgebung wird geöffnet. Mit dem Parameter \opt{headline}
+% kann die standardmäßige Überschrift überschrieben werden.
+% \begin{macrocode}
+ \cleardoubleoddpage%
+ \let\@headline\@empty%
+ \TUD@parameter@family{tudpage}{%
+ \TUD@parameter@def{headline}{\def\@headline{##1}}%
+ \TUD@parameter@let{heading}{headline}%
+ \TUD@parameter@let{line}{headline}%
+ \TUD@parameter@def{style}{\def\tud@multiple@fields@style{##1}}%
+ \TUD@parameter@handler@default{headline}%
+ }%
+ \tudpage[pagestyle=empty,#1]%
+% \end{macrocode}
+% Zu Beginn wird als erstes die Überschrift und~-- die entsprechende Option
+% vorausgesetzt~-- im PDF einen Lesezeichen- oder auch Outline-Eintrag gesetzt.
+% \begin{macrocode}
+ \tudbookmark{\taskname}{task}%
+ \subsection*{%
+ \ifx\@headline\@empty%
+ \taskname\space%
+ \ifx\tasktext\@empty\else\ifx\@@thesis\@empty\else%
+ \ignorespaces\tasktext\space\@@thesis%
+ \fi\fi%
+ \else\@headline\fi%
+ }%
+ \tud@authortable@set%
+}{%
+% \end{macrocode}
+% Da auch Gutachter und Betreuer durch den Befehl \cs{and} getrennt werden,
+% wird dieser für die korrekte Ausgabe umdefiniert. Anschließend folgt die
+% Ausgabe in einer Tabelle, die Spalte der Bezeichner entspricht der aus dem
+% oberen Teil.
+% \begin{macrocode}
+ \def\tud@multiple@fields@output##1{%
+ \ifstr{\tud@multiple@fields@style}{table}{%
+ \def\and{%
+ \tabularnewline%
+ \ifstr{\csuse{##1othername}}{}{}{%
+ \csuse{##1othername}\tud@title@delimiter%
+ }%
+ & \def\and{\tabularnewline &}%
+ }%
+ }{%
+ \def\and{\unskip,\space\ignorespaces}%
+ }%
+ \csuse{@##1}%
+ }%
+ \removelastskip%
+ \ifdim\parskip>\z@\vskip\parskip\else\vskip\topsep\fi\medskip%
+ \begingroup%
+ \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative%
+ \begin{tabular}{@{}p{\tud@len@authortable}l@{}}%
+ \ifx\@referee\@empty\else%
+ \refereename\tud@title@delimiter & %
+ \tud@multiple@fields@output{referee}\tabularnewline[\smallskipamount]%
+ \fi%
+ \supervisorname\tud@title@delimiter & %
+ \tud@multiple@fields@output{supervisor}\tabularnewline[\smallskipamount]%
+ \issuedatetext\tud@title@delimiter & \@issuedate\tabularnewline%
+ \duedatetext\tud@title@delimiter & \@duedate\tabularnewline%
+ \end{tabular}%
+% \end{macrocode}
+% Darunter wird etwas Platz für die Unterschriften von betreuendem Professor
+% und ggf. Prüfungsausschussvorsitzenden gehalten. Auch diese beiden werden
+% in einer Tabelle ausgegeben. Die \env{tudpage}-Umgebung wird beendet, und
+% eine neue (rechte) Seite geöffnet.
+% \begin{macrocode}
+ \vskip\tud@len@signatureskip\noindent%
+ \ifx\@chairman\@empty\else%
+ \begin{tabular}{@{}l@{}}%
+ \@chairman\tabularnewline%
+ \chairmanname\tabularnewline%
+ \end{tabular}%
+ \hfill%
+ \fi%
+ \ifx\@professor\@empty\else%
+ \begin{tabular}{@{}l@{}}%
+ \@professor\tabularnewline%
+ \professorname\tabularnewline%
+ \end{tabular}%
+ \fi%
+ \par%
+ \endgroup%
+ \endtudpage%
+ \aftergroup\cleardoublepage%
+}
+% \end{macrocode}
+% \end{parameter}^^A style
+% \end{parameter}^^A line
+% \end{parameter}^^A heading
+% \end{parameter}^^A headline
+% \end{environment}^^A task
+% \begin{macro}{\taskform}
+% Dies soll die Standardform einer Aufgabenstellung sein. Im ersten Argument
+% werden kurz die Ziele motiviert und erläutert, im zweiten Argument werden im
+% besten Fall die Schwerpunkte in einer \env{itemize}-Umgebung aufgeschlüsselt.
+% \begin{macrocode}
+\newcommand\taskform[3][]{%
+ \begin{task}[#1]%
+ \ifblank{#2}{}{\minisec{\objectivesname}\smallskip#2}%
+ \ifblank{#3}{}{%
+ \minisec{\focusname}\smallskip%
+ \begin{itemize}\tud@RaggedRight%
+ #3%
+ \end{itemize}%
+ }%
+ \end{task}%
+}
+% \end{macrocode}
+% \end{macro}^^A \taskform
+%
+% \subsection{Gutachten}
+%
+% \begin{environment}{evaluation}
+% \changes{v2.03}{2015/01/05}{Bugfix für Seitenstil im zweiseitigen Satz}^^A
+% \begin{parameter}{headline}
+% \begin{parameter}{heading}
+% \begin{parameter}{line}
+% \begin{parameter}{grade}
+% Die Umgebung für das Gutachten nutzt ebenfalls die \env{tudpage}-Umgebung. Sie
+% wird auf einer neuen (rechten) Seite gesetzt. Es wird zu Beginn eine Tabelle
+% mit Informationen zum Autor gesetzt. Zum Abschluss werden Ort, Datum und
+% Gutachter ausgegeben.
+% \begin{macrocode}
+\newenvironment{evaluation}[1][]{%
+% \end{macrocode}
+% Die \env{tudpage}-Umgebung wird geöffnet. Mit dem Parameter \opt{headline}
+% kann die standardmäßige Überschrift überschrieben werden. Zu Beginn wird als
+% erstes die Überschrift und~-- die entsprechende Option vorausgesetzt~-- im
+% PDF einen Lesezeichen- oder auch Outline-Eintrag gesetzt.
+% \begin{macrocode}
+ \cleardoubleoddpage%
+ \let\@headline\@empty%
+ \TUD@parameter@family{tudpage}{%
+ \TUD@parameter@def{headline}{\def\@headline{##1}}%
+ \TUD@parameter@let{heading}{headline}%
+ \TUD@parameter@let{line}{headline}%
+ \TUD@parameter@def{grade}{\def\@grade{##1}}%
+ \TUD@parameter@handler@default{headline}%
+ }%
+ \tudpage[pagestyle=empty,#1]%
+ \tudbookmark{\evaluationname}{evaluation}%
+ \subsection*{%
+ \ifx\@headline\@empty%
+ \evaluationname\space%
+ \ifx\evaluationtext\@empty\else\ifx\@@thesis\@empty\else%
+ \ignorespaces\evaluationtext\space\@@thesis%
+ \fi\fi%
+ \else\@headline\fi%
+ }%
+ \tud@authortable@set%
+}{%
+% \end{macrocode}
+% Die gegebenen Note sowie Ort und Datum werden am Ende ggf. ausgegeben.
+% \begin{macrocode}
+ \removelastskip%
+ \ifdim\parskip>\z@\vskip\parskip\else\vskip\topsep\fi%
+ \setlength\@tempskipa{\smallskipamount}%
+ \ifx\@grade\@empty\else%
+ \vskip\@tempskipa\noindent%
+ \gradetext%
+ \setlength\@tempskipa{\bigskipamount}%
+ \fi%
+ \ifx\@date\@empty\else%
+ \vskip\@tempskipa\noindent%
+ \ifx\@place\@empty\else\@place,\nobreakspace\fi\@date%
+ \fi%
+ \vskip\tud@len@signatureskip\noindent%
+% \end{macrocode}
+% Der Befehl \cs{and} wird für einen möglichen Zweitgutachter angepasst. Das
+% Hilfsmakro \cs{@tempa} dient zur Übernahme des richtigen Bezeichners für
+% Erst- bzw. Zweitgutachter. Sollten mit \cs{referee} keine Gutachter angegeben
+% sein, so werden die angegeben Betreuer verwendet.
+% \begin{macrocode}
+ \ifx\@referee\@empty\let\@referee\@supervisor\fi%
+ \let\@tempa\refereename%
+ \def\and{%
+ \tabularnewline%
+ \@tempa%
+ \endtabular%
+ \hfill%
+ \tabular{@{}l@{}}%
+ \global\let\@tempa\refereeothername%
+ }%
+ \begin{tabular}{@{}l@{}}%
+ \@referee%
+ \tabularnewline%
+ \@tempa%
+ \end{tabular}%
+ \hfill\null%
+ \endtudpage%
+ \aftergroup\cleardoublepage%
+}
+% \end{macrocode}
+% \end{parameter}^^A grade
+% \end{parameter}^^A line
+% \end{parameter}^^A heading
+% \end{parameter}^^A headline
+% \end{environment}^^A evaluation
+% \begin{macro}{\evaluationform}
+% Dies soll die Standardform eines Gutachtens sein. Im ersten Argument wird
+% kurz die Aufgabenstellung zusammengefasst, im zweiten Argument wird der
+% Inhalt und die Struktur der Arbeit kurz beschrieben. Im dritten Argument
+% erfolgt die Bewertung, das letzte Argument beinhaltet die Note.
+% \begin{macrocode}
+\newcommand\evaluationform[5][]{%
+ \begin{evaluation}[#1]%
+ \ifblank{#2}{}{\minisec{\taskname}\smallskip#2}%
+ \ifblank{#3}{}{\minisec{\contentname}\smallskip#3}%
+ \ifblank{#4}{}{\minisec{\assessmentname}\smallskip#4}%
+ \ifblank{#5}{}{\def\@grade{#5}}%
+ \end{evaluation}%
+}
+% \end{macrocode}
+% \end{macro}^^A \evaluationform
+%
+% \subsection{Aushang}
+%
+% \begin{environment}{notice}
+% \begin{parameter}{headline}
+% \begin{parameter}{heading}
+% \begin{parameter}{line}
+% \changes{v2.03}{2015/01/05}{Bugfix für Seitenstil im zweiseitigen Satz}^^A
+% Die Umgebung für Aushänge nutzt ebenfalls die \env{tudpage}-Umgebung. Sie wird
+% auf einer neuen (rechten) Seite gesetzt. Die Überschrift wird in der
+% Voreinstellung auf den sprachabhängigen Bezeichner \cs{noticename} gesetzt,
+% welcher allerdings mit dem Parameter \opt{headline} überschrieben werden kann.
+% \begin{macrocode}
+\newenvironment{notice}[1][]{%
+ \cleardoubleoddpage%
+ \def\@headline{\noticename}%
+ \TUD@parameter@family{tudpage}{%
+ \TUD@parameter@def{headline}{\def\@headline{##1}}%
+ \TUD@parameter@let{heading}{headline}%
+ \TUD@parameter@let{line}{headline}%
+ \TUD@parameter@handler@default{headline}%
+ }%
+% \end{macrocode}
+% Es wird zu Beginn das angegebene Datum oben auf der rechten Seite ausgegeben.
+% Anschließend wird die Überschrift und der gegebene Titel gesetzt.
+% \begin{macrocode}
+ \tudpage[pagestyle=empty,cdhead=date,#1]%
+ \tudbookmark{\noticename}{notice}%
+ \ifx\@headline\@empty\else%
+ \section*{\@headline}%
+ \fi%
+}{%
+% \end{macrocode}
+% Wenn keine Kontaktperson direkt angegeben wurden, werden die Informationen der
+% angegeben Betreuer verwendet. Wenn eine Personenangabe gefunden wurde, werden
+% die Kontaktdaten ausgegeben.
+% \begin{macrocode}
+ \ifx\@contactperson\@empty\let\@contactperson\@supervisor\fi%
+ \ifx\@contactperson\@empty\else%
+ \removelastskip%
+ \ifdim\parskip>\z@\vskip\parskip\else\vskip\topsep\fi%
+ \renewcommand*\tud@split@contactperson@do[2]{%
+ \tud@multiple@fields@store{@contactperson}{##1}%
+ \tud@multiple@fields@preset{@contactperson}{}{##1}%
+ \begin{tabular}[t]{@{}l@{}}%
+ \ignorespaces##1\tabularnewline%
+ \ifx\@office\@empty\else\@office\tabularnewline\fi%
+ \ifx\@telephone\@empty\else\@telephone\tabularnewline\fi%
+ \ifx\@telefax\@empty\else\@telefax\tabularnewline\fi%
+ \ifx\@emailaddress\@empty\else\@emailaddress\tabularnewline\fi%
+ \end{tabular}%
+ \tud@multiple@fields@restore{@contactperson}%
+ \tud@multiple@@@split{##2}{\hfill}%
+ }%
+ \subsection*{\contactpersonname}%
+ \noindent\tud@multiple@split{@contactperson}\hfill\null%
+ \fi%
+ \endtudpage%
+ \aftergroup\cleardoublepage%
+}
+% \end{macrocode}
+% \end{parameter}^^A line
+% \end{parameter}^^A heading
+% \end{parameter}^^A headline
+% \end{environment}^^A notice
+% \begin{macro}{\noticeform}
+% Dies soll die Standardform eines Aushangs für eine Abschlussarbeit sein. Im
+% ersten Argument wird kurz der Inhalt zusammengefasst, im zweiten Argument
+% werden die Arbeitsschwerpunkte beschrieben.
+% \begin{macrocode}
+\newcommand\noticeform[3][]{%
+ \begin{notice}[#1]%
+ \ifblank{#2}{}{%
+ \ifx\@@title\@empty\else%
+ \minisec{\expandonce{\@@title}}\medskip%
+ \fi%
+ #2%
+ }%
+ \ifblank{#3}{}{%
+ \minisec{\focusname}\smallskip%
+ \begin{itemize}\tud@RaggedRight%
+ #3%
+ \end{itemize}%
+ }%
+ \end{notice}%
+}
+% \end{macrocode}
+% \end{macro}^^A \noticeform
+%
+% \iffalse
+%</package>
+% \fi
+%
+% \Finale
+%
+\endinput
diff --git a/macros/latex/contrib/tudscr/source/tudscr-texindy.dtx b/macros/latex/contrib/tudscr/source/tudscr-texindy.dtx
new file mode 100644
index 0000000000..a666c74ef5
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/tudscr-texindy.dtx
@@ -0,0 +1,605 @@
+% \CheckSum{491}
+% \iffalse meta-comment
+%
+% TUD-Script -- Corporate Design of Technische Universität Dresden
+% ----------------------------------------------------------------------------
+%
+% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2019
+%
+% ----------------------------------------------------------------------------
+%
+% This work may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License, version 1.3c of the license. The latest
+% version of this license is in http://www.latex-project.org/lppl.txt and
+% version 1.3c or later is part of all distributions of LaTeX 2005/12/01
+% or later and of this work. This work has the LPPL maintenance status
+% "author-maintained". The current maintainer and author of this work
+% is Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+% in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
+% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+% Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
+% oder später und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status
+% "author-maintained", wird somit allein durch den Autor verwaltet. Der
+% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: tudscr-texindy.dtx
+%<*dtx>
+% \fi
+%
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{tudscr-texindy.dtx}[2019/06/28 v2.06 TUD-Script\space%
+ (texindy style files)%
+]
+%
+% \iffalse
+\documentclass[english,ngerman,xindy]{tudscrdoc}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{tudscrfonts}
+\KOMAoptions{parskip=half-}
+\usepackage{bookmark}
+\usepackage[babel]{microtype}
+
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tudscr-texindy.dtx}
+\title{\file{\filename}}
+\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
+\date{\fileversion\nobreakspace(\filedate)}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \section{Stildateien für \texorpdfstring{\app{texindy}}{texindy}}
+%
+% Für die Dokumentationsklassen und -pakete wird zur Sortierung \app{texindy}
+% verwendet. Da das Programm die die Dateien nicht in einem |TEXPATH| nach den
+% Stildateien sucht, werden diese zur Laufzeit im Arbeitsverzeichnis erstellt.
+% Nachfolgend werden die zu erstellenden \app{texindy}-Stildateien beschrieben.
+%
+% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%
+% \begin{macro}{\@hashchar}
+% \changes{v2.05}{2016/04/25}{neu}^^A
+% Das Hash-Zeichen wird bei \cls{tudscrdoc} für die Befehlsdeklarationen in der
+% Stildatei benötigt. Damit dieses beim Erzeugen der Datei nicht als solches
+% interpretiert wird, ist dafür ein separates Makro notwendig.
+% \begin{macrocode}
+%<*doc>
+\catcode`\#=12
+\newcommand*\@hashchar{#}
+\catcode`\#=6
+%</doc>
+% \end{macrocode}
+% \end{macro}^^A \@hashchar
+%
+% \subsection{Defintion der verwendeten Umgebung}
+%
+% \begin{macro}{\tud@xdy@create}
+% \changes{v2.05}{2016/04/24}{neu}^^A
+% \begin{macro}{\tud@write@xdy}
+% \changes{v2.05}{2016/04/24}{neu}^^A
+% \begin{macro}{\if@tud@xdy@glo}
+% \changes{v2.05}{2016/04/25}{neu}^^A
+% Dies sind die Hilfsmakros für die Erzeugung der nötigen Dateien. Mit dem
+% \cs{tud@xdy@create} wird angegeben, ob die Stildatei für einen Index oder ein
+% Glossar erzeugt wird, was prinzipiell nur für die Klasse \cls{tudscrdoc}
+% notwendig ist.
+% \begin{macrocode}
+\begingroup
+%<doc>\ifdef{\tudxdyflag}{%
+\newcommand*\tud@write@xdy{}
+\newwrite\tud@write@xdy
+\newif\if@tud@xdy@glo
+\newcommand*\tud@xdy@create[2][theindex]{%
+ \IfFileExists{\@currname-#2.xdy}{}{%
+ \ifstr{#1}{theglossary}{\@tud@xdy@glotrue}{\@tud@xdy@glofalse}%
+ \openout\tud@write@xdy=\@currname-#2.xdy\relax%
+% \end{macrocode}
+% Als erstes wird Standard-\LaTeXe-Modul geladen.
+% \begin{macrocode}
+ \write\tud@write@xdy{(require "texindy.xdy")}%
+% \end{macrocode}
+%
+% \subsection{Befehle zur Gruppierung der Indexeinträge}
+%
+% \begin{macrocode}
+%<*doc>
+ \write\tud@write@xdy{%
+ (markup-index^^J%
+ \space\space:open^^J%
+ "\string\begin{#1}^^J%
+ \space\space%
+ \string\providecommand*\string\lettergroupDefault[1]{\@percentchar^^J%
+ \@spaces\string\par%
+ \string\centerline{\string\textbf{\string\textsf{Symbole}}}%
+ \string\par\@percentchar^^J%
+ \@spaces\string\nopagebreak\@percentchar^^J%
+ \space\space}\@percentchar^^J%
+ \space\space%
+ \string\providecommand*\string\lettergroup[1]{\@percentchar^^J%
+ \@spaces\string\par%
+ \string\centerline{\string\textbf{\string\textsf{\@hashchar1}}}%
+ \string\par\@percentchar^^J%
+ \@spaces\string\nopagebreak\@percentchar^^J%
+ \space\space}\@percentchar^^J%
+ \space\space\string\makeatletter\@percentchar^^J%
+ \space\space\string\scan@allowedfalse\@percentchar%
+ }%
+% \end{macrocode}
+% Für die Änderungsliste erfolgt die Gruppierung anhand der Versionsnummer. Da
+% diese auf der ersten Ebene angegeben ist (\cs{item}) muss das Ganze mit einem
+% terminierten Befehl erfolgen. Hierfür wird \cs{@lettergroup} definiert.
+% Außerdem werden mit \cs{tud@lst@def} die benötigten Befehle zur selektiven
+% Anzeige der Änderungseinträge erstellt.
+% \begin{macrocode}
+ \if@tud@xdy@glo%
+ \write\tud@write@xdy{%
+ \space\space\string\newcommand*\string\@lettergroup{}\@percentchar^^J%
+ \space\space%
+ \string\def\string\@lettergroup\@hashchar1\string\relax%
+ {\string\lettergroup{\@hashchar1}}\@percentchar^^J%
+ \space\space\string\tud@lst@def\@percentchar%
+ }%
+ \fi%
+% \end{macrocode}
+% Der Abschluss der Umgebungsdefinition.
+% \begin{macrocode}
+ \if@tud@xdy@glo%
+ \write\tud@write@xdy{%
+ "^^J%
+ \space\space:close "\string~n\string~n\string\end{#1}\string~n"^^J%
+ \space\space:hierdepth 4^^J%
+ )%
+ }%
+ \else%
+ \write\tud@write@xdy{%
+ "^^J%
+ \space\space:close "\string~n\string~n\string\end{#1}\string~n"^^J%
+ \space\space:hierdepth 3^^J%
+ )%
+ }%
+ \fi%
+%</doc>
+% \end{macrocode}
+%
+% \subsection{Defintion und Markup der Seitenzahlen}
+%
+% Leider lässt sich für Seitenzahlbereiche via |:attr| (noch) kein Markup für
+% angehängte \enquote*{f.} sowie \enquote*{ff.} einstellen. Diese würden deshalb
+% bei kursiven oder fetten Seitenzahlen trotzdem in normaler Schrift erscheinen,
+% weshalb auf die Auszeichnung folgender Seiten verzichtet wird.
+% \begin{macrocode}
+%^^A \write\tud@write@xdy{(require "ff-ranges.xdy")}%
+% \end{macrocode}
+% Bereiche mit mehr als zwei Seitenzahlen werden zusammengefasst, wobei als
+% Trennzeichen ein Halbgeviertstrich verwendet wird. Für \cls{tudscrdoc} werden
+% die Seitenzahlen beim Einbinden der einzelnen \file{.dtx}-Dateien mit einem
+% alphanumerischen Präfix versehen, wofür eine eigene |location-class| erstellt
+% wird.
+% \begin{macrocode}
+ \write\tud@write@xdy{%
+ (define-location-class^^J%
+ \space\space"arabic-page-numbers" ("arabic-numbers")%
+ \space:min-range-length 1^^J%
+ )^^J%
+%<*doc>
+ (define-alphabet "AlphaExtended"^^J%
+ \space(^^J%
+ \space\space"A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M"^^J%
+ \space\space"N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"^^J%
+ \space\space"a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m"^^J%
+ \space\space"n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"^^J%
+ \space\space"?"^^J%
+ \space)^^J%
+ )^^J%
+ (define-location-class^^J%
+ \space\space"codeline" ("AlphaExtended" :sep "-" "arabic-numbers")%
+ \space:min-range-length 2^^J%
+ )^^J%
+ (define-location-class-order ("arabic-page-numbers" "codeline"))^^J%
+%</doc>
+ (markup-range :sep "--")%
+ }%
+% \end{macrocode}
+%
+% \subsection{Ignorieren von bestimmten Anteilen bei der Sortierung}
+%
+% Alle Argumente in eckigen Klammern werden ignoriert. Dies wird bei einigen
+% Indexbefehlen genutzt, um die nicht beachteten RegExp-Regeln auszugleichen,
+% siehe den nächsten Absatz. In der Klasse \cls{tudscrdoc} werden außerdem ein
+% oder mehrere vorangestellte |@|"~Zeichen ignoriert.
+% \begin{macrocode}
+ \write\tud@write@xdy{%
+ (merge-rule "\@backslashchar[(.*)\@backslashchar]" "" :eregexp)%
+%<*doc>
+ ^^J%
+ (merge-rule%
+ \space"\string^(@+)([\string^@~n]*)"%
+ \space"\string\2\string~e\string\1"%
+ \space:eregexp :again%
+ )^^J%
+ (merge-rule%
+ \space"(.*)(@@@@)([\string^@~n]*)"%
+ \space"\string\1@@@\string\3\string~e"%
+ \space:again :eregexp%
+ )^^J%
+ (merge-rule%
+ \space"(.*)(@@@)([\string^@~n]*)"%
+ \space"\string\1@@\string\3\string~e"%
+ \space:again :eregexp%
+ )^^J%
+ (merge-rule%
+ \space"(.*)(@@)([\string^@~n]*)"%
+ \space"\string\1@\string\3\string~e"%
+ \space:eregexp :again%
+ )^^J%
+ (merge-rule%
+ \space"(.*?)(@)([\string^@~n]*)"%
+ \space"\string\1\string~b\string\3"%
+ \space:eregexp :again%
+ )%
+%</doc>
+ }%
+% \end{macrocode}
+% Innerhalb ausgewählter Auszeichnungs- und Textbefehle sollten die Befehle
+% selbst, nicht jedoch die Argumente verworfen werden. Leider lässt sich dies
+% momentan nicht umsetzen, da die manuell erstellten RegExp-Regeln durch
+% \hrfn{http://sourceforge.net/p/xindy/bugs/22/}{\app{texindy} nicht korrekt}
+% genutzt werden.
+% \begin{macrocode}
+%<*!doc>
+%^^A \write\tud@write@xdy{%
+%^^A (merge-rule "\\hologo\{(.*)\}" "/1" :eregexp)^^J%
+%^^A (merge-rule "\\texttt\{(.*)\}" "/1" :eregexp)^^J%
+%^^A (merge-rule "\\textsbn\{(.*)\}" "/1" :eregexp)^^J%
+%^^A (merge-rule "\\textsbs\{(.*)\}" "/1" :eregexp)^^J%
+%^^A }%
+%</!doc>
+% \end{macrocode}
+%
+% \subsection{Markup der einzelnen Einträge}
+%
+% Für die Änderungsliste im Handbuch werden Untereinträge bis zur vierten Ebene
+% unterstützt.
+% \begin{macrocode}
+%<*!doc&class>
+ \write\tud@write@xdy{%
+ (markup-indexentry :open "~n \string\subsubsubitem " :depth 3)%
+ }%
+%</!doc&class>
+% \end{macrocode}
+% Für die Änderungsliste von \cls{tudscrdoc} erfolgt die Gruppierung anhand der
+% angegebenen Versionsnummer. Das bedeutet, das das Markup für die eigentliche
+% |letter-group| unterdrückt und die erste Ebene dafür verwendet wird.
+% \begin{macrocode}
+%<*doc>
+ \if@tud@xdy@glo%
+ \write\tud@write@xdy{%
+ (markup-letter-group%
+ \space:open-head "\string~n\space\space\string\@gobble{"%
+ \space:close-head "}"%
+ )^^J%
+% \end{macrocode}
+% Leider gibt es für die Eintragsebenen keine Schlüssel |open-head| und
+% |close-head|, weshalb für die Änderungsliste etwas getrickst werden muss.
+% Zwischen Einträgen der ersten Ebene soll äquivalent zu |letter-group| etwas
+% Abstand eingefügt werden.
+% \begin{macrocode}
+ (markup-indexentry-list%
+ \space:sep "\string~n\string~n\space\space\string\indexspace\string~n"%
+ \space:depth 0%
+ )^^J%
+% \end{macrocode}
+% Da jeder Eintrag in der Änderungsliste aus mindestens drei Ebenen besteht,
+% wird vor der ersten Ebene der Beginn des Markupbefehls gesetzt\dots
+% \begin{macrocode}
+ (markup-indexentry\@spaces\space\space%
+ :open "\string~n\space\space\string\@lettergroup\space"\space:depth 0%
+ )^^J%
+% \end{macrocode}
+% \dots und vor Beginn der zweiten Ebene mit \cs{relax} terminiert.
+% \begin{macrocode}
+ (markup-indexentry-list :open "\string\relax" :depth 1)^^J%
+% \end{macrocode}
+% Anschließend werden die zweite sowie die dritte Ebene mit \cs{item} und
+% \cs{subitem} ausgezeichnet.
+% \begin{macrocode}
+ (markup-indexentry\@spaces\space\space%
+ :open "\string~n\space\space\string\item\space" :depth 1%
+ )^^J%
+ (markup-indexentry-list :open "\string\efill" :depth 2)^^J%
+ (markup-indexentry\@spaces\space\space%
+ :open "\string~n\@spaces\string\subitem\space" :depth 2%
+ )^^J%
+% \end{macrocode}
+% Im Implemetierungsteil soll eine einzelne Änderungsnotiz für einen Eintrag
+% direkt danach ausgegeben werden. Exisitieren für diesen jedoch mehrere
+% Anmerkungen, so sollen diese in der nächsten Ebene ausgegeben werden. Da die
+% Anzahl aller Anmerkungen zu einem einzelnen Eintrag zu Beginn noch unbekannt
+% ist, werden alle dazugehörigen Änderungsnotizen zunächst mit \cs{tud@lst@add}
+% in der~-- zuvor mit dem Makro \cs{tud@lst@init} initialisierten~-- Liste
+% \cs{tud@lst@values} gesammelt und diese am Ende des jeweiligen Eintrags durch
+% \cs{tud@lst@process} ausgewertet. Sollte eine weitere Unterebene exisitieren,
+% werden entsprechend die Makros \cs{tud@lst@@init}, \cs{tud@lst@@values} und
+% \cs{tud@lst@@add} sowie \cs{tud@lst@@process} verwendet.
+% \begin{macrocode}
+ (markup-indexentry-list^^J%
+ \space\space:open\space\space"\string\tud@lst@init"^^J%
+ \space\space:close "\string~n \@spaces\space\string\tud@lst@process"^^J%
+ \space\space:depth 3^^J%
+ )^^J%
+ (markup-indexentry^^J%
+ \space\space:open%
+ \space\space"\string~n\@spaces\space\space\string\tud@lst@add{"^^J%
+ \space\space:close "}"^^J%
+ \space\space:depth 3^^J%
+ )^^J%
+ (markup-indexentry-list^^J%
+ \space\space:close "\string~n\@spaces\@spaces\string\tud@lst@@process{"^^J%
+ \space\space:open\space\space"}\string\tud@lst@@init"^^J%
+ \space\space:depth 4^^J%
+ )^^J%
+ (markup-indexentry^^J%
+ \space\space:open%
+ \space\space"\string~n\@spaces\@spaces\string\tud@lst@@add{"^^J%
+ \space\space:close "}"^^J%
+ \space\space:depth 4^^J%
+ )%
+ }%
+% \end{macrocode}
+% Für den Index aller Eintragstypen ist nur auf zu leere \cs{hbox} zu achten.
+% \begin{macrocode}
+ \else%
+ \write\tud@write@xdy{%
+ (markup-indexentry-list :open "\string\efil" :depth 1)%
+ }%
+ \fi%
+%</doc>
+% \end{macrocode}
+%
+% \subsection{Markup des Füllbereichs zwischen Eintrag und Seitenzahlen}
+%
+% Punkte zwischen Eintrag und Seitenzahl. Das schließende \cs{relax} wird für
+% die smarte Definition des Befehls \cs{cleversee} benötigt, welcher nach den
+% beiden obligatorischen Argument die nachfolgenden Seitenzahlen sucht und
+% dabei durch \cs{relax} begrenzt wird. Für die Klasse \cls{tudscrdoc} wird in
+% der Änderungsliste der Hyperlink für die Seitenzahl respektive die Codezeile
+% direkt erzeugt.
+% \begin{macrocode}
+ \write\tud@write@xdy{%
+ (markup-locclass-list%
+%<!doc> \space:open "\string\,\string\dotfill\string\,"%
+%<doc> \space:open "\string\pfill\space"%
+ \space:close "\string\relax"%
+ \space:sep ",\space"%
+ )%
+ }%
+% \end{macrocode}
+%
+% \subsection{Attribute für Einträge}
+%
+% Es werden für Handbuch und Tutorials die Attribute \emph{declare} mit der
+% Abkürzung~\emph{!} sowie \emph{important} mit der Abkürzung~\emph{?} und
+% \emph{default} definiert, welche hierarchisch gleichgestellt sind.
+%
+% \iffalse
+%<*!doc>
+% \fi
+%
+% \begin{macrocode}
+ \write\tud@write@xdy{%
+ (define-attributes (("declare" "!" "important" "?" "default")))^^J%
+% \end{macrocode}
+% Eine Alternative wäre, diese in der Hierarchie zu unterscheiden, allerdings
+% war eine Bildung von zufriedenstellenden Seitenbereichen dabei nicht möglich
+% und wurde deshalb verworfen.
+% \begin{macrocode}
+%^^A (markup-attribute-group-list :sep ", ")^^J%
+%^^A (define-attributes (("declare" "!") ("important" "?")("default")))^^J%
+% \end{macrocode}
+% Einträge, die als wichtig oder als Deklaration festgelegt wurden, könnten
+% auch für normale Indexeinträge zur Bereichsbildung verwendet werden.
+% Allerdings führt dies auch zur Erzeugung redundanter Einträge, falls es sich
+% bei den Sondereinträgen bereits um einen Seitenbereich handelt.
+% \begin{macrocode}
+%^^A (merge-to "declare" "default")^^J%
+%^^A (merge-to "!" "default")^^J%
+%^^A (merge-to "important" "default")^^J%
+%^^A (merge-to "?" "default")^^J%
+% \end{macrocode}
+% Hier erfolgt die Definition der Auszeichnugen der Attribute. Deklarationen
+% werden fett gedruckt, wichtige Einträge erscheinen kursiv. Außerdem wird ein
+% entsprechnder Link auf die Seite eingefügt.
+% \begin{macrocode}
+ (markup-locref%
+ \space:attr "declare"\space\space%
+ \space:open "\string\textbf{\string\hyperpage{"%
+ \space:close "}}"%
+ )^^J%
+ (markup-locref%
+ \space:attr "!"\@spaces\@spaces%
+ \space:open "\string\textbf{\string\hyperpage{"%
+ \space:close "}}"%
+ )^^J%
+ (markup-locref%
+ \space:attr "important"%
+ \space:open "\string\textsl{\string\hyperpage{"%
+ \space:close "}}"%
+ )^^J%
+ (markup-locref%
+ \space:attr "?"\@spaces\@spaces%
+ \space:open "\string\textsl{\string\hyperpage{"%
+ \space:close "}}"%
+ )^^J%
+ (markup-locref%
+ \space:attr "default"\space\space%
+ \space:open "\string\hyperpage{"\@spaces\@spaces%
+ \space:close "}"%
+ )%
+ }%
+% \end{macrocode}
+%
+% \iffalse
+%</!doc>
+%<*doc>
+% \fi
+%
+% Für \cls{tudscrdoc} erfolgen die Auszeichnungen für den Index im Stile von
+% \pkg{doc} mit den Attribute \emph{main} und \emph{usage}, wobei hier eine
+% Hierarchie verwendet wird. Es werden Einträge mit dem Attribut \emph{usage}
+% vor \emph{main} und \emph{default} aufgeführt.
+% \begin{macrocode}
+ \write\tud@write@xdy{%
+ (markup-attribute-group-list :sep ", ")^^J%
+ (define-attributes (("usage") ("main") ("default")))^^J%
+ (markup-locref :attr "usage"%
+ \space:open "\string\usage{"\space:close "}"%
+ )^^J%
+ (markup-locref :attr "main"%
+ \space\space:open "\string\main{"\space\space:close "}"%
+ )%
+ }%
+% \end{macrocode}
+%
+% \iffalse
+%</doc>
+%<*!doc>
+% \fi
+%
+% \subsection{Querverweise im Index}
+%
+% Im Handbuch prüfen, mit \verb=|see=\marg{Eintrag} erzeugte Querverweise im
+% Index, ob außerdem noch Seitenzahlangaben existent sind.
+% \begin{macrocode}
+ \write\tud@write@xdy{%
+ (markup-crossref-list :class "see"^^J%
+ \space\space:open "\string\cleversee{" \@spaces:sep "; " :close "}"^^J%
+ )^^J%
+ (markup-crossref-list :class "seealso"^^J%
+ \space\space:open "\string\cleverseealso{" :sep "; " :close "}"^^J%
+ )%
+ }%
+% \end{macrocode}
+%
+% \iffalse
+%<*class>
+% \fi
+%
+% Um Querverweise ohne Prüfung des Zieleintrags erzeugen zu können, wird der
+% passende Typ |seeunverified| definiert.
+% \begin{macrocode}
+ \write\tud@write@xdy{%
+ (define-crossref-class "seeunverified" :unverified)^^J%
+ (markup-crossref-list :class "seeunverified"^^J%
+ \space\space:open "\string\cleversee{" \@spaces:sep "; " :close "}"^^J%
+ )%
+ }%
+% \end{macrocode}
+% Dieser Querverweistyp wird speziell im allgemeinen Index verwendet, um auf
+% einen Spezialindex zu verweisen. Dabei dient |:unverified| zum Unterdrücken
+% von Warnungen durch \app{texindy} aufgrund eines fehlenden Ziels für den
+% Querverweis.
+% \begin{macrocode}
+ \write\tud@write@xdy{%
+ (define-crossref-class "seeidx" :unverified)^^J%
+ (markup-crossref-list :class "seeidx"^^J%
+ \space\space:open "\string\seeidx{"\@spaces\@spaces:sep "; "%
+ \space:close "}{}"^^J%
+ )%
+ }%
+% \end{macrocode}
+% Damit die Makros \cs{cleversee} und \cs{cleverseealso} sowie \cs{seeidx} auf
+% nachfolgende Seitenzahlen suchen können, müssen diese vor selbigen im Index
+% aufgerufen werden.
+% \begin{macrocode}
+ \write\tud@write@xdy{%
+ (define-location-class-order^^J%
+ \space\space(^^J%
+ \@spaces"see" "seealso" "seeidx" "seeunverified"^^J%
+ \@spaces"roman-page-numbers" "arabic-page-numbers" "alpha-page-numbers"^^J%
+ \@spaces"Roman-page-numbers" "Alpha-page-numbers"^^J%
+ \space\space)^^J%
+ )%
+ }%
+% \end{macrocode}
+%
+% \iffalse
+%</class>
+% \fi
+%
+% Werden mit \verb=|see=\marg{Eintrag!Untereintrag} gezielte Querverweise auf
+% Untereinträge im Index erstellt, so werden diese nicht standardmäßig mit
+% einem Komma sondern mit \enquote*{\,\textbar\,} getrennt.
+% \begin{macrocode}
+ \write\tud@write@xdy{%
+ (markup-crossref-layer-list :class "see"%
+ \@spaces\space:sep "\string\,\string\textbar\string\,"%
+ )^^J%
+ (markup-crossref-layer-list :class "seealso"%
+ \space:sep "\string\,\string\textbar\string\,"%
+ )%
+ }%
+% \end{macrocode}
+%
+% \iffalse
+%</!doc>
+% \fi
+%
+% \subsection{Erzeugen der Stildateien}
+%
+% Damit ist die \app{texindy}-Stildatei fertig und kann mit \cs{tud@xdy@create}
+% erstellt werden.
+% \begin{macrocode}
+ \closeout\tud@write@xdy%
+ }%
+}
+\tud@xdy@create{ind}
+%<doc>\tud@xdy@create[theglossary]{gls}
+%<doc>}{}
+\endgroup
+% \end{macrocode}
+% \end{macro}^^A \if@tud@xdy@glo
+% \end{macro}^^A \tud@write@xdy
+% \end{macro}^^A \tud@xdy@create
+%
+% \Finale
+%
+\endinput
diff --git a/macros/latex/contrib/tudscr/source/tudscr-title.dtx b/macros/latex/contrib/tudscr/source/tudscr-title.dtx
new file mode 100644
index 0000000000..b6ec69ff30
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/tudscr-title.dtx
@@ -0,0 +1,1604 @@
+% \CheckSum{1406}
+% \iffalse meta-comment
+%
+% TUD-Script -- Corporate Design of Technische Universität Dresden
+% ----------------------------------------------------------------------------
+%
+% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2019
+%
+% ----------------------------------------------------------------------------
+%
+% This work may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License, version 1.3c of the license. The latest
+% version of this license is in http://www.latex-project.org/lppl.txt and
+% version 1.3c or later is part of all distributions of LaTeX 2005/12/01
+% or later and of this work. This work has the LPPL maintenance status
+% "author-maintained". The current maintainer and author of this work
+% is Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+% in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
+% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+% Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
+% oder später und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status
+% "author-maintained", wird somit allein durch den Autor verwaltet. Der
+% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: tudscr-title.dtx
+%<*dtx>
+% \fi
+%
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{tudscr-title.dtx}[2019/08/20 v2.06c TUD-Script\space%
+ (title)%
+]
+%
+% \iffalse
+\documentclass[english,ngerman,xindy]{tudscrdoc}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{tudscrfonts}
+\KOMAoptions{parskip=half-}
+\usepackage{bookmark}
+\usepackage[babel]{microtype}
+
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tudscr-title.dtx}
+\title{\file{\filename}}
+\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
+\date{\fileversion\nobreakspace(\filedate)}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.02}{2014/06/23}{Paket \pkg{titlepage} nicht weiter unterstützt}^^A
+% \changes{v2.05}{2015/07/13}{Titel für Poster}^^A
+%
+% \section{Titelei für die \TUDScript-Klassen}
+%
+% Zusätzlich zu den \KOMAScript-Varianten werde für die \TUDScript-Klassen
+% spezielle, im \TUDCD gehaltene Ausführungen von Titelseite und Titelkopf
+% bereitgestellt. Zusätzlich gibt es auch eine Umschlagsseite (Cover), welche
+% in beiden Gestaltungsvarianten genutzt werden kann.
+%
+% Für Titelseite und Titelkopf werden durch \TUDScript eine monochrome Version,
+% eine Version mit leichtem Farbeinsatz und eine durchweg farbige Version im
+% \TUDCD bereitgestellt. Dabei wird auch das Aussehen und die Position des
+% Titels analog zu den Überschriften auf Teile- und Kapitelseiten festgelegt.
+%
+% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%
+% \iffalse
+%<*class&body>
+% \fi
+%
+% \subsection{Optionen und Schriftelemente für die Titelei}
+%
+% \iffalse
+%</class&body>
+%<*class&option>
+%<*book|report|article>
+% \fi
+%
+% \begin{option}{subjectthesis}
+% \begin{macro}{\if@tud@subjectthesis}
+% Die alte \cls{tudbook}-Klasse hat den Typ der Arbeit in der Betreffzeile des
+% Titels gesetzt. Um dieses Verhalten nachbilden zu können, wird diese Option
+% zur Verfügung gestellt.
+% \begin{macrocode}
+\newif\if@tud@subjectthesis
+\TUD@key{subjectthesis}[true]{%
+ \TUD@set@ifkey{subjectthesis}{@tud@subjectthesis}{#1}%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@subjectthesis
+% \end{option}^^A subjectthesis
+% \begin{option}{titlesignature}
+% \changes{v2.06}{2018/08/21}{neu}^^A
+% \begin{macro}{\if@tud@titlesignature}
+% \changes{v2.06}{2018/08/21}{neu}^^A
+% Von einigen Fakultäten wird eine Unterschrift der Autoren auf der Titelseite
+% verlangt. Diese Option dient zum Aktivieren dieser Unterschriftenzeile am
+% Ende der Titelseite.
+% \begin{macrocode}
+\newif\if@tud@titlesignature
+\TUD@key{titlesignature}[true]{%
+ \TUD@set@ifkey{titlesignature}{@tud@titlesignature}{#1}%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@titlesignature
+% \end{option}^^A titlesignature
+%
+% \iffalse
+%</book|report|article>
+%<*poster>
+% \fi
+%
+% \begin{option}{titlepage}
+% \begin{macro}{\tud@titlepage@deactivate}
+% Für Poster gibt es keine separate Titelseite sondern nur einen Titelkopf.
+% Falls die falsche Einstellung gewählt ist, wird diese deaktiviert und eine
+% Warnung ausgegeben.
+% \begin{macrocode}
+\DefineFamilyMember{KOMA}
+\DefineFamilyKey{KOMA}{titlepage}[true]{%
+ \TUD@set@numkey{titlepage}{@tempa}{\TUD@bool@numkey,{firstiscover}{2}}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \AtEndOfFamilyOptions{\tud@titlepage@deactivate}%
+ \fi%
+}
+\newcommand*\tud@titlepage@deactivate{%
+ \if@titlepage%
+ \KOMAoptions{titlepage=false}%
+ \ClassWarning{\TUD@Class@Name}{%
+ The class `\TUD@Class@Name' can't be used with\MessageBreak%
+ activated titlepage option. It will be enforced to\MessageBreak%
+ `titlepage=false'%
+ }%
+ \renewcommand*\tud@titlepage@deactivate{%
+ \if@titlepage\KOMAoptions{titlepage=false}\fi%
+ }%
+ \fi%
+}
+\AtBeginDocument{\tud@titlepage@deactivate}
+% \end{macrocode}
+% \end{macro}^^A \tud@titlepage@deactivate
+% \end{option}^^A titlepage
+%
+% \iffalse
+%</poster>
+%</class&option>
+%<*class&body>
+% \fi
+%
+% \begin{KOMAfont}{thesis}
+% \begin{KOMAfont}{titlepage}
+% \changes{v2.01}{2014/04/24}{Explizite Wahl der genutzten Schriftstärke}^^A
+% \changes{v2.02}{2014/08/29}{Anpassungen für \pkg{fontspec}}^^A
+% Diese Font-Elemente werden auf der Titelseite verwendet. \opt{thesis}, um den
+% Typ der Arbeit und ggf. den zu erlangenden akademischen Grad zu setzen.
+% Allerdings kommt Letzteres nur zum Tragen, wenn die Option \opt{subjectthesis}
+% deaktiviert ist. Es wird die gleiche Schrift wie für den Titel verwendet,
+% allerdings etwas kleiner. \opt{titlepage} für alle Zusatzinformationen wie
+% Autor, Datum etc.
+% \begin{macrocode}
+%<*book|report|article>
+\newkomafont{thesis}{%
+ \usekomafont{title}%
+ \tud@thesis@fontsize%
+}
+%</book|report|article>
+\newkomafont{titlepage}{%
+ \raggedtitle%
+ \sffamily%
+ \mdseries%
+ \usesizeofkomafont{subsection}%
+ \tud@color{\tud@title@fontcolor}%
+}
+% \end{macrocode}
+% \end{KOMAfont}^^A titlepage
+% \end{KOMAfont}^^A thesis
+%
+% \subsection{Titelseite und Titelkopf}
+% \subsubsection{Parameter für Titelseite und Titelkopf}
+%
+% \begin{macro}{\thanks}
+% \begin{macro}{\footnotemark}
+% Die Befehle \cs{thanks} und \cs{footnotemark} werden mit \cs{robustify}
+% behandelt, um die Makros vor dem Expandieren zu schützen. Dies ist z.\,B. für
+% \cs{tud@multiple@split} aber auch für weitere Felder auf dem Titel nötig.
+% \begin{macrocode}
+\robustify{\thanks}
+\robustify{\footnotemark}
+% \end{macrocode}
+% \end{macro}^^A \footnotemark
+% \end{macro}^^A \thanks
+% \begin{macro}{\tud@maketitle}
+% \changes{v2.01a}{2014/06/03}{Fehler bei Nutzung von \cs{subtitle} behoben}^^A
+% \changes{v2.02}{2014/06/23}{\val{firstiscover} wird als Wert für die Option
+% \opt{titlepage} unterstützt}^^A
+% \changes{v2.02}{2014/07/19}{Im zweispaltigen Satz wird für den Titelkopf
+% \cs{tud@title@twocolumn} verwendet}^^A
+% \changes{v2.02}{2014/09/05}{Titelseite mit \cs{tud@maketitle@page}}^^A
+% \changes{v2.06}{2018/08/16}{Unterstützung von \cs{frontispiece}}^^A
+% \changes{v2.06}{2018/08/21}{\cs{emailaddress} für Autorangaben}^^A
+% \changes{v2.06}{2018/08/21}{Unterschriftenfeld für Autoren}^^A
+% \begin{macro}{\tud@title@pagenumber}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% \begin{parameter}{cdtitle}
+% \changes{v2.03}{2015/01/12}{neu}^^A
+% \begin{parameter}{cd}
+% \changes{v2.03}{2015/01/12}{neu}^^A
+% \begin{parameter}{pagenumber}
+% \changes{v2.02}{2014/09/05}{neu}^^A
+% Bei der entsprechend gewählten Layoutoption, wird eine neue Titelseite im \CD
+% gesetzt. Damit auf das Standardverhalten von \KOMAScript{} zurückgestellt
+% werden kann, wird der ursprüngliche \cs{maketitle}-Befehl bei der Abarbeitung
+% der Layoutoptionen gesichert (siehe \cs{tud@cd@process}) und kann ggf.
+% wiederhergestellt bzw. mit \cs{tud@cs@use} verwendet werden. Ist das Layout
+% des \CDs gefordert wird entweder mit \cs{tud@maketitle@page} eine Titelseite
+% gesetzt~-- wobei sich diese in ihrer Struktur am originalen \cs{maketitle}
+% orientiert~-- oder das Titelkopflayout wird angepasst.
+% \begin{macrocode}
+\newcommand*\tud@title@pagenumber{}
+\let\tud@title@pagenumber\relax
+\newcommand*\tud@maketitle[1][]{%
+ \begingroup%
+ \cleardoublepage%
+% \end{macrocode}
+% Das optionale Argument wird für das Setzen der Parameter verwendet.
+% \begin{macrocode}
+ \TUD@parameter@set{title}{#1}%
+% \end{macrocode}
+% Ist das \CD für den Titel deaktiviert, wird mit \cs{tud@cs@use} der originale
+% \KOMAScript-Befehl \cs{maketitle} aufgerufen. Wird die erste Seite als Cover
+% gesetzt, werden mit \cs{tud@cover@fixmargins} ggf. die Ränder an das gegebene
+% Layout von \pkg{geometry} angepasst.
+% \begin{macrocode}
+ \ifcase\tud@cd@title@num\relax% false
+ \if@titlepageiscoverpage%
+ \tud@cover@fixmargins%
+ \fi%
+ \ifx\tud@title@pagenumber\relax%
+ \tud@cs@use{maketitle}%
+ \else%
+ \tud@cs@use{maketitle}[\tud@title@pagenumber]%
+ \fi%
+ \tud@if@tudheadings{\currentpagestyle}{%
+ \ifstr{\titlepagestyle}{empty}{\thispagestyle{empty.tudheadings}}{}%
+ }{}%
+% \end{macrocode}
+% Für die \TUDScript-Klassen gibt es für doe Titleseite sowie den Titelkopf
+% separate Befehle. Sollte keine explizite Auswahl der Schriften erfolgt sein,
+% so werden die \CD-Schriften aktiviert.
+% \begin{macrocode}
+ \else% !false
+ \if@tud@parameter@ps@font@set\else%
+ \if@tud@cdfont@active\else%
+ \if@tud@cdfont@heavy%
+ \TUDoptions{cdfont=heavy}%
+ \else%
+ \TUDoptions{cdfont=true}%
+ \fi%
+ \fi%
+ \fi%
+%<*book|report|article>
+ \if@titlepage%
+ \tud@maketitle@page%
+ \else%
+%</book|report|article>
+ \tud@maketitle@inpage%
+%<*book|report|article>
+ \fi%
+%</book|report|article>
+ \fi%
+ \endgroup%
+ \setcounter{footnote}{0}%
+ \global\let\and\relax%
+}
+% \end{macrocode}
+% Die einzelnen Parameter dienen zur Einstellung der Titelseite und entsprechen
+% in ihrem Verhalten den gleichnamigen Klassenoptionen.
+% \begin{macrocode}
+\TUD@parameter@family{title}{%
+%<*book|report|article>
+ \TUD@parameter@def{titlepage}[true]{\KOMAoption{titlepage}{#1}}%
+ \TUD@parameter@def{titlesignature}[true]{\TUDoption{titlesignature}{#1}}%
+%</book|report|article>
+ \TUD@parameter@def{pagenumber}{\def\tud@title@pagenumber{#1}}%
+ \TUD@parameter@def{cdtitle}[true]{\TUDoption{cdtitle}{#1}}%
+ \TUD@parameter@let{cd}{cdtitle}%
+ \TUD@parameter@def{cdgeometry}[true]{\TUDoption{cdgeometry}{#1}}%
+% \end{macrocode}
+% Mit \cs{TUD@parameter@ps@def} werden alle verfügbaren Parameter für
+% die Kopf- und Fußzeilen definiert.
+% \begin{macrocode}
+ \TUD@parameter@ps@def{#1}%
+% \end{macrocode}
+% Für den Fall, dass ein Wert nicht in der Schlüssel"=Wert"=Notation angegeben
+% wurde, wird versucht, das gegebene Argument als Seitenzahl zu verwenden.
+% \begin{macrocode}
+ \TUD@parameter@handler@value{pagenumber}%
+}
+% \end{macrocode}
+% \end{parameter}^^A pagenumber
+% \end{parameter}^^A cd
+% \end{parameter}^^A cdtitle
+% \end{macro}^^A \tud@title@pagenumber
+% \end{macro}^^A \tud@maketitle
+% \begin{macro}{\maketitle}
+% \begin{environment}{titlepage}
+% Der originale Befehl wird gesichert und danach überschrieben.
+% \begin{macrocode}
+\tud@cs@store{maketitle}
+\let\maketitle\tud@maketitle
+% \end{macrocode}
+% Abschließend wird dafür Sorge getragen, dass bei einem aktivierten Seitenstil
+% aus der \pgs{tudheadings}-Reihe der Titel ebenfalls in diesem gesetzt wird,
+% auch wenn das Layout des \CDs selber nicht aktiv ist.
+% \begin{macrocode}
+\patchcmd{\titlepage}{\thispagestyle{empty}}{%
+ \tud@if@tudheadings{\currentpagestyle}{%
+ \thispagestyle{empty.tudheadings}%
+ }{%
+ \thispagestyle{empty}%
+ }%
+}{}{\tud@patch@wrn{titlepage}}
+% \end{macrocode}
+% \end{environment}^^A titlepage
+% \end{macro}^^A \maketitle
+%
+% \iffalse
+%<*book|report|article>
+% \fi
+%
+% \subsubsection{Die Definition der Titelseite}
+%
+% \begin{macro}{\tud@maketitle@page}
+% \changes{v2.02}{2014/09/05}{neu}^^A
+% \begin{macro}{\tud@titleback}
+% Bei der entsprechend gewählten Layoutoption, wird eine neue Titelseite im \CD
+% gesetzt. Damit auf das Standardverhalten von \KOMAScript{} zurückgestellt
+% werden kann, wird der standardmäßige \cs{maketitle}-Befehl nur wenn notwendig
+% überschrieben (siehe \cs{tud@cd@process}) und kann ggf. wiederhergestellt
+% werden. Der Befehl selbst orientiert sich dabei in seiner Struktur an dem
+% originalen \cs{maketitle}. Für die ggf. farbige Ausgabe der Titelrückseite
+% wird das Hilfmakro \cs{tud@titleback} definiert. Eine Seitenzahl für den
+% Titel kann mit \cs{tud@title@pagenumber} angegeben werden.
+% \begin{macrocode}
+\newcommand*\tud@titleback{}
+\newcommand*\tud@maketitle@page{%
+% \end{macrocode}
+% Es wird durch die \KOMAScript-Option \opt{titlepage} unterschieden, ob eine
+% Titelseite oder aber ein Titelkopf gesetzt werden soll. In Abhängigkeit davon
+% werden Farben für die Schriften und den Seitenhintergrund festgelegt. Hierfür
+% wird die entsprechende Layoutoption ausgewertet und entsprechend dieser die
+% Werte belegt.
+% \begin{macrocode}
+ \renewcommand*\tud@title@fontcolor{}%
+ \ifcase\tud@cd@title@num\relax\or\or% litecolor
+ \renewcommand*\tud@title@fontcolor{HKS41}%
+ \or% barcolor
+ \renewcommand*\tud@title@fontcolor{HKS41}%
+ \or% bicolor
+ \renewcommand*\tud@title@fontcolor{HKS41}%
+ \or% color
+ \renewcommand*\tud@title@fontcolor{HKS41!30}%
+ \or% full
+ \renewcommand*\tud@title@fontcolor{HKS41!30}%
+ \fi%
+% \end{macrocode}
+% Die Titelseite mit unterschiedlich Varianten der farbigen Ausprägung.
+% \begin{macrocode}
+ \begin{titlepage}%
+ \tud@cd@specialpage@set{title}%
+% \end{macrocode}
+% Dieser Teil entspricht der Standarddefinition. Für das Setzen des Covers ist
+% ein Großteil der Einstellungen irrelevant und wird übersrpungen.
+% \begin{macrocode}
+ \ifx\tud@title@pagenumber\relax\else%
+ \setcounter{page}{\tud@title@pagenumber}%
+ \fi%
+% \end{macrocode}
+% Dieser Teil entspricht der Standarddefinition. Für das Setzen des Covers ist
+% ein Großteil der Einstellungen irrelevant und wird übersrpungen.
+% \begin{macrocode}
+ \if@tud@coverpage\else%
+ \addtokomafont{footnote}{\sffamily}%
+ \let\footnotesize\small%
+ \let\footnoterule\relax%
+ \let\footnote\thanks%
+ \renewcommand*\thefootnote{\@fnsymbol\c@footnote}%
+ \let\@oldmakefnmark\@makefnmark%
+ \renewcommand*\@makefnmark{\rlap\@oldmakefnmark}%
+% \end{macrocode}
+% Das Paket \pkg{hyperref} definiert im Normalfall die Fußnoten so um, dass es
+% anklickbare Links erzeugt. Damit dies auf der Titelseite zu ungewollten
+% Effekten führt, werden die Hyperlinks hier deaktiviert. Leider macht dies
+% \pkg{hyperref} direkt beim Laden. Da die \TUDScript-Klassen aber nun mal zwei
+% unterschiedliche Titel bereitstellen und die Möglichkeit bestehen soll, dass
+% Layout per später Optionswahl noch zu ändern, muss der interne Code aus
+% \pkg{hyperref} hier noch einmal für den TUD-Titel aufgerufen werden.
+% \begin{macrocode}
+ \tud@x@hyperref@realfootnotes%
+% \end{macrocode}
+% Die Option für eine Umschlagseite \opt{titlepage}|=|\val{firstiscover} wird
+% im Gegensatz zu den \KOMAScript-Klassen nur für einen optionalen Schmutztitel
+% \cs{extratitle} und nicht für die eigentliche Titelseite unterstützt. Für
+% dieses Unterfangen ist bei \TUDScript der Befehl \cs{makecover} mit den
+% dazugehörigen Parametern zu nutzen.
+% \begin{macrocode}
+ \ifx\@extratitle\@empty%
+ \if@titlepageiscoverpage%
+ \ClassWarning{\TUD@Class@Name}{%
+ Using option `titlepage=firstiscover' is only\MessageBreak%
+ possible with an extra title. Alternatively you can\MessageBreak%
+ create a cover with `\string\makecover'%
+ }%
+ \@titlepageiscoverpagefalse%
+ \fi%
+ \ifx\@frontispiece\@empty\else%
+ \if@twoside\null\fi%
+ \fi%
+ \else%
+% \end{macrocode}
+% Der Teil ist aus den \KOMAScript-Klassen übernommen, damit werden die
+% Seitenränder für ein Cover festgelegt.
+% \begin{macrocode}
+ \if@titlepageiscoverpage%
+ \edef\titlepage@restore{%
+ \noexpand\endgroup%
+ \noexpand\global\noexpand\@colht\the\@colht%
+ \noexpand\global\noexpand\@colroom\the\@colroom%
+ \noexpand\global\vsize\the\vsize%
+ \noexpand\global\noexpand\@titlepageiscoverpagefalse%
+ \noexpand\let\noexpand\titlepage@restore\noexpand\relax%
+ }%
+ \begingroup%
+ \tud@cover@setmargins%
+ \else%
+ \let\titlepage@restore\relax%
+ \fi%
+ \noindent\@extratitle%
+ \fi%
+ \next@tpage%
+ \ifx\@frontispiece\@empty\else%
+ \noindent\@frontispiece%
+ \fi%
+ \next@tdpage%
+ \fi%
+% \end{macrocode}
+% Das ganze Layout wird vertikal so verschoben, dass der Titel auf der gleichen
+% Höhe steht wie die Überschriften auf Teil- und Kapitelseiten.
+% \begin{macrocode}
+ \tud@cd@headstartvskip%
+ \TUD@deprecated@lengthcs{pageheadingsvskip}%
+ \vspace*{\tud@dim@pageheadingsvskip}%
+ \tud@cd@vphantom%
+ \setparsizes{\z@}{\z@}{\z@\@plus1fil}\par@updaterelative%
+% \end{macrocode}
+% Damit die Farbeinstellungen der Schriften lokal begrenzt bleiben, wird dieser
+% Teil des Titels in einer Gruppe gesetzt.
+% \begin{macrocode}
+ {\usekomafont{titlepage}{%
+% \end{macrocode}
+% Zunächst der Kopf des Titels.
+% \begin{macrocode}
+ \tud@maketitle@head%
+% \end{macrocode}
+% Nachdem bereits \cs{@titlehead} und \cs{@subject} gesetzt worden, folgen nun
+% die weiteren Felder wie vom \CD~-- mehr oder weniger~-- vorgegeben auf der
+% Titelseite in unterschiedlichen Größen und Schriftstärken.
+% \begin{macrocode}
+ {\usekomafont{title}{\tud@title@format{\@title}\par}}%
+% \end{macrocode}
+% Der Untertitel wird ggf. in der gleichen Schrift gesetzt wie der Titel,
+% allerdings etwas kleiner.
+% \begin{macrocode}
+ \ifx\@subtitle\@empty\else%
+ {\usekomafont{partnumber}{\nobreak\tud@sec@strut}}%
+ {\usekomafont{subtitle}{\tud@title@format{\@subtitle}\par}}%
+ \fi%
+ \vskip 2\bigskipamount%
+% \end{macrocode}
+% Ausgabe eines Autors oder mehrerer Autoren ggf. mit Zusatzinformationen.
+% \begin{macrocode}
+ \let\tud@split@author@do\tud@split@author@title%
+ \tud@multiple@split{@author}\par%
+ \vskip 2ex\@plus1ex\@minus1ex%
+% \end{macrocode}
+% Die Titelseite unterscheidet sich ein wenig, abhängig davon ob eine eine
+% Abschlussarbeit gesetzt wird oder nicht. Falls dies nicht der Fall ist, dann
+% wird das angegebene bzw. das heutige Datum und ggf. die Ergänzung ausgegeben.
+% \begin{macrocode}
+ \ifx\@thesis\@empty%
+ \if@tud@coverpage\else%
+ \ifx\@date\@empty\else%
+ \vskip 2ex\@plus.1fill%
+ {\usekomafont{date}{\tud@date@print\par}}%
+ \fi%
+ \fi%
+ \vskip 2ex\@plus.25fill%
+% \end{macrocode}
+% Ist eine Abschlussarbeit angegeben, so wird zusätzlich unterschieden, ob
+% diese bereits~-- gesteuert durch die Option \opt{subjectthesis}~-- in der
+% Betreffzeile angegeben wurde oder aber separat und in deutlicherer Form auf
+% dem Titelblatt ausgegeben werden soll. Sowohl Arbeitstyp als auf akademischer
+% Grad werden dabei im Verhältnis 1:2 zwischen allen weiteren Angaben auf dem
+% Titel vertikal ausgerichtet.
+% \begin{macrocode}
+ \else%
+ \vskip 2ex\@plus.25fill%
+ \if@tud@subjectthesis\else%
+ {\usekomafont{thesis}{\tud@title@format{\@thesis}\par}}%
+ \vskip 2ex\@plus1ex\@minus1ex%
+ \fi%
+% \end{macrocode}
+% Ebenfalls wird in Abhängigkeit von der Option \opt{subjectthesis} der
+% angestrebte akademische Grad ausgegeben.
+% \begin{macrocode}
+ \if@tud@coverpage\else%
+ \ifx\@graduation\@empty\else%
+ \def\@tempc{%
+ \@graduation%
+ \ifx\@graduationabbreviation\@empty\else%
+ \nobreakspace\@graduationabbreviation%
+ \fi%
+ }%
+ {\usekomafont{titlepage}{\graduationtext\par}}%
+ \vskip 2.5ex\@plus1ex\@minus1ex%
+ {\usekomafont{thesis}{\tud@title@format{\@tempc}\par}}%
+ \vskip 3ex\@plus1ex\@minus1ex%
+ \fi%
+ \fi%
+ \vskip 2ex\@plus.5fill%
+ \fi%
+% \end{macrocode}
+% \ToDo{Befehl zum Angeben optionaler Inhalte, bspw. ein Bild}[v2.07]
+% Wenn Betreuer angegeben wurden, dann werden diese auf dem Titel ausgeben. Um
+% diese Titelseite auch für Dissertationen verwenden zu können, ist ein Feld
+% für Gutachter vorgesehen. Außerdem wird für Promotionsschriften ein Feld für
+% Fachreferenten bereitgehalten. Das Format der Ausgabe ist dabei identisch.
+% Darauf folgend wird der betreuende Hochschullehrer ausgegeben.
+% \begin{macrocode}
+ \if@tud@coverpage\else%
+ \tud@title@names{referee}%
+ \tud@title@names{advisor}%
+ \tud@title@names{supervisor}%
+ \tud@title@names{professor}%
+% \end{macrocode}
+% Bei einer Abschlussarbeit gehört normalerweise auch ein Abgabedatum auf den
+% Titel. Sollte keines angegeben sein, so erscheint eine Warnung. Es wird an
+% Stelle dessen das angegebene Enddatum oder aber das heutige Datum verwendet.
+% Durch das Paket \pkg{tudscrsupervisor} wird zusätzlich das Feld \cs{@duedate}
+% definiert, welches hier ggf. für auf ein nutzbares Datum geprüft wird.
+% \begin{macrocode}
+ \ifx\@thesis\@empty\else%
+ \tud@date@check%
+ \ifx\@date\@empty\else%
+ \vskip 2ex\@plus1ex\@minus1ex%
+ \ifxblank{\datetext}{}{\datetext\tud@title@delimiter}%
+ {\usekomafont{date}{\tud@date@print\par}}%
+% \end{macrocode}
+% Zusätzlich kann noch ein Datum der mündlichen Verteidigung angegeben werden.
+% \begin{macrocode}
+ \ifx\@defensedate\@empty\else%
+ \ifxblank{\defensedatetext}{}{%
+ \defensedatetext\tud@title@delimiter%
+ }%
+ {\usekomafont{date}{\@defensedate\par}}%
+ \fi%
+ \fi%
+ \fi%
+% \end{macrocode}
+% Hier erfolgt die Ausgabe der Unterschriftenzeile, falls gewünscht. Ist nur
+% ein Autor angegeben, wird die Box für die Unterschrift rechtsbündig erzeugt.
+% \begin{macrocode}
+ \if@tud@titlesignature%
+ \let\tud@split@@author@do\tud@split@author@signature%
+ \vskip\tud@len@signatureskip\noindent%
+ \tud@ifin@and{\@@author}{}{\hfill}%
+ \tud@multiple@split{@@author}%
+ \fi%
+ \fi%
+% \end{macrocode}
+% Zu guter Letzt kann das Standard-Verlagsfeld befüllt werden.
+% \begin{macrocode}
+ \ifx\@publishers\@empty\else%
+ \vskip 2ex\@plus.25fill%
+ {\usekomafont{publishers}{\@publishers\par}}%
+ \vskip\z@\@plus.25fill%
+ \fi%
+ }}%
+% \end{macrocode}
+% Die Rückseite des Titels wird~-- wie bei \KOMAScript~-- bloß bei zweiseitigem
+% Satz ausgegeben. Für diese Klassen wird aufgrund der möglicherweise farbigen
+% Rückseite das Hilfsmakro \cs{tud@titleback} benötigt.
+% \begin{macrocode}
+ \let\tud@titleback\relax%
+ \if@twoside%
+ \@tempswatrue%
+ \ifx\@uppertitleback\@empty\ifx\@lowertitleback\@empty%
+ \@tempswafalse%
+ \fi\fi%
+ \if@tempswa%
+ \gdef\tud@titleback{%
+ \next@tpage%
+ \begin{minipage}[t]{\textwidth}%
+ \@uppertitleback%
+ \end{minipage}\par%
+ \vfill%
+ \begin{minipage}[b]{\textwidth}%
+ \@lowertitleback%
+ \end{minipage}\par%
+ \@thanks\let\@thanks\@empty%
+ }%
+ \fi%
+ \fi%
+% \end{macrocode}
+% Es werden Schriftart, die Schriftstärke, sowie die Farbe der Seite und des
+% Kopfes und die Linienstärke des Querbalkens und die \DDC-Logos aus den
+% Einstellungen übernommen.
+% \begin{macrocode}
+ \def\@tempa{%
+ \renewcommand*\tud@pagecolor{}%
+ \ifcase\tud@cd@title@num\relax\or% true
+ \tud@locked@num@preset{tud@head@bar@num}{0}%
+ \or% litecolor
+ \tud@locked@num@set{tud@head@bar@num}{1}%
+ \or% barcolor
+ \tud@locked@num@set{tud@head@bar@num}{2}%
+ \or% bicolor
+ \tud@locked@num@set{tud@head@bar@num}{3}%
+ \or% color
+ \renewcommand*\tud@pagecolor{HKS41}%
+ \tud@locked@num@set{tud@head@bar@num}{1}%
+ \or% full
+ \renewcommand*\tud@pagecolor{HKS41}%
+ \tud@locked@num@set{tud@head@bar@num}{3}%
+ \fi%
+ \tud@color{\tud@title@fontcolor}%
+ \thispagestyle{empty.tudheadings}%
+% \end{macrocode}
+% Im Kompatibilitätsmodus für die Version~v2.02 wird im Zweifelsfall die Seite
+% für den Fuß mit \DDC-Logo vergrößert.
+% \begin{macrocode}
+ \tud@if@v@lower{2.03}{\tud@ddc@enlargepage}{}%
+ }%
+% \end{macrocode}
+% Bei der Ausgabe des Covers werden lediglich die Farb- und Schriftdefinitionen
+% benötigt, die Seite kann danach beendet werden.
+% \begin{macrocode}
+ \if@tud@coverpage%
+ \begingroup%
+ \@tempa%
+ \cleardoubleemptypage%
+ \endgroup%
+ \else%
+% \end{macrocode}
+% Beim Titel selbst muss noch ausgewertet werden, wie die Rückseite zu
+% gestalten ist. Sollte als Klassenoption das strikte Beginnen aller Teile
+% oder Kapitel auf einer rechten Seite aktiviert sein (\opt{open}|=|\val{right})
+% und zusätzlich bei farbigem \CD auch die Rückseiten farbig geleert werden, so
+% erfolgt dies auch für die Titelseite. Die Klasse \cls{tudscrartcl} setzt
+% lediglich die Titelseite farbig, die Rückseite niemals.
+% \begin{macrocode}
+%<*book|report>
+ \tud@cleardoublespecialpage[\tud@titleback]{%
+%</book|report>
+%<*article>
+ \begingroup%
+%</article>
+ \@tempa%
+ \begingroup%
+ \let\thispagestyle\@gobble%
+ \next@tpage%
+ \endgroup%
+%<*article>
+ \endgroup%
+ \tud@titleback%
+%</article>
+%<*book|report>
+ }%
+%</book|report>
+% \end{macrocode}
+% Die Danksagung ist identisch zu \KOMAScript.
+% \begin{macrocode}
+ \ifx\@dedication\@empty\else%
+ \next@tdpage\null\vfill%
+ {\centering\usekomafont{dedication}{\@dedication\par}}%
+ \vskip\z@\@plus3fill%
+ \@thanks\let\@thanks\@empty%
+ \cleardoubleemptypage%
+ \fi%
+ \fi%
+ \end{titlepage}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@titleback
+% \end{macro}^^A \tud@maketitle@page
+%
+% \iffalse
+%</book|report|article>
+% \fi
+%
+% \subsubsection{Die Definition des Titelkopfes}
+%
+% \begin{macro}{\tud@maketitle@inpage}
+% \changes{v2.05}{2015/07/13}{neu}^^A
+% \begin{macro}{\tud@maketitle@@inpage}
+% \changes{v2.05}{2015/07/13}{neu}^^A
+% Das sind die internen Makros für einen Titelkopf (\opt{titlepage}|=|\val{no}),
+% welche sich stark an den orginalen \KOMAScript-Befehlen orientieren.
+% \begin{macrocode}
+\newcommand*\tud@maketitle@inpage{%
+ \renewcommand*\tud@title@fontcolor{}%
+ \ifcase\tud@cd@title@num\relax\or\else% *color
+ \ifstr{\tud@pagecolor}{HKS41}{}{\renewcommand*\tud@title@fontcolor{HKS41}}%
+ \fi%
+ \par%
+ \ifx\tud@title@pagenumber\relax\else%
+ \ifnum\tud@title@pagenumber=\@ne\relax\else%
+ \ClassWarning{\TUD@Class@Name}{%
+ Optional argument of \string\maketitle\space ignored\MessageBreak%
+ at notitlepage-mode%
+ }%
+ \fi%
+ \fi%
+% \end{macrocode}
+% Dieser Teil ist mehr oder weniger funktional identisch zu \KOMAScript.
+% \begin{macrocode}
+ \begingroup%
+ \let\titlepage@restore\relax%
+ \renewcommand*\thefootnote{\@fnsymbol\c@footnote}%
+ \let\@oldmakefnmark\@makefnmark%
+ \renewcommand*\@makefnmark{\rlap\@oldmakefnmark}%
+ \next@tdpage%
+% \end{macrocode}
+% Hier wird überprüft, ob das Dokument zweispaltig gesetzt wird und zusätzlich
+% das Paket \pkg{multicol} geladen wurde. Ist letzteres nicht der Fall, wird
+% der Titel einspaltig ausgegeben und anschließend der im Zweispaltensatz
+% begonnen.
+% \begin{macrocode}
+ \def\tud@res@a##1{##1}%
+ \if@twocolumn\ifnum\col@number>\@ne\relax%
+ \def\tud@res@a##1{\twocolumn[{##1}]}%
+ \fi\fi%
+ \ifx\@extratitle\@empty%
+ \ifx\@frontispiece\@empty\else%
+ \if@twoside\null\fi%
+ \fi
+ \else%
+ \tud@res@a{\@makeextratitle}%
+ \fi%
+ \next@tpage%
+ \ifx\@frontispiece\@empty\else%
+ \tud@res@a{\@makefrontispiece}%
+ \fi%
+ \next@tdpage%
+ \tud@res@a{\tud@maketitle@@inpage}%
+ \ifx\titlepagestyle\@empty\else\thispagestyle{\titlepagestyle}\fi%
+ \@thanks%
+ \endgroup%
+}
+% \end{macrocode}
+% Hier erfolgt die Ausgabe des Titelkopfes.
+% \begin{macrocode}
+\newcommand*\tud@maketitle@@inpage{%
+ \global\@topnum=\z@%
+ \tud@cd@headstartvskip%
+%<*book|report|article>
+ \TUD@deprecated@lengthcs{headingsvskip}%
+ \vspace*{\tud@dim@headingsvskip}%
+ \tud@cd@vphantom%
+%</book|report|article>
+ \setparsizes{\z@}{\z@}{\z@\@plus1fil}\par@updaterelative%
+% \end{macrocode}
+% Damit die Farbeinstellungen der Schriften lokal begrenzt bleiben, wird dieser
+% Teil des Titels in einer Gruppe gesetzt. Außerdem werden
+% wie auch für die Titelseite die Hyperlinks der Fußnoten deaktiviert.
+% \begin{macrocode}
+ {\usekomafont{titlepage}{%
+ \tud@x@hyperref@realfootnotes%
+% \end{macrocode}
+% Bei einem Titelkopf ist nur die Variante möglich, dass eine Abschlussarbeit
+% in der Betreffzeile angegeben wird.
+% \begin{macrocode}
+%<*book|report|article>
+ \TUDoptions{subjectthesis=true}%
+%</book|report|article>
+% \end{macrocode}
+% Ähnlich wie bei der Titelseite wird auch beim Titelkopf die Inhalte von
+% \cs{@titlehead} und \cs{@subject} so nach oben verschoben, dass der Titel
+% selbst auf der gewünschten Höhe landet.
+% \begin{macrocode}
+ \tud@maketitle@head%
+% \end{macrocode}
+% Der eigentliche Titel nach dem Titelkopf.
+% \begin{macrocode}
+ {\usekomafont{title}{\tud@title@format{\@title}\par}}%
+ \ifx\@subtitle\@empty\else%
+ \vskip 1ex\@plus.5ex\@minus.5ex%
+ {\usekomafont{subtitle}{\tud@title@format{\@subtitle}\par}}%
+ \fi%
+ \vskip 2ex\@plus1ex\@minus1ex%
+% \end{macrocode}
+% Ausgabe eines Autors oder mehrerer Autoren ggf. mit Zusatzinformationen.
+% \begin{macrocode}
+%<*book|report|article>
+ \vskip 2\bigskipamount%
+ \let\tud@split@author@do\tud@split@author@title%
+ \tud@multiple@split{@author}\par%
+% \end{macrocode}
+% Ausgabe von Datum, Verlag und Danksagung wie im Original.
+% \begin{macrocode}
+ \ifx\@date\@empty\else%
+ \vskip 2ex\@plus1ex\@minus1ex%
+ {\usekomafont{date}{\tud@date@print\par}}%
+ \fi%
+ \ifx\@publishers\@empty\else%
+ \vskip 2ex\@plus1ex\@minus1ex%
+ {\usekomafont{publishers}{\@publishers\par}}%
+ \fi%
+ \ifx\@dedication\@empty\else%
+ \vskip 2ex\@plus1ex\@minus1ex%
+ {\centering\usekomafont{dedication}{\@dedication\par}}%
+ \fi%
+% \end{macrocode}
+% Falls Felder genutzt wurden, die nur auf der Titelseite, nicht aber im
+% Titelkopf ausgegeben werden, dann wird eine Warnung ausgegeben.
+% \begin{macrocode}
+ \ifx\@graduation\@empty\else\tud@title@wrn{graduation}\fi%
+ \ifx\@referee\@empty\else\tud@title@wrn{referee}\fi%
+ \ifx\@advisor\@empty\else\tud@title@wrn{advisor}\fi%
+ \ifx\@supervisor\@empty\else\tud@title@wrn{supervisor}\fi%
+ \ifx\@professor\@empty\else\tud@title@wrn{professor}\fi%
+% \end{macrocode}
+% Am Ende wird noch etwas vertikaler Abstand eingefügt.
+% \begin{macrocode}
+ \vskip 2\bigskipamount%
+%</book|report|article>
+ \ifnum\col@number>\@ne\relax%
+ \ifdefvoid{\multicolsep}{}{%
+ \ifisskip{\multicolsep}{\vspace{-\multicolsep}}{}%
+ }%
+ \fi%
+% \end{macrocode}
+% Wird das \DDC-Logo im Kompatibilitätsmodus für die Version~v2.02 gesetzt,
+% muss dafür am unteren Rand entsprechend Platz gelassen werden.
+% \begin{macrocode}
+ \tud@if@v@lower{2.03}{\tud@ddc@enlargepage[\titlepagestyle]}{}%
+ }}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@maketitle@@inpage
+% \end{macro}^^A \tud@maketitle@inpage
+% \begin{macro}{\tud@maketitle@head}
+% \changes{v2.06}{2018/08/17}{neu}^^A
+% Mit diesem Makro wird dafür gesorgt, dass Titelkopf und Typisierung so
+% postioniert werden, dass der Titel selbst vertikal nicht verschoben wird.
+% Hierfür wird von allem, was über der Überschrift positioniert werden soll,
+% die Höhe bestimmt werden, um einen entsprechenden Offset einfügen zu können.
+% Dafür wird eine temporäre Standardbox verwendet. In diesen wird der Inhalt
+% für die beiden Felder \cs{@titlehead} bzw. \cs{@subject} abgelegt und die
+% sich daraus kumulierende Höhe in \cs{@tempdima} gespeichert. Vor dem Setzen
+% der Felder kann nun der notwendige vertikale Freiraum vor dem eigentlichen
+% Titel für \cs{@titlehead} und \cs{@subject} abgezogen werden. Anschließend
+% wird die Box ausgegeben und der Aufbau der Titelseite kann beginnen.
+% \begin{macrocode}
+\newcommand*\tud@maketitle@head{%
+ \setbox\z@\vbox{%
+ \ifx\@titlehead\@empty\else%
+ {\usekomafont{titlehead}{%
+ \begin{minipage}[t]{\textwidth}%
+ \@titlehead\tud@sec@strut%
+ \end{minipage}%
+ }}%
+ \fi%
+%<*book|report|article>
+ \tud@thesis@tosubject%
+%</book|report|article>
+ \ifx\@subject\@empty\else%
+ \par\medskip%
+ {\usekomafont{subject}{%
+ \@subject\tud@sec@strut%
+ }}%
+ \fi%
+ }%
+% \end{macrocode}
+% Der ermittelte Offset muss~-- warum auch immer~-- um \val{1pt} vergrößert
+% werden. Zusätzlich wird ein mittlerer Abstand zwischen Kopf und Titel gesetzt.
+% \begin{macrocode}
+ \setlength\@tempdima{\dimexpr\ht\z@+\dp\z@\relax}%
+ \ifdim\@tempdima>\z@\relax%
+%<*book|report|article>
+ \vskip\dimexpr-\@tempdima-\p@-\medskipamount\relax%
+%</book|report|article>
+ \usebox\z@\par\medskip%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@maketitle@inpage
+%
+% \subsubsection{Hilfsmakros für die Ausgabe}
+%
+% \begin{macro}{\tud@title@format}
+% Für das Formatieren einzelner Felder auf dem Titel mit \cs{tud@sec@format}
+% wird dieser Befehl definiert. Bei der Verwendung des Befehls \cs{thanks} auf
+% der Titelseite soll sichergestellt werden, dass der Inhalt selbst nicht in
+% Majuskeln gesetzt wird.
+% \begin{macrocode}
+\newcommand*\tud@title@format[1]{%
+ \begingroup%
+ \let\\\newline%
+% \end{macrocode}
+% Der Befehl \cs{thanks} wird so umdefiniert, dass der Inhalt in ein temporäres
+% Makro gespeichert wird. Danach wird durch das Setzen einer temporären Box der
+% Befehl \cs{thanks} ausgeführt und der Inhalt gesichert. Für die Ausführung von
+% \cs{tud@sec@format} wird das Argument von \cs{thanks} ignoriert. Nachdem das
+% gewünschte Feld in Majuskeln gesetzt wurde, wird die gespeicherte Fußnote
+% ausgegeben.
+% \begin{macrocode}
+ \let\tud@thanks\relax%
+ \def\thanks##1{\gdef\tud@thanks{##1}}%
+ \let\footnote\thanks%
+ \sbox\z@{#1}%
+ \let\thanks\@gobble%
+ \let\footnote\@gobble%
+ \tud@sec@format{#1}%
+ \edef\tud@res@a{%
+ \endgroup%
+ \ifx\tud@thanks\relax\else%
+ \noexpand\thanks{\expandonce\tud@thanks}%
+ \fi%
+ }%
+ \tud@res@a%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@title@format
+%
+% \iffalse
+%<*book|report|article>
+% \fi
+%
+% \begin{macro}{\tud@thesis@tosubject}
+% Bei der Verwendung der Option \opt{subjectthesis} wird zum einen geprüft, ob
+% das Feld \cs{@thesis} gesetzt ist und zum anderen, ob das Feld \cs{@subject}
+% auch leer ist.
+% \begin{macrocode}
+\newcommand*\tud@thesis@tosubject{%
+ \if@tud@subjectthesis\ifx\@thesis\@empty\else%
+ \ifx\@subject\@empty\else%
+ \ClassWarning{\TUD@Class@Name}{%
+ The option `subjectthesis' was activated, so\MessageBreak%
+ the field `subject' will be overwritten with the\MessageBreak%
+ given thesis%
+ }%
+ \fi%
+ \let\@subject\@thesis%
+ \fi\fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@thesis@tosubject
+% \begin{macro}{\tud@title@names}
+% Dieser Befehl dient zur getrennten Ausgabe von mehreren, mit dem Makro
+% \cs{and} separierten Einträgen in den Feldern \cs{@supervisor}, \cs{@referee}
+% und \cs{@advisor}.
+% \begin{macrocode}
+\newcommand*\tud@title@names[1]{%
+ \letcs\@tempa{@#1}%
+ \ifx\@tempa\@empty\else%
+ \def\and{%
+ \ifcsvoid{#1othername}{\par}{%
+ \vskip 1ex\@plus.5ex\@minus.5ex%
+ {\usekomafont{titlepage}{\csuse{#1othername}\par}}%
+ }%
+ \let\and\par%
+ }%
+ \vskip 1ex\@plus.5ex\@minus.5ex%
+ {\usekomafont{titlepage}{\csuse{#1name}\par}}%
+ {\usekomafont{author}{\csuse{@#1}\par}}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@title@names
+% \begin{macro}{\titledelimiter}
+% \begin{macro}{\tud@title@delimiter}
+% Dieses Makro wird für das Trennzeichen auf der Titelseite genutzt.
+% \begin{macrocode}
+\newcommand*\tud@title@delimiter{:\nobreakspace}
+\newcommand*\titledelimiter[1]{\gdef\tud@title@delimiter{#1}}
+% \end{macrocode}
+% \end{macro}^^A \tud@title@delimiter
+% \end{macro}^^A \titledelimiter
+% \begin{macro}{\tud@split@author@title}
+% \changes{v2.04}{2015/05/12}{neu}^^A
+% \begin{macro}{\tud@newline@title}
+% Das Makro \cs{tud@split@author@title} dient der formatierten Ausgabe aller
+% Informationen für mehrere Autoren auf der Titelseite.
+% \begin{macrocode}
+\newcommand*\tud@newline@title{}
+\newcommand*\tud@split@author@title[2]{%
+% \end{macrocode}
+% Zu Beginn werden alle Felder, welche innerhalb von \cs{@author} angegeben
+% sind, gesichert.
+% \begin{macrocode}
+ \tud@multiple@fields@store{@author}{#1}%
+% \end{macrocode}
+% Um die Abstände definiert zu setzen, wird \cs{tud@newline@title} verwendet.
+% Sobald auch nur eine zusätzliche Information ausgegeben werden soll, wird ein
+% etwas kleiner Abstand eingefügt. Anschließend wird jede Information einfach
+% in einer neuen Zeile ausgegeben.
+% \begin{macrocode}
+ \renewcommand*\tud@newline@title{%
+ \vskip .5ex\strut%
+ \def\tud@newline@title{\newline\strut}%
+ }%
+% \end{macrocode}
+% Die Felder \cs{@author} und ggf. \cs{@authormore} werden sowohl auf der
+% Titelseite als auch im Titelkopf jedoch nicht auf der Umschlagseite
+% ausgegeben. Gleiches gilt für E"~Mail-Adressen.
+% \begin{macrocode}
+ {\usekomafont{author}{\ignorespaces#1\strut\unskip}}%
+ \if@tud@coverpage\else%
+ \ifx\@authormore\@empty\else%
+ \tud@newline@title%
+ \@authormore%
+ \fi%
+ \ifx\@emailaddress\@empty\else%
+ \tud@newline@title%
+ \@emailaddress%
+ \fi%
+% \end{macrocode}
+% Nur auf der Titelseite erfolgt die Ausgabe von Geburtsdatum, Geburtsort,
+% Matrikelnummer und Immatrikulationsjahr. Sollte ein Titelkopf verwendet
+% werden, so wird für jedes gesetzte Feld eine Warnung ausgegeben.
+% \begin{macrocode}
+ \ifx\@dateofbirth\@empty\else%
+ \if@titlepage%
+ \tud@newline@title%
+ \ifxblank{\dateofbirthtext}{}{\dateofbirthtext\tud@title@delimiter}%
+ \@dateofbirth%
+ \ifx\@placeofbirth\@empty\else%
+ \nobreakspace\placeofbirthtext\nobreakspace\@placeofbirth%
+ \fi%
+ \else%
+ \tud@title@wrn{dateofbirth}%
+ \fi%
+ \fi%
+ \def\@tempc##1{%
+ \ifstr{\csuse{@##1}}{}{}{%
+ \if@titlepage%
+ \tud@newline@title%
+ \ifstr{\csuse{##1name}}{}{}{\csuse{##1name}\tud@title@delimiter}%
+ \csuse{@##1}%
+ \else%
+ \tud@title@wrn{##1}%
+ \fi%
+ }%
+ }%
+ \@tempc{course}%
+ \@tempc{discipline}%
+ \@tempc{matriculationnumber}%
+ \@tempc{matriculationyear}%
+ \fi%
+% \end{macrocode}
+% Zunächst werden die zuvor bestehenden Feldinhalte wiederhergestellt. Danach
+% wird durch den Aufruf von \cs{tud@multiple@@@split} wird das übergebene
+% \meta{Feld} sukzessive abgearbeitet.
+% \begin{macrocode}
+ \tud@multiple@fields@restore{@author}%
+ \tud@multiple@@@split{#2}{\vskip 1.5ex}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@newline@title
+% \end{macro}^^A \tud@split@author@title
+% \begin{macro}{\tud@title@wrn}
+% Bei der Nutzung eines Titelkopfes wird bloß eine reduzierte Menge an
+% Informationen ausgegeben. Darauf wird der Anwender ggf. hingewiesen.
+% \begin{macrocode}
+\newcommand*\tud@title@wrn[1]{%
+ \ClassWarning{\TUD@Class@Name}{%
+ `\@backslashchar#1' has to be used with\MessageBreak%
+ activated titlepage option%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@title@wrn
+% \begin{macro}{\tud@split@author@signature}
+% \changes{v2.06}{2018/08/21}{neu}^^A
+% Das Makro \cs{tud@split@author@signature} dient zum Erstellen von Feldern für
+% Unterschriften der Autoren am Ende der Titelseite.
+% \begin{macrocode}
+\newcommand*\tud@split@author@signature[2]{%
+% \end{macrocode}
+% Zu Beginn werden alle Felder, welche innerhalb von \cs{@author} angegeben
+% sind, gesichert.
+% \begin{macrocode}
+ \tud@multiple@fields@store{@author}{#1}%
+% \end{macrocode}
+% Für jeden Autor wird in einer Box ein Unterschriftenfeld mit fester Breite
+% erzeugt. Innerhalb der Box wird erst eine Linie und darunter der Name des
+% Autors zentriert ausgegeben.
+% \begin{macrocode}
+ \vbox{%
+ \hsize=.3\textwidth%
+ \centering%
+ \rule{.3\textwidth}{.05pt}\newline%
+ \ignorespaces#1\strut\unskip%
+ }%
+% \end{macrocode}
+% Zunächst werden die zuvor bestehenden Feldinhalte wiederhergestellt. Danach
+% wird durch den Aufruf von \cs{tud@multiple@@@split} wird das übergebene
+% \meta{Feld} sukzessive abgearbeitet.
+% \begin{macrocode}
+ \tud@multiple@fields@restore{@author}%
+ \tud@multiple@@@split{#2}{\hfill}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@split@author@signature
+%
+% \iffalse
+%</book|report|article>
+% \fi
+%
+% \subsection{Einspaltige Titelei in zweispaltigen Dokumenten}
+%
+% \begin{macro}{\maketitleonecolumn}
+% \changes{v2.02}{2014/08/16}{einspaltiger Text obligatorisch}^^A
+% \begin{macro}{\tud@title@twocolumn}
+% \changes{v2.03}{2015/01/13}{Bugfix für falsche Position des Titels}^^A
+% \begin{macro}{\tud@title@box}
+% Der Befehl \cs{maketitleonecolumn}\oarg{Parameter}\oarg{Inhalt} kann bei
+% zweispaltigem Satz dazu genutzt werden, einen einspaltigen Titel zu bekommen.
+% Beim der Verwendung einer Titelseite wird lediglich der Titel sowie
+% anschließend ggf. \meta{Inhalt} einspaltig ausgegeben. Beim Satz eines
+% Titelkopfes wird der Befehl \cs{tud@title@twocolumn} zur Ausgabe genutzt.
+% \hrfn{http://www.komascript.de/node/1699}{Danke an Markus Kohm für die Hilfe}.
+% \begin{macrocode}
+\newcommand\maketitleonecolumn[2][]{%
+% \end{macrocode}
+% Hier erfolgt die Unterscheidung der Ausgabe, abhängig von der Option
+% \opt{titlepage}.
+% \begin{macrocode}
+ \if@twocolumn%
+%<*book|report|article>
+ \if@titlepage%
+ \tud@maketitle[#1]%
+ \onecolumn{#2}\twocolumn%
+ \else%
+%</book|report|article>
+ \tud@title@twocolumn{\tud@maketitle[#1]{#2}}%
+%<*book|report|article>
+ \fi%
+%</book|report|article>
+ \else%
+ \ClassError{\TUD@Class@Name}{%
+ `\string\maketitleonecolumn' can only be used in twocolumn mode%
+ }{}%
+ \fi%
+}
+% \end{macrocode}
+% Es folgt die Verarbeitung des Inhaltes des Titelkopfes, welcher einspaltig
+% gesetzt werden soll. Damit sich dieser auch über mehrere Seiten erstrecken
+% kann, wird mit einer Box gearbeitet.
+% \begin{macrocode}
+\newsavebox\tud@title@box
+\newcommand\tud@title@twocolumn[1]{%
+% \end{macrocode}
+% Zunächst wird auf einseitigen Satz umgeschaltet. Der zu schreibende Inhalt
+% wird in einer Box gespeichert. Während des Zusammenbaus der Box sind keine
+% expliziten \cs{newpage}- oder \cs{clearpage}-Befehle erlaubt.
+% \begin{macrocode}
+ \onecolumn%
+ \begingroup%
+ \let\clearpage\relax%
+ \let\newpage\relax%
+% \end{macrocode}
+% Sollte der Inhalt der Box größer als die verfügbare Texthöhe des Satzspiegels
+% sein, muss aufgrund der verwendeten Box ein zusätzlicher vertikaler Abstand
+% von |.9\baselineskip| zur korrekten Postionierung der Überschrift eingefügt
+% werden.
+% \begin{macrocode}
+ \global\setbox\tud@title@box\vbox{%
+ \vspace*{.9\baselineskip}#1\bigskip%
+ }%
+ \endgroup%
+% \end{macrocode}
+% Als erstes muss geprüft werden, ob der Inhalt größer als der Textbereich ist.
+% Vor der Version~v2.03 gab es für das \DDC-Logo einen abweichenden Satzspiegel
+% der ggf. beachtet werden muss.
+% \begin{macrocode}
+ \setlength\@tempdima{\textheight}%
+ \tud@if@v@lower{2.03}{%
+ \tud@ddc@check%
+ \ifcase\@tempb\relax\else% \tud@ddc@foot@num!=false
+ \setlength\@tempdima{\dimexpr\textheight-\tud@len@ddcdiff\relax}%
+ \@tempswatrue%
+ \fi%
+ }{}%
+% \end{macrocode}
+% Jetzt werden der Inhalt stückweise so lange auf einzelnen Seiten ausgeben,
+% bis der immer kleiner werdende Rest in der Box auf eine Seite passt.
+% \begin{macrocode}
+ \ifdim\ht\tud@title@box>\@tempdima\relax%
+ \@whiledim\ht\tud@title@box>\@tempdima\do{%
+ \splittopskip\topskip%
+ \splitmaxdepth\maxdepth%
+ \vsplit\tud@title@box to \@tempdima%
+ \clearpage%
+ \setlength\@tempdima{\textheight}%
+ \tud@if@v@lower{2.03}{\@tempswafalse}{}%
+ }%
+% \end{macrocode}
+% Passt der einspaltige Teil auf eine Seite, ist eine vertikale Korrektur von
+% |.9\baselineskip| nicht notwendig. In diesem Fall wird die Box vor der
+% Ausgabe einfach neu und ohne diese Länge gesetzt.
+% \begin{macrocode}
+ \else%
+ \setbox\tud@title@box\vbox{#1\bigskip}%
+ \fi%
+% \end{macrocode}
+% Der Rest wir einfach als optionales Argument von \cs{twocolumn} ausgegeben.
+% \begin{macrocode}
+ \twocolumn[\unvbox\tud@title@box]%
+% \end{macrocode}
+% In der Version~v2.02 wird eine Warnung ausgegeben, damit der Anwender den
+% Satzspiegel manuell anpassen kann. Die Verwendung von \pkg{afterpage} liefert
+% leider nicht in allen Fällen das gewollte Ergebnis, weshalb darauf verzichtet
+% wird.
+% \begin{macrocode}
+ \tud@if@v@lower{2.03}{%
+ \if@tempswa%
+ \ClassWarning{\TUD@Class@Name}{%
+ You are using a two-column title along with\MessageBreak%
+ the DDC-logo. Unfortunately in this case, the\MessageBreak%
+ type area has to be adjusted manually. Please\MessageBreak%
+ use `\string\enlargethispage{-\the\tud@len@ddcdiff}'\MessageBreak%
+ in both columns after the title%
+ }%
+ \fi%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@title@box
+% \end{macro}^^A \tud@title@twocolumn
+% \end{macro}^^A \maketitleonecolumn
+%
+%
+% \iffalse
+%<*book|report|article>
+% \fi
+%
+% \subsection{Umschlagseite (Cover)}
+%
+% Zusätzlich zur eigentlichen Titelseite kann für Druckerzeugnisse eine
+% separate Umschlagseite erzeugt werden. Um die Gestaltung dieser anzupassen,
+% wurden Einstellungsmöglichkeiten vorgesehen, die insbesondere den verwendeten
+% Satzspiegel betreffen.
+%
+% \begin{macro}{\makecover}
+% \changes{v2.02}{2014/06/23}{Warnung für die Option \opt{titlepage} mit dem
+% Wert \val{firstiscover}}^^A
+% \changes{v2.02}{2014/08/08}{ohne \CD verwendbar}^^A
+% \changes{v2.02}{2014/08/12}{Satzspiegel mit \cs{coverpage\dots{}margin}
+% änderbar, falls CD-Layout deaktiviert}^^A
+% \changes{v2.03}{2015/01/09}{Anpassungen für neue Satzspiegelerzeugung}^^A
+% \begin{parameter}{cdcover}
+% \changes{v2.03}{2015/01/12}{neu}^^A
+% \begin{parameter}{cd}
+% \changes{v2.03}{2015/01/12}{neu}^^A
+% \begin{parameter}{pagenumber}
+% \begin{parameter}{cdgeometry}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% \begin{macro}{\if@tud@cdgeometry@cover}
+% \begin{macro}{\if@tud@cdgeometry@cover@locked}
+% \begin{macro}{\if@tud@coverpage}
+% Der Befehl \cs{makecover} ist für eine Umschlagseite bei einem gebundenen
+% Werk zu verwenden.
+% \begin{macrocode}
+\newif\if@tud@coverpage
+\newcommand*\makecover[1][]{%
+% \end{macrocode}
+% Ist die Option \opt{titlepage}|=|\val{firstiscover} aktiv, wird eine Warnung
+% erzeugt.
+% \begin{macrocode}
+ \if@titlepageiscoverpage%
+ \ClassWarning{\TUD@Class@Name}{%
+ Using both option `titlepage=firstiscover' and\MessageBreak%
+ `\string\makecover' together isn't supported. The\MessageBreak%
+ option `titlepage=firstiscover' will be ignored. If you\MessageBreak%
+ want to create an individual cover, you have to use\MessageBreak%
+ `\string\extratitle' instead of `\string\makecover'. \MessageBreak%
+ See also the documentation of KOMA-Script%
+ }%
+ \@titlepageiscoverpagefalse%
+ \fi%
+% \end{macrocode}
+% Die Erscheinung des Covers lässt sich durch wenige Optionen etwas anpassen.
+% Standardmäßig ist das Cover farblos, die farbige Darstellung wird durch die
+% Klassenoption \opt{cdcover} gewählt. Außerdem wird normalerwe ein Layout
+% erzeugt, welches sich genau an die Vorgaben des \CDs hält und außerdem die
+% Binderandkorrektur \emph{nicht} beachtet. Optional kann das Cover im
+% Satzspiegel erstellt werden. Zuletzt ist die Verwendung der Schriften des
+% \CDs deaktivierbar.
+% \begin{macrocode}
+ \clearpage%
+ \begingroup%
+ \let\thanks\@gobble%
+ \let\footnote\@gobble%
+ \TUD@parameter@set{cover}{#1}%
+ \let\tud@cd@title@num\tud@cd@cover@num%
+ \tud@cd@process%
+% \end{macrocode}
+% Je nachdem, ob das \CD verwendet wird, wird der Satzspiegel standardmäßig
+% umgestellt oder eben nicht. Der Schalter \cs{if@tud@coverpage} wird innerhalb
+% des Befehles \cs{tud@maketitle} genutzt, um die Unterscheidung zu machen, ob
+% es sich bei der aktuellen Ausgabe um das Cover im \CD oder eine beliebige
+% Titelseite handelt.
+% \begin{macrocode}
+ \ifcase\tud@cd@cover@num\relax% false
+ \tud@locked@bool@preset{@tud@cdgeometry@cover}{false}%
+ \@tud@coverpagefalse%
+ \else% !false
+ \tud@locked@bool@preset{@tud@cdgeometry@cover}{true}%
+ \@tud@coverpagetrue%
+ \fi%
+% \end{macrocode}
+% Weil bereits die Titelseite normalerweise die Seitenzahl eins bekommt, kann es
+% bei der Verwendung des Paketes \pkg{hyperref} zu einer Warnung aufgrund der
+% doppelt verwendeten Seitenzahl kommen. Um dies zu verhindern, werden die
+% Seitenanker für das Cover deaktiviert.
+% \begin{macrocode}
+ \ifundef{\hypersetup}{}{\hypersetup{pageanchor=false}}%
+% \end{macrocode}
+% Ein Cover wird immer als komplette Seite und nie als Kopf gesetzt. Außerdem
+% werden ein mit \cs{extatitle} gegebener Schmutztitel ebenso ignoriert, wie
+% die dazugehörige Rückseite, Danksagung oder Einträge für die Titelrückseite.
+% \begin{macrocode}
+ \@titlepagetrue%
+ \let\@extratitle\@empty%
+ \let\@frontispiece\@empty%
+ \let\@uppertitleback\@empty%
+ \let\@lowertitleback\@empty%
+ \let\@dedication\@empty%
+% \end{macrocode}
+% Wird der Parameter \opt{cdgeometry} aktiviert, werden die Seitenränder wie
+% durch das \CD vorgegeben eingestellt. Andernfalls entsprechen diese den
+% Einstellungen des Satzspiegels und können mit \cs{coverpage\dots margin}
+% durch den Anwender angepasst werden.
+% \begin{macrocode}
+ \if@tud@cdgeometry@cover%
+% \end{macrocode}
+% Bei der Höhe des oberen Seitenrandes muss unterschieden werden, ob der
+% Satzspiegel im \CD oder aber im Buchblock erscheinen soll.
+% \begin{macrocode}
+ \if@tud@coverpage%
+ \def\coverpagetopmargin{%
+ \dimexpr\tud@len@topmargin+\tud@len@barheight%
+ +\tud@len@headsep\relax%
+ }%
+ \else%
+ \tud@if@v@lower{2.03}{%
+ \def\coverpagetopmargin{.5\tud@len@both}%
+ }{%
+ \def\coverpagetopmargin{\tud@len@slimmargin}%
+ }%
+ \fi%
+ \tud@if@v@lower{2.03}{%
+ \def\coverpagebottommargin{.5\tud@len@both}%
+ }{%
+ \def\coverpagebottommargin{\tud@len@widemargin}%
+ }%
+ \def\coverpageleftmargin{\tud@len@widemargin}%
+ \def\coverpagerightmargin{\tud@len@slimmargin}%
+ \fi%
+ \if@tud@coverpage%
+% \end{macrocode}
+% Der Satzspiegel wird hierfür äquivalent zu den \KOMAScript-Klassen gesetzt,
+% wenn die Option \opt{titlepage}|=|\val{firstiscover} aktiviert ist.
+% \begin{macrocode}
+ \edef\titlepage@restore{%
+ \noexpand\endgroup%
+ \noexpand\global\noexpand\@colht\the\@colht%
+ \noexpand\global\noexpand\@colroom\the\@colroom%
+ \noexpand\global\vsize\the\vsize%
+ \noexpand\global\noexpand\@titlepageiscoverpagefalse%
+ \noexpand\let\noexpand\titlepage@restore\noexpand\relax%
+ }%
+% \end{macrocode}
+% Linker und rechter Rand sowie die Textbreite werden identisch erzeugt. Für
+% das Layout im \CD wurden die Seitenränder (\cs{coverpage\dots margin}) zuvor
+% angepasst.
+% \begin{macrocode}
+ \begingroup%
+ \tud@cover@setmargins%
+ \tud@len@areavskip=\z@%
+% \end{macrocode}
+% Die Ausgabe des Covers und ggf. das Wiederherstellen des Satzspiegels.
+% \begin{macrocode}
+ \tud@maketitle%
+ \clearpage%
+ \titlepage@restore%
+% \end{macrocode}
+% Für den Fall, dass eine Umschlagseite gesetzt werden soll, die nicht im \CD
+% erscheint, wird einfach das originale \cs{maketitle} aufgerufen und die
+% Option \opt{titlepage}|=|\val{firstiscover} verwendet, um die Seitenränder
+% anpassen zu können.
+% \begin{macrocode}
+ \else%
+ \@titlepageiscoverpagetrue%
+ \tud@cover@fixmargins%
+ \ifx\tud@title@pagenumber\relax%
+ \tud@cs@use{maketitle}%
+ \else%
+ \tud@cs@use{maketitle}[\tud@title@pagenumber]%
+ \fi%
+ \fi%
+ \endgroup%
+}
+% \end{macrocode}
+% Die einzelnen Parameter dienen zur Einstellung der Umschlagseite und
+% entsprechen~-- \prm{cdgeometry} ausgenommen~-- in ihrem Verhalten den
+% gleichnamigen Klassenoptionen. Der genannte Parameter kann eigentlich nur mit
+% booleschen Werten verwenet werden. Für einen benutzerdefinierten Satzspiegel
+% der Umschlagseite müssen die \KOMAScript-Makros \cs{coverpage\dots{}margin}
+% angepasst werden.
+% \begin{macrocode}
+\tud@locked@newbool{@tud@cdgeometry@cover}
+\TUD@parameter@family{cover}{%
+ \TUD@parameter@def{pagenumber}{\def\tud@title@pagenumber{#1}}%
+ \TUD@parameter@def{cdcover}[true]{\TUDoption{cdcover}{#1}}%
+ \TUD@parameter@let{cd}{cdcover}%
+ \TUD@parameter@def{cdgeometry}[true]{%
+ \TUDoption{cdgeometry}{#1}%
+ \ifnum\tud@cdgeometry@num>\@ne\relax% true/symmetric/twoside
+ \tud@locked@bool@set{@tud@cdgeometry@cover}{true}%
+ \else%
+ \tud@locked@bool@set{@tud@cdgeometry@cover}{false}%
+ \fi%
+ }%
+% \end{macrocode}
+% Mit \cs{TUD@parameter@ps@def} werden alle verfügbaren Parameter für
+% die Kopf- und Fußzeilen definiert.
+% \begin{macrocode}
+ \TUD@parameter@ps@def{#1}%
+% \end{macrocode}
+% Für den Fall, dass ein Wert nicht in der Schlüssel"=Wert"=Notation angegeben
+% wurde, wird versucht, das gegebene Argument entweder als booleschen Ausdruck
+% für das Seitenlayout oder als Seitenzahl zu interpretieren.
+% \begin{macrocode}
+ \TUD@parameter@handler@value{pagenumber}%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@coverpage
+% \end{macro}^^A \if@tud@cdgeometry@cover@locked
+% \end{macro}^^A \if@tud@cdgeometry@cover
+% \end{parameter}^^A cdgeometry
+% \end{parameter}^^A pagenumber
+% \end{parameter}^^A cd
+% \end{parameter}^^A cdcover
+% \end{macro}^^A \makecover
+% \begin{macro}{\coverpagetopmargin}
+% \begin{macro}{\coverpagebottommargin}
+% Bei der Verwendung eines eigenen Satzspiegels kann der obere Seitenrand über
+% das Makro \cs{coverpagetopmargin} geändert werden. Die \KOMAScript-Befehle
+% werden so angepasst, dass die Ränder für eine Cover im des \CDs korrekt
+% voreingestellt sind. Das Vermeiden einer unerwünschten Überdeckung des Kopfes
+% oder ein zu kleiner Fußbereich muss durch den Anwender korrigiert werden.
+% \begin{macrocode}
+\renewcommand*{\coverpagetopmargin}{%
+ \if@tud@coverpage%
+ \dimexpr\tud@len@topmargin+\tud@len@barheight+\tud@len@headsep\relax%
+ \else%
+ \dimexpr\topmargin+1in\relax%
+ \fi%
+}
+\renewcommand*{\coverpagebottommargin}{%
+ \if@tud@coverpage%
+ \dimexpr\tud@len@widemargin\relax%
+ \else%
+ 2\dimexpr\coverpagetopmargin\relax%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \coverpagebottommargin
+% \end{macro}^^A \coverpagetopmargin
+% \begin{macro}{\tud@cover@fixmargins}
+% \changes{v2.06}{2018/08/16}{neu}^^A
+% \begin{macro}{\tud@cover@setmargins}
+% \changes{v2.06}{2018/08/16}{neu}^^A
+% Diese beiden Befehle werden verwendet, um die von \KOMAScript{} zur Verfügung
+% gestellten Befehle für die Definition der Cover-Seitenränder so anzupassen,
+% dass diese auch mit der Option \opt{layout} aus dem Paket \pkg{geometry}
+% genutzt werden können. Dafür werden die vom Anwender definierten Seitenränder
+% expandiert und mit dem notwendigen Offset beaufschlagt.
+% \begin{macrocode}
+\newcommand*\tud@cover@fixmargins{%
+ \begingroup%
+ \tud@cdgeometry@assignlayout%
+ \tud@x@geometry@fixmargins%
+% \end{macrocode}
+% Standardmäßig ist \cs{coverbottommargin} abhängig von \cs{covertopmargin},
+% weshalb dieses Makro als erstes expandiert wird.
+% \begin{macrocode}
+ \setlength\@tempdima{%
+ \dimexpr\coverpagebottommargin-\tud@len@layoutvoffset
+ +\paperheight-\tud@len@layoutheight\relax%
+ }%
+ \edef\coverpagebottommargin{\the\@tempdima}%
+ \setlength\@tempdima{%
+ \dimexpr\coverpagetopmargin+\tud@len@layoutvoffset\relax%
+ }%
+ \edef\coverpagetopmargin{\the\@tempdima}%
+% \end{macrocode}
+% Selbiges gilt für \cs{coverrightmargin} und \cs{coverleftmargin}.
+% \begin{macrocode}
+ \setlength\@tempdima{%
+ \dimexpr\coverpagerightmargin-\tud@len@layouthoffset
+ +\paperwidth-\tud@len@layoutwidth\relax%
+ }%
+ \edef\coverpagerightmargin{\the\@tempdima}%
+ \setlength\@tempdima{%
+ \dimexpr\coverpageleftmargin+\tud@len@layouthoffset\relax%
+ }%
+ \edef\coverpageleftmargin{\the\@tempdima}%
+% \end{macrocode}
+% Abschließend werden die gewünschten Längen nach der lokalen Gruppe definiert.
+% \begin{macrocode}
+ \edef\tud@res@a{%
+ \endgroup%
+ \def\noexpand\coverpagetopmargin{\coverpagetopmargin}%
+ \def\noexpand\coverpagebottommargin{\coverpagebottommargin}%
+ \def\noexpand\coverpageleftmargin{\coverpageleftmargin}%
+ \def\noexpand\coverpagerightmargin{\coverpagerightmargin}%
+ }%
+ \tud@res@a%
+}
+\newcommand*\tud@cover@setmargins{%
+ \tud@cover@fixmargins%
+ \topmargin=\dimexpr\coverpagetopmargin-1in\relax%
+ \oddsidemargin=\dimexpr\coverpageleftmargin-1in\relax%
+ \evensidemargin=\dimexpr\coverpageleftmargin-1in\relax%
+ \textwidth=\dimexpr\paperwidth-\coverpageleftmargin%
+ -\coverpagerightmargin\relax%
+ \textheight=\dimexpr\paperheight-\coverpagetopmargin%
+ -\coverpagebottommargin\relax%
+ \headheight=0pt%
+ \headsep=0pt%
+ \footskip=\baselineskip%
+ \@colht=\textheight%
+ \@colroom=\textheight%
+ \vsize=\textheight%
+ \columnwidth=\textwidth%
+ \hsize=\columnwidth%
+ \linewidth=\hsize%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cover@setmargins
+% \end{macro}^^A \tud@cover@fixmargins
+%
+% \iffalse
+%</book|report|article>
+%</class&body>
+% \fi
+%
+% \Finale
+%
+\endinput
diff --git a/macros/latex/contrib/tudscr/source/tudscr-twocolfix.dtx b/macros/latex/contrib/tudscr/source/tudscr-twocolfix.dtx
new file mode 100644
index 0000000000..ff86b18493
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/tudscr-twocolfix.dtx
@@ -0,0 +1,258 @@
+% \CheckSum{214}
+% \iffalse meta-comment
+%
+% TUD-Script -- Corporate Design of Technische Universität Dresden
+% ----------------------------------------------------------------------------
+%
+% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2019
+%
+% ----------------------------------------------------------------------------
+%
+% This work may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License, version 1.3c of the license. The latest
+% version of this license is in http://www.latex-project.org/lppl.txt and
+% version 1.3c or later is part of all distributions of LaTeX 2005/12/01
+% or later and of this work. This work has the LPPL maintenance status
+% "author-maintained". The current maintainer and author of this work
+% is Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+% in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
+% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+% Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
+% oder später und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status
+% "author-maintained", wird somit allein durch den Autor verwaltet. Der
+% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: tudscr-twocolfix.dtx
+%<*dtx>
+% \fi
+%
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{tudscr-twocolfix.dtx}[2019/06/28 v2.06 TUD-Script\space%
+%
+% \iffalse
+%</dtx>
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesPackage{twocolfix}[%
+%<*package>
+%!TUD@Version
+%</package>
+%<package> package
+%<*dtx|package>
+% \fi
+ (twocolumn layout bugfix)%
+]
+% \iffalse
+%</dtx|package>
+%<*dtx>
+\documentclass[english,ngerman,xindy]{tudscrdoc}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{tudscrfonts}
+\KOMAoptions{parskip=half-}
+\usepackage{bookmark}
+\usepackage[babel]{microtype}
+
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tudscr-twocolfix.dtx}
+\title{\file{\filename}}
+\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
+\date{\fileversion\nobreakspace(\filedate)}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.05}{2016/04/25}{Überprüfen der Definition von \cs{@topnewpage}
+% des \LaTeXe-Kernels}^^A
+%
+% \section{Das Paket \pkg{twocolfix} -- Bugfix für den zweispaltigen Satz}
+%
+% Der \LaTeXe-Kernel enthält einen Fehler, der Kapitelüberschriften im
+% zweispaltigen Layout höher setzt, als im einspaltigen. Zwar ist der
+% \hrfn{http://latex-project.org/cgi-bin/ltxbugs2html?pr=latex/3126}{Fehler}
+% schon länger bekannt, allerdings noch nicht in den \LaTeXe-Kernel übernommen
+% worden. Das Paket \pkg{twocolfix} soll das Problem beheben. Eine Integration
+% des Bugfixes in \KOMAScript{} wurde bereits bei Markus Kohm angefragt, jedoch
+% \hrfn{http://www.komascript.de/node/1681}{von ihm nicht weiter verfolgt}.
+%
+% \ToDo{Als eingenständiges Paket herauslösen}[v2.??]
+% \ToDo{CheckCommand verwenden}[v2.??]
+%
+% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%
+% \iffalse
+%<*package>
+% \fi
+%
+% Es wird der fehlerhafte Befehl aus dem \LaTeXe-Kernel neu definiert.
+% Allerdings definieren die \KOMAScript-Klassen das Makro \cs{@topnewpage}
+% um und sichern vorher das Original in \cs{scr@topnewpage}. Daher wird der
+% neue Befehl erst temporär definiert.
+% \begin{macrocode}
+\long\def \@tempa [#1]{%
+ \@nodocument%
+ \@next\@currbox\@freelist{}{}%
+ \global \setbox\@currbox%
+ \vbox {%
+ \break%
+ \prevdepth\z@%
+ \begingroup%
+ \normalcolor%
+ \hsize\textwidth%
+% \end{macrocode}
+% Damit der Inhalt des optionale Argumentes mit den gleichen Absatzeinstellungen
+% gesetzt wird, werden diese nach \cs{@parboxrestore} für \KOMAScript-Klassen
+% wiederhergestellt.
+% \begin{macrocode}
+ \@parboxrestore%
+ \ifcsname KOMAClassName\endcsname%
+ \KOMAoptionOf[\KOMAoption{parskip}]{\KOMAClassFileName}{parskip}%
+ \fi%
+ \col@number \@ne%
+ \ignorespaces #1\par%
+ \ifdim\parskip>\z@\null\fi%
+ \vskip -\dbltextfloatsep%
+ \endgroup%
+ \ifdim\parskip>\z@\vskip\parskip\else\null\fi%
+ \vskip -\topskip%
+ }%
+ \begingroup%
+ \splitmaxdepth\maxdepth \splittopskip\topskip%
+ \setbox\@tempboxa \vsplit\@currbox to\z@%
+ \endgroup%
+ \ifdim \ht\@currbox>\textheight%
+ \ht\@currbox \textheight%
+ \fi%
+ \global \count\@currbox \tw@%
+ \@tempdima -\ht\@currbox%
+ \advance \@tempdima -\dbltextfloatsep%
+ \global \advance \@colht \@tempdima%
+ \ifx \@dbltoplist \@empty%
+ \else%
+ \@latexerr{Float(s) lost}\@ehb%
+ \let \@dbltoplist \@empty%
+ \fi%
+ \@cons \@dbltoplist \@currbox%
+ \global \@dbltopnum \m@ne%
+ \ifdim \@colht<2.5\baselineskip%
+ \@latex@warning@no@line {Optional argument of \noexpand\twocolumn
+ too tall on page \thepage}%
+ \@emptycol%
+ \if@firstcolumn%
+ \else%
+ \@emptycol%
+ \fi%
+ \else%
+ \global \vsize \@colht%
+ \global \@colroom \@colht%
+ \@floatplacement%
+ \fi%
+}
+% \end{macrocode}
+% Um eine Änderung am \LaTeXe-Kernel feststellen zu können, wird auf die zum
+% Zeitpunkt des Paketes aktuelle Definition von \cs{@topnewpage} geprüft.
+% \begin{macrocode}
+\long\def\@tempb[#1]{%
+ \@nodocument
+ \@next\@currbox\@freelist{}{}%
+ \global \setbox\@currbox
+ \color@vbox
+ \normalcolor
+ \vbox {%
+ \hsize\textwidth
+ \@parboxrestore
+ \col@number \@ne
+ #1%
+ \vskip -\dbltextfloatsep
+ }%
+ \color@endbox
+ \ifdim \ht\@currbox>\textheight
+ \ht\@currbox \textheight
+ \fi
+ \global \count\@currbox \tw@
+ \@tempdima -\ht\@currbox
+ \advance \@tempdima -\dbltextfloatsep
+ \global \advance \@colht \@tempdima
+ \ifx \@dbltoplist \@empty
+ \else
+ \@latexerr{Float(s) lost}\@ehb
+ \let \@dbltoplist \@empty
+ \fi
+ \@cons \@dbltoplist \@currbox
+ \global \@dbltopnum \m@ne
+ \ifdim \@colht<2.5\baselineskip
+ \@latex@warning@no@line {Optional argument of \noexpand\twocolumn
+ too tall on page \thepage}%
+ \@emptycol
+ \if@firstcolumn
+ \else
+ \@emptycol
+ \fi
+ \else
+ \global \vsize \@colht
+ \global \@colroom \@colht
+ \@floatplacement
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\@topnewpage}
+% \begin{macro}{\scr@topnewpage}
+% Nachdem der neue Befehl sowie die Definition aus dem \LaTeXe-Kernel zuerst
+% temporär definiert wurden, wird nun abhängig von der aktiven Klasse der
+% notwendige Befehl mit der neuen Definition überschrieben.
+% \begin{macrocode}
+\ifx\scr@topnewpage\@undefined
+ \@check@eq\@topnewpage\@tempb%
+ \let\@topnewpage\@tempa%
+\else
+ \@check@eq\scr@topnewpage\@tempb%
+ \let\scr@topnewpage\@tempa%
+\fi
+% \end{macrocode}
+% \end{macro}^^A \scr@topnewpage
+% \end{macro}^^A \@topnewpage
+%
+% \iffalse
+%</package>
+% \fi
+%
+% \Finale
+%
+\endinput
diff --git a/macros/latex/contrib/tudscr/source/tudscr-version.dtx b/macros/latex/contrib/tudscr/source/tudscr-version.dtx
new file mode 100644
index 0000000000..10d37f2e8b
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/tudscr-version.dtx
@@ -0,0 +1,324 @@
+% \CheckSum{135}
+% \iffalse meta-comment
+%
+% TUD-Script -- Corporate Design of Technische Universität Dresden
+% ----------------------------------------------------------------------------
+%
+% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2019
+%
+% ----------------------------------------------------------------------------
+%
+% This work may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License, version 1.3c of the license. The latest
+% version of this license is in http://www.latex-project.org/lppl.txt and
+% version 1.3c or later is part of all distributions of LaTeX 2005/12/01
+% or later and of this work. This work has the LPPL maintenance status
+% "author-maintained". The current maintainer and author of this work
+% is Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+% in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
+% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+% Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
+% oder später und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status
+% "author-maintained", wird somit allein durch den Autor verwaltet. Der
+% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: tudscr-version.dtx
+% \fi
+%
+% \iffalse
+% Nicht verwirren lassen! In dieser Datei steht ein Teil der Dokumentation und
+% des Codes vor dem Treiber. Das ist notwendig, weil der Teil des Codes bereits
+% am Anfang des Treibers selbst benötigt wird. Genauer gesagt handelt es sich
+% dabei um den Teil zur Versionsangbabe.
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v1.0}{2012/10/31}{\TUDScript-Bundle erstmalig veröffentlicht}^^A
+% \changes{v2.00}{2014/04/21}{\TUDScript-Bundle auf \pkg{docstrip} umgestellt
+% und stark erweitert}^^A
+% \changes{v2.01}{2014/04/24}{Anpassungen in Dokumentation und
+% Schriftinstallation, Fehlerkorrekturen}^^A
+% \changes{v2.02}{2014/05/14}{Problem globaler Längenänderungen behoben}^^A
+% \changes{v2.02}{2014/05/16}{Umbennenung mehrerer Befehle zur Kompatibilität
+% mit anderen Paketen}^^A
+%
+% \section{Die Version des \texorpdfstring{\TUDScript}{TUD-Script}-Bundles}
+%
+% Für alle Klassen und Paketen, die zum \TUDScript-Bundle auf \KOMAScript-Basis
+% gehören wird als erstes die aktuelle Version festgelgt.
+%
+% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%
+% \begin{macro}{\TUD@Version}
+% \begin{macro}{\TUD@Version@Check}
+% \changes{v2.02}{2014/07/22}{Expandieren der Versionsangabe bei der Verwendung
+% von \pkg{docstrip} ermöglicht}^^A
+% \begin{macro}{\TUD@Version@KOMA}
+% \begin{macro}{\TUDScriptVersion}
+% \begin{macro}{\TUDScriptVersionNumber}
+% Das Makro \cs{TUD@Version} gibt an, zu welcher \TUDScript"~Version die
+% Datei gehört. Die Klassen und Pakete des Bundles verwenden dieses Makro
+% außerdem zur eigenen Versionsangabe. Je nachdem, ob \cs{TUD@Version}
+% bereits definiert ist oder nicht, wird mit \cs{TUD@Version@Check} die
+% Definition überprüft oder eine globale Definition vorgenommen. Da das Ganze
+% auch bei der Erstellung der Dokumentation geschieht, wird \cs{makeatletter}
+% innerhalb einer Gruppe verwendet. Das Makro \cs{TUD@Version@KOMA} definiert
+% die mindestens notwendige Version von \KOMAScript. In \cs{TUDScriptVersion}
+% wird die Versioninformation für den Anwender definiert.
+% \begin{macrocode}
+\begingroup
+ \catcode`\@11\relax
+%<*!(package|class)>
+ \ifx\newcommand\undefined
+ \gdef\TUD@Version@Check#1{%
+ \gdef\TUD@Version{\space\space#1}%
+ \gdef\TUDScriptVersion{\space\space#1}%
+ \aftergroup\endinput%
+ }
+ \else
+%</!(package|class)>
+ \ifx\TUD@Version\@undefined
+ \newcommand*\TUD@Version@Check[1]{%
+ \gdef\TUD@Version{#1}%
+ \gdef\TUDScriptVersion{#1}%
+ \def\@tempb##1 v##2 ##3\relax##4\relax{\gdef\TUDScriptVersionNumber{##2}}%
+ \edef\@tempa{\TUD@Version}%
+ \expandafter\@tempb\@tempa\relax? ? \relax\relax%
+ \gdef\TUD@Version@KOMA{3.25}%
+ }
+ \else
+ \newcommand*\TUD@Version@Check[1]{%
+ \def\@tempa{#1}%
+ \ifx\TUD@Version\@tempa\else%
+ \@latex@warning@no@line{%
+ \noexpand\TUD@Version\space is `\TUD@Version',\MessageBreak%
+ but `#1' was expected!\MessageBreak%
+ You should not use classes, packages or files from\MessageBreak%
+ different TUD-Script-Bundle versions%
+ }%
+ \fi%
+ }
+ \fi
+%<*!(package|class)>
+ \fi
+%</!(package|class)>
+ \TUD@Version@Check{2019/08/27 v2.06d TUD-Script}
+\endgroup
+% \end{macrocode}
+% \end{macro}^^A \TUDScriptVersionNumber
+% \end{macro}^^A \TUDScriptVersion
+% \end{macro}^^A \TUD@Version@KOMA
+% \end{macro}^^A \TUD@Version@Check
+% \end{macro}^^A \TUD@Version
+%
+% \iffalse
+%<*dtx>
+% \fi
+%
+\ProvidesFile{tudscr-version.dtx}[\TUDScriptVersion\space (versions)]
+%
+% \iffalse
+\documentclass[english,ngerman,xindy]{tudscrdoc}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{tudscrfonts}
+\KOMAoptions{parskip=half-}
+\usepackage{bookmark}
+\usepackage[babel]{microtype}
+
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tudscr-version.dtx}
+\title{\file{\filename}}
+\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
+\date{\fileversion\nobreakspace(\filedate)}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% Als erstes das benötigte \LaTeX-Format.
+% \begin{macrocode}
+%<package|class>\NeedsTeXFormat{LaTeX2e}
+% \end{macrocode}
+% \begin{macro}{\tudscrmail}
+% Die E"~Mail-Adresse für Supportanfragen.
+% \begin{macrocode}
+%<package|class>\providecommand*\tudscrmail{hanisch.latex@outlook.com}
+% \end{macrocode}
+% \end{macro}^^A \tudscrmail
+%
+% \iffalse
+%<*class>
+% \fi
+%
+% \begin{macro}{\TUD@ProvidesClass}
+% \changes{v2.04}{2015/06/13}{neu}^^A
+% \begin{macro}{\TUD@ProvidesWrapperClass}
+% \changes{v2.04}{2015/06/13}{neu}^^A
+% \begin{macro}{\TUD@Class@Name}
+% \changes{v2.04}{2015/06/12}{neu}^^A
+% \begin{macro}{\TUD@Class@Parent}
+% \changes{v2.04}{2015/06/12}{neu}^^A
+% \begin{macro}{\TUD@Class@KOMA}
+% \changes{v2.04}{2015/06/12}{neu}^^A
+% Mit diesen Befehlen erfolgt die Versionsangabe der \TUDScript-Klassen beim
+% Laden. Dabei werden hier einmalig die Namen der jeweiligen Klassen definiert.
+% Hierfür werden die Befehle \cs{TUD@ProvidesClass} für die Hauptklassen und
+% \cs{TUD@ProvidesWrapperClass} für auf diesen aufbauende Wrapper-Klassen
+% genutzt. Das erste Argument ist die zu definierende Klasse, das zweite
+% Argument entspricht der Basis-Klasse. Das dritte Argument enthält eine kurze
+% Beschreibung.
+% \begin{macrocode}
+%<*!inherit>
+\newcommand*\TUD@ProvidesClass[3]{%
+ \ProvidesClass{#1}[%
+%!TUD@Version
+ #3 (#2)%
+ ]%
+ \newcommand*\TUD@Class@KOMA{#2}%
+ \ifx\TUD@Class@Parent\@undefined%
+ \newcommand*\TUD@Class@Name{#1}%
+ \TUD@Class@Info%
+ \fi%
+}
+%</!inherit>
+%<*inherit>
+\newcommand*\TUD@ProvidesWrapperClass[3]{%
+ \ProvidesClass{#1}[%
+%!TUD@Version
+ #3 (#2)%
+ ]%
+ \newcommand*\TUD@Class@Parent{#2}%
+ \newcommand*\TUD@Class@Name{#1}%
+ \TUD@Class@Info%
+}
+%</inherit>
+% \end{macrocode}
+% \end{macro}^^A \TUD@Class@KOMA
+% \end{macro}^^A \TUD@Class@Parent
+% \end{macro}^^A \TUD@Class@Name
+% \end{macro}^^A \TUD@ProvidesWrapperClass
+% \end{macro}^^A \TUD@ProvidesClass
+% \begin{macro}{\TUD@Class@Info}
+% \changes{v2.04}{2015/06/13}{neu}^^A
+% Beim Verwenden der Klassen wird in der log-Datei ein Vermerk mit \cs{typeout}
+% erstellt.
+% \begin{macrocode}
+\providecommand*\TUD@Class@Info{%
+ \typeout{+------------------------------------------------------------------}%
+ \typeout{| Corporate Design of Technische Universitaet Dresden}%
+ \typeout{| Class: \TUD@Class@Name}%
+ \typeout{| Version: \TUD@Version}%
+ \typeout{| Author: Falk Hanisch (\tudscrmail)}%
+ \typeout{| Repository: https://github.com/tud-cd/tudscr}%
+ \typeout{| Forum: https://latex.wcms-file3.tu-dresden.de}%
+ \typeout{+------------------------------------------------------------------}%
+}
+% \end{macrocode}
+% \end{macro}^^A \TUD@Class@Info
+% Hier erfolgt nun die Indentifizierung und die Zuweisung der Klassennamen.
+% \begin{macrocode}
+%<book>\TUD@ProvidesClass{tudscrbook}{scrbook}{document class}
+%<report>\TUD@ProvidesClass{tudscrreprt}{scrreprt}{document class}
+%<article>\TUD@ProvidesClass{tudscrartcl}{scrartcl}{document class}
+%<poster>\TUD@ProvidesClass{tudscrposter}{scrartcl}{poster class}
+%<doc>\TUD@ProvidesClass{tudscrdoc}{scrartcl}{source code documentation class}
+%<manual>\TUD@ProvidesWrapperClass{tudscrmanual}{tudscrreprt}{manual class}
+% \end{macrocode}
+% \begin{macro}{\TUDScriptClassName}
+% \begin{macro}{\TUDClassName}
+% Die Benutzermakros für den Namen der verwendeten \TUDScript-Klasse.
+% \begin{macrocode}
+\edef\TUDScriptClassName{\TUD@Class@Name}
+\providecommand*\TUDClassName{\TUDScriptClassName}
+% \end{macrocode}
+% \end{macro}^^A \TUDClassName
+% \end{macro}^^A \TUDScriptClassName
+%
+% \iffalse
+%</class>
+%<*package&(supervisor|comp|tutorial)>
+% \fi
+%
+% \section{Verwendbarkeit von \TUDScript-Paketen}
+%
+% Einige Pakete sind nur mit den \TUDScript-Klassen verwendbar. Diese erzeugen
+% einen Fehler, wenn sie nicht mit diesen verwendet werden.
+% \begin{macrocode}
+\ifx\TUD@Class@Name\@undefined
+ \PackageError{%
+%<supervisor> tudscrsupervisor%
+%<comp&base> tudscrcomp%
+%<comp&book> tudscrcomp-book%
+%<comp&poster> tudscrcomp-poster%
+%<tutorial> tudscrtutorial%
+ }{Unsupported class found}{%
+ This package can only be used with a class out of the\MessageBreak%
+ tudscr bundle (tudscrbook, tudscrreprt, tudscrartcl, tudscrposter).%
+ }%
+ \endinput%
+\fi
+% \end{macrocode}
+%
+% \iffalse
+%</package&(supervisor|comp|tutorial)>
+% \fi
+%
+% \section{Das \TUDScript-Logo}
+% \begin{macro}{\TUDScript}
+% Der Schriftzug von \TUDScript.
+% \begin{macrocode}
+%<*package|class>
+\@ifundefined{TUDScript}{%
+ \DeclareRobustCommand\TUDScript{%
+ \textsf{%
+ T\kern.05em U\kern.05em D\kern.1em-\kern.1em Script%
+ }%
+ \ifcsname xspace\endcsname%
+ \xspace%
+ \fi%
+ }%
+}{}
+%</package|class>
+% \end{macrocode}
+% \end{macro}^^A \TUDScript
+%
+% \Finale
+%
+\endinput
diff --git a/macros/latex/contrib/tudscr/source/tudscr.ins b/macros/latex/contrib/tudscr/source/tudscr.ins
new file mode 100644
index 0000000000..3503f12938
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/tudscr.ins
@@ -0,0 +1,287 @@
+%
+% TUD-Script -- Corporate Design of Technische Universitaet Dresden
+% ----------------------------------------------------------------------------
+%
+% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2019
+%
+% ----------------------------------------------------------------------------
+%
+% This work may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License, version 1.3c of the license. The latest
+% version of this license is in http://www.latex-project.org/lppl.txt and
+% version 1.3c or later is part of all distributions of LaTeX 2005/12/01
+% or later and of this work. This work has the LPPL maintenance status
+% "author-maintained". The current maintainer and author of this work
+% is Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+% in der Version 1.3c, verteilt und/oder veraendert werden. Die aktuelle
+% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+% Version 1.3c oder spaeter ist Teil aller Verteilungen von LaTeX 2005/12/01
+% oder spaeter und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status
+% "author-maintained", wird somit allein durch den Autor verwaltet. Der
+% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+\input docstrip.tex
+\begingroup
+\catcode`\%=12 \catcode`\*=14
+\gdef\processLineX%#1{*
+ \ifcase\ifx%#10\else
+ \ifx<#11\else
+ \ifx!#12\else 3\fi\fi\fi\relax
+ \expandafter\putMetaComment\or
+ \expandafter\checkOption\or
+ \expandafter\expandVariable\or
+ \expandafter\removeComment\fi
+ #1}
+\endgroup
+\def\expandVariable!#1\endLine{%
+ \advance\codeLinesPassed\@ne
+ \maybeMsg{x}%
+ \edef\inLine{\csname #1\endcsname}%
+ \let\do\putline@do
+ \activefiles
+}
+\@@input tudscr-version.dtx
+\keepsilent
+\preamble
+
+TUD-Script -- Corporate Design of Technische Universitaet Dresden
+
+\TUD@Version
+
+Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2019
+
+This file was generated from file(s) of the TUD-Script bundle.
+----------------------------------------------------------------------------
+
+This work may be distributed and/or modified under the conditions
+of the LaTeX Project Public License, version 1.3c of the license.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3c or later is part of all distributions of
+LaTeX 2005/12/01 or later and of this work.
+
+This work has the LPPL maintenance status "author-maintained".
+
+The current maintainer and author of this work is Falk Hanisch.
+
+\endpreamble
+\askforoverwritefalse
+\usedir{tex/latex/tudscr}
+\generate{%
+ \usepreamble\defaultpreamble%
+ \file{tudscrbase.sty}{%
+ \from{tudscr-version.dtx}{package,base}%
+ \from{tudscr-base.dtx}{package,base}%
+ }
+ \file{tudscrbook.cls}{%
+ \from{tudscr-version.dtx}{class,book}%
+ \from{tudscr-base.dtx}{class,book,load}%
+ \from{tudscr-base.dtx}{class,book,option}%
+ \from{tudscr-fonts.dtx}{class,book,option}%
+ \from{tudscr-area.dtx}{class,book,option}%
+ \from{tudscr-pagestyle.dtx}{class,book,option}%
+ \from{tudscr-layout.dtx}{class,book,option}%
+ \from{tudscr-title.dtx}{class,book,option}%
+ \from{tudscr-frontmatter.dtx}{class,book,option}%
+ \from{tudscr-misc.dtx}{class,book,option}%
+ \from{tudscr-comp.dtx}{class,book,option}%
+ \from{tudscr-misc.dtx}{class,book,execute}%
+ \from{tudscr-base.dtx}{class,book,body}%
+ \from{tudscr-fonts.dtx}{class,book,body}%
+ \from{tudscr-fields.dtx}{class,book,body}%
+ \from{tudscr-localization.dtx}{class,book,body}%
+ \from{tudscr-area.dtx}{class,book,body}%
+ \from{tudscr-pagestyle.dtx}{class,book,body}%
+ \from{tudscr-layout.dtx}{class,book,body}%
+ \from{tudscr-title.dtx}{class,book,body}%
+ \from{tudscr-frontmatter.dtx}{class,book,body}%
+ \from{tudscr-comp.dtx}{class,book,body}%
+ \from{tudscr-misc.dtx}{class,book,body}%
+ }
+ \file{tudscrreprt.cls}{%
+ \from{tudscr-version.dtx}{class,report}%
+ \from{tudscr-base.dtx}{class,report,load}%
+ \from{tudscr-base.dtx}{class,report,option}%
+ \from{tudscr-fonts.dtx}{class,report,option}%
+ \from{tudscr-area.dtx}{class,report,option}%
+ \from{tudscr-pagestyle.dtx}{class,report,option}%
+ \from{tudscr-layout.dtx}{class,report,option}%
+ \from{tudscr-title.dtx}{class,report,option}%
+ \from{tudscr-frontmatter.dtx}{class,report,option}%
+ \from{tudscr-misc.dtx}{class,report,option}%
+ \from{tudscr-comp.dtx}{class,report,option}%
+ \from{tudscr-misc.dtx}{class,report,execute}%
+ \from{tudscr-base.dtx}{class,report,body}%
+ \from{tudscr-fonts.dtx}{class,report,body}%
+ \from{tudscr-fields.dtx}{class,report,body}%
+ \from{tudscr-localization.dtx}{class,report,body}%
+ \from{tudscr-area.dtx}{class,report,body}%
+ \from{tudscr-pagestyle.dtx}{class,report,body}%
+ \from{tudscr-layout.dtx}{class,report,body}%
+ \from{tudscr-title.dtx}{class,report,body}%
+ \from{tudscr-frontmatter.dtx}{class,report,body}%
+ \from{tudscr-comp.dtx}{class,report,body}%
+ \from{tudscr-misc.dtx}{class,report,body}%
+ }
+ \file{tudscrartcl.cls}{%
+ \from{tudscr-version.dtx}{class,article}%
+ \from{tudscr-base.dtx}{class,article,load}%
+ \from{tudscr-base.dtx}{class,article,option}%
+ \from{tudscr-fonts.dtx}{class,article,option}%
+ \from{tudscr-area.dtx}{class,article,option}%
+ \from{tudscr-pagestyle.dtx}{class,article,option}%
+ \from{tudscr-layout.dtx}{class,article,option}%
+ \from{tudscr-title.dtx}{class,article,option}%
+ \from{tudscr-frontmatter.dtx}{class,article,option}%
+ \from{tudscr-misc.dtx}{class,article,option}%
+ \from{tudscr-comp.dtx}{class,article,option}%
+ \from{tudscr-misc.dtx}{class,article,execute}%
+ \from{tudscr-base.dtx}{class,article,body}%
+ \from{tudscr-fonts.dtx}{class,article,body}%
+ \from{tudscr-fields.dtx}{class,article,body}%
+ \from{tudscr-localization.dtx}{class,article,body}%
+ \from{tudscr-area.dtx}{class,article,body}%
+ \from{tudscr-pagestyle.dtx}{class,article,body}%
+ \from{tudscr-layout.dtx}{class,article,body}%
+ \from{tudscr-title.dtx}{class,article,body}%
+ \from{tudscr-frontmatter.dtx}{class,article,body}%
+ \from{tudscr-comp.dtx}{class,article,body}%
+ \from{tudscr-misc.dtx}{class,article,body}%
+ }
+ \file{tudscrposter.cls}{%
+ \from{tudscr-version.dtx}{class,poster}%
+ \from{tudscr-base.dtx}{class,poster,load}%
+ \from{tudscr-base.dtx}{class,poster,option}%
+ \from{tudscr-fonts.dtx}{class,poster,option}%
+ \from{tudscr-area.dtx}{class,poster,option}%
+ \from{tudscr-pagestyle.dtx}{class,poster,option}%
+ \from{tudscr-layout.dtx}{class,poster,option}%
+ \from{tudscr-title.dtx}{class,poster,option}%
+ \from{tudscr-frontmatter.dtx}{class,poster,option}%
+ \from{tudscr-misc.dtx}{class,poster,option}%
+ \from{tudscr-comp.dtx}{class,poster,option}%
+ \from{tudscr-misc.dtx}{class,poster,execute}%
+ \from{tudscr-base.dtx}{class,poster,body}%
+ \from{tudscr-fonts.dtx}{class,poster,body}%
+ \from{tudscr-fields.dtx}{class,poster,body}%
+ \from{tudscr-localization.dtx}{class,poster,body}%
+ \from{tudscr-area.dtx}{class,poster,body}%
+ \from{tudscr-pagestyle.dtx}{class,poster,body}%
+ \from{tudscr-layout.dtx}{class,poster,body}%
+ \from{tudscr-title.dtx}{class,poster,body}%
+ \from{tudscr-frontmatter.dtx}{class,poster,body}%
+ \from{tudscr-comp.dtx}{class,poster,body}%
+ \from{tudscr-misc.dtx}{class,poster,body}%
+ }
+}
+\generate{%
+ \usepreamble\defaultpreamble%
+ \file{tudscrsupervisor.sty}{%
+ \from{tudscr-version.dtx}{package,supervisor}%
+ \from{tudscr-supervisor.dtx}{package,supervisor}%
+ \from{tudscr-fields.dtx}{package,supervisor}%
+ \from{tudscr-localization.dtx}{package,supervisor}%
+ }
+}
+\generate{%
+ \usepreamble\defaultpreamble%
+ \file{tudscrfonts.sty}{%
+ \from{tudscr-version.dtx}{package,fonts}%
+ \from{tudscr-fonts.dtx}{package,fonts,identify}%
+ \from{tudscr-base.dtx}{package,fonts,load}%
+ \from{tudscr-fonts.dtx}{package,fonts,option}%
+ \from{tudscr-misc.dtx}{package,fonts,option}%
+ \from{tudscr-comp.dtx}{package,fonts,option}%
+ \from{tudscr-misc.dtx}{package,fonts,execute}%
+ \from{tudscr-fonts.dtx}{package,fonts,body}%
+ \from{tudscr-comp.dtx}{package,fonts,body}%
+ \from{tudscr-misc.dtx}{package,fonts,body}%
+ }
+}
+\generate{%
+ \usepreamble\defaultpreamble%
+ \file{tudscrcolor.sty}{%
+ \from{tudscr-version.dtx}{package,color}%
+ \from{tudscr-color.dtx}{package,color}%
+ }
+ \file{twocolfix.sty}{%
+ \from{tudscr-twocolfix.dtx}{package}%
+ }
+ \file{mathswap.sty}{%
+ \from{tudscr-mathswap.dtx}{package}%
+ }
+}
+\generate{%
+ \usepreamble\defaultpreamble%
+ \file{tudscrcomp.sty}{%
+ \from{tudscr-version.dtx}{package,comp,base}%
+ \from{tudscr-comp.dtx}{package,comp,base,identify}%
+ }
+ \file{tudscrcomp-book.sty}{%
+ \from{tudscr-version.dtx}{package,comp,book}%
+ \from{tudscr-comp.dtx}{package,comp,book,identify}%
+ \from{tudscr-comp.dtx}{package,comp,book,option}%
+ \from{tudscr-misc.dtx}{package,comp,book,execute}%
+ \from{tudscr-comp.dtx}{package,comp,book,body}%
+ }
+ \file{tudscrcomp-poster.sty}{%
+ \from{tudscr-version.dtx}{package,comp,poster}%
+ \from{tudscr-comp.dtx}{package,comp,poster,identify}%
+ \from{tudscr-comp.dtx}{package,comp,poster,option}%
+ \from{tudscr-misc.dtx}{package,comp,poster,execute}%
+ \from{tudscr-comp.dtx}{package,comp,poster,body}%
+ }
+}
+\generate{%
+ \usepreamble\defaultpreamble%
+ \file{fix-tudscrfonts.sty}{%
+ \from{tudscr-version.dtx}{package,fixfonts}%
+ \from{tudscr-comp.dtx}{package,fixfonts,identify}%
+ \from{tudscr-base.dtx}{package,fixfonts,load}%
+ \from{tudscr-layout.dtx}{package,fixfonts,option}%
+ \from{tudscr-misc.dtx}{package,fixfonts,execute}%
+ \from{tudscr-layout.dtx}{package,fixfonts,body}%
+ \from{tudscr-comp.dtx}{package,fixfonts,body}%
+ }
+}
+\generate{%
+ \usepreamble\defaultpreamble%
+ \file{tudscrmanual.cls}{%
+ \from{tudscr-version.dtx}{class,manual,inherit}%
+ \from{tudscr-manual.dtx}{class,manual}%
+ \from{tudscr-base.dtx}{class,manual,inherit,load}%
+ \from{tudscr-manual.dtx}{class,manual,option}%
+ \from{tudscr-misc.dtx}{class,manual,inherit,execute}%
+ \from{tudscr-manual.dtx}{class,manual,body}%
+ \from{tudscr-fields.dtx}{class,manual,body}%
+ \from{tudscr-localization.dtx}{class,manual,body}%
+ \from{tudscr-texindy.dtx}{class,manual}%
+ }
+ \file{tudscrtutorial.sty}{%
+ \from{tudscr-version.dtx}{package,tutorial}%
+ \from{tudscr-manual.dtx}{package,tutorial,identify}%
+ \from{tudscr-base.dtx}{package,tutorial,load}%
+ \from{tudscr-manual.dtx}{package,tutorial,option}%
+ \from{tudscr-misc.dtx}{package,tutorial,execute}%
+ \from{tudscr-manual.dtx}{package,tutorial,body}%
+ \from{tudscr-texindy.dtx}{package,tutorial}%
+ }
+}
+\generate{%
+ \usepreamble\defaultpreamble%
+ \file{tudscrdoc.cls}{%
+ \from{tudscr-version.dtx}{class,doc}%
+ \from{tudscr-base.dtx}{class,doc,load}%
+ \from{tudscr-doc.dtx}{class,doc,option}%
+ \from{tudscr-localization.dtx}{class,doc}%
+ \from{tudscr-manual.dtx}{class,doc}%
+ \from{tudscr-doc.dtx}{class,doc,body}%
+ \from{tudscr-texindy.dtx}{class,doc}%
+ }
+}
+\endbatchfile
diff --git a/macros/latex/contrib/tudscr/source/tudscrsource.tex b/macros/latex/contrib/tudscr/source/tudscrsource.tex
new file mode 100644
index 0000000000..f1bbcf9d9c
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/tudscrsource.tex
@@ -0,0 +1,106 @@
+\begingroup
+ \def\ProvidesFile#1[#2]{\csname endinput\endcsname}%
+ \input tudscr-version.dtx
+ \gdef\filename{\jobname}
+\endgroup
+\ProvidesFile{tudscrsource.tex}[\TUDScriptVersion (sourcedoc)]
+\documentclass[english,ngerman,xindy]{tudscrdoc}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{tudscrfonts}
+\KOMAoptions{parskip=half-}
+\usepackage{bookmark}
+\usepackage[babel]{microtype}
+
+%\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tudscrsource.tex}
+
+\begin{document}
+\addtokomafont{subject}{\sffamily}
+\subject{\TUDScript basierend auf \KOMAScript}
+\title{Ein \LaTeX-Bundle für Dokumente \mbox{im neuen \CD der} \mbox{\TnUD}}
+\subtitle{Dokumentierter Quelltext}
+\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
+\date{\fileversion\nobreakspace(\filedate)}
+
+\makeatletter
+\begingroup%
+ \def\and{, }%
+ \let\thanks\@gobble%
+ \let\footnote\@gobble%
+ \let\mailto\@gobble%
+ \let\qquad\relax%
+ \hypersetup{%
+ pdfauthor = {\@author},%
+ pdftitle = {\@title},%
+ pdfsubject = {Quelltextdokumentation des \TUDScript-Bundles},%
+ pdfkeywords = {LaTeX, \TUDScript, Quelltext},%
+ }%
+\endgroup%
+\let\@maketitle\scr@maketitle%
+\makeatother
+
+
+\maketitle
+
+\ToDo{Release-Prozess mit \app{make} und \file{Makefile}}[v2.07]
+
+Das \TUDScript-Bundle setzt das \TUDCD für \LaTeXe{} um. Die enthaltenen
+Klassen und Pakete basieren auf dem \KOMAScript-Bundle und sind sehr eng mit
+diesen verwoben. Momentan ergänzen sie das Vorlagenpaket von Klaus Bergmann,
+das auf den Standard-\LaTeX-Klassen basiert und als veraltet betrachtet werden
+kann. Die dazugehörigen Klassen sollen mittel- bis langfristig ersetzt werden.%
+\footnote{%
+ aktuell ist dies \cls{tudbook}, geplant \cls{tudfax}, \cls{tudletter},
+ \cls{tudform}, \cls{tudhaus} und evtl. auch \cls{tudbeamer}%
+}
+Es handelt sich bei diesem Dokument \emph{nicht} um das Anwenderhandbuch
+sondern um den dokumentierten Quelltext der Implementierung von \TUDScript.
+Das Anwenderhandbuch kann über die Kommandozeile respektive das Terminal mit
+dem Aufruf \texttt{texdoc tudscr} geöffnet werden.
+
+\tableofcontents
+\clearpage
+
+\DocInclude{tudscr-version}
+\DocInclude{tudscr-base}
+\DocInclude{tudscr-fonts}
+\DocInclude{tudscr-fields}
+\DocInclude{tudscr-localization}
+\DocInclude{tudscr-area}
+\DocInclude{tudscr-pagestyle}
+\DocInclude{tudscr-layout}
+\DocInclude{tudscr-title}
+\DocInclude{tudscr-frontmatter}
+\DocInclude{tudscr-comp}
+\DocInclude{tudscr-misc}
+\DocInclude{tudscr-color}
+\DocInclude{tudscr-supervisor}
+
+\DocInclude{tudscr-twocolfix}
+\DocInclude{tudscr-mathswap}
+
+\ifdefined\tudfinalflag\else
+\DocInclude{tudscr-manual}
+\DocInclude{tudscr-doc}
+\DocInclude{tudscr-texindy}
+%\DocInclude{install/tudscr-metrics}
+%\DocInclude{install/tudscr-scripts}
+\fi
+
+\addpart{\appendixname}
+\vspace*{-2\baselineskip}
+\PrintIndex
+\clearpage
+\PrintChanges
+\clearpage
+\PrintToDos
+\clearpage
+\end{document}