diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/tudscr/tudscr-pagestyle.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/tudscr/tudscr-pagestyle.dtx | 1528 |
1 files changed, 1528 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-pagestyle.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-pagestyle.dtx new file mode 100644 index 00000000000..9ed3b3e8af3 --- /dev/null +++ b/Master/texmf-dist/source/latex/tudscr/tudscr-pagestyle.dtx @@ -0,0 +1,1528 @@ +% \CheckSum{1206} +% \iffalse meta-comment +% ====================================================================== +% +% Das Corporate Design der TU Dresden auf Basis der KOMA-Script-Klassen +% +% ====================================================================== +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% This work has the LPPL maintenance status "author-maintained". +% The current maintainer and author of this work is Falk Hanisch. +% ---------------------------------------------------------------------- +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% Der aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch. +% ====================================================================== +% \fi +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% \iffalse +%%% From File: tudscr-pagestyle.dtx +%<*driver> +% \fi +\ProvidesFile{tudscr-pagestyle.dtx}% + [2014/04/24 v2.00 TUD-KOMA-Script (pagestyle)] +% \iffalse +\documentclass{tudscrdoc} +\KOMAoptions{parskip=half-} +\CodelineIndex +\RecordChanges +\GetFileInfo{tudscr-pagestyle.dtx} +\begin{document} + \maketitle + \DocInput{\filename} +\end{document} +%</driver> +% \fi +% +% \selectlanguage{ngerman} +% +% \section{Der Seitenstil des \CDs} +% +% Das \CD verlangt (eigentlich) einen fest vorgegebenen Satzspiegel. Für das +% Setzen längerer wissenschaftlicher Abhandlungen ist dieser jedoch alles +% andere als glücklich gewählt. Insbesondere für den doppelseitigen Satz ist +% das Standardlayout nicht gut nutzbar. Für die \TUDScript"=Klassen wird deshalb +% die Abweichung vom sonst fest vorgegebenen Satzspiegel ermöglicht. +% +% \StopEventually{\PrintIndex\PrintChanges} +% +% \subsection{Definition der konstanten Größen und Maße} +% +% Die Vorlagen sollen neben den vom \CD vorgegebenen Seitenrändern weitere +% Layouts ermöglichen und u.\,a. auch die Nutzung des Paketes \pkg{typearea} +% erlauben. Damit ein einheitliches Verfahren zur Wahl bzw. Umschaltung des +% Satzspiegels genutzt werden kann, wird das Paket \pkg{geometry} genutzt. +% Dabei werden entweder die gewünschten Maße der Seitenränder direkt gewählt +% oder aber die mit \pkg{typearea} berechneten Maße an \pkg{geometry} +% durchgereicht. +% +% Als erstes werden die Standardmaße für die Seitenränder im \CD definiert, +% danach speziell für die \env{tudpage}"=Umgebung. +% +% \iffalse +%<*titlepage|class&!option> +% \fi +% +% \begin{length}{\tud@dim@left} +% \begin{length}{\tud@dim@right} +% \begin{length}{\tud@dim@both} +% Die Seitenränder für links und rechts sowie deren Summe, welche später für +% weitere Layouts dazu verwendet wird, diese anteilig zu verteilen. +% \begin{macrocode} +\newlength{\tud@dim@left} +%<*class> +\newlength{\tud@dim@right} +\newlength{\tud@dim@both} +%</class> +% \end{macrocode} +% \end{length}^^A \tud@dim@both +% \end{length}^^A \tud@dim@right +% \end{length}^^A \tud@dim@left +% \begin{length}{\tud@dim@top} +% \begin{length}{\tud@dim@bottom} +% \begin{length}{\tud@dim@footskip} +% Die Seitenränder für sowohl oben als auch unten sowie der Abstand zwischen +% Textkörper und Fußzeile. +% \begin{macrocode} +%<*class> +\newlength{\tud@dim@top} +\newlength{\tud@dim@bottom} +\newlength{\tud@dim@footskip} +%</class> +% \end{macrocode} +% \end{length}^^A \tud@dim@footskip +% \end{length}^^A \tud@dim@bottom +% \end{length}^^A \tud@dim@top +% \begin{length}{\tud@dim@headheight} +% \begin{length}{\tud@dim@barheight} +% \begin{length}{\tud@dim@headsep} +% Es folgen die speziellen Maße für die Seiten mit dem TUD-Kopf, also die Höhe +% oberhalb des Querbalkens, die Höhe des Querbalkens selbst sowie der vertikale +% (Mindest"~)Abstand zwischen Querbalken und Textkörper. +% \begin{macrocode} +\newlength{\tud@dim@headheight} +\newlength{\tud@dim@barheight} +\newlength{\tud@dim@headsep} +% \end{macrocode} +% \end{length}^^A \tud@dim@headsep +% \end{length}^^A \tud@dim@barheight +% \end{length}^^A \tud@dim@headheight +% \begin{length}{\tud@dim@logox} +% \begin{length}{\tud@dim@logoy} +% \begin{length}{\tud@dim@logowidth} +% \begin{length}{\tud@dim@logoheight} +% Außerdem müssen noch die Abmessungen und die Position des TUD-Logos definiert +% werden, nämlich der horizontale (Soll"~)Abstand zwischen linkem Seitenrand +% und Logo, der vertikale (Soll"~)Abstand zwischen oberem Seitenrand und Logo +% sowie die Breite und Höhe\footnote{Proportionen sind durch die Grafik +% vorgegeben} des Logos. +% \begin{macrocode} +\newlength{\tud@dim@logox} +\newlength{\tud@dim@logoy} +\newlength{\tud@dim@logowidth} +\newlength{\tud@dim@logoheight} +% \end{macrocode} +% \end{length}^^A \tud@dim@logoheight +% \end{length}^^A \tud@dim@logowidth +% \end{length}^^A \tud@dim@logoy +% \end{length}^^A \tud@dim@logox +% \begin{length}{\tud@dim@thinline} +% \begin{length}{\tud@dim@heavyline} +% Die Linienstärke der Outline im Kopf ist für ein monochromes Layout schmaler +% als im Layout mit farbigem Hintergrund.\footnote{% +% monochrom \cs{tud@dim@thinline}, koloriert \cs{tud@dim@heavyline}}% +% Da im Dokument beide Varianten vorkommen können, wird die Breite durch den +% Seitenstil situativ entweder auf den Wert von \cs{tud@dim@thinline} oder aber +% \cs{tud@dim@heavyline} gesetzt. +% \begin{macrocode} +\newlength{\tud@dim@thinline} +%<*class> +\newlength{\tud@dim@heavyline} +%</class> +% \end{macrocode} +% \end{length}^^A \tud@dim@heavyline +% \end{length}^^A \tud@dim@thinline +% \begin{length}{\tud@dim@headingsvskip} +% Die Länge für den vertikalen Standardversatz der Überschriften. +% \begin{macrocode} +\newlength{\tud@dim@headingsvskip} +% \end{macrocode} +% \end{length}^^A \tud@dim@headingsvskip +% \begin{length}{\tud@dim@ddcheight} +% Zu guter Letzt noch die Höhe des DDC-Logos in der Fußzeile. Die maximale Höhe +% der Fußzeile ist fest vorgegeben. +% \begin{macrocode} +%<*class> +\newlength{\tud@dim@ddcheight} +%</class> +% \end{macrocode} +% \end{length}^^A \tud@dim@ddcheight +% \begin{macro}{\tud@geometry@set} +% \begin{macro}{\tud@head@font@size} +% Hiermit werden in Abhängigkeit der gewählten Papiergröße die Maße für die +% Größe der Kopfzeile, die Position des Logos, die Seitenränder sowie die +% Schriftgröße in der Kopfzeile definiert. Aufgerufen wird der Befehl durch +% \cs{tud@geometry@process}. +% \begin{macrocode} +\newcommand*\tud@head@font@size{} +\newcommand*\tud@geometry@set{% + \ifdim\paperheight<148.1mm\relax% + \setlength{\tud@dim@headheight}{17.5mm}% + \setlength{\tud@dim@barheight}{2.5mm}% + \setlength{\tud@dim@headsep}{6mm}% + \setlength{\tud@dim@logox}{5.5mm}% + \setlength{\tud@dim@logoy}{6.5mm}% + \setlength{\tud@dim@logowidth}{28.5mm}% + \setlength{\tud@dim@left}{15mm}% +%<*class> + \setlength{\tud@dim@right}{10mm}% + \setlength{\tud@dim@top}{12.5mm}% + \setlength{\tud@dim@bottom}{12.5mm}% + \setlength{\tud@dim@footskip}{6mm}% + \setlength{\tud@dim@heavyline}{0.75pt}% +%</class> + \setlength{\tud@dim@thinline}{0.5pt}% + \def\tud@head@font@size{4.5}% + \else\ifdim\paperheight<297.1mm\relax% + \setlength{\tud@dim@headheight}{35mm}% + \setlength{\tud@dim@barheight}{5mm}% + \setlength{\tud@dim@headsep}{12mm}% + \setlength{\tud@dim@logox}{11mm}% + \setlength{\tud@dim@logoy}{13.5mm}% + \setlength{\tud@dim@logowidth}{57mm}% + \setlength{\tud@dim@left}{30mm}% +%<*class> + \setlength{\tud@dim@right}{20mm}% + \setlength{\tud@dim@top}{25mm}% + \setlength{\tud@dim@bottom}{25mm}% + \setlength{\tud@dim@footskip}{12mm}% + \setlength{\tud@dim@heavyline}{1pt}% +%</class> + \setlength{\tud@dim@thinline}{0.5pt}% + \def\tud@head@font@size{9}% + \else\ifdim\paperheight<420.1mm\relax% + \setlength{\tud@dim@headheight}{50mm}% + \setlength{\tud@dim@barheight}{7mm}% + \setlength{\tud@dim@headsep}{17mm}% + \setlength{\tud@dim@logox}{15.5mm}% + \setlength{\tud@dim@logoy}{19mm}% + \setlength{\tud@dim@logowidth}{80mm}% + \setlength{\tud@dim@left}{42mm}% +%<*class> + \setlength{\tud@dim@right}{28mm}% + \setlength{\tud@dim@top}{35mm}% + \setlength{\tud@dim@bottom}{35mm}% + \setlength{\tud@dim@footskip}{17mm}% + \setlength{\tud@dim@heavyline}{1.4pt}% +%</class> + \setlength{\tud@dim@thinline}{0.7pt}% + \def\tud@head@font@size{13}% + \else\ifdim\paperheight<594.1mm\relax% + \setlength{\tud@dim@headheight}{70mm}% + \setlength{\tud@dim@barheight}{10mm}% + \setlength{\tud@dim@headsep}{24mm}% + \setlength{\tud@dim@logox}{22mm}% + \setlength{\tud@dim@logoy}{27mm}% + \setlength{\tud@dim@logowidth}{114mm}% + \setlength{\tud@dim@left}{60mm}% +%<*class> + \setlength{\tud@dim@right}{40mm}% + \setlength{\tud@dim@top}{50mm}% + \setlength{\tud@dim@bottom}{50mm}% + \setlength{\tud@dim@footskip}{24mm}% + \setlength{\tud@dim@heavyline}{1.7pt}% +%</class> + \setlength{\tud@dim@thinline}{1pt}% + \def\tud@head@font@size{13.5}% + \else\ifdim\paperheight<841.1mm\relax% + \setlength{\tud@dim@headheight}{100mm}% + \setlength{\tud@dim@barheight}{14mm}% + \setlength{\tud@dim@headsep}{34mm}% + \setlength{\tud@dim@logox}{31mm}% + \setlength{\tud@dim@logoy}{38mm}% + \setlength{\tud@dim@logowidth}{161.5mm}% + \setlength{\tud@dim@left}{85mm}% +%<*class> + \setlength{\tud@dim@right}{56.5mm}% + \setlength{\tud@dim@top}{71mm}% + \setlength{\tud@dim@bottom}{71mm}% + \setlength{\tud@dim@footskip}{34mm}% + \setlength{\tud@dim@heavyline}{1.9pt}% +%</class> + \setlength{\tud@dim@thinline}{1.5pt}% + \def\tud@head@font@size{14}% + \else% + \setlength{\tud@dim@headheight}{140mm}% + \setlength{\tud@dim@barheight}{20mm}% + \setlength{\tud@dim@headsep}{48mm}% + \setlength{\tud@dim@logox}{44mm}% + \setlength{\tud@dim@logoy}{54mm}% + \setlength{\tud@dim@logowidth}{228mm}% + \setlength{\tud@dim@left}{120mm}% +%<*class> + \setlength{\tud@dim@right}{80mm}% + \setlength{\tud@dim@top}{100mm}% + \setlength{\tud@dim@bottom}{100mm}% + \setlength{\tud@dim@footskip}{48mm}% + \setlength{\tud@dim@heavyline}{2.1pt}% +%</class> + \setlength{\tud@dim@thinline}{2pt}% + \def\tud@head@font@size{20}% + \fi\fi\fi\fi\fi% +%<*class> + \setlength{\tud@dim@both}% + {\dimexpr\tud@dim@left+\tud@dim@right}% +%</class> +% \end{macrocode} +% Hiermit wird sichergestellt, dass bei der Verwendung des DDC-Logos im Fuß +% ausreichend Platz zur Verfügung steht. +% \begin{macrocode} +%<*class> + \setlength{\tud@dim@ddcheight}{.6\tud@dim@headheight}% + \setlength{\tud@ta@footdiff}% + {\dimexpr\tud@dim@ddcheight-\tud@ta@footskip+\baselineskip}% + \ifdim\tud@ta@footdiff<\z@\relax% + \setlength{\tud@ta@footdiff}{\z@}% + \fi% +%</class> +} +% \end{macrocode} +% \end{macro}^^A \tud@head@font@size +% \end{macro}^^A \tud@geometry@set +% +% \subsection{Definition des Seitenstils} +% +% Ein zentraler Bestandteil der Vorlagen ist der Seitenkopf des \CDs. +% Dieser wird zum einen von verschiedenen Befehlen\footnote{beispielsweise von +% \cs{maketitle} oder \cs{part} bzw. \cs{addpart}} benötigt, kann aber auch im +% Dokument durch den Anwender selbst mit der \env{tudpage}"=Umgebung genutzt +% werden. +% \todo[v3.12]{% +% Umstellung auf scrlayer; Seitenstil tudpage in scrlayer als separates Paket? +% } +% \begin{macro}{\ps@tudpage@plain} +% \begin{macro}{\ps@tudpage@empty} +% \begin{macro}{\tud@head@text} +% \begin{macro}{\tud@head@text@first} +% \begin{macro}{\tud@head@text@second} +% \begin{macro}{\tud@head@text@delimiter} +% \begin{macro}{\tud@head@text@buffer} +% \begin{macro}{\tud@head@font} +% \begin{macro}{\tud@head@rule} +% Es wird ein neuer Seitenstil kreiert, der das \CD der TU~Dresden mit der +% prägenden Kopfzeile umsetzt. Dabei soll dieser Kopf auch verwendbar sein, +% wenn nicht die vom \CD vorgeschriebenen Seitenränder sondern das Paket +% \pkg{typearea} genutzt wird. Dafür wird das Logo im Kopf so wie im \CD +% vorgesehen mit dem TU-Symbol in den Rand und dem Schriftzug bündig zum +% Textblock gesetzt. Für den Fall, dass das Dokument nicht ausschließlich mit +% dem TUD-Kopf auf jeder Seite gesetzt wird, muss der komplette vertikale +% Satzspiegel angepasst werden, sonst wäre der obere Rand optisch viel zu groß. +% +% Hierfür wird das Paket \pkg{geometry} genutzt. Es werden mehrere Layouts +% erstellt\footnote{normaler Satzspiegel, TUD-Kopf sowie TUD-Kopf und "~Fuß} +% und mit \cs{savegeometry}\marg{Stil} gesichert. Damit kann innerhalb des +% Dokumentes mit dem Befehl \cs{loadgeometry}\marg{Stil} oberer sowie ggf. +% untere Seitenrand geändert werden. Falls notwendig kann außerdem der Abstand +% zwischen Kopf und Text mit der Länge \cs{tud@ta@headdiff} dahingehend +% angepasst werden, dass der Textblock unter der TUD-Kopf auf der gleichen Höhe +% beginnt, wie beim normalen Satzspiegel im restlichen Dokument ohne die +% TUD-Kopfzeile.\footnote{normalerweise überflüssig, da TUD-Kopf recht groß; +% kommt nur vor, wenn \opt{DIV} klein} +% \begin{macrocode} +\newcommand*\tud@head@text{} +\newcommand*\tud@head@text@first{} +\newcommand*\tud@head@text@second{} +\newcommand*\tud@head@text@delimiter{} +\newcommand*\tud@head@text@buffer{} +\newcommand*\tud@head@font{} +\newcommand*\tud@head@rule{} +%<*class> +\newcommand*\ps@tudpage@plain{% +%</class> +%<*titlepage> +\newcommand*\tud@pagestyle{% +%</titlepage> +% \end{macrocode} +% Die Kopfzeile selbst wird durch der Redefinition von \cs{@oddhead} bzw. +% \cs{@evenhead} erstellt. Sollte keine Fakultät angegeben sein, wird eine +% Warnung ausgegeben. +% \begin{macrocode} +%<*class> + \renewcommand*\@oddhead{% +%</class> +% \end{macrocode} +% Es soll sichergestellt werden, dass das bei der Verwendung von \pkg{typearea} +% über den Satzspiegel in den Seitenrand hinausragende TUD-Logo nicht außerhalb +% des Druckrandes liegt. Dies kann beispielsweise bei zweiseitigem Satz +% und/oder einem zu großen \opt{DIV}-Wertes passieren. Es wird in diesem Fall +% eine Warnung ausgegeben, damit das Problem durch den Anwender behoben werden +% kann. +% \begin{macrocode} +%<*class> + \setlength{\@tempdima}% + {\dimexpr\oddsidemargin+1in+\tud@dim@logox-\tud@dim@left}% + \ifdim\@tempdima<\ta@bcor\relax% + \tud@head@logo@wrn{\the\@tempdima}% + \fi% +%</class> + \ifx\@faculty\@empty% +%<*class> + \ClassWarningNoLine{\tudcls@name}{No faculty given}% +%</class> +%<*titlepage> + \PackageWarningNoLine{titlepage}{No faculty given}% +%</titlepage> + \faculty{\null}% + \fi% +% \end{macrocode} +% Abhängig vom Parameter \opt{cdfont}\footnote{nicht zu verwechseln mit der +% Klassenoption \opt{cdfont}} werden entweder die Schriften des \CDs oder +% aber die serifenlose Standardschrift für die Kopfzeile verwendet. +% \begin{macrocode} + \tud@head@font@set% +% \end{macrocode} +% Der Inhalt der Kopfzeile wird durch die angegeben Fakultät etc. vorgegeben. +% Sollte der Platz in einer Zeile dafür nicht ausreichen, wird eine zweite +% Zeile begonnen. Ob diese benötigt wird, ist abhängig vom Inhalt und von der +% sich daraus ergebenden Breite der Textzeile. Das Erzeugen der ersten und +% gegebenenfalls der zweiten Textzeile im Kopf erfolgt durch das Makro +% \cs{tud@head@text@add}\oarg{Trennzeichen}\marg{Schrift}\marg{Feld}. Der dafür +% verwendete Schalter \cs{@tempswa} und die benötigten Hilfsmakros werden +% vor der Verwendung initialisiert. +% \begin{macrocode} + \@tempswafalse% + \def\tud@head@text@first{}% + \def\tud@head@text@second{}% + \def\tud@head@text@buffer{}% + \tud@head@text@add[\enskip]{\tud@head@font@bold}{\@faculty}% + \tud@head@text@add{\tud@head@font@light}{\@department}% + \tud@head@text@add{\tud@head@font@light}{\@institute}% + \tud@head@text@add{\tud@head@font@light}{\@chair}% +% \end{macrocode} +% Sollte die zweite Textzeile zu lang sein, was bei kleinen Papierformaten +% vorkommen kann, dann wird eine Warnung ausgegeben. +% \begin{macrocode} +%<*class> + \settowidth{\@tempdima}{\tud@head@text@second}% + \ifdim\@tempdima>\textwidth\relax% + \tud@head@text@wrn{\the\dimexpr\@tempdima-\textwidth}% + \fi% +% \end{macrocode} +% Die Farbe des Kopfes wird für Titel und Teileseiten durch die gewählten +% Optionen\footnote{\opt{cdtitle}, \opt{cdpart}} bestimmt.\footnote{für +% die \env{tudpage}-Umgebung kann dieser angepasst werden} +% \begin{macrocode} + \color{\tud@head@color}% +%</class> +% \end{macrocode} +% Die eigentlichen Befehle zum Setzen des Kopfes. Ein potentielles Zweitlogo +% wird bündig zum rechten Seitenrand gesetzt. Es erfolgt die Ausgabe der +% Textzeile(n) mit Fakultät etc. über den Befehl \cs{tud@head@text@write}. +% \begin{macrocode} +%<*titlepage> + \vspace*{\dimexpr-\headheight-\topskip-1in}% +%</titlepage> + \vbox to \dimexpr\tud@dim@barheight+\tud@dim@headheight{% + \vfill\linespread{0}\selectfont% + \setlength{\@tempdima}{\tud@dim@logox}% + \addtolength{\@tempdima}{-\tud@dim@left}% + \hspace*{\@tempdima}% + \tud@mainlogo\hfill\tud@head@logo% + \setlength{\@tempdima}{\tud@dim@headheight}% + \addtolength{\@tempdima}{-\tud@dim@logoy}% + \addtolength{\@tempdima}{-\tud@dim@logoheight}% +% \end{macrocode} +% Sollte die Kopffarbe weiß sein~-- es ist also ein farbiger Hintergrund +% gewählt~-- dann wird die Outline des Balkens breiter gesetzt. Die Breite +% wird in \cs{@tempdimc} gespeichert. +% \begin{macrocode} +%<*class> + \ifstr{\tud@head@color}{white}% + {\setlength{\@tempdimc}{\tud@dim@heavyline}}% + {\setlength{\@tempdimc}{\tud@dim@thinline}}% +%</class> +%<*titlepage> + \setlength{\@tempdimc}{\tud@dim@thinline}% +%</titlepage> + \vspace*{\dimexpr\@tempdima-.5\@tempdimc}% +% \end{macrocode} +% Der Querbalken des Kopfes läuft je nach gewähltem Parameter \opt{widehead} +% entweder nur über den Textbereich oder aber über die gesamte Seitenbreite. +% Dafür muss dieser ggf. um den Betrag des linken Randes der Seite nach links +% verschoben werden und beginnt dann genau am Blattrand. Dieser Wert wird +% berechnet und temporär in \cs{@tempdima} gespeichert. Der Balken selbst wird +% mit dem zweimaligen Aufruf von \cs{tud@head@rule}~-- ein ggf. entsprechend um +% \cs{@tempdima} horizontal verschobener \cs{rule}-Befehl~-- gesetzt. +% \begin{macrocode} + \def\tud@head@rule{% + \if@tud@widehead% + \setlength{\@tempdima}{\oddsidemargin}% +%<*class> + \if@twoside\ifodd\c@page\else% + \setlength{\@tempdima}{\evensidemargin}% + \fi\fi% +%</class> + \addtolength{\@tempdima}{1in}% + \setlength{\@tempdimb}{\paperwidth}% + \else% + \setlength{\@tempdima}{\z@}% + \setlength{\@tempdimb}{\textwidth}% + \fi% + \hfuzz=2\@tempdima% + \hspace*{-\@tempdima}% + \rule[-.5\@tempdimc]{\@tempdimb}{\@tempdimc}% + \newline% + }% + \newline% + \tud@head@rule% + \tud@head@text@write{\tud@head@text@first}% + \newline% + \tud@head@rule% + \tud@head@text@write{\tud@head@text@second}% +% \end{macrocode} +% Eine Extrazeile kann mit dem Befehl \cs{extraheadline}\marg{Textzeile} +% eingefügt werden. +% \begin{macrocode} + \ifx\@extraheadline\@empty\else% + \newline\tud@head@font@light\@extraheadline% + \vspace*{-\tud@dim@barheight}% + \fi% + \vspace*{\dimexpr\@tempdimc-\tud@dim@barheight}% + }% +%<*class> + }% + \let\@evenhead\@oddhead% +%</class> +} +% \end{macrocode} +% Dieser Seitenstil wird für Einzelseiten wie Teil- oder Kapitelseiten +% benötigt, da hier die lokale Einstellung einer leeren Fußzeile sonst nur +% umständlich zu realisieren wäre. +% \begin{macrocode} +%<*class> +\newcommand*\ps@tudpage@empty{% + \ps@tudpage@plain% + \let\@mkboth\@gobbletwo% + \let\@oddfoot\@empty% + \let\@evenfoot\@empty% +} +%</class> +% \end{macrocode} +% \end{macro}^^A \tud@head@rule +% \end{macro}^^A \tud@head@font +% \end{macro}^^A \tud@head@text@buffer +% \end{macro}^^A \tud@head@text@delimiter +% \end{macro}^^A \tud@head@text@second +% \end{macro}^^A \tud@head@text@first +% \end{macro}^^A \tud@head@text +% \end{macro}^^A \ps@tudpage@empty +% \end{macro}^^A \ps@tudpage@plain +% \begin{macro}{\tud@head@text@add} +% Dieser Befehl dient zum Füllen eines Puffer-Strings. Es werden sequentiell +% alle potentiellen Felder hinzugefügt. Sollte das zuletzt hinzugefügte Feld +% dazu führen, dass der Text der Kopfzeile über den Seitenrand hinausragt, so +% wird eine zweite Zeile begonnen. In diesem Fall wird der temporäre Schalter +% \cs{@tempswa} aktiviert. Auch das Trennzeichen zwischen einzelnen Feldern +% muss gepuffert werden, da dieses nur gesetzt wird, wenn ein weiteres Feld +% nachfolgt. +% \begin{macrocode} +\newcommand*\tud@head@text@add[3][, ]{% + \def\tud@head@font{#2}% + \edef\tud@head@text{#3}% + \ifx\tud@head@text\@empty% + \def\tud@head@text@delimiter{}% + \else% + \edef\tud@head@text@delimiter{\tud@head@text@buffer}% + \def\tud@head@text@buffer{#1}% + \fi% + \if@tempswa\else% + \def\@tempa{% + \tud@head@text@first% + \tud@head@text@delimiter% + \tud@head@font% + \tud@head@text% + }% + \settowidth{\@tempdima}{\@tempa}% + \ifdim\@tempdima>\textwidth\relax% + \@tempswatrue% + \def\tud@head@text@delimiter{}% + \else% + \edef\tud@head@text@first{\@tempa}% + \fi% + \fi% + \if@tempswa% + \edef\tud@head@text@second{% + \tud@head@text@second% + \tud@head@text@delimiter% + \tud@head@font% + \tud@head@text% + }% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@head@text@add +% \begin{macro}{\tud@head@text@write} +% Befehl zur Ausgabe der ersten und evtl. zweiten Textzeile im TUD-Kopf +% \begin{macrocode} +\newcommand*\tud@head@text@write[1]{% + \raisebox{\dimexpr(\tud@dim@barheight-\@tempdimc-\totalheight)/2}% + [\dimexpr\tud@dim@barheight-\@tempdimc-\depth\relax][\depth]{#1}% +} +% \end{macrocode} +% \end{macro}^^A \tud@head@text@write +% +% \iffalse +%<*class> +% \fi +% +% \begin{macro}{\tud@head@text@wrn} +% Warnung für den Fall, dass die Kopfinformationen breiter werden, als die +% Textbreite, was bei besonders kleinen Papierformaten geschehen kann. +% \begin{macrocode} +\newcommand\tud@head@text@wrn[1]{% + \ClassWarning{\tudcls@name}{% + The given entries for the headline\MessageBreak% + (faculty, institute etc.) are #1\MessageBreak% + too wide for the textwidth% + }% + \global\let\tud@head@text@wrn\@gobble% +} +% \end{macrocode} +% \end{macro}^^A \tud@head@text@wrn +% \begin{macro}{\tud@head@logo@wrn} +% Warnung für den Fall, dass die Kopfinformationen breiter werden, als die +% Textbreite, was bei besonders kleinen Papierformaten geschehen kann. +% \begin{macrocode} +\newcommand\tud@head@logo@wrn[1]{% + \ClassWarning{\tudcls@name}{% + The selected page layout means that the\MessageBreak% + logo of TUD extends beyond the printing area.\MessageBreak% + The inner margin is smaller than BCOR\MessageBreak% + (BCOR=\the\ta@bcor,\space inner margin=#1)\MessageBreak% + Maybe you should decrease the current value\MessageBreak% + of DIV (DIV=\the\ta@div)% + }% + \global\let\tud@head@logo@wrn\@gobble% +} +% \end{macrocode} +% \end{macro}^^A \tud@head@logo@wrn +% +% \iffalse +%</class> +%</titlepage|class&!option> +%<*class&option> +% \fi +% +% \subsection{Befehle, Optionen und Umsetzung der Seitenstilvarianten} +% +% \todo[v3.12]{% +% tud- und ddc-logo via scrlayer setzen, tudhead und cdfoot als Optionen mit +% den Werten all, part, chapter, text; Koppeln mit den Optionen für cdpart +% und cdchapter, heißt entsprechende Werte vorsehen; partpagestyle, +% chapterpagestyle und abstractpagestyle ggf. anpassen; chapterpage beachten! +% abstractpagestyle weg, direkt über die Option abstract setzen, entsprechend +% Werte für Kopf und Fuß vorsehen; Bezeichnung der tudpage-Optionen +% äquivalent zu Klassenoptionen, nur für Titelseite die Option ddctitle +% (koppeln an ddc): Soll heißen: ddctitle (ddc) für Titelseite, ddchead und +% ddcfoot für alle Seiten; außerdem cd(title,part,chapter) = ddchead, ddcfoot; +% nur Kopf oder Fuß! color-Option nur bei weißem Hintergrund; evtl auch Option +% ddc mit werten head und foot (ddc=head,ddc=foot), nur entweder kopf oder fuß +% zulassen +% } +% \begin{option}{ddc} +% \begin{option}{ddchead} +% \begin{macro}{\tud@ddc@head} +% Die Option \opt{ddchead} dient zum Einbinden des Dresden-Concept-Logos auf +% der Titelseite. Entweder einfarbig (schwarz, blau bzw. weiß) oder farbig. Der +% Wert des Makros \cs{tud@ddc@head} wird auch für Verarbeitung der Optionen der +% \env{tudpage}"=Umgebung verwendet. Nach der Verarbeitung der Option wird +% das entsprechende DDC-Logo als Zweitlogo genutzt. +% \begin{macrocode} +\newcommand*\tud@ddc@head{0} +\TUD@numkey{ddc}[true]{tud@ddc@head}{% + {false}{0},{off}{0},{no}{0},% + {true}{1},{on}{1},{yes}{1},% + {color}{2},{colour}{2},% +} +\TUD@key{ddchead}[true]{\TUDoptions{ddc=#1}} +% \end{macrocode} +% \end{macro}^^A \tud@ddc@head +% \end{option}^^A ddchead +% \end{option}^^A ddc +% \todo[v3.12]{für title, part, chapter und tudpage überarbeiten (scrlayer)} +% \begin{option}{ddcfoot} +% \begin{macro}{\tud@ddc@foot} +% Die Option \opt{ddcfoot} ist momentan bloß für die Verarbeitung der +% Optionen der \env{tudpage}"=Umgebung ausschlaggebend. Für eine spätere +% Version soll diese für Formularklassen o.\,ä. verwendet werden. +% \begin{macrocode} +\newcommand*\tud@ddc@foot{0} +\TUD@numkey{ddcfoot}[true]{tud@ddc@foot}{% + {false}{0},{off}{0},{no}{0},% + {true}{1},{on}{1},{yes}{1},% + {color}{2},{colour}{2},% +} +% \end{macrocode} +% \end{macro}^^A \tud@ddc@foot +% \end{option}^^A ddcfoot +% +% \iffalse +%</class&option> +%<*titlepage|class&option> +% \fi +% +% \begin{option}{widehead} +% \begin{macro}{\if@tud@widehead} +% \begin{macro}{\if@tud@widehead@locked} +% Der Schalter dient zur Steuerung der Breite des Querbalkens im Kopf der +% \env{tudpage}-Seite. Entweder der Querbalken liegt im Satzspiegel oder +% aber über die komplette Papierbreite. +% \begin{macrocode} +%<*class> +\newif\if@tud@widehead +\TUD@key@lock{widehead}[true]{% + \TUD@set@ifkey@lock{widehead}{@tud@widehead}{#1}% +} +%</class> +%<*titlepage> +\FamilyBoolKey[TU-Dresden]{title}{widehead}{@tud@widehead} +%</titlepage> +% \end{macrocode} +% \end{macro}^^A \if@tud@widehead@locked +% \end{macro}^^A \if@tud@widehead +% \end{option}^^A widehead +% +% \iffalse +%</titlepage|class&option> +%<*titlepage|class&!option> +% \fi +% +% \begin{macro}{\tud@mainlogo} +% \begin{macro}{\tud@@mainlogo} +% Mit diesem Makro wird das Logo der TU~Dresden eingebunden. Bei der Verwendung +% von pdf\LaTeX{} kann wird Farbe des Logos an die Kopffarbe angepasst. Wird +% der klassische Weg über dvi gewählt, so muss abhängig von der gewählten +% Kopffarbe das entsprechend gefärbte Logo eingebunden werden. +% +% \begin{macrocode} +%<*class> +\newcommand*\tud@@mainlogo{} +%</class> +\newcommand*\tud@mainlogo{% +%<*class> + \def\tud@@mainlogo{TU_Logo_SW}% + \ifpdfoutput{}{% + \ifstr{\tud@head@color}{HKS41}% + {\def\tud@@mainlogo{TU_Logo_HKS41}}{}% + \ifstr{\tud@head@color}{cddarkblue}% + {\def\tud@@mainlogo{TU_Logo_HKS41}}{}% + \ifstr{\tud@head@color}{white}% + {\def\tud@@mainlogo{TU_Logo_WS}}{}% + }% +%</class> + \def\@tempa{% + \includegraphics[width=\tud@dim@logowidth]{% +%<*class> + \tud@@mainlogo% +%</class> +%<*titlepage> + \@mainlogo% +%</titlepage> + }% + }% + \settoheight{\tud@dim@logoheight}{\@tempa}\@tempa% +} +% \end{macrocode} +% \end{macro}^^A \tud@@mainlogo +% \end{macro}^^A \tud@mainlogo +% \begin{macro}{\headlogo} +% \begin{macro}{\logofile} +% \begin{macro}{\logofilename} +% \begin{macro}{\tud@head@logo} +% \begin{macro}{\tud@head@@logo} +% \begin{macro}{\tud@head@@@logo} +% Diese Befehle dienen zum Einbinden eines Zweitlogos im Kopf bündig zum +% rechten Seitenrand. Dabei wird bei der Angabe des Logos mit +% \cs{headlogo}\oarg{Optionsliste}\marg{Dateiname} der Dateiname in +% \cs{tud@head@@logo} und das optionale Argument in \cs{tud@head@@@logo} +% gespeichert, damit diese später über \cs{tud@head@logo} an den Befehl +% \cs{includegraphics} weitergereicht werden können. Sollte die Angabe des +% Zweitlogos mit der Option für das DDC-Logo kollidieren, so wird eine Warnung +% ausgegeben. +% \begin{macrocode} +%<*class> +\newcommand*\headlogo[2][]{% + \ifnum\tud@ddc@head>0\relax% + \def\tud@ddc@head{0}% + \ClassWarning{\tudcls@name}% + {DDC logo is overwritten with \string#2}% + \fi% + \def\tud@head@@logo{#2}% + \def\tud@head@@@logo{#1}% +} +\newcommand*\logofile{} +\newcommand*\logofilename{} +\let\logofile\headlogo +\let\logofilename\headlogo +\newcommand*\tud@head@@logo{} +\newcommand*\tud@head@@@logo{} +\newcommand*\tud@head@logo{% + \ifx\tud@head@@logo\@empty\else% + \let\@tempa\tud@head@@@logo% + \pretocmd{\@tempa}{height=\tud@dim@logoheight,}{}{}% + \expandafter\includegraphics% + \expandafter[\@tempa]{\tud@head@@logo}% + \fi% +} +%</class> +%<*titlepage> +\DefineSimpleTitleKey[TU-Dresden]{headlogo} +\newcommand*\tud@head@logo{% + \ifx\@headlogo\@empty\else% + \includegraphics[height=\tud@dim@logoheight]{\@headlogo}% + \fi% +} +%</titlepage> +% \end{macrocode} +% \end{macro}^^A \tud@head@@@logo +% \end{macro}^^A \tud@head@@logo +% \end{macro}^^A \tud@head@logo +% \end{macro}^^A \logofilename +% \end{macro}^^A \logofile +% \end{macro}^^A \headlogo +% +% \iffalse +%</titlepage|class&!option> +%<*class&option> +% \fi +% +% \begin{option}{cdfoot} +% \begin{option}{tudfoot} +% \begin{macro}{\if@tud@cdfoot} +% Dieser Seitenstil mit den Kolumnentitel im Fuß wurde bereits für die alte +% \cls{tudbook}-Klasse bereitgestellt und soll auch hier optional angeboten +% werden. Dafür werden die ursprünglichen Seitenstile gesichert, um eventuell +% zurückschalten zu können. Anschließend werden diese mit den neuen Stilen +% überschrieben. +% \begin{macrocode} +\newif\if@tud@cdfoot +\TUD@key{cdfoot}[true]{% + \TUD@set@ifkey{cdfoot}{@tud@cdfoot}{#1}% +% \end{macrocode} +% Da die originalen Seitenstile durch \KOMAScript{} erst nach der Ausführung der +% Optionen erstellt werden und die hier genutzten Seitenstile auf den orginalen +% Definitionen aufbauen, erfolgt die Ausführung erst nach der Präambel. +% \begin{macrocode} + \if@atdocument% + \if@tud@cdfoot% + \tud@cmd@store{ps@headings}% + \tud@cmd@store{ps@myheadings}% + \tud@cmd@store{ps@plain}% + \let\ps@headings\tud@ps@headings% + \let\ps@myheadings\tud@ps@myheadings% + \let\ps@plain\tud@ps@plain% + \else% + \tud@cmd@restore{ps@headings}% + \tud@cmd@restore{ps@myheadings}% + \tud@cmd@restore{ps@plain}% + \fi% + \clearpage% + \expandafter\pagestyle\expandafter{\tud@currentpagestyle}% + \fi% +} +% \end{macrocode} +% Diese Option wird nur aus Gründen der Kombatibilität zu v1.0 definiert. +% \begin{macrocode} +\TUD@key{tudfoot}[true]{% + \TUD@set@ifkey{tudfoot}{@tempswa}{#1}% + \if@tempswa% + \TUDoptions{cdfoot}% + \else% + \TUDoptions{cdfoot=false}% + \fi% +} +% \end{macrocode} +% Damit die Einstellungen aus der Präambel übernommen werden, wird die Option +% ggf. zu Beginn mit \cs{AtBeginDocument} aufgerufen. +% \begin{macrocode} +\AtBeginDocument{\if@tud@cdfoot\TUDoptions{cdfoot}\pagestyle{headings}\fi} +% \end{macrocode} +% \end{macro}^^A \if@tud@cdfoot +% \end{option}^^A tudfoot +% \end{option}^^A cdfoot +% \begin{macro}{\tud@currentpagestyle} +% Um beim Umschalten des Formats der Kopf- und Fußzeilen mit \opt{cdfoot} den +% aktuellen Seitenstil selbst\footnote{plain, empty, headings oder myheadings} +% zu behalten, wird dieser im Hilfsmakro \cs{tud@currentpagestyle} gespeichert. +% Dazu wird der Befehl \cs{pagestyle} entsprechend angepasst. +% \begin{macrocode} +\newcommand*\tud@currentpagestyle{plain} +\apptocmd{\pagestyle}{% + \def\tud@currentpagestyle{#1}}{}{\tud@patch@wrn{pagestyle}% +} +% \end{macrocode} +% \end{macro}^^A \tud@currentpagestyle +% +% \iffalse +%</class&option> +%<*class&!option> +% \fi +% +% \begin{macro}{\tud@ps@headings} +% \begin{macro}{\tud@ps@myheadings} +% \begin{macro}{\tud@ps} +% \begin{macro}{\tud@ps@plain} +% Die dazugehörigen neuen Seitenstile. +% \begin{macrocode} +\newcommand*\tud@ps@headings{\tud@cmd@use{ps@headings}\tud@ps} +\newcommand*\tud@ps@myheadings{\tud@cmd@use{ps@myheadings}\tud@ps} +\newcommand*\tud@ps{% + \renewcommand*\@evenhead{}% + \renewcommand*\@oddhead{}% + \renewcommand*\@evenfoot{% + \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{% + \hb@xt@ \@tempdima{{% + \normalsize\pagemark\quad\footnotesize\leftmark\hfil% + }}% + }}% + }% + \renewcommand*\@oddfoot{% + \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% + \hb@xt@ \@tempdima{{% + \hfil\footnotesize\rightmark\quad\normalsize\pagemark% + }}% + }}% + \hss% + }% +}% +\newcommand*\tud@ps@plain{% + \renewcommand*\@evenhead{}% + \renewcommand*\@oddhead{}% + \renewcommand*\@evenfoot{% + \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{% + \hb@xt@ \@tempdima{{% + \normalsize\pagemark\hfil% + }}% + }}% + }% + \renewcommand*\@oddfoot{% + \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% + \hb@xt@ \@tempdima{{% + \hfil\normalsize\pagemark% + }}% + }}% + \hss% + }% +} +% \end{macrocode} +% \end{macro}^^A \tud@ps@plain +% \end{macro}^^A \tud@ps +% \end{macro}^^A \tud@ps@myheadings +% \end{macro}^^A \tud@ps@headings +% +% \iffalse +%</class&!option> +%<*class&option> +% \fi +% +% \todo[v3.12]{% +% bei scrlayer, die hooks für die Umstellung des Seitenstils nutzen um den +% richtigen Satzspiegel mit \cs{loadgeometry} zu wählen +% } +% \begin{option}{geometry} +% \begin{macro}{\tud@geometry} +% \begin{macro}{\if@tud@geometry@locked} +% Für das \CD sind standardmäßig feste Seitenränder vorgegeben. Diese sind +% jedoch leider nur aus gestalterischen Motiven und ohne die Beachtung +% typographischer Belange gewählt und festgelegt worden. Beispielweise ist ein +% doppelseitiger Satz einer Abschlussarbeit im \CD nur mit einem grauenhaften +% Satzspiegel möglich. Um dem Anwender einen gewissen Spielraum zu geben, wird +% alternativ zum asymmetrischen (\opt{geomery=on}) ein symmetrischer +% Satzspiegel bereitgestellt (\opt{geomery=normal}), welcher bei einseitigem +% Satz zentriert ist und bei zweiseitigem Satz den inneren Rand kleiner setzt +% als den äußeren. Des Weiteren kann die Satzspiegelberechnung auch direkt +% durch \pkg{typearea} aus dem \KOMAScript"=Paket erfolgen +% (\opt{geomery=no}). Mit \cs{tud@geometry@process} werden alle getroffenen +% Satzspiegeloptionen umgesetzt und nachfolgend definiert. +% \begin{macrocode} +\newcommand*\tud@geometry{0} +\TUD@key@lock{geometry}[true]{% + \TUD@set@numkey@lock{geometry}{tud@geometry}{% + {false}{0},{off}{0},{no}{0},{typearea}{0},% + {true}{1},{on}{1},{yes}{1},{tud}{1},{asymmetric}{1},{cd}{1},% + {symmetric}{2},{normal}{2},{standard}{2},{std}{2},% + {twoside}{3},{balanced}{3}% + }{#1}% + \if@atdocument\recalctypearea\fi% +} +% \end{macrocode} +% \end{macro}^^A \if@tud@geometry@locked +% \end{macro}^^A \tud@geometry +% \end{option}^^A geometry +% +% \iffalse +%</class&option> +%<*class&!option> +% \fi +% +% \begin{length}{\tud@ta@textheight} +% \begin{length}{\tud@ta@topmargin} +% \begin{length}{\tud@ta@headheight} +% \begin{length}{\tud@ta@headsep} +% \begin{length}{\tud@ta@footskip} +% Diese Längen werden benötigt, um einen mit \pkg{typearea} berechneten +% Satzspiegel an \pkg{geometry} weiterzureichen und die unterschiedlichen, vom +% Satzspiegel abhängigen Seitenlayouts zu erstelen. +% \begin{macrocode} +\newlength{\tud@ta@textheight} +\newlength{\tud@ta@topmargin} +\newlength{\tud@ta@headheight} +\newlength{\tud@ta@headsep} +\newlength{\tud@ta@footskip} +% \end{macrocode} +% \end{length}^^A \tud@ta@footskip +% \end{length}^^A \tud@ta@headsep +% \end{length}^^A \tud@ta@headheight +% \end{length}^^A \tud@ta@topmargin +% \end{length}^^A \tud@ta@textheight +% \begin{length}{\tud@ta@headdiff} +% \begin{length}{\tud@ta@footdiff} +% Längen für den Ausgleich zwischen normalem und benötigtem Satzspiegel für das +% spezielle Layout des \CDs. Die Differenz zwischen den Kopf- bzw. Fußhöhen +% der unterschiedlichen Satzspiegelvarianten wird bei der Ausführung von +% \cs{tud@geometry@process} berechnet und in \cs{tud@ta@headdiff} bzw. +% \cs{tud@ta@footdiff} gespeichert. Dabei muss unterschieden werden, ober der +% Satzspiegel genutzt wird, der durch das \CD vorgegeben ist oder der durch +% \pkg{typearea} berechnete. +% \begin{macrocode} +\newlength{\tud@ta@headdiff} +\newlength{\tud@ta@footdiff} +% \end{macrocode} +% \end{length}^^A \tud@ta@footdiff +% \end{length}^^A \tud@ta@headdiff +% Der Befehl \cs{AfterCalculatingTypearea} wird durch \KOMAScript{} bzw. das +% Paket \pkg{typearea} bereitgestellt. Die durch \pkg{typearea} berechneten +% Längenwerte für den Satzspiegel werden zur Weiterverarbeitung gesichert. +% Für die Erstellung des Satzspiegels wird das Paket \pkg{geometry} verwendet. +% Bei der entsprechenden Option (\opt{geometry=no}) wird jedoch der von +% \pkg{typearea} berechnete Satzspiegel an \pkg{geometry} weitergereicht. +% Somit wird es möglich, unabhängig vom genutzten Paket\footnote{\pkg{typearea} +% oder \pkg{geometry}} zur Festlegung des Satzspiegels, diesen innerhalb des +% Dokumentes zu ändern. Damit auch Änderungen an der Papiergröße möglich sind, +% muss ein einzelnes Makro (\cs{Gm@restore@org}) aus \pkg{geometry} temporär +% deaktiviert werden. +% \begin{macrocode} +\AfterCalculatingTypearea{% + \setlength{\tud@ta@textheight}{\textheight}% + \setlength{\tud@ta@topmargin}{\topmargin}% + \setlength{\tud@ta@headheight}{\headheight}% + \setlength{\tud@ta@headsep}{\headsep}% + \setlength{\tud@ta@footskip}{\footskip}% + \setlength{\tud@dim@headingsvskip}{.1\textheight}% + \let\@tempa\Gm@restore@org% + \if@atdocument\let\Gm@restore@org\relax\fi% + \tud@geometry@process% + \let\Gm@restore@org\@tempa% +} +% \end{macrocode} +% \begin{macro}{\tud@geometry@hmargin} +% \begin{macro}{\tud@geometry@vmargin} +% \begin{macro}{\tud@geometry@pmargin} +% \begin{macro}{\tud@geometry@dmargin} +% Dies sind Hilfsmakros zur Definition unterschiedicher Seitenlayouts +% (horizontale und vertikale Ränder). Es handelt sich dabei um die Definition +% der horizontalen und vertikalen Seitenränder sowie die angepassten vertikalen +% Einstellungen für die Seitenstilvarianten mit TUD-Kopf und/oder DDC-Fuß. +% Gesetzt werden diese in Abhängigkeit von der Option \opt{geometry} im +% Makro \cs{tud@geometry@process} bzw. \cs{tud@geometry@@process}. +% \begin{macrocode} +\newcommand*\tud@geometry@hmargin{} +\newcommand*\tud@geometry@vmargin{} +\newcommand*\tud@geometry@pmargin{} +\newcommand*\tud@geometry@dmargin{} +% \end{macrocode} +% \end{macro}^^A \tud@geometry@dmargin +% \end{macro}^^A \tud@geometry@pmargin +% \end{macro}^^A \tud@geometry@vmargin +% \end{macro}^^A \tud@geometry@hmargin +% \begin{macro}{\tud@geometry@process} +% \begin{macro}{\tud@geometry@@process} +% \begin{macro}{\tud@geometry@@@process} +% Das Makro \cs{tud@geometry@process} setzt die Option für den gewünschten +% Satzspiegel um, sowohl für die Seitenränder als auch zur Einberechnung der +% Kopf- und/oder Fußzeile. Um mehrere Satzspiegel verwenden zu können~-- was +% für die unterschiedlichen Höhen für Kopf- und Fußzeile nötig ist~-- wird das +% Paket \pkg{geometry} verwendet. Soll \pkg{typearea} zur Satzspiegelerstellung +% genutzt werden, so werden die damit berechneten Werte an \pkg{geometry} +% weitergereicht. +% \begin{macrocode} +\newcommand*\tud@geometry@process{% +% \end{macrocode} +% Die Maßvorgaben werden entsprechend der Seitengröße gesetzt. +% \begin{macrocode} + \tud@geometry@set% +% \end{macrocode} +% Für den Fall, dass \pkg{typearea} die Satzspiegelberechnung übernimmt, werden +% die Ergebnisse aus der Berechnung direkt an \pkg{geometry} weitergereicht. +% Dazu werden die berechneten Werte in die entsprechenden Hilfsmakros +% für die Erstellung der \pkg{geometry}-Satzspiegel übergeben. +% \begin{macrocode} + \ifcase \tud@geometry\relax% + \def\tud@geometry@hmargin{% + left=\dimexpr\oddsidemargin+1in,% + width=\textwidth,% + }% + \def\tud@geometry@vmargin{% + top=\dimexpr\tud@ta@topmargin+\tud@ta@headheight+\tud@ta@headsep+1in,% + headheight=\tud@ta@headheight,% + headsep=\tud@ta@headsep,% + textheight=\tud@ta@textheight,% + footskip=\dimexpr\tud@ta@footskip,% + }% + \def\tud@geometry@pmargin{% + top=\dimexpr\tud@dim@headheight+\tud@dim@barheight+\tud@dim@headsep,% + headheight=\dimexpr\tud@dim@headheight+\tud@dim@barheight,% + headsep=\tud@dim@headsep,% + textheight=\dimexpr\tud@ta@textheight-\tud@ta@headdiff,% + footskip=\dimexpr\tud@ta@footskip,% + }% + \def\tud@geometry@dmargin{% + textheight=\dimexpr\tud@ta@textheight-\tud@ta@headdiff-\tud@ta@footdiff,% + footskip=\dimexpr\tud@ta@footskip+\tud@ta@footdiff,% + }% +% \end{macrocode} +% Es wird die Differenz der Höhen zwischen TUD-Kopf und Standardkopfzeile +% für den \pkg{typearea}-Satzspiegel berechnet. +% \begin{macrocode} + \global\setlength{\tud@ta@headdiff}{\dimexpr% + \tud@dim@headheight+\tud@dim@barheight+\tud@dim@headsep% + -\tud@ta@topmargin-\tud@ta@headheight-\tud@ta@headsep-1in% + }% +% \end{macrocode} +% Hier erfolgt die Definition der Hilfsmakros für das CD-konforme asymmetrische +% bzw. an das \CD angelehnte Layout für einseitigen und zweiseitigen Satz. +% Zuerst werden die verschiedenen unterschiedlichen horizontalen Ränder für die +% unterschiedlichen Optionen definiert. Danach kommt der Gleichanteil. +% \begin{macrocode} + \else% + \ifcase \tud@geometry\or% + \def\tud@geometry@hmargin{% + left=\tud@dim@left,% + textwidth=\dimexpr\paperwidth-\tud@dim@both-\ta@bcor,% + bindingoffset=\ta@bcor,% + \if@twoside asymmetric,\fi% + }% +% \end{macrocode} +% Die zweite Variante ist eigentlich nicht konform mit dem \CD. Sie ist sowohl +% im einseitigen als auch im zweiseitgigen Satz symmetrisch. +% \begin{macrocode} + \or% + \def\tud@geometry@hmargin{% + left=.5\tud@dim@both,% + textwidth=\dimexpr\paperwidth-\tud@dim@both-\ta@bcor,% + bindingoffset=\ta@bcor,% + }% +% \end{macrocode} +% Eigentlich ist auch die dritte Variante nach dem \CD nicht zulässig. Sie ist +% im einseitigen Satz symmetrisch, im zweiseitgigen Satz wird die innere Seite +% schmaler gesetzt als die äußere, wobei hier auf das in den Seitenrand ragende +% TUD-Logo geachtet werden muss. +% \begin{macrocode} + \or% + \def\tud@geometry@hmargin{% + \if@twoside% + left=.4\tud@dim@both,% + twoside,% + \else% + left=.5\tud@dim@both,% + \fi% + textwidth=\dimexpr\paperwidth-\tud@dim@both-\ta@bcor,% + bindingoffset=\ta@bcor,% + }% + \fi% +% \end{macrocode} +% Für alle drei Varianten der Gleichanteil. +% \begin{macrocode} + \def\tud@geometry@vmargin{% + top=\tud@dim@top,% + headsep=\tud@dim@headsep,% + bottom=\tud@dim@bottom,% + footskip=\tud@dim@footskip,% + }% + \def\tud@geometry@pmargin{% + top=\dimexpr\tud@dim@headheight+\tud@dim@barheight+\tud@dim@headsep,% + headheight=\dimexpr\tud@dim@headheight+\tud@dim@barheight,% + headsep=\tud@dim@headsep,% + bottom=\tud@dim@bottom,% + footskip=\tud@dim@footskip,% + }% + \def\tud@geometry@dmargin{% + bottom=\dimexpr\tud@dim@bottom+\tud@ta@footdiff,% + footskip=\dimexpr\tud@dim@footskip+\tud@ta@footdiff+\baselineskip,% + }% +% \end{macrocode} +% Es wird die Differenz der Höhen zwischen TUD-Kopf und Standardkopfzeile +% für den Satzspiegel des \CDs berechnet. +% \begin{macrocode} + \global\setlength{\tud@ta@headdiff}{\dimexpr% + \tud@dim@headheight+\tud@dim@barheight+\tud@dim@headsep-\tud@dim@top% + }% + \fi% +% \end{macrocode} +% Es wird \cs{tud@geometry@@process} aufgerufen, was die zuvor definierten +% Hilfsmakros nutzt, um alle benötigten Seitenlayouts optionsabhängig zu +% erstellen. +% \begin{macrocode} + \tud@geometry@@process% +} +% \end{macrocode} +% Der Befehl \cs{tud@geometry@@process} setzt mit den zuvor definierten +% Hilfsmakros die \pkg{geometry}"=Optionen für sowohl die seitlichen als auch +% die oberen sowie unteren Seitenränder und inkludiert ggf. Kopf- und Fußzeile +% in den Satzspiegel. Die unterschiedlichen Layouts sind dabei \opt{tudddc} für +% TUD-Kopf und DDC-Fuß, \opt{tudpage} für den alleinigen TUD-Kopf sowie +% \opt{tudarea} für den normalen bzw. mit \pkg{typearea} berechneten +% Satzspiegel. +% \begin{macrocode} +\newcommand*\tud@geometry@@process{% +% \end{macrocode} +% Als erstes wird der Satzspiegel für TUD-Kopf und DDC-Fuß erstellt. +% \begin{macrocode} + \edef\@tempa{% + \tud@geometry@hmargin,% + \tud@geometry@pmargin,% + \tud@geometry@dmargin,% + \tud@geometry@@@process% + }% + \expandafter\newgeometry\expandafter{\@tempa}% + \savegeometry{tudddc}% +% \end{macrocode} +% Danach der, welcher lediglich den TUD-Kopf aber die Standardfußzeile hat. +% \begin{macrocode} + \edef\@tempa{% + \tud@geometry@hmargin,% + \tud@geometry@pmargin,% + \tud@geometry@@@process% + }% + \expandafter\newgeometry\expandafter{\@tempa}% + \savegeometry{tudpage}% +% \end{macrocode} +% Der Standardsatzspiegel wird erstellt. +% \begin{macrocode} + \edef\@tempa{% + \tud@geometry@hmargin,% + \tud@geometry@vmargin,% + \tud@geometry@@@process% + }% + \expandafter\newgeometry\expandafter{\@tempa}% + \savegeometry{tudarea}% +} +% \end{macrocode} +% Das Hilfsmakro \cs{tud@geometry@@@process} wird bei der Umsetzung der +% einzelnen Satzspiegeloptionen mittels der Befehle \cs{tud@geometry@process} +% bzw. \cs{tud@geometry@@process} genutzt, um die Optionen für das Einbeziehen +% von Kopf- und Fußzeile in den Satzspiegel auszuwerten. +% \begin{macrocode} +\newcommand*\tud@geometry@@@process{% + \if@hincl% + \if@fincl% + includeheadfoot,% + \else% + includehead,ignorefoot,% + \fi% + \else% + \if@fincl% + ignorehead,includefoot,% + \else% + ignoreheadfoot,% + \fi% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@geometry@@@process +% \end{macro}^^A \tud@geometry@@process +% \end{macro}^^A \tud@geometry@process +% \todo[v3.12]{% +% Setzen von tud@ta@headdiff auf 0pt bei scrlayer notwendig? Wenn Kapitel auf +% gleicher Höhe wie Teile und Titel gesetzt werden sollen, wahrscheinlich +% schon, siehe tudscr-layer.dtx +% } +% \todo[v3.12]{% +% \env{tudpage}-Umgebung durch Seitenstil ersetzen, falls diese für die +% Satzspiegelumstellung überflüssig ist, wie mit den Optionen umgehen? +% } +% \todo[v3.12]{Inkompatibilität mit part und chapter beheben und aus doku raus} +% \begin{environment}{tudpage} +% Durch den hohen TUD-Kopf muss bei der Verwendung dessens das Seitenlayout +% temporär umgeschaltet werden, um die Höhe des Satzspiegels zu verringern. +% Dafür wird diese Umgebung definiert, welche genau diese Aufgabe übernimmt. +% Zu Beginn der Umgebung werden die weiter unten beschriebenen Optionen für +% diese Umgebung mit \cs{TUD@parameter@set} ausgeführt. Durch einen zuvor +% erzwungenen Seitenumbruch wird sichergestellt, dass mögliche Änderungen +% nur auf den \env{tudpage}-Seiten wirksam werden. 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} +\NewEnviron{tudpage}[1][]{% + \clearpage% + \setlength{\tud@ta@headdiff}{\z@}% + \TUD@parameter@set[tudpage]{#1}% + \tud@multicols@check% +% \end{macrocode} +% Sollte für den Fuß die Option des DDC-Logos gewählt worden sein, so wird das +% entsprechende Layout gewählt. +% \begin{macrocode} + \ifnum\tud@ddc@foot=\z@\relax% + \loadgeometry{tudpage}% + \else% + \loadgeometry{tudddc}% + \fi% +% \end{macrocode} +% Für die \env{abstract}-Umgebung wird der Seitenstil angepasst. +% \todo[v3.12]{wie und wo \cs{abstractpagestyle} definieren? Hier eher nicht} +% \begin{macrocode} +%% \ifstr{\abstractpagestyle}{empty}% +%% {\renewcommand*\abstractpagestyle{tudpage@empty}}% +%% {\renewcommand*\abstractpagestyle{tudpage@plain}}% +% \end{macrocode} +% Mit geändertem Satzspiegel kann schließlich auch der dazugehörige Seitenstil +% eingestellt werden. +% \begin{macrocode} + \pagestyle{tudpage@plain}% +% \end{macrocode} +% Falls das \pkg{multicol}-Paket geladen ist und eine Spaltenanzahl angegeben +% ist, wird die entsprechende Umgebung gesartet, mit \cs{BODY} der Inhalt der +% \env{tudpage}-Umgebung ausgegeben und anschließend gegebenenfalls die +% \env{multicols}-Umgebung beendet. +% \begin{macrocode} + \ifnum\tud@multicols>1\relax% + \begin{multicols}{\tud@multicols}% + \fi% + \BODY% + \ifnum\tud@multicols>1\relax% + \end{multicols}% + \fi% +% \end{macrocode} +% Am Ende der Umgebung wird der Satzspiegel auf normal zurückgesetzt und ein +% Seitenumbruch erzeugt, damit die Einstellungen auch wirksam werden. Dazu +% wird die Ausführung das Hilfsmakro \cs{@tempa} auf das Beenden der Umgebung +% mit \cs{aftergroup} verzögert. +% \todo[v3.12]{Umstellung auf pagestyle und entsprechenden Hooks aus scrlayer?} +% \begin{macrocode} +}[% + \gdef\@tempa{\loadgeometry{tudarea}}% + \aftergroup\@tempa% + \clearpage% +] +% \end{macrocode} +% \end{environment}^^A tudpage +% Im Folgenden werden die einzelnen Parameter für die \env{tudpage}"=Umgebung +% definiert. Mit \cs{TUD@parameter}\marg{Family}\marg{\dots} wird die +% Parameterfamilie festgelegt und anschließend die Definitionen getätigt. +% \todo[v3.12]{Parameter ddc (ddchead) und ddcfoot wie titelseite} +% \begin{macrocode} +\TUD@parameter{tudpage}{% +% \end{macrocode} +% \begin{parameter}{language} +% Mit diesem Parameter kann die Sprache in der Umgebung umgeschaltet werden. Die +% Sprache kann auch ohne den entsprechenden Schlüssel direkt als Parameter +% angegeben werden. +% \begin{macrocode} + \TUD@parameter@define{language}{\selectlanguage{#1}}% +% \end{macrocode} +% \end{parameter} ^^A language +% \begin{parameter}{columns} +% Hiermit kann die Anzahl der Spalten für die Umgebung angegeben werden. Für +% mehr als zwei Spalten muss das Paket \pkg{multicols} geladen werden. Die +% Spaltenanzahl kann auch ohne den entsprechenden Schlüssel direkt Parameter +% angegeben werden. +% \begin{macrocode} + \TUD@parameter@define{columns}{\def\tud@multicols{#1}}% +% \end{macrocode} +% \end{parameter} ^^A columns +% \begin{parameter}{color} +% \begin{parameter}{colour} +% Die \opt{color}"=Option ändert die Farbe von Schrift, Querbalken und im +% pdf\LaTeX-Modus auch die des TUD-Logos. Die im Anschluss daran aufgerufenen +% Befehle \cs{tud@ddc@sethead} bzw. \cs{tud@ddc@setfoot} führen zu einer evtl. +% notwendigen, automatischen Anpassung der Farbe der DDC-Logos +% \begin{macrocode} + \TUD@parameter@define{color}[HKS41]{% + \def\tud@head@color{#1}% + \tud@ddc@sethead% + \tud@ddc@setfoot% + }% + \TUD@parameter@let{colour}{color} +% \end{macrocode} +% \end{parameter}^^A colour +% \end{parameter}^^A color +% \begin{parameter}{widehead} +% Die Breite des Querbalkens kann ebenfalls geändert werden. +% \begin{macrocode} + \TUD@parameter@define{widehead}[true]{\TUDoption{widehead}{#1}}% +% \end{macrocode} +% \end{parameter}^^A widehead +% \begin{parameter}{head} +% Mit der Option \opt{head} kann das Logo für Dresden-Concept oder aber ein +% anderes, mit \cs{headlogo}\oarg{Optionsliste}\marg{Dateiname} gegebenes, als +% sekundäres Logo für den Kopf ausgewählt werden. +% \begin{macrocode} + \TUD@parameter@define{head}{% + \tud@lowerstring{\@tempa}{#1}% + \ifstr{\@tempa}{false}{\def\tud@ddc@head{0}\headlogo{}}{% + \ifstr{\@tempa}{off}{\def\tud@ddc@head{0}\headlogo{}}{% + \ifstr{\@tempa}{no}{\def\tud@ddc@head{0}\headlogo{}}{% + \ifstr{\@tempa}{ddc}{\def\tud@ddc@head{1}\tud@ddc@sethead}{% + \ifstr{\@tempa}{ddccolor}{\def\tud@ddc@head{2}\tud@ddc@sethead}{% + \ifstr{\@tempa}{ddccolour}{\def\tud@ddc@head{2}\tud@ddc@sethead}{% + \ifstr{\@tempa}{logo}{\def\tud@ddc@head{0}}{% + \ifstr{\@tempa}{cdfont}{\@tud@cdfontstrue}{% + \ifstr{\@tempa}{cdfonts}{\@tud@cdfontstrue}{% + \TUD@parameter@wrn{head}{false,ddc,ddccolor,logo,cdfont,cdfonts}% + }}}}}}}}}% + }% +% \end{macrocode} +% \end{parameter}^^A head +% \begin{parameter}{foot} +% Die Option \opt{foot} ermöglicht, den Fuß der \env{tudpage}"=Seite +% entweder leer oder aber mit dem DDC-Logo zu setzen. Der Wert des Schalters +% \cs{tud@ddc@foot} wird betrachtet, um die Fußzeile beim Setzen des +% DDC-Logos in der Höhe anzupassen. +% \begin{macrocode} + \TUD@parameter@define{foot}{% + \tud@lowerstring{\@tempa}{#1}% + \ifstr{\@tempa}{empty}{% + \def\tud@ddc@foot{0}% + \renewcommand*\@oddfoot{}% + \let\@evenfoot\@oddfoot% + }{% + \ifstr{\@tempa}{plain}{\def\tud@ddc@foot{0}}{% + \ifstr{\@tempa}{ddc}{\def\tud@ddc@foot{1}\tud@ddc@setfoot}{% + \ifstr{\@tempa}{ddccolor}{\def\tud@ddc@foot{2}\tud@ddc@setfoot}{% + \ifstr{\@tempa}{ddccolour}{\def\tud@ddc@foot{2}\tud@ddc@setfoot}{% + \TUD@parameter@wrn{foot}{plain,empty,ddc,ddccolor}% + }}}}% + }% + }% +% \end{macrocode} +% \end{parameter}^^A foot +% \begin{parameter}{cdfont} +% \begin{parameter}{cdfonts} +% \begin{parameter}{tudfonts} +% Die Option \opt{cdfont} bzw. \opt{cdfonts} bestimmt, ob die Schriften des +% \CDs{} oder aber die standarmäßigen Serifenlosen für die Auszeichnugen in der +% Kopfzeile und Serifen im Inhalt verwendet werden. +% \begin{macrocode} + \TUD@parameter@define{cdfont}[true]{\TUDoption{cdfont}{#1}}% + \TUD@parameter@define{cdfonts}[true]{\TUDoption{cdfonts}{#1}}% + \TUD@parameter@define{tudfonts}[true]{\TUDoption{cdfonts}{#1}}% +% \end{macrocode} +% \end{parameter}^^A tudfonts +% \end{parameter}^^A cdfonts +% \end{parameter}^^A cdfont +% \begin{parameter}{logo} +% \begin{parameter}{headlogo} +% Das sekundäre Logo kann ebenfalls lokal geändert werden. +% \begin{macrocode} + \TUD@parameter@define{logo}[true]{\headlogo{#1}}% + \TUD@parameter@let{headlogo}{logo}% +% \end{macrocode} +% \end{parameter}^^A headlogo +% \end{parameter}^^A logo +% Für den Fall, dass ein Wert nicht in der Schlüssel"=Wert"=Notation gegeben +% wird, erfolgt eine Sonderbehandlung durch \cs{tud@environmenthandler}, bei der +% erst auf eine Zahl geprüft wird und anschießend versucht wird, das Argument +% als Sprache zu setzen. Nach der Definition aller Parameter wird der Befehl +% \cs{TUD@parameter} und damit auch die aktuelle Parameterfamilie beendet. +% \begin{macrocode} + \TUD@parameter@sethandler{\tud@environmenthandler{#1}} +} +% \end{macrocode} +% \todo[v3.12]{via \pkg{scrlayer}} +% \begin{macro}{\tud@ddc@sethead} +% Dieser Befehl wird nach der Optionswahl für die Option \opt{head} der +% \env{tudpage}"=Umgebung ausgeführt, um das ggf. gewünschte Logo für den +% Kopf auszuwählen. +% \begin{macrocode} +\newcommand*\tud@ddc@sethead{% + \ifcase \tud@ddc@head\relax\or% + \def\tud@head@@logo{DDC-24}% + \ifstr{\tud@head@color}{HKS41}% + {\def\tud@head@@logo{DDC-27}}{}% + \ifstr{\tud@head@color}{cddarkblue}% + {\def\tud@head@@logo{DDC-27}}{}% + \ifstr{\tud@head@color}{white}% + {\def\tud@head@@logo{DDC-30}}{}% + \or% + \def\tud@head@@logo{DDC-09}% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@ddc@sethead +% \todo[v3.12]{via \pkg{scrlayer}} +% \begin{macro}{\tud@ddc@setfoot} +% \begin{macro}{\tud@foot@logo} +% Dieser Befehl wird nach der Wahl eines Logos über die Option \opt{foot} +% für die \env{tudpage}"=Umgebung ausgeführt, um dieses im Fuß zu setzen. +% \begin{macrocode} +\newcommand*\tud@foot@logo{} +\newcommand*\tud@ddc@setfoot{% + \ifcase \tud@ddc@foot\relax\or% + \def\tud@foot@logo{DDC-22}% + \ifstr{\tud@head@color}{HKS41}% + {\def\tud@foot@logo{DDC-25}}{}% + \ifstr{\tud@head@color}{cddarkblue}% + {\def\tud@foot@logo{DDC-25}}{}% + \ifstr{\tud@head@color}{white}% + {\def\tud@foot@logo{DDC-28}}{}% + \or% + \def\tud@foot@logo{DDC-07}% + \fi% + \ifcase \tud@ddc@foot\relax\else% + \renewcommand*\@oddfoot{% + \parbox[b]{\textwidth}{% + \hfill\includegraphics[height=\tud@dim@ddcheight]{\tud@foot@logo}% + }% + }% + \let\@evenfoot\@oddfoot% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@foot@logo +% \end{macro}^^A \tud@ddc@setfoot +% +% \iffalse +%</class&!option> +% \fi +% +% \Finale +% +\endinput |