From 586aedcf63ecf6ea7da1c1529e5ea5ba8f5cb426 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 2 Jul 2015 22:12:17 +0000 Subject: tudscr (2jul15) git-svn-id: svn://tug.org/texlive/trunk@37736 c570f23f-e606-0410-a88d-b1316a301751 --- .../source/latex/tudscr/tudscr-pagestyle.dtx | 3549 ++++++++++++-------- 1 file changed, 2187 insertions(+), 1362 deletions(-) (limited to 'Master/texmf-dist/source/latex/tudscr/tudscr-pagestyle.dtx') diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-pagestyle.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-pagestyle.dtx index 311650d066a..320b698ef83 100644 --- a/Master/texmf-dist/source/latex/tudscr/tudscr-pagestyle.dtx +++ b/Master/texmf-dist/source/latex/tudscr/tudscr-pagestyle.dtx @@ -1,4 +1,4 @@ -% \CheckSum{1954} +% \CheckSum{2473} % \iffalse meta-comment % % ============================================================================ @@ -51,7 +51,7 @@ %<*driver> \ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi \ProvidesFile{tudscr-pagestyle.dtx}[% - 2015/02/15 v2.03 TUD-KOMA-Script (pagestyle)% + 2015/06/18 v2.04 TUD-KOMA-Script (pagestyle)% ] \RequirePackage[ngerman=ngerman-x-latest]{hyphsubst} \documentclass[english,ngerman]{tudscrdoc} @@ -72,8 +72,8 @@ % % \selectlanguage{ngerman} % -% \changes{v2.02}{2014/06/23}{Unterstützung für \pkg{titlepage} entfernt}%^^A -% \changes{v2.02}{2014/07/08}{Optionen nutzen \cs{FamilyKeyState}}%^^A +% \changes{v2.02}{2014/06/23}{Unterstützung für \pkg{titlepage} entfernt}^^A +% \changes{v2.02}{2014/07/08}{Optionen nutzen \cs{FamilyKeyState}}^^A % % \section{Der Seitenstil des \CDs} % @@ -116,11 +116,11 @@ % \end{length}^^A \tud@dim@slimmargin % \end{length}^^A \tud@dim@widemargin % \begin{length}{\tud@dim@top} -% \changes{v2.02}{2015/01/09}{entfernt}%^^A +% \changes{v2.02}{2015/01/09}{entfernt}^^A % \begin{length}{\tud@dim@bottom} -% \changes{v2.02}{2015/01/09}{entfernt}%^^A +% \changes{v2.02}{2015/01/09}{entfernt}^^A % \begin{length}{\tud@dim@footskip} -% \changes{v2.02}{2015/01/09}{entfernt}%^^A +% \changes{v2.02}{2015/01/09}{entfernt}^^A % Die Befehle wurden mit der \TUDScript-Version~v2.03 allesamt entfernt, da % diese redundant waren und implizit durch andere, bereits für das \CD % definierte Längen dargestellt werden können. @@ -148,7 +148,7 @@ % \begin{length}{\tud@dim@logoy} % \begin{length}{\tud@dim@logowidth} % \begin{length}{\tud@dim@logoheight} -% \changes{v2.03}{2015/01/13}{entfernt}%^^A +% \changes{v2.03}{2015/01/13}{entfernt}^^A % 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 @@ -164,7 +164,7 @@ % \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 +% \changes{v2.02}{2014/06/23}{neu}^^A % \begin{length}{\tud@dim@heavyline} % \begin{length}{\tud@dim@thinline} % Die Linienstärke der Outline im Kopf ist für ein monochromes Layout schmaler @@ -183,7 +183,7 @@ % \end{length}^^A \tud@dim@line % \begin{length}{\tud@dim@headdiff} % \begin{length}{\tud@dim@headingsvskip} -% \changes{v2.02}{2014/06/23}{neu}%^^A +% \changes{v2.02}{2014/06/23}{neu}^^A % Die Längen für den vertikalen Standardversatz der Überschriften sowie die % Differenz der Kopfhöhen von normalem Satzspiegel und dem mit dem TUD-Kopf. % \begin{macrocode} @@ -193,18 +193,18 @@ % \end{length}^^A \tud@dim@headdiff % \end{length}^^A \tud@dim@headingsvskip % \begin{length}{\tud@dim@ddcdiff} -% \changes{v2.02}{2014/06/23}{neu}%^^A +% \changes{v2.02}{2014/06/23}{neu}^^A % Zu guter Letzt noch die Länge \cs{tud@dim@ddcdiff} für den Höhenausgleich des % Seitenfußes, welcher bei der Verwendung des \DDC-Logos in der Fußzeile bei % Version~v2.02 für den Satzspiegel notwendig war. Dieser etwas verschrobene % Satzspiegel wird im Kompatibilitätsmodus weiterhin angeboten. % \begin{macrocode} -\iftudscrverlower{2.03}{\newlength\tud@dim@ddcdiff}{} +\tud@ifverlower{2.03}{\newlength\tud@dim@ddcdiff}{} % \end{macrocode} % \end{length}^^A \tud@dim@ddcdiff % \begin{macro}{\tud@geometry@set} % \changes{v2.03}{2015/01/23}{Längenberechnung für den Satzspiegel an -% Referenzlänge \cs{tud@dim@widemargin} gekoppelt}%^^A +% Referenzlänge \cs{tud@dim@widemargin} gekoppelt}^^A % \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 @@ -268,7 +268,7 @@ % % \subsection{Unterstützung der \cls{standalone}-Klasse} % -% \changes{v2.02}{2014/07/25}{Unterstützung der \cls{standalone}-Klasse}%^^A +% \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 @@ -276,15 +276,15 @@ % der Verwendung mit den \TUDScript-Klassen nicht in die Quere kommen, müssen % für einige Einstellungen unterdrückt werden. % -% \begin{macro}{\ifstandalonecrop} -% \changes{v2.02}{2014/09/08}{neu}%^^A +% \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*\ifstandalonecrop{% +\newcommand*\tud@ifsacrop{% \ifcsdef{ifsa@crop}{% \ifbool{sa@crop}{\@firstoftwo}{\@secondoftwo}% }{% @@ -292,33 +292,7 @@ }% } % \end{macrocode} -% \end{macro}^^A \ifstandalonecrop -% -% 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{% - \ifstandalonecrop{% - \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=\maxdimen% - }{}% -} -% \end{macrocode} +% \end{macro}^^A \tud@ifsacrop % % \subsection{Definition des Seitenstils mittels \pkg{scrlayer-scrpage}} % @@ -330,12 +304,92 @@ % entweder direkt über die Wahl des Seitenstils oder aber mit der % \env{tudpage}"=Umgebung nutzen. % +% Ist die Klasse \cls{standalone} zusammen mit der Option \opt{crop} aktiv, +% werden die Seitenränder auf die Einstellungen dieser Klasse gesetzt und das +% Laden von \pkg{scrlayer-scrpage} verhindert. +% \begin{macrocode} +\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=\maxdimen% +}{% + \AtEndPreamble{\RequirePackage{scrlayer-scrpage}[2013/12/14]}% +} +% \end{macrocode} +% \begin{macro}{\ps@tudheadings} +% \begin{macro}{\ps@plain.tudheadings} +% \begin{macro}{\ps@empty.tudheadings} +% \begin{macro}{\currentpagestyle} +% \begin{macro}{\BeforeSelectAnyPageStyle} +% \begin{macro}{\GetRealPageStyle} +% Um die rudimentäre Verwendung der Klassen auch zu ermöglichen, wenn das Paket +% \pkg{scrlayer-scrpage} nicht geladen wurde, werden einige notwendige Makros +% definiert und vor dem Laden des Paketes wieder als \cs{undefined} gesetzt. +% \begin{macrocode} +\tud@cmd@store{pagestyle} +\cslet{ps@tudheadings}{\ps@headings}% +\cslet{ps@plain.tudheadings}{\ps@plain}% +\cslet{ps@empty.tudheadings}{\ps@empty}% +\providecommand*\currentpagestyle{plain} +\providecommand*\BeforeSelectAnyPageStyle[1]{} +\providecommand*\GetRealPageStyle[1]{#1} +\BeforePackage{scrlayer-scrpage}{% + \tud@cmd@restore{pagestyle}% + \csundef{ps@tudheadings}% + \csundef{ps@plain.tudheadings}% + \csundef{ps@empty.tudheadings}% + \undef\currentpagestyle% + \undef\BeforeSelectAnyPageStyle% + \undef\GetRealPageStyle% +} +% \end{macrocode} +% +% \changes{v2.03}{2015/06/18}{Auswahl der Seitenstile \pgs{tudheadings} vor +% möglich \pkg{scrlayer-scrpage}}^^A +% +% Damit die neuen Seitenstile auch vor dem Laden von \pkg{scrlayer-scrpage} +% bereits durch den Anwender ausgewählt werden können, wird \cs{pagestyle} +% temporär zurechtgebogen. Die Definition des Makros wird gesichert und direkt +% vor dem Laden des Paketes~-- oder ggf. spätestens am Ende der Präambel etwas +% angepasst~-- wiederhergestellt. Die Redefinition führt zum Ausführen des +% Seitenstils erst nachdem diese auch tatsächlich erstellt wurden. +% \begin{macrocode} +\let\tud@pagestyle\pagestyle +\apptocmd{\tud@pagestyle}{% + \edef\currentpagestyle{#1}% +}{}{\tud@patch@wrn{pagestyle}}% +\renewcommand*\pagestyle[1]{\AfterPackage!{scrlayer-scrpage}{\pagestyle{#1}}} +\AtEndPreamble{% + \@ifpackageloaded{scrlayer-scrpage}{}{% + \let\pagestyle\tud@pagestyle% + \undef\tud@pagestyle% + }% +} +% \end{macrocode} +% \end{macro}^^A \GetRealPageStyle +% \end{macro}^^A \BeforeSelectAnyPageStyle +% \end{macro}^^A \currentpagestyle +% \end{macro}^^A \ps@empty.tudheadings +% \end{macro}^^A \ps@plain.tudheadings +% \end{macro}^^A \ps@tudheadings % \begin{pagestyle}{tudheadings} -% \changes{v2.02}{2014/06/23}{neu}%^^A +% \changes{v2.02}{2014/06/23}{neu}^^A % \begin{pagestyle}{plain.tudheadings} -% \changes{v2.02}{2014/06/23}{neu}%^^A +% \changes{v2.02}{2014/06/23}{neu}^^A % \begin{pagestyle}{empty.tudheadings} -% \changes{v2.02}{2014/06/23}{neu}%^^A +% \changes{v2.02}{2014/06/23}{neu}^^A % Es wird ein neuer Seitenstil kreiert, der das \CD der \TnUD mit der % prägenden Kopfzeile umsetzt. Dabei soll dieser Kopf auch verwendbar sein, % wenn nicht die vom \CD vorgeschriebenen Seitenränder sondern das Paket @@ -345,251 +399,279 @@ % % Für das Erzeugen der Seitenstile wird das Paket \pkg{scrlayer-scrpage} % genutzt. Mit diesem können verschiedene Ebenen erstellt werden, aus welchen -% anschließend der eigentliche Seitenstil zusammengesetzt wird. +% anschließend der eigentliche Seitenstil zusammengesetzt wird. Dabei werden +% verschiedene, sogenannte Layers respektive Ebenen für die einzelnen Elemente +% auf einer Seite erstellt. % \begin{macrocode} -\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. Anschließend werden verschiedene, sogeannte -% Layers respektive Ebenen für die einzelnen Elemente auf einer Seite erstellt. -% \begin{macrocode} - \RequirePackage{scrlayer-scrpage}[2013/12/14]% - \AfterPackage*{scrlayer-scrpage}{% +\AfterPackage{scrlayer-scrpage}{% % \end{macrocode} +% \begin{layer}{tudheadings.head.content} +% \changes{v2.04}{2015/05/31}{neu}^^A % \begin{layer}{tudheadings.head.mainlogo} -% \changes{v2.02}{2014/06/23}{neu}%^^A +% \changes{v2.02}{2014/06/23}{neu}^^A +% \changes{v2.04}{2015/05/31}{entfernt}^^A % \begin{layer}{tudheadings.head.logo} -% \changes{v2.02}{2014/06/23}{neu}%^^A -% Dies sind das links aus dem Satzspiegel verschobene Logo der \TnUD, \dots -% \begin{macrocode} - \DeclareNewLayer[% - background,headsep,% - voffset=\tud@dim@logoy,% - contents={% - \hspace*{\dimexpr\tud@dim@logox-\tud@dim@widemargin\relax}% - \tud@mainlogo% - },% - ]{tudheadings.head.mainlogo}% -% \end{macrocode} -% \dots und das Zweitlogo. -% \begin{macrocode} - \DeclareNewLayer[% - background,headsep,% - voffset=\tud@dim@logoy,% - contents={\hfill\tud@headlogo},% - ]{tudheadings.head.logo}% +% \changes{v2.02}{2014/06/23}{neu}^^A +% \changes{v2.04}{2015/05/31}{entfernt}^^A +% Dies sind das links aus dem Satzspiegel verschobene Logo der \TnUD und das +% Zweitlogo. Diese werden seit der Version~v2.04 nicht mehr in zwei getrennten +% sondern in einer gemeinsamen Ebene gesetzt. +% \begin{macrocode} + \DeclareNewLayer[% + background,headsep,% + voffset=\tud@dim@logoy,% + contents={% +% \end{macrocode} +% Vor der Ausgabe der Logoboxen werden diese im Bedarfsfall neu gesetzt. +% \begin{macrocode} + \tud@mainlogo@set% + \tud@headlogo@option@set% + \hspace*{\dimexpr\tud@dim@logox-\tud@dim@widemargin\relax}% + \tud@mainlogo@use\hfill\tud@headlogo@use% + },% + ]{tudheadings.head.content}% % \end{macrocode} % \end{layer}^^A tudheadings.head.logo % \end{layer}^^A tudheadings.head.mainlogo +% \end{layer}^^A tudheadings.head.content % \begin{layer}{tudheadings.head.back} -% \changes{v2.03}{2015/02/14}{neu}%^^A +% \changes{v2.03}{2015/02/14}{neu}^^A % \begin{layer}{tudheadings.head.bar} -% \changes{v2.03}{2015/02/14}{neu}%^^A +% \changes{v2.03}{2015/02/14}{neu}^^A % Außerdem gibt es eine Variante ohne Querbalken-Outline. Stattdessen werden % der Querbalken und der darüberliegende Kopf farbig abgesetzt. % \begin{macrocode} - \DeclareNewLayer[% - background,% - contents={% - \ifnum\tud@head@bar>\@ne\relax% - \color{HKS41}% - \rule{\layerwidth}{\tud@dim@topmargin}% - \fi% - },% - ]{tudheadings.head.back}% - \DeclareNewLayer[% - background,% - voffset=\tud@dim@topmargin,% - contents={% - \ifnum\tud@head@bar>\@ne\relax% - \color{HKS41!80}% - \rule{\layerwidth}{\tud@dim@barheight}% - \fi% - },% - ]{tudheadings.head.bar}% + \DeclareNewLayer[% + background,% + contents={% + \ifnum\tud@head@bar>\tw@\relax% cdhead=color + \color{HKS41}% + \rule{\layerwidth}{\tud@dim@topmargin}% + \fi% + },% + ]{tudheadings.head.back}% + \DeclareNewLayer[% + background,% + voffset=\tud@dim@topmargin,% + contents={% + \ifnum\tud@head@bar>\@ne\relax% cdhead=barcolor/color + \color{HKS41!60}% + \rule{\layerwidth}{\tud@dim@barheight}% + \fi% + },% + ]{tudheadings.head.bar}% % \end{macrocode} % \end{layer}^^A tudheadings.head.bar % \end{layer}^^A tudheadings.head.back % \begin{layer}{tudheadings.head.text} -% \changes{v2.02}{2014/06/23}{neu}%^^A +% \changes{v2.02}{2014/06/23}{neu}^^A % Fakultät, Einrichtung, Institut und Lehrstuhl als Inhalt des Querbalkens. % \begin{macrocode} - \DeclareNewLayer[% - background,headsep,% - voffset=\dimexpr\tud@dim@topmargin+\tud@dim@line\relax,% - contents={\tud@head@text@box},% - ]{tudheadings.head.text}% + \DeclareNewLayer[% + background,headsep,% + voffset=\dimexpr\tud@dim@topmargin+\tud@dim@line\relax,% + contents={\tud@head@text@box},% + ]{tudheadings.head.text}% % \end{macrocode} % \end{layer}^^A tudheadings.head.text % \begin{layer}{tudheadings.head.upperline} -% \changes{v2.02}{2014/06/23}{neu}%^^A +% \changes{v2.02}{2014/06/23}{neu}^^A % \begin{layer}{tudheadings.head.lowerline} -% \changes{v2.02}{2014/06/23}{neu}%^^A +% \changes{v2.02}{2014/06/23}{neu}^^A % \begin{layer}{tudheadings.head.upperwideline} -% \changes{v2.02}{2014/06/23}{neu}%^^A +% \changes{v2.02}{2014/06/23}{neu}^^A % \begin{layer}{tudheadings.head.lowerwideline} -% \changes{v2.02}{2014/06/23}{neu}%^^A +% \changes{v2.02}{2014/06/23}{neu}^^A % Die Ebenen für obere und untere Linie des Querbalkens sowohl in der normalen % Version, welche den Textbereich überspannt als auch in der Variante über die % komplette Seitenbreite. Dabei muss für beide Varianten der entsprechenden % horizontale Versatz beachtet werden. Dafür wird ggf. der Parameter \val{head} -% von \pkg{scrlayer-scrpage} verwendet. Darauf folgt \dots -% \begin{macrocode} - \DeclareNewLayer[% - background,headsep,% - voffset=\dimexpr\tud@dim@topmargin-.5\tud@dim@line\relax,% - contents={% - \ifnum\tud@head@bar<\tw@\relax\if@tud@head@widebar\else% - \tud@head@rule{\textwidth}% - \fi\fi% - },% - ]{tudheadings.head.upperline}% - \DeclareNewLayer[% - background,headsep,% - voffset=\dimexpr\tud@dim@topmargin+\tud@dim@barheight% - -.5\tud@dim@line\relax,% - contents={% - \ifnum\tud@head@bar<\tw@\relax\if@tud@head@widebar\else% - \tud@head@rule{\textwidth}% - \fi\fi% - },% - ]{tudheadings.head.lowerline}% - \DeclareNewLayer[% - background,% - voffset=\dimexpr\tud@dim@topmargin-.5\tud@dim@line\relax,% - contents={% - \ifnum\tud@head@bar<\tw@\relax\if@tud@head@widebar% - \tud@head@rule{\paperwidth}% - \fi\fi% - },% - ]{tudheadings.head.upperwideline}% - \DeclareNewLayer[% - background,% - voffset=\dimexpr\tud@dim@topmargin+\tud@dim@barheight% - -.5\tud@dim@line\relax,% - contents={% - \ifnum\tud@head@bar<\tw@\relax\if@tud@head@widebar% - \tud@head@rule{\paperwidth}% - \fi\fi% - },% - ]{tudheadings.head.lowerwideline}% +% von \pkg{scrlayer-scrpage} verwendet. +% \begin{macrocode} + \DeclareNewLayer[% + background,headsep,% + voffset=\dimexpr\tud@dim@topmargin-.5\tud@dim@line\relax,% + contents={% + \ifnum\tud@head@bar<\tw@\relax% cdhead=nocolor/litecolor + \if@tud@head@widebar\else\tud@head@rule{\textwidth}\fi% + \fi% + },% + ]{tudheadings.head.upperline}% + \DeclareNewLayer[% + background,headsep,% + voffset=\dimexpr\tud@dim@topmargin+\tud@dim@barheight% + -.5\tud@dim@line\relax,% + contents={% + \ifnum\tud@head@bar<\tw@\relax% cdhead=nocolor/litecolor + \if@tud@head@widebar\else\tud@head@rule{\textwidth}\fi% + \fi% + },% + ]{tudheadings.head.lowerline}% + \DeclareNewLayer[% + background,% + voffset=\dimexpr\tud@dim@topmargin-.5\tud@dim@line\relax,% + contents={% + \ifnum\tud@head@bar<\tw@\relax% cdhead=nocolor/litecolor + \if@tud@head@widebar\tud@head@rule{\paperwidth}\fi% + \fi% + },% + ]{tudheadings.head.upperwideline}% + \DeclareNewLayer[% + background,% + voffset=\dimexpr\tud@dim@topmargin+\tud@dim@barheight% + -.5\tud@dim@line\relax,% + contents={% + \ifnum\tud@head@bar<\tw@\relax% cdhead=nocolor/litecolor + \if@tud@head@widebar\tud@head@rule{\paperwidth}\fi% + \fi% + },% + ]{tudheadings.head.lowerwideline}% % \end{macrocode} % \end{layer}^^A tudheadings.head.lowerwideline % \end{layer}^^A tudheadings.head.upperwideline % \end{layer}^^A tudheadings.head.lowerline % \end{layer}^^A tudheadings.head.upperline -% \begin{layer}{tudheadings.foot.logo} -% \changes{v2.02}{2014/06/23}{neu}%^^A -% \changes{v2.03}{2015/01/13}{Ebenendeklaration ist kompatibilitätsabhängig}%^^A % \begin{layer}{tudheadings.foot.back} -% \changes{v2.03}{2015/02/15}{neu}%^^A -% Außerdem wird eine weitere Ebene für Drittlogos sowie das \DDC-Logo im -% Seitenfuß erstellt. Dabei wird die Ebene in Abhängigkeit vom gewählten -% Kompatibilitätsmodus unterschiedlich definiert. -% -% Ab Version~v2.03 wird der Satzspiegel so gewählt, dass das \DDC-Logo in den -% normalen Seitenfuß passt. -% \begin{macrocode} - \DeclareNewLayer[% - background,foot,% - height=\dimexpr\paperheight-\layeryoffset\relax,% - contents={% -% \end{macrocode} -% Falls die Höhe der Logos im Fuß nicht durch den Anwender festgelegt wurden, -% werden passende Standardwerte gesetzt. -% \begin{macrocode} - \ifdim\footlogoheight>\z@\relax\else% - \settoheight\footlogoheight{\tud@mainlogo}% - \iftudscrverlower{2.03}{% - \setlength\footlogoheight{.6\tud@dim@topmargin}% - }{}% - \fi% -% \end{macrocode} -% Die gesetzt Größe der Logos im Fuß wird geprüft. Sollten diese zu groß sein, -% wird eine Warnug ausgegeben. -% \begin{macrocode} - \setlength\@tempdima{% - \dimexpr\footlogoheight-\layerheight+\dp\strutbox\relax% - }% - \ifdim\@tempdima>\vfuzz\relax% - \ClassWarning{\tudcls@name}{% - The chosen `\string\footlogoheight' - (\the\footlogoheight)\MessageBreak% - is \the\@tempdima\space higher than recommended. You\MessageBreak% - should decrease this length - \ifcase\tud@geometry\relax\else% - or alternatively\MessageBreak% - enlarge the bottom margin by using option\MessageBreak% - `extrabottommargin'% - \fi% - }% - \fi% -% \end{macrocode} -% Hier erfolgt die eigentliche Ausgabe der Logos. Dabei werden ggf. zuerst die -% mit \cs{footlogo} angegeben wurden, anschließend wird das \DDC-Logo gesetzt, -% fall dies gefordert ist. -% \begin{macrocode} - \let\@tempa\relax% - \@for\@tempb:=\tud@@footlogo\do{% - \@tempa% - \ifx\@tempb\@empty\else% - \expandafter\tud@footlogo\expandafter{\@tempb}% +% \changes{v2.03}{2015/02/15}{neu}^^A +% \begin{layer}{tudheadings.foot.logo} +% \changes{v2.02}{2014/06/23}{neu}^^A +% \changes{v2.04}{2015/05/31}{neu}^^A +% \changes{v2.03}{2015/02/15}{überarbeitetet}^^A +% \begin{layer}{tudheadings.foot.content} +% \changes{v2.04}{2015/04/21}{neu}^^A +% Die folgenden Ebenen dienen für die Ausgabe des Fußbereiches. Dieser kann mit +% einem farbigen Hintergrund und zusätzlichen Logos (\cs{footlogo}) sowie frei +% wählbare Inhalte ein- oder zweispaltig mit \cs{footcontent} erstellt werden. +% Dabei werden die Ebenen in Abhängigkeit vom gewählten Kompatibilitätsmodus +% unterschiedlich definiert. Die erste Ebene bestimmt die Hintergrundgestaltung +% des Fußbereiches. +% \begin{macrocode} + \DeclareNewLayer[% + background,foot,% + hoffset=0pt,% + width=\paperwidth,% + addvoffset=-\dp\strutbox,% + height=\dimexpr\paperheight-\layeryoffset\relax,% + contents={% + \if@tud@foot@colored% + \let\@tempc\relax% + \ifdefvoid{\tud@pagecolor}{% + \ifcase\tud@head@bar\relax\or\or% cdhead=barcolor + \def\@tempc{\color{HKS41!60}}% + \or% cdhead=color + \def\@tempc{\color{HKS41}}% \fi% - \let\@tempa\footlogosep% + }{% + \def\@tempc{\color{HKS41}}% + \ifstr{\tud@pagecolor}{HKS41}{\def\@tempc{\color{HKS41!60}}}{}% }% - \tud@ddclogo% - },% - ]{tudheadings.foot.logo}% + \ifx\@tempc\relax\else% + \@tempc\rule{\layerwidth}{\layerheight}% + \fi% + \fi% + },% + ]{tudheadings.foot.back}% % \end{macrocode} % Bis zur Version~v2.02 wurde für die Verwendung des \DDC-Logos der Satzspiegel -% geändert. Hier wird dem Rechnung getragen. -% \begin{macrocode} - \iftudscrverlower{2.03}{% - \ModifyLayer[% - voffset=\dimexpr\topmargin+1in+\headheight+\headsep+\textheight% - +\footskip-\footheight-\tud@dim@ddcdiff% - \ifcase\tud@geometry\relax\else+\ht\strutbox+\dp\strutbox\fi% - \relax,% - height=\dimexpr.6\tud@dim@topmargin+\dp\strutbox\relax,% - ]{tudheadings.foot.logo}% - }{}% -% \end{macrocode} -% Diese Ebene wird als Hintergrund für den Fußbereich definiert. +% geändert. Hier wird dem Rechnung getragen, indem der farbige Hintergrund im +% Zweifelsfall vergrößert wird. % \begin{macrocode} - \DeclareNewLayer[% - background,% - hoffset=0pt,% - width=\paperwidth,% - voffset=\dimexpr\@nameuse{scr@l@tudheadings.foot.logo@y}% - -\dp\strutbox\relax,% - height=\dimexpr\paperheight-\layeryoffset\relax,% + \tud@ifverlower{2.03}{% + \ModifyLayer[% + addvoffset=-\tud@dim@ddcdiff+\ht\strutbox,% contents={% - \if@tud@footcolor% + \if@tud@foot@colored% \let\@tempc\relax% - \ifnum\tud@head@bar>\@ne\def\@tempc{\color{HKS41}}\fi% - \ifstr{\tud@pagecolor}{HKS41}{\def\@tempc{\color{HKS41!80}}}{}% + \ifdefvoid{\tud@pagecolor}{% + \ifcase\tud@head@bar\relax\or\or% cdhead=barcolor + \def\@tempc{\color{HKS41!60}}% + \or% cdhead=color + \def\@tempc{\color{HKS41}}% + \fi% + }{% + \def\@tempc{\color{HKS41}}% + \ifstr{\tud@pagecolor}{HKS41}{\def\@tempc{\color{HKS41!60}}}{}% + }% \ifx\@tempc\relax\else% - \iftudscrverlower{2.03}{% - \tud@ddc@check% - \ifcase\@tempb\relax% - \vbox to \layerheight{% - \vfil\@tempc% - \rule{\layerwidth}{% - \dimexpr\layerheight-\tud@dim@ddcdiff+\ht\strutbox\relax% - }% + \tud@ddc@check% + \ifcase\@tempb\relax% \tud@ddc@foot=false + \vbox to \layerheight{% + \vfil\@tempc% + \rule{\layerwidth}{% + \dimexpr\layerheight-\tud@dim@ddcdiff+\ht\strutbox\relax% }% - \else% - \@tempc\rule{\layerwidth}{\layerheight}% - \fi% - }{\@tempc\rule{\layerwidth}{\layerheight}}% + }% + \else% \tud@ddc@foot!=false + \@tempc\rule{\layerwidth}{\layerheight}% + \fi% \fi% \fi% },% ]{tudheadings.foot.back}% + }{}% % \end{macrocode} -% \end{layer}^^A tudheadings.foot.back +% Die zweite Ebene wird für die Ausgabe von Drittlogos und des \DDC-Logos sowie +% freien Inhalten im Seitenfuß erstellt. Ab Version~v2.03 wird der Satzspiegel +% so gewählt, dass das \DDC-Logo und andere Inhalten in den normalen Seitenfuß +% passen. +% \begin{macrocode} + \DeclareNewLayer[% + background,foot,% + height=\dimexpr\paperheight-\layeryoffset\relax,% + contents={% +% \end{macrocode} +% Falls die Höhe der Logos im Fuß nicht durch den Anwender festgelegt wurden, +% werden passende Standardwerte gesetzt. Außerdem wird die genutzte Höhe des +% Layers nicht vollständig genutzt, um bei einem farbigen Fußbereich einen +% gewissen Abstand vom Inhalt zur Kante zu erhalten. +% \begin{macrocode} + \tud@footlogoheight@set% + \setlength\@tempdima{\dimexpr\layerheight-\dp\strutbox\relax}% +% \end{macrocode} +% Im Bedarfsfall werden die Boxen vor der Ausgabe neu gesetzt. Danach erfolgt +% die Ausgabe, wobei die boxen übereinander gelegt werden. +% \begin{macrocode} + \tud@footlogo@option@set% + \tud@footlogo@cmd@set{\@tempdima}{\layerwidth}% + \tud@footcontent@use{\@tempdima}{\layerwidth}% + \hspace*{-\layerwidth}% + \tud@footlogo@cmd@use% + \hspace*{-\layerwidth}% + \hfill\tud@footlogo@ddc@use{\@tempdima}% + },% + ]{tudheadings.foot.content}% +% \end{macrocode} +% Bis zur Version~v2.02 wurde für die Verwendung des \DDC-Logos der Satzspiegel +% geändert. Hier wird dem Rechnung getragen. +% \begin{macrocode} + \tud@ifverlower{2.03}{% + \ModifyLayer[% + addvoffset=-\tud@dim@ddcdiff+\ht\strutbox,% + height=\dimexpr.6\tud@dim@topmargin+\dp\strutbox\relax,% + ]{tudheadings.foot.content}% + }{}% +% \end{macrocode} +% \end{layer}^^A tudheadings.foot.content % \end{layer}^^A tudheadings.foot.logo +% \end{layer}^^A tudheadings.foot.back +% \begin{layer}{tudheadings.last} +% \changes{v2.04}{2015/04/02}{neu}^^A +% Die letzte Ebene dient nicht der Ausgabe eines bestimmten Inhaltes sondern +% wird für evtl. notwendige Aufräumarbeiten etc. bereitgehalten. +% \begin{macrocode} + \DeclareNewLayer[% + background,% +% \end{macrocode} +% Falls ein Kapitel ohne die Option \opt{chapterpage} gesetzt wird und dennoch +% die Gestalt des Kopfes des \pgs{tudheadings}-Seitenstils sich vom restlichen +% Dokument unterscheiden soll (\opt{cd} bzw. \opt{cdchapter}), so dient das +% Makro \cs{tud@head@bar@restore} zum Zurücksetzen auf das normale Verhalten. +% Siehe \cs{tud@chapter@app}. +% \begin{macrocode} +% contents=\tud@head@bar@restore,% + ]{tudheadings.last}% +% \end{macrocode} +% \end{layer}^^A tudheadings.last % Aus den zuvor erstellten Ebenen werden jetzt die eigentlichen Seitenstile % zusammengesetzt. Als erstes wird der \pgs{headings}-Seitenstil definiert. % Dieser verwendet den TUD-Kopf und die Fußzeilenebenen des Seitenstils @@ -599,122 +681,147 @@ % weiterhin durch den Anwender verwendet werden kann, werden wie erwähnt die % entsprechenden \pgs{scrheadings}-Ebenen verwendet. % \begin{macrocode} - \DeclareNewPageStyleByLayers[% - onselect=\tud@ps@onselect,onbackground=\tud@ps@onbackground% - ]{tudheadings}{% - tudheadings.head.back,% - tudheadings.head.mainlogo,% - tudheadings.head.logo,% - tudheadings.head.bar,% - tudheadings.head.text,% - tudheadings.head.upperline,% - tudheadings.head.lowerline,% - tudheadings.head.upperwideline,% - tudheadings.head.lowerwideline,% - tudheadings.foot.back,% - tudheadings.foot.logo,% - scrheadings.foot.odd,% - scrheadings.foot.even,% - scrheadings.foot.oneside,% - scrheadings.foot.above.line,% - scrheadings.foot.below.line% - }% + \DeclareNewPageStyleByLayers[% + onselect=\tud@ps@onselect,onbackground=\tud@ps@onbackground% + ]{tudheadings}{% + tudheadings.head.back,% + tudheadings.head.content,% + tudheadings.head.bar,% + tudheadings.head.text,% + tudheadings.head.upperline,% + tudheadings.head.lowerline,% + tudheadings.head.upperwideline,% + tudheadings.head.lowerwideline,% + tudheadings.foot.back,% + tudheadings.foot.content,% + tudheadings.last,% + scrheadings.foot.odd,% + scrheadings.foot.even,% + scrheadings.foot.oneside,% + scrheadings.foot.above.line,% + scrheadings.foot.below.line% + }% + \listadd\tud@ps@list{tudheadings}% % \end{macrocode} % Zuletzt werden Aliasnamen für den Seitenstil definiert. % \begin{macrocode} - \DeclareNewPageStyleAlias{tud}{tudheadings}% - \DeclareNewPageStyleAlias{tudscr}{tudheadings}% - \DeclareNewPageStyleAlias{tudscrheadings}{tudheadings}% + \DeclareNewPageStyleAlias{tud}{tudheadings}% + \DeclareNewPageStyleAlias{tudscr}{tudheadings}% + \DeclareNewPageStyleAlias{tudscrheadings}{tudheadings}% % \end{macrocode} % Für den \pgs{plain}-Seitenstil wird ebenso verfahren. Hier werden für die % Fußzeilenebenen des Seitenstils \pgs{plain.scrheadings} hinzugefügt. % \begin{macrocode} - \DeclareNewPageStyleByLayers[% - onselect=\tud@ps@onselect,onbackground=\tud@ps@onbackground% - ]{plain.tudheadings}{% - tudheadings.head.back,% - tudheadings.head.mainlogo,% - tudheadings.head.logo,% - tudheadings.head.bar,% - tudheadings.head.text,% - tudheadings.head.upperline,% - tudheadings.head.lowerline,% - tudheadings.head.upperwideline,% - tudheadings.head.lowerwideline,% - tudheadings.foot.back,% - tudheadings.foot.logo,% - plain.scrheadings.foot.odd,% - plain.scrheadings.foot.even,% - plain.scrheadings.foot.oneside,% - plain.scrheadings.foot.above.line,% - plain.scrheadings.foot.below.line% - }% - \DeclareNewPageStyleAlias{plain.tudscrheadings}{plain.tudheadings}% - \DeclareNewPageStyleAlias{tudplain}{plain.tudheadings}% - \DeclareNewPageStyleAlias{tudscrplain}{plain.tudheadings}% - \DeclareNewPageStyleAlias{tudheadingsplain}{plain.tudheadings}% - \DeclareNewPageStyleAlias{tudscrheadingsplain}{plain.tudheadings}% + \DeclareNewPageStyleByLayers[% + onselect=\tud@ps@onselect,onbackground=\tud@ps@onbackground% + ]{plain.tudheadings}{% + tudheadings.head.back,% + tudheadings.head.content,% + tudheadings.head.bar,% + tudheadings.head.text,% + tudheadings.head.upperline,% + tudheadings.head.lowerline,% + tudheadings.head.upperwideline,% + tudheadings.head.lowerwideline,% + tudheadings.foot.back,% + tudheadings.foot.content,% + tudheadings.last,% + plain.scrheadings.foot.odd,% + plain.scrheadings.foot.even,% + plain.scrheadings.foot.oneside,% + plain.scrheadings.foot.above.line,% + plain.scrheadings.foot.below.line% + }% + \listadd\tud@ps@list{plain.tudheadings}% + \DeclareNewPageStyleAlias{plain.tudscrheadings}{plain.tudheadings}% + \DeclareNewPageStyleAlias{tudplain}{plain.tudheadings}% + \DeclareNewPageStyleAlias{tudscrplain}{plain.tudheadings}% + \DeclareNewPageStyleAlias{tudheadingsplain}{plain.tudheadings}% + \DeclareNewPageStyleAlias{tudscrheadingsplain}{plain.tudheadings}% % \end{macrocode} % Des Weiteren gibt es einen selbstständigen \enquote{leeren} Seitenstil, der % lediglich aus dem Kopf besteht und einen lerren Seitenfuß hat. % \begin{macrocode} - \DeclareNewPageStyleByLayers[% - onselect=\tud@ps@onselect,onbackground=\tud@ps@onbackground% - ]{empty.tudheadings}{% - tudheadings.head.back,% - tudheadings.head.mainlogo,% - tudheadings.head.logo,% - tudheadings.head.bar,% - tudheadings.head.text,% - tudheadings.head.upperline,% - tudheadings.head.lowerline,% - tudheadings.head.upperwideline,% - tudheadings.head.lowerwideline,% - tudheadings.foot.back,% - tudheadings.foot.logo,% - }% - \DeclareNewPageStyleAlias{empty.tudscrheadings}{empty.tudheadings}% - \DeclareNewPageStyleAlias{tudempty}{empty.tudheadings}% - \DeclareNewPageStyleAlias{tudscrempty}{empty.tudheadings}% - \DeclareNewPageStyleAlias{tudheadingsempty}{empty.tudheadings}% - \DeclareNewPageStyleAlias{tudscrheadingsempty}{empty.tudheadings}% + \DeclareNewPageStyleByLayers[% + onselect=\tud@ps@onselect,onbackground=\tud@ps@onbackground% + ]{empty.tudheadings}{% + tudheadings.head.back,% + tudheadings.head.content,% + tudheadings.head.bar,% + tudheadings.head.text,% + tudheadings.head.upperline,% + tudheadings.head.lowerline,% + tudheadings.head.upperwideline,% + tudheadings.head.lowerwideline,% + tudheadings.foot.back,% + tudheadings.foot.content,% + tudheadings.last% + }% + \listadd\tud@ps@list{empty.tudheadings}% + \DeclareNewPageStyleAlias{empty.tudscrheadings}{empty.tudheadings}% + \DeclareNewPageStyleAlias{tudempty}{empty.tudheadings}% + \DeclareNewPageStyleAlias{tudscrempty}{empty.tudheadings}% + \DeclareNewPageStyleAlias{tudheadingsempty}{empty.tudheadings}% + \DeclareNewPageStyleAlias{tudscrheadingsempty}{empty.tudheadings}% % \end{macrocode} % \begin{layer}{tudheadings.pagecolor} -% \changes{v2.03}{2015/01/09}{neu}%^^A +% \changes{v2.03}{2015/01/09}{neu}^^A +% \begin{macro}{\tud@pagecolor} +% \begin{macro}{\tud@restorepagecolor} +% \changes{v2.03}{2015/01/09}{entfernt}^^A % Um farbige Titel- Teil- und Kapitelseiten \emph{unabhängig} vom aktuell % verwendeten Seitenstil erstellen zu können, wird die zusätzliche Ebene % \val{tudheadings.pagecolor} definiert, die \emph{allen} Seitenstilen -% hinzugefügt wird. -% \begin{macrocode} - \DeclareNewLayer[ - background,page,% - contents={% - \ifdefvoid{\tud@pagecolor}{}{% - \color{\tud@pagecolor}% - \rule{\layerwidth}{\layerheight}% - }% - },% - ]{tudheadings.pagecolor} - \AddLayersToPageStyle{@everystyle@}{tudheadings.pagecolor}% +% hinzugefügt wird. Dabei dient das Makros \cs{tud@pagecolor} zum Umschalten +% der Hintergrundfarben und wird durch die Auswertung der Hilfsmakros +% \cs{tud@layout@\dots} optionsabhängig für Titel-, Teile- sowie Kapitelseiten +% gesetzt. +% \begin{macrocode} + \newcommand*\tud@pagecolor{}% + \DeclareNewLayer[% + background,page,% + contents={% + \ifdefvoid{\tud@pagecolor}{}{% + \color{\tud@pagecolor}% + \rule{\layerwidth}{\layerheight}% + }% + },% + ]{tudheadings.pagecolor}% + \AddLayersToPageStyle{@everystyle@}{tudheadings.pagecolor}% % \end{macrocode} +% \end{macro}^^A \tud@restorepagecolor +% \end{macro}^^A \tud@pagecolor % \end{layer}^^A tudheadings.pagecolor -% Der Kopf im \CD der \TnUD erfordert einen eigenen Satzspiegel, der ggf. durch -% \cs{tud@beforeselectanypagestyle} aktiviert bzw. deaktiviert wird. +% Damit wurden alle Ebenen und die darauf aufbauenden Seitenstile deklariert. +% +% Mit der Nutzung von \pkg{scrlayer-scrpage} ist die parallele Verwendung des +% Paketes \pkg{fancyhdr} nicht möglich. % \begin{macrocode} - \BeforeSelectAnyPageStyle{\tud@beforeselectanypagestyle{#1}}% - }% } +\PreventPackageFromLoading[% + \ClassWarning{\TUDClassName}{% + The package `fancyhdr' must not be used with a\MessageBreak% + TUD-KOMA-Script class. You should make use of the\MessageBreak% + capabilities of package `scrlayer-scrpage' instead% + }% +]{fancyhdr} % \end{macrocode} % \end{pagestyle}^^A empty.tudheadings % \end{pagestyle}^^A plain.tudheadings % \end{pagestyle}^^A tudheadings % \begin{macro}{\tud@ps@onselect} -% \changes{v2.03}{2015/01/09}{neu}%^^A +% \changes{v2.03}{2015/01/09}{neu}^^A % \begin{macro}{\tud@ps@onbackground} -% \changes{v2.03}{2015/02/14}{neu}%^^A +% \changes{v2.03}{2015/02/14}{neu}^^A +% \changes{v2.04}{2015/04/21}{Kopf- und Fußeinstellungen abhängig von der Farbe +% des Seitenhintergrunds}^^A % \begin{macro}{\tud@head@logocolor} +% \begin{macro}{\tud@head@fontcolor} +% \changes{v2.04}{2015/05/18}{neu}^^A % \begin{macro}{\tud@foot@logocolor} -% \changes{v2.03}{2015/02/15}{neu}%^^A +% \changes{v2.03}{2015/02/15}{neu}^^A +% \begin{macro}{\tud@foot@fontcolor} +% \changes{v2.04}{2015/04/21}{neu}^^A % Diese Befehle werden bei der Initialiserung der Seitenstile beziehungsweise % zu Beginn der Ebenenausgabe aufgerufen. % \begin{macrocode} @@ -725,7 +832,7 @@ % Seitenstil, die Seitenstile \pgs{headings} und \pgs{plain} als Aliase für % \pgs{\meta{Seitenstil}} und \pgs{plain.\meta{Seitenstil}} festgelegt. % Allerdings definiert dieser Befehl zusätzliche Ebenen für Kopf- und Fußzeile, -% weshalb auf die Verwendung verziichtet wird. Das automatische Umschalten soll +% weshalb auf die Verwendung verzichtet wird. Das automatische Umschalten soll % dennoch ermöglicht werden. % \begin{macrocode} \DeclarePageStyleAlias{plain}{plain.tudheadings}% @@ -733,325 +840,226 @@ \def\sls@currentheadings{tudheadings}% \def\sls@currentplain{plain.tudheadings}% } +% \end{macrocode} % Das Makro \cs{tud@head@logocolor} enthält die Farbe des Kopfes. Die Gestalt % des Querbalkens kann über die Option \opt{cdhead} geändert werden. Für Titel, % Teil und Kapitel gibt es speziell dazugehörige Optionen, womit das Aussehen -% des Kopfes ggf. angepasst werden kann. Mit \cs{tud@foot@logocolor} erfolgt -% dies gleichermaßen für ein etwaiges \DDC-Logo. +% des Kopfes ggf. angepasst werden kann. Mit \cs{tud@foot@logocolor} kann +% gleichermaßen die Farbe eines etwaigen \DDC-Logo festgelegt werden, in +% \cs{tud@foot@fontcolor} wird ggf. die Schriftfarbe für den Fuß gespeichert. % \begin{macrocode} \newcommand*\tud@head@logocolor{black} +\newcommand*\tud@head@fontcolor{} \newcommand*\tud@foot@logocolor{black} +\newcommand*\tud@foot@fontcolor{} \newcommand*\tud@ps@onbackground{% - \ifcase\tud@head@bar\relax% - \def\tud@head@logocolor{black}% - \def\tud@foot@logocolor{black}% - \or% - \def\tud@head@logocolor{HKS41}% - \def\tud@foot@logocolor{HKS41}% - \or% - \def\tud@head@logocolor{white}% - \if@tud@footcolor% - \def\tud@foot@logocolor{white}% - \else% +% \end{macrocode} +% Zunächst die Einstellungen für Seiten ohne spezielle Hintergrundfarbe. +% \begin{macrocode} + \ifdefvoid{\tud@pagecolor}{% + \ifcase\tud@head@bar\relax% cdhead=nocolor + \def\tud@head@logocolor{black}% + \def\tud@head@fontcolor{}% + \def\tud@foot@logocolor{black}% + \def\tud@foot@fontcolor{}% + \or% cdhead=litecolor + \def\tud@head@logocolor{HKS41}% + \def\tud@head@fontcolor{HKS41}% \def\tud@foot@logocolor{HKS41}% + \def\tud@foot@fontcolor{HKS41}% + \or% cdhead=barcolor + \def\tud@head@logocolor{HKS41}% + \def\tud@head@fontcolor{white}% + \if@tud@foot@colored% + \def\tud@foot@logocolor{white}% + \def\tud@foot@fontcolor{white}% + \else% + \def\tud@foot@logocolor{HKS41}% + \def\tud@foot@fontcolor{HKS41}% + \fi% + \or% cdhead=color + \def\tud@head@logocolor{white}% + \def\tud@head@fontcolor{white}% + \if@tud@foot@colored% + \def\tud@foot@logocolor{white}% + \def\tud@foot@fontcolor{white}% + \else% + \def\tud@foot@logocolor{HKS41}% + \def\tud@foot@fontcolor{HKS41}% + \fi% \fi% - \fi% + }{% +% \end{macrocode} +% Die Einstellungen für Seiten mit Hintergrundfarbe variieren davon. Zuerst die +% für farbige Titel- und Teileseiten\dots +% \begin{macrocode} + \ifstr{\tud@pagecolor}{HKS41}{% + \def\tud@head@logocolor{white}% + \def\tud@head@fontcolor{white}% + \def\tud@foot@logocolor{white}% + \if@tud@foot@colored% + \def\tud@foot@fontcolor{white}% + \else% + \def\tud@foot@fontcolor{HKS41!30}% + \fi% + \bool@std@lock{@tud@head@widebar}{true}% +% \end{macrocode} +% \dots sowie die für die farbigen Kapitelseiten. +% \begin{macrocode} + }{% + \def\tud@head@logocolor{HKS41}% + \def\tud@head@fontcolor{HKS41}% + \ifcase\tud@head@bar\relax\or\or\or% cdhead=color + \def\tud@head@logocolor{white}% + \def\tud@head@fontcolor{white}% + \fi% + \if@tud@foot@colored% + \def\tud@foot@logocolor{white}% + \def\tud@foot@fontcolor{white}% + \else% + \def\tud@foot@logocolor{HKS41}% + \def\tud@foot@fontcolor{HKS41}% + \fi% + \bool@std@lock{@tud@head@widebar}{true}% + }% + }% % \end{macrocode} -% In Abhängigkeit von der eingestzten Hintergrundfarbe der Seite wird die -% Linienstärke des Querbalkens gesetzt. +% Abhängig von der eingestzten Schriftfarbe des Kopfes wird die Linienstärke +% des Querbalkens gesetzt, die Schriftfarbe des Fußes wird global geändert, +% damit Seitenzahl und Kolumnentitel gegebenenfalls angepasst werden. % \begin{macrocode} \let\tud@dim@line\tud@dim@thinline% - \ifstr{\tud@head@logocolor}{white}{\let\tud@dim@line\tud@dim@heavyline}{}% + \ifstr{\tud@head@fontcolor}{white}{\let\tud@dim@line\tud@dim@heavyline}{}% + \global\let\tud@foot@fontcolor\tud@foot@fontcolor% } % \end{macrocode} +% \end{macro}^^A \tud@foot@fontcolor % \end{macro}^^A \tud@foot@logocolor +% \end{macro}^^A \tud@head@fontcolor % \end{macro}^^A \tud@head@logocolor % \end{macro}^^A \tud@ps@onbackground % \end{macro}^^A \tud@ps@onselect % \begin{macro}{\ps@tudpage@plain} -% \changes{v2.02}{2014/06/23}{entfernt}%^^A +% \changes{v2.02}{2014/06/23}{entfernt}^^A % \begin{macro}{\ps@tudpage@empty} -% \changes{v2.02}{2014/06/23}{entfernt}%^^A +% \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}{\thispagestyle} -% \changes{v2.03}{2015/01/20}{Auswahl eines Aliasseitenstils unterdrückt}%^^A +% \changes{v2.03}{2015/01/20}{Auswahl eines Aliasseitenstils unterdrückt}^^A % \begin{macrocode} \patchcmd{\thispagestyle}{\gdef\@specialstyle{#1}}{% \xdef\@specialstyle{\GetRealPageStyle{#1}} }{}{\tud@patch@wrn{thispagestyle}} % \end{macrocode} -% \end{macro}^^A \tud@beforeselectanypagestyle -% \begin{macro}{\tud@beforeselectanypagestyle} -% \changes{v2.02}{2014/06/23}{neu}%^^A -% \begin{macro}{\tud@currentgeometry} -% \changes{v2.02}{2014/06/23}{neu}%^^A -% Mit \cs{tud@beforeselectanypagestyle} wird beim Umschalten des Seitenstils -% gegebenfalls der Satzspiegel geändert. Dabei wird der aktivierte Satzspiegel -% in dem Makro \cs{tud@currentgeometry} gesichert, um darauf zu einem späteren -% Zeitpunkt prüfen zu können. -% -% Für den Fall, dass das Dokument nicht ausschließlich mit dem Kopf im \CD -% auf jeder Seite gesetzt wird, muss der komplette vertikale Satzspiegel -% angepasst werden, sonst wäre der obere Rand optisch viel zu groß. Hierfür -% wird das Paket \pkg{geometry} genutzt. Durch \cs{tud@geometry@process} -% werden zwei~-- für die KOmpatibilitätsvariante drei~-- Layouts erstellt. -% Diese können mit \cs{loadgeometry}\marg{Stil} geladen werden. +% \end{macro}^^A \thispagestyle +% \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} +% Diese Befehle sind Hilfsmakros, die bei der Erzeugung der Textzeile inner- und +% unterhalb des Querbalkens des TUD-Kopfes dienen. % \begin{macrocode} -\newcommand*\tud@currentgeometry{} -\newcommand*\tud@beforeselectanypagestyle[1]{% +\newcommand*\tud@head@text{} +\newcommand*\tud@head@text@first{} +\newcommand*\tud@head@text@second{} +\newcommand*\tud@head@text@delimiter{} +\newcommand*\tud@head@text@buffer{} % \end{macrocode} -% Der \pgs{tudheadings}-Seitenstil wird mit dem Befehl \cs{newpairofpagestyles} -% derart definiert, dass zwischen \pgs{tudheadings} und \pgs{plain.tudheadings} -% auch mit \LaTeX-Standardseitenstilen \pgs{headings} bzw. \pgs{plain} -% umgeschaltet werden kann. Dies wird hiermit beachtet. +% \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 \cs{tud@head@bar} +% 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} - \ifstr{#1}{\GetRealPageStyle{#1}}{% - \def\@tempa{#1}% +\newcommand*\tud@head@rule[1]{% + \tud@color{\tud@head@fontcolor}% + \rule[\ht\strutbox]{#1}{\tud@dim@line}% +} % \end{macrocode} -% Vor der \KOMAScript-Version~v3.15 wurden die Seitenstile \pgs{headings} und -% \pgs{plain} nicht als Alias definiert. Dieses Problem wird hiermit behoben. +% \end{macro}^^A \tud@head@rule +% \begin{macro}{\tud@head@text@add} +% \changes{v2.04}{2015/04/08}{Verwendung von \cs{protected@edef}}^^A +% 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} - \ifcsdef{scr@v@3.15}{}{% - \ifstr{\sls@currentheadings}{tudheadings}{% - \ifstr{#1}{headings}{\def\@tempa{tudheadings}}{}% - \ifstr{#1}{plain}{\def\@tempa{plain.tudheadings}}{}% - }{}% +\newcommand*\tud@head@text@add[3][, ]{% + \protected@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% + #2% + \tud@head@text% + }% + \settowidth\@tempdima{\@tempa}% + \ifdim\@tempdima>\textwidth\relax% + \@tempswatrue% + \def\tud@head@text@delimiter{}% + \else% + \protected@edef\tud@head@text@first{\@tempa}% + \fi% + \fi% + \if@tempswa% + \protected@edef\tud@head@text@second{% + \tud@head@text@second% + \tud@head@text@delimiter% + #2% + \tud@head@text% }% + \fi% +} % \end{macrocode} -% Für den Fall, das ein \pgs{tudheadings}-Seitenstil geladen werden soll, muss -% der dazugehörige Satzspiegel ausgewählt werden\dots +% \end{macro}^^A \tud@head@text@add +% \begin{macro}{\tud@head@text@box} +% \changes{v2.02}{2014/06/23}{neu}^^A +% \changes{v2.03}{2015/01/09}{Bugfix für zweite Zeile. Diese muss in jedem Fall +% gesetzt werden, auch wenn sie leer ist.}^^A +% Dieser Befehl ist der Inhalt der Ebene für den Text der Kopfzeile. % \begin{macrocode} - \iftudpagestyle{\@tempa}{% +\newcommand*\tud@head@text@box{% % \end{macrocode} -% \dots wobei in der Version~v2.02 zwei unterschiedliche existierten, und -% abhängig von der Verwendung des \DDC-Logos im Fuß waren. +% Sollte keine Fakultät angegeben sein, wird eine Warnung ausgegeben. % \begin{macrocode} - \iftudscrverlower{2.03}{% + \ifx\@faculty\@empty% + \ClassWarningNoLine{\TUDClassName}{No `\string\faculty' given}% + \faculty{}% + \fi% % \end{macrocode} -% In diesem Fall werden die Seitenfußeinstellungen mit \cs{tud@ddc@check} in -% \cs{@tempb} geschrieben und abhängig davon der richtige Satzspiegel geladen. -% Dabei wird zuvor mit dem Wert aus \cs{tud@currentgeometry} geprüft, ob dies -% überhaupt notwendig ist. +% Abhängig vom Wert \cs{tud@cdfont}~-- gesetzt entweder von der globalen +% Klassenoption oder vom lokalen Parameter \opt{cdfont}~-- werden entweder die +% Schriften des \CDs oder aber die serifenlose Standardschrift für die Kopfzeile +% verwendet. % \begin{macrocode} - \tud@ddc@check% + \tud@head@font@set% % \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} -% Ab der Version~v2.03 ist nur noch ein Satzspiegel vonnöten. -% \begin{macrocode} - }{% - \ifstr{\tud@currentgeometry}{tudarea}{}{% - \loadgeometry{tudarea}% - \gdef\tud@currentgeometry{tudarea}% - }% - }% -% \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}% - }% -% \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} -% \end{macro}^^A \tud@currentgeometry -% \end{macro}^^A \tud@beforeselectanypagestyle -% \begin{macro}{\cleardoubleoddpageusingstyle} -% \begin{macro}{\cleardoubleevenpageusingstyle} -% \begin{macro}{\cleardoublepageusingstyle} -% Damit die Satzspiegelumstellungen nicht durchgeführt werden, wenn durch die -% folgenden \KOMAScript-Befehle Leerseiten erzeugt werden, müssen diese minimal -% angepasst werden. -% \begin{macrocode} -\patchcmd{\cleardoubleoddpageusingstyle}{\pagestyle}{% - \let\tud@beforeselectanypagestyle\@gobble\pagestyle% -}{}{\tud@patch@wrn{cleardoubleoddpageusingstyle}} -\patchcmd{\cleardoubleevenpageusingstyle}{\pagestyle}{% - \let\tud@beforeselectanypagestyle\@gobble\pagestyle% -}{}{\tud@patch@wrn{cleardoubleevenpageusingstyle}} -\patchcmd{\cleardoublepageusingstyle}{\pagestyle}{% - \let\tud@beforeselectanypagestyle\@gobble\pagestyle% -}{}{\tud@patch@wrn{cleardoublepageusingstyle}} -% \end{macrocode} -% \end{macro}^^A \cleardoublepageusingstyle -% \end{macro}^^A \cleardoubleevenpageusingstyle -% \end{macro}^^A \cleardoubleoddpageusingstyle -% \begin{macro}{\tud@ddc@enlargepage} -% \changes{v2.02}{2014/06/23}{neu}%^^A -% Der Befehl wird nur für den Kompatibilitätsmodus zur Version~v2.02 benötigt -% und für die Titelkopf- und Kapitelseiten verwendet. Er verkleinert die -% entsprechenden Seiten, wenn für diese mit dem Befehl \cs{thispagestyle} einer -% der \pgs{tudheadings}"=Seitenstile gewählt wird \emph{und} das \DDC-Logo im -% Fuß gesetzt werden soll. Der entsprechende Seitenstil kann im optionalen -% Argument angegeben werden, wenn der Befehl bedingt ausgeführt werden soll. -% \begin{macrocode} -\iftudscrverlower{2.03}{% - \newcommand*\tud@ddc@enlargepage[1][]{% - \iftudpagestyle{#1}{% - \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} -% 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{} -% \end{macrocode} -% \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 \cs{tud@head@bar} -% 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@logocolor}% - \rule[\ht\strutbox]{#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][, ]{% - \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% - #2% - \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% - #2% - \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 -% \changes{v2.03}{2015/01/09}{Bugfix für zweite Zeile. Diese muss in jedem Fall -% gesetzt werden, auch wenn sie leer ist.}%^^A -% Dieser Befehl ist der Inhalt der Ebene für den Text der Kopfzeile. -% \ToDo{Zeilenabstand bei unterschiedlichen Papiergrößen prüfen}[v2.04] -% \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} -% Abhängig vom Wert \cs{tud@cdfont}~-- gesetzt entweder von der globalen -% Klassenoption oder vom lokalen Parameter \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. +% 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{}% @@ -1075,27 +1083,27 @@ % \cs{tud@head@text@write} sowie einer möglichen Extrazeile. % \begin{macrocode} \vbox{% - \linespread{0}\selectfont% + \linespread{0}\selectfont\offinterlineskip% % \end{macrocode} -% Die Farbe des Textes der ersten Zeile entspricht immer der des Kopfes\dots +% Die Farbe des Textes der ersten Zeile entspricht immer der des Kopfes. % \begin{macrocode} - \color{\tud@head@logocolor}% + \tud@color{\tud@head@fontcolor}% \tud@head@text@write{\tud@head@text@first}% % \end{macrocode} % Die zweite und dritte Zeile sind bei zweifarbigen Kopf normalerweise blau, % nur für einen dunklen Seitenhintergrund weiß. % \begin{macrocode} - \ifnum\tud@head@bar>\@ne% + \ifnum\tud@head@bar>\@ne% cdhead=barcolor/color \ifdefvoid{\tud@pagecolor}{\color{HKS41}}{% \ifstr{\tud@pagecolor}{HKS41}{\color{white}}{\color{HKS41}}% }% \fi% \ifx\tud@head@text@second\@empty% - \newline\tud@head@font@light\tud@head@text@write{\@extraheadline}% + \newline\tud@head@text@write{\tud@head@font@light\@extraheadline}% \else% \newline\tud@head@text@write{\tud@head@text@second}% \ifx\@extraheadline\@empty\else% - \vspace{-\tud@dim@line}\newline\tud@head@font@light\@extraheadline% + \newline\vbox{\tud@head@font@light\@extraheadline}% \fi% \fi% }% @@ -1104,14 +1112,14 @@ % \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 +% mit \cs{vphantom} eingefügt}^^A +% \changes{v2.02}{2014/12/04}{Zentrierung des Zeilentextes}^^A % Befehl zur Ausgabe der ersten und evtl. zweiten Textzeile im TUD-Kopf % \begin{macrocode} \newcommand*\tud@head@text@write[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}}% + ][\dimexpr\depth+\tud@dim@heavyline\relax]{#1\vphantom{gjpqy\"A\"O\"U}}% } % \end{macrocode} % \end{macro}^^A \tud@head@text@write @@ -1120,7 +1128,7 @@ % Textbreite, was bei besonders kleinen Papierformaten geschehen kann. % \begin{macrocode} \newcommand\tud@head@text@wrn[1]{% - \ClassWarning{\tudcls@name}{% + \ClassWarning{\TUDClassName}{% The given entries for the headline\MessageBreak% (faculty, institute etc.) are #1\MessageBreak% too wide for the textwidth% @@ -1129,24 +1137,56 @@ } % \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% +% \begin{macro}{\tud@newlayerbox} +% \changes{v2.04}{2015/05/31}{neu}^^A +% \begin{macro}{\tud@savelayerbox} +% \changes{v2.04}{2015/05/31}{neu}^^A +% \begin{macro}{\tud@uselayerbox} +% \changes{v2.04}{2015/05/31}{neu}^^A +% Die Inhalte für Kopf und Fuß der \pgs{tudheadings}-Seitenstile~-- sprich das +% Logo der \TnUD, die \DDC-Logos, ein mögliches Zweilogo sowie die Logos und +% Inhalte im Fuß werden in Boxen gesetzt, um die Anzahl der benötigten Aufrufe +% von \cs{includegraphics} möglichst gering zu halten. +% \begin{macrocode} +\newcommand*\tud@newlayerbox[1]{% + \expandafter\newsavebox\csname tud@logo@#1\endcsname% +} +\newcommand*\tud@savelayerbox[1]{% + \global\expandafter\sbox\csname tud@logo@#1\endcsname% +} +\newcommand*\tud@uselayerbox[1]{% + \expandafter\usebox\csname tud@logo@#1\endcsname% } % \end{macrocode} -% \end{macro}^^A \tud@mainlogo@wrn +% \end{macro}^^A \tud@uselayerbox +% \end{macro}^^A \tud@savelayerbox +% \end{macro}^^A \tud@newlayerbox +% \begin{macro}{\tud@vlayerbox} +% \changes{v2.04}{2015/05/31}{neu}^^A +% Für die Ausgabe der Logos und Inhalte wird dieser Befehl definiert. Dieser +% setzt die im zweiten Argument angegebenen Inhalte in eine vertikale Box, +% deren gewünschte Höhe im ersten Argument angegeben wird. Für den Fall, dass +% die gewünschten Inhalte die maximale Höhe überschreiten, wird eine Warnung +% erzeugt. Der Inhalt dieser Warnung wird im dritten Argument angegeben. Damit +% soll dem Anwender geholfen werden, in diesem Fall die richtigen Maßnahmen zu +% ergreifen und nicht lediglich eine Meldung einer zu übervollen \cs{vbox} zu +% erhalten. +% \begin{macrocode} +\newcommand*\tud@vlayerbox[3]{% + \begingroup% + \setbox\z@\vbox{#2}% + \setlength\@tempdima{\dimexpr\ht\z@+\dp\z@-#1\relax}% + \ifdim\@tempdima>\z@\relax% + \ClassWarning{\TUDClassName}{% + #3\MessageBreak% + The maximum height is exceeded by \the\@tempdima% + }% + \fi% + \endgroup% + \vbox to #1{#2}% +} +% \end{macrocode} +% \end{macro}^^A \tud@vlayerbox % % \iffalse % @@ -1155,12 +1195,31 @@ % % \subsection{Befehle, Optionen und Umsetzung der Seitenstilvarianten} % +% \begin{macro}{\tud@iftudps} +% \changes{v2.02}{2014/06/23}{neu}^^A +% \begin{macro}{\tud@ps@list} +% \changes{v2.02}{2014/06/23}{neu}^^A +% Mit dem Befehl \cs{tud@iftudps} wird geprüft, ob der im ersten Argument +% gegebene Seitenstil~-- was auch das Makro \cs{currentpagestyle} sein kann, +% welches durch das Paket \pkg{scrlayer-scrpage} definiert wird und den +% aktuellen Seitenstil beinhaltet~-- einem aus der Liste \cs{tud@ps@list} +% entspricht. Ist dies der Fall, wird das zweite Argument ausgeführt, +% anderfalls das dritte. Die Liste \cs{tud@ps@list} wird bei der Definition der +% Seitenstile selbst gesetzt. +% \begin{macrocode} +\newcommand*\tud@ps@list{} +\newcommand*\tud@iftudps[3]{% + \xifinlist{\GetRealPageStyle{#1}}{\tud@ps@list}{#2}{#3}% +} +% \end{macrocode} +% \end{macro}^^A \tud@ps@list +% \end{macro}^^A \tud@iftudps % \begin{option}{ddc} -% \changes{v2.02}{2014/06/23}{automatische Logowahl}%^^A +% \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 +% \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 +% \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 @@ -1168,9 +1227,44 @@ % 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}{\if@tud@ddc@internal} +% \changes{v2.02}{2014/07/08}{neu}^^A +% \begin{macro}{\tud@clearpage@iftudps} +% \changes{v2.04}{2015/05/31}{neu}^^A +% \begin{macro}{\tud@pagestyle@iftudps} +% \changes{v2.04}{2015/05/31}{neu}^^A +% Dieser Schalter wird intern von den Optionen \opt{ddc}, \opt{ddchead} und +% \opt{ddcfoot} verwendet, um rekursive Aufrufe der optionen zu verhindern. +% \begin{macrocode} +\newif\if@tud@ddc@internal +% \end{macrocode} +% Bis zur Version~v2.02 wurden unterschiedliche Satzsiegel für den Seitenfuß +% mit und ohne \DDC-Logo verwendet. Damit dieser im Zweifelsfall umgestellt +% werden kann, wurde vor dem Ausführen der entsprechenden Optionen ein +% Seitenumbruch erzwungen und nach dem Verarbeiten der Optionen der aktuelle +% Seitenstil erneut aufgerufen. Die beiden folgenden Makros werden für dieses +% Unterfangen definiert, jedoch beider Abarbeitung der Optionen nur noch im +% Kompatibilitätmodus ausgeführt. +% \begin{macrocode} +\newcommand*\tud@clearpage@iftudps{% + \if@tud@ddc@internal\else\if@atdocument% + \tud@iftudps{\currentpagestyle}{\clearpage}{}% + \fi\fi% +} +\newcommand*\tud@pagestyle@iftudps{% + \if@tud@ddc@internal\else\if@atdocument% + \tud@iftudps{\currentpagestyle}{% + \expandafter\pagestyle\expandafter{\currentpagestyle}% + }{}% + \fi\fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@clearpage@iftudps +% \end{macro}^^A \tud@pagestyle@iftudps +% \end{macro}^^A \if@tud@ddc@internal % \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}, +% \changes{v2.02}{2014/06/23}{neu}^^A +% Dieses Makro definiert die gültigen Werte für die \DDC-Optionen \opt{ddc}, % \opt{ddchead} sowie \opt{ddcfoot}. % \begin{macrocode} \newcommand*\tud@ddc@switch{} @@ -1185,148 +1279,158 @@ } % \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 +% \changes{v2.02}{2014/06/23}{neu}^^A +% \begin{macro}{\if@tud@ddc@auto} +% \changes{v2.02}{2014/06/23}{neu}^^A % Die Option \opt{ddc}. % \begin{macrocode} +\newif\if@tud@ddc@auto \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. +% Im Kompatibiltätsmodus wird ein Seitenumbruch erzwungen. Anschließend wird +% die Option abgearbeitet. % \begin{macrocode} + \tud@ifverlower{2.04}{\tud@clearpage@iftudps}{}% \TUD@set@numkey{ddc}{tud@ddc}{\tud@ddc@switch}{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed% - \if@atdocument\iftudpagestyle{\currentpagestyle}{\clearpage}{}\fi% - \ifcase\tud@ddc\relax% - \@tud@ddc@autosetfalse% +% \end{macrocode} +% Wurde die Option \opt{ddc} intern durch \opt{ddchead} oder \opt{ddcfoot} +% aufgerufen, wird die automatische Auswahl des \DDC-Logos deaktiviert. +% \begin{macrocode} + \if@tud@ddc@internal% + \@tud@ddc@autofalse% \else% - \@tud@ddc@autosettrue% +% \end{macrocode} +% Andernfalls wird die automatische Auswahl aktiviert und die beiden Optionen +% \opt{ddchead} sowie \opt{ddcfoot} intern zurückgesetzt. +% \begin{macrocode} + \@tud@ddc@autotrue% + \@tud@ddc@internaltrue% + \TUDoptions{ddchead=false}% + \TUDoptions{ddcfoot=false}% + \@tud@ddc@internalfalse% \fi% % \end{macrocode} -% Abschließend wird der aktuelle Seitenstil erneut aufgerufen, um bei einem -% geänderten Fuß den notwendigen Satzspiegel zu laden. Dies ist jedoch nur -% notwendig, wenn die Option innerhalb des Dokumentes verwendet wurde. Siehe -% \cs{tud@beforeselectanypagestyle}. +% Sowohl die \DDC-Logos als auch ein mögliches Zweilogo (\cs{headlogo}) werden +% in den entsprechenden Layern durch Boxen ausgegeben. Die beiden Schalter +% führen zum Erneuern der dazugehörigen Logoboxen. Siehe die Beschreibung der +% Makros \cs{tud@headlogo@option@set} sowie \cs{tud@footlogo@option@set}. % \begin{macrocode} - \if@atdocument\expandafter\pagestyle\expandafter{\currentpagestyle}\fi% + \global\@tud@headlogo@option@settrue% + \global\@tud@footlogo@option@settrue% \fi% +% \end{macrocode} +% Abschließend wird im Kompatibilitätsmodus der aktuelle Seitenstil aufgerufen, +% um bei einem geänderten Fuß den notwendigen Satzspiegel zu laden. +% \begin{macrocode} + \tud@ifverlower{2.04}{\tud@pagestyle@iftudps}{}% } % \end{macrocode} -% \end{macro}^^A \if@tud@ddc@autoset +% \end{macro}^^A \if@tud@ddc@auto % \end{macro}^^A \tud@ddc % \begin{macro}{\tud@ddc@head} -% \changes{v2.03}{2015/01/22}{Bugfix Seitenstilauswahl bei Deaktivierung}%^^A +% \changes{v2.03}{2015/01/22}{Bugfix Seitenstilauswahl bei Deaktivierung}^^A % Die Option \opt{ddchead} dient zum zwingenden Setzen des \DDC-Logos im Kopf % der Seiten im Stil von \pgs{tudheadings}. % \begin{macrocode} \newcommand*\tud@ddc@head{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. +% Der Seitenumbruch im Kompatibilitätsmodus. % \begin{macrocode} - \if@tud@ddc@save\let\tud@ddc@save\tud@ddc@head\fi% + \tud@ifverlower{2.04}{\tud@clearpage@iftudps}{}% \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. +% Beim internen Aufruf soll lediglich der Wert des Schlüssels geändert werden. +% Wurde die Option durch den Anwender genutzt, werden die korrespondierenden +% Optionen zurückgesetzt. Der Aufruf der Option \opt{ddc} führt zum erneuten +% setzen der Logoboxen. % \begin{macrocode} \ifx\FamilyKeyState\FamilyKeyStateProcessed% - \if@tud@ddc@save% - \begingroup% - \let\tud@ddc@head\tud@ddc@save% - \if@atdocument\iftudpagestyle{\currentpagestyle}{\clearpage}{}\fi% - \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% - \if@atdocument\expandafter\pagestyle\expandafter{\currentpagestyle}\fi% - \else% - \@tud@ddc@savefalse% - \TUDoptions{ddc=false}% + \if@tud@ddc@internal\else% + \@tud@ddc@internaltrue% \TUDoptions{ddcfoot=false}% - \@tud@ddc@savetrue% + \TUDoptions{ddc=false}% + \@tud@ddc@internalfalse% \fi% \fi% +% \end{macrocode} +% Das Setzen des Seitenstils im Kompatibilitätsmodus. +% \begin{macrocode} + \tud@ifverlower{2.04}{\tud@pagestyle@iftudps}{}% } % \end{macrocode} % \end{macro}^^A \tud@ddc@head % \begin{macro}{\tud@ddc@foot} -% \changes{v2.03}{2015/01/22}{Bugfix Seitenstilauswahl bei Deaktivierung}%^^A +% \changes{v2.03}{2015/01/22}{Bugfix Seitenstilauswahl bei Deaktivierung}^^A % Die Option \opt{ddcfoot} dient zum zwingenden Setzen des \DDC-Logos im Fuß % der Seiten im Stil von \pgs{tudheadings}. Das Vorgehen beim Umschalten des % Schlüssels ist äquivalent zur Option \opt{ddchead} % \begin{macrocode} \newcommand*\tud@ddc@foot{0} \TUD@key{ddcfoot}[true]{% - \if@tud@ddc@save\let\tud@ddc@save\tud@ddc@foot\fi% +% \end{macrocode} +% Der Seitenumbruch im Kompatibilitätsmodus. +% \begin{macrocode} + \tud@ifverlower{2.04}{\tud@clearpage@iftudps}{}% \TUD@set@numkey{ddcfoot}{tud@ddc@foot}{\tud@ddc@switch}{#1}% +% \end{macrocode} +% Beim internen Aufruf soll lediglich der Wert des Schlüssels geändert werden. +% Wurde die Option durch den Anwender genutzt, werden die korrespondierenden +% Optionen zurückgesetzt. Der Aufruf der Option \opt{ddc} führt zum erneuten +% setzen der Logoboxen. +% \begin{macrocode} \ifx\FamilyKeyState\FamilyKeyStateProcessed% - \if@tud@ddc@save% - \begingroup% - \let\tud@ddc@foot\tud@ddc@save% - \if@atdocument\iftudpagestyle{\currentpagestyle}{\clearpage}{}\fi% - \endgroup% - \fi% - \ifcase\tud@ddc@foot\relax% - \if@atdocument\expandafter\pagestyle\expandafter{\currentpagestyle}\fi% - \else% - \@tud@ddc@savefalse% - \TUDoptions{ddc=false}% + \if@tud@ddc@internal\else% + \@tud@ddc@internaltrue% \TUDoptions{ddchead=false}% - \@tud@ddc@savetrue% + \TUDoptions{ddc=false}% + \@tud@ddc@internalfalse% \fi% \fi% +% \end{macrocode} +% Das Setzen des Seitenstils im Kompatibilitätsmodus. +% \begin{macrocode} + \tud@ifverlower{2.04}{\tud@pagestyle@iftudps}{}% } % \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. +% \changes{v2.02}{2014/06/23}{neu}^^A +% Dieses Hilfsmakro wird aufgerufen, wenn geprüft wird, welche Einstellungen +% für Kopf und Fuß des Seitenstiles \pgs{tudheadings} zum Tragen kommen sollen. +% Dabei wird über den Schalter \cs{if@tud@ddc@auto}festgelegt, ob die Auswahl +% des \DDC-Logos automatisch erfolgen soll~-- Option \opt{ddc} wurde verwendet. +% Ist dies der Fall, wird das Logo standardmäßig im Kopf gesetzt. Ist jedoch +% durch den Befehl \cs{headlogo} ein Zweitlogo angegeben worde, wird dieses in +% der Fußzeile ausgegeben. Die Verwendung einer der Optionen \opt{ddchead} bzw. +% \opt{ddcfoot} forciert die Ausgabe des \DDC-Logos an der gewünschten Stelle. +% Die jeweils gültige Auswahl für Kopf bzw. Fuß wird in den Makros \cs{@tempa} +% bzw. \cs{@tempb} geschrieben und kann anschließend ausgewertet werden. % \begin{macrocode} \newcommand*\tud@ddc@check{% \let\@tempa\tud@ddc@head% \let\@tempb\tud@ddc@foot% - \if@tud@ddc@autoset% - \ifx\tud@@headlogo\@empty% + \if@tud@ddc@auto% + \ifdefvoid{\@headlogo}{% \let\@tempa\tud@ddc% \let\@tempb\z@% - \else% + }{% \let\@tempa\z@% \let\@tempb\tud@ddc% - \fi% + }% \fi% - \iftudscrverlower{2.03}{% - \ifcase\@tempb\relax\ifx\tud@@footlogo\@empty\else\let\@tempb\m@ne\fi\fi% +% \end{macrocode} +% Für die Satzspiegelvergrößerung wird beim Vorhandensein eines oder mehrerer +% Logos im Fuß die Variable \cs{@tempb} auf einen negativen Wert gesetzt, um +% auch ohne die Ausgabe eines \DDC-Logos den Fußbereich zu vergrößern. +% \begin{macrocode} + \tud@ifverlower{2.03}{% + \ifnum\@tempb=\z@\relax% + \ifdefvoid{\@footlogo}{}{\let\@tempb\m@ne}% + \fi% }{}% } % \end{macrocode} @@ -1334,27 +1438,6 @@ % \end{option}^^A ddcfoot % \end{option}^^A ddchead % \end{option}^^A ddc -% \begin{macro}{\iftudpagestyle} -% \changes{v2.02}{2014/06/23}{neu}%^^A -% \begin{macro}{\tud@ps@list} -% \changes{v2.02}{2014/06/23}{neu}%^^A -% Mit dem Befehl \cs{iftudpagestyle} wird geprüft, ob der im ersten Argument -% gegebene Seitenstil~-- was auch das Makro \cs{currentpagestyle} sein kann, -% welches durch das Paket \pkg{scrlayer-scrpage} definiert wird und den -% aktuellen Seitenstil beinhaltet~-- einem aus der Liste \cs{tud@ps@list} -% entspricht. Ist dies der Fall, wird das zweite Argument ausgeführt, -% anderfalls das dritte. -% \begin{macrocode} -\newcommand*\iftudpagestyle[3]{% - \xifinlist{\GetRealPageStyle{#1}}{\tud@ps@list}{#2}{#3}% -} -\newcommand*\tud@ps@list{} -\forcsvlist{\listadd\tud@ps@list}{% - tudheadings,plain.tudheadings,empty.tudheadings% -} -% \end{macrocode} -% \end{macro}^^A \tud@ps@list -% \end{macro}^^A \iftudpagestyle % \begin{option}{extrabottommargin} % \begin{length}{\tud@dim@extrabottommargin} % Diese Option dient dazu, die Höhe des Fußes anzupassen. Dies ist jedoch nur @@ -1377,148 +1460,508 @@ %<*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{% +% \begin{macro}{\tud@logo@main@black} +% \changes{v2.04}{2015/05/31}{neu}^^A +% \begin{macro}{\tud@logo@main@HKS41} +% \changes{v2.04}{2015/05/31}{neu}^^A +% \begin{macro}{\tud@logo@main@white} +% \changes{v2.04}{2015/05/31}{neu}^^A +% Diese drei Boxen werden für das Logo der \TnUD reserviert. Abhängig von der +% gewählten Option des Layouts und der Seitenfarbe wird eine der Logos in der +% notwendigen Farbe ausgewählt. +% \begin{macrocode} +\tud@newlayerbox{main@black} +\tud@newlayerbox{main@HKS41} +\tud@newlayerbox{main@white} +% \end{macrocode} +% \end{macro}^^A \tud@logo@main@white +% \end{macro}^^A \tud@logo@main@HKS41 +% \end{macro}^^A \tud@logo@main@black +% \begin{macro}{\tud@mainlogo@set} +% \changes{v2.04}{2015/05/31}{neu}^^A +% \begin{macro}{\if@tud@mainlogo@wrn} +% \changes{v2.04}{2015/05/31}{neu}^^A +% \begin{length}{\tud@mainlogoheight} +% \changes{v2.04}{2015/05/31}{neu}^^A +% \begin{macro}{\tud@mainlogo@wrn} +% \changes{v2.02}{2014/06/23}{Umbenennen von \cs{tud@head@logo@wrn}}^^A +% \begin{macrocode} +\newlength\tud@mainlogoheight +\newcommand*\tud@mainlogo@wrn[1]{} +% \end{macrocode} +% Dieses Makro setzt zu einen das Logo der \TnUD als auch~-- durch den Aufruf +% der entsprechenden Befehle zum Schluss~-- alle weiteren Logos und Inhalte im +% Kopf und Fuß. Dies geschieht nach jeder Satzspiegeländerung beim Ausführen +% der einzelnen Seitenstil-Layer. Dafür wird \cs{if@tud@mainlogo@set} im Hook +% \cs{tud@AfterChangingArea} gesetzt. +% \begin{macrocode} +\newif\if@tud@mainlogo@set +\newcommand*\tud@mainlogo@set{% + \if@tud@mainlogo@set% + \def\@tempa{\includegraphics[keepaspectratio,width=\tud@dim@logowidth]}% + \tud@savelayerbox{main@black}{\@tempa{TUD-black}}% + \tud@savelayerbox{main@HKS41}{\@tempa{TUD-blue}}% + \tud@savelayerbox{main@white}{\@tempa{TUD-white}}% + \setlength\tud@mainlogoheight{\ht\tud@logo@main@black}% + \global\tud@mainlogoheight=\tud@mainlogoheight% % \end{macrocode} % Es soll sichergestellt werden, dass das bei der Verwendung von \pkg{typearea} % über den Satzspiegel in den Seitenrand hinausragende TUD-Logo nicht außerhalb -% des Druckrandes liegt. Dies kann beispielsweise bei 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. +% des Druckrandes liegt. Dies kann beispielsweise bei kleinen Papierformaten, +% zweiseitigem Satz und/oder einem zu großen \opt{DIV}-Wertes passieren. Es +% wird in diesem Fall eine Warnung ausgegeben, damit das Problem durch den +% Anwender behoben werden kann. +% \begin{macrocode} + \gdef\tud@mainlogo@wrn##1{% + \ifdim##1<\ta@bcor\relax% + \ClassWarning{\TUDClassName}{% + The selected page layout means that the\MessageBreak% + logo of TUD extends beyond the printing area.\MessageBreak% + The inner margin is smaller than BCOR\MessageBreak% + (`BCOR=\the\ta@bcor', inner margin is \the##1)\MessageBreak% + Maybe you should decrease the current value\MessageBreak% + of DIV (`DIV=\the\ta@div')% + }% + \global\let\tud@mainlogo@wrn\@gobble% + \fi% + }% +% \end{macrocode} +% Hier werden die beiden Makros aufgerufen, um die Inhalte von Kopf und Fuß in +% den Boxen in der richtigen Größe neu zu setzen. % \begin{macrocode} - \setlength\@tempdima{% - \dimexpr\oddsidemargin+1in+\tud@dim@logox-\tud@dim@widemargin\relax% - }% - \ifdim\@tempdima<\ta@bcor\relax\tud@mainlogo@wrn{\the\@tempdima}\fi% + \tud@headlogo@set% + \tud@footlogo@set% + \global\@tud@mainlogo@setfalse% + \fi% +} % \end{macrocode} -% Es wird das Standardlogo festgelegt und dieses ggf. für eine andere Kopffarbe -% geändert. +% \end{macro}^^A \tud@mainlogo@wrn +% \end{length}^^A \tud@mainlogoheight +% \end{macro}^^A \if@tud@mainlogo@set +% \end{macro}^^A \tud@mainlogo@set +% \begin{macro}{\tud@mainlogo@use} +% \changes{v2.04}{2015/05/31}{neu}^^A +% \begin{macro}{\tud@mainlogo} +% \changes{v2.04}{2015/05/31}{entfernt}^^A +% \begin{macro}{\tud@@mainlogo} +% \changes{v2.04}{2015/05/31}{entfernt}^^A +% Hiermit erfolgt die Ausgabe der gespeicherten Boxen für das Logo der \TnUD, +% wobei \cs{tud@head@logocolor} die Farbe festlegt. % \begin{macrocode} - \def\tud@@mainlogo{TUD-black}% - \ifstr{\tud@head@logocolor}{HKS41}{\def\tud@@mainlogo{TUD-blue}}{}% - \ifstr{\tud@head@logocolor}{cddarkblue}{\def\tud@@mainlogo{TUD-blue}}{}% - \ifstr{\tud@head@logocolor}{white}{\def\tud@@mainlogo{TUD-white}}{}% - \includegraphics[keepaspectratio,width=\tud@dim@logowidth]{\tud@@mainlogo}% +\newcommand*\tud@mainlogo@use{% + \tud@mainlogo@wrn{% + \dimexpr\oddsidemargin+1in+\tud@dim@logox-\tud@dim@widemargin\relax% + }% + \tud@uselayerbox{main@\tud@head@logocolor}% } % \end{macrocode} % \end{macro}^^A \tud@@mainlogo % \end{macro}^^A \tud@mainlogo +% \end{macro}^^A \tud@mainlogo@use +% \begin{macro}{\tud@logo@head@black} +% \changes{v2.04}{2015/05/31}{neu}^^A +% \begin{macro}{\tud@logo@head@HKS41} +% \changes{v2.04}{2015/05/31}{neu}^^A +% \begin{macro}{\tud@logo@head@white} +% \changes{v2.04}{2015/05/31}{neu}^^A +% \begin{macro}{\tud@logo@head@option} +% \changes{v2.04}{2015/05/31}{neu}^^A +% Diese Boxen werden für das \DDC-Logo und das Zweitlogo im Kopf definiert. Der +% Box \cs{tud@logo@head@option} fäält dabei die Rolle zu, entweder ein~-- per +% Option gewähltes~-- \DDC-Logo oder aber das mit \cs{headlogo} angegebene +% Zweitlogo zusichern und auszugeben. Die anderen drei Boxen speichern das Logo +% von \DDC in den drei für die unterschiedlichen Layoutausprägung benötigten +% Varianten. +% \begin{macrocode} +\tud@newlayerbox{head@black} +\tud@newlayerbox{head@HKS41} +\tud@newlayerbox{head@white} +\tud@newlayerbox{head@option} +% \end{macrocode} +% \end{macro}^^A \tud@logo@head@option +% \end{macro}^^A \tud@logo@head@white +% \end{macro}^^A \tud@logo@head@HKS41 +% \end{macro}^^A \tud@logo@head@black % \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 +% \changes{v2.02}{2014/06/23}{Anpassung an automatische Wahl des \DDC-Logos}^^A +% \begin{macro}{\@headlogo} +% \changes{v2.02}{2014/06/23}{neu}^^A +% \begin{macro}{\@@headlogo} +% \changes{v2.02}{2014/06/23}{neu}^^A % \begin{macro}{\tud@headlogo@wrn} -% \changes{v2.02}{2014/06/23}{neu}%^^A +% \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} +% \cs{@headlogo} und das optionale Argument in \cs{@@headlogo} % gespeichert, damit diese später über \cs{tud@headlogo} an den Befehl % \cs{includegraphics} weitergereicht werden können. % \begin{macrocode} +\newcommand*\@headlogo{} +\newcommand*\@@headlogo{} +\newcommand*\tud@headlogo@wrn{} \newcommand*\headlogo[2][]{% - \if@atdocument\iftudpagestyle{\currentpagestyle}{\clearpage}{}\fi% - \def\tud@@headlogo{#2}% - \def\tud@@@headlogo{#1}% - \if@atdocument\expandafter\pagestyle\expandafter{\currentpagestyle}\fi% + \tud@ifverlower{2.04}{\tud@clearpage@iftudps}{}% + \def\@headlogo{#2}% + \def\@@headlogo{#1}% +% \end{macrocode} +% Nachdem Setzen des Zweitlogos müssen die entsprechenden Boxen mit den Logos +% von \DDC neu gesetzt werden. Weil dieses dabei vom Kopf in den Fuß oder +% umgekehrt wandern könnte, werden beide relevanten Makros ausgeführt. +% \begin{macrocode} + \global\@tud@headlogo@option@settrue% + \global\@tud@footlogo@option@settrue% + \gdef\tud@headlogo@wrn{% + \ClassWarning{\TUDClassName}{% + The secondary logo `\string\headlogo{\@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% + }% + \tud@ifverlower{2.04}{\tud@pagestyle@iftudps}{}% } -\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@logocolor}{HKS41}{\def\tud@@headlogo{DDC-27}}{}% - \ifstr{\tud@head@logocolor}{cddarkblue}{\def\tud@@headlogo{DDC-27}}{}% - \ifstr{\tud@head@logocolor}{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}% +% \end{macrocode} +% \end{macro}^^A \tud@headlogo@wrn +% \end{macro}^^A \@@headlogo +% \end{macro}^^A \@headlogo +% \end{macro}^^A \headlogo +% \begin{macro}{\tud@headlogo@set} +% \changes{v2.04}{2015/05/31}{neu}^^A% \DDC-Logos übernommen und erweitert}^^A +% \begin{macro}{\tud@headlogo@option@set} +% \changes{v2.04}{2015/05/31}{neu}^^A +% \begin{macro}{\if@tud@headlogo@option@set} +% \changes{v2.04}{2015/05/31}{neu}^^A +% Äquivalent zum Logo der \TnUD werden auch für das Logo von \DDC drei +% Farbvarianten erstellt. +% \begin{macrocode} +\newcommand*\tud@headlogo@set{% + \def\@tempa{% + \includegraphics[keepaspectratio,totalheight=\tud@mainlogoheight]% + }% + \tud@savelayerbox{head@black}{\@tempa{DDC-24}}% + \tud@savelayerbox{head@HKS41}{\@tempa{DDC-27}}% + \tud@savelayerbox{head@white}{\@tempa{DDC-30}}% + \tud@headlogo@option@set% +} +% \end{macrocode} +% Hiermit werden die \DDC-Optionen \opt{ddc} bzw. \opt{ddchead} abgearbeitet +% sowie ein ggf. gegebenes Zweitlogo gespeichert. Dies geschieht beim Aufruf +% des passenden Layers, falls der Schalter \cs{if@tud@headlogo@option@set} +% gesetzt wurde. +% \begin{macrocode} +\newif\if@tud@headlogo@option@set +\newcommand*\tud@headlogo@option@set{% + \if@tud@headlogo@option@set% + \def\@tempc##1##2{% + \tud@savelayerbox{head@option}{% + \includegraphics[% + keepaspectratio,totalheight=\tud@mainlogoheight,##2% + ]{\trim@spaces{##1}}% + }% + }% + \tud@savelayerbox{head@option}{}% + \tud@ddc@check% + \ifcase\@tempa\relax% \tud@ddc@head=false + \ifdefvoid{\@headlogo}{}{% + \protected@edef\@tempb{\noexpand\@tempc{\@headlogo}{\@@headlogo}}% + \@tempb% + }% + \or\or% \tud@ddc@head=color + \@tempc{DDC-03}{}% + \or% \tud@ddc@head=colorblack + \@tempc{DDC-09}{}% + \or% \tud@ddc@head=gray + \@tempc{DDC-21}{}% + \or% \tud@ddc@head=black + \@tempc{DDC-24}{}% + \or% \tud@ddc@head=blue + \@tempc{DDC-27}{}% + \or% \tud@ddc@head=white + \@tempc{DDC-30}{}% + \fi% + \global\@tud@headlogo@option@setfalse% \fi% - \ifx\tud@@headlogo\@empty\else% - \settoheight\@tempdima{\tud@mainlogo}% - \protected@epreto\tud@@@headlogo{% - keepaspectratio,totalheight=\the\@tempdima,% +} +% \end{macrocode} +% \end{macro}^^A \if@tud@headlogo@option@set +% \end{macro}^^A \tud@headlogo@option@set +% \end{macro}^^A \tud@headlogo@set +% \begin{macro}{\tud@headlogo@use} +% \changes{v2.04}{2015/05/31}{neu}^^A +% Die Ausgabe von \DDC- oder Zweitlogo im Kopf erfolgt mit diesem Makro. Dabei +% werden diese in einer Box vertikal zentriert. +% \begin{macrocode} +\newcommand*\tud@headlogo@use{% + \tud@vlayerbox{\tud@mainlogoheight}{% + \vss% + \hbox{% + \tud@ddc@check% + \ifnum\@tempa=\@ne\relax% \tud@ddc@head=true + \tud@uselayerbox{head@\tud@head@logocolor}% + \else% + \tud@uselayerbox{head@option}% + \fi% + }% + \vss% + }{% + The given `\string\headlogo{\@headlogo}' is too large.% + } + \ifdefvoid{\@headlogo}{}{% + \tud@ddc@check% + \ifnum\@tempa>\z@\relax\tud@headlogo@wrn\fi% + }% +} +% \end{macrocode} +% \end{macro}^^A \tud@headlogo@use +% \begin{macro}{\tud@logo@foot@black} +% \changes{v2.04}{2015/06/01}{neu}^^A +% \begin{macro}{\tud@logo@foot@HKS41} +% \changes{v2.04}{2015/06/01}{neu}^^A +% \begin{macro}{\tud@logo@foot@white} +% \changes{v2.04}{2015/06/01}{neu}^^A +% \begin{macro}{\tud@logo@foot@option} +% \changes{v2.04}{2015/06/01}{neu}^^A +% Im Fußbereich kann das \DDC-Logo rechtsbündig ausgegeben. Hierfür werden die +% entsprechenden Boxen für alle Farbvarianten definiert. Diese werden genutzt, +% wenn entweder die Option \opt{ddcfoot} oder aber \opt{ddc} in Verbindung mit +% einem Zweitlogo (\cs{headlogo}) genutzt wird. +% \begin{macrocode} +\tud@newlayerbox{foot@black} +\tud@newlayerbox{foot@HKS41} +\tud@newlayerbox{foot@white} +\tud@newlayerbox{foot@option} +% \end{macrocode} +% \end{macro}^^A \tud@logo@foot@option +% \end{macro}^^A \tud@logo@foot@white +% \end{macro}^^A \tud@logo@foot@HKS41 +% \end{macro}^^A \tud@logo@foot@black +% \begin{length}{\footlogoheight} +% \changes{v2.03}{2015/01/27}{neu}^^A +% \begin{length}{\tud@footlogoheight} +% \changes{v2.04}{2015/06/01}{neu}^^A +% \begin{macro}{\tud@footlogoheight@set} +% \changes{v2.04}{2015/04/21}{neu}^^A +% Für den Anwender besteht mit der Länge \cs{footlogoheight} die Möglichkeit, +% die Höhe aller Logos im Fußbereich~-- also \DDC-Logo sowie weitere, mit dem +% Befehl \cs{footlogo} angegebene Logos~-- zentral festzulegen. Dabei wird +% die Länge nicht direkt genutzt, sondern intern \cs{tud@footlogoheight} +% verwendet. mit \cs{tud@footlogoheight@set} wird geprüft, ob der Anwender +% \cs{footlogoheight} tatsächlich angepasst hat. Sollte dies der Fall sein, +% wird \cs{tud@footlogoheight@set} auf diesen Wert gesetzt, andernfalls werden +% die hinterlegten Standardwerte verwendet. +% \begin{macrocode} +\newlength\footlogoheight +\newlength\tud@footlogoheight +\newcommand*\tud@footlogoheight@set{% + \ifdim\footlogoheight=\z@\relax% + \tud@ifverlower{2.03}{% + \setlength\tud@footlogoheight{.6\tud@dim@topmargin}% + }{% + \setlength\tud@footlogoheight{\tud@mainlogoheight}% }% - \expandafter\includegraphics\expandafter[\tud@@@headlogo]{\tud@@headlogo}% + \else% +% \end{macrocode} +% Der Grund für die Verwendung einer internen Länge \cs{tud@footlogoheight} +% liegt darin begründet, dass eine Änderung der Länge \cs{footlogoheight} eine +% Erneuerung der genutzten Boxen benötigt. Die Prüfung und ggf. das Setzen des +% entsprechenden Schalters geschieht hier. +% \begin{macrocode} + \ifdim\footlogoheight=\tud@footlogoheight\relax\else% + \setlength\tud@footlogoheight{\footlogoheight}% + \global\@tud@footlogo@option@settrue% + \fi% \fi% + \global\tud@footlogoheight=\tud@footlogoheight% } -\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'% +% \end{macrocode} +% \end{macro}^^A \tud@footlogoheight@set +% \end{length}^^A \tud@footlogoheight +% \end{length}^^A \footlogoheight +% \begin{macro}{\tud@footlogo@set} +% \changes{v2.04}{2015/06/01}{neu}^^A +% \begin{macro}{\tud@footlogo@ddc@set} +% \changes{v2.04}{2015/06/01}{neu}^^A +% \begin{macro}{\tud@footlogo@option@set} +% \changes{v2.04}{2015/06/01}{neu}^^A +% \begin{macro}{\if@tud@footlogo@option@set} +% \changes{v2.04}{2015/06/01}{neu}^^A +% Auch im Fuß werden für das \DDC-Logo verschiedene Boxen für die Farbvarianten +% \val{black}, \val{HKS41} und \val{white} sowie eine für die gezielte Auswahl +% über die Optionen \opt{ddc} bzw. \opt{ddcfoot} erstellt. Dafür wird zunächst +% das Makro \cs{tud@footlogo@ddc@set} definiert. +% \begin{macrocode} +\newcommand*\tud@footlogo@ddc@set[2]{% + \tud@footlogoheight@set% + \tud@savelayerbox{foot@#1}{% + \includegraphics[keepaspectratio,totalheight=\tud@footlogoheight]{#2}% }% - \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 +% anschließend erfolgt das eigentliche Setzen der Boxen. +% \begin{macrocode} +\newcommand*\tud@footlogo@set{% + \tud@footlogo@ddc@set{black}{DDC-22}% + \tud@footlogo@ddc@set{HKS41}{DDC-25}% + \tud@footlogo@ddc@set{white}{DDC-28}% + \tud@footlogo@option@set% +} +% \end{macrocode} +% Hiermit werden die \DDC-Optionen \opt{ddc} bzw. \opt{ddcfoot} abgearbeitet. +% Dies geschieht bei der Ausgabe des dazugehörigen Layers, falls hierfür der +% entsprechende Schalter \cs{if@tud@footlogo@option@set} gesetzt wurde. +% \begin{macrocode} +\newif\if@tud@footlogo@option@set +\newcommand*\tud@footlogo@option@set{% + \if@tud@footlogo@option@set% + \tud@ddc@check% + \ifcase\@tempb\relax\or\or% \tud@ddc@foot=color + \tud@footlogo@ddc@set{option}{DDC-01}% + \or% \tud@ddc@foot=colorblack + \tud@footlogo@ddc@set{option}{DDC-07}% + \or% \tud@ddc@foot=gray + \tud@footlogo@ddc@set{option}{DDC-19}% + \or% \tud@ddc@foot=black + \tud@footlogo@ddc@set{option}{DDC-22}% + \or% \tud@ddc@foot=blue + \tud@footlogo@ddc@set{option}{DDC-25}% + \or% \tud@ddc@foot=white + \tud@footlogo@ddc@set{option}{DDC-28}% + \fi% + \global\@tud@footlogo@option@setfalse% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \if@tud@footlogo@option@set +% \end{macro}^^A \tud@footlogo@option@set +% \end{macro}^^A \tud@footlogo@ddc@set +% \end{macro}^^A \tud@footlogo@set +% \begin{macro}{\tud@footlogo@ddc@use} +% \changes{v2.04}{2015/06/01}{neu}^^A +% Die Ausgabe des \DDC-Logos im Fuß erfolgt mit diesem Makro. Dabei wird dieses +% in einer Box optisch~-- leicht nach oben verschoben~-- vertikal zentriert. +% \begin{macrocode} +\newcommand*\tud@footlogo@ddc@use[1]{% + \tud@vlayerbox{#1}{% + \vss% + \hbox{% + \tud@ddc@check% + \ifcase\@tempb\relax\or% \tud@ddc@foot=true + \tud@uselayerbox{foot@\tud@foot@logocolor}% + \else% + \tud@uselayerbox{foot@option}% + \fi% + }% + \vss\vss% + }{% + The `\string\footlogoheight' (\the\footlogoheight) is too\MessageBreak% + high. You should reduce this length.% + \ifcase\tud@geometry\relax\else% true/symmetric/twoside + \MessageBreak% + Alternatively you can enlarge the bottom margin\MessageBreak% + by using option `extrabottommargin'.% + \fi% + }% +} +% \end{macrocode} +% \end{macro}^^A \tud@footlogo@ddc@use +% \begin{macro}{\tud@ddclogo} +% \changes{v2.02}{2014/06/23}{neu}^^A +% \changes{v2.04}{2015/06/01}{entfernt}^^A +% \begin{macro}{\tud@@ddclogo} +% \changes{v2.02}{2014/06/23}{\cs{tud@foot@logo} umbenannt}^^A +% \changes{v2.03}{2015/01/13}{Größe des Logos kompatibilitätsabhängig}^^A +% \changes{v2.04}{2015/06/01}{entfernt}^^A +% \begin{macro}{\tud@ddc@sethead} +% \changes{v2.02}{2014/06/23}{entfernt}^^A +% \begin{macro}{\tud@ddc@setfoot} +% \changes{v2.02}{2014/06/23}{entfernt}^^A +% Diese Befehle wurden mit der \TUDScript-Version~v2.02 bzw. v2.04~-- bei der +% Umstellung auf die Ausgabe mit Boxen~-- entfernt. Für deren Funktionalität +% sind seitdem die Makros \cs{tud@footlogo@set} und \cs{tud@footlogo@ddc@use} +% zuständig. +% \end{macro}^^A \tud@ddc@setfoot +% \end{macro}^^A \tud@ddc@sethead +% \end{macro}^^A \tud@@ddclogo +% \end{macro}^^A \tud@ddclogo +% \begin{macro}{\tud@logo@foot@cmd} +% \changes{v2.04}{2015/06/01}{neu}^^A +% Für das Setzen von benutzerdefinierten Logos im Fußbereich wird diese Box +% verwendet. +% \begin{macrocode} +\tud@newlayerbox{foot@cmd} +% \end{macrocode} +% \end{macro}^^A \tud@logo@foot@cmd % \begin{macro}{\footlogo} -% \changes{v2.03}{2015/01/27}{neu}%^^A +% \changes{v2.03}{2015/01/27}{neu}^^A +% \begin{macro}{\@footlogo} +% \changes{v2.03}{2015/01/27}{neu}^^A +% \begin{macro}{\@@footlogo} +% \changes{v2.03}{2015/01/27}{neu}^^A % \begin{macro}{\footlogosep} -% \changes{v2.03}{2015/01/27}{neu}%^^A -% \begin{length}{\footlogoheight} -% \changes{v2.03}{2015/01/27}{neu}%^^A -% \begin{macro}{\tud@footlogo} -% \changes{v2.03}{2015/01/27}{neu}%^^A -% \changes{v2.03}{2015/02/02}{optionale Parameter datei-individuell nutzbar}%^^A -% \begin{macro}{\tud@footlogo@parser} -% \changes{v2.03}{2015/02/02}{neu}%^^A -% \begin{macro}{\tud@@footlogo} -% \changes{v2.03}{2015/01/27}{neu}%^^A -% \begin{macro}{\tud@@@footlogo} -% \changes{v2.03}{2015/01/27}{neu}%^^A +% \changes{v2.03}{2015/01/27}{neu}^^A % Mit dem Befehl \cs{footlogo} kann eine kommasparierte Liste für Logos im % Fuß angegeben werden, die mit \cs{footlogosep} voneinander getrennt werden. % \begin{macrocode} -\newlength\footlogoheight \newcommand*\footlogosep{\hfill} +\newcommand*\@footlogo{} +\newcommand*\@@footlogo{} \newcommand*\footlogo[2][]{% - \if@atdocument\iftudpagestyle{\currentpagestyle}{\clearpage}{}\fi% - \def\tud@@footlogo{#2}% - \def\tud@@@footlogo{#1}% - \if@atdocument\expandafter\pagestyle\expandafter{\currentpagestyle}\fi% + \tud@ifverlower{2.04}{\tud@clearpage@iftudps}{}% + \def\@footlogo{#2}% + \def\@@footlogo{#1}% + \global\@tud@footlogo@cmd@settrue% + \tud@ifverlower{2.04}{\tud@pagestyle@iftudps}{}% } -\newcommand*\tud@@footlogo{} -\newcommand*\tud@@@footlogo{} % \end{macrocode} -% Der Befehl \cs{tud@footlogo} wird genutzt, um die Logos für den Fuß innerhalb -% der Ebene \val{tudheadings.foot.logo} auszugeben. +% \end{macro}^^A \footlogosep +% \end{macro}^^A \@@footlogo +% \end{macro}^^A \@footlogo +% \end{macro}^^A \footlogo +% \begin{macro}{\tud@footlogo@cmd@set} +% \changes{v2.04}{2015/06/01}{neu}^^A +% \begin{macro}{\tud@footlogo@cmd@@set} +% \changes{v2.03}{2015/01/27}{neu}^^A +% \changes{v2.03}{2015/02/02}{optionale Parameter für unterschiedliche Dateien +% individuell nutzbar}^^A +% Die mit \cs{footlogo} angegeben Logos und die dazugehörigen Einstellungen, +% welche entweder allgemein über das optionale Argument oder aber individuell +% durch \val{:} an den Dateinamen angehängt übergeben wurden, werden hier in +% der Box \cs{tud@logo@foot@cmd} gespeichert. +% \begin{macrocode} +\newif\if@tud@footlogo@cmd@set +\newcommand*\tud@footlogo@cmd@set[2]{% + \if@tud@footlogo@cmd@set% + \tud@footlogoheight@set% + \tud@savelayerbox{foot@cmd}{% + \hbox to #2{% +% \end{macrocode} +% Hier erfolgt die eigentliche Abarbeitung der mit \cs{footlogo} angegeben +% Liste der benutzerdefinierten Logos. In \cs{@tempa} wird nach dem ersten +% Durchlauf der Schleife der Inhalkt von \cs{footlogosep} gespeichert und nach +% dem ersten Logo vor jedem weiteren eingefügt. Um versehentlich angegebene +% Leerzeichen zu entfernen, werden diese mit \cs{trim@spaces} entfernt. % \begin{macrocode} -\DeclareListParser{\tud@footlogo@parser}{:}% -\newcommand*\tud@footlogo[1]{% + \let\@tempa\relax% + \@for\@tempb:=\@footlogo\do{% + \edef\@tempb{\expandafter\trim@spaces\expandafter{\@tempb}}% + \@tempa% + \ifx\@tempb\@empty\else% + \expandafter\tud@footlogo@cmd@@set\expandafter{\@tempb}{#1}% + \fi% + \let\@tempa\footlogosep% + }% + \hss% + }% + }% + \global\@tud@footlogo@cmd@setfalse% + \fi% +} +% \end{macrocode} +% Der Befehl \cs{tud@footlogo@cmd@set} wird genutzt, um die einzelnen Logos für +% den Fuß nacheinander in der Box \cs{tud@logo@foot@cmd} zu setzen. +% \begin{macrocode} +\newcommand*\tud@footlogo@cmd@@set[2]{% \begingroup% % \end{macrocode} % Dabei soll es möglich sein, optionale Parameter an \cs{includegraphics} zu @@ -1538,76 +1981,179 @@ \expandafter\def\expandafter\@tempb\expandafter{\@tempb,##1}% \fi% }% - \tud@footlogo@parser{#1}% + \let\@tempc\relax% + \DeclareListParser{\@tempc}{:}% + \@tempc{#1}% +% \end{macrocode} +% In jedem Fall werden die Grundeinstellungen als erstes ausgeführt. +% \begin{macrocode} + \preto\@@footlogo{% + keepaspectratio,totalheight=\tud@footlogoheight,% + }% % \end{macrocode} % Wurden tatsächlich inidviduelle Parameter übergeben, so werden diese als % letztes ausgeführt, um vorige Einstellungen überschreiben zu können. % \begin{macrocode} - \protected@eappto\tud@@@footlogo{\@tempb}% + \appto\@@footlogo{\@tempb}% + \protected@edef\@tempc{\noexpand\includegraphics[\@@footlogo]{\@tempa}}% % \end{macrocode} -% In jedem Fall werden die Grundeinstellungen als erstes ausgeführt. +% Die Logos werden~-- wie auch das \DDC-Logo im Fuß~-- individuell optisch +% vertikal zentriert. % \begin{macrocode} - \protected@epreto\tud@@@footlogo{% - keepaspectratio,totalheight=\the\footlogoheight,% - }% - \protected@edef\@tempc{\noexpand\includegraphics[\tud@@@footlogo]{\@tempa}}% - \vbox to \dimexpr\layerheight-\dp\strutbox\relax{% - \vfil\hbox{\@tempc}\vfil\vfil% + \tud@vlayerbox{#2}{\vss\hbox{\@tempc}\vss\vss}{% + The given `\string\footlogo{\@tempa}' is too large.% }% \endgroup% } % \end{macrocode} -% \end{macro}^^A \tud@@@footlogo -% \end{macro}^^A \tud@@footlogo -% \end{macro}^^A \tud@footlogo@parser -% \end{macro}^^A \tud@footlogo -% \end{length}^^A \footlogoheight -% \end{macro}^^A \footlogosep -% \end{macro}^^A \footlogo -% \begin{macro}{\tud@ddclogo} -% \changes{v2.02}{2014/06/23}{neu}%^^A -% \begin{macro}{\tud@@ddclogo} -% \changes{v2.02}{2014/06/23}{neu, \cs{tud@foot@logo} umbenannt}%^^A -% \changes{v2.03}{2015/01/13}{Größe des Logos kompatibilitätsabhängig}%^^A -% Diese Befehle dienen zum Einbinden des \DDC-Logos im Fuß der Seiten im Stil -% \pgs{tudheadings}. +% \end{macro}^^A \if@tud@footlogo@cmd@set +% \end{macro}^^A \tud@footlogo@cmd@set +% \begin{macro}{\tud@footlogo@cmd@@use} +% \changes{v2.04}{2015/06/01}{neu}^^A +% Der Befehl \cs{tud@footlogo@cmd@use} wird genutzt, um die einzelnen Logos für +% den Fuß innerhalb der Ebene \val{tudheadings.foot.content} auszugeben. +% \begin{macrocode} +\newcommand*\tud@footlogo@cmd@use{\tud@uselayerbox{foot@cmd}}% +% \end{macrocode} +% \end{macro}^^A \tud@footlogo@cmd@use +% \begin{KOMAfont}{tudheadings} +% \changes{v2.04}{2015/04/21}{neu}^^A +% \begin{macro}{\footcontent} +% \changes{v2.04}{2015/04/21}{neu}^^A +% \begin{macro}{\@footcontent} +% \changes{v2.04}{2015/04/21}{neu}^^A +% \begin{macro}{\@@footcontent} +% \changes{v2.04}{2015/04/21}{neu}^^A +% \begin{macro}{\footcontent@font} +% \changes{v2.04}{2015/06/01}{neu}^^A +% \begin{macro}{\footcontent@left} +% \changes{v2.04}{2015/06/01}{neu}^^A +% \begin{macro}{\footcontent@right} +% \changes{v2.04}{2015/06/01}{neu}^^A +% Mit dem Befehl \cs{footcontent} kann der Inhalt für den Fußbereich der +% Seiten im Stil \pgs{tudheadings} festgelegt werden. Dieser wird mit passenden +% Schrifteinstellungen entweder einspaltig oder zweispaltig gesetzt. Die +% Sternversion des Befehls nimmt keinerlei Einstellungen für die Schrift vor. +% \begin{macrocode} +\newkomafont{tudheadings}{% + \sffamily% + \tud@color{\tud@foot@fontcolor}% +} +% \end{macrocode} +% Die mit \cs{footcontent} angegebenen Inhalte werden in diesen drei Makros +% gesichert, weshalb diese vorher alloziert werden. Anschließend erfolgt die +% Definition des Befehls. +% \begin{macrocode} +\newcommand*\tud@footcontent@font{} +\newcommand*\tud@footcontent@left{} +\newcommand*\tud@footcontent@right{} +\newcommand*\footcontent{% + \@ifstar{% + \@tempswafalse% + \@footcontent% + }{% + \@tempswatrue% + \@footcontent% + }% +} +% \end{macrocode} +% Normalerweise wird der Inhalt vollständig über die verfügbare Seitenfußbreite +% gesetzt. Wird das optionale Argument \emph{nach} dem obligatorischen genutzt, +% so erfolgt die Ausgabe zweispaltig. % \begin{macrocode} -\newcommand*\tud@@ddclogo{} -\newcommand*\tud@ddclogo{% - \tud@ddc@check% - \ifcase\@tempb\relax\or% - \def\tud@@ddclogo{DDC-22}% - \ifstr{\tud@foot@logocolor}{HKS41}{\def\tud@@ddclogo{DDC-25}}{}% - \ifstr{\tud@foot@logocolor}{cddarkblue}{\def\tud@@ddclogo{DDC-25}}{}% - \ifstr{\tud@foot@logocolor}{white}{\def\tud@@ddclogo{DDC-28}}{}% - \or% - \def\tud@@ddclogo{DDC-01}% - \or% - \def\tud@@ddclogo{DDC-07}% - \or% - \def\tud@@ddclogo{DDC-19}% - \or% - \def\tud@@ddclogo{DDC-22}% - \or% - \def\tud@@ddclogo{DDC-25}% - \or% - \def\tud@@ddclogo{DDC-28}% +\newcommand*\@footcontent[2][]{% + \kernel@ifnextchar[%] + {\@@footcontent{#1}{#2}}% + {\@@footcontent{#1}{#2}[\@nnil]}% +} +\newcommand*\@@footcontent{} +\def\@@footcontent#1#2[#3]{% + \if@tempswa% + \def\tud@footcontent@font{% + \usekomafont{tudheadings}% + \tud@divide\@tempa{\tud@head@font@size}{\f@size}% + \linespread{\@tempa}% + \selectfont% + \tud@head@font@light% + #1% + }% + \else% + \def\tud@footcontent@font{#1}% \fi% - \ifx\tud@@ddclogo\@empty\else% - \let\tud@@@footlogo\relax% - \hfill\tud@footlogo{\tud@@ddclogo}% + \def\tud@footcontent@left{#2}% + \def\tud@footcontent@right{#3}% +} +% \end{macrocode} +% \end{macro}^^A \footcontent@right +% \end{macro}^^A \footcontent@left +% \end{macro}^^A \footcontent@font +% \end{macro}^^A \@@footcontent +% \end{macro}^^A \@footcontent +% \end{macro}^^A \footcontent +% \end{KOMAfont}^^A tudheadings +% \begin{macro}{\tud@footcontent@use} +% \changes{v2.04}{2015/06/01}{neu}^^A +% Mit \cs{tud@footcontent@use} erfolgt die Ausgabe der mit \cs{footcontent} +% definierten Inhalte. Dabei wird darauf geachtet, ob ein \DDC-Logo im Fuß +% verwendet wird. +% \begin{macrocode} +\newcommand*\tud@footcontent@use[2]{% + \tud@ddc@check% + \ifcase\@tempb% + \setlength\@tempdimc{\z@}% + \else% + \settowidth\@tempdimc{\tud@uselayerbox{foot@black}}% + \addtolength\@tempdimc{\columnsep}% \fi% +% \end{macrocode} +% Äquivalent zu den Logos wird auch der frei definierbare Inhalt des Fußes mit +% einer vertikalen Box gesetzt. Mit \cs{@tempdimc} wird im Bedarfsfall der +% Freiraum für das \DDC-Logo bereitgestellt. +% \begin{macrocode} + \tud@vlayerbox{#1}{% + \vss% + \hbox to #2{% + \tud@footcontent@font% +% \end{macrocode} +% Wurde das optionale Argument nach dem obligatorischen nicht genutzt, so wird +% der Inhalt über die komplette Breite des Textbereiches ausgegeben. +% \begin{macrocode} + \expandafter\ifx\tud@footcontent@right\@nnil\relax% + \vtop{% + \hsize=\dimexpr#2-\@tempdimc\relax% + \strut\ignorespaces\tud@footcontent@left\strut% + }% +% \end{macrocode} +% Im zweispaltigen modus werden zwei vertikale Boxen erzeugt, zwischen denen +% der Abstand \cs{columnsep} eingefügt wird. +% \begin{macrocode} + \else% + \vtop{% + \hsize=\dimexpr(#2-\columnsep)/2\relax% + \strut\ignorespaces\tud@footcontent@left\strut% + }% + \hspace{\columnsep}% + \vtop{% + \hsize=\dimexpr(#2-\columnsep)/2-\@tempdimc\relax% + \strut\ignorespaces\tud@footcontent@right\strut% + }% + \fi% + \hss% + }% + \vss\vss% + }{% + The content for the footer (`\string\footcontent')\MessageBreak% + is too high. You should either reduce the content or\MessageBreak% + lower the fontsize via the optional argument.% + \ifcase\tud@geometry\relax\else% true/symmetric/twoside + \MessageBreak% + Alternatively you can enlarge the bottom margin\MessageBreak% + by using option `extrabottommargin'.% + \fi% + }% } % \end{macrocode} -% \end{macro}^^A \tud@@ddclogo -% \end{macro}^^A \tud@ddclogo -% \begin{macro}{\tud@ddc@sethead} -% \changes{v2.02}{2014/06/23}{entfernt}%^^A -% \begin{macro}{\tud@ddc@setfoot} -% \changes{v2.02}{2014/06/23}{entfernt}%^^A -% Diese Befehle wurden mit der \TUDScript-Version~v2.02 entfernt. -% \end{macro}^^A \tud@ddc@setfoot -% \end{macro}^^A \tud@ddc@sethead +% \end{macro}^^A \tud@footcontent@use % % \iffalse % @@ -1615,17 +2161,20 @@ % \fi % % \begin{option}{cdhead} -% \changes{v2.03}{2015/01/29}{neu}%^^A +% \changes{v2.03}{2015/01/29}{neu}^^A +% \changes{v2.04}{2015/05/18}{Wert \val{barcolor} neu}^^A % \begin{macro}{\tud@head@font} -% \changes{v2.03}{2015/02/04}{neu}%^^A +% \changes{v2.03}{2015/02/04}{neu}^^A % \begin{macro}{\if@tud@head@font@locked} -% \changes{v2.03}{2015/02/04}{neu}%^^A +% \changes{v2.03}{2015/02/04}{neu}^^A % \begin{macro}{\tud@head@bar} -% \changes{v2.03}{2015/02/04}{neu}%^^A +% \changes{v2.03}{2015/02/04}{neu}^^A +% \begin{macro}{\tud@head@bar@lock} +% \changes{v2.04}{2015/04/01}{neu}^^A % \begin{macro}{\if@tud@head@widebar} -% \changes{v2.03}{2015/02/14}{neu}%^^A +% \changes{v2.03}{2015/02/14}{neu}^^A % \begin{macro}{\if@tud@head@widebar@locked} -% \changes{v2.03}{2015/02/14}{neu}%^^A +% \changes{v2.03}{2015/02/14}{neu}^^A % Mit dieser Option wird die zentrale Benutzerschnittstelle für Einstellungen % des typischen Querbalkens für den TUD-Kopf geschaffen. Durch sie können % sowohl die verwendete Schrift als auch die Stärke für den Balkentext @@ -1633,7 +2182,7 @@ % Querbalkens bzw. die Farbe einstellbar. % \begin{macrocode} \cs@lock{tud@head@font}{0} -\newcommand*\tud@head@bar{0} +\cs@lock{tud@head@bar}{0} \bool@lock{@tud@head@widebar} \TUD@key{cdhead}[true]{% \TUD@set@numkey{cdhead}{@tempa}{% @@ -1646,29 +2195,32 @@ {colorlite}{4},{litecolor}{4},{colourlite}{4},{litecolour}{4},% {colorlight}{4},{lightcolor}{4},{colourlight}{4},{lightcolour}{4},% {pale}{4},{colorpale}{4},{palecolor}{4},{colourpale}{4},{palecolour}{4},% - {bicolor}{5},{bicolour}{5},{twocolor}{5},{twocolour}{5},% - {bichrome}{5},{bichromatic}{5},{dichrome}{5},{dichromatic}{5},% - {color}{5},{colour}{5},% - {full}{5},{colorfull}{5},{fullcolor}{5},{colourfull}{5},{fullcolour}{5},% - {textwidth}{6},{slim}{6},{slimhead}{6},{nowide}{6},{nowidehead}{6},% - {paperwidth}{7},{wide}{7},{widehead}{7}% + {colorbar}{5},{barcolor}{5},{colourbar}{5},{barcolour}{5},% + {bicolor}{6},{bicolour}{6},{twocolor}{6},{twocolour}{6},% + {bichrome}{6},{bichromatic}{6},{dichrome}{6},{dichromatic}{6},% + {color}{6},{colour}{6},% + {full}{6},{colorfull}{6},{fullcolor}{6},{colourfull}{6},{fullcolour}{6},% + {textwidth}{7},{slim}{7},{slimhead}{7},{nowide}{7},{nowidehead}{7},% + {paperwidth}{8},{wide}{8},{widehead}{8}% }{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed% - \ifcase\@tempa\relax% + \ifcase\@tempa\relax% false \cs@set@lock{tud@head@font}{0}% - \or% + \or% true \cs@set@lock{tud@head@font}{1}% - \or% + \or% heavy \cs@set@lock{tud@head@font}{2}% - \or% - \def\tud@head@bar{0}% - \or% - \def\tud@head@bar{1}% - \or% - \def\tud@head@bar{2}% - \or% + \or% nocolor + \cs@set@lock{tud@head@bar}{0}% + \or% litecolor + \cs@set@lock{tud@head@bar}{1}% + \or% barcolor + \cs@set@lock{tud@head@bar}{2}% + \or% color + \cs@set@lock{tud@head@bar}{3}% + \or% textwidth \bool@set@lock{@tud@head@widebar}{false}% - \or% + \or% paperwidth \bool@set@lock{@tud@head@widebar}{true}% \fi% \fi% @@ -1676,28 +2228,37 @@ % \end{macrocode} % \end{macro}^^A \if@tud@head@widebar@locked % \end{macro}^^A \if@tud@head@widebar +% \end{macro}^^A \tud@head@bar@lock % \end{macro}^^A \tud@head@bar % \end{macro}^^A \if@tud@head@font@locked % \end{macro}^^A \tud@head@font % \end{option}^^A cdhead % \begin{option}{cdfoot} % \changes{v2.03}{2015/02/02}{Option \opt{extrabottommargin} bei Längenangabe -% indirekt nutzbar}%^^A -% \begin{macro}{\if@tud@footcolor} +% indirekt nutzbar}^^A +% \changes{v2.04}{2015/06/18}{bedingtes Setzen der Option \opt{automark}}^^A +% \begin{macro}{\if@tud@foot@colored} +% \changes{v2.03}{2015/02/15}{neu}^^A % \begin{macro}{\tud@ps@store} -% \changes{v2.02}{2014/06/23}{neu}%^^A +% \changes{v2.02}{2014/06/23}{neu}^^A % \begin{macro}{\tud@@ps@store} -% \changes{v2.02}{2014/06/23}{neu}%^^A +% \changes{v2.02}{2014/06/23}{neu}^^A % \begin{macro}{\tud@ps@restore} -% \changes{v2.02}{2014/06/23}{neu}%^^A +% \changes{v2.02}{2014/06/23}{neu}^^A % \begin{macro}{\tud@@ps@restore} -% \changes{v2.02}{2014/06/23}{neu}%^^A +% \changes{v2.02}{2014/06/23}{neu}^^A % Dieser Seitenstil mit dem Kolumnentitel im Fuß wurde bereits für die alte % \cls{tudbook}-Klasse bereitgestellt und soll auch hier optional angeboten % werden. Zusätzlich kann mit dieser Option ggf. ein farbiger Hintergrund in % der Fußzeile aktiviert werden. +% +% Einige Einstellungen sind abhängig vom Paket \pkg{scrlayer-scrpage}, welches +% unter Umständen nicht geladen wird. Mit dem Befehl \cs{TUD@AfterPackage} kann +% Quelltext nur dann ausgeführt werden, wenn ein Paket auch tatsächlich geladen +% wurde. Hierfür ist die Initialisierung mit \cs{TUD@AfterPackage@Set} nötig. % \begin{macrocode} -\newif\if@tud@footcolor +\TUD@AfterPackage@Set{scrlayer-scrpage} +\newif\if@tud@foot@colored \TUD@key{cdfoot}[true]{% \TUD@set@numkey{cdfoot}{@tempa}{% \TUD@numkey@bool,% @@ -1708,7 +2269,7 @@ {full}{3},{colorfull}{3},{fullcolor}{3},{colourfull}{3},{fullcolour}{3}% }{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed% - \ifcase\@tempa\relax% + \ifcase\@tempa\relax% false % \end{macrocode} % Die ursprünglichen Kopf- und Fußzeilen werden mit \cs{tud@ps@restore} % wiederhergestellt. Dies wird allerdings frühestens nach dem Laden von @@ -1720,12 +2281,12 @@ \tud@font@koma@unset{pageheadfoot}% }% % \end{macrocode} -% Die ursprünglichen Kopf- und Fußzeilen werden mit \cs{tud@ps@store} +% Die ursprünglichen Kopf- und Fußzeilen werden mit dem Makro \cs{tud@ps@store} % gesichert, um gegebenenfalls zurückschalten zu können. Anschließend werden % diese mit dem neuen Stil überschrieben. Dies wird allerdings frühestens nach -% dem Laden von \pkg{scrlayer-scrpage} durchgeführt. +% dem Laden von \pkg{scrlayer-scrpage} durchgeführt. % \begin{macrocode} - \or% + \or% true \TUD@AfterPackage{scrlayer-scrpage}{% \tud@ps@store{scrheadings}% \tud@ps@store{plain.scrheadings}% @@ -1736,14 +2297,15 @@ {\footnotesize\headmark}% \if@twoside\ifodd\value{page}\quad\pagemark\fi\else\quad\pagemark\fi% }% + \ifx\@mkdouble\@gobble\else\KOMAoptions{automark}\fi% }% % \end{macrocode} % Hier kann die Hintergrundfarbe des Fußes aktiviert bzw. deaktiviert werden. % \begin{macrocode} - \or% - \@tud@footcolorfalse% - \or% - \@tud@footcolortrue% + \or% nocolor + \@tud@foot@coloredfalse% + \or% color + \@tud@foot@coloredtrue% \fi% % \end{macrocode} % Außerdem kann mit der Option \opt{extrabottommargin} gesetzt werden. @@ -1803,14 +2365,14 @@ % \end{macro}^^A \tud@ps@restore % \end{macro}^^A \tud@@ps@store % \end{macro}^^A \tud@ps@store -% \end{macro}^^A \if@tud@footcolor +% \end{macro}^^A \if@tud@foot@colored % \end{option}^^A cdfoot % \begin{macro}{\tud@ps@headings} -% \changes{v2.02}{2014/06/23}{entfernt}%^^A +% \changes{v2.02}{2014/06/23}{entfernt}^^A % \begin{macro}{\tud@ps@myheadings} -% \changes{v2.02}{2014/06/23}{entfernt}%^^A +% \changes{v2.02}{2014/06/23}{entfernt}^^A % \begin{macro}{\tud@ps@plain} -% \changes{v2.02}{2014/06/23}{entfernt}%^^A +% \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. @@ -1833,35 +2395,638 @@ % (\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{cdgeometry}[true]{% - \TUD@set@numkey@lock{cdgeometry}{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% +\newcommand*\tud@geometry{0} +\TUD@key@lock{cdgeometry}[true]{% + \TUD@set@numkey@lock{cdgeometry}{tud@geometry}{% + \TUD@numkey@bool,% + {typearea}{0},% + {cd}{1},{tud}{1},{asymmetric}{1},% + {symmetric}{2},{centred}{2},{centered}{2},% + {normal}{2},{standard}{2},{std}{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 cdgeometry +% +% \iffalse +% +%<*class&body> +% \fi +% +% Das Paket \pkg{geometry} erlaubt eine genaue Vorgabe des Satzspiegels und +% der Seitenränder, wie es vom \CD der \TnUD verlangt wird. Sollte das Laden +% des Paketes verhindert werden, sind einige wenige Befehle vorzuhalten. +% \begin{macrocode} +\AtEndPreamble{% + \@ifpackageloaded{geometry}{}{% + \def\tud@geometry@process{\tud@geometry@set}% + \let\tud@BeforeSelectAnyPageStyle\@gobble% + }% +} +\tud@ifsacrop{% + \PreventPackageFromLoading{geometry}% +}{% + \RequirePackage{geometry}[2010/09/12]% +% \end{macrocode} +% \begin{macro}{\tud@geometry@hmargin} +% \begin{macro}{\tud@geometry@vmargin} +% \begin{macro}{\tud@geometry@tudmargin} +% \begin{macro}{\tud@geometry@ddcmargin} +% Dies sind Hilfsmakros für die Definition der unterschiedichen Seitenlayouts +% (horizontale und vertikale Ränder). Es handelt sich dabei um die Seitenränder +% für den normalen Textbereich sowie die angepassten vertikalen Einstellungen +% für die Seitenstilvarianten mit TUD-Kopf. Im Kompatibilitätsmodus für die +% Version~v2.02 gibt es außerdem einen separaten Satzspiegel für den \DDC-Fuß. +% Gesetzt werden diese in Abhängigkeit von der Option \opt{cdgeometry} im +% Makro \cs{tud@geometry@process} bzw. \cs{tud@geometry@@process}. +% \begin{macrocode} + \newcommand*\tud@geometry@hmargin{}% + \newcommand*\tud@geometry@vmargin{}% + \newcommand*\tud@geometry@tudmargin{}% + \tud@ifverlower{2.03}{\newcommand*\tud@geometry@ddcmargin{}}{}% +% \end{macrocode} +% \end{macro}^^A \tud@geometry@ddcmargin +% \end{macro}^^A \tud@geometry@tudmargin +% \end{macro}^^A \tud@geometry@vmargin +% \end{macro}^^A \tud@geometry@hmargin +% \begin{macro}{\tud@newgeometry} +% \changes{v2.04}{2015/03/12}{neu}^^A +% mit diesem Befehl wird abhängig davon, ob er in der Präambel oder im Dokument +% durch \cs{tud@geometry@process} ausgeführt wird, entweder \cs{geometry} oder +% \cs{newgeometry} aufgerufen. +% \begin{macrocode} + \newcommand*\tud@newgeometry[1]{% + \if@atdocument% + \edef\@tempa{#1}% + \expandafter\newgeometry\expandafter{#1}% + \else% + \edef\@tempa{paperwidth=\the\paperwidth,paperheight=\the\paperheight,#1}% + \expandafter\geometry\expandafter{\@tempa}% + \fi% + }% +% \end{macrocode} +% \end{macro}^^A \tud@newgeometry +% \begin{macro}{\tud@geometry@process} +% \changes{v2.02}{2014/06/23}{geändert für das Paket \pkg{scrlayer-scrpage}}^^A +% \changes{v2.03}{2015/01/09}{Satzspiegel des \CDs angepasst}^^A +% \changes{v2.03}{2015/01/09}{intiale Festlegung der Länge \cs{marginpar}}^^A +% \changes{v2.03}{2015/01/13}{Satzspiegel kompatibilitätsabhängig}^^A +% \begin{macro}{\tud@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% false +% \end{macrocode} +% Zu Beginn wird die Höhendifferenz zwischen TUD-Kopf und Standardkopfzeile +% für den \pkg{typearea}-Satzspiegel berechnet. +% \begin{macrocode} + \setlength\tud@ta@headdiff{% + \dimexpr\tud@dim@topmargin+\tud@dim@barheight+\tud@dim@headsep% + -\tud@ta@topmargin-\tud@ta@headheight-\tud@ta@headsep-1in\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} +% Anschließend erfolgen die horizontalen und vertikalen Randeinstellungen. +% \begin{macrocode} + \edef\tud@geometry@hmargin{% + bindingoffset=\the\ta@bcor,% + left=\the\dimexpr\oddsidemargin+1in-\ta@bcor\relax,% + textwidth=\the\textwidth,% + \tud@geometry@mpincl,% + marginparwidth=\the\dimexpr\evensidemargin+1in-\tud@ta@headsep\relax,% + \if@reversemargin% + reversemarginpar=true,% + \if@twoside% + marginparwidth=\the\dimexpr\oddsidemargin+1in% + -\tud@ta@headsep\relax,% + \fi% + \else% + reversemarginpar=false,% + \fi% + marginparsep=\the\dimexpr.5\tud@ta@headsep\relax% + }% + \edef\tud@geometry@vmargin{% + \if@hincl% + includehead=true,% + top=\the\dimexpr\tud@ta@topmargin+1in\relax,% + \else% + includehead=false,% + top=\the\dimexpr\tud@ta@topmargin+\tud@ta@headheight+\tud@ta@headsep% + +1in\relax,% + \fi% + headheight=\the\tud@ta@headheight,% + headsep=\the\tud@ta@headsep,% + textheight=\the\tud@ta@textheight,% + \tud@geometry@fincl,% + footskip=\the\tud@ta@footskip% + }% +% \end{macrocode} +% Für den Satzspiegel mit TUD-Kopf muss unterschieden werden, ob der Abstand +% zwischen Kopf und Textbereich vergrößert wurde. Ist dies der Fall, wird die +% Höhe des Textbereiches über \cs{@tempdima} entsprechend verkleinert. +% \begin{macrocode} + \ifdim\tud@ta@headdiff<\z@\relax% + \setlength\@tempdima{\z@}% + \else% + \setlength\@tempdima{\tud@ta@headdiff}% + \fi% + \edef\tud@geometry@tudmargin{% + top=\the\dimexpr\tud@dim@topmargin+\tud@dim@barheight% + +\tud@dim@headsep\relax,% + headheight=\the\dimexpr\tud@dim@topmargin+\tud@dim@barheight% + -\tud@dim@logoy\relax,% + headsep=\the\tud@dim@headsep,% + textheight=\the\dimexpr\tud@ta@textheight-\@tempdima\relax,% + ignorehead% + }% +% \end{macrocode} +% Für den Kompatibilitätsmodus der Version~v2.02 gibt es für den \DDC-Fuß einen +% separaten Satzspiegel. +% \begin{macrocode} + \tud@ifverlower{2.03}{% + \setlength\tud@dim@ddcdiff{% + \dimexpr.6\tud@dim@topmargin-\tud@ta@footskip+\tud@dim@headsep% + +\tud@ta@footheight-1.25\baselineskip\relax% + }% + \edef\tud@geometry@ddcmargin{% + textheight=\the\dimexpr\tud@ta@textheight-\tud@ta@headdiff% + -\tud@dim@ddcdiff\relax,% + footskip=\the\dimexpr\tud@ta@footskip+\tud@dim@ddcdiff\relax% + }% + }{}% +% \end{macrocode} +% Sollte die Option \opt{extrabottommargin} verwendet worden sein, wird eine +% Warnung ausgegeben, dass diese für den \pkg{typearea}-Satzspiegel wirkungslos +% ist. +% \begin{macrocode} + \ifdim\tud@dim@extrabottommargin=\z@\relax\else% + \ClassWarning{\TUDClassName}{% + Option `extrabottommargin' is ineffective when\MessageBreak% + package typearea is used (`cdgeometry=no')% + }% + \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% true/symmetric/twoside + \ifcase\tud@geometry\or% true + \edef\tud@geometry@hmargin{% + bindingoffset=\the\ta@bcor,% + left=\the\tud@dim@widemargin,% + textwidth=\the\dimexpr\paperwidth-\tud@dim@both-\ta@bcor\relax,% + \if@twoside asymmetric,\fi% + \tud@geometry@mpincl,% + \if@reversemargin% + reversemarginpar=true,% + marginparwidth=\the\dimexpr\tud@dim@widemargin% + -\tud@ta@headsep\relax,% + \else% + reversemarginpar=false,% + marginparwidth=\the\dimexpr\tud@dim@slimmargin% + -\tud@ta@headsep\relax,% + \fi% + marginparsep=\the\dimexpr.5\tud@ta@headsep\relax% + }% +% \end{macrocode} +% Die zweite Variante ist eigentlich nicht konform mit dem \CD. Sie ist sowohl +% im einseitigen als auch im zweiseitgigen Satz symmetrisch. +% \begin{macrocode} + \or% symmetric + \edef\tud@geometry@hmargin{% + bindingoffset=\the\ta@bcor,% + left=\the\dimexpr.5\tud@dim@both\relax,% + textwidth=\the\dimexpr\paperwidth-\tud@dim@both-\ta@bcor\relax,% + \tud@geometry@mpincl,% + \if@reversemargin% + reversemarginpar=true,% + \else% + reversemarginpar=false,% + \fi% + marginparwidth=\the\dimexpr.5\tud@dim@both-\tud@ta@headsep\relax,% + marginparsep=\the\dimexpr.5\tud@ta@headsep\relax% + }% +% \end{macrocode} +% Eigentlich ist auch die dritte Variante nach dem \CD nicht zulässig. Sie ist +% im einseitigen Satz symmetrisch, im zweiseitgigen Satz wird die innere Seite +% schmaler gesetzt als die äußere, wobei hier auf das in den Seitenrand ragende +% TUD-Logo geachtet werden muss. +% \begin{macrocode} + \or% twoside + \edef\tud@geometry@hmargin{% + bindingoffset=\the\ta@bcor,% + \if@twoside% + left=\the\dimexpr.4\tud@dim@both\relax,% + twoside,% + \else% + left=\the\dimexpr.5\tud@dim@both\relax,% + \fi% + textwidth=\the\dimexpr\paperwidth-\tud@dim@both-\ta@bcor\relax,% + \tud@geometry@mpincl,% + marginparwidth=\the\dimexpr.5\tud@dim@both-\tud@ta@headsep\relax,% + \if@reversemargin% + reversemarginpar=true,% + \if@twoside% + marginparwidth=\the\dimexpr.4\tud@dim@both% + -\tud@ta@headsep\relax,% + \fi% + \else% + reversemarginpar=false,% + \if@twoside% + marginparwidth=\the\dimexpr.6\tud@dim@both% + -\tud@ta@headsep\relax,% + \fi% + \fi% + marginparsep=\the\dimexpr.5\tud@ta@headsep\relax% + }% + \fi% +% \end{macrocode} +% Für alle drei Varianten der vertikale Gleichanteil. Der Satzspiegel der +% Version~v2.02 wird aus Gründen der Kompatibilität weiterhin vorgehalten. +% \begin{macrocode} + \tud@ifverlower{2.03}{% + \edef\tud@geometry@vmargin{% + top=\the\dimexpr.5\tud@dim@both\relax,% + headheight=\the\tud@ta@headheight,% + headsep=\the\tud@dim@headsep,% + bottom=\the\dimexpr.5\tud@dim@both+\tud@dim@extrabottommargin\relax,% + footskip=\the\dimexpr\tud@dim@headsep+\tud@ta@footheight% + -1.25\baselineskip\relax,% + \tud@geometry@hincl,% + \tud@geometry@fincl% + }% + }{% + \edef\tud@geometry@vmargin{% + top=\the\tud@dim@slimmargin,% + headheight=\the\tud@ta@headheight,% + headsep=\the\tud@ta@headsep,% + bottom=\the\dimexpr\tud@dim@widemargin% + +\tud@dim@extrabottommargin\relax,% + footskip=\the\dimexpr\tud@dim@footsep+\tud@ta@footheight\relax,% + \tud@geometry@hincl,% + \tud@geometry@fincl% + }% + }% + \edef\tud@geometry@tudmargin{% + top=\the\dimexpr\tud@dim@topmargin+\tud@dim@barheight% + +\tud@dim@headsep\relax,% + headheight=\the\dimexpr\tud@dim@topmargin+\tud@dim@barheight% + -\tud@dim@logoy\relax,% + headsep=\the\tud@dim@headsep,% + ignorehead% + }% +% \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@topmargin+\tud@dim@barheight+\tud@dim@headsep% + -\tud@dim@slimmargin\relax% + }% +% \end{macrocode} +% Für die Kompatibilitätsvariante wieder mal die Extrawurst. +% \begin{macrocode} + \tud@ifverlower{2.03}{% + \setlength\tud@ta@headdiff{% + \dimexpr\tud@dim@topmargin+\tud@dim@barheight+\tud@dim@headsep% + -.5\tud@dim@both\relax% + }% +% \end{macrocode} +% Wird die Fußzeile zum Satzspiegel gerechnet, ist für Seiten mit \DDC-Fuß +% etwas Handarbeit notwendig, damit dieser nicht allzu weit nach oben ragt. +% \begin{macrocode} + \setlength\tud@dim@ddcdiff{.6\tud@dim@topmargin}% + \edef\tud@geometry@ddcmargin{% + \if@fincl% + bottom=\the\dimexpr.5\tud@dim@both+\tud@dim@extrabottommargin% + +\tud@dim@ddcdiff+\tud@dim@headsep+\tud@ta@footheight% + -1.25\baselineskip\relax,% + \else% + bottom=\the\dimexpr.5\tud@dim@both+\tud@dim@extrabottommargin% + +\tud@dim@ddcdiff\relax,% + \fi% + footskip=\the\dimexpr\tud@dim@headsep+\tud@ta@footheight% + -1.25\baselineskip+\tud@dim@ddcdiff\relax,% + }% + }{}% + \fi% +% \end{macrocode} +% Es wird die Differenz der Höhen zwischen TUD-Kopf und Standardkopfzeile +% für den Satzspiegel des \CDs berechnet. Außerdem wird die standardmäßige +% vertikale Verschiebung der Überschriften festgelegt. +% \begin{macrocode} + \ifdim\tud@ta@headdiff<\z@\relax\setlength\tud@ta@headdiff{\z@}\fi% + \global\tud@ta@headdiff=\tud@ta@headdiff% + \setlength\tud@dim@headingsvskip{.6\tud@dim@topmargin}% + \global\tud@dim@headingsvskip=\tud@dim@headingsvskip% +% \end{macrocode} +% Für den Satzspiegel der Version~v2.02 wird außerdem die Länge für den höheren +% Seitenfuß gesetzt. +% \begin{macrocode} + \tud@ifverlower{2.03}{% + \ifdim\tud@dim@ddcdiff<\z@\relax\setlength\tud@dim@ddcdiff{\z@}\fi% + \global\tud@dim@ddcdiff=\tud@dim@ddcdiff% + }{}% +% \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} +% Für den Satzspiegel der Version~v2.02 wird als erstes der Satzspiegel für den +% TUD-Kopf zusammen mit dem \DDC-Fuß erstellt. Das Einbeziehen der Fußzeile in +% den Satzspiegel erfolgt nicht ggf. über die Option \opt{includefoot} sondern +% manuell bei der Definition von \cs{tud@geometry@ddcmargin}. +% \begin{macrocode} + \edef\Gm@restore@org{\Gm@restore}% + \tud@ifverlower{2.03}{% + \edef\@tempa{% + \tud@geometry@hmargin,% + \tud@geometry@vmargin,% + \tud@geometry@tudmargin,% + \tud@geometry@ddcmargin,% + ignorehead,ignorefoot% + }% + \tud@newgeometry{\@tempa}% + \savegeometry{tudareaddc}% + }{}% +% \end{macrocode} +% Danach folgt der Seitenstil, mit dem TUD-Kopf und der Standardfußzeile. +% \begin{macrocode} + \edef\@tempa{% + \tud@geometry@hmargin,% + \tud@geometry@vmargin,% + \tud@geometry@tudmargin% + }% + \tud@newgeometry{\@tempa}% + \savegeometry{tudarea}% +% \end{macrocode} +% Als letztes wird der Standardsatzspiegel erstellt. +% \begin{macrocode} + \edef\@tempa{% + \tud@geometry@hmargin,% + \tud@geometry@vmargin% + }% + \tud@newgeometry{\@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}{geändert für das Paket \pkg{scrlayer-scrpage}}^^A +% \begin{macro}{\tud@geometry@fincl} +% \begin{macro}{\tud@geometry@mpincl} +% \changes{v2.04}{2015/03/09}{neu}^^A +% Diese Hilfsmakros werten die Optionen für das Einbeziehen von Kopf- und +% Fußzeile sowie der Randnotizen aus. +% \begin{macrocode} + \newcommand*\tud@geometry@hincl{% + \if@hincl% + includehead=true% + \else% + includehead=false% + \fi% + }% + \newcommand*\tud@geometry@fincl{% + \if@fincl% + includefoot=true% + \else% + includefoot=false% + \fi% + }% + \newcommand*\tud@geometry@mpincl{% + \if@mincl% + includemp=true% + \else% + includemp=false% + \fi% + }% +% \end{macrocode} +% \end{macro}^^A \tud@geometry@mpincl +% \end{macro}^^A \tud@geometry@fincl +% \end{macro}^^A \tud@geometry@hincl +% Damit sind alle notwendigen Satzspiegel für die unterschiedlichen Seitenstile +% definiert. +% \begin{macrocode} +} +% \end{macrocode} +% \begin{macro}{\tud@BeforeSelectAnyPageStyle} +% \changes{v2.02}{2014/06/23}{neu}^^A +% \changes{v2.04}{2015/04/21}{Auswahl der Schriften für Fußbereich ergänzt}^^A +% \begin{macro}{\tud@currentgeometry} +% \changes{v2.02}{2014/06/23}{neu}^^A +% Mit \cs{tud@BeforeSelectAnyPageStyle} wird beim Umschalten des Seitenstils +% gegebenfalls der Satzspiegel geändert. Dabei wird der aktivierte Satzspiegel +% in dem Makro \cs{tud@currentgeometry} gesichert, um darauf zu einem späteren +% Zeitpunkt prüfen zu können. +% +% Für den Fall, dass das Dokument nicht ausschließlich mit dem Kopf im \CD +% auf jeder Seite gesetzt wird, muss der komplette vertikale Satzspiegel +% angepasst werden, sonst wäre der obere Rand optisch viel zu groß. Hierfür +% wird das Paket \pkg{geometry} genutzt. Durch \cs{tud@geometry@process} +% werden zwei~-- für die KOmpatibilitätsvariante drei~-- Layouts erstellt. +% Diese können mit \cs{loadgeometry}\marg{Stil} geladen werden. +% \begin{macrocode} +\newcommand*\tud@currentgeometry{} +\newcommand*\tud@BeforeSelectAnyPageStyle[1]{% +% \end{macrocode} +% Der \pgs{tudheadings}-Seitenstil wird mit dem Befehl \cs{newpairofpagestyles} +% derart definiert, dass zwischen \pgs{tudheadings} und \pgs{plain.tudheadings} +% auch mit \LaTeX-Standardseitenstilen \pgs{headings} bzw. \pgs{plain} +% umgeschaltet werden kann. Dies wird hiermit beachtet. +% \begin{macrocode} + \ifstr{#1}{\GetRealPageStyle{#1}}{% +% \end{macrocode} +% Für den Fall, das ein \pgs{tudheadings}-Seitenstil geladen werden soll, muss +% der dazugehörige Satzspiegel ausgewählt werden\dots +% \begin{macrocode} + \tud@iftudps{#1}{% +% \end{macrocode} +% \dots wobei in der Version~v2.02 zwei unterschiedliche existierten, und +% abhängig von der Verwendung des \DDC-Logos im Fuß waren. +% \begin{macrocode} + \tud@ifverlower{2.03}{% +% \end{macrocode} +% In diesem Fall werden die Seitenfußeinstellungen mit \cs{tud@ddc@check} in +% \cs{@tempb} geschrieben und abhängig davon der richtige Satzspiegel geladen. +% Dabei wird zuvor mit dem Wert aus \cs{tud@currentgeometry} geprüft, ob dies +% überhaupt notwendig ist. +% \begin{macrocode} + \tud@ddc@check% +% \end{macrocode} +% Das \DDC-Logo im Fuß ist nicht aktiviert. +% \begin{macrocode} + \ifcase\@tempb\relax% \tud@ddc@foot=false + \ifstr{\tud@currentgeometry}{tudarea}{}{% + \loadgeometry{tudarea}% + \gdef\tud@currentgeometry{tudarea}% + }% +% \end{macrocode} +% Das \DDC-Logo im Fuß ist aktiviert. +% \begin{macrocode} + \else% \tud@ddc@foot!=false + \ifstr{\tud@currentgeometry}{tudareaddc}{}{% + \loadgeometry{tudareaddc}% + \gdef\tud@currentgeometry{tudareaddc}% + }% + \fi% +% \end{macrocode} +% Ab der Version~v2.03 ist nur noch ein Satzspiegel vonnöten. +% \begin{macrocode} + }{% + \ifstr{\tud@currentgeometry}{tudarea}{}{% + \loadgeometry{tudarea}% + \gdef\tud@currentgeometry{tudarea}% + }% + }% +% \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} +% Im Seitenfuß wird für die Seitenzahl und ggf. die Kolumnentitel die passende +% Schrift verwendet. +% \begin{macrocode} + \tud@font@koma@set{pagefoot}{\usekomafont{tudheadings}}% + \tud@font@koma@set{pagenumber}{\usekomafont{tudheadings}}% +% \end{macrocode} +% Dies ist der Fall, wenn kein \pgs{tudheadings}-Seitenstil geladen werden soll. +% Zusätzlich zum Satzspeigel wird außerdem der Seitenstil \pgs{empty} +% zurückgesetzt. +% \begin{macrocode} + }{% + \ifstr{\tud@currentgeometry}{typearea}{}{% + \loadgeometry{typearea}% + \gdef\tud@currentgeometry{typearea}% + }% +% \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% true/symmetric/twoside + \if@hincl% + \addtolength\tud@dim@headdiff{% + \dimexpr-\tud@ta@headheight-\tud@dim@headsep\relax% + }% + \fi% + \fi% +% \end{macrocode} +% Die Schriften für Seitenzahl und Kolumnentitel werden zurückgesetzt. +% \begin{macrocode} + \tud@font@koma@unset{pagefoot}% + \tud@font@koma@unset{pagenumber}% + }% +% \end{macrocode} +% Die Länge \cs{tud@dim@headdiff} wird vorsichtshalber global gesetzt. +% \begin{macrocode} + \global\tud@dim@headdiff=\tud@dim@headdiff% + }{}% } % \end{macrocode} -% \end{macro}^^A \if@tud@geometry@locked -% \end{macro}^^A \tud@geometry -% \end{option}^^A cdgeometry -% -% \iffalse -% -%<*class&body> -% \fi -% +% \end{macro}^^A \tud@currentgeometry +% \end{macro}^^A \tud@BeforeSelectAnyPageStyle +% \begin{macro}{\cleardoubleoddpageusingstyle} +% \begin{macro}{\cleardoubleevenpageusingstyle} +% \begin{macro}{\cleardoublepageusingstyle} +% Damit die Satzspiegelumstellungen nicht durchgeführt werden, wenn durch die +% folgenden \KOMAScript-Befehle Leerseiten erzeugt werden, müssen diese minimal +% angepasst werden. +% \begin{macrocode} +\patchcmd{\cleardoubleoddpageusingstyle}{\pagestyle}{% + \let\tud@BeforeSelectAnyPageStyle\@gobble\pagestyle% +}{}{\tud@patch@wrn{cleardoubleoddpageusingstyle}} +\patchcmd{\cleardoubleevenpageusingstyle}{\pagestyle}{% + \let\tud@BeforeSelectAnyPageStyle\@gobble\pagestyle% +}{}{\tud@patch@wrn{cleardoubleevenpageusingstyle}} +\patchcmd{\cleardoublepageusingstyle}{\pagestyle}{% + \let\tud@BeforeSelectAnyPageStyle\@gobble\pagestyle% +}{}{\tud@patch@wrn{cleardoublepageusingstyle}} +% \end{macrocode} +% \end{macro}^^A \cleardoublepageusingstyle +% \end{macro}^^A \cleardoubleevenpageusingstyle +% \end{macro}^^A \cleardoubleoddpageusingstyle +% \begin{macro}{\tud@ddc@enlargepage} +% \changes{v2.02}{2014/06/23}{neu}^^A +% Der Befehl wird nur für den Kompatibilitätsmodus zur Version~v2.02 benötigt +% und für die Titelkopf- und Kapitelseiten verwendet. Er verkleinert die +% entsprechenden Seiten, wenn für diese mit dem Befehl \cs{thispagestyle} einer +% der \pgs{tudheadings}"=Seitenstile gewählt wird \emph{und} das \DDC-Logo im +% Fuß gesetzt werden soll. Der entsprechende Seitenstil kann im optionalen +% Argument angegeben werden, wenn der Befehl bedingt ausgeführt werden soll. +% \begin{macrocode} +\tud@ifverlower{2.03}{% + \newcommand*\tud@ddc@enlargepage[1][]{% + \tud@iftudps{#1}{% + \ifstr{\tud@currentgeometry}{tudareaddc}{}{% + \tud@ddc@check% + \ifcase\@tempb\relax\else% \tud@ddc@foot!=false + \enlargethispage{-\tud@dim@ddcdiff}% + \fi% + }% + }{}% + }% +}{} +% \end{macrocode} +% \end{macro}^^A \tud@ddc@enlargepage % \begin{length}{\tud@ta@textheight} % \begin{length}{\tud@ta@topmargin} % \begin{length}{\tud@ta@headheight} % \begin{length}{\tud@ta@headsep} % \begin{length}{\tud@ta@footheight} -% \changes{v2.03}{2015/01/09}{neu, für entsprechende \pkg{typearea}-Option}%^^A +% \changes{v2.03}{2015/01/09}{neu, für entsprechende \pkg{typearea}-Option}^^A % \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 @@ -1882,7 +3047,7 @@ % \end{length}^^A \tud@ta@textheight % \begin{length}{\tud@ta@headdiff} % \begin{length}{\tud@ta@footdiff} -% \changes{v2.02}{2014/06/23}{entfernt}%^^A +% \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 @@ -1895,8 +3060,8 @@ % \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 +% \begin{macro}{\tud@AfterChangingArea} +% \changes{v2.04}{2015/03/10}{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 @@ -1905,11 +3070,8 @@ % 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{% +\newcommand*\tud@AfterChangingArea{% \setlength\tud@ta@textheight{\textheight}% \setlength\tud@ta@topmargin{\topmargin}% \setlength\tud@ta@headheight{\headheight}% @@ -1920,399 +3082,62 @@ \setlength\tud@ta@footheight{\ta@fh}% }% \setlength\tud@ta@footskip{\footskip}% - \let\tud@geometry@restore\Gm@restore@org% - \if@atdocument% - \let\Gm@restore@org\relax% - \tud@geometry@process% + \tud@geometry@process% +% \end{macrocode} +% Nachder Änderung desSatzspiegels werden alle Logoboxen neu erstellt. +% \begin{macrocode} + \global\@tud@mainlogo@settrue% % \end{macrocode} % Damit Änderungen am Satzspiegel im Dokument sicher übernommen werden, wird % das Setzen des Satzspiegels forciert. Dafür wird \cs{tud@currentgeometry} % zurückgesetzt und anschließend der aktuelle Seitenstil erneut geladen, um das -% erneute und korrekte Ausführen von \cs{tud@beforeselectanypagestyle} zu +% erneute und korrekte Ausführen von \cs{tud@BeforeSelectAnyPageStyle} zu % erzwingen. % \begin{macrocode} - \gdef\tud@currentgeometry{}% - \expandafter\pagestyle\expandafter{\currentpagestyle}% - \fi% - \let\Gm@restore@org\tud@geometry@restore% + \gdef\tud@currentgeometry{}% + \expandafter\pagestyle\expandafter{\currentpagestyle}% } % \end{macrocode} -% \end{macro}^^A \tud@geometry@restore -% \begin{macro}{\tud@geometry@hmargin} -% \begin{macro}{\tud@geometry@vmargin} -% \begin{macro}{\tud@geometry@tudmargin} -% \begin{macro}{\tud@geometry@ddcmargin} -% Dies sind Hilfsmakros für die Definition der unterschiedichen Seitenlayouts -% (horizontale und vertikale Ränder). Es handelt sich dabei um die Seitenränder -% für den normalen Textbereich sowie die angepassten vertikalen Einstellungen -% für die Seitenstilvarianten mit TUD-Kopf. Im Kompatibilitätsmodus für die -% Version~v2.02 gibt es außerdem einen separaten Satzspiegel für den \DDC-Fuß. -% Gesetzt werden diese in Abhängigkeit von der Option \opt{cdgeometry} im -% Makro \cs{tud@geometry@process} bzw. \cs{tud@geometry@@process}. -% \begin{macrocode} -\newcommand*\tud@geometry@hmargin{} -\newcommand*\tud@geometry@vmargin{} -\newcommand*\tud@geometry@tudmargin{} -\iftudscrverlower{2.03}{\newcommand*\tud@geometry@ddcmargin{}}{} -% \end{macrocode} -% \end{macro}^^A \tud@geometry@ddcmargin -% \end{macro}^^A \tud@geometry@tudmargin -% \end{macro}^^A \tud@geometry@vmargin -% \end{macro}^^A \tud@geometry@hmargin -% \changes{v2.02}{2014/06/29}{\pkg{geometry} Laden verzögert}%^^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 +% \end{macro}^^A \tud@AfterChangingArea +% Damit alle Satzspiegeleinstellungen korrekt vorgenommen und auch alle +% Klassenoptionen korrekt verarbeitet werden, wird die Berechnung erstmalig mit +% \cs{AtEndPreamble} am Ende der Präambel ausgeführt. Nachfolgend erstellt +% \cs{tud@geometry@process} alle benötigten Satzspiegel. Durch das Setzen des +% Seitenstils wird der jeweils richtige bzw. benötigte 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{% - \ifstandalonecrop{}{% - \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 -% \changes{v2.03}{2015/01/09}{Satzspiegel des \CDs angepasst}%^^A -% \changes{v2.03}{2015/01/09}{intiale Festlegung der Länge \cs{marginpar}}%^^A -% \changes{v2.03}{2015/01/13}{Satzspiegel kompatibilitätsabhängig}%^^A -% \begin{macro}{\tud@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,% - marginparwidth=\dimexpr\evensidemargin+1in-\tud@ta@headsep\relax,% - \if@twoside\if@reversemargin% - marginparwidth=\dimexpr\oddsidemargin+1in-\tud@ta@headsep\relax,% - \fi\fi% - marginparsep=.5\tud@ta@headsep,% - }% - \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@tudmargin{% - top=\dimexpr\tud@dim@topmargin+\tud@dim@barheight% - +\tud@dim@headsep\relax,% - headheight=\dimexpr\tud@dim@topmargin+\tud@dim@barheight% - -\tud@dim@logoy\relax,% - headsep=\tud@dim@headsep,% - textheight=\dimexpr\tud@ta@textheight-\tud@ta@headdiff\relax,% - ignorehead,% - }% -% \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@topmargin+\tud@dim@barheight+\tud@dim@headsep% - -\tud@ta@topmargin-\tud@ta@headheight-\tud@ta@headsep-1in\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} -% Für den Kompatibilitätsmodus der Version~v2.02 gibt es für den \DDC-Fuß einen -% separaten Satzspiegel. -% \begin{macrocode} - \iftudscrverlower{2.03}{% - \setlength\tud@dim@ddcdiff{% - \dimexpr.6\tud@dim@topmargin-\tud@ta@footskip+\tud@dim@headsep% - +\tud@ta@footheight-1.25\baselineskip\relax% - }% - \def\tud@geometry@ddcmargin{% - textheight=\dimexpr\tud@ta@textheight-\tud@ta@headdiff% - -\tud@dim@ddcdiff\relax,% - footskip=\dimexpr\tud@ta@footskip+\tud@dim@ddcdiff\relax,% - }% - }{}% -% \end{macrocode} -% Sollte die Option \opt{extrabottommargin} verwendet worden sein, wird eine -% Warnung ausgegeben, dass diese für den \pkg{typearea}-Satzspiegel wirkungslos -% ist. -% \begin{macrocode} - \ifdim\tud@dim@extrabottommargin=\z@\relax\else% - \ClassWarning{\tudcls@name}{% - Option `extrabottommargin' is ineffective when\MessageBreak% - package typearea is used (`cdgeometry=no')% - }% - \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@widemargin,% - textwidth=\dimexpr\paperwidth-\tud@dim@both-\ta@bcor\relax,% - \if@reversemargin% - marginparwidth=\dimexpr\tud@dim@widemargin-\tud@ta@headsep\relax,% - \else% - marginparwidth=\dimexpr\tud@dim@slimmargin-\tud@ta@headsep\relax,% - \fi% - marginparsep=.5\tud@ta@headsep,% - 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,% - marginparwidth=\dimexpr.5\tud@dim@both-\tud@ta@headsep\relax,% - marginparsep=.5\tud@ta@headsep,% - 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,% - \if@twoside% - \if@reversemargin% - marginparwidth=\dimexpr.4\tud@dim@both-\tud@ta@headsep\relax,% - \else% - marginparwidth=\dimexpr.6\tud@dim@both-\tud@ta@headsep\relax,% - \fi% - \else% - marginparwidth=\dimexpr.5\tud@dim@both-\tud@ta@headsep\relax,% - \fi% - marginparsep=.5\tud@ta@headsep,% - bindingoffset=\ta@bcor,% - }% - \fi% -% \end{macrocode} -% Für alle drei Varianten der vertikale Gleichanteil. Der Satzspiegel der -% Version~v2.02 wird aus Gründen der Kompatibilität weiterhin vorgehalten. -% \begin{macrocode} - \iftudscrverlower{2.03}{% - \def\tud@geometry@vmargin{% - top=.5\tud@dim@both,% - headheight=\tud@ta@headheight,% - headsep=\tud@dim@headsep,% - bottom=\dimexpr.5\tud@dim@both+\tud@dim@extrabottommargin\relax,% - footskip=\dimexpr\tud@dim@headsep+\tud@ta@footheight% - -1.25\baselineskip\relax,% - \tud@geometry@hincl,% - \tud@geometry@fincl,% - }% - }{% - \def\tud@geometry@vmargin{% - top=\tud@dim@slimmargin,% - headheight=\tud@ta@headheight,% - headsep=\tud@ta@headsep,% - bottom=\dimexpr\tud@dim@widemargin+\tud@dim@extrabottommargin\relax,% - footskip=\dimexpr\tud@dim@footsep+\tud@ta@footheight\relax,% - \tud@geometry@hincl,% - \tud@geometry@fincl,% - }% - }% - \def\tud@geometry@tudmargin{% - top=\dimexpr\tud@dim@topmargin+\tud@dim@barheight% - +\tud@dim@headsep\relax,% - headheight=\dimexpr\tud@dim@topmargin+\tud@dim@barheight% - -\tud@dim@logoy\relax,% - headsep=\tud@dim@headsep,% - ignorehead,% - }% -% \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@topmargin+\tud@dim@barheight+\tud@dim@headsep% - -\tud@dim@slimmargin\relax% - }% -% \end{macrocode} -% Für die Kompatibilitätsvariante wieder mal die Extrawurst\dots -% \begin{macrocode} - \iftudscrverlower{2.03}{% - \setlength\tud@ta@headdiff{% - \dimexpr\tud@dim@topmargin+\tud@dim@barheight+\tud@dim@headsep% - -.5\tud@dim@both\relax% - }% -% \end{macrocode} -% Wird die Fußzeile zum Satzspiegel gerechnet, ist für Seiten mit \DDC-Fuß -% etwas Handarbeit notwendig, damit dieser nicht allzu weit nach oben ragt. -% \begin{macrocode} - \setlength\tud@dim@ddcdiff{.6\tud@dim@topmargin}% - \def\tud@geometry@ddcmargin{% - \if@fincl% - bottom=\dimexpr.5\tud@dim@both+\tud@dim@extrabottommargin% - +\tud@dim@ddcdiff+\tud@dim@headsep+\tud@ta@footheight% - -1.25\baselineskip\relax,% - \else% - bottom=\dimexpr.5\tud@dim@both+\tud@dim@extrabottommargin% - +\tud@dim@ddcdiff\relax,% - \fi% - footskip=\dimexpr\tud@dim@headsep+\tud@ta@footheight% - -1.25\baselineskip+\tud@dim@ddcdiff\relax,% - }% - }{}% - \fi% -% \end{macrocode} -% Es wird die Differenz der Höhen zwischen TUD-Kopf und Standardkopfzeile -% für den Satzspiegel des \CDs berechnet. Außerdem wird die standardmäßige -% vertikale Verschiebung der Überschriften festgelegt. -% \begin{macrocode} - \ifdim\tud@ta@headdiff<\z@\relax\setlength\tud@ta@headdiff{\z@}\fi% - \global\tud@ta@headdiff=\tud@ta@headdiff% - \setlength\tud@dim@headingsvskip{.6\tud@dim@topmargin}% - \global\tud@dim@headingsvskip=\tud@dim@headingsvskip% -% \end{macrocode} -% Für den Satzspiegel der Version~v2.02 wird außerdem die Länge für den höheren -% Seitenfuß gesetzt. -% \begin{macrocode} - \iftudscrverlower{2.03}{% - \ifdim\tud@dim@ddcdiff<\z@\relax\setlength\tud@dim@ddcdiff{\z@}\fi% - \global\tud@dim@ddcdiff=\tud@dim@ddcdiff% - }{}% -% \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} -% Für den Satzspiegel der Version~v2.02 wird als erstes der Satzspiegel für den -% TUD-Kopf zusammen mit dem \DDC-Fuß erstellt. Das Einbeziehen der Fußzeile in -% den Satzspiegel erfolgt nicht ggf. über die Option \opt{includefoot} sondern -% manuell bei der Definition von \cs{tud@geometry@ddcmargin}. -% \begin{macrocode} - \iftudscrverlower{2.03}{% - \edef\@tempa{% - \tud@geometry@hmargin,% - \tud@geometry@vmargin,% - \tud@geometry@tudmargin,% - \tud@geometry@ddcmargin,% - ignorehead,ignorefoot,% - }% - \expandafter\newgeometry\expandafter{\@tempa}% - \savegeometry{tudareaddc}% - }{}% + \tud@ifsacrop{}{% % \end{macrocode} -% Danach folgt der Seitenstil, mit dem TUD-Kopf und der Standardfußzeile. +% Nach einer Neuberechnung oder Änderung des Satzspiegels durch \pkg{typearea} +% werden die für die Seitenstile benötigten Satzspiegel mit \pkg{geometry} neu +% erstellt. +% \ToDo{\cs{AfterRestoreareas} einfügen}[v3.18] % \begin{macrocode} - \edef\@tempa{% - \tud@geometry@hmargin,% - \tud@geometry@vmargin,% - \tud@geometry@tudmargin,% - }% - \expandafter\newgeometry\expandafter{\@tempa}% - \savegeometry{tudarea}% + \AfterCalculatingTypearea{\tud@AfterChangingArea}% + \AfterSettingArea{\tud@AfterChangingArea}% +% \AfterRestoreareas{\tud@AfterChangingArea}% % \end{macrocode} -% Als letztes wird der Standardsatzspiegel erstellt. +% Der Kopf im \CD der \TnUD erfordert einen eigenen Satzspiegel, der ggf. durch +% \cs{tud@BeforeSelectAnyPageStyle} aktiviert bzw. deaktiviert wird. % \begin{macrocode} - \edef\@tempa{% - \tud@geometry@hmargin,% - \tud@geometry@vmargin,% + \BeforeSelectAnyPageStyle{\tud@BeforeSelectAnyPageStyle{#1}}% + \recalctypearea% }% - \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 +% \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 +% \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 +% \changes{v2.02}{2014/07/18}{neu}^^A % \begin{macro}{\tud@currentpagestyle@reset} -% \changes{v2.02}{2014/07/18}{neu}%^^A -% \changes{v2.03}{2015/01/09}{Bugfix, wenn \cs{tud@currentpagestyle} void}%^^A +% \changes{v2.02}{2014/07/18}{neu}^^A +% \changes{v2.03}{2015/01/09}{Bugfix}^^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}. @@ -2378,11 +3203,11 @@ % \env{tudpage}-Umgebung ausgegeben und anschließend gegebenenfalls die % \env{multicols}-Umgebung beendet. % \begin{macrocode} - \ifnum\tud@multicols>1\relax% + \ifnum\tud@multicols>\@ne\relax% \begin{multicols}{\tud@multicols}% \fi% \BODY% - \ifnum\tud@multicols>1\relax% + \ifnum\tud@multicols>\@ne\relax% \end{multicols}% \fi% % \end{macrocode} @@ -2419,7 +3244,7 @@ % \end{macrocode} % \end{parameter}^^A cdfont % \begin{parameter}{cdhead} -% \changes{v2.03}{2015/01/28}{\val{barfont} und \val{widehead} überlagert}%^^A +% \changes{v2.03}{2015/01/28}{\val{barfont} und \val{widehead} überlagert}^^A % Mit dem Parameter \val{cdhead} kann die Verwendung der Schriften des \CDs % aktiviert werden, wenn diese im Fließtext nicht zum Einsatz kommen. Die % Breite des Querbalkens kann über diesen Parameter ebenfalls geändert werden. @@ -2428,7 +3253,7 @@ % \end{macrocode} % \end{parameter}^^A cdhead % \begin{parameter}{cdfoot} -% \changes{v2.03}{2015/01/30}{neu}%^^A +% \changes{v2.03}{2015/01/30}{neu}^^A % Über \val{cdfoot} kann gg. die Hintergrundfarbe sowie die Standardfußzeile % des \CDs aktiviert werden. % \begin{macrocode} @@ -2436,9 +3261,9 @@ % \end{macrocode} % \end{parameter}^^A cdfoot % \begin{parameter}{headlogo} -% \changes{v2.03}{2015/01/28}{neu}%^^A +% \changes{v2.03}{2015/01/28}{neu}^^A % \begin{parameter}{footlogo} -% \changes{v2.03}{2015/01/28}{neu}%^^A +% \changes{v2.03}{2015/01/28}{neu}^^A % Das Zweit- und die Drittlogos können ebenfalls lokal geändert werden. % \begin{macrocode} \TUD@parameter@define{headlogo}{\headlogo{#1}}% @@ -2447,7 +3272,7 @@ % \end{parameter}^^A footlogo % \end{parameter}^^A headlogo % \begin{parameter}{ddc} -% \changes{v2.02}{2014/08/16}{neu}%^^A +% \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. @@ -2498,32 +3323,32 @@ % \begin{macrocode} \TUD@parameter@define{language}{\selectlanguage{#1}}% % \end{macrocode} -% \end{parameter} ^^A language +% \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}}% + \TUD@parameter@define{columns}{\cs@std@lock{tud@multicols}{#1}}% % \end{macrocode} -% \end{parameter} ^^A columns +% \end{parameter} ^^A columns % \begin{parameter}{color} -% \changes{v2.03}{2015/01/28}{entfernt}%^^A +% \changes{v2.03}{2015/01/28}{entfernt}^^A % \begin{parameter}{colour} -% \changes{v2.03}{2015/01/28}{entfernt}%^^A +% \changes{v2.03}{2015/01/28}{entfernt}^^A % Beide Parameter wurden entfernt, da diese augenscheinlich für das \CD nicht % notwendig sind. % \end{parameter}^^A colour % \end{parameter}^^A color % \begin{parameter}{pagestyle} -% \changes{v2.02}{2014/06/23}{neu}%^^A -% \changes{v2.03}{2015/01/28}{\cs{iftudpagestyle} verwendet}%^^A +% \changes{v2.02}{2014/06/23}{neu}^^A +% \changes{v2.03}{2015/01/28}{\cs{tud@iftudps} verwendet}^^A % Mit diesem Parameter kann der verwendete Seitenstil eingestellt werden, wobei % einer der \pgs{tudheadings}-Seitenstile verwendet wird. % \begin{macrocode} \TUD@parameter@define{pagestyle}{% - \iftudpagestyle{#1}{\renewcommand*\tud@ps{#1}}{% + \tud@iftudps{#1}{\renewcommand*\tud@ps{#1}}{% \ifstr{#1}{empty}{\renewcommand*\tud@ps{empty.tudheadings}}{% \ifstr{#1}{plain}{\renewcommand*\tud@ps{plain.tudheadings}}{% \ifstr{#1}{headings}{\renewcommand*\tud@ps{tudheadings}}{% @@ -2537,10 +3362,10 @@ % \end{parameter}^^A pagestyle % \begin{parameter}{head} % \changes{v2.02}{2014/06/30}{entfernt, Funktionalität teilweise durch Option -% \opt{ddchead} übernommen}%^^A +% \opt{ddchead} übernommen}^^A % \begin{parameter}{foot} -% \changes{v2.02}{2014/06/30}{entfernt, Funktinalität teilweise durch Option -% \opt{ddcfoot} übernommen}%^^A +% \changes{v2.02}{2014/06/30}{entfernt, Funktionalität teilweise durch Option +% \opt{ddcfoot} übernommen}^^A % Diese Parameter wurden entfernt. Stattdessen kann innerhalb der Umgebung % entweder der Befehl \cs{TUDoptions} mit den Schlüsseln \opt{ddchead=\dots} % und \opt{ddcfoot=\dots} bzw. für den Querbalken \opt{cdhead=\dots} sowie das -- cgit v1.2.3