diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/tudscr/source/tudscr-pagestyle.dtx |
Initial commit
Diffstat (limited to 'macros/latex/contrib/tudscr/source/tudscr-pagestyle.dtx')
-rw-r--r-- | macros/latex/contrib/tudscr/source/tudscr-pagestyle.dtx | 2785 |
1 files changed, 2785 insertions, 0 deletions
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 |