% \CheckSum{1513} % \iffalse meta-comment % ====================================================================== % % Das Corporate Design der TU Dresden auf Basis der KOMA-Script-Klassen % % ====================================================================== % This work may be distributed and/or modified under the conditions of % the LaTeX Project Public License, version 1.3c of the license. % The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.3c or later is part of all distributions of LaTeX % version 2005/12/01 or later and of this work. % This work has the LPPL maintenance status "author-maintained". % The current maintainer and author of this work is Falk Hanisch. % ---------------------------------------------------------------------- % Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, % Version 1.3c, verteilt und/oder veraendert werden. % Die neuste Version dieser Lizenz ist % http://www.latex-project.org/lppl.txt % und Version 1.3c ist Teil aller Verteilungen von LaTeX % Version 2005/12/01 oder spaeter und dieses Werks. % Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" % (allein durch den Autor verwaltet). % Der aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch. % ====================================================================== % \fi % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z % Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z % Digits \0\1\2\3\4\5\6\7\8\9 % Exclamation \! Double quote \" Hash (number) \# % Dollar \$ Percent \% Ampersand \& % Acute accent \' Left paren \( Right paren \) % Asterisk \* Plus \+ Comma \, % Minus \- Point \. Solidus \/ % Colon \: Semicolon \; Less than \< % Equals \= Greater than \> Question mark \? % Commercial at \@ Left bracket \[ Backslash \\ % Right bracket \] Circumflex \^ Underscore \_ % Grave accent \` Left brace \{ Vertical bar \| % Right brace \} Tilde \~} % % \iffalse %%% From File: tudscr-pagestyle.dtx %<*driver> \ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi \ProvidesFile{tudscr-pagestyle.dtx}[% 2014/12/17 v2.02 TUD-KOMA-Script (pagestyle)% ] \RequirePackage[ngerman=ngerman-x-latest]{hyphsubst} \documentclass[english,ngerman]{tudscrdoc} \usepackage{selinput}\SelectInputMappings{adieresis={ä},germandbls={ß}} \usepackage[T1]{fontenc} \usepackage{babel} \usepackage{tudscrfonts} % only load this package, if the fonts are installed \KOMAoptions{parskip=half-} \CodelineIndex \RecordChanges \GetFileInfo{tudscr-pagestyle.dtx} \begin{document} \maketitle \DocInput{\filename} \end{document} % % \fi % % \selectlanguage{ngerman} % % \changes{v2.02}{2014/06/23}{Unterstützung für \pkg{titlepage} entfernt}%^^A % \changes{v2.02}{2014/07/08}{Verwendung \cs{FamilyKeyState}}%^^A % % \section{Der Seitenstil des \CDs} % % Das \CD verlangt (eigentlich) einen fest vorgegebenen Satzspiegel. Für das % Setzen längerer wissenschaftlicher Abhandlungen ist dieser jedoch alles % andere als glücklich gewählt. Insbesondere für den doppelseitigen Satz ist % das Standardlayout nicht gut nutzbar. Für die \TUDScript"=Klassen wird % deshalb die Abweichung vom sonst fest vorgegebenen Satzspiegel ermöglicht. % % \StopEventually{\PrintIndex\PrintChanges} % % \subsection{Definition der konstanten Größen und Maße} % % Die Vorlagen sollen neben den vom \CD vorgegebenen Seitenrändern weitere % Layouts ermöglichen und u.\,a. auch die Nutzung des Paketes \pkg{typearea} % erlauben. Damit ein einheitliches Verfahren zur Wahl bzw. Umschaltung des % Satzspiegels genutzt werden kann, wird das Paket \pkg{geometry} genutzt. % Dabei werden entweder die gewünschten Maße der Seitenränder direkt gewählt % oder aber die mit \pkg{typearea} berechneten Maße an \pkg{geometry} % durchgereicht. % % Als erstes werden die Standardmaße für die Seitenränder im \CD definiert, % danach speziell für die \env{tudpage}"=Umgebung. % % \iffalse %<*class&body> % \fi % % \begin{length}{\tud@dim@left} % \begin{length}{\tud@dim@right} % \begin{length}{\tud@dim@both} % Die Seitenränder für links und rechts sowie deren Summe, welche später für % weitere Layouts dazu verwendet wird, diese anteilig zu verteilen. % \begin{macrocode} \newlength{\tud@dim@left} \newlength{\tud@dim@right} \newlength{\tud@dim@both} % \end{macrocode} % \end{length}^^A \tud@dim@both % \end{length}^^A \tud@dim@right % \end{length}^^A \tud@dim@left % \begin{length}{\tud@dim@top} % \begin{length}{\tud@dim@bottom} % \begin{length}{\tud@dim@footskip} % Die Seitenränder für sowohl oben als auch unten sowie der Abstand zwischen % Textkörper und Fußzeile. % \begin{macrocode} \newlength{\tud@dim@top} \newlength{\tud@dim@bottom} \newlength{\tud@dim@footskip} % \end{macrocode} % \end{length}^^A \tud@dim@footskip % \end{length}^^A \tud@dim@bottom % \end{length}^^A \tud@dim@top % \begin{length}{\tud@dim@headheight} % \begin{length}{\tud@dim@barheight} % \begin{length}{\tud@dim@headsep} % Es folgen die speziellen Maße für die Seiten mit dem TUD-Kopf, also die Höhe % oberhalb des Querbalkens, die Höhe des Querbalkens selbst sowie der vertikale % (Mindest"~)Abstand zwischen Querbalken und Textkörper. % \begin{macrocode} \newlength{\tud@dim@headheight} \newlength{\tud@dim@barheight} \newlength{\tud@dim@headsep} % \end{macrocode} % \end{length}^^A \tud@dim@headsep % \end{length}^^A \tud@dim@barheight % \end{length}^^A \tud@dim@headheight % \begin{length}{\tud@dim@logox} % \begin{length}{\tud@dim@logoy} % \begin{length}{\tud@dim@logowidth} % \begin{length}{\tud@dim@logoheight} % Außerdem müssen noch die Abmessungen und die Position des TUD-Logos definiert % werden, nämlich der horizontale (Soll"~)Abstand zwischen linkem Seitenrand % und Logo, der vertikale (Soll"~)Abstand zwischen oberem Seitenrand und Logo % sowie die Breite und Höhe\footnote{Proportionen sind durch die Grafik % vorgegeben} des Logos. % \begin{macrocode} \newlength{\tud@dim@logox} \newlength{\tud@dim@logoy} \newlength{\tud@dim@logowidth} \newlength{\tud@dim@logoheight} % \end{macrocode} % \end{length}^^A \tud@dim@logoheight % \end{length}^^A \tud@dim@logowidth % \end{length}^^A \tud@dim@logoy % \end{length}^^A \tud@dim@logox % \begin{length}{\tud@dim@line} % \changes{v2.02}{2014/06/23}{neu}%^^A % \begin{length}{\tud@dim@thinline} % \begin{length}{\tud@dim@heavyline} % Die Linienstärke der Outline im Kopf ist für ein monochromes Layout schmaler % als im Layout mit farbigem Hintergrund.\footnote{% % monochrom \cs{tud@dim@thinline}, koloriert \cs{tud@dim@heavyline}}% % Da im Dokument beide Varianten vorkommen können, wird die Breite % \cs{tud@dim@line} durch den Seitenstil situativ entweder auf den Wert von % \cs{tud@dim@thinline} oder aber \cs{tud@dim@heavyline} gesetzt. % \begin{macrocode} \newlength{\tud@dim@line} \newlength{\tud@dim@thinline} \newlength{\tud@dim@heavyline} % \end{macrocode} % \end{length}^^A \tud@dim@heavyline % \end{length}^^A \tud@dim@thinline % \end{length}^^A \tud@dim@line % \begin{length}{\tud@dim@headingsvskip} % Die Länge für den vertikalen Standardversatz der Überschriften. % \begin{macrocode} \newlength{\tud@dim@headingsvskip} % \end{macrocode} % \end{length}^^A \tud@dim@headingsvskip % \begin{length}{\tud@dim@headdiff} % \changes{v2.02}{2014/06/23}{neu}%^^A % \begin{length}{\tud@dim@ddcdiff} % \changes{v2.02}{2014/06/23}{neu}%^^A % \begin{length}{\tud@dim@ddcfoot} % \changes{v2.02}{2014/06/23}{neu, Umbenennung von \cs{tud@dim@ddcheight}}%^^A % Zu guter Letzt noch die Höhe des \DDC-Logos in der Fußzeile. Die maximale Höhe % der Fußzeile ist fest vorgegeben. % \begin{macrocode} \newlength{\tud@dim@headdiff} \newlength{\tud@dim@ddcdiff} \newlength{\tud@dim@ddcfoot} % \end{macrocode} % \end{length}^^A \tud@dim@ddcfoot % \end{length}^^A \tud@dim@ddcdiff % \end{length}^^A \tud@dim@headdiff % \begin{macro}{\tud@geometry@set} % \begin{macro}{\tud@head@font@size} % Hiermit werden in Abhängigkeit der gewählten Papiergröße die Maße für die % Größe der Kopfzeile, die Position des Logos, die Seitenränder sowie die % Schriftgröße in der Kopfzeile definiert. Aufgerufen wird der Befehl durch % \cs{tud@geometry@process}. % \begin{macrocode} \newcommand*\tud@head@font@size{} \newcommand*\tud@geometry@set{% \ifdim\paperheight<148.1mm\relax% \setlength{\tud@dim@headheight}{17.5mm}% \setlength{\tud@dim@barheight}{2.5mm}% \setlength{\tud@dim@headsep}{6mm}% \setlength{\tud@dim@logox}{5.5mm}% \setlength{\tud@dim@logoy}{6.5mm}% \setlength{\tud@dim@logowidth}{28.5mm}% \setlength{\tud@dim@left}{15mm}% \setlength{\tud@dim@right}{10mm}% \setlength{\tud@dim@top}{12.5mm}% \setlength{\tud@dim@bottom}{12.5mm}% \setlength{\tud@dim@footskip}{6mm}% \setlength{\tud@dim@heavyline}{0.75pt}% \setlength{\tud@dim@thinline}{0.5pt}% \def\tud@head@font@size{4.5}% \else\ifdim\paperheight<297.1mm\relax% \setlength{\tud@dim@headheight}{35mm}% \setlength{\tud@dim@barheight}{5mm}% \setlength{\tud@dim@headsep}{12mm}% \setlength{\tud@dim@logox}{11mm}% \setlength{\tud@dim@logoy}{13.5mm}% \setlength{\tud@dim@logowidth}{57mm}% \setlength{\tud@dim@left}{30mm}% \setlength{\tud@dim@right}{20mm}% \setlength{\tud@dim@top}{25mm}% \setlength{\tud@dim@bottom}{25mm}% \setlength{\tud@dim@footskip}{12mm}% \setlength{\tud@dim@heavyline}{1pt}% \setlength{\tud@dim@thinline}{0.5pt}% \def\tud@head@font@size{9}% \else\ifdim\paperheight<420.1mm\relax% \setlength{\tud@dim@headheight}{50mm}% \setlength{\tud@dim@barheight}{7mm}% \setlength{\tud@dim@headsep}{17mm}% \setlength{\tud@dim@logox}{15.5mm}% \setlength{\tud@dim@logoy}{19mm}% \setlength{\tud@dim@logowidth}{80mm}% \setlength{\tud@dim@left}{42mm}% \setlength{\tud@dim@right}{28mm}% \setlength{\tud@dim@top}{35mm}% \setlength{\tud@dim@bottom}{35mm}% \setlength{\tud@dim@footskip}{17mm}% \setlength{\tud@dim@heavyline}{1.4pt}% \setlength{\tud@dim@thinline}{0.7pt}% \def\tud@head@font@size{13}% \else\ifdim\paperheight<594.1mm\relax% \setlength{\tud@dim@headheight}{70mm}% \setlength{\tud@dim@barheight}{10mm}% \setlength{\tud@dim@headsep}{24mm}% \setlength{\tud@dim@logox}{22mm}% \setlength{\tud@dim@logoy}{27mm}% \setlength{\tud@dim@logowidth}{114mm}% \setlength{\tud@dim@left}{60mm}% \setlength{\tud@dim@right}{40mm}% \setlength{\tud@dim@top}{50mm}% \setlength{\tud@dim@bottom}{50mm}% \setlength{\tud@dim@footskip}{24mm}% \setlength{\tud@dim@heavyline}{1.7pt}% \setlength{\tud@dim@thinline}{1pt}% \def\tud@head@font@size{13.5}% \else\ifdim\paperheight<841.1mm\relax% \setlength{\tud@dim@headheight}{100mm}% \setlength{\tud@dim@barheight}{14mm}% \setlength{\tud@dim@headsep}{34mm}% \setlength{\tud@dim@logox}{31mm}% \setlength{\tud@dim@logoy}{38mm}% \setlength{\tud@dim@logowidth}{161.5mm}% \setlength{\tud@dim@left}{85mm}% \setlength{\tud@dim@right}{56.5mm}% \setlength{\tud@dim@top}{71mm}% \setlength{\tud@dim@bottom}{71mm}% \setlength{\tud@dim@footskip}{34mm}% \setlength{\tud@dim@heavyline}{1.9pt}% \setlength{\tud@dim@thinline}{1.5pt}% \def\tud@head@font@size{14}% \else% \setlength{\tud@dim@headheight}{140mm}% \setlength{\tud@dim@barheight}{20mm}% \setlength{\tud@dim@headsep}{48mm}% \setlength{\tud@dim@logox}{44mm}% \setlength{\tud@dim@logoy}{54mm}% \setlength{\tud@dim@logowidth}{228mm}% \setlength{\tud@dim@left}{120mm}% \setlength{\tud@dim@right}{80mm}% \setlength{\tud@dim@top}{100mm}% \setlength{\tud@dim@bottom}{100mm}% \setlength{\tud@dim@footskip}{48mm}% \setlength{\tud@dim@heavyline}{2.1pt}% \setlength{\tud@dim@thinline}{2pt}% \def\tud@head@font@size{20}% \fi\fi\fi\fi\fi% \setlength{\tud@dim@both}{\dimexpr\tud@dim@left+\tud@dim@right\relax}% % \end{macrocode} % Hiermit wird sichergestellt, dass bei der Verwendung des \DDC-Logos im Fuß % ausreichend Platz zur Verfügung steht. % \begin{macrocode} \setlength{\tud@dim@ddcfoot}{.6\tud@dim@headheight}% } % \end{macrocode} % \end{macro}^^A \tud@head@font@size % \end{macro}^^A \tud@geometry@set % % \subsection{Unterstützung der \cls{standalone}-Klasse} % % \changes{v2.02}{2014/07/25}{Unterstützung der \cls{standalone}"=Klasse}%^^A % % Mit der Klasse~\cls{standalone} können insbesondere Grafiken als separate % Dateien erzeugt und später im Dokument eingebunden werden. Diese Klasse % ändert allerhand an den Einstellungen der Seitenränder. Damit sich diese bei % der Verwendung mit den \TUDScript-Klassen nicht in die Quere kommen, müssen % für einige Einstellungen unterdrückt werden. % % \begin{macro}{\tud@ifsacrop} % \changes{v2.02}{2014/09/08}{neu}%^^A % Mit diesem Makro kann die Verwendung der Option \opt{crop} mit der Klasse % \cls{standalone} geprüft werden. Das erste Argument wird ausgeführt, wenn % die Klasse geladen und die Option aktiv ist. Das zweite Argument wird % ausgeführt, wenn entweder die Option \opt{crop} deaktiviert ist oder die % Klasse \cls{standalone} gar nicht geladen wurde. % \begin{macrocode} \newcommand*\tud@ifsacrop{% \ifcsdef{ifsa@crop}{% \ifbool{sa@crop}{\@firstoftwo}{\@secondoftwo}% }{% \@secondoftwo% }% } % \end{macrocode} % \end{macro}^^A \tud@ifsacrop % % Ist die Klasse \cls{standalone} zusammen mit der Option \opt{crop} aktiv, % werden die Seitenränder auf die Einstellungen dieser Klasse gesetzt und das % Laden von \pkg{scrlayer-scrpage} verhindert. % % \begin{macrocode} \AtEndPreamble{% \tud@ifsacrop{% \PreventPackageFromLoading{scrlayer-scrpage}% \pagestyle{empty}% \hoffset=-72.27pt% \voffset=-72.27pt% \topmargin=0pt% \headheight=0pt% \headsep=0pt% \marginparsep=0pt% \marginparwidth=0pt% \footskip=0pt% \marginparpush=0pt% \oddsidemargin=0pt% \evensidemargin=0pt% \topskip=0pt% \textheight=\dimexpr\maxdimen% }{}% } % \end{macrocode} % % \subsection{Definition des Seitenstils mittels \pkg{scrlayer-scrpage}} % % Ein zentraler Bestandteil der Vorlagen ist der Seitenkopf des \CDs. Dieser % wird ab der Version~v2.02 mit Hilfe des Paketes \pkg{scrlayer-scrpage} % erstellt. Dafür werden einzelnene Seitenstile erstellt, welche zum einen von % verschiedenen Befehlen wie beispielsweise von\cs{maketitle} oder \cs{part} % bzw. \cs{addpart} genutzt werden. Zum anderen kann der Anwender selbst diese % entweder direkt über die Wahl des Seitenstils oder aber mit der % \env{tudpage}"=Umgebung nutzen. % % \begin{pagestyle}{tudheadings} % \changes{v2.02}{2014/06/23}{neu}%^^A % \begin{pagestyle}{plain.tudheadings} % \changes{v2.02}{2014/06/23}{neu}%^^A % \begin{pagestyle}{empty.tudheadings} % \changes{v2.02}{2014/06/23}{neu}%^^A % Es wird ein neuer Seitenstil kreiert, der das \CD der TU~Dresden mit der % prägenden Kopfzeile umsetzt. Dabei soll dieser Kopf auch verwendbar sein, % wenn nicht die vom \CD vorgeschriebenen Seitenränder sondern das Paket % \pkg{typearea} genutzt wird. Dafür wird das Logo im Kopf so wie im \CD % vorgesehen mit dem Logo der \TnUD in den Rand und dem Schriftzug bündig zum % Textblock gesetzt. Für den Fall, dass das Dokument nicht ausschließlich mit % dem TUD-Kopf auf jeder Seite gesetzt wird, muss der komplette vertikale % Satzspiegel angepasst werden, sonst wäre der obere Rand optisch viel zu groß. % Hierfür wird das Paket \pkg{geometry} genutzt.Durch \cs{tud@geometry@process} % werden drei Layouts erstellt. Diese können mit \cs{loadgeometry}\marg{Stil} % geladen werden. % \begin{macrocode} \AtEndPreamble{% % \end{macrocode} % Damit der Anwender beliebige Optionen an \pkg{scrlayer-scrpage} übergeben % kann, wird das Paket erst zum Ende der Präambel geladen, wenn dies nicht % bereits vorher geschehen ist. % \ToDo{Versionsanforderung rein, sobald aktuelle Version auf CTAN vorhanden} % \begin{macrocode} \RequirePackage{scrlayer-scrpage}[2013/12/14]% % \end{macrocode} % Anschließend werden verschiedene, sogeannte Layers für die einzelnen Elemente % auf einer Seite erstellt. Dies sind das aus dem Satzspiegel nach links % verschobene Logo der \TnUD sowie \dots % \begin{macrocode} \AfterPackage*{scrlayer-scrpage}{% \DeclareNewLayer[% background,head,align=tl,% voffset=\tud@dim@logoy,% contents={% \hspace*{\dimexpr\tud@dim@logox-\tud@dim@left\relax}\tud@mainlogo% },% ]{tudheadings.head.mainlogo}% % \end{macrocode} % \dots das Zweitlogo, \dots % \begin{macrocode} \DeclareNewLayer[% background,head,align=tl,% voffset=\tud@dim@logoy,% contents={\hfill\tud@headlogo},% ]{tudheadings.head.logo}% % \end{macrocode} % \dots die obere und untere Linie des Querbalkens sowohl in der normalen % Version, welche den Textbereich überspannt als auch in der Variante über die % komplette Seitenbreite. Dabei muss für beide Varianten der entsprechenden % horizontale Versatz beachtet werden. Dafür wird ggf. der Parameter \val{head} % von \pkg{scrlayer-scrpage} verwendet. Darauf folgt \dots % \begin{macrocode} \DeclareNewLayer[% background,head,align=tl,% voffset=\dimexpr\tud@dim@headheight-.5\tud@dim@line\relax,% contents={\if@tud@widehead\else\tud@head@rule{\textwidth}\fi},% ]{tudheadings.head.topline}% \DeclareNewLayer[% background,head,align=tl,% voffset={% \dimexpr\tud@dim@headheight+\tud@dim@barheight-.5\tud@dim@line\relax% },% contents={\if@tud@widehead\else\tud@head@rule{\textwidth}\fi},% ]{tudheadings.head.bottomline}% \DeclareNewLayer[% background,align=tl,% voffset=\dimexpr\tud@dim@headheight-.5\tud@dim@line\relax,% contents={\if@tud@widehead\tud@head@rule{\paperwidth}\fi},% ]{tudheadings.head.topwideline}% \DeclareNewLayer[% background,align=tl,% voffset={% \dimexpr\tud@dim@headheight+\tud@dim@barheight-.5\tud@dim@line\relax% },% contents={\if@tud@widehead\tud@head@rule{\paperwidth}\fi},% ]{tudheadings.head.bottomwideline}% % \end{macrocode} % \dots der Inhalt mit Fakultät, Einrichtung, Institut und Lehrstuhl. % \begin{macrocode} \DeclareNewLayer[% background,head,align=tl,% voffset=\dimexpr\tud@dim@headheight+\tud@dim@line\relax,% contents={\tud@head@text@box},% ]{tudheadings.head.text}% % \end{macrocode} % Außerdem wird eine weitere Ebene mit dem \DDC-Logo im Seitenfuß erstellt. % \begin{macrocode} \DeclareNewLayer[% background,foot,% contents={% \vskip\dimexpr-\tud@dim@ddcfoot-\baselineskip+\ht\strutbox% \hfill\tud@footlogo% },% ]{tudheadings.foot.ddclogo}% % \end{macrocode} % Aus den zuvor erstellten Ebenen werden jetzt die eigentlichen Seitenstile % zusammengesetzt. Mit \cs{newpairofpagestyles} wird neben dem Seitenstil % \pgs{tudheadings} der passende Seitenstil \pgs{plain.tudheadings} gleich mit % deklariert. % \begin{macrocode} \newpairofpagestyles{tudheadings}{}% % \end{macrocode} % Allerdings führt der Befehl dazu, dass zunächst eine Vielzahl an Ebenen % hinzugefügt wird, welche nicht benötigt werden. Deshalb werden diese mit % \cs{RemoveLayersFromPageStyle} zunächst entfernt. % \begin{macrocode} \ForEachLayerOfPageStyle{tudheadings}{% \RemoveLayersFromPageStyle{tudheadings}{#1}% }% \ForEachLayerOfPageStyle{plain.tudheadings}{% \RemoveLayersFromPageStyle{plain.tudheadings}{#1}% }% % \end{macrocode} % Nun folgt das Hinzufügen der Ebenen zu den jetzt leeren Seitenstilen. Damit % die Benutzerschnittstelle von \pkg{scrlayer-scrpage} für die Fußzeile % weiterhin durch den Anwender verwendet werden kann, werden die entsprechenden % \pgs{scrheadings}-Ebenen verwendet. % \begin{macrocode} \AddLayersToPageStyle{tudheadings}{% tudheadings.head.mainlogo,% tudheadings.head.logo,% tudheadings.head.topline,% tudheadings.head.bottomline,% tudheadings.head.topwideline,% tudheadings.head.bottomwideline,% tudheadings.head.text,% tudheadings.foot.ddclogo,% scrheadings.foot.odd,% scrheadings.foot.even,% scrheadings.foot.oneside,% scrheadings.foot.above.line,% scrheadings.foot.below.line% }% \AddLayersToPageStyle{plain.tudheadings}{% tudheadings.head.mainlogo,% tudheadings.head.logo,% tudheadings.head.topline,% tudheadings.head.bottomline,% tudheadings.head.topwideline,% tudheadings.head.bottomwideline,% tudheadings.head.text,% tudheadings.foot.ddclogo,% plain.scrheadings.foot.odd,% plain.scrheadings.foot.even,% plain.scrheadings.foot.oneside,% plain.scrheadings.foot.above.line,% plain.scrheadings.foot.below.line% }% \DeclareNewPageStyleByLayers{empty.tudheadings}{% tudheadings.head.mainlogo,% tudheadings.head.logo,% tudheadings.head.topline,% tudheadings.head.bottomline,% tudheadings.head.topwideline,% tudheadings.head.bottomwideline,% tudheadings.head.text,% tudheadings.foot.ddclogo,% }% % \end{macrocode} % Normalerweise werden durch \pkg{scrlayer-scrpage} bei der Umschaltung auf % einen mit dem Befehl \cs{newpairofpagestyles}\marg{Seitenstil} definierten % Seitenstil, die Seitenstile \pgs{headings} und \pgs{plain} als Alias für % \pgs{\meta{Seitenstil}} und \pgs{plain.\meta{Seitenstil}} definiert. Hiermit % wird zusätzlich dafür gesorgt, das der Seitenstil \pgs{empty} ebenfalls als % Alias für \pgs{empty.tudheadings} verwendet werden kann. % \begin{macrocode} \AddToLayerPageStyleOptions{tudheadings}{% onselect={\letcs\ps@empty{ps@empty.tudheadings}}% }% \AddToLayerPageStyleOptions{plain.tudheadings}{% onselect={\letcs\ps@empty{ps@empty.tudheadings}}% }% \AddToLayerPageStyleOptions{empty.tudheadings}{% onselect={% \letcs\ps@empty{ps@empty.tudheadings}% \letcs\ps@plain{ps@plain.tudheadings}% \letcs\ps@headings{ps@tudheadings}% }% }% % \end{macrocode} % Außerdem wird der Alias-Seitenstil \pgs{tudscrheadings} definiert. % \begin{macrocode} \DeclareNewPageStyleAlias{tudscrheadings}{tudheadings}% \DeclareNewPageStyleAlias{plain.tudscrheadings}{plain.tudheadings}% \DeclareNewPageStyleAlias{empty.tudscrheadings}{empty.tudheadings}% % \end{macrocode} % Der TUD-Kopf erfordert einen eigenen Satzspiegel, der ggf. durch % \cs{tud@beforepagestyle} aktiviert bzw. deaktiviert wird. % \begin{macrocode} \BeforeSelectAnyPageStyle{\tud@beforepagestyle{#1}}% }% } % \end{macrocode} % \end{pagestyle}^^A empty.tudheadings % \end{pagestyle}^^A plain.tudheadings % \end{pagestyle}^^A tudheadings % \begin{macro}{\ps@tudpage@plain} % \changes{v2.02}{2014/06/23}{entfernt}%^^A % \begin{macro}{\ps@tudpage@empty} % \changes{v2.02}{2014/06/23}{entfernt}%^^A % Diese Befehle wurden mit der \TUDScript-Version~v2.02 entfernt. % \end{macro}^^A \ps@tudpage@empty % \end{macro}^^A \ps@tudpage@plain % \begin{macro}{\tud@beforepagestyle} % \changes{v2.02}{2014/06/23}{neu}%^^A % \begin{macro}{\tud@currentgeometry} % \changes{v2.02}{2014/06/23}{neu}%^^A % Mit \cs{tud@beforepagestyle} wird beim Umschalten des Seitenstils ggf. der % Satzspiegel geändert. % \begin{macrocode} \newcommand*\tud@currentgeometry{} \newcommand*\tud@beforepagestyle[1]{% % \end{macrocode} % Der \pgs{tudheadings}-Seitenstil wird mit dem Befehl \cs{newpairofpagestyles} % derart definiert, dass zwischen \pgs{tudheadings}, \pgs{plain.tudheadings} % sowie~-- durch die Anpassungen weiter oben~-- \pgs{empty.tudheadings} auch % mit \LaTeX-Standardseitenstilen \pgs{headings}, \pgs{plain} und \pgs{empty} % umgeschaltet werden kann. Dies wird hiermit beachtet. % \begin{macrocode} \def\@tempa{#1}% \ifstr{\sls@currentheadings}{tudheadings}{% \ifstr{#1}{headings}{\def\@tempa{tudheadings}}{}% \ifstr{#1}{plain}{\def\@tempa{plain.tudheadings}}{}% \ifstr{#1}{empty}{\def\@tempa{empty.tudheadings}}{}% }{}% % \end{macrocode} % Für den Fall, das ein \pgs{tudheadings}-Seitenstil geladen werden soll\dots % \begin{macrocode} \tud@ifinpslist{\@tempa}{% % \end{macrocode} % \dots werden die Einstellungen für den Seitenfuß mit \cs{tud@ddc@check} in % \cs{@tempb} geschrieben und abhängig davon der richtige Satzspiegel geladen. % Dabei wird zuvor mit dem Wert aus \cs{tud@currentgeometry} geprüft, ob dies % überhaupt notwendig ist. % \begin{macrocode} \tud@ddc@check% % \end{macrocode} % Das \DDC-Logo im Fuß ist nicht aktiviert. % \begin{macrocode} \ifcase \@tempb\relax% \ifstr{\tud@currentgeometry}{tudarea}{}{% \loadgeometry{tudarea}% \gdef\tud@currentgeometry{tudarea}% }% % \end{macrocode} % Das \DDC-Logo im Fuß ist aktiviert. % \begin{macrocode} \else% \ifstr{\tud@currentgeometry}{tudareaddc}{}{% \loadgeometry{tudareaddc}% \gdef\tud@currentgeometry{tudareaddc}% }% \fi% % \end{macrocode} % Die Länge \cs{tud@dim@headdiff} gibt an, wie groß die Differenz zwischen % Kopfhöhe zwischen aktuellem und dem speziellen \pgs{tudheadings}-Seitenstil % ist. Da diese in diesem Fall identisch sind, wird die Länge zu \cs{z@} % gesetzt. % \begin{macrocode} \setlength{\tud@dim@headdiff}{\z@}% % \end{macrocode} % Hier ist der Fall, wenn kein \pgs{tudheadings}-Seitenstil geladen werden soll. % Zusätzlich zum Satzspeigel wird außerdem der Seitenstil \pgs{empty} % zurückgesetzt. % \begin{macrocode} }{% \ifstr{\tud@currentgeometry}{typearea}{}{% \loadgeometry{typearea}% \gdef\tud@currentgeometry{typearea}% \RedeclarePageStyleByLayers{empty}{}% }% % \end{macrocode} % Die Länge \cs{tud@dim@headdiff} wird auf den berechneten Wert gesetzt. Nur % für den Fall, dass die Kopfzeile zum Satzspiegel gerechnet wird und dieser % nicht durch \pkg{typearea} berechnet wurde, muss diese Länge etwas angepasst % werden. % \begin{macrocode} \setlength{\tud@dim@headdiff}{\tud@ta@headdiff}% \ifcase \tud@geometry\relax\else% \if@hincl% \addtolength{\tud@dim@headdiff}{% \dimexpr-\tud@ta@headheight-\tud@dim@headsep\relax% }% \fi% \fi% }% % \end{macrocode} % Die Länge \cs{tud@dim@headdiff} wird vorsichtshalber global gesetzt. % \begin{macrocode} \global\tud@dim@headdiff=\tud@dim@headdiff% } % \end{macrocode} % Damit die Satzspiegelumstellungen nicht durchgeführt werden, wenn durch die % folgenden \KOMAScript-Befehle Leerseiten erzeugt werden, müssen diese minimal % angepasst werden. % \begin{macrocode} \patchcmd{\cleardoubleoddpageusingstyle}{\pagestyle}{% \let\tud@beforepagestyle\@gobble\pagestyle% }{}{\tud@patch@wrn{cleardoubleoddpageusingstyle}} \patchcmd{\cleardoubleevenpageusingstyle}{\pagestyle}{% \let\tud@beforepagestyle\@gobble\pagestyle% }{}{\tud@patch@wrn{cleardoubleevenpageusingstyle}} \patchcmd{\cleardoublepageusingstyle}{\pagestyle}{% \let\tud@beforepagestyle\@gobble\pagestyle% }{}{\tud@patch@wrn{cleardoublepageusingstyle}} % \end{macrocode} % \end{macro}^^A \tud@currentgeometry % \end{macro}^^A \tud@beforepagestyle % \begin{macro}{\tud@ddc@enlargepage} % \changes{v2.02}{2014/06/23}{neu}%^^A % Der Befehl wird für die Titelkopf- und Kapitelseiten verwendet. Er % verkleinert die entsprechenden Seiten, wenn für diese mit dem Befehl % \cs{thispagestyle} einer der \pgs{tudheadings}"=Seitenstile gewählt wurde % \emph{und} des \DDC-Logo im Fuß gesetzt werden soll. % \begin{macrocode} \newcommand*\tud@ddc@enlargepage{% \ifstr{\tud@currentgeometry}{tudareaddc}{}{% \tud@ddc@check% \ifcase \@tempb\relax\else\enlargethispage{-\tud@dim@ddcdiff}\fi% }% } % \end{macrocode} % \end{macro}^^A \tud@ddc@enlargepage % \begin{macro}{\tud@head@text} % \begin{macro}{\tud@head@text@first} % \begin{macro}{\tud@head@text@second} % \begin{macro}{\tud@head@text@delimiter} % \begin{macro}{\tud@head@text@buffer} % \begin{macro}{\tud@head@font} % Diese Befehle sind Hilfsmakros, die bei der Erzeugung der Textzeile inner- und % unterhalb des Querbalkens des TUD-Kopfes dienen. % \begin{macrocode} \newcommand*\tud@head@text{} \newcommand*\tud@head@text@first{} \newcommand*\tud@head@text@second{} \newcommand*\tud@head@text@delimiter{} \newcommand*\tud@head@text@buffer{} \newcommand*\tud@head@font{} % \end{macrocode} % \end{macro}^^A \tud@head@font % \end{macro}^^A \tud@head@text@buffer % \end{macro}^^A \tud@head@text@delimiter % \end{macro}^^A \tud@head@text@second % \end{macro}^^A \tud@head@text@first % \end{macro}^^A \tud@head@text % \begin{macro}{\tud@head@rule} % \changes{v2.02}{2014/06/23}{gewünschte Breite als Argument}%^^A % Der Querbalken des Kopfes läuft je nach gewähltem Parameter \opt{widehead} % entweder nur über den Textbereich oder aber über die gesamte Seitenbreite. % Der Befehl erzeugt eine horizontale Linie mit der übergebenen Breite und % über \cs{tud@dim@line} definierter Dicke. % \begin{macrocode} \newcommand*\tud@head@rule[1]{% \color{\tud@head@color}% \rule[\dimexpr\ht\strutbox\relax]{#1}{\tud@dim@line}% } % \end{macrocode} % \end{macro}^^A \tud@head@rule % \begin{macro}{\tud@head@text@add} % Dieser Befehl dient zum Füllen eines Puffer-Strings. Es werden sequentiell % alle potentiellen Felder hinzugefügt. Sollte das zuletzt hinzugefügte Feld % dazu führen, dass der Text der Kopfzeile über den Seitenrand hinausragt, so % wird eine zweite Zeile begonnen. In diesem Fall wird der temporäre Schalter % \cs{@tempswa} aktiviert. Auch das Trennzeichen zwischen einzelnen Feldern % muss gepuffert werden, da dieses nur gesetzt wird, wenn ein weiteres Feld % nachfolgt. % \begin{macrocode} \newcommand*\tud@head@text@add[3][, ]{% \def\tud@head@font{#2}% \edef\tud@head@text{#3}% \ifx\tud@head@text\@empty% \def\tud@head@text@delimiter{}% \else% \edef\tud@head@text@delimiter{\tud@head@text@buffer}% \def\tud@head@text@buffer{#1}% \fi% \if@tempswa\else% \def\@tempa{% \tud@head@text@first% \tud@head@text@delimiter% \tud@head@font% \tud@head@text% }% \settowidth{\@tempdima}{\@tempa}% \ifdim\@tempdima>\textwidth\relax% \@tempswatrue% \def\tud@head@text@delimiter{}% \else% \edef\tud@head@text@first{\@tempa}% \fi% \fi% \if@tempswa% \edef\tud@head@text@second{% \tud@head@text@second% \tud@head@text@delimiter% \tud@head@font% \tud@head@text% }% \fi% } % \end{macrocode} % \end{macro}^^A \tud@head@text@add % \begin{macro}{\tud@head@text@box} % \changes{v2.02}{2014/06/23}{neu}%^^A % Dieser Befehl ist der Inhalt der Ebene für den Text der Kopfzeile. % \begin{macrocode} \newcommand*\tud@head@text@box{% % \end{macrocode} % Sollte keine Fakultät angegeben sein, wird eine Warnung ausgegeben. % \begin{macrocode} \ifx\@faculty\@empty% \ClassWarningNoLine{\tudcls@name}{No `\string\faculty' given}% \faculty{}% \fi% % \end{macrocode} % Die Farbe des Kopfes wird für Titel und Teileseiten durch die gewählten % Optionen\footnote{\opt{cdtitle}, \opt{cdpart}} bestimmt.\footnote{für % die \env{tudpage}-Umgebung kann dieser angepasst werden} % \begin{macrocode} \color{\tud@head@color}% % \end{macrocode} % Abhängig vom Schalter \cs{if@tud@cdfonts}~-- gesetzt entweder von der globalen % Klassenoption oder vom lokalelParameter \opt{cdfont}~-- werden entweder die % Schriften des \CDs oder aber die serifenlose Standardschrift für die Kopfzeile % verwendet. % \begin{macrocode} \tud@head@font@set% % \end{macrocode} % Der Inhalt der Kopfzeile wird durch die angegeben Fakultät etc. vorgegeben. % Sollte der Platz in einer Zeile dafür nicht ausreichen, wird eine zweite % Zeile begonnen. Ob diese benötigt wird, ist abhängig vom Inhalt und von der % sich daraus ergebenden Breite der Textzeile. Das Erzeugen der ersten und % gegebenenfalls der zweiten Textzeile im Kopf erfolgt durch das Makro % \cs{tud@head@text@add}\oarg{Trennzeichen}\marg{Schrift}\marg{Feld}. Der dafür % verwendete Schalter \cs{@tempswa} und die benötigten Hilfsmakros werden % vor der Verwendung initialisiert. % \begin{macrocode} \@tempswafalse% \def\tud@head@text@first{}% \def\tud@head@text@second{}% \def\tud@head@text@buffer{}% \tud@head@text@add[\enskip]{\tud@head@font@bold}{\@faculty}% \tud@head@text@add{\tud@head@font@light}{\@department}% \tud@head@text@add{\tud@head@font@light}{\@institute}% \tud@head@text@add{\tud@head@font@light}{\@chair}% % \end{macrocode} % Sollte die zweite Textzeile zu lang sein, was bei kleinen Papierformaten % vorkommen kann, dann wird eine Warnung ausgegeben. % \begin{macrocode} \settowidth{\@tempdima}{\tud@head@text@second}% \ifdim\@tempdima>\textwidth\relax% \tud@head@text@wrn{\the\dimexpr\@tempdima-\textwidth\relax}% \hfuzz=\@tempdima% \fi% % \end{macrocode} % Es erfolgt die Ausgabe der Textzeile(n) mit Fakultät etc. über % \cs{tud@head@text@write} sowie einer möglichen Extrazeile. % \begin{macrocode} \vbox{% \linespread{0}\selectfont% \tud@head@text@write{\tud@head@text@first}% \ifx\tud@head@text@second\@empty% \ifx\@extraheadline\@empty\else% \newline\tud@head@font@light\tud@head@text@write{\@extraheadline}% \fi% \else% \newline\tud@head@text@write{\tud@head@text@second}% \ifx\@extraheadline\@empty\else% \newline\tud@head@font@light\@extraheadline% \fi% \fi% }% } % \end{macrocode} % \end{macro}^^A \tud@head@text@box % \begin{macro}{\tud@head@text@write} % \changes{v2.02}{2014/06/23}{Vertikaler Freiraum für Ober- und Unterlängen % mit \cs{vphantom} eingefügt}%^^A % \changes{v2.02}{2014/12/04}{optische Zentrierung des Zeilentextes}%^^A % Befehl zur Ausgabe der ersten und evtl. zweiten Textzeile im TUD-Kopf % \begin{macrocode} \newcommand*\tud@head@text@write[1]{% \raisebox{\dimexpr(\tud@dim@barheight+2\tud@dim@line-\totalheight)/2\relax}[% \dimexpr\tud@dim@barheight-\depth\relax% ][\depth]{#1\vphantom{gjpqy\"A\"O\"U}}% } % \end{macrocode} % \end{macro}^^A \tud@head@text@write % \begin{macro}{\tud@head@text@wrn} % Warnung für den Fall, dass die Kopfinformationen breiter werden, als die % Textbreite, was bei besonders kleinen Papierformaten geschehen kann. % \begin{macrocode} \newcommand\tud@head@text@wrn[1]{% \ClassWarning{\tudcls@name}{% The given entries for the headline\MessageBreak% (faculty, institute etc.) are #1\MessageBreak% too wide for the textwidth% }% \global\let\tud@head@text@wrn\@gobble% } % \end{macrocode} % \end{macro}^^A \tud@head@text@wrn % \begin{macro}{\tud@mainlogo@wrn} % \changes{v2.02}{2014/06/23}{Umbenennen von \cs{tud@head@logo@wrn}}%^^A % Warnung für den Fall, dass die Kopfinformationen breiter werden, als die % Textbreite, was bei besonders kleinen Papierformaten geschehen kann. % \begin{macrocode} \newcommand*\tud@mainlogo@wrn[1]{% \ClassWarning{\tudcls@name}{% The selected page layout means that the\MessageBreak% logo of TUD extends beyond the printing area.\MessageBreak% The inner margin is smaller than BCOR\MessageBreak% (`BCOR=\the\ta@bcor', inner margin is #1)\MessageBreak% Maybe you should decrease the current value\MessageBreak% of DIV (`DIV=\the\ta@div')% }% \global\let\tud@mainlogo@wrn\@gobble% } % \end{macrocode} % \end{macro}^^A \tud@mainlogo@wrn % % \iffalse % %<*class&option> % \fi % % \subsection{Befehle, Optionen und Umsetzung der Seitenstilvarianten} % % \begin{option}{ddc} % \changes{v2.02}{2014/06/23}{automatische Logowahl}%^^A % \begin{option}{ddchead} % \changes{v2.02}{2014/06/23}{\DDC-Logo entweder in Kopf oder Fuß}%^^A % \begin{option}{ddcfoot} % \changes{v2.02}{2014/06/23}{\DDC-Logo entweder in Kopf oder Fuß}%^^A % Diese Optionen dienen zur Auswahl des \DDC-Logos auf Seiten mit dem Stil % \pgs{tudheadings}. Die Option \opt{ddchead} setzt das Logo dabei immer in den % Kopf, wobei ein mit \cs{headlogo} definiertes Zweitlogo gegebenenfalls % überschrieben wird. Die Option \opt{ddcfoot} setzt das Logo immer in den Fuß. % Mit der Option \opt{ddc} wird das Logo nur in den Kopf gesetzt, wenn kein % Zweitlogo angegeben ist. Ist dies jedoch der Fall, wird das Logo stattdessen % im Fuß ausgegeben. % \begin{macro}{\tud@ddc@switch} % \changes{v2.02}{2014/06/23}{neu}%^^A % Dieser Befehl enthält die gültigen Werte für die Optionen \opt{ddc}, % \opt{ddchead} sowie \opt{ddcfoot}. % \begin{macrocode} \newcommand*\tud@ddc@switch{} \edef\tud@ddc@switch{% \TUD@numkey@bool,% {color}{2},{colour}{2},% {colorblack}{3},{colourblack}{3},% {gray}{4},{grey}{4},{cdgray}{4},% {black}{5},% {blue}{6},{cddarkblue}{6},% {white}{7}% } % \end{macrocode} % \end{macro}^^A \tud@ddc@switch % \begin{macro}{\tud@ddc@save} % \changes{v2.02}{2014/07/08}{neu}%^^A % \begin{macro}{\if@tud@ddc@save} % \changes{v2.02}{2014/07/08}{neu}%^^A % Diese beiden Befehle werden von den Optionen \opt{ddchead} und \opt{ddcfoot} % benötigt, um nach dem Setzen der Option den vorherigen Wert vor dem möglichen % Beenden einer Seite mit \cs{clearpage} wiederherstellen zu können. % \begin{macrocode} \newcommand*\tud@ddc@save{} \newif\if@tud@ddc@save \@tud@ddc@savetrue % \end{macrocode} % \end{macro}^^A \if@tud@ddc@save % \end{macro}^^A \tud@ddc@save % \begin{macro}{\tud@ddc} % \changes{v2.02}{2014/06/23}{neu}%^^A % \begin{macro}{\if@tud@ddc@autoset} % \changes{v2.02}{2014/06/23}{neu}%^^A % Die Option \opt{ddc}. % \begin{macrocode} \newcommand*\tud@ddc{0} \newif\if@tud@ddc@autoset \TUD@key{ddc}[true]{% % \end{macrocode} % Sollte diese innerhalb des Dokumentes aufgerufen werden, so wird für den Fall, % dass ein \pgs{tudheadings}-Seitenstil gewählt ist, ein \cs{clearpage} % ausgeführt, da eventuell eine Änderung des Layers sowie des Satzspeigels % notwendig ist. Anschließend wird der Schalter \cs{if@tud@ddc@autoset} % entsprechend des angegebenen Wertes gesetzt. % \begin{macrocode} \TUD@set@numkey{ddc}{tud@ddc}{\tud@ddc@switch}{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed% \tud@ifinpslist{\@nameuse{currentpagestyle}}{\clearpage}{}% \ifcase \tud@ddc\relax% \@tud@ddc@autosetfalse% \else% \@tud@ddc@autosettrue% \fi% % \end{macrocode} % Abschließend wird der aktuelle Seitenstil erneut aufgerufen, um bei einem % geänderten Fuß den notwendigen Satzspiegel zu laden. Siehe dazu auch % \cs{tud@beforepagestyle}. % \begin{macrocode} \if@atdocument\expandafter\pagestyle\expandafter{\currentpagestyle}\fi% \fi% } % \end{macrocode} % \end{macro}^^A \if@tud@ddc@autoset % \end{macro}^^A \tud@ddc % \begin{macro}{\tud@ddc@head} % Die Option \opt{ddchead} dient zum zwingenden Setzen des \DDC-Logos im Kopf % der Seiten im Stil von \pgs{tudheadings}. % \begin{macrocode} \newcommand*\tud@ddc@head{0} \TUD@key{ddchead}[true]{% % \end{macrocode} % Der aktuelle Zustand des Schlüssels wird gesichert. Anschließend wird der % Schlüssel mit dem neuen Wert gesetzt. % \begin{macrocode} \if@tud@ddc@save\let\tud@ddc@save\tud@ddc@head\fi% \TUD@set@numkey{ddchead}{tud@ddc@head}{\tud@ddc@switch}{#1}% % \end{macrocode} % Sollte ein gültiger Wert für den Schlüssel übergeben worden sein, wird dieser % lokal auf den alten Wert gesetzt, um ggf. eine neue Seite zu erzeugen. % \begin{macrocode} \ifx\FamilyKeyState\FamilyKeyStateProcessed% \if@tud@ddc@save% \begingroup% \let\tud@ddc@head\tud@ddc@save% \tud@ifinpslist{\@nameuse{currentpagestyle}}{\clearpage}{}% \endgroup% \fi% % \end{macrocode} % Danach werden die sich ausschließenden Optionen deaktiviert, ohne eine % Sicherung der Werte vorzunehmen. % \begin{macrocode} \ifcase \tud@ddc@head\relax\else% \@tud@ddc@savefalse% \TUDoptions{ddc=false}% \TUDoptions{ddcfoot=false}% \@tud@ddc@savetrue% \fi% \fi% } % \end{macrocode} % \end{macro}^^A \tud@ddc@head % \begin{macro}{\tud@ddc@foot} % Die Option \opt{ddcfoot} dient zum zwingenden Setzen des \DDC-Logos im Fuß % der Seiten im Stil von \pgs{tudheadings}. Das Vorgehen beim Umschalten des % Schlüssels ist äquivalent zur Option \opt{ddchead} % \begin{macrocode} \newcommand*\tud@ddc@foot{0} \TUD@key{ddcfoot}[true]{% \if@tud@ddc@save\let\tud@ddc@save\tud@ddc@foot\fi% \TUD@set@numkey{ddcfoot}{tud@ddc@foot}{\tud@ddc@switch}{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed% \if@tud@ddc@save% \begingroup% \let\tud@ddc@foot\tud@ddc@save% \tud@ifinpslist{\@nameuse{currentpagestyle}}{\clearpage}{}% \endgroup% \fi% \ifcase \tud@ddc@foot\relax\else% \@tud@ddc@savefalse% \TUDoptions{ddc=false}% \TUDoptions{ddchead=false}% \@tud@ddc@savetrue% \fi% \fi% } % \end{macrocode} % \end{macro}^^A \tud@ddc@foot % \begin{macro}{\tud@ddc@check} % \changes{v2.02}{2014/06/23}{neu}%^^A % Dieses Hilfsmakro wird aufgerufen, wenn geprüft werden soll, welche % Einstellungen für Kopf und Fuß des Seitenstiles \pgs{tudheadings} zum Tragen % kommen sollen. Dabei wird insbesondere geprüft, ob die automatischen Auswahl % des \DDC-Logos aktiviert ist. Die jeweils gültige Auswahl für Kopf bzw. Fuß % wird in \cs{@tempa} bzw. \cs{@tempb} geschrieben und kann anschließend % ausgewertet werden. % \begin{macrocode} \newcommand*\tud@ddc@check{% \let\@tempa\tud@ddc@head% \let\@tempb\tud@ddc@foot% \if@tud@ddc@autoset% \ifx\tud@@headlogo\@empty% \let\@tempa\tud@ddc% \let\@tempb\z@% \else% \let\@tempa\z@% \let\@tempb\tud@ddc% \fi% \fi% } % \end{macrocode} % \end{macro}^^A \tud@ddc@check % \end{option}^^A ddcfoot % \end{option}^^A ddchead % \end{option}^^A ddc % \begin{macro}{\tud@ifinpslist} % \changes{v2.02}{2014/06/23}{neu}%^^A % \begin{macro}{\tud@pslist} % \changes{v2.02}{2014/06/23}{neu}%^^A % Mit dem Befehl \cs{tud@ifinpslist} wird geprüft, ob der übergebene % Seitenstil~-- was auch das Makro \cs{currentpagestyle} sein kann, welches % durch das Paket \pkg{scrlayer-scrpage} definiert wird und den aktuellen % Seitenstil beinhaltet~-- einem aus \cs{tud@pslist} entspricht. Ist dies der % Fall, wird das zweite Argument ausgeführt, sonst das dritte. % \begin{macrocode} \newcommand*\tud@ifinpslist[3]{\xifinlist{#1}{\tud@pslist}{#2}{#3}} \newcommand*\tud@pslist{} \forcsvlist{\listadd\tud@pslist}{% tudheadings,plain.tudheadings,empty.tudheadings% } % \end{macrocode} % \end{macro}^^A \tud@pslist % \end{macro}^^A \tud@ifinpslist % \begin{option}{widehead} % \begin{macro}{\if@tud@widehead} % \begin{macro}{\if@tud@widehead@locked} % Der Schalter dient zur Steuerung der Breite des Querbalkens im Kopf der % \env{tudpage}-Seite. Entweder der Querbalken liegt im Satzspiegel oder % aber über die komplette Papierbreite. % \begin{macrocode} \newif\if@tud@widehead \TUD@key@lock{widehead}[true]{% \TUD@set@ifkey@lock{widehead}{@tud@widehead}{#1}% } % \end{macrocode} % \end{macro}^^A \if@tud@widehead@locked % \end{macro}^^A \if@tud@widehead % \end{option}^^A widehead % % \iffalse % %<*class&body> % \fi % % \begin{macro}{\tud@mainlogo} % \changes{v2.02}{2014/08/04}{Dateinamen der TUD-Logos geändert}%^^A % \begin{macro}{\tud@@mainlogo} % Mit diesem Makro wird das Logo der TU~Dresden eingebunden. Bei der Verwendung % von pdf\LaTeX{} kann wird Farbe des Logos an die Kopffarbe angepasst. Wird % der klassische Weg über dvi gewählt, so muss abhängig von der gewählten % Kopffarbe das entsprechend gefärbte Logo eingebunden werden. % % \begin{macrocode} \newcommand*\tud@@mainlogo{} \newcommand*\tud@mainlogo{% % \end{macrocode} % Es soll sichergestellt werden, dass das bei der Verwendung von \pkg{typearea} % über den Satzspiegel in den Seitenrand hinausragende TUD-Logo nicht außerhalb % des Druckrandes liegt. Dies kann beispielsweise bei zweiseitigem Satz % und/oder einem zu großen \opt{DIV}-Wertes passieren. Es wird in diesem Fall % eine Warnung ausgegeben, damit das Problem durch den Anwender behoben werden % kann. % \begin{macrocode} \setlength{\@tempdima}{% \dimexpr\oddsidemargin+1in+\tud@dim@logox-\tud@dim@left\relax% }% \ifdim\@tempdima<\ta@bcor\relax\tud@mainlogo@wrn{\the\@tempdima}\fi% % \end{macrocode} % Es wird das Standardlogo festgelegt und dieses ggf. für eine andere Kopffarbe % geändert. % \begin{macrocode} \def\tud@@mainlogo{TUD-black}% \ifstr{\tud@head@color}{HKS41}{\def\tud@@mainlogo{TUD-blue}}{}% \ifstr{\tud@head@color}{cddarkblue}{\def\tud@@mainlogo{TUD-blue}}{}% \ifstr{\tud@head@color}{white}{\def\tud@@mainlogo{TUD-white}}{}% \global\let\tud@dim@line\tud@dim@thinline% \ifstr{\tud@head@color}{white}{\global\let\tud@dim@line\tud@dim@heavyline}{}% \color{\tud@head@color}% \includegraphics[width=\tud@dim@logowidth]{\tud@@mainlogo}% } % \end{macrocode} % \end{macro}^^A \tud@@mainlogo % \end{macro}^^A \tud@mainlogo % \begin{macro}{\headlogo} % \changes{v2.02}{2014/06/23}{Anpassung an automatische Wahl des \DDC-Logos}%^^A % \begin{macro}{\tud@headlogo} % \changes{v2.02}{2014/06/23}{neu, \cs{tud@head@logo} umbenannt}%^^A % \changes{v2.02}{2014/06/23}{von \cs{tud@ddc@sethead} wurde die Auswahl des % \DDC-Logos übernommen und erweitert}%^^A % \begin{macro}{\tud@@headlogo} % \changes{v2.02}{2014/06/23}{neu, \cs{tud@head@@logo} umbenannt}%^^A % \begin{macro}{\tud@@@headlogo} % \changes{v2.02}{2014/06/23}{Umbenennen des Befehls \cs{tud@head@@@logo}}%^^A % \begin{macro}{\tud@headlogo@wrn} % \changes{v2.02}{2014/06/23}{neu}%^^A % Diese Befehle dienen zum Einbinden eines Zweitlogos im Kopf bündig zum % rechten Seitenrand. Bei der Angabe des Logos mit % \cs{headlogo}\oarg{Optionsliste}\marg{Dateiname} wird der Dateiname in % \cs{tud@@headlogo} und das optionale Argument in \cs{tud@@@headlogo} % gespeichert, damit diese später über \cs{tud@headlogo} an den Befehl % \cs{includegraphics} weitergereicht werden können. % \begin{macrocode} \newcommand*\headlogo[2][]{% \tud@ifinpslist{\@nameuse{currentpagestyle}}{\clearpage}{}% \def\tud@@headlogo{#2}% \def\tud@@@headlogo{#1}% \if@atdocument\expandafter\pagestyle\expandafter{\currentpagestyle}\fi% } \newcommand*\tud@@headlogo{} \newcommand*\tud@@@headlogo{} \newcommand*\tud@headlogo{% \tud@ddc@check% \ifx\tud@@headlogo\@empty\else% \ifnum\@tempa>\z@\relax\tud@headlogo@wrn\fi% \fi% \ifcase \@tempa\relax\or% \def\tud@@headlogo{DDC-24}% \ifstr{\tud@head@color}{HKS41}{\def\tud@@headlogo{DDC-27}}{}% \ifstr{\tud@head@color}{cddarkblue}{\def\tud@@headlogo{DDC-27}}{}% \ifstr{\tud@head@color}{white}{\def\tud@@headlogo{DDC-30}}{}% \or% \def\tud@@headlogo{DDC-03}% \or% \def\tud@@headlogo{DDC-09}% \or% \def\tud@@headlogo{DDC-21}% \or% \def\tud@@headlogo{DDC-24}% \or% \def\tud@@headlogo{DDC-27}% \or% \def\tud@@headlogo{DDC-30}% \fi% \ifx\tud@@headlogo\@empty\else% \settoheight{\tud@dim@logoheight}{\tud@mainlogo}% \pretocmd{\tud@@@headlogo}{height=\tud@dim@logoheight,}% {}{\tud@patch@wrn{tud@@@headlogo}}% \expandafter\includegraphics\expandafter[\tud@@@headlogo]{\tud@@headlogo}% \fi% } \newcommand*\tud@headlogo@wrn{% \ClassWarning{\tudcls@name}{% The secondary logo given with `\string\headlogo' is\MessageBreak% overwritten with DDC logo. Maybe you should use\MessageBreak% `ddcfoot' or better `ddc' instead of `ddchead'% }% \global\let\tud@headlogo@wrn\relax% } % \end{macrocode} % \end{macro}^^A \tud@headlogo@wrn % \end{macro}^^A \tud@@@headlogo % \end{macro}^^A \tud@@headlogo % \end{macro}^^A \tud@headlogo % \end{macro}^^A \headlogo % \begin{macro}{\tud@ddc@sethead} % \changes{v2.02}{2014/06/23}{entfernt}%^^A % Dieser Befehl wurde mit der \TUDScript-Version~v2.02 entfernt. % \end{macro}^^A \tud@ddc@sethead % \begin{macro}{\tud@footlogo} % \changes{v2.02}{2014/06/23}{neu}%^^A % \begin{macro}{\tud@@footlogo} % \changes{v2.02}{2014/06/23}{neu, \cs{tud@foot@logo} umbenannt}%^^A % Diese Befehle dienen zum Einbinden des \DDC-Logos im Fuß der Seiten im Stil % \pgs{tudheadings}. % \begin{macrocode} \newcommand*\tud@@footlogo{} \newcommand*\tud@footlogo{% \tud@ddc@check% \ifcase \@tempb\relax\or% \def\tud@@footlogo{DDC-22}% \ifstr{\tud@head@color}{HKS41}{\def\tud@@footlogo{DDC-25}}{}% \ifstr{\tud@head@color}{cddarkblue}{\def\tud@@footlogo{DDC-25}}{}% \ifstr{\tud@head@color}{white}{\def\tud@@footlogo{DDC-28}}{}% \or% \def\tud@@footlogo{DDC-01}% \or% \def\tud@@footlogo{DDC-07}% \or% \def\tud@@footlogo{DDC-19}% \or% \def\tud@@footlogo{DDC-22}% \or% \def\tud@@footlogo{DDC-25}% \or% \def\tud@@footlogo{DDC-28}% \fi% \ifx\tud@@footlogo\@empty\else% \includegraphics[height=\tud@dim@ddcfoot]{\tud@@footlogo}% \fi% } % \end{macrocode} % \end{macro}^^A \tud@@footlogo % \end{macro}^^A \tud@footlogo % \begin{macro}{\tud@ddc@setfoot} % \changes{v2.02}{2014/06/23}{entfernt}%^^A % Dieser Befehl wurde mit der \TUDScript-Version~v2.02 entfernt. % \end{macro}^^A \tud@ddc@setfoot % % \iffalse % %<*class&option> % \fi % % \begin{option}{cdfoot} % \begin{macro}{\if@tud@cdfoot} % \begin{macro}{\tud@ps@store} % \changes{v2.02}{2014/06/23}{neu}%^^A % \begin{macro}{\tud@@ps@store} % \changes{v2.02}{2014/06/23}{neu}%^^A % \begin{macro}{\tud@ps@restore} % \changes{v2.02}{2014/06/23}{neu}%^^A % \begin{macro}{\tud@@ps@restore} % \changes{v2.02}{2014/06/23}{neu}%^^A % Dieser Seitenstil mit dem Kolumnentitel im Fuß wurde bereits für die alte % \cls{tudbook}-Klasse bereitgestellt und soll auch hier optional angeboten % werden. % \begin{macrocode} \newif\if@tud@cdfoot \TUD@key{cdfoot}[true]{% \TUD@set@ifkey{cdfoot}{@tud@cdfoot}{#1}% % \end{macrocode} % Die ursprünglichen Kopf- und Fußzeilen werden mit \cs{tud@ps@store} % gesichert, um gegebenenfalls zurückschalten zu können. Anschließend werden % diese mit dem neuen Stil überschrieben. % \begin{macrocode} \ifx\FamilyKeyState\FamilyKeyStateProcessed% \if@atdocument% \if@tud@cdfoot% \tud@ps@store{headings}% \tud@ps@store{plain}% \tud@font@koma@set{pageheadfoot}{\upshape}% \clearpairofpagestyles% \ofoot[\pagemark]{% \if@twoside\ifodd\value{page}\else\pagemark\quad\fi\fi% {\footnotesize\headmark}% \if@twoside\ifodd\value{page}\quad\pagemark\fi\else\quad\pagemark\fi% }% % \end{macrocode} % Die ursprünglichen Kopf- und Fußzeilen werden mit \cs{tud@ps@restore} % wiederhergestellt. % \begin{macrocode} \else% \tud@ps@restore{headings}% \tud@ps@restore{plain}% \tud@font@koma@unset{pageheadfoot}% \fi% \fi% \fi% } % \end{macrocode} % Die nächsten beiden Befehle dienen zum Sichern der Kopf- und Fußzeilen\dots % \begin{macrocode} \newcommand*\tud@ps@store[1]{% \tud@@ps@store{#1}{odd}{left}{head}{}% \tud@@ps@store{#1}{odd}{right}{head}{}% \tud@@ps@store{#1}{odd}{middle}{head}{}% \tud@@ps@store{#1}{even}{left}{head}{}% \tud@@ps@store{#1}{even}{right}{head}{}% \tud@@ps@store{#1}{even}{middle}{head}{}% \tud@@ps@store{#1}{odd}{left}{foot}{}% \tud@@ps@store{#1}{odd}{right}{foot}{}% \tud@@ps@store{#1}{odd}{middle}{foot}{}% \tud@@ps@store{#1}{even}{left}{foot}{}% \tud@@ps@store{#1}{even}{right}{foot}{}% \tud@@ps@store{#1}{even}{middle}{foot}{}% } % \end{macrocode} % \dots, wobei hierfür auf die internen Befehle von \pkg{scrlayer-scrpage} % zurückgegriffen werden muss. % \begin{macrocode} \newcommand*\tud@@ps@store[4]{% \ifcsdef{@@tud@ps@#1@#2@#3@#4}{}{% \csletcs{@@tud@ps@#1@#2@#3@#4}{sls@ps@\@nameuse{sls@current#1}@#2@#3@#4}% }% } \newcommand*\tud@ps@restore[1]{% \tud@@ps@restore{#1}{odd}{left}{head}{}% \tud@@ps@restore{#1}{odd}{right}{head}{}% \tud@@ps@restore{#1}{odd}{middle}{head}{}% \tud@@ps@restore{#1}{even}{left}{head}{}% \tud@@ps@restore{#1}{even}{right}{head}{}% \tud@@ps@restore{#1}{even}{middle}{head}{}% \tud@@ps@restore{#1}{odd}{left}{foot}{}% \tud@@ps@restore{#1}{odd}{right}{foot}{}% \tud@@ps@restore{#1}{odd}{middle}{foot}{}% \tud@@ps@restore{#1}{even}{left}{foot}{}% \tud@@ps@restore{#1}{even}{right}{foot}{}% \tud@@ps@restore{#1}{even}{middle}{foot}{}% } \newcommand*\tud@@ps@restore[4]{% \ifcsdef{@@tud@ps@#1@#2@#3@#4}{% \csletcs{sls@ps@\@nameuse{sls@current#1}@#2@#3@#4}{@@tud@ps@#1@#2@#3@#4}% \csundef{@@tud@ps@#1@#2@#3@#4}% }% } % \end{macrocode} % Damit die Einstellungen aus der Präambel übernommen werden, wird die Option % ggf. zu Beginn mit \cs{AtBeginDocument} aufgerufen. % \begin{macrocode} \AtBeginDocument{\if@tud@cdfoot\TUDoptions{cdfoot=true}\fi} % \end{macrocode} % \end{macro}^^A \tud@@ps@restore % \end{macro}^^A \tud@ps@restore % \end{macro}^^A \tud@@ps@store % \end{macro}^^A \tud@ps@store % \end{macro}^^A \if@tud@cdfoot % \end{option}^^A cdfoot % \begin{macro}{\tud@ps@headings} % \changes{v2.02}{2014/06/23}{entfernt}%^^A % \begin{macro}{\tud@ps@myheadings} % \changes{v2.02}{2014/06/23}{entfernt}%^^A % \begin{macro}{\tud@ps@plain} % \changes{v2.02}{2014/06/23}{entfernt}%^^A % Diese Befehle wurden bei der Umstellung auf das Paket~\pkg{scrlayer-scrpage} % mit der \TUDScript-Version~v2.02 allesamt entfernt. Die Funktionalität wird % seitdem durch die \pgs{tudheadings}-Seitenstile bereitgestellt. % \end{macro}^^A \tud@ps@plain % \end{macro}^^A \tud@ps@myheadings % \end{macro}^^A \tud@ps@headings % \begin{option}{geometry} % \begin{macro}{\tud@geometry} % \begin{macro}{\if@tud@geometry@locked} % Für das \CD sind standardmäßig feste Seitenränder vorgegeben. Diese sind % jedoch leider nur aus gestalterischen Motiven und ohne die Beachtung % typographischer Belange gewählt und festgelegt worden. Beispielweise ist ein % doppelseitiger Satz einer Abschlussarbeit im \CD nur mit einem grauenhaften % Satzspiegel möglich. Um dem Anwender einen gewissen Spielraum zu geben, wird % alternativ zum asymmetrischen (\opt{geomery=on}) ein symmetrischer % Satzspiegel bereitgestellt (\opt{geomery=normal}), welcher bei einseitigem % Satz zentriert ist und bei zweiseitigem Satz den inneren Rand kleiner setzt % als den äußeren. Des Weiteren kann die Satzspiegelberechnung auch direkt % durch \pkg{typearea} aus dem \KOMAScript"=Paket erfolgen % (\opt{geomery=no}). Mit \cs{tud@geometry@process} werden alle getroffenen % Satzspiegeloptionen umgesetzt und nachfolgend definiert. % \begin{macrocode} \newcommand*\tud@geometry{0} \TUD@key@lock{geometry}[true]{% \TUD@set@numkey@lock{geometry}{tud@geometry}{% \TUD@numkey@bool,% {typearea}{0},% {tud}{1},{asymmetric}{1},{cd}{1},% {symmetric}{2},{centred}{2},{centered}{2},% {twoside}{3},{balanced}{3}% }{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed% \if@atdocument\recalctypearea\fi% \fi% } % \end{macrocode} % \end{macro}^^A \if@tud@geometry@locked % \end{macro}^^A \tud@geometry % \end{option}^^A geometry % % \iffalse % %<*class&body> % \fi % % \begin{length}{\tud@ta@textheight} % \begin{length}{\tud@ta@topmargin} % \begin{length}{\tud@ta@headheight} % \begin{length}{\tud@ta@headsep} % \begin{length}{\tud@ta@footskip} % Diese Längen werden benötigt, um einen mit \pkg{typearea} berechneten % Satzspiegel an \pkg{geometry} weiterzureichen und die unterschiedlichen, vom % Satzspiegel abhängigen Seitenlayouts zu erstelen. % \begin{macrocode} \newlength{\tud@ta@textheight} \newlength{\tud@ta@topmargin} \newlength{\tud@ta@headheight} \newlength{\tud@ta@headsep} \newlength{\tud@ta@footskip} % \end{macrocode} % \end{length}^^A \tud@ta@footskip % \end{length}^^A \tud@ta@headsep % \end{length}^^A \tud@ta@headheight % \end{length}^^A \tud@ta@topmargin % \end{length}^^A \tud@ta@textheight % \begin{length}{\tud@ta@headdiff} % \begin{length}{\tud@ta@footdiff} % \changes{v2.02}{2014/06/23}{entfernt}%^^A % Eine Länge für den Ausgleich zwischen normalem und benötigtem Satzspiegel für % das spezielle Layout des \CDs. Die Differenz zwischen den unterschiedlichen % Kopfhöhen der Satzspiegelvarianten wird bei der Ausführung von % \cs{tud@geometry@process} berechnet und in \cs{tud@ta@headdiff} gespeichert. % Dabei muss unterschieden werden, ober der Satzspiegel genutzt wird, der durch % das \CD vorgegeben ist oder der durch \pkg{typearea} berechnete. Die Länge % \cs{tud@ta@footdiff} wurde mit der \TUDScript-Version~v2.02 entfernt. % \begin{macrocode} \newlength{\tud@ta@headdiff} % \end{macrocode} % \end{length}^^A \tud@ta@footdiff % \end{length}^^A \tud@ta@headdiff % \begin{macro}{\tud@geometry@restore} % \changes{v2.02}{2014/06/27}{neu}%^^A % Der Befehl \cs{AfterCalculatingTypearea} wird durch das Paket \pkg{typearea} % bereitgestellt. Die durch \pkg{typearea} berechneten Längenwerte für den % Satzspiegel werden zur Weiterverarbeitung gesichert. Für die Erstellung des % Satzspiegels wird das Paket \pkg{geometry} verwendet. Bei der entsprechenden % Option (\opt{geometry=no}) wird jedoch der von \pkg{typearea} berechnete % Satzspiegel an \pkg{geometry} weitergereicht. Somit wird es möglich, % unabhängig vom genutzten Paket\footnote{\pkg{typearea} oder \pkg{geometry}} % zur Festlegung des Satzspiegels, diesen innerhalb des Dokumentes zu ändern. % Damit auch Änderungen an der Papiergröße möglich sind, muss ein einzelnes % Makro (\cs{Gm@restore@org}) aus \pkg{geometry} temporär deaktiviert werden. % \begin{macrocode} \newcommand*\tud@geometry@restore{} \AfterCalculatingTypearea{% \setlength{\tud@ta@textheight}{\textheight}% \setlength{\tud@ta@topmargin}{\topmargin}% \setlength{\tud@ta@headheight}{\headheight}% \setlength{\tud@ta@headsep}{\headsep}% \setlength{\tud@ta@footskip}{\footskip}% \let\tud@geometry@restore\Gm@restore@org% \if@atdocument% \let\Gm@restore@org\relax% \tud@geometry@process% % \end{macrocode} % Damit Änderungen am Satzspiegel im Dokument sicher übernommen werden, wird % das Setzen des Satzspiegels forciert. Dafür wird \cs{tud@currentgeometry} % zurückgesetzt und anschließend der aktuelle Seitenstil erneut geladen, um das % erneute und korrekte Ausführen von \cs{tud@beforepagestyle} zu erzwingen. % \begin{macrocode} \gdef\tud@currentgeometry{}% \expandafter\pagestyle\expandafter{\currentpagestyle}% \fi% \let\Gm@restore@org\tud@geometry@restore% } % \end{macrocode} % \end{macro}^^A \tud@geometry@restore % \begin{macro}{\tud@geometry@hmargin} % \begin{macro}{\tud@geometry@vmargin} % \begin{macro}{\tud@geometry@pmargin} % \begin{macro}{\tud@geometry@dmargin} % Dies sind Hilfsmakros zur Definition unterschiedicher Seitenlayouts % (horizontale und vertikale Ränder). Es handelt sich dabei um die Definition % der horizontalen und vertikalen Seitenränder sowie die angepassten vertikalen % Einstellungen für die Seitenstilvarianten mit TUD-Kopf und/oder \DDC-Fuß. % Gesetzt werden diese in Abhängigkeit von der Option \opt{geometry} im % Makro \cs{tud@geometry@process} bzw. \cs{tud@geometry@@process}. % \begin{macrocode} \newcommand*\tud@geometry@hmargin{} \newcommand*\tud@geometry@vmargin{} \newcommand*\tud@geometry@pmargin{} \newcommand*\tud@geometry@dmargin{} % \end{macrocode} % \end{macro}^^A \tud@geometry@dmargin % \end{macro}^^A \tud@geometry@pmargin % \end{macro}^^A \tud@geometry@vmargin % \end{macro}^^A \tud@geometry@hmargin % \changes{v2.02}{2014/06/29}{Verzögertes Laden von \pkg{geometry}}%^^A % Das Paket \pkg{geometry} erlaubt eine genaue Vorgabe des Satzspiegels und % der Seitenränder, wie es vom \CD der TU~Dresden verlangt wird. Damit dieses % alle Satzspiegeleinstellungen korrekt vornimmt und auch alle Klassenoptionen % korrekt verarbeitet, wird das Laden mit \cs{AtEndPreamble} bis ans Ende der % Präambel verzögert und vorher der Satzspiegel neu berechnet. Anschließend % erstellt \cs{tud@geometry@process} alle benötigten Satzspiegel. Durch das % Setzen des Seitenstils wird der richtige Satzspiegel ausgewählt. Dies % geschieht \emph{nicht}, wenn die \cls{standalone}-Klasse mit der Option % \opt{crop} geladen wurde, um die Seitenränder nicht zu ändern. % \begin{macrocode} \AtEndPreamble{% \tud@ifsacrop{}{% \recalctypearea% \RequirePackage{geometry}[2010/09/12]% \tud@geometry@process% \expandafter\pagestyle\expandafter{\currentpagestyle}% }% } % \end{macrocode} % \begin{macro}{\tud@geometry@process} % \changes{v2.02}{2014/06/23}{diverse Anpassungen an \pkg{scrlayer-scrpage}}%^^A % \begin{macro}{\tud@geometry@@process} % Das Makro \cs{tud@geometry@process} setzt die Option für den gewünschten % Satzspiegel um, sowohl für die Seitenränder als auch zur Einberechnung der % Kopf- und/oder Fußzeile. Um mehrere Satzspiegel verwenden zu können~-- was % für die unterschiedlichen Höhen für Kopf- und Fußzeile nötig ist~-- wird das % Paket \pkg{geometry} verwendet. Soll \pkg{typearea} zur Satzspiegelerstellung % genutzt werden, so werden die damit berechneten Werte an \pkg{geometry} % weitergereicht. % Es werden drei Layouts erstellt: normaler Satzspiegel, nur TUD-Kopf sowie % TUD-Kopf und "~Fuß und mit \cs{savegeometry}\marg{Stil} gesichert. Damit kann % innerhalb des Dokumentes mit dem Befehl \cs{loadgeometry}\marg{Stil} oberer % sowie ggf. untere Seitenrand geändert werden. % \begin{macrocode} \newcommand*\tud@geometry@process{% % \end{macrocode} % Die Maßvorgaben werden entsprechend der Seitengröße gesetzt. % \begin{macrocode} \tud@geometry@set% % \end{macrocode} % Für den Fall, dass \pkg{typearea} die Satzspiegelberechnung übernimmt, werden % die Ergebnisse aus der Berechnung direkt an \pkg{geometry} weitergereicht. % Dazu werden die berechneten Werte in die entsprechenden Hilfsmakros % für die Erstellung der \pkg{geometry}-Satzspiegel übergeben. % \begin{macrocode} \ifcase \tud@geometry\relax% \def\tud@geometry@hmargin{% left=\dimexpr\oddsidemargin+1in\relax,% width=\textwidth,% }% \def\tud@geometry@vmargin{% top={% \dimexpr\tud@ta@topmargin+\tud@ta@headheight+\tud@ta@headsep+1in\relax% },% headheight=\tud@ta@headheight,% headsep=\tud@ta@headsep,% textheight=\tud@ta@textheight,% footskip=\tud@ta@footskip,% }% \def\tud@geometry@pmargin{% top={% \dimexpr\tud@dim@headheight+\tud@dim@barheight+\tud@dim@headsep\relax% },% headheight=\dimexpr\tud@dim@headheight+\tud@dim@barheight\relax,% headsep=\tud@dim@headsep,% textheight=\dimexpr\tud@ta@textheight-\tud@ta@headdiff\relax,% footskip=\tud@ta@footskip,% }% \def\tud@geometry@dmargin{% textheight={% \dimexpr\tud@ta@textheight-\tud@ta@headdiff-\tud@dim@ddcdiff\relax% },% footskip=\dimexpr\tud@ta@footskip+\tud@dim@ddcdiff\relax,% }% % \end{macrocode} % Es wird die Differenz der Höhen zwischen TUD-Kopf und Standardkopfzeile % für den \pkg{typearea}-Satzspiegel berechnet. % \begin{macrocode} \setlength{\tud@ta@headdiff}{\dimexpr% \tud@dim@headheight+\tud@dim@barheight+\tud@dim@headsep% -\tud@ta@topmargin-\tud@ta@headheight-\tud@ta@headsep-1in\relax% }% \setlength{\tud@dim@ddcdiff}{\dimexpr% \tud@dim@ddcfoot-\tud@ta@footskip+\tud@dim@footskip\relax% }% % \end{macrocode} % Sollte der \pkg{typearea}-Satzspiegel noch unterhalb des TUD-Kopfes liegen, % wird der Abstand zum Kopf vergrößert. % \begin{macrocode} \ifdim\tud@ta@headdiff<\z@\relax% \addtolength{\tud@dim@headsep}{-\tud@ta@headdiff}% \fi% % \end{macrocode} % Hier erfolgt die Definition der Hilfsmakros für das CD-konforme asymmetrische % bzw. an das \CD angelehnte Layout für einseitigen und zweiseitigen Satz. % Zuerst werden die verschiedenen unterschiedlichen horizontalen Ränder für die % unterschiedlichen Optionen definiert. Danach kommt der Gleichanteil. % \begin{macrocode} \else% \ifcase \tud@geometry\or% \def\tud@geometry@hmargin{% left=\tud@dim@left,% textwidth=\dimexpr\paperwidth-\tud@dim@both-\ta@bcor\relax,% bindingoffset=\ta@bcor,% \if@twoside asymmetric,\fi% }% % \end{macrocode} % Die zweite Variante ist eigentlich nicht konform mit dem \CD. Sie ist sowohl % im einseitigen als auch im zweiseitgigen Satz symmetrisch. % \begin{macrocode} \or% \def\tud@geometry@hmargin{% left=.5\tud@dim@both,% textwidth=\dimexpr\paperwidth-\tud@dim@both-\ta@bcor\relax,% bindingoffset=\ta@bcor,% }% % \end{macrocode} % Eigentlich ist auch die dritte Variante nach dem \CD nicht zulässig. Sie ist % im einseitigen Satz symmetrisch, im zweiseitgigen Satz wird die innere Seite % schmaler gesetzt als die äußere, wobei hier auf das in den Seitenrand ragende % TUD-Logo geachtet werden muss. % \begin{macrocode} \or% \def\tud@geometry@hmargin{% \if@twoside% left=.4\tud@dim@both,% twoside,% \else% left=.5\tud@dim@both,% \fi% textwidth=\dimexpr\paperwidth-\tud@dim@both-\ta@bcor\relax,% bindingoffset=\ta@bcor,% }% \fi% % \end{macrocode} % Für alle drei Varianten der vertikale Gleichanteil. % \begin{macrocode} \def\tud@geometry@vmargin{% top=\tud@dim@top,% headheight=\tud@ta@headheight,% headsep=\tud@dim@headsep,% bottom=\tud@dim@bottom,% footskip=\tud@dim@footskip,% \tud@geometry@hincl,% \tud@geometry@fincl,% }% \def\tud@geometry@pmargin{% top={% \dimexpr\tud@dim@headheight+\tud@dim@barheight+\tud@dim@headsep\relax% },% headheight=\dimexpr\tud@dim@headheight+\tud@dim@barheight\relax,% headsep=\tud@dim@headsep,% bottom=\tud@dim@bottom,% footskip=\tud@dim@footskip,% }% % \end{macrocode} % Wird die Fußzeile zum Satzspiegel gerechnet, ist für Seiten mit \DDC-Fuß % etwas Handarbeit notwendig, damit dieser nicht allzu weit nach oben ragt. % \begin{macrocode} \def\tud@geometry@dmargin{% \if@fincl% bottom=\dimexpr% \tud@dim@bottom+\tud@dim@ddcfoot+\tud@dim@footskip\relax,% \else% bottom=\dimexpr\tud@dim@bottom+\tud@dim@ddcfoot\relax,% \fi% footskip=\dimexpr\tud@dim@footskip+\tud@dim@ddcfoot\relax,% }% % \end{macrocode} % Es wird die Differenz der Höhen zwischen TUD-Kopf und Standardkopfzeile % für den Satzspiegel des \CDs berechnet. % \begin{macrocode} \setlength{\tud@ta@headdiff}{% \dimexpr\tud@dim@headheight+\tud@dim@barheight% +\tud@dim@headsep-\tud@dim@top\relax% }% \setlength{\tud@dim@ddcdiff}{\dimexpr% \tud@dim@ddcfoot+2\tud@dim@footskip-\tud@dim@bottom\relax% }% \fi% % \end{macrocode} % Es wird die Differenz der Höhen zwischen TUD-Kopf und Standardkopfzeile % für den Satzspiegel des \CDs berechnet. Außerdem wird die standardmäßige % vertikale Verschiebung der Überschriften festgelegt. % \begin{macrocode} \ifdim\tud@ta@headdiff<\z@\relax\setlength{\tud@ta@headdiff}{\z@}\fi% \global\tud@ta@headdiff=\tud@ta@headdiff% \ifdim\tud@dim@ddcdiff<\z@\relax\setlength{\tud@dim@ddcdiff}{\z@}\fi% \global\tud@dim@ddcdiff=\tud@dim@ddcdiff% \setlength{\tud@dim@headingsvskip}{.6\tud@dim@headheight}% \global\tud@dim@headingsvskip=\tud@dim@headingsvskip% % \end{macrocode} % Es wird \cs{tud@geometry@@process} aufgerufen, was die zuvor definierten % Hilfsmakros nutzt, um alle benötigten Seitenlayouts optionsabhängig zu % erstellen. % \begin{macrocode} \tud@geometry@@process% } % \end{macrocode} % Der Befehl \cs{tud@geometry@@process} setzt mit den zuvor definierten % Hilfsmakros die \pkg{geometry}"=Optionen für sowohl die seitlichen als auch % die oberen sowie unteren Seitenränder und inkludiert ggf. Kopf- und Fußzeile % in den Satzspiegel. Die unterschiedlichen Layouts sind dabei \opt{tudddc} für % TUD-Kopf und \DDC-Fuß, \opt{tudpage} für den alleinigen TUD-Kopf sowie % \opt{tudarea} für den normalen bzw. mit \pkg{typearea} berechneten % Satzspiegel. % \begin{macrocode} \newcommand*\tud@geometry@@process{% % \end{macrocode} % Als erstes wird der Satzspiegel für TUD-Kopf und \DDC-Fuß erstellt. Das % Einbeziehen der Fußzeile in den Satzspiegel erfolgt ggf. manuell bei der % Definition von \cs{tud@geometry@dmargin}. % \begin{macrocode} \edef\@tempa{% \tud@geometry@hmargin,% \tud@geometry@pmargin,% \tud@geometry@dmargin,% ignorehead,ignorefoot,% }% \expandafter\newgeometry\expandafter{\@tempa}% \savegeometry{tudareaddc}% % \end{macrocode} % Danach folgt der Seitenstil, welcher zwar den TUD-Kopf aber lediglich die % Standardfußzeile hat. % \begin{macrocode} \edef\@tempa{% \tud@geometry@hmargin,% \tud@geometry@pmargin,% ignorehead,% \tud@geometry@fincl% }% \expandafter\newgeometry\expandafter{\@tempa}% \savegeometry{tudarea}% % \end{macrocode} % Der Standardsatzspiegel wird erstellt. % \begin{macrocode} \edef\@tempa{% \tud@geometry@hmargin,% \tud@geometry@vmargin,% }% \expandafter\newgeometry\expandafter{\@tempa}% \savegeometry{typearea}% } % \end{macrocode} % \end{macro}^^A \tud@geometry@@process % \end{macro}^^A \tud@geometry@process % \begin{macro}{\tud@geometry@hincl} % \changes{v2.02}{2014/06/23}{diverse Anpassungen an \pkg{scrlayer-scrpage}}%^^A % \begin{macro}{\tud@geometry@fincl} % Diese beiden Hilfsmakro werten die Optionen für das Einbeziehen von Kopf- und % Fußzeile aus. % \begin{macrocode} \newcommand*\tud@geometry@hincl{% \if@hincl% includehead,% \else% ignorehead,% \fi% } \newcommand*\tud@geometry@fincl{% \if@fincl% includefoot,% \else% ignorefoot,% \fi% } % \end{macrocode} % \end{macro}^^A \tud@geometry@fincl % \end{macro}^^A \tud@geometry@hincl % \begin{environment}{tudpage} % \changes{v2.02}{2014/06/23}{an Paket \pkg{scrlayer-scrpage} angepasst}%^^A % \begin{macro}{\tud@ps} % \begin{macro}{\tud@ps@select} % \changes{v2.02}{2014/07/19}{neu}%^^A % \begin{macro}{\tud@currentpagestyle} % \begin{macro}{\tud@currentpagestyle@set} % \changes{v2.02}{2014/07/18}{neu}%^^A % \begin{macro}{\tud@currentpagestyle@reset} % \changes{v2.02}{2014/07/18}{neu}%^^A % Durch den hohen TUD-Kopf muss bei der Verwendung dessens das Seitenlayout % temporär umgeschaltet werden, um die Höhe des Satzspiegels zu verringern. % Dies geschieht innerhalb dieser Umgebung reversibel mit \cs{pagestyle}. % Dabei wird mit \cs{loadgeometry} ein Seitenumbruch erzwungen und der % benötigte Satzspiegel geladen. % % Die Befehle \cs{tud@currentpagestyle@set} und % \cs{tud@currentpagestyle@reset} sind für die Sicherung und Wiederherstellung % des vor der Umgebung geladenen Seitenstils verantwortlich. % % Zu Beginn der Umgebung werden die weiter unten beschriebenen Optionen für % diese Umgebung mit \cs{TUD@parameter@set} ausgeführt. Nach dem Beenden der % Umgebung wird nache einem weiteren Seitenumbruch das Standardseitenlayout % wiederhergestellt. Die gewünschte Sprache der Umgebung kann als einzelner % Wert ohne Schlüssel angegben werden. % \begin{macrocode} \newcommand*\tud@ps{tudheadings} \newcommand*\tud@ps@select{% \expandafter\pagestyle\expandafter{\tud@ps}% %<*book|report> \ifstr{\tud@ps}{empty}{\renewcommand*\chapterpagestyle{empty}}{}% \ifstr{\tud@ps}{empty.tudheadings}{% \renewcommand*\chapterpagestyle{empty.tudheadings}% }{}% % } \newcommand*\tud@currentpagestyle{} \newcommand*\tud@currentpagestyle@set{% \ifdefvoid{\tud@currentpagestyle}{% \xdef\tud@currentpagestyle{\currentpagestyle}% }{}% } \newcommand*\tud@currentpagestyle@reset{% \expandafter\pagestyle\expandafter{\tud@currentpagestyle}% \let\tud@currentpagestyle\relax% } \NewEnviron{tudpage}[1][]{% % \end{macrocode} % Um beim Umschalten des Seitenstils den aktuellen selbst zu behalten, wird % dieser im Hilfsmakro \cs{tud@currentpagestyle} gespeichert. % \begin{macrocode} \tud@currentpagestyle@set% \clearpage\def\tud@ps{tudheadings}% \TUD@parameter@set[tudpage]{#1}% \tud@ps@select% \tud@multicols@check% % \end{macrocode} % Falls das \pkg{multicol}-Paket geladen ist und eine Spaltenanzahl angegeben % ist, wird die entsprechende Umgebung gesartet, mit \cs{BODY} der Inhalt der % \env{tudpage}-Umgebung ausgegeben und anschließend gegebenenfalls die % \env{multicols}-Umgebung beendet. % \begin{macrocode} \ifnum\tud@multicols>1\relax% \begin{multicols}{\tud@multicols}% \fi% \BODY% \ifnum\tud@multicols>1\relax% \end{multicols}% \fi% % \end{macrocode} % Am Ende der Umgebung wird der vorhergehende Seitenstil zurückgesetzt und der % dazugehörige Satzspiegel geladen. Dazu wird die Ausführung das Hilfsmakro % \cs{@tempa} auf das Beenden der Umgebung mit \cs{aftergroup} verzögert. % \begin{macrocode} }[% \aftergroup\tud@currentpagestyle@reset% \clearpage% ] % \end{macrocode} % \end{macro}^^A \tud@currentpagestyle@reset % \end{macro}^^A \tud@currentpagestyle@set % \end{macro}^^A \tud@currentpagestyle % \end{macro}^^A \tud@ps@select % \end{macro}^^A \tud@ps % \end{environment}^^A tudpage % Im Folgenden werden die einzelnen Parameter für die \env{tudpage}"=Umgebung % definiert. Mit \cs{TUD@parameter}\marg{Family}\marg{\dots} wird die % Parameterfamilie festgelegt und anschließend die Definitionen getätigt. % \begin{macrocode} \TUD@parameter{tudpage}{% % \end{macrocode} % \begin{parameter}{language} % Mit diesem Parameter kann die Sprache in der Umgebung umgeschaltet werden. Die % Sprache kann auch ohne den entsprechenden Schlüssel direkt als Parameter % angegeben werden. % \begin{macrocode} \TUD@parameter@define{language}{\selectlanguage{#1}}% % \end{macrocode} % \end{parameter} ^^A language % \begin{parameter}{columns} % Hiermit kann die Anzahl der Spalten für die Umgebung angegeben werden. Für % mehr als zwei Spalten muss das Paket \pkg{multicols} geladen werden. Die % Spaltenanzahl kann auch ohne den entsprechenden Schlüssel direkt Parameter % angegeben werden. % \begin{macrocode} \TUD@parameter@define{columns}{\def\tud@multicols{#1}}% % \end{macrocode} % \end{parameter} ^^A columns % \begin{parameter}{color} % \begin{parameter}{colour} % Die \opt{color}"=Option ändert die Farbe von Schrift, Querbalken und im % pdf\LaTeX-Modus auch die des TUD-Logos. % \begin{macrocode} \TUD@parameter@define{color}[HKS41]{\def\tud@head@color{#1}}% \TUD@parameter@let{colour}{color}% % \end{macrocode} % \end{parameter}^^A colour % \end{parameter}^^A color % \begin{parameter}{widehead} % Die Breite des Querbalkens kann ebenfalls geändert werden. % \begin{macrocode} \TUD@parameter@define{widehead}[true]{\TUDoption{widehead}{#1}}% % \end{macrocode} % \end{parameter}^^A widehead % \begin{parameter}{ddc} % \changes{v2.02}{2014/08/16}{neu}%^^A % \begin{parameter}{ddchead} % \begin{parameter}{ddcfoot} % Mit diesen Parametern kann das \DDC-Logo im Kopf bzw. Fuß eingeblendet werden. % \begin{macrocode} \TUD@parameter@define{ddc}[true]{\TUDoption{ddc}{#1}}% \TUD@parameter@define{ddchead}[true]{\TUDoption{ddchead}{#1}}% \TUD@parameter@define{ddcfoot}[true]{\TUDoption{ddcfoot}{#1}}% % \end{macrocode} % \end{parameter}^^A ddc % \end{parameter}^^A ddchead % \end{parameter}^^A ddcfoot % \begin{parameter}{head} % \changes{v2.02}{2014/06/30}{entfernt, Funktionalität teilweise durch Option % \opt{ddchead} übernommen}%^^A % \begin{parameter}{foot} % \changes{v2.02}{2014/06/30}{entfernt, Funktinalität teilweise durch Option % \opt{ddcfoot} übernommen}%^^A % Diese Parameter wurden entfernt. Innerhalb der Umgebung können hierfür % \cs{TUDoptions} mit den Schlüsseln \opt{ddchead=\dots} und \opt{ddcfoot=\dots} % sowie \cs{headlogo} bzw. für den Querbalken \opt{widehead=true/false} genutzt % werden. % \end{parameter}^^A head % \end{parameter}^^A foot % \begin{parameter}{cdfont} % \begin{parameter}{cdfonts} % \changes{v2.02}{2014/08/08}{entfernt}^^A % \begin{parameter}{tudfonts} % \changes{v2.02}{2014/08/08}{entfernt}^^A % Die Option \opt{cdfont} bzw. \opt{cdfonts} bestimmt, ob die Schriften des % \CDs{} oder aber die standarmäßigen Serifenlosen für die Auszeichnugen in der % Kopfzeile und Serifen im Inhalt verwendet werden. % \begin{macrocode} \TUD@parameter@define{cdfont}[true]{\TUDoption{cdfont}{#1}}% % \end{macrocode} % \end{parameter}^^A tudfonts % \end{parameter}^^A cdfonts % \end{parameter}^^A cdfont % \begin{parameter}{barfont} % \changes{v2.02}{2014/07/08}{neu}%^^A % Mit der Option \opt{headfont} kann die Verwendung der Schriften des \CDs % aktiviert werden, wenn diese im Fließtext nicht zum Einsatz kommen. % \begin{macrocode} \TUD@parameter@define{barfont}[true]{\TUDoption{barfont}{#1}}% % \end{macrocode} % \end{parameter}^^A headfont % \begin{parameter}{pagestyle} % \changes{v2.02}{2014/06/23}{neu}%^^A % Mit diesem Parameter kann der verwendete Seitenstil eingestellt werden, wobei % entweder \pgs{tudheadings} oder aber\pgs{plain.tudheadings} bzw. % \pgs{empty.tudheadings} verwendet wird. % \begin{macrocode} \TUD@parameter@define{pagestyle}{% \ifstr{#1}{empty}{\renewcommand*\tud@ps{empty.tudheadings}}{% \ifstr{#1}{empty.tudheadings}{\renewcommand*\tud@ps{empty.tudheadings}}{% \ifstr{#1}{plain}{\renewcommand*\tud@ps{plain.tudheadings}}{% \ifstr{#1}{plain.tudheadings}{\renewcommand*\tud@ps{plain.tudheadings}}{% \ifstr{#1}{headings}{\renewcommand*\tud@ps{tudheadings}}{% \ifstr{#1}{tudheadings}{\renewcommand*\tud@ps{tudheadings}}{% \TUD@parameter@wrn{pagestyle}{% headings, plain, empty or any tudheadings page style type% }% }}}}}}% }% % \end{macrocode} % \end{parameter}^^A pagestyle % \begin{parameter}{headlogo} % \begin{parameter}{logo} % Das sekundäre Logo kann ebenfalls lokal geändert werden. % \begin{macrocode} \TUD@parameter@define{headlogo}{\headlogo{#1}}% \TUD@parameter@let{logo}{headlogo}% % \end{macrocode} % \end{parameter}^^A logo % \end{parameter}^^A headlogo % Für den Fall, dass ein Wert nicht in der Schlüssel"=Wert"=Notation gegeben % wird, erfolgt eine Sonderbehandlung durch \cs{tud@environmenthandler}, bei der % erst auf eine Zahl geprüft wird und anschießend versucht wird, das Argument % als Sprache zu setzen. Nach der Definition aller Parameter wird der Befehl % \cs{TUD@parameter} und damit auch die aktuelle Parameterfamilie beendet. % \begin{macrocode} \TUD@parameter@sethandler{\tud@environmenthandler{#1}}% } % \end{macrocode} % % \iffalse % % \fi % % \Finale % \endinput