diff options
Diffstat (limited to 'macros/latex/contrib/tudscr/source/tudscr-pagestyle.dtx')
-rw-r--r-- | macros/latex/contrib/tudscr/source/tudscr-pagestyle.dtx | 1164 |
1 files changed, 603 insertions, 561 deletions
diff --git a/macros/latex/contrib/tudscr/source/tudscr-pagestyle.dtx b/macros/latex/contrib/tudscr/source/tudscr-pagestyle.dtx index 67b272b9cb..05e5d75bae 100644 --- a/macros/latex/contrib/tudscr/source/tudscr-pagestyle.dtx +++ b/macros/latex/contrib/tudscr/source/tudscr-pagestyle.dtx @@ -1,10 +1,10 @@ -% \CheckSum{2046} % \iffalse meta-comment +%/GitFileInfo=tudscr-pagestyle.dtx % % TUD-Script -- Corporate Design of Technische Universität Dresden % ---------------------------------------------------------------------------- % -% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2021 +% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2022 % % ---------------------------------------------------------------------------- % @@ -23,33 +23,19 @@ % % \fi % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} -% -% \iffalse -%%% From File: tudscr-pagestyle.dtx +% \iffalse ins:batch + dtx:driver +%<*ins> +\ifx\documentclass\undefined + \input docstrip.tex + \ifToplevel{\batchinput{tudscr.ins}} +\else + \let\endbatchfile\relax +\fi +\endbatchfile +%</ins> %<*dtx> -% \fi -% -\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi -\ProvidesFile{tudscr-pagestyle.dtx}[2021/03/30 v2.06l TUD-Script\space% - (pagestyle)% -] -% -% \iffalse +\ProvidesFile{tudscr-pagestyle.dtx}[2022/08/09] +\RequirePackage{tudscr-gitinfo} \documentclass[english,ngerman,xindy]{tudscrdoc} \iftutex \usepackage{fontspec} @@ -59,18 +45,11 @@ \fi \usepackage{babel} \usepackage{tudscrfonts} -\KOMAoptions{parskip=half-} -\usepackage{bookmark} \usepackage[babel]{microtype} -\CodelineIndex -\RecordChanges -\GetFileInfo{tudscr-pagestyle.dtx} -\title{\file{\filename}} -\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}} -\date{\fileversion\nobreakspace(\filedate)} - +\GitHubBase{\TUDScriptRepository} \begin{document} + \author{Falk Hanisch\TUDScriptContactTitle} \maketitle \tableofcontents \DocInput{\filename} @@ -84,15 +63,15 @@ % \changes{v2.02}{2014/07/08}{\cs{FamilyKeyState} wird von Optionen genutzt}^^A % \changes{v2.05}{2015/07/06}{Seitenstil für Poster}^^A % +% +% % \section{Der Seitenstil des \CDs} % -% Es wird der Seitenstil des \CD der \TnUD mit Logo und dem charakteristischen +% Es wird der Seitenstil des \TUDCD mit Logo und dem charakteristischen % Querbalken im Kopfbereich definiert. Hierfür kommt das \KOMAScript-Paket % \pkg{scrlayer-scrpage} zum Einsatz. % \ToDo{Abhängigkeiten Satzspiegel<>Seitenstil beseitigen}[v2.07] % -% \StopEventually{\PrintIndex\PrintChanges\PrintToDos} -% % \iffalse %<*class&body> % \fi @@ -110,12 +89,16 @@ % 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. +% \ToDo{Setzen der Boxen mit \cs{tud@vlayerbox} komplett überarbeiten}[v2.07] +% \ToDo{lazy init der Boxen für Grafiken?}[v2.07] % \begin{macrocode} \if@tud@x@standalone@crop \PreventPackageFromLoading{scrlayer-scrpage}% \else \PassOptionsToPackage{automark}{scrlayer-scrpage}% - \AtEndPreamble{\RequirePackage{scrlayer-scrpage}[2020/09/21]}% + \AtEndPreamble{\RequirePackage{scrlayer-scrpage}[% +%!TUD@KOMAVersion + ]}% \fi % \end{macrocode} % Für das Erzeugen der Seitenstile wird das Paket \pkg{scrlayer-scrpage} @@ -132,12 +115,21 @@ % \changes{v2.02}{2014/06/23}{neu}^^A % \begin{layerpagestyle}{empty.tudheadings} % \changes{v2.02}{2014/06/23}{neu}^^A -% Es wird ein neuer Seitenstil kreiert, der das \CD der \TnUD mit der -% prägenden Kopfzeile umsetzt. Dabei soll dieser Kopf auch verwendbar sein, -% wenn nicht die vom \CD vorgeschriebenen Seitenränder sondern das Paket -% \pkg{typearea} genutzt wird. Dafür wird das Logo im Kopf so wie im \CD -% vorgesehen mit dem Logo der \TnUD in den Rand und dem Schriftzug bündig zum -% Textblock gesetzt. +% Es wird ein neuer Seitenstil kreiert, der das \TUDCD mit der prägenden +% Kopfzeile umsetzt. Dabei soll dieser Kopf auch verwendbar sein, wenn nicht +% die vom \CD vorgeschriebenen Seitenränder sondern das Paket \pkg{typearea} +% genutzt wird. Dafür wird das Logo im Kopf so wie im \CD vorgesehen mit dem +% Logo der \TnUD in den Rand und dem Schriftzug bündig zum Textblock gesetzt. +% +% \Attention{% +% Um Längenangaben aus Makros sicher auf Dimensionsausdrücke zu reduzieren, +% müssen diese in \cs{dimexpr}\cs{glueexpr}\val{\dots}\cs{relax}\cs{relax} +% eingehüllt werden. Das Paket \pkg{scrlayer} verwendet allerdings lediglich +% \cs{dimexpr}, weshalb hier noch zusätzlich \cs{glueexpr} genutzt wird. Dies +% ist insbesondere für \cs{tud@bleedmargin@dim} relevant. Siehe hierzu auch +% \GitHubRepo(latex3/latex2e)<227>. +% } +% % \begin{layer}{tudheadings.head.content} % \changes{v2.04}{2015/05/31}{neu}^^A % Dies sind das links aus dem Satzspiegel verschobene Logo der \TnUD und das @@ -146,10 +138,10 @@ % \begin{macrocode} \DeclareNewLayer[% background,headsep,% - addhoffset=\dimexpr\tud@len@logox-\tud@len@widemargin\relax,% - addwidth=\dimexpr-\tud@len@logox+\tud@len@widemargin\relax,% - voffset=\tud@len@logoy,% - addvoffset=\tud@len@layoutvoffset,% + addhoffset=\tud@dim@logox-\tud@dim@widemargin,% + addwidth=-\tud@dim@logox+\tud@dim@widemargin,% + voffset=\tud@dim@logoy,% + addvoffset=\tud@dim@layoutvoffset,% contents={% % \end{macrocode} % Vor der Ausgabe der Logoboxen werden diese im Bedarfsfall neu gesetzt. @@ -171,10 +163,10 @@ % \begin{macrocode} \DeclareNewLayer[% background,% - width=\dimexpr\tud@len@layoutwidth+\tud@dim@bleedmargin*2\relax,% - addhoffset=\dimexpr\tud@len@layouthoffset-\tud@dim@bleedmargin\relax,% - height=\dimexpr\tud@len@topmargin+\tud@dim@bleedmargin\relax,% - addvoffset=\dimexpr\tud@len@layoutvoffset-\tud@dim@bleedmargin\relax,% + width=\glueexpr\tud@dim@layoutwidth+(\tud@bleedmargin@dim)*2\relax,% + addhoffset=\glueexpr\tud@dim@layouthoffset-\tud@bleedmargin@dim\relax,% + height=\glueexpr\tud@dim@topmargin+\tud@bleedmargin@dim\relax,% + addvoffset=\glueexpr\tud@dim@layoutvoffset-\tud@bleedmargin@dim\relax,% contents={% \ifnum\tud@head@bar@num>\tw@\relax% cdhead=color \color{HKS41}% @@ -184,16 +176,16 @@ ]{tudheadings.head.back}% \DeclareNewLayer[% background,% - width=\dimexpr\tud@len@layoutwidth+\tud@dim@bleedmargin*2\relax,% - addhoffset=\dimexpr\tud@len@layouthoffset-\tud@dim@bleedmargin\relax,% - height=\tud@len@barheight,% - voffset=\tud@len@topmargin,% - addvoffset=\tud@len@layoutvoffset,% + width=\glueexpr\tud@dim@layoutwidth+(\tud@bleedmargin@dim)*2\relax,% + addhoffset=\glueexpr\tud@dim@layouthoffset-\tud@bleedmargin@dim\relax,% + height=\tud@dim@barheight,% + voffset=\tud@dim@topmargin,% + addvoffset=\tud@dim@layoutvoffset,% contents={% \ifnum\tud@head@bar@num>\@ne\relax% cdhead=barcolor/color \color{HKS41!60}% - \setlength\@tempdima{\dimexpr\ht\strutbox-\tud@len@barheight\relax}% - \ifdim\@tempdima<\z@\relax\setlength\@tempdima{\z@}\fi% + \tud@setdim\@tempdima{\ht\strutbox-\tud@dim@barheight}% + \ifdim\@tempdima<\z@\relax\tud@setdim\@tempdima{\z@}\fi% \raisebox{\@tempdima}{\rule{\layerwidth}{\layerheight}}% \fi% },% @@ -207,8 +199,8 @@ % \begin{macrocode} \DeclareNewLayer[% background,headsep,% - voffset=\dimexpr\tud@len@topmargin+\tud@len@line\relax,% - addvoffset=\tud@len@layoutvoffset,% + voffset=\tud@dim@topmargin+\tud@dim@line,% + addvoffset=\tud@dim@layoutvoffset,% contents={% \tud@head@font@set% \tud@head@text@set% @@ -233,8 +225,8 @@ % \begin{macrocode} \DeclareNewLayer[% background,headsep,% - voffset=\dimexpr\tud@len@topmargin-.5\tud@len@line\relax,% - addvoffset=\tud@len@layoutvoffset,% + voffset=\tud@dim@topmargin-\tud@dim@line/2,% + addvoffset=\tud@dim@layoutvoffset,% contents={% \ifnum\tud@head@bar@num<\tw@\relax% cdhead=nocolor/litecolor \if@tud@head@widebar\else\tud@head@rule{\layerwidth}\fi% @@ -243,9 +235,8 @@ ]{tudheadings.head.upline}% \DeclareNewLayer[% background,headsep,% - voffset=\dimexpr\tud@len@topmargin+\tud@len@barheight% - -.5\tud@len@line\relax,% - addvoffset=\tud@len@layoutvoffset,% + voffset=\tud@dim@topmargin+\tud@dim@barheight-\tud@dim@line/2,% + addvoffset=\tud@dim@layoutvoffset,% contents={% \ifnum\tud@head@bar@num<\tw@\relax% cdhead=nocolor/litecolor \if@tud@head@widebar\else\tud@head@rule{\layerwidth}\fi% @@ -254,10 +245,10 @@ ]{tudheadings.head.lowline}% \DeclareNewLayer[% background,% - width=\dimexpr\tud@len@layoutwidth+\tud@dim@bleedmargin*2\relax,% - addhoffset=\dimexpr\tud@len@layouthoffset-\tud@dim@bleedmargin\relax,% - voffset=\dimexpr\tud@len@topmargin-.5\tud@len@line\relax,% - addvoffset=\tud@len@layoutvoffset,% + width=\glueexpr\tud@dim@layoutwidth+(\tud@bleedmargin@dim)*2\relax,% + addhoffset=\glueexpr\tud@dim@layouthoffset-\tud@bleedmargin@dim\relax,% + voffset=\tud@dim@topmargin-\tud@dim@line/2,% + addvoffset=\tud@dim@layoutvoffset,% contents={% \ifnum\tud@head@bar@num<\tw@\relax% cdhead=nocolor/litecolor \if@tud@head@widebar\tud@head@rule{\layerwidth}\fi% @@ -266,11 +257,10 @@ ]{tudheadings.head.uplinewide}% \DeclareNewLayer[% background,% - width=\dimexpr\tud@len@layoutwidth+\tud@dim@bleedmargin*2\relax,% - addhoffset=\dimexpr\tud@len@layouthoffset-\tud@dim@bleedmargin\relax,% - voffset=\dimexpr\tud@len@topmargin+\tud@len@barheight% - -.5\tud@len@line\relax,% - addvoffset=\tud@len@layoutvoffset,% + width=\glueexpr\tud@dim@layoutwidth+(\tud@bleedmargin@dim)*2\relax,% + addhoffset=\glueexpr\tud@dim@layouthoffset-\tud@bleedmargin@dim\relax,% + voffset=\tud@dim@topmargin+\tud@dim@barheight-\tud@dim@line/2,% + addvoffset=\tud@dim@layoutvoffset,% contents={% \ifnum\tud@head@bar@num<\tw@\relax% cdhead=nocolor/litecolor \if@tud@head@widebar\tud@head@rule{\layerwidth}\fi% @@ -288,8 +278,8 @@ % \begin{macrocode} \DeclareNewLayer[% foreground,headsep,% - addvoffset=.5\tud@len@headsep,% - height=\baselineskip,% + addvoffset=\tud@dim@headsep/2,% + height=1\baselineskip,% contents={\if@tud@head@date\hfill\tud@date@print\fi},% ]{tudheadings.head.date}% % \end{macrocode} @@ -312,10 +302,10 @@ % \begin{macrocode} \DeclareNewLayer[% background,foot,% - width=\dimexpr\tud@len@layoutwidth+\tud@dim@bleedmargin*2\relax,% - hoffset=\dimexpr\tud@len@layouthoffset-\tud@dim@bleedmargin\relax,% - height=\dimexpr\tud@len@layoutheight-\layeryoffset% - +\tud@len@layoutvoffset+\tud@dim@bleedmargin\relax,% + width=\glueexpr\tud@dim@layoutwidth+(\tud@bleedmargin@dim)*2\relax,% + hoffset=\glueexpr\tud@dim@layouthoffset-\tud@bleedmargin@dim\relax,% + height=\glueexpr\tud@dim@layoutheight-\layeryoffset% + +\tud@dim@layoutvoffset+\tud@bleedmargin@dim\relax,% addvoffset=-\dp\strutbox,% contents={% \if@tud@foot@colored% @@ -330,7 +320,9 @@ \fi% }{% \def\@tempc{\color{HKS41}}% - \ifstr{\tud@pagecolor}{HKS41}{\def\@tempc{\color{HKS41!60}}}{}% + \tud@if@strequal{\tud@pagecolor}{HKS41}% + {\def\@tempc{\color{HKS41!60}}}% + {}% }% \ifx\@tempc\relax\else% \@tempc\rule{\layerwidth}{\layerheight}% @@ -345,7 +337,7 @@ % \begin{macrocode} \tud@if@v@lower{2.03}{% \ModifyLayer[% - addvoffset=-\tud@len@ddcdiff+\ht\strutbox,% + addvoffset=-\tud@dim@ddcdiff+\ht\strutbox,% contents={% \if@tud@foot@colored% \let\@tempc\relax% @@ -357,7 +349,9 @@ \fi% }{% \def\@tempc{\color{HKS41}}% - \ifstr{\tud@pagecolor}{HKS41}{\def\@tempc{\color{HKS41!60}}}{}% + \tud@if@strequal{\tud@pagecolor}{HKS41}% + {\def\@tempc{\color{HKS41!60}}}% + {}% }% \ifx\@tempc\relax\else% \tud@ddc@check% @@ -365,7 +359,7 @@ \vbox to \layerheight{% \vfil\@tempc% \rule{\layerwidth}{% - \dimexpr\layerheight-\tud@len@ddcdiff+\ht\strutbox\relax% + \dimexpr\layerheight-\tud@dim@ddcdiff+\ht\strutbox\relax% }% }% \else% \tud@ddc@foot@num!=false @@ -384,8 +378,7 @@ % \begin{macrocode} \DeclareNewLayer[% background,foot,% - height=\dimexpr\tud@len@layoutheight-\layeryoffset% - +\tud@len@layoutvoffset\relax,% + height=\tud@dim@layoutheight-\layeryoffset+\tud@dim@layoutvoffset,% contents={% % \end{macrocode} % Falls die Höhe der Logos im Fuß nicht durch den Anwender festgelegt wurden, @@ -393,13 +386,10 @@ % Layers nicht vollständig genutzt, um bei einem farbigen Fußbereich einen % gewissen Abstand vom Inhalt zur Kante zu erhalten. % \begin{macrocode} - \TUD@deprecated@lengthcs[% - \global\@tud@footlogo@option@settrue% - ]{footlogoheight}% - \setlength\@tempdima{\dimexpr\layerheight-\dp\strutbox\relax}% + \tud@setdim\@tempdima{\layerheight-\dp\strutbox}% % \end{macrocode} % Im Bedarfsfall werden die Boxen vor der Ausgabe durch die einzelnen -% \cs{\dots{}@use}-Befehle neu gesetzt. Danach erfolgt die Ausgabe, wobei die +% |\...@use|-Befehle neu gesetzt. Danach erfolgt die Ausgabe, wobei die % Boxen übereinander gelegt werden. % \begin{macrocode} \tud@footlogo@cmd@use{\@tempdima}{\layerwidth}% @@ -413,16 +403,13 @@ % \begin{macrocode} \tud@if@v@lower{2.03}{% \ModifyLayer[% - addvoffset=-\tud@len@ddcdiff+\ht\strutbox,% + addvoffset=-\tud@dim@ddcdiff+\ht\strutbox,% contents={% - \TUD@deprecated@lengthcs[% - \global\@tud@footlogo@option@settrue% - ]{footlogoheight}% - \setlength\@tempdima{\dimexpr\layerheight-\dp\strutbox\relax}% + \tud@setdim\@tempdima{\layerheight-\dp\strutbox}% \tud@ddc@check% \ifcase\@tempb\relax% \tud@ddc@foot@num=false - \addtolength\@tempdima{\dimexpr\ht\strutbox-\tud@len@ddcdiff\relax}% - \vskip\dimexpr\tud@len@ddcdiff-\ht\strutbox-\baselineskip\relax% + \tud@addtodim\@tempdima{\ht\strutbox-\tud@dim@ddcdiff}% + \vskip\dimexpr\tud@dim@ddcdiff-\ht\strutbox-1\baselineskip\relax% \fi% \tud@footlogo@cmd@use{\@tempdima}{\layerwidth}% \tud@footlogo@ddc@use{\@tempdima}{\layerwidth}% @@ -462,7 +449,7 @@ % entsprechenden \pgs{scrheadings}-Ebenen verwendet. % \begin{macrocode} \DeclareNewPageStyleByLayers[% - onselect=\tud@ps@onselect,onbackground=\tud@ps@onbackground% + onbackground=\tud@ps@onbackground% ]{tudheadings}{% tudheadings.head.back,% tudheadings.head.content,% @@ -493,7 +480,7 @@ % Fußzeilenebenen des Seitenstils \pgs{plain.scrheadings} hinzugefügt. % \begin{macrocode} \DeclareNewPageStyleByLayers[% - onselect=\tud@ps@onselect,onbackground=\tud@ps@onbackground% + onbackground=\tud@ps@onbackground% ]{plain.tudheadings}{% tudheadings.head.back,% tudheadings.head.content,% @@ -523,7 +510,7 @@ % lediglich aus dem Kopf besteht und einen lerren Seitenfuß hat. % \begin{macrocode} \DeclareNewPageStyleByLayers[% - onselect=\tud@ps@onselect,onbackground=\tud@ps@onbackground% + onbackground=\tud@ps@onbackground% ]{empty.tudheadings}{% tudheadings.head.back,% tudheadings.head.content,% @@ -554,12 +541,10 @@ % \begin{macrocode} \DeclareNewLayer[% background,% - area=% - {\dimexpr\tud@len@layouthoffset-\tud@dim@bleedmargin\relax}% - {\dimexpr\tud@len@layoutvoffset-\tud@dim@bleedmargin\relax}% - {\dimexpr\tud@len@layoutwidth+\tud@dim@bleedmargin*2\relax}% - {\dimexpr\tud@len@layoutheight+\tud@dim@bleedmargin*2\relax}% - ,% + hoffset=\glueexpr\tud@dim@layouthoffset-\tud@bleedmargin@dim\relax,% + voffset=\glueexpr\tud@dim@layoutvoffset-\tud@bleedmargin@dim\relax,% + width=\glueexpr\tud@dim@layoutwidth+(\tud@bleedmargin@dim)*2\relax,% + height=\glueexpr\tud@dim@layoutheight+(\tud@bleedmargin@dim)*2\relax,% contents={% \ifdefvoid{\tud@pagecolor}{}{% \color{\tud@pagecolor}% @@ -574,6 +559,40 @@ % \end{layerpagestyle}^^A empty.tudheadings % \end{layerpagestyle}^^A plain.tudheadings % \end{layerpagestyle}^^A tudheadings +% Normalerweise werden durch \pkg{scrlayer-scrpage} bei der Umschaltung auf +% einen mit dem Befehl \cs{newpairofpagestyles}\marg{Seitenstil} definierten +% Seitenstil, die Seitenstile \pgs{headings} und \pgs{plain} als Aliase für +% \pgs{\meta{Seitenstil}} und \pgs{plain.\meta{Seitenstil}} festgelegt. +% Allerdings definiert dieser Befehl zusätzliche Ebenen für Kopf- und Fußzeile, +% weshalb auf die Verwendung verzichtet wird. Das automatische Umschalten soll +% dennoch ermöglicht werden, weshalb hierfür der Haken \val{onselect} verwendet +% wird, der für jeden Seitenstil bei der Initialisierung aufgerufen wird. +% \begin{macrocode} + \AddToLayerPageStyleOptions{@everystyle@}{% + onselect={% + \tud@if@tudheadings{\currentpagestyle}{% + \DeclarePageStyleAlias{plain}{plain.tudheadings}% + \DeclarePageStyleAlias{headings}{tudheadings}% + \def\sls@currentheadings{tudheadings}% + \def\sls@currentplain{plain.tudheadings}% + \TUD@deprecated@length\footlogoheight% +% \end{macrocode} +% Im Seitenfuß wird für die Seitenzahl und ggf. die Kolumnentitel die passende +% Schrift verwendet. +% \begin{macrocode} + \tud@komafont@set{pagenumber}{\usekomafont{tudheadings}}% + \tud@komafont@set{pagefoot}{\usekomafont{tudheadings}}% + }{% +% \end{macrocode} +% Handelt es sich nicht um einen \pgs{tudheadings} Seitenstil, werden die +% Schriften für Seitenzahl und Kolumnentitel zurückgesetzt. +% \begin{macrocode} + \tud@komafont@unset{pagenumber}% + \tud@komafont@unset{pagefoot}% + }% + }% + }% +% \end{macrocode} % Damit ist die Deklaration der Seitenstile mit \pkg{scrlayer-scrpage} beendet. % \begin{macrocode} } @@ -612,7 +631,9 @@ % Wird der Befehl \cs{thispagestyle} verwendet, muss dafür Sorge getragen % werden, dass kein Alias-Seitenstil expandiert wird. % \begin{macrocode} -\patchcmd{\thispagestyle}{\gdef\@specialstyle{#1}}{% +\patchcmd\thispagestyle{% + \gdef\@specialstyle{#1}% +}{% \xdef\@specialstyle{\GetRealPageStyle{#1}}% }{}{\tud@patch@wrn{thispagestyle}} % \end{macrocode} @@ -629,7 +650,7 @@ \newcommand*\tud@pagestyle{} \let\tud@pagestyle\pagestyle \newcommand*\currentpagestyle{plain} -\pretocmd{\tud@pagestyle}{% +\pretocmd\tud@pagestyle{% \tud@BeforeSelectAnyPageStyle{#1}% \edef\currentpagestyle{#1}% }{}{\tud@patch@wrn{pagestyle}} @@ -672,15 +693,16 @@ % einige notwendige Makros definiert. % \begin{macrocode} \TUD@UnwindPackage{scrlayer-scrpage}{% - \ifcsundef{if@chapter}{% + \ifundef{\if@chapter}{% \newif\if@chapter% - \ifcsundef{chapter}{\@chapterfalse}{\@chaptertrue}% + \ifundef{\chapter}{\@chapterfalse}{\@chaptertrue}% }{}% \cslet{ps@tudheadings}{\ps@headings}% \cslet{ps@plain.tudheadings}{\ps@plain}% \cslet{ps@empty.tudheadings}{\ps@empty}% \providecommand*\currentpagestyle{plain}% \providecommand*\BeforeSelectAnyPageStyle[1]{}% + \providecommand*\tud@BeforeSelectAnyPageStyle[1]{}% \providecommand*\GetRealPageStyle[1]{#1}% % \end{macrocode} % Außerdem wird die angepasste Definition von \cs{pagestyle} verwendet. @@ -699,27 +721,6 @@ % \end{macro}^^A \ps@empty.tudheadings % \end{macro}^^A \ps@plain.tudheadings % \end{macro}^^A \ps@tudheadings -% \begin{macro}{\tud@ps@onselect} -% \changes{v2.03}{2015/01/09}{neu}^^A -% Der Befehl wird bei der Initialisierung der Seitenstile aufgerufen. -% \begin{macrocode} -\newcommand*\tud@ps@onselect{% -% \end{macrocode} -% Normalerweise werden durch \pkg{scrlayer-scrpage} bei der Umschaltung auf -% einen mit dem Befehl \cs{newpairofpagestyles}\marg{Seitenstil} definierten -% Seitenstil, die Seitenstile \pgs{headings} und \pgs{plain} als Aliase für -% \pgs{\meta{Seitenstil}} und \pgs{plain.\meta{Seitenstil}} festgelegt. -% Allerdings definiert dieser Befehl zusätzliche Ebenen für Kopf- und Fußzeile, -% weshalb auf die Verwendung verzichtet wird. Das automatische Umschalten soll -% dennoch ermöglicht werden. -% \begin{macrocode} - \DeclarePageStyleAlias{plain}{plain.tudheadings}% - \DeclarePageStyleAlias{headings}{tudheadings}% - \def\sls@currentheadings{tudheadings}% - \def\sls@currentplain{plain.tudheadings}% -} -% \end{macrocode} -% \end{macro}^^A \tud@ps@onselect % % \subsubsection{Gestaltungsvarianten für Kopf- und Fußzeile} % @@ -794,7 +795,7 @@ % für farbige Titel- und Teileseiten\dots % \begin{macrocode} \tud@locked@bool@preset{@tud@head@widebar}{true}% - \ifstr{\tud@pagecolor}{HKS41}{% + \tud@if@strequal{\tud@pagecolor}{HKS41}{% \renewcommand*\tud@head@logocolor{white}% \renewcommand*\tud@head@fontcolor{white}% \renewcommand*\tud@foot@logocolor{white}% @@ -836,8 +837,10 @@ % des Querbalkens gesetzt, die Schriftfarbe des Fußes wird global geändert, % damit Seitenzahl und Kolumnentitel gegebenenfalls angepasst werden. % \begin{macrocode} - \let\tud@len@line\tud@len@thinline% - \ifstr{\tud@head@fontcolor}{white}{\let\tud@len@line\tud@len@heavyline}{}% + \let\tud@dim@line\tud@dim@thinline% + \tud@if@strequal{\tud@head@fontcolor}{white}% + {\let\tud@dim@line\tud@dim@heavyline}% + {}% \global\let\tud@foot@fontcolor\tud@foot@fontcolor% } % \end{macrocode} @@ -880,13 +883,13 @@ % gesetzt werden soll, wenn ein weiteres Feld nachfolgt. % \begin{macrocode} \newcommand*\tud@head@text@add[3][{, }]{% - \ifxblank{#3}{}{% + \tud@if@strblank{#3}{}{% \edef\tud@head@text@delimiter{\expandonce\tud@head@text@buffer}% \def\tud@head@text@buffer{#1}% \edef\@tempa{% \expandonce\tud@head@text@line% \expandonce\tud@head@text@delimiter% - \etex@unexpanded{#2#3}% + \unexpanded{#2#3}% }% % \end{macrocode} % Sollte das hinzuzufügende Feld die aktuelle Kopfzeile \cs{tud@head@text@line} @@ -914,7 +917,7 @@ % der zu großen Breite der Kopfinformationen, was bei kleinen Papierformaten % geschehen kann, (re-)definiert. % \begin{macrocode} -\newif\if@tud@head@text@set +\tud@newif\if@tud@head@text@set \newcommand*\tud@head@text@wrn[1]{} \newcommand*\tud@head@text@set{% \if@tud@head@text@set% @@ -939,7 +942,7 @@ % die zusätzliche Zeile in die Liste expandiert. % \begin{macrocode} \listeadd\tud@head@text@list{\expandonce\tud@head@text@line}% - \ifxblank{\@extraheadline}{}{% + \tud@if@strblank{\@extraheadline}{}{% \listadd\tud@head@text@list{\tud@head@font@light\@extraheadline}% }% \gdef\tud@head@text@wrn##1{% @@ -971,7 +974,7 @@ % Die Farbe des Textes der ersten Zeile entspricht immer der des Kopfes. % \begin{macrocode} \def\@tempb{\tud@color{\tud@head@fontcolor}}% - \def\@tempc{\depth+\tud@len@heavyline}% + \def\@tempc{\depth+\tud@dim@heavyline}% % \end{macrocode} % Das Makro \cs{@tempa} wird zur Ababreitung der Liste \cs{tud@head@text@list} % definiert. @@ -991,14 +994,14 @@ \@tempb% \tud@head@text@write[\@tempc]{##1}% \def\@tempb{\newline}% - \def\@tempc{\z@}% + \let\@tempc\z@% % \end{macrocode} % Die weiteren Zeilen sind bei zweifarbigen Kopf normalerweise blau, nur für % einen dunklen Seitenhintergrund weiß. % \begin{macrocode} \ifnum\tud@head@bar@num>\@ne\relax% cdhead=barcolor/color \ifdefvoid{\tud@pagecolor}{\color{HKS41}}{% - \ifstr{\tud@pagecolor}{HKS41}{\color{white}}{\color{HKS41}}% + \tud@if@strequal{\tud@pagecolor}{HKS41}{\color{white}}{\color{HKS41}}% }% \fi% }% @@ -1012,7 +1015,7 @@ % lassen, wird dies hier temporär unterdrückt. % \begin{macrocode} \let\@raggedtwoe@everyselectfont\relax% - \setlength\spaceskip{\z@}% + \tud@setdim\spaceskip{\z@}% \selectfont% \offinterlineskip% \forlistloop\@tempa{\tud@head@text@list}% @@ -1028,9 +1031,11 @@ % Befehl zur Ausgabe der ersten und evtl. zweiten Textzeile im TUD-Kopf % \begin{macrocode} \newcommand*\tud@head@text@write[2][\z@]{% - \raisebox{\dimexpr(\tud@len@barheight+2\tud@len@line-\totalheight)/2\relax}[% - \dimexpr\tud@len@barheight-\depth\relax% - ][\dimexpr#1\relax]{#2\vphantom{gjpqy\"A\"O\"U}}% + \raisebox{% + \dimexpr(\tud@dim@barheight+\tud@dim@line*2-\totalheight)/2\relax% + }[% + \dimexpr\tud@dim@barheight-\depth\relax% + ][\dimexpr\glueexpr#1\relax\relax]{#2\vphantom{\tud@font@phantomglyphs}}% } % \end{macrocode} % \end{macro}^^A \tud@head@text@write @@ -1039,11 +1044,11 @@ % Der Querbalken des Kopfes läuft je nach Parameterwahl \cs{tud@head@bar@num} % entweder nur über den Textbereich oder aber über die gesamte Seitenbreite. % Der Befehl erzeugt eine horizontale Linie mit der übergebenen Breite und -% über \cs{tud@len@line} definierter Dicke. +% über \cs{tud@dim@line} definierter Dicke. % \begin{macrocode} \newcommand*\tud@head@rule[1]{% \tud@color{\tud@head@fontcolor}% - \rule[\ht\strutbox]{#1}{\tud@len@line}% + \rule[\ht\strutbox]{#1}{\tud@dim@line}% } % \end{macrocode} % \end{macro}^^A \tud@head@rule @@ -1062,7 +1067,7 @@ % von \cs{includegraphics} möglichst gering zu halten. % \begin{macrocode} \newcommand*\tud@newlayerbox[1]{% - \expandafter\newsavebox\csname tud@layer@#1\endcsname% + \global\expandafter\newsavebox\csname tud@layer@#1\endcsname% } \newcommand*\tud@savelayerbox[1]{% \global\expandafter\sbox\csname tud@layer@#1\endcsname% @@ -1076,6 +1081,7 @@ % \end{macro}^^A \tud@newlayerbox % \begin{macro}{\tud@vlayerbox} % \changes{v2.04}{2015/05/31}{neu}^^A +% \changes{v2.06o}{2022/08/08}{unschöner Fix für duplizierte Warnungen}^^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 @@ -1085,24 +1091,289 @@ % ergreifen und nicht lediglich eine Meldung einer zu übervollen \cs{vbox} zu % erhalten. % \begin{macrocode} -\newcommand*\tud@vlayerbox[3]{% +\newcommand*\tud@vlayerbox[4][]{% \begingroup% - \setbox\z@\vbox{#2}% - \setlength\@tempdima{\dimexpr\ht\z@+\dp\z@-#1\relax}% - \ifdim\@tempdima>\z@\relax% - \ClassWarning{\TUD@Class@Name}{% - #3\MessageBreak% - The maximum height is exceeded by \the\@tempdima\MessageBreak% + \setbox\z@\vbox{#3}% + \tud@setdim\tud@res@glue{\dimexpr\glueexpr#2\relax\relax}% + \ifdim\dimexpr\ht\z@+\dp\z@-\tud@res@glue\relax>\p@\relax% + \edef\tud@res@a{% + \noexpand\ClassWarning{\noexpand\TUD@Class@Name}{% + #4\noexpand\MessageBreak% + The total height of \the\dimexpr\ht\z@+\dp\z@\relax\space exceeds the% + \noexpand\MessageBreak maximum height (\the\tud@res@glue)% + }% + }% + \IfArgIsEmpty{#1}{\tud@res@a}{% + \expandafter\ifx\csname tud@layer@#1@wrn\endcsname\tud@res@a\else% + \tud@res@a% + \global\cslet{tud@layer@#1@wrn}\tud@res@a% + \fi% }% \fi% \endgroup% - \vbox to #1{#2}% + \vbox to #2{#3}% } % \end{macrocode} % \end{macro}^^A \tud@vlayerbox % % \iffalse %</class&body> +% \fi +% +% \subsection{Optionen für das \DDC-Logo} +% +% \begin{macro}{\tud@comp@clearpage} +% \changes{v2.04}{2015/05/31}{neu}^^A +% \begin{macro}{\tud@comp@resetpagestyle} +% \changes{v2.04}{2015/05/31}{neu}^^A +% \begin{macro}{\if@tud@ddc@internal} +% \changes{v2.02}{2014/07/08}{neu}^^A +% Bis zur Version~v2.02 wurden unterschiedliche Satzsiegel für den Seitenfuß +% mit und ohne \DDC-Logo verwendet. Damit dieser im Zweifelsfall umgestellt +% werden kann, wurde vor dem Ausführen der entsprechenden Optionen ein +% Seitenumbruch erzwungen und nach dem Verarbeiten der Optionen der aktuelle +% Seitenstil erneut aufgerufen. Die beiden folgenden Makros werden für dieses +% Unterfangen definiert, jedoch bei der Abarbeitung der Optionen nur noch im +% Kompatibilitätmodus ausgeführt. Der Schalter \cs{if@tud@ddc@internal} wird +% intern von den Optionen \opt{ddc}, \opt{ddchead} und \opt{ddcfoot} verwendet, +% um rekursive Aufrufe der Optionen zu verhindern. +% \begin{macrocode} +%<*class&option> +\tud@newif\if@tud@ddc@internal +\newcommand*\tud@comp@clearpage{}% +\newcommand*\tud@comp@resetpagestyle{}% +%</class&option> +%<*class&body> +\tud@if@v@lower{2.04}{% + \renewcommand*\tud@comp@clearpage{% + \if@tud@ddc@internal\else% + \tud@if@tudheadings{\currentpagestyle}{\clearpage}{}% + \fi% + }% + \renewcommand*\tud@comp@resetpagestyle{% + \if@tud@ddc@internal\else% + \tud@if@tudheadings{\currentpagestyle}{% + \expandafter\pagestyle\expandafter{\currentpagestyle}% + }{}% + \fi% + }% +}{}% +%</class&body> +% \end{macrocode} +% \end{macro}^^A \if@tud@ddc@internal +% \end{macro}^^A \tud@comp@clearpage +% \end{macro}^^A \tud@comp@resetpagestyle +% +% \iffalse +%<*class&option> +% \fi +% +% \begin{option}{ddc} +% \changes{v2.02}{2014/06/23}{automatische Logowahl}^^A +% \begin{option}{ddchead} +% \changes{v2.02}{2014/06/23}{Logo von \DDC entweder in Kopf oder Fuß}^^A +% \begin{option}{ddcfoot} +% \changes{v2.02}{2014/06/23}{Logo von \DDC entweder in Kopf oder Fuß}^^A +% Diese Optionen dienen zur Auswahl des \DDC-Logos auf Seiten mit dem Stil +% \pgs{tudheadings}. Die Option \opt{ddchead} setzt das Logo dabei immer in den +% Kopf, wobei ein mit \cs{headlogo} definiertes Zweitlogo gegebenenfalls +% überschrieben wird. Die Option \opt{ddcfoot} setzt das Logo immer in den Fuß. +% Mit der Option \opt{ddc} wird das Logo nur in den Kopf gesetzt, wenn kein +% Zweitlogo angegeben ist. Ist dies jedoch der Fall, wird das Logo stattdessen +% im Fuß ausgegeben. +% \begin{macro}{\tud@ddc@switch} +% \changes{v2.02}{2014/06/23}{neu}^^A +% Das Makro definiert die gültigen Werte für die \DDC-Optionen \opt{ddc}, +% \opt{ddchead} sowie \opt{ddcfoot}. +% \begin{macrocode} +\newcommand*\tud@ddc@switch{} +\edef\tud@ddc@switch{% + \TUD@bool@numkey,% + {color}{2},{colour}{2},{cdcolor}{2},{cdcolour}{2},% + {colorblack}{3},{colourblack}{3},{cdcolorblack}{3},{cdcolourblack}{3},% + {gray}{4},{grey}{4},{hks92}{4},{cdgray}{4},{cdgrey}{4},% + {black}{5},{cdblack}{5},% + {blue}{6},{hks41}{6},{cdblue}{6},{cddarkblue}{6},% + {white}{7},{cdwhite}{7}% +} +% \end{macrocode} +% \end{macro}^^A \tud@ddc@switch +% \begin{macro}{\tud@ddc@auto@num} +% \changes{v2.02}{2014/06/23}{neu}^^A +% \begin{macro}{\if@tud@ddc@auto} +% \changes{v2.02}{2014/06/23}{neu}^^A +% \begin{macro}{\if@tud@headlogo@option@set} +% \changes{v2.04}{2015/05/31}{neu}^^A +% \begin{macro}{\if@tud@footlogo@option@set} +% \changes{v2.04}{2015/06/01}{neu}^^A +% Die Option \opt{ddc}. +% \begin{macrocode} +\tud@newif\if@tud@headlogo@option@set +\tud@newif\if@tud@footlogo@option@set +\tud@newif\if@tud@ddc@auto +\newcommand*\tud@ddc@auto@num{0} +\TUD@key{ddc}[true]{% +% \end{macrocode} +% Im Kompatibiltätsmodus wird ein Seitenumbruch erzwungen. Anschließend wird +% die Option abgearbeitet. +% \begin{macrocode} + \tud@comp@clearpage% + \TUD@set@numkey{ddc}{tud@ddc@auto@num}{\tud@ddc@switch}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% +% \end{macrocode} +% Wurde die Option \opt{ddc} intern durch \opt{ddchead} oder \opt{ddcfoot} +% aufgerufen, wird die automatische Auswahl des \DDC-Logos deaktiviert. +% \begin{macrocode} + \if@tud@ddc@internal% + \@tud@ddc@autofalse% + \else% +% \end{macrocode} +% Andernfalls wird die automatische Auswahl aktiviert und die beiden Optionen +% \opt{ddchead} sowie \opt{ddcfoot} intern zurückgesetzt. +% \begin{macrocode} + \@tud@ddc@autotrue% + \@tud@ddc@internaltrue% + \TUDoptions{ddchead=false}% + \TUDoptions{ddcfoot=false}% + \@tud@ddc@internalfalse% + \fi% +% \end{macrocode} +% Sowohl die \DDC-Logos als auch ein mögliches Zweilogo (\cs{headlogo}) werden +% in den entsprechenden Layern durch Boxen ausgegeben. Die beiden Schalter +% führen zum Erneuern der dazugehörigen Logoboxen. Siehe die Beschreibung der +% Makros \cs{tud@headlogo@option@set} sowie \cs{tud@footlogo@option@set}. +% \begin{macrocode} + \global\@tud@headlogo@option@settrue% + \global\@tud@footlogo@option@settrue% + \fi% +% \end{macrocode} +% Abschließend wird im Kompatibilitätsmodus der aktuelle Seitenstil aufgerufen, +% um bei einem geänderten Fuß den notwendigen Satzspiegel zu laden. +% \begin{macrocode} + \tud@comp@resetpagestyle% +} +% \end{macrocode} +% \end{macro}^^A \if@tud@footlogo@option@set +% \end{macro}^^A \if@tud@headlogo@option@set +% \end{macro}^^A \if@tud@ddc@auto +% \end{macro}^^A \tud@ddc@auto@num +% \begin{macro}{\tud@ddc@head@num} +% \changes{v2.03}{2015/01/22}{Seitenstilauswahl bei Deaktivierung verbessert}^^A +% Die Option \opt{ddchead} dient zum zwingenden Setzen des \DDC-Logos im Kopf +% der Seiten im Stil von \pgs{tudheadings}. +% \begin{macrocode} +\newcommand*\tud@ddc@head@num{0} +\TUD@key{ddchead}[true]{% +% \end{macrocode} +% Der Seitenumbruch im Kompatibilitätsmodus. +% \begin{macrocode} + \tud@comp@clearpage% + \TUD@set@numkey{ddchead}{tud@ddc@head@num}{\tud@ddc@switch}{#1}% +% \end{macrocode} +% Beim internen Aufruf soll lediglich der Wert des Schlüssels geändert werden. +% Wurde die Option durch den Anwender genutzt, werden die korrespondierenden +% Optionen zurückgesetzt. Der Aufruf der Option \opt{ddc} führt zum erneuten +% setzen der Logoboxen. +% \begin{macrocode} + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \if@tud@ddc@internal\else% + \@tud@ddc@internaltrue% + \TUDoptions{ddcfoot=false}% + \TUDoptions{ddc=false}% + \@tud@ddc@internalfalse% + \fi% + \fi% +% \end{macrocode} +% Das Setzen des Seitenstils im Kompatibilitätsmodus. +% \begin{macrocode} + \tud@comp@resetpagestyle% +} +% \end{macrocode} +% \end{macro}^^A \tud@ddc@head@num +% \begin{macro}{\tud@ddc@foot@num} +% \changes{v2.03}{2015/01/22}{Seitenstilauswahl bei Deaktivierung verbessert}^^A +% Die Option \opt{ddcfoot} dient zum zwingenden Setzen des \DDC-Logos im Fuß +% der Seiten im Stil von \pgs{tudheadings}. Das Vorgehen beim Umschalten des +% Schlüssels ist äquivalent zur Option \opt{ddchead} +% \begin{macrocode} +\newcommand*\tud@ddc@foot@num{0} +\TUD@key{ddcfoot}[true]{% +% \end{macrocode} +% Der Seitenumbruch im Kompatibilitätsmodus. +% \begin{macrocode} + \tud@comp@clearpage% + \TUD@set@numkey{ddcfoot}{tud@ddc@foot@num}{\tud@ddc@switch}{#1}% +% \end{macrocode} +% Beim internen Aufruf soll lediglich der Wert des Schlüssels geändert werden. +% Wurde die Option durch den Anwender genutzt, werden die korrespondierenden +% Optionen zurückgesetzt. Der Aufruf der Option \opt{ddc} führt zum erneuten +% setzen der Logoboxen. +% \begin{macrocode} + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \if@tud@ddc@internal\else% + \@tud@ddc@internaltrue% + \TUDoptions{ddchead=false}% + \TUDoptions{ddc=false}% + \@tud@ddc@internalfalse% + \fi% + \fi% +% \end{macrocode} +% Das Setzen des Seitenstils im Kompatibilitätsmodus. +% \begin{macrocode} + \tud@comp@resetpagestyle% +} +% \end{macrocode} +% \end{macro}^^A \tud@ddc@foot@num +% \end{option}^^A ddcfoot +% \end{option}^^A ddchead +% \end{option}^^A ddc +% +% \iffalse +%</class&option> +%<*class&body> +% \fi +% +% \begin{macro}{\tud@ddc@check} +% \changes{v2.02}{2014/06/23}{neu}^^A +% Dieses Hilfsmakro wird aufgerufen, wenn geprüft wird, welche Einstellungen +% für Kopf und Fuß des Seitenstiles \pgs{tudheadings} zum Tragen kommen sollen. +% Über den Schalter \cs{if@tud@ddc@auto} wird festgelegt, ob die Auswahl des +% \DDC-Logos automatisch erfolgen soll~-- Option \opt{ddc} wurde verwendet. +% Ist dies der Fall, wird das Logo standardmäßig im Kopf gesetzt. Ist jedoch +% durch den Befehl \cs{headlogo} ein Zweitlogo angegeben worde, wird dieses in +% der Fußzeile ausgegeben. Die Verwendung einer der Optionen \opt{ddchead} bzw. +% \opt{ddcfoot} forciert die Ausgabe des \DDC-Logos an der gewünschten Stelle. +% Die jeweils gültige Auswahl für Kopf bzw. Fuß wird in den Makros \cs{@tempa} +% bzw. \cs{@tempb} geschrieben und kann anschließend ausgewertet werden. +% \begin{macrocode} +\newcommand*\tud@ddc@check{% + \let\@tempa\tud@ddc@head@num% + \let\@tempb\tud@ddc@foot@num% + \if@tud@ddc@auto% + \ifdefvoid{\tud@headlogo@filename}{% + \let\@tempa\tud@ddc@auto@num% + \let\@tempb\z@% + }{% + \let\@tempa\z@% + \let\@tempb\tud@ddc@auto@num% + }% + \fi% +% \end{macrocode} +% Für die Satzspiegelvergrößerung wird beim Vorhandensein eines oder mehrerer +% Logos im Fuß die Variable \cs{@tempb} auf einen negativen Wert gesetzt, um +% auch ohne die Ausgabe eines \DDC-Logos den Fußbereich zu vergrößern. +% \begin{macrocode} + \tud@if@v@lower{2.03}{% + \ifnum\@tempb=\z@\relax% + \ifdefvoid{\tud@footlogo@filenames}{}{\let\@tempb\m@ne}% + \fi% + }{}% +} +% \end{macrocode} +% \end{macro}^^A \tud@ddc@check +% +% \iffalse +%</class&body> %<*class&option> % \fi % @@ -1138,8 +1409,8 @@ \tud@locked@newnum{tud@head@font@num}{0} \tud@locked@newnum{tud@head@bar@num}{0} \tud@locked@newbool{@tud@head@widebar} -\newif\if@tud@head@font@set -\newif\if@tud@head@date +\tud@newif\if@tud@head@font@set +\tud@newif\if@tud@head@date \TUD@key{cdhead}[true]{% \TUD@set@numkey{cdhead}{@tempa}{% \TUD@bool@numkey,% @@ -1231,7 +1502,7 @@ % \changes{v2.04}{2015/05/31}{neu}^^A % \begin{macro}{\if@tud@mainlogo@wrn} % \changes{v2.04}{2015/05/31}{neu}^^A -% \begin{length}{\tud@len@mainlogoheight} +% \begin{length}{\tud@dim@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 @@ -1241,17 +1512,17 @@ % Satzspiegels beim Ausführen der einzelnen Seitenstil-Layer. Dafür wird der % Schalter \cs{if@tud@mainlogo@set} im Hook \cs{tud@AfterChangingArea} gesetzt. % \begin{macrocode} -\newlength\tud@len@mainlogoheight +\tud@newdim\tud@dim@mainlogoheight \newcommand*\tud@mainlogo@wrn[1]{} -\newif\if@tud@mainlogo@set +\tud@newif\if@tud@mainlogo@set \newcommand*\tud@mainlogo@set{% \if@tud@mainlogo@set% - \def\@tempa{\includegraphics[keepaspectratio,width=\tud@len@logowidth]}% + \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}}% - \settoheight\tud@len@mainlogoheight{\tud@uselayerbox{main@black}}% - \global\tud@len@mainlogoheight=\tud@len@mainlogoheight% + \settoheight\tud@dim@mainlogoheight{\tud@uselayerbox{main@black}}% + \global\tud@dim@mainlogoheight=\tud@dim@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 @@ -1278,14 +1549,18 @@ % den Boxen in der richtigen Größe neu zu setzen. % \begin{macrocode} \tud@headlogo@set% - \@tud@footlogo@option@settrue% + \global\@tud@footlogo@option@settrue% \tud@footlogo@option@set% \global\@tud@mainlogo@setfalse% \fi% } +\AtBeginDocument{% + \@tud@mainlogo@settrue% + \tud@mainlogo@set% +} % \end{macrocode} % \end{macro}^^A \tud@mainlogo@wrn -% \end{length}^^A \tud@len@mainlogoheight +% \end{length}^^A \tud@dim@mainlogoheight % \end{macro}^^A \if@tud@mainlogo@set % \end{macro}^^A \tud@mainlogo@set % \begin{macro}{\tud@mainlogo@use} @@ -1295,7 +1570,7 @@ % \begin{macrocode} \newcommand*\tud@mainlogo@use{% \tud@mainlogo@wrn{% - \dimexpr\oddsidemargin+1in+\tud@len@logox-\tud@len@widemargin\relax% + \dimexpr\oddsidemargin+1in+\tud@dim@logox-\tud@dim@widemargin\relax% }% \tud@uselayerbox{main@\tud@head@logocolor}% } @@ -1334,18 +1609,16 @@ % \changes{v2.02}{2014/06/23}{neu}^^A % \begin{macro}{\tud@headlogo@fileoptions} % \changes{v2.02}{2014/06/23}{neu}^^A -% \begin{macro}{\tud@headlogo@wrn} -% \changes{v2.02}{2014/06/23}{neu}^^A % Diese Befehle dienen zum Einbinden eines möglichen Zweitlogos im Kopf bündig % zum rechten Seitenrand. Mit \cs{headlogo}\oarg{Optionsliste}\marg{Dateiname} % werden der Dateiname und das optionale Argument in \cs{tud@headlogo@filename} % bzw. \cs{tud@headlogo@fileoptions} gespeichert, damit diese später bei der % tatsächlichen Verwendung des Logos mit dem Makro \cs{tud@headlogo@set} an den % Befehl \cs{includegraphics} weitergereicht werden können. +% \ToDo{angehängte Parameterliste \val{:} für tudpage unterstützen}[v2.07] % \begin{macrocode} \newcommand*\tud@headlogo@filename{} \newcommand*\tud@headlogo@fileoptions{} -\newcommand*\tud@headlogo@wrn{} \newcommand*\headlogo[2][]{% \tud@comp@clearpage% \renewcommand*\tud@headlogo@filename{#2}% @@ -1357,18 +1630,9 @@ % \begin{macrocode} \global\@tud@headlogo@option@settrue% \global\@tud@footlogo@option@settrue% - \gdef\tud@headlogo@wrn{% - \ClassWarning{\TUD@Class@Name}{% - Secondary logo `\string\headlogo{\tud@headlogo@filename}'\MessageBreak% - is overwritten with DDC logo. Maybe you should\MessageBreak% - use `ddcfoot' or better `ddc' instead of `ddchead'% - }% - \global\let\tud@headlogo@wrn\relax% - }% \tud@comp@resetpagestyle% } % \end{macrocode} -% \end{macro}^^A \tud@headlogo@wrn % \end{macro}^^A \tud@headlogo@fileoptions % \end{macro}^^A \tud@headlogo@filename % \end{macro}^^A \headlogo @@ -1382,7 +1646,7 @@ % \begin{macrocode} \newcommand*\tud@headlogo@set{% \def\@tempa{% - \includegraphics[keepaspectratio,totalheight=\tud@len@mainlogoheight]% + \includegraphics[keepaspectratio,totalheight=\tud@dim@mainlogoheight]% }% \tud@savelayerbox{head@black}{\@tempa{DDC-24}}% \tud@savelayerbox{head@HKS41}{\@tempa{DDC-27}}% @@ -1399,18 +1663,19 @@ \if@tud@headlogo@option@set% \def\@tempc##1##2{% \tud@savelayerbox{head@option}{% - \includegraphics[% - keepaspectratio,totalheight=\tud@len@mainlogoheight,##2% - ]{##1}% + \includegraphics[{% + keepaspectratio,% + totalheight=\tud@dim@mainlogoheight,% + ##2% + }]{##1}% }% }% \tud@savelayerbox{head@option}{}% \tud@ddc@check% \ifcase\@tempa\relax% \tud@ddc@head@num=false \ifdefvoid{\tud@headlogo@filename}{}{% - \protected@edef\tud@headlogo@filename{% - \expandafter\trim@spaces\expandafter{\tud@headlogo@filename}% - }% + \protected@edef\tud@headlogo@filename{\tud@headlogo@filename}% + \trim@spaces@in\tud@headlogo@filename% \protected@edef\@tempb{% \noexpand\@tempc{\tud@headlogo@filename}{\tud@headlogo@fileoptions}% }% @@ -1429,6 +1694,15 @@ \or% \tud@ddc@head@num=white \@tempc{DDC-30}{}% \fi% + \ifnum\@tempa>\z@\relax + \ifdefvoid{\tud@headlogo@filename}{}{% + \ClassWarning{\TUD@Class@Name}{% + Secondary logo `\tud@headlogo@filename'\MessageBreak% + is overwritten with DDC logo. Maybe you should\MessageBreak% + use `ddcfoot' or better `ddc' instead of `ddchead'% + }% + }% + \fi% \global\@tud@headlogo@option@setfalse% \fi% } @@ -1437,11 +1711,13 @@ % \end{macro}^^A \tud@headlogo@set % \begin{macro}{\tud@headlogo@use} % \changes{v2.04}{2015/05/31}{neu}^^A +% \begin{macro}{\tud@layer@headlogo@wrn} % Die Ausgabe von \DDC- oder Zweitlogo im Kopf erfolgt mit diesem Makro. Dabei % werden diese in einer Box vertikal zentriert. % \begin{macrocode} +\newcommand*\tud@layer@headlogo@wrn{} \newcommand*\tud@headlogo@use{% - \tud@vlayerbox{\tud@len@mainlogoheight}{% + \tud@vlayerbox[headlogo]{\tud@dim@mainlogoheight}{% \vss% \hbox{% \tud@ddc@check% @@ -1455,12 +1731,9 @@ }{% The given `\string\headlogo{\tud@headlogo@filename}' is too large.% }% - \ifdefvoid{\tud@headlogo@filename}{}{% - \tud@ddc@check% - \ifnum\@tempa>\z@\relax\tud@headlogo@wrn\fi% - }% } % \end{macrocode} +% \end{macro}^^A \tud@layer@headlogo@wrn % \end{macro}^^A \tud@headlogo@use % % \iffalse @@ -1553,8 +1826,10 @@ % Außerdem kann mit der Option \opt{extrabottommargin} gesetzt werden. % \begin{macrocode} \else% - \tud@lowerstring\tud@res@a{#1}% - \ifdimen{\tud@res@a}{\TUDoptions{extrabottommargin=#1}}{}% + \TUD@set@dimkey{cdfoot}{\@tempa}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \TUDoptions{extrabottommargin=#1}% + \fi% \fi% } % \end{macrocode} @@ -1598,10 +1873,10 @@ \tud@ps@@restore{#1}{even}{middle}{foot}% } \newcommand*\tud@ps@@restore[4]{% - \ifcsdef{@@tud@ps@#1@#2@#3@#4}{% + \ifcsundef{@@tud@ps@#1@#2@#3@#4}{}{% \csletcs{sls@ps@#1@#2@#3@#4}{@@tud@ps@#1@#2@#3@#4}% \csundef{@@tud@ps@#1@#2@#3@#4}% - }{}% + }% } % \end{macrocode} % \end{macro}^^A \tud@ps@@restore @@ -1621,24 +1896,22 @@ % % \begin{option}{footlogoheight} % \changes{v2.05}{2016/06/16}{neu}^^A -% \begin{macro}{\tud@dim@footlogoheight} +% \begin{macro}{\tud@footlogoheight@dim} % \changes{v2.04}{2015/06/01}{neu}^^A +% \begin{macro}{\tud@footlogoheight@set} % Für den Anwender besteht mit der Option \opt{footlogoheight} die Möglichkeit, % die Höhe aller Logos im Fußbereich~-- also eventuell das \DDC-Logo sowie % vom Anwender mit dem Befehl \cs{footlogo} angegebene Logos~-- zentral -% festzulegen. Dabei wird der gewünschte Wert in \cs{tud@dim@footlogoheight} -% abgelegt. +% festzulegen. Dabei wird der gewünschte Wert in \cs{tud@footlogoheight@dim} +% abgelegt. Ist dieser \val{0pt}, wird die Höhe des Loogs der \TnUD genutzt. +% \ToDo{\cs{tud@footlogoheight@dim} sollte raus, ergibt keinen Sinn}[v2.07] % \begin{macrocode} %<*option> -\newcommand*\tud@dim@footlogoheight{} -\let\tud@dim@footlogoheight\relax +\newcommand*\tud@footlogoheight@dim{0pt} \TUD@key{footlogoheight}{% - \TUD@set@dimenkey{footlogoheight}{\tud@dim@footlogoheight}{#1}% + \TUD@set@dimkey{footlogoheight}{\tud@footlogoheight@dim}{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed% - \ifdim\dimexpr\tud@dim@footlogoheight\relax<\z@\relax% - \def\@tempa-##1\@nil{\def\tud@dim@footlogoheight{##1}}% - \@tempa#1\@nil% - \fi% + \tud@length@setabsolute\tud@footlogoheight@dim% \global\@tud@footlogo@option@settrue% \fi% } @@ -1646,21 +1919,22 @@ % \end{macrocode} % Da sich mit der Version~v2.03 die Standardhöhe des \DDC-Logos im Fußbereich % geändert hat, wird dieser Wert abhängig von der Einstellung für die Option -% \opt{tudscrver} nach der Abarbeitung der Optionen am Ende der Klasse gesetzt. +% \opt{tudscrver} gesetzt. % \begin{macrocode} %<*body> -\AtEndOfClass{% - \ifdefvoid{\tud@dim@footlogoheight}{% +\newcommand*\tud@footlogoheight@set{% + \ifdim\dimexpr\tud@footlogoheight@dim\relax=\z@\relax% \tud@if@v@lower{2.03}{% - \def\tud@dim@footlogoheight{.6\tud@len@topmargin}% + \def\tud@footlogoheight@dim{\tud@dim@topmargin*3/5}% }{% - \def\tud@dim@footlogoheight{\tud@len@mainlogoheight}% + \def\tud@footlogoheight@dim{\tud@dim@mainlogoheight}% }% - }{}% + \fi% } %</body> % \end{macrocode} -% \end{macro}^^A \tud@dim@footlogoheight +% \end{macro}^^A \tud@footlogoheight@set +% \end{macro}^^A \tud@footlogoheight@dim % \end{option}^^A footlogoheight % % \iffalse @@ -1700,8 +1974,11 @@ % das Makro \cs{tud@footlogo@ddc@set} definiert. % \begin{macrocode} \newcommand*\tud@footlogo@ddc@set[2]{% - \tud@savelayerbox{foot@#1}{% - \includegraphics[keepaspectratio,totalheight=\tud@dim@footlogoheight]{#2}% + \tud@savelayerbox{#1}{% + \includegraphics[% + keepaspectratio,% + totalheight=\dimexpr\glueexpr\tud@footlogoheight@dim\relax\relax% + ]{#2}% }% } % \end{macrocode} @@ -1710,25 +1987,27 @@ % gesetzt wurde, bei der Ausgabe des dazugehörigen Layers. % \begin{macrocode} \newcommand*\tud@footlogo@option@set{% + \tud@footlogoheight@set% \if@tud@footlogo@option@set% - \tud@footlogo@ddc@set{black}{DDC-22}% - \tud@footlogo@ddc@set{HKS41}{DDC-25}% - \tud@footlogo@ddc@set{white}{DDC-28}% + \tud@footlogo@ddc@set{foot@black}{DDC-22}% + \tud@footlogo@ddc@set{foot@HKS41}{DDC-25}% + \tud@footlogo@ddc@set{foot@white}{DDC-28}% \tud@ddc@check% \ifcase\@tempb\relax\or\or% \tud@ddc@foot@num=color - \tud@footlogo@ddc@set{option}{DDC-01}% + \tud@footlogo@ddc@set{foot@option}{DDC-01}% \or% \tud@ddc@foot@num=colorblack - \tud@footlogo@ddc@set{option}{DDC-07}% + \tud@footlogo@ddc@set{foot@option}{DDC-07}% \or% \tud@ddc@foot@num=gray - \tud@footlogo@ddc@set{option}{DDC-19}% + \tud@footlogo@ddc@set{foot@option}{DDC-19}% \or% \tud@ddc@foot@num=black - \tud@footlogo@ddc@set{option}{DDC-22}% + \tud@footlogo@ddc@set{foot@option}{DDC-22}% \or% \tud@ddc@foot@num=blue - \tud@footlogo@ddc@set{option}{DDC-25}% + \tud@footlogo@ddc@set{foot@option}{DDC-25}% \or% \tud@ddc@foot@num=white - \tud@footlogo@ddc@set{option}{DDC-28}% + \tud@footlogo@ddc@set{foot@option}{DDC-28}% \fi% \global\@tud@footlogo@option@setfalse% + \global\@tud@footlogo@cmd@settrue% \fi% } % \end{macrocode} @@ -1736,15 +2015,17 @@ % \end{macro}^^A \tud@footlogo@ddc@set % \begin{macro}{\tud@footlogo@ddc@use} % \changes{v2.04}{2015/06/01}{neu}^^A +% \begin{macro}{\tud@layer@footlogo@wrn} % 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@layer@footlogo@wrn{} \newcommand*\tud@footlogo@ddc@use[2]{% \tud@ddc@check% \ifcase\@tempb\relax\else% \tud@ddc@foot@num=!false \tud@footlogo@option@set% \setbox\z@\hbox{% - \tud@vlayerbox{#1}{% + \tud@vlayerbox[footlogo]{#1}{% \vss% \hbox to #2{% \hss% @@ -1756,12 +2037,12 @@ }% \vss\vss% }{% - You should reduce `footlogoheight', because it is\MessageBreak% - too high (\the\dimexpr\tud@dim@footlogoheight\relax).% + You should reduce `footlogoheight', because it is\noexpand\MessageBreak% + too high. % \ifnum\tud@cdgeometry@num>\@ne% true/symmetric/twoside - \MessageBreak% - Alternatively you can enlarge the bottom margin\MessageBreak% - by using option `extrabottommargin'.% + Alternatively you could use\noexpand\MessageBreak% + option `extrabottommargin=<length>'\noexpand\MessageBreak% + in order to enlarge the bottom margin. % \fi% }% }% @@ -1773,6 +2054,7 @@ \fi% } % \end{macrocode} +% \end{macro}^^A \tud@layer@footlogo@wrn % \end{macro}^^A \tud@footlogo@ddc@use % \begin{macro}{\tud@layer@foot@cmd} % \changes{v2.04}{2015/06/01}{neu}^^A @@ -1795,7 +2077,7 @@ % \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 +% individuell nutzbar}^^A % \begin{macro}{\if@tud@footlogo@cmd@set} % \changes{v2.04}{2015/06/01}{neu}^^A % Mit dem Befehl \cs{footlogo} kann eine kommasparierte Liste für Logos im @@ -1817,7 +2099,7 @@ % durch \val{:} an den Dateinamen angehängt übergeben wurden, werden hier in % der Box \cs{tud@layer@foot@cmd} gespeichert. % \begin{macrocode} -\newif\if@tud@footlogo@cmd@set +\tud@newif\if@tud@footlogo@cmd@set \newcommand*\tud@footlogo@cmd@set[2]{% \if@tud@footlogo@cmd@set% \tud@savelayerbox{foot@cmd}{% @@ -1831,7 +2113,8 @@ % \begin{macrocode} \let\@tempa\relax% \@for\@tempb:=\tud@footlogo@filenames\do{% - \edef\@tempb{\expandafter\trim@spaces\expandafter{\@tempb}}% + \protected@edef\@tempb{\@tempb}% + \trim@spaces@in{\@tempb}% \@tempa% \ifx\@tempb\@empty\else% \expandafter\tud@footlogo@cmd@@set\expandafter{\@tempb}{#1}% @@ -1856,6 +2139,7 @@ % für einzelne Logos möglich sein. Zu diesem Zweck wird die Schnittstelle für % den Anwender so gestaltet, dass individuelle Parameter mit einem Doppelpunkt % direkt an den Dateinamen angehangen werden können. +% \ToDo{\cs{DeclareListParser} außerhalb global definieren}[v2.07] % \begin{macrocode} \let\@tempa\@empty% \let\@tempb\@empty% @@ -1875,7 +2159,8 @@ % In jedem Fall werden die Grundeinstellungen als erstes ausgeführt. % \begin{macrocode} \preto\tud@footlogo@fileoptions{% - keepaspectratio,totalheight=\tud@dim@footlogoheight,% + keepaspectratio,% + totalheight=\dimexpr\glueexpr\tud@footlogoheight@dim\relax\relax,% }% % \end{macrocode} % Wurden tatsächlich inidviduelle Parameter übergeben, so werden diese als @@ -1883,7 +2168,9 @@ % \begin{macrocode} \eappto\tud@footlogo@fileoptions{\expandonce\@tempb}% \protected@edef\@tempc{% - \noexpand\includegraphics[\expandonce\tud@footlogo@fileoptions]{\@tempa}% + \noexpand\includegraphics[{% + \expandonce\tud@footlogo@fileoptions% + }]{\@tempa}% }% % \end{macrocode} % Die Logos werden~-- wie auch das \DDC-Logo im Fuß~-- individuell optisch @@ -1927,11 +2214,11 @@ % \begin{macro}{\tud@footcontent@@do} % \changes{v2.04}{2015/04/21}{neu}^^A % \changes{v2.05}{2016/04/17}{Stern im Argument erhält aktuellen Inhalt}^^A -% \begin{macro}{\tud@footcontent@usefont} +% \begin{macro}{\tud@footcontent@font@use} % \changes{v2.06}{2018/08/01}{neu}^^A -% \begin{macro}{\tud@footcontent@fontsize} +% \begin{macro}{\tud@footcontent@font@size} % \changes{v2.06}{2018/08/01}{neu}^^A -% \begin{macro}{\tud@footcontent@fontface} +% \begin{macro}{\tud@footcontent@font@face} % \changes{v2.04}{2015/06/01}{neu}^^A % \changes{v2.05}{2015/07/21}{Bugfix für die Schriftgröße und den Durchschuss % bei einer entsprechenden Anpassung der Schriftart \val{tudheadings}}^^A @@ -1948,10 +2235,10 @@ % \end{macrocode} % Dieser Befehl wird zur Formatierung der Schrift im Fußbereich definiert. % \begin{macrocode} -\newcommand*\tud@footcontent@usefont[1]{% +\newcommand*\tud@footcontent@font@use[1]{% \usekomafont{tudheadings}{% - \tud@footcontent@fontsize% - \tud@footcontent@fontface% + \tud@footcontent@font@size% + \tud@footcontent@font@face% \selectfont% #1% }% @@ -1961,22 +2248,23 @@ % diesen Makros gesichert, weshalb diese vorher alloziert werden. Anschließend % erfolgt die Definition des Befehls. % \begin{macrocode} -\newcommand*\tud@footcontent@fontsize{} -\newcommand*\tud@footcontent@fontface{} +\newcommand*\tud@footcontent@font@size{} +\newcommand*\tud@footcontent@font@face{} \newcommand*\tud@footcontent@left{} -\newcommand*\tud@footcontent@right{\@nil} +\newcommand*\tud@footcontent@right{} +\let\tud@footcontent@right\@nnil % \end{macrocode} % Die Sternversion ändert die Schriftgröße vom Inhalt nicht. Die Normalversion % nutzt die Schriftgröße der Kopfzeile mit einem passenden Durchschuss. % \begin{macrocode} \newcommand*\footcontent{% \kernel@ifstar{% - \renewcommand*\tud@footcontent@fontsize{}% + \renewcommand*\tud@footcontent@font@size{}% \tud@footcontent@do% }{% - \renewcommand*\tud@footcontent@fontsize{% - \setlength\@tempdima{\tud@head@fontsize\p@}% - \fontsize{\@tempdima}{1.25\@tempdima}% + \renewcommand*\tud@footcontent@font@size{% + \tud@setdim\tud@res@glue{\tud@head@fontsize\p@}% + \fontsize{\tud@res@glue}{\dimexpr1\tud@res@glue*5/4\relax}% }% \tud@footcontent@do% }% @@ -1998,26 +2286,26 @@ % Wurde im optionalen Argument für zusätzliche Schrifteinstellungen ein Stern % verwendet, bleibt die bisherige Definition bestehen. % \begin{macrocode} - \if\detokenize{*#1}\relax\else% - \renewcommand*\tud@footcontent@fontface{#1}% + \if\detokenize{#1*}\relax\else% + \renewcommand*\tud@footcontent@font@face{#1}% \fi% % \end{macrocode} % Wurde in einem der Argumente für den linken und/oder rechten Inhalt ein Stern % verwendet, bleibt die bisherige Definition bestehen. % \begin{macrocode} - \if\detokenize{*#2}\relax\else% + \if\detokenize{#2*}\relax\else% \renewcommand*\tud@footcontent@left{#2}% \fi% - \if\detokenize{*#3}\relax\else% + \if\detokenize{#3*}\relax\else% \renewcommand*\tud@footcontent@right{#3}% \fi% } % \end{macrocode} % \end{macro}^^A \tud@footcontent@right % \end{macro}^^A \tud@footcontent@left -% \end{macro}^^A \tud@footcontent@fontface -% \end{macro}^^A \tud@footcontent@fontsize -% \end{macro}^^A \tud@footcontent@usefont +% \end{macro}^^A \tud@footcontent@font@face +% \end{macro}^^A \tud@footcontent@font@size +% \end{macro}^^A \tud@footcontent@font@use % \end{macro}^^A \tud@footcontent@@do % \end{macro}^^A \tud@footcontent@do % \end{KOMAfont}^^A tudheadings @@ -2043,7 +2331,7 @@ % \begin{macrocode} \newcommand*\tud@newline@poster{} \newcommand*\tud@footcontent@@left[1]{% - \ifxblank{#1}{}{{\tud@head@font@@bold#1\newline}}% + \tud@if@strblank{#1}{}{{\tud@head@font@@bold#1\newline}}% Technische Universit\"at Dresden% \tud@foot@line@write{faculty}% \tud@foot@line@write{department}% @@ -2068,22 +2356,22 @@ \nobreakspace(\@discipline)% \fi% \fi% + \ifx\@emailaddress\@empty\else\newline\@emailaddress\fi% \ifx\@office\@empty\else\newline\@office\fi% \ifx\@telephone\@empty\else\newline\@telephone\fi% \ifx\@telefax\@empty\else\newline\@telefax\fi% - \ifx\@emailaddress\@empty\else\newline\@emailaddress\fi% }% % \end{macrocode} % Wurde kein Autor angegeben, wird in diesem Fall die normalerweise erzeugte % Warnung bei der Verwendung des Feldes \cs{@author} unterdrückt. % \begin{macrocode} - \ifpatchable{\@author}{\@latex@warning@no@line}{% + \tud@if@field@unset{\@author}{% \let\@tempa\@empty% }{% \let\@tempa\@author% }% \ifx\@tempa\@empty\else% - \ifxblank{#1}{}{{\tud@head@font@@bold#1\newline}}% + \tud@if@strblank{#1}{}{{\tud@head@font@@bold#1\newline}}% % \end{macrocode} % Das Makro zum Aufteilen der Autorenangaben wird für die hier benötigte Form % definiert. Die Ausgabe aller nicht \emph{lokal} angegebenen Felder wird @@ -2113,13 +2401,13 @@ % Die Ausgabe der Kontaktperson(en) erfolgt analog zu der Autorenausgabe. % \begin{macrocode} \def\tud@newline@poster{% + \ifx\@emailaddress\@empty\else\newline\@emailaddress\fi% \ifx\@office\@empty\else\newline\@office\fi% \ifx\@telephone\@empty\else\newline\@telephone\fi% \ifx\@telefax\@empty\else\newline\@telefax\fi% - \ifx\@emailaddress\@empty\else\newline\@emailaddress\fi% }% \ifx\@contactperson\@empty\else% - \ifxblank{#2}{}{{\tud@head@font@@bold#2\newline}}% + \tud@if@strblank{#2}{}{{\tud@head@font@@bold#2\newline}}% \renewcommand*\tud@split@contactperson@do[2]{% \tud@multiple@fields@store{@contactperson}{##1}% \tud@multiple@fields@preset{@contactperson}{*}{##1}% @@ -2152,6 +2440,8 @@ % % \begin{macro}{\tud@footcontent@use} % \changes{v2.04}{2015/06/01}{neu}^^A +% \begin{macro}{\tud@footcontent@@use} +% \begin{macro}{\tud@layer@footcontent@wrn} % Mit \cs{tud@footcontent@use} erfolgt die Ausgabe der mit \cs{footcontent} % definierten Inhalte. Dabei wird darauf geachtet, ob ein \DDC-Logo im Fuß % verwendet wird. Die Ausgabe erfolgt jedoch nur, falls tatsächlich etwas @@ -2159,12 +2449,12 @@ % Breite ausgegeben. Dies ist notwendig, da nachgelagerte Funktionen diese Box % fester Breite erwarten. % \begin{macrocode} +\newcommand*\tud@layer@footcontent@wrn{} \newcommand*\tud@footcontent@use[2]{% \@tempswafalse% - \ifx\tud@footcontent@left\@empty\relax% - \def\@tempa{\@nil}% - \ifx\@tempa\tud@footcontent@right\relax\else% - \ifx\tud@footcontent@right\@empty\relax\else% + \ifx\tud@footcontent@left\@empty% + \ifx\tud@footcontent@right\@nnil\else% + \ifx\tud@footcontent@right\@empty\else% \@tempswatrue% \fi% \fi% @@ -2174,46 +2464,23 @@ \if@tempswa% \tud@ddc@check% \ifcase\@tempb\relax% - \setlength\@tempdimc{\z@}% + \tud@setdim\@tempdimc{\z@}% \else% \settowidth\@tempdimc{\tud@uselayerbox{foot@black}}% - \addtolength\@tempdimc{\columnsep}% + \tud@addtodim\@tempdimc{\columnsep}% \fi% % \end{macrocode} % Äquivalent zu den Logos wird auch der durch den Anwender frei definierbare % Inhalt des Fußes in einer vertikalen Box gesetzt. Mit \cs{@tempdimc} wird im % Bedarfsfall der Freiraum für das \DDC-Logo bereitgestellt. % \begin{macrocode} - \tud@vlayerbox{#1}{% + \tud@vlayerbox[footcontent]{#1}{% \linespread{1}% \vss% \hbox to #2{% - \tud@footcontent@usefont{% -% \end{macrocode} -% Wurde das optionale Argument nach dem obligatorischen nicht genutzt, so wird -% der Inhalt über die komplette Breite des Textbereiches ausgegeben. -% \begin{macrocode} - \def\@tempa{\@nil}% - \ifx\@tempa\tud@footcontent@right\relax% - \vtop{% - \hsize=\dimexpr#2-\@tempdimc\relax% - \strut\ignorespaces\tud@footcontent@left\strut% - }% -% \end{macrocode} -% Im zweispaltigen modus werden zwei vertikale Boxen erzeugt, zwischen denen -% der Abstand \cs{columnsep} eingefügt wird. -% \begin{macrocode} - \else% - \vtop{% - \hsize=\dimexpr(#2-\columnsep)/2\relax% - \strut\ignorespaces\tud@footcontent@left\strut% - }% - \hspace{\columnsep}% - \vtop{% - \hsize=\dimexpr(#2-\columnsep)/2-\@tempdimc\relax% - \strut\ignorespaces\tud@footcontent@right\strut% - }% - \fi% + \tud@footcontent@font@use{% + \tud@setglue\tud@res@glue{#2}% + \tud@footcontent@@use{\tud@res@glue}% \hss% }% }% @@ -2222,12 +2489,12 @@ % Sollte der Inhalt für den Fußbereich zu groß sein, wird eine Warnung erzeugt. % \begin{macrocode} }{% - The content for the footer (`\string\footcontent')\MessageBreak% - is too high. You should either reduce the content\MessageBreak% + The content for the footer (`\string\footcontent')\noexpand\MessageBreak% + is too high. You should either reduce the content\noexpand\MessageBreak% or lower the fontsize via the optional argument.% \ifnum\tud@cdgeometry@num>\@ne% true/symmetric/twoside - \MessageBreak% - Alternatively you can enlarge the bottom margin\MessageBreak% + \noexpand\MessageBreak% + Alternatively you can enlarge the bottom margin\noexpand\MessageBreak% by using option `extrabottommargin'.% \fi% }% @@ -2236,263 +2503,35 @@ \fi% } % \end{macrocode} -% \end{macro}^^A \tud@footcontent@use -% -% \iffalse -%</class&body> -% \fi -% -% \subsection{Optionen für das \DDC-Logo} -% -% \begin{macro}{\tud@comp@clearpage} -% \changes{v2.04}{2015/05/31}{neu}^^A -% \begin{macro}{\tud@comp@resetpagestyle} -% \changes{v2.04}{2015/05/31}{neu}^^A -% \begin{macro}{\if@tud@ddc@internal} -% \changes{v2.02}{2014/07/08}{neu}^^A -% Bis zur Version~v2.02 wurden unterschiedliche Satzsiegel für den Seitenfuß -% mit und ohne \DDC-Logo verwendet. Damit dieser im Zweifelsfall umgestellt -% werden kann, wurde vor dem Ausführen der entsprechenden Optionen ein -% Seitenumbruch erzwungen und nach dem Verarbeiten der Optionen der aktuelle -% Seitenstil erneut aufgerufen. Die beiden folgenden Makros werden für dieses -% Unterfangen definiert, jedoch bei der Abarbeitung der Optionen nur noch im -% Kompatibilitätmodus ausgeführt. Der Schalter \cs{if@tud@ddc@internal} wird -% intern von den Optionen \opt{ddc}, \opt{ddchead} und \opt{ddcfoot} verwendet, -% um rekursive Aufrufe der Optionen zu verhindern. -% \begin{macrocode} -%<*class&option> -\newif\if@tud@ddc@internal -\newcommand*\tud@comp@clearpage{}% -\newcommand*\tud@comp@resetpagestyle{}% -%</class&option> -%<*class&body> -\tud@if@v@lower{2.04}{% - \renewcommand*\tud@comp@clearpage{% - \if@tud@ddc@internal\else% - \tud@if@tudheadings{\currentpagestyle}{\clearpage}{}% - \fi% - }% - \renewcommand*\tud@comp@resetpagestyle{% - \if@tud@ddc@internal\else% - \tud@if@tudheadings{\currentpagestyle}{% - \expandafter\pagestyle\expandafter{\currentpagestyle}% - }{}% - \fi% - }% -}{}% -%</class&body> -% \end{macrocode} -% \end{macro}^^A \if@tud@ddc@internal -% \end{macro}^^A \tud@comp@clearpage -% \end{macro}^^A \tud@comp@resetpagestyle -% -% \iffalse -%<*class&option> -% \fi -% -% \begin{option}{ddc} -% \changes{v2.02}{2014/06/23}{automatische Logowahl}^^A -% \begin{option}{ddchead} -% \changes{v2.02}{2014/06/23}{Logo von \DDC entweder in Kopf oder Fuß}^^A -% \begin{option}{ddcfoot} -% \changes{v2.02}{2014/06/23}{Logo von \DDC entweder in Kopf oder Fuß}^^A -% Diese Optionen dienen zur Auswahl des \DDC-Logos auf Seiten mit dem Stil -% \pgs{tudheadings}. Die Option \opt{ddchead} setzt das Logo dabei immer in den -% Kopf, wobei ein mit \cs{headlogo} definiertes Zweitlogo gegebenenfalls -% überschrieben wird. Die Option \opt{ddcfoot} setzt das Logo immer in den Fuß. -% Mit der Option \opt{ddc} wird das Logo nur in den Kopf gesetzt, wenn kein -% Zweitlogo angegeben ist. Ist dies jedoch der Fall, wird das Logo stattdessen -% im Fuß ausgegeben. -% \begin{macro}{\tud@ddc@switch} -% \changes{v2.02}{2014/06/23}{neu}^^A -% Das Makro definiert die gültigen Werte für die \DDC-Optionen \opt{ddc}, -% \opt{ddchead} sowie \opt{ddcfoot}. -% \begin{macrocode} -\newcommand*\tud@ddc@switch{} -\edef\tud@ddc@switch{% - \TUD@bool@numkey,% - {color}{2},{colour}{2},{cdcolor}{2},{cdcolour}{2},% - {colorblack}{3},{colourblack}{3},{cdcolorblack}{3},{cdcolourblack}{3},% - {gray}{4},{grey}{4},{hks92}{4},{cdgray}{4},{cdgrey}{4},% - {black}{5},{cdblack}{5},% - {blue}{6},{hks41}{6},{cdblue}{6},{cddarkblue}{6},% - {white}{7},{cdwhite}{7}% -} -% \end{macrocode} -% \end{macro}^^A \tud@ddc@switch -% \begin{macro}{\tud@ddc@auto@num} -% \changes{v2.02}{2014/06/23}{neu}^^A -% \begin{macro}{\if@tud@ddc@auto} -% \changes{v2.02}{2014/06/23}{neu}^^A -% \begin{macro}{\if@tud@headlogo@option@set} -% \changes{v2.04}{2015/05/31}{neu}^^A -% \begin{macro}{\if@tud@footlogo@option@set} -% \changes{v2.04}{2015/06/01}{neu}^^A -% Die Option \opt{ddc}. -% \begin{macrocode} -\newif\if@tud@headlogo@option@set -\newif\if@tud@footlogo@option@set -\newif\if@tud@ddc@auto -\newcommand*\tud@ddc@auto@num{0} -\TUD@key{ddc}[true]{% -% \end{macrocode} -% Im Kompatibiltätsmodus wird ein Seitenumbruch erzwungen. Anschließend wird -% die Option abgearbeitet. -% \begin{macrocode} - \tud@comp@clearpage% - \TUD@set@numkey{ddc}{tud@ddc@auto@num}{\tud@ddc@switch}{#1}% - \ifx\FamilyKeyState\FamilyKeyStateProcessed% -% \end{macrocode} -% Wurde die Option \opt{ddc} intern durch \opt{ddchead} oder \opt{ddcfoot} -% aufgerufen, wird die automatische Auswahl des \DDC-Logos deaktiviert. -% \begin{macrocode} - \if@tud@ddc@internal% - \@tud@ddc@autofalse% - \else% -% \end{macrocode} -% Andernfalls wird die automatische Auswahl aktiviert und die beiden Optionen -% \opt{ddchead} sowie \opt{ddcfoot} intern zurückgesetzt. -% \begin{macrocode} - \@tud@ddc@autotrue% - \@tud@ddc@internaltrue% - \TUDoptions{ddchead=false}% - \TUDoptions{ddcfoot=false}% - \@tud@ddc@internalfalse% - \fi% -% \end{macrocode} -% Sowohl die \DDC-Logos als auch ein mögliches Zweilogo (\cs{headlogo}) werden -% in den entsprechenden Layern durch Boxen ausgegeben. Die beiden Schalter -% führen zum Erneuern der dazugehörigen Logoboxen. Siehe die Beschreibung der -% Makros \cs{tud@headlogo@option@set} sowie \cs{tud@footlogo@option@set}. -% \begin{macrocode} - \global\@tud@headlogo@option@settrue% - \global\@tud@footlogo@option@settrue% - \fi% -% \end{macrocode} -% Abschließend wird im Kompatibilitätsmodus der aktuelle Seitenstil aufgerufen, -% um bei einem geänderten Fuß den notwendigen Satzspiegel zu laden. -% \begin{macrocode} - \tud@comp@resetpagestyle% -} -% \end{macrocode} -% \end{macro}^^A \if@tud@footlogo@option@set -% \end{macro}^^A \if@tud@headlogo@option@set -% \end{macro}^^A \if@tud@ddc@auto -% \end{macro}^^A \tud@ddc@auto@num -% \begin{macro}{\tud@ddc@head@num} -% \changes{v2.03}{2015/01/22}{Seitenstilauswahl bei Deaktivierung verbessert}^^A -% Die Option \opt{ddchead} dient zum zwingenden Setzen des \DDC-Logos im Kopf -% der Seiten im Stil von \pgs{tudheadings}. -% \begin{macrocode} -\newcommand*\tud@ddc@head@num{0} -\TUD@key{ddchead}[true]{% -% \end{macrocode} -% Der Seitenumbruch im Kompatibilitätsmodus. -% \begin{macrocode} - \tud@comp@clearpage% - \TUD@set@numkey{ddchead}{tud@ddc@head@num}{\tud@ddc@switch}{#1}% -% \end{macrocode} -% Beim internen Aufruf soll lediglich der Wert des Schlüssels geändert werden. -% Wurde die Option durch den Anwender genutzt, werden die korrespondierenden -% Optionen zurückgesetzt. Der Aufruf der Option \opt{ddc} führt zum erneuten -% setzen der Logoboxen. -% \begin{macrocode} - \ifx\FamilyKeyState\FamilyKeyStateProcessed% - \if@tud@ddc@internal\else% - \@tud@ddc@internaltrue% - \TUDoptions{ddcfoot=false}% - \TUDoptions{ddc=false}% - \@tud@ddc@internalfalse% - \fi% - \fi% -% \end{macrocode} -% Das Setzen des Seitenstils im Kompatibilitätsmodus. -% \begin{macrocode} - \tud@comp@resetpagestyle% -} -% \end{macrocode} -% \end{macro}^^A \tud@ddc@head@num -% \begin{macro}{\tud@ddc@foot@num} -% \changes{v2.03}{2015/01/22}{Seitenstilauswahl bei Deaktivierung verbessert}^^A -% Die Option \opt{ddcfoot} dient zum zwingenden Setzen des \DDC-Logos im Fuß -% der Seiten im Stil von \pgs{tudheadings}. Das Vorgehen beim Umschalten des -% Schlüssels ist äquivalent zur Option \opt{ddchead} -% \begin{macrocode} -\newcommand*\tud@ddc@foot@num{0} -\TUD@key{ddcfoot}[true]{% -% \end{macrocode} -% Der Seitenumbruch im Kompatibilitätsmodus. -% \begin{macrocode} - \tud@comp@clearpage% - \TUD@set@numkey{ddcfoot}{tud@ddc@foot@num}{\tud@ddc@switch}{#1}% -% \end{macrocode} -% Beim internen Aufruf soll lediglich der Wert des Schlüssels geändert werden. -% Wurde die Option durch den Anwender genutzt, werden die korrespondierenden -% Optionen zurückgesetzt. Der Aufruf der Option \opt{ddc} führt zum erneuten -% setzen der Logoboxen. -% \begin{macrocode} - \ifx\FamilyKeyState\FamilyKeyStateProcessed% - \if@tud@ddc@internal\else% - \@tud@ddc@internaltrue% - \TUDoptions{ddchead=false}% - \TUDoptions{ddc=false}% - \@tud@ddc@internalfalse% - \fi% - \fi% -% \end{macrocode} -% Das Setzen des Seitenstils im Kompatibilitätsmodus. +% Wurde das optionale Argument nach dem obligatorischen nicht genutzt, so wird +% der Inhalt über die komplette Breite des Textbereiches ausgegeben. % \begin{macrocode} - \tud@comp@resetpagestyle% -} +\newcommand*\tud@footcontent@@use[1]{% + \ifx\tud@footcontent@right\@nnil% + \vtop{% + \hsize=\dimexpr\glueexpr#1-\@tempdimc\relax\relax% + \strut\ignorespaces\tud@footcontent@left\strut% + }% % \end{macrocode} -% \end{macro}^^A \tud@ddc@foot@num -% \end{option}^^A ddcfoot -% \end{option}^^A ddchead -% \end{option}^^A ddc -% -% \iffalse -%</class&option> -%<*class&body> -% \fi -% -% \begin{macro}{\tud@ddc@check} -% \changes{v2.02}{2014/06/23}{neu}^^A -% Dieses Hilfsmakro wird aufgerufen, wenn geprüft wird, welche Einstellungen -% für Kopf und Fuß des Seitenstiles \pgs{tudheadings} zum Tragen kommen sollen. -% Über den Schalter \cs{if@tud@ddc@auto} wird festgelegt, ob die Auswahl des -% \DDC-Logos automatisch erfolgen soll~-- Option \opt{ddc} wurde verwendet. -% Ist dies der Fall, wird das Logo standardmäßig im Kopf gesetzt. Ist jedoch -% durch den Befehl \cs{headlogo} ein Zweitlogo angegeben worde, wird dieses in -% der Fußzeile ausgegeben. Die Verwendung einer der Optionen \opt{ddchead} bzw. -% \opt{ddcfoot} forciert die Ausgabe des \DDC-Logos an der gewünschten Stelle. -% Die jeweils gültige Auswahl für Kopf bzw. Fuß wird in den Makros \cs{@tempa} -% bzw. \cs{@tempb} geschrieben und kann anschließend ausgewertet werden. +% Im zweispaltigen modus werden zwei vertikale Boxen erzeugt, zwischen denen +% der Abstand \cs{columnsep} eingefügt wird. % \begin{macrocode} -\newcommand*\tud@ddc@check{% - \let\@tempa\tud@ddc@head@num% - \let\@tempb\tud@ddc@foot@num% - \if@tud@ddc@auto% - \ifdefvoid{\tud@headlogo@filename}{% - \let\@tempa\tud@ddc@auto@num% - \let\@tempb\z@% - }{% - \let\@tempa\z@% - \let\@tempb\tud@ddc@auto@num% + \else% + \vtop{% + \hsize=\dimexpr\glueexpr(#1-\columnsep)/2\relax\relax% + \strut\ignorespaces\tud@footcontent@left\strut% + }% + \hspace{\columnsep}% + \vtop{% + \hsize=\dimexpr\glueexpr(#1-\columnsep)/2-\@tempdimc\relax\relax% + \strut\ignorespaces\tud@footcontent@right\strut% }% \fi% -% \end{macrocode} -% Für die Satzspiegelvergrößerung wird beim Vorhandensein eines oder mehrerer -% Logos im Fuß die Variable \cs{@tempb} auf einen negativen Wert gesetzt, um -% auch ohne die Ausgabe eines \DDC-Logos den Fußbereich zu vergrößern. -% \begin{macrocode} - \tud@if@v@lower{2.03}{% - \ifnum\@tempb=\z@\relax% - \ifdefvoid{\tud@footlogo@filenames}{}{\let\@tempb\m@ne}% - \fi% - }{}% } % \end{macrocode} -% \end{macro}^^A \tud@ddc@check +% \end{macro}^^A \tud@layer@footcontent@wrn +% \end{macro}^^A \tud@footcontent@@use +% \end{macro}^^A \tud@footcontent@use % % \subsection{Umgebungsparameter für die neuen Seitenstile} % @@ -2501,7 +2540,7 @@ % Der Schalter wird verwendet, um das explizite Setzen der Schrifteinstellungen % über die Seitenstilparameter zu detektieren. % \begin{macrocode} -\newif\if@tud@parameter@ps@font@set +\tud@newif\if@tud@parameter@ps@font@set % \end{macrocode} % \end{macro}^^A \if@tud@parameter@ps@font@set % \begin{macro}{\TUD@parameter@ps@def} @@ -2634,11 +2673,12 @@ % Umgebung wird nache einem weiteren Seitenumbruch das Standardseitenlayout % wiederhergestellt. Die gewünschte Sprache der Umgebung kann als einzelner % Wert ohne Schlüssel angegben werden. +% \ToDo{Umgebung raus? Auf alle Fälle cdgeometry=... etc. unterstützen}[v2.07] % \begin{macrocode} \newcommand*\tud@envir@ps{tudheadings} \newcommand*\tud@envir@selectps{% \expandafter\pagestyle\expandafter{\tud@envir@ps}% - \ifstr{\GetRealPageStyle{\tud@envir@ps}}{empty}{% + \tud@if@strequal{\GetRealPageStyle{\tud@envir@ps}}{empty}{% \renewcommand*\titlepagestyle{empty}% %<*book|report> \renewcommand*\partpagestyle{empty}% @@ -2646,7 +2686,7 @@ %</book|report> \renewcommand*\indexpagestyle{empty}% }{}% - \ifstr{\GetRealPageStyle{\tud@envir@ps}}{empty.tudheadings}{% + \tud@if@strequal{\GetRealPageStyle{\tud@envir@ps}}{empty.tudheadings}{% \renewcommand*\titlepagestyle{empty.tudheadings}% %<*book|report> \renewcommand*\partpagestyle{empty.tudheadings}% @@ -2671,6 +2711,7 @@ % \end{macrocode} % Um beim Umschalten des Seitenstils den aktuellen selbst zu behalten, wird % dieser im Hilfsmakro \cs{tud@currentpagestyle@value} gespeichert. +% \ToDo{eher NewDocumentEnvironment nutzen?}[v2.07] % \begin{macrocode} \tud@currentpagestyle@set% \clearpage% @@ -2723,11 +2764,12 @@ % werden, wobei einer der \pgs{tudheadings}-Seitenstile verwendet wird. % \begin{macrocode} \TUD@parameter@def{pagestyle}{% - \tud@if@tudheadings{#1}{\renewcommand*\tud@envir@ps{#1}}{% - \ifstr{#1}{empty}{\renewcommand*\tud@envir@ps{empty.tudheadings}}{% - \ifstr{#1}{plain}{\renewcommand*\tud@envir@ps{plain.tudheadings}}{% - \ifstr{#1}{headings}{\renewcommand*\tud@envir@ps{tudheadings}}{% - \TUD@parameter@error{pagestyle}{% + \tud@if@tudheadings{#1}{\def\tud@envir@ps{#1}}{% + \def\tud@envir@ps{tudheadings}% + \tud@if@strequal{#1}{empty}{\def\tud@envir@ps{empty.tudheadings}}{% + \tud@if@strequal{#1}{plain}{\def\tud@envir@ps{plain.tudheadings}}{% + \tud@if@strequal{#1}{headings}{}{% + \TUD@parameter@err{pagestyle}{% headings, plain, empty or any tudheadings page style type% }% }}}% @@ -2778,6 +2820,6 @@ %</class&body> % \fi % -% \Finale +% \PrintBackMatter % \endinput |