summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/tudscr/tudscr-pagestyle.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-12-22 23:40:36 +0000
committerKarl Berry <karl@freefriends.org>2014-12-22 23:40:36 +0000
commit4f902263451a27826c05b01add75eba8ad70bcbb (patch)
tree122905b415c3dad65734d26cd0a706f6e13729b4 /Master/texmf-dist/source/latex/tudscr/tudscr-pagestyle.dtx
parent6a25d658147c100681ee893ce36f28ef9b689995 (diff)
tudscr has fallback for free fonts, so fine, restore
git-svn-id: svn://tug.org/texlive/trunk@35882 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/tudscr/tudscr-pagestyle.dtx')
-rw-r--r--Master/texmf-dist/source/latex/tudscr/tudscr-pagestyle.dtx2005
1 files changed, 2005 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-pagestyle.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-pagestyle.dtx
new file mode 100644
index 00000000000..f3c196cde38
--- /dev/null
+++ b/Master/texmf-dist/source/latex/tudscr/tudscr-pagestyle.dtx
@@ -0,0 +1,2005 @@
+% \CheckSum{1513}
+% \iffalse meta-comment
+% ======================================================================
+%
+% Das Corporate Design der TU Dresden auf Basis der KOMA-Script-Klassen
+%
+% ======================================================================
+% 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
+% version 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,
+% Version 1.3c, verteilt und/oder veraendert werden.
+% Die neuste Version dieser Lizenz ist
+% http://www.latex-project.org/lppl.txt
+% und Version 1.3c ist Teil aller Verteilungen von LaTeX
+% Version 2005/12/01 oder spaeter und dieses Werks.
+% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained"
+% (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
+%<*driver>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{tudscr-pagestyle.dtx}[%
+ 2014/12/17 v2.02 TUD-KOMA-Script (pagestyle)%
+]
+\RequirePackage[ngerman=ngerman-x-latest]{hyphsubst}
+\documentclass[english,ngerman]{tudscrdoc}
+\usepackage{selinput}\SelectInputMappings{adieresis={ä},germandbls={ß}}
+\usepackage[T1]{fontenc}
+\usepackage{babel}
+\usepackage{tudscrfonts} % only load this package, if the fonts are installed
+\KOMAoptions{parskip=half-}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tudscr-pagestyle.dtx}
+\begin{document}
+ \maketitle
+ \DocInput{\filename}
+\end{document}
+%</driver>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.02}{2014/06/23}{Unterstützung für \pkg{titlepage} entfernt}%^^A
+% \changes{v2.02}{2014/07/08}{Verwendung \cs{FamilyKeyState}}%^^A
+%
+% \section{Der Seitenstil des \CDs}
+%
+% 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.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \subsection{Definition der konstanten Größen und Maße}
+%
+% Die Vorlagen sollen neben den vom \CD vorgegebenen Seitenrändern weitere
+% Layouts 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 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.
+%
+% Als erstes werden die Standardmaße für die Seitenränder im \CD definiert,
+% danach speziell für die \env{tudpage}"=Umgebung.
+%
+% \iffalse
+%<*class&body>
+% \fi
+%
+% \begin{length}{\tud@dim@left}
+% \begin{length}{\tud@dim@right}
+% \begin{length}{\tud@dim@both}
+% Die Seitenränder für links und rechts sowie deren Summe, welche später für
+% weitere Layouts dazu verwendet wird, diese anteilig zu verteilen.
+% \begin{macrocode}
+\newlength{\tud@dim@left}
+\newlength{\tud@dim@right}
+\newlength{\tud@dim@both}
+% \end{macrocode}
+% \end{length}^^A \tud@dim@both
+% \end{length}^^A \tud@dim@right
+% \end{length}^^A \tud@dim@left
+% \begin{length}{\tud@dim@top}
+% \begin{length}{\tud@dim@bottom}
+% \begin{length}{\tud@dim@footskip}
+% Die Seitenränder für sowohl oben als auch unten sowie der Abstand zwischen
+% Textkörper und Fußzeile.
+% \begin{macrocode}
+\newlength{\tud@dim@top}
+\newlength{\tud@dim@bottom}
+\newlength{\tud@dim@footskip}
+% \end{macrocode}
+% \end{length}^^A \tud@dim@footskip
+% \end{length}^^A \tud@dim@bottom
+% \end{length}^^A \tud@dim@top
+% \begin{length}{\tud@dim@headheight}
+% \begin{length}{\tud@dim@barheight}
+% \begin{length}{\tud@dim@headsep}
+% 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.
+% \begin{macrocode}
+\newlength{\tud@dim@headheight}
+\newlength{\tud@dim@barheight}
+\newlength{\tud@dim@headsep}
+% \end{macrocode}
+% \end{length}^^A \tud@dim@headsep
+% \end{length}^^A \tud@dim@barheight
+% \end{length}^^A \tud@dim@headheight
+% \begin{length}{\tud@dim@logox}
+% \begin{length}{\tud@dim@logoy}
+% \begin{length}{\tud@dim@logowidth}
+% \begin{length}{\tud@dim@logoheight}
+% Außerdem müssen noch die Abmessungen und die Position des TUD-Logos definiert
+% werden, nämlich 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@dim@logox}
+\newlength{\tud@dim@logoy}
+\newlength{\tud@dim@logowidth}
+\newlength{\tud@dim@logoheight}
+% \end{macrocode}
+% \end{length}^^A \tud@dim@logoheight
+% \end{length}^^A \tud@dim@logowidth
+% \end{length}^^A \tud@dim@logoy
+% \end{length}^^A \tud@dim@logox
+% \begin{length}{\tud@dim@line}
+% \changes{v2.02}{2014/06/23}{neu}%^^A
+% \begin{length}{\tud@dim@thinline}
+% \begin{length}{\tud@dim@heavyline}
+% Die Linienstärke der Outline im Kopf ist für ein monochromes Layout schmaler
+% als im Layout mit farbigem Hintergrund.\footnote{%
+% monochrom \cs{tud@dim@thinline}, koloriert \cs{tud@dim@heavyline}}%
+% Da im Dokument beide Varianten vorkommen können, wird die Breite
+% \cs{tud@dim@line} durch den Seitenstil situativ entweder auf den Wert von
+% \cs{tud@dim@thinline} oder aber \cs{tud@dim@heavyline} gesetzt.
+% \begin{macrocode}
+\newlength{\tud@dim@line}
+\newlength{\tud@dim@thinline}
+\newlength{\tud@dim@heavyline}
+% \end{macrocode}
+% \end{length}^^A \tud@dim@heavyline
+% \end{length}^^A \tud@dim@thinline
+% \end{length}^^A \tud@dim@line
+% \begin{length}{\tud@dim@headingsvskip}
+% Die Länge für den vertikalen Standardversatz der Überschriften.
+% \begin{macrocode}
+\newlength{\tud@dim@headingsvskip}
+% \end{macrocode}
+% \end{length}^^A \tud@dim@headingsvskip
+% \begin{length}{\tud@dim@headdiff}
+% \changes{v2.02}{2014/06/23}{neu}%^^A
+% \begin{length}{\tud@dim@ddcdiff}
+% \changes{v2.02}{2014/06/23}{neu}%^^A
+% \begin{length}{\tud@dim@ddcfoot}
+% \changes{v2.02}{2014/06/23}{neu, Umbenennung von \cs{tud@dim@ddcheight}}%^^A
+% Zu guter Letzt noch die Höhe des \DDC-Logos in der Fußzeile. Die maximale Höhe
+% der Fußzeile ist fest vorgegeben.
+% \begin{macrocode}
+\newlength{\tud@dim@headdiff}
+\newlength{\tud@dim@ddcdiff}
+\newlength{\tud@dim@ddcfoot}
+% \end{macrocode}
+% \end{length}^^A \tud@dim@ddcfoot
+% \end{length}^^A \tud@dim@ddcdiff
+% \end{length}^^A \tud@dim@headdiff
+% \begin{macro}{\tud@geometry@set}
+% \begin{macro}{\tud@head@font@size}
+% 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@geometry@process}.
+% \begin{macrocode}
+\newcommand*\tud@head@font@size{}
+\newcommand*\tud@geometry@set{%
+ \ifdim\paperheight<148.1mm\relax%
+ \setlength{\tud@dim@headheight}{17.5mm}%
+ \setlength{\tud@dim@barheight}{2.5mm}%
+ \setlength{\tud@dim@headsep}{6mm}%
+ \setlength{\tud@dim@logox}{5.5mm}%
+ \setlength{\tud@dim@logoy}{6.5mm}%
+ \setlength{\tud@dim@logowidth}{28.5mm}%
+ \setlength{\tud@dim@left}{15mm}%
+ \setlength{\tud@dim@right}{10mm}%
+ \setlength{\tud@dim@top}{12.5mm}%
+ \setlength{\tud@dim@bottom}{12.5mm}%
+ \setlength{\tud@dim@footskip}{6mm}%
+ \setlength{\tud@dim@heavyline}{0.75pt}%
+ \setlength{\tud@dim@thinline}{0.5pt}%
+ \def\tud@head@font@size{4.5}%
+ \else\ifdim\paperheight<297.1mm\relax%
+ \setlength{\tud@dim@headheight}{35mm}%
+ \setlength{\tud@dim@barheight}{5mm}%
+ \setlength{\tud@dim@headsep}{12mm}%
+ \setlength{\tud@dim@logox}{11mm}%
+ \setlength{\tud@dim@logoy}{13.5mm}%
+ \setlength{\tud@dim@logowidth}{57mm}%
+ \setlength{\tud@dim@left}{30mm}%
+ \setlength{\tud@dim@right}{20mm}%
+ \setlength{\tud@dim@top}{25mm}%
+ \setlength{\tud@dim@bottom}{25mm}%
+ \setlength{\tud@dim@footskip}{12mm}%
+ \setlength{\tud@dim@heavyline}{1pt}%
+ \setlength{\tud@dim@thinline}{0.5pt}%
+ \def\tud@head@font@size{9}%
+ \else\ifdim\paperheight<420.1mm\relax%
+ \setlength{\tud@dim@headheight}{50mm}%
+ \setlength{\tud@dim@barheight}{7mm}%
+ \setlength{\tud@dim@headsep}{17mm}%
+ \setlength{\tud@dim@logox}{15.5mm}%
+ \setlength{\tud@dim@logoy}{19mm}%
+ \setlength{\tud@dim@logowidth}{80mm}%
+ \setlength{\tud@dim@left}{42mm}%
+ \setlength{\tud@dim@right}{28mm}%
+ \setlength{\tud@dim@top}{35mm}%
+ \setlength{\tud@dim@bottom}{35mm}%
+ \setlength{\tud@dim@footskip}{17mm}%
+ \setlength{\tud@dim@heavyline}{1.4pt}%
+ \setlength{\tud@dim@thinline}{0.7pt}%
+ \def\tud@head@font@size{13}%
+ \else\ifdim\paperheight<594.1mm\relax%
+ \setlength{\tud@dim@headheight}{70mm}%
+ \setlength{\tud@dim@barheight}{10mm}%
+ \setlength{\tud@dim@headsep}{24mm}%
+ \setlength{\tud@dim@logox}{22mm}%
+ \setlength{\tud@dim@logoy}{27mm}%
+ \setlength{\tud@dim@logowidth}{114mm}%
+ \setlength{\tud@dim@left}{60mm}%
+ \setlength{\tud@dim@right}{40mm}%
+ \setlength{\tud@dim@top}{50mm}%
+ \setlength{\tud@dim@bottom}{50mm}%
+ \setlength{\tud@dim@footskip}{24mm}%
+ \setlength{\tud@dim@heavyline}{1.7pt}%
+ \setlength{\tud@dim@thinline}{1pt}%
+ \def\tud@head@font@size{13.5}%
+ \else\ifdim\paperheight<841.1mm\relax%
+ \setlength{\tud@dim@headheight}{100mm}%
+ \setlength{\tud@dim@barheight}{14mm}%
+ \setlength{\tud@dim@headsep}{34mm}%
+ \setlength{\tud@dim@logox}{31mm}%
+ \setlength{\tud@dim@logoy}{38mm}%
+ \setlength{\tud@dim@logowidth}{161.5mm}%
+ \setlength{\tud@dim@left}{85mm}%
+ \setlength{\tud@dim@right}{56.5mm}%
+ \setlength{\tud@dim@top}{71mm}%
+ \setlength{\tud@dim@bottom}{71mm}%
+ \setlength{\tud@dim@footskip}{34mm}%
+ \setlength{\tud@dim@heavyline}{1.9pt}%
+ \setlength{\tud@dim@thinline}{1.5pt}%
+ \def\tud@head@font@size{14}%
+ \else%
+ \setlength{\tud@dim@headheight}{140mm}%
+ \setlength{\tud@dim@barheight}{20mm}%
+ \setlength{\tud@dim@headsep}{48mm}%
+ \setlength{\tud@dim@logox}{44mm}%
+ \setlength{\tud@dim@logoy}{54mm}%
+ \setlength{\tud@dim@logowidth}{228mm}%
+ \setlength{\tud@dim@left}{120mm}%
+ \setlength{\tud@dim@right}{80mm}%
+ \setlength{\tud@dim@top}{100mm}%
+ \setlength{\tud@dim@bottom}{100mm}%
+ \setlength{\tud@dim@footskip}{48mm}%
+ \setlength{\tud@dim@heavyline}{2.1pt}%
+ \setlength{\tud@dim@thinline}{2pt}%
+ \def\tud@head@font@size{20}%
+ \fi\fi\fi\fi\fi%
+ \setlength{\tud@dim@both}{\dimexpr\tud@dim@left+\tud@dim@right\relax}%
+% \end{macrocode}
+% Hiermit wird sichergestellt, dass bei der Verwendung des \DDC-Logos im Fuß
+% ausreichend Platz zur Verfügung steht.
+% \begin{macrocode}
+ \setlength{\tud@dim@ddcfoot}{.6\tud@dim@headheight}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@head@font@size
+% \end{macro}^^A \tud@geometry@set
+%
+% \subsection{Unterstützung der \cls{standalone}-Klasse}
+%
+% \changes{v2.02}{2014/07/25}{Unterstützung der \cls{standalone}"=Klasse}%^^A
+%
+% Mit der Klasse~\cls{standalone} können insbesondere Grafiken als separate
+% 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}{\tud@ifsacrop}
+% \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}
+\newcommand*\tud@ifsacrop{%
+ \ifcsdef{ifsa@crop}{%
+ \ifbool{sa@crop}{\@firstoftwo}{\@secondoftwo}%
+ }{%
+ \@secondoftwo%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@ifsacrop
+%
+% 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}
+\AtEndPreamble{%
+ \tud@ifsacrop{%
+ \PreventPackageFromLoading{scrlayer-scrpage}%
+ \pagestyle{empty}%
+ \hoffset=-72.27pt%
+ \voffset=-72.27pt%
+ \topmargin=0pt%
+ \headheight=0pt%
+ \headsep=0pt%
+ \marginparsep=0pt%
+ \marginparwidth=0pt%
+ \footskip=0pt%
+ \marginparpush=0pt%
+ \oddsidemargin=0pt%
+ \evensidemargin=0pt%
+ \topskip=0pt%
+ \textheight=\dimexpr\maxdimen%
+ }{}%
+}
+% \end{macrocode}
+%
+% \subsection{Definition des Seitenstils mittels \pkg{scrlayer-scrpage}}
+%
+% Ein zentraler Bestandteil der Vorlagen ist der Seitenkopf des \CDs. Dieser
+% wird ab der Version~v2.02 mit Hilfe des Paketes \pkg{scrlayer-scrpage}
+% erstellt. 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.
+%
+% \begin{pagestyle}{tudheadings}
+% \changes{v2.02}{2014/06/23}{neu}%^^A
+% \begin{pagestyle}{plain.tudheadings}
+% \changes{v2.02}{2014/06/23}{neu}%^^A
+% \begin{pagestyle}{empty.tudheadings}
+% \changes{v2.02}{2014/06/23}{neu}%^^A
+% Es wird ein neuer Seitenstil kreiert, der das \CD der TU~Dresden 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. Für den Fall, dass das Dokument nicht ausschließlich mit
+% dem TUD-Kopf 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@geometry@process}
+% werden drei Layouts erstellt. Diese können mit \cs{loadgeometry}\marg{Stil}
+% geladen werden.
+% \begin{macrocode}
+\AtEndPreamble{%
+% \end{macrocode}
+% Damit der Anwender beliebige Optionen an \pkg{scrlayer-scrpage} übergeben
+% kann, wird das Paket erst zum Ende der Präambel geladen, wenn dies nicht
+% bereits vorher geschehen ist.
+% \ToDo{Versionsanforderung rein, sobald aktuelle Version auf CTAN vorhanden}
+% \begin{macrocode}
+ \RequirePackage{scrlayer-scrpage}[2013/12/14]%
+% \end{macrocode}
+% Anschließend werden verschiedene, sogeannte Layers für die einzelnen Elemente
+% auf einer Seite erstellt. Dies sind das aus dem Satzspiegel nach links
+% verschobene Logo der \TnUD sowie \dots
+% \begin{macrocode}
+ \AfterPackage*{scrlayer-scrpage}{%
+ \DeclareNewLayer[%
+ background,head,align=tl,%
+ voffset=\tud@dim@logoy,%
+ contents={%
+ \hspace*{\dimexpr\tud@dim@logox-\tud@dim@left\relax}\tud@mainlogo%
+ },%
+ ]{tudheadings.head.mainlogo}%
+% \end{macrocode}
+% \dots das Zweitlogo, \dots
+% \begin{macrocode}
+ \DeclareNewLayer[%
+ background,head,align=tl,%
+ voffset=\tud@dim@logoy,%
+ contents={\hfill\tud@headlogo},%
+ ]{tudheadings.head.logo}%
+% \end{macrocode}
+% \dots die 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. Darauf folgt \dots
+% \begin{macrocode}
+ \DeclareNewLayer[%
+ background,head,align=tl,%
+ voffset=\dimexpr\tud@dim@headheight-.5\tud@dim@line\relax,%
+ contents={\if@tud@widehead\else\tud@head@rule{\textwidth}\fi},%
+ ]{tudheadings.head.topline}%
+ \DeclareNewLayer[%
+ background,head,align=tl,%
+ voffset={%
+ \dimexpr\tud@dim@headheight+\tud@dim@barheight-.5\tud@dim@line\relax%
+ },%
+ contents={\if@tud@widehead\else\tud@head@rule{\textwidth}\fi},%
+ ]{tudheadings.head.bottomline}%
+ \DeclareNewLayer[%
+ background,align=tl,%
+ voffset=\dimexpr\tud@dim@headheight-.5\tud@dim@line\relax,%
+ contents={\if@tud@widehead\tud@head@rule{\paperwidth}\fi},%
+ ]{tudheadings.head.topwideline}%
+ \DeclareNewLayer[%
+ background,align=tl,%
+ voffset={%
+ \dimexpr\tud@dim@headheight+\tud@dim@barheight-.5\tud@dim@line\relax%
+ },%
+ contents={\if@tud@widehead\tud@head@rule{\paperwidth}\fi},%
+ ]{tudheadings.head.bottomwideline}%
+% \end{macrocode}
+% \dots der Inhalt mit Fakultät, Einrichtung, Institut und Lehrstuhl.
+% \begin{macrocode}
+ \DeclareNewLayer[%
+ background,head,align=tl,%
+ voffset=\dimexpr\tud@dim@headheight+\tud@dim@line\relax,%
+ contents={\tud@head@text@box},%
+ ]{tudheadings.head.text}%
+% \end{macrocode}
+% Außerdem wird eine weitere Ebene mit dem \DDC-Logo im Seitenfuß erstellt.
+% \begin{macrocode}
+ \DeclareNewLayer[%
+ background,foot,%
+ contents={%
+ \vskip\dimexpr-\tud@dim@ddcfoot-\baselineskip+\ht\strutbox%
+ \hfill\tud@footlogo%
+ },%
+ ]{tudheadings.foot.ddclogo}%
+% \end{macrocode}
+% Aus den zuvor erstellten Ebenen werden jetzt die eigentlichen Seitenstile
+% zusammengesetzt. Mit \cs{newpairofpagestyles} wird neben dem Seitenstil
+% \pgs{tudheadings} der passende Seitenstil \pgs{plain.tudheadings} gleich mit
+% deklariert.
+% \begin{macrocode}
+ \newpairofpagestyles{tudheadings}{}%
+% \end{macrocode}
+% Allerdings führt der Befehl dazu, dass zunächst eine Vielzahl an Ebenen
+% hinzugefügt wird, welche nicht benötigt werden. Deshalb werden diese mit
+% \cs{RemoveLayersFromPageStyle} zunächst entfernt.
+% \begin{macrocode}
+ \ForEachLayerOfPageStyle{tudheadings}{%
+ \RemoveLayersFromPageStyle{tudheadings}{#1}%
+ }%
+ \ForEachLayerOfPageStyle{plain.tudheadings}{%
+ \RemoveLayersFromPageStyle{plain.tudheadings}{#1}%
+ }%
+% \end{macrocode}
+% Nun folgt das Hinzufügen der Ebenen zu den jetzt leeren Seitenstilen. Damit
+% die Benutzerschnittstelle von \pkg{scrlayer-scrpage} für die Fußzeile
+% weiterhin durch den Anwender verwendet werden kann, werden die entsprechenden
+% \pgs{scrheadings}-Ebenen verwendet.
+% \begin{macrocode}
+ \AddLayersToPageStyle{tudheadings}{%
+ tudheadings.head.mainlogo,%
+ tudheadings.head.logo,%
+ tudheadings.head.topline,%
+ tudheadings.head.bottomline,%
+ tudheadings.head.topwideline,%
+ tudheadings.head.bottomwideline,%
+ tudheadings.head.text,%
+ tudheadings.foot.ddclogo,%
+ scrheadings.foot.odd,%
+ scrheadings.foot.even,%
+ scrheadings.foot.oneside,%
+ scrheadings.foot.above.line,%
+ scrheadings.foot.below.line%
+ }%
+ \AddLayersToPageStyle{plain.tudheadings}{%
+ tudheadings.head.mainlogo,%
+ tudheadings.head.logo,%
+ tudheadings.head.topline,%
+ tudheadings.head.bottomline,%
+ tudheadings.head.topwideline,%
+ tudheadings.head.bottomwideline,%
+ tudheadings.head.text,%
+ tudheadings.foot.ddclogo,%
+ plain.scrheadings.foot.odd,%
+ plain.scrheadings.foot.even,%
+ plain.scrheadings.foot.oneside,%
+ plain.scrheadings.foot.above.line,%
+ plain.scrheadings.foot.below.line%
+ }%
+ \DeclareNewPageStyleByLayers{empty.tudheadings}{%
+ tudheadings.head.mainlogo,%
+ tudheadings.head.logo,%
+ tudheadings.head.topline,%
+ tudheadings.head.bottomline,%
+ tudheadings.head.topwideline,%
+ tudheadings.head.bottomwideline,%
+ tudheadings.head.text,%
+ tudheadings.foot.ddclogo,%
+ }%
+% \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 Alias für
+% \pgs{\meta{Seitenstil}} und \pgs{plain.\meta{Seitenstil}} definiert. Hiermit
+% wird zusätzlich dafür gesorgt, das der Seitenstil \pgs{empty} ebenfalls als
+% Alias für \pgs{empty.tudheadings} verwendet werden kann.
+% \begin{macrocode}
+ \AddToLayerPageStyleOptions{tudheadings}{%
+ onselect={\letcs\ps@empty{ps@empty.tudheadings}}%
+ }%
+ \AddToLayerPageStyleOptions{plain.tudheadings}{%
+ onselect={\letcs\ps@empty{ps@empty.tudheadings}}%
+ }%
+ \AddToLayerPageStyleOptions{empty.tudheadings}{%
+ onselect={%
+ \letcs\ps@empty{ps@empty.tudheadings}%
+ \letcs\ps@plain{ps@plain.tudheadings}%
+ \letcs\ps@headings{ps@tudheadings}%
+ }%
+ }%
+% \end{macrocode}
+% Außerdem wird der Alias-Seitenstil \pgs{tudscrheadings} definiert.
+% \begin{macrocode}
+ \DeclareNewPageStyleAlias{tudscrheadings}{tudheadings}%
+ \DeclareNewPageStyleAlias{plain.tudscrheadings}{plain.tudheadings}%
+ \DeclareNewPageStyleAlias{empty.tudscrheadings}{empty.tudheadings}%
+% \end{macrocode}
+% Der TUD-Kopf erfordert einen eigenen Satzspiegel, der ggf. durch
+% \cs{tud@beforepagestyle} aktiviert bzw. deaktiviert wird.
+% \begin{macrocode}
+ \BeforeSelectAnyPageStyle{\tud@beforepagestyle{#1}}%
+ }%
+}
+% \end{macrocode}
+% \end{pagestyle}^^A empty.tudheadings
+% \end{pagestyle}^^A plain.tudheadings
+% \end{pagestyle}^^A tudheadings
+% \begin{macro}{\ps@tudpage@plain}
+% \changes{v2.02}{2014/06/23}{entfernt}%^^A
+% \begin{macro}{\ps@tudpage@empty}
+% \changes{v2.02}{2014/06/23}{entfernt}%^^A
+% Diese Befehle wurden mit der \TUDScript-Version~v2.02 entfernt.
+% \end{macro}^^A \ps@tudpage@empty
+% \end{macro}^^A \ps@tudpage@plain
+% \begin{macro}{\tud@beforepagestyle}
+% \changes{v2.02}{2014/06/23}{neu}%^^A
+% \begin{macro}{\tud@currentgeometry}
+% \changes{v2.02}{2014/06/23}{neu}%^^A
+% Mit \cs{tud@beforepagestyle} wird beim Umschalten des Seitenstils ggf. der
+% Satzspiegel geändert.
+% \begin{macrocode}
+\newcommand*\tud@currentgeometry{}
+\newcommand*\tud@beforepagestyle[1]{%
+% \end{macrocode}
+% Der \pgs{tudheadings}-Seitenstil wird mit dem Befehl \cs{newpairofpagestyles}
+% derart definiert, dass zwischen \pgs{tudheadings}, \pgs{plain.tudheadings}
+% sowie~-- durch die Anpassungen weiter oben~-- \pgs{empty.tudheadings} auch
+% mit \LaTeX-Standardseitenstilen \pgs{headings}, \pgs{plain} und \pgs{empty}
+% umgeschaltet werden kann. Dies wird hiermit beachtet.
+% \begin{macrocode}
+ \def\@tempa{#1}%
+ \ifstr{\sls@currentheadings}{tudheadings}{%
+ \ifstr{#1}{headings}{\def\@tempa{tudheadings}}{}%
+ \ifstr{#1}{plain}{\def\@tempa{plain.tudheadings}}{}%
+ \ifstr{#1}{empty}{\def\@tempa{empty.tudheadings}}{}%
+ }{}%
+% \end{macrocode}
+% Für den Fall, das ein \pgs{tudheadings}-Seitenstil geladen werden soll\dots
+% \begin{macrocode}
+ \tud@ifinpslist{\@tempa}{%
+% \end{macrocode}
+% \dots werden die Einstellungen für den Seitenfuß 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%
+ \ifstr{\tud@currentgeometry}{tudarea}{}{%
+ \loadgeometry{tudarea}%
+ \gdef\tud@currentgeometry{tudarea}%
+ }%
+% \end{macrocode}
+% Das \DDC-Logo im Fuß ist aktiviert.
+% \begin{macrocode}
+ \else%
+ \ifstr{\tud@currentgeometry}{tudareaddc}{}{%
+ \loadgeometry{tudareaddc}%
+ \gdef\tud@currentgeometry{tudareaddc}%
+ }%
+ \fi%
+% \end{macrocode}
+% Die Länge \cs{tud@dim@headdiff} 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@dim@headdiff}{\z@}%
+% \end{macrocode}
+% Hier 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}{typearea}{}{%
+ \loadgeometry{typearea}%
+ \gdef\tud@currentgeometry{typearea}%
+ \RedeclarePageStyleByLayers{empty}{}%
+ }%
+% \end{macrocode}
+% Die Länge \cs{tud@dim@headdiff} 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@dim@headdiff}{\tud@ta@headdiff}%
+ \ifcase \tud@geometry\relax\else%
+ \if@hincl%
+ \addtolength{\tud@dim@headdiff}{%
+ \dimexpr-\tud@ta@headheight-\tud@dim@headsep\relax%
+ }%
+ \fi%
+ \fi%
+ }%
+% \end{macrocode}
+% Die Länge \cs{tud@dim@headdiff} wird vorsichtshalber global gesetzt.
+% \begin{macrocode}
+ \global\tud@dim@headdiff=\tud@dim@headdiff%
+}
+% \end{macrocode}
+% 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@beforepagestyle\@gobble\pagestyle%
+}{}{\tud@patch@wrn{cleardoubleoddpageusingstyle}}
+\patchcmd{\cleardoubleevenpageusingstyle}{\pagestyle}{%
+ \let\tud@beforepagestyle\@gobble\pagestyle%
+}{}{\tud@patch@wrn{cleardoubleevenpageusingstyle}}
+\patchcmd{\cleardoublepageusingstyle}{\pagestyle}{%
+ \let\tud@beforepagestyle\@gobble\pagestyle%
+}{}{\tud@patch@wrn{cleardoublepageusingstyle}}
+% \end{macrocode}
+% \end{macro}^^A \tud@currentgeometry
+% \end{macro}^^A \tud@beforepagestyle
+% \begin{macro}{\tud@ddc@enlargepage}
+% \changes{v2.02}{2014/06/23}{neu}%^^A
+% Der Befehl wird 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 wurde
+% \emph{und} des \DDC-Logo im Fuß gesetzt werden soll.
+% \begin{macrocode}
+\newcommand*\tud@ddc@enlargepage{%
+ \ifstr{\tud@currentgeometry}{tudareaddc}{}{%
+ \tud@ddc@check%
+ \ifcase \@tempb\relax\else\enlargethispage{-\tud@dim@ddcdiff}\fi%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@ddc@enlargepage
+% \begin{macro}{\tud@head@text}
+% \begin{macro}{\tud@head@text@first}
+% \begin{macro}{\tud@head@text@second}
+% \begin{macro}{\tud@head@text@delimiter}
+% \begin{macro}{\tud@head@text@buffer}
+% \begin{macro}{\tud@head@font}
+% 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{}
+\newcommand*\tud@head@text@first{}
+\newcommand*\tud@head@text@second{}
+\newcommand*\tud@head@text@delimiter{}
+\newcommand*\tud@head@text@buffer{}
+\newcommand*\tud@head@font{}
+% \end{macrocode}
+% \end{macro}^^A \tud@head@font
+% \end{macro}^^A \tud@head@text@buffer
+% \end{macro}^^A \tud@head@text@delimiter
+% \end{macro}^^A \tud@head@text@second
+% \end{macro}^^A \tud@head@text@first
+% \end{macro}^^A \tud@head@text
+% \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 gewähltem Parameter \opt{widehead}
+% 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@dim@line} definierter Dicke.
+% \begin{macrocode}
+\newcommand*\tud@head@rule[1]{%
+ \color{\tud@head@color}%
+ \rule[\dimexpr\ht\strutbox\relax]{#1}{\tud@dim@line}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@head@rule
+% \begin{macro}{\tud@head@text@add}
+% Dieser Befehl dient zum Füllen eines Puffer-Strings. Es werden sequentiell
+% alle potentiellen Felder hinzugefügt. Sollte das zuletzt hinzugefügte Feld
+% dazu führen, dass der Text der Kopfzeile über den Seitenrand hinausragt, so
+% wird eine zweite Zeile begonnen. In diesem Fall wird der temporäre Schalter
+% \cs{@tempswa} aktiviert. Auch das Trennzeichen zwischen einzelnen Feldern
+% muss gepuffert werden, da dieses nur gesetzt wird, wenn ein weiteres Feld
+% nachfolgt.
+% \begin{macrocode}
+\newcommand*\tud@head@text@add[3][, ]{%
+ \def\tud@head@font{#2}%
+ \edef\tud@head@text{#3}%
+ \ifx\tud@head@text\@empty%
+ \def\tud@head@text@delimiter{}%
+ \else%
+ \edef\tud@head@text@delimiter{\tud@head@text@buffer}%
+ \def\tud@head@text@buffer{#1}%
+ \fi%
+ \if@tempswa\else%
+ \def\@tempa{%
+ \tud@head@text@first%
+ \tud@head@text@delimiter%
+ \tud@head@font%
+ \tud@head@text%
+ }%
+ \settowidth{\@tempdima}{\@tempa}%
+ \ifdim\@tempdima>\textwidth\relax%
+ \@tempswatrue%
+ \def\tud@head@text@delimiter{}%
+ \else%
+ \edef\tud@head@text@first{\@tempa}%
+ \fi%
+ \fi%
+ \if@tempswa%
+ \edef\tud@head@text@second{%
+ \tud@head@text@second%
+ \tud@head@text@delimiter%
+ \tud@head@font%
+ \tud@head@text%
+ }%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@head@text@add
+% \begin{macro}{\tud@head@text@box}
+% \changes{v2.02}{2014/06/23}{neu}%^^A
+% Dieser Befehl ist der Inhalt der Ebene für den Text der Kopfzeile.
+% \begin{macrocode}
+\newcommand*\tud@head@text@box{%
+% \end{macrocode}
+% Sollte keine Fakultät angegeben sein, wird eine Warnung ausgegeben.
+% \begin{macrocode}
+ \ifx\@faculty\@empty%
+ \ClassWarningNoLine{\tudcls@name}{No `\string\faculty' given}%
+ \faculty{}%
+ \fi%
+% \end{macrocode}
+% Die Farbe des Kopfes wird für Titel und Teileseiten durch die gewählten
+% Optionen\footnote{\opt{cdtitle}, \opt{cdpart}} bestimmt.\footnote{für
+% die \env{tudpage}-Umgebung kann dieser angepasst werden}
+% \begin{macrocode}
+ \color{\tud@head@color}%
+% \end{macrocode}
+% Abhängig vom Schalter \cs{if@tud@cdfonts}~-- gesetzt entweder von der globalen
+% Klassenoption oder vom lokalelParameter \opt{cdfont}~-- werden entweder die
+% Schriften des \CDs oder aber die serifenlose Standardschrift für die Kopfzeile
+% verwendet.
+% \begin{macrocode}
+ \tud@head@font@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 zweite
+% Zeile begonnen. Ob diese benötigt wird, ist abhängig vom Inhalt und von der
+% sich daraus ergebenden Breite der Textzeile. Das Erzeugen der ersten und
+% gegebenenfalls der zweiten Textzeile im Kopf erfolgt durch das Makro
+% \cs{tud@head@text@add}\oarg{Trennzeichen}\marg{Schrift}\marg{Feld}. Der dafür
+% verwendete Schalter \cs{@tempswa} und die benötigten Hilfsmakros werden
+% vor der Verwendung initialisiert.
+% \begin{macrocode}
+ \@tempswafalse%
+ \def\tud@head@text@first{}%
+ \def\tud@head@text@second{}%
+ \def\tud@head@text@buffer{}%
+ \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}
+% Sollte die zweite Textzeile zu lang sein, was bei kleinen Papierformaten
+% vorkommen kann, dann wird eine Warnung ausgegeben.
+% \begin{macrocode}
+ \settowidth{\@tempdima}{\tud@head@text@second}%
+ \ifdim\@tempdima>\textwidth\relax%
+ \tud@head@text@wrn{\the\dimexpr\@tempdima-\textwidth\relax}%
+ \hfuzz=\@tempdima%
+ \fi%
+% \end{macrocode}
+% Es erfolgt die Ausgabe der Textzeile(n) mit Fakultät etc. über
+% \cs{tud@head@text@write} sowie einer möglichen Extrazeile.
+% \begin{macrocode}
+ \vbox{%
+ \linespread{0}\selectfont%
+ \tud@head@text@write{\tud@head@text@first}%
+ \ifx\tud@head@text@second\@empty%
+ \ifx\@extraheadline\@empty\else%
+ \newline\tud@head@font@light\tud@head@text@write{\@extraheadline}%
+ \fi%
+ \else%
+ \newline\tud@head@text@write{\tud@head@text@second}%
+ \ifx\@extraheadline\@empty\else%
+ \newline\tud@head@font@light\@extraheadline%
+ \fi%
+ \fi%
+ }%
+}
+% \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}{optische Zentrierung des Zeilentextes}%^^A
+% Befehl zur Ausgabe der ersten und evtl. zweiten Textzeile im TUD-Kopf
+% \begin{macrocode}
+\newcommand*\tud@head@text@write[1]{%
+ \raisebox{\dimexpr(\tud@dim@barheight+2\tud@dim@line-\totalheight)/2\relax}[%
+ \dimexpr\tud@dim@barheight-\depth\relax%
+ ][\depth]{#1\vphantom{gjpqy\"A\"O\"U}}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@head@text@write
+% \begin{macro}{\tud@head@text@wrn}
+% Warnung für den Fall, dass die Kopfinformationen breiter werden, als die
+% Textbreite, was bei besonders kleinen Papierformaten geschehen kann.
+% \begin{macrocode}
+\newcommand\tud@head@text@wrn[1]{%
+ \ClassWarning{\tudcls@name}{%
+ The given entries for the headline\MessageBreak%
+ (faculty, institute etc.) are #1\MessageBreak%
+ too wide for the textwidth%
+ }%
+ \global\let\tud@head@text@wrn\@gobble%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@head@text@wrn
+% \begin{macro}{\tud@mainlogo@wrn}
+% \changes{v2.02}{2014/06/23}{Umbenennen von \cs{tud@head@logo@wrn}}%^^A
+% Warnung für den Fall, dass die Kopfinformationen breiter werden, als die
+% Textbreite, was bei besonders kleinen Papierformaten geschehen kann.
+% \begin{macrocode}
+\newcommand*\tud@mainlogo@wrn[1]{%
+ \ClassWarning{\tudcls@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 #1)\MessageBreak%
+ Maybe you should decrease the current value\MessageBreak%
+ of DIV (`DIV=\the\ta@div')%
+ }%
+ \global\let\tud@mainlogo@wrn\@gobble%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@mainlogo@wrn
+%
+% \iffalse
+%</class&body>
+%<*class&option>
+% \fi
+%
+% \subsection{Befehle, Optionen und Umsetzung der Seitenstilvarianten}
+%
+% \begin{option}{ddc}
+% \changes{v2.02}{2014/06/23}{automatische Logowahl}%^^A
+% \begin{option}{ddchead}
+% \changes{v2.02}{2014/06/23}{\DDC-Logo entweder in Kopf oder Fuß}%^^A
+% \begin{option}{ddcfoot}
+% \changes{v2.02}{2014/06/23}{\DDC-Logo 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
+% Dieser Befehl enthält die gültigen Werte für die Optionen \opt{ddc},
+% \opt{ddchead} sowie \opt{ddcfoot}.
+% \begin{macrocode}
+\newcommand*\tud@ddc@switch{}
+\edef\tud@ddc@switch{%
+ \TUD@numkey@bool,%
+ {color}{2},{colour}{2},%
+ {colorblack}{3},{colourblack}{3},%
+ {gray}{4},{grey}{4},{cdgray}{4},%
+ {black}{5},%
+ {blue}{6},{cddarkblue}{6},%
+ {white}{7}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@ddc@switch
+% \begin{macro}{\tud@ddc@save}
+% \changes{v2.02}{2014/07/08}{neu}%^^A
+% \begin{macro}{\if@tud@ddc@save}
+% \changes{v2.02}{2014/07/08}{neu}%^^A
+% Diese beiden Befehle werden von den Optionen \opt{ddchead} und \opt{ddcfoot}
+% benötigt, um nach dem Setzen der Option den vorherigen Wert vor dem möglichen
+% Beenden einer Seite mit \cs{clearpage} wiederherstellen zu können.
+% \begin{macrocode}
+\newcommand*\tud@ddc@save{}
+\newif\if@tud@ddc@save
+\@tud@ddc@savetrue
+% \end{macrocode}
+% \end{macro}^^A \if@tud@ddc@save
+% \end{macro}^^A \tud@ddc@save
+% \begin{macro}{\tud@ddc}
+% \changes{v2.02}{2014/06/23}{neu}%^^A
+% \begin{macro}{\if@tud@ddc@autoset}
+% \changes{v2.02}{2014/06/23}{neu}%^^A
+% Die Option \opt{ddc}.
+% \begin{macrocode}
+\newcommand*\tud@ddc{0}
+\newif\if@tud@ddc@autoset
+\TUD@key{ddc}[true]{%
+% \end{macrocode}
+% Sollte diese innerhalb des Dokumentes aufgerufen werden, so wird für den Fall,
+% dass ein \pgs{tudheadings}-Seitenstil gewählt ist, ein \cs{clearpage}
+% ausgeführt, da eventuell eine Änderung des Layers sowie des Satzspeigels
+% notwendig ist. Anschließend wird der Schalter \cs{if@tud@ddc@autoset}
+% entsprechend des angegebenen Wertes gesetzt.
+% \begin{macrocode}
+ \TUD@set@numkey{ddc}{tud@ddc}{\tud@ddc@switch}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \tud@ifinpslist{\@nameuse{currentpagestyle}}{\clearpage}{}%
+ \ifcase \tud@ddc\relax%
+ \@tud@ddc@autosetfalse%
+ \else%
+ \@tud@ddc@autosettrue%
+ \fi%
+% \end{macrocode}
+% Abschließend wird der aktuelle Seitenstil erneut aufgerufen, um bei einem
+% geänderten Fuß den notwendigen Satzspiegel zu laden. Siehe dazu auch
+% \cs{tud@beforepagestyle}.
+% \begin{macrocode}
+ \if@atdocument\expandafter\pagestyle\expandafter{\currentpagestyle}\fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@ddc@autoset
+% \end{macro}^^A \tud@ddc
+% \begin{macro}{\tud@ddc@head}
+% 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{0}
+\TUD@key{ddchead}[true]{%
+% \end{macrocode}
+% Der aktuelle Zustand des Schlüssels wird gesichert. Anschließend wird der
+% Schlüssel mit dem neuen Wert gesetzt.
+% \begin{macrocode}
+ \if@tud@ddc@save\let\tud@ddc@save\tud@ddc@head\fi%
+ \TUD@set@numkey{ddchead}{tud@ddc@head}{\tud@ddc@switch}{#1}%
+% \end{macrocode}
+% Sollte ein gültiger Wert für den Schlüssel übergeben worden sein, wird dieser
+% lokal auf den alten Wert gesetzt, um ggf. eine neue Seite zu erzeugen.
+% \begin{macrocode}
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@tud@ddc@save%
+ \begingroup%
+ \let\tud@ddc@head\tud@ddc@save%
+ \tud@ifinpslist{\@nameuse{currentpagestyle}}{\clearpage}{}%
+ \endgroup%
+ \fi%
+% \end{macrocode}
+% Danach werden die sich ausschließenden Optionen deaktiviert, ohne eine
+% Sicherung der Werte vorzunehmen.
+% \begin{macrocode}
+ \ifcase \tud@ddc@head\relax\else%
+ \@tud@ddc@savefalse%
+ \TUDoptions{ddc=false}%
+ \TUDoptions{ddcfoot=false}%
+ \@tud@ddc@savetrue%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@ddc@head
+% \begin{macro}{\tud@ddc@foot}
+% 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{0}
+\TUD@key{ddcfoot}[true]{%
+ \if@tud@ddc@save\let\tud@ddc@save\tud@ddc@foot\fi%
+ \TUD@set@numkey{ddcfoot}{tud@ddc@foot}{\tud@ddc@switch}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@tud@ddc@save%
+ \begingroup%
+ \let\tud@ddc@foot\tud@ddc@save%
+ \tud@ifinpslist{\@nameuse{currentpagestyle}}{\clearpage}{}%
+ \endgroup%
+ \fi%
+ \ifcase \tud@ddc@foot\relax\else%
+ \@tud@ddc@savefalse%
+ \TUDoptions{ddc=false}%
+ \TUDoptions{ddchead=false}%
+ \@tud@ddc@savetrue%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@ddc@foot
+% \begin{macro}{\tud@ddc@check}
+% \changes{v2.02}{2014/06/23}{neu}%^^A
+% Dieses Hilfsmakro wird aufgerufen, wenn geprüft werden soll, welche
+% Einstellungen für Kopf und Fuß des Seitenstiles \pgs{tudheadings} zum Tragen
+% kommen sollen. Dabei wird insbesondere geprüft, ob die automatischen Auswahl
+% des \DDC-Logos aktiviert ist. Die jeweils gültige Auswahl für Kopf bzw. Fuß
+% wird in \cs{@tempa} bzw. \cs{@tempb} geschrieben und kann anschließend
+% ausgewertet werden.
+% \begin{macrocode}
+\newcommand*\tud@ddc@check{%
+ \let\@tempa\tud@ddc@head%
+ \let\@tempb\tud@ddc@foot%
+ \if@tud@ddc@autoset%
+ \ifx\tud@@headlogo\@empty%
+ \let\@tempa\tud@ddc%
+ \let\@tempb\z@%
+ \else%
+ \let\@tempa\z@%
+ \let\@tempb\tud@ddc%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@ddc@check
+% \end{option}^^A ddcfoot
+% \end{option}^^A ddchead
+% \end{option}^^A ddc
+% \begin{macro}{\tud@ifinpslist}
+% \changes{v2.02}{2014/06/23}{neu}%^^A
+% \begin{macro}{\tud@pslist}
+% \changes{v2.02}{2014/06/23}{neu}%^^A
+% Mit dem Befehl \cs{tud@ifinpslist} wird geprüft, ob der übergebene
+% 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 \cs{tud@pslist} entspricht. Ist dies der
+% Fall, wird das zweite Argument ausgeführt, sonst das dritte.
+% \begin{macrocode}
+\newcommand*\tud@ifinpslist[3]{\xifinlist{#1}{\tud@pslist}{#2}{#3}}
+\newcommand*\tud@pslist{}
+\forcsvlist{\listadd\tud@pslist}{%
+ tudheadings,plain.tudheadings,empty.tudheadings%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@pslist
+% \end{macro}^^A \tud@ifinpslist
+% \begin{option}{widehead}
+% \begin{macro}{\if@tud@widehead}
+% \begin{macro}{\if@tud@widehead@locked}
+% 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}
+\newif\if@tud@widehead
+\TUD@key@lock{widehead}[true]{%
+ \TUD@set@ifkey@lock{widehead}{@tud@widehead}{#1}%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@widehead@locked
+% \end{macro}^^A \if@tud@widehead
+% \end{option}^^A widehead
+%
+% \iffalse
+%</class&option>
+%<*class&body>
+% \fi
+%
+% \begin{macro}{\tud@mainlogo}
+% \changes{v2.02}{2014/08/04}{Dateinamen der TUD-Logos geändert}%^^A
+% \begin{macro}{\tud@@mainlogo}
+% Mit diesem Makro wird das Logo der TU~Dresden eingebunden. Bei der Verwendung
+% von pdf\LaTeX{} kann wird Farbe des Logos an die Kopffarbe angepasst. Wird
+% der klassische Weg über dvi gewählt, so muss abhängig von der gewählten
+% Kopffarbe das entsprechend gefärbte Logo eingebunden werden.
+%
+% \begin{macrocode}
+\newcommand*\tud@@mainlogo{}
+\newcommand*\tud@mainlogo{%
+% \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 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}
+ \setlength{\@tempdima}{%
+ \dimexpr\oddsidemargin+1in+\tud@dim@logox-\tud@dim@left\relax%
+ }%
+ \ifdim\@tempdima<\ta@bcor\relax\tud@mainlogo@wrn{\the\@tempdima}\fi%
+% \end{macrocode}
+% Es wird das Standardlogo festgelegt und dieses ggf. für eine andere Kopffarbe
+% geändert.
+% \begin{macrocode}
+ \def\tud@@mainlogo{TUD-black}%
+ \ifstr{\tud@head@color}{HKS41}{\def\tud@@mainlogo{TUD-blue}}{}%
+ \ifstr{\tud@head@color}{cddarkblue}{\def\tud@@mainlogo{TUD-blue}}{}%
+ \ifstr{\tud@head@color}{white}{\def\tud@@mainlogo{TUD-white}}{}%
+ \global\let\tud@dim@line\tud@dim@thinline%
+ \ifstr{\tud@head@color}{white}{\global\let\tud@dim@line\tud@dim@heavyline}{}%
+ \color{\tud@head@color}%
+ \includegraphics[width=\tud@dim@logowidth]{\tud@@mainlogo}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@@mainlogo
+% \end{macro}^^A \tud@mainlogo
+% \begin{macro}{\headlogo}
+% \changes{v2.02}{2014/06/23}{Anpassung an automatische Wahl des \DDC-Logos}%^^A
+% \begin{macro}{\tud@headlogo}
+% \changes{v2.02}{2014/06/23}{neu, \cs{tud@head@logo} umbenannt}%^^A
+% \changes{v2.02}{2014/06/23}{von \cs{tud@ddc@sethead} wurde die Auswahl des
+% \DDC-Logos übernommen und erweitert}%^^A
+% \begin{macro}{\tud@@headlogo}
+% \changes{v2.02}{2014/06/23}{neu, \cs{tud@head@@logo} umbenannt}%^^A
+% \begin{macro}{\tud@@@headlogo}
+% \changes{v2.02}{2014/06/23}{Umbenennen des Befehls \cs{tud@head@@@logo}}%^^A
+% \begin{macro}{\tud@headlogo@wrn}
+% \changes{v2.02}{2014/06/23}{neu}%^^A
+% Diese Befehle dienen zum Einbinden eines Zweitlogos im Kopf bündig zum
+% rechten Seitenrand. Bei der Angabe des Logos mit
+% \cs{headlogo}\oarg{Optionsliste}\marg{Dateiname} wird der Dateiname in
+% \cs{tud@@headlogo} und das optionale Argument in \cs{tud@@@headlogo}
+% gespeichert, damit diese später über \cs{tud@headlogo} an den Befehl
+% \cs{includegraphics} weitergereicht werden können.
+% \begin{macrocode}
+\newcommand*\headlogo[2][]{%
+ \tud@ifinpslist{\@nameuse{currentpagestyle}}{\clearpage}{}%
+ \def\tud@@headlogo{#2}%
+ \def\tud@@@headlogo{#1}%
+ \if@atdocument\expandafter\pagestyle\expandafter{\currentpagestyle}\fi%
+}
+\newcommand*\tud@@headlogo{}
+\newcommand*\tud@@@headlogo{}
+\newcommand*\tud@headlogo{%
+ \tud@ddc@check%
+ \ifx\tud@@headlogo\@empty\else%
+ \ifnum\@tempa>\z@\relax\tud@headlogo@wrn\fi%
+ \fi%
+ \ifcase \@tempa\relax\or%
+ \def\tud@@headlogo{DDC-24}%
+ \ifstr{\tud@head@color}{HKS41}{\def\tud@@headlogo{DDC-27}}{}%
+ \ifstr{\tud@head@color}{cddarkblue}{\def\tud@@headlogo{DDC-27}}{}%
+ \ifstr{\tud@head@color}{white}{\def\tud@@headlogo{DDC-30}}{}%
+ \or%
+ \def\tud@@headlogo{DDC-03}%
+ \or%
+ \def\tud@@headlogo{DDC-09}%
+ \or%
+ \def\tud@@headlogo{DDC-21}%
+ \or%
+ \def\tud@@headlogo{DDC-24}%
+ \or%
+ \def\tud@@headlogo{DDC-27}%
+ \or%
+ \def\tud@@headlogo{DDC-30}%
+ \fi%
+ \ifx\tud@@headlogo\@empty\else%
+ \settoheight{\tud@dim@logoheight}{\tud@mainlogo}%
+ \pretocmd{\tud@@@headlogo}{height=\tud@dim@logoheight,}%
+ {}{\tud@patch@wrn{tud@@@headlogo}}%
+ \expandafter\includegraphics\expandafter[\tud@@@headlogo]{\tud@@headlogo}%
+ \fi%
+}
+\newcommand*\tud@headlogo@wrn{%
+ \ClassWarning{\tudcls@name}{%
+ The secondary logo given with `\string\headlogo' is\MessageBreak%
+ overwritten with DDC logo. Maybe you should use\MessageBreak%
+ `ddcfoot' or better `ddc' instead of `ddchead'%
+ }%
+ \global\let\tud@headlogo@wrn\relax%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@headlogo@wrn
+% \end{macro}^^A \tud@@@headlogo
+% \end{macro}^^A \tud@@headlogo
+% \end{macro}^^A \tud@headlogo
+% \end{macro}^^A \headlogo
+% \begin{macro}{\tud@ddc@sethead}
+% \changes{v2.02}{2014/06/23}{entfernt}%^^A
+% Dieser Befehl wurde mit der \TUDScript-Version~v2.02 entfernt.
+% \end{macro}^^A \tud@ddc@sethead
+% \begin{macro}{\tud@footlogo}
+% \changes{v2.02}{2014/06/23}{neu}%^^A
+% \begin{macro}{\tud@@footlogo}
+% \changes{v2.02}{2014/06/23}{neu, \cs{tud@foot@logo} umbenannt}%^^A
+% Diese Befehle dienen zum Einbinden des \DDC-Logos im Fuß der Seiten im Stil
+% \pgs{tudheadings}.
+% \begin{macrocode}
+\newcommand*\tud@@footlogo{}
+\newcommand*\tud@footlogo{%
+ \tud@ddc@check%
+ \ifcase \@tempb\relax\or%
+ \def\tud@@footlogo{DDC-22}%
+ \ifstr{\tud@head@color}{HKS41}{\def\tud@@footlogo{DDC-25}}{}%
+ \ifstr{\tud@head@color}{cddarkblue}{\def\tud@@footlogo{DDC-25}}{}%
+ \ifstr{\tud@head@color}{white}{\def\tud@@footlogo{DDC-28}}{}%
+ \or%
+ \def\tud@@footlogo{DDC-01}%
+ \or%
+ \def\tud@@footlogo{DDC-07}%
+ \or%
+ \def\tud@@footlogo{DDC-19}%
+ \or%
+ \def\tud@@footlogo{DDC-22}%
+ \or%
+ \def\tud@@footlogo{DDC-25}%
+ \or%
+ \def\tud@@footlogo{DDC-28}%
+ \fi%
+ \ifx\tud@@footlogo\@empty\else%
+ \includegraphics[height=\tud@dim@ddcfoot]{\tud@@footlogo}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@@footlogo
+% \end{macro}^^A \tud@footlogo
+% \begin{macro}{\tud@ddc@setfoot}
+% \changes{v2.02}{2014/06/23}{entfernt}%^^A
+% Dieser Befehl wurde mit der \TUDScript-Version~v2.02 entfernt.
+% \end{macro}^^A \tud@ddc@setfoot
+%
+% \iffalse
+%</class&body>
+%<*class&option>
+% \fi
+%
+% \begin{option}{cdfoot}
+% \begin{macro}{\if@tud@cdfoot}
+% \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.
+% \begin{macrocode}
+\newif\if@tud@cdfoot
+\TUD@key{cdfoot}[true]{%
+ \TUD@set@ifkey{cdfoot}{@tud@cdfoot}{#1}%
+% \end{macrocode}
+% Die ursprünglichen Kopf- und Fußzeilen werden mit \cs{tud@ps@store}
+% gesichert, um gegebenenfalls zurückschalten zu können. Anschließend werden
+% diese mit dem neuen Stil überschrieben.
+% \begin{macrocode}
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@atdocument%
+ \if@tud@cdfoot%
+ \tud@ps@store{headings}%
+ \tud@ps@store{plain}%
+ \tud@font@koma@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%
+ }%
+% \end{macrocode}
+% Die ursprünglichen Kopf- und Fußzeilen werden mit \cs{tud@ps@restore}
+% wiederhergestellt.
+% \begin{macrocode}
+ \else%
+ \tud@ps@restore{headings}%
+ \tud@ps@restore{plain}%
+ \tud@font@koma@unset{pageheadfoot}%
+ \fi%
+ \fi%
+ \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]{%
+ \ifcsdef{@@tud@ps@#1@#2@#3@#4}{}{%
+ \csletcs{@@tud@ps@#1@#2@#3@#4}{sls@ps@\@nameuse{sls@current#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@\@nameuse{sls@current#1}@#2@#3@#4}{@@tud@ps@#1@#2@#3@#4}%
+ \csundef{@@tud@ps@#1@#2@#3@#4}%
+ }%
+}
+% \end{macrocode}
+% Damit die Einstellungen aus der Präambel übernommen werden, wird die Option
+% ggf. zu Beginn mit \cs{AtBeginDocument} aufgerufen.
+% \begin{macrocode}
+\AtBeginDocument{\if@tud@cdfoot\TUDoptions{cdfoot=true}\fi}
+% \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@cdfoot
+% \end{option}^^A cdfoot
+% \begin{macro}{\tud@ps@headings}
+% \changes{v2.02}{2014/06/23}{entfernt}%^^A
+% \begin{macro}{\tud@ps@myheadings}
+% \changes{v2.02}{2014/06/23}{entfernt}%^^A
+% \begin{macro}{\tud@ps@plain}
+% \changes{v2.02}{2014/06/23}{entfernt}%^^A
+% Diese Befehle wurden bei der Umstellung auf das Paket~\pkg{scrlayer-scrpage}
+% mit der \TUDScript-Version~v2.02 allesamt entfernt. Die Funktionalität wird
+% seitdem durch die \pgs{tudheadings}-Seitenstile bereitgestellt.
+% \end{macro}^^A \tud@ps@plain
+% \end{macro}^^A \tud@ps@myheadings
+% \end{macro}^^A \tud@ps@headings
+% \begin{option}{geometry}
+% \begin{macro}{\tud@geometry}
+% \begin{macro}{\if@tud@geometry@locked}
+% 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{geomery=on}) ein symmetrischer
+% Satzspiegel bereitgestellt (\opt{geomery=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 \pkg{typearea} aus dem \KOMAScript"=Paket erfolgen
+% (\opt{geomery=no}). Mit \cs{tud@geometry@process} werden alle getroffenen
+% Satzspiegeloptionen umgesetzt und nachfolgend definiert.
+% \begin{macrocode}
+\newcommand*\tud@geometry{0}
+\TUD@key@lock{geometry}[true]{%
+ \TUD@set@numkey@lock{geometry}{tud@geometry}{%
+ \TUD@numkey@bool,%
+ {typearea}{0},%
+ {tud}{1},{asymmetric}{1},{cd}{1},%
+ {symmetric}{2},{centred}{2},{centered}{2},%
+ {twoside}{3},{balanced}{3}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@atdocument\recalctypearea\fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@geometry@locked
+% \end{macro}^^A \tud@geometry
+% \end{option}^^A geometry
+%
+% \iffalse
+%</class&option>
+%<*class&body>
+% \fi
+%
+% \begin{length}{\tud@ta@textheight}
+% \begin{length}{\tud@ta@topmargin}
+% \begin{length}{\tud@ta@headheight}
+% \begin{length}{\tud@ta@headsep}
+% \begin{length}{\tud@ta@footskip}
+% Diese Längen werden benötigt, um einen mit \pkg{typearea} berechneten
+% Satzspiegel an \pkg{geometry} weiterzureichen und die unterschiedlichen, vom
+% Satzspiegel abhängigen Seitenlayouts zu erstelen.
+% \begin{macrocode}
+\newlength{\tud@ta@textheight}
+\newlength{\tud@ta@topmargin}
+\newlength{\tud@ta@headheight}
+\newlength{\tud@ta@headsep}
+\newlength{\tud@ta@footskip}
+% \end{macrocode}
+% \end{length}^^A \tud@ta@footskip
+% \end{length}^^A \tud@ta@headsep
+% \end{length}^^A \tud@ta@headheight
+% \end{length}^^A \tud@ta@topmargin
+% \end{length}^^A \tud@ta@textheight
+% \begin{length}{\tud@ta@headdiff}
+% \begin{length}{\tud@ta@footdiff}
+% \changes{v2.02}{2014/06/23}{entfernt}%^^A
+% Eine Länge für den Ausgleich zwischen normalem und benötigtem Satzspiegel für
+% das spezielle Layout des \CDs. Die Differenz zwischen den unterschiedlichen
+% Kopfhöhen der Satzspiegelvarianten wird bei der Ausführung von
+% \cs{tud@geometry@process} berechnet und in \cs{tud@ta@headdiff} gespeichert.
+% Dabei muss unterschieden werden, ober der Satzspiegel genutzt wird, der durch
+% das \CD vorgegeben ist oder der durch \pkg{typearea} berechnete. Die Länge
+% \cs{tud@ta@footdiff} wurde mit der \TUDScript-Version~v2.02 entfernt.
+% \begin{macrocode}
+\newlength{\tud@ta@headdiff}
+% \end{macrocode}
+% \end{length}^^A \tud@ta@footdiff
+% \end{length}^^A \tud@ta@headdiff
+% \begin{macro}{\tud@geometry@restore}
+% \changes{v2.02}{2014/06/27}{neu}%^^A
+% Der Befehl \cs{AfterCalculatingTypearea} wird durch das Paket \pkg{typearea}
+% bereitgestellt. Die durch \pkg{typearea} berechneten Längenwerte für den
+% Satzspiegel werden zur Weiterverarbeitung gesichert. Für die Erstellung des
+% Satzspiegels wird das Paket \pkg{geometry} verwendet. Bei der entsprechenden
+% Option (\opt{geometry=no}) wird jedoch der von \pkg{typearea} berechnete
+% Satzspiegel an \pkg{geometry} weitergereicht. Somit wird es möglich,
+% unabhängig vom genutzten Paket\footnote{\pkg{typearea} oder \pkg{geometry}}
+% zur Festlegung des Satzspiegels, diesen innerhalb des Dokumentes zu ändern.
+% Damit auch Änderungen an der Papiergröße möglich sind, muss ein einzelnes
+% Makro (\cs{Gm@restore@org}) aus \pkg{geometry} temporär deaktiviert werden.
+% \begin{macrocode}
+\newcommand*\tud@geometry@restore{}
+\AfterCalculatingTypearea{%
+ \setlength{\tud@ta@textheight}{\textheight}%
+ \setlength{\tud@ta@topmargin}{\topmargin}%
+ \setlength{\tud@ta@headheight}{\headheight}%
+ \setlength{\tud@ta@headsep}{\headsep}%
+ \setlength{\tud@ta@footskip}{\footskip}%
+ \let\tud@geometry@restore\Gm@restore@org%
+ \if@atdocument%
+ \let\Gm@restore@org\relax%
+ \tud@geometry@process%
+% \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 und korrekte Ausführen von \cs{tud@beforepagestyle} zu erzwingen.
+% \begin{macrocode}
+ \gdef\tud@currentgeometry{}%
+ \expandafter\pagestyle\expandafter{\currentpagestyle}%
+ \fi%
+ \let\Gm@restore@org\tud@geometry@restore%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@geometry@restore
+% \begin{macro}{\tud@geometry@hmargin}
+% \begin{macro}{\tud@geometry@vmargin}
+% \begin{macro}{\tud@geometry@pmargin}
+% \begin{macro}{\tud@geometry@dmargin}
+% Dies sind Hilfsmakros zur Definition unterschiedicher Seitenlayouts
+% (horizontale und vertikale Ränder). Es handelt sich dabei um die Definition
+% der horizontalen und vertikalen Seitenränder sowie die angepassten vertikalen
+% Einstellungen für die Seitenstilvarianten mit TUD-Kopf und/oder \DDC-Fuß.
+% Gesetzt werden diese in Abhängigkeit von der Option \opt{geometry} im
+% Makro \cs{tud@geometry@process} bzw. \cs{tud@geometry@@process}.
+% \begin{macrocode}
+\newcommand*\tud@geometry@hmargin{}
+\newcommand*\tud@geometry@vmargin{}
+\newcommand*\tud@geometry@pmargin{}
+\newcommand*\tud@geometry@dmargin{}
+% \end{macrocode}
+% \end{macro}^^A \tud@geometry@dmargin
+% \end{macro}^^A \tud@geometry@pmargin
+% \end{macro}^^A \tud@geometry@vmargin
+% \end{macro}^^A \tud@geometry@hmargin
+% \changes{v2.02}{2014/06/29}{Verzögertes Laden von \pkg{geometry}}%^^A
+% Das Paket \pkg{geometry} erlaubt eine genaue Vorgabe des Satzspiegels und
+% der Seitenränder, wie es vom \CD der TU~Dresden verlangt wird. Damit dieses
+% alle Satzspiegeleinstellungen korrekt vornimmt und auch alle Klassenoptionen
+% korrekt verarbeitet, wird das Laden mit \cs{AtEndPreamble} bis ans Ende der
+% Präambel verzögert und vorher der Satzspiegel neu berechnet. Anschließend
+% erstellt \cs{tud@geometry@process} alle benötigten Satzspiegel. Durch das
+% Setzen des Seitenstils wird der richtige Satzspiegel ausgewählt. Dies
+% geschieht \emph{nicht}, wenn die \cls{standalone}-Klasse mit der Option
+% \opt{crop} geladen wurde, um die Seitenränder nicht zu ändern.
+% \begin{macrocode}
+\AtEndPreamble{%
+ \tud@ifsacrop{}{%
+ \recalctypearea%
+ \RequirePackage{geometry}[2010/09/12]%
+ \tud@geometry@process%
+ \expandafter\pagestyle\expandafter{\currentpagestyle}%
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\tud@geometry@process}
+% \changes{v2.02}{2014/06/23}{diverse Anpassungen an \pkg{scrlayer-scrpage}}%^^A
+% \begin{macro}{\tud@geometry@@process}
+% Das Makro \cs{tud@geometry@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@geometry@process{%
+% \end{macrocode}
+% Die Maßvorgaben werden entsprechend der Seitengröße gesetzt.
+% \begin{macrocode}
+ \tud@geometry@set%
+% \end{macrocode}
+% Für den Fall, dass \pkg{typearea} die Satzspiegelberechnung übernimmt, werden
+% die Ergebnisse aus der Berechnung direkt an \pkg{geometry} weitergereicht.
+% Dazu werden die berechneten Werte in die entsprechenden Hilfsmakros
+% für die Erstellung der \pkg{geometry}-Satzspiegel übergeben.
+% \begin{macrocode}
+ \ifcase \tud@geometry\relax%
+ \def\tud@geometry@hmargin{%
+ left=\dimexpr\oddsidemargin+1in\relax,%
+ width=\textwidth,%
+ }%
+ \def\tud@geometry@vmargin{%
+ top={%
+ \dimexpr\tud@ta@topmargin+\tud@ta@headheight+\tud@ta@headsep+1in\relax%
+ },%
+ headheight=\tud@ta@headheight,%
+ headsep=\tud@ta@headsep,%
+ textheight=\tud@ta@textheight,%
+ footskip=\tud@ta@footskip,%
+ }%
+ \def\tud@geometry@pmargin{%
+ top={%
+ \dimexpr\tud@dim@headheight+\tud@dim@barheight+\tud@dim@headsep\relax%
+ },%
+ headheight=\dimexpr\tud@dim@headheight+\tud@dim@barheight\relax,%
+ headsep=\tud@dim@headsep,%
+ textheight=\dimexpr\tud@ta@textheight-\tud@ta@headdiff\relax,%
+ footskip=\tud@ta@footskip,%
+ }%
+ \def\tud@geometry@dmargin{%
+ textheight={%
+ \dimexpr\tud@ta@textheight-\tud@ta@headdiff-\tud@dim@ddcdiff\relax%
+ },%
+ footskip=\dimexpr\tud@ta@footskip+\tud@dim@ddcdiff\relax,%
+ }%
+% \end{macrocode}
+% Es wird die Differenz der Höhen zwischen TUD-Kopf und Standardkopfzeile
+% für den \pkg{typearea}-Satzspiegel berechnet.
+% \begin{macrocode}
+ \setlength{\tud@ta@headdiff}{\dimexpr%
+ \tud@dim@headheight+\tud@dim@barheight+\tud@dim@headsep%
+ -\tud@ta@topmargin-\tud@ta@headheight-\tud@ta@headsep-1in\relax%
+ }%
+ \setlength{\tud@dim@ddcdiff}{\dimexpr%
+ \tud@dim@ddcfoot-\tud@ta@footskip+\tud@dim@footskip\relax%
+ }%
+% \end{macrocode}
+% Sollte der \pkg{typearea}-Satzspiegel noch unterhalb des TUD-Kopfes liegen,
+% wird der Abstand zum Kopf vergrößert.
+% \begin{macrocode}
+ \ifdim\tud@ta@headdiff<\z@\relax%
+ \addtolength{\tud@dim@headsep}{-\tud@ta@headdiff}%
+ \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. Danach kommt der Gleichanteil.
+% \begin{macrocode}
+ \else%
+ \ifcase \tud@geometry\or%
+ \def\tud@geometry@hmargin{%
+ left=\tud@dim@left,%
+ textwidth=\dimexpr\paperwidth-\tud@dim@both-\ta@bcor\relax,%
+ bindingoffset=\ta@bcor,%
+ \if@twoside asymmetric,\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%
+ \def\tud@geometry@hmargin{%
+ left=.5\tud@dim@both,%
+ textwidth=\dimexpr\paperwidth-\tud@dim@both-\ta@bcor\relax,%
+ bindingoffset=\ta@bcor,%
+ }%
+% \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%
+ \def\tud@geometry@hmargin{%
+ \if@twoside%
+ left=.4\tud@dim@both,%
+ twoside,%
+ \else%
+ left=.5\tud@dim@both,%
+ \fi%
+ textwidth=\dimexpr\paperwidth-\tud@dim@both-\ta@bcor\relax,%
+ bindingoffset=\ta@bcor,%
+ }%
+ \fi%
+% \end{macrocode}
+% Für alle drei Varianten der vertikale Gleichanteil.
+% \begin{macrocode}
+ \def\tud@geometry@vmargin{%
+ top=\tud@dim@top,%
+ headheight=\tud@ta@headheight,%
+ headsep=\tud@dim@headsep,%
+ bottom=\tud@dim@bottom,%
+ footskip=\tud@dim@footskip,%
+ \tud@geometry@hincl,%
+ \tud@geometry@fincl,%
+ }%
+ \def\tud@geometry@pmargin{%
+ top={%
+ \dimexpr\tud@dim@headheight+\tud@dim@barheight+\tud@dim@headsep\relax%
+ },%
+ headheight=\dimexpr\tud@dim@headheight+\tud@dim@barheight\relax,%
+ headsep=\tud@dim@headsep,%
+ bottom=\tud@dim@bottom,%
+ footskip=\tud@dim@footskip,%
+ }%
+% \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}
+ \def\tud@geometry@dmargin{%
+ \if@fincl%
+ bottom=\dimexpr%
+ \tud@dim@bottom+\tud@dim@ddcfoot+\tud@dim@footskip\relax,%
+ \else%
+ bottom=\dimexpr\tud@dim@bottom+\tud@dim@ddcfoot\relax,%
+ \fi%
+ footskip=\dimexpr\tud@dim@footskip+\tud@dim@ddcfoot\relax,%
+ }%
+% \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@ta@headdiff}{%
+ \dimexpr\tud@dim@headheight+\tud@dim@barheight%
+ +\tud@dim@headsep-\tud@dim@top\relax%
+ }%
+ \setlength{\tud@dim@ddcdiff}{\dimexpr%
+ \tud@dim@ddcfoot+2\tud@dim@footskip-\tud@dim@bottom\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.
+% \begin{macrocode}
+ \ifdim\tud@ta@headdiff<\z@\relax\setlength{\tud@ta@headdiff}{\z@}\fi%
+ \global\tud@ta@headdiff=\tud@ta@headdiff%
+ \ifdim\tud@dim@ddcdiff<\z@\relax\setlength{\tud@dim@ddcdiff}{\z@}\fi%
+ \global\tud@dim@ddcdiff=\tud@dim@ddcdiff%
+ \setlength{\tud@dim@headingsvskip}{.6\tud@dim@headheight}%
+ \global\tud@dim@headingsvskip=\tud@dim@headingsvskip%
+% \end{macrocode}
+% Es wird \cs{tud@geometry@@process} aufgerufen, was die zuvor definierten
+% Hilfsmakros nutzt, um alle benötigten Seitenlayouts optionsabhängig zu
+% erstellen.
+% \begin{macrocode}
+ \tud@geometry@@process%
+}
+% \end{macrocode}
+% Der Befehl \cs{tud@geometry@@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 \opt{tudddc} für
+% TUD-Kopf und \DDC-Fuß, \opt{tudpage} für den alleinigen TUD-Kopf sowie
+% \opt{tudarea} für den normalen bzw. mit \pkg{typearea} berechneten
+% Satzspiegel.
+% \begin{macrocode}
+\newcommand*\tud@geometry@@process{%
+% \end{macrocode}
+% Als erstes wird der Satzspiegel für TUD-Kopf und \DDC-Fuß erstellt. Das
+% Einbeziehen der Fußzeile in den Satzspiegel erfolgt ggf. manuell bei der
+% Definition von \cs{tud@geometry@dmargin}.
+% \begin{macrocode}
+ \edef\@tempa{%
+ \tud@geometry@hmargin,%
+ \tud@geometry@pmargin,%
+ \tud@geometry@dmargin,%
+ ignorehead,ignorefoot,%
+ }%
+ \expandafter\newgeometry\expandafter{\@tempa}%
+ \savegeometry{tudareaddc}%
+% \end{macrocode}
+% Danach folgt der Seitenstil, welcher zwar den TUD-Kopf aber lediglich die
+% Standardfußzeile hat.
+% \begin{macrocode}
+ \edef\@tempa{%
+ \tud@geometry@hmargin,%
+ \tud@geometry@pmargin,%
+ ignorehead,%
+ \tud@geometry@fincl%
+ }%
+ \expandafter\newgeometry\expandafter{\@tempa}%
+ \savegeometry{tudarea}%
+% \end{macrocode}
+% Der Standardsatzspiegel wird erstellt.
+% \begin{macrocode}
+ \edef\@tempa{%
+ \tud@geometry@hmargin,%
+ \tud@geometry@vmargin,%
+ }%
+ \expandafter\newgeometry\expandafter{\@tempa}%
+ \savegeometry{typearea}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@geometry@@process
+% \end{macro}^^A \tud@geometry@process
+% \begin{macro}{\tud@geometry@hincl}
+% \changes{v2.02}{2014/06/23}{diverse Anpassungen an \pkg{scrlayer-scrpage}}%^^A
+% \begin{macro}{\tud@geometry@fincl}
+% Diese beiden Hilfsmakro werten die Optionen für das Einbeziehen von Kopf- und
+% Fußzeile aus.
+% \begin{macrocode}
+\newcommand*\tud@geometry@hincl{%
+ \if@hincl%
+ includehead,%
+ \else%
+ ignorehead,%
+ \fi%
+}
+\newcommand*\tud@geometry@fincl{%
+ \if@fincl%
+ includefoot,%
+ \else%
+ ignorefoot,%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@geometry@fincl
+% \end{macro}^^A \tud@geometry@hincl
+% \begin{environment}{tudpage}
+% \changes{v2.02}{2014/06/23}{an Paket \pkg{scrlayer-scrpage} angepasst}%^^A
+% \begin{macro}{\tud@ps}
+% \begin{macro}{\tud@ps@select}
+% \changes{v2.02}{2014/07/19}{neu}%^^A
+% \begin{macro}{\tud@currentpagestyle}
+% \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
+% 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@ps{tudheadings}
+\newcommand*\tud@ps@select{%
+ \expandafter\pagestyle\expandafter{\tud@ps}%
+%<*book|report>
+ \ifstr{\tud@ps}{empty}{\renewcommand*\chapterpagestyle{empty}}{}%
+ \ifstr{\tud@ps}{empty.tudheadings}{%
+ \renewcommand*\chapterpagestyle{empty.tudheadings}%
+ }{}%
+%</book|report>
+}
+\newcommand*\tud@currentpagestyle{}
+\newcommand*\tud@currentpagestyle@set{%
+ \ifdefvoid{\tud@currentpagestyle}{%
+ \xdef\tud@currentpagestyle{\currentpagestyle}%
+ }{}%
+}
+\newcommand*\tud@currentpagestyle@reset{%
+ \expandafter\pagestyle\expandafter{\tud@currentpagestyle}%
+ \let\tud@currentpagestyle\relax%
+}
+\NewEnviron{tudpage}[1][]{%
+% \end{macrocode}
+% Um beim Umschalten des Seitenstils den aktuellen selbst zu behalten, wird
+% dieser im Hilfsmakro \cs{tud@currentpagestyle} gespeichert.
+% \begin{macrocode}
+ \tud@currentpagestyle@set%
+ \clearpage\def\tud@ps{tudheadings}%
+ \TUD@parameter@set[tudpage]{#1}%
+ \tud@ps@select%
+ \tud@multicols@check%
+% \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}
+ \ifnum\tud@multicols>1\relax%
+ \begin{multicols}{\tud@multicols}%
+ \fi%
+ \BODY%
+ \ifnum\tud@multicols>1\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}
+% \end{macro}^^A \tud@currentpagestyle@reset
+% \end{macro}^^A \tud@currentpagestyle@set
+% \end{macro}^^A \tud@currentpagestyle
+% \end{macro}^^A \tud@ps@select
+% \end{macro}^^A \tud@ps
+% \end{environment}^^A tudpage
+% Im Folgenden werden die einzelnen Parameter für die \env{tudpage}"=Umgebung
+% definiert. Mit \cs{TUD@parameter}\marg{Family}\marg{\dots} wird die
+% Parameterfamilie festgelegt und anschließend die Definitionen getätigt.
+% \begin{macrocode}
+\TUD@parameter{tudpage}{%
+% \end{macrocode}
+% \begin{parameter}{language}
+% Mit diesem Parameter kann die Sprache in der Umgebung umgeschaltet werden. Die
+% Sprache kann auch ohne den entsprechenden Schlüssel direkt als Parameter
+% angegeben werden.
+% \begin{macrocode}
+ \TUD@parameter@define{language}{\selectlanguage{#1}}%
+% \end{macrocode}
+% \end{parameter} ^^A language
+% \begin{parameter}{columns}
+% Hiermit kann die Anzahl der Spalten für die Umgebung angegeben werden. Für
+% mehr als zwei Spalten muss das Paket \pkg{multicols} geladen werden. Die
+% Spaltenanzahl kann auch ohne den entsprechenden Schlüssel direkt Parameter
+% angegeben werden.
+% \begin{macrocode}
+ \TUD@parameter@define{columns}{\def\tud@multicols{#1}}%
+% \end{macrocode}
+% \end{parameter} ^^A columns
+% \begin{parameter}{color}
+% \begin{parameter}{colour}
+% Die \opt{color}"=Option ändert die Farbe von Schrift, Querbalken und im
+% pdf\LaTeX-Modus auch die des TUD-Logos.
+% \begin{macrocode}
+ \TUD@parameter@define{color}[HKS41]{\def\tud@head@color{#1}}%
+ \TUD@parameter@let{colour}{color}%
+% \end{macrocode}
+% \end{parameter}^^A colour
+% \end{parameter}^^A color
+% \begin{parameter}{widehead}
+% Die Breite des Querbalkens kann ebenfalls geändert werden.
+% \begin{macrocode}
+ \TUD@parameter@define{widehead}[true]{\TUDoption{widehead}{#1}}%
+% \end{macrocode}
+% \end{parameter}^^A widehead
+% \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@define{ddc}[true]{\TUDoption{ddc}{#1}}%
+ \TUD@parameter@define{ddchead}[true]{\TUDoption{ddchead}{#1}}%
+ \TUD@parameter@define{ddcfoot}[true]{\TUDoption{ddcfoot}{#1}}%
+% \end{macrocode}
+% \end{parameter}^^A ddc
+% \end{parameter}^^A ddchead
+% \end{parameter}^^A ddcfoot
+% \begin{parameter}{head}
+% \changes{v2.02}{2014/06/30}{entfernt, Funktionalität teilweise durch Option
+% \opt{ddchead} übernommen}%^^A
+% \begin{parameter}{foot}
+% \changes{v2.02}{2014/06/30}{entfernt, Funktinalität teilweise durch Option
+% \opt{ddcfoot} übernommen}%^^A
+% Diese Parameter wurden entfernt. Innerhalb der Umgebung können hierfür
+% \cs{TUDoptions} mit den Schlüsseln \opt{ddchead=\dots} und \opt{ddcfoot=\dots}
+% sowie \cs{headlogo} bzw. für den Querbalken \opt{widehead=true/false} genutzt
+% werden.
+% \end{parameter}^^A head
+% \end{parameter}^^A foot
+% \begin{parameter}{cdfont}
+% \begin{parameter}{cdfonts}
+% \changes{v2.02}{2014/08/08}{entfernt}^^A
+% \begin{parameter}{tudfonts}
+% \changes{v2.02}{2014/08/08}{entfernt}^^A
+% Die Option \opt{cdfont} bzw. \opt{cdfonts} bestimmt, ob die Schriften des
+% \CDs{} oder aber die standarmäßigen Serifenlosen für die Auszeichnugen in der
+% Kopfzeile und Serifen im Inhalt verwendet werden.
+% \begin{macrocode}
+ \TUD@parameter@define{cdfont}[true]{\TUDoption{cdfont}{#1}}%
+% \end{macrocode}
+% \end{parameter}^^A tudfonts
+% \end{parameter}^^A cdfonts
+% \end{parameter}^^A cdfont
+% \begin{parameter}{barfont}
+% \changes{v2.02}{2014/07/08}{neu}%^^A
+% Mit der Option \opt{headfont} kann die Verwendung der Schriften des \CDs
+% aktiviert werden, wenn diese im Fließtext nicht zum Einsatz kommen.
+% \begin{macrocode}
+ \TUD@parameter@define{barfont}[true]{\TUDoption{barfont}{#1}}%
+% \end{macrocode}
+% \end{parameter}^^A headfont
+% \begin{parameter}{pagestyle}
+% \changes{v2.02}{2014/06/23}{neu}%^^A
+% Mit diesem Parameter kann der verwendete Seitenstil eingestellt werden, wobei
+% entweder \pgs{tudheadings} oder aber\pgs{plain.tudheadings} bzw.
+% \pgs{empty.tudheadings} verwendet wird.
+% \begin{macrocode}
+ \TUD@parameter@define{pagestyle}{%
+ \ifstr{#1}{empty}{\renewcommand*\tud@ps{empty.tudheadings}}{%
+ \ifstr{#1}{empty.tudheadings}{\renewcommand*\tud@ps{empty.tudheadings}}{%
+ \ifstr{#1}{plain}{\renewcommand*\tud@ps{plain.tudheadings}}{%
+ \ifstr{#1}{plain.tudheadings}{\renewcommand*\tud@ps{plain.tudheadings}}{%
+ \ifstr{#1}{headings}{\renewcommand*\tud@ps{tudheadings}}{%
+ \ifstr{#1}{tudheadings}{\renewcommand*\tud@ps{tudheadings}}{%
+ \TUD@parameter@wrn{pagestyle}{%
+ headings, plain, empty or any tudheadings page style type%
+ }%
+ }}}}}}%
+ }%
+% \end{macrocode}
+% \end{parameter}^^A pagestyle
+% \begin{parameter}{headlogo}
+% \begin{parameter}{logo}
+% Das sekundäre Logo kann ebenfalls lokal geändert werden.
+% \begin{macrocode}
+ \TUD@parameter@define{headlogo}{\headlogo{#1}}%
+ \TUD@parameter@let{logo}{headlogo}%
+% \end{macrocode}
+% \end{parameter}^^A logo
+% \end{parameter}^^A headlogo
+% Für den Fall, dass ein Wert nicht in der Schlüssel"=Wert"=Notation gegeben
+% wird, erfolgt eine Sonderbehandlung durch \cs{tud@environmenthandler}, bei der
+% erst 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} und damit auch die aktuelle Parameterfamilie beendet.
+% \begin{macrocode}
+ \TUD@parameter@sethandler{\tud@environmenthandler{#1}}%
+}
+% \end{macrocode}
+%
+% \iffalse
+%</class&body>
+% \fi
+%
+% \Finale
+%
+\endinput