From 71074c48404ac3f2ded230c702fd738fc613b1f1 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Wed, 10 Aug 2022 03:00:43 +0000 Subject: CTAN sync 202208100300 --- macros/latex/contrib/tudscr/README.md | 23 +- macros/latex/contrib/tudscr/doc/LICENSE.md | 4 +- macros/latex/contrib/tudscr/doc/tudscr.pdf | Bin 1149093 -> 1126953 bytes macros/latex/contrib/tudscr/doc/tudscr_print.pdf | Bin 1133767 -> 1111795 bytes macros/latex/contrib/tudscr/doc/tudscrsource.pdf | Bin 1063109 -> 1145951 bytes .../contrib/tudscr/doc/tutorials/mathswap.pdf | Bin 128951 -> 125133 bytes .../contrib/tudscr/doc/tutorials/mathtype.pdf | Bin 148136 -> 320795 bytes .../contrib/tudscr/doc/tutorials/treatise.pdf | Bin 896765 -> 865990 bytes .../source/doc/examples/mathswap-example.tex | 1 - .../source/doc/examples/treatise-example.tex | 1 - .../tudscr/source/doc/tudscr-installation.tex | 6 +- .../tudscr/source/doc/tudscr-introduction.tex | 13 +- .../tudscr/source/doc/tudscr-mainclasses.tex | 2 +- .../contrib/tudscr/source/doc/tudscr-packages.tex | 3 +- macros/latex/contrib/tudscr/source/doc/tudscr.tex | 35 +- .../latex/contrib/tudscr/source/doc/tutorials.bat | 2 + .../tudscr/source/doc/tutorials/mathswap.tex | 34 +- .../tudscr/source/doc/tutorials/mathtype.tex | 34 +- .../tudscr/source/doc/tutorials/treatise.tex | 82 +- macros/latex/contrib/tudscr/source/tudscr-area.dtx | 907 ++++--- macros/latex/contrib/tudscr/source/tudscr-base.dtx | 1378 +++++++--- .../latex/contrib/tudscr/source/tudscr-color.dtx | 261 +- macros/latex/contrib/tudscr/source/tudscr-comp.dtx | 1018 ++++---- macros/latex/contrib/tudscr/source/tudscr-doc.dtx | 2189 +++++++++------- .../latex/contrib/tudscr/source/tudscr-fields.dtx | 510 ++-- .../latex/contrib/tudscr/source/tudscr-fonts.dtx | 1869 +++++++------ .../contrib/tudscr/source/tudscr-frontmatter.dtx | 211 +- .../latex/contrib/tudscr/source/tudscr-gitinfo.dtx | 359 +++ .../latex/contrib/tudscr/source/tudscr-layout.dtx | 708 ++--- .../contrib/tudscr/source/tudscr-localization.dtx | 84 +- .../latex/contrib/tudscr/source/tudscr-manual.dtx | 1203 ++------- .../contrib/tudscr/source/tudscr-mathswap.dtx | 139 +- macros/latex/contrib/tudscr/source/tudscr-misc.dtx | 859 +++++- .../contrib/tudscr/source/tudscr-pagestyle.dtx | 2758 ++++++++++---------- .../contrib/tudscr/source/tudscr-supervisor.dtx | 171 +- .../latex/contrib/tudscr/source/tudscr-texindy.dtx | 644 ++--- .../latex/contrib/tudscr/source/tudscr-title.dtx | 287 +- .../contrib/tudscr/source/tudscr-twocolfix.dtx | 103 +- .../latex/contrib/tudscr/source/tudscr-version.dtx | 296 +-- macros/latex/contrib/tudscr/source/tudscr.ins | 200 +- .../latex/contrib/tudscr/source/tudscrsource.tex | 68 +- 41 files changed, 8778 insertions(+), 7684 deletions(-) create mode 100644 macros/latex/contrib/tudscr/source/doc/tutorials.bat create mode 100644 macros/latex/contrib/tudscr/source/tudscr-gitinfo.dtx (limited to 'macros/latex') diff --git a/macros/latex/contrib/tudscr/README.md b/macros/latex/contrib/tudscr/README.md index ce8935a46b..a3c497d9c4 100644 --- a/macros/latex/contrib/tudscr/README.md +++ b/macros/latex/contrib/tudscr/README.md @@ -2,9 +2,9 @@ TUD-Script – Corporate Design of Technische Universität Dresden ---------------------------------------------------------------------------- - Copyright (C) Falk Hanisch , 2012-2021 + Copyright (C) Falk Hanisch , 2012-2022 - tudscr 2021/07/15 v2.06n + tudscr 2022/08/09 v2.06o This material is subject to the LaTeX Project Public License version 1.3c or later.
@@ -59,6 +59,16 @@ Das Bundle beinhaltet: Versionen --------- +**v2.06o** (2022/08/09) ++ Schriftstärke im Mathematikmodus wird passend zu den Einstellungen für den + Fließtext (`cdfont=light/heavy/normalbold/ultrabold`) gewählt ++ Kombination `cd=true` und `cdfont=false` verwendet Open Sans in Überschriften ++ `relspacing=true` Schriftgröße hat stärkeren Einfluss, unsauberer Übergang zu + nicht vordefinierten Zwischengrößen behoben ++ **tudscrposter** Umgebungen `figurehere` und `tablehere` ++ Verwendung der Symbole `\textleftarrow`, `\textrightarrow`, `\textuparrow`, + `\textdownarrow` sowie `\textlangle` und `\textrangle` aus Paket **iwona** + **v2.06n** (2021/07/15) + Fix für **siunitx** @@ -284,6 +294,15 @@ The bundle offers: Versions -------- +**v2.06o** (2022/08/09) ++ font face in math mode matches text mode settings + (`cdfont=light/heavy/normalbold/ultrabold`) ++ combination `cd=true` and `cdfont=false` uses Open Sans in headings ++ `relspacing=true` depends on selected font size ++ **tudscrposter** environments `figurehere` und `tablehere` ++ symbols for `\textleftarrow`, `\textrightarrow`, `\textuparrow`, + `\textdownarrow` as well as `\textlangle` and `\textrangle` from **iwona** + **v2.06n** (2021/07/15) + bug fix for **siunitx** diff --git a/macros/latex/contrib/tudscr/doc/LICENSE.md b/macros/latex/contrib/tudscr/doc/LICENSE.md index 164b7e79c0..1744041f44 100644 --- a/macros/latex/contrib/tudscr/doc/LICENSE.md +++ b/macros/latex/contrib/tudscr/doc/LICENSE.md @@ -2,7 +2,7 @@ TUD-Script – Corporate Design of Technische Universität Dresden ---------------------------------------------------------------------------- - Copyright (C) Falk Hanisch , 2012-2021 + Copyright (C) Falk Hanisch , 2012-2022 ---------------------------------------------------------------------------- @@ -19,7 +19,7 @@ ---------------------------------------------------------------------------- - However, only members of the Technische Universität Dresden are permitted + However, only members of the Technische Universität Dresden are permitted to publish documents in the corporate design, in particular with the use of an official logo. diff --git a/macros/latex/contrib/tudscr/doc/tudscr.pdf b/macros/latex/contrib/tudscr/doc/tudscr.pdf index 0b97ccbb5f..7e9b75adee 100644 Binary files a/macros/latex/contrib/tudscr/doc/tudscr.pdf and b/macros/latex/contrib/tudscr/doc/tudscr.pdf differ diff --git a/macros/latex/contrib/tudscr/doc/tudscr_print.pdf b/macros/latex/contrib/tudscr/doc/tudscr_print.pdf index 2772364dd0..ccb8a97dfe 100644 Binary files a/macros/latex/contrib/tudscr/doc/tudscr_print.pdf and b/macros/latex/contrib/tudscr/doc/tudscr_print.pdf differ diff --git a/macros/latex/contrib/tudscr/doc/tudscrsource.pdf b/macros/latex/contrib/tudscr/doc/tudscrsource.pdf index 9f26752023..d48a64028a 100644 Binary files a/macros/latex/contrib/tudscr/doc/tudscrsource.pdf and b/macros/latex/contrib/tudscr/doc/tudscrsource.pdf differ diff --git a/macros/latex/contrib/tudscr/doc/tutorials/mathswap.pdf b/macros/latex/contrib/tudscr/doc/tutorials/mathswap.pdf index 24cbd34801..4546d2b7da 100644 Binary files a/macros/latex/contrib/tudscr/doc/tutorials/mathswap.pdf and b/macros/latex/contrib/tudscr/doc/tutorials/mathswap.pdf differ diff --git a/macros/latex/contrib/tudscr/doc/tutorials/mathtype.pdf b/macros/latex/contrib/tudscr/doc/tutorials/mathtype.pdf index c784efffc7..8087e8f6cd 100644 Binary files a/macros/latex/contrib/tudscr/doc/tutorials/mathtype.pdf and b/macros/latex/contrib/tudscr/doc/tutorials/mathtype.pdf differ diff --git a/macros/latex/contrib/tudscr/doc/tutorials/treatise.pdf b/macros/latex/contrib/tudscr/doc/tutorials/treatise.pdf index 114f90f083..351a3feb08 100644 Binary files a/macros/latex/contrib/tudscr/doc/tutorials/treatise.pdf and b/macros/latex/contrib/tudscr/doc/tutorials/treatise.pdf differ diff --git a/macros/latex/contrib/tudscr/source/doc/examples/mathswap-example.tex b/macros/latex/contrib/tudscr/source/doc/examples/mathswap-example.tex index 7df7fccfa4..062f21bb9d 100644 --- a/macros/latex/contrib/tudscr/source/doc/examples/mathswap-example.tex +++ b/macros/latex/contrib/tudscr/source/doc/examples/mathswap-example.tex @@ -17,7 +17,6 @@ \mathswapon \(4.523,58\) - \(4,523.58\) \begingroup diff --git a/macros/latex/contrib/tudscr/source/doc/examples/treatise-example.tex b/macros/latex/contrib/tudscr/source/doc/examples/treatise-example.tex index 4d274ddd20..4d0be85df2 100644 --- a/macros/latex/contrib/tudscr/source/doc/examples/treatise-example.tex +++ b/macros/latex/contrib/tudscr/source/doc/examples/treatise-example.tex @@ -107,7 +107,6 @@ title = {The \TeX book}, date = {1984}, maintitle = {Computers \& Typesetting}, - volume = {A}, publisher = {Addison-Wesley}, location = {Reading, Massachusetts}, language = {english}, diff --git a/macros/latex/contrib/tudscr/source/doc/tudscr-installation.tex b/macros/latex/contrib/tudscr/source/doc/tudscr-installation.tex index d139461ac2..ec56222a56 100644 --- a/macros/latex/contrib/tudscr/source/doc/tudscr-installation.tex +++ b/macros/latex/contrib/tudscr/source/doc/tudscr-installation.tex @@ -450,7 +450,7 @@ logischerweise auf dem externen Speichermedium \minisec{\hologo{TeX}~Live~Portable} Das folgende Vorgehen wurde mit Windows getestet. Empfehlungen für die portable -Installation für unixoide Betriebssysteme können an \mailto{\tudscrmail} +Installation für unixoide Betriebssysteme können an \mailto{\TUDScriptContact} gesendet werden. \begin{enumerate} \item Installation von \Distribution{\hologo{TeX}~Live~Portable} in @@ -562,6 +562,6 @@ verwenden. Ein exemplarische Verwendung könnte lauten: \end{quoting} % Die so erstellte Logdatei kann \emph{mit einer kurzen Fehlerbeschreibung} -entweder im \Forum* gepostet oder direkt per E"~Mail an \mailto{\tudscrmail} -gesendet werden. +entweder im \Forum* gepostet oder per E"~Mail an \mailto{\TUDScriptContact} +gesendet werden.% \index{Installation!Schriftinstallation|!)}% diff --git a/macros/latex/contrib/tudscr/source/doc/tudscr-introduction.tex b/macros/latex/contrib/tudscr/source/doc/tudscr-introduction.tex index ae2f2a0ff0..cda3d958dd 100644 --- a/macros/latex/contrib/tudscr/source/doc/tudscr-introduction.tex +++ b/macros/latex/contrib/tudscr/source/doc/tudscr-introduction.tex @@ -1,12 +1,11 @@ \chapter{Einleitung} % -Zur Verwendung der \TUDScript-Klassen in der Version~\vTUDScript{} werden -sowohl die \KOMAScript"=Klassen~\vKOMAScript{} oder später als auch die -Hausschrift des \CDs \OpenSans aus dem Paket \Package{opensans} zwingend -benötigt. Außerdem müssen durch die genutzte \hologo{LaTeX}"=Distribution -weitere Pakete bereitgestellt werden, die unter \autoref{sec:packages:needed} -aufgeführt sind. Beim Einsatz einer der Distributionen -\index{Distribution}% +Zur Verwendung von \TUDScript~\vTUDScript{} wird sowohl +\KOMAScript~\vKOMAScript{} oder später als auch die Hausschrift des +\CDs \OpenSans aus dem Paket \Package{opensans} zwingend benötigt. Außerdem +müssen durch die genutzte \hologo{LaTeX}"=Distribution weitere Pakete +bereitgestellt werden, die unter \autoref{sec:packages:needed} aufgeführt sind. +Beim Einsatz einer der Distributionen\index{Distribution} \Distribution{\hologo{TeX}~Live}|?|, \Distribution{Mac\hologo{TeX}}|?| und \Distribution{\hologo{MiKTeX}}|?| diff --git a/macros/latex/contrib/tudscr/source/doc/tudscr-mainclasses.tex b/macros/latex/contrib/tudscr/source/doc/tudscr-mainclasses.tex index 915ea48199..0f61806b91 100644 --- a/macros/latex/contrib/tudscr/source/doc/tudscr-mainclasses.tex +++ b/macros/latex/contrib/tudscr/source/doc/tudscr-mainclasses.tex @@ -2118,8 +2118,8 @@ und \Macro{subject}[\Parameter{Wert}] zu \Option{subjectthesis=true}. \textbf{Wert} & \textbf{Bezeichner} & \textbf{Deutsch} & \textbf{Englisch} \tabularnewline \midrule + \typecast{habil}{habilitationname} \typecast{diss}{dissertationname} - \typecast{doctoral}{dissertationname} \typecast{phd}{dissertationname} \typecast{diploma}{diplomathesisname} \typecast{master}{masterthesisname} diff --git a/macros/latex/contrib/tudscr/source/doc/tudscr-packages.tex b/macros/latex/contrib/tudscr/source/doc/tudscr-packages.tex index 13ce2d1ec8..ad50352c90 100644 --- a/macros/latex/contrib/tudscr/source/doc/tudscr-packages.tex +++ b/macros/latex/contrib/tudscr/source/doc/tudscr-packages.tex @@ -998,7 +998,8 @@ werden konnte. literate=% {ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1 {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1 - {~}{{\textasciitilde}}1 {ß}{{\ss}}1 + {ß}{{\ss}}1 {~}{{\textasciitilde}}1 + {»}{{\guillemetright}}1 {«}{{\guillemetleft}}1 } \end{Code}\vspace{-\baselineskip}% \item[coseoul] diff --git a/macros/latex/contrib/tudscr/source/doc/tudscr.tex b/macros/latex/contrib/tudscr/source/doc/tudscr.tex index 737412d91f..f573095675 100644 --- a/macros/latex/contrib/tudscr/source/doc/tudscr.tex +++ b/macros/latex/contrib/tudscr/source/doc/tudscr.tex @@ -1,4 +1,4 @@ -\documentclass[english,ngerman,ttfont=roboto]{tudscrmanual} +\documentclass[english,ngerman]{tudscrmanual} \iftutex \usepackage{fontspec} \else @@ -13,14 +13,13 @@ {ß}{{\ss}}1 {~}{{\textasciitilde}}1 {»}{{\guillemetright}}1 {«}{{\guillemetleft}}1 } -\usepackage{bookmark} +\usepackage{babel} +\usepackage[babel]{microtype} -\TUDoption{ToDo}{true} +\usepackage{bookmark} \KOMAoptions{headings=optiontoheadandtoc} -%\tracinglabels[all] -%\tracingmarkup - +\GitHubBase{\TUDScriptRepository} \begin{document} \newrobustcmd*\cdurl{% \begingroup% @@ -36,13 +35,9 @@ }{% \subtitle{Benutzerhandbuch\thanks{\href{tudscr_print}{Druckversion}}}% } - -\author{% - Falk Hanisch% - \expandafter\emailaddress\expandafter{\tudscrmail}% -} -\publishers{\GitHubRepo'[]} -\date{2021-07-15} +\author{Falk Hanisch\TUDScriptContactTitle} +\publishers{\url{\TUDScriptRepository}} +\date{2022-08-09} \makeatletter \begingroup% @@ -140,25 +135,25 @@ davor (\Option*{open=right}) sowie danach (\Option*{open=left}). Setzen von speziellen Inhalten auf diesen Seiten äquivalent zu \Macro*{setpartpreamble} bzw. \Macro*{setchapterpreamble}; ggf. temporär umschalten bzw. Warnung bei - Konflikt. - \url{http://latex.wcms-file3.tu-dresden.de/phpBB3/viewtopic.php?f=11&t=396} + Konflikt. \Forum<396> }[v2.07] \ToDo[imp]{Alle Datumsangaben auf YYYY-MM-DD umstellen}[v2.07] \ToDo[imp]{LyX: layout-Dateien in das Projekt integrieren lassen?}[v2.07] -\ToDo[imp]{\Package*{glossaries}: Paket für Stile aus Tutorial}[v2.07] +\ToDo[imp]{% + \Package*{glossaries}: Paket für Stile aus Tutorial, siehe auch \Forum<535> +}[v2.07] \ToDo[imp]{TeXstudio: cwl-Dateien über docstrip, separate .ins-Datei}[v2.07] \ToDo[rls]{TeXstudio: alle *.cwl erneuern, automatisch über *.dtx} \ToDo[rls]{GitHub auf offene Issues prüfen} \ToDo[rls]{\emph{alle} dtx-Dateien der vorherigen Version mit WinMerge sichten} +\ToDo[rls]{Datumsangaben \emph{aller} dtx-Dateien prüfen}%: ^((?!%).)*\d{4}(/|-) \ToDo[rls]{Layout und Umbrüche kontrollieren} \ToDo[rls]{Datum in tudscr-version.dtx, tudscr-comp.dtx, Handbuch \& README} -\ToDo[rls]{% - Release auf GitHub und CTAN, Tag für Homepage und im Forum ändern\\ - {\small\url{http://latex.wcms-file3.tu-dresden.de/phpBB3/viewtopic.php?t=303}}% -} +\ToDo[rls]{Release auf GitHub und CTAN, Tag für Homepage und \Forum<303> ändern} + \ListOfToDo \end{document} diff --git a/macros/latex/contrib/tudscr/source/doc/tutorials.bat b/macros/latex/contrib/tudscr/source/doc/tutorials.bat new file mode 100644 index 0000000000..31eec86fde --- /dev/null +++ b/macros/latex/contrib/tudscr/source/doc/tutorials.bat @@ -0,0 +1,2 @@ +cd tutorials +pdflatex -shell-escape "\input {treatise.tex}" diff --git a/macros/latex/contrib/tudscr/source/doc/tutorials/mathswap.tex b/macros/latex/contrib/tudscr/source/doc/tutorials/mathswap.tex index 233e675d9b..c71be51143 100644 --- a/macros/latex/contrib/tudscr/source/doc/tutorials/mathswap.tex +++ b/macros/latex/contrib/tudscr/source/doc/tutorials/mathswap.tex @@ -5,44 +5,51 @@ \usepackage[T1]{fontenc} \usepackage[ngerman=ngerman-x-latest]{hyphsubst} \fi +\usepackage{babel} +\usepackage[babel]{microtype} -\usepackage{tudscrtutorial} +\usepackage{tudscrmanual} \lstset{% inputencoding=utf8,extendedchars=true, literate=% {ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1 {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1 - {~}{{\textasciitilde}}1 {ß}{{\ss}}1 + {ß}{{\ss}}1 {~}{{\textasciitilde}}1 + {»}{{\guillemetright}}1 {«}{{\guillemetleft}}1 } \usepackage{mathswap} \usepackage{bookmark} \begin{document} -\begin{Bundle}{\Package{mathswap}} -\date{07.11.2016} -\author{Falk Hanisch\thanks{\noexpand\scriptsize\noexpand\mailto{\tudscrmail}}} +\subject{Mathematiksatz in \hologo{LaTeX}} \title{Änderung der Trennzeichen im Mathematikmodus} +\author{Falk Hanisch\TUDScriptContactTitle} +\date{2016-11-07} + \makeatletter \begingroup% \def\and{, }% \let\thanks\@gobble% \let\footnote\@gobble% + \let\emailaddress\@gobble% \hypersetup{% - pdfauthor = {\@author},% - pdftitle = {\@title},% - pdfsubject = {Mathematiksatz in LaTeX},% + pdfauthor = {\@author},% + pdftitle = {\@title},% + pdfsubject = {\@subject},% pdfkeywords = {LaTeX, \TUDScript, Tutorial, Mathematiksatz},% }% \endgroup% \markright{\@title} \makeatother + +\begin{Bundle}{\Package{mathswap}} \StartTutorial[% - Werden in einer wissenschaftlichen Abhandlung vielerlei Daten importiert und - beispielsweise tabellarisch dargestellt, kann es durchaus sein, dass diese - importierten Datensätze bezüglich der darin enthaltenen Gruppierungs- und - Dezimaltrennzeichen nicht dem Zahlenformat entsprechen, welches für die - verwendete Dokumentsprache normalerweise notwendig wäre. + Sollen in einer wissenschaftlichen Abhandlung unterschiedliche Datensätze + importiert und beispielsweise tabellarisch dargestellt werden, kann es + durchaus sein, dass die enthaltenen Gruppierungs- und Dezimaltrennzeichen + nicht dem für die verwendete Dokumentsprache geforderten Zahlenformat + entsprechen. Dieses Tutorial behandelt die typografischen Eigenheiten von Gruppierungs- und Dezimaltrennzeichen bei der Angabe von Zahlen in einem @@ -134,7 +141,6 @@ Leerraum als Dezimaltrennzeichen~-- entsprechend ausgegeben: } \begin{Trunk*} \(4.523,58\) - \end{Trunk*} % Wird die gleiche Zahl in englischer Formatierung angegeben, funktioniert dies diff --git a/macros/latex/contrib/tudscr/source/doc/tutorials/mathtype.tex b/macros/latex/contrib/tudscr/source/doc/tutorials/mathtype.tex index a9f9ab3448..d33f8c5bab 100644 --- a/macros/latex/contrib/tudscr/source/doc/tutorials/mathtype.tex +++ b/macros/latex/contrib/tudscr/source/doc/tutorials/mathtype.tex @@ -1,54 +1,60 @@ -\documentclass[english,ngerman]{tudscrartcl} +\documentclass[english,ngerman,cdfont=false]{tudscrartcl} \iftutex \usepackage{fontspec} \else \usepackage[T1]{fontenc} \usepackage[ngerman=ngerman-x-latest]{hyphsubst} \fi +\usepackage{babel} +\usepackage[babel]{microtype} -\usepackage{tudscrtutorial} +\usepackage{tudscrmanual} \lstset{% inputencoding=utf8,extendedchars=true, literate=% {ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1 {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1 - {~}{{\textasciitilde}}1 {ß}{{\ss}}1 + {ß}{{\ss}}1 {~}{{\textasciitilde}}1 + {»}{{\guillemetright}}1 {«}{{\guillemetleft}}1 } \usepackage{mathtools} \usepackage{bookmark} \begin{document} -\date{07.11.2016} -\author{Falk Hanisch\thanks{\noexpand\scriptsize\noexpand\mailto{\tudscrmail}}} +\subject{Mathematiksatz in \hologo{LaTeX}} \title{Ein Beitrag zum mathematischen Satz in \hologo{LaTeX}} +\author{Falk Hanisch\TUDScriptContactTitle} +\date{07.11.2016} + \makeatletter \begingroup% \def\and{, }% \let\thanks\@gobble% \let\footnote\@gobble% + \let\emailaddress\@gobble% \hypersetup{% - pdfauthor = {\@author},% - pdftitle = {\@title},% - pdfsubject = {Mathematiksatz in LaTeX},% + pdfauthor = {\@author},% + pdftitle = {\@title},% + pdfsubject = {\@subject},% pdfkeywords = {LaTeX, \TUDScript, Tutorial, Mathematiksatz},% }% \endgroup% \markright{\@title} \makeatother + \StartTutorial[% Im mathematischen Satz sollten lediglich Formelzeichen für physikalische Größen und Variablen sowie Funktions- und Operatorzeichen mit frei wählbarer Bedeutung kursiv geschrieben werden. Dagegen werden Einheiten und ihre Vorsätze, Zahlen, Funktions- und Operatorzeichen mit feststehender Bedeutung - sowie Chemische Elemente und Verbindungen aufrecht gesetzt. Weiterhin werden - Indizes, welche ein Formelzeichen näher beschreiben, ebenfalls aufrecht - gesetzt. Dieses Tutorial zeigt, wie mit einfachen Mitteln die Auszeichnung - von beschreibenden Indizes bei Formelzeichen typografisch korrekt erfolgen - kann. + sowie chemische Elemente und Verbindungen ebenso wie Indizes, welche ein + Formelzeichen näher beschreiben, aufrecht gesetzt. Dieses Tutorial zeigt, wie + mit einfachen Mitteln die Auszeichnung von Indizes bei Formelzeichen + typografisch korrekt erfolgen kann. ] Bevor das eigentliche Tutorial beginnt, werden sowohl eine Dokumentklasse als -auch die für jedes \hologo{pdfLaTeX}-Dokument meiner Meinung nach sinnvollen +auch die für jedes \hologo{LaTeX}"~Dokument meiner Meinung nach sinnvollen Pakete geladen. % \begin{Preamble} diff --git a/macros/latex/contrib/tudscr/source/doc/tutorials/treatise.tex b/macros/latex/contrib/tudscr/source/doc/tutorials/treatise.tex index 0e06970833..c023a716ae 100644 --- a/macros/latex/contrib/tudscr/source/doc/tutorials/treatise.tex +++ b/macros/latex/contrib/tudscr/source/doc/tutorials/treatise.tex @@ -1,7 +1,9 @@ \RequirePackage{fix-cm} \documentclass[% english,ngerman,% - cdgeometry=no,DIV=12,automark% + cdgeometry=no,DIV=12,% + automark,% + listof=toc,% ]{tudscrartcl} \iftutex \usepackage{fontspec} @@ -9,19 +11,22 @@ \usepackage[T1]{fontenc} \usepackage[ngerman=ngerman-x-latest]{hyphsubst} \fi +\usepackage{babel} +\usepackage[babel]{microtype} -\usepackage{tudscrtutorial} +\usepackage{tudscrmanual} \lstset{% inputencoding=utf8,extendedchars=true, literate=% {ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1 {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1 - {~}{{\textasciitilde}}1 {ß}{{\ss}}1 + {ß}{{\ss}}1 {~}{{\textasciitilde}}1 + {»}{{\guillemetright}}1 {«}{{\guillemetleft}}1 } \lstset{escapechar=§} \usepackage{lmodern} -\TUDoptions{cdfont=false} +\TUDoptions{cd=false,cdfont=false,cdtitle=true} \KOMAoptions{headings=normal} \usepackage{tudscrsupervisor} @@ -59,31 +64,8 @@ } \usepackage{csquotes} \usepackage[backend=biber,style=alphabetic]{biblatex} -\addbibresource{\jobname.bib} \DefineBibliographyStrings{ngerman}{urlseen = {Am:}} - -\usepackage{enumitem} - -\usepackage{caption} -\DeclareCaptionSubType[alph]{figure} -\DeclareCaptionSubType[alph]{table} -\usepackage{floatrow} -\renewcommand{\floatpagefraction}{0.7} - -\usepackage{tikz} -\usetikzlibrary{chains} -\usetikzlibrary{decorations.markings} -\tikzset{on grid} - -% TODO pst-pdf funktioniert momentan nicht mit hyperref -% github.com/rolfn/pst-pdf/issues/6 -\usepackage{pstricks,pst-node} - -\makeatletter -\newcommand*\pcolumnfuzz[1]{\pretocmd{\@endpbox}{\hfuzz=#1}{}{}} -\makeatother - -\usepackage{bookmark} +\addbibresource{\jobname.bib} \begin{filecontents}{\jobname.bib} @book{talbot2012, @@ -123,9 +105,9 @@ title = {Feinheiten bei wissenschaftlichen Publikationen~-- Mikrotypographie"=Regeln, Teil~I}, journaltitle = {Die \TeX{}nische Komödie}, - year = {1997}, + year = {1996}, month = {2}, - volume = {4/96}, + volume = {4}, pages = {23-40}, url = {http://www.dante.de/tex/Dokumente/dtk-neubauer.pdf}, urldate = {2014-12-01}, @@ -137,7 +119,7 @@ journaltitle = {Die \TeX{}nische Komödie}, year = {1997}, month = {5}, - volume = {1/97}, + volume = {1}, pages = {25--44}, url = {http://www.dante.de/tex/Dokumente/dtk-neubauer.pdf}, urldate = {2014-12-01}, @@ -158,26 +140,53 @@ } \end{filecontents} +\usepackage{enumitem} + +\usepackage{caption} +\DeclareCaptionSubType[alph]{figure} +\DeclareCaptionSubType[alph]{table} +\usepackage{floatrow} +\renewcommand{\floatpagefraction}{0.7} + +\usepackage{tikz} +\usetikzlibrary{chains} +\usetikzlibrary{decorations.markings} +\tikzset{on grid} + +% TODO pst-pdf funktioniert momentan nicht mit hyperref +% github.com/rolfn/pst-pdf/issues/6 +% --> luapstricks ? +\usepackage{pstricks,pst-node} + +\makeatletter +\newcommand*\pcolumnfuzz[1]{\pretocmd\@endpbox{\hfuzz=#1}{}{}} +\makeatother + +\usepackage{bookmark} \begin{document} -\date{29.03.2017} -\author{Falk Hanisch\thanks{\noexpand\scriptsize\noexpand\mailto{\tudscrmail}}} +\subject{Tutorial für \hologo{LaTeX}} \title{% Ein Anwenderleitfaden für das Erstellen einer wissenschaftlichen Abhandlung% } +\author{Falk Hanisch\TUDScriptContactTitle} +\date{2017-03-29} + \makeatletter \begingroup% \def\and{, }% \let\thanks\@gobble% \let\footnote\@gobble% + \let\emailaddress\@gobble% \hypersetup{% - pdfauthor = {\@author},% - pdftitle = {\@title},% - pdfsubject = {Tutorial für LaTeX},% + pdfauthor = {\@author},% + pdftitle = {\@title},% + pdfsubject = {Tutorial für LaTeX},% pdfkeywords = {LaTeX, \TUDScript, Tutorial, Anwenderleitfaden},% }% \endgroup% \makeatother + \StartTutorial[% Der Versuch, ein allumfassendes Tutorial für eine wissenschaftliche Arbeit zur Verfügung zu stellen gleicht der beschwerlichen Suche nach einer @@ -1594,7 +1603,6 @@ von \Package{biblatex} zu finden. title = {The \TeX book}, date = {1984}, maintitle = {Computers \& Typesetting}, - volume = {A}, publisher = {Addison-Wesley}, location = {Reading, Massachusetts}, language = {english}, diff --git a/macros/latex/contrib/tudscr/source/tudscr-area.dtx b/macros/latex/contrib/tudscr/source/tudscr-area.dtx index 52414b66a7..3dad8f1d9c 100644 --- a/macros/latex/contrib/tudscr/source/tudscr-area.dtx +++ b/macros/latex/contrib/tudscr/source/tudscr-area.dtx @@ -1,10 +1,10 @@ -% \CheckSum{2307} % \iffalse meta-comment +%/GitFileInfo=tudscr-area.dtx % % TUD-Script -- Corporate Design of Technische Universität Dresden % ---------------------------------------------------------------------------- % -% Copyright (C) Falk Hanisch , 2012-2021 +% Copyright (C) Falk Hanisch , 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-area.dtx +% \iffalse ins:batch + dtx:driver +%<*ins> +\ifx\documentclass\undefined + \input docstrip.tex + \ifToplevel{\batchinput{tudscr.ins}} +\else + \let\endbatchfile\relax +\fi +\endbatchfile +% %<*dtx> -% \fi% -% -\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi -\ProvidesFile{tudscr-area.dtx}[2020/06/18 v2.06g TUD-Script\space% - (type or page area)% -] -% -% \iffalse +\ProvidesFile{tudscr-area.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-area.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} @@ -86,6 +65,8 @@ % \changes{v2.05}{2016/04/03}{Unterstützung von Schnittmarken mit den Paketen % \pkg{geometry} und \pkg{crop}}^^A % +% +% % \section{Der Satzspiegel für \TUDScript} % % Das \CD verlangt (eigentlich) einen fest vorgegebenen Satzspiegel. Für das @@ -93,15 +74,13 @@ % andere als glücklich gewählt. Insbesondere für den doppelseitigen Satz ist % das Standardlayout nicht gut nutzbar. Für die \TUDScript-Klassen wird % deshalb die Abweichung vom sonst fest vorgegebenen Satzspiegel ermöglicht. -% \ToDo{% +% \ToDo{ % Unterstützung von PDF-Boxen für die Druckausgabe %^^A\url{https://groups.google.com/forum/#!topic/de.comp.text.tex/1gouJ0Zov6o} -%^^A\url{http://tex.stackexchange.com/questions/248902/} +%^^A\url{http://tex.stackexchange.com/q/248902} %^^A\url{https://wiki.scribus.net/canvas/PDF_Boxes_:_mediabox,_cropbox,_bleedbox,_trimbox,_artbox} %^^A\url{http://www.prepressure.com/pdf/basics/page-boxes} -% }[v2.07] -% -% \StopEventually{\PrintIndex\PrintChanges\PrintToDos} +% }[v2.08] % % \iffalse %<*class&body> @@ -123,7 +102,7 @@ % zu zentrieren. Diese Einstellung geht beim Laden eines neuen Satzspiegels mit % \cs{loadgeometry} verloren. Hiermit wird das Problem behoben. % \begin{macrocode} -\newif\if@tud@x@crop@center +\tud@newif\if@tud@x@crop@center \AfterPackage{crop}{% \CheckCommand*\CROP@center{% \voffset\stockheight @@ -133,7 +112,7 @@ \advance\hoffset-\paperwidth \hoffset.5\hoffset }% - \pretocmd{\CROP@center}{% + \pretocmd\CROP@center{% \@tud@x@crop@centertrue% }{}{\tud@patch@wrn{CROP@center}}% } @@ -159,12 +138,12 @@ % ausgeführt, wenn entweder die Option \opt{crop} deaktiviert ist oder die % Klasse \cls{standalone} gar nicht geladen wurde. % \begin{macrocode} -\newif\if@tud@x@standalone@crop +\tud@newif\if@tud@x@standalone@crop \AfterClass*{standalone}{\let\if@tud@x@standalone@crop\ifsa@crop} % \end{macrocode} % \end{macro}^^A \if@tud@x@standalone@crop % -% \subsection{Definition der Größen und Maße in abhängig vom Papierformat} +% \subsection{Definition der Größen und Maße abhängig vom Papierformat} % % Die \TUDScript-Klassen sollen neben den vom \CD vorgegebenen Seitenrändern % weitere Satzspiegel ermöglichen und u.\,a. auch die Nutzung des Paketes @@ -174,101 +153,101 @@ % Seitenränder direkt gewählt oder aber die mit \pkg{typearea} berechneten Maße % an \pkg{geometry} durchgereicht. % -% \begin{length}{\tud@len@widemargin} -% \begin{length}{\tud@len@slimmargin} -% \begin{length}{\tud@len@both} +% \begin{length}{\tud@dim@widemargin} +% \begin{length}{\tud@dim@slimmargin} +% \begin{length}{\tud@dim@bothmargin} % Die Seitenränder für links und rechts sowie deren Summe, welche später für % weitere Satzspiegeleinstelungen dazu verwendet wird, diese anteilig zu % verteilen. % \begin{macrocode} -\newlength\tud@len@widemargin -\newlength\tud@len@slimmargin -\newlength\tud@len@both -% \end{macrocode} -% \end{length}^^A \tud@len@both -% \end{length}^^A \tud@len@slimmargin -% \end{length}^^A \tud@len@widemargin -% \begin{length}{\tud@len@topmargin} -% \begin{length}{\tud@len@barheight} -% \begin{length}{\tud@len@headsep} -% \begin{length}{\tud@len@footsep} +\tud@newdim\tud@dim@widemargin +\tud@newdim\tud@dim@slimmargin +\tud@newdim\tud@dim@bothmargin +% \end{macrocode} +% \end{length}^^A \tud@dim@bothmargin +% \end{length}^^A \tud@dim@slimmargin +% \end{length}^^A \tud@dim@widemargin +% \begin{length}{\tud@dim@topmargin} +% \begin{length}{\tud@dim@barheight} +% \begin{length}{\tud@dim@headsep} +% \begin{length}{\tud@dim@footsep} % Es folgen die speziellen Maße für die Seiten mit dem TUD-Kopf, also die Höhe % oberhalb des Querbalkens, die Höhe des Querbalkens selbst sowie der vertikale % (Mindest"~)Abstand zwischen Querbalken und Textkörper sowie der Fußzeile. % \begin{macrocode} -\newlength\tud@len@topmargin -\newlength\tud@len@barheight -\newlength\tud@len@headsep -\newlength\tud@len@footsep -% \end{macrocode} -% \end{length}^^A \tud@len@footsep -% \end{length}^^A \tud@len@headsep -% \end{length}^^A \tud@len@barheight -% \end{length}^^A \tud@len@topmargin -% \begin{length}{\tud@len@logox} -% \begin{length}{\tud@len@logoy} -% \begin{length}{\tud@len@logowidth} +\tud@newdim\tud@dim@topmargin +\tud@newdim\tud@dim@barheight +\tud@newdim\tud@dim@headsep +\tud@newdim\tud@dim@footsep +% \end{macrocode} +% \end{length}^^A \tud@dim@footsep +% \end{length}^^A \tud@dim@headsep +% \end{length}^^A \tud@dim@barheight +% \end{length}^^A \tud@dim@topmargin +% \begin{length}{\tud@dim@logox} +% \begin{length}{\tud@dim@logoy} +% \begin{length}{\tud@dim@logowidth} % Außerdem müssen Abmessungen und Position des TUD-Logos definiert werden, % genauer der horizontale (Soll"~)Abstand zwischen linkem Seitenrand und Logo, % der vertikale (Soll"~)Abstand zwischen oberem Seitenrand und Logo sowie die % Breite und Höhe\footnote{Proportionen sind durch die Grafik vorgegeben} des % Logos. % \begin{macrocode} -\newlength\tud@len@logox -\newlength\tud@len@logoy -\newlength\tud@len@logowidth +\tud@newdim\tud@dim@logox +\tud@newdim\tud@dim@logoy +\tud@newdim\tud@dim@logowidth % \end{macrocode} -% \end{length}^^A \tud@len@logowidth -% \end{length}^^A \tud@len@logoy -% \end{length}^^A \tud@len@logox -% \begin{length}{\tud@len@line} +% \end{length}^^A \tud@dim@logowidth +% \end{length}^^A \tud@dim@logoy +% \end{length}^^A \tud@dim@logox +% \begin{length}{\tud@dim@line} % \changes{v2.02}{2014/06/23}{neu}^^A -% \begin{length}{\tud@len@heavyline} -% \begin{length}{\tud@len@thinline} +% \begin{length}{\tud@dim@heavyline} +% \begin{length}{\tud@dim@thinline} % Die Linienstärke der Outline im Kopf ist für ein monochromes Layout schmaler % als im Layout mit farbigem Hintergrund.\footnote{monochrom -% \cs{tud@len@thinline}, koloriert \cs{tud@len@heavyline}} Da im Dokument beide -% Varianten vorkommen können, wird die Breite \cs{tud@len@line} durch den -% Seitenstil situativ entweder auf den Wert von \cs{tud@len@thinline} oder aber -% \cs{tud@len@heavyline} gesetzt. -% \begin{macrocode} -\newlength\tud@len@line -\newlength\tud@len@heavyline -\newlength\tud@len@thinline -% \end{macrocode} -% \end{length}^^A \tud@len@thinline -% \end{length}^^A \tud@len@heavyline -% \end{length}^^A \tud@len@line -% \begin{length}{\tud@len@areaheadvskip} +% \cs{tud@dim@thinline}, koloriert \cs{tud@dim@heavyline}} Da im Dokument beide +% Varianten vorkommen können, wird die Breite \cs{tud@dim@line} durch den +% Seitenstil situativ entweder auf den Wert von \cs{tud@dim@thinline} oder aber +% \cs{tud@dim@heavyline} gesetzt. +% \begin{macrocode} +\tud@newdim\tud@dim@line +\tud@newdim\tud@dim@heavyline +\tud@newdim\tud@dim@thinline +% \end{macrocode} +% \end{length}^^A \tud@dim@thinline +% \end{length}^^A \tud@dim@heavyline +% \end{length}^^A \tud@dim@line +% \begin{length}{\tud@dim@areaheadvskip} % \changes{v2.02}{2014/06/23}{neu}^^A -% \begin{length}{\tud@len@areadiff} -% \begin{length}{\tud@len@areavskip} +% \begin{length}{\tud@dim@areadiff} +% \begin{length}{\tud@dim@areavskip} % Die Längen für den vertikalen Standardversatz der Überschriften sowie die % Differenz der Kopfhöhen von normalem und TUD-Kopf-Satzspiegel. Die Differenz % zwischen den unterschiedlichen Kopfhöhen der Satzspiegelvarianten wird durch -% \cs{tud@cdgeometry@@process} berechnet und dabei in \cs{tud@len@areadiff} +% \cs{tud@cdgeometry@@process} berechnet und dabei in \cs{tud@dim@areadiff} % gespeichert. Dabei muss unterschieden werden, ober der Satzspiegel des \CDs % oder der durch \pkg{typearea} berechnete respektive durch den Anwender mit % \pkg{geometry} vorgegebene genutzt wird. Davon abhängig wird zum Ausgleich -% die Länge \cs{tud@len@areavskip} definiert. +% die Länge \cs{tud@dim@areavskip} definiert. % \begin{macrocode} -\newlength\tud@len@areaheadvskip -\newlength\tud@len@areadiff -\newlength\tud@len@areavskip +\tud@newdim\tud@dim@areaheadvskip +\tud@newdim\tud@dim@areadiff +\tud@newdim\tud@dim@areavskip % \end{macrocode} -% \end{length}^^A \tud@len@areavskip -% \end{length}^^A \tud@len@areadiff -% \end{length}^^A \tud@len@areaheadvskip -% \begin{length}{\tud@len@ddcdiff} +% \end{length}^^A \tud@dim@areavskip +% \end{length}^^A \tud@dim@areadiff +% \end{length}^^A \tud@dim@areaheadvskip +% \begin{length}{\tud@dim@ddcdiff} % \changes{v2.02}{2014/06/23}{neu}^^A -% Zu guter Letzt noch die Länge \cs{tud@len@ddcdiff} für den Höhenausgleich des +% 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} -\tud@if@v@lower{2.03}{\newlength\tud@len@ddcdiff}{} +\tud@if@v@lower{2.03}{\tud@newdim\tud@dim@ddcdiff}{} % \end{macrocode} -% \end{length}^^A \tud@len@ddcdiff +% \end{length}^^A \tud@dim@ddcdiff % \begin{macro}{\tud@head@fontsize} % Für den Querbalken wird außerdem die zu verwendende Schriftgröße definiert. % \begin{macrocode} @@ -277,7 +256,7 @@ % \end{macro}^^A \tud@head@fontsize % \begin{macro}{\tud@cdgeometry@set} % \changes{v2.03}{2015/01/23}{Längenberechnung für den Satzspiegel an -% Referenzlänge \cs{tud@len@widemargin} gekoppelt}^^A +% Referenzlänge \cs{tud@dim@widemargin} gekoppelt}^^A % \changes{v2.05}{2015/07/15}{Fallunterscheidung an DIN-B-Reihe angepasst}^^A % \changes{v2.05}{2016/04/03}{Option \opt{layout} von \pkg{geometry} möglich}^^A % \begin{macro}{\if@tud@cdgeometry@adjust} @@ -290,18 +269,18 @@ % \changes{v2.06g}{2020/06/18}{neu}^^A % \begin{macro}{\tud@cdgeometry@papersize@last} % \changes{v2.06g}{2020/06/18}{neu}^^A -% \begin{length}{\tud@len@layoutwidth} +% \begin{length}{\tud@dim@layoutwidth} % \changes{v2.05}{2016/04/03}{neu}^^A -% \begin{length}{\tud@len@layoutheight} +% \begin{length}{\tud@dim@layoutheight} % \changes{v2.05}{2016/04/03}{neu}^^A -% \begin{length}{\tud@len@layouthoffset} +% \begin{length}{\tud@dim@layouthoffset} % \changes{v2.05}{2016/04/03}{neu}^^A -% \begin{length}{\tud@len@layoutvoffset} +% \begin{length}{\tud@dim@layoutvoffset} % \changes{v2.05}{2016/04/03}{neu}^^A % Hiermit werden in Abhängigkeit der gewählten Papiergröße die Maße für die % Größe der Kopfzeile, die Position des Logos, die Seitenränder sowie die % Schriftgröße in der Kopfzeile definiert. Aufgerufen wird der Befehl durch -% \cs{tud@cdgeometry@@process}. Dabei fungiert \cs{tud@len@widemargin} als +% \cs{tud@cdgeometry@@process}. Dabei fungiert \cs{tud@dim@widemargin} als % Bezugslänge. Die maßgebliche Papiergröße ist DIN~A4 bzw. DIN~B4. Die Längen % für alle anderen Papiermaße unterscheiden sich um den Faktor~$\sqrt{2}$, % wobei das Format DIN~A5 nach den Vorgaben des \CDs übersprungen wird. @@ -311,49 +290,49 @@ % Mit der Einstellung \opt{cdgeometry}|=|\val{adapted} wird auch das Format % DIN~A5 mit den skalierten Seitenrändern erstellt. % \begin{macrocode} -\newif\if@tud@cdgeometry@adjust -\newlength\tud@len@layoutwidth -\newlength\tud@len@layoutheight -\newlength\tud@len@layouthoffset -\newlength\tud@len@layoutvoffset +\tud@newif\if@tud@cdgeometry@adjust +\tud@newdim\tud@dim@layoutwidth +\tud@newdim\tud@dim@layoutheight +\tud@newdim\tud@dim@layouthoffset +\tud@newdim\tud@dim@layoutvoffset \newcommand*\tud@cdgeometry@set{% \tud@cdgeometry@assignlayout% \tud@if@v@lower{2.05}{% - \ifdim\tud@len@layoutheight<\dimexpr105mm+1.5mm\relax% + \ifdim\tud@dim@layoutheight<\dimexpr105mm+1.5mm\relax% \def\@tempa{0}% - \else\ifdim\tud@len@layoutheight<\dimexpr148mm+1.5mm\relax% + \else\ifdim\tud@dim@layoutheight<\dimexpr148mm+1.5mm\relax% \def\@tempa{1}% - \else\ifdim\tud@len@layoutheight<\dimexpr229mm+2mm\relax% + \else\ifdim\tud@dim@layoutheight<\dimexpr229mm+2mm\relax% \def\@tempa{2}% - \else\ifdim\tud@len@layoutheight<\dimexpr297mm+2mm\relax% + \else\ifdim\tud@dim@layoutheight<\dimexpr297mm+2mm\relax% \def\@tempa{3}% - \else\ifdim\tud@len@layoutheight<\dimexpr420mm+2mm\relax% + \else\ifdim\tud@dim@layoutheight<\dimexpr420mm+2mm\relax% \def\@tempa{4}% - \else\ifdim\tud@len@layoutheight<\dimexpr594mm+2mm\relax% + \else\ifdim\tud@dim@layoutheight<\dimexpr594mm+2mm\relax% \def\@tempa{5}% - \else\ifdim\tud@len@layoutheight<\dimexpr841mm+3mm\relax% + \else\ifdim\tud@dim@layoutheight<\dimexpr841mm+3mm\relax% \def\@tempa{6}% - \else\ifdim\tud@len@layoutheight<\dimexpr1189mm+3mm\relax% + \else\ifdim\tud@dim@layoutheight<\dimexpr1189mm+3mm\relax% \def\@tempa{7}% \else% \def\@tempa{8}% \fi\fi\fi\fi\fi\fi\fi\fi% }{% - \ifdim\tud@len@layoutheight<\dimexpr125mm+1.5mm\relax% + \ifdim\tud@dim@layoutheight<\dimexpr125mm+1.5mm\relax% \def\@tempa{0}% - \else\ifdim\tud@len@layoutheight<\dimexpr176mm+2mm\relax% + \else\ifdim\tud@dim@layoutheight<\dimexpr176mm+2mm\relax% \def\@tempa{1}% - \else\ifdim\tud@len@layoutheight<\dimexpr250mm+2mm\relax% + \else\ifdim\tud@dim@layoutheight<\dimexpr250mm+2mm\relax% \def\@tempa{2}% - \else\ifdim\tud@len@layoutheight<\dimexpr353mm+2mm\relax% + \else\ifdim\tud@dim@layoutheight<\dimexpr353mm+2mm\relax% \def\@tempa{3}% - \else\ifdim\tud@len@layoutheight<\dimexpr500mm+2mm\relax% + \else\ifdim\tud@dim@layoutheight<\dimexpr500mm+2mm\relax% \def\@tempa{4}% - \else\ifdim\tud@len@layoutheight<\dimexpr707mm+3mm\relax% + \else\ifdim\tud@dim@layoutheight<\dimexpr707mm+3mm\relax% \def\@tempa{5}% - \else\ifdim\tud@len@layoutheight<\dimexpr1000mm+3mm\relax% + \else\ifdim\tud@dim@layoutheight<\dimexpr1000mm+3mm\relax% \def\@tempa{6}% - \else\ifdim\tud@len@layoutheight<\dimexpr1414mm+3mm\relax% + \else\ifdim\tud@dim@layoutheight<\dimexpr1414mm+3mm\relax% \def\@tempa{7}% \else% \def\@tempa{8}% @@ -390,20 +369,20 @@ calculate a proper type area% }% \fi% - \tud@divide\@tempa{\tud@len@layoutheight}{148mm}% - \setlength\tud@len@widemargin{15mm}% - \setlength\tud@len@widemargin{\@tempa\tud@len@widemargin}% - \setlength\tud@len@heavyline{0.5pt}% - \setlength\tud@len@heavyline{\@tempa\tud@len@heavyline}% - \setlength\tud@len@thinline{0.25pt}% - \setlength\tud@len@thinline{\@tempa\tud@len@thinline}% - \setlength\@tempdima{4.5pt}% - \setlength\@tempdima{\@tempa\@tempdima}% + \tud@divide\@tempa{\tud@dim@layoutheight}{148mm}% + \tud@setdim\tud@dim@widemargin{15mm}% + \tud@setdim\tud@dim@widemargin{\@tempa\tud@dim@widemargin}% + \tud@setdim\tud@dim@heavyline{0.5pt}% + \tud@setdim\tud@dim@heavyline{\@tempa\tud@dim@heavyline}% + \tud@setdim\tud@dim@thinline{0.25pt}% + \tud@setdim\tud@dim@thinline{\@tempa\tud@dim@thinline}% + \tud@setdim\@tempdima{4.5pt}% + \tud@setdim\@tempdima{\@tempa\@tempdima}% \edef\tud@head@fontsize{\strip@pt\@tempdima}% \or% <=A6/B6 - \setlength\tud@len@widemargin{15mm}% - \setlength\tud@len@heavyline{0.5pt}% - \setlength\tud@len@thinline{0.25pt}% + \tud@setdim\tud@dim@widemargin{15mm}% + \tud@setdim\tud@dim@heavyline{0.5pt}% + \tud@setdim\tud@dim@thinline{0.25pt}% \renewcommand*\tud@head@fontsize{4.5}% % \end{macrocode} % Für Formate der Klasse~5 gibt es zwei Varianten. Entweder, es wird sich an @@ -415,40 +394,40 @@ \or% <=A5/B5 \ifnum\tud@cdgeometry@calc@num=\z@\relax% restricted \@tud@cdgeometry@adjusttrue% - \setlength\tud@len@widemargin{30mm}% - \setlength\tud@len@heavyline{1pt}% - \setlength\tud@len@thinline{0.5pt}% + \tud@setdim\tud@dim@widemargin{30mm}% + \tud@setdim\tud@dim@heavyline{1pt}% + \tud@setdim\tud@dim@thinline{0.5pt}% \renewcommand*\tud@head@fontsize{9}% \else% - \setlength\tud@len@widemargin{21.213203mm}% - \setlength\tud@len@heavyline{0.707107pt}% - \setlength\tud@len@thinline{0.353553pt}% + \tud@setdim\tud@dim@widemargin{21.213203mm}% + \tud@setdim\tud@dim@heavyline{0.707107pt}% + \tud@setdim\tud@dim@thinline{0.353553pt}% \renewcommand*\tud@head@fontsize{6.363961}% \fi% \or% <=A4/B4 - \setlength\tud@len@widemargin{30mm}% - \setlength\tud@len@heavyline{1pt}% - \setlength\tud@len@thinline{0.5pt}% + \tud@setdim\tud@dim@widemargin{30mm}% + \tud@setdim\tud@dim@heavyline{1pt}% + \tud@setdim\tud@dim@thinline{0.5pt}% \renewcommand*\tud@head@fontsize{9}% \or% <=A3/B3 - \setlength\tud@len@widemargin{42.426407mm}% - \setlength\tud@len@heavyline{1.414214pt}% - \setlength\tud@len@thinline{0.707107pt}% + \tud@setdim\tud@dim@widemargin{42.426407mm}% + \tud@setdim\tud@dim@heavyline{1.414214pt}% + \tud@setdim\tud@dim@thinline{0.707107pt}% \renewcommand*\tud@head@fontsize{12.727922}% \or% <=A2/B2 - \setlength\tud@len@widemargin{60mm}% - \setlength\tud@len@heavyline{2pt}% - \setlength\tud@len@thinline{1pt}% + \tud@setdim\tud@dim@widemargin{60mm}% + \tud@setdim\tud@dim@heavyline{2pt}% + \tud@setdim\tud@dim@thinline{1pt}% \renewcommand*\tud@head@fontsize{18}% \or% <=A1/B1 - \setlength\tud@len@widemargin{84.852814mm}% - \setlength\tud@len@heavyline{2.828427pt}% - \setlength\tud@len@thinline{1.414214pt}% + \tud@setdim\tud@dim@widemargin{84.852814mm}% + \tud@setdim\tud@dim@heavyline{2.828427pt}% + \tud@setdim\tud@dim@thinline{1.414214pt}% \renewcommand*\tud@head@fontsize{25.455844}% \or% <=A0/B0 - \setlength\tud@len@widemargin{120mm}% - \setlength\tud@len@heavyline{4pt}% - \setlength\tud@len@thinline{2pt}% + \tud@setdim\tud@dim@widemargin{120mm}% + \tud@setdim\tud@dim@heavyline{4pt}% + \tud@setdim\tud@dim@thinline{2pt}% \renewcommand*\tud@head@fontsize{36}% \else% >A0/B0 % \end{macrocode} @@ -464,15 +443,15 @@ calculate a proper type area% }% \fi% - \tud@divide\@tempa{\tud@len@layoutheight}{1189mm}% - \setlength\tud@len@widemargin{120mm}% - \setlength\tud@len@widemargin{\@tempa\tud@len@widemargin}% - \setlength\tud@len@heavyline{4pt}% - \setlength\tud@len@heavyline{\@tempa\tud@len@heavyline}% - \setlength\tud@len@thinline{2pt}% - \setlength\tud@len@thinline{\@tempa\tud@len@thinline}% - \setlength\@tempdima{36pt}% - \setlength\@tempdima{\@tempa\@tempdima}% + \tud@divide\@tempa{\tud@dim@layoutheight}{1189mm}% + \tud@setdim\tud@dim@widemargin{120mm}% + \tud@setdim\tud@dim@widemargin{\@tempa\tud@dim@widemargin}% + \tud@setdim\tud@dim@heavyline{4pt}% + \tud@setdim\tud@dim@heavyline{\@tempa\tud@dim@heavyline}% + \tud@setdim\tud@dim@thinline{2pt}% + \tud@setdim\tud@dim@thinline{\@tempa\tud@dim@thinline}% + \tud@setdim\@tempdima{36pt}% + \tud@setdim\@tempdima{\@tempa\@tempdima}% \edef\tud@head@fontsize{\strip@pt\@tempdima}% \fi% % \end{macrocode} @@ -480,12 +459,12 @@ % Format DIN~A4. % \begin{macrocode} \ifnum\tud@cdgeometry@calc@num=\tw@\relax% - \tud@divide\@tempa{\tud@len@layoutheight}{297mm}% - \setlength\tud@len@widemargin{\@tempa\tud@len@widemargin}% - \setlength\tud@len@heavyline{\@tempa\tud@len@heavyline}% - \setlength\tud@len@thinline{\@tempa\tud@len@thinline}% - \setlength\@tempdima{\tud@head@fontsize pt}% - \setlength\@tempdima{\@tempa\@tempdima}% + \tud@divide\@tempa{\tud@dim@layoutheight}{297mm}% + \tud@setdim\tud@dim@widemargin{\@tempa\tud@dim@widemargin}% + \tud@setdim\tud@dim@heavyline{\@tempa\tud@dim@heavyline}% + \tud@setdim\tud@dim@thinline{\@tempa\tud@dim@thinline}% + \tud@setdim\@tempdima{\tud@head@fontsize pt}% + \tud@setdim\@tempdima{\@tempa\@tempdima}% \edef\tud@head@fontsize{\strip@pt\@tempdima}% \fi% % \end{macrocode} @@ -494,24 +473,22 @@ % forciert. % \begin{macrocode} \global\@tud@head@font@settrue% - \setlength\tud@len@slimmargin{\dimexpr2\tud@len@widemargin/3\relax}% - \setlength\tud@len@both{\dimexpr5\tud@len@widemargin/3\relax}% - \setlength\tud@len@topmargin{\dimexpr7\tud@len@widemargin/6\relax}% - \setlength\tud@len@barheight{\dimexpr\tud@len@widemargin/6\relax}% - \setlength\tud@len@headsep{\dimexpr2\tud@len@widemargin/5\relax}% - \setlength\tud@len@logox{\dimexpr1.1\tud@len@widemargin/3\relax}% - \setlength\tud@len@logoy{\dimexpr0.45\tud@len@widemargin\relax}% - \setlength\tud@len@logowidth{\dimexpr1.9\tud@len@widemargin\relax}% - \setlength\tud@len@footsep{% - \dimexpr\tud@len@widemargin-.6\tud@len@topmargin\relax% - }% + \tud@setdim\tud@dim@slimmargin{\tud@dim@widemargin*2/3}% + \tud@setdim\tud@dim@bothmargin{\tud@dim@widemargin*5/3}% + \tud@setdim\tud@dim@topmargin{\tud@dim@widemargin*7/6}% + \tud@setdim\tud@dim@barheight{\tud@dim@widemargin/6}% + \tud@setdim\tud@dim@headsep{\tud@dim@widemargin*2/5}% + \tud@setdim\tud@dim@logox{\tud@dim@widemargin*11/30}% + \tud@setdim\tud@dim@logoy{\tud@dim@widemargin*9/20}% + \tud@setdim\tud@dim@logowidth{\tud@dim@widemargin*19/10}% + \tud@setdim\tud@dim@footsep{\tud@dim@widemargin-\tud@dim@topmargin*3/5}% % \end{macrocode} % Wird die Gestaltungshöhe DIN~A5 im Raster verwendet, werden die Abstände % zwischen Kopf- unf Fußzeile angepasst. % \begin{macrocode} \if@tud@cdgeometry@adjust% - \setlength\tud@len@headsep{\dimexpr.707107\tud@len@headsep\relax}% - \setlength\tud@len@footsep{\dimexpr.707107\tud@len@footsep\relax}% + \tud@setdim\tud@dim@headsep{.707107\tud@dim@headsep}% + \tud@setdim\tud@dim@footsep{.707107\tud@dim@footsep}% \fi% \tud@cdgeometry@papersize@store% } @@ -520,11 +497,11 @@ % dem Paket \pkg{geometry} angegeben wurde, entsprechend gesetzt. % \begin{macrocode} \newcommand*\tud@cdgeometry@assignlayout{% - \ifdim\tud@len@layoutwidth<\p@\relax% - \setlength\tud@len@layoutwidth{\paperwidth}% + \ifdim\tud@dim@layoutwidth<\p@\relax% + \tud@setdim\tud@dim@layoutwidth{\paperwidth}% \fi% - \ifdim\tud@len@layoutheight<\p@\relax% - \setlength\tud@len@layoutheight{\paperheight}% + \ifdim\tud@dim@layoutheight<\p@\relax% + \tud@setdim\tud@dim@layoutheight{\paperheight}% \fi% } % \end{macrocode} @@ -549,18 +526,18 @@ }% \ifx\tud@res@a\tud@cdgeometry@papersize@last\else% \appto\tud@res@b{% - \setlength\tud@len@layoutwidth{\z@}% - \setlength\tud@len@layoutheight{\z@}% + \tud@setdim\tud@dim@layoutwidth{\z@}% + \tud@setdim\tud@dim@layoutheight{\z@}% \tud@x@geometry@fixmargins% }% \fi% \tud@res@b% } % \end{macrocode} -% \end{length}^^A \tud@len@layoutvoffset -% \end{length}^^A \tud@len@layouthoffset -% \end{length}^^A \tud@len@layoutheight -% \end{length}^^A \tud@len@layoutwidth +% \end{length}^^A \tud@dim@layoutvoffset +% \end{length}^^A \tud@dim@layouthoffset +% \end{length}^^A \tud@dim@layoutheight +% \end{length}^^A \tud@dim@layoutwidth % \end{macro}^^A \tud@cdgeometry@papersize@last % \end{macro}^^A \tud@cdgeometry@papersize@store % \end{macro}^^A \tud@cdgeometry@resetlayout @@ -581,7 +558,7 @@ % Option \opt{cdgeometry} temporär deaktiviert. Dies geschieht, um lediglich % die im Hintergrund verwendeten Makros neu zu setzen. % \begin{macrocode} -\newif\if@tud@cdgeometry@reset +\tud@newif\if@tud@cdgeometry@reset \newcommand*\tud@cdgeometry@reset[1]{% \@tud@cdgeometry@resettrue% \TUDoptions{cdgeometry=#1}% @@ -661,7 +638,7 @@ % definierte Satzspiegel geladen werden. Falls jedoch eine Neuberechnung % erfolgte, wird auf das Laden verzichtet (\cs{if@tud@cdgeometry@reset}). % \begin{macrocode} - \if@atdocument% + \tud@if@preamble{}{% \if@tud@cdgeometry@reset\else% false \ifcase\tud@cdgeometry@num\relax% \tud@loadgeometry{current@typearea}% @@ -672,7 +649,7 @@ \fi% \TUD@SpecialOptionAtDocument{tud@cdgeometry@process}% \fi% - \fi% + }% \fi% } % \end{macrocode} @@ -681,49 +658,50 @@ % \end{macro}^^A \tud@cdgeometry@num % \end{option}^^A cdgeometry % \begin{option}{extrabottommargin} -% \begin{macro}{\tud@dim@extrabottommargin} +% \begin{macro}{\tud@extrabottommargin@dim} % Diese Option dient dazu, die Höhe des Fußes anzupassen. Dies ist jedoch nur % möglich, wenn der Satzspiegel des \CDs verwendet wird. Kommt \pkg{typearea} % zum Einsatz, ist die Option wirkungslos. Da für die Länge ggf. auch Werte % angegeben werden können, die abhängig von der Schriftgröße sind, wird die % Ausführung dieser Option verzögert. % \begin{macrocode} -\newcommand*\tud@dim@extrabottommargin{\z@} +\newcommand*\tud@extrabottommargin@dim{0pt} \TUD@key{extrabottommargin}{% - \TUD@set@dimenkey{extrabottommargin}{\tud@dim@extrabottommargin}{#1}% + \TUD@set@dimkey{extrabottommargin}{\tud@extrabottommargin@dim}{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed% \TUD@SpecialOptionAtDocument{tud@cdgeometry@process}% \fi% } % \end{macrocode} -% \end{macro}^^A \tud@dim@extrabottommargin +% \end{macro}^^A \tud@extrabottommargin@dim % \begin{option}{bleedmargin} % \changes{v2.05}{2016/06/14}{neu}^^A -% \begin{macro}{\tud@dim@bleedmargin} +% \begin{macro}{\tud@bleedmargin@dim} % \changes{v2.05}{2016/04/03}{neu}^^A % Wird entweder das Paket \pkg{crop} oder aber die Option \opt{layout} des % Paketes \pkg{geometry} für Schnittmarken verwendet, werden alle farbigen % Elemente des Layouts dahingehend vergrößert, dass beim Zuschneiden des % Papierbogens \emph{in die Farbe} geschnitten wird. Verantwortlich hierfür ist -% das Makro \cs{tud@dim@bleedmargin}, welches natürlich auch vom Anwender mit +% das Makro \cs{tud@bleedmargin@dim}, welches natürlich auch vom Anwender mit % der Option \opt{bleedmargin} beliebig gesetzt werden kann. Als Standardwert % werden 5\% der größten Randbreite gesetzt. +% \ToDo{^^A% +% Was genau ist der Unterschied zwischen cropmargin und bleedmargin? +% Wo kommt der Standardwert her? Sinnvoll für Standardklassen? +% }[v2.07]^^A % \begin{macrocode} -\newcommand*\tud@dim@bleedmargin{.2in} +\newcommand*\tud@bleedmargin@dim{.2in} \TUD@key{bleedmargin}{% - \TUD@set@dimenkey{bleedmargin}{\tud@dim@bleedmargin}{#1}% + \TUD@set@dimkey{bleedmargin}{\tud@bleedmargin@dim}{#1}% % \end{macrocode} % Negative Werte sind nicht möglich, diese werden automatisch korrigiert. % \begin{macrocode} \ifx\FamilyKeyState\FamilyKeyStateProcessed% - \ifdim\dimexpr\tud@dim@bleedmargin\relax<\z@\relax% - \def\@tempa-##1\@nil{\def\tud@dim@bleedmargin{##1}}% - \@tempa#1\@nil% - \fi% + \tud@length@setabsolute\tud@bleedmargin@dim% \fi% } % \end{macrocode} -% \end{macro}^^A \tud@dim@bleedmargin +% \end{macro}^^A \tud@bleedmargin@dim % \end{option}^^A bleedmargin % \end{option}^^A extrabottommargin % \begin{option}{twoside} @@ -733,12 +711,12 @@ % \begin{macrocode} \DefineFamilyMember{KOMA} \DefineFamilyKey{KOMA}{twoside}{% + \FamilyKeyStateUnknownValue% \TUD@SpecialOptionAtDocument{tud@cdgeometry@process}% - \FamilyKeyStateProcessed% } \DefineFamilyKey{KOMA}{twocolumn}{% + \FamilyKeyStateUnknownValue% \TUD@SpecialOptionAtDocument{tud@cdgeometry@process}% - \FamilyKeyStateProcessed% } % \end{macrocode} % \end{option}^^A twocolumn @@ -751,9 +729,9 @@ % % \subsection{Realisierung der Satzspiegeleinstellungen} % Das Paket \pkg{geometry} erlaubt eine genaue Vorgabe des Satzspiegels und -% der Seitenränder, wie es vom \CD der \TnUD verlangt wird. -% \ToDo{Satzspiegel ohne \pkg{geometry}; besser über \cs{storeareas}?!}[v2.07]% -% \ToDo{Benutzerschnittstelle äquivalent zu \pkg{geometry}}[v2.07]% +% der Seitenränder, wie es vom \TUDCD verlangt wird. +% \ToDo{Satzspiegel ohne \pkg{geometry}; besser über \cs{storeareas}?!}[v2.07] +% \ToDo{Benutzerschnittstelle äquivalent zu \pkg{geometry}}[v2.07] % \begin{macro}{\tud@cdgeometry@process} % \changes{v2.05}{2015/11/29}{neu}^^A % Mit \cs{tud@cdgeometry@process} bzw. \cs{tud@cdgeometry@@process} erfolgt die @@ -786,11 +764,11 @@ % sämtliche Einstellungen für den Satzspiegel unterdrückt. % \begin{macrocode} \if@tud@x@standalone@crop - \PreventPackageFromLoading{geometry}% - \let\tud@cdgeometry@process\relax% + \PreventPackageFromLoading{geometry} + \let\tud@cdgeometry@process\relax \else - \RequirePackage{geometry}[2010/09/12]% -\fi% + \RequirePackage{geometry} +\fi \AfterPackage*{geometry}{% \CheckCommand*\Gm@initnewgm{% \Gm@passfalse @@ -947,7 +925,7 @@ % und \cs{newgeometry} angepasst, weshalb diese vorher gesichert werden. % \ToDo{erweiterte Möglichkeiten von \cs{newgeometry} dokumentieren}[v2.07] % \begin{macrocode} - \newif\if@tud@x@geometry@enabled% + \tud@newif\if@tud@x@geometry@enabled% \@tud@x@geometry@enabledtrue% \tud@cs@store{geometry}% \tud@cs@store{newgeometry}% @@ -967,7 +945,7 @@ % \begin{macrocode} \renewcommand*\restoregeometry[1][custom]{% \tud@cdgeometry@reset{#1}% - \if@atdocument% + \tud@if@preamble{}{% \ifcase\tud@cdgeometry@num\relax% false \tud@loadgeometry{init@typearea}% \@tud@x@geometry@fixmarginstrue% @@ -976,7 +954,7 @@ \@tud@x@geometry@fixmarginstrue% \fi% \tud@cdgeometry@process% - \fi% + }% }% % \end{macrocode} % Sollte im Dokument durch den Anwender der Satzspiegel manuell geändert @@ -984,9 +962,9 @@ % angepasst werden. Hierfür wird am Ende von \cs{Gm@changelayout} ein Patch % eingehängt. % \begin{macrocode} - \apptocmd{\Gm@changelayout}{% + \apptocmd\Gm@changelayout{% \if@tud@x@geometry@enabled% - \if@atdocument% + \tud@if@preamble{}{% \@tud@x@geometry@fixmarginstrue% \ifcase\tud@cdgeometry@num\relax% false \tud@cdgeometry@reset{typearea}% @@ -994,7 +972,7 @@ \tud@cdgeometry@reset{custom}% \fi% \tud@cdgeometry@process% - \fi% + }% \fi% }{}{\tud@patch@wrn{Gm@changelayout}}% % \end{macrocode} @@ -1005,12 +983,12 @@ % mehrmals wiederverwendet werden, müssen diese u.U. korrigert bzw. auf ihren % ursprünglichen Wert zurückgesetzt werden. % \begin{macrocode} - \newif\if@tud@x@geometry@fixmargins% + \tud@newif\if@tud@x@geometry@fixmargins% \newcommand*\tud@x@geometry@fixmargins{% \ifGm@pass\else% - \addtolength\oddsidemargin{-\tud@len@layouthoffset}% - \addtolength\evensidemargin{-\tud@len@layouthoffset}% - \addtolength\topmargin{-\tud@len@layoutvoffset}% + \tud@addtodim\oddsidemargin{-\tud@dim@layouthoffset}% + \tud@addtodim\evensidemargin{-\tud@dim@layouthoffset}% + \tud@addtodim\topmargin{-\tud@dim@layoutvoffset}% \@tud@x@geometry@fixmarginsfalse% \fi% }% @@ -1072,16 +1050,19 @@ \tud@cdgeometry@assignlayout% \edef\tud@res@a{% \endgroup% - \noexpand\setlength\noexpand\tud@len@layoutwidth{\the\paperwidth}% - \noexpand\setlength\noexpand\tud@len@layoutheight{\the\paperheight}% + \unexpanded{\tud@setdim\tud@dim@layoutwidth}{\the\paperwidth}% + \unexpanded{\tud@setdim\tud@dim@layoutheight}{\the\paperheight}% }% \tud@res@a% \fi% - \ifstr{#2}{newgeometry}{% - \eappto\Gm@restore@org{% + \tud@if@strequal{#2}{newgeometry}{% + \edef\@tempb{% \noexpand\paperwidth=\the\paperwidth\relax% \noexpand\paperheight=\the\paperheight\relax% }% + \expandafter\apptocmd\expandafter\Gm@restore@org\expandafter{% + \@tempb% + }{}{\tud@patch@wrn{Gm@restore@org}}% % \end{macrocode} % Wird der Befehl verwendet, wenn eigentlich \pkg{typearea} aktiv ist, so % werden lediglich die Einstellungen zu \prm{paper} und \prm{layout} beachtet. @@ -1115,7 +1096,7 @@ % Das folgende Konstrukt ist aus der Idee entstanden, die Parameter \val{paper} % sowie \val{layout} des Paketes \pkg{geometry} auf die passenden Optionen von % \KOMAScript{} abbilden zu können und insbesondere Schnittmarken für alle -% Seitenstile bereitzustellen.% +% Seitenstile bereitzustellen. % \ToDo{% % Leider ist aus der dem Versuch, eine halbwegs einheitliche Schnittstelle % zwischen den Paketen \pkg{typearea} und \pkg{geometry} zu schaffen, ein @@ -1144,11 +1125,11 @@ \tud@x@geometry@area@def{paper}{\paperwidth:#1}% }% \TUD@parameter@def{layout}{% - \ifstr{#1}{false}{% - \setlength\tud@len@layoutwidth{\z@}% - \setlength\tud@len@layoutheight{\z@}% - \setlength\tud@len@layouthoffset{\z@}% - \setlength\tud@len@layoutvoffset{\z@}% + \tud@if@strequal{#1}{false}{% + \tud@setdim\tud@dim@layoutwidth{\z@}% + \tud@setdim\tud@dim@layoutheight{\z@}% + \tud@setdim\tud@dim@layouthoffset{\z@}% + \tud@setdim\tud@dim@layoutvoffset{\z@}% }{% \tud@x@geometry@area@def{layout}{#1}% }% @@ -1165,25 +1146,25 @@ \@tempa#1,,\@nil% }% \TUD@parameter@def{layoutwidth}{% - \tud@x@geometry@area@def{layout}{#1:\tud@len@layoutheight}% + \tud@x@geometry@area@def{layout}{#1:\tud@dim@layoutheight}% }% \TUD@parameter@def{layoutheight}{% - \tud@x@geometry@area@def{layout}{\tud@len@layoutwidth:#1}% + \tud@x@geometry@area@def{layout}{\tud@dim@layoutwidth:#1}% }% \TUD@parameter@def{layoutoffset}{% \def\@tempa##1,##2,##3\@nil{% \IfArgIsEmpty{##2}{% - \setlength\tud@len@layouthoffset{##1}% - \setlength\tud@len@layoutvoffset{##1}% + \tud@setdim\tud@dim@layouthoffset{##1}% + \tud@setdim\tud@dim@layoutvoffset{##1}% }{% - \setlength\tud@len@layouthoffset{##1}% - \setlength\tud@len@layoutvoffset{##2}% + \tud@setdim\tud@dim@layouthoffset{##1}% + \tud@setdim\tud@dim@layoutvoffset{##2}% }% }% \@tempa#1,,\@nil% }% - \TUD@parameter@def{layouthoffset}{\setlength\tud@len@layouthoffset{#1}}% - \TUD@parameter@def{layoutvoffset}{\setlength\tud@len@layoutvoffset{#1}}% + \TUD@parameter@def{layouthoffset}{\tud@setdim\tud@dim@layouthoffset{#1}}% + \TUD@parameter@def{layoutvoffset}{\tud@setdim\tud@dim@layoutvoffset{#1}}% \TUD@parameter@def{bleedmargin}{\TUDoption{bleedmargin}{#1}}% \TUD@parameter@handler@macro{% \eappto\tud@x@geometry@parameter{% @@ -1198,24 +1179,28 @@ % Werte für \val{paper} und \val{layout} werden abgefangen und für die beiden % Befehle \cs{geometry} und \cs{newgeometry} aufgearbeitet. Alle anderen werden % einfach an \pkg{geometry} durchgereicht. Dies geschieht über die jeweiligen -% Hilfsmakros \cs{tud@x@geometry@\dots} für \val{paper}, \val{layout} sowie +% Hilfsmakros |\tud@x@geometry@...| für \val{paper}, \val{layout} sowie % \val{parameter} für alles Übrige. % \begin{macrocode} \newcommand*\tud@x@geometry@area@def[2]{% - \tud@lowerstring{\@tempa}{#2}% + \tud@strlowercase\@tempa{#2}% \def\@tempb##1paper##2\@nil{% - \ifstr{##2}{paper}{\def\@tempa{##1}}{}% + \tud@if@strequal{##2}{paper}{\def\@tempa{##1}}{}% }% \expandafter\@tempb\@tempa paper\@nil% \@tempswafalse% - \ifstr{\@tempa}{seascape}{\@tempswatrue}{}% - \ifstr{\@tempa}{landscape}{\@tempswatrue}{}% - \ifstr{\@tempa}{portrait}{\@tempswatrue}{}% - \ifstr{\@tempa}{letter}{\@tempswatrue}{}% - \ifstr{\@tempa}{executive}{\@tempswatrue}{}% - \ifstr{\@tempa}{legal}{\@tempswatrue}{}% + \TUD@set@numkey{paper}{@tempc}{% + {seascape}{0},{landscape}{0},{portrait}{0},% + {letter}{0},{executive}{0},{legal}{0}% + }{\@tempa}% + \@tempswafalse% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \ifcase\@tempc\relax% + \@tempswatrue% + \fi% + \fi% \if@tempswa\else% - \ifx\@tempa\@empty\relax\else% + \ifx\@tempa\@empty\else% \def\@tempb##1##2\@nil{% \if ##1a\@tempswatrue% \else\if ##1b\@tempswatrue% @@ -1224,7 +1209,7 @@ \fi\fi\fi\fi% \if@tempswa% \@tempswafalse% - \IfArgIsEmpty{##2}{}{\ifnumber{##2}{\@tempswatrue}{}}% + \IfArgIsEmpty{##2}{}{\Ifnumber{##2}{\@tempswatrue}{}}% \fi% }% \expandafter\@tempb\@tempa\@nil% @@ -1240,7 +1225,7 @@ \if@tempswa\else% \def\tud@reserved##1:##2:##3:##4\@nil{% \if@tempswa\else% - \ifstr{\@tempa}{##1}{% + \tud@if@strequal{\@tempa}{##1}{% \@tempswatrue% \def\@tempa{##2##4:##3##4}% }{}% @@ -1287,7 +1272,7 @@ % \emph{Dies geschieht hier direkt und nicht in einer Gruppe,} weil der Aufruf % von \cs{tud@x@geometry@area@set}|{layout}| lokal erfolgt. % \begin{macrocode} - \ifstr{#1}{layout}{\let\scr@setpaperorientation\relax}{}% + \tud@if@strequal{#1}{layout}{\let\scr@setpaperorientation\relax}{}% \KOMAoption{paper}{##1:##2}% }% }% @@ -1334,16 +1319,16 @@ % \begin{macrocode} \tud@cdgeometry@assignlayout% \@tud@res@swafalse% - \ifdim\tud@len@layoutwidth=\paperwidth\relax\else\@tud@res@swatrue\fi% - \ifdim\tud@len@layoutheight=\paperheight\relax\else\@tud@res@swatrue\fi% + \ifdim\tud@dim@layoutwidth=\paperwidth\relax\else\@tud@res@swatrue\fi% + \ifdim\tud@dim@layoutheight=\paperheight\relax\else\@tud@res@swatrue\fi% \edef\tud@res@a{% \endgroup% - \etex@unexpanded{\def#1}{% + \unexpanded{\def#1}{% layoutoffset={% - \the\tud@len@layouthoffset,\the\tud@len@layoutvoffset% + \the\tud@dim@layouthoffset,\the\tud@dim@layoutvoffset% }% \if@tud@res@swa% - ,layoutsize={\the\tud@len@layoutwidth,\the\tud@len@layoutheight}% + ,layoutsize={\the\tud@dim@layoutwidth,\the\tud@dim@layoutheight}% \fi% }% }% @@ -1367,33 +1352,34 @@ % \begin{macrocode} \newcommand*\tud@x@geometry@set[1]{% \@tud@x@geometry@enabledfalse% + \tud@if@preamble{% +% \end{macrocode} +% In der Präambel werden mit \cs{Gm@initnewgm} vor jedem Satzspiegel die zuvor +% gemachten Einstellungen zurückgesetzt. +% \begin{macrocode} + \Gm@initnewgm% + \edef\@tempa{papersize={\the\paperwidth,\the\paperheight},#1}% + \def\@tempc{\tud@cs@use{geometry}}% + \expandafter\@tempc\expandafter{\@tempa,driver=none}% + }{% % \end{macrocode} % Um etwaige Änderungen am Papierformat innerhalb des Dokumentes beachten zu % können, werden die aktuellen Maße für das Papierformat an \cs{Gm@restore@org} % angehangen. % \begin{macrocode} - \if@atdocument% \edef\@tempa{#1}% \tud@cs@store{Gm@restore@org}% - \eappto\Gm@restore@org{% + \edef\@tempb{% \noexpand\paperwidth=\the\paperwidth\relax% \noexpand\paperheight=\the\paperheight\relax% }% + \expandafter\apptocmd\expandafter\Gm@restore@org\expandafter{% + \@tempb% + }{}{\tud@patch@wrn{Gm@restore@org}}% \def\@tempc{\tud@cs@use{newgeometry}}% \expandafter\@tempc\expandafter{\@tempa}% \tud@cs@restore{Gm@restore@org}% - \else% -% \end{macrocode} -% Zu Beginn des Dokumentes werden mit \cs{Gm@initnewgm} vor jedem Satzspiegel -% die zuvor gemachten Einstellungen zurückgesetzt. -% \begin{macrocode} - \Gm@initnewgm% - \edef\@tempa{% - paperwidth=\the\paperwidth,paperheight=\the\paperheight,#1% - }% - \def\@tempc{\tud@cs@use{geometry}}% - \expandafter\@tempc\expandafter{\@tempa,driver=none}% - \fi% + }% \@tud@x@geometry@enabledtrue% }% % \end{macrocode} @@ -1505,7 +1491,7 @@ % \begin{macrocode} \ifcase\tud@cdgeometry@num\relax% \edef\tud@cdgeometry@hmargin{% - left=\the\dimexpr\oddsidemargin+1in-\ta@bcor\relax,% + left=\the\dimexpr\glueexpr\oddsidemargin+1in-\ta@bcor\relax\relax,% textwidth=\the\textwidth,% \tud@cdgeometry@mpincl,% marginparwidth=\the\marginparwidth,% @@ -1523,8 +1509,7 @@ top=\the\dimexpr\topmargin+1in\relax,% \else% includehead=false,% - top=\the\dimexpr\topmargin% - +\headheight+\headsep+1in\relax,% + top=\the\dimexpr\topmargin+\headheight+\headsep+1in\relax,% \fi% headheight=\the\headheight,% headsep=\the\headsep,% @@ -1534,11 +1519,13 @@ }% % \end{macrocode} % Und nun für den benutzerdefinierten Satzspiegel. +% \ToDo{Angabe von BCOR zerschießt den gewünschten Satzspiegel}[v2.07] % \begin{macrocode} \else% custom \ifGm@pass\else% \edef\tud@cdgeometry@hmargin{% - left=\the\dimexpr\oddsidemargin+1in-\Gm@bindingoffset\relax,% + left=\the\dimexpr\glueexpr\oddsidemargin+1in% + -\Gm@bindingoffset\relax\relax,% textwidth=\the\textwidth,% \ifGm@includemp% includemp=true,% @@ -1560,8 +1547,7 @@ top=\the\dimexpr\topmargin+1in\relax,% \else% includehead=false,% - top=\the\dimexpr\topmargin% - +\headheight+\headsep+1in\relax,% + top=\the\dimexpr\topmargin+\headheight+\headsep+1in\relax,% \fi% headheight=\the\headheight,% headsep=\the\headsep,% @@ -1576,6 +1562,15 @@ \fi% \fi% % \end{macrocode} +% Die Einstellungen für zweiseitigen respektive zweispaltigen Satz. +% \begin{macrocode} + \if@twoside% + \appto\tud@cdgeometry@hmargin{,twoside}% + \fi% + \if@twocolumn% + \appto\tud@cdgeometry@hmargin{,twocolumn}% + \fi% +% \end{macrocode} % Es wird die Höhendifferenz zwischen TUD-Kopf und Standardkopfzeile für den % benutzerdefnierten bzw. \pkg{typearea}-Satzspiegel berechnet. Für den % Satzspiegel mit TUD-Kopf muss unterschieden werden, ob der Abstand zwischen @@ -1584,23 +1579,23 @@ % benutzerdefinierten bzw. \pkg{typearea}-Satzspiegel noch unterhalb des % TUD-Kopfes liegen, wird der Abstand zum Kopf vergrößert. % \begin{macrocode} - \setlength\tud@len@areadiff{% - \dimexpr\tud@len@topmargin+\tud@len@barheight+\tud@len@headsep% - -\topmargin-\headheight-\headsep-1in\relax% + \tud@setdim\tud@dim@areadiff{% + \tud@dim@topmargin+\tud@dim@barheight+\tud@dim@headsep% + -\topmargin-\headheight-\headsep-1in% }% - \ifdim\tud@len@areadiff<\z@\relax% - \addtolength\tud@len@headsep{-\tud@len@areadiff}% - \setlength\@tempdima{\z@}% + \ifdim\tud@dim@areadiff<\z@\relax% + \tud@addtodim\tud@dim@headsep{-\tud@dim@areadiff}% + \tud@setdim\@tempdima{\z@}% \else% - \setlength\@tempdima{\tud@len@areadiff}% + \tud@setdim\@tempdima{\tud@dim@areadiff}% \fi% \edef\tud@cdgeometry@tudmargin{% ignorehead=true,% - top=\the\dimexpr\tud@len@topmargin+\tud@len@barheight% - +\tud@len@headsep\relax,% - headheight=\the\dimexpr\tud@len@topmargin+\tud@len@barheight% - -\tud@len@logoy\relax,% - headsep=\the\tud@len@headsep,% + 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\textheight-\@tempdima\relax% }% % \end{macrocode} @@ -1608,14 +1603,14 @@ % separaten Satzspiegel. % \begin{macrocode} \tud@if@v@lower{2.03}{% - \setlength\tud@len@ddcdiff{% - \dimexpr.6\tud@len@topmargin-\footskip+\tud@len@headsep% - +\footheight-1.25\baselineskip\relax% + \tud@setdim\tud@dim@ddcdiff{% + \tud@dim@topmargin*3/5-\footskip+\tud@dim@headsep% + +\footheight-1\baselineskip*5/4% }% \edef\tud@cdgeometry@ddcmargin{% - textheight=\the\dimexpr\textheight-\tud@len@areadiff% - -\tud@len@ddcdiff\relax,% - footskip=\the\dimexpr\footskip+\tud@len@ddcdiff\relax% + textheight=\the\dimexpr\textheight-\tud@dim@areadiff% + -\tud@dim@ddcdiff\relax,% + footskip=\the\dimexpr\footskip+\tud@dim@ddcdiff\relax% }% }{}% % \end{macrocode} @@ -1623,7 +1618,7 @@ % Warnung ausgegeben, dass diese für den \pkg{typearea}-Satzspiegel wirkungslos % ist. % \begin{macrocode} - \ifdim\dimexpr\tud@dim@extrabottommargin\relax=\z@\relax\else% + \ifdim\dimexpr\tud@extrabottommargin@dim\relax=\z@\relax\else% \begingroup% \edef\tud@res@a{% The key `extrabottommargin' is ineffective\MessageBreak% @@ -1650,21 +1645,21 @@ % Seitenrand (\cs{@tempdima}), die Textbreite (\cs{@tempdimb}) sowie die Breite % der Randnotizen (\cs{@tempdimc}). Danach kommt der Gleichanteil. % \begin{macrocode} - \else% true/symmetric/twoside - \ifcase\tud@cdgeometry@num\relax\or\or% true - \setlength\@tempdima{\tud@len@widemargin}% + \else% true/symmetric/twoside + \ifcase\tud@cdgeometry@num\relax\or\or% true + \tud@setdim\@tempdima{\tud@dim@widemargin}% \if@reversemargin% - \setlength\@tempdimc{\tud@len@widemargin}% + \tud@setdim\@tempdimc{\tud@dim@widemargin}% \else% - \setlength\@tempdimc{\tud@len@slimmargin}% + \tud@setdim\@tempdimc{\tud@dim@slimmargin}% \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% symmetric - \setlength\@tempdima{.5\tud@len@both}% - \setlength\@tempdimc{.5\tud@len@both}% + \tud@setdim\@tempdima{\tud@dim@bothmargin/2}% + \tud@setdim\@tempdimc{\tud@dim@bothmargin/2}% % \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 @@ -1673,16 +1668,16 @@ % \begin{macrocode} \or% twoside \if@twoside% - \setlength\@tempdima{.4\tud@len@both}% + \tud@setdim\@tempdima{\tud@dim@bothmargin*2/5}% \else% - \setlength\@tempdima{.5\tud@len@both}% + \tud@setdim\@tempdima{\tud@dim@bothmargin/2}% \fi% - \setlength\@tempdimc{.5\tud@len@both}% + \tud@setdim\@tempdimc{\tud@dim@bothmargin/2}% \if@twoside% \if@reversemargin% - \setlength\@tempdimc{.4\tud@len@both}% + \tud@setdim\@tempdimc{\tud@dim@bothmargin*2/5}% \else% - \setlength\@tempdimc{.6\tud@len@both}% + \tud@setdim\@tempdimc{\tud@dim@bothmargin*3/5}% \fi% \fi% \fi% @@ -1690,19 +1685,17 @@ % Die \emph{Berechnung} der Textbreite ist für alle Varainten identisch. Danach % erfolgt die Zuweisung zum Makro. % \begin{macrocode} - \addtolength\@tempdimc{-\headsep}% - \setlength\@tempdimb{% - \dimexpr\tud@len@layoutwidth-\tud@len@both-\ta@bcor\relax% - }% + \tud@addtodim\@tempdimc{-\headsep}% + \tud@setdim\@tempdimb{\tud@dim@layoutwidth-\tud@dim@bothmargin-\ta@bcor}% \if@mincl% - \addtolength\@tempdimb{-\@tempdimc}% + \tud@addtodim\@tempdimb{-\@tempdimc}% \fi% \edef\tud@cdgeometry@hmargin{% left=\the\@tempdima,% textwidth=\the\@tempdimb,% \tud@cdgeometry@mpincl,% marginparwidth=\the\@tempdimc,% - marginparsep=\the\dimexpr.5\headsep\relax,% + marginparsep=\the\dimexpr\headsep/2\relax,% \if@reversemargin% reversemarginpar=true,% \else% @@ -1727,66 +1720,67 @@ \tud@if@v@lower{2.03}{% \edef\tud@cdgeometry@vmargin{% \tud@cdgeometry@hincl,% - top=\the\dimexpr.5\tud@len@both\relax,% + top=\the\dimexpr\tud@dim@bothmargin/2\relax,% headheight=\the\headheight,% - headsep=\the\tud@len@headsep,% - bottom=\the\dimexpr.5\tud@len@both+\tud@dim@extrabottommargin\relax,% + headsep=\the\tud@dim@headsep,% + bottom=\the\dimexpr\glueexpr\tud@dim@bothmargin/2% + +\tud@extrabottommargin@dim\relax\relax,% \tud@cdgeometry@fincl,% - footskip=\the\dimexpr\tud@len@headsep+\footheight% - -1.25\baselineskip\relax% + footskip=\the\dimexpr\tud@dim@headsep+\footheight% + -1\baselineskip*5/4\relax% }% }{% \edef\tud@cdgeometry@vmargin{% \tud@cdgeometry@hincl,% - top=\the\tud@len@slimmargin,% + top=\the\tud@dim@slimmargin,% headheight=\the\headheight,% headsep=\the\headsep,% - bottom=\the\dimexpr\tud@len@widemargin% - +\tud@dim@extrabottommargin\relax,% + bottom=\the\dimexpr\glueexpr\tud@dim@widemargin% + +\tud@extrabottommargin@dim\relax\relax,% \tud@cdgeometry@fincl,% - footskip=\the\dimexpr\tud@len@footsep+\footheight\relax% + footskip=\the\dimexpr\tud@dim@footsep+\footheight\relax% }% }% \edef\tud@cdgeometry@tudmargin{% ignorehead=true,% - top=\the\dimexpr\tud@len@topmargin+\tud@len@barheight% - +\tud@len@headsep\relax,% - headheight=\the\dimexpr\tud@len@topmargin+\tud@len@barheight% - -\tud@len@logoy\relax,% - headsep=\the\tud@len@headsep% + 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% }% % \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@len@areadiff{% - \dimexpr\tud@len@topmargin+\tud@len@barheight+\tud@len@headsep% - -\tud@len@slimmargin\relax% + \tud@setdim\tud@dim@areadiff{% + \tud@dim@topmargin+\tud@dim@barheight+\tud@dim@headsep% + -\tud@dim@slimmargin% }% % \end{macrocode} % Für die Kompatibilitätsvariante wieder mal die Extrawurst. % \begin{macrocode} \tud@if@v@lower{2.03}{% - \setlength\tud@len@areadiff{% - \dimexpr\tud@len@topmargin+\tud@len@barheight+\tud@len@headsep% - -.5\tud@len@both\relax% + \tud@setdim\tud@dim@areadiff{% + \tud@dim@topmargin+\tud@dim@barheight+\tud@dim@headsep% + -\tud@dim@bothmargin/2% }% % \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@len@ddcdiff{.6\tud@len@topmargin}% + \tud@setdim\tud@dim@ddcdiff{\tud@dim@topmargin*3/5}% \edef\tud@cdgeometry@ddcmargin{% \if@fincl% - bottom=\the\dimexpr.5\tud@len@both+\tud@dim@extrabottommargin% - +\tud@len@ddcdiff+\tud@len@headsep+\footheight% - -1.25\baselineskip\relax,% + bottom=\the\dimexpr\glueexpr\tud@dim@bothmargin/2% + +\tud@extrabottommargin@dim+\tud@dim@ddcdiff+\tud@dim@headsep% + +\footheight-1\baselineskip*5/4\relax\relax,% \else% - bottom=\the\dimexpr.5\tud@len@both+\tud@dim@extrabottommargin% - +\tud@len@ddcdiff\relax,% + bottom=\the\dimexpr\glueexpr\tud@dim@bothmargin/2% + +\tud@extrabottommargin@dim+\tud@dim@ddcdiff\relax\relax,% \fi% - footskip=\the\dimexpr\tud@len@headsep+\footheight% - -1.25\baselineskip+\tud@len@ddcdiff\relax,% + footskip=\the\dimexpr\tud@dim@headsep+\footheight% + -1\baselineskip*5/4+\tud@dim@ddcdiff\relax,% }% }{}% \fi% @@ -1796,22 +1790,22 @@ % vertikale Verschiebung der Überschriften festgelegt, wobei hier insbesondere % auf die Gestaltungshöhe DIN~A5 geachtet werden muss. % \begin{macrocode} - \ifdim\tud@len@areadiff<\z@\relax\setlength\tud@len@areadiff{\z@}\fi% - \global\tud@len@areadiff=\tud@len@areadiff% + \ifdim\tud@dim@areadiff<\z@\relax\tud@setdim\tud@dim@areadiff{\z@}\fi% + \global\tud@dim@areadiff=\tud@dim@areadiff% %<*book|report|article> - \setlength\tud@len@areaheadvskip{.22\tud@len@topmargin}% + \tud@setdim\tud@dim@areaheadvskip{\tud@dim@topmargin*11/50}% \if@tud@cdgeometry@adjust% - \setlength\tud@len@areaheadvskip{.5\tud@len@areaheadvskip}% + \tud@setdim\tud@dim@areaheadvskip{\tud@dim@areaheadvskip/2}% \fi% - \global\tud@len@areaheadvskip=\tud@len@areaheadvskip% + \global\tud@dim@areaheadvskip=\tud@dim@areaheadvskip% % % \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@if@v@lower{2.03}{% - \ifdim\tud@len@ddcdiff<\z@\relax\setlength\tud@len@ddcdiff{\z@}\fi% - \global\tud@len@ddcdiff=\tud@len@ddcdiff% + \ifdim\tud@dim@ddcdiff<\z@\relax\tud@setdim\tud@dim@ddcdiff{\z@}\fi% + \global\tud@dim@ddcdiff=\tud@dim@ddcdiff% }{}% % \end{macrocode} % Es wird \cs{tud@cdgeometry@@@process} aufgerufen, was die zuvor definierten @@ -1880,11 +1874,11 @@ % Falls die (abermalige) Erstellung der Satzspiegel im Dokument erfolgt, sollte % anschließend auch der richtige Satzspiegel wieder ausgewählt werden. % \begin{macrocode} - \if@atdocument% - \ifstr{\tud@currentgeometry}{stdarea}{}{% + \tud@if@preamble{}{% + \tud@if@strequal{\tud@currentgeometry}{stdarea}{}{% \expandafter\tud@loadgeometry\expandafter{\tud@currentgeometry}% }% - \fi% + }% }% % \end{macrocode} % \end{macro}^^A \tud@cdgeometry@ddcmargin @@ -1929,11 +1923,12 @@ % \end{macro}^^A \tud@cdgeometry@hincl % \begin{macro}{\tud@cdgeometry@@init} % \changes{v2.04}{2015/03/10}{neu}^^A -% 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. Dabei werden sowohl der -% benutzerdefinierte Satzspiegel als auch die durch \pkg{typearea} berechneten -% Einstellungen gesichert. +% Damit alle Satzspiegeleinstellungen vollständig vorgenommen und auch alle +% Klassenoptionen korrekt verarbeitet werden, wird die Berechnung erstmalig +% am Ende der Präambel mit \cs{AtEndPreamble}|{|\cs{tud@cdgeometry@init}|}| +% ausgeführt, nachdem der Ladezustandes des Paketes \pkg{scrlayer-scrpage} +% geprüft wurde. Dabei werden sowohl der benutzerdefinierte Satzspiegel als +% auch die durch \pkg{typearea} berechneten Einstellungen gesichert. % \begin{macrocode} \newcommand*\tud@cdgeometry@@init{% \csuse{@ta@usegeometryfalse}% @@ -1943,8 +1938,8 @@ % Bei der Initialisierung der zusätzlichen Satzspiegel soll keine Warnung % bezüglich der Angabe eines vergrößerten Fußbereichs erscheinen. % \begin{macrocode} - \tud@cs@store{tud@dim@extrabottommargin}% - \def\tud@dim@extrabottommargin{\z@}% + \tud@cs@store{tud@extrabottommargin@dim}% + \def\tud@extrabottommargin@dim{0pt}% % \end{macrocode} % Zunächst werden die benutzerdefinierten Einstellungen für den Satzspiegel % gesichert. @@ -1952,7 +1947,7 @@ \tud@cdgeometry@reset{custom}% \begingroup% \epreto\tud@x@geometry@init{% - paperwidth=\the\paperwidth,paperheight=\the\paperheight,% + papersize={\the\paperwidth,\the\paperheight},% \tud@cdgeometry@layout,% \tud@cdgeometry@mpincl,% \if@reversemargin% @@ -1988,19 +1983,19 @@ % Alle gesammelten Warnungen von \pkg{typearea} werden dem initialisierten % Satzspiegel hinzugefügt. % \begin{macrocode} - \def\tud@res@b##1{% - \eappto\Gm@restore@@init@typearea{% - \noexpand\PackageWarningNoLine{typearea}{##1}% - }% + \def\do##1{% + \apptocmd\Gm@restore@@init@typearea{% + ##1% + }{}{\tud@patch@wrn{Gm@restore@@init@typearea}}% }% - \forlistloop\tud@res@b{\tud@res@a}% + \dolistloop{\tud@res@a}% % \end{macrocode} % Hier werden die temporär geäanderten Einstellungen zurückgesetzt. % \begin{macrocode} \tud@cs@restore{tud@cdgeometry@num}% - \tud@cs@restore{tud@dim@extrabottommargin}% + \tud@cs@restore{tud@extrabottommargin@dim}% % \end{macrocode} -% Der Kopf im \CD der \TnUD erfordert einen eigenen Satzspiegel, der ggf. durch +% Der Kopf im \TUDCD erfordert einen eigenen Satzspiegel, der ggf. durch % \cs{tud@BeforeSelectAnyPageStyle} aktiviert bzw. deaktiviert wird. % \begin{macrocode} \BeforeSelectAnyPageStyle{\tud@BeforeSelectAnyPageStyle{##1}}% @@ -2036,7 +2031,7 @@ % 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@currentgeometry{}% \newcommand*\tud@BeforeSelectAnyPageStyle[1]{% % \end{macrocode} % Der \pgs{tudheadings}-Seitenstil wird mit dem Befehl \cs{newpairofpagestyles} @@ -2044,7 +2039,7 @@ % auch mit \LaTeX-Standardseitenstilen \pgs{headings} bzw. \pgs{plain} % umgeschaltet werden kann. Dies wird hiermit beachtet. % \begin{macrocode} - \ifstr{#1}{\GetRealPageStyle{#1}}{% + \tud@if@strequal{#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 @@ -2066,7 +2061,7 @@ % Das \DDC-Logo im Fuß ist nicht aktiviert. % \begin{macrocode} \ifcase\@tempb\relax% \tud@ddc@foot@num=false - \ifstr{\tud@currentgeometry}{tudarea}{}{% + \tud@if@strequal{\tud@currentgeometry}{tudarea}{}{% \tud@loadgeometry{tudarea}% \gdef\tud@currentgeometry{tudarea}% }% @@ -2074,7 +2069,7 @@ % Das \DDC-Logo im Fuß ist aktiviert. % \begin{macrocode} \else% \tud@ddc@foot@num!=false - \ifstr{\tud@currentgeometry}{tudareaddc}{}{% + \tud@if@strequal{\tud@currentgeometry}{tudareaddc}{}{% \tud@loadgeometry{tudareaddc}% \gdef\tud@currentgeometry{tudareaddc}% }% @@ -2083,60 +2078,47 @@ % Ab der Version~v2.03 ist nur noch ein Satzspiegel vonnöten. % \begin{macrocode} }{% - \ifstr{\tud@currentgeometry}{tudarea}{}{% + \tud@if@strequal{\tud@currentgeometry}{tudarea}{}{% \tud@loadgeometry{tudarea}% \gdef\tud@currentgeometry{tudarea}% }% }% % \end{macrocode} -% Die Länge \cs{tud@len@areavskip} gibt an, wie groß die Differenz zwischen +% Die Länge \cs{tud@dim@areavskip} 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@len@areavskip{\z@}% -% \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}}% + \tud@setdim\tud@dim@areavskip{\z@}% % \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} +% Das ist der Zweig, 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}{stdarea}{}{% + \tud@if@strequal{\tud@currentgeometry}{stdarea}{}{% \tud@loadgeometry{stdarea}% \gdef\tud@currentgeometry{stdarea}% }% % \end{macrocode} -% Die Länge \cs{tud@len@areavskip} wird auf den berechneten Wert gesetzt. +% Die Länge \cs{tud@dim@areavskip} 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@len@areavskip{\tud@len@areadiff}% + \tud@setdim\tud@dim@areavskip{\tud@dim@areadiff}% \ifnum\tud@cdgeometry@num>\@ne\relax% true/symmetric/twoside \if@hincl% - \addtolength\tud@len@areavskip{% - \dimexpr-\headheight-\tud@len@headsep\relax% - }% + \tud@addtodim\tud@dim@areavskip{-\headheight-\tud@dim@headsep}% \fi% \fi% -% \end{macrocode} -% Die Schriften für Seitenzahl und Kolumnentitel werden zurückgesetzt. -% \begin{macrocode} - \tud@komafont@unset{pagenumber}% - \tud@komafont@unset{pagefoot}% }% % \end{macrocode} -% Die Länge \cs{tud@len@areavskip} wird vorsichtshalber global gesetzt. +% Die Länge \cs{tud@dim@areavskip} wird vorsichtshalber global gesetzt. % \begin{macrocode} - \global\tud@len@areavskip=\tud@len@areavskip% + \global\tud@dim@areavskip=\tud@dim@areavskip% }{}% - } + }% % \end{macrocode} % \end{macro}^^A \tud@currentgeometry % \end{macro}^^A \tud@BeforeSelectAnyPageStyle @@ -2165,26 +2147,26 @@ % \begin{macrocode} \newcommand*\tud@x@typearea@before{% \tud@cdgeometry@resetlayout% - \tud@skip@store{paperheight}% - \tud@skip@store{paperwidth}% + \tud@cslength@store{paperheight}% + \tud@cslength@store{paperwidth}% \begingroup% \tud@cdgeometry@assignlayout% \edef\tud@res@a{% \endgroup% - \etex@unexpanded{\setlength\paperheight}{\the\tud@len@layoutheight}% - \etex@unexpanded{\setlength\paperwidth}{\the\tud@len@layoutwidth}% + \unexpanded{\tud@setdim\paperheight}{\the\tud@dim@layoutheight}% + \unexpanded{\tud@setdim\paperwidth}{\the\tud@dim@layoutwidth}% }% \tud@res@a% } \newcommand*\tud@x@typearea@after{% - \tud@skip@restore{paperheight}% - \tud@skip@restore{paperwidth}% - \if@atdocument% + \tud@cslength@restore{paperheight}% + \tud@cslength@restore{paperwidth}% + \tud@if@preamble{% + \TUD@key@preset{cdgeometry}{false}% + }{% \tud@cdgeometry@reset{typearea}% \tud@cdgeometry@process% - \else% - \TUD@key@preset{cdgeometry}{false}% - \fi% + }% } \newcommand*\tud@x@typearea@init{\recalctypearea}% % \end{macrocode} @@ -2192,18 +2174,18 @@ % \begin{macrocode} \xpretocmd{\typearea}{% \tud@x@typearea@before% - \def\tud@x@typearea@init{\typearea[#1]{#2}}% + \def\tud@x@typearea@init{\typearea[{#1}]{#2}}% }{}{\tud@patch@wrn{typearea}} \xapptocmd{\typearea}{\tud@x@typearea@after}{}{\tud@patch@wrn{typearea}} \xpretocmd{\areaset}{% \tud@x@typearea@before% \begingroup% - \setlength\@tempdima{#2}% - \setlength\@tempdimb{#3}% + \tud@setdim\@tempdima{#2}% + \tud@setdim\@tempdimb{#3}% \edef\tud@res@a{% \endgroup% - \noexpand\def\noexpand\tud@x@typearea@init{% - \noexpand\areaset[#1]{\the\@tempdima}{\the\@tempdimb}% + \def\noexpand\tud@x@typearea@init{% + \unexpanded{\areaset[{#1}]}{\the\@tempdima}{\the\@tempdimb}% }% }% \tud@res@a% @@ -2216,17 +2198,17 @@ % \begin{macrocode} \tud@cs@store{storeareas} \renewcommand*\storeareas[1]{% - \begingroup + \begingroup% \tud@x@geometry@fixmargins% \tud@cs@use{storeareas}{#1}% - \def\tud@res@b##1{\unexpanded{\setlength##1}{\the##1}}% + \def\tud@res@b##1{\unexpanded{\tud@setdim##1}{\the##1}}% \edef\tud@res@a{% \endgroup% - \etex@unexpanded{\def#1}{% - \tud@res@b{\tud@len@layoutwidth}% - \tud@res@b{\tud@len@layoutheight}% - \tud@res@b{\tud@len@layouthoffset}% - \tud@res@b{\tud@len@layoutvoffset}% + \unexpanded{\def#1}{% + \tud@res@b{\tud@dim@layoutwidth}% + \tud@res@b{\tud@dim@layoutheight}% + \tud@res@b{\tud@dim@layouthoffset}% + \tud@res@b{\tud@dim@layoutvoffset}% \expandonce#1% \def\noexpand\tud@cdgeometry@num{\tud@cdgeometry@num}% }% @@ -2269,17 +2251,23 @@ \tud@cs@store{PackageWarningNoLine}% \renewcommand*\PackageWarningNoLine[2]{% \@tud@res@swatrue% - \ifstr{##1}{typearea}{% - \ifstrstart{##2}{Bad type area settings!}{\@tud@res@swafalse}{}% - \ifstrstart{##2}{% + \tud@if@strequal{##1}{typearea}{% + \tud@if@strstart{##2}{% + Bad type area settings!% + }{\@tud@res@swafalse}{}% + \tud@if@strstart{##2}{% Maybe no optimal type area settings!% }{\@tud@res@swafalse}{}% - \ifstrstart{##2}{Very low DIV value!}{\@tud@res@swafalse}{}% + \tud@if@strstart{##2}{% + Very low DIV value!% + }{\@tud@res@swafalse}{}% }{}% \if@tud@res@swa% - \tud@cs@use{PackageWarning}{##1}{##2}% + \tud@cs@use{PackageWarningNoLine}{##1}{##2}% \else% - \IfArgIsEmpty{#1}{}{\listeadd#1{##2}}% + \IfArgIsEmpty{#1}{}{% + \listeadd#1{\noexpand\tud@cs@use{PackageWarningNoLine}{##1}{##2}}% + }% \fi% }% } @@ -2315,8 +2303,8 @@ \let\tud@cdgeometry@@init\relax% }% \newcommand*\tud@cdgeometry@@process{% - \setlength\tud@len@layoutwidth{\paperwidth}% - \setlength\tud@len@layoutheight{\paperheight}% + \tud@setdim\tud@dim@layoutwidth{\paperwidth}% + \tud@setdim\tud@dim@layoutheight{\paperheight}% \tud@cdgeometry@set% }% \newcommand*\tud@x@geometry@fixmargins{}% @@ -2347,14 +2335,23 @@ % folgenden \KOMAScript-Befehle Leerseiten erzeugt werden, müssen diese minimal % angepasst werden. % \begin{macrocode} -\patchcmd{\cleardoubleoddpageusingstyle}{\pagestyle}{% - \let\tud@BeforeSelectAnyPageStyle\@gobble\pagestyle% +\patchcmd\cleardoubleoddpageusingstyle{% + \pagestyle% +}{% + \let\tud@BeforeSelectAnyPageStyle\@gobble% + \pagestyle% }{}{\tud@patch@wrn{cleardoubleoddpageusingstyle}} -\patchcmd{\cleardoubleevenpageusingstyle}{\pagestyle}{% - \let\tud@BeforeSelectAnyPageStyle\@gobble\pagestyle% +\patchcmd\cleardoubleevenpageusingstyle{% + \pagestyle% +}{% + \let\tud@BeforeSelectAnyPageStyle\@gobble% + \pagestyle% }{}{\tud@patch@wrn{cleardoubleevenpageusingstyle}} -\patchcmd{\cleardoublepageusingstyle}{\pagestyle}{% - \let\tud@BeforeSelectAnyPageStyle\@gobble\pagestyle% +\patchcmd\cleardoublepageusingstyle{% + \pagestyle% +}{% + \let\tud@BeforeSelectAnyPageStyle\@gobble% + \pagestyle% }{}{\tud@patch@wrn{cleardoublepageusingstyle}} % \end{macrocode} % \end{macro}^^A \cleardoublepageusingstyle @@ -2372,10 +2369,10 @@ \tud@if@v@lower{2.03}{% \newcommand*\tud@ddc@enlargepage[1][]{% \tud@if@tudheadings{#1}{% - \ifstr{\tud@currentgeometry}{tudareaddc}{}{% + \tud@if@strequal{\tud@currentgeometry}{tudareaddc}{}{% \tud@ddc@check% \ifcase\@tempb\relax\else% \tud@ddc@foot@num!=false - \enlargethispage{-\tud@len@ddcdiff}% + \enlargethispage{-\tud@dim@ddcdiff}% \fi% }% }{}% @@ -2388,6 +2385,6 @@ % % \fi % -% \Finale +% \PrintBackMatter % \endinput diff --git a/macros/latex/contrib/tudscr/source/tudscr-base.dtx b/macros/latex/contrib/tudscr/source/tudscr-base.dtx index 7a47fa64cc..863a42ecd0 100644 --- a/macros/latex/contrib/tudscr/source/tudscr-base.dtx +++ b/macros/latex/contrib/tudscr/source/tudscr-base.dtx @@ -1,10 +1,10 @@ -% \CheckSum{842} % \iffalse meta-comment +%/GitFileInfo=tudscr-base.dtx % % TUD-Script -- Corporate Design of Technische Universität Dresden % ---------------------------------------------------------------------------- % -% Copyright (C) Falk Hanisch , 2012-2021 +% Copyright (C) Falk Hanisch , 2012-2022 % % ---------------------------------------------------------------------------- % @@ -23,44 +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-base.dtx -%<*dtx> -% \fi -% -\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi -\ProvidesFile{tudscr-base.dtx}[2020/09/29 v2.06j TUD-Script\space% -% -% \iffalse -% -%\ProvidesPackage{tudscrbase}[% -%<*package&base> -%!TUD@Version -% -% package -%<*dtx|package&base> -% \fi - (basics for the bundle)% -] -% \iffalse -% +% \iffalse ins:batch + dtx:driver +%<*ins> +\ifx\documentclass\undefined + \input docstrip.tex + \ifToplevel{\batchinput{tudscr.ins}} +\else + \let\endbatchfile\relax +\fi +\endbatchfile +% %<*dtx> +\ProvidesFile{tudscr-base.dtx}[2022/08/09] +\RequirePackage{tudscr-gitinfo} \documentclass[english,ngerman,xindy]{tudscrdoc} \iftutex \usepackage{fontspec} @@ -70,18 +45,11 @@ \fi \usepackage{babel} \usepackage{tudscrfonts} -\KOMAoptions{parskip=half-} -\usepackage{bookmark} \usepackage[babel]{microtype} -\CodelineIndex -\RecordChanges -\GetFileInfo{tudscr-base.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} @@ -93,21 +61,32 @@ % % \changes{v2.02}{2014/06/23}{Paket \pkg{titlepage} nicht weiter unterstützt}^^A % +% +% % \section{Das Paket \pkg{tudscrbase} -- Basisdefinitionen für \TUDScript} % % Für die Erstellung der \TUDScript-Klassen werden die dafür benötigten Pakete % eingebunden und Steuerungsbefehle definiert. Die Klassen sowie einige Pakete % benötigen das Paket und laden dieses auch. % -% \ToDo{% -% Schnittstelle äquivalent zu \cs{KOMA@kav@\dots}? Dann hierfür -% \pkg{etoolbox}-Listen und \cs{listadd} sowie \cs{listremove} nutzen -% }[v2.??] -% \ToDo{% +% \begin{macrocode} +%<*package&base> +\ProvidesPackage{tudscrbase}[% +%!TUD@Version + package (basics for the bundle)% +] +% +% \end{macrocode} +% +% \ToDo{ +% Schnittstelle äquivalent zu \cs{KOMA@kav@...}? Dann hierfür +% \pkg{etoolbox}-Listen und \cs{listadd} sowie \cs{listremove} nutzen +% }[v2.08] +% \ToDo{ % Teile im Quelltext suchen, die nur einmalig durchlaufen werden müssen % (bspw. notwendige Pakete und Schriften) und über aux-Eintrag abkürzen?! -% siehe \cs{TUD@CheckPackage}% -% }[v2.??] +% siehe \cs{TUD@CheckPackage} +% }[v2.07] %^^A\BeforeClosingMainAux{% %^^A \if@tud@xxx\if@filesw% %^^A \immediate\write\@mainaux{% @@ -117,62 +96,248 @@ %^^A} % % -% \StopEventually{\PrintIndex\PrintChanges\PrintToDos} % % \begin{macrocode} %<*load> -\RequirePackage{tudscrbase}[\TUD@Version] +\RequirePackage{tudscrbase}[% +%!TUD@Version +] % % \end{macrocode} % -% \subsection{Notwendige Pakete für \TUDScript} -% % \iffalse %<*package&base> % \fi % +% \subsection{Notwendige Kompatibilitätseinstellung für \KOMAScript} +% +% Die installierte Version und die gewählte Kompatibilitätseinstellung von +% \KOMAScript{} wird gerpüft. +% \begin{macrocode} +\AtBeginDocument{% + \ifcsundef{scr@v@first}{}{% +% \end{macrocode} +% Es wird gerpüft, ob die mindestens benötigte \KOMAScript-Version +% (v\csuse{TUD@KOMAVersionNumber}) verfügbar ist. Sollte dies nicht der Fall +% sein, wird ein Fehler erzeugt. +% \begin{macrocode} + \ifcsundef{scr@v@\TUD@KOMAVersionNumber}{% + \PackageError{tudscrbase}{% + KOMA-Script v\TUD@KOMAVersionNumber\space is required% + }{% + \TUD@Version\space must be used at least with\MessageBreak% + \TUD@KOMAVersion, but only\MessageBreak% + \KOMAScriptVersion\space was found.% + }% + }{% +% \end{macrocode} +% Ist die mindestens nötige Version von \KOMAScript{} installiert, wird +% geprüft, ob die Kompatibilitätseinstellung akzeptabel ist. +% \begin{macrocode} + \expandafter\ifnum\scr@v@is@lt{3.12}\relax% + \PackageError{tudscrbase}{% + KOMA-Script compatibility level too low% + }{% + \TUD@Version\space must be used at least with\MessageBreak% + `version=3.12' KOMA-Script compatibility option.% + }% + \fi% + }% + }% +} +% \end{macrocode} +% +% \subsection{Notwendige Pakete für \TUDScript} +% +% \changes{v2.06f}{2020/01/14}{Anpassungen für \pkg{scrbase} \val{v3.28}}^^A % Das Paket \pkg{scrbase} wird zur Optionsdefinition benötigt, \pkg{scrlfile} % für verschiedene Hooks vor sowie nach Klassen und Paketen. -% \ToDo{Provisorium entfernen}[v2.07] -% \begin{macrocode} -\providecommand*{\ifstr}{\Ifstr} -\providecommand*{\ifstrstart}{\Ifstrstart} -\providecommand*{\ifisskip}{\Ifisskip} -\providecommand*{\ifdimen}{\Ifdimen} -\providecommand*{\ifisdimen}{\Ifisdimen} -\providecommand*{\ifisdimension}{\Ifisdimension} -\providecommand*{\ifnumber}{\Ifnumber} -\RequirePackage{scrbase}[2020/09/21] -\RequirePackage{iftex}[2019/11/07] +% \begin{macrocode} +\RequirePackage{scrbase}[% +%!TUD@KOMAVersion +] % \end{macrocode} % Die folgenden Pakete werden für die Manipulation bereits definierter -% Makros sowie zur erweiterten Auswertung boolescher Ausdrücke benötigt. +% Makros, zur erweiterten Auswertung boolescher Ausdrücke und allgemein zur +% Ablaufsteuerung benötigt. % \begin{macrocode} -\RequirePackage{etoolbox}[2011/01/03] -\RequirePackage{xpatch}[2012/10/02] -\RequirePackage{letltxmacro}[2016/05/16] -\RequirePackage{etexcmds}[2011/02/16] +\RequirePackage{iftex} +\RequirePackage{etoolbox} +\RequirePackage{xpatch} +\RequirePackage{letltxmacro} % \end{macrocode} % Das Paket \pkg{kvsetkeys} erweitert \pkg{keyval} um die Möglichkeit, das % Verhalten bei der Angabe eines nicht definierten Schlüssels festzulegen. -% \ToDo{sollte eigentlich auch mit KOMA-Option \val{@else@} gehen}[v2.07] +% \ToDo{sollte auch mit KOMA-Option \val{@else@} gehen, besser raus}[v2.07] % \begin{macrocode} -\RequirePackage{kvsetkeys}[2012/04/25] +\RequirePackage{kvsetkeys} % \end{macrocode} % Mit dem Paket \pkg{trimspaces} können eventuell vorhandene Leerzeichen aus % einem Argument entfernt. Dies wird beispielsweise beim Einlesen von Feldern % oder bei der expliziten Auswahl einer Schrift des \CD sgenutzt. % \begin{macrocode} -\RequirePackage{trimspaces}[2009/09/17] +\RequirePackage{trimspaces} +% \end{macrocode} +% Für \pkg{hyperref} werden \cs{TUDScript} und \cs{KOMAScript} deaktiviert. +% \begin{macrocode} +\AfterPackage*{hyperref}{% + \pdfstringdefDisableCommands{% + \def\TUDScript{TUD-Script}% + \def\KOMAScript{KOMA-Script}% + }% +} % \end{macrocode} % % \subsection{Grundlegende Befehle für \TUDScript} +% \subsubsection{Erweiterte Definition von \TeX-Primitiven} +% +% Mit \LaTeX{} lassen sich einige Primitiven definieren, ohne zu Prüfen, ob +% ggf. bereits eine Definition vorhanden ist. Dies wird hiermit umgangen. +% \begin{macro}{\tud@newif} +% \changes{v2.06o}{2022/07/27}{neu}^^A +% \begin{macro}{\tud@newcount} +% \changes{v2.06o}{2022/07/27}{neu}^^A +% \begin{macro}{\tud@newtoks} +% \changes{v2.06o}{2022/07/27}{neu}^^A +% \begin{macro}{\tud@newread} +% \changes{v2.06o}{2022/07/27}{neu}^^A +% \begin{macro}{\tud@newwrite} +% \changes{v2.06o}{2022/07/27}{neu}^^A +% \begin{macrocode} +\newcommand*\tud@newif[1]{\@ifdefinable#1{\newif#1}} +\newcommand*\tud@newcount[1]{\@ifdefinable#1{\newcount#1}} +\newcommand*\tud@newtoks[1]{\@ifdefinable#1{\newtoks#1}} +\newcommand*\tud@newread[1]{\@ifdefinable#1{\newread#1}} +\newcommand*\tud@newwrite[1]{\@ifdefinable#1{\newwrite#1}} +% \end{macrocode} +% \end{macro}^^A \tud@newwrite +% \end{macro}^^A \tud@newread +% \end{macro}^^A \tud@newtoks +% \end{macro}^^A \tud@newcount +% \end{macro}^^A \tud@newif +% +% \subsubsection{Definition von Längen-Registern} +% +% \begin{macro}{\tud@newglue} +% \changes{v2.06o}{2022/07/28}{neu}^^A +% \begin{macro}{\tud@newdim} +% \changes{v2.06o}{2022/07/28}{neu}^^A +% \begin{macro}{\tud@setglue} +% \changes{v2.06o}{2022/07/28}{neu}^^A +% \begin{macro}{\tud@setdim} +% \changes{v2.06o}{2022/07/28}{neu}^^A +% \begin{macro}{\tud@addtoglue} +% \changes{v2.06o}{2022/07/28}{neu}^^A +% \begin{macro}{\tud@addtodim} +% \changes{v2.06o}{2022/07/28}{neu}^^A +% Der \LaTeX"~Kernel stellt lediglich \cs{newlength} zur Verfügung, um bereits +% bestehende Makros nicht zu überschreiben. Soll jedoch ein \cs{dimen}-Register +% definiert werden, gibt es keinen entsprechenden Befehl. Auch die Zuweisung +% von Längenwerte kann mit \cs{setlength} nicht sauber erfolgen, da nicht +% geprüft wird, ob die Zuweisung an ein \cs{skip}"~ oder \cs{dimen}-Register +% erfolgt. Deshalb werden hier für diese Aufgabe interne Befehle definiert. +% Siehe dazu auch \GitHubRepo(latex3/latex2e)<227>. +% \begin{macrocode} +\newcommand*\tud@newglue[1]{\@ifdefinable#1{\newskip#1}} +\newcommand*\tud@newdim[1]{\@ifdefinable#1{\newdimen#1}} +\newrobustcmd*\tud@setglue[2]{% + \ifdefdimen{#1}{% + \PackageWarning{tudscrbase}{% + You tried to assign dimen \string#1\MessageBreak% + so \string\tud@setdim\space is used% + }% + \tud@setdim{#1}{#2}% + }{% + \setlength#1{\glueexpr#2\relax}% + }% +} +\newrobustcmd*\tud@setdim[2]{% + \begingroup% + \@tud@res@swafalse% + \setlength\@tempskipa{\glueexpr#2\relax}% + \ifdim\gluestretch\@tempskipa=\z@\relax\else% + \@tud@res@swatrue% + \fi% + \ifdim\glueshrink\glueexpr\@tempskipa\relax=\z@\relax\else% + \@tud@res@swatrue% + \fi% + \if@tud@res@swa% + \PackageWarning{tudscrbase}{% + You tried to use \string\tud@setdim\string#1\MessageBreak% + with glue \detokenize{#2} (\the\@tempskipa)\MessageBreak% + but only the base value is used% + }% + \fi% + \endgroup% + \setlength#1{\dimexpr\glueexpr#2\relax\relax}% +} +\newrobustcmd*\tud@addtoglue[2]{% + \tud@setglue#1{\glueexpr#1+#2\relax}% +} +\newrobustcmd*\tud@addtodim[2]{% + \tud@setdim#1{\glueexpr#1+#2\relax}% +} +% \end{macrocode} +% \end{macro}^^A \tud@addtodim +% \end{macro}^^A \tud@addtoglue +% \end{macro}^^A \tud@setdim +% \end{macro}^^A \tud@setglue +% \end{macro}^^A \tud@newdim +% \end{macro}^^A \tud@newglue +% \begin{macro}{\tud@res@glue} +% \changes{v2.06}{2019/06/21}{neu}^^A +% Und gleich noch eine temporäre Länge mit dazu. +% \begin{macrocode} +\tud@newglue\tud@res@glue +% \end{macrocode} +% \end{macro}^^A \tud@res@glue +% \begin{macro}{\tud@if@lengthregister} +% \changes{v2.06o}{2022/07/28}{neu}^^A +% Prüft, ob der übergebene Befehl ein \cs{skip}"~ oder \cs{dimen}-Register ist. +% \begin{macrocode} +\newcommand*\tud@if@lengthregister[1]{% + \begingroup% + \@tud@res@swafalse% + \ifdeflength{#1}{\@tud@res@swatrue}{}% + \ifdefdimen{#1}{\@tud@res@swatrue}{}% + \if@tud@res@swa% + \aftergroup\@firstoftwo% + \else% + \aftergroup\@secondoftwo% + \fi% + \endgroup% +} +% \end{macrocode} +% \end{macro}^^A \tud@if@lengthregister +% \begin{macro}{\tud@length@setabsolute} +% \changes{v2.06o}{2022/07/28}{neu}^^A +% Um Schlüssel für Längen definieren zu können, die zwingend positiv sind, kann +% dieses Makro genutzt werden. Übergeben werden muss entweder eine Länge oder +% ein Makro, welches einen Längenausdruck enthält. +% \begin{macrocode} +\newcommand*\tud@length@setabsolute[1]{% + \tud@if@lengthregister{#1}{% + \ifdim#1<\z@% + \setlength#1{-\glueexpr#1\relax}% + \fi% + }{% + \protected@edef#1{% + \noexpand\ifdim\noexpand\glueexpr\expandonce#1\relax<\z@-\noexpand\fi% + \noexpand\glueexpr\expandonce#1\relax% + }% + }% +} +% \end{macrocode} +% \end{macro}^^A \tud@length@setabsolute +% % \subsubsection{Temporäre Makros zur internen Verwendung durch \TUDScript} % % Hier werden Makros definiert, die allein für die interne temporäre Nutzung % gedacht sind. -% \ToDo{Sämtliche \cs{@temp\dots}-Makros auf \cs{tud@res@\dots} ändern}[v2.??] -% \ToDo{\cs{tud@reserved} in \cs{tud@res@?}, Achtung bei Dopplungen!}[v2.??] +% \ToDo{sämtliche \cs{@temp...}-Makros auf \cs{tud@res@...} ändern}[v2.07] +% \ToDo{\cs{tud@reserved} in \cs{tud@res@...}, Achtung bei Dopplungen!}[v2.07] +% \ToDo{Schlüssel sollten weiterhin \cs{@temp...}-Makros verwenden}[v2.07] +% \ToDo{Makros mit \val{@num} in count ändern}[v2.07] % \begin{macro}{\tud@reserved} % \changes{v2.05}{2015/10/27}{neu}^^A % \begin{macro}{\tud@res@a} @@ -181,104 +346,229 @@ % \changes{v2.06}{2018/07/12}{neu}^^A % \begin{macro}{\tud@res@c} % \changes{v2.06}{2018/07/12}{neu}^^A +% \begin{macro}{\tud@res@d} +% \changes{v2.06}{2018/07/12}{neu}^^A % \begin{macro}{\if@tud@res@swa} % \changes{v2.06}{2018/07/12}{neu}^^A % \begin{macro}{\tud@res@cnt} % \changes{v2.06}{2019/06/13}{neu}^^A -% \begin{macro}{\tud@res@read} -% \changes{v2.06}{2019/06/21}{neu}^^A % Makros zur temporären Verwendung. % \begin{macrocode} \newcommand*\tud@reserved{} \newcommand*\tud@res@a{} \newcommand*\tud@res@b{} \newcommand*\tud@res@c{} -\newif\if@tud@res@swa -\newcount\tud@res@cnt -\newread\tud@res@read +\newcommand*\tud@res@d{} +\tud@newif\if@tud@res@swa +\tud@newcount\tud@res@cnt % \end{macrocode} -% \end{macro}^^A \tud@res@read % \end{macro}^^A \tud@res@cnt % \end{macro}^^A \if@tud@res@swa +% \end{macro}^^A \tud@res@d % \end{macro}^^A \tud@res@c % \end{macro}^^A \tud@res@b % \end{macro}^^A \tud@res@a % \end{macro}^^A \tud@reserved % \begin{macro}{\tud@toks@} % \changes{v2.05}{2015/11/01}{neu}^^A -% \begin{macro}{\eaddto@hook} +% \begin{macro}{\addto@hook@expandafter} % \changes{v2.05}{2015/11/01}{neu}^^A % Es wird ein token-Regsiter reserviert, welches im weiteren Verlauf an allen -% möglichen Punkten verwendet wird. Mit \cs{eaddto@hook} wird~-- in Ergänzung -% zu \cs{addto@hook}~-- ein Makro zum Anfügen des expandierten Arguments an ein -% token-Register bereitgestellt. +% möglichen Punkten verwendet wird. Mit \cs{addto@hook@expandafter} wird~-- in +% Ergänzung zu \cs{addto@hook} aus dem \LaTeX"~Kernel~-- ein Makro zum Anfügen +% des expandierten Arguments an ein token-Register bereitgestellt. % \begin{macrocode} -\newtoks\tud@toks@ -\newcommand*\eaddto@hook[2]{% +\tud@newtoks\tud@toks@ +\newcommand*\addto@hook@expandafter[2]{% \expandafter\addto@hook\expandafter#1\expandafter{#2}% } % \end{macrocode} -% \end{macro}^^A \eaddto@hook +% \end{macro}^^A \addto@hook@expandafter % \end{macro}^^A \tud@toks@ % -% \subsubsection{Robuster Test auf leeres Argument} -% -% \begin{macro}{\ifxblank} -% Hiermit kann ein Argument geprüft werden, ob dieses blank ist (leer oder -% Leerzeichen). In seiner Syntax ist er identisch zu \cs{ifblank}, allerdings -% expandiert er im Gegensatz zu diesem das gegebene Argument. -% \begin{macrocode} -\newcommand*\ifxblank{\ifstr{}} +% \subsubsection{Verzweigung für Präambel und Dokument} +% +% \begin{macro}{\tud@if@preamble} +% \changes{v2.05o}{2022/07/25}{als Ersatz für \cs{if@atdocument}}^^A +% Mit \KOMAScript~v3.37 wurde das Aktivieren des Schalters \cs{if@atdocument} +% aufgrund des stark veränderten und damit leider nur bedingt deterministischen +% \hrfn{https://sourceforge.net/p/koma-script/tickets/23/}{Hook-Managements} +% des Kernels auf |begindocument/before| verschoben. Dieser Befehl wird als +% Gegenstück definiert und führt in Abhängigkeit von |begindocument/after| +% Quelltext verzweigt aus. +% \begin{macrocode} +\newcommand*\tud@if@preamble{} +\let\tud@if@preamble\@firstoftwo +\AfterEndPreamble{\let\tud@if@preamble\@secondoftwo} +% \end{macrocode} +% \end{macro}^^A \tud@if@preamble +% +% \subsubsection{Strings} +% \minisec{Expandierte Tests} +% +% \begin{macro}{\tud@if@strequal} +% \changes{v2.06o}{2022/07/28}{neu}^^A +% \begin{macro}{\tud@if@strstart} +% \changes{v2.06o}{2022/07/28}{neu}^^A +% \begin{macro}{\tud@if@strempty} +% \changes{v2.06o}{2022/07/28}{neu}^^A +% \begin{macro}{\tud@if@strblank} +% \changes{v2.06o}{2022/07/28}{neu}^^A +% Hiermit wird geprüft, ob ein String gleich, leer oder blank (Leerzeichen) +% ist, wobei die gegebene Argumente expandiert werden. In ihrer Syntax sind +% sie identisch zu den aus aus \pkg{etoolbox} stammenden und unterlagerten +% Befehlen \cs{ifstrequal}, \cs{ifstrempty} und \cs{ifblank}. Der Befehl +% \cs{tud@if@strstart} nutzt \cs{Ifstrstart} von \KOMAScript. +% \begin{macrocode} +\newcommand*\tud@if@strequal[2]{% + \begingroup% + \protected@edef\tud@res@a{% + \endgroup% + \noexpand\ifstrequal{#1}{#2}% + }% + \tud@res@a% +} +\newcommand*\tud@if@strstart[2]{% + \begingroup% + \protected@edef\tud@res@a{% + \endgroup% + \noexpand\Ifstrstart{\noexpand\detokenize{#1}}{\noexpand\detokenize{#2}}% + }% + \tud@res@a% +} +\newcommand*\tud@if@strempty{\tud@if@strequal{}} +\newcommand*\tud@if@strblank[1]{% + \begingroup% + \protected@edef\tud@res@a{% + \endgroup% + \noexpand\ifblank{#1}% + }% + \tud@res@a% +} % \end{macrocode} -% \end{macro}^^A \ifxblank +% \end{macro}^^A \tud@if@strblank +% \end{macro}^^A \tud@if@strempty +% \end{macro}^^A \tud@if@strstart +% \end{macro}^^A \tud@if@strequal % -% \subsubsection{Test auf booleschen Ausdruck in Form eines Strings} +% \minisec{Test auf booleschen Ausdruck in Form eines Strings} % -% \begin{macro}{\ifstrbool} +% \begin{macro}{\tud@if@strbool} % \changes{v2.03}{2015/01/09}{neu}^^A % Dieser Befehl dient zum Testen, ob ein gegebener String als boolescher % Ausdruck interpretiert werden kann. Ist der String als \enquote{wahr} % interpretierbar, wird das zweite Argument ausgeführt. Kann der String als % \enquote{falsch} angesehen werden, dementsprechen das dritte. Ist der String % kein logischer Wert, kommt das letzte Argument zum Tragen. Die Syntax lautet: -% -% \cs{ifstrbool}\marg{Argument}\marg{Wahr}\marg{Falsch}\marg{Andernfalls} -% \begin{macrocode} -\newcommand*\ifstrbool[4]{% - \ifstr{#1}{true}{#2}{% - \ifstr{#1}{on}{#2}{% - \ifstr{#1}{yes}{#2}{% - \ifstr{#1}{false}{#3}{% - \ifstr{#1}{no}{#3}{% - \ifstr{#1}{off}{#3}{% - #4% - }% - }% - }% +% \newline +% \cs{tud@if@strbool}\marg{Argument}\marg{Wahr}\marg{Falsch}\marg{Andernfalls} +% \begin{macrocode} +\newcommand*\tud@if@strbool[4]{% + \TUD@set@ifkey{strbool}{@tempswa}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \if@tempswa#2\else#3\fi% + \else% + #4 + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@if@strbool +% +% \minisec{Erzwungene Kleinschreibung von Strings} +% +% \begin{macro}{\tud@strlowercase} +% Dieses Makro expandiert das zweite Argument, setzt es in Minuskeln und +% speichert das Ergebnis in den im ersten Argument angegebenen Befehl. Dies +% wird zum Beispiel benötigt, um bestimmte Werte bei Schlüssel-Wert-Paaren, +% Schlüsselwörtern in einigen Feldern oder auch Einheiten bei Längenangaben +% sicher erkennen zu können. Die Syntax lautet: +% \newline +% \cs{tud@strlowercase}\marg{Zielmakro}\marg{String} benutzt. +% \begin{macrocode} +\newcommand*\tud@strlowercase[2]{% + \protected@edef#1{% + \lowercase{\def\noexpand#1{#2}}% + }#1% +} +% \end{macrocode} +% \end{macro}^^A \tud@strlowercase +% +% \minisec{Ausgabe einer Länge als Strings} +% +% \begin{macro}{\tud@strlength} +% \changes{v2.06o}{2022/07/28}{neu}^^A +% Die direkte Verwendung von \cs{the} auf ein \cs{skip}-Register hat zur Folge, +% dass die Einheit \val{pt} mit die Charactercodes \val{12} zurückgegeben +% werden, was bei der Weiterverarbeitung unter Umständen Probleme bereitet. +% Dieses Makro löst das Problem. +% \begin{macrocode} +\newcommand*\tud@strlength[2]{% + \begingroup% + \def\tud@res@c{\glueexpr#2\relax}% + \edef\tud@res@a{\strip@pt\dimexpr\tud@res@c\relax pt}% + \edef\tud@res@b{\strip@pt\dimexpr\gluestretch\tud@res@c\relax}% + \ifdim\tud@res@b\p@=\z@\relax\else% + \eappto\tud@res@a{% + \space\@plus\space\tud@res@b% + \ifcase\gluestretchorder\tud@res@c pt\or fil\or fill\or filll\fi% + }% + \fi% + \edef\tud@res@b{\strip@pt\dimexpr\glueshrink\tud@res@c\relax}% + \ifdim\tud@res@b\p@=\z@\relax\else% + \eappto\tud@res@a{% + \space\@minus\space\tud@res@b% + \ifcase\glueshrinkorder\tud@res@c pt\or fil\or fill\or filll\fi% }% + \fi% + \edef\tud@res@a{% + \endgroup% + \unexpanded{\def#1}{\tud@res@a}% }% - }% + \tud@res@a% } % \end{macrocode} -% \end{macro}^^A \ifstrbool +% \end{macro}^^A \tud@strlength +% +% \minisec{Entfernen aller Leerzeichen in Strings} +% +% \begin{macro}{\tud@remove@spaces@within} +% Hiermit können in einem gegebenen String \emph{alle} Leerzeichen enthaltenen +% entfernt werden. Dies wird verwendet, um für \cs{TUD@set@gluekey} sowie +% \cs{TUD@set@dimkey} eine Warnung auszugeben, falls das übergebene Argument +% fehlerhaft formatiert ist, wobei Unterschiede bei Leerzeichen ignoriert +% werden sollen. +% \begin{macrocode} +\newcommand*\tud@remove@spaces@within[1]{% + \begingroup% + \protected@edef\tud@res@a{\noexpand\zap@space#1\space\noexpand\@empty}% + \protected@edef\tud@res@a{% + \endgroup% + \unexpanded{\def#1}{\tud@res@a}% + }% + \tud@res@a% +} +% \end{macrocode} +% \end{macro}^^A \tud@remove@spaces@within % % \subsubsection{Test auf eine verwendbare Sprache} % % \begin{macro}{\iflanguageloaded} % \changes{v2.05}{2015/11/23}{neu}^^A % Hiermit kann getestet werden, ob das Argument als Sprache nutzbar ist. -% \ToDo{ist Befehl noch sinnvoll? use polyglossia \cs{xpg@[b]loaded}?}[v2.07] -% \ToDo{für polyglossia auch mit \cs{ifbabellanguageloaded} testen?}[v2.07] -% \ToDo{besser nur als internen Befehl definieren \cs{tud@if@...}?!}[v2.07] % \begin{macrocode} -\newcommand*\iflanguageloaded[1]{% - \PackageWarning{tudscrbase}{% - Whether package `babel' nor package `polyglossia' has been loaded% +\AtEndPreamble{% + \providecommand*\iflanguageloaded[1]{% + \PackageWarning{tudscrbase}{% + `\string\iflanguageloaded' is not defined. Loading\MessageBreak% + either package `babel' or package `polyglossia'\MessageBreak% + is recommended% + }% + \def\iflanguageloaded##1{\expandafter\@secondoftwo}% + \iflanguageloaded{#1}% }% - \expandafter\@secondoftwo% } \AfterPackage*{babel}{% - \renewcommand*\iflanguageloaded[1]{% + \providecommand*\iflanguageloaded[1]{% \@expandtwoargs\in@{,#1,}{,\bbl@loaded,}% \ifin@% \expandafter\@firstoftwo% @@ -287,13 +577,12 @@ \fi% }% } -\BeforePackage{polyglossia}{\undef\iflanguageloaded} % \end{macrocode} % \end{macro}^^A \iflanguageloaded % % \subsubsection{Expansion geschützter Makros} % -% Im \LaTeX-Kernel wird der Befehl \cs{@expandtwoargs} definiert, welcher zwei +% Im \LaTeX"~Kernel wird der Befehl \cs{@expandtwoargs} definiert, welcher zwei % Argumente in ein angegebenes Makro vollständig expandiert. Dabei erfolgt die % Expansion der beiden Argumente aufgrund der standardmäßigen Verwendung von % \cs{edef} allerdings vollständig und ohne die Beachtung von \cs{protect}. @@ -310,7 +599,7 @@ % % \subsubsection{Division für rationale Zahlen} % -% Mit \LaTeXe{} kann~-- ohne die Verwendung zusätzlicher Pakete~-- nicht ohne +% Mit \LaTeX{} kann~-- ohne die Verwendung zusätzlicher Pakete~-- nicht ohne % Weiteres eine Division durchgeführt werden, die als Ergenis eine rationale % Zahl liefert. Dem wird hier Abhilfe geleistet. % \begin{macro}{\tud@divide} @@ -335,29 +624,29 @@ % \begin{macrocode} \ifdim\@tempdima>\@tempdimb\relax% \@whiledim\@tempdimb>1pt\relax\do{% - \setlength\@tempdima{.1\@tempdima}% - \setlength\@tempdimb{.1\@tempdimb}% + \setlength\@tempdima{\dimexpr\@tempdima/10\relax}% + \setlength\@tempdimb{\dimexpr\@tempdimb/10\relax}% }% \setlength\@tempdimc{\@tempdima}% \else% \@whiledim\@tempdima>1pt\relax\do{% - \setlength\@tempdima{.1\@tempdima}% - \setlength\@tempdimb{.1\@tempdimb}% + \setlength\@tempdima{\dimexpr\@tempdima/10\relax}% + \setlength\@tempdimb{\dimexpr\@tempdimb/10\relax}% }% \setlength\@tempdimc{\@tempdimb}% \fi% \@tempcnta=1\relax% - \@whiledim\dimexpr\@tempcnta\@tempdimc\relax<.01\maxdimen\do{% + \@whiledim% + \dimexpr\@tempcnta\@tempdimc\relax<\dimexpr\maxdimen/100\relax% + \do{% \multiply\@tempcnta by 10\relax% }% % \end{macrocode} % Mit dem im temporären Zählerregister \cs{@tempcnta} gespeicherten Faktor % wird der Dividend erweitert und der berechnete Quotient wieder gekürzt. % \begin{macrocode} - \setlength\@tempdimc{% - \dimexpr(\@tempcnta\@tempdima / \@tempdimb * \p@)\relax% - }% - \setlength\@tempdimc{\dimexpr \@tempdimc/\@tempcnta\relax}% + \setlength\@tempdimc{\dimexpr(\@tempcnta\@tempdima/\@tempdimb*\p@)\relax}% + \setlength\@tempdimc{\dimexpr\@tempdimc/\@tempcnta\relax}% % \end{macrocode} % Das Ergebnis wird in das angegebene Makro expandiert. % \begin{macrocode} @@ -367,24 +656,6 @@ % \end{macrocode} % \end{macro}^^A \tud@divide % -% \subsubsection{Erzwungene Kleinschreibung von Strings} -% -% Um angegebene Werte bei Schlüssel-Wert-Paaren oder Schlüsselwörter in -% bestimmten Feldern mit Sicherheit erkennen zu können, werden diese zwingend -% in Kleinbuchstaben geschieben. -% \begin{macro}{\tud@lowerstring} -% Das Makro wird mit \cs{tud@lowerstring}\marg{Zielmakro}\marg{String} benutzt. -% \ToDo{geht das eleganter als mit \cs{expandafter}?}[v2.07] -% \begin{macrocode} -\newcommand*\tud@lowerstring[2]{% - \protected@edef#1{#2}% - \lowercase\expandafter{% - \expandafter\def\expandafter #1\expandafter{#1}% - }% -} -% \end{macrocode} -% \end{macro}^^A \tud@lowerstring -% % \subsubsection{Test auf vorhandene Dateien von Schriftdefinitionen} % % \begin{macro}{\tud@if@fdfileexists} @@ -401,14 +672,14 @@ % Varianten getestet. Zunächst die Standardvariante in Kleinschreibung\dots % \begin{macrocode} \@tud@res@swatrue% - \tud@lowerstring\tud@res@a{#1#2.fd}% + \tud@strlowercase\tud@res@a{#1#2.fd}% \IfFileExists{\tud@res@a}{\@tud@res@swafalse}{}% % \end{macrocode} % \dots gefolgt von der Variante mit Kleinschreibung der Kodierung und dem % Namen der Schrift wie angegeben\dots % \begin{macrocode} \if@tud@res@swa% - \tud@lowerstring\tud@res@a{#1}% + \tud@strlowercase\tud@res@a{#1}% \edef\tud@res@a{\tud@res@a#2.fd}% \IfFileExists{\tud@res@a}{\@tud@res@swafalse}{}% \fi% @@ -437,14 +708,11 @@ % \begin{macro}{\tud@cs@letltx} % \changes{v2.06}{2019/06/13}{\cs{LetLtxMacro} zum Sichern originärer Makros}^^A % \begin{macro}{\tud@cs@store} -% \changes{v2.06}{2018/07/15}{% -% mit \cs{DeclareRobustCommand} definierte Befehle unterstüzt% -% }^^A +% \changes{v2.06}{2018/07/15}{mit \cs{DeclareRobustCommand} definierte Befehle +% werden unterstüzt}^^A % \begin{macro}{\tud@cs@restore} -% \changes{v2.06}{2018/07/15}{% -% stellt originäre Makros auch wieder her, wenn diese mit \cs{undef} -% zwischendurch \emph{undefiniert} gesetzt wurden% -% }^^A +% \changes{v2.06}{2018/07/15}{stellt originäre Makros auch wieder her, wenn +% diese mit \cs{undef} zwischendurch \emph{undefiniert} gesetzt wurden}^^A % \begin{macro}{\tud@cs@reset} % \begin{macro}{\tud@cs@update} % \changes{v2.04}{2015/03/03}{neu}^^A @@ -458,6 +726,7 @@ % % Der Befehl \cs{tud@cs@letltx} nutzt intern \cs{LetLtxMacro} aus dem Paket % \pkg{letltxmacro}, um auch robust definierte Befehle korrekt zu sichern. +% \ToDo{Kernel stellt mittlerweiele \cs{NewCommandCopy} bereit}[v2.07] % \begin{macrocode} \newcommand*\tud@cs@letltx[2]{% \expandafter\expandafter\expandafter\LetLtxMacro% @@ -465,21 +734,22 @@ } % \end{macrocode} % Mit dem Aufruf \cs{tud@cs@store}\marg{Befehlsname} wird der im Argument -% angegebene Befehl in einem neuem Makro \cs{@@tud@\meta{Befehlsname}} +% angegebene Befehl in einem neuem Makro |\@@tud@|\meta{Befehlsname} % gespeichert. Dieser kann danach beliebig angepasst werden. Soll der Befehl zu % einem späteren Zeitpunkt auf den Orginalzustand zurücksetzen, kann hierfür % jederzeit der Befehl \cs{tud@cs@reset}\marg{Befehlsname} verwendet werden. % Durch das Makro \cs{tud@cs@restore}\marg{Befehlsname} wird das mit -% \cs{tud@cs@store} erstellte Hilfsmakro zusätzlich noch gelöscht. Der +% \cs{tud@cs@store} erstellte Hilfsmakro zusätzlich noch gelöscht. Der % ursprüngliche Befehl kann als solcher mit \cs{tud@cs@use}\marg{Befehlsname} % weiterhin genutzt werden. Ein zuvor bereits gesicherter Befehl kann mit % \cs{tud@cs@update}\marg{Befehlsname} auf die momentane Definition % aktualisiert werden. % \begin{macrocode} \newrobustcmd*\tud@cs@store[1]{% - \tud@cs@check{#1}% - \ifcsdef{@@tud@#1}{}{% - \tud@cs@letltx{@@tud@#1}{#1}% + \tud@cs@check{#1}{% + \ifcsdef{@@tud@#1}{}{% + \tud@cs@letltx{@@tud@#1}{#1}% + }% }% } \newrobustcmd*\tud@cs@restore[1]{% @@ -497,30 +767,34 @@ % \end{macrocode} % Die eigentliche Wiederherstellung. % \begin{macrocode} - \tud@cs@check{#1}% - \ifcsdef{@@tud@#1}{% - \tud@cs@letltx{#1}{@@tud@#1}% - \csundef{@@tud@#1}% - }{}% + \tud@cs@check{#1}{% + \ifcsdef{@@tud@#1}{% + \tud@cs@letltx{#1}{@@tud@#1}% + \csundef{@@tud@#1}% + }{}% + }% } \newrobustcmd*\tud@cs@reset[1]{% - \tud@cs@check{#1}% - \ifcsdef{@@tud@#1}{% - \tud@cs@letltx{#1}{@@tud@#1}% - }{}% + \tud@cs@check{#1}{% + \ifcsdef{@@tud@#1}{% + \tud@cs@letltx{#1}{@@tud@#1}% + }{}% + }% } \newrobustcmd*\tud@cs@update[1]{% - \tud@cs@check{#1}% - \ifcsdef{@@tud@#1}{% - \tud@cs@letltx{@@tud@#1}{#1}% - }{}% + \tud@cs@check{#1}{% + \ifcsdef{@@tud@#1}{% + \tud@cs@letltx{@@tud@#1}{#1}% + }{}% + }% } \newrobustcmd*\tud@cs@use[1]{% - \tud@cs@check{#1}% - \ifcsdef{@@tud@#1}{% - \csuse{@@tud@#1}% - }{% - \csuse{#1}% + \tud@cs@check{#1}{% + \ifcsdef{@@tud@#1}{% + \csuse{@@tud@#1}% + }{% + \csuse{#1}% + }% }% } % \end{macrocode} @@ -529,14 +803,24 @@ % Fall sein, wird ein Fehler ausgegeben. % \begin{macrocode} \newrobustcmd*\tud@cs@check[1]{% - \ifcsdef{#1}{}{% - \PackageError{tudscrbase}{% - `\@backslashchar#1' is not defined}{% - The command `\@backslashchar#1' was never defined. \MessageBreak% - Please contact the TUD-Script maintainer\MessageBreak% - via \tudscrmail. A bugfix is urgently required.% - }% - }% + \begingroup% + \ifcsdef{#1}{\@tud@res@swatrue}{\@tud@res@swafalse}% + \if@tud@res@swa% + \ifcscounter{#1}{\@tud@res@swafalse}{}% + \ifcslength{#1}{\@tud@res@swafalse}{}% + \ifcsdimen{#1}{\@tud@res@swafalse}{}% + \fi% + \if@tud@res@swa% + \aftergroup\@firstofone% + \else% + \PackageError{tudscrbase}{`\@backslashchar#1' is not a defined macro}{% + The macro `\@backslashchar#1' was never defined. \MessageBreak% + Please contact the TUD-Script maintainer\MessageBreak% + via \TUDScriptContact. A bugfix is urgently required.% + }% + \aftergroup\@gobble% + \fi% + \endgroup% } % \end{macrocode} % \end{macro}^^A \tud@cs@check @@ -546,78 +830,74 @@ % \end{macro}^^A \tud@cs@restore % \end{macro}^^A \tud@cs@store % \end{macro}^^A \tud@cs@letltx -% \begin{macro}{\tud@skip@store} +% \begin{macro}{\tud@cslength@store} % \changes{v2.04}{2015/03/02}{neu}^^A -% \changes{v2.05}{2016/07/13}{Verwendung von \cs{tud@skip@check}}^^A -% \begin{macro}{\tud@skip@restore} +% \changes{v2.05}{2016/07/13}{Verwendung von \cs{tud@cslength@check}}^^A +% \begin{macro}{\tud@cslength@restore} % \changes{v2.04}{2015/03/02}{neu}^^A -% \changes{v2.05}{2016/07/13}{Verwendung von \cs{tud@skip@check}}^^A -% \begin{macro}{\tud@skip@reset} +% \changes{v2.05}{2016/07/13}{Verwendung von \cs{tud@cslength@check}}^^A +% \begin{macro}{\tud@cslength@reset} % \changes{v2.05}{2016/07/13}{neu}^^A -% \begin{macro}{\tud@skip@set} -% \changes{v2.04}{2015/05/05}{neu}^^A -% \changes{v2.05}{2016/07/13}{Verwendung von \cs{tud@skip@check}}^^A -% \begin{macro}{\tud@skip@check} +% \begin{macro}{\tud@cslength@check} % \changes{v2.05}{2016/07/13}{neu}^^A % Hiermit können~-- äquivalent zum Sichern und Wiederherstellen von Befehlen~-- % Längenregister abgespeichert werden. % \begin{macrocode} -\newcommand*\tud@skip@store[1]{% - \tud@skip@check{#1}{% - \ifcsdef{@@tud@skip@#1}{}{% - \csedef{@@tud@skip@#1}{\expandafter\the\csname #1\endcsname}% - }% - }% -} -\newcommand*\tud@skip@restore[1]{% - \tud@skip@check{#1}{% - \ifcsdef{@@tud@skip@#1}{% - \csname #1\endcsname=\csname @@tud@skip@#1\endcsname% - \csundef{@@tud@skip@#1}% +\newcommand*\tud@cslength@store[1]{% + \tud@cslength@check{#1}{% + \ifcsundef{@@tud@length@#1}{% + \csedef{@@tud@length@#1}{\expandafter\the\csname #1\endcsname}% }{}% }% } -\newcommand*\tud@skip@reset[1]{% - \tud@skip@check{#1}{% - \ifcsdef{@@tud@skip@#1}{% - \csname#1\endcsname=\csname @@tud@skip@#1\endcsname% - }{}% +\newcommand*\tud@cslength@restore[1]{% + \tud@cslength@check{#1}{% + \ifcsundef{@@tud@length@#1}{}{% + \expandafter\setlength\csname #1\endcsname{% + \csname @@tud@length@#1\endcsname% + }% + \csundef{@@tud@length@#1}% + }% }% } -\newcommand*\tud@skip@set[2]{% - \tud@skip@check{#1}{% - \expandafter\setlength\csname #1\endcsname{#2}% +\newcommand*\tud@cslength@reset[1]{% + \tud@cslength@check{#1}{% + \ifcsundef{@@tud@length@#1}{}{% + \expandafter\setlength\csname #1\endcsname{% + \csname @@tud@length@#1\endcsname% + }% + }% }% } -\newcommand*\tud@skip@check[1]{% - \begingroup% - \@tempswafalse% - \expandafter\ifisskip\expandafter{\csname#1\endcsname}{\@tempswatrue}{}% - \expandafter\ifisdimen\expandafter{\csname#1\endcsname}{\@tempswatrue}{}% - \if@tempswa% - \aftergroup\@firstofone% - \else% - \aftergroup\@gobble% - \fi% - \endgroup% +\newcommand*\tud@cslength@check[1]{% + \expandafter\tud@if@lengthregister\expandafter{\csname #1\endcsname}{% + \expandafter\@firstofone% + }{% + \PackageError{tudscrbase}{`\@backslashchar#1' is not a defined length}{% + The length `\@backslashchar#1' was never defined. \MessageBreak% + Please contact the TUD-Script maintainer\MessageBreak% + via \TUDScriptContact. A bugfix is urgently required.% + }% + \expandafter\@gobble% + }% } % \end{macrocode} -% \end{macro}^^A \tud@skip@check -% \end{macro}^^A \tud@skip@set -% \end{macro}^^A \tud@skip@reset -% \end{macro}^^A \tud@skip@restore -% \end{macro}^^A \tud@skip@store +% \end{macro}^^A \tud@cslength@check +% \end{macro}^^A \tud@cslength@reset +% \end{macro}^^A \tud@cslength@restore +% \end{macro}^^A \tud@cslength@store % \begin{macro}{\tud@patch@wrn} % \TUDScript verwendet die Möglichkeiten von \pkg{etoolbox} und \pkg{xpatch}, % um mit den Makros (\cs{[x]apptocmd}, \cs{[x]pretocmd}, \cs{[x]patchcmd}) % bereits definierte Befehle anzupassen. Falls dies nicht gelingt, wird eine % Warnung ausgegeben, die hier definiert wird. +% \ToDo{generelle Schnittstelle schaffen und failure hier behandeln}[v2.07] % \begin{macrocode} \newcommand*\tud@patch@wrn[1]{% \PackageWarning{tudscrbase}{% It wasn't possible to patch `\@backslashchar#1'\MessageBreak% Please contact the TUD-Script maintainer\MessageBreak% - via \tudscrmail. Without a bugfix an\MessageBreak% + via \TUDScriptContact. Without a bugfix an\MessageBreak% erroneous output may occur% }% } @@ -637,8 +917,12 @@ % Zuerst ein paar Makros zur einfacheren Verwendung. % \begin{macrocode} \DefineFamily{TUD} -\newcommand*\TUDProcessOptions{\FamilyProcessOptions{TUD}} -\newcommand*\TUDExecuteOptions{\FamilyExecuteOptions{TUD}} +\newcommand*\TUDProcessOptions[1][.\@currname.\@currext]{% + \FamilyProcessOptions[{#1}]{TUD}% +} +\newcommand*\TUDExecuteOptions[1][.\@currname.\@currext]{% + \FamilyExecuteOptions[{#1}]{TUD}% +} \newcommand*\TUDoptions{\FamilyOptions{TUD}} \newcommand*\TUDoption{\FamilyOption{TUD}} % \end{macrocode} @@ -663,7 +947,7 @@ % aber in bestimmten Fällen eine Option in Abhängigkeit von einer anderen % unterschiedliche Standardwerte annehmen soll, wird dafür eine Möglichkeit % geschaffen. Hierfür wird für jede Option ein korrelierende Schalter -% \cs{if@tud@key@\meta{Schlüssel}@set} definiert. Dieser wird auf \val{true} +% |\if@tud@key@|\meta{Schlüssel}|@set| definiert. Dieser wird auf \val{true} % gesetzt, sobald der Schlüssel explizit gesetzt wurde, womit ein Standardwert % einer Klassenoption überschrieben werden kann. Das Setzen der Standardwerte % erfolgt intern mit dem Befehl \cs{TUD@key@preset}. @@ -671,7 +955,7 @@ \newcommand*\TUD@key[2][.\@currname.\@currext]{% % \end{macrocode} % Basierend auf dem Namen des Schalters wird die notwendige, boolesche Variable -% erzeugt (\cs{if@tud@key@\meta{Schlüssel}@set}), welche im Falle des direkten +% erzeugt (|\if@tud@key@|\meta{Schlüssel}|@set|), welche im Falle des direkten % Aufrufs des Schlüssels, ein Überschreiben mit einem Standardwert verhindert. % \begin{macrocode} \providebool{@tud@key@#2@set}% @@ -699,7 +983,7 @@ }% } % \end{macrocode} -% Es kann intern über \cs{if@tud@key@\meta{Schlüssel}@set} geprüft werden, ob +% Es kann intern über |\if@tud@key@|\meta{Schlüssel}|@set| geprüft werden, ob % einem Schlüssel ein explizites Wert zugewiesen wurde. Sollte dies nicht der % Fall sein, kann dieser hiermit intern beliebig angepasst werden. Da es durch % das Setzen der Option mit \cs{TUDoption} zu einer Sperrung kommt, muss diese @@ -716,34 +1000,41 @@ % \end{macro}^^A \TUD@key@@define % \end{macro}^^A \TUD@key@define % \end{macro}^^A \TUD@key +% +% Die folgenden Befehle dienen zum Verarbeiten der Optionen, wobei prinzipiell +% auch eine freie Definition mit anschließender Abarbeitung ohne diese möglich +% ist. +% % \begin{macro}{\TUD@set@ifkey} % \changes{v2.06}{2018/08/01}{forcierte Kleinschreibung Schlüsselwerte}^^A +% Hiermit wird der Option ein einfacher Schalterwert zugewiesen. +% \begin{macrocode} +\newcommand*\TUD@set@ifkey[3]{% + \begingroup% + \tud@strlowercase\tud@res@a{#3}% + \edef\tud@res@a{% + \endgroup% + \unexpanded{\FamilySetBool{TUD}{#1}{#2}}{\tud@res@a}% + }% + \tud@res@a% +} +% \end{macrocode} +% \end{macro}^^A \TUD@set@ifkey % \begin{macro}{\TUD@set@numkey} % \changes{v2.02}{2014/11/05}{neu}^^A % \changes{v2.06}{2018/08/01}{forcierte Kleinschreibung Schlüsselwerte}^^A % \begin{macro}{\TUD@bool@numkey} % \changes{v2.03}{2015/01/09}{neu}^^A -% \begin{macro}{\TUD@set@dimenkey} -% \changes{v2.05}{2016/06/15}{neu}^^A -% \changes{v2.06}{2018/08/01}{forcierte Kleinschreibung Schlüsselwerte}^^A -% \begin{macro}{\TUD@unknown@keyval} -% Dies sind die Befehle zum Setzen der Optionen. Diese können entweder als -% Schalter (\cs{TUD@set@ifkey}) oder aber mit mehreren möglichen Werten -% (\cs{TUD@set@numkey}) definiert werden. Prinzipiell ist auch eine freie -% Definition mit anschließender Abarbeitung ohne die zuvor genannten Befehle -% möglich. +% Hiermit werden für eine Option mehrere mögliche Werte definiert. % \begin{macrocode} -\newcommand*\TUD@set@ifkey[3]{% - \tud@lowerstring\tud@res@a{#3}% - \edef\tud@res@b{% - \etex@unexpanded{\FamilySetBool{TUD}{#1}{#2}}{\tud@res@a}% - }\tud@res@b% -} \newcommand*\TUD@set@numkey[4]{% - \tud@lowerstring\tud@res@a{#4}% - \edef\tud@res@b{% - \etex@unexpanded{\FamilySetNumerical{TUD}{#1}{#2}{#3}}{\tud@res@a}% - }\tud@res@b% + \begingroup% + \tud@strlowercase\tud@res@a{#4}% + \edef\tud@res@a{% + \endgroup% + \unexpanded{\FamilySetNumerical{TUD}{#1}{#2}{#3}}{\tud@res@a}% + }% + \tud@res@a% } % \end{macrocode} % Um Dopplungen im Code zu vermeiden, werden für die numerische Schlüssel die @@ -753,16 +1044,322 @@ {false}{0},{off}{0},{no}{0},{true}{1},{on}{1},{yes}{1}% } % \end{macrocode} -% Mit \cs{TUD@set@dimenkey} wird der übergebene Längenwert im spezifiezierten -% Makro gespeichert. +% \end{macro}^^A \TUD@bool@numkey +% \end{macro}^^A \TUD@set@numkey +% \begin{macro}{\TUD@set@gluekey} +% \changes{v2.06o}{2022/08/01}{neu}^^A +% \begin{macro}{\tud@normalize@gluekey} +% \changes{v2.06o}{2022/08/01}{neu}^^A +% \begin{macro}{\tud@normalize@@gluekey} +% \changes{v2.06o}{2022/08/01}{neu}^^A +% \begin{macro}{\tud@validate@gluekey} +% \changes{v2.06o}{2022/08/01}{neu}^^A +% Mit \cs{TUD@set@gluekey} und \cs{TUD@set@dimkey} wird der übergebene Wert +% entweder als Skip (Länge mit Kleister) oder Dimension (Länge ohne Kleister) +% im spezifizierten Makro gespeichert, wobei auf eine gültige Eingabe geprüft +% wird. +% +% Wurde ein Argument übergeben, dass in einen String expandiert, ist einiger +% Aufwand notwendig, da das zugrunde liegende \cs{FamilySetLength} einen Fehler +% wirft, wenn eine Längenangabe mit falscher Einheit übergeben wird. Das +% optionale Argument gibt die gewünschte Längeneinheit an, falls diese im +% Argument nicht spezifiert wurde. +% \begin{macrocode} +\newcommand*\TUD@set@gluekey[4][pt]{% + \begingroup% + \tud@strlowercase\tud@res@a{#4}% +% \end{macrocode} +% Es wird geprüft, ob das Argument zu einem String expandiert. Ist dies der +% Fall, wird die vermeintliche Längenangabe mit \cs{tud@normalize@gluekey} +% normalisiert, wobei das Resultat in das Makro im ersten Argument des Befehls +% zurückgeschrieben wird. Sollte das Normalisieren nicht gelingen, wird ein +% leerer Wert zurückgegeben. +% \begin{macrocode} + \edef\tud@res@b{\detokenize\expandafter{\tud@res@a}}% + \edef\tud@res@c{\detokenize\expandafter{\@backslashchar}}% + \@expandtwoargs\in@{\tud@res@c}{\tud@res@b}% + \ifin@\else% + \tud@normalize@gluekey\tud@res@a{#1}% + \fi% +% \end{macrocode} +% Konnte eine Längenangabe interpretiert werden, wird für ein falsch +% formatiertes Argument mit \cs{tud@validate@gluekey} ggf. eine Warnung +% ausgegeben und anschließend der gültige Wert gesetzt. +% \begin{macrocode} + \protected@edef\tud@res@a{% + \endgroup% + \ifx\tud@res@a\@empty% + \noexpand\FamilyKeyStateUnknownValue% + \else% + \unexpanded{\tud@validate@gluekey{#2}}{\tud@res@a}{#4}% + \unexpanded{\FamilySetUseLengthMacro{TUD}{#2}{#3}}{\tud@res@a}% + \fi% + }% + \tud@res@a% +} +% \end{macrocode} +% Das Makro \cs{tud@normalize@gluekey} erhält im ersten Argument den zu +% interpretierenden String und im zweiten die ggf. zu setzende Einheit. Dieser +% String wird in den Basiswert und möglichen Kleister aufgetrennt, wobei +% hierbei auch eine vertauschte und eigentlich fehlerhafte Angabe von Kleister +% in der Form |... minus ... plus ...| verarbeitet wird. +% \begin{macrocode} +\newcommand*\tud@normalize@gluekey[2]{% + \begingroup% + \edef\tud@res@c{#1}% + \def\tud@res@a##1plus##2plus##3\@nil{% + \let\tud@res@a\@empty% + \tud@res@b##1minusminus\@nil% + \tud@res@b##2minusminus\@nil% + }% +% \end{macrocode} +% Die vier Token \marg{Grundwert}\marg{negativ}\marg{positiv}\marg{negativ} +% werden in \cs{tud@res@a} geschrieben, wobei der zweite Token mit negativem +% Kleister gesetzt ist, falls dieser \emph{vor} dem positiven angegeben wurde. % \begin{macrocode} -\newcommand*\TUD@set@dimenkey[3]{% - \tud@lowerstring\tud@res@a{#3}% - \edef\tud@res@b{% - \etex@unexpanded{\FamilySetUseLengthMacro{TUD}{#1}{#2}}{\tud@res@a}% - }\tud@res@b% + \def\tud@res@b##1minus##2minus##3\@nil{% + \eappto\tud@res@a{{\trim@spaces{##1}}{\trim@spaces{##2}}}% + }% + \expandafter\tud@res@a\tud@res@c plusplus\@nil% +% \end{macrocode} +% Hier wird dementsprechend \cs{tud@res@a} auf drei Token reduziert und so +% definiert, dass auf den Grundwert erst der positive und danach der negative +% Kleister folgt. +% \begin{macrocode} + \def\tud@res@b##1##2##3##4{% + \IfArgIsEmpty{##2}{% + \def\tud@res@a{{##1}{##3}{##4}}% + }{% + \def\tud@res@a{{##1}{##3}{##2}}% + }% + }% + \expandafter\tud@res@b\tud@res@a% +% \end{macrocode} +% Jeder der drei Token wird nun mit \cs{tud@normalize@@gluekey} geprüft, ob +% es sich tatsächlich um eine Dimensionsangabe oder zumindest einen Zahlenwert +% handelt. Für letzteren Fall wird die übergebene Einheit angehangen. Kann ein +% Token nicht als Dimensionsangabe interpretiert werden~-- das übergebene Makro +% wird zu \cs{relax} gesetzt~-- wird der Prozess abgebrochen. +% \begin{macrocode} + \edef\tud@res@b{% + \unexpanded{\@tfor\tud@res@b:=}\tud@res@a% + }% + \let\tud@res@c\@empty% + \@tud@res@swatrue% + \tud@res@b\do{% + \tud@normalize@@gluekey\tud@res@a{\tud@res@b}{#2}% + \ifx\tud@res@a\relax% + \@tud@res@swafalse% + \@break@tfor% + \else% + \eappto\tud@res@c{{\tud@res@a}}% + \fi% + }% +% \end{macrocode} +% Nach dem Durchlauf enthält \cs{tud@res@c} alle drei zuvor extrahierten Token, +% die ggf. um eine Einheit ergänzt wurden, falls diese gegeben waren. Der erste +% Token erhält folgend eine Sonderbehandlung. Wenn dieser leer ist, wird er auf +% alle Fälle gesetzt, da es sonst zu Problemen bei der Wertzuweisung an ein +% Längenregister gibt. +% \begin{macrocode} + \let\tud@res@a\@empty% + \if@tud@res@swa% + \def\tud@res@b##1##2##3{% + \IfArgIsEmpty{##1}{\def\tud@res@b{0#2}}{\def\tud@res@b{##1}}% + \Ifdimen{\tud@res@b}{% + \edef\tud@res@a{% + \tud@res@b% + \IfArgIsEmpty{##2}{}{\space\@plus\space##2}% + \IfArgIsEmpty{##3}{}{\space\@minus\space##3}% + }% + }{}% + }% + \expandafter\tud@res@b\tud@res@c% + \fi% + \edef\tud@res@c{% + \endgroup% + \unexpanded{\def#1}{\tud@res@a}% + }% + \tud@res@c% } % \end{macrocode} +% Diese Makro behandelt die einzelnen extrahierten Token. Dabei müssen zuerst +% die Vorzeichen beachtet werden, welches erst in \cs{tud@res@b} gesichert und +% anschließend von \cs{tud@res@a} entfernt wird. +% \begin{macrocode} +\newcommand*\tud@normalize@@gluekey[3]{% + \begingroup% + \edef\tud@res@a{#2}% + \@tud@res@swafalse% + \expandafter\if\expandafter\@car\tud@res@a\relax\@nil+\@tud@res@swatrue\fi% + \expandafter\if\expandafter\@car\tud@res@a\relax\@nil-\@tud@res@swatrue\fi% + \if@tud@res@swa% + \protected@edef\tud@res@b{\expandafter\@car\tud@res@a\relax\@nil}% + \protected@edef\tud@res@a{\expandafter\@gobble\tud@res@a}% + \else% + \let\tud@res@b\@empty% + \fi% +% \end{macrocode} +% Danach wird mit \cs{Ifdimen} geprüft, ob die Angabe tatsächlich eine Länge +% ist. Hier kommt zum Tragen, das \cs{Ifdimen} auch wahr ist, wenn lediglich +% eine gültige Einheit ohne Maßzahl (\cs{Ifdimen}|{pt}|) angegeben wird. +% Für Werte ohne Dimensionsangabe wird gegebenenfalls einfach das optionale +% Argument als intendierte angenommen. Sollte es sich bei dem Argument nicht um +% einen String sondern um eine \TeX"~Primitive oder ein geschütztes Makro +% handeln, wird kein \val{true}-Zweig durchlaufen. +% \begin{macrocode} + \@tud@res@swatrue% + \Ifdimen{\tud@res@a}{}{% + \Ifdimen{\tud@res@a#3}{% + \appto\tud@res@a{#3}% + }{% + \@tud@res@swafalse% + }% + }% +% \end{macrocode} +% Wertangaben ohne Betrag werden ignoriert. +% \begin{macrocode} + \if@tud@res@swa% + \Ifisdimension{\tud@res@a}{}{% + \let\tud@res@a\@empty% + \let\tud@res@b\@empty% + }% + \else% +% \end{macrocode} +% Sollte keine gültige Dimension angegeben worden sein, wird nun geprüft, ob es +% sich um eine dehnbare Länge handelt. Diese \emph{muss} mit einer Maßzahl +% genutzt werden. Fehlt diese, wird \val{1} angenommen. Außerdem ist zu +% beachten, dass es insgesamt drei Abstufungen der dehnbaren Ausdrücke +% existieren. +% \begin{macrocode} + \def\tud@res@c##1fil##2fil##3\@nil{% + \IfArgIsEmpty{##1}{\def\tud@res@a{1}}{\def\tud@res@a{##1}}% + \Ifdimen{\tud@res@a pt}{\@tud@res@swatrue}{\@tud@res@swafalse}% + \if@tud@res@swa% + \appto\tud@res@a{fil##2}% + \tud@if@strequal{##2}{}{}{% + \tud@if@strequal{##2}{l}{}{% + \tud@if@strequal{##2}{ll}{}{\@tud@res@swafalse}% + }% + }% + \fi% + }% + \expandafter\tud@res@c\tud@res@a filfil\@nil% + \fi% +% \end{macrocode} +% Das Vorzeichen nicht vergessen! +% \begin{macrocode} + \edef\tud@res@c{% + \endgroup% + \if@tud@res@swa% + \unexpanded{\def#1}{\tud@res@b\tud@res@a}% + \else% + \unexpanded{\let#1\relax}% + \fi% + }% + \tud@res@c% +} +% \end{macrocode} +% Mit diesem Makro wird ganz am Ende des Interpretationsprozesses das Ergebnis +% mit dem angegbenen Argument verglichen und eine Warnung erzeugt, falls die +% Formatierung des Argumentes es notwendig machte, dieses zu interpretieren. +% \begin{macrocode} +\newcommand*\tud@validate@gluekey[3]{% + \begingroup% +% \end{macrocode} +% Unterschiede bei Leerzeichen sollen keine Warnung erzeugen. +% \begin{macrocode} + \protected@edef\tud@res@a{#2}% + \protected@edef\tud@res@b{#3}% + \tud@remove@spaces@within\tud@res@a% + \tud@remove@spaces@within\tud@res@b% + \ifx\tud@res@a\tud@res@b% + \aftergroup\@gobble% + \else% + \aftergroup\@firstofone% + \fi% + \endgroup{% + \PackageWarning{tudscrbase}{% + The length `#3'\MessageBreak% + seems to be wrong formatted. Assuming, you meant\MessageBreak% + `#1=#2'% + }% + }% +} +% \end{macrocode} +% \end{macro}^^A \tud@validate@gluekey +% \end{macro}^^A \tud@normalize@@gluekey +% \end{macro}^^A \tud@normalize@gluekey +% \end{macro}^^A \TUD@set@gluekey +% \begin{macro}{\TUD@set@dimkey} +% \changes{v2.05}{2016/06/15}{neu}^^A +% \changes{v2.06}{2018/08/01}{forcierte Kleinschreibung Schlüsselwerte}^^A +% Zur Angabe von Dimensionen wird auf \cs{TUD@set@gluekey} zurückgegriffen +% und anschließend geprüft, ob das Argument für \cs{dimen} genutzt werden kann. +% \begin{macrocode} +\newcommand*\TUD@set@dimkey[4][pt]{% + \begingroup% + \TUD@set@gluekey[{#1}]{#2}{\tud@res@a}{#4}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% +% \end{macrocode} +% Das Ergebnis der Wertzuweisung an \cs{TUD@set@gluekey} wurde im Makro +% \cs{tud@res@a} gespeichert. Handelt es sich beim Argument um ein +% \cs{skip}"~Register oder eine \cs{glueexpr}, kann nicht sichergestellt +% werden, dass diesem später doch noch Kleister hinzugefügt wird, weshalb diese +% nicht akzeptiert werden. +% \begin{macrocode} + \@tud@res@swafalse% + \Ifisskip{\tud@res@a}{% + \protected@edef\tud@res@a{\dimexpr\tud@res@a\relax}% + \def\tud@res@b{a \string\skip\space register}% + \@tud@res@swatrue% + }{% + \Ifisglueexpr{\tud@res@a}{% + \protected@edef\tud@res@a{\dimexpr\tud@res@a\relax}% + \def\tud@res@b{a glue expression}% + \@tud@res@swatrue% + }{% +% \end{macrocode} +% Ebenso wird direkt angegebener Kleister entfernt. Nicht über das Konstrukt +% mit \cs{@tempdima} und \cs{glueexpr} wundern. Ohne das Paket \pkg{calc} ist +% die Zuweisung von Kleister als String an ein \cs{dimen}-Register nicht ohne +% weiteres möglich. Die Verwendung \cs{glueexpr} dient quasi als Umschlag. +% \begin{macrocode} + \Ifisglue{\tud@res@a}{% + \Ifisdimension{\tud@res@a}{}{% + \setlength\@tempdima{\dimexpr\glueexpr\tud@res@a\relax\relax}% + \tud@strlength\tud@res@a{\@tempdima}% + \def\tud@res@b{something containing glue}% + \@tud@res@swatrue% + }% + }{}% + }% + }% +% \end{macrocode} +% Sollte einer der zuvor beschriebenen Fälle aufgetreten sein, wird eine +% Warnung ausgegeben. +% \begin{macrocode} + \if@tud@res@swa% + \PackageWarning{tudscrbase}{% + Using option `#2' with\MessageBreak% + \tud@res@b\space(#4)\MessageBreak% + is not recommended. You should consider to use\MessageBreak% + an expression for a dimen instead. Setting\MessageBreak% + `#2=\tud@res@a'% + }% + \fi% + \protected@edef\tud@res@a{% + \endgroup% + \unexpanded{\FamilySetUseLengthMacro{TUD}{#2}{#3}}{\tud@res@a}% + }% + \else% + \def\tud@res@a{\endgroup\FamilyKeyStateUnknownValue}% + \fi% + \tud@res@a% +} +% \end{macrocode} +% \end{macro}^^A \TUD@set@dimkey +% \begin{macro}{\TUD@unknown@keyval} % Dieser Befehl wird lediglich pro forma definiert. An diesen kann eine Liste % möglicher Wertzuweisungen übergeben werden, welche durch \KOMAScript{} % derzeit jedoch nicht abgearbeitet und ausgegeben wird. @@ -770,10 +1367,9 @@ \newcommand*\TUD@unknown@keyval{\FamilyUnknownKeyValue{TUD}} % \end{macrocode} % \end{macro}^^A \TUD@unknown@keyval -% \end{macro}^^A \TUD@set@dimenkey -% \end{macro}^^A \TUD@set@numkey -% \end{macro}^^A \TUD@bool@numkey -% \end{macro}^^A \TUD@set@ifkey +% +% \subsubsection{Voreinstellungen für abhängige Optionen} +% % \begin{macro}{\tud@locked@newnum} % \begin{macro}{\tud@locked@num@preset} % \begin{macro}{\tud@locked@num@set} @@ -781,10 +1377,11 @@ % definieren, für das mit \cs{tud@locked@num@preset}\marg{Name}\marg{Definition} % eine Voreinstellung definiert werden kann, solange der Wert nicht mit % \cs{tud@locked@num@set}\marg{Name}\marg{Definition} explizit überschrieben -% wurde. +% wurde. Damit ist es möglich, Voreinstellungen abhängig von anderen Optionen +% zu realisieren. % \begin{macrocode} \newcommand*\tud@locked@newnum[2]{% - \expandafter\newcommand\expandafter*\csname#1\endcsname{#2}% + \expandafter\newcommand\expandafter*\csname #1\endcsname{#2}% \newbool{#1@locked}% \tud@num@set{#1}{#2}% } @@ -799,8 +1396,15 @@ \booltrue{#1@locked}% } \newcommand*\tud@num@set[2]{% - \ifcsdef{#1}{% - \ifnumber{#2}{% + \ifcsundef{#1}{% + \PackageError{tudscrbase}{% + `\@backslashchar#1' was never defined% + }{% + You tried using the numerical expression `\@backslashchar#1'\MessageBreak% + but you didn't define it with `\string\tud@locked@newnum'.% + }% + }{% + \Ifnumber{#2}{% \csdef{#1}{#2}% }{% \PackageError{tudscrbase}{% @@ -810,13 +1414,6 @@ to value `#2', which isn't numerical.% }% }% - }{% - \PackageError{tudscrbase}{% - `\@backslashchar#1' was never defined% - }{% - You tried using the numerical expression `\@backslashchar#1'\MessageBreak% - but you didn't define it with `\string\tud@locked@newnum'.% - }% }% } % \end{macrocode} @@ -850,7 +1447,7 @@ \booltrue{#1@locked}% } \newcommand*\tud@bool@set[2]{% - \ifstrbool{#2}{\booltrue{#1}}{\boolfalse{#1}}{% + \tud@if@strbool{#2}{\booltrue{#1}}{\boolfalse{#1}}{% \PackageError{tudscrbase}{% `#2' is not a valid boolean expression% }{% @@ -872,7 +1469,7 @@ % \begin{macro}{\TUD@parameter@@family} % \begin{macro}{\TUD@parameter@checkfamily} % Mit \cs{TUD@parameter@family}\marg{Familienname}\marg{Definitionen} können -% Schlüssel"=Wert"=Parameter für die optionalen Argumente von Befehle definiert +% für die optionalen Argumente von Befehlen Schlüssel-Wert-Parameter definiert % werden. Das erste Argument definiert den Familiennamen für den jeweiligen % Befehl, welcher eindeutig gewählt werden sollte. Dieser wird im Hilfsmakro % \cs{TUD@parameter@@family} gesichert. Dies soll im Zusammenspiel mit dem @@ -882,10 +1479,10 @@ % Parameter für den Benutzer bewerkstelligen~-- ohne die Angabe der Familie % nur innerhalb des zweiten Argumentes von \cs{TUD@parameter@family} verwendet % werden können. -% \ToDo{% -% Eine Katastrophe, dringend überarbeiten; generelle Lösung mit \cs{toks@}?% -% KOMA-Option \val{@else@} verwenden? -% }[v2.07]% +% \ToDo{ +% Eine Katastrophe, dringend überarbeiten; generelle Lösung mit \cs{toks@}? +% KOMA-Option \val{@else@} verwenden? +% }[v2.07] % \begin{macrocode} \newcommand*\TUD@parameter@@family{} \newcommand*\TUD@parameter@family[2]{% @@ -897,7 +1494,7 @@ % Dieser Befehl prüft, ob eine Familie für den Paramter definiert wurde. % \begin{macrocode} \newcommand*\TUD@parameter@checkfamily[2]{% - \ifxblank{#1}{% + \tud@if@strblank{#1}{% \PackageError{tudscrbase}{% No family for \@backslashchar#2 defined% }{% @@ -953,7 +1550,7 @@ \IfArgIsEmpty{#2}{}{% % \end{macrocode} % Hierfür wird die angegebene Parameterliste sukzessive abgearbeitet. Elemente, -% welche in Schlüssel"=Wert"=Syntax angegeben wurden, bleiben unverändert\dots +% welche in Schlüssel-Wert-Syntax angegeben wurden, bleiben unverändert\dots % \begin{macrocode} \let\@tempb\@empty% \def\@tempa##1{% @@ -1016,15 +1613,15 @@ % Das erste obligatorische Argument von \cs{TUD@parameter@handler@macro} wird % für die Verarbeitung unbekannter Schlüssel-Wert-Paare genutzt, das zweite für % einfache optionale Argumente. -% \ToDo{% -% Eine Katastrophe, dringend überarbeiten; generelle Lösung mit \cs{toks@}?% -% KOMA-Option \val{@else@} verwenden? -% }[v2.07]% +% \ToDo{ +% Eine Katastrophe, dringend überarbeiten; generelle Lösung mit \cs{toks@}? +% KOMA-Option \val{@else@} verwenden? +% }[v2.07] % \begin{macrocode} \newcommand*\TUD@parameter@handler@macro[3][\TUD@parameter@@family]{% \TUD@parameter@checkfamily{#1}{TUD@parameter@handler@macro}% \expandafter\kv@set@family@handler\expandafter{#1}{% - \ifstr{\kv@key}{\TUD@parameter@nokey}{#3}{#2}% + \tud@if@strequal{\kv@key}{\TUD@parameter@nokey}{#3}{#2}% }% } % \end{macrocode} @@ -1041,7 +1638,7 @@ \protected@edef\@tempa{% \noexpand\TUD@parameter@set{#1}{#2=\noexpand\kv@value}% }% - \def\@tempb{\TUD@parameter@handler@macro[#1]{\kv@handled@false}}% + \def\@tempb{\TUD@parameter@handler@macro[{#1}]{\kv@handled@false}}% \expandafter\@tempb\expandafter{\@tempa}% } % \end{macrocode} @@ -1056,22 +1653,24 @@ % \begin{macrocode} \newcommand*\TUD@parameter@handler@default[2][\TUD@parameter@@family]{% \TUD@parameter@checkfamily{#1}{TUD@parameter@handler@default}% - \ifxblank{#2}{% + \tud@if@strblank{#2}{% \def\@tempa{\let\tud@reserved\relax}% }{% \def\@tempa{\def\tud@reserved{#2=\kv@value}}% }% \appto\@tempa{% - \ifstr{\kv@value}{twocolumn}{\def\kv@value{2}}{}% - \ifnumber{\kv@value}{\def\tud@reserved{columns=\kv@value}}{}% + \tud@if@strequal{\kv@value}{twocolumn}{\def\kv@value{2}}{}% + \Ifnumber{\kv@value}{\def\tud@reserved{columns=\kv@value}}{}% \iflanguageloaded{\kv@value}{\def\tud@reserved{language=\kv@value}}{}% \ifx\tud@reserved\relax% - \PackageError{tudscrbase}{% - Unknown default value `\kv@value'% - }{% - If `\kv@value' is a language, you haven't loaded it. \MessageBreak% - Otherwise, there's no handler for the given value. \MessageBreak% - You should specify a certian key (=\kv@value).% + \tud@if@strblank{\kv@value}{}{% + \PackageError{tudscrbase}{% + Unknown default value `\kv@value'% + }{% + If `\kv@value' is a language, you haven't loaded it. \MessageBreak% + Otherwise, there's no handler for the given value. \MessageBreak% + You should specify a certian key (=\kv@value).% + }% }% \fi% }% @@ -1080,24 +1679,25 @@ \noexpand\TUD@parameter@set{#1}{\noexpand\tud@reserved}% \noexpand\fi% }% - \def\@tempb{\TUD@parameter@handler@macro[#1]{\kv@handled@false}}% + \def\@tempb{\TUD@parameter@handler@macro[{#1}]{\kv@handled@false}}% \expandafter\@tempb\expandafter{\@tempa}% } % \end{macrocode} % \end{macro}^^A \TUD@parameter@handler@default -% \begin{macro}{\TUD@parameter@error} -% Das Makro \cs{TUD@parameter@wrn}\marg{Parameter}\marg{Werteliste} gibt für +% \begin{macro}{\TUD@parameter@err} +% Das Makro \cs{TUD@parameter@err}\marg{Parameter}\marg{Werteliste} gibt für % den Fall einer ungültigen Wertzuweisung an einen bestimmten \meta{Parameter} -% eine Warnung mit einem entsprechenden Hinweis auf gültige Werte innerhalb von +% einen Fehler mit einem entsprechenden Hinweis auf gültige Werte innerhalb von % \meta{Werteliste} aus. % \begin{macrocode} -\newcommand*\TUD@parameter@error[2]{% +\newcommand*\TUD@parameter@err[2]{% \PackageError{tudscrbase}{Unsupported value for parameter `#1'}{% `#1' can only be used with values:\MessageBreak#2% + \MessageBreak Please choose a valid one.% }% } % \end{macrocode} -% \end{macro}^^A \TUD@parameter@error +% \end{macro}^^A \TUD@parameter@err % % \subsection{Ausführung von paketspezifischem Quellcode} % @@ -1105,11 +1705,16 @@ % Ladezustand eines Paketes auszuführen. % \begin{macro}{\TUD@UnwindPackage} % \changes{v2.05}{2015/10/28}{neu}^^A +% \changes{v2.06o}{2022/08/02}{Sternversion}^^A % Dieser Befehl dient zur Ausführung von Quelltext, falls ein Paket bis zum % Ende der Dokumentpräambel nicht geladen wurde. Im ersten obligatorischen -% Argument wird das Paket angegeben, im zweiten der Quellcode. +% Argument wird das Paket angegeben, im zweiten der Quellcode. Die Sternversion +% führt den Quellcode auch nach dem Laden des Paketes aus. % \begin{macrocode} -\newcommand*\TUD@UnwindPackage[2]{\AtEndPreamble{\@ifpackageloaded{#1}{}{#2}}} +\NewDocumentCommand\TUD@UnwindPackage{s m m}{% + \IfBooleanT{#1}{\AfterPackage*{#2}{#3}}% + \AtEndPreamble{\@ifpackageloaded{#2}{}{#3}}% +} \@onlypreamble\TUD@UnwindPackage % \end{macrocode} % \end{macro}^^A \TUD@UnwindPackage @@ -1125,12 +1730,13 @@ % zu laden. Ist das Paket gar nicht installiert, wird durch den Aufruf von % \cs{RequirePackage} ein Fehler erzeugt respektive MiKTeX zur automatischen % Nachinstallation animiert. +% \ToDo{.aux schreiben, wenn existent und so ggf. nur einmalig ausführen}[v2.07] % \begin{macrocode} \newcommand*\TUD@CheckPackage[2]{% \tud@if@packagelater@exists{#1}{#2}{}{% \PackageWarningNoLine{tudscrbase}{% The version `#2' of package `#1'\MessageBreak% - is urgently required. An erroneous output\MessageBreak + is urgently required. An erroneous output\MessageBreak% may occur. Please update your distribution% }% \IfFileExists{#1.sty}{}{\RequirePackage{#1}[#2]}% @@ -1139,35 +1745,38 @@ \@onlypreamble\TUD@CheckPackage % \end{macrocode} % Hiermit wird geprüft, ob ein installiertes Paket in einer bestimmten Version -% installiert ist, ohne dieses zu laden. Hierfür wird die Datei zeilenweise -% gelesen, bis der Eintrag \cs{ProvidesPackage\marg{Paketname}\oarg{Version}} -% gefunden wird. +% vorhanden ist, ohne dieses zu laden. Hierfür wird die Datei zeilenweise +% gelesen, bis der Eintrag \cs{ProvidesPackage}\marg{Paketname}\oarg{Version} +% gefunden wird. +% \ToDo{kann \cs{@ifl@t@r} ersetzt werden?}[v2.07] +% \ToDo{Name in \cs{IfPackageExistsAtLeastTF} ändern}[v2.07] % \begin{macrocode} \newcommand*\tud@if@packagelater@exists[2]{% \begingroup% \let\tud@res@a\@empty% \def\tud@res@b[##1]{\def\tud@res@a{##1}}% \def\ProvidesPackage##1{% - \@ifnextchar[%] - {\tud@res@b}{\tud@res@b[]}% + \kernel@ifnextchar[%] + {\tud@res@b}% + {\tud@res@b[]}% }% \IfFileExists{#1.sty}{% - \openin\tud@res@read=#1.sty% + \openin\@inputcheck=#1.sty% \@tud@res@swatrue% \loop% - \read\tud@res@read to\tud@res@c% + \read\@inputcheck to\tud@res@c% \@expandtwoargs\in@{\string\ProvidesPackage}% {\expandafter\detokenize\expandafter{\tud@res@c}}% \ifin@% \@tud@res@swafalse% \tud@res@c% \fi% - \ifeof\tud@res@read\@tud@res@swafalse\fi% + \ifeof\@inputcheck\@tud@res@swafalse\fi% \if@tud@res@swa% \repeat% - \closein\tud@res@read% + \closein\@inputcheck% }{}% - \edef\tud@res@a{\endgroup\noexpand\@ifl@t@r{\tud@res@a}{#2}} + \edef\tud@res@a{\endgroup\noexpand\@ifl@t@r{\tud@res@a}{#2}}% \tud@res@a% } \@onlypreamble\tud@if@packagelater@exists @@ -1176,18 +1785,19 @@ % \end{macro}^^A \TUD@CheckPackage % \begin{macro}{\TUD@RecommendPackage} % \changes{v2.06}{2018/07/12}{neu}^^A +% \begin{macro}{\TUD@Recommend@Package} % Bestimmte Pakete sind für die Funktionalität von \TUDScript empfohlen, aber % nicht zwingend erforderlich. Sind diese nicht vorhanden, wird eine Warnung % ausgegeben. % \begin{macrocode} \newcommand*\TUD@RecommendPackage[1]{% \kernel@ifnextchar[%] - {\TUD@@RecommendPackage#1}% - {\TUD@@RecommendPackage#1[]}% + {\TUD@Recommend@Package#1}% + {\TUD@Recommend@Package#1[]}% } \@onlypreamble\TUD@RecommendPackage -\newcommand*\TUD@@RecommendPackage{} -\def\TUD@@RecommendPackage#1[#2]{% +\newcommand*\TUD@Recommend@Package{} +\def\TUD@Recommend@Package#1[#2]{% \IfFileExists{#1.sty}{% \RequirePackage{#1}[#2]% }{% @@ -1197,8 +1807,9 @@ }% }% } -\@onlypreamble\TUD@@RecommendPackage +\@onlypreamble\TUD@Recommend@Package % \end{macrocode} +% \end{macro}^^A \TUD@Recommend@Package % \end{macro}^^A \TUD@RecommendPackage % \begin{macro}{\TUD@AfterPackage@set} % \changes{v2.04}{2015/03/09}{neu}^^A @@ -1214,17 +1825,16 @@ \AfterAtEndOfPackage*{#1}{\booltrue{@tud@#1@loaded}}% } \newcommand*\TUD@AfterPackage@do[2]{% - \ifcsdef{if@tud@#1@loaded}{% - \if@atdocument% - \ifbool{@tud@#1@loaded}{#2}{}% - \else% - \AfterAtEndOfPackage*{#1}{#2}% - \fi% - }{% + \ifcsundef{if@tud@#1@loaded}{% \PackageError{tudscrbase}{\string\TUD@AfterPackage@set{#1} missing}{% You have to set \string\TUD@AfterPackage@set{#1} before\MessageBreak% - the usage of \string\TUD@AfterPackage@do{#1}{} is\MessageBreak% - possible.% + using \string\TUD@AfterPackage@do{#1}{}.% + }% + }{% + \tud@if@preamble{% + \AfterAtEndOfPackage*{#1}{#2}% + }{% + \ifbool{@tud@#1@loaded}{#2}{}% }% }% } @@ -1251,13 +1861,14 @@ \ifundef{\KOMAClassName}{% \renewcommand*\TUD@KOMAoptions[1]{% \PackageWarning{tudscrbase}{% - You should load package `scrextend' right after the\MessageBreak% - documentclass. Option \string\TUD@KOMAoptions{`#1'} is gobbled% + You should load package `scrextend' right after\MessageBreak% + the documentclass. The following option is gobbled:\MessageBreak% + \string\KOMAoptions{`#1'}% }% }% - \AfterPackage*{scrextend}{\let\TUD@KOMAoptions\KOMAoptions}% + \AfterPackage*{scrextend}{\def\TUD@KOMAoptions{\KOMAoptions}}% }{% - \let\TUD@KOMAoptions\KOMAoptions% + \def\TUD@KOMAoptions{\KOMAoptions}% } % % \end{macrocode} @@ -1284,7 +1895,6 @@ % \fi % % \section{Zusätzliches für die \TUDScript-Klassen} -% % \subsection{Erweiterung von \KOMAScript-Schriftelementen} % % \begin{macro}{\tud@komafont@set} @@ -1294,7 +1904,7 @@ % Es wird die Möglichkeit geschaffen, bestimmten Schriftelementen weitere % Eigenschaften mitzugeben. Damit dies optionsabhängig geschehen kann und % \cs{addtokomafont} nur einmalig verwendete werden muss, wird im Zweifelsfall -% einem Schriftelement ein Hilfsmakro \cs{tud@komafont@\meta{Element}} +% einem Schriftelement ein Hilfsmakro |\tud@komafont@|\meta{Element} % zugewiesen, welches intern angepasst werden kann. Mit \cs{tud@komafont@set} % werden dem angegebenen Element die gewünschten Schriftattribute zugeteilt. % \begin{macrocode} @@ -1345,7 +1955,7 @@ % \env{tudpage} wird das Paket \pkg{environ} für die Umgebungsdefinition % benötigt. % \begin{macrocode} -\RequirePackage{environ}[2013/04/01] +\RequirePackage{environ} % \end{macrocode} % % Innerhalb dieser Umgebungen soll es außerdem möglich sein, ein mehrspaltiges @@ -1397,13 +2007,15 @@ which now will be loaded automatically% }% }{}% - \RequirePackage{graphicx}[1999/02/16]% + \RequirePackage{graphicx} }% % \end{macrocode} % Mit dem Paket \pkg{tudscrcolor} werden die Befehle für die Auswahl der Farben % des \CDs definiert, welches wiederum \pkg{xcolor} lädt. % \begin{macrocode} - \RequirePackage{tudscrcolor}[\TUD@Version]% + \RequirePackage{tudscrcolor}[% +%!TUD@Version + ]% } % \end{macrocode} % @@ -1411,60 +2023,6 @@ % % \fi % -% \Finale +% \PrintBackMatter % \endinput - -% -% \begin{macro}{\TUD@noworlater} -% \changes{v2.05}{2015/07/03}{neu implementiert}^^A -% \begin{macro}{\TUD@noworlater@simple} -% \changes{v2.05}{2015/07/03}{neu}^^A -% Hiermit kann die Abarbeitung der Optionen an das Ende der verwendeten -% Klasse bzw. des Paketes verzögert werden. Aufgrund der Besonderheiten der -% Befehle \cs{AtEndOfClass} und \cs{AtEndOfPackage} können diese nicht -% innerhalb von \pkg{tudscrbase} sondern erst außerhalb nach dem Laden -% definiert werden. Damit keine Probleme dabei auftreten, falls das Paket -% geladen wird ohne daran anschließend die notwendigen Redefinitionen -% durchzuführen, werden die beiden Varianten des Befehls \cs{TUD@noworlater} -% im Paket definiert. -% -% Im ersten Argument von \cs{TUD@noworlater} wird einer der wertzuweisenden -% Befehle für Optionen (\cs{TUD@set@\dots}) erwartet. Dieser wird immer -% ausgeführt, um ungültige Wertzuweisungen einer Option, welche als globale -% Klassenoption angegeben wurde, über die \LaTeX-Standardroutine als Warnung -% auszugeben. Bei der eigentlichen~-- sprich verzögerten~-- Ausführung der -% Option wird die Wertzuweisung abermals ausgeführt, gefolgt von der im -% zweiten Argument definierten Abarbeitung dieser. -% \begin{macrocode} -%<*package&base> -\newcommand*\TUD@noworlater[2]{} -\newcommand*\TUD@noworlater@simple[2]{% - \PackageWarning{tudscrbase}{% - The content of \string\TUD@noworlater will be executed immediately% - }% - #1#2% -} -\let\TUD@noworlater\TUD@noworlater@simple -% -% \end{macrocode} -% Nach dem Laden des Paketes wird geprüft, ob die ursprüngliche Definition -% des Befehls aus dem Paket noch besteht. Ist dies der Fall, wird der Befehl -% zur Verzögerung an das Ende der Klasse bzw. des Paketes umdefiniert. -% \begin{macrocode} -%<*load> -\ifx\TUD@noworlater\TUD@noworlater@simple -%<*class> - \renewcommand*\TUD@noworlater[2]{#1\AtEndOfClass{#1#2}}% - \AtEndOfClass{\renewcommand*\TUD@noworlater[2]{#1#2}}% -% -%<*package> - \renewcommand*\TUD@noworlater[2]{#1\AtEndOfPackage{#1#2}}% - \AtEndOfPackage{\renewcommand*\TUD@noworlater[2]{#1#2}}% -% -\fi -% -% \end{macrocode} -% \end{macro}^^A \TUD@noworlater@simple -% \end{macro}^^A \TUD@noworlater -% diff --git a/macros/latex/contrib/tudscr/source/tudscr-color.dtx b/macros/latex/contrib/tudscr/source/tudscr-color.dtx index ba27b5aba8..85db227877 100644 --- a/macros/latex/contrib/tudscr/source/tudscr-color.dtx +++ b/macros/latex/contrib/tudscr/source/tudscr-color.dtx @@ -1,10 +1,10 @@ -% \CheckSum{216} % \iffalse meta-comment +%/GitFileInfo=tudscr-color.dtx % % TUD-Script -- Corporate Design of Technische Universität Dresden % ---------------------------------------------------------------------------- % -% Copyright (C) Falk Hanisch , 2012-2021 +% Copyright (C) Falk Hanisch , 2012-2022 % % ---------------------------------------------------------------------------- % @@ -23,44 +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-color.dtx -%<*dtx> -% \fi -% -\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi -\ProvidesFile{tudscr-color.dtx}[2019/06/28 v2.06 TUD-Script\space% -% -% \iffalse -% -%\ProvidesPackage{tudscrcolor}[% -%<*package> -%!TUD@Version -% -% package -%<*dtx|package> -% \fi - (corporate design colors)% -] -% \iffalse -% +% \iffalse ins:batch + dtx:driver +%<*ins> +\ifx\documentclass\undefined + \input docstrip.tex + \ifToplevel{\batchinput{tudscr.ins}} +\else + \let\endbatchfile\relax +\fi +\endbatchfile +% %<*dtx> +\ProvidesFile{tudscr-color.dtx}[2022/08/09] +\RequirePackage{tudscr-gitinfo} \documentclass[english,ngerman,xindy]{tudscrdoc} \iftutex \usepackage{fontspec} @@ -70,18 +45,11 @@ \fi \usepackage{babel} \usepackage{tudscrfonts} -\KOMAoptions{parskip=half-} -\usepackage{bookmark} \usepackage[babel]{microtype} -\CodelineIndex -\RecordChanges -\GetFileInfo{tudscr-color.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} @@ -91,6 +59,8 @@ % % \selectlanguage{ngerman} % +% +% % \section{Das Paket \pkg{tudscrcolor} -- Die Farben des \CDs} % % Das \TUDCD legt nicht nur die zu nutzenden Schriften und das Layout sondern @@ -99,7 +69,16 @@ % zur Farbauswahl wie \cs{color}\marg{Farbe} oder \cs{textcolor}\marg{Farbe} % verwendet werden. % -% \StopEventually{\PrintIndex\PrintChanges\PrintToDos} +% \begin{macrocode} +% \iffalse +%<*package> +\ProvidesPackage{tudscrcolor}[% +%!TUD@Version + package (corporate design colors)% +] +% +% \fi +% \end{macrocode} % % \iffalse %<*package> @@ -110,17 +89,21 @@ % \begin{option}{newcolors} % \begin{option}{reduced} % \begin{option}{oldcolors} +% \begin{option}{extended} % \begin{option}{full} % Das Paket kann entweder mit einfachen, für \TUDScript ausreichenden oder % erweiterten Farbdefinitionen geladen werden. Letztere definieren zusätzliche % Farbbezeichnungen für die Kompatibilität zu alten TUD-Klassen. +% \ToDo{Optionen oldcolors und colormodel mit key-value-interface!}[v2.07] % \begin{macrocode} \DeclareOption{newcolors}{\let\tud@setcolors@add\relax} \DeclareOption{reduced}{\let\tud@setcolors@add\relax} \DeclareOption{oldcolors}{\let\tud@setcolors@add\tud@setcolors@old} +\DeclareOption{extended}{\let\tud@setcolors@add\tud@setcolors@old} \DeclareOption{full}{\let\tud@setcolors@add\tud@setcolors@old} % \end{macrocode} % \end{option}^^A full +% \end{option}^^A extended % \end{option}^^A oldcolors % \end{option}^^A reduced % \end{option}^^A newcolors @@ -258,172 +241,26 @@ % \begin{macro}{\tud@setcolors@add} % \begin{macro}{\tud@setcolors@old} % Die erweiterten Farbbefehle werden durch \pkg{tudscrcolor} definiert, wenn -% das Paket explizit mit der Option \opt{oldcolors} geladen wird. Damit werden +% das Paket explizit mit der Option \opt{extended} geladen wird. Damit werden % alle gängigen Farbdefinitionen der vielen Insellösungen des \LaTeX-Universums % an der \TnUD unterstützt. % \begin{macrocode} \newcommand*\tud@setcolors@add{} \newcommand*\tud@setcolors@old{% - \colorlet{HKS41K10}{HKS41!10}% - \colorlet{HKS41K20}{HKS41!20}% - \colorlet{HKS41K30}{HKS41!30}% - \colorlet{HKS41K40}{HKS41!40}% - \colorlet{HKS41K50}{HKS41!50}% - \colorlet{HKS41K60}{HKS41!60}% - \colorlet{HKS41K70}{HKS41!70}% - \colorlet{HKS41K80}{HKS41!80}% - \colorlet{HKS41K90}{HKS41!90}% - \colorlet{HKS41K100}{HKS41!100}% - \colorlet{HKS92K10}{HKS92!10}% - \colorlet{HKS92K20}{HKS92!20}% - \colorlet{HKS92K30}{HKS92!30}% - \colorlet{HKS92K40}{HKS92!40}% - \colorlet{HKS92K50}{HKS92!50}% - \colorlet{HKS92K60}{HKS92!60}% - \colorlet{HKS92K70}{HKS92!70}% - \colorlet{HKS92K80}{HKS92!80}% - \colorlet{HKS92K90}{HKS92!90}% - \colorlet{HKS92K100}{HKS92!100}% - \colorlet{HKS44K10}{HKS44!10}% - \colorlet{HKS44K20}{HKS44!20}% - \colorlet{HKS44K30}{HKS44!30}% - \colorlet{HKS44K40}{HKS44!40}% - \colorlet{HKS44K50}{HKS44!50}% - \colorlet{HKS44K60}{HKS44!60}% - \colorlet{HKS44K70}{HKS44!70}% - \colorlet{HKS44K80}{HKS44!80}% - \colorlet{HKS44K90}{HKS44!90}% - \colorlet{HKS44K100}{HKS44!100}% - \colorlet{HKS36K10}{HKS36!10}% - \colorlet{HKS36K20}{HKS36!20}% - \colorlet{HKS36K30}{HKS36!30}% - \colorlet{HKS36K40}{HKS36!40}% - \colorlet{HKS36K50}{HKS36!50}% - \colorlet{HKS36K60}{HKS36!60}% - \colorlet{HKS36K70}{HKS36!70}% - \colorlet{HKS36K80}{HKS36!80}% - \colorlet{HKS36K90}{HKS36!90}% - \colorlet{HKS36K100}{HKS36!100}% - \colorlet{HKS33K10}{HKS33!10}% - \colorlet{HKS33K20}{HKS33!20}% - \colorlet{HKS33K30}{HKS33!30}% - \colorlet{HKS33K40}{HKS33!40}% - \colorlet{HKS33K50}{HKS33!50}% - \colorlet{HKS33K60}{HKS33!60}% - \colorlet{HKS33K70}{HKS33!70}% - \colorlet{HKS33K80}{HKS33!80}% - \colorlet{HKS33K90}{HKS33!90}% - \colorlet{HKS33K100}{HKS33!100}% - \colorlet{HKS57K10}{HKS57!10}% - \colorlet{HKS57K20}{HKS57!20}% - \colorlet{HKS57K30}{HKS57!30}% - \colorlet{HKS57K40}{HKS57!40}% - \colorlet{HKS57K50}{HKS57!50}% - \colorlet{HKS57K60}{HKS57!60}% - \colorlet{HKS57K70}{HKS57!70}% - \colorlet{HKS57K80}{HKS57!80}% - \colorlet{HKS57K90}{HKS57!90}% - \colorlet{HKS57K100}{HKS57!100}% - \colorlet{HKS65K10}{HKS65!10}% - \colorlet{HKS65K20}{HKS65!20}% - \colorlet{HKS65K30}{HKS65!30}% - \colorlet{HKS65K40}{HKS65!40}% - \colorlet{HKS65K50}{HKS65!50}% - \colorlet{HKS65K60}{HKS65!60}% - \colorlet{HKS65K70}{HKS65!70}% - \colorlet{HKS65K80}{HKS65!80}% - \colorlet{HKS65K90}{HKS65!90}% - \colorlet{HKS65K100}{HKS65!100}% - \colorlet{HKS07K10}{HKS07!10}% - \colorlet{HKS07K20}{HKS07!20}% - \colorlet{HKS07K30}{HKS07!30}% - \colorlet{HKS07K40}{HKS07!40}% - \colorlet{HKS07K50}{HKS07!50}% - \colorlet{HKS07K60}{HKS07!60}% - \colorlet{HKS07K70}{HKS07!70}% - \colorlet{HKS07K80}{HKS07!80}% - \colorlet{HKS07K90}{HKS07!90}% - \colorlet{HKS07K100}{HKS07!100}% - \colorlet{HKS41-10}{HKS41!10}% - \colorlet{HKS41-20}{HKS41!20}% - \colorlet{HKS41-30}{HKS41!30}% - \colorlet{HKS41-40}{HKS41!40}% - \colorlet{HKS41-50}{HKS41!50}% - \colorlet{HKS41-60}{HKS41!60}% - \colorlet{HKS41-70}{HKS41!70}% - \colorlet{HKS41-80}{HKS41!80}% - \colorlet{HKS41-90}{HKS41!90}% - \colorlet{HKS41-100}{HKS41!100}% - \colorlet{HKS92-10}{HKS92!10}% - \colorlet{HKS92-20}{HKS92!20}% - \colorlet{HKS92-30}{HKS92!30}% - \colorlet{HKS92-40}{HKS92!40}% - \colorlet{HKS92-50}{HKS92!50}% - \colorlet{HKS92-60}{HKS92!60}% - \colorlet{HKS92-70}{HKS92!70}% - \colorlet{HKS92-80}{HKS92!80}% - \colorlet{HKS92-90}{HKS92!90}% - \colorlet{HKS92-100}{HKS92!100}% - \colorlet{HKS44-10}{HKS44!10}% - \colorlet{HKS44-20}{HKS44!20}% - \colorlet{HKS44-30}{HKS44!30}% - \colorlet{HKS44-40}{HKS44!40}% - \colorlet{HKS44-50}{HKS44!50}% - \colorlet{HKS44-60}{HKS44!60}% - \colorlet{HKS44-70}{HKS44!70}% - \colorlet{HKS44-80}{HKS44!80}% - \colorlet{HKS44-90}{HKS44!90}% - \colorlet{HKS44-100}{HKS44!100}% - \colorlet{HKS36-10}{HKS36!10}% - \colorlet{HKS36-20}{HKS36!20}% - \colorlet{HKS36-30}{HKS36!30}% - \colorlet{HKS36-40}{HKS36!40}% - \colorlet{HKS36-50}{HKS36!50}% - \colorlet{HKS36-60}{HKS36!60}% - \colorlet{HKS36-70}{HKS36!70}% - \colorlet{HKS36-80}{HKS36!80}% - \colorlet{HKS36-90}{HKS36!90}% - \colorlet{HKS36-100}{HKS36!100}% - \colorlet{HKS33-10}{HKS33!10}% - \colorlet{HKS33-20}{HKS33!20}% - \colorlet{HKS33-30}{HKS33!30}% - \colorlet{HKS33-40}{HKS33!40}% - \colorlet{HKS33-50}{HKS33!50}% - \colorlet{HKS33-60}{HKS33!60}% - \colorlet{HKS33-70}{HKS33!70}% - \colorlet{HKS33-80}{HKS33!80}% - \colorlet{HKS33-90}{HKS33!90}% - \colorlet{HKS33-100}{HKS33!100}% - \colorlet{HKS57-10}{HKS57!10}% - \colorlet{HKS57-20}{HKS57!20}% - \colorlet{HKS57-30}{HKS57!30}% - \colorlet{HKS57-40}{HKS57!40}% - \colorlet{HKS57-50}{HKS57!50}% - \colorlet{HKS57-60}{HKS57!60}% - \colorlet{HKS57-70}{HKS57!70}% - \colorlet{HKS57-80}{HKS57!80}% - \colorlet{HKS57-90}{HKS57!90}% - \colorlet{HKS57-100}{HKS57!100}% - \colorlet{HKS65-10}{HKS65!10}% - \colorlet{HKS65-20}{HKS65!20}% - \colorlet{HKS65-30}{HKS65!30}% - \colorlet{HKS65-40}{HKS65!40}% - \colorlet{HKS65-50}{HKS65!50}% - \colorlet{HKS65-60}{HKS65!60}% - \colorlet{HKS65-70}{HKS65!70}% - \colorlet{HKS65-80}{HKS65!80}% - \colorlet{HKS65-90}{HKS65!90}% - \colorlet{HKS65-100}{HKS65!100}% - \colorlet{HKS07-10}{HKS07!10}% - \colorlet{HKS07-20}{HKS07!20}% - \colorlet{HKS07-30}{HKS07!30}% - \colorlet{HKS07-40}{HKS07!40}% - \colorlet{HKS07-50}{HKS07!50}% - \colorlet{HKS07-60}{HKS07!60}% - \colorlet{HKS07-70}{HKS07!70}% - \colorlet{HKS07-80}{HKS07!80}% - \colorlet{HKS07-90}{HKS07!90}% - \colorlet{HKS07-100}{HKS07!100}% + \def\tud@res@a##1{% + \@for\tud@res@b:={10,20,30,40,50,60,70,80,90,100}\do{% + \colorlet{##1K\tud@res@b}{##1!\tud@res@b}% + \colorlet{##1-\tud@res@b}{##1!\tud@res@b}% + }% + }% + \tud@res@a{HKS41}% + \tud@res@a{HKS92}% + \tud@res@a{HKS44}% + \tud@res@a{HKS36}% + \tud@res@a{HKS33}% + \tud@res@a{HKS57}% + \tud@res@a{HKS65}% + \tud@res@a{HKS07}% } % \end{macrocode} % \end{macro}^^A \tud@setcolors@old @@ -439,7 +276,7 @@ \DeclareOption*{\PassOptionsToPackage{\CurrentOption}{xcolor}} \ExecuteOptions{reduced} \ProcessOptions\relax -\RequirePackage{xcolor}[2007/01/21] +\RequirePackage{xcolor} \tud@setcolors@do% % \end{macrocode} % @@ -447,6 +284,6 @@ % % \fi % -% \Finale +% \PrintBackMatter % \endinput diff --git a/macros/latex/contrib/tudscr/source/tudscr-comp.dtx b/macros/latex/contrib/tudscr/source/tudscr-comp.dtx index add1e062fa..1f97ed6b9b 100644 --- a/macros/latex/contrib/tudscr/source/tudscr-comp.dtx +++ b/macros/latex/contrib/tudscr/source/tudscr-comp.dtx @@ -1,10 +1,10 @@ -% \CheckSum{1461} % \iffalse meta-comment +%/GitFileInfo=tudscr-comp.dtx % % TUD-Script -- Corporate Design of Technische Universität Dresden % ---------------------------------------------------------------------------- % -% Copyright (C) Falk Hanisch , 2012-2021 +% Copyright (C) Falk Hanisch , 2012-2022 % % ---------------------------------------------------------------------------- % @@ -23,48 +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-comp.dtx -%<*dtx> -% \fi -% -\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi -\ProvidesFile{tudscr-comp.dtx}[2021/07/15 v2.06n TUD-Script\space% -% -% \iffalse -% -%<*package&identify> -%\ProvidesPackage{tudscrcomp}[% -%\ProvidesPackage{tudscrcomp-book}[% -%\ProvidesPackage{tudscrcomp-poster}[% -%\ProvidesPackage{fix-tudscrfonts}[% -%!TUD@Version -% package -% package for font fixes -% -%<*dtx|package&identify> -% \fi - (compatibility for old tud(scr) classes)% -] -% \iffalse -% +% \iffalse ins:batch + dtx:driver +%<*ins> +\ifx\documentclass\undefined + \input docstrip.tex + \ifToplevel{\batchinput{tudscr.ins}} +\else + \let\endbatchfile\relax +\fi +\endbatchfile +% %<*dtx> +\ProvidesFile{tudscr-comp.dtx}[2022/08/09] +\RequirePackage{tudscr-gitinfo} \documentclass[english,ngerman,xindy]{tudscrdoc} \iftutex \usepackage{fontspec} @@ -74,18 +45,11 @@ \fi \usepackage{babel} \usepackage{tudscrfonts} -\KOMAoptions{parskip=half-} -\usepackage{bookmark} \usepackage[babel]{microtype} -\CodelineIndex -\RecordChanges -\GetFileInfo{tudscr-comp.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} @@ -100,6 +64,8 @@ % \changes{v2.04}{2015/04/22}{\pkg{tudscrfonts}: Unterstützung veralteter % Posterklassen}^^A % +% +% % \section{Kompatibilität zu früheren \TUDScript-Versionen} % % Mit der Version v2.02 wurde eine Menge~-- teilweise sehr tiefgreifend~-- an @@ -110,7 +76,19 @@ % betreffen sowohl die Klassen selber als auch die zusätzlich bereitgestellten % Pakete. % -% \StopEventually{\PrintIndex\PrintChanges\PrintToDos} +% \begin{macrocode} +%<*package&identify> +%\ProvidesPackage{tudscrcomp}% +%\ProvidesPackage{fix-tudscrfonts}% +[% +%!TUD@Version +% package +% package for font fixes + (compatibility for old tud(scr) classes)% +] +%\TUD@Class@Check{tudscrcomp} +% +% \end{macrocode} % % \iffalse %<*class|package&fonts> @@ -123,7 +101,7 @@ % \changes{v2.03}{2015/02/05}{neu}^^A % \begin{macro}{\TUD@deprecated@@cs} % \changes{v2.06}{2018/08/07}{neu}^^A -% \begin{macro}{\TUD@deprecated@lengthcs} +% \begin{macro}{\TUD@deprecated@length} % \changes{v2.05}{2016/06/20}{neu}^^A % Um alte Optionen und Befehle dem Anwender bei der Verwendung kenntlich zu % machen, werden entsprechende Warnungen definiert. Für Optionen wird dabei @@ -195,21 +173,28 @@ }{}% } %<*class> -\newcommand*\TUD@deprecated@lengthcs[2][]{% - \ifdim\csuse{#2}<\maxdimen\relax% - \ClassWarning{\TUD@Class@Name}{% - Using the length `\@backslashchar#2' is deprecated. \MessageBreak% - You should use option `#2' instead% - }% - \csxdef{tud@dim@#2}{\the\csuse{#2}}% - \expandafter\setlength\csname #2\endcsname{\maxdimen}% - \global\csuse{#2}=\csuse{#2}% - #1% +\newcommand*\TUD@deprecated@length[1]{% + \ifdim#1<\maxdimen\relax% + \begingroup% + \tud@strlength\tud@res@a{#1}% + \edef\tud@res@b{\expandafter\@gobble\string#1}% + \ClassWarning{\TUD@Class@Name}{% + Setting length `\string#1' is deprecated. \MessageBreak% + The option `\tud@res@b=\tud@res@a'\MessageBreak% + is used instead% + }% + \edef\tud@res@a{% + \endgroup% + \noexpand\TUDoption{\tud@res@b}{\tud@res@a}% + \global\noexpand\csletcs{tud@\tud@res@b @dim}{tud@\tud@res@b @dim}% + }% + \tud@res@a% + \global\setlength#1{\maxdimen}% \fi% } % % \end{macrocode} -% \end{macro}^^A \TUD@deprecated@lengthcs +% \end{macro}^^A \TUD@deprecated@length % \end{macro}^^A \TUD@deprecated@@cs % \end{macro}^^A \TUD@deprecated@cs % \end{macro}^^A \TUD@deprecated@key @@ -223,8 +208,8 @@ % Standardmäßig werden die Klassen in der aktuellen Version geladen. Mit % \opt{tudscrver}|=|\val{\meta{Version}} kann auf das Verhalten einer früheren % Version geschaltet werden. Die eingestellte Kompatibilität wird als Zahl in -% \cs{tud@v@comp} gespeichert. In den Makros \cs{tud@v@\meta{Version}} werden -% die zugehörigen Nummern gespeichert. +% \cs{tud@v@comp} gespeichert. In den Makros |\tud@v@|\meta{Version} werden die +% zugehörigen Nummern gespeichert. % \begin{macrocode} \newcommand*\tud@v@comp{\tud@v@last} % \end{macrocode} @@ -279,30 +264,6 @@ {% \RelaxFamilyKey[.comp]{TUD}{tudscrver}% \TUD@key@toolate{tudscrver}% -% \end{macrocode} -% Außerdem wird darauf geachtet, dass die mindestens benötigte Version von -% \KOMAScript{} installiert ist. (\cs{\TUD@Version@KOMA}: \TUD@Version@KOMA). -% Sollte dies nicht der Fall sein, wird ein Fehler erzeugt. -% \begin{macrocode} -%<*class> - \ifcsdef{scr@v@\TUD@Version@KOMA}{% - \ifnum\scr@compatibility<\csuse{scr@v@3.12}\relax% - \ClassError{\TUD@Class@Name}{% - KOMA-Script compatibility level too low% - }{% - \TUD@Version\space must be used at least with\MessageBreak% - `version=3.12' KOMA-Script compatibility option.% - }% - \fi% - }{% - \ClassError{\TUD@Class@Name}{% - KOMA-Script v\TUD@Version@KOMA is required% - }{% - \TUD@Version\space must at least be used with\MessageBreak% - KOMA-Script v\TUD@Version@KOMA, but \KOMAScriptVersion was found.% - }% - }% -% } % \end{macrocode} % \end{macro}^^A \tud@v@comp @@ -314,84 +275,16 @@ % \changes{v2.02}{2014/08/22}{neu}^^A % \begin{macro}{\tud@v@2.01} % \changes{v2.02}{2014/08/22}{neu}^^A -% \begin{macro}{\tud@v@2.01a} -% \changes{v2.02}{2014/08/22}{neu}^^A -% \begin{macro}{\tud@v@2.01b} -% \changes{v2.02}{2014/08/22}{neu}^^A % \begin{macro}{\tud@v@2.02} % \changes{v2.02}{2014/08/22}{neu}^^A % \begin{macro}{\tud@v@2.03} % \changes{v2.03}{2015/01/13}{neu}^^A -% \begin{macro}{\tud@v@2.03a} -% \changes{v2.03a}{2015/06/12}{neu}^^A % \begin{macro}{\tud@v@2.04} % \changes{v2.04}{2015/02/18}{neu}^^A -% \begin{macro}{\tud@v@2.04a} -% \changes{v2.04a}{2015/07/24}{neu}^^A -% \begin{macro}{\tud@v@2.04b} -% \changes{v2.04b}{2015/10/06}{neu}^^A -% \begin{macro}{\tud@v@2.04c} -% \changes{v2.04c}{2015/11/29}{neu}^^A -% \begin{macro}{\tud@v@2.04d} -% \changes{v2.04d}{2016/03/26}{neu}^^A -% \begin{macro}{\tud@v@2.04e} -% \changes{v2.04e}{2016/06/17}{neu}^^A % \begin{macro}{\tud@v@2.05} % \changes{v2.05}{2015/07/03}{neu}^^A -% \begin{macro}{\tud@v@2.05a} -% \changes{v2.05a}{2015/08/24}{neu}^^A -% \begin{macro}{\tud@v@2.05b} -% \changes{v2.05b}{2015/09/09}{neu}^^A -% \begin{macro}{\tud@v@2.05c} -% \changes{v2.05c}{2015/09/15}{neu}^^A -% \begin{macro}{\tud@v@2.05d} -% \changes{v2.05d}{2015/09/21}{neu}^^A -% \begin{macro}{\tud@v@2.05e} -% \changes{v2.05e}{2016/10/10}{neu}^^A -% \begin{macro}{\tud@v@2.05f} -% \changes{v2.05f}{2016/10/12}{neu}^^A -% \begin{macro}{\tud@v@2.05g} -% \changes{v2.05g}{2017/01/26}{neu}^^A -% \begin{macro}{\tud@v@2.05h} -% \changes{v2.05h}{2017/02/04}{neu}^^A -% \begin{macro}{\tud@v@2.05i} -% \changes{v2.05i}{2017/02/17}{neu}^^A -% \begin{macro}{\tud@v@2.05k} -% \changes{v2.05k}{2017/03/27}{neu}^^A -% \begin{macro}{\tud@v@2.05l} -% \changes{v2.05l}{2017/03/29}{neu}^^A -% \begin{macro}{\tud@v@2.05m} -% \changes{v2.05m}{2017/05/30}{neu}^^A % \begin{macro}{\tud@v@2.06} % \changes{v2.06}{2018/06/26}{neu}^^A -% \begin{macro}{\tud@v@2.06a} -% \changes{v2.06a}{2019/07/09}{neu}^^A -% \begin{macro}{\tud@v@2.06b} -% \changes{v2.06b}{2019/07/17}{neu}^^A -% \begin{macro}{\tud@v@2.06c} -% \changes{v2.06c}{2019/08/20}{neu}^^A -% \begin{macro}{\tud@v@2.06d} -% \changes{v2.06d}{2019/08/27}{neu}^^A -% \begin{macro}{\tud@v@2.06e} -% \changes{v2.06e}{2019/10/23}{neu}^^A -% \begin{macro}{\tud@v@2.06f} -% \changes{v2.06f}{2020/01/14}{neu}^^A -% \begin{macro}{\tud@v@2.06g} -% \changes{v2.06g}{2020/06/18}{neu}^^A -% \begin{macro}{\tud@v@2.06h} -% \changes{v2.06h}{2020/06/25}{neu}^^A -% \begin{macro}{\tud@v@2.06i} -% \changes{v2.06i}{2020/07/27}{neu}^^A -% \begin{macro}{\tud@v@2.06j} -% \changes{v2.06j}{2020/09/29}{neu}^^A -% \begin{macro}{\tud@v@2.06k} -% \changes{v2.06k}{2020/11/10}{neu}^^A -% \begin{macro}{\tud@v@2.06l} -% \changes{v2.06l}{2021/03/30}{neu}^^A -% \begin{macro}{\tud@v@2.06m} -% \changes{v2.06m}{2021/07/06}{neu}^^A -% \begin{macro}{\tud@v@2.06n} -% \changes{v2.06n}{2021/07/15}{neu}^^A % \begin{macro}{\tud@v@last} % \changes{v2.02}{2014/08/22}{neu}^^A % \changes{v2.03}{2015/01/13}{angepasst}^^A @@ -403,87 +296,19 @@ \csdef{tud@v@first}{0} \csdef{tud@v@2.00}{0} \csdef{tud@v@2.01}{0} -\csdef{tud@v@2.01a}{0} -\csdef{tud@v@2.01b}{0} \csdef{tud@v@2.02}{0} \csdef{tud@v@2.03}{1} -\csdef{tud@v@2.03a}{1} \csdef{tud@v@2.04}{2} -\csdef{tud@v@2.04a}{2} -\csdef{tud@v@2.04b}{2} -\csdef{tud@v@2.04c}{2} -\csdef{tud@v@2.04d}{2} -\csdef{tud@v@2.04e}{2} \csdef{tud@v@2.05}{3} -\csdef{tud@v@2.05a}{3} -\csdef{tud@v@2.05b}{3} -\csdef{tud@v@2.05c}{3} -\csdef{tud@v@2.05d}{3} -\csdef{tud@v@2.05e}{3} -\csdef{tud@v@2.05f}{3} -\csdef{tud@v@2.05g}{3} -\csdef{tud@v@2.05h}{3} -\csdef{tud@v@2.05i}{3} -\csdef{tud@v@2.05k}{3} -\csdef{tud@v@2.05l}{3} -\csdef{tud@v@2.05m}{3} \csdef{tud@v@2.06}{4} -\csdef{tud@v@2.06a}{4} -\csdef{tud@v@2.06b}{4} -\csdef{tud@v@2.06c}{4} -\csdef{tud@v@2.06d}{4} -\csdef{tud@v@2.06e}{4} -\csdef{tud@v@2.06f}{4} -\csdef{tud@v@2.06g}{4} -\csdef{tud@v@2.06h}{4} -\csdef{tud@v@2.06i}{4} -\csdef{tud@v@2.06j}{4} -\csdef{tud@v@2.06k}{4} -\csdef{tud@v@2.06l}{4} -\csdef{tud@v@2.06m}{4} -\csdef{tud@v@2.06n}{4} \csdef{tud@v@last}{4} % \end{macrocode} % \end{macro}^^A \tud@v@last -% \end{macro}^^A \tud@v@2.06n -% \end{macro}^^A \tud@v@2.06m -% \end{macro}^^A \tud@v@2.06l -% \end{macro}^^A \tud@v@2.06k -% \end{macro}^^A \tud@v@2.06j -% \end{macro}^^A \tud@v@2.06i -% \end{macro}^^A \tud@v@2.06h -% \end{macro}^^A \tud@v@2.06g -% \end{macro}^^A \tud@v@2.06f -% \end{macro}^^A \tud@v@2.06e -% \end{macro}^^A \tud@v@2.06d -% \end{macro}^^A \tud@v@2.06c -% \end{macro}^^A \tud@v@2.06b -% \end{macro}^^A \tud@v@2.06a % \end{macro}^^A \tud@v@2.06 -% \end{macro}^^A \tud@v@2.05m -% \end{macro}^^A \tud@v@2.05l -% \end{macro}^^A \tud@v@2.05k -% \end{macro}^^A \tud@v@2.05i -% \end{macro}^^A \tud@v@2.05h -% \end{macro}^^A \tud@v@2.05g -% \end{macro}^^A \tud@v@2.05f -% \end{macro}^^A \tud@v@2.05e -% \end{macro}^^A \tud@v@2.05d -% \end{macro}^^A \tud@v@2.05c -% \end{macro}^^A \tud@v@2.05b -% \end{macro}^^A \tud@v@2.05a % \end{macro}^^A \tud@v@2.05 -% \end{macro}^^A \tud@v@2.04e -% \end{macro}^^A \tud@v@2.04d -% \end{macro}^^A \tud@v@2.04c -% \end{macro}^^A \tud@v@2.04b -% \end{macro}^^A \tud@v@2.04a % \end{macro}^^A \tud@v@2.04 -% \end{macro}^^A \tud@v@2.03a % \end{macro}^^A \tud@v@2.03 % \end{macro}^^A \tud@v@2.02 -% \end{macro}^^A \tud@v@2.01b -% \end{macro}^^A \tud@v@2.01a % \end{macro}^^A \tud@v@2.01 % \end{macro}^^A \tud@v@2.00 % \end{macro}^^A \tud@v@first @@ -496,12 +321,16 @@ % \begin{macrocode} \newcommand*\tud@v@get[2]{% \begingroup% - \def\@tempa{\kernel@ifnextchar v{\@tempb}{\@tempb v}}% + \def\@tempa{% + \kernel@ifnextchar v% + {\@tempb}% + {\@tempb v}% + }% \def\@tempb v##1\@nil{\def\@tempc{##1}}% \@tempa #2\@nil% \edef\tud@reserved{% \endgroup% - \etex@unexpanded{\def#1}{\@tempc}% + \unexpanded{\def#1}{\@tempc}% }% \tud@reserved% } @@ -515,13 +344,7 @@ \newcommand*\tud@if@v@lower[1]{% \begingroup% \tud@v@get\@tempa{#1}% - \ifcsdef{tud@v@\@tempa}{% - \ifnum\tud@v@comp<\csuse{tud@v@\@tempa}\relax% - \def\tud@reserved{\endgroup\@firstoftwo}% - \else% - \def\tud@reserved{\endgroup\@secondoftwo}% - \fi% - }{% + \ifcsundef{tud@v@\@tempa}{% \def\tud@reserved{% %<*class> \ClassWarningNoLine{\TUD@Class@Name}% @@ -535,6 +358,12 @@ }% \endgroup\@firstoftwo% }% + }{% + \ifnum\tud@v@comp<\csuse{tud@v@\@tempa}\relax% + \def\tud@reserved{\endgroup\@firstoftwo}% + \else% + \def\tud@reserved{\endgroup\@secondoftwo}% + \fi% }% \tud@reserved% } @@ -790,7 +619,7 @@ % Früher musste die Unterstützung für die Schriftauswahl via \pkg{fontspec} % manuell über die folgende Option aktiviert werden. % \begin{macrocode} -\newif\if@tud@x@fontspec@requested +\tud@newif\if@tud@x@fontspec@requested \TUD@key{fontspec}[true]{% \TUD@set@ifkey{fontspec}{@tud@x@fontspec@requested}{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed% @@ -809,7 +638,7 @@ % \end{macrocode} % Da dieser Prozess sehr tief in die Schriftauswahl eingreift und das Laden des % Paketes die Schriftauswahl für das ganze Dokument verändert, wird diese -% Option nur beim Laden der Klasse dzw. des Paketes zugelassen. +% Option nur beim Laden der Klasse bzw. des Paketes zugelassen. % \begin{macrocode} %<*class> \AtEndOfClass% @@ -820,7 +649,7 @@ {% \TUD@key@toolate{fontspec}% \if@tud@x@fontspec@requested% - \RequirePackage{fontspec}[2017/01/24]% + \RequirePackage{fontspec} \fi% } % \end{macrocode} @@ -841,11 +670,12 @@ % Um die Höhe von Logos im Fußbereich der \pgs{tudheadings}-Seitenstile % einheitlich festzulegen, gab es bis einschließlich der Version~v2.04 die % Länge \cs{footlogoheight} anstelle der Option \opt{footlogoheight}. Sollte -% der Anwender diese anpassen, wird \cs{tud@dim@footlogoheight} auf diesen Wert -% gesetzt und eine Warnung erzeugt. +% der Anwender die Länge anpassen, wird dies mit \cs{TUD@deprecated@length} an +% der entsprechenden Stelle geprüft und die korrespondierende Option auf +% diesen Wert gesetzt, wobei eine Warnung erzeugt wird. % \begin{macrocode} -\newlength\footlogoheight -\setlength\footlogoheight{\maxdimen} +\tud@newglue\footlogoheight +\tud@setdim\footlogoheight{\maxdimen} % \end{macrocode} % \end{length}^^A \footlogoheight % \begin{length}{\pageheadingsvskip} @@ -855,13 +685,14 @@ % Mit diesen Längen konnte der Anwender vor der Version~v2.05 die Überschriften % von Titel, Teilen und Kapiteln vertikal verschieben. Diese Funktionalität % wird seitdem mit den Optionen \opt{headingsvskip} und \opt{pageheadingsvskip} -% abgedeckt. +% abgedeckt. Auch hier wird eine Warnung erzeugt, falls der Anwender diesen +% Wert ändern sollte. % \begin{macrocode} %<*book|report|article> -\newlength\pageheadingsvskip -\setlength\pageheadingsvskip{\maxdimen} -\newlength\headingsvskip -\setlength\headingsvskip{\maxdimen} +\tud@newglue\pageheadingsvskip +\tud@setdim\pageheadingsvskip{\maxdimen} +\tud@newglue\headingsvskip +\tud@setdim\headingsvskip{\maxdimen} % % \end{macrocode} % \end{length}^^A \headingsvskip @@ -1041,6 +872,7 @@ % \begin{macro}{\tud@ifdin} % \changes{v2.06}{2018/08/02}{neu}^^A % Der Befehl \cs{ifdin} ist für \OpenSans hinfällig. +% \ToDo{ifdin nicht mehr definieren, Alternativ (IfDIN[active][TF])?}[v2.07] % \begin{macrocode} \TUD@deprecated@cs{ifdin}{@secondoftwo} % \end{macrocode} @@ -1060,8 +892,8 @@ \fi% } \if@tud@cdoldfont@active - \newcommand*\ifdin{}% - \let\ifdin\tud@ifdin% + \newcommand*\ifdin{} + \let\ifdin\tud@ifdin \fi % \end{macrocode} % \end{macro}^^A \tud@ifdin @@ -1103,9 +935,9 @@ % % \section{Das Paket \pkg{tudscrcomp} -- Kompatibilität veralteter Klassen} % -% Neben den \TUDScript-Klassen gibt es zahlreiche andere \LaTeX-Umsetzungen des -% \CDs der \TnUD. Um eine Migration von diesen \enquote{veralteten} Klassen -% zu erleichtern, wird das Paket \pkg{tudscrcomp} bereitgestellt. Mit diesem +% Neben den \TUDScript-Klassen gibt es zahlreiche andere \LaTeX-Umsetzungen +% des \TUDCDs. Um eine Migration von diesen \enquote{veralteten} Klassen zu +% erleichtern, wird das Paket \pkg{tudscrcomp} bereitgestellt. Mit diesem % können bei der Verwendung von \TUDScript die meisten Optionen und Befehle % genutzt werden, welche durch die Klasse \cls{tudbook} und teilweise vormals % durch die Klassen die \TUDScript-Klassen in der Version~v1.0 sowie die @@ -1113,27 +945,36 @@ % % \iffalse %<*package&comp> -%<*base> +%<*identify> % \fi % % \subsection{Erkennen der geladenen Klasse} % % Damit je nach geladener Klasse die passenden Kompatibilitätseinstellungen und % -befehle bereitgestellt werden können, wird auf die geladene Klasse geprüft. -% Danach wird das dazu passende Paket geladen. -% \begin{macrocode} -\PassOptionsToPackage{oldcolors}{tudscrcolor} +% \begin{macro}{\tud@comp@on@main@class} +% \begin{macro}{\tud@comp@on@poster@class} +% \begin{macrocode} +\@tud@res@swafalse% +\newcommand*\tud@comp@on@main@class{\@gobble} +\@tfor\tud@res@a:={tudscrbook}{tudscrreprt}{tudscrartcl}\do{% + \@ifclassloaded{\tud@res@a}{\@tud@res@swatrue}{}% + \if@tud@res@swa% + \renewcommand*\tud@comp@on@main@class{\@firstofone}% + \@break@tfor% + \fi% +}% +\newcommand*\tud@comp@on@poster@class{\@gobble} \@ifclassloaded{tudscrposter}{% - \RequirePackageWithOptions{tudscrcomp-poster}[\TUD@Version]% -}{% - \RequirePackageWithOptions{tudscrcomp-book}[\TUD@Version]% -} + \renewcommand*\tud@comp@on@poster@class{\@firstofone}% +}{}% % \end{macrocode} +% \end{macro}^^A \tud@comp@on@poster@class +% \end{macro}^^A \tud@comp@on@main@class % % \iffalse -% -%<*!base> -%<*body> +% +%<*option> % \fi % % \subsection{Gemeinsame Optionen und Befehle für alle Klassen} @@ -1141,36 +982,51 @@ % Zunächst werden alle Optionen und Befehle definiert, die unabhängig von der % geladenen Klasse generell bereitgestellt werden. % +% \begin{macrocode} +\PassOptionsToPackage{extended}{tudscrcolor} +% \end{macrocode} +% +% \iffalse +% +%<*body> +% \fi +% % \begin{macro}{\einrichtung} % \begin{macro}{\fachrichtung} % \begin{macro}{\institut} % \begin{macro}{\professur} +% \begin{macro}{\moreauthor} % Es werden Aliasbefehle für die Eingabefelder definiert. % \begin{macrocode} \newcommand*\einrichtung{\faculty} \newcommand*\fachrichtung{\department} \newcommand*\institut{\institute} \newcommand*\professur{\chair} +\newcommand*\moreauthor{\authormore} % \end{macrocode} +% \end{macro}^^A \moreauthor % \end{macro}^^A \professur % \end{macro}^^A \institut % \end{macro}^^A \fachrichtung % \end{macro}^^A \einrichtung +% \begin{macro}{\tudfont} +% \changes{v2.04}{2015/04/24}{\cls{tudmathposter} wird unterstützt}^^A % \begin{macro}{\dinBold} % \changes{v2.05}{2015/07/13}{neu}^^A % \begin{macro}{\dinfamily} % \changes{v2.05}{2015/07/13}{neu}^^A % Für die explizite Schriftauswahl gibt es ebenfalls zwei ältere Befehle. % \begin{macrocode} +\newcommand*\tudfont{\cdfont} \newcommand*\dinBold{\dinbn} \newcommand*\dinfamily{\dinbn} % \end{macrocode} % \end{macro}^^A \dinfamily % \end{macro}^^A \dinBold +% \end{macro}^^A \tudfont % % \iffalse % -%<*book> %<*option> % \fi % @@ -1231,28 +1087,30 @@ %<*body> % \fi % -% \begin{macro}{\moreauthor} +% Die folgenden Makros werden für die Hauptklassen definiert. +% \begin{macrocode} +\tud@comp@on@main@class{% +% \end{macrocode} +% % \begin{macro}{\submitdate} +% \begin{macro}{\submittedon} % \begin{macro}{\supervisorII} % \begin{macro}{\supervisedby} % \begin{macro}{\supervisedIIby} -% \begin{macro}{\submittedon} % Es werden weitere Aliasbefehle für die Eingabefelder der \cls{tudbook}-Klasse % definiert. % \begin{macrocode} -\newcommand*\moreauthor{\authormore} \newcommand*\submitdate{\date} -\newcommand*\supervisorII[1]{\g@addto@macro\@supervisor{\and #1}} +\newcommand*\submittedon[1]{\gdef\datetext{#1}} +\newcommand*\supervisorII[1]{\g@addto@macro\@supervisor{\and\space#1}} \newcommand*\supervisedby[1]{\gdef\supervisorname{#1}} \newcommand*\supervisedIIby[1]{\gdef\supervisorothername{#1}} -\newcommand*\submittedon[1]{\gdef\datetext{#1}} % \end{macrocode} -% \end{macro}^^A \submittedon % \end{macro}^^A \supervisedIIby % \end{macro}^^A \supervisedby % \end{macro}^^A \supervisorII +% \end{macro}^^A \submittedon % \end{macro}^^A \submitdate -% \end{macro}^^A \moreauthor % \begin{macro}{\dissertation} % Bei der Definition des Typs der Abschlussarbeit mit \cs{dissertation} wird % die Lokalisierungsvariable \cs{dissertationname} verwendet und die Feldnamen @@ -1265,41 +1123,13 @@ } % \end{macrocode} % \end{macro}^^A \dissertation -% \begin{environment}{theglossary} -% \begin{macro}{\glossaryname} -% \begin{macro}{\glossitem} -% Eine rudimentäre Umgebung für ein Glossar. -% \begin{macrocode} -\AtBeginDocument{% - \ifundef{\theglossary}{% - \providecommand*\glossaryname{Glossar}% - \newenvironment{theglossary}[1][]{% - \PackageWarning{tudscrcomp}{% - Using the environment `theglossary' is not\MessageBreak% - recommended. You should rather use an appropriate\MessageBreak% - package such as glossaries% - }% - \let\bibname\glossaryname% - \bib@heading% - #1% - \list{}{% - \setlength\labelsep{\z@}% - \setlength\labelwidth{\z@}% - \setlength\itemindent{-\leftmargin}% - }% - }{\endlist}% - \newcommand\glossitem[1]{\item[] #1\par}% - }{}% -} -% \end{macrocode} -% \end{macro}^^A \glossitem -% \end{macro}^^A \glossaryname -% \end{environment}^^A theglossary % \begin{macro}{\chapterpage} % \begin{macro}{\if@tud@comp@chapterpage} % \begin{macro}{\tud@comp@chapterpage@set} % \begin{macro}{\tud@comp@chapterpage@unset} % \begin{macro}{\tud@comp@chapterpage@wrn} +% \begin{macro}{\tud@chapter@pre} +% \begin{macro}{\tud@chapter@app} % Die alte \cls{tudbook}-Klasse stellt den Befehl \cs{chapterpage} bereit. % Mit diesem ist es möglich, das Verhalten der Kapitelseiten~-- welches durch % die Option \opt{chapterpage} gesteuert wird~-- temporär umzuschalten, also @@ -1314,7 +1144,7 @@ % ursprünglichen Zustand geschaltet und der globale Schalter % \cs{if@tud@comp@chapterpage} zurückgesetzt. % \begin{macrocode} -\newif\if@tud@comp@chapterpage +\tud@newif\if@tud@comp@chapterpage \newcommand*\chapterpage{% \global\@tud@comp@chapterpagetrue% \tud@comp@chapterpage@wrn% @@ -1338,39 +1168,85 @@ % \begin{macrocode} \newcommand*\tud@comp@chapterpage@wrn{% \PackageWarning{tudscrcomp}{% - The command \string\chapterpage\space is not\MessageBreak% + The command `\string\chapterpage'\space is not\MessageBreak% recommended. You should use the same style for\MessageBreak% chapters throughout the document% }% \global\let\tud@comp@chapterpage@wrn\relax% } % \end{macrocode} -% \end{macro}^^A \tud@comp@chapterpage@wrn -% \end{macro}^^A \tud@comp@chapterpage@unset -% \end{macro}^^A \tud@comp@chapterpage@set -% \end{macro}^^A \if@tud@comp@chapterpage -% \end{macro}^^A \chapterpage -% \begin{macro}{\tud@chapter@pre} -% \begin{macro}{\tud@chapter@app} % Hier erfolgt die notwendige Anpassungen der internen Gliederungsbefehle. % \begin{macrocode} \AtEndPreamble{% + \ifundef{\if@chapter}{% + \newif\if@chapter% + \ifundef{\chapter}{\@chapterfalse}{\@chaptertrue}% + }{}% \if@chapter% - \pretocmd{\tud@chapter@pre}{\tud@comp@chapterpage@set}% - {}{\tud@patch@wrn{tud@chapter@pre}}% - \apptocmd{\tud@chapter@app}{\tud@comp@chapterpage@unset}% - {}{\tud@patch@wrn{tud@chapter@app}}% + \pretocmd\tud@chapter@pre{% + \tud@comp@chapterpage@set% + }{}{\tud@patch@wrn{tud@chapter@pre}}% + \apptocmd\tud@chapter@app{% + \tud@comp@chapterpage@unset% + }{}{\tud@patch@wrn{tud@chapter@app}}% + \else% + \renewcommand*\tud@comp@chapterpage@wrn{% + \PackageWarning{tudscrcomp}{% + The command `\string\chapterpage'\space is not\MessageBreak% + active as the used document class does not provide\MessageBreak% + any chapters via `\string\chapter'% + }% + \global\let\tud@comp@chapterpage@wrn\relax% + }% \fi% } % \end{macrocode} % \end{macro}^^A \tud@chapter@app % \end{macro}^^A \tud@chapter@pre +% \end{macro}^^A \tud@comp@chapterpage@wrn +% \end{macro}^^A \tud@comp@chapterpage@unset +% \end{macro}^^A \tud@comp@chapterpage@set +% \end{macro}^^A \if@tud@comp@chapterpage +% \end{macro}^^A \chapterpage +% \begin{environment}{theglossary} +% \begin{macro}{\glossaryname} +% \begin{macro}{\glossitem} +% Eine rudimentäre Umgebung für ein Glossar. +% \begin{macrocode} +\AfterEndPreamble{% + \ifundef{\theglossary}{% + \providecommand*\glossaryname{Glossar}% + \newenvironment{theglossary}[1][]{% + \PackageWarning{tudscrcomp}{% + Using the environment `theglossary' is not\MessageBreak% + recommended. You should rather use an appropriate\MessageBreak% + package such as glossaries% + }% + \let\bibname\glossaryname% + \bib@heading% + #1% + \list{}{% + \setlength\labelsep{\z@}% + \setlength\labelwidth{\z@}% + \setlength\itemindent{-\leftmargin}% + }% + }{\endlist}% + \newcommand\glossitem[1]{\item[] #1\par}% + }{}% +} +% \end{macrocode} +% \end{macro}^^A \glossitem +% \end{macro}^^A \glossaryname +% \end{environment}^^A theglossary +% +% Das waren die Makros für die Hauptklassen. +% \begin{macrocode} +} +% \end{macrocode} % % % \iffalse % -% -%<*poster> %<*option> % \fi % @@ -1379,11 +1255,53 @@ % Die hier bereitgestellten Optionen und Befehle werden durch die Klasse % \cls{tudmathposter} bzw. \cls{tudposter} definiert. % +% \begin{option}{loadpackages} +% \changes{v2.06o}{2022/08/02}{neu}^^A +% Die Klasse \cls{tudmathposter} lädt allerhand Pakete. Dies ist jedoch für den +% Anwender alles andere als vorteilhaft, da dadurch unter Umständen Konflikte +% mit anderen Paketen entstehen oder der Nutzer im Zweifelsfall gar nicht weiß, +% dass verwendete Befehle aus bestimmten Paketen entspringen. Dennoch wird aus +% Kompatibilitätsgründen diese Option bereitgestellt, um die Pakete ggf. Ende +% der Präambel zu laden. +% \begin{macrocode} +\tud@comp@on@poster@class{% +\tud@newif\if@tud@comp@loadpackages +\TUD@key{loadpackages}[true]{% + \TUD@set@ifkey{loadpackages}{@tud@comp@loadpackages}{#1}% +} +\AtEndPreamble{\TUD@key@toolate{loadpackages}} +} +% \end{macrocode} +% \end{option}^^A loadpackages +% +% \iffalse +% +%<*body> +% \fi +% +% \begin{macrocode} +\tud@comp@on@poster@class{% +\AtEndPreamble{% + \if@tud@comp@loadpackages% + \RequirePackage{calc} + \RequirePackage{textcomp} + \RequirePackage{tabularx} + \fi% +} +} +% \end{macrocode} +% +% \iffalse +% +%<*option> +% \fi +% % \begin{option}{bluebg} % \changes{v2.05}{2016/04/17}{neu}^^A % Mit der Option \opt{bluebg} kann der Hintergrund des Posters in \val{HKS41} % gesetzt werden. % \begin{macrocode} +\tud@comp@on@poster@class{% \TUD@key{bluebg}[true]{% \TUD@set@ifkey{bluebg}{@tempswa}{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed% @@ -1394,6 +1312,7 @@ \fi% \fi% } +} % \end{macrocode} % \end{option}^^A bluebg % @@ -1402,6 +1321,11 @@ %<*body> % \fi % +% Die folgenden Makros werden für die Posterklasse definiert. +% \begin{macrocode} +\tud@comp@on@poster@class{% +% \end{macrocode} +% % \begin{layerpagestyle}{tudposter} % \changes{v2.05}{2016/07/26}{neu}^^A % Der Seitenstil \pgs{tudposter} wird als Alias für \pgs{empty.tudheadings} @@ -1425,17 +1349,20 @@ % das Makro \cs{tud@split@author@list} um diese Befehle erweitert. % \begin{macrocode} \newrobustcmd*\telefon{\telephone} -\patchcmd{\tud@split@author@list}{telephone}{% - telephone,telefon% -}{}{\tud@patch@wrn{tud@split@author@list}} +\patchcmd\tud@split@author@list + {telephone} + {telephone,telefon} + {}{\tud@patch@wrn{tud@split@author@list}} \newrobustcmd*\fax{\telefax} -\patchcmd{\tud@split@author@list}{telefax}{% - telefax,fax% -}{}{\tud@patch@wrn{tud@split@author@list}} +\patchcmd\tud@split@author@list + {telefax} + {telefax,fax} + {}{\tud@patch@wrn{tud@split@author@list}} \newrobustcmd*\email[1]{\emailaddress*{#1}} -\patchcmd{\tud@split@author@list}{emailaddress}{% - emailaddress,email% -}{}{\tud@patch@wrn{tud@split@author@list}} +\patchcmd\tud@split@author@list + {emailaddress} + {emailaddress,email} + {}{\tud@patch@wrn{tud@split@author@list}} % \end{macrocode} % \end{macro}^^A \tud@split@author@list % \end{macro}^^A \email @@ -1461,12 +1388,12 @@ % \changes{v2.05}{2016/04/17}{neu}^^A % \begin{macro}{\drittlogo} % \changes{v2.05}{2016/04/17}{neu}^^A -% Die Makros zur Angabe von Logo-Dateien (\cs{\dots{}logofile}) werden auf die -% passenden \TUDScript-Befehle gelegt. Die Änderung der Makros, welche für die -% Einbindung der Logos verantwortlich sind (\cs{\dots{}logo}), wird allerdings -% nicht unterstützt. +% Die Makros zur Angabe von Logo-Dateien (|\...logofile|) werden auf die +% passenden \TUDScript-Befehle gelegt. Die Änderung der Makros, welche für die +% Einbindung der Logos verantwortlich sind (|\...logo|), wird allerdings nicht +% unterstützt. % \begin{macrocode} -\newcommand*\zweitlogofile[2][]{\headlogo[#1]{#2}} +\newcommand*\zweitlogofile[2][]{\headlogo[{#1}]{#2}} \newcommand*\zweitlogo[1]{% \PackageWarning{tudscrcomp}{% It isn't possible to redefine the definition for\MessageBreak% @@ -1474,7 +1401,7 @@ documentation of \string\headlogo% }% } -\newcommand*\institutslogofile[2][]{\footlogo[#1]{,,,,,,,#2,}} +\newcommand*\institutslogofile[2][]{\footlogo[{#1}]{,,,,,,,#2,}} \newcommand*\institutslogo[1]{% \PackageWarning{tudscrcomp}{% It isn't possible to redefine the definition for\MessageBreak% @@ -1526,7 +1453,7 @@ % zu umgehen. Sei's drum. Für die Umsetzung werden die Basisgliederungsbefehle % geklont und anschließend der gewünschte vertikale Abstand vor der Überschrift % entfernt. -% \ToDo{Klonen Gliederungsebenen über Makro (Markus fragen?!)}[v2.??] +% \ToDo{Klonen Gliederungsebenen über Makro (Markus fragen?!)}[v2.08] % \begin{macrocode} \newcommand*\topsectionnumdepth{\sectionnumdepth} \newcommand*\scr@topsection@sectionindent{\scr@section@sectionindent} @@ -1575,16 +1502,16 @@ % Layout zentriert gesetzt werden. Eine Mischung von unterschiedlichen Stilen % gleichartiger Ebenen ist aus sicht von Typographie und Layout eher fraglich. % \begin{macrocode} -\newcommand*\centersection[2][\@nil]{% +\NewDocumentCommand\centersection{o m}{% \tud@comp@centersection{section}{#1}{#2}% } -\newcommand*\centersubsection[2][\@nil]{% +\NewDocumentCommand\centersubsection{o m}{% \tud@comp@centersection{subsection}{#1}{#2}% } -\newcommand*\topcentersection[2][\@nil]{% +\NewDocumentCommand\topcentersection{o m}{% \tud@comp@centersection{topsection}{#1}{#2}% } -\newcommand*\topcentersubsection[2][\@nil]{% +\NewDocumentCommand\topcentersubsection{o m}{% \tud@comp@centersection{topsubsection}{#1}{#2}% } % \end{macrocode} @@ -1595,11 +1522,11 @@ \newcommand*\tud@comp@centersection[3]{% \tud@cs@store{raggedsection}% \let\raggedsection\centering% - \ifx#2\@nil\relax% + \IfValueTF{#2}{% + \csuse{#1}[{#2}]{#3}% + }{% \csuse{#1}{#3}% - \else% - \csuse{#1}[#2]{#3}% - \fi% + } \tud@cs@restore{raggedsection}% } % \end{macrocode} @@ -1631,49 +1558,125 @@ \setcounter{secnumdepth}{\m@ne} % \end{macrocode} % \end{counter}^^A secnumdepth -% \begin{macro}{\fusszeile} +% \begin{environment}{farbtabellen} % \changes{v2.05}{2016/04/17}{neu}^^A -% \begin{macro}{\footcolumn} +% \begin{macro}{\if@tud@comp@graytable} % \changes{v2.05}{2016/04/17}{neu}^^A -% Mit diesen Befehlen lässt sich der Inhalt des Fußbereiches angepassen. Wird -% in einem und/oder beiden Argumente von \cs{footcontent} ein Stern \val{*} -% verwendet, so bleibt der bisherige Inhalt erhalten. +% \begin{macro}{\blautabelle} +% \changes{v2.05}{2016/04/17}{neu}^^A +% \begin{macro}{\grautabelle} +% \changes{v2.05}{2016/04/17}{neu}^^A +% Außerdem wird eine Umgebung für farbige Tabellen sowie zwei Umschaltbefehle +% für die farbliche Ausprägung der Tabellenzeilen definiert. +% \begin{macrocode} +\tud@newif\if@tud@comp@graytable +\newcommand*\blautabelle{\@tud@comp@graytablefalse} +\newcommand*\grautabelle{\@tud@comp@graytabletrue} +\newenvironment{farbtabellen}{% + \if@tud@comp@graytable% + \rowcolors{1}{HKS92!20}{HKS92!10}% + \else% + \rowcolors{1}{HKS41!20}{HKS41!10}% + \fi% +}{} +% \end{macrocode} +% \end{macro}^^A \grautabelle +% \end{macro}^^A \blautabelle +% \end{macro}^^A \if@tud@comp@graytable +% \end{environment}^^A farbtabellen +% +% Das waren die Makros für die Posterklassen. % \begin{macrocode} -\newcommand*\fusszeile[2][]{\footcontent[#1]{#2}} -\newcommand*\footcolumn[2]{% - \ifnumber{#1}{% - \ifcase#1\relax% - \footcontent{#2}% - \or% - \footcontent{#2}[*]% - \or% - \footcontent{*}[#2]% - \fi% - }{}% } % \end{macrocode} -% \end{macro}^^A \footcolumn -% \end{macro}^^A \fusszeile % % \iffalse % %<*option> % \fi % -% \begin{option}{tudmathposterfoot} +% Zuletzt wir die Option für das Laden von \pkg{colortbl} durchgereicht. +% \begin{macrocode} +\tud@comp@on@poster@class{% +\PassOptionsToPackage{table}{xcolor} +} +% \end{macrocode} +% +% \begin{option}{cropmargin} +% \changes{v2.06o}{2022/08/03}{neu}^^A +% \begin{macro}{\tud@cropmargin@set} +% \changes{v2.06o}{2022/08/03}{neu}^^A +% \begin{macro}{\schnittrand} +% \changes{v2.05}{2016/04/17}{neu}^^A +% Nun geht es an das Makro \cs{schnittrand}. Zur Intension dieses Befehls gab +% es im \GitHubRepo(tud-cd/tud-cd)<6> bereits eine angeregte Diskussion. +% \ToDo{Für \cls{tudscrposter} bzw alle Klassen übernehmen?}[v2.07] +% \begin{macrocode} +\tud@comp@on@poster@class{% +\newcommand*\tud@cropmargin@set{}% +\preto\tud@cdgeometry@@init{\tud@cropmargin@set}% +\TUD@key{cropmargin}[5mm]{% + \TUD@set@dimkey[mm]{cropmargin}{\@tempa}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \edef\tud@cropmargin@set{% + \noexpand\geometry{% + papersize={% + \the\dimexpr(\@tempa)*2+\paperwidth\relax,% + \the\dimexpr(\@tempa)*2+\paperheight\relax% + },% + layoutsize={\the\paperwidth,\the\paperheight},% + layoutoffset=\the\dimexpr\@tempa\relax,% + showcrop% + }% + }% + \fi% +} +% \end{macrocode} +% Da die Option direkt auf das Seitenlayout zugreift und mehrmalige Aufrufe +% sich beeinflussen würden, werden diese zum Ende der Präambel unterbunden. +% \begin{macrocode} +\AtEndPreamble{\TUD@key@toolate{cropmargin}}% +% \end{macrocode} +% Nachdem die passende Option definiert wurde, wird noch \cs{schnittrand} +% ausgewertet und verarbeitet. Dies geschieht zum spätestmöglichen Zeitpunkt, +% damit dieser Befehl irgendwo innerhalb der Präambel definiert werden kann. +% \begin{macrocode} +\preto\tud@cdgeometry@init{% + \ifundef{\schnittrand}{}{% + \TUDoptions{cropmargin=\schnittrand}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed\else% + \PackageErrorNoLine{tudscrcomp}{% + Wrong definition for `\string\schnittrand'% + }{% + The definition of `\string\schnittrand' does not expand\MessageBreak% + to a valid dimension expression.% + }% + \fi% + }% +} +} +% \end{macrocode} +% \end{macro}^^A \schnittrand +% \end{macro}^^A \tud@cropmargin@set +% \end{option}^^A cropmargin +% +% \begin{option}{tudmathfoot} % \changes{v2.05}{2016/04/17}{neu}^^A -% \begin{macro}{\if@tud@mathposterfoot} +% \begin{option}{tudmathposterfoot} +% \begin{option}{cdfoot} +% \begin{macro}{\if@tud@mathfoot} % \changes{v2.05}{2016/04/17}{neu}^^A -% Mit der Option \opt{tudmathposterfoot} kann die Darstellung des Fußes im -% Poster angepasst werden. Die Klasse \cls{tudmathposter} setzt den Fußbereich -% in zwei asymmetrischen Spalten, wohingegen die \TUDScript-Klassen diesen -% zentriert und symmetrisch zum Satzspiegel platzieren. -% \begin{macrocode} -\newif\if@tud@mathposterfoot -\TUD@key{tudmathposterfoot}[true]{% - \TUD@set@ifkey{tudmathposterfoot}{@tud@mathposterfoot}{#1}% +% Mit der Option \opt{tudmathfoot} kann die Darstellung des Fußes im Poster +% angepasst werden. Die Klasse \cls{tudmathposter} setzt den Fußbereich in zwei +% asymmetrischen Spalten, wohingegen die \TUDScript-Klassen diesen zentriert +% und symmetrisch zum Satzspiegel platzieren. +% \begin{macrocode} +\tud@comp@on@poster@class{% +\tud@newif\if@tud@mathfoot +\TUD@key{tudmathfoot}[true]{% + \TUD@set@ifkey{tudmathfoot}{@tud@mathfoot}{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed% - \if@tud@mathposterfoot% + \if@tud@mathfoot% \footcontent[\small]{% \tud@footcontent@@left{}% }[% @@ -1688,197 +1691,85 @@ \fi% \fi% } +\TUD@key{tudmathposterfoot}[true]{\TUDoptions{tudmathfoot=#1}}% % \end{macrocode} % Die Option \opt{cdfoot} wird um Werte für die Einstellung des Posterfußes % erweitert. % \begin{macrocode} -\TUD@key{cdfoot}[true]{% +\TUD@key{cdfoot}{% \TUD@set@numkey{cdfoot}{@tempa}{% - {tudscrposter}{0},{tudscrposterfoot}{0},{cdposter}{0},{poster}{0},% - {tudmathposter}{1},{tudmathposterfoot}{1},{mathposter}{1},{tudposter}{1}% + {tudscrposter}{0},{tudscrposterfoot}{0},{cdposter}{0},{tudscr}{0},% + {tudmathposter}{1},{tudmathfoot}{1},{tudmathposterfoot}{1},{tudmath}{1}% }{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed% \ifcase\@tempa\relax% tudscrposter - \TUDoptions{tudmathposterfoot=false}% + \TUDoptions{tudmathfoot=false}% \else% tudmathposter - \TUDoptions{tudmathposterfoot=true}% + \TUDoptions{tudmathfoot=true}% \fi% \fi% } +} % \end{macrocode} -% \end{macro}^^A \if@tud@mathposterfoot +% \end{macro}^^A \if@tud@mathfoot +% \end{option}^^A cdfoot % \end{option}^^A tudmathposterfoot +% \end{option}^^A tudmathfoot % % \iffalse % %<*body> % \fi % -% \begin{macro}{\tud@footcontent@use} -% \begin{macro}{\tud@comp@mathposterwidth} +% \begin{macro}{\fusszeile} % \changes{v2.05}{2016/04/17}{neu}^^A -% Um die Option \opt{tudmathposterfoot} umzusetzen, muss für die Ausgabe des +% \begin{macro}{\footcolumn} +% \changes{v2.05}{2016/04/17}{neu}^^A +% \begin{macro}{\tud@footcontent@use} +% Mit diesen Befehlen lässt sich der Inhalt des Fußbereiches angepassen. Wird +% in einem und/oder beiden Argumente von \cs{footcontent} ein Stern \val{*} +% verwendet, so bleibt der bisherige Inhalt erhalten. +% \begin{macrocode} +\tud@comp@on@poster@class{% +\newcommand*\fusszeile[2][]{\footcontent[{#1}]{#2}} +\newcommand*\footcolumn[2]{% + \Ifnumber{#1}{% + \ifcase#1\relax% + \footcontent{#2}% + \or% + \footcontent{#2}[*]% + \or% + \footcontent{*}[{#2}]% + \fi% + }{}% +} +% \end{macrocode} +% Um die Option \opt{tudmathfoot} umzusetzen, muss für die Ausgabe des % Fußbereichs eine Anpassung des Makros \cs{tud@footcontent@use} erfolgen. % Normalerweise wird der Fußbereich in zwei gleichbreite Spalten über die % komplette Textbreite aufgeteilt. Dahingegen werden durch die Klasse % \cls{tudmathposter} beide Fußspalten nicht über den kompletten Textbereich % verteilt, sondern es verbleibt etwas ungenutzter Platz rechts davon, welcher % für ein etwaiges Logo verwendet wird. Dieses Verhalten kann über die Option -% \opt{tudmathposterfoot} aktiviert werden und wird hier nachgebildet. +% \opt{tudmathfoot} aktiviert werden und wird hier nachgebildet. % \begin{macrocode} -\newcommand*\tud@comp@mathposterwidth{4.2\tud@len@widemargin} -\patchcmd{\tud@footcontent@use}{% - \hsize=\dimexpr#2-\@tempdimc\relax% +\patchcmd\tud@footcontent@use{% + \tud@footcontent@@use{\tud@res@glue}% }{% - \if@tud@mathposterfoot% - \hsize=\dimexpr\tud@comp@mathposterwidth\relax% + \if@tud@mathfoot% + \tud@footcontent@@use{\glueexpr\tud@dim@widemargin*21/5\relax}% \else% - \hsize=\dimexpr#2-\@tempdimc\relax% + \tud@footcontent@@use{\@tud@res@glue}% \fi% }{}{\tud@patch@wrn{tud@footcontent@use}} -\patchcmd{\tud@footcontent@use}{% - \hsize=\dimexpr(#2-\columnsep)/2\relax% -}{% - \if@tud@mathposterfoot% - \hsize=\dimexpr(\tud@comp@mathposterwidth-\columnsep)/2\relax% - \else% - \hsize=\dimexpr(#2-\columnsep)/2\relax% - \fi% -}{}{\tud@patch@wrn{tud@footcontent@use}} -\patchcmd{\tud@footcontent@use}{% - \hsize=\dimexpr(#2-\columnsep)/2-\@tempdimc\relax% -}{% - \if@tud@mathposterfoot% - \hsize=\dimexpr(\tud@comp@mathposterwidth-\columnsep)/2\relax% - \else% - \hsize=\dimexpr(#2-\columnsep)/2-\@tempdimc\relax% - \fi% -}{}{\tud@patch@wrn{tud@footcontent@use}} -% \end{macrocode} -% \end{macro}^^A \tud@comp@mathposterwidth -% \end{macro}^^A \tud@footcontent@use -% \begin{environment}{figurehere} -% \changes{v2.05}{2016/04/17}{neu}^^A -% \begin{environment}{tablehere} -% \changes{v2.05}{2016/04/17}{neu}^^A -% Weiterhin stellt die Klasse \cls{tudmathposter} zwei Umgebungen bereit, mit -% denen sich Tabellen und Bilder an einer bestimmten Stelle exakt platzieren -% lassen. Prinzipiell könnte hierfür auch das Paket \pkg{float} zum Einsatz -% kommen. -% \ToDo{Für \cls{tudscrposter} übernehmen?}[v2.07] -% \begin{macrocode} -\newenvironment{figurehere}{% - \def\@captype{figure}% - \renewcommand*\caption{\captionof{figure}}% - \renewcommand*\captionabove{\captionaboveof{figure}}% - \renewcommand*\captionbelow{\captionbelowof{figure}}% - \vskip\intextsep% - \vbox \bgroup% - \hsize=\columnwidth% - \@parboxrestore% - \ignorespaces% -}{% - \egroup% - \vskip\intextsep% - \ignorespaces% -} -\newenvironment{tablehere}{% - \def\@captype{table}% - \renewcommand*\caption{\captionof{table}}% - \renewcommand*\captionabove{\captionaboveof{table}}% - \renewcommand*\captionbelow{\captionbelowof{table}}% - \vskip\intextsep% - \vbox \bgroup% - \hsize=\columnwidth% - \@parboxrestore% - \ignorespaces% -}{% - \egroup% - \vskip\intextsep% - \ignorespaces% -} -% \end{macrocode} -% \end{environment}^^A tablehere -% \end{environment}^^A figurehere -% \begin{environment}{farbtabellen} -% \changes{v2.05}{2016/04/17}{neu}^^A -% \begin{macro}{\if@tud@comp@graytable} -% \changes{v2.05}{2016/04/17}{neu}^^A -% \begin{macro}{\blautabelle} -% \changes{v2.05}{2016/04/17}{neu}^^A -% \begin{macro}{\grautabelle} -% \changes{v2.05}{2016/04/17}{neu}^^A -% Außerdem wird eine Umgebung für farbige Tabellen sowie zwei Umschaltbefehle -% für die farbliche Ausprägung der Tabellenzeilen definiert. -% \begin{macrocode} -\PassOptionsToPackage{table}{xcolor} -\newif\if@tud@comp@graytable -\newcommand*\blautabelle{\@tud@comp@graytablefalse} -\newcommand*\grautabelle{\@tud@comp@graytabletrue} -\newenvironment{farbtabellen}{% - \if@tud@comp@graytable% - \rowcolors{1}{HKS92!20}{HKS92!10}% - \else% - \rowcolors{1}{HKS41!20}{HKS41!10}% - \fi% -}{} -% \end{macrocode} -% \end{macro}^^A \grautabelle -% \end{macro}^^A \blautabelle -% \end{macro}^^A \if@tud@comp@graytable -% \end{environment}^^A farbtabellen -% \begin{macro}{\schnittrand} -% \changes{v2.05}{2016/04/17}{neu}^^A -% Zu guter Letzt geht es an das Makro \cs{schnittrand}. Zur Intension dieses -% Befehls gab es auf \hrfn{https://github.com/tud-cd/tud-cd/issues/6}{GitHub} -% bereits eine angeregte Diskussion. Deshalb wird das Makro als Wertzuweisung -% für die Option \opt{bleedmargin} genutzt. -% \ToDo{Für \cls{tudscrposter} übernehmen?}[v2.07] -% \begin{macrocode} -\ifundef{\schnittrand}{}{% - \ifisdimension{\schnittrand}{% - \edef\@tempa{% - paperwidth=\the\dimexpr\paperwidth+\schnittrand*2\relax,% - paperheight=\the\dimexpr\paperheight+\schnittrand*2\relax,% - layout=\the\paperwidth:\the\paperheight,% - layoutoffset=\the\dimexpr\schnittrand\relax,% - showcrop% - }% - \expandafter\geometry\expandafter{\@tempa}% - }{% - \PackageErrorNoLine{tudscrcomp}{% - Wrong definition for `\string\schnittrand'% - }{% - The definition of `\string\schnittrand' does not expand to\MessageBreak% - a valid dimension expression.% - }% - }% -}% -% \end{macrocode} -% \end{macro}^^A \schnittrand -% -% Die Klasse \cls{tudmathposter} lädt allerhand Pakete. Dies ist jedoch für den -% Anwender alles andere als vorteilhaft, da dadurch unter Umständen Konflikte -% mit anderen Paketen entstehen oder der Nutzer im Zweifelsfall gar nicht weiß, -% dass verwendete Befehle aus bestimmten Paketen entspringen. Dennoch werden -% aus Kompatibilitätsgründen einige Pakete geladen, um bestehende Dokumente -% trotz alledem nach der Portierung kompiliert werden können. Um den Nutzer die -% Möglichkeit zu geben, die Pakete selber ggf. mit Optionen zu laden, erfolgt -% die Anforderung der Pakete erst am ende der Präambel. -% \begin{macrocode} -\AtEndPreamble{% - \RequirePackage{amsmath}[2016/06/28]% - \RequirePackage{amsfonts}[2013/01/14]% - \RequirePackage{calc}[2014/10/28]% - \RequirePackage{textcomp}[2016/06/19]% - \RequirePackage{tabularx}[2016/02/03]% } % \end{macrocode} +% \end{macro}^^A \tud@footcontent@use +% \end{macro}^^A \footcolumn +% \end{macro}^^A \fusszeile % % \iffalse % -% -% % % \fi % @@ -1888,7 +1779,7 @@ % Bereitstellung der Schriften für veraltete Klassen}^^A % % Das Paket \pkg{fix-tudscrfonts} bietet die Schriftfamilien des \TUDCDs im -% \TUDScript-Stil für die \enquote{veralteten} Klassen von Klaus Bergmann sowie +% \TUDScript-Stil für die \enquote{veralteten} Klassen von Klaus~Bergmann sowie % die Posterklassen an. % % \iffalse @@ -1901,22 +1792,24 @@ % \begin{macrocode} \AtEndPreamble{% \tud@fixfonts@class@check% - \RequirePackage{tudscrfonts}[\TUD@Version]% + \RequirePackage{tudscrfonts}[% +%!TUD@Version + ]% } % \end{macrocode} % % \subsection{Verwendbarkeit und Ladezeitpunkt von \pkg{fix-tudscrfonts}} % % Da das Paket eine Vielzahl an Anpassungen der Schriftbefehle vornimmt sowie -% die Definition von \LaTeXe-Standardbefehlen bereits vor dem Laden der -% eigentlichen Dokumentklasse sichern muss, kann dieses Paket ausschließlich -% vor \cs{documentclass} mit \cs{RequirePackage} geladen werden. +% die Definition von \LaTeX-Standardbefehlen bereits vor dem Laden der +% eigentlichen Klasse sichern muss, kann dieses Paket ausschließlich vor +% \cs{documentclass} mit \cs{RequirePackage} geladen werden. % % \begin{macro}{\tud@fixfonts@class@check} % \changes{v2.05}{2016/01/02}{neu}^^A % Dieser Befehl wird nach dem Laden einer unterstützten Klasse zu \cs{relax} -% gesetzt. Sollte das Paket jedoch erst nach einer Dokumentklasse geladen -% werden, so wird ein Fehler ausgegeben. +% gesetzt. Sollte das Paket jedoch erst nach einer Klasse geladen werden, so +% wird ein Fehler ausgegeben. % \begin{macrocode} \ifx\usepackage\RequirePackage \newcommand*\tud@fixfonts@class@check{% @@ -1926,8 +1819,8 @@ }% }% % \end{macrocode} -% Wird das Paket mit einer nicht unterstützten Dokumentklasse verwendet, wird -% ebenfalls ein Fehler ausgegeben. +% Wird das Paket mit einer nicht unterstützten Klasse verwendet, wird ebenfalls +% ein Fehler ausgegeben. % \begin{macrocode} \else \newcommand*\tud@fixfonts@class@check{% @@ -1999,6 +1892,8 @@ \tud@cs@store{shapedefault}% \tud@cs@store{normalfont}% \let\normalfont\relax% + \let\abovecaptionskip\relax% + \let\belowcaptionskip\relax% \PassOptionsToClass{serifmath}{#1}% }% \AfterClass{#1}{% @@ -2019,6 +1914,10 @@ \tud@cs@restore{seriesdefault}% \tud@cs@restore{shapedefault}% \tud@cs@restore{normalfont}% + \newlength\abovecaptionskip% + \newlength\belowcaptionskip% + \setlength\abovecaptionskip{10\p@}% + \setlength\belowcaptionskip{0\p@}% #2% \AfterPackage{tudscrfonts}{% \def\dinBold{\dinbn}% @@ -2151,29 +2050,41 @@ % zwingend in \DIN gesetzt werden. % \begin{macrocode} \tud@fixfonts@class@adapt{tudbook}{% - \patchcmd{\@makechapterhead}{\dinBold\Huge\bfseries}{% + \patchcmd\@makechapterhead{% + \dinBold\Huge\bfseries% + }{% \tud@sec@fontface% \if@color\color{HKS41-100}\fi% \Huge% }{}{\tud@patch@wrn{@makechapterhead}}% - \patchcmd{\@makechapterhead}{\MakeUppercase}{% + \patchcmd\@makechapterhead{% + \MakeUppercase% + }{% \tud@sec@format% }{}{\tud@patch@wrn{@makechapterhead}}% - \patchcmd{\@makeschapterhead}{\dinBold\Huge\bfseries}{% + \patchcmd\@makeschapterhead{% + \dinBold\Huge\bfseries% + }{% \tud@sec@fontface% \if@color\color{HKS41-100}\fi% \Huge% }{}{\tud@patch@wrn{@makeschapterhead}}% - \patchcmd{\@makeschapterhead}{\MakeUppercase}{% + \patchcmd\@makeschapterhead{% + \MakeUppercase% + }{% \tud@sec@format% }{}{\tud@patch@wrn{@makeschapterhead}}% - \patchcmd{\section}{\dinBold\Large\bfseries\MakeUppercase}{% + \patchcmd\section{% + \dinBold\Large\bfseries\MakeUppercase% + }{% \tud@sec@fontface% \if@color\color{HKS41-100}\fi% \Large% \tud@sec@format% }{}{\tud@patch@wrn{section}}% - \patchcmd{\showtitle}{\dinBold\Huge\bfseries\MakeUppercase}{% + \patchcmd\showtitle{% + \dinBold\Huge\bfseries\MakeUppercase% + }{% \tud@sec@fontface% \if@colortitle\color{HKS41-30}\fi% \Huge% @@ -2208,6 +2119,7 @@ % Es werden einige Einstellungen für die Überschriften angepasst. % \begin{macrocode} \tud@fixfonts@class@adapt{tudmathposter}{% + \ifunivers\PassOptionsToPackage{cdoldfont}{tudscrfonts}\fi% \def\raggedtitle{\tud@raggedright}% \renewcommand*\raggedpart{\tud@raggedright}% \renewcommand*\raggedsection{\tud@raggedright}% @@ -2235,25 +2147,25 @@ \fi }% }% - \apptocmd{\maketitle}{\vspace{-6ex}}{}{\tud@patch@wrn{maketitle}}% + \apptocmd\maketitle{% + \vspace{-6ex}% + }{}{\tud@patch@wrn{maketitle}}% \renewcommand*\subtitlefont{% \unskip% \tud@sec@fontface% \huge% }% \renewcommand*\preprocesstitle[1]{\raggedtitle\tud@sec@format{#1}}% - \if@mathevorgabe% - \undef\sectionfont% - \undef\subsectionfont% - \fi% - \newcommand*\sectionfont{\bfseries\LARGE}% - \newcommand*\subsectionfont{\sectionfont\large}% + \def\sectionfont{\tud@sec@fontface\LARGE}% + \def\subsectionfont{\tud@sec@fontface\large}% % \end{macrocode} % Für die Schriftstärke in der Kopfzeile muss der Seitenstil angepasst und % anschließend nochmals akiviert werden. % \begin{macrocode} - \patchcmd{\ps@tudposter}{\textbf{\@einrichtung}}{% - \textbf{\fontseries{b}\selectfont\@einrichtung}% + \patchcmd\ps@tudposter{% + \textbf{\@einrichtung}% + }{% + {\fontseries{b}\selectfont\@einrichtung}% }{}{\tud@patch@wrn{ps@tudposter}}% \pagestyle{tudposter}% } @@ -2267,23 +2179,21 @@ % \end{KOMAfont}^^A title % % \begin{macro}{\tud@x@tudfonts@prevent} -% \changes{v2.06}{2018/02/14}{% -% neu, nur einmaliges Ausführen des Fixes für \pkg{tudfonts}% -% }^^A +% \changes{v2.06}{2018/02/14}{neu}^^A % \begin{macro}{\if@tudfonts@nodin} % \changes{v2.04}{2015/04/24}{\cls{tudmathposter} wird unterstützt}^^A % Die Klasse \cls{tudmathposter} lädt für die Einstellungen der Schriften das % Paket \pkg{tudfonts}. Wenn \pkg{tudscrfonts} zum Einsatz kommen soll, ist das % unerwünscht, weshalb das Laden hiermit unterbunden wird. +% \ToDo{opensans nur durch Dokumentklasse nicht laden}[v2.07] % \begin{macrocode} \newcommand*\tud@x@tudfonts@prevent{% - \RequirePackage{amsmath}% - \RequirePackage{amsfonts}% \newif\if@tudfonts@nodin% \let\DeclareTudMathSizes\@gobblefour% \let\tud@x@tudfonts@prevent\relax% } \PreventPackageFromLoading[\tud@x@tudfonts@prevent]{tudfonts} +\PreventPackageFromLoading{opensans} % \end{macrocode} % \end{macro}^^A \if@tudfonts@nodin % \end{macro}^^A \tud@x@tudfonts@prevent @@ -2293,6 +2203,6 @@ % % \fi % -% \Finale +% \PrintBackMatter % \endinput diff --git a/macros/latex/contrib/tudscr/source/tudscr-doc.dtx b/macros/latex/contrib/tudscr/source/tudscr-doc.dtx index 0089781abe..7580c84da5 100644 --- a/macros/latex/contrib/tudscr/source/tudscr-doc.dtx +++ b/macros/latex/contrib/tudscr/source/tudscr-doc.dtx @@ -1,10 +1,10 @@ -% \CheckSum{2094} % \iffalse meta-comment +%/GitFileInfo=tudscr-doc.dtx % % TUD-Script -- Corporate Design of Technische Universität Dresden % ---------------------------------------------------------------------------- % -% Copyright (C) Falk Hanisch , 2012-2021 +% Copyright (C) Falk Hanisch , 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-doc.dtx +% \iffalse ins:batch + dtx:driver +%<*ins> +\ifx\documentclass\undefined + \input docstrip.tex + \ifToplevel{\batchinput{tudscr.ins}} +\else + \let\endbatchfile\relax +\fi +\endbatchfile +% %<*dtx> -% \fi -% -\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi -\ProvidesFile{tudscr-doc.dtx}[2019/07/18 v2.06c TUD-Script\space% - (source code documentation based on scrartcl/scrdoc)% -] -% -% \iffalse +\ProvidesFile{tudscr-doc.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-doc.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} @@ -83,14 +62,14 @@ % \changes{v2.03}{2015/01/09}{\cls{tudscrdoc}: Indextyp Seitenstilebene}^^A % \changes{v2.05}{2016/04/21}{Verwendung von \app{texindy} möglich}^^A % +% +% % \section{Die Klasse \cls{tudscrdoc} -- Erweiterte Quelltextdokumentation} % % Mit dieser Klasse erfolgt die Quelltextdokumentation des \TUDScript-Bundles. % Sie lädt standarmäßig die Klasse \cls{ltxdoc}, ersetzt allerdings im Stile % von \cls{scrdoc} im Hintergrund \cls{article} durch \cls{scrartcl}. % -% \StopEventually{\PrintIndex\PrintChanges\PrintToDos} -% % \iffalse %<*class&option> % \fi @@ -98,27 +77,30 @@ % Damit der zu \cls{scrartcl} gehörige Titel genutzt werden kann, wird dieser % temporär gesichert. % \begin{macrocode} -\newcommand*\scr@maketitle{}% -\PassOptionsToClass{toc=left,fontsize=10pt}{scrartcl}% -\AfterClass{scrartcl}{\let\scr@maketitle\@maketitle}% +\newcommand*\scr@maketitle{} +\PassOptionsToClass{toc=left,fontsize=10pt,parskip=half-}{scrartcl} +\AfterClass{scrartcl}{\let\scr@maketitle\@maketitle} +\AfterClass{ltxdoc}{\let\@maketitle\scr@maketitle} % \end{macrocode} % Der folgende Quelltext ist 1:1 aus \cls{scrdoc} kopiert. % \begin{macrocode} -\newcommand*\sd@saved@LoadClass{} -\let\sd@saved@LoadClass=\LoadClass +\newcommand*\tud@saved@LoadClass{} +\let\tud@saved@LoadClass=\LoadClass \renewcommand*\LoadClass[2][]{% \begingroup% \edef\@tempc{#2}\def\@tempb{article}% \ifx\@tempc\@tempb% - \let\LoadClass\sd@saved@LoadClass% + \let\LoadClass\tud@saved@LoadClass% \def\@tempc{scrartcl}% \fi% \edef\@tempc{% - \noexpand\endgroup\noexpand\sd@saved@LoadClass[{#1}]{\@tempc}}% + \endgroup% + \noexpand\tud@saved@LoadClass[{#1}]{\@tempc}% + }% \@tempc% } -\newcommand*\sd@saved@PassOptionsToClass{} -\let\sd@saved@PassOptionsToClass=\PassOptionsToClass +\newcommand*\tud@saved@PassOptionsToClass{} +\let\tud@saved@PassOptionsToClass=\PassOptionsToClass \renewcommand*\PassOptionsToClass[2]{% \begingroup% \edef\@tempc{#2}\def\@tempb{article}% @@ -126,8 +108,9 @@ \def\@tempc{scrartcl}% \fi% \edef\@tempc{% - \noexpand\endgroup\noexpand\sd@saved@PassOptionsToClass{#1}{% - \@tempc}}% + \endgroup% + \noexpand\tud@saved@PassOptionsToClass{#1}{\@tempc}% + }% \@tempc% } \LoadClassWithOptions{ltxdoc}[2015/03/26] @@ -135,6 +118,21 @@ \setcounter{StandardModuleDepth}{2} % \end{macrocode} % +% \subsection{Ignorierte Makros bei der Nutzung von zusätzlichen Indexeinträgen} +% +% Befehle, welche bei der Verwendung von \cs{EnableCrossrefs} dennoch nicht im +% Index erscheinen sollen, müssen mit \cs{DoNotIndex angegeben werden.} +% +% \begin{macro}{\DisableCrossrefsForced} +% \changes{v2.05i}{2017/03/02}{neu}^^A +% Deaktivieren von Makroeinträgen im Index nach der Verwendung von +% \cs{EnableCrossrefs}. Sollte in einer Gruppe genutzt werden! +% \begin{macrocode} +\newcommand*\DisableCrossrefsForced{} +\let\DisableCrossrefsForced\DisableCrossrefs +% \end{macrocode} +% \end{macro}^^A \DisableCrossrefsForced +% % \subsection{Klassenoptionen} % % \begin{option}{final} @@ -169,697 +167,892 @@ \ProcessOptions\relax % \end{macrocode} % -% \subsection{Ignorierte Makros bei der Nutzung von zusätzlichen Indexeinträgen} -% -% Befehle, welche bei der Verwendung von \cs{EnableCrossrefs} dennoch nicht im -% Index erscheinen sollen. -% -% \begin{macro}{\DisableCrossrefsForced} -% \changes{v2.05i}{2017/03/02}{neu}^^A -% Deaktivieren von Makroeinträgen im Index nach der Verwendung von -% \cs{EnableCrossrefs}. Sollte in einer Gruppe genutzt werden! -% \begin{macrocode} -\newcommand*\DisableCrossrefsForced{} -\let\DisableCrossrefsForced\DisableCrossrefs -% \end{macrocode} -% \end{macro}^^A \DisableCrossrefsForced -% -% \begingroup% -% \DisableCrossrefsForced% -% \begin{macrocode} -%^^A\DoNotIndex{\ ,\",\.,\@,\\,\{,\}} -%^^A\DoNotIndex{\@abstrtfalse,\@abstrttrue,\@addtoreset} -%^^A\DoNotIndex{\@afterheading,\@afterindentfalse} -%^^A\DoNotIndex{\@Alph,\@alph,\@arabic} -%^^A\DoNotIndex{\@beginparpenalty} -%^^A\DoNotIndex{\@car,\@cdr,\@centercr} -%^^A\DoNotIndex{\@dblfloat,\@dotsep,\@dottedtocline} -%^^A\DoNotIndex{\@empty,\@endparpenalty} -%^^A\DoNotIndex{\@float,\@fontswitch} -%^^A\DoNotIndex{\@gobbletwo} -%^^A\DoNotIndex{\@hangfrom,\@highpenalty} -%^^A\DoNotIndex{\@ifnextchar,\@ifundefined,\@itempenalty} -%^^A\DoNotIndex{\@latex@warning} -%^^A\DoNotIndex{\@M,\@m,\@medpenalty,\@minus,\@mkboth} -%^^A\DoNotIndex{\@mparswitchfalse,\@mparswitchtrue} -%^^A\DoNotIndex{\@ne,\@nil,\@nobreakfalse,\@nobreaktrue,\@nomath} -%^^A\DoNotIndex{\@plus} -%^^A\DoNotIndex{\@Roman,\@roman} -%^^A\DoNotIndex{\@tempa,\@tempb,\@tempc} -%^^A\DoNotIndex{\@tempcnta,\@tempcntb,\@tempcntc} -%^^A\DoNotIndex{\@tempdima,\@tempdimb,\@tempdimc} -%^^A\DoNotIndex{\@tempskipka,\@tempskipkb,\@tempskipkc} -%^^A\DoNotIndex{\@tempswafalse,\@tempswatrue,\@tempswbfalse,\@tempswbtrue} -%^^A\DoNotIndex{\@tocrmarg,\@topnewpage,\@topnum} -%^^A\DoNotIndex{\@twocolumnfalse,\@twocolumntrue,\@twosidefalse,\@twosidetrue} -%^^A\DoNotIndex{\@undefined,\@whiledim,\@whilenum} -%^^A\DoNotIndex{\addcontentsline,\addpenalty,\addtocontents} -%^^A\DoNotIndex{\addtolength,\addvspace,\advance} -%^^A\DoNotIndex{\begin,\begingroup,\bfseries,\box,\bullet} -%^^A\DoNotIndex{\c@figure,\c@page,\c@secnumdepth,\c@table,\c@tocdepth,\cdot} -%^^A\DoNotIndex{\centering,\changes,\cleardoublepage,\clearpage,\cmd} -%^^A\DoNotIndex{\CodelineIndex,\col@number,\cs,\CurrentOption} -%^^A\DoNotIndex{\dblfloatpagefraction,\dbltopfraction,\def,\divide,\DoNotIndex} -%^^A\DoNotIndex{\DeclareOldFontCommand,\DeclareOption,\DisableCrossrefs} -%^^A\DoNotIndex{\else,\em,\empty,\EnableCrossrefs,\end,\end@dblfloat,\end@float} -%^^A\DoNotIndex{\endgroup,\endlist,\endquotation,\endtitlepage,\everypar} -%^^A\DoNotIndex{\ExecuteOptions,\expandafter} -%^^A\DoNotIndex{\fboxrule,\fboxsep,\fi} -%^^A\DoNotIndex{\gdef,\global} -%^^A\DoNotIndex{\hangindent,\hbox,\hfil,\hrule,\hsize,\hskip,\hspace,\hss} -%^^A\DoNotIndex{\if,\if@tempswa,\ifcase,\ifdim,\ifnum,\ifodd,\ifx,\include} -%^^A\DoNotIndex{\input,\InputIfFileExists,\item,\itshape} -%^^A\DoNotIndex{\kern} -%^^A\DoNotIndex{\leavevmode,\leftmark,\leftskip,\let,\lineskip,\list,\long} -%^^A\DoNotIndex{\m@ne,\m@th,\marginpar,\markboth,\markright} -%^^A\DoNotIndex{\mathbf,\mathcal,\mathit,\mathnormal,\mathrm,\mathsf,\mathtt} -%^^A\DoNotIndex{\MessageBreak,\month} -%^^A\DoNotIndex{\newblock,\newcommand,\newcount,\newcounter,\newdimen} -%^^A\DoNotIndex{\newenvironment,\newlength,\newpage,\nobreak,\noindent} -%^^A\DoNotIndex{\normalcolor,\normalfont,\normallineskip,\normalsize} -%^^A\DoNotIndex{\null,\number,\numberline} -%^^A\DoNotIndex{\OldMakeindex,\OnlyDescription,\or,\overfullrule} -%^^A\DoNotIndex{\p@,\PackageError,\PackageInfo,\PackageWarningNoLine} -%^^A\DoNotIndex{\pagenumbering,\pagestyle,\par,\paragraph,\parbox} -%^^A\DoNotIndex{\PassOptionsToPackage,\pcal,\penalty,\protect,\providecommand} -%^^A\DoNotIndex{\PrintIndex,\PrintChanges,\ProcessOptions,\ProvidesClass} -%^^A\DoNotIndex{\raggedbottom,\raggedleft,\raggedright,\refstepcounter,\relax} -%^^A\DoNotIndex{\renewcommand,\RequirePackage,\reset@font,\rightmargin} -%^^A\DoNotIndex{\rightmark,\rightskip,\rmfamily} -%^^A\DoNotIndex{\scshape,\secdef,\setbox,\setcounter,\setlength,\settowidth} -%^^A\DoNotIndex{\sfcode,\sffamily,\skip,\sloppy,\slshape,\space,\string} -%^^A\DoNotIndex{\the,\thispagestyle,\ttfamily,\twocolumn,\typeout} -%^^A\DoNotIndex{\undefined,\usecounter} -%^^A\DoNotIndex{\vfil,\vfill,\vspace} -%^^A\DoNotIndex{\wd} -%^^A\DoNotIndex{\xdef} -%^^A\DoNotIndex{\year} -%^^A\DoNotIndex{\z@} -% \end{macrocode} -% \endgroup% -% % \iffalse % %<*class&body> % \fi % -% \subsection{Definition und Erscheinungsbild von Deklarationselementen} +% \subsection{Standardwerte für Titelei, Absatzauszeichnung und Index} % -% Mit dem Paket~\pkg{dox} können weitere Deklarationselemente erstellt werden. -% Dieses lädt außerdem das Paket~\pkg{doc}, welches die Grundfunktionalitäten -% für die Erstellung von \file{.dtx}-Dateien bereitstellt. In der momentanen -% Version unterstützt das Paket~\pkg{dox} die aktuellen Anpassungen an die -% Erstellung von Änderungsnotizen durch \pkg{doc} nicht, weshalb im Folgenden -% einige Patches notwendig sind. +% Folgende Werte sind standardmäßig für den Titel eingestellt, können aber +% jederzeit überschrieben werden. % \begin{macrocode} -\RequirePackage{dox}[2010/12/16] -\@ifpackagelater{dox}{2017/12/07}{% - \ClassWarning{\TUD@Class@Name}{% - Package `dox' was updated so some patches\MessageBreak% - are maybe outdated% - }% -}{}% +\AtEndOfClass{% + \@ifpackageloaded{tudscr-gitinfo}{% + \GetFileInfo{\jobname}% + \title{\file{\filename}}% + \date{% + \filedate% + \ifdefvoid{\fileversion}{}{\nobreakspace\fileversion}% + \ifdefvoid{\filerevision}{}{\nobreakspace\texttt{\filerevision}}% + }% + }{}% + \CodelineIndex% + \RecordChanges% +} % \end{macrocode} -% \begin{macro}{\m@cro@} -% Nach dem Laden des Paketes werden die Definitionen einiger Makros überprüft. +% Wurde in der Präambel \cs{GetFileInfo} nicht aufgerufen, dann erfolgt dies zu +% Beginn des Dokumentes. % \begin{macrocode} -\CheckCommand\m@cro@[2]{% - \endgroup \topsep\MacroTopsep \trivlist - \edef\saved@macroname{\string#2}% - #1 - \let\saved@indexname\saved@macroname - \else - \edef\saved@indexname{\expandafter\@gobble\string#2}% - \fi - \def\makelabel##1{\llap{##1}}% - \if@inlabel - \let\@tempa\@empty \count@\macro@cnt - \loop \ifnum\count@>\z@ - \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne \repeat - \edef\makelabel##1{\llap{\vtop to\baselineskip - {\@tempa\hbox{##1}\vss}}}% - \advance \macro@cnt \@ne - \else \macro@cnt\@ne \fi - \edef\@tempa{\noexpand\item[% - #1% - \noexpand\PrintMacroName - \else - \noexpand\PrintEnvName - \fi - {\string#2}]}% - \@tempa - \global\advance\c@CodelineNo\@ne - #1% - \SpecialMainIndex{#2}\nobreak - \DoNotIndex{#2}% - \else - \SpecialMainEnvIndex{#2}\nobreak - \fi - \global\advance\c@CodelineNo\m@ne - \ignorespaces +\AtBeginDocument{% + \ifdefvoid{\filename}{% + \IfFileExists{\jobname.dtx}{% + \edef\filename{\jobname.dtx}% + }{% + \edef\filename{\jobname.tex}% + }% + \undef\filedate% + \undef\fileversion% + \undef\filerevision% + \undef\fileinfo% + \expandafter\GetFileInfo\expandafter{\filename}% + }{}% + \ifdefvoid{\filerevision}{\let\filerevision\@empty}{}% } % \end{macrocode} -% \end{macro}^^A \m@cro@ % -% \subsubsection{Erweiterte Einträge für Index und Änderungsliste} +% \subsection{Seitenstil} % -% \begin{macro}{\doxitem} -% Mit dem Befehl \cs{doxitem} werden beliebige Deklarationselemente erstellt. -% das Makro wird für das Hinzufügen des Eintragstyps für Index, Änderungsliste -% und Randnotiz angepasst. -% \begin{macrocode} -\CheckCommand\doxitem[4][]{% - \@nameuse{dox@macrolike\dox@macrolikedefault}% - \def\dox@idxtype{#3}% - \setkeys{dox}{#1} - \@ifundefined{Print#2Name}{% - \ifdox@macrolike - \expandafter\def\csname Print#2Name\endcsname##1{% - \strut\MacroFont\string ##1\ } - \else - \expandafter\def\csname Print#2Name\endcsname##1{% - \strut\MacroFont ##1\ } - \fi}{} - \ifdox@macrolike - \def\@doxexpr{\@doxcreatespecialmainmacrolikeindex{#2}}% - \else - \def\@doxexpr{\@doxcreatespecialmainindex{#2}}% - \fi - \expandafter\@doxexpr\expandafter{\dox@idxtype}{#4}% - \@ifundefined{PrintDescribe#2}{% - \ifdox@macrolike - \expandafter\def\csname PrintDescribe#2\endcsname##1{% - \strut\MacroFont\string ##1\ } - \else - \expandafter\def\csname PrintDescribe#2\endcsname##1{% - \strut\MacroFont ##1\ } - \fi}{} - \ifdox@macrolike - \def\@doxexpr{\@doxcreatespecialmacrolikeindex{#2}}% - \else - \def\@doxexpr{\@doxcreatespecialindex{#2}}% - \fi - \expandafter\@doxexpr\expandafter{\dox@idxtype}{#4}% - \@doxcreatedescribe{#2} - \@doxcreateenv{#2}{#3} - \ifdox@macrolike - \expandafter\let\csname @Save#2IndexName\endcsname% - \@doxsavemacrolikeindexname% - \else - \expandafter\let\csname @Save#2IndexName\endcsname\@doxsaveindexname% - \fi -} -% \end{macrocode} -% Das Makro wird dahingehend angepasst, dass alle für die Ausgabe erzeugten -% Befehle der Form \cs{Print\meta{Typ}Name} und \cs{PrintDescribe\meta{Typ}} -% um den Eintragstyp ergänzt werden, erstellt durch \cs{doxcreateprintname} -% bzw. \cs{doxcreatemacrolikeprintname}. Zusätzlich werden für die Klasse -% \cls{tudscrdoc} Befehle in der Form \cs{@Save\meta{Typ}IndexName} mit den -% neuen Makros \cs{doxcreateindexname} bzw. \cs{doxcreatemacrolikeindexname} -% erstellt. Mit diesen wird beim Aufruf einer Deklarationsumgebung der aktuelle -% Name und Eintragstyp des jeweiligen Deklarationselementes gesichert, um diese -% Informationen in der Änderungsliste nutzen zu können. Außerdem werden mit dem -% Makro \cs{@doxcreatedescribes} Befehle erzeugt, mit denen eine Liste von zu -% beschreibenden Elementen via \cs{DescribeOption\meta{Typ}s} erzeugt werden -% kann. Dies dient insbesondere zum Erzeugen der Randnotizen mit \cs{marginnote} -% aus dem glecihnamigen Paket. +% \begin{macro}{\@docinclude} +% \begin{macro}{\ps@tudscrdoc} +% Die Auswahl des Seitenstils wird im Vergleich zur Klasse \cls{ltxdoc} +% verbessert und an das Paket \pkg{tudscr-gitinfo} angepasst. % \begin{macrocode} -\renewcommand*\doxitem[4][]{% - \@nameuse{dox@macrolike\dox@macrolikedefault}% - \def\dox@idxtype{#3}% - \setkeys{dox}{#1}% - \ifdox@macrolike% - \def\@doxexpr{\@doxcreatespecialmainmacrolikeindex{#2}}% - \else% - \def\@doxexpr{\@doxcreatespecialmainindex{#2}}% - \fi% - \expandafter\@doxexpr\expandafter{\dox@idxtype}{#4}% - \ifdox@macrolike% - \def\@doxexpr{\@doxcreatespecialmacrolikeindex{#2}}% - \else% - \def\@doxexpr{\@doxcreatespecialindex{#2}}% - \fi% - \expandafter\@doxexpr\expandafter{\dox@idxtype}{#4}% - \ifdox@macrolike% - \def\@doxexpr{\@doxcreatemacrolikeprintname{#2}}% - \else% - \def\@doxexpr{\@doxcreateprintname{#2}}% - \fi% - \expandafter\@doxexpr\expandafter{\dox@idxtype}% - \ifdox@macrolike% - \def\@doxexpr{\@doxcreatemacrolikeindexname{#2}}% - \else% - \def\@doxexpr{\@doxcreateindexname{#2}}% - \fi% - \expandafter\@doxexpr\expandafter{\dox@idxtype}% - \@doxcreatedescribe{#2}% - \@doxcreatedescribes{#2}% - \@doxcreateenv{#2}{#3}% +\pretocmd\@docinclude{% + \GetFileInfo{#1}\pagestyle{tudscrdoc}% +}{}{\tud@patch@wrn{@docinclude}} +\def\ps@tudscrdoc{% + \let\@mkboth\@gobbletwo% + \let\@oddhead\@empty% + \let\@evenhead\@empty% + \def\@oddfoot{% + File\ifnum\c@part>\z@\nobreakspace\thepart\fi:% + \nobreakspace\texttt{\ifdefvoid{\filename}{?}{\filename}}% + \enskip Version:\nobreakspace\ifdefvoid{\filedate}{?}{\filedate}% + \ifdefvoid{\fileversion}{}{\nobreakspace\fileversion}% + \ifdefvoid{\filerevision}{}{\enskip\texttt{\filerevision}}% + \hfill\thepage% + }% + \def\@evenfoot{\@oddfoot}% } +\pagestyle{tudscrdoc}% +\let\ps@titlepage\ps@tudscrdoc% % \end{macrocode} -% \end{macro}^^A \doxitem -% \begin{macro}{\@doxcreatedescribes} -% \changes{v2.05i}{2017/03/09}{neu}^^A -% \begin{length}{\marginnotevskip} +% \end{macro}^^A \ps@tudscrdoc +% \end{macro}^^A \@docinclude +% +% \subsection{Definition und Erscheinungsbild von Deklarationselementen} +% +% Das Paket~\pkg{doc} stellt die Funktionalitäten zur Quelltextdokumentation +% innerhalb von \file{.dtx}-Dateien bereit. Mit \pkg{doc}~|v3.0| ist es +% zusätzlich möglich, mit \cs{NewDocElement} weitere Deklarationselemente zu +% erstellen. Allerdings wird für die Anpassung des Erscheinungsbildes der +% Indexeinträge keine Schnittstelle bereitgestellt, weshalb im Folgenden einige +% Patches notwendig sind. +% +% \subsubsection{Randnotizen und multiple Erläuterungen} +% +% Das Paket~\pkg{doc} stellt mit |\Describe|\meta{Typ} Befehle für die +% Erläuterung einzelner Deklarationselemente bereit. Sollen gleich mehrere +% Elemente in einem Abschnitt erläutert werden, fehlt jedoch die entsprechende +% Schnittstelle, weshalb zusätzlich die Befehle |\Describe|\meta{Typ}|s| +% darauf aufbauend definiert werden. +% +% \begin{length}{\tud@dim@marginnotevskip} % \changes{v2.05i}{2017/03/09}{neu}^^A % \begin{macro}{\marginpar} -% Hiermit werden Befehle der Form \cs{DescribeOption\meta{Typ}s} erzeugt, mit -% welchen mehrere Eintragstypen erzeugt werden können. Gleichzeitig werden die -% Randnotizen via \cs{marginnote} mit den passenden vertikalen Abständen -% erstellt. +% Da die Befehle |\Describe|\meta{Typ} zur Erzeugung einer Randnotiz für +% jeden Eintrag \cs{marginpar} verwenden, müssen diese mit einem vertikalen +% Versatz gesetzt werden, falls gleich mehrere auf einmal zu erzeugen sind. +% Hierfür wird das Paket~\pkg{marginnote} genutzt. % \begin{macrocode} -\newlength\marginnotevskip -\newcommand*\@doxcreatedescribes[1]{% - \expandafter\def\csname Describe#1s\endcsname##1{% - \setlength\marginnotevskip{\z@}% - \def\@tempc{##1}% - \@for\@tempa:=\@tempc\do{% - \expandafter\ifblank\expandafter{\@tempa}{}{% - \edef\@tempb{% - \expandonce{\csname Describe#1\endcsname}{\expandonce{\@tempa}}% - }% - \@tempb% - \addtolength\marginnotevskip{\baselineskip}% - }% - }% - \setlength\marginnotevskip{\z@}% - \ignorespaces% - }% -} -\@doxcreatedescribes{Macro} +\tud@newdim\tud@dim@marginnotevskip \AfterPackage*{marginnote}{% \renewcommand*\marginpar[2][]{% \IfArgIsEmpty{#1}{% - \marginnote{#2}[\marginnotevskip]% + \marginnote{#2}[\tud@dim@marginnotevskip]% }{% - \marginnote[{#1}]{#2}[\marginnotevskip]% + \marginnote[{#1}]{#2}[\tud@dim@marginnotevskip]% }% }% } % \end{macrocode} % \end{macro}^^A \marginpar -% \end{length}^^A \marginnotevskip -% \end{macro}^^A \@doxcreatedescribes -% \begin{macro}{\index@type} +% \end{length}^^A \tud@dim@marginnotevskip +% \begin{macro}{\doc@createdescribes} +% \changes{v2.05i}{2017/03/09}{neu}^^A +% Die Definition für |\Describe|\meta{Typ}|s|. Die so erzeugten Befehle passen +% für jeden neuen Eintrag die Länge \cs{marginnotevskip} selbstständig an. Für +% jeden angegebenen Eintrag |\Describe|\meta{Typ}|s|\oarg{...}\marg{Element(e)} +% wird an |\Describe|\meta{Typ}\oarg{...}\marg{Element} das optionale Argument +% durchgereicht. Erzeugt werden Befehle via \cs{@NewDocElement}. +% \begin{macrocode} +\newcommand*\doc@createdescribes[1]{% + \expandafter\newcommand\expandafter*\csname Describe#1s\endcsname[2][]{% + \tud@setdim\tud@dim@marginnotevskip{\z@}% + \def\@tempc{##2}% + \@for\@tempa:=\@tempc\do{% + \trim@spaces@in\@tempa% + \ifx\@tempa\@empty\else% + \def\@tempb{\@nameuse{Describe#1}[{##1}]}% + \expandafter\@tempb\expandafter{\@tempa}% + \tud@addtodim\tud@dim@marginnotevskip{1\baselineskip}% + \fi% + }% + \tud@setdim\tud@dim@marginnotevskip{\z@}% + \ignorespaces% + }% +} +% \end{macrocode} +% \end{macro}^^A \doc@createdescribes +% \begin{macro}{\tud@idx@typemarkup} % \changes{v2.05g}{2016/11/10}{neu}^^A +% \changes{v2.06o}{2022/07/20}{Anpassungen für \pkg{doc}}^^A % Dieses Makro dient zur Formatierung des Typen der Deklarationselemente in -% Index und Änderungsliste. +% Index, Änderungsliste und Randnotizen. % \begin{macrocode} -\newrobustcmd*\index@type[1]{% +\NewDocumentCommand{\tud@idx@typemarkup}{r()}{% \begingroup% \normalfont\scriptsize\space(#1)% \endgroup% } % \end{macrocode} -% \end{macro}^^A \index@type -% \begin{macro}{\@doxcreatespecialmainmacrolikeindex} -% \begin{macro}{\@doxcreatespecialmainindex} -% \begin{macro}{\@doxcreatespecialmacrolikeindex} -% \begin{macro}{\@doxcreatespecialindex} +% \end{macro}^^A \tud@idx@typemarkup +% \begin{macro}{\@NewDocElement} +% \changes{v2.06o}{2022/07/20}{neu}^^A +% Erzeugen der Befehle von |\Describe|\meta{Typ}|s|\oarg{...}\marg{Element(e)}. +% Weiterhin werden für die Verwendung von \cls{ltxdoc} und \pkg{hypdoc} +% \hrfn{https://github.com/latex3/latex2e/issues/900}{einige Bugs} gefixt. +% \begin{macrocode} +\AtBeginDocument{\let\PrintMacroName\@@PrintMacroName} +\apptocmd\@NewDocElement{% + \doc@createdescribes{#2}% + \csletcs{@@PrintDescribe#2}{PrintDescribe#2}% + \csletcs{@@Print#2Name}{Print#2Name}% + \csletcs{@@SpecialMain#2Index}{SpecialMain#2Index}% + \csletcs{@@Special#2Index}{Special#2Index}% +}{}{\tud@patch@wrn{@NewDocElement}} +% \end{macrocode} +% Hiermit wird die Formatierung des Elementtyps bei Deklarationen angepasst. +% Zu beachten ist, das zusätzlich zur ursprünglichen Definition \cs{strut} zum +% Schluss (nochmals) ausgeführt wird. Somit lassen sich potenzielle Probleme +% mit dem Paket \pkg{microtype} vermeiden. +% \begin{macrocode} +\patchcmd\@NewDocElement{% + \@temptokena\expandafter{% + \expandafter\textnormal\expandafter{% + \expandafter\space\expandafter(\doc@printtype)% + }% + }% +}{% + \@temptokena\expandafter{% + \expandafter\textnormal\expandafter{% + \expandafter\tud@idx@typemarkup\expandafter(\doc@printtype)\strut% + }% + }% +}{}{\tud@patch@wrn{@NewDocElement}} +% \end{macrocode} +% \end{macro}^^A \@NewDocElement +% +% \subsubsection{Erweiterte Einträge für Index und Änderungsliste} +% +% \begin{macro}{\tud@idx@sortkey} +% \changes{v2.05g}{2016/11/02}{neu}^^A +% \begin{macro}{\tud@idx@format} +% \changes{v2.05g}{2016/11/02}{neu}^^A +% \begin{macro}{\tud@idx@element} +% \changes{v2.05g}{2016/11/02}{neu}^^A +% \begin{macro}{\tud@idx@parent} +% \changes{v2.05g}{2016/11/02}{neu}^^A +% \changes{v2.06o}{2022/07/20}{Anpassungen für \pkg{doc}}^^A +% Mit diesen Befehlen kann beim Erzeugen von Einträgen für die Änderungsliste +% auf die zuvor bereits erzeugten Indexeinträge zurückggegriffen werden. Ein +% zuvor erzeugter Elterneintrag wird mit Sortierschlüssel und der eigentlichen +% Formatierung in zwei Token in \cs{tud@idx@parent} expandiert, um später +% darauf zurückgreifen zu können~-- dies ist insbesondere für Parameter nötig. +% \begin{macrocode} +\newcommand*\tud@idx@sortkey{} +\let\tud@idx@sortkey\relax +\newcommand*\tud@idx@format{} +\let\tud@idx@format\relax +\newcommand*\tud@idx@element{} +\let\tud@idx@element\relax +\newcommand*\tud@idx@parent{} +\let\tud@idx@parent\relax +% \end{macrocode} +% \end{macro}^^A \tud@idx@parent +% \end{macro}^^A \tud@idx@element +% \end{macro}^^A \tud@idx@format +% \end{macro}^^A \tud@idx@sortkey +% \begin{macro}{\doc@createspecialindexes} +% \changes{v2.06o}{2022/07/20}{neu}^^A +% \begin{macro}{\doc@createspecialmacrolikeindexes} +% \changes{v2.06o}{2022/07/20}{neu}^^A % Für den Index muss bei diesen Makros eine Anpassung erfolgen, damit die % Sortierung auch bei der Verwendung von \app{texindy} richtig erfolgt und % keine Einträge, welche es trotz gleicher Bezeichnung für unterschiedliche -% Deklarationselemente (beispielsweise Umgebung \env{abstract} und Option -% \opt{abstract}) gibt, unterschlagen werden. Außerdem wird hier die Definition -% der Quelltextanker eingehangen und die Elterneinträge für Parameteränderungen -% zurückgesetzt. +% Deklarationselemente (beispielsweise gleichnamige Umgebungen und Optionen) +% gibt, unterschlagen werden. Deshalb wird den erzeugten Sortierschlüsseln die +% Ausgabe des Deklarationstyps aus |#2| respektive |\@temptokena| hinzugefügt. +% Außerdem wird der Markupbefehl \cs{tud@idx@typemarkup} für diese eingehangen. +% +% Weiterhin werden das Deklarationselement in \cs{tud@idx@element} sowie der +% Sortierschlüssel in \cs{tud@idx@sortkey} und der formatierte Indexeintrag in +% \cs{tud@idx@format} gesichert, um diese sowohl in der Änderungsliste als auch +% für eigens definierte Elterneinträge (\cs{tud@idx@parent}) nutzen zu können. % \begin{macrocode} -\CheckCommand*\@doxcreatespecialmainmacrolikeindex[3]{% - \expandafter\def\csname SpecialMain#1Index\endcsname##1{% - \@SpecialIndexHelper@##1\@nil - \@bsphack% - \special@index{\@gtempa\actualchar - \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar - \space(#2)\encapchar main}% - \special@index{#3:\levelchar\@gtempa\actualchar% - \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar - \encapchar main}% - \@esphack% +\CheckCommand*\doc@createspecialindexes[3]{% + \@temptokena{\space (#2)}% + \@temptokenb{#3:}% + \@nameedef{SpecialMain#1Index}##1{% + \noexpand\@bsphack + \ifdoc@toplevel + \noexpand\special@index{% + ##1\noexpand\actualchar{\string\ttfamily\space##1}% + \ifx\@nil#2\@nil\else\the\@temptokena\fi + \noexpand\encapchar main% + }% + \fi + \ifx\@nil#3\@nil\else + \noexpand\special@index{% + \the\@temptokenb\noexpand\levelchar + ##1\noexpand\actualchar{\string\ttfamily\space##1}% + \noexpand\encapchar main% + }% + \fi + \noexpand\@esphack% + }% + \@nameedef{Special#1Index}##1{% + \noexpand\@bsphack + \ifdoc@toplevel + \noexpand\doc@providetarget + \noexpand\index{% + ##1\noexpand\actualchar{\string\ttfamily\space##1}% + \ifx\@nil#2\@nil\else\the\@temptokena\fi + \noexpand\doc@handleencap{usage}% + }% + \fi + \ifx\@nil#3\@nil\else + \noexpand\index{% + \the\@temptokenb\noexpand\levelchar + ##1\noexpand\actualchar{\string\ttfamily\space##1}% + \noexpand\doc@handleencap{usage}% + }% + \fi + \noexpand\@esphack% }% } +\renewcommand*\doc@createspecialindexes[3]{% + \@temptokena{\space (#2)}% + \@temptokenb{#3:}% + \@nameedef{SpecialMain#1Index}##1{% + \noexpand\@bsphack + \ifdoc@toplevel + \noexpand\special@index{% + % PATCH: add `\the\@temptokena' to sorting argument + ##1\ifx\@nil#2\@nil\else\the\@temptokena\fi + \noexpand\actualchar{\string\ttfamily\space##1}% + % PATCH: add `\tud@idx@typemarkup' for markup + \ifx\@nil#2\@nil\else\noexpand\tud@idx@typemarkup\the\@temptokena\fi + \noexpand\encapchar main% + }% + \fi + \ifx\@nil#3\@nil\else + \noexpand\special@index{% + \the\@temptokenb\noexpand\levelchar + % PATCH: add `\the\@temptokena' to sorting argument + ##1\ifx\@nil#2\@nil\else\the\@temptokena\fi + \noexpand\actualchar{\string\ttfamily\space##1}% + \noexpand\encapchar main% + }% + \fi + \noexpand\@esphack% % \end{macrocode} -% Um den Typ der Deklarationselemente in den Index einzutragen, wird der Typ -% geschützt expandiert, um beispielsweise Umlaute problemlos nutzen zu können. +% Bei allen Varianten der Indexeinträge werden diese nach dem Erstellen +% gesichert, um diese in der richtigen Formatierung als Elterneinträge +% für Parameter im Index sowie für die Änderungsliste nutzen zu können. % \begin{macrocode} -\renewcommand*\@doxcreatespecialmainmacrolikeindex[3]{% - \expandafter\def\csname SpecialMain#1Index\endcsname##1{% - \@SpecialIndexHelper@##1\@nil% - \@bsphack% - \protected@edef\tud@reserved{#2}% - \special@index{% - \@gtempa\space\expandonce\tud@reserved\actualchar% - \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar% - \index@type{\expandonce\tud@reserved}\encapchar main% + % PATCH: assign used sort key and formatted entry to dedicated macros + \gdef\noexpand\tud@idx@sortkey{##1\ifx\@nil#2\@nil\else\the\@temptokena\fi}% + \gdef\noexpand\tud@idx@format{% + {\string\ttfamily\space##1}% + \ifx\@nil#2\@nil\else\noexpand\tud@idx@typemarkup\the\@temptokena\fi }% - \protected@edef\tud@reserved{#3}% - \special@index{% - \expandonce\tud@reserved:\levelchar\@gtempa\actualchar% - \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar% - \encapchar main% - }% - \@esphack% - \let\parameter@parent@changes\relax% - \hypersourcedef{\filesep\number\c@CodelineNo}% - }% -} -\CheckCommand*\@doxcreatespecialmainindex[3]{% - \expandafter\def\csname SpecialMain#1Index\endcsname##1{% - \@bsphack% - \special@index{##1\actualchar{\string\ttfamily\space##1} (#2)% - \encapchar main}% - \special@index{#3:\levelchar##1\actualchar{\string\ttfamily\space##1}% - \encapchar main}% - \@esphack% + % PATCH: reset settings for nested index and changelog entries + \gdef\noexpand\tud@idx@element{#1}% + \global\let\noexpand\tud@idx@parent\relax% }% -} -\renewcommand*\@doxcreatespecialmainindex[3]{% - \expandafter\def\csname SpecialMain#1Index\endcsname##1{% - \@bsphack% - \protected@edef\tud@reserved{#2}% - \special@index{% - ##1\space\expandonce\tud@reserved\actualchar% - {\string\ttfamily\space##1}\index@type{\expandonce\tud@reserved}% - \encapchar main% - }% - \protected@edef\tud@reserved{#3}% - \special@index{% - \expandonce\tud@reserved:\levelchar##1\actualchar% - {\string\ttfamily\space##1}\encapchar main% + \@nameedef{Special#1Index}##1{% + \noexpand\@bsphack + \ifdoc@toplevel + \noexpand\doc@providetarget + \noexpand\index{% + % PATCH: add `\the\@temptokena' to sorting argument + ##1\ifx\@nil#2\@nil\else\the\@temptokena\fi + \noexpand\actualchar{\string\ttfamily\space##1}% + % PATCH: add `\tud@idx@typemarkup' for markup + \ifx\@nil#2\@nil\else\noexpand\tud@idx@typemarkup\the\@temptokena\fi + \noexpand\doc@handleencap{usage}% + }% + \fi + \ifx\@nil#3\@nil\else + \noexpand\index{% + \the\@temptokenb\noexpand\levelchar + % PATCH: add `\the\@temptokena' to sorting argument + ##1\ifx\@nil#2\@nil\else\the\@temptokena\fi + \noexpand\actualchar{\string\ttfamily\space##1}% + \noexpand\doc@handleencap{usage}% + }% + \fi + \noexpand\@esphack% + % PATCH: assign used sort key and formatted entry to dedicated macros + \gdef\noexpand\tud@idx@sortkey{##1\ifx\@nil#2\@nil\else\the\@temptokena\fi}% + \gdef\noexpand\tud@idx@format{% + {\string\ttfamily\space##1}% + \ifx\@nil#2\@nil\else\noexpand\tud@idx@typemarkup\the\@temptokena\fi }% - \@esphack% - \let\parameter@parent@changes\relax% - \hypersourcedef{\filesep\number\c@CodelineNo}% + % PATCH: reset settings for nested index and changelog entries + \gdef\noexpand\tud@idx@element{#1}% + \global\let\noexpand\tud@idx@parent\relax% }% } -\CheckCommand*\@doxcreatespecialmacrolikeindex[3]{% - \expandafter\def\csname Special#1Index\endcsname##1{% - \@SpecialIndexHelper@##1\@nil - \@bsphack% - \index{\@gtempa\actualchar - \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar - \space(#2)\encapchar usage}% - \index{#3:\levelchar\@gtempa\actualchar - \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar - \encapchar usage}% - \@esphack% +\CheckCommand*\doc@createspecialmacrolikeindexes[3]{% + \@temptokena{\space (#2)}% + \@temptokenb{#3:}% + \@nameedef{Code#1Index}##1##2{% + \noexpand\@SpecialIndexHelper@##2\noexpand\@nil + \noexpand\@bsphack + \noexpand\ifdoc@noindex\noexpand\else + \ifdoc@toplevel + \noexpand\special@index{% + \noexpand\@gtempa\noexpand\actualchar + \string\verb% % to fool emacs highlighting + \noexpand\quotechar*\noexpand\verbatimchar + \noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar + \ifx\@nil#2\@nil\else \the\@temptokena \fi + \noexpand\encapchar ##1% + }% + \fi + \ifx\@nil#3\@nil\else + \noexpand\special@index{% + \the\@temptokenb\noexpand\levelchar + \noexpand\@gtempa\noexpand\actualchar + \string\verb% % to fool emacs highlighting + \noexpand\quotechar*\noexpand\verbatimchar + \noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar + \noexpand\encapchar ##1% + }% + \fi + \noexpand\fi + \noexpand\@esphack% }% -} -\renewcommand*\@doxcreatespecialmacrolikeindex[3]{% - \expandafter\def\csname Special#1Index\endcsname##1{% - \@SpecialIndexHelper@##1\@nil% - \@bsphack% - \protected@edef\tud@reserved{#2}% - \index{% - \@gtempa\space\expandonce\tud@reserved\actualchar% - \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar% - \index@type{\expandonce\tud@reserved}\encapchar usage% - }% - \protected@edef\tud@reserved{#3}% - \index{% - \expandonce\tud@reserved:\levelchar\@gtempa\actualchar% - \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar% - \encapchar usage% - }% - \@esphack% + \@nameedef{SpecialMain#1Index}##1{% + \expandafter\noexpand\csname Code#1Index\endcsname{main}{##1}% }% -} -\CheckCommand*\@doxcreatespecialindex[3]{% - \expandafter\def\csname Special#1Index\endcsname##1{% - \@bsphack% - \index{##1\actualchar{\protect\ttfamily##1} (#2)\encapchar usage}% - \index{#3:\levelchar##1\actualchar{\protect\ttfamily##1}% - \encapchar usage}% - \@esphack% + \@nameedef{Special#1Index}##1{% + \noexpand\@SpecialIndexHelper@##1\noexpand\@nil + \noexpand\@bsphack + \noexpand\ifdoc@noindex\noexpand\else + \ifdoc@toplevel + \noexpand\doc@providetarget + \noexpand\index{% + \noexpand\@gtempa\noexpand\actualchar + \string\verb% % to fool emacs highlighting + \noexpand\quotechar*\noexpand\verbatimchar + \noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar + \ifx\@nil#2\@nil\else \the\@temptokena \fi + \noexpand\doc@handleencap{usage}% + }% + \fi + \ifx\@nil#3\@nil\else + \noexpand\index{% + \the\@temptokenb\noexpand\levelchar + \noexpand\@gtempa\noexpand\actualchar + \string\verb% % to fool emacs highlighting + \noexpand\quotechar*\noexpand\verbatimchar + \noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar + \noexpand\doc@handleencap{usage}% + }% + \fi + \noexpand\fi + \noexpand\@esphack% }% } -\renewcommand*\@doxcreatespecialindex[3]{% - \expandafter\def\csname Special#1Index\endcsname##1{% - \@bsphack% - \protected@edef\tud@reserved{#2}% - \index{% - ##1\space\expandonce\tud@reserved\actualchar% - {\protect\ttfamily##1}\index@type{\expandonce\tud@reserved}% - \encapchar usage% - }% - \protected@edef\tud@reserved{#3}% - \index{% - \expandonce\tud@reserved:\levelchar##1\actualchar% - {\protect\ttfamily##1}\encapchar usage% - }% - \@esphack% +\renewcommand*\doc@createspecialmacrolikeindexes[3]{% + \@temptokena{\space (#2)}% + \@temptokenb{#3:}% + \@nameedef{Code#1Index}##1##2{% + \noexpand\@SpecialIndexHelper@##2\noexpand\@nil + \noexpand\@bsphack + \noexpand\ifdoc@noindex\noexpand\else + \ifdoc@toplevel + \noexpand\special@index{% + % PATCH: add `\the\@temptokena' to sorting argument + \noexpand\@gtempa\ifx\@nil#2\@nil\else\the\@temptokena\fi + \noexpand\actualchar + \string\verb% % to fool emacs highlighting + \noexpand\quotechar*\noexpand\verbatimchar + \noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar + % PATCH: add `\tud@idx@typemarkup' for markup + \ifx\@nil#2\@nil\else\noexpand\tud@idx@typemarkup\the\@temptokena\fi + \noexpand\encapchar ##1% + }% + \fi + \ifx\@nil#3\@nil\else + \noexpand\special@index{% + \the\@temptokenb\noexpand\levelchar + % PATCH: add `\the\@temptokena' to sorting argument + \noexpand\@gtempa\ifx\@nil#2\@nil\else\the\@temptokena\fi + \noexpand\actualchar + \string\verb% % to fool emacs highlighting + \noexpand\quotechar*\noexpand\verbatimchar + \noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar + \noexpand\encapchar ##1% + }% + \fi + \noexpand\fi + \noexpand\@esphack% }% -} % \end{macrocode} -% \end{macro}^^A \@doxcreatespecialindex -% \end{macro}^^A \@doxcreatespecialmacrolikeindex -% \end{macro}^^A \@doxcreatespecialmainindex -% \end{macro}^^A \@doxcreatespecialmainmacrolikeindex -% \begin{macro}{\@doxcreatemacrolikeprintname} -% \begin{macro}{\@doxcreateprintname} -% \begin{macro}{\@doxcreatemacrolikeindexname} -% \begin{macro}{\@doxcreateindexname} -% \begin{macro}{\saved@indextype} -% Hiermit werden die Makros zur Ausgabe als Randnotiz definiert. Mit diesen -% wird dem eigentlichen Eintrag der Eintragstyp angehängt. Zu beachten ist, das -% entgegen der ursprünglichen Definition \cs{strut} erst zum Schluss ausgeführt -% wird. Somit lassen sich potenzielle Probleme mit dem Paket \pkg{microtype} -% vermeiden. +% Für das Sichern der Indexeinträge muss ein bisschen mit der Expansion der +% Makros gezaubert werden. Der in \cs{@gtempa} relevante Teil für den Index +% ist erst nach der Expansion (via \cs{doc@expr}) verfügbar, muss aber in einer +% zweiten Expansion aus eben diesem Makro expandiert werden. Wiederum muss der +% Teil aus |\ifx\@nil#2\@nil\else\the\@temptokena\fi| hier direkt expandiert +% werden und wird danach vor weiterer Expansion geschützt! % \begin{macrocode} -\def\@doxcreatemacrolikeprintname#1#2{% - \ifcsundef{Print#1Name}{% - \expandafter\def\csname Print#1Name\endcsname##1{% - \MacroFont\string##1\index@type{#2}\strut\ % - }% - }{}% - \ifcsundef{PrintDescribe#1}{% - \expandafter\def\csname PrintDescribe#1\endcsname##1{% - \MacroFont\string##1\index@type{#2}\strut\ % + \@nameedef{SpecialMain#1Index}##1{% + \expandafter\noexpand\csname Code#1Index\endcsname{main}{##1}% + % PATCH: assign used sort key and formatted entry to dedicated macros + \xdef\noexpand\tud@idx@sortkey{% + \noexpand\expandonce\noexpand\@gtempa% + \ifx\@nil#2\@nil\else\noexpand\unexpanded{\the\@temptokena}\fi% }% - }{}% -} -\def\@doxcreateprintname#1#2{% - \ifcsundef{Print#1Name}{% - \expandafter\def\csname Print#1Name\endcsname##1{% - \MacroFont##1\index@type{#2}\strut\ % - }% - }{}% - \ifcsundef{PrintDescribe#1}{% - \expandafter\def\csname PrintDescribe#1\endcsname##1{% - \MacroFont##1\index@type{#2}\strut\ % + \xdef\noexpand\tud@idx@format{% + \unexpanded{\noexpand\string\noexpand\verb}% + \unexpanded{\noexpand\quotechar*\noexpand\verbatimchar}% + \unexpanded{\noexpand\bslash}\noexpand\expandonce\noexpand\@gtempa% + \unexpanded{\noexpand\verbatimchar}% + \ifx\@nil#2\@nil\else + \noexpand\unexpanded{\noexpand\tud@idx@typemarkup\the\@temptokena}% + \fi }% - }{}% -} -% \end{macrocode} -% Ziel ist es, in den -% Makros \cs{saved@indexname} und \cs{saved@indextype} den Namen und den Typ -% des aktuellen Deklarationselementes zu speichern. -% \begin{macrocode} -\newcommand*\saved@indextype{} -\def\@doxcreatemacrolikeindexname#1#2{% - \expandafter\def\csname @Save#1IndexName\endcsname##1{% - \edef\saved@indexname{\expandafter\@gobble##1}% - \protected@edef\saved@indextype{#2}% - }% -} -\def\@doxcreateindexname#1#2{% - \expandafter\def\csname @Save#1IndexName\endcsname##1{% - \let\saved@indexname##1% - \protected@edef\saved@indextype{#2}% + % PATCH: reset settings for nested index and changelog entries + \gdef\noexpand\tud@idx@element{#1}% + \global\let\noexpand\tud@idx@parent\relax }% -} + \@nameedef{Special#1Index}##1{% + \noexpand\@SpecialIndexHelper@##1\noexpand\@nil + \noexpand\@bsphack + \noexpand\ifdoc@noindex\noexpand\else + \ifdoc@toplevel + \noexpand\doc@providetarget + \noexpand\index{% + % PATCH: add `\the\@temptokena' to sorting argument + \noexpand\@gtempa\ifx\@nil#2\@nil\else\the\@temptokena\fi + \noexpand\actualchar + \string\verb% % to fool emacs highlighting + \noexpand\quotechar*\noexpand\verbatimchar + \noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar + % PATCH: add `\tud@idx@typemarkup' for markup + \ifx\@nil#2\@nil\else\noexpand\tud@idx@typemarkup\the\@temptokena\fi + \noexpand\doc@handleencap{usage}% + }% + \fi + \ifx\@nil#3\@nil\else + \noexpand\index{% + \the\@temptokenb\noexpand\levelchar + % PATCH: add `\the\@temptokena' to sorting argument + \noexpand\@gtempa\ifx\@nil#2\@nil\else\the\@temptokena\fi + \noexpand\actualchar + \string\verb% % to fool emacs highlighting + \noexpand\quotechar*\noexpand\verbatimchar + \noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar + \noexpand\doc@handleencap{usage}% + }% + \fi + \noexpand\fi + \noexpand\@esphack% % \end{macrocode} -% \end{macro}^^A \saved@indextype -% \end{macro}^^A \@doxcreateindexname -% \end{macro}^^A \@doxcreatemacrolikeindexname -% \end{macro}^^A \@doxcreateprintname -% \end{macro}^^A \@doxcreatemacrolikeprintname -% \begin{macro}{\@SaveMacroIndexName} -% \begin{macro}{\@SaveEnvIndexName} -% \begin{macro}{\SpecialMainMacroIndex} -% Da für Makros die notwendigen Befehle für die Anpassungen der Änderungsliste -% nicht über \cs{doxitem} kreiert werden, erfolgt dies hier direkt. +% Zur Sicherung der Indexeinträge das selbe Spiel für die Expansion wie zuvor. % \begin{macrocode} -\CheckCommand*\@SaveMacroIndexName[1]{% - \edef\saved@indexname{\expandafter\@gobble#1}% -} -\CheckCommand*\@SaveEnvIndexName[1]{\let\saved@indexname#1} -\apptocmd{\@SaveMacroIndexName}{% - \let\saved@indextype\@empty% -}{}{\tud@patch@wrn{@SaveMacroIndexName}} -\CheckCommand*\SpecialMainMacroIndex[1]{% - \SpecialMainIndex{#1}\nobreak% - \DoNotIndex{#1}% + % PATCH: assign used sort key and formatted entry to dedicated macros + \xdef\noexpand\tud@idx@sortkey{% + \noexpand\expandonce\noexpand\@gtempa% + \ifx\@nil#2\@nil\else\noexpand\unexpanded{\the\@temptokena}\fi% + }% + \xdef\noexpand\tud@idx@format{% + \unexpanded{\noexpand\string\noexpand\verb}% + \unexpanded{\noexpand\quotechar*\noexpand\verbatimchar}% + \unexpanded{\noexpand\bslash}\noexpand\expandonce\noexpand\@gtempa% + \unexpanded{\noexpand\verbatimchar}% + \ifx\@nil#2\@nil\else + \noexpand\unexpanded{\noexpand\tud@idx@typemarkup\the\@temptokena}% + \fi + }% + % PATCH: reset settings for nested index and changelog entries + \gdef\noexpand\tud@idx@element{#1}% + \global\let\noexpand\tud@idx@parent\relax + }% } -\apptocmd{\SpecialMainMacroIndex}{% - \let\parameter@parent@changes\relax% - \hypersourcedef{\filesep\number\c@CodelineNo}% -}{}{\tud@patch@wrn{SpecialMainMacroIndex}} % \end{macrocode} -% \end{macro}^^A \SpecialMainMacroIndex -% \end{macro}^^A \@SaveEnvIndexName -% \end{macro}^^A \@SaveMacroIndexName +% \end{macro}^^A \doc@createspecialmacrolikeindexes +% \end{macro}^^A \doc@createspecialindexes % % \subsubsection{Erstellen aller Deklarationselemente} % % Nachdem nun die Anpassungen für die Änderungsliste erfolgt sind, können nun -% die für die Dokumentatiton notwendigen Umgebungen mit \cs{docitem} erstellt -% werden. Dabei kommen die Lokalisierungsvariablen \cs{tud@\dots{}@name} zum -% Tragen. +% die für die Dokumentation notwendigen Umgebungen mit \cs{NewDocElement} +% erstellt werden, wobei die Lokalisierungsvariablen |\tud@|\meta{\dots}|@name| +% zum Tragen kommen. % \begin{macrocode} -\renewcommand*\tud@reserved[3][]{% - \doxitem[#1,idxtype=\csname tud@#3@name\endcsname]{#2}{#3}{% - \csname tud@#3s@name\endcsname% - }% +\def\tud@res@a#1{% + \kernel@ifnextchar[%] + {\tud@res@b{#1}}{\tud@res@b{#1}[]}% +} +\def\tud@res@b#1[#2]#3#4{% + #1[{% + idxgroup=\csname tud@#4s@name\endcsname,% + idxtype=\csname tud@#4@name\endcsname,% + printtype=\csname tud@#4@name\endcsname,% + #2% + }]{#3}{#4}% } -\undef\PrintEnvName -\undef\PrintDescribeEnv -\tud@reserved{Env}{environment} -\tud@reserved{Option}{option} -\tud@reserved{LayerPageStyle}{layerpagestyle} -\tud@reserved{Layer}{layer} -\tud@reserved[macrolike]{Length}{length} -\tud@reserved{Counter}{counter} -\tud@reserved{Color}{TUDcolor} -\tud@reserved[macrolike]{Localization}{localization} -\tud@reserved[macrolike]{Field}{field} -\tud@reserved{Font}{KOMAfont} -\tud@reserved{Parameter}{parameter} +\tud@res@a\RenewDocElement[macrolike,idxgroup,idxtype,printtype]{Macro}{macro} +\tud@res@a\RenewDocElement{Env}{environment} +\tud@res@a\NewDocElement{Option}{option} +\tud@res@a\NewDocElement{LayerPageStyle}{layerpagestyle} +\tud@res@a\NewDocElement{Layer}{layer} +\tud@res@a\NewDocElement[macrolike]{Length}{length} +\tud@res@a\NewDocElement{Counter}{counter} +\tud@res@a\NewDocElement{Color}{TUDcolor} +\tud@res@a\NewDocElement[macrolike]{Localization}{localization} +\tud@res@a\NewDocElement[macrolike]{Field}{field} +\tud@res@a\NewDocElement{Font}{KOMAfont} +\tud@res@a\NewDocElement{Parameter}{parameter} % \end{macrocode} % % \subsubsection{Besonderheiten des Deklarationselementes \emph{Parameter}} % -% \begin{macro}{\parameter@parent@changes} -% \changes{v2.05g}{2016/11/02}{neu}^^A -% \begin{macro}{\parameter@parent@indexname} -% \changes{v2.05g}{2016/11/02}{neu}^^A -% \begin{macro}{\parameter@parent@indexformat} -% \changes{v2.05g}{2016/11/02}{neu}^^A -% Um für Parameter sowohl im Index als auch in der Änderungsliste eine weitere -% Ebene zu definieren, werden diese Befehle eigens definiert. +% \begin{macro}{\DescribeMacroParameters} +% \changes{v2.06o}{2022/07/20}{neu}^^A +% \begin{macro}{\DescribeEnvParameters} +% \changes{v2.06o}{2022/07/20}{neu}^^A +% \begin{macro}{\Describe@Parameters} +% \changes{v2.06o}{2022/07/20}{neu}^^A +% Hiermit können Parameter für Befehle und Umgebungen beschrieben werden. Mit +% |\Describe|\meta{Typ}|Parameters|\oarg{...}\marg{Element(e)}\marg{Parameter} +% erfolgt der Aufruf, wobei das optionale Argument an \cs{DescribeParameter} +% durchgereicht wird. % \begin{macrocode} -\newcommand*\parameter@parent@changes{} -\let\parameter@parent@changes\relax -\newcommand*\parameter@parent@indexname{} -\let\parameter@parent@indexname\relax -\newcommand*\parameter@parent@indexformat{} -\let\parameter@parent@indexformat\relax +\newcommand*\DescribeMacroParameters{} +\def\DescribeMacroParameters{% + \kernel@ifnextchar[%] + {\Describe@Parameters{Macro}}{\Describe@Parameters{Macro}[]}% +} +\newcommand*\DescribeEnvParameters{} +\def\DescribeEnvParameters{% + \kernel@ifnextchar[%] + {\Describe@Parameters{Env}}{\Describe@Parameters{Env}[]}% +} % \end{macrocode} -% \end{macro}^^A \parameter@parent@indexformat -% \end{macro}^^A \parameter@parent@indexname -% \end{macro}^^A \parameter@parent@changes -% \begin{macro}{\@SaveMacroIndexName} -% \changes{v2.05g}{2016/11/02}{neu}^^A -% \begin{macro}{\@SaveEnvIndexName} -% \changes{v2.05g}{2016/11/02}{neu}^^A -% Bei der Ausführung einer dieser beiden Befehle bei der Definition von einem -% Makro oder einer Umgebung werden diese für evtl. nachfolgende Parameter als -% Elterneinträge definiert. Hierfür werden die Einträge zur Sortierung sowohl -% für den Index als auch die Änderungsliste in \cs{parameter@parent@indexname} -% und für die Formatierung in \cs{parameter@parent@indexformat} gespeichert. +% Für eine möglichst einfache Schnittstelle wird ein bisschen getrickst. Das +% optionale Argument wird zunächst dahingehend ausgewertet, ob Indexeinträge +% überhaupt erzeugt werden sollen. In diesem Fall wird die Ausgabe unterdrückt, +% um diese bei der Angabe mehrerer \marg{Element(e)} nicht mehrfach zu erhalten. +% \begin{macrocode} +\newcommand*\Describe@Parameters{} +\def\Describe@Parameters#1[#2]#3#4{% + \begingroup% + \csname keys_set:nn\endcsname{doc}{#2}% + \ifdoc@noindex% + \aftergroup\@gobble% + \else% + \aftergroup\@firstofone% + \fi% + \endgroup{% + \def\@tempc{#3}% + \@for\@tempa:=\@tempc\do{% + \trim@spaces@in\@tempa% + \ifx\@tempa\@empty\else% + \begingroup% +% \end{macrocode} +% Durch den Aufruf von |\Describe|\meta{Typ} wird der Elterneintrag erzeugt. +% Dieser muss durch \pkg{doc} zwar erstellt, jedoch nicht in den Index +% eingetragen werden, weshalb \prm{noindex} nicht möglich ist und stattdessen +% \cs{index} hier das Argument verschluckt. % \begin{macrocode} -\apptocmd{\@SaveMacroIndexName}{% - \edef\parameter@parent@indexname{\expandafter\@gobble#1}% - \edef\parameter@parent@indexformat{% - \string\verb\quotechar*\verbatimchar#1\verbatimchar% + \let\index\@gobble% + \def\@tempb{\@nameuse{Describe#1}[noprint]}% + \expandafter\@tempb\expandafter{\@tempa}% + \xdef\tud@idx@parent{% + {\expandonce\tud@idx@sortkey}{\expandonce\tud@idx@format}% + }% + \endgroup% + \DescribeParameters[{#2,noprint}]{#4}% + \fi% + }% }% -}{}{\tud@patch@wrn{@SaveMacroIndexName}} -\apptocmd{\@SaveEnvIndexName}{% - \protected@edef\parameter@parent@indexname{#1\space\saved@indextype}% - \protected@edef\parameter@parent@indexformat{% - \string\verb\quotechar*\verbatimchar#1\verbatimchar% - \index@type{\saved@indextype}% +% \end{macrocode} +% Nach dem Erstellen der Indexeinträge erfolgt die \emph{einmalige} Ausgabe +% aller genannten Parameter. +% \begin{macrocode} + \begingroup% + \csname keys_set:nn\endcsname{doc}{#2}% + \ifdoc@noprint% + \aftergroup\@gobble% + \else% + \aftergroup\@firstofone% + \fi% + \endgroup{% + \DescribeParameters[{#2,noindex}]{#4}% }% -}{}{\tud@patch@wrn{@SaveEnvIndexName}} + \global\let\tud@idx@parent\relax% +} % \end{macrocode} -% \end{macro}^^A \@SaveEnvIndexName -% \end{macro}^^A \@SaveMacroIndexName +% \end{macro}^^A \Describe@Parameters +% \end{macro}^^A \DescribeEnvParameters +% \end{macro}^^A \DescribeMacroParameters % \begin{macro}{\SpecialMainParameterIndex} % \changes{v2.05g}{2016/11/02}{neu}^^A -% Hier wird nun die Gestalt der Einträge für Parameter als Haupteintrag -% festgelegt. +% \changes{v2.06o}{2022/07/20}{Anpassungen für \pkg{doc}}^^A +% \begin{macro}{\SpecialParameterIndex} +% \changes{v2.05i}{2017/02/20}{neu}^^A +% \changes{v2.06o}{2022/07/20}{Anpassungen für \pkg{doc}}^^A +% Die Gestalt der Parameter als Haupteinträge wird hier definiert. % \begin{macrocode} \renewcommand*\SpecialMainParameterIndex[1]{% - \ifx\parameter@parent@indexname\relax% - \ClassError{\TUD@Class@Name}{No previous macro or environment}{% - Since parameters can only be used for macros or\MessageBreak% - environments, you have to use `parameter' within\MessageBreak% - `macro' or `environment'.% + \ifx\tud@idx@parent\relax% + \@expandtwoargs\in@{\tud@idx@element}{Macro,Env}% + \ifin@% + \xdef\tud@idx@parent{% + {\expandonce\tud@idx@sortkey}{\expandonce\tud@idx@format}% + }% + \else% + \ClassError{\TUD@Class@Name}{No previous macro or environment}{% + Since parameters can only be used for macros or\MessageBreak% + environments, you have to use `parameter' within\MessageBreak% + `macro' or `environment'.% + }% + \fi% + \fi% + \ifx\tud@idx@parent\relax\else% + \gdef\tud@idx@sortkey{#1\space(\tud@parameter@name)}% + \gdef\tud@idx@format{% + {\string\ttfamily\space#1}% + \tud@idx@typemarkup\space(\tud@parameter@name)% + }% + \@bsphack% + \special@index{% + \expandafter\@firstoftwo\tud@idx@parent\actualchar% + \expandafter\@secondoftwo\tud@idx@parent\levelchar% + \tud@idx@sortkey\actualchar\tud@idx@format% + \encapchar main% }% + \@esphack% \fi% - \protected@edef\parameter@parent@changes{% - \parameter@parent@indexname\actualchar% - \parameter@parent@indexformat:\levelchar% - }% - \@bsphack% - \special@index{% - \parameter@parent@indexname\actualchar% - \parameter@parent@indexformat\levelchar% - #1\space\tud@parameter@name\actualchar% - {\string\ttfamily\space#1}\index@type{\tud@parameter@name}% - \encapchar main% - }% - \special@index{% - \tud@parameters@name:\levelchar% - #1\space\parameter@parent@indexname% - \actualchar{\string\ttfamily\space#1}% - \noexpand\,--\noexpand\,\parameter@parent@indexformat% - \encapchar main% - }% - \@esphack% - \hypersourcedef{\filesep\number\c@CodelineNo}% } % \end{macrocode} -% \end{macro}^^A \SpecialMainParameterIndex -% \begin{environment}{DescribeParameterParent} -% \changes{v2.05i}{2017/02/20}{neu}^^A -% \begin{macro}{\SpecialParameterIndex} -% \changes{v2.05i}{2017/02/20}{neu}^^A -% Selbiges für die Verwendung durch \cs{Describe\dots} +% Hier wird die Gestalt der Indexeinträge für Parameter festgelegt, wenn diese +% durch \cs{Describe@Parameters} erzeugt werden. % \begin{macrocode} -\newenvironment{DescribeParameterParent}[2]{% - \@nameuse{@Save#1IndexName}{\string#2}% -}{} \renewcommand*\SpecialParameterIndex[1]{% - \ifx\parameter@parent@indexname\relax% - \ClassError{\TUD@Class@Name}{No previous macro or environment}{% + \ifx\tud@idx@parent\relax% + \ClassError{\TUD@Class@Name}{No macro or environment given}{% Since parameters can only be used for macros or\MessageBreak% - environments, you have to use macro\MessageBreak% - `\string\DescribeParameter' only within the environment\MessageBreak% - `DescribeParameterParent'.% + environments, you have to use an appropriate command like\MessageBreak% + `\string\DescribeMacroParameters' or `\string\DescribeEnvParameters'.% }% + \else% + \gdef\tud@idx@sortkey{#1\space(\tud@parameter@name)}% + \gdef\tud@idx@format{% + {\string\ttfamily\space#1}% + \tud@idx@typemarkup\space(\tud@parameter@name)% + }% + \@bsphack% + \index{% + \expandafter\@firstoftwo\tud@idx@parent\actualchar% + \expandafter\@secondoftwo\tud@idx@parent\levelchar% + \tud@idx@sortkey\actualchar\tud@idx@format% + \encapchar usage% + }% + \@esphack% \fi% - \@bsphack% - \index{% - \parameter@parent@indexname\actualchar% - \parameter@parent@indexformat\levelchar% - #1\space\tud@parameter@name\actualchar% - {\protect\ttfamily#1}\index@type{\tud@parameter@name}% - \encapchar usage% - }% - \index{% - \tud@parameters@name:\levelchar#1\space\parameter@parent@indexname% - \actualchar{\protect\ttfamily#1}% - \noexpand\,--\noexpand\,\parameter@parent@indexformat% - \encapchar usage% +} +% \end{macrocode} +% \end{macro}^^A \SpecialParameterIndex +% \end{macro}^^A \SpecialMainParameterIndex +% +% \subsection{Index und Änderungsliste} +% Sollte \app{texindy} zum Einsatz kommen, wird die Gestalt von Index und +% Änderungsliste angepasst, was eine Anpassung der erzeugten Einträge bedingt. +% Die notwendigen Befehle werden zunächst nachfolgenddefiniert. Über den Hook +% |begindocument/before| erfolgt später die Zuweisung. +% +% \begin{macro}{\tud@xdy@reference} +% \changes{v2.06o}{2022/07/24}{neu}^^A +% \begin{macro}{\tud@xdy@destination} +% \changes{v2.06o}{2022/07/24}{neu}^^A +% \begin{macro}{\tud@xdy@filesep} +% \changes{v2.06o}{2022/07/24}{neu}^^A +% \begin{macro}{\tud@xdy@mapping} +% \changes{v2.06o}{2022/07/24}{neu}^^A +% \begin{macro}{\tud@xdy@@mapping} +% \changes{v2.06o}{2022/07/24}{neu}^^A +% Für die verwendeten Referenzen von Einträgen für Index und Änderungsliste +% gibt es im Zusammenspiel von \pkg{doc} und \pkg{hypdoc} mehrere Varianten. +% Das Paket \pkg{doc} unterscheidet zwischen Verweisen auf Seitenzahlen und +% Codezeilen. Das Paket \pkg{hypdoc} stellt für beide Varianten jeweils eine +% eigene Implentierung für das Erzeugen von Hyperlinks bereit. Mit dem Befehl +% \cs{tud@xdy@reference} wird für die Verwendung von \app{texindy} für alle +% Varianten eine einheitliche Form definiert. Alle Einträge für Index und +% Änderungsliste verwenden das Format +% \meta{Target}|:|\meta{Dateischlüssel}|-|\meta{Codezeile}|:|\meta{Seitenzahl} +% für Referenzen. Es wird über \cs{tud@xdy@filesep} sichergestellt, dass für +% den Dateischlüssel immer ein definierter Zustand besteht. +% +% An \cs{tud@xdy@reference} wird als einziges Argument die aktuelle Codezeile +% \cs{c@CodelineNo} des Paketes \pkg{doc} übergeben, das Target für Link zur +% Codezeile wird ggf. automatisch durch \pkg{hypdoc} gesetzt. Die Auswetung der +% so erzeugten Referenz erfolgt mit \cs{tud@xdy@@mapping}. War das an +% \cs{tud@xdy@reference} übergebene Argument größer 0, wird die Ausgabe für +% eine Codezeile erzeugt, andernfalls für eine Seitenangabe. +% \begin{macrocode} +\ifdefined\tudxdyflag +\newcommand*\tud@xdy@filesep{?-} +\newcommand*\tud@xdy@reference[1]{0:\filesep#1:\thepage} +% \end{macrocode} +% Mit \cs{tud@xdy@destination} erfolgt die Formatierung bei der Ausgabe. Sollte +% kein Dateischlüssel gesetzt sein, erfolgt dennoch eine Ausgabe. Der Zustand +% besteht dann, wenn \cs{DocInclude} nicht verwendet wurde. +% \begin{macrocode} +\newcommand*\tud@xdy@destination[3]{% + #1\if#2\expandafter\@car\tud@xdy@filesep\@nil\else\mbox{--}#2\fi% + \ifnum#3>\z@\textsubscript{\kern.1em#3}\fi% +} +% \end{macrocode} +% Neben der Refernz wird an \cs{tud@xdy@mapping} noch ein Attribut für die +% Formatierung der Ausgabe übergeben. Gültige Werte sind |main|, |usage|, +% |code| und |change| (siehe \file{tudscr-texindy.dtx}). Die erzeugte Ausgabe +% der Referenz wird dann mit \cs{main}, \cs{usage}, \cs{code} oder \cs{change} +% formatiert, falls vorhanden. Diese Befehle müssen genau ein obligatorisches +% Argument verarbeiten. +% \begin{macrocode} +\newcommand*\tud@xdy@mapping[2]{\tud@xdy@@mapping{#1}#2\@nil} +\newcommand*\tud@xdy@@mapping{} +% \end{macrocode} +% Ohne \pkg{hypdoc} werden für die Ausgabe Links auf die entsprechenden Seiten +% erzeugt, falls zumindes \pkg{hyperref} geladen wurde. +% \begin{macrocode} +\def\tud@xdy@@mapping#1#2:#3-#4:#5\@nil{% + \begingroup% + \ifundef{\hyperlink}{\let\tud@res@a\@gobble}{\let\tud@res@a\@firstofone}% + \csname\ifx\\#1\\relax\else#1\fi\endcsname{% + \tud@res@a{\hyperlink{page.#5}}{\tud@xdy@destination{#5}{#3}{#4}}% + }% + \endgroup% +} +% \end{macrocode} +% Mit \pkg{hypdoc} werden via \cs{c@HD@hypercount} Sprungmarken ins Dokument +% sowie auf Codezeilen generiert. Diese werden durch \cs{tud@xdy@@mapping} +% an die korrespondierenden Befehle von \pkg{hypdoc} durchgereicht. +% \begin{macrocode} +\AfterPackage*{hypdoc}{% + \renewcommand*\tud@xdy@reference[1]{\the\c@HD@hypercount:\filesep#1:\thepage}% + \def\tud@xdy@@mapping#1#2:#3-#4:#5\@nil{% + \ifnum#2>\z@\relax + \hdclindex{#2}{#1}{\tud@xdy@destination{#5}{#3}{#4}}% + \else + \csname\ifx\\#1\\relax\else#1\fi\endcsname{% + \hyperlink{page.#5}{\tud@xdy@destination{#5}{#3}{#4}}% + }% + \fi }% +} +\fi +% \end{macrocode} +% \end{macro}^^A \tud@xdy@@mapping +% \end{macro}^^A \tud@xdy@mapping +% \end{macro}^^A \tud@xdy@filesep +% \end{macro}^^A \tud@xdy@destination +% \end{macro}^^A \tud@xdy@reference +% +% \subsubsection{Erzeugen von Indexeinträgen} +% +% Nachdem die Form der Referenzierung für \app{texindy} definiert wurde, müssen +% die Einträge im Index auch entsprechend erstellt werden. +% +% \begin{macro}{\tud@xdy@wrindex} +% \changes{v2.06o}{2022/07/24}{neu}^^A +% \begin{macro}{\tud@xdy@page@wrindex} +% \changes{v2.06o}{2022/07/24}{neu}^^A +% \begin{macro}{\tud@xdy@codeline@wrindex} +% \changes{v2.06o}{2022/07/24}{neu}^^A +% Mit \cs{PageIndex} respektive \cs{CodelineIndex} aus dem Paket \pkg{doc} +% wird festgelegt, ob Index und Änderungsliste Seitenzahlen oder Codezeilen +% als Referenz verwenden. Dementsprechend werden \cs{tud@xdy@page@wrindex} und +% \cs{tud@xdy@codeline@wrindex} definiert, die sich grundsätzlich nur darin +% unterscheiden, ob \cs{tud@xdy@reference} mit |0| oder der aktuellen +% Codezeile |\number\c@CodelineNo| als Argument genutzt wird. +% \begin{macrocode} +\ifdefined\tudxdyflag +\newcommand*\tud@xdy@wrindex[1]{% + \protected@write\@indexfile{}{% + \string\indexentry{#1}{\tud@xdy@reference{0}}% + }% + \endgroup% \@esphack% } +\newcommand*\tud@xdy@page@wrindex[1]{% + \begingroup + \let\@wrindex\tud@xdy@wrindex% + \index{#1}% + \endgroup +} +\AfterPackage*{hypdoc}{% + \renewcommand*\tud@xdy@page@wrindex[1]{% + \begingroup + \let\@wrindex\tud@xdy@wrindex% + \HDorg@index{#1}% + \endgroup + } +} +\newcommand*\tud@xdy@codeline@wrindex[1]{% + \if@filesw + \begingroup + \let\protect\noexpand + \immediate\write\@indexfile{% + \string\indexentry{#1}{\tud@xdy@reference{\number\c@CodelineNo}}% + }% + \endgroup + \fi +} +\fi % \end{macrocode} -% \end{macro}^^A \SpecialParameterIndex -% \end{environment}^^A DescribeParameterParent +% \end{macro}^^A \tud@xdy@codeline@wrindex +% \end{macro}^^A \tud@xdy@page@wrindex +% \end{macro}^^A \tud@xdy@wrindex % % \subsubsection{Erzeugen von Änderungseinträgen} % +% \begin{macro}{\changehistoryname} % \begin{macro}{\changes@} -% Bei der Erstellung der Änderungsliste fehlt bei Makros in der aktuellen -% Version von \pkg{doc} ein Leerzeichen. Das Problem ist bereits gemeldet. +% \changes{v2.06o}{2022/07/20}{Anpassungen für \pkg{doc}}^^A +% \changes{v2.06o}{2022/07/25}{Prüfen falscher Datumsangaben}^^A +% \begin{macro}{\changes@@} +% Vor den Änderungen wird geprüft, ob sich an der Definition aus dem Paket +% \pkg{doc} etwas geändert hat. Der Befehl \cs{changehistoryname} wird vom +% Paket \pkg{hypdoc} verwendet. % \begin{macrocode} +\def\changehistoryname{\tud@changes@name} \CheckCommand*\changes@[3]{% \protected@edef\@tempa{% \noexpand\glossary{% - #1\levelchar + #1% + \ifdoc@reportchangedates\space -- #2\fi + \levelchar \ifx\saved@macroname\@empty - \space + \quotechar!% \actualchar \generalname \else @@ -877,165 +1070,110 @@ % \end{macrocode} % Bei der Erzeugung der Änderungseinträge wird zwischen der Verwendung von % \app{makeindex} und \app{texindy} unterschieden. Für die Reihenfolge des -% Erscheinens der einzelnen Einträge wird das angegebene Datum zur Sortierung -% genutzt. +% Erscheinens der einzelnen Einträge wird das in |#2| angegebene Datum zur +% Sortierung genutzt. % \begin{macrocode} -\ifdefined\tudxdyflag% - \renewcommand*\changes@[3]{% -% \end{macrocode} -% Einträge sollen nur erzeugt werden, wenn diese vollständig sind. -% \begin{macrocode} - \@tempswatrue% - \ifblank{#1}{\@tempswafalse}{}% - \ifblank{#3}{\@tempswafalse}{}% - \if@tempswa% -% \end{macrocode} -% Es wird dabei unterschieden, ob der Änderungseintrag einem Parameter gilt. -% Ist dies nicht der Fall, so wird der Eintrag mehr oder weniger standardmäßig -% erzeugt. -% \begin{macrocode} - \ifx\parameter@parent@changes\relax% - \protected@edef\@tempb{% - \saved@indexname% - \ifx\saved@indextype\@empty\else% - \space\saved@indextype% - \fi% - \actualchar% - \string\verb\quotechar*% - \verbatimchar\saved@macroname% - \verbatimchar% - \ifx\saved@indextype\@empty\else% - \index@type{\saved@indextype}% - \fi% - :\levelchar% - }% +\renewcommand*\changes@[3]{% + \ifnum\@parse@version@1993/01/01\@nil<\expandafter\@parse@version@#2//00\@nil% + \expandafter\@gobble% + \else% + \expandafter\@firstofone% + \fi{\ClassWarning{\TUD@Class@Name}{The given date `#2' seems to be invalid}}% + \changes@@{#1}{#2}{#3}% +} +\ifdefined\tudxdyflag + \newcommand*\changes@@[3]{% + \protected@edef\@tempa{% + \noexpand\glossary{% + #1\ifdoc@reportchangedates\space -- #2\fi + \levelchar % \end{macrocode} -% Andernfalls wird eine zusätzliche Ebene vor dem eigentlichen Eintrag des -% Parameters erzeugt und der zuvor in \cs{parameter@parent@changes} gesicherte -% Elterneintrag~-- Befehl oder Umgebung~-- dafür eingefügt. +% Das an die vorderster Stelle sortierte Zeichen ist |~| bei \app{texindy}. % \begin{macrocode} - \else% - \protected@edef\@tempb{% - \parameter@parent@changes% - \saved@indexname% - \ifx\saved@indextype\@empty\else% - \space\saved@indextype% - \fi% - \actualchar% + \ifx\saved@macroname\@empty + \string~\actualchar\tud@general@name% % \end{macrocode} -% Der so erzeugte Änderungseintrag soll durch \app{texindy} bei der Erzeugung -% der Änderungsliste noch speziell sortiert werden. Daher wird nicht \cs{verb} -% sondern lediglich \cs{ttfamily} verwendet. +% Gilt der Änderungseintrag einem Parameter wird eine zusätzliche Ebene vor dem +% eigentlichen Eintrag des Parameters erzeugt und der in \cs{tud@idx@parent} +% zuvor gesicherte Elterneintrag~-- Befehl oder Umgebung~-- eingefügt. Weil +% ohnehin eine Stildatei für \app{texindy} erzeugt wird, ist das Erzeugen +% zusätzlicher Ebenen in der Änderungsliste einfach machbar. Prinzipiell wäre +% das mit einer entsprechenden Stildatei auch für \app{makeindex} machbar. % \begin{macrocode} - {\noexpand\ttfamily\saved@macroname}% - \ifx\saved@indextype\@empty\else% - \index@type{\saved@indextype}% - \fi% - :\levelchar% - }% - \fi% - \protected@edef\@tempa{% - \noexpand\glossary{% - #1\levelchar% - \ifx\saved@macroname\@empty% - \tud@general@name% - \else% - \tud@implementation@name% - \fi% - \levelchar% - \ifx\saved@macroname\@empty\else% - \@tempb% - \fi% - #2 #3% - \actualchar% - #3% (#2)% - }% + \else + \ifx\tud@idx@parent\relax\else + \expandafter\@firstoftwo\tud@idx@parent\actualchar + \expandafter\@secondoftwo\tud@idx@parent:\levelchar + \fi + \tud@idx@sortkey\actualchar\tud@idx@format% + \fi + :\levelchar + #2\space\protecting{#3}\actualchar\protecting{#3}% }% - \else% - \let\@tempa\relax% - \fi% + }% \@tempa\endgroup\@esphack% }% -\else% +\else % \end{macrocode} -% Für \app{makeindex} wird der Befehl insebsondere für das Listen der Parameter +% Für \app{makeindex} wird der Befehl insbesondere für das Listen der Parameter % angepasst. % \begin{macrocode} \renewcommand*\changes@[3]{% \protected@edef\@tempa{% \noexpand\glossary{% - #1\levelchar% - \ifx\saved@macroname\@empty% - \quotechar!% - \actualchar% - \tud@general@name% - :\levelchar% - \else% - \ifx\parameter@parent@changes\relax\else% - \parameter@parent@changes zzz\space% - \fi% - \saved@indexname% - \ifx\saved@indextype\@empty\else% - \space\saved@indextype% - \fi% - \actualchar% - \string\verb\quotechar*% - \verbatimchar\saved@macroname% - \verbatimchar% - \ifx\saved@indextype\@empty\else% - \index@type{\saved@indextype}% - \fi% - \ifx\parameter@parent@changes\relax% - :\levelchar% - \else% - :\space% - \fi% - \fi% - #3% + #1\ifdoc@reportchangedates\space -- #2\fi + \levelchar + \ifx\saved@macroname\@empty + \quotechar!\actualchar\tud@general@name% + \else + \ifx\tud@idx@parent\relax\else + \expandafter\@firstoftwo\tud@idx@parent\space--\space% + \fi + \tud@idx@sortkey\actualchar + \ifx\tud@idx@parent\relax\else + \expandafter\@secondoftwo\tud@idx@parent\noexpand\,--\noexpand\,% + \fi + \tud@idx@format% + \fi + :\levelchar + #2\space\protecting{#3}\actualchar\protecting{#3}% }% }% \@tempa\endgroup\@esphack% }% -\fi% +\fi % \end{macrocode} +% \end{macro}^^A \changes@@ % \end{macro}^^A \changes@ -% \begin{macro}{\@wrglossary} -% Für die Ausgabe der Änderungsliste soll nicht einfach nur die Seitenzahl -% sondern zumindest für die Implementierungen die Codezeile ausgegeben werden. +% \end{macro}^^A \changehistoryname +% \begin{macro}{\tud@xdy@wrglossary} +% \changes{v2.06o}{2022/07/24}{neu}^^A +% Die Referenzierung für \app{texindy} wird auch für Änderungseinträge genutzt. % \begin{macrocode} -\CheckCommand*\@wrglossary[1]{% - \protected@write\@glossaryfile{}% - {\string\glossaryentry{#1}{\thepage}}% - \endgroup - \@esphack% -} +\ifdefined\tudxdyflag +\newcommand*\tud@xdy@wrglossary[1]{% % \end{macrocode} -% Allgemeine Einträge werden mit Seitenzahlenerzeugt. Für Einträge bzgl. einer -% Implementierungen werden Codezeilen als Basis verwendet, falls aktiv. +% Zunächst wird geprüft, ob eine Eintrag mit Refernz auf eine Seitenzahl oder +% eine Codezeile erzeugt werden soll. Letztere werden nur erstellt, wenn im +% Index überhaupt Codezeilen verwendet werden und der Änderungseintrag sich +% auf ein zuletzt deklariertes Element (\cs{saved@macroname}) bezieht. % \begin{macrocode} -\def\@wrglossary#1{% - \ifx\saved@macroname\@empty% + \@tud@res@swafalse% + \ifx\special@index\@gobble\else\ifcodeline@index + \ifx\saved@macroname\@empty\else\@tud@res@swatrue\fi + \fi\fi + \global\advance\c@CodelineNo\@ne% \protected@write\@glossaryfile{}{% - \string\glossaryentry{#1|usage}{\thepage}% + \string\glossaryentry{#1|change}% + {\tud@xdy@reference{\if@tud@res@swa\number\c@CodelineNo\else0\fi}}% }% - \else% - \ifcodeline@index% - \global\advance\c@CodelineNo\@ne% - \protected@write\@glossaryfile{}{% - \string\glossaryentry{#1|main}{\filesep\number\c@CodelineNo}% - }% - \global\advance\c@CodelineNo\m@ne% - \else% - \protected@write\@glossaryfile{}{% - \string\glossaryentry{#1|main}{\thepage}% - }% - \fi% - \fi% + \global\advance\c@CodelineNo\m@ne% \endgroup% \@esphack% } +\fi % \end{macrocode} -% \end{macro}^^A \@wrglossary +% \end{macro}^^A \tud@xdy@wrglossary % % \subsubsection{Erscheinung von Einträgen in der Änderungsliste} % @@ -1061,11 +1199,9 @@ % \changes{v2.05g}{2016/11/02}{neu}^^A % \begin{macro}{\tud@lst@@process} % \changes{v2.05g}{2016/11/02}{neu}^^A -% \begin{macro}{\tud@lst@subsub} +% \begin{macro}{\tud@lst@@sub} % \changes{v2.05g}{2016/11/02}{neu}^^A -% \begin{macro}{\tud@lst@subsubsub} -% \changes{v2.05g}{2016/11/02}{neu}^^A -% \begin{macro}{\subsubsubitem} +% \begin{macro}{\tud@lst@@@sub} % \changes{v2.05g}{2016/11/02}{neu}^^A % \begin{macro}{\efil} % \changes{v2.05g}{2016/11/02}{neu}^^A @@ -1075,24 +1211,23 @@ % existieren. Sollte nur eine Anmerkung vorhanden sein, wird diese direkt in % der dazugehörigen Ebene nach dem Eintrag selbst ausgegeben. % \begin{macrocode} -\newcommand*\tud@lst@subsub{} -\newcommand*\tud@lst@subsubsub{} -\newcommand*\subsubsubitem{\@idxitem\hspace*{35\p@}} +\newcommand*\tud@lst@@sub{} +\newcommand*\tud@lst@@@sub{} \newcommand*\efil{\hfil\nopagebreak}% \newcommand*\tud@lst@def{% \newcommand*\tud@lst@values{}% - \newif\if@tud@lst@multi% + \tud@newif\if@tud@lst@multi% \newcommand*\tud@lst@init{% \let\tud@lst@values\relax% - \let\tud@lst@subsub\relax% + \let\tud@lst@@sub\relax% \@tud@lst@multifalse% }% \newcommand*\tud@lst@add[1]{% \ifx\tud@lst@values\relax\else% \@tud@lst@multitrue% - \def\tud@lst@subsub{\subsubitem}% + \def\tud@lst@@sub{\subitem}% \fi% - \listadd\tud@lst@values{\tud@lst@subsub ##1}% + \listadd\tud@lst@values{\tud@lst@@sub ##1}% }% \newcommand*\tud@lst@process{% \if@tud@lst@multi% @@ -1102,18 +1237,18 @@ \tud@lst@init% }% \newcommand*\tud@lst@@values{}% - \newif\if@tud@lst@@multi% + \tud@newif\if@tud@lst@@multi% \newcommand*\tud@lst@@init{% \let\tud@lst@@values\relax% - \def\tud@lst@subsub{\subsubitem}% - \def\tud@lst@subsubsub{\space}% + \def\tud@lst@@sub{\subitem}% + \def\tud@lst@@@sub{\space}% \@tud@lst@@multifalse% }% \newcommand*\tud@lst@@add[1]{% \@tud@lst@multitrue% \ifx\tud@lst@@values\relax\else% \@tud@lst@@multitrue% - \def\tud@lst@subsubsub{\subsubsubitem}% + \def\tud@lst@@@sub{\subsubitem}% \fi% \listadd\tud@lst@@values{##1}% }% @@ -1121,9 +1256,9 @@ \if@tud@lst@@multi% \appto\tud@lst@values{\efill}% \fi% - \edef\tud@reserved####1{% + \protected@edef\tud@reserved####1{% \noexpand\listadd\noexpand\tud@lst@values{% - \expandonce\tud@lst@subsubsub####1% + \expandonce\tud@lst@@@sub####1% }% }% \forlistloop{\tud@reserved}{\tud@lst@@values}% @@ -1132,9 +1267,8 @@ } % \end{macrocode} % \end{macro}^^A \efil -% \end{macro}^^A \subsubsubitem -% \end{macro}^^A \tud@lst@subsubsub -% \end{macro}^^A \tud@lst@subsub +% \end{macro}^^A \tud@lst@@@sub +% \end{macro}^^A \tud@lst@@sub % \end{macro}^^A \tud@lst@@process % \end{macro}^^A \tud@lst@@add % \end{macro}^^A \tud@lst@@init @@ -1147,27 +1281,126 @@ % \end{macro}^^A \tud@lst@values % \end{macro}^^A \tud@lst@def % -% \subsubsection{Erzeugen von Index und Änderungsliste} +% \subsubsection{Setzen der Anpassungen für Index und Änderungsliste} % -% \begin{macro}{\tud@write@replace} +% Über den Hook |begindocument/before| erfolgt nun die Zuweisung der zuvor +% gemachten Anpassungen an die jeweiligen Befehle, wobei zuvor die Definitionen +% der relevanten Befehle geprüft wird. Mit \cs{DeclareHookRule} für das durch +% \pkg{doc} verwendete Label |doc/hyperref| wird sichergestellt, dass die +% Anpassungen erst nach \pkg{doc} angewendet werden. +% \begin{macrocode} +\DeclareHookRule{begindocument/before}{doc/hyperref}{<}{.} +\AddToHook{begindocument/before}{% + \CheckCommand*\@wrindex[1]{% + \protected@write\@indexfile{}{\string\indexentry{#1}{\thepage}}% + \endgroup + \@esphack% + } + \CheckCommand*\codeline@wrindex[1]{% ltxdoc + \if@filesw + \begingroup + \let\protect\noexpand + \immediate\write\@indexfile{% + \string\indexentry{#1}{\filesep\number\c@CodelineNo}% + }% + \endgroup + \fi + } + \@ifpackageloaded{hypdoc}{% + \CheckCommand*\filesep{} + \CheckCommand*\doc@handleencap[1]{% + \encapchar hdclindex{\the\c@HD@hypercount}{#1}% + } + \CheckCommand*\HD@codeline@wrindex[1]{% + \begingroup + \let\HDorg@encapchar\encapchar + \def\encapchar##1\encapchar##2\@nil{% + \HDorg@encapchar + hdclindex{\the\c@HD@hypercount}{##1}% + }% + \codeline@wrindex{#1\encapchar\encapchar\@nil}% + \endgroup + } + \CheckCommand*\HD@page@wrindex[1]{% + \begingroup + \let\HDorg@encapchar\encapchar + \def\encapchar##1\encapchar##2\@nil{% + \HDorg@encapchar + hdpindex{##1}% + }% + \HDorg@index{#1\encapchar\encapchar\@nil}% + \endgroup + } + \CheckCommand*\@wrglossary[1]{% + \let\HDorg@encapchar\encapchar + \def\encapchar##1\encapchar##2\@nil{% + \HDorg@encapchar + hdpindex{##1}% + }% + \HDorg@wrglossary{#1\encapchar\encapchar\@nil}% + } + \CheckCommand*\HDorg@wrglossary[1]{% + \protected@write\@glossaryfile{}% + {\string\glossaryentry{#1}{\thepage}}% + \endgroup + \@esphack% + } + }{% + \CheckCommand*\@wrglossary[1]{% + \protected@write\@glossaryfile{}% + {\string\glossaryentry{#1}{\thepage}}% + \endgroup + \@esphack% + } + } +% \end{macrocode} +% Prüfung beendet, jetzt erfolgt die eigentliche Zuweisung. +% \begin{macrocode} + \ifdefined\tudxdyflag + \ifx\special@index\@gobble\else + \ifcodeline@index + \let\special@index\tud@xdy@codeline@wrindex + \else + \let\special@index\tud@xdy@page@wrindex + \fi + \@ifpackageloaded{hypdoc}{% + \let\HD@codeline@wrindex\tud@xdy@codeline@wrindex + \let\HD@page@wrindex\tud@xdy@page@wrindex + }{}% + \fi + \let\filesep\tud@xdy@filesep + \def\doc@handleencap#1{\encapchar #1} + \let\@wrindex\tud@xdy@wrindex + \let\@wrglossary\tud@xdy@wrglossary + \fi +} +% \end{macrocode} +% +% \subsubsection{Verarbeiten der Hilfsdateien von Index und Änderungsliste} +% +% \begin{macro}{\tud@xdy@write} % \changes{v2.05}{2016/04/21}{neu}^^A -% \begin{macro}{\tud@read@replace} +% \begin{macro}{\tud@xdy@read} % \changes{v2.05}{2016/04/21}{neu}^^A % \begin{macro}{\tud@line@replace} % \changes{v2.05}{2016/04/21}{neu}^^A % \begin{macro}{\actualchar} % \begin{macro}{\quotechar} % \begin{macro}{\levelchar} +% \ToDo{äquivalent zu tudscrmanual.cls; shell-escape raus, via makefile}[v2.07] +% \begin{macrocode} +%^^A\BeforeClosingMainAux{% +%^^A\immediate\closeout\@indexfile% +%^^A\immediate\closeout\@glossaryfile% +% \end{macrocode} % Damit die erzeugten Dateien für Index und Änderungsliste von \app{texindy} % verarbeitet werden können, müssen einige Steuerzeichen in der originalen % \file{.ind}-Datei getauscht werden. Dafür wird diese zeilenweise eingelesen, % die fraglichen Zeichen ersetzt und in eine weitere Hilfsdatei geschrieben. % \begin{macrocode} \ifdefined\tudxdyflag - \newcommand*\tud@write@replace{}% - \newwrite\tud@write@replace% - \newcommand*\tud@read@replace{}% - \newread\tud@read@replace% + \tud@newwrite\tud@xdy@write% + \tud@newread\tud@xdy@read% % \end{macrocode} % Die Makros für die fraglichen Steuerzeichen werden so angepasst, dass die % Wahrscheinlichkeit für eine Verwendung dieser Kombination in einem Makro- @@ -1182,47 +1415,71 @@ \endlinechar=\m@ne\relax% \def\tud@reserved#1#2{% \IfFileExists{\jobname.#1}{% - \immediate\openin\tud@read@replace=\jobname.#1\relax% - \immediate\openout\tud@write@replace=\jobname-xdy.#1\relax% + \immediate\openin\tud@xdy@read=\jobname.#1\relax% + \immediate\openout\tud@xdy@write=\jobname-xdy.#1\relax% \@tempswafalse% - \loop\unless\ifeof\tud@read@replace% - \readline\tud@read@replace to\tud@line@replace% - \tud@replace\tud@line@replace{"}{""}% - \tud@replace\tud@line@replace{!}{"!}% - \tud@replace\tud@line@replace{:}{":}% - \tud@replace\tud@line@replace{@}{"@}% - \tud@replace\tud@line@replace{\"@}{"\@backslashchar"@}% - \expandafter\tud@replace\expandafter\tud@line@replace% + \loop\unless\ifeof\tud@xdy@read% + \readline\tud@xdy@read to\tud@line@replace% +% \end{macrocode} +% Um potenzielle Dopplungen zu vermeiden, wird \cs{quotechar} vor Zeichen +% entfernt, die ohnehin gegebenenfalls manuell behandelt werden müssen. +% \begin{macrocode} + \expandafter\tud@replace@@in\expandafter\tud@line@replace% + \expandafter{\quotechar"}{"}% + \expandafter\tud@replace@@in\expandafter\tud@line@replace% + \expandafter{\quotechar!}{!}% + \expandafter\tud@replace@@in\expandafter\tud@line@replace% + \expandafter{\quotechar:}{:}% + \expandafter\tud@replace@@in\expandafter\tud@line@replace% + \expandafter{\quotechar @}{@}% +% \end{macrocode} +% Jetzt die manuellen Anpassungen für Zeichen, die eigentlich zur Steuerung +% der Indexeinträge genutzt werden. +% \begin{macrocode} + \tud@replace@@in\tud@line@replace{"}{""}% + \tud@replace@@in\tud@line@replace{!}{"!}% + \tud@replace@@in\tud@line@replace{:}{":}% + \tud@replace@@in\tud@line@replace{@}{"@}% + \tud@replace@@in\tud@line@replace{\"@}{"\"@}% +% \end{macrocode} +% Abschließend erfolgt das Einsetzen der Steuerzeichen. +% \begin{macrocode} + \expandafter\tud@replace@@in\expandafter\tud@line@replace% \expandafter{\actualchar}{@}% - \expandafter\tud@replace\expandafter\tud@line@replace% + \expandafter\tud@replace@@in\expandafter\tud@line@replace% \expandafter{\quotechar}{"}% - \expandafter\tud@replace\expandafter\tud@line@replace% + \expandafter\tud@replace@@in\expandafter\tud@line@replace% \expandafter{\levelchar}{!}% - \tud@replace\tud@line@replace{" @}{}% - \ifeof\tud@read@replace\else% - \immediate\write\tud@write@replace{% + \tud@replace@@in\tud@line@replace{" @}{}% + \ifeof\tud@xdy@read\else% + \immediate\write\tud@xdy@write{% \unexpanded\expandafter{\tud@line@replace}% }% \@tempswatrue% \fi% \repeat% - \immediate\closein\tud@read@replace% - \immediate\closeout\tud@write@replace% + \immediate\closein\tud@xdy@read% + \immediate\closeout\tud@xdy@write% \ifnum\pdf@shellescape=\@ne\relax% \if@tempswa% \ShellEscape{% texindy\space% - -o \jobname.#2\space% - -M \@currname-#2.xdy\space% - -t \jobname-#2.xlg\space% + -M \@currname-#2.xdy\space% + \ifdefvoid{\inputencodingname}{% + -C\space utf8% + }{% + -C\space\inputencodingname% + }\space% + -t \jobname-#2.xlg\space% + -o \jobname.#2\space% \jobname-xdy.#1% }% % \end{macrocode} % Falls nichts geschrieben wurde, wird eine leere Ausgabedatei erzeugt. % \begin{macrocode} \else% - \immediate\openout\tud@write@replace=\jobname.#2\relax% - \immediate\closeout\tud@write@replace% + \immediate\openout\tud@xdy@write=\jobname.#2\relax% + \immediate\closeout\tud@xdy@write% \fi% \fi% }{}% @@ -1245,40 +1502,114 @@ \fi% \fi % \end{macrocode} +% \ToDo{äquivalent zu tudscrmanual.cls}[v2.07] +% \begin{macrocode} +%^^A} +% \end{macrocode} % \end{macro}^^A \levelchar % \end{macro}^^A \quotechar % \end{macro}^^A \actualchar % \end{macro}^^A \tud@line@replace -% \end{macro}^^A \tud@read@replace -% \end{macro}^^A \tud@write@replace -% Jetzt werden noch die Einleitungen für Index und Änderungsliste angepasst. -% \begin{macrocode} -\IndexPrologue{\addsec{\indexname}\tud@index@text} -\GlossaryPrologue{\addsec{\tud@changes@name}} -% \end{macrocode} +% \end{macro}^^A \tud@xdy@read +% \end{macro}^^A \tud@xdy@write % -% \subsection{ToDo-Liste} +% \subsection{Liste anstehender Aufgaben} % % \begin{macro}{\PrintToDos} % \changes{v2.05}{2016/05/19}{neu}^^A -% \begin{macro}{\@docinclude} -% Für ToDo-Notizen wird am Ende eine Liste aller offenen Punkte ausgegeben. +% Für ToDo-Notizen wird eine Liste aller anstehender Aufgaben definiert. % \begin{macrocode} \DeclareNewTOC[% - type=todo,% listname={\tud@todo@name},% - name=ToDo,% - tocentryindent=\z@,% owner=\@currname,% ]{tdo} -\setuptoc{tdo}{totoc} -\newcommand*\PrintToDos{\ifdefined\tudfinalflag\else\listoftodos\fi} +\setuptoc{tdo}{totoc,noindent} +\newcommand*\PrintToDos{\ifdefined\tudfinalflag\else\listoftoc{tdo}\fi} +% \end{macrocode} +% \end{macro}^^A \PrintToDos +% \begin{macro}{\ToDo} +% \changes{v2.02}{2014/07/25}{neu}^^A +% Die Befehle für die ToDo-Notizen. Um in der gleichen Nomenklatur wie beim +% Handbuch bleiben zu können, wird die Randnotizmarke als optionales Argument +% hinter dem eigentlichen Text angegeben. +% \begin{macrocode} +\ifdefined\tudfinalflag +\NewDocumentCommand\ToDo{mo}{} +\else% +\NewDocumentCommand\ToDo{mo}{% + \begingroup% + \csuse{phantomsection}% + \IfValueTF{#2}{% + \def\tud@reserved{#2}% + }{% + \def\tud@reserved{??}% + }% + \endgraf\ifdim\parskip>\z@\else\smallskip\fi\noindent% + \hfuzz0.8pt% + \leavevmode% + \def\@tempa{\raggedleft\fbox{ToDo:\space\tud@reserved\strut}}% + \ifundef{\marginnote}{% + \expandafter\marginpar\expandafter{\@tempa}% + }{% + \expandafter\marginnote\expandafter{\@tempa}[% + \dimexpr-\fboxsep-\fboxrule\relax% + ]% + }% + \fbox{\parbox{\dimexpr\linewidth-\fboxsep*2\relax}{#1\strut}}% + \endgraf\ifdim\parskip>\z@\else\bigskip\fi\noindent% % \end{macrocode} -% Damit die Liste der ToDo-Notizen bei der Erzeugung der gesamten Dokumentation -% des Quelltextes einmalig sowie vollständig und nicht nach jeder Quelldatei -% einzeln ausgegeben wird, muss der Befehl \cs{@docinclude} angepasst werden. +% Werden mit \cs{DocInclude} mehrere Dateien in das Dokument eingefügt, so +% erhält die ToDo-Notiz einen entsprechenden Hinweis. % \begin{macrocode} -\patchcmd{\@docinclude}{% + \let\@tempa\@empty% + \ifdefvoid{\currentfile}{}{% + \def\@tempa{\,--\,\texttt{\currentfile}}% + }% + \addxcontentsline{tdo}{subsection}{\tud@reserved\@tempa:\space#1}% + \endgroup% + \ignorespaces% +} +\fi +% \end{macrocode} +% \end{macro}^^A \ToDo +% +% +% \subsection{Ausgabe des Schlussteils} +% +% \begin{macro}{\PrintBackMatter} +% \changes{v2.06o}{2022/07/24}{neu}^^A +% \begin{macro}{\tud@index@heading} +% \changes{v2.06o}{2022/07/24}{neu}^^A +% Hiermit lassen sich Index, Änderungsliste und die Liste offener Aufgaben +% gemeinsam ausgegeben. Dafür werden die Einleitungen für Index und +% Änderungsliste angepasst und \cs{tud@index@heading} definiert. Somit lässt +% sich das Level der Überschriften dynamisch anpassen ohne die bei der +% Verarbeitung des Dokumentes durch \cls{ltxdoc} applizierten Anpassungen +% zu beeinflussen. Die Sternversion von \cs{PrintBackMatter} setzt die +% Überschriften mit \cs{addpart}, die Standardvariante via \cs{addsec}. +% \begin{macrocode} +\newcommand*\tud@index@heading{\addsec} +\IndexPrologue{\tud@index@heading{\indexname}\tud@index@text} +\GlossaryPrologue{\tud@index@heading{\tud@changes@name}} +\NewDocumentCommand\PrintBackMatter{s}{% + \begingroup% + \@ifpackageloaded{bookmark}{\bookmarksetup{startatroot,open=false}}{}% + \IfBooleanT{#1}{\renewcommand*\tud@index@heading{\addpart}}% + \deftocheading{tdo}{\tud@index@heading{##1}}% + \IfBooleanT{#1}{\cleardoublepage}\PrintIndex% + \IfBooleanT{#1}{\cleardoublepage}\PrintChanges% + \IfBooleanT{#1}{\cleardoublepage}\PrintToDos% + \endgroup% +} +% \end{macrocode} +% \end{macro}^^A\tud@index@heading +% \end{macro}^^A\PrintBackMatter +% \begin{macro}{\@docinclude} +% Damit die Liste der anstehenden Aufgaben bei der Erzeugung der gesamten +% Dokumentation des Quelltextes einmalig sowie vollständig und nicht nach jeder +% Quelldatei einzeln ausgegeben wird, muss \cs{@docinclude} angepasst werden. +% \begin{macrocode} +\patchcmd\@docinclude{% \let\@ltxdoc@PrintIndex\PrintIndex \let\PrintIndex\relax \let\@ltxdoc@PrintChanges\PrintChanges @@ -1291,7 +1622,7 @@ \let\@ltxdoc@PrintToDos\PrintToDos \let\PrintToDos\relax }{}{\tud@patch@wrn{@docinclude}} -\patchcmd{\@docinclude}{% +\patchcmd\@docinclude{% \let\PrintIndex\@ltxdoc@PrintIndex \let\PrintChanges\@ltxdoc@PrintChanges }{% @@ -1301,56 +1632,6 @@ }{}{\tud@patch@wrn{@docinclude}} % \end{macrocode} % \end{macro}^^A \@docinclude -% \end{macro}^^A \PrintToDos -% \begin{macro}{\ToDo} -% \changes{v2.02}{2014/07/25}{neu}^^A -% \begin{macro}{\@ToDo} -% \changes{v2.02}{2014/07/25}{neu}^^A -% Die Befehle für die ToDo-Notizen. Um in der gleichen Nomenklatur wie beim -% Handbuch bleiben zu können, wird die Randnotizmarke als optionales Argument -% hinter dem eigentlichen Text angegeben. -% \begin{macrocode} -\newcommand*\ToDo[2][]{% - \kernel@ifnextchar[{\@ToDo{#2}}{\@ToDo{#2}[]}% -} -\newcommand*\@ToDo{} -\def\@ToDo#1[#2]{% - \ifdefined\tudfinalflag\else% - \begingroup% - \csuse{phantomsection}% - \IfArgIsEmpty{#2}{% - \def\tud@reserved{??}% - }{% - \def\tud@reserved{#2}% - }% - \endgraf% - \hfuzz0.8pt% - \leavevmode% - \def\@tempa{\raggedleft\fbox{ToDo:\space\tud@reserved\strut}}% - \ifdefined\marginnote% - \expandafter\marginnote\expandafter{\@tempa}[% - \dimexpr-\fboxsep-\fboxrule\relax% - ]% - \else% - \expandafter\marginpar\expandafter{\@tempa}% - \fi% - \fbox{\parbox{\dimexpr\textwidth-2\fboxsep\relax}{#1\strut}}% - \endgraf% -% \end{macrocode} -% Werden mit \cs{DocInclude} mehrere Dateien in das Dokument eingefügt, so -% erhält die ToDo-Notiz einen entsprechenden Hinweis. -% \begin{macrocode} - \let\@tempa\@empty% - \ifdefined\currentfile% - \def\@tempa{\,--\,\texttt{\currentfile}}% - \fi% - \addxcontentsline{tdo}{todo}{\tud@reserved\@tempa:\space#1}% - \endgroup% - \fi% -} -% \end{macrocode} -% \end{macro}^^A \@ToDo -% \end{macro}^^A \ToDo % % \subsection{Schriften und Satzspiegel} % @@ -1360,19 +1641,19 @@ % für die ausgewählten TypeWriter-Schriften genutzt werden. Damit dies mit dem % Paket \pkg{doc} funktioniert, muss der Befehl \cs{MacroFont} angepasst werden. % \begin{macrocode} -\AfterPackage{mweights}{% +\AfterPackage*{mweights}{% \CheckCommand*\MacroFont{% \fontencoding\encodingdefault% \fontfamily\ttdefault% \fontseries\mddefault% - \fontshape\updefault% + \fontshape\shapedefault% \small% }% \renewcommand*\MacroFont{% \fontencoding\encodingdefault% \fontfamily\ttdefault% \fontseries\mdseries@tt% - \fontshape\updefault% + \fontshape\shapedefault% \small% }% \CheckCommand*\AltMacroFont{% @@ -1398,6 +1679,14 @@ }% } % \end{macrocode} +% \end{macro}^^A \AltMacroFont +% \end{macro}^^A \MacroFont +% +% \iffalse +% +%<*class&option> +% \fi +% % Wird das Paket \pkg{tudscrfonts} genutzt, erscheinen die TypeWriter-Schriften % zur Quelltextdokumentation sowohl für Latin~Modern als auch Roboto etwas zu % schlank. @@ -1411,8 +1700,11 @@ }% } % \end{macrocode} -% \end{macro}^^A \AltMacroFont -% \end{macro}^^A \MacroFont +% +% \iffalse +% +%<*class&body> +% \fi % % Um den zur Verfügung stehenden Platz möglichst effektiv zu nutzen, soll der % Satzspiegel dahingehend aufgeteilt werden, dass für die Darstellung jeder @@ -1430,17 +1722,19 @@ % \begin{length}{\textheight} % \begin{length}{\textwidth} % \begin{length}{\columnsep} +% \begin{length}{\labelsep} % \begin{length}{\marginparsep} % \begin{length}{\marginparwidth} % \begin{length}{\oddsidemargin} -% Hiermit wird die Berechnung des Satzspiegels ausgeführt. +% Hiermit wird der Satzspiegel berechnet, wobei \length{labelsep} als Maß für +% die Seitenränder sowie den Abstand von Randnotizen und Textkörper dient. % \begin{macrocode} \newcommand*\tud@setarea{% - \setlength\topmargin{-1in}% - \setlength\headheight{0pt}% - \setlength\headsep{3em}% - \setlength\footskip{1.5\headsep}% - \setlength\textheight{\dimexpr\paperheight-2.5\headsep-\footskip\relax}% + \tud@setdim\topmargin{-1in}% + \tud@setdim\headheight{0pt}% + \tud@setdim\headsep{3em}% + \tud@setdim\footskip{\headsep}% + \tud@setdim\textheight{\paperheight-\headsep*5/2-\footskip*3/2}% \@colht=\textheight% \@colroom=\textheight% \vsize=\textheight% @@ -1448,29 +1742,28 @@ \begingroup% \MacroFont\selectfont% \settowidth\@tempdima{\space}% - \setlength\@tempdima{80\@tempdima}% -%^^A \addtolength\@tempdima{\dimexpr\MacroIndent+.1\p@\relax}% - \addtolength\@tempdima{\MacroIndent}% + \tud@setdim\@tempdima{80\@tempdima}% + \tud@addtodim\@tempdima{\MacroIndent}% \edef\@tempa{% \endgroup% - \noexpand\setlength\noexpand\textwidth{\the\@tempdima}% + \unexpanded{\tud@setdim\textwidth}{\the\@tempdima}% }% \@tempa% \columnwidth=\textwidth% \hsize=\columnwidth% \linewidth=\hsize% - \setlength\columnsep{1em}% - \setlength\marginparsep{1em}% - \setlength\marginparwidth{% - \dimexpr\paperwidth-\textwidth-2\marginparsep\relax% - }% - \setlength\oddsidemargin{\dimexpr\marginparwidth+\marginparsep-1in\relax}% + \tud@setdim\columnsep{1em}% + \tud@setdim\labelsep{1em}% + \tud@setdim\marginparsep{\labelsep}% + \tud@setdim\oddsidemargin{\paperwidth-\textwidth-\labelsep-1in}% + \tud@setdim\marginparwidth{\oddsidemargin+1in-\labelsep-\marginparsep}% } \AtBeginDocument{\tud@setarea} % \end{macrocode} % \end{length}^^A \oddsidemargin % \end{length}^^A \marginparwidth % \end{length}^^A \marginparsep +% \end{length}^^A \labelsep % \end{length}^^A \columnsep % \end{length}^^A \textwidth % \end{length}^^A \textheight @@ -1480,13 +1773,35 @@ % \end{length}^^A \topmargin % \end{macro}^^A \tud@setarea % +% Sollte das Paket \pkg{tudscrfonts} nicht geladen worden sein, so wird das +% Paket \pkg{lmodern} geladen und die fehlenden Befehle zur Schriftauswahl +% rudimentär definiert. +% \begin{macrocode} +\TUD@UnwindPackage{tudscrfonts}{% + \RequirePackage{lmodern} + \providecommand*\textcdln[1]{\textsf{#1}}% + \providecommand*\textcdrn[1]{\textcdln{#1}}% + \providecommand*\textcdsn[1]{\textcdln{#1}}% + \providecommand*\textcdbn[1]{\textbf{\textcdln{#1}}}% + \providecommand*\textcdxn[1]{\textcdbn{#1}}% + \providecommand*\textcdli[1]{\textsl{\textcdln{#1}}}% + \providecommand*\textcdri[1]{\textcdli{#1}}% + \providecommand*\textcdsi[1]{\textcdli{#1}}% + \providecommand*\textcdbi[1]{\textbf{\textcdli{#1}}}% + \providecommand*\textcdxi[1]{\textcdbi{#1}}% +} +% \end{macrocode} +% % \subsection{Zusätzliche Markup-Befehle} % % \begin{macro}{\app} +% \begin{macro}{\bdl} % \begin{macro}{\cls} % \begin{macro}{\pkg} % \begin{macro}{\opt} % \begin{macro}{\val} +% \begin{macro}{\default} +% \changes{v2.06o}{2022/07/25}{neu}^^A % \begin{macro}{\pgs} % \begin{macro}{\env} % \begin{macro}{\prm} @@ -1495,24 +1810,29 @@ % \changes{v2.05i}{2017/02/23}{neu}^^A % \begin{macro}{\file} % Zusätzliche Auszeichnungsbefehle. +% \ToDo{Befehl \cs{notebox}: siehe \file{svg.dtx}}[v2.07] % \begin{macrocode} \newrobustcmd*\app[1]{\mbox{\textsl{\textbf{#1}}}} +\newrobustcmd*\bdl[1]{\mbox{\textsf{\textbf{#1}}}} \newrobustcmd*\cls[1]{\mbox{\textsf{\textbf{#1}}}} \newrobustcmd*\pkg[1]{\mbox{\textsf{\textbf{#1}}}} \newrobustcmd*\opt[1]{\mbox{\texttt{#1}}} \newrobustcmd*\val[1]{\mbox{\texttt{#1}}} +\newrobustcmd*\default[1]{\val{\textit{#1}}} \newrobustcmd*\pgs[1]{\mbox{\texttt{#1}}} \newrobustcmd*\env[1]{\mbox{\texttt{#1}}} \newrobustcmd*\prm[1]{\mbox{\texttt{#1}}} \newrobustcmd*\cnt[1]{\mbox{\texttt{#1}}} \newrobustcmd*\file[1]{\mbox{\texttt{#1}}} -\AfterPackage{hyperref}{% +\AfterPackage*{hyperref}{% \pdfstringdefDisableCommands{% \let\app\@firstofone% + \let\bdl\@firstofone% \let\cls\@firstofone% \let\pkg\@firstofone% \let\opt\@firstofone% \let\val\@firstofone% + \let\default\@firstofone% \let\pgs\@firstofone% \let\env\@firstofone% \let\prm\@firstofone% @@ -1525,67 +1845,18 @@ % \end{macro}^^A \prm % \end{macro}^^A \env % \end{macro}^^A \pgs +% \end{macro}^^A \default % \end{macro}^^A \val % \end{macro}^^A \opt % \end{macro}^^A \pkg % \end{macro}^^A \cls +% \end{macro}^^A \bdl % \end{macro}^^A \app % -% \subsection{Rückfalloptionen bei fehlenden Paketen} -% -% Zum Schluss erfolgen einige Anpassungen mit \cs{AtEndPreamble}, um abhängig -% vom Ladezustand einiger Pakete reagieren zu können. -% \begin{macrocode} -\AtEndPreamble{% -% \end{macrocode} -% \begin{macro}{\selectlanguage} -% \begin{macro}{\glqq} -% \begin{macro}{\grqq} -% Etwas Kleinkram für \pkg{babel}\dots -% \begin{macrocode} - \@ifpackageloaded{babel}{}{% - \ClassWarning{\TUD@Class@Name}{Package `babel' not loaded}% - \providecommand*\selectlanguage[1]{}% - \providecommand*\glqq{}% - \providecommand*\grqq{}% - }% -% \end{macrocode} -% \end{macro}^^A \grqq -% \end{macro}^^A \glqq -% \end{macro}^^A \selectlanguage -% \begin{macro}{\enquote} -% \dots und \pkg{csquotes}. -% \begin{macrocode} - \@ifpackageloaded{csquotes}{}{% - \ClassWarning{\TUD@Class@Name}{Package `csquotes' not loaded}% - \providecommand\enquote[1]{\emph{#1}}% - }% -% \end{macrocode} -% \end{macro}^^A \enquote -% Sollte das Paket \pkg{tudscrfonts} nicht geladen worden sein, so wird das -% Paket \pkg{lmodern} geladen und die fehlenden Befehle zur Schriftauswahl -% rudimentär definiert. -% \begin{macrocode} - \@ifpackageloaded{tudscrfonts}{}{% - \RequirePackage{lmodern}[2009/10/30]% - \providecommand*\textcdln[1]{\textsf{#1}}% - \providecommand*\textcdrn[1]{\textcdln{#1}}% - \providecommand*\textcdsn[1]{\textcdln{#1}}% - \providecommand*\textcdbn[1]{\textbf{\textcdln{#1}}}% - \providecommand*\textcdxn[1]{\textcdbn{#1}}% - \providecommand*\textcdli[1]{\textsl{\textcdln{#1}}}% - \providecommand*\textcdri[1]{\textcdli{#1}}% - \providecommand*\textcdsi[1]{\textcdli{#1}}% - \providecommand*\textcdbi[1]{\textbf{\textcdli{#1}}}% - \providecommand*\textcdxi[1]{\textcdbi{#1}}% - }% -} -% \end{macrocode} -% % \iffalse % % \fi % -% \Finale +% \PrintBackMatter % \endinput diff --git a/macros/latex/contrib/tudscr/source/tudscr-fields.dtx b/macros/latex/contrib/tudscr/source/tudscr-fields.dtx index c662c46bd9..166f3d7da0 100644 --- a/macros/latex/contrib/tudscr/source/tudscr-fields.dtx +++ b/macros/latex/contrib/tudscr/source/tudscr-fields.dtx @@ -1,10 +1,10 @@ -% \CheckSum{875} % \iffalse meta-comment +%/GitFileInfo=tudscr-fields.dtx % % TUD-Script -- Corporate Design of Technische Universität Dresden % ---------------------------------------------------------------------------- % -% Copyright (C) Falk Hanisch , 2012-2021 +% Copyright (C) Falk Hanisch , 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-fields.dtx +% \iffalse ins:batch + dtx:driver +%<*ins> +\ifx\documentclass\undefined + \input docstrip.tex + \ifToplevel{\batchinput{tudscr.ins}} +\else + \let\endbatchfile\relax +\fi +\endbatchfile +% %<*dtx> -% \fi -% -\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi -\ProvidesFile{tudscr-fields.dtx}[2019/08/20 v2.06c TUD-Script\space% - (input fields)% -] -% -% \iffalse +\ProvidesFile{tudscr-fields.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-fields.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} @@ -82,6 +61,8 @@ % % \changes{v2.02}{2014/06/23}{Paket \pkg{titlepage} nicht weiter unterstützt}^^A % +% +% % \section{Anwenderbefehle für Eingabefelder} % % Das \TUDScript-Bundle für das \TUDCD definieren mehrere Felder, welche durch @@ -95,8 +76,6 @@ % \pkg{titlepage}-Paket entworfen worden. Um gleichzeitig konsistent zu diesem % Paket zu sein, werden für die entsprechenden Felder Alias-Befehle definiert. % -% \StopEventually{\PrintIndex\PrintChanges\PrintToDos} -% % \iffalse %<*class&!manual> % \fi @@ -106,7 +85,10 @@ % Hiermit wird der Inhalt des im zweiten (obligatorischen) Argument namentlich % genannten Feldes in die im ersten (optionalen) Argument gegebene Anweisung % expandiert. -% \begin{macrocode} +% \ToDo{getfield für thesis etc. überarbeiten}[v2.07] +% \ToDo{getfield nur für festgelegte Felder (Liste) zulassen}[v2.07] +% \ToDo{Ausgabe von definition und expandierte Version unterscheiden}[v2.07] +% \begin{macrocode} \newcommand*\getfield[2][\@firstofone]{% \begingroup% \def\tud@res@b{#1}% @@ -160,32 +142,25 @@ % \cs{@department}, \cs{@institute} und \cs{@chair} gespeichert werden. % % Das optionale Argument wird zur Kompatibilität zur Klasse \cls{tudscrposter} -% vorgehalten. Wird das Paket geladen, kann mit dem optionalen Argument die +% vorgehalten. Wird diese Klasse geladen, kann mit dem optionalen Argument die % Angabe der Struktureinheiten im Fußbereich variiert werden. Dafür werden die % Felder \cs{@facultyfoot}, \cs{@departmentfoot}, \cs{@institutefoot} sowie -% \cs{@chairfoot} -% definiert. +% \cs{@chairfoot} definiert. % \begin{macrocode} \newcommand*\@faculty{} \newcommand*\@department{} \newcommand*\@institute{} \newcommand*\@chair{} -%<*book|report|article> -\newcommand*\faculty[2][]{\tud@head@text@field{faculty}{#2}} -\newcommand*\department[2][]{\tud@head@text@field{department}{#2}} -\newcommand*\institute[2][]{\tud@head@text@field{institute}{#2}} -\newcommand*\chair[2][]{\tud@head@text@field{chair}{#2}} -% %<*poster> \newcommand*\@facultyfoot{} \newcommand*\@departmentfoot{} \newcommand*\@institutefoot{} \newcommand*\@chairfoot{} -\newcommand*\faculty[2][\@empty]{\tud@foot@line@add{faculty}{#2}{#1}} -\newcommand*\department[2][\@empty]{\tud@foot@line@add{department}{#2}{#1}} -\newcommand*\institute[2][\@empty]{\tud@foot@line@add{institute}{#2}{#1}} -\newcommand*\chair[2][\@empty]{\tud@foot@line@add{chair}{#2}{#1}} % +\newcommand*\faculty{\@dblarg{\tud@head@text@field{faculty}}} +\newcommand*\department{\@dblarg{\tud@head@text@field{department}}} +\newcommand*\institute{\@dblarg{\tud@head@text@field{institute}}} +\newcommand*\chair{\@dblarg{\tud@head@text@field{chair}}} % \end{macrocode} % \end{field}^^A \@chairfoot % \end{field}^^A \@chair @@ -205,30 +180,21 @@ % besonderen Ausnahmefällen gestattet. % \begin{macrocode} \newcommand*\@extraheadline{} -\newcommand*\extraheadline[1]{\tud@head@text@field{extraheadline}{#1}} +\newcommand*\extraheadline[1]{\tud@head@text@field{extraheadline}[]{#1}} % \end{macrocode} % \end{field}^^A \@extraheadline % \end{macro}^^A \extraheadline % \begin{macro}{\tud@head@text@field} % \changes{v2.05}{2015/11/26}{neu}^^A -% Wird ein Feld gesetzt, muss im Zweifel die Kopfzeile neu erstellt werden. -% \begin{macrocode} -\newcommand*\tud@head@text@field[2]{% - \csgdef{@#1}{\trim@spaces{#2}}% - \global\@tud@head@text@settrue% -} -% \end{macrocode} -% \end{macro}^^A \tud@head@text@field -% \begin{macro}{\tud@foot@line@add} -% \changes{v2.05}{2015/07/06}{neu}^^A % \begin{macro}{\tud@foot@line@write} % \changes{v2.05}{2015/07/06}{neu}^^A -% Mit \cs{tud@foot@line@add} wird der Inhalt eines Feldes in \cs{@\meta{Feld}} +% Mit \cs{tud@head@text@field} wird der Inhalt eines Feldes in |\@|\meta{Feld} % gespeichert. Der Befehl erwartet als erstes obligatorisches Argument den -% Feldnamen und als zweites den Inhalt. Entspricht das dritte obligatorische -% Argument \cs{@empty}, so wird in \cs{@\meta{Feld}foot} ebenfalls das zweite -% Argument abgelegt, andernfalls das dritte. +% Feldnamen und als letztes den Inhalt. Wird ein Feld gesetzt, muss die +% Kopfzeile neu erstellt werden. % +% Das (optionale) Argument dazwischen befüllt |\@|\meta{Feld}|foot| und wird +% mit \cs{@dblarg} standardmäßig auf den Inhalt von |\@|\meta{Feld} gesetzt. % Damit wird es für Poster möglich, die Befehle \cs{faculty}, \cs{department}, % \cs{institute}, \cs{chair} und \cs{professor} dahingehend zu erweitern, dass % unterschiedliche Angaben für die Kopf- und Fußzeile gemacht werden können. @@ -237,15 +203,15 @@ % jedoch zusätzlich das optionale Argument genutzt, so wird dessen Inhalt im % Fußbereich mit \cs{tud@foot@line@write} ausgegeben. % \begin{macrocode} +\newcommand*\tud@head@text@field{} +\def\tud@head@text@field#1[#2]#3{% + \expandafter\tud@trim@field\csname @#1\endcsname{#3}% %<*poster> -\newcommand*\tud@foot@line@add[3]{% - \tud@head@text@field{#1}{#2}% - \ifx\@empty#3\relax% - \global\csletcs{@#1foot}{@#1}% - \else% - \csgdef{@#1foot}{\trim@spaces{#3}}% - \fi% + \expandafter\tud@trim@field\csname @#1foot\endcsname{#2}% +% + \global\@tud@head@text@settrue% } +%<*poster> \newcommand*\tud@foot@line@write[1]{% \protected@edef\@tempa{\csuse{@#1foot}}% \ifx\@tempa\@empty\else\newline\mbox{\csuse{@#1foot}}\fi% @@ -253,7 +219,18 @@ % % \end{macrocode} % \end{macro}^^A \tud@foot@line@write -% \end{macro}^^A \tud@foot@line@add +% \end{macro}^^A \tud@head@text@field +% \begin{macro}{\tud@trim@field} +% Hiermit werden Feldinhalte gegebenenfalls um unnötige Leerzeichen befreit. +% \changes{v2.06o}{2022/08/03}{neu}^^A +% \begin{macrocode} +\newcommand*\tud@trim@field[2]{% + \def#1{#2}% + \trim@spaces@in#1% + \global\let#1#1% +} +% \end{macrocode} +% \end{macro}^^A \tud@trim@field % \begin{macro}{\title} % \begin{field}{\@title} % \begin{field}{\@@title} @@ -266,7 +243,7 @@ \newcommand*\@@title{} \robustify\@title \renewcommand*\title[1]{% - \gdef\@title{#1}% + \tud@trim@field\@title{#1}% \begingroup% \let\thanks\@gobble% \let\footnote\@gobble% @@ -287,10 +264,11 @@ % Die Ausgabe einer zusätzlichen Zeile mit \cs{authormore}\marg{Textzeile} % direkt unterhalb der Angabe des Autors auf der Titelseite, wird im Makro % \cs{@authormore} gespeichert. +% \ToDo{Anrede als optionales Argument?}[v2.07] % \begin{macrocode} \newcommand*\@@author{} \renewcommand*\author[1]{% - \gdef\@author{#1}% + \tud@trim@field\@author{#1}% % \end{macrocode} % Das Feld \cs{@@author} soll lediglich die Autoren ohne weitere Anmerkungen % enthalten. Deshalb werden die gewöhnlichen Formatierungsbefehle des Titels @@ -327,6 +305,9 @@ \expandafter\@tempb##1##2\@nil% }% \protected@edef\@@author{#1}% +% \end{macrocode} +% Zuletzt werden alle eingefügten \cs{@tempc} entfernt. +% \begin{macrocode} \@tempa{\@@author}{ \@tempc }% \@tempa{\@@author}{\@tempc }% \@tempa{\@@author}{ \@tempc}% @@ -335,7 +316,7 @@ \endgroup% } \newcommand*\@authormore{} -\newrobustcmd*\authormore[1]{\gdef\@authormore{#1}\ignorespaces} +\newrobustcmd*\authormore[1]{\tud@trim@field\@authormore{#1}} % \end{macrocode} % \end{field}^^A \@authormore % \end{macro}^^A \authormore @@ -352,18 +333,23 @@ % \changes{v2.05}{2016/07/09}{neu}^^A % \begin{macrocode} \newcommand*\@emailaddress{} -\newrobustcmd*\emailaddress{% - \kernel@ifstar{\tud@emailaddress@simple}{\tud@emailaddress@hyper}% +\newrobustcmd*\emailaddress[2][]{% + \kernel@ifstar% + {\tud@emailaddress@simple{#2}}% + {\tud@emailaddress@hyper[{#1}]{#2}}% } -\newrobustcmd*\tud@emailaddress@simple[1]{\gdef\@emailaddress{#1}} -\newrobustcmd*\tud@emailaddress@hyper[2][]{\gdef\@emailaddress{#2}} +\newrobustcmd*\tud@emailaddress@simple[1]{\tud@trim@field\@emailaddress{#1}} +\newrobustcmd*\tud@emailaddress@hyper[2][]{\tud@trim@field\@emailaddress{#2}} \AfterPackage{hyperref}{% \renewrobustcmd*\tud@emailaddress@hyper[2][hidelinks]{% - \gdef\@emailaddress{% + \tud@trim@field\@emailaddress{#2}% + \xdef\@emailaddress{% \begingroup% - \urlstyle{same}% - \hypersetup{#1}% - \href{mailto:#2}{\nolinkurl{#2}}% + \noexpand\urlstyle{same}% + \unexpanded{\hypersetup{#1}}% + \noexpand\href% + {mailto:\expandonce\@emailaddress}% + {\noexpand\nolinkurl{\expandonce\@emailaddress}}% \endgroup% }% }% @@ -379,7 +365,7 @@ % \cs{@course} gespeichert. % \begin{macrocode} \newcommand*\@course{} -\newrobustcmd*\course[1]{\gdef\@course{#1}\ignorespaces} +\newrobustcmd*\course[1]{\tud@trim@field\@course{#1}} % \end{macrocode} % \end{field}^^A \@course % \end{macro}^^A \course @@ -391,7 +377,7 @@ % wird im Makro \cs{@discipline} gespeichert. % \begin{macrocode} \newcommand*\@discipline{} -\newrobustcmd*\discipline[1]{\gdef\@discipline{#1}\ignorespaces} +\newrobustcmd*\discipline[1]{\tud@trim@field\@discipline{#1}} % \end{macrocode} % \end{field}^^A \@discipline % \end{macro}^^A \discipline @@ -406,9 +392,7 @@ % \cs{@matriculationid} gespeichert. % \begin{macrocode} \newcommand*\@matriculationnumber{} -\newrobustcmd*\matriculationnumber[1]{% - \gdef\@matriculationnumber{#1}\ignorespaces% -} +\newrobustcmd*\matriculationnumber[1]{\tud@trim@field\@matriculationnumber{#1}} % \end{macrocode} % \end{field}^^A \@matriculationnumber % \end{macro}^^A \matriculationnumber @@ -418,7 +402,7 @@ % gespeichert. % \begin{macrocode} \newcommand*\@matriculationyear{} -\newrobustcmd*\matriculationyear[1]{\gdef\@matriculationyear{#1}\ignorespaces} +\newrobustcmd*\matriculationyear[1]{\tud@trim@field\@matriculationyear{#1}} % \end{macrocode} % \end{field}^^A \@matriculationyear % \end{macro}^^A \matriculationyear @@ -427,7 +411,7 @@ % Der Geburtsort für den Titel wird in \cs{@placeofbirth} gespeichert. % \begin{macrocode} \newcommand*\@placeofbirth{} -\newrobustcmd*\placeofbirth[1]{\gdef\@placeofbirth{#1}\ignorespaces} +\newrobustcmd*\placeofbirth[1]{\tud@trim@field\@placeofbirth{#1}} % \end{macrocode} % \end{field}^^A \@placeofbirth % \end{macro}^^A \placeofbirth @@ -438,84 +422,109 @@ % \changes{v2.02}{2014/11/06}{\cs{protected@xdef} genutzt}^^A % \begin{macro}{\subject} % \begin{field}{\@subject} -% \begin{macro}{\tud@thesis@do} -% \begin{macro}{\tud@thesis@@do} -% \begin{macro}{\tud@thanks} +% \begin{field}{\@@subject} +% \begin{macro}{\tud@thesis@evaluate} % Art bzw. Typ der Abschlussarbeit kann \cs{thesis}\marg{Abschlussarbeit} % angegeben werden und wird im Makro \cs{@thesis} gespeichert. Alternativ % dazu kann auch der Befehl \cs{subject} verwendet werden. Mit dem Befehl -% \cs{tud@thesis@do} wird in den Feldern \cs{@thesis} respektive \cs{@subject} -% nach bestimmten Schlagwörtern für Abschlussarbeiten o.\,ä. gesucht. Wird -% eines dieser Wörter gefunden, wird der entsprechende Bezeichner für dieses -% Feld gesetzt. Zusätzlich wird durch \cs{tud@thesis@@do} dafür gesorgt, dass -% gegebenenfalls der Inhalt von \cs{@subject} in \cs{@thesis} verschoben und -% entsprechend die Option \opt{subjectthesis} gesetzt wird. In \cs{@@thesis} -% wird die angegebene Abschlussarbeit ohne etwaige Fußnoten gespeichert. +% \cs{tud@thesis@evaluate} wird in den Feldern \cs{@thesis} respektive +% \cs{@subject} nach bestimmten Schlagwörtern für Abschlussarbeiten o.\,ä. +% gesucht. Bei einem Treffer wird der entsprechende Bezeichner für dieses Feld +% gesetzt. In \cs{@@subject} beziehungsweise \cs{@@thesis} wird der gegebene +% oder substituierte Inhalt ohne etwaige Fußnoten gespeichert. +% \ToDo{Option thesis}[v2.07] % \begin{macrocode} \newcommand*\@thesis{} \newcommand*\@@thesis{} -\newcommand*\thesis[1]{\tud@thesis@do{thesis}{#1}} -\renewcommand*\subject[1]{\tud@thesis@do{subject}{#1}} -\newcommand*\tud@thanks{} -\newcommand*\tud@thesis@do[2]{% +\newcommand*\thesis[1]{\tud@thesis@evaluate{thesis}{#1}} +\CheckCommand*\subject[1]{\gdef\@subject{#1}} +\newcommand*\@@subject{} +\renewcommand*\subject[1]{\tud@thesis@evaluate{subject}{#1}} +\newcommand*\tud@thesis@evaluate[2]{% \begingroup% + \expandafter\tud@trim@field\csname @#1\endcsname{#2}% % \end{macrocode} -% Hier das gleiche wie an anderer Stelle auch schon. Der Inhalt einer eventuell -% vorhandenen Fußnote wird gesichert +% Der Inhalt des Befehls \cs{thanks} wird durch das Setzen einer temporären Box +% in ein temporäres Makro gesichert. Nach der Verarbeitung des Feldinhalts und +% der möglichen Substitution durch den gewünschten Bezeichner wird \cs{thanks} +% wieder hinzugefügt. % \begin{macrocode} - \global\let\tud@thanks\relax% - \def\thanks##1{\gdef\tud@thanks{##1}}% + \let\tud@res@c\@empty% + \def\thanks##1{\listgadd\tud@res@c{##1}}% \let\footnote\thanks% \sbox\z@{#2}% \let\thanks\@gobble% \let\footnote\@gobble% - \tud@lowerstring{\@tempa}{#2}% - \ifstr{#1}{thesis}{\protected@xdef\@@thesis{#2}}{}% - \protected@edef\@tempa{% + \protected@csxdef{@@#1}{\trim@spaces{#2}}% + \letcs\tud@res@a{@@#1}% + \TUD@set@numkey{thesis}{@tempa}{% + {habil}{0}, + {diss}{1},{doctoral}{1},{phd}{1}, + {diploma}{2}, + {master}{3}, + {bachelor}{4}, + {student}{5}, + {evidence}{6}, + {project}{7}, + {seminar}{8}, + {term}{9}, + {research}{10}, + {log}{11}, + {report}{12}, + {internship}{13} + }{\tud@res@a}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \ifcase\@tempa\relax% habil + \def\tud@res@a{\habilitationname}% + \or% diss + \def\tud@res@a{\dissertationname}% + \or% diploma + \def\tud@res@a{\diplomathesisname}% + \or% master + \def\tud@res@a{\masterthesisname}% + \or% bachelor + \def\tud@res@a{\bachelorthesisname}% + \or% student + \def\tud@res@a{\studentthesisname}% + \or% evidence + \def\tud@res@a{\studentresearchname}% + \or% project + \def\tud@res@a{\projectpapername}% + \or% seminar + \def\tud@res@a{\seminarpapername}% + \or% term + \def\tud@res@a{\termpapername}% + \or% research + \def\tud@res@a{\researchname}% + \or% log + \def\tud@res@a{\logname}% + \or% report + \def\tud@res@a{\reportname}% + \or% internship + \def\tud@res@a{\internshipname}% + \else% + \FamilyKeyStateUnknownValue% + \fi% + \fi% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \global\cslet{@@#1}\tud@res@a% + \tud@if@strequal{#1}{subject}{% + \ifx\@@thesis\@empty\global\let\@@thesis\@@subject\fi% + }{}% + \def\do##1{\appto\tud@res@a{\thanks{##1}}}% + \dolistloop{\tud@res@c}% + \fi% + \edef\tud@res@a{% \endgroup% - \def\noexpand\@tempa{\@tempa}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \noexpand\csgdef{@#1}{\expandonce\tud@res@a}% + \fi% }% - \@tempa% - \ifstr{\@tempa}{diss}{\tud@thesis@@do{#1}{\dissertationname}}{% - \ifstr{\@tempa}{doctoral}{\tud@thesis@@do{#1}{\dissertationname}}{% - \ifstr{\@tempa}{phd}{\tud@thesis@@do{#1}{\dissertationname}}{% - \ifstr{\@tempa}{diploma}{\tud@thesis@@do{#1}{\diplomathesisname}}{% - \ifstr{\@tempa}{master}{\tud@thesis@@do{#1}{\masterthesisname}}{% - \ifstr{\@tempa}{bachelor}{\tud@thesis@@do{#1}{\bachelorthesisname}}{% - \ifstr{\@tempa}{student}{\tud@thesis@@do{#1}{\studentthesisname}}{% - \ifstr{\@tempa}{evidence}{\tud@thesis@@do{#1}{\studentresearchname}}{% - \ifstr{\@tempa}{project}{\tud@thesis@@do{#1}{\projectpapername}}{% - \ifstr{\@tempa}{seminar}{\tud@thesis@@do{#1}{\seminarpapername}}{% - \ifstr{\@tempa}{term}{\tud@thesis@@do{#1}{\termpapername}}{% - \ifstr{\@tempa}{research}{\tud@thesis@@do{#1}{\researchname}}{% - \ifstr{\@tempa}{log}{\tud@thesis@@do{#1}{\logname}}{% - \ifstr{\@tempa}{report}{\tud@thesis@@do{#1}{\reportname}}{% - \ifstr{\@tempa}{internship}{\tud@thesis@@do{#1}{\internshipname}}{% - \csdef{@#1}{#2}% - }}}}}}}}}}}}}}}% -} -\newcommand*\tud@thesis@@do[2]{% - \ifstr{#1}{subject}{% - \ifx\@thesis\@empty\else% - \ClassWarning{\TUD@Class@Name}{% - Field `thesis' is overwritten by `subject'% - }% - \fi% - \TUD@key@preset{subjectthesis}{true}% - }{% - \TUD@key@preset{subjectthesis}{false}% - }% - \ifx\tud@thanks\relax% - \gdef\@thesis{#2}% - \else% - \protected@xdef\@thesis{\noexpand#2\noexpand\thanks{\tud@thanks}}% - \fi% - \protected@xdef\@@thesis{\trim@spaces{#2}}% + \tud@res@a% } % \end{macrocode} -% \end{macro}^^A \tud@thanks -% \end{macro}^^A \tud@thesis@@do -% \end{macro}^^A \tud@thesis@do +% \end{macro}^^A \tud@thesis@evaluate +% \end{field}^^A \@@subject % \end{field}^^A \@subject % \end{macro}^^A \subject % \end{field}^^A \@@thesis @@ -536,9 +545,8 @@ \newcommand*\@graduation{} \newcommand*\@graduationabbreviation{} \newcommand*\graduation[2][]{% - \gdef\@graduationabbreviation{}% - \ifxblank{#1}{}{\gdef\@graduationabbreviation{(#1)}}% - \gdef\@graduation{#2}% + \tud@trim@field\@graduationabbreviation{#1}% + \tud@trim@field\@graduation{#2}% } % \end{macrocode} % \end{field}^^A \@graduationabbreviation @@ -558,11 +566,11 @@ % \begin{macrocode} %<*book|report|article> \newcommand*\@professor{} -\newcommand*\professor[1]{\gdef\@professor{#1}} +\newcommand*\professor[1]{\tud@trim@field\@professor{#1}} % %<*poster> \newcommand*\@professorfoot{} -\newcommand*\professor[1]{\gdef\@professorfoot{#1}} +\newcommand*\professor[1]{\tud@trim@field\@professorfoot{#1}} % % \end{macrocode} % \end{field}^^A \@professorfoot @@ -578,7 +586,7 @@ % \begin{macrocode} %<*book|report|article> \newcommand*\@supervisor{} -\newcommand*\supervisor[1]{\gdef\@supervisor{#1}} +\newcommand*\supervisor[1]{\tud@trim@field\@supervisor{#1}} % %<*poster> \newcommand*\supervisor[1]{} @@ -593,14 +601,14 @@ % % \begin{macro}{\supporter} % \changes{v2.02}{2014/05/16}{erzeugter Eintrag der Betreuer mit -% \cs{supervisor} für Selbstständigkeitserklärung verworfen}^^A +% \cs{supporter} für Selbstständigkeitserklärung verworfen}^^A % \begin{field}{\@supporter} % Diese Feld ist für die Hilfesteller bei der Anfertigung der Abschlussarbeit, % welche auf der Selbstständigkeitserklärung aufgeführt werden. Mehrere % Hilfesteller werden durch \cs{and} voneinander getrennt. % \begin{macrocode} \newcommand*\@supporter{} -\newcommand*\supporter[1]{\gdef\@supporter{#1}} +\newcommand*\supporter[1]{\tud@trim@field\@supporter{#1}} % \end{macrocode} % \end{field}^^A \@supporter % \end{macro}^^A \supporter @@ -609,7 +617,7 @@ % Angabe einer externen Firma, wird im Makro \cs{@company} gespeichert. % \begin{macrocode} \newcommand*\@company{} -\newcommand*\company[1]{\gdef\@company{#1}} +\newcommand*\company[1]{\tud@trim@field\@company{#1}} % \end{macrocode} % \end{field}^^A \@company % \end{macro}^^A \company @@ -619,7 +627,7 @@ % Mehrere Gutachter werden durch \cs{and} getrennt. % \begin{macrocode} \newcommand*\@referee{} -\newcommand*\referee[1]{\gdef\@referee{#1}} +\newcommand*\referee[1]{\tud@trim@field\@referee{#1}} % \end{macrocode} % \end{field}^^A \@referee % \end{macro}^^A \referee @@ -629,19 +637,19 @@ % gespeichert. Mehrere Fachreferenten werden durch \cs{and} getrennt. % \begin{macrocode} \newcommand*\@advisor{} -\newcommand*\advisor[1]{\gdef\@advisor{#1}} +\newcommand*\advisor[1]{\tud@trim@field\@advisor{#1}} % \end{macrocode} % \end{field}^^A \@advisor % \end{macro}^^A \advisor -% \begin{length}{\tud@len@signatureskip} +% \begin{length}{\tud@glue@signaturevskip} % \changes{v2.04}{2015/05/06}{neu}^^A % Für alle Formatvorlagen, welche eine Unterschriftenzeile bereitstellen, wird % ein einheitlicher Abstand verwendet. % \begin{macrocode} -\newlength\tud@len@signatureskip -\setlength\tud@len@signatureskip{8ex plus 6ex minus 6ex} +\tud@newglue\tud@glue@signaturevskip +\tud@setglue\tud@glue@signaturevskip{8ex plus 6ex minus 6ex} % \end{macrocode} -% \end{length}^^A \tud@len@signatureskip +% \end{length}^^A \tud@glue@signaturevskip % \begin{macro}{\confirmationclosing} % \begin{field}{\@confirmationclosing} % Als Abschluss der Selbstständigkeitserklärung für Ort und Unterschrift. @@ -652,13 +660,13 @@ \medskip\noindent% \ifx\@place\@empty\else\@place,\nobreakspace\fi\@date% \fi% - \vskip\tud@len@signatureskip\noindent% + \vskip\tud@glue@signaturevskip\noindent% \begingroup% \let\and\hfil% \@@author\hfil% \endgroup% } -\newcommand*\confirmationclosing[1]{\gdef\@confirmationclosing{#1}} +\newcommand*\confirmationclosing[1]{\tud@trim@field\@confirmationclosing{#1}} % \end{macrocode} % \end{field}^^A \@confirmationclosing % \end{macro}^^A \confirmationclosing @@ -669,7 +677,7 @@ % \enquote{Dresden} gesetzt. % \begin{macrocode} \newcommand*\@place{Dresden} -\newcommand*\place[1]{\gdef\@place{#1}} +\newcommand*\place[1]{\tud@trim@field\@place{#1}} % \end{macrocode} % \end{field}^^A \@place % \end{macro}^^A \place @@ -678,12 +686,24 @@ % % \fi % +% \begin{macro}{\subtitle} +% \begin{macro}{\@subtitle} +% \begin{macro}{\publishers} +% \begin{macro}{\@publishers} % \begin{macro}{\publisher} -% Kleine Korrektur für \KOMAScript, der Befehl sollte im Singular stehen. +% Die Felder von \KOMAScript werden ebenfalls behandelt. % \begin{macrocode} +\CheckCommand*\subtitle[1]{\gdef\@subtitle{#1}} +\renewcommand*\subtitle[1]{\tud@trim@field\@subtitle{#1}} +\CheckCommand\publishers[1]{\gdef\@publishers{#1}}% +\renewcommand*\publishers[1]{\tud@trim@field\@publishers{#1}} \providecommand*\publisher[1]{\publishers{#1}} % \end{macrocode} % \end{macro}^^A \publisher +% \end{macro}^^A \@publishers +% \end{macro}^^A \publishers +% \end{macro}^^A \@subtitle +% \end{macro}^^A \subtitle % % \iffalse %<*poster> @@ -698,20 +718,24 @@ % \begin{macro}{\tud@webpage@hyper} % \changes{v2.05}{2016/07/09}{neu}^^A % Im Fußbereich eines Posters kann zusätzlich eine Web-Seite angegeben werden. +% \ToDo{auch für notice in tudscrsupervisor}[v2.07] % \begin{macrocode} \newcommand*\@webpage{} -\newrobustcmd*\webpage{% - \kernel@ifstar{\tud@webpage@simple}{\tud@webpage@hyper}% +\newrobustcmd*\webpage[2][]{% + \kernel@ifstar% + {\tud@webpage@simple{#2}}% + {\tud@webpage@hyper[{#1}]{#2}}% } -\newrobustcmd*\tud@webpage@simple[1]{\gdef\@webpage{#1}} -\newrobustcmd*\tud@webpage@hyper[2][]{\gdef\@webpage{#2}} +\newrobustcmd*\tud@webpage@simple[1]{\tud@trim@field\@webpage{#1}} +\newrobustcmd*\tud@webpage@hyper[2][]{\tud@trim@field\@webpage{#2}} \AfterPackage{hyperref}{% \renewrobustcmd*\tud@webpage@hyper[2][hidelinks]{% - \gdef\@webpage{% + \tud@trim@field\@webpage{#2}% + \xdef\@webpage{% \begingroup% - \urlstyle{same}% - \hypersetup{#1}% - \url{#2}% + \noexpand\urlstyle{same}% + \unexpanded{\hypersetup{#1}}% + \noexpand\url{\expandonce\@webpage}% \endgroup% }% }% @@ -736,6 +760,11 @@ % geladen sein, so verwendet der Befehl die Schnittstelle von \pkg{datetime2}, % welches nur ein spezielles Datenformat als Eingabe akzeptiert. Wird keines % der beiden Pakete verwendet, wird das Argument direkt durchgereicht. +% \ToDo{^^A +% direkt auf datetime2 matchen? was, wenn beide Pakete geladen?^^A +% \cs{localedate} von \pkg{babel} gibt es auch noch... +% }[v2.07] +% \ToDo{Angabe eines leeren Datums ermöglichen: gh/55}[v2.07] % \begin{macrocode} \TUD@UnwindPackage{isodate}{% \@ifpackageloaded{datetime2}{% @@ -758,9 +787,10 @@ \ifx\today#2\relax% \gdef#1{#2}% \else% - \ifxblank{#2}% - {\gdef#1{}}% - {\gdef#1{\printdate{#2}}}% + \tud@trim@field#1{#2}% + \tud@if@strblank{#1}% + {}% + {\xdef#1{\noexpand\printdate{\expandonce#1}}}% \fi% } % \end{macrocode} @@ -865,12 +895,14 @@ % \begin{macrocode} \newcommand*\tud@date@print{% \ifx\@date\@empty\else% + \trim@spaces@in\@beforedate% \ifx\@beforedate\@empty\else% - \expandafter\trim@spaces@noexp\expandafter{\@beforedate}\nobreakspace% + \@beforedate\nobreakspace% \fi% \@date% + \trim@spaces@in\@afterdate% \ifx\@afterdate\@empty\else% - \nobreakspace\expandafter\trim@spaces@noexp\expandafter{\@afterdate}% + \nobreakspace\@afterdate% \fi% \fi% } @@ -897,9 +929,7 @@ % gespeichert. % \begin{macrocode} \newcommand*\@dateofbirth{} -\newrobustcmd*\dateofbirth[1]{% - \tud@printdate{\@dateofbirth}{#1}\ignorespaces% -} +\newrobustcmd*\dateofbirth[1]{\tud@printdate{\@dateofbirth}{#1}} % \end{macrocode} % \end{field}^^A \@dateofbirth % \end{macro}^^A \dateofbirth @@ -910,10 +940,7 @@ %<*package&supervisor|class&manual> % \fi % -% \subsection{% -% Felder für die Klasse \cls{tudscrposter}% -% und das Paket \pkg{tudscrsupervisor}% -% } +% \subsection{Felder für \cls{tudscrposter} und \pkg{tudscrsupervisor}} % % Die Klasse \cls{tudscrposter} und das Paket \pkg{tudscrsupervisor} stellen % einige weitere Felder bereit bzw. erweitern deren Funktionalitäten. @@ -924,21 +951,18 @@ % im Makro \cs{@chairman} gespeichert. % \begin{macrocode} \newcommand*\@chairman{} -\newcommand*\chairman[1]{\gdef\@chairman{#1}} +\newcommand*\chairman[1]{\tud@trim@field\@chairman{#1}} % \end{macrocode} % \end{field}^^A \@chairman % \end{macro}^^A \chairman % \begin{macro}{\grade} % \begin{field}{\@grade} -% \begin{field}{\@headline} % Die Befehle dienen zum Abspeichern der entsprechenden Parameter innerhalb % der neu definierten Umgebungen aus dem Paket \pkg{tudscrsupervisor}. % \begin{macrocode} \newcommand*\@grade{} -\newcommand*\grade[1]{\gdef\@grade{#1}} -\newcommand*\@headline{} +\newcommand*\grade[1]{\tud@trim@field\@grade{#1}} % \end{macrocode} -% \end{field}^^A \@headline % \end{field}^^A \@grade % \end{macro}^^A \grade % \begin{macro}{\issuedate} @@ -994,16 +1018,16 @@ % eine Telefonnummer und die E"~Mail-Adresse hinzugefügen. % \begin{macrocode} \newcommand*\@contactperson{} -\newcommand*\contactperson[1]{\gdef\@contactperson{#1}} +\newcommand*\contactperson[1]{\tud@trim@field\@contactperson{#1}} %<*poster> \let\supervisor\contactperson % \newcommand*\@office{} -\newrobustcmd*\office[1]{\gdef\@office{#1}} +\newrobustcmd*\office[1]{\tud@trim@field\@office{#1}} \newcommand*\@telephone{} -\newrobustcmd*\telephone[1]{\gdef\@telephone{#1}} +\newrobustcmd*\telephone[1]{\tud@trim@field\@telephone{#1}} \newcommand*\@telefax{} -\newrobustcmd*\telefax[1]{\gdef\@telefax{#1}} +\newrobustcmd*\telefax[1]{\tud@trim@field\@telefax{#1}} % \end{macrocode} % \end{field}^^A \@telefax % \end{macro}^^A \telefax @@ -1025,6 +1049,36 @@ % Einige Felder sind darauf ausgelegt, dass deren kommagetrennte Inhalte % einzeln abgearbeitet und ausgewertet werden können. Die folgenden Makros % übernehmen diese Aufgabe. +% +% \begin{macro}{\tud@if@field@unset} +% \changes{v2.06o}{2022/08/02}{neu}^^A +% Insbesondere das Autorenfeld (\cs{@author}) benötigt eine Sonderbehandlung, +% da dieses nicht leer sondern mit einer Warnung initialisiert ist. Mit diesem +% Makro kann darauf geprüft werden, ob innerhalb eines Feldes ein Befehl +% enthalten ist, welcher mit \cs{@latex@...} beginnt, was normalerweise für +% generische Fehler oder Warnungen genutzt wird. +% \begin{macrocode} +\newcommand*\tud@if@field@unset[1]{% + \begingroup% + \edef\tud@res@a{% + \def\noexpand\tud@res@a####1\string\@latex@####2\noexpand\@nil{% + \noexpand\IfArgIsEmpty{####2}% + \unexpanded{\@tud@res@swafalse\@tud@res@swatrue}% + }% + \noexpand\tud@res@a% + \expandafter\strip@prefix\meaning#1% + \string\@latex@\noexpand\@nil% + }% + \tud@res@a% + \if@tud@res@swa% + \aftergroup\@firstoftwo% + \else% + \aftergroup\@secondoftwo% + \fi% + \endgroup% +} +% \end{macrocode} +% \end{macro}^^A \tud@if@field@unset % \begin{macro}{\tud@multiple@split} % \begin{macro}{\tud@multiple@@split} % \begin{macro}{\tud@multiple@@@split} @@ -1037,8 +1091,8 @@ % ist dabei das Feld mit dem auszuwertenden Inhalt. % % Dafür müssen für jedes so auszuwertende Feld zum einen zum Zeitpunkt der -% Ausgabe das entsprechende Makro \cs{tud@split\meta{Feld}} und zum anderen -% eine Liste der auszuwertenden lokalen Angaben \cs{tud@split\meta{Feld}@list} +% Ausgabe das entsprechende Makro |\tud@split|\meta{Feld} und zum anderen +% eine Liste der auszuwertenden lokalen Angaben |\tud@split|\meta{Feld}|@list| % definiert sein. Momentan werden die beiden Felder \cs{@author} und~-- für die % Klasse \cls{tudscrposter} sowie das Paket Pakete \pkg{tudscrsupervisor}~-- % \cs{@contactperson} zur Angabe zusätzlicher Informationen unterstützt. @@ -1047,11 +1101,9 @@ \newcommand*\tud@multiple@split[1]{% % \end{macrocode} % Sollte ein Feld verwendet werden, welches initial eine Fehlermeldung enthält, -% so die vorhandene Warnung ausgegeben und danach das Feld als leer definiert. +% wird die vorhandene Warnung ausgegeben und danach das Feld als leer definiert. % \begin{macrocode} - \expandafter\ifpatchable\expandafter{\csname#1\endcsname}{% - \@latex@warning@no@line% - }{% + \expandafter\tud@if@field@unset\expandafter{\csname #1\endcsname}{% \csuse{#1}\csgdef{#1}{}% }{}% % \end{macrocode} @@ -1059,7 +1111,7 @@ % \cs{and} als Separator für die einzelnen Argumente dient. Mit den beiden % freigestellten Argumenten kann das Makro zur eigentlichen Ausgabe aufgerufen % werden, welches aus dem obligatorischen Argument |#1| konstruiert wird -% (\cs{tud@split\meta{Feld}}). An dieses wird der jeweils aktuelle Autor +% (|\tud@split|\meta{Feld}). An dieses wird der jeweils aktuelle Autor % im ersten Argument und die restlichen im zweiten Argument übergeben. % \begin{macrocode} \def\tud@multiple@@split##1\and##2\relax{% @@ -1073,7 +1125,7 @@ % Das Feld wird mit \cs{and} terminiert, um der Definition von % \cs{tud@multiple@@split} in jedem Fall zu entsprechen. % \begin{macrocode} - \edef\@tempa{\csname#1\endcsname\and}% + \edef\@tempa{\csname #1\endcsname\and}% \expandafter\endgroup% \expandafter\tud@multiple@@split\@tempa\relax% } @@ -1083,14 +1135,14 @@ % zweiten Argumentes ausgeführt und \cs{tud@multiple@@split} ein weiteres Mal % aufgerufen, um so sequentiell alle Autoren abzuarbeiten. Dafür muss % \cs{tud@multiple@@@split} innerhalb des verarbeitenden Makro -% (\cs{tud@split\meta{Feld}}) aufgerufen werden. +% (|\tud@split|\meta{Feld}) aufgerufen werden. % \begin{macrocode} \newcommand*\tud@multiple@@@split[2]{% - \ifx\relax#1\relax% + \IfArgIsEmpty{#1}{% \let\@tempb\relax% - \else% + }{% \def\@tempb{#2\tud@multiple@@split#1\relax}% - \fi% + }% \@tempb% } % \end{macrocode} @@ -1109,11 +1161,18 @@ % des zweiten Argumentes mit \cs{sbox}\cs{z@}\marg{\#2} in eine Box expandiert. % Der Teilinhalt entspricht dabei dem aktuellen Teil des Feldes vor dem % nächsten \cs{and}. Damit werden die ggf. angegebenen lokalen Felder gesetzt, -% welche in \cs{tud@split\meta{Feld}@list} aufgelistet sind ohne eine Ausgabe +% welche in |\tud@split|\meta{Feld}|@list| aufgelistet sind ohne eine Ausgabe % zu erzeugen. % \begin{macrocode} \newcommand*\tud@multiple@fields@store[2]{% - \def\@tempa##1{\ifcsdef{@##1}{\tud@cs@store{@##1}}{}}% + \def\@tempa##1{% + \ifcsdef{@##1}{\tud@cs@store{@##1}}{}% + \ifcsdef{##1}{% + \tud@cs@store{##1}% + \expandafter\xapptocmd\csname ##1\endcsname{\ignorespaces}% + {}{\tud@patch@wrn##1}% + }{}% + }% \letcs\@tempb{tud@split#1@list}% \let\and\relax% \expandafter\forcsvlist\expandafter\@tempa\expandafter{\@tempb}% @@ -1133,6 +1192,7 @@ \tud@cs@restore{@##1}% \global\csletcs{@##1}{@##1}% }{}% + \ifcsdef{##1}{\tud@cs@restore{##1}}{}% }% \letcs\@tempb{tud@split#1@list}% \let\and\relax% @@ -1144,21 +1204,21 @@ % \begin{macro}{\tud@multiple@fields@preset} % \changes{v2.04}{2015/05/12}{neu}^^A % Mit diesem Makro wird es möglich, die Inhalte bestimmter Felder aus einer -% definierten Liste \cs{tud@split\meta{Feld}@list} auf Standardwerte zu setzen. +% definierten Liste |\tud@split|\meta{Feld}|@list| auf Standardwerte zu setzen. % \begin{macrocode} \newcommand*\tud@multiple@fields@preset[3]{% \def\@tempa##1{% \edef\@tempc{\csuse{##1}}% - \ifstr{#2}{*}{% + \if\detokenize{#2*}\relax% \csdef{@##1}{}% - }{% + \else% \begingroup% \protected@expandtwoargs\in@{\@tempc}{\csuse{#1}}% \ifin@% \ifcsvoid{@##1}{\@tempc{#2}}{}% \fi% \endgroup% - }% + \fi% }% \letcs\@tempb{tud@split#1@list}% \let\and\relax% @@ -1177,7 +1237,7 @@ % \fi % % Auf der Titelseite sowie für die Aufgabenstellung (\pkg{tudscrsupervisor}) -% und den Seitenfuß von Postern (\cls{tudscrposter}) wird die Angabe einer +% und den Seitenfuß von Postern (\cls{tudscrposter}) wird die Angabe einer % kollaborativen Autorenschaft ermöglicht, wo für jeden einzelnen Autor weitere % Angaben (Matrikelnummer etc.) gemacht werden können. Hierfür werden die % folgenden Makros bereitgestellt. @@ -1194,8 +1254,8 @@ % Stellen umdefiniert. Dies betrifft den Titel, die Aufgabenstellung und den % Aushang in den Umgebungen \env{task} und \env{notice} sowie den Seitenfuß bei % Postern. Im Makro \cs{tud@split@author@list} werden alle Felder hinterlegt, -% die durch \cs{tud@multiple@fields@\dots} geprüft und ggf. initialisiert -% werden sollen. +% die durch die |\tud@multiple@fields@...|-Befehle geprüft und gegebenenfalls +% initialisiert werden sollen. % % Für die Angabe mehrerer Kontaktpersonen im Posterfuß (\cls{tudscrposter}) % oder auf einem Aushang (\pkg{tudscrsupervisor}) wird äquivalent verfahren. @@ -1241,6 +1301,6 @@ % % \fi % -% \Finale +% \PrintBackMatter % \endinput diff --git a/macros/latex/contrib/tudscr/source/tudscr-fonts.dtx b/macros/latex/contrib/tudscr/source/tudscr-fonts.dtx index 8c76c12296..98d562f89a 100644 --- a/macros/latex/contrib/tudscr/source/tudscr-fonts.dtx +++ b/macros/latex/contrib/tudscr/source/tudscr-fonts.dtx @@ -1,10 +1,10 @@ -% \CheckSum{3161} % \iffalse meta-comment +%/GitFileInfo=tudscr-fonts.dtx % % TUD-Script -- Corporate Design of Technische Universität Dresden % ---------------------------------------------------------------------------- % -% Copyright (C) Falk Hanisch , 2012-2021 +% Copyright (C) Falk Hanisch , 2012-2022 % % ---------------------------------------------------------------------------- % @@ -23,44 +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-fonts.dtx -%<*dtx> -\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi -% \fi -% -\ProvidesFile{tudscr-fonts.dtx}[2021/07/15 v2.06n TUD-Script\space% -% -% \iffalse -% -%\ProvidesPackage{tudscrfonts}[% -%<*package&identify> -%!TUD@Version -% -% package -%<*dtx|package&identify> -% \fi - (corporate design fonts)% -] -% \iffalse -% +% \iffalse ins:batch + dtx:driver +%<*ins> +\ifx\documentclass\undefined + \input docstrip.tex + \ifToplevel{\batchinput{tudscr.ins}} +\else + \let\endbatchfile\relax +\fi +\endbatchfile +% %<*dtx> +\ProvidesFile{tudscr-fonts.dtx}[2022/08/09] +\RequirePackage{tudscr-gitinfo} \documentclass[english,ngerman,xindy]{tudscrdoc} \iftutex \usepackage{fontspec} @@ -70,18 +45,11 @@ \fi \usepackage{babel} \usepackage{tudscrfonts} -\KOMAoptions{parskip=half-} -\usepackage{bookmark} \usepackage[babel]{microtype} -\CodelineIndex -\RecordChanges -\GetFileInfo{tudscr-fonts.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} @@ -99,6 +67,9 @@ % den Mathematiksatz verbessert}^^A % \changes{v2.04c}{2015/11/29}{Bugfix für \pkg{fontspec} bei fehlenden % Schriften}^^A +% \changes{v2.06o}{2022/08/01}{Mathematikschriftstärke passend zu Fließtext}^^A +% +% % % \section{Die Hausschrift der \TnUD} % @@ -108,20 +79,44 @@ % die Optionen und Befehle zur Verwendung der Schriften im Dokument definiert. % % Die Schriften des \CDs können nicht nur mit den \TUDScript-Klassen sondern -% auch mit anderen \LaTeX-Dokumentklassen verwendet werden. Hierfür wird das -% Paket \pkg{tudscrfonts} bereitgestellt. Damit kann auf die Installtion der +% auch mit anderen \LaTeX-Klassen verwendet werden. Hierfür wird das Paket +% \pkg{tudscrfonts} bereitgestellt. Damit kann auf die Installtion der % Schriftfamilien für die alten Klassen verzichtet werden. Im Vergleich zu % dieser Installation werden dabei fehlende Glyphen ergänzt und Probleme beim % Kerning behoben. % -% \StopEventually{\PrintIndex\PrintChanges\PrintToDos} +% \begin{macrocode} +%<*package&identify> +\ProvidesPackage{tudscrfonts}[% +%!TUD@Version + package (corporate design fonts)% +] +% +% \end{macrocode} +% +% \iffalse +%<*option> +% \fi +% +% Der Category Code für Anführungsstriche wird auf nicht-aktiv gesetzt für den +% Fall das ein Paket dies gerne anders hätte. +% +% \begin{macrocode} +\newcommand*\tud@catcodes@restore{} +\edef\tud@catcodes@restore{% + \catcode`\noexpand\"\the\catcode`\"\relax% +}% +\@makeother\"% +%\AtEndOfClass{\tud@catcodes@restore} +%\AtEndOfPackage{\tud@catcodes@restore} +% \end{macrocode} % % \iffalse -%<*class&option> +%<*class> % \fi % -% \subsection{% -% Verwendung durch die \TUDScript-Klassen und das Paket \pkg{tudscrfonts}% +% \subsection{^^A +% Nutzung durch die \TUDScript-Klassen und das Paket \pkg{tudscrfonts}^^A % } % % Die Schriften des \TUDCDs werden standardmäßig durch die \TUDScript-Klassen @@ -137,16 +132,18 @@ % \end{macrocode} % % \iffalse -% -%<*package&identify> +% +%<*package> % \fi % % Sollte keine \KOMAScript-Klasse genutzt werden, wird zusätzlich das Paket % \pkg{scrextend} benötigt. % \begin{macrocode} -\ifcsname KOMAClassName\endcsname\else - \RequirePackage{scrextend}[2020/09/21] -\fi +\ifundef{\KOMAClassName}{% + \RequirePackage{scrextend}[% +%!TUD@KOMAVersion + ]% +}{} % \end{macrocode} % Wird das Paket \pkg{tudscrfonts} nach einer der Klassen verwendet, welche die % veralteten Schriftfamilien für \Univers und \DIN definieren, so wird eine @@ -156,9 +153,9 @@ \@for\@tempa:={% tudbook,tudbeamer,tudfax,tudform,tudhaus,tudletter,tudposter,tudmathposter% }\do{% - \@ifclassloaded{\@tempa}{% - \if@tempswa\else\@tempswatrue\let\@tempb\@tempa\fi% - }{}% + \if@tempswa\else + \@ifclassloaded{\@tempa}{\@tempswatrue\let\@tempb\@tempa}{}% + \fi }% \if@tempswa% \@ifpackageloaded{fix-tudscrfonts}{}{% @@ -172,7 +169,8 @@ % \end{macrocode} % % \iffalse -% +% +% %<*body> % \fi % @@ -210,8 +208,9 @@ % wird geprüft, ob diesem mit den entsprechenden Optionen das Bereitstellen der % Mathematikschriften überlassen wurde. In diesem Fall wird eine entsprechende % Warnung an \cs{tud@cdmath@wrn} angehängt. +% \ToDo{\cs{IfPackageAtLeastTF} oder ganz raus}[v2.07] % \begin{macrocode} -\newif\if@tud@x@fontspec@enabled +\tud@newif\if@tud@x@fontspec@enabled \PassOptionsToPackage{no-math}{fontspec} \AfterPackage*{fontspec}{% \@ifpackagelater{fontspec}{2017/01/24}{% @@ -254,6 +253,7 @@ % Bei der Nutzung des Pakets \pkg{unicode-math} kann es ebenfalls zu Problemen % mit den mathematischen Schriften kommen, weshalb auch hier eine Warnung an % \cs{tud@cdmath@wrn} angehängt wird. +% \ToDo{Paket \pkg{unicode-math} zumindest rudimentär unterstützen?}[v2.07] % \begin{macrocode} \AfterPackage*{unicode-math}{% \appto\tud@cdmath@wrn{% @@ -276,9 +276,12 @@ % \changes{v2.04}{2015/04/24}{Erkennung des Paketes \pkg{mweights}}^^A % Das Paket \pkg{mweights} wird geladen, um unterschiedliche Schriftschnitte % für beispielsweise die TypeWriter-Schriften nutzen zu können. +% \ToDo{Paket \pkg{mweights} wurde in Kernel integriert}[v2.07]% +% \ToDo{an neues NFSS anpassen, \cs{DeclareFontSeriesDefault} nutzen}[v2.07]% +% \ToDo{ist \cs{IfFontSeriesContextTF} irgendwo nötig?}[v2.07]% % \begin{macrocode} -\TUD@RecommendPackage{mweights}[2017/03/30]% -\newif\if@tud@x@mweights@enabled +\TUD@RecommendPackage{mweights} +\tud@newif\if@tud@x@mweights@enabled \AfterPackage*{mweights}{\@tud@x@mweights@enabledtrue} % \end{macrocode} % \end{macro}^^A \if@tud@x@mweights@enabled @@ -291,10 +294,6 @@ % Dokumente mit den Schriften \Univers und \DIN nutzen zu können, werden die % entsprechenden Befehle ebenfalls vorgehalten. % -% \begin{macro}{\if@tud@cdfont@fam@exist} -% \changes{v2.06}{2018/07/12}{neu}^^A -% \begin{macro}{\if@tud@cdfont@db@exist} -% \changes{v2.06}{2018/07/12}{neu}^^A % \begin{macro}{\tud@cdfont@fam} % \changes{v2.06}{2018/07/12}{neu}^^A % \begin{macro}{\tud@cdfont@fam@lf} @@ -304,8 +303,6 @@ % \begin{macro}{\tud@cdfont@db} % Zu Beginn werden Schalter und Hilfsmakros sowohl für den Fließtext\dots % \begin{macrocode} -\newif\if@tud@cdfont@fam@exist -\newif\if@tud@cdfont@db@exist \newcommand*\tud@cdfont@fam{opensans-TLF} \newcommand*\tud@cdfont@fam@lf{opensans-TLF} \newcommand*\tud@cdfont@fam@osf{opensans-TOsF} @@ -320,8 +317,6 @@ % \end{macro}^^A \tud@cdfont@fam@osf % \end{macro}^^A \tud@cdfont@fam@lf % \end{macro}^^A \tud@cdfont@fam -% \end{macro}^^A \if@tud@cdfont@db@exist -% \end{macro}^^A \if@tud@cdfont@fam@exist % \begin{macro}{\tud@ttfont@fam} % \changes{v2.06}{2018/07/12}{neu}^^A % \begin{macro}{\tud@ttfont@rb} @@ -342,7 +337,7 @@ % Die TypeWriter-Schrift aus \pkg{roboto-mono} kann nur genutzt werden, wenn % diese tatsächlich auch vorhanden ist. % \begin{macrocode} -\newif\if@tud@ttfont@rb@exist +\tud@newif\if@tud@ttfont@rb@exist \IfFileExists{roboto-mono.sty}{% \@tud@ttfont@rb@existtrue% }{% @@ -360,6 +355,16 @@ % \changes{v2.06b}{2019/07/17}{Verwendung von \cs{tud@if@fdfileexists}}^^A % \begin{macro}{\tud@cdfont@missing} % \changes{v2.05l}{2017/03/29}{neu}^^A +% \begin{macro}{\if@tud@cdfont@fam@exist} +% \changes{v2.06}{2018/07/12}{neu}^^A +% \begin{macro}{\if@tud@cdfont@db@exist} +% \changes{v2.06}{2018/07/12}{neu}^^A +% \begin{macro}{\if@tud@cdmath@fam@exist} +% \changes{v2.06o}{2022/08/01}{neu} +% \begin{macro}{\if@tud@cdmath@db@exist} +% \changes{v2.06o}{2022/08/01}{neu} +% \begin{macro}{\tud@x@mathastext@enc} +% \changes{v2.06a}{2019/07/09}{neu}^^A % Mit \cs{tud@cdfont@check} wird geprüft, ob die Schrift \OpenSans respektive % die veralteten Schriften \Univers und \DIN im OTF-Format respektive im % Type1-Format vorhanden sind. Die Schriftschnitte der \OpenSans werden für @@ -368,6 +373,11 @@ % Nichtvorhandensein der Schriften wird eine Warnung ausgegeben sowie eine % Rückfallebene definiert. % \begin{macrocode} +\tud@newif\if@tud@cdfont@fam@exist +\tud@newif\if@tud@cdfont@db@exist +\tud@newif\if@tud@cdmath@fam@exist +\tud@newif\if@tud@cdmath@db@exist +\newcommand*\tud@x@mathastext@enc{OT1} \newcommand*\tud@cdfont@check{% \if@tud@cdoldfont@active% \tud@cdfont@@check{Univers}{% @@ -375,8 +385,8 @@ LightOblique,Oblique,BoldOblique,BlackOblique% }{\tud@cdfont@fam@lf}{@tud@cdfont@fam@exist}% \tud@cdfont@@check{DIN}{Bold}{\tud@cdfont@db}{@tud@cdfont@db@exist}% - \tud@cdfont@@@check{OT1,OML,OMS}{\tud@cdfont@fam@lf}% - \tud@cdfont@@@check{OT1,OML,OMS}{\tud@cdfont@db}% + \tud@cdfont@@@check{OT1,OML,OMS}{\tud@cdfont@fam@lf}{@tud@cdmath@fam@exist}% + \tud@cdfont@@@check{OT1,OML,OMS}{\tud@cdfont@db}{@tud@cdmath@db@exist}% \else% % \end{macrocode} % Die Version von \pkg{opensans} wird geprüft. Das Paket \pkg{iwona} wird @@ -403,6 +413,29 @@ Light,Regular,SemiBold,Bold,ExtraBold,% LightItalic,Italic,SemiBoldItalic,BoldItalic,ExtraBoldItalic% }{\tud@cdfont@fam@lf,\tud@cdfont@fam@osf}{@tud@cdfont@fam@exist}% +% \end{macrocode} +% Für \OpenSans wird mangels der Kodierungen \val{OML}, \val{OMS} und \val{OMX} +% im Paket \pkg{opensans} zur Deklaration der Mathematikversionen der Befehl +% \cs{MTDeclareVersion} aus dem Paket \pkg{mathastext} genutzt. Dabei wird die +% Kodierung der Mathematikschriften identisch zur genutzten Eingabekodierung +% für den Text gesetzt, da diese in der Version \val{v1.3t} nicht problemfrei +% unabhängig davon gewählt werden kann. +% \begin{macrocode} + \@expandtwoargs\in@{,\encodingdefault,}{,OT1,T1,TU,EU1,EU2,}% + \ifin@% + \let\tud@x@mathastext@enc\encodingdefault% +% \end{macrocode} +% Der Test auf das Vorhandensein der \OpenSans wird nur durchgeführt, wenn es +% sich nicht um eine Unicode"=Eingabekodierung handelt. +% \begin{macrocode} + \@expandtwoargs\in@{,\tud@x@mathastext@enc,}{,TU,EU1,EU2,}% + \ifin@% + \@tud@cdmath@fam@existtrue% + \else% + \tud@cdfont@@@check{\tud@x@mathastext@enc}% + {\tud@cdfont@fam@lf}{@tud@cdmath@fam@exist}% + \fi% + \fi% \fi% } % \end{macrocode} @@ -470,9 +503,10 @@ % \end{macrocode} % Hiermit wird auf Type1-Schriften in den notwendigen Kodierungen für den % Mathematiksatz geprüft. Warnungen für fehlende Schriften werden dem Hook -% \cs{tud@cdmath@wrn} hinzugefügt. +% \cs{tud@cdmath@wrn} hinzugefügt und der im dritten Argument gegebene Schalter +% wird entsprechend gesetzt. % \begin{macrocode} -\newcommand*\tud@cdfont@@@check[2]{% +\newcommand*\tud@cdfont@@@check[3]{% \@tud@res@swatrue% \def\tud@res@a##1##2{% \@tud@res@swafalse% @@ -490,10 +524,14 @@ }% \@for\tud@res@c:={#1}\do{\tud@res@b{\tud@res@c}{#2}}% % \end{macrocode} -% Wurde mindestens eine notwendige nicht gefunden, wird \opt{cdmath=false} -% gesetzt. War diese zuvor aktiv, wird eine Warnung dazu ausgegeben. +% Wurde mindestens eine notwendige Type1-Schrift nicht gefunden, wird die +% Option \opt{cdmath=false} gesetzt. War diese zuvor aktiv, wird eine Warnung +% dazu ausgegeben. % \begin{macrocode} - \if@tud@res@swa\else% + \if@tud@res@swa% + \booltrue{#3}% + \else% + \boolfalse{#3}% \AtBeginDocument{% \if@tud@cdmath@active% %<*class> @@ -506,8 +544,12 @@ Some math font encodings are missing. \MessageBreak% The option `cdmath=false' is executed. You should\MessageBreak% either use this option by yourself or install\MessageBreak% - all necessary fonts with a installation script\MessageBreak% - listed in the manual + \if@tud@cdoldfont@active% + all necessary fonts with a installation script\MessageBreak% + listed in the manual% + \else% + package `opensans'% + \fi% }% \fi% \TUDoptions{cdmath=false}% @@ -525,7 +567,7 @@ not found for `#1' encoding. \MessageBreak% }% \if@tud@x@fontspec@enabled% - \ifstr{\encodingdefault}{#1}{% + \tud@if@strequal{#1}{\encodingdefault}{% \appto\tud@res@a{% It seems, you haven't installed the required\MessageBreak% OTF-font on your system. You should provide\MessageBreak% @@ -543,7 +585,7 @@ \fi% \@tud@res@swafalse% \@for\tud@res@c:=\tud@res@b\do{% - \ifstr{\tud@res@c}{#1}{\@tud@res@swatrue}{}% + \tud@if@strequal{#1}{\tud@res@c}{\@tud@res@swatrue}{}% }% % \end{macrocode} % Wird eine unterstützte Kodierung verwendet, müssen die Schriften installiert @@ -561,8 +603,8 @@ . \MessageBreak% }% \else% - \ifstr{\encodingdefault}{#1}{% - \ifstr{TU}{#1}{% + \tud@if@strequal{#1}{\encodingdefault}{% + \tud@if@strequal{#1}{TU}{% \appto\tud@res@a{% You should either load package `fontspec'\MessageBreak% or % @@ -580,137 +622,33 @@ \appto\tud@res@a{A fallback layout is used}% \edef\tud@res@c{% %<*class> - \etex@unexpanded{\ClassWarning{\TUD@Class@Name}}% + \unexpanded{\ClassWarningNoLine{\TUD@Class@Name}}% % %<*package> - \etex@unexpanded{\PackageWarning{tudscrfonts}}% + \unexpanded{\PackageWarningNoLine{tudscrfonts}}% % - {\tud@res@a} + {\tud@res@a}% }% \xappto#3{\expandonce\tud@res@c}% \endgroup% } % \end{macrocode} +% \end{macro}^^A \tud@x@mathastext@enc +% \end{macro}^^A \if@tud@cdmath@db@exist +% \end{macro}^^A \if@tud@cdmath@fam@exist +% \end{macro}^^A \if@tud@cdfont@db@exist +% \end{macro}^^A \if@tud@cdfont@fam@exist % \end{macro}^^A \tud@cdfont@missing % \end{macro}^^A \tud@cdfont@@@check % \end{macro}^^A \tud@cdfont@@check % \end{macro}^^A \tud@cdfont@check % -% \subsection{Kompatibilität der Schriften} -% \subsubsection{Majuskel-ß für Unicode-Prozessoren} -% -% Es wird für die Majuskelvariante der Glyphe \enquote*{ß} eine Rückfallebene -% (Substitution mit \enquote*{SS}) definiert, da diese für Unicode-Engines -% standardmäßig nicht bereitgestellt wird. Um diese zu erkennen, wird auf die -% gleiche Methodik wie im Paket \pkg{newunicodechar} zurückgegriffen. -% \begin{macrocode} -\begingroup -\catcode`\^=7 -\catcode30=12 -\catcode`\!=12 -\edef\tud@reserved{\@gobble^^^^0021} -\expandafter\endgroup -% \end{macrocode} -% Wurde eine Unicode-Engine erkannt (|^^^^0021| wird als ein Token gelesen), -% dann werden die Kodierungen für kleines und großes \enquote*{ß} dahingehend -% angepasst, dass diese \enquote*{ss} bzw. \enquote*{SS} verwenden, wenn die -% entsprechende Glyphe nicht vorhanden ist. -% \begin{macrocode} -\ifx\tud@reserved\@empty\relax - \RequirePackage{newunicodechar}[2012/11/12]% - \uccode"00DF="1E9E% - \lccode"1E9E="00DF% - \newunicodechar{^^^^00df}{\iffontchar\font"00DF \symbol{"00DF}\else ss\fi}% - \newunicodechar{^^^^1e9e}{\iffontchar\font"1E9E \symbol{"1E9E}\else SS\fi}% -\fi -% \end{macrocode} -% -% \subsubsection{Ausrichtung von Überschriften und das Paket \pkg{ragged2e}} -% -% \begin{macro}{\tud@raggedright} -% \begin{macro}{\tud@RaggedRight} -% Die Überschriften sollen laut \CD linksbündig und ohne Silbentrennung gesetzt -% werden. Normalerweise ist das dies beim linksbündigen Satz bei \LaTeX{} der -% Fall. Allerdings ist es mit dem Paket \pkg{ragged2e} möglich, das Verhalten -% für den Flattersatz zu ändern und die Silbentrennung zu aktivieren. Mit der -% Option \opt{newcommands} werden dabei die originalen Befehle überschrieben, -% vorher jedoch in \cs{LaTeX\dots} gesichert. Diese Makros dienen dazu, die -% Überschriften in jedem Fall~-- auch bei der Verwendung von \pkg{ragged2e} mit -% der Option \opt{newcommands}~-- ohne Trennungen zu setzen. -% \begin{macrocode} -\newcommand*\tud@raggedright{\raggedright} -\newcommand*\tud@RaggedRight{\raggedright} -\AfterPackage*{ragged2e}{% - \ifundef{\LaTeXraggedright}{}{% - \renewcommand*\tud@raggedright{\LaTeXraggedright}% - }% - \renewcommand*\tud@RaggedRight{\RaggedRight}% -} -% \end{macrocode} -% \end{macro}^^A \tud@RaggedRight -% \end{macro}^^A \tud@raggedright -% -% \subsubsection{Anpassungen für das Paket \pkg{siunitx}} -% -% \begin{macro}{\lseries} -% \begin{macro}{\if@tud@x@siunitx@enabled} -% \changes{v2.05m}{2017/05/29}{neu} -% Das Paket \pkg{siunitx} nutzt den Befehl \cs{lseries} für den Fall, dass für -% den Fließtext eine Schrift die Serie \val{l} verwendet. Dem wird hier -% Rechnung getragen. Außerdem muss bei der Auswahl der Schriften evtl. auf das -% Paket reagiert werden, weil es sich bei der Definition der Schriften für den -% Mathematikmodus auf \cs{familydefault} bzw. \cs{rmfamily} verlässt. -% \begin{macrocode} -\newif\if@tud@x@siunitx@enabled -\AfterAtEndOfPackage*{siunitx}{% - \@tud@x@siunitx@enabledtrue% - \providecommand*\lseries{\fontseries{l}\selectfont}% -} -% \end{macrocode} -% \end{macro}^^A \if@tud@x@siunitx@enabled -% \end{macro}^^A \lseries -% -% \subsubsection{Anpassungen für die Klasse \cls{beamer}} -% -% Die \cls{beamer}-Klasse lädt standardmäßig serifenlose Mathematikschriften. -% Dies soll verhindert werden, damit die Auswahl über die Option \opt{cdmath} -% erfolgen kann. -% \begin{macrocode} -%<*package> -\AfterClass*{beamer}{\usefonttheme[onlymath]{serif}} -% -% \end{macrocode} -% -% \subsubsection{Mathematikschriften in Verbindung mit dem Paket \pkg{bm}} -% -% \begin{macro}{\if@tud@x@bm@requested} -% Das Paket \pkg{bm} stellt den Befehl \cs{bm} für fette und kursive Symbole im -% Mathematiksatz bereit. Damit dies funktioniert, muss das Laden des Paketes -% auf das Ende der Präambel verzögert werden, um zuvor alle Einstellungen für -% die mathematischen Symbole vornehmen zu können. -% \begin{macrocode} -\newif\if@tud@x@bm@requested -%<*package> -\@ifpackageloaded{bm}{% - \PackageWarning{tudscrfonts}{% - Package `bm' must be loaded after `tudscrfonts'. \MessageBreak% - Otherwise the functionality can not be guaranteed% - }% -}{% -% -\PreventPackageFromLoading[\@tud@x@bm@requestedtrue]{bm} -%<*package> -} -% -% \end{macrocode} -% \end{macro}^^A \if@tud@x@bm@requested -% % \iffalse % %<*option> % \fi % -% \subsection{Schriftauswahl und -optionen} +% \subsection{Optionen und Befehle zur Schriftauswahl} % % Hier werden die Optionen und Befehle zur Schriftauswahl definiert. % @@ -738,15 +676,15 @@ % der Schrift geändert werden. Zusätzlich lässt sich die Verwendung von % Minuskelziffern im Fließtext aktivieren. Außerdem kann eingestellt werden, ob % für den Mathematiksatz serifenlose Schriften zum Einsatz kommen sollen. -% \ToDo{% +% \ToDo{ % Option evtl. überarbeiten und nicht mehr im Dokument zulassen; % das macht alles um einiges einfacher, siehe \opt{cdoldfont}, \opt{cdmath} % }[v2.07] % \begin{macrocode} -\newif\if@tud@cdfont@active -\newif\if@tud@cdfont@heavy -\newif\if@tud@cdfont@ultrabold -\newif\if@tud@cdfont@lining +\tud@newif\if@tud@cdfont@active +\tud@newif\if@tud@cdfont@heavy +\tud@newif\if@tud@cdfont@ultrabold +\tud@newif\if@tud@cdfont@lining \@tud@cdfont@liningtrue \TUD@key{cdfont}[true]{% \TUD@set@numkey{cdfont}{@tempa}{% @@ -843,7 +781,7 @@ \or% math \TUDoptions{cdmath=true}% % \end{macrocode} -% Die Neigung der großen griechischen Buchstaben. +% Die Neigung der griechischen Majuskeln. % \begin{macrocode} \or% uprightgreek \TUDoptions{slantedgreek=false}% @@ -875,14 +813,11 @@ % dass es sich bei diesem um die gewünschte Schriftgröße handelt. % \begin{macrocode} \else% - \tud@lowerstring\tud@res@a{#1}% - \ifdimen{\tud@res@a}{% - \ifdim\tud@res@a>\z@\relax% - \TUDoptions{fontsize=#1}% - \tud@cdfont@activate% - \FamilyKeyStateProcessed% - \fi% - }{}% + \TUD@set@dimkey{cdfont}{\@tempa}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \TUDoptions{fontsize=#1}% + \tud@cdfont@activate% + \fi% \fi% } \newcommand*\tud@cdfont@activate{% @@ -930,8 +865,8 @@ % Schriftauswahl für die \TUDScript-Klassen oder das Paket \pkg{tudscrfonts} % entsprechend angepasst. % \begin{macrocode} -\newif\if@tud@cdoldfont@active -\newif\if@tud@cdoldfont@nodin +\tud@newif\if@tud@cdoldfont@active +\tud@newif\if@tud@cdoldfont@nodin \TUD@key{cdoldfont}[true]{% \TUD@set@numkey{cdoldfont}{@tempa}{% \TUD@bool@numkey,% @@ -944,12 +879,12 @@ \@tud@cdoldfont@activefalse% \@tud@cdoldfont@nodintrue% % \end{macrocode} -% Achtung, nicht verwirren lassen! Mit \opt{cdoldfonts=false} kann beim Laden +% Achtung, nicht verwirren lassen! Mit \opt{cdoldfont=false} kann beim Laden % der Klasse die Verwendung der alten Schriften deaktiviert werden. Dabei wird % nicht beeinflusst, ob die Schriften des \CDs (\opt{cdfont=true/false}) denn % überhaupt zum Einsatz kommen. Nachdem die Klasse geladen wurde, wird jedoch -% \opt{cdoldfonts} eingefroren, ist diese aktiv, kann sie ab diesem Zeitpunkt -% nicht mehr deaktiviert werden. Dann kann mit \opt{cdoldfonts=false} quasi das +% \opt{cdoldfont} eingefroren, ist diese aktiv, kann sie ab diesem Zeitpunkt +% nicht mehr deaktiviert werden. Dann kann mit \opt{cdoldfont=false} quasi das % gleiche Verhalten wie mit \opt{cdfont=false} erzeugt werden. % \begin{macrocode} \if@tud@cdoldfont@active% @@ -973,6 +908,7 @@ \TUDoptions{cdfont=#1}% \fi% } +\TUD@key{cdoldfonts}[true]{\TUDoptions{cdoldfont=#1}} %<*class> \AtEndOfClass% % @@ -1039,10 +975,15 @@ % für das Laden der \TUDScript-Klasse ein Schlüssel definiert, der den Wert an % \KOMAScript{} weiterreicht. % \begin{macrocode} -\newif\if@tud@x@scr@fontsize@set +%<*class> +\tud@newif\if@tud@x@scr@fontsize@set +% \TUD@key{fontsize}{% - \TUD@set@dimenkey{fontsize}{\@tempa}{#1}% + \TUD@set@dimkey{fontsize}{\@tempa}{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \ifdim\@tempa<\p@\relax% + \FamilyKeyStateUnknownValue% + \else% % \end{macrocode} % Für das Paket wird geprüft, ob die gerade abgearbeitete Option global als % Klassenoption angegeben wurde. Für den Fall, dass dies nicht so ist~-- die @@ -1050,20 +991,39 @@ % dem Hinweis auf das vorgeschlagene Vorgehen ausgegeben. % \begin{macrocode} %<*package> - \@expandtwoargs\in@{,\CurrentOption,}{,\@globaloptionslist,}% - \ifin@\else% - \edef\tud@res@a{% - \noexpand\PackageWarning{tudscrfonts}% - {% - The key `\CurrentOption' should only be\MessageBreak% - used as class option% + \@expandtwoargs\in@{,\CurrentOption,}{,\@globaloptionslist,}% + \ifin@\else% + \edef\tud@res@a{% + \noexpand\PackageWarning{tudscrfonts}% + {% + The key `\CurrentOption' should only be\MessageBreak% + used as class option% + }% }% - }% - \expandafter\AtEndOfPackage\expandafter{\tud@res@a}% - \fi + \expandafter\AtEndOfPackage\expandafter{\tud@res@a}% + \fi% % - \@tud@x@scr@fontsize@settrue% - \TUD@KOMAoptions{fontsize=#1}% +%<*class> + \@tud@x@scr@fontsize@settrue% +% + \TUD@KOMAoptions{fontsize=#1}% + \fi% + \fi% +% \end{macrocode} +% Für ungültige Werte wird eine Warnung ausgegeben. +% \begin{macrocode} + \ifx\FamilyKeyState\FamilyKeyStateUnknownValue% +%<*class> + \ClassWarningNoLine{\TUD@Class@Name}% +% +%<*package> + \PackageWarningNoLine{tudscrfonts}% +% + {% + The value for option `fontsize' must be a dimension\MessageBreak% + and at least 1pt but `#1' was given% + }% + \FamilyKeyStateProcessed% \fi% } %<*class> @@ -1076,8 +1036,9 @@ \RelaxFamilyKey{TUD}{fontsize}% \DefineFamilyMember{KOMA}% \DefineFamilyKey{KOMA}{fontsize}{% - \@tud@x@scr@fontsize@settrue% + \FamilyKeyStateUnknownValue% %<*class> + \@tud@x@scr@fontsize@settrue% \ClassWarning{\TUD@Class@Name}% % %<*package> @@ -1087,8 +1048,7 @@ The key `fontsize=#1' should only be\MessageBreak% used as class option% }% - \TUD@SpecialOptionAtDocument{tud@font@set}% - \FamilyKeyStateProcessed% + \TUD@SpecialOptionAtDocument{tud@relspacing@set}% }% } % \end{macrocode} @@ -1096,15 +1056,15 @@ % \end{option}^^A fontsize % \begin{option}{relspacing} % \changes{v2.05}{2015/12/17}{neu}^^A +% \changes{v2.06o}{2022/08/08}{stärkerer Einfluss der Schriftgröße}^^A % \begin{macro}{\if@tud@relspacing} % \changes{v2.05}{2015/12/17}{neu}^^ % Die Option \opt{relspacing} setzt einige Abstände und Längen in Abhängigkeit % der aktuellen Grundschriftgröße, wenn sie aktiviert wurde. Die verwendete % Grundschriftgröße kann mit der \KOMAScript-Option \opt{fontsize} eingestellt -% werden. Die Definiton der Längen wird durch das Makro \cs{tud@font@skip@set} -% vorgenommen. +% werden. Die Längendefinition erfolgt durch das Makro \cs{tud@relspacing@set}. % \begin{macrocode} -\newif\if@tud@relspacing +\tud@newif\if@tud@relspacing \TUD@key{relspacing}[true]{% \TUD@set@numkey{relspacing}{@tempa}{% \TUD@bool@numkey,% @@ -1117,7 +1077,7 @@ \or% true \@tud@relspacingtrue% \fi% - \TUD@SpecialOptionAtDocument{tud@font@skip@set}% + \TUD@SpecialOptionAtDocument{tud@relspacing@set}% \fi% } % \end{macrocode} @@ -1189,7 +1149,7 @@ }% \edef\tud@res@a{% \endgroup% - \noexpand\DeclareRobustCommand% + \noexpand\renewrobustcmd*% \expandafter\noexpand\csname #1family\endcsname{% \expandafter\noexpand\csname tud@x@fontspec@fam@#2\endcsname% }% @@ -1227,13 +1187,15 @@ % des \CDs aktiviert. Dabei werden die Pakete \pkg{fontspec} und \pkg{mweights} % beachtet. % \begin{macrocode} -\newcommand*\tud@font@set{% +\newcommand*\tud@font@set[1][\tud@cdfont@wrn]{% % \end{macrocode} -% Ist die Verwendung der Schriften des \CDs gewünscht, werden die Schnitte der -% Standardschriften vorher vorher gesichert, um diese später vollständig -% wiederherstellen zu können. +% Ist die Verwendung der Schriften des \CDs gewünscht, obwohl diese nicht +% installiert sind, werden die entsprechenden Warnungen ausgegeben. Danach +% werden die Schnitte der Standardschriften gesichert, um diese später +% vollständig wiederherstellen zu können. % \begin{macrocode} \if@tud@cdfont@active% + #1% \tud@cs@store{rmdefault}% \tud@cs@store{sfdefault}% \tud@cs@store{ttdefault}% @@ -1263,16 +1225,6 @@ \tud@cs@store{ttfamily}% \fi% % \end{macrocode} -% Zunächst werden die Standardwerte für die Schriftfamilien gesetzt. -% \begin{macrocode} - \renewcommand*\rmdefault{\sfdefault}% - \renewcommand*\updefault{n}% - \renewcommand*\itdefault{it}% - \renewcommand*\sldefault{sl}% - \renewcommand*\familydefault{\sfdefault}% - \renewcommand*\seriesdefault{\mddefault}% - \renewcommand*\shapedefault{\updefault}% -% \end{macrocode} % Danach erfolgt die Definition der Schriften des \CDs. % \begin{macrocode} \tud@cdfont@set% @@ -1332,7 +1284,7 @@ % definiert. Danach wird gewählte Standardschrift aktiviert und für die Klassen % das Layout erneuert. % \begin{macrocode} - \tud@font@skip@set% + \tud@relspacing@set% \normalfont\selectfont% %<*class> \tud@cd@process% @@ -1365,6 +1317,16 @@ % Hiermit erfolgt die eigentliche Auswahl der Schriftfamilien für das \CD. % \begin{macrocode} \newcommand*\tud@cdfont@set{% +% \end{macrocode} +% Zunächst werden die Standardwerte für die Schriftfamilien gesetzt. +% \begin{macrocode} + \renewcommand*\rmdefault{\sfdefault}% + \renewcommand*\updefault{n}% + \renewcommand*\itdefault{it}% + \renewcommand*\sldefault{sl}% + \renewcommand*\familydefault{\sfdefault}% + \renewcommand*\seriesdefault{\mddefault}% + \renewcommand*\shapedefault{\updefault}% \if@tud@cdfont@fam@exist% \if@tud@cdfont@lining% \let\tud@cdfont@fam\tud@cdfont@fam@lf% @@ -1385,11 +1347,6 @@ \fi% \tud@cdfont@@set% \fi% -% \end{macrocode} -% Sollte versucht werden, die Schriften zu aktivieren, obwohl diese nicht -% installiert sind, werden die entsprechenden Warnungen ausgegeben. -% \begin{macrocode} - \tud@cdfont@wrn% } \newcommand*\tud@cdfont@md{m} \newcommand*\tud@cdfont@bf{b} @@ -1463,13 +1420,13 @@ } % \end{macrocode} % Die an \cs{tud@cdfont@declare@symb} übergebenen Letter für Auswahlbefehle -% erhalten \cs{tud@cdfont@symbol@\dots} als Präfix. Da so der ursprüngliche +% erhalten |\tud@cdfont@symbol@...| als Präfix. Da so der ursprüngliche % Befehlsname verändert wird, würde dieser Befehlsname auch verwendet werden, % wenn dieser in einem fragilen Kontext genutzt wird (siehe \cs{@changed@cmd}). % Deshalb wird im Anschluss der neue Befehl selbst robust definiert, damit % eine spätere Expansion nach der Zuweisung mit \cs{tud@cs@letltx} nicht in -% \cs{tud@cdfont@symbol@\meta{symbol}} resultiert sondern in jedem Fall -% \cs{\meta{symbol}} erhalen bleibt. +% |\tud@cdfont@symbol@|\meta{Letter} resultiert sondern in jedem Fall +% |\|\meta{Letter} erhalten bleibt. % \begin{macrocode} \newcommand*\tud@DeclareTextSymbol[4]{% \begingroup% @@ -1501,7 +1458,7 @@ % welche mit \cs{tud@cdfont@declare@symb} deklariert wurden, und den normalen % gewechselt werden. % \begin{macrocode} -\newtoks\tud@cdfont@symbols@toks +\tud@newtoks\tud@cdfont@symbols@toks \newcommand*\tud@cdfont@symbols@set{% % \end{macrocode} % Die Sicherung der alten Definitionen erfolgt nur einmalig. Die Liste der @@ -1537,6 +1494,7 @@ % \begin{macro}{\tud@cdfont@declare@textsymb} % \changes{v2.06g}{2020/06/18}{neu}^^A % Die Definition der Textsymbole für die \val{TS1}-Kodierung. +% \ToDo{weitere Symbole (\cs{textohm} etc.) der Open Sans hinzufügen}[v2.07] % \begin{macrocode} \newcommand*\tud@cdfont@declare@textsymb{% \tud@cdfont@declare@symb{textleftarrow}{TS1}{iwona}{24}% @@ -1548,10 +1506,11 @@ } % \end{macrocode} % \end{macro}^^A \tud@cdfont@declare@textsymb -% \begin{macro}{\tud@font@skip@set} +% \begin{macro}{\tud@relspacing@set} % \changes{v2.04}{2015/02/17}{neu}^^A -% \begin{macro}{\tud@font@skip@@set} +% \begin{macro}{\tud@relspacing@@set} % \changes{v2.04}{2015/03/27}{neu}^^A +% \changes{v2.06o}{2022/08/08}{\cs{abovedisplayskip} als Referenz}^^A % \begin{macro}{\smallskipamount} % \changes{v2.04}{2015/04/24}{Wert abhängig von der Schriftgröße}^^A % \begin{macro}{\medskipamount} @@ -1567,40 +1526,58 @@ % Abstände angepasst, die bei den \KOMAScript-Klassen nicht abhängig von dieser % sind. % \begin{macrocode} -\newcommand*\tud@font@skip@set{% +\newcommand*\tud@relspacing@set{% % \end{macrocode} % Es werden die Standardeinstellungen abhängig von \opt{cdfont} entweder % wiederhergestellt oder gesichert und neu definiert. % \begin{macrocode} \if@tud@relspacing% - \tud@skip@store{smallskipamount}% - \tud@skip@store{medskipamount}% - \tud@skip@store{bigskipamount}% - \tud@skip@store{abovecaptionskip}% - \tud@skip@store{belowcaptionskip}% - \tud@skip@store{columnsep}% - \tud@font@skip@@set% + \tud@cslength@store{smallskipamount}% + \tud@cslength@store{medskipamount}% + \tud@cslength@store{bigskipamount}% + \tud@cslength@store{abovecaptionskip}% + \tud@cslength@store{belowcaptionskip}% + \tud@cslength@store{columnsep}% + \tud@relspacing@@set% \else% - \tud@skip@restore{smallskipamount}% - \tud@skip@restore{medskipamount}% - \tud@skip@restore{bigskipamount}% - \tud@skip@restore{abovecaptionskip}% - \tud@skip@restore{belowcaptionskip}% - \tud@skip@restore{columnsep}% + \tud@cslength@restore{smallskipamount}% + \tud@cslength@restore{medskipamount}% + \tud@cslength@restore{bigskipamount}% + \tud@cslength@restore{abovecaptionskip}% + \tud@cslength@restore{belowcaptionskip}% + \tud@cslength@restore{columnsep}% \fi% } % \end{macrocode} % Hiermit erfolgt das eigentliche Setzen der Abstände. % \begin{macrocode} -\newcommand*\tud@font@skip@@set{% - \smallskipamount=\partopsep% - \medskipamount=\partopsep% - \multiply\medskipamount by 2% - \bigskipamount=\partopsep% - \multiply\bigskipamount by 4% - \tud@skip@set{abovecaptionskip}{\dimexpr\bigskipamount*5/6\relax}% - \tud@skip@set{belowcaptionskip}{\z@}% - \tud@skip@set{columnsep}{1.1\baselineskip}% +\newcommand*\tud@relspacing@@set{% + \tud@if@v@lower{2.06}{% + \bigskipamount=\partopsep% + \multiply\bigskipamount by 4% + }{% + \begingroup% + \tud@setdim\@tempdima{\dimexpr\abovedisplayskip\relax}% + \tud@setdim\@tempdimb{\@tempdima/3}% + \edef\tud@res@a{% + \endgroup% + \noexpand\tud@setglue\noexpand\bigskipamount{% + \the\@tempdima\@plus\the\@tempdimb\@minus\the\@tempdimb% + }% + }% + \tud@res@a% + }% + \medskipamount=\bigskipamount% + \divide\medskipamount by 2% + \smallskipamount=\bigskipamount% + \divide\smallskipamount by 4% + \tud@if@lengthregister{\abovecaptionskip}{% + \tud@setdim\abovecaptionskip{1\bigskipamount*5/6}% + }{}% + \tud@if@lengthregister{\belowcaptionskip}{% + \tud@setdim\belowcaptionskip{\z@}% + }{}% + \tud@setdim\columnsep{1\baselineskip*11/10}% } % \end{macrocode} % \end{macro}^^A \columnsep @@ -1609,10 +1586,14 @@ % \end{macro}^^A \bigskipamount % \end{macro}^^A \medskipamount % \end{macro}^^A \smallskipamount -% \end{macro}^^A \tud@font@skip@@set -% \end{macro}^^A \tud@font@skip@set +% \end{macro}^^A \tud@relspacing@@set +% \end{macro}^^A \tud@relspacing@set % \begin{macro}{\tud@cdfont@init} % \changes{v2.04}{2015/03/10}{neu}^^A +% \begin{macro}{\tud@cdfont@@init} +% \changes{v2.06o}{2022/08/01}{neu} +% \begin{macro}{\tud@cdfont@@@init} +% \changes{v2.06o}{2022/08/01}{neu} % \begin{macro}{\cdfontln} % \changes{v2.06}{2018/06/29}{neu}^^A % \begin{macro}{\cdfontrn} @@ -1654,9 +1635,16 @@ % \begin{macro}{\textcdxs} % \changes{v2.06}{2018/06/29}{neu}^^A % Das Makro \cs{tud@cdfont@init} wird für die Defintion aller Befehle zur -% Auswahl der Schriften des \CDs verwendet. +% Auswahl der Schriften des \CDs verwendet. Dabei erfolgt die Definition der +% Schriften selbst mit \cs{tud@cdfont@@init} und das Festlegen der Befehle zur +% expliziten Schriftauswahl mit \cs{tud@cdfont@@@init}. +% \ToDo{Condensed Schriften mit neuer Open Sans?}[v2.07] % \begin{macrocode} \newcommand*\tud@cdfont@init{% + \tud@cdfont@@init% + \tud@cdfont@@@init% +} +\newcommand*\tud@cdfont@@init{% % \end{macrocode} % Zur Nutztung der OTF"~Schriften werden mit \cs{tud@x@fontspec@init} alle % benötigten Schriftfamilien mit ihren einzelnen Schriftschnitten definiert. @@ -1721,36 +1709,41 @@ % definiert. Diese können so im Dokument unabhängig von der Option % \opt{cdfont} genutzt werden. % \begin{macrocode} - \newrobustcmd*\cdfontln{\usefont{\encodingdefault}{\tud@cdfont@fam}{l}{n}} - \newrobustcmd*\cdfontrn{\usefont{\encodingdefault}{\tud@cdfont@fam}{m}{n}} - \newrobustcmd*\cdfontsn{\usefont{\encodingdefault}{\tud@cdfont@fam}{sb}{n}} - \newrobustcmd*\cdfontbn{\usefont{\encodingdefault}{\tud@cdfont@fam}{b}{n}} - \newrobustcmd*\cdfontxn{\usefont{\encodingdefault}{\tud@cdfont@fam}{eb}{n}} - \newrobustcmd*\cdfontli{\usefont{\encodingdefault}{\tud@cdfont@fam}{l}{it}} - \newrobustcmd*\cdfontri{\usefont{\encodingdefault}{\tud@cdfont@fam}{m}{it}} - \newrobustcmd*\cdfontsi{\usefont{\encodingdefault}{\tud@cdfont@fam}{sb}{it}} - \newrobustcmd*\cdfontbi{\usefont{\encodingdefault}{\tud@cdfont@fam}{b}{it}} - \newrobustcmd*\cdfontxi{\usefont{\encodingdefault}{\tud@cdfont@fam}{eb}{it}} + \def\tud@res@a##1##2##3{% + \newrobustcmd*##1{\usefont{\f@encoding}{\tud@cdfont@fam}{##2}{##3}}% + }% + \tud@res@a\cdfontln{l}{n}% + \tud@res@a\cdfontrn{m}{n}% + \tud@res@a\cdfontsn{sb}{n}% + \tud@res@a\cdfontbn{b}{n}% + \tud@res@a\cdfontxn{eb}{n}% + \tud@res@a\cdfontli{l}{it}% + \tud@res@a\cdfontri{m}{it}% + \tud@res@a\cdfontsi{sb}{it}% + \tud@res@a\cdfontbi{b}{it}% + \tud@res@a\cdfontxi{eb}{it}% % \end{macrocode} % Sind die notwendigen Schriften nicht installiert, werden die Schalter für die % Rückfallebene so definiert, dass diese eine Warnung ausgeben. % \begin{macrocode} \else% - \tud@cdfont@fallback\cdfontln{OpenSans-Light}{md}{up} - \tud@cdfont@fallback\cdfontrn{OpenSans-Regular}{md}{up} - \tud@cdfont@fallback\cdfontsn{OpenSans-SemiBold}{md}{up} - \tud@cdfont@fallback\cdfontbn{OpenSans-Bold}{bf}{up} - \tud@cdfont@fallback\cdfontxn{OpenSans-ExtraBold}{bf}{up} - \tud@cdfont@fallback\cdfontli{OpenSans-LightItalic}{md}{it} - \tud@cdfont@fallback\cdfontri{OpenSans-Italic}{md}{it} - \tud@cdfont@fallback\cdfontsi{OpenSans-SemiBoldItalic}{md}{it} - \tud@cdfont@fallback\cdfontbi{OpenSans-BoldItalic}{bf}{it} - \tud@cdfont@fallback\cdfontxi{OpenSans-ExtraBoldItalic}{bf}{it} + \tud@cdfont@fallback\cdfontln{OpenSans-Light}{md}{up}% + \tud@cdfont@fallback\cdfontrn{OpenSans-Regular}{md}{up}% + \tud@cdfont@fallback\cdfontsn{OpenSans-SemiBold}{md}{up}% + \tud@cdfont@fallback\cdfontbn{OpenSans-Bold}{bf}{up}% + \tud@cdfont@fallback\cdfontxn{OpenSans-ExtraBold}{bf}{up}% + \tud@cdfont@fallback\cdfontli{OpenSans-LightItalic}{md}{it}% + \tud@cdfont@fallback\cdfontri{OpenSans-Italic}{md}{it}% + \tud@cdfont@fallback\cdfontsi{OpenSans-SemiBoldItalic}{md}{it}% + \tud@cdfont@fallback\cdfontbi{OpenSans-BoldItalic}{bf}{it}% + \tud@cdfont@fallback\cdfontxi{OpenSans-ExtraBoldItalic}{bf}{it}% \fi% +} % \end{macrocode} % Außerdem werden für die Schriften noch die entsprechenden Textauswahlbefehle % bereitgestellt. % \begin{macrocode} +\newcommand*\tud@cdfont@@@init{% \newcommand*\textcdln{}% \newcommand*\textcdrn{}% \newcommand*\textcdsn{}% @@ -1793,6 +1786,8 @@ % \end{macro}^^A \cdfontsn % \end{macro}^^A \cdfontrn % \end{macro}^^A \cdfontln +% \end{macro}^^A \tud@cdfont@@@init +% \end{macro}^^A \tud@cdfont@@init % \end{macro}^^A \tud@cdfont@init % \begin{macro}{\univln} % \begin{macro}{\univrn} @@ -1817,7 +1812,7 @@ % Die Definition der Befehle der veralteten Schriften des \CDs. % \begin{macrocode} \if@tud@cdoldfont@active - \renewcommand*\tud@cdfont@init{% + \renewcommand*\tud@cdfont@@init{% \if@tud@cdfont@fam@exist% \if@tud@x@fontspec@enabled% \def\tud@res@a{% @@ -1838,27 +1833,30 @@ % \end{macrocode} % Die Schalter zur expliziten Auswahl für die \Univers-Schriftschnitte. % \begin{macrocode} - \newrobustcmd*\univln{\usefont{\encodingdefault}{\tud@cdfont@fam}{l}{n}} - \newrobustcmd*\univrn{\usefont{\encodingdefault}{\tud@cdfont@fam}{m}{n}} - \newrobustcmd*\univbn{\usefont{\encodingdefault}{\tud@cdfont@fam}{b}{n}} - \newrobustcmd*\univxn{\usefont{\encodingdefault}{\tud@cdfont@fam}{eb}{n}} - \newrobustcmd*\univls{\usefont{\encodingdefault}{\tud@cdfont@fam}{l}{sl}} - \newrobustcmd*\univrs{\usefont{\encodingdefault}{\tud@cdfont@fam}{m}{sl}} - \newrobustcmd*\univbs{\usefont{\encodingdefault}{\tud@cdfont@fam}{b}{sl}} - \newrobustcmd*\univxs{\usefont{\encodingdefault}{\tud@cdfont@fam}{eb}{sl}} + \def\tud@res@a##1##2##3{% + \newrobustcmd*##1{\usefont{\f@encoding}{\tud@cdfont@fam}{##2}{##3}}% + }% + \tud@res@a\univln{l}{n}% + \tud@res@a\univrn{m}{n}% + \tud@res@a\univbn{b}{n}% + \tud@res@a\univxn{eb}{n}% + \tud@res@a\univls{l}{it}% + \tud@res@a\univrs{m}{it}% + \tud@res@a\univbs{b}{it}% + \tud@res@a\univxs{eb}{it}% % \end{macrocode} % Sind die notwendigen Schriften nicht installiert, werden die Schalter für die % Rückfallebene so definiert, dass diese eine Warnung ausgeben. % \begin{macrocode} \else% - \tud@cdfont@fallback\univln{Univers-Light}{md}{up} - \tud@cdfont@fallback\univrn{Univers}{md}{up} - \tud@cdfont@fallback\univbn{Univers-Bold}{bf}{up} - \tud@cdfont@fallback\univxn{Univers-Black}{bf}{up} - \tud@cdfont@fallback\univls{Univers-LightOblique}{md}{sl} - \tud@cdfont@fallback\univrs{Univers-Oblique}{md}{sl} - \tud@cdfont@fallback\univbs{Univers-BoldOblique}{bf}{sl} - \tud@cdfont@fallback\univxs{Univers-BlackOblique}{bf}{sl} + \tud@cdfont@fallback\univln{Univers-Light}{md}{up}% + \tud@cdfont@fallback\univrn{Univers}{md}{up}% + \tud@cdfont@fallback\univbn{Univers-Bold}{bf}{up}% + \tud@cdfont@fallback\univxn{Univers-Black}{bf}{up}% + \tud@cdfont@fallback\univls{Univers-LightOblique}{md}{it}% + \tud@cdfont@fallback\univrs{Univers-Oblique}{md}{it}% + \tud@cdfont@fallback\univbs{Univers-BoldOblique}{bf}{it}% + \tud@cdfont@fallback\univxs{Univers-BlackOblique}{bf}{it}% \fi% % \end{macrocode} % Außerdem werden für die Schriften noch die entsprechenden Textauswahlbefehle @@ -1893,26 +1891,6 @@ \newrobustcmd*\cdfontsi{\univrs}% \newrobustcmd*\cdfontbi{\univbs}% \newrobustcmd*\cdfontxi{\univxs}% - \newcommand*\textcdln{}% - \newcommand*\textcdrn{}% - \newcommand*\textcdsn{}% - \newcommand*\textcdbn{}% - \newcommand*\textcdxn{}% - \newcommand*\textcdli{}% - \newcommand*\textcdri{}% - \newcommand*\textcdsi{}% - \newcommand*\textcdbi{}% - \newcommand*\textcdxi{}% - \DeclareTextFontCommand\textcdln{\cdfontln}% - \DeclareTextFontCommand\textcdrn{\cdfontrn}% - \DeclareTextFontCommand\textcdsn{\cdfontsn}% - \DeclareTextFontCommand\textcdbn{\cdfontbn}% - \DeclareTextFontCommand\textcdxn{\cdfontxn}% - \DeclareTextFontCommand\textcdli{\cdfontli}% - \DeclareTextFontCommand\textcdri{\cdfontri}% - \DeclareTextFontCommand\textcdsi{\cdfontsi}% - \DeclareTextFontCommand\textcdbi{\cdfontbi}% - \DeclareTextFontCommand\textcdxi{\cdfontxi}% % \end{macrocode} % Anschließend wird für \DIN äquivalent verfahren. % \begin{macrocode} @@ -1937,7 +1915,7 @@ % Bei der Schriftauswahl wird die entsprechende Mathematikschrift aktiviert. % \begin{macrocode} \newrobustcmd*\tud@db{% - \usefont{\encodingdefault}{\tud@cdfont@db}{b}{n}% + \usefont{\f@encoding}{\tud@cdfont@db}{b}{n}% \if@tud@cdmath@active\mathversion{tuddin}\fi% }% \newrobustcmd*\dinbn{\tud@db}% @@ -1956,7 +1934,7 @@ \PackageWarning{tudscrfonts}% % {% - Font `DIN-Bold' is not available and therefore\MessageBreak + Font `DIN-Bold' is not available and therefore\MessageBreak% can not be used for headings% }% \global\let\tud@db@wrn\relax% @@ -2018,8 +1996,6 @@ % \end{macro}^^A \tud@cdfont@fallback % \begin{macro}{\cdfont} % \changes{v2.04}{2015/03/04}{neu}^^A -% \begin{macro}{\tudfont} -% \changes{v2.04}{2015/04/24}{\cls{tudmathposter} wird unterstützt}^^A % \begin{macro}{\textcd} % \changes{v2.04}{2015/03/04}{neu}^^A % \begin{macro}{\tud@cdfont@get} @@ -2031,11 +2007,10 @@ % \begin{macro}{\tud@cdfont@@trim} % \changes{v2.04}{2015/03/04}{neu}^^A % Die Klassen \cls{tudposter} und \cls{tudmathposter} definieren den Befehl -% \cs{tudfont}, mit welchem die Schriften des \CDs der \TnUD auch mit Klarnamen +% \cs{tudfont}, mit welchem die Schriften des \TUDCDs auch mit Klarnamen % ausgewählt werden können. Zur Kompatibilität wird der Befehl \cs{cdfont} % definiert, welcher die gleiche Funktionalität bereitstellt. Zusätzlich wird -% der Befehl \cs{textcd} bereitgestellt, der die Auswahl der Schrift als -% Textbefehl ermöglicht. +% mit \cs{textcd} die Auswahl der Schrift über einen Textbefehl ermöglicht. % \begin{macrocode} \newcommand*\cdfont[1]{% \tud@cdfont@get{#1}% @@ -2055,7 +2030,7 @@ \renewcommand*\cdfont[1]{% \tud@cdfont@get{#1}% \ifx\@tempc\relax\else% - \ifstr{\@tempc}{dinbn}{\dinbn}{\csuse{univ\@tempc}}% + \tud@if@strequal{\@tempc}{dinbn}{\dinbn}{\csuse{univ\@tempc}}% \fi% }% \renewcommand*\textcd[2]{% @@ -2063,29 +2038,29 @@ \ifx\@tempc\relax% \textsf{#2}% \else% - \ifstr{\@tempc}{dinbn}{\textdbn{#2}}{\csuse{textu\@tempc}{#2}}% + \tud@if@strequal{\@tempc}{dinbn}{\textdbn{#2}}{\csuse{textu\@tempc}{#2}}% \fi% }% \fi \newcommand*\tud@cdfont@get[1]{% \tud@cdfont@trim\@tempa{#1}% - \ifstr{\@tempa}{l}{\def\@tempc{ln}}{% - \ifstr{\@tempa}{}{\def\@tempc{rn}}{% - \ifstr{\@tempa}{r}{\def\@tempc{rn}}{% - \ifstr{\@tempa}{s}{\def\@tempc{sn}}{% - \ifstr{\@tempa}{b}{\def\@tempc{bn}}{% - \ifstr{\@tempa}{x}{\def\@tempc{xn}}{% - \ifstr{\@tempa}{li}{\def\@tempc{li}}{% - \ifstr{\@tempa}{il}{\def\@tempc{li}}{% - \ifstr{\@tempa}{i}{\def\@tempc{ri}}{% - \ifstr{\@tempa}{ri}{\def\@tempc{ri}}{% - \ifstr{\@tempa}{ir}{\def\@tempc{ri}}{% - \ifstr{\@tempa}{si}{\def\@tempc{si}}{% - \ifstr{\@tempa}{is}{\def\@tempc{si}}{% - \ifstr{\@tempa}{bi}{\def\@tempc{bi}}{% - \ifstr{\@tempa}{ib}{\def\@tempc{bi}}{% - \ifstr{\@tempa}{xi}{\def\@tempc{xi}}{% - \ifstr{\@tempa}{ix}{\def\@tempc{xi}}{% + \tud@if@strequal{\@tempa}{l} {\def\@tempc{ln}}{% + \tud@if@strequal{\@tempa}{} {\def\@tempc{rn}}{% + \tud@if@strequal{\@tempa}{r} {\def\@tempc{rn}}{% + \tud@if@strequal{\@tempa}{s} {\def\@tempc{sn}}{% + \tud@if@strequal{\@tempa}{b} {\def\@tempc{bn}}{% + \tud@if@strequal{\@tempa}{x} {\def\@tempc{xn}}{% + \tud@if@strequal{\@tempa}{li}{\def\@tempc{li}}{% + \tud@if@strequal{\@tempa}{il}{\def\@tempc{li}}{% + \tud@if@strequal{\@tempa}{i} {\def\@tempc{ri}}{% + \tud@if@strequal{\@tempa}{ri}{\def\@tempc{ri}}{% + \tud@if@strequal{\@tempa}{ir}{\def\@tempc{ri}}{% + \tud@if@strequal{\@tempa}{si}{\def\@tempc{si}}{% + \tud@if@strequal{\@tempa}{is}{\def\@tempc{si}}{% + \tud@if@strequal{\@tempa}{bi}{\def\@tempc{bi}}{% + \tud@if@strequal{\@tempa}{ib}{\def\@tempc{bi}}{% + \tud@if@strequal{\@tempa}{xi}{\def\@tempc{xi}}{% + \tud@if@strequal{\@tempa}{ix}{\def\@tempc{xi}}{% \let\@tempc\relax% %<*class> \ClassWarning{\TUD@Class@Name}% @@ -2099,20 +2074,20 @@ \if@tud@cdoldfont@active \renewcommand*\tud@cdfont@get[1]{% \tud@cdfont@trim\@tempa{#1}% - \ifstr{\@tempa}{45}{\def\@tempc{ln}}{% - \ifstr{\@tempa}{55}{\def\@tempc{rn}}{% - \ifstr{\@tempa}{65}{\def\@tempc{bn}}{% - \ifstr{\@tempa}{75}{\def\@tempc{xn}}{% - \ifstr{\@tempa}{45oblique}{\def\@tempc{ls}}{% - \ifstr{\@tempa}{55oblique}{\def\@tempc{rs}}{% - \ifstr{\@tempa}{65oblique}{\def\@tempc{bs}}{% - \ifstr{\@tempa}{75oblique}{\def\@tempc{xs}}{% - \ifstr{\@tempa}{oblique45}{\def\@tempc{ls}}{% - \ifstr{\@tempa}{oblique55}{\def\@tempc{rs}}{% - \ifstr{\@tempa}{oblique65}{\def\@tempc{bs}}{% - \ifstr{\@tempa}{oblique75}{\def\@tempc{xs}}{% - \ifstr{\@tempa}{din}{\def\@tempc{dinbn}}{% - \ifstr{\@tempa}{din65}{\def\@tempc{dinbn}}{% + \tud@if@strequal{\@tempa}{45} {\def\@tempc{ln}}{% + \tud@if@strequal{\@tempa}{55} {\def\@tempc{rn}}{% + \tud@if@strequal{\@tempa}{65} {\def\@tempc{bn}}{% + \tud@if@strequal{\@tempa}{75} {\def\@tempc{xn}}{% + \tud@if@strequal{\@tempa}{45oblique}{\def\@tempc{ls}}{% + \tud@if@strequal{\@tempa}{55oblique}{\def\@tempc{rs}}{% + \tud@if@strequal{\@tempa}{65oblique}{\def\@tempc{bs}}{% + \tud@if@strequal{\@tempa}{75oblique}{\def\@tempc{xs}}{% + \tud@if@strequal{\@tempa}{oblique45}{\def\@tempc{ls}}{% + \tud@if@strequal{\@tempa}{oblique55}{\def\@tempc{rs}}{% + \tud@if@strequal{\@tempa}{oblique65}{\def\@tempc{bs}}{% + \tud@if@strequal{\@tempa}{oblique75}{\def\@tempc{xs}}{% + \tud@if@strequal{\@tempa}{din} {\def\@tempc{dinbn}}{% + \tud@if@strequal{\@tempa}{din65} {\def\@tempc{dinbn}}{% \let\@tempc\relax% %<*class> \ClassWarning{\TUD@Class@Name}% @@ -2125,8 +2100,7 @@ }% \fi \newcommand*\tud@cdfont@trim[2]{% - \protected@edef\@tempa{\trim@spaces{#2}}% - \tud@lowerstring{\@tempa}{\@tempa}% + \tud@strlowercase\@tempa{\trim@spaces{#2}}% \tud@cdfont@@trim{ }{}% \tud@cdfont@@trim{-}{}% \tud@cdfont@@trim{_}{}% @@ -2135,9 +2109,9 @@ \tud@cdfont@@trim{light}{l}% \tud@cdfont@@trim{regular}{r}% \tud@cdfont@@trim{book}{r}% - \tud@cdfont@@trim{semibold}{s}% + \tud@cdfont@@trim{semi}{s}% \tud@cdfont@@trim{demi}{s}% - \tud@cdfont@@trim{extrabold}{x}% + \tud@cdfont@@trim{extra}{x}% \tud@cdfont@@trim{black}{x}% \tud@cdfont@@trim{bold}{b}% \tud@cdfont@@trim{italic}{i}% @@ -2147,8 +2121,7 @@ } \if@tud@cdoldfont@active \renewcommand*\tud@cdfont@trim[2]{% - \protected@edef\@tempa{\trim@spaces{#2}}% - \tud@lowerstring{\@tempa}{\@tempa}% + \tud@strlowercase\@tempa{\trim@spaces{#2}}% \tud@cdfont@@trim{ }{}% \tud@cdfont@@trim{-}{}% \tud@cdfont@@trim{_}{}% @@ -2183,7 +2156,6 @@ % \end{macro}^^A \tud@cdfont@trim % \end{macro}^^A \tud@cdfont@get % \end{macro}^^A \textcd -% \end{macro}^^A \tudfont % \end{macro}^^A \cdfont % % \iffalse @@ -2258,7 +2230,7 @@ \let\tud@ttfont@fam\ttdefault% \or% roboto \let\tud@ttfont@fam\tud@ttfont@rb% - \or% lmodern + \else% lmodern \let\tud@ttfont@fam\tud@ttfont@lm% \fi% \ifcase\tud@ttfont@num\relax\else% !false @@ -2267,7 +2239,7 @@ % Das Setzen der TypeWriter-Schriften aus dem Paket \pkg{lmodern} erfolgt nur, % wenn diese nicht standardmäßig durch \pkg{fontspec} aktiviert ist. % \begin{macrocode} - \ifx\ttdefault\tud@ttfont@fam\else% + \ifx\tud@ttfont@fam\ttdefault\else% \tud@x@fontspec@set{tt}{\tud@ttfont@fam}% \fi% \else% @@ -2321,6 +2293,8 @@ % \end{macro}^^A \tud@ttfont@set % \begin{macro}{\tud@ttfont@init} % \changes{v2.06}{2018/07/12}{neu}^^A +% \changes{v2.06o}{2022/08/01}{Anpassungen für \val{TS1}-Kodierung; wird immer +% definiert und \cs{DeclareEncodingSubset} wird verwendet}^^A % \begin{macro}{\tud@ttfont@rb@scale} % \changes{v2.06}{2018/08/30}{neu}^^A % Mit \cs{tud@ttfont@init} erfolgt die Defintion der TypeWriter-Schriften. @@ -2380,7 +2354,7 @@ \edef\tud@ttfont@rb@scale{s*[\tud@ttfont@rb@scale]}% \begingroup% \def\tud@res@c##1##2{% - \tud@lowerstring\tud@res@a{##1}% + \tud@strlowercase\tud@res@a{##1}% \DeclareFontFamily{##1}{\tud@ttfont@rb}{\hyphenchar\font=\m@ne}% % \end{macrocode} % Das temporäre Makro verlangt im ersten Argument die NFSS-Serie, im zweiten @@ -2389,10 +2363,10 @@ % \begin{macrocode} \def\tud@res@b####1####2####3{% \DeclareFontShape{##1}{\tud@ttfont@rb}{####1}{n}{% - <->\tud@ttfont@rb@scale RobotoMono-####2-tlf-\tud@res@a% + <->\tud@ttfont@rb@scale RobotoMono-####2-tlf-\tud@res@a% }{}% \DeclareFontShape{##1}{\tud@ttfont@rb}{####1}{it}{% - <->\tud@ttfont@rb@scale RobotoMono-####3-tlf-\tud@res@a% + <->\tud@ttfont@rb@scale RobotoMono-####3-tlf-\tud@res@a% }{}% \DeclareFontShape{##1}{\tud@ttfont@rb}{####1}{sl}{% <->ssub*\tud@ttfont@rb/####1/it% @@ -2403,10 +2377,10 @@ % \begin{macrocode} \ifbool{##2}{% \DeclareFontShape{##1}{\tud@ttfont@rb}{####1}{sc}{% - <->\tud@ttfont@rb@scale RobotoMono-####2-tlf-sc-\tud@res@a% + <->\tud@ttfont@rb@scale RobotoMono-####2-tlf-sc-\tud@res@a% }{}% \DeclareFontShape{##1}{\tud@ttfont@rb}{####1}{scit}{% - <->\tud@ttfont@rb@scale RobotoMono-####3-tlf-sc-\tud@res@a% + <->\tud@ttfont@rb@scale RobotoMono-####3-tlf-sc-\tud@res@a% }{}% \DeclareFontShape{##1}{\tud@ttfont@rb}{####1}{scsl}{% <->ssub*\tud@ttfont@rb/####1/scit% @@ -2421,8 +2395,29 @@ }% \tud@res@c{OT1}{true}% \tud@res@c{T1}{true}% - \ifcsundef{T@TS1}{}{\tud@res@c{TS1}{false}}% - \endgroup% +% \end{macrocode} +% Mit \LaTeXe~2020/02/02 wird die \val{TS1}-Kodierung immer definiert und +% gleichzeitg ein Kompatibilitätslevel für verschiedene Schriftfamilien +% eingeführt. Da hier eine Schriftfamilie für die skalierte \texttt{RobotoMono} +% definiert wird, wird der Kompatibilitätslevel dementsprechend übernommen. +% \begin{macrocode} + \tud@res@c{TS1}{false}% + \def\tud@res@a{\endgroup}% + \def\tud@res@b{TS1:RobotoMono-TLF}% + \ifcsundef{\tud@res@b}{% +%<*class> + \ClassWarningNoLine{\TUD@Class@Name}% +% +%<*package> + \PackageWarningNoLine{tudscrfonts}% +% + {`\tud@res@b' encoding subset undefinied}% + }{% + \eappto\tud@res@a{% + \noexpand\DeclareEncodingSubset{TS1}{tudtt}{\csuse{\tud@res@b}}% + }% + }% + \tud@res@a% \fi% \fi% } @@ -2437,28 +2432,31 @@ % % \subsubsection{Schriften für den Mathematiksatz} % -% Für den mathematischen Satz werden ergänzend zur \OpenSans die Symbole aus -% dem Paket \pkg{mdsymbol} genutzt. Diese werden bereits bei der Erstellung der -% Type1-Schriften eingefügt. +% Da es so gut wie keine freien OpenType-Schriften für den mathmatischen +% Formelsatz gibt, werden \emph{immer} Type1-Schriften verwendet, falls diese +% installiert sind. % % Die veralteten Schriften des \CDs \Univers und \DIN besitzen keine Glyphen für % den Mathematiksatz. Daher musste~-- insbesondere für griechische Symbole~-- % eine passende Alternative gefunden werden. Die Auswahl an Mathematikschriften -% für \LaTeX{} ist relativ gering. Dennoch schien das \pkg{cmbright}-Paket dafür -% geeignet, weshalb die darin enthaltenen Glyphen direkt bei der Installation -% der Schriften eingebunden werden. +% für \LaTeX{} ist relativ gering. Dennoch schien das \pkg{cmbright}-Paket +% dafür geeignet, weshalb die darin enthaltenen Glyphen direkt bei der +% Installation der Schriften eingebunden werden. % % \begin{option}{cdmath} % \begin{macro}{\if@tud@cdmath@active} % \begin{macro}{\if@tud@cdmath@active@locked} % Mit dieser Option kann die genutzte Standardschrift für den Mathematiksatz % für das gesamte Dokument umgestellt werden. -% \ToDo{% +% \ToDo{ % Option evtl. überarbeiten und nicht mehr im Dokument zulassen; % andernfalls müssten alle bereitgestellte Befehle für den Mathematiksatz % gesichert und neu definiert werden, weil diese ggf. von anderen Paketen % umdefiniert werden. Bspw. \cs{the}\cs{mathcode`!} % }[v2.07] +% \ToDo{cdmath=disabled; s. \protecting{\GitHubRepo<45>; \Forum<511>}}[v2.07] +% \ToDo{griech. Lettern als Symbole (nicht tudupgrk/tuditgrk); boldmath}[v2.07] +% \ToDo{inverse Suche: \protecting{\Forum<539>}}[v2.07] % \begin{macrocode} \tud@locked@newbool{@tud@cdmath@active} \tud@locked@bool@preset{@tud@cdmath@active}{true}% @@ -2538,10 +2536,10 @@ % \changes{v2.06}{2019/06/13}{neu}^^A % \begin{macro}{\if@tud@lgrgreeks} % \changes{v2.06}{2019/06/13}{neu}^^A -% Mit dieser Option lässt sich die Nutzung von griechischen Glyphen der aus der +% Mit dieser Option lässt sich die Nutzung von griechischen Lettern der aus der % LGR-Kodierung der aktuellen Schriftfamilie für den Mathematiksatz aktivieren. % \begin{macrocode} -\newif\if@tud@lgrgreeks +\tud@newif\if@tud@lgrgreeks \TUD@key{lgrgreeks}[true]{\TUD@set@ifkey{lgrgreeks}{@tud@lgrgreeks}{#1}} \TUD@key{lgrgreek}[true]{\TUDoptions{lgrgreeks=#1}} \TUD@key{LGRgreeks}[true]{\TUDoptions{lgrgreeks=#1}} @@ -2607,8 +2605,8 @@ % \changes{v2.06}{2018/07/17}{neu}^^A % \begin{macro}{\tud@math@loop@greeks@lc} % \changes{v2.06}{2018/07/17}{neu}^^A -% Um Änderungen an den griechischen Glyphen vornehmen zu können, wird das Makro -% \cs{tud@math@loop@greeks@all} definiert, mit dem eine Namensliste der Glyphen +% Um Änderungen an den griechischen Lettern vornehmen zu können, wird das Makro +% \cs{tud@math@loop@greeks@all} definiert, mit dem eine Namensliste der Lettern % durchlaufen wird. Dabei wird in Majuskeln und Minuskeln unterschieden. % \begin{macrocode} \newcommand*\tud@math@loop@greeks@all[1]{% @@ -2636,9 +2634,9 @@ % Hiermit werden die beiden Symbolschriften \val{tudupgrk} und \val{tuditgrk} % in der LGR-Kodierung definiert. Diese werden insbesondere für die \OpenSans % benötigt, da das Paket \pkg{opensans} keine Schriften in mathematischen -% Kodierungen enthält. Das etrste Argument enthält die zu deklarierende +% Kodierungen enthält. Das erste Argument enthält die zu deklarierende % Schriftfamilie, zweites und drittes Argument die Schriftstärke für normale -% und fette Glyphen, die letzten beiden die Schriftgestalt für aufrechte und +% und fette Lettern, die letzten beiden die Schriftgestalt für aufrechte und % kursive Variante. % \begin{macrocode} \newcommand*\tud@math@declare@lgrgreeks[5]{% @@ -2668,11 +2666,11 @@ % \changes{v2.06}{2019/06/19}{neu}^^A % \changes{v2.06n}{2021/07/15}{\cs{mathord} statt \cs{mathalpha}}^^A % Es gibt eine Vielzahl von Paketen, die das Setzen von aufrechten griechischen -% Glyphen adressieren. Allerdings gibt es keinen einheitlichen Standard, was +% Lettern adressieren. Allerdings gibt es keinen einheitlichen Standard, was % die Nomenklatur der Auswahlbefehle betrifft. Mit diesem Makro wird nach den % am häufigsten auftretenden Varianten für die Auswahl für aufrechte und -% kursive Glyphen gesucht, um diese auf die von \TUDScript genutzte Nomenklatur -% (\cs{up\meta{Letter}}, \cs{it\meta{Letter}}, \cs{other\meta{Letter}}) +% kursive Lettern gesucht, um diese auf die von \TUDScript genutzte Nomenklatur +% (|\up|\meta{Letter}, |\it|\meta{Letter}, |\other|\meta{Letter}) % abzubilden, damit diese unabhängig von der Einstellung für \opt{cdmath} % genutzt werden kann und somit neben den normalen Makros zusätzliche Befehle % für das explizite Auswählen aufrechter und kursiver Lettern bereitstehen. @@ -2692,15 +2690,15 @@ \ifcsundef{other#1}{\ifcsundef{#1other}{}{\csletcs{other#1}{#1other}}}{}% } % \end{macrocode} -% Einige Pakete stellen für griechische Majuskeln die Befehle \cs{var\dots} +% Einige Pakete stellen für griechische Majuskeln Befehle |\var|\meta{Letter} % bereit, um diese im kursiven Schnitt zu setzen. Weiterhin existiert für -% aufrechte Majuskeln auch noch die Form \cs{Up\meta{Letter}}. Diese werden +% aufrechte Majuskeln auch noch die Form |\Up|\meta{Letter}. Diese werden % ebenfalls ausgewertet und ggf. auf die \TUDScript-Nomenklatur abgebildet. % \begin{macrocode} \newcommand*\tud@math@map@@@greeks[1]{% \ifcsundef{it#1}{\ifcsundef{var#1}{}{\csletcs{it#1}{var#1}}}{}% \ifcsundef{up#1}{% - \tud@lowerstring\tud@res@a{#1}% + \tud@strlowercase\tud@res@a{#1}% \edef\tud@res@a{Up\tud@res@a}% \ifcsundef{\tud@res@a}{}{\csletcs{up#1}{\tud@res@a}}% }{}% @@ -2711,7 +2709,7 @@ % \val{operators} und \val{letters} geprüft, ob diese in den Kodierungen % \val{OT1} bzw. \val{OML} genutzt werden. Trifft dies zu, so werden die % Schriftfamilien der Symbolschriften genutzt, um die Auswahlbefehle für die -% griechischen Glyphen zu definieren, sofern dies noch notwendig ist. +% griechischen Lettern zu definieren, sofern dies noch notwendig ist. % \begin{macrocode} \newcommand*\tud@math@supplement@greeks{% % \end{macrocode} @@ -2742,7 +2740,7 @@ }% \tud@cs@use{mv@normal}% \let\tud@res@c\@empty% - \ifstr{\tud@math@letters@enc}{\detokenize{OML}}{% + \tud@if@strequal{\tud@math@letters@enc}{OML}{% \def\tud@res@a##1{% \ifcsundef{it##1}{% \eappto\tud@res@c{% @@ -2755,7 +2753,7 @@ \tud@res@cnt=\z@\relax% \tud@math@loop@greeks@all\tud@res@a% }{}% - \ifstr{\tud@math@operators@enc}{\detokenize{OT1}}{% + \tud@if@strequal{\tud@math@operators@enc}{OT1}{% \def\tud@res@a##1{% \ifcsundef{up##1}{% \eappto\tud@res@c{% @@ -2770,7 +2768,7 @@ }{}% % \end{macrocode} % Mit der Option \opt{lgrgreeks} besteht zusätzlich die Möglichkeit, fehlende -% Glyphen aus einer potenziell sinnvollen Schriftfamilie in der LGR-Kodierung +% Lettern aus einer potenziell sinnvollen Schriftfamilie in der LGR-Kodierung % zu ergänzen. Wird eine solche gefunden, wird diese in \cs{tud@res@a} abgelegt. % \begin{macrocode} \let\tud@res@a\@empty% @@ -2800,7 +2798,7 @@ \ifx\tud@res@a\@empty\else% % \end{macrocode} % Mit der gefunden LGR-Schriftfamilie werden alle bisher nicht vorhanden -% aufrechte und kursive griechische Glyphen aus den entsprechenden Slots +% aufrechte und kursive griechische Lettern aus den entsprechenden Slots % ergänzt. % \begin{macrocode} \tud@math@declare@lgrgreeks{\tud@res@a}% @@ -2865,20 +2863,20 @@ % \end{macro}^^A \tud@math@map@greeks % \begin{macro}{\tud@math@checkslanted@greeks} % \changes{v2.05d}{2016/09/22}{neu}^^A -% Für die Verwendung der griechischen Glyphen im Mathematikmodus wird versucht, +% Für die Verwendung der griechischen Lettern im Mathematikmodus wird versucht, % ein hohes Maß an Kompatibilität für andere Pakete zu gewährleisten. Es wird % versucht zu erkennen, ob Pakete mit einer Option wie \opt{slantedGreek}, % \opt{frenchmath} oder ähnlichem geladen wurde. Hierfür wird nach Definitionen % für \cs{upalpha} als auch \cs{itGamma} gesucht. Existieren die Makros nicht, % wird zumindest auf die aktuelle Definition von \cs{Gamma} geprüft und mit der -% standardmäßigen Variant der Glyphe verglichen. Wurde eine passende Definition -% gefunden, wird die Option \opt{slantedgreek} voreingestellt. +% standardmäßigen Variante der Letter verglichen. Wurde eine passende +% Definition gefunden, wird die Option \opt{slantedgreek} voreingestellt. % \begin{macrocode} \newcommand*\tud@math@checkslanted@greeks{% \begingroup% % \end{macrocode} % Wird keine Änderung durch Pakete erkannt, werden ab \TUDScript-Version~v2.06 -% die Glyphen kursiv gesetzt. Dies betrifft insbesondere die Majuskeln, welche +% die Lettern kursiv gesetzt. Dies betrifft insbesondere die Majuskeln, welche % bei \LaTeX{} normalerweise aufrecht gesetzt werden. % \begin{macrocode} \def\tud@res@c{% @@ -2889,14 +2887,10 @@ }% }% \@tud@res@swafalse% - \ifcsdef{upalpha}{% - \ifx\upalpha\alpha% - \@tud@res@swatrue% - \fi% - }{}% + \ifundef{\upalpha}{}{\ifx\upalpha\alpha\@tud@res@swatrue\fi}% % \end{macrocode} % Existiert \cs{upalpha} und ist mit \cs{alpha} identisch, werden \emph{alle} -% griechischen Glyphen aufrecht gesetzt. +% griechischen Lettern aufrecht gesetzt. % \begin{macrocode} \if@tud@res@swa% \def\tud@res@c{\TUD@key@preset{slantedgreek}{false}}% @@ -2904,23 +2898,20 @@ % \end{macrocode} % Existiert \cs{itGamma} und ist mit \cs{Gamma} identisch oder\dots % \begin{macrocode} - \ifcsdef{itGamma}{% - \ifx\itGamma\Gamma% - \@tud@res@swatrue% - \fi% - }{% + \ifundef{\itGamma}{}{\ifx\itGamma\Gamma\@tud@res@swatrue\fi}% % \end{macrocode} -% \dots\cs{Gamma} entspricht einer möglichen Standarddefnition,\dots +% \dots\cs{Gamma} entspricht einer kursiven Standarddefnition, \dots % \begin{macrocode} + \if@tud@res@swa\else% \let\tud@res@a\relax% \let\tud@res@b\relax% \DeclareMathSymbol{\tud@res@a}{\mathalpha}{letters}{0}% \DeclareMathSymbol{\tud@res@b}{\mathord}{letters}{0}% - \ifx\Gamma\tud@res@a\relax\@tud@res@swatrue\fi% - \ifx\Gamma\tud@res@b\relax\@tud@res@swatrue\fi% - }% + \ifx\Gamma\tud@res@a\@tud@res@swatrue\fi% + \ifx\Gamma\tud@res@b\@tud@res@swatrue\fi% + \fi% % \end{macrocode} -% \dots werden \emph{alle} griechischen Glyphen kursiv gesetzt. +% \dots werden \emph{alle} griechischen Lettern kursiv gesetzt. % \begin{macrocode} \if@tud@res@swa% \def\tud@res@c{\TUD@key@preset{slantedgreek}{true}}% @@ -2933,71 +2924,28 @@ % \end{macro}^^A \tud@math@checkslanted@greeks % \begin{macro}{\tud@cdmath@init} % \changes{v2.06}{2018/07/02}{neu}^^A +% \changes{v2.06a}{2019/07/09}{Bugfix für \pkg{mathastext} Eingabekodierung}^^A % \begin{macro}{\tud@cdmath@@init} % \changes{v2.06}{2018/07/02}{neu}^^A -% \changes{v2.06a}{2019/07/09}{Bugfix für \pkg{mathastext} Eingabekodierung}^^A -% \begin{macro}{\tud@x@mathastext@enc} -% \changes{v2.06a}{2019/07/09}{neu}^^A -% \begin{macro}{\mv@tudnormal} -% \begin{macro}{\mv@tudbold} -% \begin{macro}{\mv@tuddin} +% \begin{macro}{\tud@cdmath@@@init} +% \changes{v2.06o}{2022/08/01}{neu} +% \begin{macro}{\tud@cdmath@@@@@init} +% \changes{v2.06o}{2022/08/01}{neu} +% \begin{macro}{\tud@cdmath@set} +% \changes{v2.06o}{2022/08/01}{neu} +% \begin{macro}{\tud@cdmath@normal@name} +% \changes{v2.06o}{2022/08/01}{neu} +% \begin{macro}{\tud@cdmath@bold@name} +% \changes{v2.06o}{2022/08/01}{neu} % \begin{macro}{\tud@mathversion} % \changes{v2.06}{2019/06/17}{neu}^^A % \begin{macro}{\MTDeclareVersion} % \changes{v2.06}{2019/06/17}{neu}^^A -% \begin{macro}{\MTversion@@} -% \changes{v2.06}{2019/06/17}{neu}^^A % Die folgenden Befehle dienen allesamt für das Bereitstellen der Schriften des % \CDs im mathematischen Satz. Hierbei kommt das Paket \pkg{mathastext} zum % Einsatz, falls \OpenSans verwendet wird. % \begin{macrocode} -\newcommand*\mv@tudnormal{} -\newcommand*\mv@tudbold{} -\newcommand*\mv@tuddin{} -% \end{macrocode} -% Um das Umschalten der Mathematikversion mit \cs{mathversion} auch nutzen zu -% können, wenn \pkg{mathastext} für die Schriften des \CDs aktiv ist, wird ein -% Wrappermakro benötigt, welches im Bedarfsfall\cs{MTversion*} aufruft. Hierfür -% wird zunächst auf die gewünschte Mathematikversion, danach der originale -% Befehl \cs{mathversion} wiederhergestellt, aufgerufen und anschließend wieder -% auf das Wrappermakro \cs{tud@mathversion} zurückgesetzt. -% \begin{macrocode} -\AfterPackage*{mathastext}{% - \newrobustcmd*\tud@mathversion[1]{% - \begingroup% - \let\tud@res@a\relax% - \if@tud@cdmath@active% - \ifstr{#1}{normal}{% - \def\tud@res@a{tudnormal}% - }{% - \ifstr{#1}{bold}{% - \def\tud@res@a{tudbold}% - }{}% - }% - \fi% - \edef\tud@res@a{% - \endgroup% - \noexpand\tud@cs@restore{mathversion}% - \ifx\tud@res@a\relax% - \noexpand\mathversion{#1}% - \else% - \noexpand\MTversion*{\tud@res@a}% - \fi% - \noexpand\tud@cs@store{mathversion}% - \noexpand\tud@cs@letltx{mathversion}{tud@mathversion}% - }% - \tud@res@a% - }% - \AtEndPreamble{% - \tud@cs@store{mathversion}% - \tud@cs@letltx{mathversion}{tud@mathversion}% - }% -} -% \end{macrocode} -% Mit \cs{tud@cdmath@init} werden für den Mathematikmodus die Schriften im -% \CD deklariert. -% \begin{macrocode} -\newcommand*\tud@cdmath@init{% +\newcommand*\tud@cdmath@init{% % \end{macrocode} % Für die Schriftfamilie \OpenSans existieren leider bisher keine Kodierung für % den Mathematikmodus (\val{OML}, \val{OMS}, \val{OMX}), weshalb hierfür das @@ -3005,17 +2953,18 @@ % ermöglichen. Dabei wird die Computer~Modern in der \val{LGR}~Kodierung % zwingend benötigt. % -% Für die LGR-Kodierung werden die Bundles \pkg{cbfonts} und \pkg{cbfonts-fd} +% Für die LGR-Kodierung werden die Bundles \bdl{cbfonts} und \bdl{cbfonts-fd} % benötigt. Leider lässt sich momentan nur auf letzteres testen. Für ersteres -% ließe sich |\font\testfont=grmn1200|\footnote{\file{ltxcheck.tex}} oder -% \verb+\immediate\openin\pathfont="|kpsewhich grmn1200.tfm"+\ignorespaces% -% \footnote{\url{https://tex.stackexchange.com/questions/306980/}} oder nutzen. -% Beide Ansätze sind aber nicht vollends stimmig. Der erste funktioniert nicht, -% sobald der Anwender \val{-interaction-mode} selbst definiert und für den -% zweiten müssen zumindest eingeschränkte Schreibrechte aktiviert sein. +% ließe sich |\font\testfont=grmn1200|\footnote{\file{ltxcheck.tex}} oder der +% externe Aufruf \verb+\immediate\openin\pathfont="|kpsewhich grmn1200.tfm"+ +% nutzen\footnote{\url{https://tex.stackexchange.com/q/306980}}. Beide Ansätze +% sind aber nicht vollends stimmig. Der erste funktioniert nicht, sobald der +% Anwender \val{-interaction-mode} selbst definiert und für den zweiten müssen +% zumindest eingeschränkte Schreibrechte zwingend aktiviert sein. +% \ToDo{cmr nicht zwingend notwendig}[v2.07]%^^A nur wenn \@tud@lgrgreekstrue % \begin{macrocode} \@tud@res@swafalse% - \if@tud@cdfont@fam@exist% + \if@tud@cdmath@fam@exist% \@tud@res@swatrue% \if@tud@cdoldfont@active\else% \tud@if@fdfileexists{LGR}{cmr}{}{% @@ -3076,17 +3025,23 @@ subdued,defaultmathsizes,nosmalldelims,noequal,% defaultrm,defaultbf,defaultit,defaultsf,defaulttt% }{mathastext}% - \RequirePackage{mathastext}[2018/08/22]% + \RequirePackage{mathastext} +% \end{macrocode} +% \ToDo{cmr nicht notwendig}[v2.07]%^^A {\tud@cdfont@fam}{m}{b}{n}{it}% +% \begin{macrocode} +%^^A \if@tud@lgrgreeks \tud@math@declare@lgrgreeks{cmr}{m}{bx}{n}{it}% +%^^A \else +%^^A \tud@math@declare@lgrgreeks{\tud@cdfont@fam}{m}{b}{n}{it}% +%^^A \fi \fi% \providecommand*\MTDeclareVersion[6][]{\DeclareMathVersion{##2}}% - \providecommand*\MTversion@@[1]{}% - \tud@cdmath@@init{\tud@cdfont@fam@lf}{\tud@ttfont@fam}% + \tud@cdmath@@init% % \end{macrocode} -% Die Symbole für aufrechte und kursive griechische Glyphen werden definiert. +% Die Symbole für aufrechte und kursive griechische Lettern werden definiert. % Da im Paket \pkg{opensans} keine mathematischen Schriftkodierungen enthalten % sind, wird in diesem Fall auf die LGR-Kodierung zurückgegriffen. -% \ToDo{kann mit \pkg{opensans-math} raus}[v2.??] +% \ToDo{könnte mit \pkg{opensans-math} raus}[v2.08] % \begin{macrocode} \if@tud@cdoldfont@active% \tud@res@cnt=\z@\relax% @@ -3100,155 +3055,223 @@ % \begin{macrocode} \tud@cdmath@declare@char{*}{\mathbin}{symbols}{"03}% % \end{macrocode} -% Nach der Definition der griechischen Glyphen werden diese~-- inklusive aller +% Nach der Definition der griechischen Lettern werden diese~-- inklusive aller % Auswahlvariationen~-- deklariert. % \begin{macrocode} \tud@cdmath@also@greeks% + \fi% % \end{macrocode} -% Sollten die notwendigen Schriftfamilien nicht gefunden worden sein, werden -% keine separaten Mathematikversionen definiert. +% Für die Schrift \DIN existiert lediglich eine Mathematikversion, das Vorgehen +% ist ähnlich zur \Univers. % \begin{macrocode} - \else% - \let\mv@tudnormal\mv@normal% - \let\mv@tudbold\mv@bold% - \if@tud@cdoldfont@active% + \if@tud@cdoldfont@active% + \if@tud@cdmath@db@exist% + \tud@cdmath@db@init{\tud@cdfont@db}% + \else% \let\mv@tuddin\mv@bold% \fi% \fi% } +\newcommand*\tud@cdmath@set{} +\newcommand*\tud@cdmath@normal@name{tudnormal@\tud@cdfont@md\tud@cdfont@bf}% +\newcommand*\tud@cdmath@bold@name{tudbold@\tud@cdfont@md\tud@cdfont@bf}% +% \end{macrocode} +% Da eine dynamische Anpassung der Mathematikschriften innerhalb des Dokumentes +% an die jeweils aktuell verwendete Schriftart und insbesondere den Schnitt +% nicht möglich ist, werden hier für alle möglichen, von \TUDScript angebotenen +% Einstellungen der Schriftschnitte die dazu passenden Mathematikversionen +% deklariert. Dabei werden die insgesamt vier möglichen Kombinationen für die +% beiden Schalter \cs{if@tud@cdfont@heavy} (\opt{cdfont=light/heavy}) und +% \cs{if@tud@cdfont@ultrabold} (\opt{cdfont=normalbold/ultrabold}) gesetzt +% und dafür die passenden Mathematikversionen definiert.\footnote{Eigentlich +% müssten auch noch alle Kombinationen für die Schreibmaschinenschriften +% beachtet werden. Dies ist dann aber wohl eher nicht notwendig, zumal für +% \opt{ttfont=false} ohnehin nicht zwingend alle notwendigen Schnitte zur +% Verfügung stehen könnten.} +% \begin{macrocode} +\newcommand*\tud@cdmath@@init{% + \begingroup% + \let\tud@res@b\@empty% + \def\tud@res@a##1##2{% + \setbool{@tud@cdfont@heavy}{##1}% + \setbool{@tud@cdfont@ultrabold}{##2}% + \tud@cdfont@@set% + \tud@ttfont@@set% + \eappto\tud@res@b{% + \noexpand\tud@cdmath@@@init% + {\tud@cdmath@normal@name}% + {\tud@cdmath@bold@name}% + {\tud@cdfont@fam@lf}{\tud@cdfont@md}{\tud@cdfont@bf}{\tud@cdfont@ebf}% + {\tud@ttfont@fam}{\tud@ttfont@md}{\tud@ttfont@bf}% + }% + }% % \end{macrocode} -% Mit \cs{tud@cdmath@@init} werden die notwendigen Mathematikversionen und die -% dazugehörigen Symbolschriften sowie Alphabete deklariert. -% \begin{macrocode} -\newcommand*\tud@x@mathastext@enc{OT1} -\newcommand*\tud@cdmath@@init[2]{% -% \end{macrocode} -% Mit \cs{tud@cdfont@@set} werden die Schriftstärken gemäß den ausgewählten -% Schriftoptionen aktiviert (\cs{tud@cdfont@md}, \cs{tud@cdfont@bf}, -% \cs{tud@cdfont@ebf}), um diese auch für die Mathematikschriften zu nutzen. -% \begin{macrocode} - \tud@cdfont@@set% - \tud@ttfont@@set% +% Die möglichen Kombinationen für die beiden genannten Schalter werden in einer +% Gruppe ausgeführt und die mit \cs{tud@cdfont@@set} sowie \cs{tud@ttfont@@set} +% aktivierten Schriftschnitte als Argumente für \cs{tud@cdmath@@@init} in +% \cs{tud@res@b} expandiert. +% \begin{macrocode} + \tud@res@a{false}{false}% + \tud@res@a{false}{true}% + \tud@res@a{true}{false}% + \tud@res@a{true}{true}% +% \end{macrocode} +% Für den zugegbener Maßen etwas unwahrscheinlichen Fall, dass die Kombination +% aus \opt{cdfont=false} und \opt{cdmath=true} genutzt wird, werden für die +% Initialisierung die Schriften des \CDs kurzzeitig aktiviert. Damit wird dem +% Umstand Sorge getragen, dass das Paket \pkg{mathastext} bei der Definition +% der Mathematikversionen teilweise auf Makros wie \cs{bfdefault} zurückgreift +% und diese dementsprechend gesetzt sein sollten. +% \begin{macrocode} + \if@tud@cdfont@active\else% + \preto\tud@res@b{% + \@tud@cdfont@activetrue% + \tud@font@set[]% + }% + \appto\tud@res@b{% + \@tud@cdfont@activefalse% + \tud@font@set[]% + }% + \fi% + \preto\tud@res@b{\endgroup}% + \tud@res@b% +% \end{macrocode} +% Mit \cs{tud@cdmath@set} erfolgt bei Bedarf die Auswahl der aktuell benötigten +% Mathematikversion, wobei für die Zuweisung \cs{tud@cdmath@normal@name} und +% \cs{tud@cdmath@bold@name} in \cs{mv@normal} sowie \cs{mv@bold} expandiert +% werden. Die Namen für die Versionen setzen sich dabei aus den Päfixen +% \val{tudnormal@} und \val{tudbold@} sowie der Verkettung des regulären und +% des fetten Schriftschnitts zusammen, welche zum Zeitpunkt des Aufrufs aktiv +% sind (Option \opt{cdfont}) und durch \cs{tud@cdfont@@set} gesetzt werden. +% \begin{macrocode} + \renewcommand*\tud@cdmath@set{% + \begingroup% + \tud@cdfont@@set% + \edef\tud@res@a{% + \endgroup% + \unexpanded{\letcs\mv@normal}{mv@\tud@cdmath@normal@name}% + \unexpanded{\letcs\mv@bold}{mv@\tud@cdmath@bold@name}% + }% + \tud@res@a% + }% +} % \end{macrocode} -% Die Deklaration der Mathematikversionen für die alten Schriften. Auch für die -% Schrift \DIN werden mathematische Glyphen bereitgestellt. Diese wurden schon -% bei der Installation aus dem \pkg{iwona}-Paket entnommen. Die verwendeten -% Symbole stammen aus diesem Paket. +% Mit \cs{tud@cdmath@@@init} werden die notwendigen Mathematikversionen und die +% dazugehörigen Symbolschriften sowie Alphabete für die unterschiedlichen +% Kombinationen der Schriftschnitte deklariert. Das Makro verwendet folgende +% Argumente: +% \begin{description} +% \item[|\#1|] der Name für die normale Mathematikversion +% \item[|\#2|] der Name für die fette Mathematikversion +% \item[|\#3|] die verwendete Schriftfamilie +% \item[|\#4|] der reguläre Schriftschnitt +% \item[|\#5|] der fette Schriftschnitt +% \item[|\#6|] der extra-fette Schriftschnitt +% \item[|\#7|] die verwendete Schreibmaschinenschrift +% \item[|\#8|] der reguläre Schreibmaschinenschnitt +% \item[|\#9|] der fette Schreibmaschinenschnitt +% \end{description} +% \begin{macrocode} +\newcommand*\tud@cdmath@@@init[9]{% +% \end{macrocode} +% Die Deklaration der Mathematikversionen für die alten Schriften. Die +% verwendeten Symbole stammen aus dem Paket \pkg{iwona}. % \begin{macrocode} \if@tud@cdoldfont@active% - \DeclareMathVersion{tudnormal}% - \DeclareMathVersion{tudbold}% - \DeclareMathVersion{tuddin}% - \SetSymbolFont{operators}{tudnormal}{OT1}{#1}{\tud@cdfont@md}{n}% - \SetSymbolFont{operators}{tudbold}{OT1}{#1}{\tud@cdfont@bf}{n}% - \SetSymbolFont{operators}{tuddin}{OT1}{\tud@cdfont@db}{b}{n}% - \SetSymbolFont{letters}{tudnormal}{OML}{#1}{\tud@cdfont@md}{sl}% - \SetSymbolFont{letters}{tudbold}{OML}{#1}{\tud@cdfont@bf}{sl}% - \SetSymbolFont{letters}{tuddin}{OML}{\tud@cdfont@db}{b}{sl}% - \SetSymbolFont{symbols}{tudnormal}{OMS}{#1}{\tud@cdfont@md}{n}% - \SetSymbolFont{symbols}{tudbold}{OMS}{#1}{\tud@cdfont@bf}{n}% - \SetSymbolFont{symbols}{tuddin}{OMS}{\tud@cdfont@db}{b}{n}% - \SetSymbolFont{largesymbols}{tudnormal}{OMX}{iwona}{\tud@cdfont@md}{n}% - \SetSymbolFont{largesymbols}{tudbold}{OMX}{iwona}{\tud@cdfont@bf}{n}% - \SetSymbolFont{largesymbols}{tuddin}{OMX}{iwona}{ebc}{n}% - \SetMathAlphabet{\mathnormal}{tudnormal}{OML}{#1}{\tud@cdfont@md}{sl}% - \SetMathAlphabet{\mathnormal}{tudbold}{OML}{#1}{\tud@cdfont@bf}{sl}% - \SetMathAlphabet{\mathnormal}{tuddin}{OML}{\tud@cdfont@db}{b}{sl}% + \DeclareMathVersion{#1}% + \DeclareMathVersion{#2}% + \SetSymbolFont{operators}{#1}{OT1}{#3}{#4}{n}% + \SetSymbolFont{operators}{#2}{OT1}{#3}{#5}{n}% + \SetSymbolFont{letters}{#1}{OML}{#3}{#4}{it}% + \SetSymbolFont{letters}{#2}{OML}{#3}{#5}{it}% + \SetSymbolFont{symbols}{#1}{OMS}{#3}{#4}{n}% + \SetSymbolFont{symbols}{#2}{OMS}{#3}{#5}{n}% + \SetSymbolFont{largesymbols}{#1}{OMX}{iwona}{#4}{n}% + \SetSymbolFont{largesymbols}{#2}{OMX}{iwona}{#5}{n}% + \SetMathAlphabet{\mathnormal}{#1}{OML}{#3}{#4}{it}% + \SetMathAlphabet{\mathnormal}{#2}{OML}{#3}{#5}{it}% \tud@if@ismathalphabet{\mathbold}{% - \SetMathAlphabet{\mathbold}{tudnormal}{OML}{#1}{\tud@cdfont@bf}{sl}% - \SetMathAlphabet{\mathbold}{tudbold}{OML}{#1}{\tud@cdfont@ebf}{sl}% - \SetMathAlphabet{\mathbold}{tuddin}{OML}{\tud@cdfont@db}{b}{sl}% + \SetMathAlphabet{\mathbold}{#1}{OML}{#3}{#5}{it}% + \SetMathAlphabet{\mathbold}{#2}{OML}{#3}{#6}{it}% }{}% \else% % \end{macrocode} -% Für \OpenSans wird mangels der Kodierungen \val{OML}, \val{OMS} und \val{OMX} -% im Paket \pkg{opensans} zur Deklaration der Mathematikversionen der Befehl -% \cs{MTDeclareVersion} aus dem Paket \pkg{mathastext} genutzt. Dabei wird die -% Kodierung der Mathematikschriften identisch zur genutzten Eingabekodierung -% für den Text gesetzt, da diese in der Version \val{v1.3t} nicht problemfrei -% unabhängig davon gewählt werden kann. Sämtliche fehlenden Kodierungen werden -% notdürftig mit dem Paket \pkg{iwona} definiert. Zur Definition griechischer -% Glyphen wird die LGR-Kodierung der \OpenSans genutzt. -% \begin{macrocode} - \edef\tud@res@b{\encodingdefault}% - \@tfor\tud@res@a:={T1}{TU}{EU1}{EU2}\do{% - \ifx\tud@res@a\tud@res@b% - \let\tud@x@mathastext@enc\tud@res@b% - \@break@tfor - \fi% - }% - \MTDeclareVersion[it]{tudnormal}% - {\tud@x@mathastext@enc}{#1}{\tud@cdfont@md}{n}% - \MTDeclareVersion[it]{tudbold}% - {\tud@x@mathastext@enc}{#1}{\tud@cdfont@bf}{n}% - \SetSymbolFont{operators}{tudnormal}{OT1}{iwona}{\tud@cdfont@md}{n}% - \SetSymbolFont{operators}{tudbold}{OT1}{iwona}{\tud@cdfont@bf}{n}% +% Für \OpenSans werden für die fehlenden Kodierungen \val{OML}, \val{OMS} und +% \val{OMX} die entsprechenden Symbolschriften eher notdürftig mit dem Paket +% \pkg{iwona} definiert. Zur Definition der griechischen Lettern wird die +% LGR-Kodierung der \OpenSans genutzt. +% \begin{macrocode} + \MTDeclareVersion[it]{#1}{\tud@x@mathastext@enc}{#3}{#4}{n}% + \MTDeclareVersion[it]{#2}{\tud@x@mathastext@enc}{#3}{#5}{n}% + \SetSymbolFont{operators}{#1}{OT1}{iwona}{#4}{n}% + \SetSymbolFont{operators}{#2}{OT1}{iwona}{#5}{n}% % \end{macrocode} % \ToDo{% % sollte \pkg{opensans-math} irgendwann einmal real werden, dann würde es % sich anbieten, die OML-Kodierung ähnlich zu \pkg{euler[vm]} auf eine -% U-Kodierung zu erweitern und aufrechte griechische Glyphen einzubinden, um +% U-Kodierung zu erweitern und aufrechte griechische Lettern einzubinden, um % ein Alphabet zu sparen. Siehe Kodierungen FML/FMS, LML/LMS, LBL/LBS, LS1/LS2 -% }[v2.??] -% \begin{macrocode} - \SetSymbolFont{letters}{tudnormal}{OML}{iwona}{\tud@cdfont@md}{it}% - \SetSymbolFont{letters}{tudbold}{OML}{iwona}{\tud@cdfont@bf}{it}% -%^^A \SetSymbolFont{letters}{tudnormal}{U}{#1m}{\tud@cdfont@md}{it}% -%^^A \SetSymbolFont{letters}{tudbold}{U}{#1m}{\tud@cdfont@bf}{it}% - \SetSymbolFont{symbols}{tudnormal}{OMS}{iwona}{\tud@cdfont@md}{n}% - \SetSymbolFont{symbols}{tudbold}{OMS}{iwona}{\tud@cdfont@bf}{n}% - \SetSymbolFont{largesymbols}{tudnormal}{OMX}{iwona}{\tud@cdfont@md}{n}% - \SetSymbolFont{largesymbols}{tudbold}{OMX}{iwona}{\tud@cdfont@bf}{n}% - \SetSymbolFont{tudupgrk}{tudnormal}{LGR}{#1}{\tud@cdfont@md}{n}% - \SetSymbolFont{tuditgrk}{tudnormal}{LGR}{#1}{\tud@cdfont@md}{it}% - \SetSymbolFont{tudupgrk}{tudbold}{LGR}{#1}{\tud@cdfont@bf}{n}% - \SetSymbolFont{tuditgrk}{tudbold}{LGR}{#1}{\tud@cdfont@bf}{it}% -%^^A \SetMathAlphabet{\mathnormal}{tudnormal}{U}{#1m}{\tud@cdfont@md}{it}% -%^^A \SetMathAlphabet{\mathnormal}{tudbold}{U}{#1m}{\tud@cdfont@bf}{it}% +% }[v2.08] +% \begin{macrocode} + \SetSymbolFont{letters}{#1}{OML}{iwona}{#4}{it}% + \SetSymbolFont{letters}{#2}{OML}{iwona}{#5}{it}% +%^^A \SetSymbolFont{letters}{#1}{U}{#3m}{#4}{it}% +%^^A \SetSymbolFont{letters}{#2}{U}{#3m}{#5}{it}% + \SetSymbolFont{symbols}{#1}{OMS}{iwona}{#4}{n}% + \SetSymbolFont{symbols}{#2}{OMS}{iwona}{#5}{n}% + \SetSymbolFont{largesymbols}{#1}{OMX}{iwona}{#4}{n}% + \SetSymbolFont{largesymbols}{#2}{OMX}{iwona}{#5}{n}% + \SetSymbolFont{tuditgrk}{#1}{LGR}{#3}{#4}{it}% + \SetSymbolFont{tuditgrk}{#2}{LGR}{#3}{#5}{it}% + \SetSymbolFont{tudupgrk}{#1}{LGR}{#3}{#4}{n}% + \SetSymbolFont{tudupgrk}{#2}{LGR}{#3}{#5}{n}% +%^^A \SetMathAlphabet{\mathnormal}{#1}{U}{#3m}{#4}{it}% +%^^A \SetMathAlphabet{\mathnormal}{#2}{U}{#3m}{#5}{it}% \tud@if@ismathalphabet{\mathbold}{% - \SetMathAlphabet{\mathbold}{tudnormal}% - {\tud@x@mathastext@enc}{#1}{\tud@cdfont@bf}{it}% - \SetMathAlphabet{\mathbold}{tudbold}% - {\tud@x@mathastext@enc}{#1}{\tud@cdfont@ebf}{it}% -%^^A \SetMathAlphabet{\mathbold}{tudnormal}{U}{#1m}{\tud@cdfont@bf}{it}% -%^^A \SetMathAlphabet{\mathbold}{tudbold}{U}{#1m}{\tud@cdfont@ebf}{it}% + \SetMathAlphabet{\mathbold}{#1}{\tud@x@mathastext@enc}{#3}{#5}{it}% + \SetMathAlphabet{\mathbold}{#2}{\tud@x@mathastext@enc}{#3}{#6}{it}% +%^^A \SetMathAlphabet{\mathbold}{#1}{U}{#3m}{#5}{it}% +%^^A \SetMathAlphabet{\mathbold}{#2}{U}{#3m}{#6}{it}% }{}% \fi% - \SetMathAlphabet{\mathrm}{tudnormal}{OT1}{#1}{\tud@cdfont@md}{n}% - \SetMathAlphabet{\mathrm}{tudbold}{OT1}{#1}{\tud@cdfont@bf}{n}% - \SetMathAlphabet{\mathbf}{tudnormal}{OT1}{#1}{\tud@cdfont@bf}{n}% - \SetMathAlphabet{\mathbf}{tudbold}{OT1}{#1}{\tud@cdfont@ebf}{n}% - \SetMathAlphabet{\mathsf}{tudnormal}{OT1}{#1}{\tud@cdfont@md}{n}% - \SetMathAlphabet{\mathsf}{tudbold}{OT1}{#1}{\tud@cdfont@bf}{n}% - \SetMathAlphabet{\mathit}{tudnormal}{OT1}{#1}{\tud@cdfont@md}{it}% - \SetMathAlphabet{\mathit}{tudbold}{OT1}{#1}{\tud@cdfont@bf}{it}% - \SetMathAlphabet{\mathtt}{tudnormal}{OT1}{#2}{\tud@ttfont@md}{n}% - \SetMathAlphabet{\mathtt}{tudbold}{OT1}{#2}{\tud@ttfont@bf}{n}% +% \end{macrocode} +% Wurde das Paket \pkg{fontspec} mit der Option \opt{math} geladen, so wird +% durch dieses die Symbolschrift \val{legacymaths} erstellt. Diese wird +% gegebenenfalls für die Mathematikversionen sinnvoll definiert. +% \begin{macrocode} + \AtBeginDocument{% + \tud@if@issymbolfont{legacymaths}{% + \SetSymbolFont{legacymaths}{#1}{OT1}{#3}{#4}{n}% + \SetSymbolFont{legacymaths}{#2}{OT1}{#3}{#5}{n}% + }{}% + }% \if@tud@cdoldfont@active% - \SetMathAlphabet{\mathrm}{tuddin}{OT1}{\tud@cdfont@db}{b}{n}% - \SetMathAlphabet{\mathbf}{tuddin}{OT1}{\tud@cdfont@db}{b}{n}% - \SetMathAlphabet{\mathsf}{tuddin}{OT1}{\tud@cdfont@db}{b}{n}% - \SetMathAlphabet{\mathit}{tuddin}{OT1}{\tud@cdfont@db}{b}{sl}% - \SetMathAlphabet{\mathtt}{tuddin}{OT1}{#2}{\tud@ttfont@ebf}{n}% + \def\tud@res@a{OT1}% + \else% + \let\tud@res@a\tud@x@mathastext@enc% \fi% + \SetMathAlphabet{\mathrm}{#1}{\tud@res@a}{#3}{#4}{n}% + \SetMathAlphabet{\mathrm}{#2}{\tud@res@a}{#3}{#5}{n}% + \SetMathAlphabet{\mathbf}{#1}{\tud@res@a}{#3}{#5}{n}% + \SetMathAlphabet{\mathbf}{#2}{\tud@res@a}{#3}{#6}{n}% + \SetMathAlphabet{\mathsf}{#1}{\tud@res@a}{#3}{#4}{n}% + \SetMathAlphabet{\mathsf}{#2}{\tud@res@a}{#3}{#5}{n}% + \SetMathAlphabet{\mathit}{#1}{\tud@res@a}{#3}{#4}{it}% + \SetMathAlphabet{\mathit}{#2}{\tud@res@a}{#3}{#5}{it}% + \SetMathAlphabet{\mathtt}{#1}{\tud@res@a}{#7}{#8}{n}% + \SetMathAlphabet{\mathtt}{#2}{\tud@res@a}{#7}{#9}{n}% \IfFileExists{ueus.fd}{% - \SetMathAlphabet{\mathcal}{tudnormal}{U}{eus}{m}{n}% - \SetMathAlphabet{\mathcal}{tudbold}{U}{eus}{b}{n}% - \if@tud@cdoldfont@active% - \SetMathAlphabet{\mathcal}{tuddin}{U}{eus}{b}{n}% - \fi% + \SetMathAlphabet{\mathcal}{#1}{U}{eus}{m}{n}% + \SetMathAlphabet{\mathcal}{#2}{U}{eus}{b}{n}% }{}% \tud@if@ismathalphabet{\mathfrak}{% \IfFileExists{ueuf.fd}{% - \SetMathAlphabet{\mathfrak}{tudnormal}{U}{euf}{m}{n}% - \SetMathAlphabet{\mathfrak}{tudbold}{U}{euf}{b}{n}% - \if@tud@cdoldfont@active% - \SetMathAlphabet{\mathfrak}{tuddin}{U}{euf}{b}{n}% - \fi% + \SetMathAlphabet{\mathfrak}{#1}{U}{euf}{m}{n}% + \SetMathAlphabet{\mathfrak}{#2}{U}{euf}{b}{n}% }{}% }{}% % \end{macrocode} -% Das Paket \pkg{cmbright} stelt zusätzlich noch Schriftschnitte für die +% Das Paket \pkg{cmbright} stellt zusätzlich noch Schriftschnitte für die % Symbolschriften \val{AMSa} und \val{AMSb} bereit, welche gegebenenfalls für % die alten Schriften geladen werden. % \begin{macrocode} @@ -3258,18 +3281,19 @@ \tud@if@issymbolfont{AMSb}{\@tud@res@swatrue}{}% \if@tud@res@swa% \if@tud@cdoldfont@active% - \DeclareFontFamily{U}{\tud@cdfont@fam@lf a}{}% - \DeclareFontShape{U}{\tud@cdfont@fam@lf a}{m}{n}{<->cmbras10}{}% - \SetSymbolFont{AMSa}{tudnormal}{U}{\tud@cdfont@fam@lf a}{m}{n}% - \SetSymbolFont{AMSa}{tudbold}{U}{\tud@cdfont@fam@lf a}{m}{n}% - \DeclareFontFamily{U}{\tud@cdfont@fam@lf b}{}% - \DeclareFontShape{U}{\tud@cdfont@fam@lf b}{m}{n}{<->cmbrbs10}{}% - \SetSymbolFont{AMSb}{tudnormal}{U}{\tud@cdfont@fam@lf b}{m}{n}% - \SetSymbolFont{AMSb}{tudbold}{U}{\tud@cdfont@fam@lf b}{m}{n}% + \DeclareFontFamily{U}{#3a}{}% + \DeclareFontShape{U}{#3a}{m}{n}{<->cmbras10}{}% + \SetSymbolFont{AMSa}{#1}{U}{#3a}{m}{n}% + \SetSymbolFont{AMSa}{#2}{U}{#3a}{m}{n}% + \DeclareFontFamily{U}{#3b}{}% + \DeclareFontShape{U}{#3b}{m}{n}{<->cmbrbs10}{}% + \SetSymbolFont{AMSb}{#1}{U}{#3b}{m}{n}% + \SetSymbolFont{AMSb}{#2}{U}{#3b}{m}{n}% % \end{macrocode} % Wurde ein Paket geladen, welches die \pkg{amsfonts}-Schriftfamilie definiert, % so wird bei der Verwendung von \OpenSans eine Information ausgegeben, dass im % Zweifel das Paket \pkg{mdsymbol} besser zu den Schriften des \CDs passt. +% \ToDo{hinweis zu mdsymbol raus, bzw. Laden verzögern!}[v2.07] % \begin{macrocode} \else% \@ifpackageloaded{mdsymbol}{}{% @@ -3288,37 +3312,99 @@ }% \fi% \fi% + }% +} % \end{macrocode} -% Wurde das Paket \pkg{fontspec} mit der Option \opt{math} geladen, so wird -% durch dieses die Symbolschrift \val{legacymaths} erstellt. Diese wird -% gegebenenfalls für die Mathematikversionen sinnvoll definiert. +% Auch für die Schrift \DIN werden mathematische Glyphen bereitgestellt. Diese +% wurden schon bei der Installation aus dem \pkg{iwona}-Paket entnommen. % \begin{macrocode} - \tud@if@issymbolfont{legacymaths}{% - \SetSymbolFont{legacymaths}{tudnormal}{OT1}{#1}{\tud@cdfont@md}{n}% - \SetSymbolFont{legacymaths}{tudbold}{OT1}{#1}{\tud@cdfont@bf}{n}% - \if@tud@cdoldfont@active% - \SetSymbolFont{legacymaths}{tuddin}{OT1}{\tud@cdfont@db}{b}{n}% - \fi% +\if@tud@cdoldfont@active + \newcommand*\tud@cdmath@db@init[1]{% + \DeclareMathVersion{tuddin}% + \SetSymbolFont{operators}{tuddin}{OT1}{#1}{b}{n}% + \SetSymbolFont{letters}{tuddin}{OML}{#1}{b}{it}% + \SetSymbolFont{symbols}{tuddin}{OMS}{#1}{b}{n}% + \SetSymbolFont{largesymbols}{tuddin}{OMX}{iwona}{ebc}{n}% + \AtBeginDocument{% + \tud@if@issymbolfont{legacymaths}{% + \SetSymbolFont{legacymaths}{tuddin}{OT1}{#1}{b}{n}% + }{}% + }% + \SetMathAlphabet{\mathnormal}{tuddin}{OML}{#1}{b}{it}% + \tud@if@ismathalphabet{\mathbold}{% + \SetMathAlphabet{\mathbold}{tuddin}{OML}{#1}{b}{it}% + }{}% + \SetMathAlphabet{\mathrm}{tuddin}{OT1}{#1}{b}{n}% + \SetMathAlphabet{\mathbf}{tuddin}{OT1}{#1}{b}{n}% + \SetMathAlphabet{\mathsf}{tuddin}{OT1}{#1}{b}{n}% + \SetMathAlphabet{\mathit}{tuddin}{OT1}{#1}{b}{it}% + \IfFileExists{ueus.fd}{% + \SetMathAlphabet{\mathcal}{tuddin}{U}{eus}{b}{n}% + }{}% + \tud@if@ismathalphabet{\mathfrak}{% + \IfFileExists{ueuf.fd}{% + \SetMathAlphabet{\mathfrak}{tuddin}{U}{euf}{b}{n}% + }{}% }{}% % \end{macrocode} % Daran anschließend wird die zuvor definierte Schrift in einer Box verwendet, % um das Laden der Schriftdefinitionen am Dokumentbeginn zu forcieren. % \begin{macrocode} - \if@tud@cdoldfont@active% + \AtBeginDocument{% \if@tud@cdmath@active% - \sbox\z@{\mathversion{tudnormal}$ $\mathversion{tuddin}$ $}% + \sbox\z@{\mathversion{normal}$ $\mathversion{tuddin}$ $}% \fi% - \fi% + }% + }% +\fi +% \end{macrocode} +% Um das Umschalten der Mathematikversion mit \cs{mathversion} auch nutzen zu +% können, wenn \pkg{mathastext} für die Schriften des \CDs aktiv ist, wird ein +% Wrappermakro benötigt, welches im Bedarfsfall\cs{MTversion*} aufruft. Hierfür +% wird zunächst auf die gewünschte Mathematikversion, danach der originale +% Befehl \cs{mathversion} wiederhergestellt, aufgerufen und anschließend wieder +% auf das Wrappermakro \cs{tud@mathversion} zurückgesetzt. +% \begin{macrocode} +\AfterPackage*{mathastext}{% + \newrobustcmd*\tud@mathversion[1]{% + \begingroup% + \let\tud@res@a\relax% + \if@tud@cdmath@active% + \tud@if@strequal{#1}{normal}{% + \edef\tud@res@a{\tud@cdmath@normal@name}% + }{% + \tud@if@strequal{#1}{bold}{% + \edef\tud@res@a{\tud@cdmath@bold@name}% + }{}% + }% + \fi% + \edef\tud@res@a{% + \endgroup% + \noexpand\tud@cs@restore{mathversion}% + \ifx\tud@res@a\relax% + \noexpand\mathversion{#1}% + \else% + \noexpand\MTversion*{\tud@res@a}% + \fi% + \noexpand\tud@cs@store{mathversion}% + \noexpand\tud@cs@letltx{mathversion}{tud@mathversion}% + }% + \tud@res@a% + \ifcsundef{mv@#1}{}{\edef\math@version{#1}}% + }% + \AtEndPreamble{% + \tud@cs@store{mathversion}% + \tud@cs@letltx{mathversion}{tud@mathversion}% }% } % \end{macrocode} -% \end{macro}^^A \MTversion@@ % \end{macro}^^A \MTDeclareVersion % \end{macro}^^A \tud@mathversion -% \end{macro}^^A \mv@tuddin -% \end{macro}^^A \mv@tudbold -% \end{macro}^^A \mv@tudnormal -% \end{macro}^^A \tud@x@mathastext@enc +% \end{macro}^^A \tud@cdmath@bold@name +% \end{macro}^^A \tud@cdmath@normal@name +% \end{macro}^^A \tud@cdmath@set +% \end{macro}^^A \tud@cdmath@db@init +% \end{macro}^^A \tud@cdmath@@@init % \end{macro}^^A \tud@cdmath@@init % \end{macro}^^A \tud@cdmath@init % \begin{macro}{\tud@cdmath@declare@symb} @@ -3362,8 +3448,8 @@ } % \end{macrocode} % Die an \cs{tud@cdmath@declare@symb} und \cs{tud@cdmath@declare@char} -% übergebene Letter für Auswahlbefehle erhalten \cs{tud@cdmath@symbol@} als -% Präfix, wodurch sich die Definitionen für die einzelnen Mathematikversionen +% übergebenen Letter für Auswahlbefehle nutzen |\tud@cdfont@symbol@...| als +% Präfix, wodurch sich die Definitionen für einzelne Mathematikversionen % beliebig tauschen lassen. % \begin{macrocode} \newcommand*\tud@DeclareMathSymbol[4]{% @@ -3393,12 +3479,12 @@ % \changes{v2.06}{2019/06/19}{neu}^^A % \begin{macro}{\tud@cdmath@symbols@reset} % \changes{v2.04}{2015/03/10}{neu}^^A -% Mit diesen beiden Befehlen kann innerhalb des Dokumentes problemlos zwischen +% Durch diese Befehle kann innerhalb des Dokumentes problemlos zwischen % mathematischen Symbolen und Zeichen für die Schriften des \CDs, welche mit % \cs{tud@cdmath@declare@symb} sowie \cs{tud@cdmath@declare@char} deklariert % wurden, und den normalen gewechselt werden. % \begin{macrocode} -\newtoks\tud@cdmath@symbols@toks +\tud@newtoks\tud@cdmath@symbols@toks \newcommand*\tud@cdmath@symbols@set{% % \end{macrocode} % Die Sicherung der alten Definitionen erfolgt nur einmalig. Die Liste der @@ -3449,10 +3535,10 @@ % \begin{macrocode} \newcommand*\tud@cdmath@symbols@set@chr[1]{% \edef\tud@res@a{\global\mathcode`#1=\the\mathcode`#1\relax}% - \eaddto@hook\tud@cdmath@symbols@toks{\tud@res@a}% + \addto@hook@expandafter\tud@cdmath@symbols@toks{\tud@res@a}% % \end{macrocode} % Für das Überschreiben des \cs{mathcode} des gewünschen \meta{Zeichen} wird -% dieser aus der Bedeutung von \cs{tud@cdmath@symbols@\meta{Zeichen}} mit +% dieser aus der Bedeutung von |\tud@cdmath@symbols@|\meta{Zeichen} mit % \cs{meaning} herausgelöst. % \begin{macrocode} \begingroup% @@ -3478,14 +3564,14 @@ % % In Anlehnung an verschiedene Pakete für Mathematikschriften werden Symbole % für aufrechte und kursive Majuskeln der griechischen Lettern definiert. Damit -% auch bei diesen Buchstaben ein Umschalten für die unterschiedlichen Schriften -% möglich ist, wird eine interne Version definiert und im Bedarfsfall der -% dazugehörige \LaTeX-Befehl mit dieser überschrieben. Hierfür sind die Befehle +% auch bei diesen ein Umschalten für die unterschiedlichen Schriften möglich +% ist, wird eine interne Version definiert und im Bedarfsfall der dazugehörige +% \LaTeX-Befehl mit dieser überschrieben. Hierfür sind die beiden Befehle % \cs{tud@cdmath@symbols@set} und \cs{tud@cdmath@symbols@reset} verantwortlich, % welche die von \cs{tud@cdmath@declare@symb} und \cs{tud@cdmath@declare@char} % erzeugten Listen \cs{tud@cdmath@symb@list} und \cs{tud@cdmath@char@list} % nutzen. -% \ToDo{Codierungen \val{LS1/LS2}; siehe \pkg{stix,libertinust1math}}[v2.??] +% \ToDo{Kodierungen \val{LS1/LS2}; siehe \pkg{stix,libertinust1math}}[v2.08] % \begin{macro}{\tud@cdmath@declare@greek@uc} % \changes{v2.04}{2015/03/10}{neu}^^A % Hiermit werden die Auswahlbefehle für Majuskeln der der griechischen Lettern @@ -3500,18 +3586,18 @@ % \end{macro}^^A \tud@cdmath@declare@greek@uc % \begin{macro}{\tud@cdmath@declare@greek@lc} % \changes{v2.06}{2018/07/17}{neu}^^A -% Aufrechte griechische Minuskeln sind in den mathematischen Kodierungen von -% \LaTeXe{} leider nicht enthalten, weshalb diese hier auch nicht für die +% Aufrechte griechische Minuskeln sind in den mathematischen Kodierungen von +% \LaTeX{} leider nicht enthalten, weshalb diese hier auch nicht für die % normale OML-Kodierung deklariert werden können. % \begin{macrocode} \newcommand*\tud@cdmath@declare@greek@lc[1]{% \tud@cdmath@declare@symb{it#1}{\mathalpha}{letters}{\the\tud@res@cnt}% % \end{macrocode} % Für aufrechte griechische Minuskeln gibt es gewöhnlich keine Symbolschrift, -% weshalb der Eintrag \cs{up\meta{Letter}} in \cs{tud@cdmath@symb@list} gesetzt -% wird, was mit einem fehlenden \cs{tud@cdmath@symbol@\meta{Letter}} zu einem -% undefinierten \cs{up\meta{Letter}} bei \opt{cdmath=true} führt. -% \ToDo{falls irgendwann erweiterte OML-Kodierung existiert, dann nutzen}[v2.??] +% weshalb der Eintrag |\up|\meta{Letter} in \cs{tud@cdmath@symb@list} gesetzt +% wird, was mit einem fehlenden |\tud@cdmath@symbol@|\meta{Letter} zu einem +% undefinierten |\up|\meta{Letter} bei \opt{cdmath=true} führt. +% \ToDo{falls irgendwann erweiterte OML-Kodierung existiert, dann nutzen}[v2.08] % \begin{macrocode} %^^A \tud@cdmath@declare@symb{it##1}{\mathalpha}{letters}% %^^A {\the\numexpr\tud@res@cnt+128\relax}% @@ -3526,10 +3612,10 @@ % \changes{v2.06}{2019/06/19}{neu}^^A % \changes{v2.06d}{2019/08/27}{Ligaturen für Lua\LaTeX{} deaktiviert}^^A % \changes{v2.06n}{2021/07/15}{\cs{mathord} statt \cs{mathalpha}}^^A -% Die \OpenSans hält die griechischen Glyphen nur in der LGR-Kodierung bereit. +% Die \OpenSans hält die griechischen Lettern nur in der LGR-Kodierung bereit. % Hiermit werden diese für den mathematischen Satz definiert. Die übergebenen % Argumente an das Makro \cs{tud@cdmath@declare@greek@@lgr} sind Bezeichnung -% und LGR-Slot der Glyphe. +% und LGR-Slot der Letter. % \begin{macrocode} \newcommand*\tud@cdmath@declare@greek@lgr{% \tud@cdmath@declare@greek@@lgr{Gamma}{71}% @@ -3608,7 +3694,7 @@ % \begin{macro}{\tud@cdmath@also@@@greeks} % \changes{v2.06}{2019/06/19}{neu}^^A % Das ist quasi das Gegenstück zu \cs{tud@math@map@greeks}. Alle bekannten -% Variationen der Auswahlbefehle für griechische Glyphen werden durch die +% Variationen der Auswahlbefehle für griechische Lettern werden durch die % Definitionen für die Mathematikschriften im \CD gespiegelt. % \begin{macrocode} \newcommand*\tud@cdmath@also@greeks{% @@ -3631,7 +3717,7 @@ }% } \newcommand*\tud@cdmath@also@@@greeks[1]{% - \tud@lowerstring\tud@res@a{#1}% + \tud@strlowercase\tud@res@a{#1}% \edef\tud@res@a{Up\tud@res@a}% \ifcsundef{\tud@res@a}{}{% \expandafter\tud@cdmath@declare@alias\expandafter{\tud@res@a}{up#1}% @@ -3648,25 +3734,24 @@ % Mit diesem Befehl werden die Einstellungen für den Mathematiksatz übernommen. % Die Option \opt{cdmath} wird ausgewertet, um zwischen dem Standard"~ und % neuem Mathematiksatz hin"~ und herschalten zu können. Dabei wird zum einen -% das Mapping der griechischen Glyphen geändert, zum anderen werden die +% das Mapping der griechischen Lettern geändert, zum anderen werden die % originalen Mathematikversionen überschrieben respektive wiederhergestellt. % \begin{macrocode} -\newcommand*\tud@math@set{% +\newcommand*\tud@math@set[1][\tud@cdmath@wrn]{% % \end{macrocode} % Beim Aktivieren der Mathematikschriften im \CD werden einmalig alle Warnungen % ausgegeben, falls bei der Initialisierung Probleme aufgetreten sind und % dementsprechend der Hook \cs{tud@cdmath@wrn} gefüllt wurde. % \begin{macrocode} \if@tud@cdmath@active% - \tud@cdmath@wrn% + #1% \tud@cs@store{mv@normal}% \tud@cs@store{mv@bold}% - \let\mv@normal\mv@tudnormal% - \let\mv@bold\mv@tudbold% + \tud@cdmath@set% \tud@cdmath@symbols@set% % \end{macrocode} % Anschließend erfolgt~-- abhängig von der Option \opt{slantedgreek}~-- die -% Einstellung der Neigung der griechischen Glyphen. +% Einstellung der Neigung der griechischen Lettern. % \begin{macrocode} \ifcase\tud@slantedgreek@num\relax% upright \tud@math@loop@greeks@all\tud@math@upright@greeks% @@ -3677,11 +3762,17 @@ \tud@math@loop@greeks@lc\tud@math@slanted@greeks% \fi% \else% +% \end{macrocode} +% \ToDo{\opt{slantedgreek} auswerten?}[v2.07] +% \begin{macrocode} \tud@cs@restore{mv@normal}% \tud@cs@restore{mv@bold}% \tud@cdmath@symbols@reset% \fi% - \mathversion{normal}% +% \end{macrocode} +% Zuletzt wird die aktuell gewählte Mathematikversion erneut aufgerufen. +% \begin{macrocode} + \expandafter\mathversion\expandafter{\math@version}% } % \end{macrocode} % \end{macro}^^A \tud@math@set @@ -3689,8 +3780,8 @@ % \changes{v2.06}{2018/07/02}{neu}^^A % \begin{macro}{\tud@math@slanted@greeks} % \changes{v2.06}{2018/07/02}{neu}^^A -% Mit den beiden Befehlen kann die Definition der griechischen Buchstaben -% entweder auf aufrecht bzw. kursiv gesetzt werden. +% Mit den beiden Befehlen kann die Definition der griechischen Lettern entweder +% auf aufrecht bzw. kursiv gesetzt werden. % \begin{macrocode} \newcommand*\tud@math@upright@greeks[1]{% \ifcsundef{up#1}{}{% @@ -3707,126 +3798,25 @@ % \end{macrocode} % \end{macro}^^A \tud@math@slanted@greeks % \end{macro}^^A \tud@math@upright@greeks -% Sämtliche Schrifteinstellungen erfolgen erst am Ende der Präambel, um etwaige -% Einstellungen irgendwelcher Schriftpakete beachten zu können. Dabei erfolgt -% das Setzen der Mathematikschriften durch \cs{AtBeginDocument} innerhalb von -% \cs{AtEndPreamble} am Ende \emph{aller} \cs{AtBeginDocument}. -% \begin{macrocode} -\AtEndPreamble{% -% \end{macrocode} -% Falls das Paket \pkg{mweights} geladen wurde, werden im Bedarfsfall die vom -% Paket erwarteten Makros für die Schriftstärken der einzelnen Schriftfamilien -% definiert. Beim Aufruf von \cs{tud@font@set} werden diese anschließend -% gesichert. -% \begin{macrocode} - \if@tud@x@mweights@enabled% - \ifundef{\bfseries@rm}{\edef\bfseries@rm{\bfdefault}}{}% - \ifundef{\mdseries@rm}{\edef\mdseries@rm{\mddefault}}{}% - \ifundef{\bfseries@sf}{\edef\bfseries@sf{\bfdefault}}{}% - \ifundef{\mdseries@sf}{\edef\mdseries@sf{\mddefault}}{}% - \ifundef{\bfseries@tt}{\edef\bfseries@tt{\bfdefault}}{}% - \ifundef{\mdseries@tt}{\edef\mdseries@tt{\mddefault}}{}% - \fi% -% \end{macrocode} -% Hier wird auf das Vorhandensein aller benötigten Schriften geprüft. -% \begin{macrocode} - \tud@cdfont@check% -% \end{macrocode} -% Damit \pkg{tudscrfonts} reibungslos mit den nachfolgenden Definitionen -% funktioniert, wird im Bedarfsfall der Befehl \cs{sectfont} vorgehalten. -% \begin{macrocode} -% \ifdef{\sectfont}{}{\let\sectfont\relax}% -% \end{macrocode} -% Nachdem auf die Schriften geprüft wurde, werden noch die Schriftschalter und -% die dazugehörigen Befehle definiert. Auch die mathematischen Schriften werden -% initialisiert. -% \begin{macrocode} - \tud@cdfont@init% - \tud@ttfont@init% - \tud@cdmath@init% -% \end{macrocode} -% Die Einstellungen für den Mathematiksatz erfolgen erst zu Dokumentbeginn, um -% auf Einstellungen von anderen Schriftpaketen reagieren zu können. Da es -% so gut wie keine freien OpenType-Schriften für den mathmatischen Formelsatz -% gibt, werden \emph{immer} die Type1-Schriften verwendet, falls diese -% installiert sind. Wurde jedoch das Paket \pkg{bm} angefordert, so müssen die -% Mathematikschriften spätestens zum Ende der Präambel initialisiert werden. -% \begin{macrocode} - \if@tud@x@bm@requested% - \UnPreventPackageFromLoading{bm}% - \if@tud@cdmath@active% - \tud@cs@store{mv@normal}% - \tud@cs@store{mv@bold}% - \let\mv@normal\mv@tudnormal% - \let\mv@bold\mv@tudbold% - \fi% - \RequirePackage{bm}[2017/01/16]% - \tud@cs@restore{mv@normal}% - \tud@cs@restore{mv@bold}% - \fi% -% \end{macrocode} -% Wurde das Paket \pkg{siunitx} geladen, so werden die Schrifteinstellungen -% mit \opt{cdfont}|=|\val{false} deaktiviert und zu Beginn des Dokumentes -% auf die aktuelle Einstellung gesetzt. -% \begin{macrocode} - \if@tud@x@siunitx@enabled% - \if@tud@cdfont@active% - \if@tud@cdfont@heavy% - \def\tud@reserved{\TUDoptions{cdfont=heavy}}% - \else% - \def\tud@reserved{\TUDoptions{cdfont=true}}% - \fi% - \else% - \def\tud@reserved{\TUDoptions{cdfont=false}}% - \fi% - \expandafter\AfterEndPreamble\expandafter{\tud@reserved}% - \TUDoptions{cdfont=false}% - \fi% -% \end{macrocode} -% Damit die Schrift im Dokument später noch umgestellt werden kann, werden -% sämtliche Einstellungen erst am Ende der Präambel gesichert. Deshalb wird -% der dafür verantwortliche Befehl \cs{tud@font@set} hier zum ersten Mal -% verwendet. Damit ist es möglich, die Schriften eventuell geladener Pakete wie -% \pkg{lmodern} oder \pkg{libertine} vorher zu sichern und später wieder zu -% aktivieren. -% \begin{macrocode} - \tud@font@set% -% \end{macrocode} -% Bereitstellung der Auswahlbefehle für griechische Glyphen in der Nomenklatur -% von \TUDScript (\cs{up\meta{Letter}}, \cs{it\meta{Letter}}). -% \begin{macrocode} - \tud@math@map@greeks% -% \end{macrocode} -% Für die griechischen Glyphen wird mit \cs{tud@math@checkslanted@greeks} -% geprüft, ob diese durch ein Paket explizit auf kursive Majuskeln oder eine -% vollständig aufrechte Variante gesetzt wurden. Ist dies der Fall, wird der -% Standardwert für die Option \opt{slantedgreek} entsprechend angepasst. -% \begin{macrocode} - \tud@math@checkslanted@greeks% -% \end{macrocode} -% Nachdem alle Vorbereitungen getroffen wurden, werden die Schriften für den -% mathematischen Satz nun endlich gesetzt. -% \begin{macrocode} - \AtBeginDocument{\tud@math@set}% -} -% \end{macrocode} % % \iffalse %<*class> % \fi % -% \subsubsection{Schriften für die speziellen Seitenstile} +% \subsubsection{Schriften für die Seitenstile der \TUDScript-Klassen} % % \begin{macro}{\tud@head@font@set} % \changes{v2.02}{2014/07/08}{Unterstützung für \opt{cdhead} hinzugefügt}^^A % \changes{v2.03}{2015/01/30}{Bugfix für die Änderung von \cs{spaceskip} durch % das Paket \pkg{ragged2e}}^^A -% \begin{macro}{\tud@head@cdfont@set}% +% \begin{macro}{\tud@head@cdfont@set} % \changes{v2.06}{2018/06/29}{neu}^^A % \begin{macro}{\tud@head@font@light} % \begin{macro}{\tud@head@font@bold} % \begin{macro}{\tud@head@font@@bold} % \changes{v2.05}{2016/04/17}{neu}^^A +% \begin{macro}{\tud@font@phantomglyphs} +% \changes{v2.06o}{2022/07/25}{neu}^^A % Die Schrift der Kopfzeile wird entweder in den Schriften des \CDs oder aber % in den serifenlosen Standardschriften gesetzt, wobei für beide Varianten % sowohl eine fettgedruckte als auch eine normale Version benötigt wird. Die @@ -3836,6 +3826,7 @@ % wird verwendet, um die Einstellung der fetten Schriften ohne die fixierte % Schriftgröße nutzen zu können. % \begin{macrocode} +\newcommand*\tud@font@phantomglyphs{\"A\"O\"Ugjpqy} \newcommand*\tud@head@font@light{} \newcommand*\tud@head@font@bold{} %\newcommand*\tud@head@font@@bold{} @@ -3865,22 +3856,22 @@ \if@tud@head@font@set% \if@tud@x@mweights@enabled% \DeclareFixedFont{\tud@head@font@light}{\encodingdefault}% - {\sfdefault}{\mdseries@sf}{\updefault}{\tud@head@fontsize}% + {\sfdefault}{\mdseries@sf}{\shapedefault}{\tud@head@fontsize}% \DeclareFixedFont{\tud@head@font@bold}{\encodingdefault}% - {\sfdefault}{\bfseries@sf}{\updefault}{\tud@head@fontsize}% + {\sfdefault}{\bfseries@sf}{\shapedefault}{\tud@head@fontsize}% %<*poster> \protected\gdef\tud@head@font@@bold{% - \usefont{\encodingdefault}{\sfdefault}{\bfseries@sf}{\updefault}% + \usefont{\encodingdefault}{\sfdefault}{\bfseries@sf}{\shapedefault}% }% % \else% \DeclareFixedFont{\tud@head@font@light}{\encodingdefault}% - {\sfdefault}{\mddefault}{\updefault}{\tud@head@fontsize}% + {\sfdefault}{\mddefault}{\shapedefault}{\tud@head@fontsize}% \DeclareFixedFont{\tud@head@font@bold}{\encodingdefault}% - {\sfdefault}{\bfdefault}{\updefault}{\tud@head@fontsize}% + {\sfdefault}{\bfdefault}{\shapedefault}{\tud@head@fontsize}% %<*poster> \protected\gdef\tud@head@font@@bold{% - \usefont{\encodingdefault}{\sfdefault}{\bfdefault}{\updefault}% + \usefont{\encodingdefault}{\sfdefault}{\bfdefault}{\shapedefault}% }% % \fi% @@ -3943,6 +3934,7 @@ }% \fi % \end{macrocode} +% \end{macro}^^A \tud@font@phantomglyphs % \end{macro}^^A \tud@head@font@@bold % \end{macro}^^A \tud@head@font@bold % \end{macro}^^A \tud@head@font@light @@ -3951,9 +3943,286 @@ % % \iffalse % +% \fi +% +% \subsection{Kompatibilität der Schriften} +% \subsubsection{Majuskel-ß für Unicode-Prozessoren} +% +% Es wird für die Majuskelvariante der Letter \enquote*{ß} eine Rückfallebene +% (Substitution mit \enquote*{SS}) definiert, da diese für Unicode-Engines +% standardmäßig nicht bereitgestellt wird. Um diese zu erkennen, wird auf die +% gleiche Methodik wie im Paket \pkg{newunicodechar} zurückgegriffen. +% \begin{macrocode} +\begingroup +\catcode`\^=7 +\catcode30=12 +\catcode`\!=12 +\edef\tud@reserved{\@gobble^^^^0021} +\expandafter\endgroup +% \end{macrocode} +% Wurde eine Unicode-Engine erkannt (|^^^^0021| wird als ein Token gelesen), +% dann werden die Kodierungen für kleines und großes \enquote*{ß} dahingehend +% angepasst, dass diese \enquote*{ss} bzw. \enquote*{SS} verwenden, wenn die +% entsprechende Letter nicht vorhanden ist. +% \begin{macrocode} +\ifx\tud@reserved\@empty + \RequirePackage{newunicodechar} + \uccode"00DF="1E9E + \lccode"1E9E="00DF + \newunicodechar{^^^^00df}{\iffontchar\font"00DF \symbol{"00DF}\else ss\fi} + \newunicodechar{^^^^1e9e}{\iffontchar\font"1E9E \symbol{"1E9E}\else SS\fi} +\fi +% \end{macrocode} +% +% \subsubsection{Ausrichtung von Überschriften und das Paket \pkg{ragged2e}} +% +% \begin{macro}{\tud@raggedright} +% \begin{macro}{\tud@RaggedRight} +% Die Überschriften sollen laut \CD linksbündig und ohne Silbentrennung gesetzt +% werden. Normalerweise ist das dies beim linksbündigen Satz bei \LaTeX{} der +% Fall. Allerdings ist es mit dem Paket \pkg{ragged2e} möglich, das Verhalten +% für den Flattersatz zu ändern und die Silbentrennung zu aktivieren. Mit der +% Option \opt{newcommands} werden dabei die originalen Befehle überschrieben, +% vorher jedoch beispielsweise in \cs{LaTeXraggedright} gesichert. Diese Makros +% dienen dazu, die Überschriften in jedem Fall~-- auch bei der Verwendung von +% \pkg{ragged2e} mit der Option \opt{newcommands}~-- ohne Trennungen zu setzen. +% \begin{macrocode} +\newcommand*\tud@raggedright{\raggedright} +\newcommand*\tud@RaggedRight{\raggedright} +\AfterPackage*{ragged2e}{% + \ifundef{\LaTeXraggedright}{}{% + \renewcommand*\tud@raggedright{\LaTeXraggedright}% + }% + \renewcommand*\tud@RaggedRight{\RaggedRight}% +} +% \end{macrocode} +% \end{macro}^^A \tud@RaggedRight +% \end{macro}^^A \tud@raggedright +% +% \subsubsection{Anpassungen für das Paket \pkg{siunitx}} +% +% \begin{macro}{\lseries} +% \begin{macro}{\tud@x@siunitx@mapping} +% \changes{v2.06o}{2022/08/08}{neu} +% \begin{macro}{\tud@x@siunitx@reset} +% \changes{v2.06o}{2022/07/31}{neu} +% \begin{macrocode} +\AfterAtEndOfPackage*{siunitx}{% + \IfPackageAtLeastTF{siunitx}{2021-04-18}{% +% \end{macrocode} +% Das Paket \pkg{siunitx} in der Version |v3| stellt eine Schnittstelle für +% die Zuordnung von Schriftschnitten zur verwendeten Mathematikversionen zur +% Verfügung. Da vorher erheblicher Aufwand betrieben wurde, die korrekten +% Schriftschnitte im Mathematikmodus mit den Versionen |normal| und |bold| +% bereitzustellen, werden bei aktivierten Schriften des \CDs die entsprechenden +% Zuordnungen gesetzt. +% \begin{macrocode} + \newcommand*\tud@x@siunitx@mapping{% + \if@tud@cdfont@active + \csname keys_set:nx\endcsname { siunitx / series-version-mapping } + { + \tud@cdfont@md = normal, + \tud@cdfont@bf = bold, + \tud@cdfont@ebf = bold + } + \else +% \end{macrocode} +% Zurücksetzen auf die Standardeinstellungen von \pkg{siunitx}. +% \begin{macrocode} + \csname keys_set:nn\endcsname { siunitx / series-version-mapping } + { + ul = light , + el = light , + l = light , + sl = light , + m = normal , + sb = bold , + b = bold , + eb = bold , + ub = bold + } + \fi + } + \xapptocmd\tud@font@set% + {\tud@x@siunitx@mapping}% + {}{\tud@patch@wrn{tud@font@set}}% + }{% +% \end{macrocode} +% Das Paket \pkg{siunitx} in der Version |v2| nutzt den Befehl \cs{lseries} für +% den Fall, dass für den Fließtext eine Schrift die Serie \val{l} verwendet. +% Dem wird hier Rechnung getragen. Außerdem muss bei der Auswahl der Schriften +% evtl. auf das Paket reagiert werden, weil es sich bei der Definition der +% Schriften für den Mathematikmodus auf \cs{familydefault} bzw. \cs{rmfamily} +% verlässt. Deshalb werden am Ende der Präambel die Schrifteinstellungen mit +% \opt{cdfont}|=|\val{false} deaktiviert und zu Beginn des Dokumentes auf die +% aktuelle Einstellung gesetzt. Dieser etwas merkwürdige Workaround geht auf +% die gemeldeten Probleme im \GitHubRepo<22> sowie im \Forum<503> zurück. +% \begin{macrocode} + \newcommand*\tud@x@siunitx@reset{}% + \providecommand*\lseries{\fontseries{l}\selectfont}% + \AtEndPreamble{% + \if@tud@cdfont@active% + \if@tud@cdfont@heavy% + \def\tud@x@siunitx@reset{\TUDoptions{cdfont=heavy}}% + \else% + \def\tud@x@siunitx@reset{\TUDoptions{cdfont=true}}% + \fi% + \appto\tud@x@siunitx@reset{\tud@font@set[]}% + \TUDoptions{cdfont=false}% + \tud@font@set[]% + \fi% + }% + \AtBeginDocument{\tud@x@siunitx@reset}% + } +} +% \end{macrocode} +% \end{macro}^^A \tud@x@siunitx@reset +% \end{macro}^^A \tud@x@siunitx@mapping +% \end{macro}^^A \lseries +% +% \subsubsection{Mathematikschriften in Verbindung mit dem Paket \pkg{bm}} +% +% \begin{macro}{\tud@x@bm@delayed} +% \begin{macro}{\if@tud@x@bm@requested} +% Das Paket \pkg{bm} stellt den Befehl \cs{bm} für fette und kursive Symbole im +% Mathematiksatz bereit. Damit dies funktioniert, muss das Laden des Paketes +% auf das Ende der Präambel verzögert werden, um zuvor alle Einstellungen für +% die mathematischen Symbole vornehmen zu können. Dieser Workaround geht auf +% eine Meldung im \Forum<448> zurück. +% \begin{macrocode} +\tud@newif\if@tud@x@bm@requested +%<*package> +\@ifpackageloaded{bm}{% + \PackageWarning{tudscrfonts}{% + Package `bm' must be loaded after `tudscrfonts'. \MessageBreak% + Otherwise the functionality can not be guaranteed% + }% +}{% +% +\PreventPackageFromLoading[\@tud@x@bm@requestedtrue]{bm} +%<*package> +} +% +% \end{macrocode} +% Wird das Paket verzögert geladen, so werden die Mathematikschriften des \CDs +% aktiviert (falls zuvor angefordert), damit die durch das Paket \pkg{bm} +% vollzogenen Einstellungen für diese auch wirksam werden. Anschließend wird +% der Ausgangszustand wiederhergestellt, um den späteren und erstmaligen Aufruf +% von \cs{tud@math@set} vollständig abarbeiten zu können. +% \begin{macrocode} +\newcommand*\tud@x@bm@delayed{% + \if@tud@x@bm@requested% + \UnPreventPackageFromLoading{bm}% + \if@tud@cdmath@active% + \tud@cs@store{mv@normal}% + \tud@cs@store{mv@bold}% + \tud@cdmath@set% + \fi% + \RequirePackage{bm} + \tud@cs@restore{mv@normal}% + \tud@cs@restore{mv@bold}% + \fi% + \let\tud@x@bm@delayed\relax% +} +% \end{macrocode} +% Für die \OpenSans kommt das Paket \pkg{mathastext} zum Einsatz. In diesem +% Fall muss das Paket \pkg{bm} bereits zuvor geladen werden. +% \begin{macrocode} +\BeforePackage{mathastext}{\tud@x@bm@delayed} +% \end{macrocode} +% \end{macro}^^A \if@tud@x@bm@requested +% \end{macro}^^A \tud@x@bm@delayed +% +% \subsubsection{Anpassungen für die Klasse \cls{beamer}} +% +% Die \cls{beamer}-Klasse lädt standardmäßig serifenlose Mathematikschriften. +% Dies soll verhindert werden, damit die Auswahl über die Option \opt{cdmath} +% erfolgen kann. +% \begin{macrocode} +%<*package> +\AfterClass*{beamer}{\usefonttheme[onlymath]{serif}} +% +% \end{macrocode} +% +% \subsection{Aktivieren der gewählten Schriften} +% +% Die eigentliche Schriftauswahl erfolgt~-- abhängig von den zuvor gesetzten +% Einstellungen~-- erst am Ende der Präambel, um etwaige Voreinstellungen +% anderer Schriftpakete beachten zu können. Dabei erfolgt die Auswahl der +% Schriften für den Mathematiksatz durch \cs{AtBeginDocument} innerhalb von +% \cs{AtEndPreamble} am Ende \emph{möglichst aller} \cs{AtBeginDocument}. +% \ToDo{das passt mit den neuen hooks so nicht mehr unbedingt}[v2.07] +% \begin{macrocode} +\AtEndPreamble{% +% \end{macrocode} +% Falls das Paket \pkg{mweights} geladen wurde, werden im Bedarfsfall die vom +% Paket erwarteten Makros für die Schriftstärken der einzelnen Schriftfamilien +% definiert. Beim Aufruf von \cs{tud@font@set} werden diese anschließend +% gesichert. +% \begin{macrocode} + \if@tud@x@mweights@enabled% + \ifundef{\bfseries@rm}{\edef\bfseries@rm{\bfdefault}}{}% + \ifundef{\mdseries@rm}{\edef\mdseries@rm{\mddefault}}{}% + \ifundef{\bfseries@sf}{\edef\bfseries@sf{\bfdefault}}{}% + \ifundef{\mdseries@sf}{\edef\mdseries@sf{\mddefault}}{}% + \ifundef{\bfseries@tt}{\edef\bfseries@tt{\bfdefault}}{}% + \ifundef{\mdseries@tt}{\edef\mdseries@tt{\mddefault}}{}% + \fi% +% \end{macrocode} +% Hier wird auf das Vorhandensein aller benötigten Schriften geprüft. +% \begin{macrocode} + \tud@cdfont@check% +% \end{macrocode} +% Nachdem auf die Schriften geprüft wurde, werden noch die Schriftschalter und +% die dazugehörigen Befehle definiert. Auch die mathematischen Schriften werden +% initialisiert. +% \begin{macrocode} + \tud@cdfont@init% + \tud@ttfont@init% +% \end{macrocode} +% Damit die Schrift im Dokument später noch umgestellt werden kann, werden +% sämtliche Einstellungen erst am Ende der Präambel gesichert. Deshalb wird +% der dafür verantwortliche Befehl \cs{tud@font@set} hier zum ersten Mal +% verwendet. Damit ist es möglich, die Schriften eventuell geladener Pakete wie +% \pkg{lmodern} oder \pkg{libertine} vorher zu sichern und später wieder zu +% aktivieren. +% \begin{macrocode} + \tud@font@set% +% \end{macrocode} +% Die Definitionen für den Mathematiksatz erfolgen erst zu Dokumentbeginn, um +% auf Einstellungen von anderen Schriftpaketen reagieren zu können. Wurde +% jedoch das Paket \pkg{bm} angefordert, so müssen die Mathematikschriften +% bereits zum Ende der Präambel über \cs{tud@x@bm@delayed} initialisiert werden. +% \begin{macrocode} + \tud@cdmath@init% + \tud@x@bm@delayed% +% \end{macrocode} +% Bereitstellung der Auswahlbefehle für griechische Lettern in der Nomenklatur +% von \TUDScript (|\up|\meta{Letter}, |\it|\meta{Letter}). +% \begin{macrocode} + \tud@math@map@greeks% +% \end{macrocode} +% Für die griechischen Lettern wird mit \cs{tud@math@checkslanted@greeks} +% geprüft, ob diese durch ein Paket explizit auf kursive Majuskeln oder eine +% vollständig aufrechte Variante gesetzt wurden. Ist dies der Fall, wird der +% Standardwert für die Option \opt{slantedgreek} entsprechend angepasst. +% \begin{macrocode} + \tud@math@checkslanted@greeks% +% \end{macrocode} +% Nachdem alle Vorbereitungen getroffen wurden, werden die Schriften für den +% mathematischen Satz nun endlich gesetzt. +% \begin{macrocode} + \AtBeginDocument{\tud@math@set}% +% \end{macrocode} +% \ToDo{Hook definieren, um Anwender eigenen Kram definieren zu lassen}[v2.07] +% \begin{macrocode} +} +% \end{macrocode} +% +% \iffalse % % \fi % -% \Finale +% \PrintBackMatter % \endinput diff --git a/macros/latex/contrib/tudscr/source/tudscr-frontmatter.dtx b/macros/latex/contrib/tudscr/source/tudscr-frontmatter.dtx index eef1321553..671929edd5 100644 --- a/macros/latex/contrib/tudscr/source/tudscr-frontmatter.dtx +++ b/macros/latex/contrib/tudscr/source/tudscr-frontmatter.dtx @@ -1,10 +1,10 @@ -% \CheckSum{817} % \iffalse meta-comment +%/GitFileInfo=tudscr-frontmatter.dtx % % TUD-Script -- Corporate Design of Technische Universität Dresden % ---------------------------------------------------------------------------- % -% Copyright (C) Falk Hanisch , 2012-2021 +% Copyright (C) Falk Hanisch , 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-frontmatter.dtx +% \iffalse ins:batch + dtx:driver +%<*ins> +\ifx\documentclass\undefined + \input docstrip.tex + \ifToplevel{\batchinput{tudscr.ins}} +\else + \let\endbatchfile\relax +\fi +\endbatchfile +% %<*dtx> -% \fi -% -\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi -\ProvidesFile{tudscr-frontmatter.dtx}[2020/07/27 v2.06i TUD-Script\space% - (frontmatter)% -] -% -% \iffalse +\ProvidesFile{tudscr-frontmatter.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-frontmatter.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} @@ -83,6 +62,8 @@ % \changes{v2.02}{2014/07/08}{\cs{FamilyKeyState} wird von Optionen genutzt}^^A % \changes{v2.05}{2015/07/07}{Umgebung \env{abstract} für Poster}^^A % +% +% % \section{Befehle und Umgebungen für den Vorspann} % % Im Vorspann des Dokumentes kann der Benutzer eine Zusammenfassung oder auch @@ -93,10 +74,7 @@ % werden die Begriffe \enquote*{Zusammenfassung}, \enquote*{Kurzfassung} sowie % \enquote*{Erklärung} für die unterschiedlichen Elemente als gleichwertige % Synonyme verwendet. Die Schalter und Befehle zum Setzen der Optionen heißen -% entweder \cs{tud@abstract@\dots} oder aber \cs{tud@declaration@\dots} je nach -% Element. -% -% \StopEventually{\PrintIndex\PrintChanges\PrintToDos} +% entweder |\tud@abstract@...| oder |\tud@declaration@...| je nach Element. % % \iffalse %<*class&body> @@ -118,7 +96,7 @@ % \end{macrocode} % Danach erfolgt ggf. die Prüfung der resultierenden Seitenhöhe. % \begin{macrocode} - \ifnumless{\csuse{tud@#1@level@num}}{3}{% false/true/section + \ifnum\csuse{tud@#1@level@num}<3\relax% false/true/section \ifboolexpr{% bool {@titlepage} and bool {@tud@#1@fil} and bool {@tud@#1@multi}% }{% @@ -145,12 +123,12 @@ % jede Erklärung immer auf eine neue Seite gesetzt. Die Optionen zum vertikalen % Zentrieren wird ignoriert. Auf eine Warnung für den Anwender wird verzichtet. % \begin{macrocode} - }{% chapter + \else% chapter %<*book|report> \boolfalse{@tud@#1@multi}% \boolfalse{@tud@#1@fil}% % - }% + \fi% % \end{macrocode} % Zum Schluss wird ggf. der gesammelte Eintrag im Inhaltsverzeichnis erstellt. % Danach wird das übergebene Argument ausgeführt. @@ -176,50 +154,49 @@ % % \begin{macro}{\tud@fm@toc} % \changes{v2.04}{2015/03/20}{neu}^^A -% \changes{v2.06}{2018/02/22}{% -% Bugfix: \cs{csuse\{phantomsection\}} für Anker% -% }^^A +% \changes{v2.06}{2018/02/22}{Bugfix: \cs{phantomsection} für Anker}^^A % \begin{macro}{\tud@fm@@toc} % \changes{v2.04}{2015/03/20}{neu}^^A -% \begin{macro}{\tud@fm@@@toc} -% \changes{v2.04}{2015/03/20}{neu}^^A % Ist die Einstellung \val{tocaggregate} aktiv, wird der gesammelte Eintrag ins % Inhaltsverzeichnis generiert. % \begin{macrocode} \newcommand*\tud@fm@@toc{} -\newcommand*\tud@fm@@@toc{} \newcommand*\tud@fm@toc[2]{% % \end{macrocode} -% Der gesammelte Eintrag aller Überschriften ins Inhaltsverzeichnis. +% Der gesammelte Eintrag aller Überschriften ins Inhaltsverzeichnis. Dafür +% wird der komplette Inhalt in einer Box gesetzt und nur die Überschriften +% aggregiert. % \begin{macrocode} \ifbool{@tud@#1@multi}{% \begingroup% - \let\tud@fm@@@toc\@empty% + \let\tud@fm@@toc\@empty% \renewcommand*\tud@fm@head[2]{% - \protected@edef\@tempa{##2}% - \protected@xdef\tud@fm@@toc{\tud@fm@@@toc\@tempa}% - \protected@xdef\tud@fm@@@toc{\tud@fm@@toc/}% + \protected@xdef\tud@fm@@toc{% + \ifx\tud@fm@@toc\@empty\else\tud@fm@@toc/\fi##2% + }% }% \let\clearpage\relax% \sbox\z@{\vbox{#2}}% \csuse{phantomsection}% \protected@edef\@tempa{% - \noexpand\endgroup% - \noexpand\ifnumodd{\csname tud@#1@toc@num\endcsname}{% + \endgroup% + \ifx\tud@fm@@toc\@empty\else% + \ifodd\csuse{tud@#1@toc@num}\relax %<*book|report> - \noexpand\addchaptertocentry{}{\tud@fm@@toc}% + \noexpand\addchaptertocentry{}{\tud@fm@@toc}% % %<*article> - \noexpand\addsectiontocentry{}{\tud@fm@@toc}% + \noexpand\addsectiontocentry{}{\tud@fm@@toc}% % - }{% + \else %<*book|report> - \noexpand\addsectiontocentry{}{\tud@fm@@toc}% + \noexpand\addsectiontocentry{}{\tud@fm@@toc}% % %<*article> - \noexpand\addsubsectiontocentry{}{\tud@fm@@toc}% + \noexpand\addsubsectiontocentry{}{\tud@fm@@toc}% % - }% + \fi + \fi% }% \@tempa% }{% @@ -239,7 +216,6 @@ }% } % \end{macrocode} -% \end{macro}^^A \tud@fm@@@toc % \end{macro}^^A \tud@fm@@toc % \end{macro}^^A \tud@fm@toc % @@ -257,10 +233,10 @@ % \changes{v2.04}{2015/03/20}{Reimplementierung}^^A % \changes{v2.05}{2015/07/14}{Bugfix bei vertikaler Zentrierung}^^A % Mit diesen Makros werden bei der Ausgabe der einzelnen Erklärungen alle -% relevanten Optionen\footnote{\ignorespaces% -% \opt{titlepage}, \opt{twocolumn}, \opt{abstract/declaration}|=|\val{multi}, -% \opt{abstract/declaration}|=|\val{fill}\ignorespaces% -% } ausgewertet und die notwendigen vertikalen Abstände entsprechend gesetzt. +% relevanten Optionen\footnote{\opt{titlepage}, \opt{twocolumn}, +% \opt{abstract/declaration}|=|\val{multi}, +% \opt{abstract/declaration}|=|\val{fill}} +% ausgewertet und die notwendigen vertikalen Abstände entsprechend gesetzt. % Dabei wird durch jede Zusammenfassung bzw. Erklärung \cs{tud@fm@set} über % \cs{tud@fm@body@start} verwendet. Der Inhalt der beiden Umgebungen % \env{abstract} und \env{descriptions} wird mit \cs{tud@fm@check} ausgegeben. @@ -410,7 +386,7 @@ % \changes{v2.02}{2014/11/05}{Bugfix Kolumnentitel und Inhaltsverzeichnis}^^A % \changes{v2.04}{2015/04/21}{Abstände nur, wenn keine Zitatumgebung aktiv}^^A % Dieses Makro dient zur Ausgabe der Erklärungsüberschrift auf der gewünschten -% Gliederungsebene. Die gewählte Ebene ist in \cs{tud@\meta{Typ}@level@num} +% Gliederungsebene. Die gewählte Ebene ist in |\tud@|\meta{Typ}|@level@num| % gespeichert. Verwendet wird das Makro folgendermaßen: % \cs{tud@fm@head}\marg{Erklärungstyp}\marg{Überschrift}. Damit % die ggf. aktive Option \opt{abstract/declaration}|=|\val{toc} funktionieren @@ -418,7 +394,7 @@ % mit dem Befehl \cs{phantomsection} aus dem Paket \pkg{hyperref}~-- wenn es % tatsächlich geladen wurde~-- ein Anker für einen Hyperlink erzeugt. % -% Ist \cs{tud@\meta{Typ}@toc@num} ungerade, so entspricht die Ebene des +% Ist |\tud@|\meta{Typ}|@toc@num| ungerade, so entspricht die Ebene des % erzeugten Eintrags ins Inhaltsverzeichnis für \cls{tudscrartcl} normalerweise % dem eines Abschnitts, der für \cls{tudscrbook} und \cls{tudscrreprt} dem eines % Kapitels.\footnote{sonst sieht das Inhaltsverzeichnis recht bescheiden aus} @@ -429,19 +405,20 @@ \ifcase\csuse{tud@#1@level@num}\relax% false \if@titlepage\endgraf\fi% \csuse{phantomsection}% - \ifstr{\@currenvir}{\tud@quoting}{}{% + \tud@if@strequal{\@currenvir}{\tud@quoting}{}{% \if@twocolumn% - \vskip\dimexpr\smallskipamount-\parskip\relax% + \vskip\smallskipamount% \else% - \vskip\dimexpr\bigskipamount-\parskip\relax% + \vskip\bigskipamount% \fi% + \vskip-\parskip% }% \or% true \if@titlepage\endgraf\fi% \csuse{phantomsection}% \@afterindentfalse% - \ifstr{\@currenvir}{\tud@quoting}{}{% - \vskip\dimexpr\bigskipamount-\parskip\relax% + \tud@if@strequal{\@currenvir}{\tud@quoting}{}{% + \vskip\bigskipamount\vskip-\parskip% }% \begingroup% \noindent\centering% @@ -450,7 +427,7 @@ \endgraf% \endgroup% \nopagebreak% - \vskip\dimexpr\medskipamount-\parskip\relax% + \vskip\medskipamount\vskip-\parskip% \@afterheading% \or% section \section*{#2}% @@ -544,7 +521,7 @@ % \changes{v2.02}{2014/11/05}{neu}^^A % Das aus \KOMAScript{} bekannte Verhalten für die Zusammenfassung wird für die % beiden Klassen \cls{tudscrartcl} und \cls{tudscrreprt} adaptiert. Dazu werden -% boolesche Schlüssel bei der Definiton der beiden Optionen \opt{abstract} und +% boolesche Schlüssel bei der Definition der beiden Optionen \opt{abstract} und % \opt{declaration} eingefügt. Außerdem werden zusätzliche Werte zur Auswahl % einer Gliederungsebene für die gesetzten Überschriften wie \cs{section} oder % \cs{chapter}\footnote{nicht für \cls{tudscrartcl}} oder bereitgestellt, @@ -553,7 +530,7 @@ % % Des Weiteren werden mehrere Schlüssel für die Anordnung und Positionierung % von Zusammenfassung bzw. Erklärungen bereitgestellt. Diese dienen dem Setzen -% der Optionen \opt{abstract} bzw. \opt{declaration} mit den Werten +% der Optionen \opt{abstract} bzw. \opt{declaration} mit den Werten % \val{single/multi}, \val{toc/notoc}, \val{fill/nofill} sowie \val{leveldown}. % \begin{macrocode} \newcommand*\tud@fm@switch{% @@ -639,7 +616,7 @@ % auf die gleiche Seite wie die erste zu setzen. Gesetzt wird der Schalter über % die Option \opt{abstract}|=|\val{single/multi}. % \begin{macrocode} -\newif\if@tud@abstract@multi +\tud@newif\if@tud@abstract@multi \@tud@abstract@multitrue % \end{macrocode} % \end{macro}^^A \if@tud@abstract@multi @@ -648,7 +625,7 @@ % vertikal zentriert wird. Er wird mit \opt{abstract}|=|\val{fill/nofill} % gesetzt und ist normalerweise aktiviert. % \begin{macrocode} -\newif\if@tud@abstract@fil +\tud@newif\if@tud@abstract@fil \@tud@abstract@filtrue % \end{macrocode} % \end{macro}^^A \if@tud@abstract@fil @@ -657,7 +634,7 @@ % Dieser Schalter setzt rechten und linken Kolumnentitel automatisch auf die % verwendete Überschrift. % \begin{macrocode} -\newif\if@tud@abstract@markboth +\tud@newif\if@tud@abstract@markboth % \end{macrocode} % \end{macro}^^A \if@tud@abstract@markboth % @@ -765,6 +742,7 @@ % \begin{macrocode} \DefineFamilyMember{KOMA} \DefineFamilyKey{KOMA}{abstract}[true]{% + \FamilyKeyStateUnknownValue% \AtEndOfFamilyOptions{\TUDoptions{abstract=#1}}% } % \end{macrocode} @@ -789,14 +767,15 @@ % \begin{macro}{\nextabstract} % \changes{v2.02}{2014/11/05}{neu}^^A % Die \env{abstract}-Umgebung wird komplett überarbeitet. Um alle gewünschten -% Optionen\footnote{\ignorespaces% -% \opt{titlepage}, \opt{twocolumn}, \opt{abstract}|=|\val{multi}, -% \opt{abstract}|=|\val{fill}\ignorespaces% -% } sowie Gliederungsebene der Überschrift beachten zu können, wird auf die +% Optionen\footnote{\opt{titlepage}, \opt{twocolumn}, +% \opt{abstract}|=|\val{multi}, \opt{abstract}|=|\val{fill}} +% sowie Gliederungsebene der Überschrift beachten zu können, wird auf die % Möglichkeiten der Definition mit \cs{NewEnviron} aus dem Paket \pkg{environ} % zurückgegriffen. Damit ist es möglich, gezielt auf den Inhalt der Umgebung % selbst mit dem Befehl \cs{BODY} zuzugreifen. Dieser Mechanismus wird % innerhalb von \cs{tud@abstractbody} verwendet. +% \ToDo{parameter title, um \cs{abstractname} lokal zu ändern}[v2.07] +% \ToDo{eher NewDocumentEnvironment nutzen?}[v2.07] % \begin{macrocode} %<*report|article|poster> \undef\abstract @@ -872,7 +851,7 @@ \else% % \ifnum\tud@abstract@level@num=\tw@\relax% - \vskip\dimexpr\bigskipamount-\parskip\relax% + \vskip\bigskipamount\vskip-\parskip% \fi% %<*book|report|article> \fi% @@ -892,7 +871,7 @@ % gesetzt, falls kein anderer mit \opt{pagestyle} angegeben wurde. % \begin{macrocode} \TUD@parameter@def{markboth}[true]{% - \ifstrbool{#1}{% + \tud@if@strbool{#1}{% \@tud@abstract@markbothtrue% \ifx\tud@envir@ps\relax\def\tud@envir@ps{headings}\fi% }{% @@ -911,6 +890,7 @@ % oder eine alternative Sprache angegeben werden. Für die Auswertung des % Argumentes verantwortlich ist der Befehl \cs{TUD@parameter@handler@default}, % welcher auch von der Umgebung \env{tudpage} verwendet wird. +% \ToDo{unbekannte Schlüssel als Werte an \prm{abstract}}[v2.07]^^A % \begin{macrocode} \TUD@parameter@handler@default{}% } @@ -964,11 +944,11 @@ \newcommand*\tud@declaration@level@num{3} \tud@locked@newnum{tud@declaration@toc@num}{1} % -\newif\if@tud@declaration@multi +\tud@newif\if@tud@declaration@multi \@tud@declaration@multitrue -\newif\if@tud@declaration@fil +\tud@newif\if@tud@declaration@fil \@tud@declaration@filtrue -\newif\if@tud@declaration@markboth +\tud@newif\if@tud@declaration@markboth % \end{macrocode} % \end{macro}^^A \if@tud@declaration@markboth % \end{macro}^^A \if@tud@declaration@fil @@ -1075,7 +1055,7 @@ % \cs{declaration}, \cs{confirmation} und \cs{blocking} innerhalb und außerhalb % dieser Umgebung verwenden zu können. % \begin{macrocode} -\newif\if@tud@declarations +\tud@newif\if@tud@declarations \NewEnviron{declarations}[1][]{% \@tud@declarationstrue% %<*book|report> @@ -1125,7 +1105,7 @@ \clearpage% \else% \ifnum\tud@declaration@level@num=\tw@\relax% - \vskip\dimexpr\bigskipamount-\parskip\relax% + \vskip\bigskipamount\vskip-\parskip% \fi% \fi% ] @@ -1134,13 +1114,14 @@ % \cs{confirmation} und \cs{blocking}. Die Schlüssel \opt{declaration} bzw. % \opt{option} dienen zum Setzen der Werte, welche auch als Klassenoptionen % gesetzt werden können. +% \ToDo{unbekannte Schlüssel als Werte an \prm{declaration}}[v2.07]^^A % \begin{macrocode} \TUD@parameter@family{declaration}{% \TUD@parameter@def{language}{\selectlanguage{#1}}% \TUD@parameter@def{columns}{\renewcommand*\tud@x@multicol@num{#1}}% \TUD@parameter@def{pagestyle}{\tud@fm@pagestyle{declaration}{#1}}% \TUD@parameter@def{markboth}[true]{% - \ifstrbool{#1}{% + \tud@if@strbool{#1}{% \@tud@declaration@markbothtrue% \ifx\tud@envir@ps\relax\def\tud@envir@ps{headings}\fi% }{% @@ -1205,17 +1186,17 @@ }% } \newcommand*\tud@fm@declaration[1][]{% - \ifbool{@tud@declarations}{% + \if@tud@declarations% \begingroup% - \tud@fm@@confirmation[\tud@fm@supporter,#1]% - \tud@fm@blocking[#1]% + \tud@fm@@confirmation[{\tud@fm@supporter,#1}]% + \tud@fm@blocking[{#1}]% \endgroup% - }{% - \begin{declarations}[\tud@fm@supporter,#1]% + \else% + \begin{declarations}[{\tud@fm@supporter,#1}]% \tud@fm@@confirmation% \tud@fm@blocking% \end{declarations}% - }% + \fi% } % \end{macrocode} % Mit \cs{nextdeclaration} kann eine freie Erklärung abgegeben werden. Dabei @@ -1225,16 +1206,16 @@ % \cs{tud@fm@body@start} und \cs{tud@fm@body@end} notwendig ist. % \begin{macrocode} \newcommand*\nextdeclaration[3][]{% - \ifbool{@tud@declarations}{% + \if@tud@declarations% \tud@fm@body@start{declaration}{#1}{#2}% #3% \tud@fm@body@end{declaration}% - }{% + \else% \ClassError{\TUD@Class@Name}{Incorrect usage of `\string\nextdeclaration'}{% The command `\string\nextdeclaration' can only be used\MessageBreak% within the environment `declarations'.% }% - }% + \fi% } % \end{macrocode} % \end{macro}^^A \nextdeclaration @@ -1267,17 +1248,18 @@ % Damit das optionale Argument ohne Schlüssel für die Unterstützer verwendet % werden kann, wird der Handler lokal umdefiniert. Außerdem werden irrelevante % Parameter undefiniert gesetzt. +% \ToDo{Schlüssel \prm{confirmation} als Alias für \prm{declaration}}[v2.07]^^A % \begin{macrocode} \begingroup% \TUD@parameter@handler@default[declaration]{supporter}% \undef\KV@declaration@company% - \ifbool{@tud@declarations}{% - \tud@fm@@confirmation[\tud@fm@supporter,#1]% - }{% - \begin{declarations}[\tud@fm@supporter,#1]% + \if@tud@declarations% + \tud@fm@@confirmation[{\tud@fm@supporter,#1}]% + \else% + \begin{declarations}[{\tud@fm@supporter,#1}]% \tud@fm@@confirmation% \end{declarations}% - }% + \fi% \endgroup% } % \end{macrocode} @@ -1285,7 +1267,7 @@ % \begin{macrocode} \newcommand*\tud@fm@@confirmation[1][]{% \tud@fm@body@start{declaration}{#1}{\confirmationname}% - \confirmationtext\vskip\z@\@confirmationclosing% + \confirmationtext\vskip\z@skip\@confirmationclosing% \tud@fm@body@end{declaration}% } % \end{macrocode} @@ -1300,6 +1282,7 @@ % \changes{v2.02}{2014/07/18}{neu}^^A % Für den Sperrvermerk wird äquivalent zu \cs{confirmation} verfahren. Das % optionale Argument ohne Schlüssel setzt hier die Firma für den Sperrvermerk. +% \ToDo{Schlüssel \prm{blocking} als Alias für \prm{declaration}}[v2.07]^^A % \begin{macrocode} \newcommand*\blocking[1][]{% \begingroup% @@ -1307,13 +1290,13 @@ \undef\KV@declaration@supporter% \undef\KV@declaration@closing% \undef\KV@declaration@confirmationclosing% - \ifbool{@tud@declarations}{% - \tud@fm@blocking[#1]% - }{% - \begin{declarations}[#1]% + \if@tud@declarations% + \tud@fm@blocking[{#1}]% + \else% + \begin{declarations}[{#1}]% \tud@fm@blocking% \end{declarations}% - }% + \fi% \endgroup% } % \end{macrocode} @@ -1333,6 +1316,6 @@ % % \fi % -% \Finale +% \PrintBackMatter % \endinput diff --git a/macros/latex/contrib/tudscr/source/tudscr-gitinfo.dtx b/macros/latex/contrib/tudscr/source/tudscr-gitinfo.dtx new file mode 100644 index 0000000000..de4f35647e --- /dev/null +++ b/macros/latex/contrib/tudscr/source/tudscr-gitinfo.dtx @@ -0,0 +1,359 @@ +% \iffalse meta-comment +%/GitFileInfo=tudscr-gitinfo.dtx +% +% TUD-Script -- Corporate Design of Technische Universität Dresden +% ---------------------------------------------------------------------------- +% +% Copyright (C) Falk Hanisch , 2012-2022 +% +% ---------------------------------------------------------------------------- +% +% This work may be distributed and/or modified under the conditions of the +% LaTeX Project Public License, version 1.3c of the license. The latest +% version of this license is in http://www.latex-project.org/lppl.txt and +% version 1.3c or later is part of all distributions of LaTeX 2005/12/01 +% or later and of this work. This work has the LPPL maintenance status +% "author-maintained". The current maintainer and author of this work +% is Falk Hanisch. +% +% ---------------------------------------------------------------------------- +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz +% in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle +% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und +% Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01 +% oder später und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status +% "author-maintained", wird somit allein durch den Autor verwaltet. Der +% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch. +% +% ---------------------------------------------------------------------------- +% +% \fi +% +% \iffalse comment +% Nicht verwirren lassen! In dieser Datei steht ein Teil der Dokumentation und +% des Codes vor dem Treiber. Das ist notwendig, weil der Teil des Codes bereits +% am Anfang des Treibers selbst benötigt wird. Genauer gesagt handelt es sich +% dabei um den Teil zur Versionsangbabe. +% \fi +% +% \selectlanguage{ngerman} +% +% +% +% \section{Versionsinformationen aus dem GitHub-Repository} +% +% Um sich das ganze Aktualisieren von irgendwelchen Versionangaben zu sparen, +% werden diese einfach aus dem GitHub-Repository übernommen. Hierfür ist ein +% externer Aufruf von \file{git~log} notwendig, die Informationen werden dabei +% in die Datei \file{\GitContainerFile} (\cs{GitContainerFile}) +% geschrieben und entweder während des Durchlaufs mit \app{docstrip} oder aber +% beim Erzeugen der Doku mithilfe des Paketes \pkg{tudscr-gitinfo} ausgelesen. +% +% \subsection{GitHub-Versionsinformationen für \app{docstrip}} +% +% \begin{macro}{\GitFileInfo} +% \changes{v2.06o}{2022/08/09}{neu}^^A +% \begin{macro}{\GitContainerFile} +% \changes{v2.06o}{2022/08/09}{neu}^^A +% \begin{macro}{\InputGitContainer} +% \changes{v2.06o}{2022/08/09}{neu}^^A +% In \cs{GitContainerFile} wird der Name der Datei gespeichert, welche die +% Versionsinformationen für alle Quelldateien enthält. Diese definiert für alle +% relevanten Dateien Makros in der Form +% |\|\meta{Dateiname}|-ver{|\meta{Datum}| |\meta{Zeit}| |\meta{Hash}|}|. Diese +% Datei wird eingebunden, falls vorhanden sowie der Befehl \cs{GitFileInfo} für +% das Hinzufügen der Versionsinformationen für das Erzeugen der Zieldateien mit +% \app{docstrip} definiert. +% \begin{macrocode} +\def\GitContainerFile{tudscr-gitinfo-ver.aux} +%<*!package> +\begingroup + \catcode`\@11\relax% + \ifx\documentclass\undefined% + \ifx\@@input\undefined\global\let\@@input\input\fi% + \newread\@inputcheck% + \immediate\openin\@inputcheck=\GitContainerFile\relax% + \ifeof\@inputcheck% + \global\let\InputGitContainer\relax% + \else% + \gdef\InputGitContainer{\@@input\GitContainerFile\relax}% + \fi% + \closein\@inputcheck% + \gdef\GitFileInfo#1{% + \MetaPrefix\MetaPrefix\space From File:\space#1\space% + \expandafter\ifx\csname#1-ver\endcsname\relax% + (no git version info was found)% + \else% + \csname#1-ver\endcsname% + \fi% + }% + \aftergroup\InputGitContainer% + \fi% +\endgroup +\let\InputGitContainer\undefined +% +% \end{macrocode} +% \end{macro}^^A \InputGitContainer +% \end{macro}^^A \GitContainerFile +% \end{macro}^^A \GitFileInfo +% +% \iffalse ins:batch + dtx:driver +%<*ins> +\ifx\documentclass\undefined + \input docstrip.tex + \ifToplevel{\batchinput{tudscr.ins}} +\else + \let\endbatchfile\relax +\fi +\endbatchfile +% +%<*dtx> +\ProvidesFile{tudscr-gitinfo.dtx}[2022/08/09] +\RequirePackage{tudscr-gitinfo} +\documentclass[english,ngerman,xindy]{tudscrdoc} +\iftutex + \usepackage{fontspec} +\else + \usepackage[T1]{fontenc} + \usepackage[ngerman=ngerman-x-latest]{hyphsubst} +\fi +\usepackage{babel} +\usepackage{tudscrfonts} +\usepackage[babel]{microtype} + +\GitHubBase{\TUDScriptRepository} +\begin{document} + \author{Falk Hanisch\TUDScriptContactTitle} + \maketitle + \tableofcontents + \DocInput{\filename} +\end{document} +% +% \fi +% +% \iffalse comment +% Der Rest wird nicht mehr vom Treiber benötigt. +% \fi +% +% \subsection{GitHub-Versionsinformationen für das Paket \pkg{tudscr-gitinfo}} +% +% Gleich zu Beginn werden die Versionsinformationen geladen, wenn dies nicht +% schon passiert ist und diese vorhanden sind. +%^^A https://www.juandebravo.com/2017/12/02/git-filter-smudge-and-clean/ +%^^A https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes#filters_b +%^^A file:///C:/Program%20Files/Git/mingw64/share/doc/git-doc/gitattributes.html +% \begin{macrocode} +\ProvidesPackage{tudscr-gitinfo}[% +%!TUD@Version + package (obtaining git version)% +] +\ifcsname ver@\GitContainerFile\endcsname\else + \InputIfFileExists{\GitContainerFile}{}{}% +\fi +% \end{macrocode} +% \begin{macro}{\GetFileInfo} +% \changes{v2.06o}{2022/08/09}{neu}^^A +% \begin{macro}{\tud@GetFileInfo} +% \changes{v2.06o}{2022/08/09}{neu}^^A +% \begin{macro}{\tud@@GetFileInfo} +% \changes{v2.06o}{2022/08/09}{neu}^^A +% \begin{macro}{\tud@git@file@list} +% \changes{v2.06o}{2022/08/09}{neu}^^A +% Der Befehl \cs{GetFileInfo} hat das gleiche Ziel wie der gleichnamige Befehl +% aus dem Paket \pkg{doc}. Allerdings werden vorliegende Versionsinformationen +% aus einem GitHub-Repository bevorzugt geladen. Das Lesen der Informationen, +% welche mit \cs{ProvidesFile} gegeben werden können, wird lediglich als +% Rückfallebene verwendet. Das angegebene Argument wird für den Dateinamen der +% Quelldatei genutzt, wobei bei einer fehlenden Dateiendung \file{dtx}-Dateien +% gegenüber \file{tex}-Dateien bevorzugt werden. +% \begin{macrocode} +\def\GetFileInfo{\tud@GetFileInfo} +\newcommand*\tud@git@file@list{} +\newcommand*\tud@GetFileInfo[1]{% + \filename@parse{#1}% + \ifx\filename@ext\relax% + \edef\filename{\filename@area\filename@base.dtx}% + \expandafter\IfFileExists\expandafter{\filename}{}{% + \edef\filename{\filename@area\filename@base.tex}% + }% + \else% + \edef\filename{#1}% + \fi% +% \end{macrocode} +% Mit dem Dateinamen werden über \cs{tud@git@log} Versionsinformation aus einem +% GitHub-Repository abgerufen und verwendet (falls vorhanden). Der dazugehörige +% Dateiname wird der Liste \cs{tud@git@file@list} hinzugefügt. +% \begin{macrocode} + \expandafter\tud@git@log\expandafter{\filename}% + \ifcsname\filename-ver\endcsname% + \def\@tempa##1 ##2 ##3\@nil{% + \def\filedate{##1}% + \let\fileversion\@empty% + \def\filerevision{##3}% + }% + \edef\@tempb{\csname\filename-ver\endcsname}% + \expandafter\@tempa\@tempb\@nil% + \let\fileinfo\@empty% + \edef\tud@git@file@list{\tud@git@file@list,\filename}% + \else% +% \end{macrocode} +% Andernfalls wird eine Warnung erzeugt und auf das durch \pkg{doc} definierte +% Verhalten von \cs{GetFileInfo} zurückgeschaltet. +% \begin{macrocode} + \PackageWarningNoLine{tudscr-gitinfo}{No git info found for \filename}% + \expandafter\tud@@GetFileInfo\expandafter{\filename}% + \fi% +} +\newcommand*\tud@@GetFileInfo[1]{% + \@ifundefined{filedate}{\def\filedate{?}}{}% + \@ifundefined{fileversion}{\def\fileversion{?}}{}% + \@ifundefined{filerevision}{\let\filerevision\@empty}{}% + \@ifundefined{fileinfo}{\let\fileinfo\@empty}{}% +% \end{macrocode} +% Verbesserte Variante, um nicht \cs{relax?} in die Felder zu schreiben. +% \begin{macrocode} + \ifcsname ver@\filename\endcsname% + \def\@tempa##1 ##2 ##3\relax##4\relax{% + \def\@tempb####1\relax?####2\@nil{\edef\@tempc{####1}}% + \@tempb##1\relax?\@nil% + \ifx\@tempc\@empty\else% + \let\filedate\@tempc% + \@tempb##2\relax?\@nil% + \ifx\@tempc\@empty\else% + \let\fileversion\@tempc% + \@tempb##3\relax?\@nil% + \ifx\@tempc\@empty\else% + \let\fileinfo\@tempc% + \fi% + \fi% + \fi% + }% + \edef\@tempb{\csname ver@#1\endcsname}% + \expandafter\@tempa\@tempb\relax? ? \relax\relax% + \fi% +} +% \end{macrocode} +% Hiermit wird der Befehl \cs{GetFileInfo} ggf. wieder überschrieben. +% \begin{macrocode} +\RequirePackage{scrlfile}[% +%!TUD@KOMAVersion +] +\AfterPackage*{doc}{\def\GetFileInfo{\tud@GetFileInfo}} +% \end{macrocode} +% \end{macro}^^A \tud@git@file@list +% \end{macro}^^A \tud@@GetFileInfo +% \end{macro}^^A \tud@GetFileInfo +% \end{macro}^^A \GetFileInfo +% \begin{macro}{\tud@git@log} +% \changes{v2.06o}{2022/08/09}{neu}^^A +% \begin{macro}{\tud@git@@log} +% \changes{v2.06o}{2022/08/09}{neu}^^A +% Der Befehl \cs{tud@git@log} definiert für die im Argument angegebene Datei +% das Makro |\|\meta{Dateiname}|-ver| mit den Versionsinformationen, welche mit +% \cs{tud@git@@log} ausgelesen wurden. +% \begin{macrocode} +\RequirePackage{pdftexcmds} +\newcommand*\tud@git@log[1]{% + \ifnum\pdf@shellescape=\@ne% + \begingroup% + \endlinechar=\m@ne% + \everyeof{\noexpand}% + \edef\@tempa{\tud@git@@log{#1}}% + \ifx\@tempa\@empty\else% + \edef\@tempa{% + \unexpanded{\expandafter\gdef\csname #1-ver\endcsname}{\@tempa}% + }% + \@tempa% + \fi% + \endgroup% + \fi% +} +% \end{macrocode} +% Der Befehl \cs{tud@git@@log} startet den Aufruf von \file{git~log} mit den +% notwendigen Formatierungsoptionen. +% \begin{macrocode} +\begingroup +\@makeother\| +\newcommand*\tud@git@@log[1]{} +\xdef\tud@git@@log#1{% + \noexpand\@@input|"git log -1 % + --format='\@percentchar ad \@percentchar h' % + --date=format:'\@percentchar Y/\@percentchar m/\@percentchar d % + \@percentchar H:\@percentchar M:\@percentchar S' % + -- #1" % +} +\endgroup +% \end{macrocode} +% \end{macro}^^A \tud@git@@log +% \end{macro}^^A \tud@git@log +% Am Dokumentende wird für alle Dateien, für die eine Versionsinformation +% gefunden werden konnte und in \cs{tud@git@file@list} gesammelt wurden, diese +% in die externe Datei \cs{GitContainerFile} geschrieben, damit diese auch +% ohne den abermaligen Aufruf mit dem Parameter \file{-{}-shell-escape} genutzt +% werden können. +% \begin{macrocode} +\AtEndDocument{% + \ifnum\pdf@shellescape=\@ne% + \ifx\tud@git@file@list\@empty\else% + \edef\tud@git@file@list{\expandafter\@gobble\tud@git@file@list}% + \def\@tempa{% + \@percentchar\@percentchar\space% + This file was generated with `tudscr-gitinfo.sty'^^J% + \@percentchar\@percentchar\space% + It is intended to be used for generating either a documentation^^J% + \@percentchar\@percentchar\space% + with class `tudscrdoc' or installation files with `docstrip'% + }% + \chardef\reserved@c15 % + \ch@ck7\reserved@c\write% + \immediate\openout\reserved@c\GitContainerFile\relax% + \immediate\write\reserved@c{\@tempa}% + \@for\@tempa:=\tud@git@file@list\do{% + \edef\@tempb{% + \unexpanded{\expandafter\gdef\csname}% + \@tempa-ver% + \noexpand\endcsname% + {\csname\@tempa-ver\endcsname}% + }% + \immediate\write\reserved@c{\unexpanded\expandafter{\@tempb}}% + }% + \immediate\closeout\reserved@c% + \fi% + \fi% +} +% \end{macrocode} +% Am Ende des Paketes werden die Versionsinformationen der aktuellen Datei +% ausgelesen und anschließend mit \cs{ProvidesFile} gesetzt, wobei eine Warnung +% erzeugt wird, wenn für die Datei schon einmal \cs{ProvidesFile} mit einer +% anderen Angabe genutzt wurde. Die zu schreibende Angabe wird hierfür in +% \cs{@tempa} expandiert und mit |\ ver@|\meta{Dateiname} verglichen. +% \begin{macrocode} +\AtEndOfPackage{% + \GetFileInfo{\jobname}% + \edef\@tempa{% + \filedate\space\fileversion\space% + \ifx\filerevision\@empty\else% + \filerevision\ifx\fileinfo\@empty\else\space\fi% + \fi% + \fileinfo% + }% + \ifcsname ver@\filename\endcsname% + \edef\@tempb{\csname ver@\filename\endcsname}% + \ifx\@tempb\filedate\else% + \PackageWarningNoLine{tudscr-gitinfo}{% + The obtained info for \filename\space is\MessageBreak% + \@tempa\MessageBreak% + so the current info\MessageBreak% + \csname ver@\filename\endcsname\MessageBreak% + is overwritten% + }% + \fi% + \fi% + \ProvidesFile{\filename}[\@tempa]% +} +% \end{macrocode} +% +% \PrintBackMatter +% +\endinput diff --git a/macros/latex/contrib/tudscr/source/tudscr-layout.dtx b/macros/latex/contrib/tudscr/source/tudscr-layout.dtx index f44b8687d0..289b3db725 100644 --- a/macros/latex/contrib/tudscr/source/tudscr-layout.dtx +++ b/macros/latex/contrib/tudscr/source/tudscr-layout.dtx @@ -1,10 +1,10 @@ -% \CheckSum{1215} % \iffalse meta-comment +%/GitFileInfo=tudscr-layout.dtx % % TUD-Script -- Corporate Design of Technische Universität Dresden % ---------------------------------------------------------------------------- % -% Copyright (C) Falk Hanisch , 2012-2021 +% Copyright (C) Falk Hanisch , 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-layout.dtx +% \iffalse ins:batch + dtx:driver +%<*ins> +\ifx\documentclass\undefined + \input docstrip.tex + \ifToplevel{\batchinput{tudscr.ins}} +\else + \let\endbatchfile\relax +\fi +\endbatchfile +% %<*dtx> -% \fi -% -\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi -\ProvidesFile{tudscr-layout.dtx}[2019/07/19 v2.06c TUD-Script\space% - (layout)% -] -% -% \iffalse +\ProvidesFile{tudscr-layout.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-layout.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} @@ -82,6 +61,10 @@ % % \changes{v2.02}{2014/07/08}{\cs{FamilyKeyState} wird von Optionen genutzt}^^A % \changes{v2.05}{2015/07/06}{Layout für Poster}^^A +% \changes{v2.06o}{2022/08/02}{\opt{cdfont=false} und \opt{cd=true} setzt +% Überschriften im \CD}^^A +% +% % % \section{Das Layout des \CDs} % @@ -95,8 +78,6 @@ % eine durchweg farbige Version bereitgestellt. Außerdem wird hier das Aussehen % und die Position der Überschriften festgelegt. % -% \StopEventually{\PrintIndex\PrintChanges\PrintToDos} -% % \iffalse %<*class&option> % \fi @@ -140,7 +121,7 @@ % im \pgs{tudheadings}-Stil ist schwarz und wird für die farbigen Layouts auf % dunkelblau gesetzt. Abhängig von der gewählten Option~-- der nummerische Wert % ist über \cs{tud@cd@switch} festgelegt~-- werden die sog. Layoutschlüssel -% (\cs{tud@cd@\meta{Typ}@num}) auf einen Wert gesetzt (0\dots 6), welcher +% (|\tud@cd@|\meta{Typ}|@num|) auf einen Wert gesetzt (0\dots 6), welcher % später ausgewertet werden kann. Der Schalter für Kapitel wird lediglich für % die Klassen \cls{tudscrbook} und \cls{tudscrreprt} definiert und genutzt. % Damit werden alle Komponenten mit einer zentralen Option festgelegt, können @@ -195,13 +176,13 @@ % festgelegt. Dies kann vom Benutzer mit dem Setzen der Option \opt{cdgeometry} % überschrieben werden. % \begin{macrocode} - \if@atdocument\else% + \tud@if@preamble{% \ifcase\tud@cd@num\relax% false \tud@locked@num@preset{tud@cdgeometry@num}{0}% \else% !false \tud@locked@num@preset{tud@cdgeometry@num}{2}% \fi% - \fi% + }{}% \fi% } % \end{macrocode} @@ -311,7 +292,7 @@ % Der Schalter dient zur Steuerung, ob der Titel des Dokumentes wie im Handbuch % des \CDs auf den Teileseiten stehen soll. % \begin{macrocode} -\newif\if@tud@parttitle +\tud@newif\if@tud@parttitle \TUD@key{parttitle}[true]{% \TUD@set@ifkey{parttitle}{@tud@parttitle}{#1}% } @@ -323,7 +304,7 @@ % Mit dieser Option können Kapitelüberschriften alleine auf einer Seite stehen. % Es werden separate Kapitelseiten erzeugt. % \begin{macrocode} -\newif\if@tud@chapterpage +\tud@newif\if@tud@chapterpage \TUD@key{chapterpage}[true]{% \TUD@set@ifkey{chapterpage}{@tud@chapterpage}{#1}% } @@ -333,7 +314,7 @@ % \begin{option}{cleardoublespecialpage} % \changes{v2.02}{2014/07/08}{Werte für Seitenstil aus den \TUDScript- bzw. % \KOMAScript-Klassen möglich}^^A -% \changes{v2.03}{2015/01/09}{Prüfung des Seitenstils mit \cs{AfterPreamble} +% \changes{v2.03}{2015/01/09}{Prüfung des Seitenstils mit \cs{AfterEndPreamble} % auf Beginn des Dokumentes verzögert}^^A % \changes{v2.06}{2018/08/21}{Farbeinstellungen integriert}^^A % \begin{macro}{\tud@cleardoublepage} @@ -356,7 +337,7 @@ % Der Befehl \cs{tud@cleardoublepage} enthält die Definition der zu erzeugenden % Doppelseite. % \begin{macrocode} -\newif\if@tud@clearcolor +\tud@newif\if@tud@clearcolor \newcommand*\tud@cleardoublepage{\cleardoubleoddpage} % \end{macrocode} % Mit der Option \opt{cleardoublespecialpage} kann dieser festgelegt werden. @@ -397,10 +378,10 @@ % Beim Laden der Klasse selbst sind die speziellen Seitenstile der \KOMAScript- % bzw. \TUDScript-Klassen noch nicht definiert. Diese sollen als Werte jedoch % trotzdem erlaubt sein. Deshalb wird für diesen Fall das Überprüfen mit -% \cs{AfterPreamble} auf den Beginn des Dokumentes verzögert. +% \cs{AfterEndPreamble} auf den Beginn des Dokumentes verzögert. % \begin{macrocode} \else% - \AfterPreamble{% + \AfterEndPreamble{% \ifcsundef{ps@#1}{% \ClassError{\TUD@Class@Name}{`#1' is no valid pagestyle}{% You tried to use `#1' as a pagestyle for option\MessageBreak% @@ -483,20 +464,33 @@ % Damit endet der Abschnitt für \cls{tudscrbook}- und \cls{tudscrreprt}-Klasse. % % \begin{macro}{\tud@pagecolor} +% \begin{macro}{\normalcolor} % Der Befehl \cs{tud@pagecolor} dient für die Hauptklassen als Hilfsmakro, um % je nach gewählter Ausprägung des Layouts die farblichen Seitenhintergründe zu % aktivieren. Für die Klasse \cls{tudscrposter} wird der Befehl zusätzlich für % das benutzerdefinierte Festlegen einer standardmäßigen Hintergrundfarbe mit % der Option \opt{backcolor} genutzt. +% +% Für das Aktivieren der Farbe \val{HKS41} wird \cs{normalcolor} erweitert, um +% hier in jedem Fall als Schriftfarbe \emph{weiß} zu verwenden. % \begin{macrocode} \newcommand*\tud@pagecolor{}% +\AfterPackage{xcolor}{% + \apptocmd\normalcolor{% + \tud@if@strequal{\tud@pagecolor}{HKS41}{\color{white}}{}% + }{}{\tud@patch@wrn{normalcolor}}% + \AtBeginDocument{% + \ifdefvoid{\tud@pagecolor}{}{\sbox\z@{\color{\tud@pagecolor}}}% + \normalcolor% + }% +} % \end{macrocode} +% \end{macro}^^A \normalcolor % \end{macro}^^A \tud@pagecolor % \begin{option}{backcolor} % \changes{v2.05}{2016/04/15}{neu}^^A % \begin{option}{backgroundcolor} % \begin{option}{bgcolor} -% \begin{macro}{\normalcolor} % Mit dieser Option kann die standardmäßige Hintergrundfarbe für Poster gesetzt % werden. % \begin{macrocode} @@ -521,41 +515,27 @@ % Wird die Option innerhalb des Dokumentes verwendet, wird mit einer Box erst % die gewählte Farbe verifiziert und anschließend auf die am Dokumentbeginn % definierte Textfarbe umgestellt. +% \ToDo{angucken, was soll das genau?}[v2.07] % \begin{macrocode} - \if@atdocument% + \tud@if@preamble{}{% \ifdefvoid{\tud@pagecolor}{}{\sbox\z@{\color{\tud@pagecolor}}}% \normalcolor% - \fi% + }% } \TUD@key{backgroundcolor}[true]{\TUDoptions{backcolor=#1}} \TUD@key{bgcolor}[true]{\TUDoptions{backcolor=#1}} -% \end{macrocode} -% Für das Aktivieren der Farbe \val{HKS41} wird \cs{normalcolor} erweitert, um -% hier in jedem Fall als Schriftfarbe \emph{weiß} zu verwenden. -% \begin{macrocode} -\AfterPackage{xcolor}{% - \CheckCommand*\normalcolor{\let\current@color\default@color\set@color}% - \apptocmd{\normalcolor}{% - \ifstr{\tud@pagecolor}{HKS41}{\color{white}}{}% - }{}{\tud@patch@wrn{normalcolor}}% - \AtBeginDocument{% - \ifdefvoid{\tud@pagecolor}{}{\sbox\z@{\color{\tud@pagecolor}}}% - \normalcolor% - }% -} % % \end{macrocode} -% \end{macro}^^A \normalcolor % \end{option}^^A bgcolor % \end{option}^^A backgroundcolor % \end{option}^^A backcolor % \begin{option}{pageheadingsvskip} % \changes{v2.05}{2016/06/20}{neu}^^A -% \begin{macro}{\tud@dim@pageheadingsvskip} +% \begin{macro}{\tud@pageheadingsvskip@dim} % \changes{v2.05}{2016/06/20}{neu}^^A % \begin{option}{headingsvskip} % \changes{v2.05}{2016/06/20}{neu}^^A -% \begin{macro}{\tud@dim@headingsvskip} +% \begin{macro}{\tud@headingsvskip@dim} % \changes{v2.05}{2016/06/20}{neu}^^A % Mit diesen Optionen kann der Anwender die Überschriften von Titel, Teilen und % Kapiteln vertikal von ihrer Standardposition verschieben, welche vom \CD @@ -567,19 +547,19 @@ % die des Titelkopfes (\opt{titlepage}|=|\val{false}) verschoben. % \begin{macrocode} %<*book|report|article> -\newcommand*\tud@dim@pageheadingsvskip{0pt} -\TUD@key{pageheadingsvskip}{% - \TUD@set@dimenkey{pageheadingsvskip}{\tud@dim@pageheadingsvskip}{#1}% -} -\newcommand*\tud@dim@headingsvskip{0pt} +\newcommand*\tud@headingsvskip@dim{0pt} \TUD@key{headingsvskip}{% - \TUD@set@dimenkey{headingsvskip}{\tud@dim@headingsvskip}{#1}% + \TUD@set@dimkey{headingsvskip}{\tud@headingsvskip@dim}{#1}% +} +\newcommand*\tud@pageheadingsvskip@dim{\tud@headingsvskip@dim} +\TUD@key{pageheadingsvskip}{% + \TUD@set@dimkey{pageheadingsvskip}{\tud@pageheadingsvskip@dim}{#1}% } % % \end{macrocode} -% \end{macro}^^A \tud@dim@headingsvskip +% \end{macro}^^A \tud@headingsvskip@dim % \end{option}^^A headingsvskip -% \end{macro}^^A \tud@dim@pageheadingsvskip +% \end{macro}^^A \tud@pageheadingsvskip@dim % \end{option}^^A pageheadingsvskip % % \iffalse @@ -596,12 +576,16 @@ % \changes{v2.06}{2018/08/20}{neu}^^A % Die Option wird dahingehend erweitert, dass die Überschriften auch im % extra-fetten Schnitt gesetzt werden können. +% \ToDo{% +% Klassenoptionen paper=A4 und headings=optiontoheadandtoc durchreichen, +% wenn mit \cs{PassOptionsToClass} genutzt. +% }[v2.07] % \begin{macrocode} -\newif\if@tud@heavyheadings +\tud@newif\if@tud@heavyheadings \TUD@key{headings}{% \TUD@set@numkey{headings}{@tempa}{% {light}{0},{lightfont}{0},{lite}{0},{litefont}{0},{noheavyfont}{0},% - {normal}{0},{standard}{0},{std}{0},{normalbold}{0},{boldnormal}{0},% + {standard}{0},{std}{0},{normalbold}{0},{boldnormal}{0},% {heavy}{1},{heavyfont}{1},{bold}{1},{boldfont}{1},% {ultrabold}{1},{boldultra}{1},{heavybold}{1},{boldheavy}{1},% {extendedbold}{1},{boldextended}{1}% @@ -630,7 +614,7 @@ % Die \KOMAScript-Option \opt{headings} setzt für alle Überschriften die % Formatierung zurück. Um die Einstellungen für das \CD aktiv zu halten, werden % nach der Ausführung der Option durch \cs{tud@x@scr@headings@reset} die mit -% \cs{tud@komafont@set} definierten Makros \cs{tud@komafont@\meta{Element}} +% \cs{tud@komafont@set} definierten Makros |\tud@komafont@|\meta{Element} % erneut an die entsprechenden Schriftelemente angehängt. Bei der Verwendung % der \KOMAScript-Option \opt{headings}|=|\val{standardclasses} werden außerdem % noch die Optionen \opt{open} und \opt{chapterprefix} ausgeführt, weshalb auch @@ -638,17 +622,17 @@ % \begin{macrocode} \DefineFamilyMember{KOMA} \DefineFamilyKey{KOMA}{headings}{% + \FamilyKeyStateUnknownValue% \TUD@SpecialOptionAtDocument{tud@x@scr@headings@reset}% - \FamilyKeyStateProcessed% } %<*book|report> \DefineFamilyKey{KOMA}{open}{% + \FamilyKeyStateUnknownValue% \TUD@SpecialOptionAtDocument{tud@x@scr@headings@reset}% - \FamilyKeyStateProcessed% } \DefineFamilyKey{KOMA}{chapterprefix}{% + \FamilyKeyStateUnknownValue% \TUD@SpecialOptionAtDocument{tud@x@scr@headings@reset}% - \FamilyKeyStateProcessed% } % % \end{macrocode} @@ -663,76 +647,88 @@ % % \begin{macro}{\tud@x@scr@headings@set} % \changes{v2.05}{2015/11/24}{neu}^^A -% \begin{macro}{\tud@x@scr@headings@current} +% \begin{macro}{\tud@subtitle@fontsizecmd} % \changes{v2.05}{2015/11/24}{neu}^^A -% \begin{macro}{\tud@sec@fontsize} -% \changes{v2.05}{2015/11/24}{neu}^^A -% \begin{macro}{\tud@thesis@fontsize} +% \begin{macro}{\tud@prefix@fontsizecmd} +% \changes{v2.06o}{2022/08/02}{neu}^^A +% \begin{macro}{\tud@sec@fontsizecmd} % \changes{v2.05}{2015/11/24}{neu}^^A +% \begin{macro}{\tud@sec@baselineskip@@dim} +% \changes{v2.06o}{2022/08/02}{neu}^^A +% \begin{macro}{\tud@sec@baselineskip@set} +% \changes{v2.06o}{2022/08/02}{neu}^^A % Als erstes werden die Optionen verarbeitet, welche einen Einfluss auf die -% Formatierung respektive die Schriftgröße der Überschriften haben. Wird über -% die Option \opt{headings} eine andere Überschriftengröße gewählt, werden mit -% dem Makro \cs{tud@x@scr@headings@set} die passenden Schriftgrößen sowohl für -% die Überschriften (\cs{tud@sec@fontsize}) als auch die Titelseite -% (\cs{tud@thesis@fontsize}) gesetzt. Dafür wird gewählte Schriftgröße -% der Überschriften\footnote{\ignorespaces% -% Option \opt{headings}|=|\val{standardclasses/big/normal/small}\ignorespaces% -% } im Hilfsmakro \cs{tud@x@scr@headings@current} gesichert. -% \begin{macrocode} -\newcommand*\tud@x@scr@headings@current{} -\newcommand*\tud@sec@fontsize{} -\newcommand*\tud@thesis@fontsize{} -\newcommand*\tud@x@scr@headings@set[1][]{% - \def\@tempa##1##2##3{% - \ifstr{##1}{\tud@x@scr@headings@current}{}{% - \renewcommand*\tud@x@scr@headings@current{##1}% - \renewcommand*\tud@sec@fontsize{##2}% - \renewcommand*\tud@thesis@fontsize{##3}% - #1% +% Formatierung respektive die Schriftgröße der Überschriften haben. Wird die +% Option \opt{headings} verwendet, werden mit \cs{tud@x@scr@headings@set} die +% Schriftgrößen für Überschriften sowie Präfix und Untertitel sowohl für die +% Gliederungsebenen als auch den Titel gesetzt. Der Grundzeilenabstand in +% Überschriften wird in \cs{tud@sec@baselineskip@@dim} abgelegt, dieser ist +% für die Abstände innerhalb von Überschriften notwendig. +% \begin{macrocode} +\newcommand*\tud@subtitle@fontsizecmd{\LARGE} +\newcommand*\tud@prefix@fontsizecmd{\huge} +\newcommand*\tud@sec@fontsizecmd{\Huge} +\newcommand*\tud@sec@baselineskip@@dim{} +\newcommand*\tud@sec@baselineskip@set{% + \begingroup% + \tud@sec@fontsizecmd% + \edef\tud@res@a{% + \endgroup% + \unexpanded{\def\tud@sec@baselineskip@@dim}{% + \the\dimexpr\glueexpr\f@baselineskip\relax\relax% + }% }% - }% + \tud@res@a% +} +\tud@sec@baselineskip@set % \end{macrocode} % Wird \cs{tud@x@scr@headings@set} aufgerufen, so werden mit \cs{KOMAoptionOf} % die aktuellen Werte der Option \opt{headings} ausgelesen, welche in einer % Liste ausgegeben werden. Diese wird durchlaufen und dabei auf die relevanten % Werte reagiert. % \begin{macrocode} - \KOMAoptionOf[\def\@tempb]{\KOMAClassFileName}{headings}% - \@for\@tempc:=\@tempb\do{% - \ifstr{standardclasses}{\@tempc}{\@tempa{standardclasses}{\Huge}{\LARGE}}{% - \ifstr{big}{\@tempc}{\@tempa{big}{\Huge}{\LARGE}}{% - \ifstr{normal}{\@tempc}{\@tempa{normal}{\huge}{\Large}}{% - \ifstr{small}{\@tempc}{\@tempa{small}{\LARGE}{\large}}{}}}}% +\newcommand*\tud@x@scr@headings@set[1][]{% + \def\@tempb##1##2##3{% + \renewcommand*\tud@sec@fontsizecmd{##1}% + \renewcommand*\tud@prefix@fontsizecmd{##2}% + \renewcommand*\tud@subtitle@fontsizecmd{##3}% + \tud@sec@baselineskip@set% + #1% + }% + \KOMAoptionOf[\def\@tempc]{\KOMAClassFileName}{headings}% + \@for\@tempc:=\@tempc\do{% + \TUD@set@numkey{headings}{@tempa}{% + {standardclasses}{0},{big}{1},{normal}{2},{small}{3}% + }{\@tempc}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \ifcase\@tempa\relax% standardclasses + \@tempb{\Huge} {\LARGE}{\Large}% + \or% big + \@tempb{\Huge} {\huge} {\LARGE}% + \or% normal + \@tempb{\huge} {\LARGE}{\Large}% + \or% small + \@tempb{\LARGE}{\Large}{\large}% + \fi% + \fi% }% -% \end{macrocode} -% Der Abstand nach Teil- und Kapitelüberschriften wird ebenso in Abhängigkeit -% der gewählten Einstellung für \opt{headings} definiert. -% \begin{macrocode} - \begingroup - \tud@sec@fontsize% - \@tempskipa=\glueexpr% - .8\baselineskip \@plus .05\baselineskip \@minus .1\baselineskip% - \relax\relax% - \edef\tud@res@a{% - \endgroup% - \def\noexpand\tud@cd@afterskip{\the\@tempskipa}% - }% - \tud@res@a% } % \end{macrocode} % Damit die Einstellungen für die Größe wirksam werden, wird das Makro einmalig % zu Beginn des Dokumentes ausgeführt. % \begin{macrocode} -\AtEndPreamble{\tud@x@scr@headings@set} +\AfterEndPreamble{\tud@x@scr@headings@set} % \end{macrocode} -% \end{macro}^^A \tud@thesis@fontsize -% \end{macro}^^A \tud@sec@fontsize -% \end{macro}^^A \tud@x@scr@headings@current +% \end{macro}^^A \tud@sec@baselineskip@set +% \end{macro}^^A \tud@sec@baselineskip@@dim +% \end{macro}^^A \tud@sec@fontsizecmd +% \end{macro}^^A \tud@prefix@fontsizecmd +% \end{macro}^^A \tud@subtitle@fontsizecmd % \end{macro}^^A \tud@x@scr@headings@set % \begin{macro}{\tud@x@scr@headings@reset} % \changes{v2.05}{2015/11/24}{neu}^^A -% Hiermit wird nach dem Ausführen der Option \opt{headings} im Zweifelsfall die -% Größe und Formatierung der Überschriften neu gesetzt. +% Hiermit wird nach dem Ausführen der Option \opt{headings} die Größe und +% Formatierung der Überschriften neu gesetzt. % \begin{macrocode} \newcommand*\tud@x@scr@headings@reset{% \tud@cd@process% @@ -768,27 +764,43 @@ % \begin{macro}{\tud@sec@fontface} % \changes{v2.05}{2016/04/04}{Optionales Argument für \pkg{tudscrcomp}}^^A % \changes{v2.06}{2018/08/20}{extra-fette Überschriften möglich}^^A +% \changes{v2.06o}{2022/08/02}{Überschrifen im \CD ohne aktive +% Fließtextschriften möglich}^^A % \begin{macro}{\tud@sec@@fontface} % \begin{macro}{\tud@sec@format} +% \changes{v2.06o}{2022/08/02}{Sternversion für Leerraum ohne \cs{strut}}^^A +% \begin{macro}{\tud@sec@@format} +% \begin{macro}{\tud@sec@@@format} % \begin{macro}{\tud@sec@uppercase} -% \begin{macro}{\tud@sec@strut} -% \changes{v2.06}{2018/07/24}{neu}^^A +% \begin{macro}{\if@tud@sec} +% \changes{v2.06o}{2022/08/02}{neu}^^A % Mit \cs{tud@sec@fontface} wird die Schriftart für Überschriften im % Layout des \CDs definiert. +% \ToDo{Auf neues NFSS anpassen, \cs{fontseriesforce} überprüfen}[v2.07] % \begin{macrocode} %\AfterPackage{tudscrfonts}{% \newcommand*\tud@sec@fontface[1][]{\tud@sec@@fontface{#1}}% \newcommand*\tud@sec@@fontface[1]{% \sectfont#1% - \if@tud@cdfont@active\if@tud@heavyheadings% - \if@tud@x@mweights@enabled% - \edef\bfseries@rm{\tud@cdfont@ebf}% - \edef\bfseries@sf{\tud@cdfont@ebf}% - \edef\bfseries@tt{\tud@ttfont@ebf}% + \if@tud@cdfont@active% + \if@tud@heavyheadings% + \if@tud@x@mweights@enabled% + \edef\bfseries@rm{\tud@cdfont@ebf}% + \edef\bfseries@sf{\tud@cdfont@ebf}% + \edef\bfseries@tt{\tud@ttfont@ebf}% + \fi% + \let\bfdefault\tud@cdfont@ebf% + \fontseriesforce{\tud@cdfont@ebf}% + \fi% + \else% + \fontfamily{\tud@cdfont@fam}% + \if@tud@heavyheadings% + \let\bfdefault\tud@cdfont@ebf% + \else% + \let\bfdefault\tud@cdfont@bf% \fi% - \let\bfdefault\tud@cdfont@ebf% - \fontseries{\tud@cdfont@ebf}% - \fi\fi% + \fontseriesforce{\bfdefault}% + \fi% \selectfont% } % \end{macrocode} @@ -806,84 +818,67 @@ }% \fi % \end{macrocode} -% Der Befehl \cs{tud@sec@format} dient zur Formatierung von Überschriften. -% Dabei wird dieser mit der von \KOMAScript{} bereitgestellten Schnittstelle für -% Teile\footnote{\cs{partlineswithprefixformat}}, -% Kapitel\footnote{\cs{chapterlineswithprefixformat}, \cs{chapterlinesformat}} -% und +% Mit \cs{tud@sec@format} erfolgt die Formatierung von Überschriften, wobei die +% \KOMAScript-Schnittstelle für Teile\footnote{\cs{partlineswithprefixformat}}, +% Kapitel\footnote{\cs{chapterlineswithprefixformat}, \cs{chapterlinesformat}}, % Abschnitte\footnote{\cs{sectionlinesformat}, \cs{sectioncatchphraseformat}} -% verwendet. Dadurch wird eine Anpassung der Gliederungsbefehle~-- wie es -% einschließlich Version~v2.05 für die erzwungene Großschreibung umgesetzt -% wurde~-- vermieden. Für die \OpenSans führt das Makro \cs{tud@sec@format} -% lediglich \cs{tud@sec@strut} aus. -% \begin{macrocode} -\newcommand*\tud@sec@format[2][]{% - \IfArgIsEmpty{#1}{% - \tud@sec@strut% - }{% - \begingroup% - \usefontofkomafont{#1}% - \tud@sec@strut% - \endgroup% - }% - #2% +% sowie zusätzlich einfache Layoutelemente verwendet werden. Dadurch wird eine +% Anpassung der Gliederungsbefehle~-- wie es einschließlich Version~v2.05 für +% die erzwungene Großschreibung umgesetzt wurde~-- vermieden. +% +% Um für Teile und Kapitel ein einheitliches Erscheinungsbild zu erhalten, wird +% für diese zum einen \cs{strut}~-- in der Schriftgröße des Kontexts oder aber +% für das im optionalen Argument gegebene Schriftelement~-- und zum anderen +% ausreichend vertikaler Leerraum für Umlaute eingefügt. Letzteres erfolgt auch +% für Abschnitte (Sternversion). Dies liegt darin begründet, dass auf einer +% neuen Seite die erste Grundlinie höher liegt, als für Umlautmajuskeln in der +% Schrift für \cs{section} etc. notwendig ist. Deshalb wird die Grundlinie +% \enquote{notfallmäßig} mit \cs{vphantom} so weit nach unten verschoben, wie +% für die höchste Letter benötigt wird, unabhängig vom tatsächlichen Inhalt. +% +% Für Markup oder andere Inhalte, die lediglich im Fließtext jedoch nicht in +% Überschriften ausgegeben werden, wird der Schalter \cs{if@tud@sec} definiert. +% Das Setzen des Schalters wird in \cs{tud@sec@format} vorgenommen. +% \begin{macrocode} +\tud@newif\if@tud@sec +\newrobustcmd*\tud@sec@format{% + \@tud@sectrue% + \kernel@ifstar{\tud@sec@@format{}}{\tud@sec@@format{\strut}}% +} +\newcommand*\tud@sec@@format[1]{% + \kernel@ifnextchar[%] + {\tud@sec@@@format{#1}}% + {\tud@sec@@@format{#1}[]}% } +\newcommand*\tud@sec@@@format{} +\def\tud@sec@@@format#1[#2]#3{% + \begingroup% + \IfArgIsEmpty{#2}% + {\let\tud@res@a\@firstofone}% + {\def\tud@res@a{\usekomafont{#2}}}% + \tud@res@a{% + \nobreak#1\nobreak\vphantom{\textsuperscript{\tud@font@phantomglyphs}}% + }% + \endgroup% + \tud@sec@@@@format{#3}% +} +\newcommand*\tud@sec@@@@format[1]{#1} % \end{macrocode} % Für die alten Schriften hat der Befehl eine erweiterte Funktionalität, wenn % die Schriftfamilie \DIN aktiv ist, welche für Überschriften einzusetzen ist. -% Das \CD verlangt dabei, dass zwingend Majuskeln\footnote{Großbuchstaben} zu -% verwenden sind. Hierfür wird der Befehl \cs{MakeTextUppercase} aus dem Paket -% \pkg{textcase} genutzt, welcher den internen \LaTeX-Befehl \cs{MakeUppercase} -% verbessert. Das optionale Argument kann genutzt werden, falls nicht die -% aktuelle Schrift sondern ein durch \KOMAScript{} definiertes Schriftelement -% ausgewertet werden soll. +% Das \CD verlangt dabei, dass zwingend Majuskeln zu verwenden sind. Hierfür +% wird der Befehl \cs{MakeTextUppercase} aus dem Paket \pkg{textcase} genutzt, +% der den internen \LaTeX"~Befehl \cs{MakeUppercase} verbessert. % \begin{macrocode} \if@tud@cdoldfont@active - \newcommand*\tud@sec@uppercase{\MakeUppercase}% - \AfterPackage*{textcase}{% - \renewcommand*\tud@sec@uppercase{\MakeTextUppercase}% - }% - \renewcommand*\tud@sec@format[2][]{% - \@tud@res@swafalse% - \IfArgIsEmpty{#1}{% - \tud@sec@strut% - \tud@ifdin{\@tud@res@swatrue}{}% - }{% - \begingroup% - \usefontofkomafont{#1}% - \tud@sec@strut% - \tud@ifdin{\aftergroup\@tud@res@swatrue}{}% - \endgroup% - }% - \if@tud@res@swa% - \tud@sec@uppercase{#2}% - \else% - #2% - \fi% - }% + \def\tud@sec@@@@format#1{\tud@ifdin{\MakeUppercase{#1}}{#1}}% \fi -% \end{macrocode} -% Für Abschnitte etc. liegt auf einer neuen Seite dier erste Grundlinie höher, -% als für Großbuchstaben in der größeren Schrift für \cs{section} etc. benötigt -% wird. Deshalb wird die Grundlinie \enquote{notfallmäßig} so weit nach unten -% verschoben, wie für den höchsten Buchstabe benötigt wird. Mit dem Befehl -% \cs{tud@sec@strut} wird für alle Überschriften dafür gesorgt, dass immer der -% gleiche Freiraum bereitgehalten wird, unabhängig vom Inhalt der spezifischen -% Überschrift. Hierfür wird \cs{strutbox} aus dem \LaTeXe"~Kernel~-- nachdem -% \cs{strut} zuvor bereits einmal ausgeführt wird, um die Standardgröße der Box -% zu verwenden~-- temporär umdefiniert. -% \begin{macrocode} -\newrobustcmd*\tud@sec@strut{% -%<*class> - \begingroup% - \strut\setbox\strutbox\hbox{\vphantom{\textsuperscript{\"A\"O\"U}}}\strut% - \endgroup% -% -} %} % \end{macrocode} -% \end{macro}^^A \tud@sec@strut +% \end{macro}^^A \if@tud@sec % \end{macro}^^A \tud@sec@uppercase +% \end{macro}^^A \tud@sec@@@format +% \end{macro}^^A \tud@sec@@format % \end{macro}^^A \tud@sec@format % \end{macro}^^A \tud@sec@@fontface % \end{macro}^^A \tud@sec@fontface @@ -894,6 +889,21 @@ %<*class&body> % \fi % +% \begin{macro}{\tud@part@hook} +% \changes{v2.06o}{2022/08/02}{neu}^^A +% \KOMAScript{} ignoriert für Teile standardmäßig alle Einstellungen für die +% Option \opt{parskip}. Da diese jedoch für Kapitel Beachtung finden und mit +% \TUDScript das Erscheinungsbild~-- insbesondere die vertikale Platzierung von +% Überschriften~-- für diese beiden Elemente einheitlich sein soll, wird über +% diesen Haken dafür gesorgt, dass \opt{parskip} auch für Teile genutzt wird. +% \begin{macrocode} +%<*book|report> +\newcommand*\tud@part@hook{} +\let\tud@part@hook\relax +\AddtoDoHook{heading/begingroup/part}{\tud@part@hook} +% +% \end{macrocode} +% \end{macro}^^A \tud@part@hook % \begin{macro}{\tud@title@fontcolor} % \begin{macro}{\tud@part@fontcolor} % \begin{macro}{\tud@chapter@fontcolor} @@ -929,7 +939,8 @@ % dass die Optionen auch im Dokument geändert und wiederhergestellt werden % können. % \ToDo{\cs{...pagecolor} und {\cs{...fontcolor} (part/chapter/title)}}[v2.07] -% \ToDo{Schriftfarbauswahl in \cs{tud@cd@process}}[v2.07] +% \ToDo{Farbauswahl in \cs{tud@cd@process} bzw. \KOMAScript{} do-hooks}[v2.07] +% \ToDo{Überschriften paragraph und subparagraph in Open Sans}[v2.07] % \begin{macrocode} \newcommand*\tud@cd@process{% % \end{macrocode} @@ -966,16 +977,17 @@ \usekomafont{disposition}% \raggedtitle% \tud@sec@fontface% - \tud@sec@fontsize% + \tud@sec@fontsizecmd% \tud@color{\tud@title@fontcolor}% }% \tud@komafont@set{subtitle}{% - \tud@thesis@fontsize% - \fontseries{\tud@cdfont@bf}\selectfont% + \tud@subtitle@fontsizecmd% + \fontseriesforce{\tud@cdfont@bf}\selectfont% }% \tud@komafont@set{subject}{% - \sffamily% \usesizeofkomafont{section}% + \sffamily% + \fontseriesforce{\tud@cdfont@bf}\selectfont% \tud@color{\tud@title@fontcolor}% }% %<*book|report|article> @@ -988,6 +1000,7 @@ % Das gleiche für die Teileseiten. % \begin{macrocode} \ifcase\tud@cd@part@num\relax% false + \tud@cs@restore{partlineswithprefixformat}% \tud@cs@restore{scr@part@beforeskip}% %<*book|report> \tud@cs@restore{scr@part@innerskip}% @@ -998,8 +1011,8 @@ \tud@cs@restore{partheadendvskip}% \tud@cs@restore{partheademptypage}% \tud@cs@restore{partpagestyle}% + \let\tud@part@hook\relax% % - \tud@cs@restore{partlineswithprefixformat}% \tud@komafont@unset{part}% \tud@komafont@unset{partnumber}% \tud@cs@restore{raggedpart}% @@ -1014,19 +1027,23 @@ % weiter unten im Quelltext zu finden. % \begin{macrocode} \else% !false + \tud@cs@store{partlineswithprefixformat}% + \let\partlineswithprefixformat\tud@partlineswithprefixformat% \tud@cs@store{scr@part@beforeskip}% %<*book|report> - \renewcommand*\scr@part@beforeskip{\tud@cd@beforeskip}% + \renewcommand*\scr@part@beforeskip{\tud@cd@beforevskip@@dim}% % %<*article|poster> - \renewcommand*\scr@part@beforeskip{\tud@cd@afterskip+\baselineskip}% + \renewcommand*\scr@part@beforeskip{% + \glueexpr\tud@cd@aftervskip@@glue+\baselineskip\relax% + }% % %<*book|report> \tud@cs@store{scr@part@innerskip}% - \renewcommand*\scr@part@innerskip{\tud@cd@innerskip}% + \renewcommand*\scr@part@innerskip{\tud@cd@innervskip@@dim}% % \tud@cs@store{scr@part@afterskip}% - \renewcommand*\scr@part@afterskip{\tud@cd@afterskip}% + \renewcommand*\scr@part@afterskip{\tud@cd@aftervskip@@glue}% \tud@cs@store{partheadstartvskip}% \let\partheadstartvskip\tud@partheadstartvskip% %<*book|report> @@ -1036,9 +1053,14 @@ \let\partheademptypage\tud@partheademptypage% \tud@cs@store{partpagestyle}% \renewcommand*\partpagestyle{plain.tudheadings}% +% \end{macrocode} +% Mit |\setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative| werden +% normalerweise direkt nach dem Haken |heading/begingroup/part| durch +% \KOMAScript{} die Einstellungen für die Option \opt{parskip} deaktiviert. Ist +% das Layout des \CDs aktiv, wird dies unterbunden. +% \begin{macrocode} + \def\tud@part@hook{\let\setparsizes\@gobblefour}% % - \tud@cs@store{partlineswithprefixformat}% - \let\partlineswithprefixformat\tud@partlineswithprefixformat% % \end{macrocode} % Es wird die Schriftfarbe, "~größe und "~art angepasst, je nachdem ob der % Titel des Dokumentes auf den Teileseiten auftauchen soll oder eben nicht. @@ -1049,6 +1071,7 @@ }% \tud@komafont@set{partnumber}{% \tud@sec@fontface% + \tud@prefix@fontsizecmd% \tud@color{\tud@part@fontcolor}% }% \tud@cs@store{raggedpart}% @@ -1061,12 +1084,12 @@ % \begin{macrocode} %<*book|report> \ifcase\tud@cd@chapter@num\relax% false + \tud@cs@restore{chapterlineswithprefixformat}% + \tud@cs@restore{chapterlinesformat}% \tud@cs@restore{scr@chapter@beforeskip}% \tud@cs@restore{scr@chapter@innerskip}% \tud@cs@restore{scr@chapter@afterskip}% \tud@cs@restore{chapterheadstartvskip}% - \tud@cs@restore{chapterlineswithprefixformat}% - \tud@cs@restore{chapterlinesformat}% \tud@cs@restore{tud@chapter@before@hook}% \tud@cs@restore{tud@chapter@after@hook}% \tud@komafont@unset{chapter}% @@ -1078,25 +1101,25 @@ % angepassten Befehle abermals über \cs{let}. % \begin{macrocode} \else% !false + \tud@cs@store{chapterlineswithprefixformat}% + \let\chapterlineswithprefixformat\tud@chapterlineswithprefixformat% + \tud@cs@store{chapterlinesformat}% + \let\chapterlinesformat\tud@chapterlinesformat% \tud@cs@store{scr@chapter@beforeskip}% - \renewcommand*\scr@chapter@beforeskip{\tud@cd@beforeskip}% + \renewcommand*\scr@chapter@beforeskip{\tud@cd@beforevskip@@dim}% \tud@cs@store{scr@chapter@innerskip}% - \renewcommand*\scr@chapter@innerskip{\tud@cd@innerskip}% + \renewcommand*\scr@chapter@innerskip{\tud@cd@innervskip@@dim}% \tud@cs@store{scr@chapter@afterskip}% - \renewcommand*\scr@chapter@afterskip{\tud@cd@afterskip}% + \renewcommand*\scr@chapter@afterskip{\tud@cd@aftervskip@@glue}% \tud@cs@store{chapterheadstartvskip}% \let\chapterheadstartvskip\tud@chapterheadstartvskip% - \tud@cs@store{chapterlineswithprefixformat}% - \let\chapterlineswithprefixformat\tud@chapterlineswithprefixformat% - \tud@cs@store{chapterlinesformat}% - \let\chapterlinesformat\tud@chapterlinesformat% \tud@cs@store{tud@chapter@before@hook}% \renewcommand*\tud@chapter@before@hook{\tud@chapter@pre}% \tud@cs@store{tud@chapter@after@hook}% \renewcommand*\tud@chapter@after@hook{\tud@chapter@app}% \tud@komafont@set{chapter}{% \tud@sec@fontface% - \tud@sec@fontsize% + \tud@sec@fontsizecmd% \tud@color{\tud@chapter@fontcolor}% }% \tud@komafont@set{chapterprefix}{\usesizeofkomafont{partnumber}}% @@ -1146,12 +1169,12 @@ \renewcommand*\raggedsection{\tud@raggedright}% \tud@cs@store{minisec}% \renewcommand\minisec[1]{% - \tud@cs@use{minisec}{\tud@sec@format{##1}}% + \tud@cs@use{minisec}{\tud@sec@format*{##1}}% }% \tud@komafont@set{minisec}{% \tud@sec@fontface% \ifcase\tud@cd@section@num\relax\or\else% *color - \ifstr{\tud@pagecolor}{HKS41}{}{\color{HKS41}}% + \tud@if@strequal{\tud@pagecolor}{HKS41}{}{\color{HKS41}}% \fi% }% \fi% @@ -1218,15 +1241,16 @@ % \end{macrocode} % \end{macro}^^A \tud@cd@specialpage@unset % \end{macro}^^A \tud@cd@specialpage@set -% \begin{macro}{\tud@cd@headstartvskip} +% \begin{macro}{\tud@cd@headstart@vskip} % \changes{v2.06}{2018/08/01}{neu}^^A +% \changes{v2.06o}{2022/08/02}{Bugfix für vertikale Unterschiede}^^A % \begin{macro}{\tud@cd@vphantom} % \changes{v2.06}{2018/08/01}{neu}^^A -% \begin{macro}{\tud@cd@beforeskip} +% \begin{macro}{\tud@cd@beforevskip@@dim} % \changes{v2.06}{2018/08/01}{neu}^^A -% \begin{macro}{\tud@cd@innerskip} +% \begin{macro}{\tud@cd@innervskip@@dim} % \changes{v2.06}{2018/08/01}{neu}^^A -% \begin{macro}{\tud@cd@afterskip} +% \begin{macro}{\tud@cd@aftervskip@@glue} % \changes{v2.06}{2018/08/01}{neu}^^A % Im \TUDCD werden sowohl Titel als auch Teil- und Kapitelüberschriften auf der % gleichen Grundlinienhöhe gesetzt. Hierfür sind Anpassungen der entsprechenden @@ -1235,26 +1259,40 @@ % \cs{chapterheadstartvskip} gesetzt. Um das Layout des \CDs umzusetzen, werden % diese beiden Makros als Haken genutzt. % -% Das Makro \cs{tud@cd@beforeskip} enthält den Abstand vor einer Überschrift, -% welcher über \cs{tud@cd@headstartvskip} gesetzt wird. Der Abstand zwischen +% Das Makro \cs{tud@cd@beforevskip@@dim} ist der Abstand vor einer Überschrift, +% welcher über \cs{tud@cd@headstart@vskip} gesetzt wird. Der Abstand zwischen % der Nummerierung eines Teils und der eigentlichen Bezeichnung wird mit -% \cs{tud@cd@innerskip} definiert und durch \KOMAScript{} eingefügt. Gleiches -% gilt für eine separate Kapitelnummernzeile (\opt{chapterprefix}) und dem -% eigentlichen Kapiteltitel. Durch \cs{tud@cd@afterskip} wird der Abstand -% zwischen Titel und Fließtext respektive der unteren Prääambel definiert. -% Dieser Abstand ist abhängig von der gewählten Einstellung für \opt{headings}. -% \begin{macrocode} -\newcommand*\tud@cd@beforeskip{% - \dimexpr-\tud@len@areavskip-\tud@len@areaheadvskip\relax% +% \cs{tud@cd@innervskip@@dim} definiert und durch \KOMAScript{} eingefügt. +% Gleiches gilt für eine separate Kapitelnummernzeile (\opt{chapterprefix}) und +% dem eigentlichen Kapiteltitel. Durch \cs{tud@cd@aftervskip@@glue} wird der +% Abstand zwischen Titel und Fließtext respektive der unteren Prääambel +% definiert. Dieser Abstand ist abhängig von der gewählten Einstellung für die +% Option \opt{headings}. +% \begin{macrocode} +\newcommand*\tud@cd@beforevskip@@dim{% + \dimexpr-\tud@dim@areavskip-\tud@dim@areaheadvskip\relax% } -\newcommand*\tud@cd@innerskip{.25\baselineskip}% -\newcommand*\tud@cd@afterskip{% - .75\baselineskip \@plus .05\baselineskip \@minus .1\baselineskip% +\newcommand*\tud@cd@innervskip@@dim{% + \dimexpr(\tud@sec@baselineskip@@dim)/5\relax% +}% +\newcommand*\tud@cd@aftervskip@@glue{% + \glueexpr + \dimexpr(\tud@sec@baselineskip@@dim)*4/5\relax + \@plus\dimexpr(\tud@sec@baselineskip@@dim)/20\relax + \@minus\dimexpr(\tud@sec@baselineskip@@dim)/10\relax + \relax } -\newcommand*\tud@cd@headstartvskip{% - \@tempskipa=\glueexpr\tud@cd@beforeskip\relax\relax% - \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi% - \null\vskip-\baselineskip\vskip\@tempskipa% +% \end{macrocode} +% Dieses Konstrukt ist mehr oder weniger durch Ausprobieren entstanden, da für +% die unterschiedlichen Einstellungsmöglichkeiten der Option \opt{headings} je +% nach gewählter Größe der Überschriften leichte Verschiebungen und Sprünge für +% die unterschiedlichen Varianten\footnote{Prefix, Untertitel, Absatzabstände} +% aufgetreten sind. +% \begin{macrocode} +\newcommand*\tud@cd@headstart@vskip{% + \tud@setdim\@tempdima{\tud@cd@beforevskip@@dim}% + \tud@length@setabsolute\@tempdima% + \null\vskip\dimexpr\glueexpr\@tempdima-\f@baselineskip-\parskip\relax\relax% } % \end{macrocode} % Sollte keine Präfixzeile für Teile oder Kapitel verwendet werden, muss für @@ -1263,17 +1301,17 @@ % \begin{macrocode} \newcommand*\tud@cd@vphantom{% \begingroup% - \usekomafont{partnumber}{\nobreak\tud@sec@strut}% - \setlength\@tempskipa{\tud@cd@innerskip}% - \par\nobreak\vskip\@tempskipa% + \usekomafont{partnumber}{% + \tud@sec@format{\vskip\tud@cd@innervskip@@dim}% + }% \endgroup% } % \end{macrocode} -% \end{macro}^^A \tud@cd@afterskip -% \end{macro}^^A \tud@cd@innerskip -% \end{macro}^^A \tud@cd@beforeskip +% \end{macro}^^A \tud@cd@aftervskip@@glue +% \end{macro}^^A \tud@cd@innervskip@@dim +% \end{macro}^^A \tud@cd@beforevskip@@dim % \end{macro}^^A \tud@cd@vphantom -% \end{macro}^^A \tud@cd@headstartvskip +% \end{macro}^^A \tud@cd@headstart@vskip % % \iffalse %<*book|report> @@ -1282,6 +1320,41 @@ % \subsection{Positionierung und Formatierung von Überschriften} % \subsubsection{Präambeln für Teile und Kapitel} % +% \begin{macro}{\scr@startpart} +% Für die Präambel von Teilen muss ebenfalls etwas gebastelt werden, um das +% Erscheinungsbild an das von Teilen anzupassen, falls das Layout des \CDs +% aktiv ist. +% \begin{macrocode} +\patchcmd\scr@startpart{% + \partheadstartvskip + \vbox to\z@{\vss\use@preamble{#1@o}\strut\par}% + \vskip-\baselineskip\nobreak +}{% + \ifcase\tud@cd@part@num\relax% false + \partheadstartvskip% + \vbox to\z@{\vss\use@preamble{#1@o}\strut\par}% + \vskip-\baselineskip\nobreak% + \else% +% \end{macrocode} +% Im Gegensatz zur ursprünglichen Definition wird die Präambel vor der +% vertikalen Formatierung des Teils ausgegeben und an die Kapitelpräambel +% angeglichen. +% \begin{macrocode} + {% + \setbox\z@\vbox{% + \vskip\dimexpr% + \tud@cd@innervskip@@dim-\tud@sec@baselineskip@@dim-\baselineskip% + \relax% + \use@preamble{#1@o}\strut\par% + }% + \vbox to \z@{\box\z@\vss}% + \vskip\dimexpr\parskip-\baselineskip\relax% + }% + \partheadstartvskip% + \fi% +}{}{\tud@patch@wrn{scr@startpart}} +% \end{macrocode} +% \end{macro}^^A \scr@startpart % \begin{macro}{\tud@preamble@fontcolor} % \changes{v2.06}{2018/08/08}{neu}^^A % Der Befehl wird innerhalb von \cs{set@@@@preamble} genutzt, um die notwendige @@ -1303,8 +1376,8 @@ % Zunächst wird der unterschiedliche Abstand bei Teil- und Kapitelpräambeln % ausgeglichen. % \begin{macrocode} - \@tempskipa=\glueexpr\tud@cd@afterskip\relax% - \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi% + \tud@setglue\@tempskipa{\tud@cd@aftervskip@@glue}% + \tud@length@setabsolute\@tempskipa% \vskip\@tempskipa% % \end{macrocode} % Anschließend folgen die Anpassungen für die Teilpräambel. @@ -1313,7 +1386,7 @@ \renewcommand*\tud@abstract@level@num{1}% \fi% \KOMAoptions{titlepage=false}% - \null\vskip-\baselineskip% + \null\vskip-1\baselineskip% \addtokomafont{disposition}{\tud@color{\tud@part@fontcolor}}% \addtokomafont{dictum}{\tud@color{\tud@part@fontcolor}}% \let\tud@preamble@fontcolor\tud@part@fontcolor% @@ -1332,7 +1405,7 @@ \renewcommand*\tud@abstract@level@num{1}% \fi% \KOMAoptions{titlepage=false}% - \null\vskip-\baselineskip% + \null\vskip-1\baselineskip% % \end{macrocode} % Die Farb- und Schrifteinstellungen sind nur für reine Kapitelseiten notwendig. % \begin{macrocode} @@ -1362,7 +1435,7 @@ \hbox to\hsize{#4\parbox[{#2}]{#3}{#6\par}#5\par}% }% } -\patchcmd{\set@@@@preamble}{% +\patchcmd\set@@@@preamble{% \hbox to\hsize{#4\parbox[{#2}]{#3}{#6\par}#5\par}% }{% \def\@tempa####1@####2{% @@ -1402,8 +1475,8 @@ % Die Schriftelement für die Untertitel von Teilen. % \begin{macrocode} \newkomafont{partsubtitle}{% - \tud@thesis@fontsize% - \fontseries{\tud@cdfont@bf}\selectfont% + \tud@subtitle@fontsizecmd% + \fontseriesforce{\tud@cdfont@bf}\selectfont% \tud@color{\tud@part@fontcolor}% } \aliaskomafont{parttitle}{partsubtitle} @@ -1427,8 +1500,8 @@ % Die Schriftelement für die Untertitel von Kapiteln. % \begin{macrocode} \newkomafont{chaptersubtitle}{% - \tud@thesis@fontsize% - \fontseries{\tud@cdfont@bf}\selectfont% + \tud@subtitle@fontsizecmd% + \fontseriesforce{\tud@cdfont@bf}\selectfont% \tud@color{\tud@chapter@fontcolor}% } % @@ -1442,7 +1515,10 @@ % \begin{macrocode} \newcommand*\tud@sec@subtitle[1]{% \ifcsvoid{tud@#1@subtitle}{}{% - {\usekomafont{#1subtitle}{\tud@sec@format{\csuse{tud@#1@subtitle}}}}\par% + {\usekomafont{#1subtitle}{% + \vskip-1\parskip% + \tud@sec@format{\csuse{tud@#1@subtitle}}% + }}\par% \global\cslet{tud@#1@subtitle}{\@empty}% }% } @@ -1461,11 +1537,12 @@ % % Für die \cls{tudscrartcl}-Klasse wird der vertikale Standardabstand % beibehalten und lediglich die Farbanpassung hinzugefügt. +% \ToDo{in \cs{AddtoDoHook} migrieren}[v2.07] % \begin{macrocode} %<*article|poster> \newcommand*\tud@partheadstartvskip{} \let\tud@partheadstartvskip\partheadstartvskip -\pretocmd{\tud@partheadstartvskip}{% +\pretocmd\tud@partheadstartvskip{% \renewcommand*\tud@part@fontcolor{}% false/true \ifcase\tud@cd@part@num\relax\or\else% *color \renewcommand*\tud@part@fontcolor{HKS41}% @@ -1477,6 +1554,9 @@ % und die vertikalen Abstände neu definiert. % \begin{macrocode} %<*book|report> +\AddtoDoHook{heading/preinit/part}{ + \TUD@deprecated@length\pageheadingsvskip% +} \newcommand*\tud@partheadstartvskip{% \renewcommand*\tud@part@fontcolor{}% false/true \ifcase\tud@cd@part@num\relax\or\or% litecolor @@ -1491,9 +1571,8 @@ \renewcommand*\tud@part@fontcolor{HKS41!30}% \fi% \tud@cd@specialpage@set{part}% - \tud@cd@headstartvskip% - \TUD@deprecated@lengthcs{pageheadingsvskip}% - \vspace*{\tud@dim@pageheadingsvskip}% + \tud@cd@headstart@vskip% + \vspace*{\dimexpr\tud@pageheadingsvskip@dim\relax}% } % % \end{macrocode} @@ -1537,11 +1616,13 @@ % \changes{v2.06}{2018/08/01}{neu}^^A % \begin{macro}{\tud@partformat} % \changes{v2.06}{2018/08/01}{neu}^^A +% \changes{v2.06o}{2022/08/02}{Bugfix für Option \opt{parttitle}}^^A % Die Formatierungsbefehle für die Überschriften von Teilen. % \begin{macrocode} \newcommand*\tud@partformat{}% \newcommand*\tud@partlineswithprefixformat[3]{% %<*book|report> + \vskip-2\parskip% \if@tud@parttitle% \ifx\@@title\@empty% \ClassWarning{\TUD@Class@Name}{% @@ -1550,25 +1631,44 @@ }% \fi% \tud@cd@vphantom% - \tud@sec@format[#1]{% - \usekomafont{#1}{\nobreak\interlinepenalty \@M\@@title\strut\@@par}% + \usekomafont{#1}{% + \tud@sec@format{\nobreak\interlinepenalty\@M\@@title\strut\@@par}% }% - \setpartsubtitle{% - \setkomafont{part}{}% - \tud@sec@format[partnumber]{\IfUseNumber{\partformat\enskip}{}#3}% +% \end{macrocode} +% Hier wird etwas hemdsärmlich der eigentliche Titel aus |#3| extrahiert. +% \begin{macrocode} + \def\tud@partformat##1\nobreak\interlinepenalty\@M##2\strut\@@par##3\@nil{% + \def\tud@partformat{\IfUseNumber{\partformat\enskip}{}##2}% }% + \expandafter\expandafter\expandafter\tud@partformat% + \expandafter\@firstofone\@gobbletwo#3\@nil% + \expandafter\setpartsubtitle\expandafter{\tud@partformat}% \else% % \edef\tud@partformat{\noexpand\tud@sec@format{\expandonce\partformat}}% \let\partformat\tud@partformat% \IfUseNumber{}{\tud@cd@vphantom}% - #2\tud@sec@format[#1]{#3}% + #2\tud@sec@format[{#1}]{#3}% %<*book|report> \fi% % \tud@sec@subtitle{#1}% } % \end{macrocode} +% Beim Aufruf von \cs{partlineswithprefixformat} nutzt \KOMAScript im dritten +% Argument intern \cs{usekomafont}|{part}|. Für die Verwendung von \DIN in der +% Überschrift wird das besagte Argument allerdings via \cs{tud@sec@format} mit +% \cs{MakeUppercase} ummantelt. Der daraus letztendlich resultierende Aufruf +% |\MakeUppercase{\usekomafont{part}{...#3...}}| führt zu einem Fehler. Der +% nachfolgende Patch behebt das Problem. +% \begin{macrocode} +\if@tud@cdoldfont@active + \patchcmd\tud@partlineswithprefixformat + {#2\tud@sec@format[{#1}]{#3}} + {#2\tud@sec@format[{#1}]{}\addtokomafont{#1}{\tud@sec@format}#3} + {}{\tud@patch@wrn{tud@partlineswithprefixformat}} +\fi +% \end{macrocode} % \end{macro}^^A \tud@partformat % \end{macro}^^A \tud@partlineswithprefixformat % @@ -1584,19 +1684,25 @@ % \CD angepasst. Mit der Option \opt{headingsvskip} kann diese vertikal durch % den Benutzer verschoben werden. Außerdem werden die benötigten Farben für die % jeweils gewählte Option ausgewählt. +% \ToDo{in \cs{AddtoDoHook} migrieren}[v2.07] % \begin{macrocode} +\AddtoDoHook{heading/preinit/chapter}{ + \if@tud@chapterpage% + \TUD@deprecated@length\pageheadingsvskip% + \else% + \TUD@deprecated@length\headingsvskip% + \fi% +} \newcommand*\tud@chapterheadstartvskip{% \renewcommand*\tud@chapter@fontcolor{}% \ifcase\tud@cd@chapter@num\relax\or\else% *color \renewcommand*\tud@chapter@fontcolor{HKS41}% \fi% - \tud@cd@headstartvskip% + \tud@cd@headstart@vskip% \if@tud@chapterpage% - \TUD@deprecated@lengthcs{pageheadingsvskip}% - \vspace*{\tud@dim@pageheadingsvskip}% + \vspace*{\dimexpr\tud@pageheadingsvskip@dim\relax}% \else% - \TUD@deprecated@lengthcs{headingsvskip}% - \vspace*{\tud@dim@headingsvskip}% + \vspace*{\dimexpr\tud@headingsvskip@dim\relax}% \fi% } % \end{macrocode} @@ -1611,17 +1717,15 @@ % \begin{macrocode} \newcommand*\tud@chapterformat{}% \newcommand*\tud@chapterlineswithprefixformat[3]{% - \edef\tud@chapterformat{% - \noexpand\tud@sec@format{\expandonce\chapterformat}% - }% + \edef\tud@chapterformat{\noexpand\tud@sec@format{\expandonce\chapterformat}}% \let\chapterformat\tud@chapterformat% \IfUseNumber{}{\tud@cd@vphantom}% - #2\tud@sec@format[#1]{#3}% + #2\tud@sec@format[{#1}]{#3}% \tud@sec@subtitle{#1}% } \newcommand*\tud@chapterlinesformat[3]{% \tud@cd@vphantom% - \@hangfrom{#2}{\tud@sec@format[#1]{#3}}% + \@hangfrom{#2}{\tud@sec@format[{#1}]{#3}}% \tud@sec@subtitle{#1}% } % \end{macrocode} @@ -1638,6 +1742,7 @@ % der Kapitel durch die beiden Haken \cs{tud@chapter@before@hook} sowie % \cs{tud@chapter@after@hook}, den Start und das Ende der Gliederungsbefehle % für Kapitel definieren. +% \ToDo{in \cs{AddtoDoHook} migrieren}[v2.07] % \begin{macrocode} \newcommand*\tud@chapter@pre{% \if@tud@chapterpage% @@ -1751,16 +1856,17 @@ % Die beiden Haken \cs{tud@chapter@before@hook} und \cs{tud@chapter@after@hook} % werden den \KOMAScript-Befehlen hinzugefügt, welche den Start und das Ende % der Gliederungsbefehle für Kapitel definieren. +% \ToDo{in \cs{AddtoDoHook} migrieren}[v2.07] % \begin{macrocode} \newcommand*\tud@chapter@before@hook{} \newcommand*\tud@chapter@after@hook{} -\pretocmd{\scr@startchapter}{% +\pretocmd\scr@startchapter{% \tud@chapter@before@hook% }{}{\tud@patch@wrn{scr@startchapter}} -\apptocmd{\scr@@startchapter}{% +\apptocmd\scr@@startchapter{% \tud@chapter@after@hook% }{}{\tud@patch@wrn{scr@@startchapter}} -\apptocmd{\scr@@startschapter}{% +\apptocmd\scr@@startschapter{% \tud@chapter@after@hook% }{}{\tud@patch@wrn{scr@@startschapter}} % \end{macrocode} @@ -1778,11 +1884,12 @@ % % Die Farbwahl wird einfach in dem von \KOMAScript{} bereitgestellten Haken % zu Beginn einer Abschnittsüberschrift ausgeführt. +% \ToDo{use AddtoDoHook{heading/postinit}}[v2.07] % \begin{macrocode} \At@startsection{% \renewcommand*\tud@section@fontcolor{}% \ifcase\tud@cd@section@num\relax\or\else% *color - \ifstr{\tud@pagecolor}{HKS41}{}{% + \tud@if@strequal{\tud@pagecolor}{HKS41}{}{% \renewcommand*\tud@section@fontcolor{HKS41}% }% \fi% @@ -1795,14 +1902,10 @@ % Die Formatierungsbefehle für die Überschriften von Abschnitten etc. % \begin{macrocode} \newcommand*\tud@sectionlinesformat[4]{% - \@hangfrom{\hskip #2#3}{\tud@sec@format[#1]{#4}}% + \@hangfrom{\hskip #2#3}{\tud@sec@format*[{#1}]{#4}}% } -% \end{macrocode} -% Für Überschriften mit Einzug wird \cs{tud@sec@strut} wirkungslos definiert. -% \begin{macrocode} \newcommand*\tud@sectioncatchphraseformat[4]{% - \let\tud@sec@strut\relax% - \hskip #2#3\tud@sec@format[#1]{#4}% + \hskip #2#3\tud@sec@format*[{#1}]{#4}% } % \end{macrocode} % \end{macro}^^A \tud@sectioncatchphraseformat @@ -1812,7 +1915,6 @@ % % \fi % -% -% \Finale +% \PrintBackMatter % \endinput diff --git a/macros/latex/contrib/tudscr/source/tudscr-localization.dtx b/macros/latex/contrib/tudscr/source/tudscr-localization.dtx index 63ea159a0e..b4adf605c7 100644 --- a/macros/latex/contrib/tudscr/source/tudscr-localization.dtx +++ b/macros/latex/contrib/tudscr/source/tudscr-localization.dtx @@ -1,10 +1,10 @@ -% \CheckSum{763} % \iffalse meta-comment +%/GitFileInfo=tudscr-localization.dtx % % TUD-Script -- Corporate Design of Technische Universität Dresden % ---------------------------------------------------------------------------- % -% Copyright (C) Falk Hanisch , 2012-2021 +% Copyright (C) Falk Hanisch , 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-localization.dtx +% \iffalse ins:batch + dtx:driver +%<*ins> +\ifx\documentclass\undefined + \input docstrip.tex + \ifToplevel{\batchinput{tudscr.ins}} +\else + \let\endbatchfile\relax +\fi +\endbatchfile +% %<*dtx> -% \fi -% -\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi -\ProvidesFile{tudscr-localization.dtx}[2020/11/10 v2.06k TUD-Script\space% - (localization)% -] -% -% \iffalse +\ProvidesFile{tudscr-localization.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-localization.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} @@ -83,15 +62,14 @@ % \changes{v2.02}{2014/06/23}{Paket \pkg{titlepage} nicht weiter unterstützt}^^A % \changes{v2.05}{2015/07/06}{Bezeichner für Poster}^^A % +% +% % \section{Lokalisierung mithilfe sprachabhängiger Bezeichner} % % Das \TUDScript-Bundle ist für die deutsche und englische Sprache lokalisiert. % Dies bedeutet, dass abhängig von der gewählten Sprache die entsprechenden % Bezeichner gesetzt werden. Hierfür werden die Möglichkeiten von \KOMAScript{} % in Form des Befehls \cs{providecaptionname} genutzt. -% -% -% \StopEventually{\PrintIndex\PrintChanges\PrintToDos} % % \subsection{Definition der sprachabhängigen Bezeichner} % @@ -117,7 +95,7 @@ languages german and english as well as its dialects. You\MessageBreak% must define single patterns by yourself, e.g.:\MessageBreak% `\string\providecaptionname{\languagename}\string#1{}'\MessageBreak% - You can send your definitions to \tudscrmail\space in\MessageBreak% + You can send your definitions to \TUDScriptContact\space in\MessageBreak% order to implement support for additional languages.% }% }% @@ -157,6 +135,7 @@ % \changes{v2.02}{2014/11/05}{Korrektur bei der Verwendung von \cs{@@title}}^^A % \begin{localization}{\blockingname} % \changes{v2.02}{2014/05/16}{neu, \cs{restrictionname} umbenannt}^^A +%\ToDo{https://tu-dresden.de/bu/verkehr/studium/studienangebot/dipl\_viw/studentische-arbeiten-studien-diplom-und-masterarbeiten}[v2.07] % \begin{localization}{\blockingtext} % \changes{v2.02}{2014/05/16}{neu, \cs{restrictiontext} umbenannt}^^A % \changes{v2.02}{2014/11/05}{Korrektur bei der Verwendung von \cs{@@title}}^^A @@ -221,6 +200,7 @@ % \changes{v2.02}{2014/05/16}{neu, Umbenennung von \cs{branchname}}^^A % \begin{localization}{\listingname} % \begin{localization}{\listlistingname} +% \begin{localization}{\habilitationname} % \begin{localization}{\dissertationname} % \begin{localization}{\diplomathesisname} % \begin{localization}{\masterthesisname} @@ -240,6 +220,7 @@ \tud@localization@define{\disciplinename} \tud@localization@define{\listingname} \tud@localization@define{\listlistingname} +\tud@localization@define{\habilitationname} \tud@localization@define{\dissertationname} \tud@localization@define{\diplomathesisname} \tud@localization@define{\masterthesisname} @@ -267,6 +248,7 @@ % \end{localization}^^A \masterthesisname % \end{localization}^^A \diplomathesisname % \end{localization}^^A \dissertationname +% \end{localization}^^A \habilitationname % \end{localization}^^A \listlistingname % \end{localization}^^A \listingname % \end{localization}^^A \disciplinename @@ -357,6 +339,8 @@ % \changes{v2.05g}{2016/11/02}{neu}^^A % \begin{localization}{\tud@implementation@name} % \changes{v2.05g}{2016/11/02}{neu}^^A +% \begin{localization}{\tud@symbols@name} +% \changes{v2.06o}{2022/07/24}{neu}^^A % \begin{localization}{\tud@changes@name} % \changes{v2.05g}{2016/11/02}{neu}^^A % \begin{localization}{\tud@todo@name} @@ -411,6 +395,7 @@ % \begin{macrocode} \tud@localization@define{\tud@general@name} \tud@localization@define{\tud@implementation@name} +\tud@localization@define{\tud@symbols@name} \tud@localization@define{\tud@changes@name} \tud@localization@define{\tud@todo@name} \tud@localization@define{\tud@environment@name} @@ -462,6 +447,7 @@ % \end{localization}^^A \tud@environment@name % \end{localization}^^A \tud@todo@name % \end{localization}^^A \tud@changes@name +% \end{localization}^^A \tud@symbols@name % \end{localization}^^A \tud@implementation@name % \end{localization}^^A \tud@general@name % @@ -517,6 +503,10 @@ % müssen als Argumente der Bezeichnerbefehl selbst sowie die dazugehörige % Definition angegeben werden. Intern wird dabei \cs{providecaptionname} % verwendet. +% \ToDo{\cs{renewcaptionname} geht nur nach \cs{begin}\marg{document}?}[v2.07] +% \ToDo{\cs{tud@localization@...} mit \cs{defcaptionname}}[v2.07] +% \ToDo{\cs{tud@localization}\marg{csvmacro}}[v2.07] +% \ToDo{Anwenderbefehl \cs{[tud]renewgermancaptionname}?}[v2.07] % \begin{macrocode} \newcommand*\tud@localization@german{% \providecaptionname{% @@ -539,7 +529,7 @@ } % \end{macrocode} % Für die nachfolgenden Felder, für die es bedarfsweise einen Bezeichner für -% eine zweite Person gibt (\cs{\dots{}othername}), werden jeweils verschiedene +% eine zweite Person |\...othername| gibt, werden jeweils verschiedene % Varianten definiert. Existiert in einem Feld nur eine Person, wird der % Singular der Bezeichnung verwendet. Wurden mindestens zwei Personen angegeben % (\cs{and}), so wird geprüft, ob der Bezeichner für die zusätzlichen Personen @@ -639,6 +629,7 @@ \tud@localization@german{\disciplinename}{Studienrichtung} \tud@localization@german{\listingname}{Quelltext} \tud@localization@german{\listlistingname}{Quelltextverzeichnis} +\tud@localization@german{\habilitationname}{Habilitation} \tud@localization@german{\dissertationname}{Dissertation} \tud@localization@german{\diplomathesisname}{Diplomarbeit} \tud@localization@german{\masterthesisname}{Master-Arbeit} @@ -702,8 +693,9 @@ % \begin{macrocode} \tud@localization@german{\tud@general@name}{Allgemein} \tud@localization@german{\tud@implementation@name}{Implementierung} +\tud@localization@german{\tud@symbols@name}{Symbole} \tud@localization@german{\tud@changes@name}{\"Anderungsliste} -\tud@localization@german{\tud@todo@name}{Liste der noch zu erledigenden Punkte} +\tud@localization@german{\tud@todo@name}{Anstehende Aufgaben} \tud@localization@german{\tud@environment@name}{Umg.} \tud@localization@german{\tud@environments@name}{Umgebungen} \tud@localization@german{\tud@option@name}{Opt.} @@ -860,6 +852,7 @@ \tud@localization@english{\disciplinename}{Discipline} \tud@localization@english{\listingname}{Listing} \tud@localization@english{\listlistingname}{List of Listings} +\tud@localization@english{\habilitationname}{Habilitation} \tud@localization@english{\dissertationname}{Dissertation} \tud@localization@english{\diplomathesisname}{Diploma Thesis} \tud@localization@english{\masterthesisname}{Master Thesis} @@ -923,8 +916,9 @@ % \begin{macrocode} \tud@localization@english{\tud@general@name}{General} \tud@localization@english{\tud@implementation@name}{Implementation} +\tud@localization@english{\tud@symbols@name}{Symbols} \tud@localization@english{\tud@changes@name}{Change History} -\tud@localization@english{\tud@todo@name}{List of ToDos} +\tud@localization@english{\tud@todo@name}{Pending tasks} \tud@localization@english{\tud@environment@name}{env.} \tud@localization@english{\tud@environments@name}{environments} \tud@localization@english{\tud@option@name}{opt.} @@ -992,6 +986,6 @@ % % \fi % -% \Finale +% \PrintBackMatter % \endinput diff --git a/macros/latex/contrib/tudscr/source/tudscr-manual.dtx b/macros/latex/contrib/tudscr/source/tudscr-manual.dtx index 88906bd4a0..c0bab03f80 100644 --- a/macros/latex/contrib/tudscr/source/tudscr-manual.dtx +++ b/macros/latex/contrib/tudscr/source/tudscr-manual.dtx @@ -1,10 +1,10 @@ -% \CheckSum{4457} % \iffalse meta-comment +%/GitFileInfo=tudscr-manual.dtx % % TUD-Script -- Corporate Design of Technische Universität Dresden % ---------------------------------------------------------------------------- % -% Copyright (C) Falk Hanisch , 2012-2021 +% Copyright (C) Falk Hanisch , 2012-2022 % % ---------------------------------------------------------------------------- % @@ -23,44 +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-manual.dtx -%<*dtx> -% \fi -% -\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi -\ProvidesFile{tudscr-manual.dtx}[2019/10/23 v2.06e TUD-Script\space% -% -% \iffalse -% -%\ProvidesPackage{tudscrtutorial}[% -%<*package&identify> -%!TUD@Version -% -% package -%<*dtx|package&identify> -% \fi - (internal tutorials)% -] -% \iffalse -% +% \iffalse ins:batch + dtx:driver +%<*ins> +\ifx\documentclass\undefined + \input docstrip.tex + \ifToplevel{\batchinput{tudscr.ins}} +\else + \let\endbatchfile\relax +\fi +\endbatchfile +% %<*dtx> +\ProvidesFile{tudscr-manual.dtx}[2022/08/09] +\RequirePackage{tudscr-gitinfo} \documentclass[english,ngerman,xindy]{tudscrdoc} \iftutex \usepackage{fontspec} @@ -70,18 +45,11 @@ \fi \usepackage{babel} \usepackage{tudscrfonts} -\KOMAoptions{parskip=half-} -\usepackage{bookmark} \usepackage[babel]{microtype} -\CodelineIndex -\RecordChanges -\GetFileInfo{tudscr-manual.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} @@ -93,235 +61,34 @@ % % \changes{v2.02}{2014/12/17}{Erstellung der \app{texindy}-Stildatei während % der Kompilierung}^^A -% \changes{v2.02}{2014/11/18}{\pkg{tudscrtutorial}: Index für Tutorials}^^A +% \changes{v2.02}{2014/11/18}{\pkg{tudscrmanual}: Index für Tutorials}^^A % \changes{v2.05}{2015/08/04}{Geteilte Deklarationen für Klasse und Paket}^^A % -% \section{Handbuch und Leitfäden zu \TUDScript} -% -% Es werden die Klasse \cls{tudscrmanual} für das Handuch sowie das Paket -% \pkg{tudscrtutorial} für das Setzen von einigen Anwenderleitfäden bzw. -% Tutorials erzeugt. Da es zwischen der Klasse und dem Paket es eine große -% Menge an Überschneidungen gibt, basieren diese auf der gleichen Quelldatei. -% Einiges davon wird auch für die Quelltextdokumentationsklasse \cls{tudscrdoc} -% verwendet. -% -% \StopEventually{\PrintIndex\PrintChanges\PrintToDos} % -% \iffalse -%<*body|class&doc> -% \fi % -% \subsection{Notwendige Pakete und Befehle} +% \section{Anwenderdokumentation und Leitfäden zu \TUDScript} % -% Basis für die Handbuchklasse \cls{tudscrmanual} ist \cls{tudscrreprt}. -% Zusätzlich wird das Paket \pkg{tudscrtutorial} erstellt, um an das Handbuch -% angelehnte Tutorials in einem Unterordner zu erstellen. Sowohl für die Klasse -% als auch das Paket werden einige Pakete geladen, um Einstellungen vorzunehmen -% und nützliche Befehle zu definieren. -% -% Das Paket \pkg{xparse} erlaubt eine sehr freie Deklaration von Makros mit -% nahezu beliebig arrangierbaren (optionalen) Argumenten. -% \begin{macrocode} -%<*!doc> -\PassOptionsToPackage{log-declarations=false}{xparse} -\RequirePackage{xparse}[2013/12/31] -% -% \end{macrocode} -% Bugfixes für unterschiedliche Pakete. -% \begin{macrocode} -\RequirePackage{scrhack}[2014/02/27] -% \end{macrocode} -% Die Sprachunterstützung für Klasse und Paket. +% Es werden die Klasse \cls{tudscrmanual} (auf Basis von \cls{tudscrreprt}) für +% die Anwenderdokumentation sowie das Paket \pkg{tudscrmanual} für das Setzen +% von einigen Anwenderleitfäden bzw. Tutorials erzeugt. Da es zwischen der +% Klasse und dem Paket es eine große Menge an Überschneidungen gibt, basieren +% diese auf der gleichen Quelldatei. +% \ToDo{guards überarbeiten, korrelierenden Quelltext zusammenhalten}[v2.07] % \begin{macrocode} -%<*!doc> -\RequirePackage{babel}[2014/03/24] -% -% \end{macrocode} -% Das Paket \pkg{marginnote} stellt nicht fließenden Randnotizen bereit, welche -% für die Kennzeichnung von Änderungen, Hinweise oder ToDo-Notizen verwendet -% werden. Die Randnotizen werden auf dem linken~-- weil größeren~-- Seitenrand -% gesetzt. -% \begin{macrocode} -\PassOptionsToPackage{quiet}{marginnote} -\RequirePackage{marginnote}[2012/03/29] -%\reversemarginpar -% \end{macrocode} -% Das Paket für intelligente Leerzeichen am Ende von Makros mit \cs{xspace}. -% \begin{macrocode} -\RequirePackage{xspace}[2009/10/20] -\xspaceaddexceptions{"=} -% \end{macrocode} -% Für das Paket \pkg{geometry} erfolgen durch \TUDScript vielerlei Anpassungen. -% Um bei einer signifikanten Änderung des Paketes passend reagieren zu können, -% wird auf das aktuelle Paketdatum geprüft und für neue Versionen eine Warnung -% erzeugt. -% \ToDo{Kann raus, sobald \pkg{geometry} nicht mehr notwendig}[v2.07] -% \begin{macrocode} -%<*!(doc|package)> -\@ifpackagelater{geometry}{2018/04/17}{% - \ClassWarning{\TUD@Class@Name}{% - Package `geometry' was updated so some patches\MessageBreak% - are maybe outdated% - }% -}{}% -% -% \end{macrocode} -% \begin{macro}{\vTUDScript} -% \begin{macro}{\vKOMAScript} -% Diese Befehle geben in der Dokumentation die aktuelle Version von \TUDScript -% sowie die mindestens notwendige Version von \KOMAScript{} aus. -% \begin{macrocode} -\newcommand*\vTUDScript{v\TUDScriptVersionNumber} -\newcommand*\vKOMAScript{v\TUD@Version@KOMA} -% \end{macrocode} -% \end{macro}^^A \vKOMAScript -% \end{macro}^^A \vTUDScript -% \begin{macro}{\tud@english} -% Mit diesem Befehl wird der Inhalt des Arumentes mit englischen Trennmustern -% gesetzt, falls die Sprache geladen wurde. -% \begin{macrocode} -\newcommand*\tud@english[1]{#1} -\AtBeginDocument{% - \iflanguageloaded{english}{% - \renewcommand*\tud@english[1]{\foreignlanguage{english}{#1}}% - }{}% -} -% \end{macrocode} -% \end{macro}^^A \tud@english -% Das Paket \pkg{shellesc} ermöglicht mit dem Befehl \cs{ShellEscape} die -% Verwendung von Systembefehlen auf der Kommandozeile unabhängig von der -% genutzten Engine. Sollte \app{lualatex} als Dokumentprozessor eingesetzt -% werden, sind dennoch die \app{pdflatex}-Primitiven \cs{pdf(@)strcmp} und -% \cs{pdf(@)shellescape} nötig, wofür das Paket \pkg{pdftexcmds} geladen wird. -% \begin{macrocode} -\RequirePackage{shellesc}[2016/06/07] -\RequirePackage{pdftexcmds}[2016/05/21] -% \end{macrocode} -% -% \iffalse -% -%<*!doc> -%<*body> -%<*class> -% \fi -% -% \begin{macro}{\tud@list@sort} -% \changes{v2.02}{2014/07/25}{neu}^^A -% \begin{macro}{\tud@list@@sort} -% \changes{v2.02}{2014/07/25}{neu}^^A -% \begin{macro}{\tud@templist} -% \changes{v2.02}{2014/07/25}{neu}^^A -% \begin{macro}{\if@tud@list@sorted} -% \changes{v2.02}{2014/07/25}{neu}^^A -% Der Befehl \cs{tud@list@sort} erwartet eine \pkg{etoolbox}-Liste und sortiert -% diese mit dem Makro \cs{sort@list} in alphabetischer Reihenfolge in eine -% kommagetrennte Auflistung. Diese wird anschließend wieder in eine -% \pkg{etoolbox}-Liste umgewandelt. -% \begin{macrocode} -\newcommand*\tud@templist{} -\let\tud@templist\relax -\newcommand*\tud@list@sort[1]{% - \ifdefvoid{#1}{% - \ClassWarning{tudscrmanual}{% - The given list \string#1\space\MessageBreak% - is empty, nothing to sort here% - }% - }{% - \let\tud@reserved#1% - \let\tud@templist\relax% - \forlistloop\tud@list@@sort{\tud@reserved}% - \let\tud@reserved\relax% - \@for\@tempa:=\tud@templist\do{\listeadd\tud@reserved{\@tempa}}% - \let#1\tud@reserved% - }% -} -% \end{macrocode} -% Hier erfolgt die eigentliche Sortierung der Liste. -% \begin{macrocode} -\newif\if@tud@list@sorted -\newcommand*\tud@list@@sort[1]{% -% \end{macrocode} -% Der erste Eintrag wird direkt der Liste hinzugefügt. -% \begin{macrocode} - \ifx\tud@templist\relax% - \def\tud@templist{#1}% -% \end{macrocode} -% Weitere Einräge werden mit \cs{pdfstrcmp} an der richtigen Stelle eingefügt. -% Dabei wird die kommagetrennte Liste \cs{tud@templist} durchlaufen und -% \cs{@tempb} als Hilfsmakro verwendet, in welches die aktuelle Liste innerhalb -% der \cs{@for}-Schleife stückweise expandiert wird. Wenn das aktuelle Element -% an der dafür passenden Stelle eingesetzt wurde, wird \cs{if@tud@list@sorted} -% gesetzt. -% \begin{macrocode} - \else% - \@tud@list@sortedfalse% - \let\@tempb\@empty% - \@for\@tempa:=\tud@templist\do{% -% \end{macrocode} -% Ist der Eintrag bereits erfolgt, wird der verbliebene Teil der Liste -% angehangen. -% \ToDo{\cs{expandafter}\cs{edef}\cs{expandafter} ist quatsch, oder?}[v2.07] -% \begin{macrocode} - \if@tud@list@sorted% - \expandafter\edef\expandafter\@tempb\expandafter{\@tempb,\@tempa}% - \else% -% \end{macrocode} -% Liegt der Eintrag in alphabetischer Reihenfolge vor dem aktuellen der -% durchlaufenenen Liste, so wird dieser davor eingefügt. Dabei muss der Fall, -% dass das Element der erste Eintrag in der temporären Liste \cs{@tempb} ist, -% eine Sonderbehandlung erfolgen. Anschließend wird \cs{@tud@list@sortedtrue} -% gesetzt. -% \begin{macrocode} - \expandafter\ifnum\pdf@strcmp{#1}{\@tempa}<\z@\relax% - \ifx\@tempb\@empty% - \expandafter\edef\expandafter\@tempb\expandafter{% - #1,\@tempa% - }% - \else% - \expandafter\edef\expandafter\@tempb\expandafter{% - \@tempb,#1,\@tempa% - }% - \fi% - \@tud@list@sortedtrue% - \else% -% \end{macrocode} -% Ist Eintrag in alphabetischer Reihenfolge nach dem aktuellen der geprüften -% Liste, so wird dieser (noch) nicht eingefügt. Der Sonderfall des ersten -% Elementes wird abgedeckt. -% \begin{macrocode} - \ifx\@tempb\@empty% - \expandafter\edef\expandafter\@tempb\expandafter{\@tempa}% - \else% - \expandafter\edef\expandafter\@tempb\expandafter{\@tempb,\@tempa}% - \fi% - \fi% - \fi% - }% -% \end{macrocode} -% Wurde der Eintrag nach dem Durchlaufen der Liste nicht eingefügt, so erfolgt -% dies hier am Ende der Liste. -% \begin{macrocode} - \if@tud@list@sorted\else% - \expandafter\edef\expandafter\@tempb\expandafter{\@tempb,#1}% - \fi% -% \end{macrocode} -% Die temporäre Liste \cs{@tempb} wird auf \cs{tud@templist} überschrieben. -% \begin{macrocode} - \let\tud@templist\@tempb% - \fi% -} +%<*package&identify> +\ProvidesPackage{tudscrmanual}[% +%!TUD@Version + package (tudscr tutorials)% +] +\TUD@Class@Check{tudscrtutorial} +% % \end{macrocode} -% \end{macro}^^A \if@tud@list@sorted -% \end{macro}^^A \tud@templist -% \end{macro}^^A \tud@list@@sort -% \end{macro}^^A \tud@list@sort % % \iffalse -% -%<*package> +%<*package&body> % \fi % -% \subsection{Zusätzliche Pakete für das Paket \pkg{tudscrtutorial}} +% \subsection{Zusätzliche Pakete für das Paket \pkg{tudscrmanual}} % % Mit dem Paket \pkg{scrwfile} lassen sich Probleme mit zu wenig verfügbaren % Streams für das Schreiben externer Datein beheben. Hintergrund ist die @@ -329,17 +96,16 @@ % Vielzahl solcher Streams benötigt. Das Paket \pkg{morewrites} hat keinen % Einfluss auf \pkg{glossaries}. % \begin{macrocode} -\RequirePackage{scrwfile}[2013/08/05] +\RequirePackage{scrwfile} % \end{macrocode} % % \iffalse -% -% +% %<*option> % \fi % % \subsection{% -% Optionen für die Ausgabe von \cls{tudscrmanual} und \pkg{tudscrtutorial}% +% Optionen für die Ausgabe von \cls{tudscrmanual} und \pkg{tudscrmanual}% % } % % \begin{option}{final} @@ -450,8 +216,8 @@ \newcommand*\tud@trace@lbl@created@list{}% \newcommand*\tud@trace@lbl@missing@list{}% \@tempswafalse% - \ifstr{#2}{created}{\@tempswatrue}{}% - \ifstr{#2}{all}{\@tempswatrue}{}% + \tud@if@strequal{#2}{created}{\@tempswatrue}{}% + \tud@if@strequal{#2}{all}{\@tempswatrue}{}% \if@tempswa% \renewcommand*\tud@trace@lbl@created@add[1]{% \typeout{% @@ -470,8 +236,8 @@ }% \fi% \@tempswafalse% - \ifstr{#2}{missing}{\@tempswatrue}{}% - \ifstr{#2}{all}{\@tempswatrue}{}% + \tud@if@strequal{#2}{missing}{\@tempswatrue}{}% + \tud@if@strequal{#2}{all}{\@tempswatrue}{}% \if@tempswa% \renewcommand*\tud@trace@lbl@missing@add[1]{% \typeout{% @@ -554,33 +320,13 @@ % % \iffalse % -% -% -%<*body|class&doc> % \fi % % \subsection{Anpassungen für das Paket \pkg{hyperref} und Querverweise} % -% Das Paket \pkg{hyperref} wird für alle möglichen Links und Querverweise -% geladen, \pkg{bookmark} verbessert das Erstellen der Outline-Einträge. -% \begin{macrocode} -\PassOptionsToPackage{hyperindex=false,colorlinks,linkcolor=blue}{hyperref} -\PassOptionsToPackage{open,openlevel=0}{bookmark} -% \end{macrocode} -% Es folgen einige Befehle, die an das Paket \pkg{hyperref} gekoppelt sind. -% Sobald das Paket geladen wurde, werden die Makros mit der jeweiligen -% Funktionalität definiert. -% \begin{macrocode} -\AfterPackage*{hyperref}{% -% \end{macrocode} -% Zuerst die Einstellungen für \cls{tudscrmanual} und \pkg{tudscrtutorial}. -% -% \iffalse -%<*!doc> -% \fi -% % Die Bezeichner für die Abschnittsebenen werden umbenannt. % \begin{macrocode} +\AfterPackage*{hyperref}{% \renewcaptionname{ngerman}{\sectionautorefname}{Unterkapitel}% \renewcaptionname{ngerman}{\subsectionautorefname}{Abschnitt}% \renewcaptionname{ngerman}{\subsubsectionautorefname}{Unterabschnitt}% @@ -590,7 +336,7 @@ % \begin{macro}{\tudhyperref} % \changes{v2.02}{2014/10/27}{neu}^^A % \begin{macro}{\tud@manualname} -% \changes{v2.05}{2015/1q/19}{neu}^^A +% \changes{v2.05}{2015/11/19}{neu}^^A % Diese Befehle dienen sowohl zum Definieren von Textankern im Handbuch als % auch zum Referenzieren auf diese. Bei der Erstellung des Ankers mit % \cs{tudhyperdef} wird zusätzlich auch noch ein Label (\cs{label}) erzeugt. @@ -603,11 +349,11 @@ %<*class> \NewDocumentCommand\tudhyperdef{s t' m}{% \@tempswafalse% - \IfBooleanT{#1}{\@tempswatrue\setlength\@tempdima{3\baselineskip}}% - \IfBooleanT{#2}{\@tempswatrue\setlength\@tempdima{15\baselineskip}}% + \IfBooleanT{#1}{\@tempswatrue\tud@setdim\@tempdima{3\baselineskip}}% + \IfBooleanT{#2}{\@tempswatrue\tud@setdim\@tempdima{15\baselineskip}}% \if@tempswa% \raisebox{\@tempdima}[0pt][0pt]{\hyperdef{\tud@manualname}{#3}{}}% - \par\nobreak\vskip\dimexpr-\parskip-\baselineskip\relax% + \par\nobreak\vskip-\parskip\vskip-\baselineskip% \@afterindentfalse\@afterheading% \else% \Hy@raisedlink{\hyperdef{\tud@manualname}{#3}{}}\ignorespaces% @@ -640,7 +386,7 @@ % vorgestellt und hier übernommen. % \begin{macrocode} \newcommand*\autorefname[1][current]{% - \ifstr{#1}{current}{% + \tud@if@strequal{#1}{current}{% \expandafter\HyPsd@@autorefname\@currentHref\@nil% }{% \auto@refname\HyPsd@@autorefname{#1}% @@ -661,71 +407,6 @@ % \end{macro}^^A \auto@@refname % \end{macro}^^A \auto@refname % \end{macro}^^A \autorefname -% Nun die Einstellungen für \cls{tudscrdoc}. -% -% \iffalse -% -%<*doc> -% \fi -% -% \begin{macro}{\hypersourcedef} -% \changes{v2.05}{2016/04/26}{neu}^^A -% \begin{macro}{\hypersource@def} -% \changes{v2.05}{2016/04/26}{neu}^^A -% \begin{macro}{\hypersource@ref@codeline} -% \changes{v2.05}{2016/04/26}{neu}^^A -% \begin{macro}{\hypersource@ref@page} -% \changes{v2.05}{2016/04/26}{neu}^^A -% Diese Makros werden verwendet, um im Index respektive in der Änderungsliste -% mithilfe von \pkg{hyperref} Hyperlinks auf Codezeilen respektive Seiten im -% Dokument zu setzen. -% -% Mit \cs{hypersourcedef} wird ein Textanker gesetzt, falls dieser noch nicht -% definiert wurde, was durch \cs{hypersource@def} abgesichert wird. Als -% Argument wird hierfür die aktuelle Codezeile verwendet. -% \begin{macrocode} - \newcommand*\hypersource@def{} - \newcommand*\hypersourcedef[1]{% - \ifstr{#1}{\hypersource@def}{}{% - \Hy@raisedlink{\hyperdef{}{source:#1}{}}% - \xdef\hypersource@def{#1}% - }% - }% -% \end{macrocode} -% Mit \cs{hypersource@ref@\dots} wird auf Anker im Dokument verlinkt. Dies -% erfolgt indirekt über die Attribute \val{main} bzw. \val{usage}, welche bei -% der Definitionen von Befehlen etc. im Index genutzt werden. Hierfür werden -% die dazugehörigen Makros umdefiniert. -% \begin{macrocode} - \newcommand*\hypersource@ref@codeline[2][\@firstofone]{% - \begingroup% - \def\@tempa##1{\hyperref{}{}{source:##1}{#1{##1}}}% - \forcsvlist\@tempa{#2}% - \endgroup% - }% - \newcommand*\hypersource@ref@page[2][\@firstofone]{% - \begingroup% - \def\@tempa##1{\hyperlink{page.##1}{#1{##1}}}% - \forcsvlist\@tempa{#2}% - \endgroup% - }% - \renewcommand*\main[1]{% - \ifcodeline@index% - \hypersource@ref@codeline[\underline]{#1}% - \else% - \hypersource@ref@page[\underline]{#1}% - \fi% - }% - \renewcommand*\usage[1]{\hypersource@ref@page[\textit]{#1}}% -% \end{macrocode} -% \end{macro}^^A \hypersource@ref@page -% \end{macro}^^A \hypersource@ref@codeline -% \end{macro}^^A \hypersource@def -% \end{macro}^^A \hypersourcedef -% -% \iffalse -% -% \fi % % Das war's. Damit sind die Ausführungen für das Paket \pkg{hyperref} beendet. % \begin{macrocode} @@ -739,43 +420,18 @@ % Zunächst die direkt innerhalb der Dokumentation verwendeten Befehle nebst % dazugehöriger Warnung. % \begin{macrocode} -%<*!doc> %<*class> \ClassWarningNoLine{tudscrmanual}% % %<*package> - \PackageWarningNoLine{tudscrtutorial}% + \PackageWarningNoLine{tudscrmanual}% % {% It is strongly recommended to load package `hyperref'. \MessageBreak% Nevertheless, essential commands are rudimentarily\MessageBreak% defined. At least the package `url' is loaded% }% -% -% \end{macrocode} -% \begin{macro}{\hypersetup} -% \begin{macro}{\href} -% \begin{macro}{\phantomsection} -% \begin{macro}{\texorpdfstring} -% \begin{macro}{\nolinkurl} -% Einige vom Paket \pkg{hyperref} definierten Befehle werden vorgehalten. -% \begin{macrocode} - \providecommand*\hypersetup[1]{}% - \providecommand*\href[3][]{#3}% - \providecommand*\phantomsection{}% - \providecommand*\texorpdfstring[2]{#1}% - \RequirePackage{url}[2013/09/16]% - \providecommand*\nolinkurl[1]{\url{#1}}% -% \end{macrocode} -% \end{macro}^^A \nolinkurl -% \end{macro}^^A \texorpdfstring -% \end{macro}^^A \phantomsection -% \end{macro}^^A \href -% \end{macro}^^A \hypersetup -% -% \iffalse -%<*!doc> -% \fi +% \end{macrocode} % % \begin{macro}{\hyperpage} % \begin{macro}{\autoref} @@ -837,96 +493,18 @@ % \providecommand*\tudhyperref[2]{#2}% \providecommand*\autorefname[1][]{??\xspace}% -% -% \iffalse -% -%<*doc> -% \fi -% -% \end{macrocode} -% Und hier der Teil für die Quelltextdokumentation. -% \begin{macrocode} - \providecommand*\hypersourcedef[1]{} - \providecommand*\hypersource@def{} - \providecommand*\hypersource@ref@codeline[2][]{} - \providecommand*\hypersource@ref@page[2][]{} -% -% \iffalse -% -% \fi -% -% \begin{macrocode} } % \end{macrocode} -% \begin{macro}{\hrfn} -% \changes{v2.02}{2014/08/16}{neu}^^A -% \changes{v2.04}{2015/02/18}{Schriftgröße mit \cs{scalebox}}^^A -% Mit diesem Makro können Hyperlinks im Fließtext erzeugt werden, welche -% zusätzlich noch die dazugeörige URL als Fußnote anzeigen. -% \begin{macrocode} -\newcommand*\hrfn[2]{% - \href{#1}{\trim@spaces{#2}}% - \footnote{% - \begingroup% -% \end{macrocode} -% Die Gruppe wird verwendet, um Unterstriche zu entschärfen, die im Zweifel zu -% Fehlern führen können. -% \begin{macrocode} - \def\_{_}% - \edef\@tempa{#1}% - \strut\expandafter\url\expandafter{\@tempa}% - \endgroup% - }% -} -% \end{macrocode} -% \end{macro}^^A \hrfn -% \begin{macro}{\mailto} -% Ein Makro zur Angabe einer verlinkten E"~Mail-Adresse. -% \begin{macrocode} -\newrobustcmd*\mailto[1]{\mbox{\href{mailto:#1}{\nolinkurl{#1}}}}% -% \end{macrocode} -% \end{macro}^^A \mailto -% Wenn \pkg{hyperref} geladen wird, erzeugt das Paket \pkg{babel} innerhalb von -% \cs{pdfstringdef} ziemlich viele und absolut unnötige Infos in der Form -% \texttt{Package babel Info: Redefining ngerman shorthand}. Dieser Patch dient -% zum Unterdrücken dieser Infos. -% \begin{macro}{\pdfstringdef} -% \begin{macrocode} -\AfterPackage*{hyperref}{% - \patchcmd{\pdfstringdef}{\csname HyPsd@babel@}{% - \let\bbl@info\@gobble\csname HyPsd@babel@% - }{}{\tud@patch@wrn{pdfstringdef}}% -} -% \end{macrocode} -% \end{macro}^^A \pdfstringdef -% -% \iffalse -% -%<*body> -% \fi % % \begin{macro}{\fullref} % Verbesserte Referenzierungen auf Seiten. % \begin{macrocode} -\RequirePackage{varioref}[2011/10/02] -\renewcommand*\fullref[1]{\hyperref[#1]{\autoref*{#1} \vpageref{#1}}} +\RequirePackage{varioref} +\renewcommand*\fullref[1]{\hyperref[{#1}]{\autoref*{#1} \vpageref{#1}}} % \end{macrocode} % \end{macro}^^A \fullref -% Das Paket \pkg{microtype} wird für den optischen Randausgleich verwendet. Es -% sollte erst nach \pkg{hyperref} geladen werden. -% \begin{macrocode} -\AfterPackage*{hyperref}{\RequirePackage[babel]{microtype}[2013/05/23]} -% \end{macrocode} -% Wurde \pkg{hyperref} nicht geladen, dann soll auf \pkg{microtype} trotzdem -% nicht verzichtet werden. -% \begin{macrocode} -\TUD@UnwindPackage{hyperref}{\RequirePackage[babel]{microtype}[2013/05/23]} -% \end{macrocode} % % \iffalse -% -%<*!doc> -%<*body> %<*class> % \fi % @@ -949,8 +527,8 @@ % \val{true} gesetzt und vor dem Beenden auf \val{false}. Damit wird bestimmt, % ob ein öffnender oder ein schließender Indexeintrag erzeugt werden soll. % \begin{macrocode} -\newif\if@tud@declare -\newif\if@openindex +\tud@newif\if@tud@declare +\tud@newif\if@openindex % \end{macrocode} % Das Makro \cs{tud@declare@num} bestimmt innerhalb einer Deklaration, wie % das Markup erfolgen soll. Die möglichen Werte sind bei der Beschreibung von @@ -1011,10 +589,10 @@ % für Umgebungen und Befehle gedacht, bei denen lediglich ein oder mehrere % Parameter geändert wurden bzw. entfallen. % \begin{macrocode} -\newif\if@tud@obsolete +\tud@newif\if@tud@obsolete \NewDocumentEnvironment{Obsolete}{momoog}{% \@tud@obsoletetrue% - \ifxblank{#1}{% + \tud@if@strblank{#1}{% % \end{macrocode} % Ohne Versionsnummer erfolgt die Ausgabe ohne Label. Für den Eintrag wird auch % keine Änderungsnotiz erzeugt. @@ -1057,7 +635,7 @@ }% \@tempb#1\@nil% \fi% - \eaddto@hook\toks@{\expandafter{\@tempa}}% + \addto@hook@expandafter\toks@{\expandafter{\@tempa}}% \the\toks@% }% }% @@ -1080,10 +658,10 @@ % \begin{macrocode} \newcommand*\tud@preset@list{} \let\tud@preset@list\relax -\newif\if@tud@preset@list +\tud@newif\if@tud@preset@list \newcommand*\tud@additional@list{} \let\tud@additional@list\relax -\newif\if@tud@additional@list +\tud@newif\if@tud@additional@list % \end{macrocode} % \end{macro}^^A \if@tud@additional@list % \end{macro}^^A \tud@additional@list @@ -1242,9 +820,13 @@ % einfach bei der verwendung der genannten Befehle der zuvor gesetzte vertikale % Abstand in \cs{tud@lastskip} gesichert. % \begin{macrocode} -\newskip\tud@lastskip -\pretocmd{\index}{\tud@lastskip=\lastskip}{}{\tud@patch@wrn{index}} -\pretocmd{\label}{\tud@lastskip=\lastskip}{}{\tud@patch@wrn{label}} +\tud@newglue\tud@lastskip +\pretocmd\index{% + \tud@lastskip=\lastskip% +}{}{\tud@patch@wrn{index}} +\pretocmd\label{% + \tud@lastskip=\lastskip% +}{}{\tud@patch@wrn{label}} \NewDocumentCommand\printdeclarationlist{!s !d()}{% \ifx\tud@declaration@list\relax\else% \ifhmode% @@ -1256,7 +838,7 @@ % Sollte dann noch ein positiver Wert bestehen, wird dieser einfach zusätzlich % gesetzt. % \begin{macrocode} - \@tempskipa=\glueexpr\medskipamount-\tud@lastskip\relax% + \tud@setglue\@tempskipa{\medskipamount-\tud@lastskip}% \ifdim\@tempskipa>\z@\relax% \addpenalty{\@beginparpenalty}% \addvspace{\@tempskipa}% @@ -1375,10 +957,15 @@ % \begin{macro}{\bsc} % \changes{v2.02}{2014/07/22}{\cs{newrobustcmd} aus \pkg{etoolbox} anstatt % \cs{DeclareRobustCommand}}^^A -% Eine einfacher zu verwendende Kurzform. +% \begin{macro}{\txb} +% \changes{v2.06o}{2022/08/03}{neu}^^A +% Eine einfacher zu verwendende Kurzform für den Backslash sowie eine +% mikrotypografisch angepasste Version von \cs{textbar}. % \begin{macrocode} \newrobustcmd*\bsc{\@backslashchar} +\newrobustcmd*\txb{{\raise.05em\hbox{\kern.05em\textbar\kern.05em}}} % \end{macrocode} +% \end{macro}^^A \txb % \end{macro}^^A \bsc % \begin{macro}{\suffix} % \changes{v2.05}{2015/10/27}{neu}^^A @@ -1420,7 +1007,7 @@ % Argumenten am Ende genutzt werden können. Sollte ein Label existieren, wird % automatisch ein Hyperlink erzeugt, welcher mit der optionalen Angabe von % |'|\meta{Referenzvariante}|'| um einen textuellen Querverweis ergänzt werden -% kann. Mit \verb=|=\meta{Indexmarkup}\verb=|= kann die Erscheinung im Index +% kann. Mit \verb+|+\meta{Indexmarkup}\verb+|+ kann die Erscheinung im Index % angepasst werden. Bei einigen Befehlen kann zusätzlich zuvor im Markup mit % dem optionalen Argument \parg{Bundleelement} die Zuweisung auf ein bestimmtes % Paket oder eine Klasse aus dem \TUDScript-Bundle erfolgen. @@ -1431,7 +1018,7 @@ % festgelegt. Ein Eintrag in den Index wird mit \cs{Process@Index} realisiert. % Für die Änderungsliste wird der Befehl \cs{Process@ChangedAt} genutzt, um die % entsprechende Formatierung zu gewährleisten, wobei dies nur für die Klasse -% \cls{tudscrmanual} und nicht für das Paket \pkg{tudscrtutorial} gilt. +% \cls{tudscrmanual} und nicht für das Paket \pkg{tudscrmanual} gilt. % % \begin{macro}{\ProcessorKeyVal} % \changes{v2.05}{2015/11/01}{neu}^^A @@ -1473,7 +1060,7 @@ \ClassError{tudscrmanual}% % %<*package> - \PackageError{tudscrtutorial}% + \PackageError{tudscrmanual}% % {Wrong usage of optional argument for value}% {There are two optional arguments for a value given!}% @@ -1500,7 +1087,7 @@ \ClassError{tudscrmanual}% % %<*package> - \PackageError{tudscrtutorial}% + \PackageError{tudscrmanual}% % {Nested environment `Bundle'}{% It is not possible to nest this environment, when\MessageBreak% @@ -1522,7 +1109,9 @@ \newcommand*\tud@bdl@curr{} \newcommand*\tud@bdl@dflt{tudscr} \let\tud@bdl@curr\tud@bdl@dflt -\newcommand*\tud@if@bdl[2]{\ifstr{\tud@bdl@curr}{\tud@bdl@dflt}{#2}{#1}} +\newcommand*\tud@if@bdl[2]{% + \tud@if@strequal{\tud@bdl@curr}{\tud@bdl@dflt}{#2}{#1}% +} % \end{macrocode} % \end{macro}^^A \tud@if@bdl % \end{macro}^^A \tud@bdl@dflt @@ -1535,7 +1124,7 @@ % \begin{macrocode} \NewExpandableDocumentCommand\@Application{sm}{#2} \NewDocumentCommand\Application{s m !d() !d<> !d||}{% - \Markup@SetFormat{\sbsfont}% + \Markup@SetFormat{\sbifont}% \IfValueTF{#4}{% \Process@Markup{\Application{#2}}(#3)<#4>% }{% @@ -2024,7 +1613,7 @@ % Default-Eintrag hinterlegen, um ggf. darauf zu prüfen% % }[v2.??]% % \ToDo{% -% neues Makro \cs{PLength} mit \cs{PName\{Längenwert\}} +% neues Makro \cs{PLength} mit \cs{PName}\marg{Längenwert} % }[v2.??]% % \begin{macro}{\PValue} % \begin{macro}{\PName} @@ -2118,7 +1707,7 @@ % des zweiten obligatorischen Argumentes ausgeführt. Es ist zu beachten, dass % dieser \emph{expandiert} wird! % \begin{macrocode} - \ifxblank{#2}{% + \tud@if@strblank{#2}{% \let\tud@reserved\endgroup% }{% \protected@edef\tud@reserved{\noexpand\endgroup#3}% @@ -2309,8 +1898,7 @@ % nicht der Fall ist, wird die Labelgenerierung abermals ausgeführt. % \begin{macrocode} \NewDocumentCommand\tud@lbl@get@@dflt{mmmmr==}{% - \edef\tud@reserved{\expandafter\detokenize\expandafter{\tud@bdl@dflt}}% - \ifstr{\tud@reserved}{#2}{}{% + \tud@if@strequal{#2}{\tud@bdl@dflt}{}{% % \end{macrocode} % Dabei erfolgt der Aufruf logischerweise mit dem richtigen Bundlepräfix. % \begin{macrocode} @@ -2333,10 +1921,10 @@ \NewDocumentCommand\tud@if@lbl@exists{% >{\tud@lbl@create}>{\SplitArgument{2}{:}}m% }{% - \ifcsdef{r@#1}{% - \expandafter\@firstoftwo% - }{% + \ifcsundef{r@#1}{% \expandafter\@secondoftwo% + }{% + \expandafter\@firstoftwo% }% } % @@ -2422,7 +2010,7 @@ \IfValueTF{#2}{% \tud@attr@get\@tempb{#2}% \IfValueTF{#1}{% - \ifxblank{#1}{% + \tud@if@strblank{#1}{% \edef\@tempa{\tud@bdl@dflt:\@tempb:#2}% }{% \edef\@tempa{#1:\@tempb:#2}% @@ -2472,8 +2060,9 @@ % Überschriften ausgegeben werden, wird der Schalter \cs{if@tud@disposition} % und der dazugehörige auswertende Befehl \cs{ifdisposition} definiert. Das % Setzen des Schalters wird in \cs{tud@sec@format} gepatcht. +% \ToDo{besser nur als internen Befehl definieren \cs{tud@if@...}?!}[v2.06] % \begin{macrocode} -\newif\if@tud@disposition +\tud@newif\if@tud@disposition \newcommand*\ifdisposition{% \if@tud@disposition% \expandafter\@firstoftwo% @@ -2481,7 +2070,7 @@ \expandafter\@secondoftwo% \fi% } -\pretocmd{\tud@sec@format}{% +\pretocmd\tud@sec@format{% \@tud@dispositiontrue% }{}{\tud@patch@wrn{tud@sec@format}} % \end{macrocode} @@ -2491,7 +2080,7 @@ % % In der Klasse \cls{tudscrmanual} werden die Markup-Befehle zusätzlich auch % als Argument der Umgebung \env{Declaration} genutzt. Für diese Verwendung -% kommt die Definiton von \cs{Markup@Declare} und ggf. \cs{Markup@Suffix} zum +% kommt die Definition von \cs{Markup@Declare} und ggf. \cs{Markup@Suffix} zum % Einsatz. % % \begin{macro}{\Process@Markup} @@ -2568,7 +2157,7 @@ %<*class> \fi% % - \eaddto@hook\tud@toks@{\expandafter{\tud@lbl@tmp}}% + \addto@hook@expandafter\tud@toks@{\expandafter{\tud@lbl@tmp}}% % \end{macrocode} % Danach wird der Inhalt des im ersten Argument übergebenen Markup-Befehls in % einer Gruppe ein temporäres Makro expandiert und als zweites Argument für die @@ -2581,7 +2170,7 @@ \def\noexpand\tud@reserved{#1}% }% \tud@reserved% - \eaddto@hook\tud@toks@{\expandafter{\tud@reserved}}% + \addto@hook@expandafter\tud@toks@{\expandafter{\tud@reserved}}% % \end{macrocode} % Es folgen gegebenenfalls die optionalen Argument |=|\meta{Wert}|=| sowie % \oarg{Ausgabesuffix}~-- falls diese angegeben wurden. @@ -2598,7 +2187,7 @@ % Schalter hier genutzt, um lediglich zu Beginn einer Deklaration das Markup % auszuführen. Dabei Angaben für eine |'|\meta{Referenzvariante}|'| nicht % erlaubt. -% \begin{macrocode} +% \begin{macrocode} %<*class> \if@tud@declare% \if@openindex% @@ -2630,7 +2219,9 @@ % \if@tud@index\else% \IfValueT{#5}{% - \ifxblank{#5}{}{\addto@hook\tud@toks@{}}% + \tud@if@strblank{#5}% + {}% + {\addto@hook\tud@toks@{}}% }% \IfValueT{#6}{\addto@hook\tud@toks@{'#6'}}% \fi% @@ -2653,9 +2244,9 @@ % \begin{macrocode} \if@tud@index\else% \IfValueT{#4}{% - \ifxblank{#4}{}{% + \tud@if@strblank{#4}{}{% \tud@trace@bdl@add{#4}% - \ifstr{#6}{none}{}{% + \tud@if@strequal{#6}{none}{}{% \tud@if@lbl@exists{\tud@lbl@tmp}{}{% \ClassWarning{tudscrmanual}{% No existing label \tud@lbl@tmp\space for #4% @@ -2746,7 +2337,7 @@ \NewDocumentCommand\Process@@MarkupInline{mmd==od<>d''}{% \Markup@CheckFormat% % \end{macrocode} -% Um die aktuelle Definiton der temporären Makros nicht zu ändern, erfolgt die +% Um die aktuelle Definition der temporären Makros nicht zu ändern, erfolgt die % formatierte Ausgabe in einer Gruppe. Dabei wird in \cs{@tempc} die minimale % Variante gesichert. % \begin{macrocode} @@ -2773,25 +2364,21 @@ \let\@tempb\relax% \IfValueT{#6}{% \def\@tempb{% -%<*class> - \ClassWarning{tudscrmanual}% -% -%<*package> - \PackageWarning{tudscrtutorial}% -% - {% + \ClassWarning{tudscrmanual}{% You've used the unknown cross-reference\MessageBreak% shorthand '#6'. Only 'auto', 'page' and 'full'\MessageBreak% as well as 'none' \IfValueT{#5}{or 'url' }are valid% }% }% - \ifstr{#6}{auto}{\def\@tempb{ in \autoref{#1}}}{% - \ifstr{#6}{page}{\def\@tempb{ \vpageref{#1}}}{% - \ifstr{#6}{ppage}{\def\@tempb{ \reftextfaraway{#1}}}{% - \ifstr{#6}{full}{\def\@tempb{ in \fullref{#1}}}{% - \ifstr{#6}{none}{\let\@tempa\@tempc\let\@tempb\relax}{}}}}}% + \tud@if@strequal{#6}{auto} {\def\@tempb{ in \autoref{#1}}}{% + \tud@if@strequal{#6}{page} {\def\@tempb{ \vpageref{#1}}}{% + \tud@if@strequal{#6}{ppage}{\def\@tempb{ \reftextfaraway{#1}}}{% + \tud@if@strequal{#6}{full} {\def\@tempb{ in \fullref{#1}}}{% + \tud@if@strequal{#6}{none} {\let\@tempa\@tempc\let\@tempb\relax}{}}}}}% \IfValueT{#5}{% - \ifstr{#6}{url}{\def\@tempa{\href{#5}{\@tempc}}\let\@tempb\relax}{}% + \tud@if@strequal{#6}{url}% + {\def\@tempa{\href{#5}{\@tempc}}\let\@tempb\relax}% + {}% }% }% }{% @@ -2809,14 +2396,16 @@ % \begin{macrocode} \let\@tempb\relax% \IfValueT{#6}{% - \ifstr{#6}{none}{\let\@tempa\@tempc}{% -% \ifstr{#6}{manual}{\def\@tempa{\tudhyperref{#1}{\@tempc}}}{% + \tud@if@strequal{#6}{none}{\let\@tempa\@tempc}{% +%<*package> + \tud@if@strequal{#6}{manual}{\def\@tempa{\tudhyperref{#1}{\@tempc}}}{% +% \def\@tempb{% %<*class> \ClassWarning{tudscrmanual}% % %<*package> - \PackageWarning{tudscrtutorial}% + \PackageWarning{tudscrmanual}% % {% %<*class> @@ -2900,7 +2489,7 @@ % \begin{macrocode} \IfValueT{#3}{\appto\@tempa{=#3}}% \IfValueT{#4}{\appto\@tempa{#4}}% - \eaddto@hook\tud@toks@{\expandafter{\@tempa}}% + \addto@hook@expandafter\tud@toks@{\expandafter{\@tempa}}% \the\tud@toks@% } % \end{macrocode} @@ -2949,16 +2538,7 @@ \undef\Markup@Format \newcommand*\Markup@Suffix{} \NewDocumentCommand\Markup@SetFormat{omod()}{% -% \end{macrocode} -% Außerdem ist noch eine weitere Besonderheit zu beachten. Sollte gerade eine -% Überschrift gesetzt werden, wird das Hauptargument nicht formatiert sondern -% lediglich mit \cs{tud@sec@format} ausgegeben. -% \begin{macrocode} - \def\Markup@Format##1{% - \def\tud@res@a{#2}% - \tud@ifdin{\let\tud@res@a\tud@sec@format}{}% - \begingroup\tud@res@a{\IfValueT{#1}{#1}##1}\endgroup% - }% + \def\Markup@Format##1{\begingroup#2{\IfValueT{#1}{#1}##1}\endgroup}% \IfValueT{#3}{\def\Markup@Suffix{\suffix{#3}}}% %<*class> \IfValueT{#4}{\renewcommand*\Markup@Declare[1]{#4\Markup@Suffix}}% @@ -2982,7 +2562,7 @@ \ClassError{tudscrmanual}% % %<*package> - \PackageError{tudscrtutorial}% + \PackageError{tudscrmanual}% % {\string\Markup@SetFormat\space unused}% {It seems you have forgotten to use \string\Markup@SetFormat.}% @@ -2994,50 +2574,6 @@ % \end{macro}^^A \Markup@ClearFormat % \end{macro}^^A \Markup@SetFormat % \end{macro}^^A \Markup@CheckFormat -% \begin{macro}{\tud@nonchangecase} -% \changes{v2.05}{2015/11/20}{neu}^^A -% \begin{macro}{\tud@x@textcase@uclcnotmath} -% Die \TUDScript-Hauptklassen definieren in Ergänzung zum Paket \pkg{textcase} -% den internen Befehl \cs{tud@x@textcase@uclcnotmath}, womit die Definition von -% Makros ermöglicht wird, welche von \cs{MakeTextUppercase} nicht beachtet -% werden sollen. Hierfür werden \emph{alle} Markup-Befehle der Liste zum -% Ignorieren hinzugefügt. Damit aber bei der eigentlichen Ausgabe alles in -% Majuskeln erscheint, wird für diesen Fall \cs{Markup@Format} genutzt. -% \begin{macrocode} -\ifundef{\tud@x@textcase@uclcnotmath}{}{% - \NewDocumentCommand\tud@nonchangecase{m}{% - \DeclareExpandableDocumentCommand#1{sm}{% - \IfBooleanT{##1}{\noexpand\@tud@indextrue}% - \NoCaseChange{#1{##2}}% - }% - } - \apptocmd{\tud@x@textcase@uclcnotmath}{% - \tud@nonchangecase\Application% - \tud@nonchangecase\Distribution% - \tud@nonchangecase\Engine% - \tud@nonchangecase\File% - \tud@nonchangecase\Class% - \tud@nonchangecase\Package% - \tud@nonchangecase\Option% - \tud@nonchangecase\Environment% - \tud@nonchangecase\Macro% - \tud@nonchangecase\Length% - \tud@nonchangecase\Counter% -%<*class> - \DeclareExpandableDocumentCommand\Key{smm}{% - \IfBooleanT{##1}{\noexpand\@tud@indextrue}% - \NoCaseChange{#1{##2}{##3}}% - }% - \tud@nonchangecase\Term% - \tud@nonchangecase\PageStyle% - \tud@nonchangecase\Font% - \tud@nonchangecase\Color% -% - }{}{\tud@patch@wrn{tud@x@textcase@uclcnotmath}} -} -% \end{macrocode} -% \end{macro}^^A \tud@x@textcase@uclcnotmath -% \end{macro}^^A \tud@nonchangecase % % \subsection{Index} % @@ -3047,7 +2583,7 @@ % Klasse erzeugt werden. % \begin{macrocode} \PassOptionsToPackage{xindy,splitindex}{imakeidx} -\RequirePackage{imakeidx}[2013/07/11] +\RequirePackage{imakeidx} % \end{macrocode} % Zuerst ein paar kleinere Einstellungen für das Layout\dots % \begin{macrocode} @@ -3094,12 +2630,12 @@ \let\item\@idxitem \imki@othercode% }% - \patchcmd{\theindex}{% + \patchcmd\theindex{% \imki@indexlevel{\indexname}\imki@indexheaders% }{% \imki@indexheaders% }{}{\tud@patch@wrn{theindex}}% - \patchcmd{\theindex}{% + \patchcmd\theindex{% \ifnum\imki@columns>\@ne \columnsep \imki@columnsep \ifx\imki@idxprologue\relax @@ -3138,12 +2674,14 @@ % danach wird die Datei mit den normalen Einträgen verarbeitet. Siehe hierzu % auch \cs{Process@@Index}. % \begin{macrocode} +\newcommand*\tud@xdy@settings{} +\edef\tud@xdy@settings{-M \@currname-ind.xdy -L german-din} \NewDocumentCommand\makexdyindex{s o m !o}{% \let\@tempb\@empty% %<*class> \IfBooleanT{#1}{% \def\@tempc{\jobname-#4-declare.idx}% - \makeindex[name={#4-declare}]% + \makeindex[name=#4-declare]% \IfFileExists{\@tempc}{% \edef\@tempb{-o \jobname-#4.ind \@tempc}% }{% @@ -3151,14 +2689,17 @@ }% }% % + \ifundef{\inputencodingname}{}{% + \eappto\tud@xdy@settings{\space-C\space\inputencodingname}% + }% \protected@edef\@tempa{% title={#3},% columnsep=\noexpand\f@size\noexpand\p@,% \IfValueTF{#4}{% name={#4},% - options={-M \@currname-ind.xdy -L german-din -t \jobname-#4.xlg \@tempb},% + options={\tud@xdy@settings\space-t \jobname-#4.xlg \@tempb},% }{% - options={-M \@currname-ind.xdy -L german-din -t \jobname.xlg},% + options={\tud@xdy@settings\space-t \jobname.xlg},% }% \IfValueT{#2}{#2}% }% @@ -3193,7 +2734,7 @@ % noch im Index erwünscht ist, weshalb vom Makro \cs{@printindex} ebenfalls % \cs{@tud@indextrue} gesetzt wird. % \begin{macrocode} -\newif\if@tud@index +\tud@newif\if@tud@index \addtoeachtocfile{\protect\@tud@indextrue} % \end{macrocode} % \end{macro}^^A \if@tud@index @@ -3250,13 +2791,13 @@ % dem \TUDScript-Bundle erstellt werden, wird das optionale Argument in runden % Klammern \parg{\string\Class\marg{Klasse}/\string\Package\marg{Paket}} für % einen Verweis auf das \parg{Bundleelement} verwendet, der in \cs{@idxbundle} -% gespeichert wird. Das Argument \verb=|=\meta{Indexmarkup}\verb=|= wird bei +% gespeichert wird. Das Argument \verb+|+\meta{Indexmarkup}\verb+|+ wird bei % Deklarationen zur Unterdrückung von Untereinträgen verwendet. % Der vollständige Funktionsaufruf lautet: % \newline\begingroup\scriptsize % \cs{tud@idx@get}\cs{tud@idx@key}\cs{tud@idx@fmt}\ignorespaces% % \cs{tud@idx@val}\marg{Elem.}|=|\meta{Wert}|=|\oarg{Anm.}\ignorespaces% -% \parg{Bundleelem.}\verb=|=\meta{Indexmark.}\verb=|=\ignorespaces% +% \parg{Bundleelem.}\verb+|+\meta{Indexmark.}\verb+|+\ignorespaces% % \endgroup % \begin{macrocode} \newcommand*\tud@idx@key{} @@ -3333,8 +2874,8 @@ % mit |"| maskiert. % \begin{macrocode} \def#3{#5}% - \tud@replace#2{@}{"@}% - \tud@replace#3{@}{"@}% + \tud@replace@@in#2{@}{"@}% + \tud@replace@@in#3{@}{"@}% % \end{macrocode} % In \cs{@idxbundle} wird ggf. das Paket oder die Klasse gespeichert, für die % der aktuelle Eintrag erzeugt werden soll. Eine explizite Angabe wird in jedem @@ -3432,8 +2973,10 @@ % \begin{macrocode} \@tempswafalse% \IfBooleanT{#1}{\@tempswatrue}% - \IfValueT{#9}{\ifstr{#9}{declare}{\@tempswatrue}{}}% - \IfValueT{#9}{\ifstr{#9}{default}{\@tempswatrue}{}}% + \IfValueT{#9}{% + \tud@if@strequal{#9}{declare}{\@tempswatrue}{}% + \tud@if@strequal{#9}{default}{\@tempswatrue}{}% + }% % \end{macrocode} % In diesem Fall werden die Ergänzungen für Schlüssel und Formatierung ggf. um % die speziellen Schlüsselwerte für das Element ergänzt. @@ -3506,7 +3049,7 @@ \ClassWarning{tudscrmanual}% % %<*package> - \PackageWarning{tudscrtutorial}% + \PackageWarning{tudscrmanual}% % {You should use `|see' instead of `|seealso'}% \tud@cleversee{\alsoname}% @@ -3522,25 +3065,39 @@ % ist alles nachfolgende bis \cs{relax}. % \begin{macrocode} \newcommand*\tud@cleversee{} -\def\tud@cleversee#1#2#3\relax{% - \IfArgIsEmpty{#3}{% - \emph{#1}\space#2% - }{% -% \end{macrocode} -% Folgen im Index nach \cs{cleversee}\marg{Querverweis} noch weitere Einträge, -% so sind diese zu Beginn durch \texttt{,\textvisiblespace} getrennt. Diese -% zwei Zeichen werden mithilfe von \cs{@tempa} ignoriert. -% \begin{macrocode} - \begingroup% - \def\@tempa, ##1\@nil{##1,\space\emph{\alsoname}\space#2}% - \@tempa#3\@nil% - \endgroup% - }% +\def\tud@cleversee#1#2\relax{% + \begingroup% + \let\cleversee\@empty% + \let\cleverseealso\@empty% + \let\tud@res@a\@empty% + \def\tud@res@b{#2}% + \def\tud@res@c##1\\##2\@nil{% + \appto\tud@res@a{##1}% + \def\tud@res@b{##2}% + \trim@spaces@in\tud@res@b% + \in@{\\}{##2}% + }% + \in@true% + \@whilesw\ifin@\fi{% + \expandafter\tud@res@c\tud@res@b\@nil% + }% + \ifx\tud@res@b\@empty% + \mbox{\emph{#1}}% + \else% + \def\tud@res@c##1 ##2\@nil{% + ##2##1\space\mbox{\emph{\alsoname}}% + }% + \expandafter\tud@res@c\tud@res@b\@nil% + \fi% + \space\tud@res@a% + \endgroup% } % \end{macrocode} % \end{macro}^^A \tud@cleversee % \end{macro}^^A \cleverseealso % \end{macro}^^A \cleversee +% \begin{macro}{\seesep} +% \changes{v2.06o}{2022/08/03}{neu}^^A % \begin{macro}{\seeref} % \changes{v2.05}{2015/11/02}{neu}^^A % \begin{macro}{\seeidx} @@ -3548,15 +3105,17 @@ % statt \cs{alsosee} genutzt werden. Das Makro \cs{seeidx} verweist auf die % Seite eines Indexes. % \begin{macrocode} -%<*class> +\newrobustcmd*\seesep{\txb}% \NewDocumentCommand\seeref{s m}{% \emph{\IfBooleanTF{#1}{\alsoname}{\seename}}\space#2% } -\newcommand*\seeidx[2]{\pageref{idx:#1}} +%<*class> +\newrobustcmd*\seeidx[2]{\pageref{idx:#1}} % % \end{macrocode} % \end{macro}^^A \seeidx % \end{macro}^^A \seeref +% \end{macro}^^A \seesep % % \subsubsection{Erstellen von Indexeinträgen} % @@ -3579,7 +3138,7 @@ % \newline\begingroup\scriptsize % \cs{Process@Index}\marg{Stern?}\marg{Element}\ignorespaces% % |=|\meta{Wert}|=|\oarg{Anmerkung}\parg{Bundleelement}\ignorespaces% -% \verb=|=\meta{Indexmarkup}\verb=|=\ignorespaces% +% \verb+|+\meta{Indexmarkup}\verb+|+\ignorespaces% % \endgroup % \begin{macrocode} \NewDocumentCommand\Process@Index{mmd==od()d||}{% @@ -3593,7 +3152,7 @@ \ClassWarning{tudscrmanual}% % %<*package> - \PackageWarning{tudscrtutorial}% + \PackageWarning{tudscrmanual}% % {% You've used the starred version. No index entry\MessageBreak% @@ -3659,15 +3218,15 @@ % \end{macrocode} % Für Markup-Befehle außerhalb von Deklarationsumgebungen wird ein einfacher % Eintrag in den Index erzeugt, wobei auch im Fließtext über das Indexmarkup -% \verb=|=\val{declare}\verb=|= eine Quasi-Deklaration verwendet werden kann. +% \verb+|+\val{declare}\verb+|+ eine Quasi-Deklaration verwendet werden kann. % Dies wird beispielsweise für \KOMAScript-Optionen genutzt, um diese in der % gewünschten Formatierung im Index erscheinen zu lassen. -% \begin{macrocode} +% \begin{macrocode} \else% % \IfValueT{#5}{% %<*class> - \ifstr{#5}{declare}{% + \tud@if@strequal{#5}{declare}{% \appto\tud@lbl@tmp{-declare}% \appto\tud@idx@fmt{|declare}% }{% @@ -3723,8 +3282,8 @@ % Indexuntereintrag erzeugt, der wiederum auf einen Indexeintrag des zweiten % Argumentes verweist. Dabei kann im zweiten Argument ein normaler Begriff oder % ein Markup-Befehl verwendet werden. Normalerweise wird für den Querverweis -% die Referenzklasse \verb=|see= verwendet, die Sternversion des Befehls -% hingegen nutzt \verb=|seeunverified=, um auf eine Prüfung des verwiesenen +% die Referenzklasse \verb+|see+ verwendet, die Sternversion des Befehls +% hingegen nutzt \verb+|seeunverified+, um auf eine Prüfung des verwiesenen % Eintrags zu verzichten. % \begin{macrocode} \NewDocumentCommand\SeeRef{s m m}{% @@ -3734,7 +3293,7 @@ % \end{macrocode} % Wurde im zweiten Argument ein Markup-Befehl angegeben, so wurde durch das % Erstellen der Box das dazugehörige Indexformat in \cs{tud@idx@fmt} für den -% Eintrag erstellt. Andernfalls wurde die Definiton von \cs{tud@idx@fmt} nicht +% Eintrag erstellt. Andernfalls wurde die Definition von \cs{tud@idx@fmt} nicht % geändert und das Argument wird nach der Box direkt in den Index eingetragen. % \begin{macrocode} \ifx\tud@idx@fmt\relax% @@ -3867,7 +3426,7 @@ % die Sternversion von \cs{tudhyperdef} genutzt, um das Label auf die Höhe der % Überschrift zu setzen. % \begin{macrocode} - \ifblank{#1}{% + \tud@if@strblank{#1}{% \def\tud@reserved{\tudhyperdef*{idx:main}}% }{% \def\tud@reserved{\tudhyperdef*{idx:#1}}% @@ -3889,13 +3448,13 @@ \fi% % % \end{macrocode} -% Fur das Paket \pkg{tudscrtutorial} erfolgt eine einfache Ausgabe der Indexe. +% Fur das Paket \pkg{tudscrmanual} erfolgt eine einfache Ausgabe der Indexe. % \begin{macrocode} % \indexprologue[\tud@idx@skip]{}% % \end{macrocode} % Die Ausgabe des gewünschten Index und des leeren des Prologs. % \begin{macrocode} - \ifblank{#1}{\printindex}{\printindex[#1]}% + \tud@if@strblank{#1}{\printindex}{\printindex[{#1}]}% \ifnum\imki@columns>\@ne\relax\vspace{-\multicolsep}\fi% % \let\tud@indexprologue\@empty% } @@ -3936,8 +3495,8 @@ % anstelle der Makros \cs{Process@Markup} und \cs{Process@Index} den Befehl % \cs{Process@ChangedAt} auszuführen, mit welchem die Formatierung der Einträge % der Änderungsliste erfolgt. -% \begin{macrocode} -\newif\if@tud@changedat +% \begin{macrocode} +\tud@newif\if@tud@changedat % \end{macrocode} % Die Formatierung der Änderungseinträge erfolgt~-- wie auch für den Index~-- % mit dem Makro \cs{tud@idx@get}, wobei die Sternversion für die Identifikation @@ -3949,7 +3508,7 @@ % \cs{Process@ChangedAt}\marg{Element}|=|\meta{Wert}|=|\ignorespaces% % \oarg{Ausgabesuffix}\parg{Bundleelement}\ignorespaces% % \endgroup -% \begin{macrocode} +% \begin{macrocode} \NewDocumentCommand\Process@ChangedAt{md==od()}{% \tud@idx@get*\tud@idx@key\tud@idx@fmt\tud@idx@val{#1}=#2=[#3](#4)% } @@ -3983,7 +3542,7 @@ % ein vertikaler Versatz dieser angegeben werden. Die Sternversion des Befehls % unterdrückt die Ausgabe der Randnotiz. % \begin{macrocode} -\newlength\changedatskip +\tud@newdim\changedatskip \NewDocumentCommand\ChangedAt{s o d() m !O{\changedatskip}}{% \IfValueTF{#2}{% \Changed@At@CreateList[#2](#3){#4}% @@ -4144,7 +3703,7 @@ % Hier erfolgt ggf. der Eintrag des \TUDScript-Bundle-Elements, danach folgt % der Markup-Befehl. % \begin{macrocode} - \eaddto@hook\toks@{\@tempb}% + \addto@hook@expandafter\toks@{\@tempb}% \addto@hook\toks@{!#1!}% % \end{macrocode} % Wurde ein Untereintrag angegeben, wird dieser hier gefolgt von der @@ -4174,14 +3733,14 @@ \toks@{#3!Allgemein }% \IfValueTF{#2}{% \addto@hook\toks@{!}% - \eaddto@hook\toks@{\@tempb:\space}% + \addto@hook@expandafter\toks@{\@tempb:\space}% \IfValueTF{#5}{% \addto@hook\toks@{#5}% }{% \addto@hook\toks@{\emph{neu}}% }% }{% - \eaddto@hook\toks@{\@tempb}% + \addto@hook@expandafter\toks@{\@tempb}% \addto@hook\toks@{!}% \addto@hook\toks@{#5}% }% @@ -4260,7 +3819,7 @@ % im dritten Argument gegebenen Markup-Befehl. Dies wird für Anmerkungen zu % expliziten Schlüssel-Wert-Paaren bei Optionen oder Parametern genutzt. % \begin{macrocode} - \ifxblank{#4}{}{% + \tud@if@strblank{#4}{}{% % \end{macrocode} % Hierfür wird die zuvor erhaltene Formatierung des Markup-Befehls des dritten % Argumentes an den Haupteintrag \cs{tud@idx@val} mit der zusätzlichen @@ -4294,7 +3853,7 @@ % Änderungsliste vermerkt, ob es sich bei dem Markup-Befehl respektive dessen % Untereintrag um eine \emph{neue} bzw. eine \emph{obsolete} Variante handelt. % \begin{macrocode} - \ifxblank{#5}{% + \tud@if@strblank{#5}{% \if@tud@obsolete% \appto\tud@idx@fmt{: \emph{entf\"allt}}% \else% @@ -4351,7 +3910,7 @@ % \cs{item}-Befehle werden eine Ebene nach oben gehoben. % \begin{macrocode} \let\lettergroup\@gobble% - \apptocmd{\theindex}{% + \apptocmd\theindex{% \let\subsubsubitem\subsubitem% \let\subsubitem\subitem% \let\subitem\item% @@ -4369,11 +3928,9 @@ \expandafter\def\csname\string\item\endcsname##1~% }{% \endgroup% - \let\@tempb\@firstofone% - \if@tud@cdoldfont@active\def\@tempb##1{\NoCaseChange{##1}}\fi% - \addsec[##1]{\TUDScript \@tempb{##1}}% + \addsec[{##1}]{\TUDScript ##1}% \tudhyperdef*{idx:changelog:##1}% - \def\@tempa{\indexname: \TUDScript \@tempb{##1}}% + \def\@tempa{\indexname: \TUDScript ##1}% \@mkboth{\@tempa}{\@tempa}% }% }{}{\tud@patch@wrn{theindex}}% @@ -4422,7 +3979,7 @@ \forlistloop\@tempa{\tud@templist}% \hline% \end{tabular}% - }[#2]% + }[{#2}]% \ignorespaces% }% \fi% @@ -4436,11 +3993,11 @@ % Handbuch erläutert werden. % % Das Paket \pkg{enumitem} erlaubt das Beeinflussen der Standardlisten und die -% Ableitung neuer Listen aus diesen. Mit \cs{setlist\{noitemsep\}} werden die +% Ableitung neuer Listen aus diesen. Mit \cs{setlist}|{noitemsep}| werden die % zusätzlichen Zwischenräume innerhalb der Listen beseitigt. Weiterhin wird % linksbündiger Flattersatz für die Standardlisten aktiviert. % \begin{macrocode} -\RequirePackage{enumitem}[2011/09/28] +\RequirePackage{enumitem} \setlist{before*={\endgraf\tud@RaggedRight},partopsep=0pt,noitemsep} % \end{macrocode} % \begin{macro}{\stditem} @@ -4462,7 +4019,7 @@ % Damit die Änderungsnotizen in der passenden vertikalen Position erscheinen, % wird die Länge \cs{changedatskip} entsprechend angepasst. % \begin{macrocode} - \setlength\changedatskip{-\baselineskip}% + \tud@setdim\changedatskip{-1\baselineskip}% }{}% } % \end{macrocode} @@ -4486,7 +4043,7 @@ \newcommand*\tud@values{} \NewDocumentEnvironment{values}{mo}{% \def\tud@values{#1}% - \IfValueTF{#2}{\@values[#2]}{\@values}% + \IfValueTF{#2}{\@values[{#2}]}{\@values}% }{% \end@values% } @@ -4503,7 +4060,7 @@ % \begin{macro}{\tud@item@values} % \begin{macro}{\forslashlist} % Das Makro \cs{tud@item@values} ersetzt in der Umgebung \env{values} die -% originale Definiton von \cs{item}. Die Sternversion kann dabei verwendet +% originale Definition von \cs{item}. Die Sternversion kann dabei verwendet % werden, um die Einstellung für den Säumniswert hervorzuheben. Im ersten % optionalen Argument können die möglichen Werte einer Option oder eines % Parameters angegeben werden. Sind mehrere Werte gleichbedeutende Werte @@ -4615,7 +4172,7 @@ % angehängt und als einziges optionales Argument an \cs{item} übergeben. % \begin{macrocode} \protected@edef\@tempa{#2\IfValueT{#3}{/#3}}% - \eaddto@hook\toks@{\expandafter[\@tempa]}% + \addto@hook@expandafter\toks@{\expandafter[\@tempa]}% \IfValueT{#4}{\addto@hook\toks@{[#4]}}% \IfValueT{#5}{\addto@hook\toks@{(#5)}}% \the\toks@% @@ -4700,16 +4257,16 @@ % werden. Dabei ist das zu übergebende Argument die Anzahl der zu erzeugenden, % linksbündigen Spalten. % \begin{macrocode} -\newlength\tempdim +\tud@newglue\tempdim \newsavebox\tabularm@box -\newlength\tabularm@wd +\tud@newdim\tabularm@wd \newcommand*\tabularm@num{1} \NewEnviron{tabularm}[1]{% \begin{lrbox}{\tabularm@box}% \let\allcolumnpar\@gobble% \begin{tabular}{*{#1}l}\BODY\end{tabular}% \end{lrbox}% - \setlength\tabularm@wd{\wd\tabularm@box}% + \tud@setdim\tabularm@wd{\wd\tabularm@box}% \def\tabularm@num{#1}% \let\allcolumnpar\tabularm@allcolumnpar% \begin{tabular}{*{#1}l}\BODY\end{tabular}% @@ -4730,7 +4287,7 @@ % Mit Hilfe von \pkg{tabularx} können Tabellen bestimmter Breite und % automatisch berechneten Spaltenbreiten gesetzt werden. % \begin{macrocode} -\RequirePackage{tabularx}[1999/01/07] +\RequirePackage{tabularx} % \end{macrocode} % \begin{macro}{\TermTable} % \begin{macro}{\Term@Table} @@ -4749,11 +4306,11 @@ \vskip\medskipamount% \@afterindentfalse\@afterheading% \IfBooleanTF{#1}{% - \IfValueTF{#3}{\setlength\@tempdima{#3}}{\setlength\@tempdima{\linewidth}}% - \setlength\@tempdimc{-.7\baselineskip}% + \tud@setdim\@tempdima{\IfValueTF{#3}{#3}{\linewidth}}% + \tud@setdim\@tempdimc{-.7\baselineskip}% \begin{tabularx}{\@tempdima}{lXX}\Term@Table\end{tabularx}% }{% - \setlength\@tempdimc{\z@}% + \tud@setdim\@tempdimc{\z@}% \begin{tabular}{lll}\Term@Table\end{tabular}% }% \par\addvspace{\medskipamount}% @@ -4767,9 +4324,9 @@ } \newcommand*\Term@@Table[1]{% \Term{#1}'none' & % - \ifstr{\csuse{#1}}{}{\PName{leer}}{\csuse{#1}} & % + \tud@if@strempty{\csuse{#1}}{\PName{leer}}{\csuse{#1}} & % \selectlanguage{english}\vspace*{\@tempdimc}% - \ifstr{\csuse{#1}}{}{\PName{empty}}{\csuse{#1}}\tabularnewline% + \tud@if@strempty{\csuse{#1}}{\PName{empty}}{\csuse{#1}}\tabularnewline% } % \end{macrocode} % \end{macro}^^A \Term@@Table @@ -4833,17 +4390,14 @@ % genutzt. Für dieses wird eine eigene Stildatei verwendet, welche zur Laufzeit % erzeugt wofür zuerst ein Ausgabestream reserviert wird. % \begin{macrocode} -\newcommand*\tud@write@a{} -\newwrite\tud@write@a +\tud@newwrite\tud@write@a % \end{macrocode} % Für die Tutorials werden später zusätzlich noch ein weiterer Ausgabe- sowie % ein Eingabestream benötigt, die hier gleich mit initialisiert werden. % \begin{macrocode} %<*package> -\newcommand*\tud@write@b{} -\newwrite\tud@write@b -\newcommand*\tud@read{} -\newread\tud@read +\tud@newwrite\tud@write@b +\tud@newread\tud@read % % \end{macrocode} % \end{macro}^^A \tud@read @@ -4856,9 +4410,9 @@ % bessere Verständnis des Anwenders angegeben. Um diese darzustellen wird das % Paket \pkg{listings} verwendet. % \begin{macrocode} -\RequirePackage{listings}[2014/03/04] +\RequirePackage{listings} \lstdefinestyle{tudscr}{% - basicstyle=\ttfamily\ifdef{\setstretch}{\setstretch{1}}{},% + basicstyle=\ttfamily\ifundef{\setstretch}{}{\setstretch{1}},% keywordstyle=,% columns=fullflexible,keepspaces,% aboveskip=\smallskipamount,% @@ -4902,12 +4456,12 @@ % Das Paket \pkg{filemod} wird genutzt, um externer Dateien nur zu kompilieren, % wenn dies aufgrund einer Änderung auch notwendig ist. % \begin{macrocode} -\RequirePackage{filemod}[2011/09/19] +\RequirePackage{filemod} % \end{macrocode} % Um \cs{ShellEscape} sowohl für Windows als auch für unixoide Betriebssysteme % nutzen zu können, wird das Paket \pkg{ifplatform} geladen. % \begin{macrocode} -\RequirePackage{ifplatform}[2010/10/22] +\RequirePackage{ifplatform} % \end{macrocode} % \begin{macro}{\tud@shellescape@wrn} % \changes{v2.02}{2014/10/14}{neu}^^A @@ -4920,7 +4474,7 @@ \ClassWarning{tudscrmanual}% % %<*package> - \PackageWarning{tudscrtutorial}% + \PackageWarning{tudscrmanual}% % {% File `#1' is missing!\MessageBreak% @@ -5145,10 +4699,10 @@ % sortieren zu können. % \begin{macrocode} \newcommand*\tud@tut@append[1]{% - \ifstr{#1}{preamble}{% + \tud@if@strequal{#1}{preamble}{% \tud@tut@readtostream{\tud@tut@temp.tex}{\tud@write@a}% }{% - \ifstr{#1}{trunk}{% + \tud@if@strequal{#1}{trunk}{% \tud@tut@readtostream{\tud@tut@temp.tex}{\tud@write@b}% }{% \tud@tut@readtostream{\tud@tut@temp.tex}{#1}% @@ -5170,7 +4724,7 @@ % und sinnvollen Paketen an. Diese sollten direkt nach \cs{StartTutorial} in % der \env{Preamble}-Umgebung angegeben werden. % \begin{macrocode} -\TUDoptions{headingsvskip=-10ex} +\TUDoptions{headingsvskip=-6ex} \newcommand\StartTutorial[1][]{% \immediate\openout\tud@write@a=\tud@tut@temp-preamble.tex\relax% \immediate\openout\tud@write@b=\tud@tut@temp-trunk.tex\relax% @@ -5178,7 +4732,7 @@ \Hy@raisedlink{\hyperdef{\jobname}{tutorials:\jobname}{}}% \faculty{}% \maketitle% - \ifblank{#1}{}{% + \IfArgIsEmpty{#1}{}{% \noindent% \begin{abstract}% \noindent#1% @@ -5531,8 +5085,8 @@ % Text vorangestellt werden kann. % \begin{macrocode} \@tempa{\Code@Preamble}{}% - \setlength\@tempdimc{\leftskip}% - \setlength\leftskip{\leftmargin}% + \tud@setdim\@tempdimc{\leftskip}% + \tud@setdim\leftskip{\leftmargin}% % \end{macrocode} % Durch die zweimalige Verwendung von \file{\string\tud@tut@temp.tex}~-- einmal % direkt und einmal innerhalb einer Box~-- können darin verwendete Befehle wie @@ -5542,7 +5096,7 @@ % \begin{macrocode} \@tempa{\input{\tud@tut@temp.tex}}{\Code@Hook}% \global\let\Code@Hook\relax% - \setlength\leftskip{\@tempdimc}% + \tud@setdim\leftskip{\@tempdimc}% \noindent\ignorespaces% } % \end{macrocode} @@ -5598,7 +5152,7 @@ % und der Inhalt von \file{\string\tud@tut@temp.tex} wie gewünscht eingebunden % und kompiliert. Damit die so erstellte PDF-Datei mit \cs{IncludeStandalone} % im weiteren Verlauf in das Tutorial eingebunden werden kann, wird diese -% außerdem noch in \cs{\meta{Argument}-temp.pdf} umbenannt. Das Makro +% außerdem noch in \file{\meta{Argument}-temp.pdf} umbenannt. Das Makro % \cs{StandaloneDate} wird auf das Datum der Master-Datei gesetzt, damit das % voreingestellte Datum der erzeugten Datei angepasst werden kann. % \begin{macrocode} @@ -5612,7 +5166,7 @@ \ifx\@tempa\@tempb\relax% \let\@tempb\@empty% \else% - \edef\@tempb{\etex@unexpanded{\def\StandaloneDate}{\@date}}% + \edef\@tempb{\unexpanded{\def\StandaloneDate}{\@date}}% \fi% \edef\@tempa{% \tud@latex@ext -jobname=\tud@tut@temp\space% @@ -5648,11 +5202,11 @@ \@tempcnta\z@% \@for\@tempa:=#3\do{\advance\@tempcnta\@ne}% \ifnum\@tempcnta>\z@\relax% - \setlength\@tempdima{\textwidth}% + \tud@setdim\@tempdima{\textwidth}% \divide\@tempdima\@tempcnta% \advance\@tempcnta\m@ne% \multiply\@tempcnta 2% - \addtolength\@tempdima{-\@tempcnta\tabcolsep}% + \tud@addtodim\@tempdima{-\@tempcnta\tabcolsep}% \@for\@tempa:=#3\do{% \advance\@tempcnta\m@ne% \edef\@tempb{% @@ -5693,7 +5247,7 @@ \else% \PassOptionsToPackage{off}{auto-pst-pdf}% \fi% - \RequirePackage{auto-pst-pdf}[2009/04/26]% + \RequirePackage{auto-pst-pdf} % \end{macrocode} % Nach dem Paket \pkg{auto-pst-pdf} seine Arbeit verrichtet hat, werden alle % etwaigen temporär erzeugten Dateien radikal gelöscht. @@ -5720,10 +5274,10 @@ }{% \PassOptionsToPackage{colorinlistoftodos,color=HKS92!10}{todonotes}% } -\RequirePackage{todonotes}[2012/07/25] +\RequirePackage{todonotes} \AtEndPreamble{% \ifdim\marginparwidth<2cm\relax% - \setlength\marginparwidth{2cm}% + \tud@setdim\marginparwidth{2cm}% \fi% } % \end{macrocode} @@ -5745,7 +5299,7 @@ % Diese Option ist verantwortlich für den Schalter \cs{if@tud@todo}. Über % diesen wird gesteuert, ob ToDo-Notizen ausgegeben werden sollen. % \begin{macrocode} -\newif\if@tud@todo +\tud@newif\if@tud@todo \newcommand*\tud@todo@type@pos{} \let\tud@todo@type@pos\relax \newcommand*\tud@todo@type@neg{} @@ -5768,7 +5322,7 @@ % vor dem eigentlichen Typen verwendet werden muss. % \begin{macrocode} \def\@tempa not##1##2##3##4\@nil{% - \ifstr{##1##2##3}{not}{% + \tud@if@strequal{##1##2##3}{not}{% \IfArgIsEmpty{##4}{}{% \listeadd\tud@todo@type@neg{##4}% \@tud@todotrue% @@ -5819,7 +5373,7 @@ % \cs{@currentHref} gesichert und am Ende wiederhergestellt. % \begin{macrocode} \NewDocumentCommand\ToDo{s o m !o}{% - \ifbool{@tud@todo}{% + \if@tud@todo% \global\let\tud@currentHref\@currentHref% \begingroup% % \end{macrocode} @@ -5910,7 +5464,7 @@ \tud@v@get\tud@res@a{#4}% \def\tud@res@c##1.##2##3##4\@nil{##1##2##3}% \edef\tud@res@b{\expandafter\tud@res@c\tud@res@a.000\@nil}% - \ifnumber{\tud@res@b}{% + \Ifnumber{\tud@res@b}{% \edef\tud@res@c{% \expandafter\tud@res@c\TUDScriptVersionNumber.000\@nil% }% @@ -5959,11 +5513,11 @@ % Andernfalls erscheint im Rand die Anmerkung \emph{ToDo}. % \begin{macrocode} \renewcommand*\marginpar[2][]{% - \marginnote[##1]{##2}[\dimexpr-\ht\z@+1.6ex+1.75pt\relax]% + \marginnote[{##1}]{##2}[\dimexpr-\ht\z@+1.6ex+1.75pt\relax]% }% \toks@\expandafter{\tud@res@a noline,nolist}% \settowidth\marginparwidth{\tud@res@c}% - \addtolength\marginparwidth{\dimexpr1.6ex+1pt\relax}% + \tud@addtodim\marginparwidth{1.6ex+1pt}% \expandafter\todo\expandafter[\the\toks@]{\tud@res@c\strut}% \aftergroup\par\aftergroup\noindent% % \end{macrocode} @@ -5976,9 +5530,7 @@ \ifx\tud@todo@type@use\@empty\else% \begingroup% \let\tud@res@c\@empty% - \renewcommand*{\do}[1]{% - \appto\tud@res@c{,##1}% - }% + \def\do##1{\appto\tud@res@c{,##1}}% \dolistloop{\tud@todo@type@use}% \edef\tud@res@c{% \endgroup% @@ -5992,7 +5544,7 @@ \fi% \endgroup% \global\let\@currentHref\tud@currentHref% - }{}% + \fi% \ignorespaces% }% % \end{macrocode} @@ -6014,52 +5566,35 @@ % \end{macro}^^A \tud@todo@type@use % \end{macro}^^A \ToDo % -% \iffalse -% -% -% \fi -% % \subsection{Verschiedenes für die Dokumentationsklassen und -pakete} % -% Sowohl für die Klasse \cls{tudscrmanual} als auch \cls{tudscrdoc} werden ein -% paar Befehle zur komfortablen Verwendung im Fließtext definiert. Außerdem -% erfolgen mittels einiger Pakete verschiedene Formateinstellungen. +% Für die Klasse \cls{tudscrmanual} werden ein paar Befehle zur komfortablen +% Verwendung im Fließtext definiert. Außerdem erfolgen mittels einiger Pakete +% verschiedene Formateinstellungen. % % \subsubsection{Ergänzend geladene Pakete} % -% Sprachabhängiges Setzen von Anführungszeichen. Das Laden des Paketes darf -% erst nach \pkg{inputenc} oder \pkg{inputenx} erfolgen. -% \begin{macrocode} -%<*body|class&doc> -\RequirePackage{csquotes}[2011/10/22] -% -% \end{macrocode} -% -% \iffalse -%<*body> -% \fi -% % Für den Fließtext werden Pfeile u.\,ä. durch \pkg{textcomp} bereitgestellt. % \begin{macrocode} -\RequirePackage{textcomp}[2005/09/27] +\RequirePackage{textcomp} % \end{macrocode} % Vergrößerung des Durchschusses. % \begin{macrocode} -\RequirePackage{setspace}[2011/12/19] +\RequirePackage{setspace} \setstretch{1.1} % \end{macrocode} % Verbesserte Zitate. % \begin{macrocode} \PassOptionsToPackage{vskip=\smallskipamount}{quoting} -\RequirePackage{quoting}[2014/01/28] +\RequirePackage{quoting} % \end{macrocode} % Automatisierte Datumsformatierung. % \begin{macrocode} -\RequirePackage{isodate}[2010/01/03] +\RequirePackage{isodate} % \end{macrocode} % Verschiedenste Symbole aus dem \LaTeX-Universum. % \begin{macrocode} -\RequirePackage{hologo}[2012/04/26] +\RequirePackage{hologo} % \end{macrocode} % % \iffalse @@ -6069,7 +5604,7 @@ % Mit dem Paket \pkg{ragged2e} wird~-- falls benötigt~-- die Silbentrennung im % Flattersatz aktiviert. % \begin{macrocode} -\RequirePackage{ragged2e}[2009/05/21] +\RequirePackage{ragged2e} % \end{macrocode} % Die Fußnoten werden nicht mit jedem Kapitel zurückgesetzt\dots % \begin{macrocode} @@ -6081,12 +5616,12 @@ % \end{macrocode} % Das Paket wird für die Erstellung von Tabellen verwendet. % \begin{macrocode} -\RequirePackage{booktabs}[2005/04/14] +\RequirePackage{booktabs} % \end{macrocode} % Die Formatierung von Gleitobjekten. % \begin{macrocode} -\RequirePackage{caption}[2015/09/17] -\RequirePackage{floatrow}[2008/08/02] +\RequirePackage{caption} +\RequirePackage{floatrow} \DeclareCaptionSubType[alph]{figure} \DeclareCaptionSubType[alph]{table} \captionsetup{font=sf,labelfont=bf,labelsep=space} @@ -6097,160 +5632,40 @@ % \end{macrocode} % Erstellen von Grafiken. % \begin{macrocode} -\RequirePackage{tikz}[2013/12/13] +\RequirePackage{tikz} % \end{macrocode} % Einbinden von ganzseitigen PDF"~Dokumenten als Beispiel im Handbuch. % \begin{macrocode} -\RequirePackage{pdfpages}[2013/08/25] +\RequirePackage{pdfpages} % \end{macrocode} % Typographisch saubere Einheiten. % \begin{macrocode} -\RequirePackage{units}[1998/08/04] +\RequirePackage{units} % \end{macrocode} % Das Paket \pkg{ellipsis} sorgt für korrekte Auslassungpunkte. % \begin{macrocode} \AtEndPreamble{% - \RequirePackage{ellipsis}[2004/9/28]% + \RequirePackage{ellipsis} \let\ellipsispunctuation\relax% } % \end{macrocode} % % \iffalse % -% -%<*body|class&doc> % \fi % -% \subsubsection{Gezieltes Ersetzen von Inhalten in Strings} -% -% \begin{macro}{\tud@replace} -% \changes{v2.05}{2015/11/01}{neu}^^A -% Mit diesem Befehl kann in einem gegebenen Makro ein bestimmtes Zeichen durch -% ein anderes ersetzt werden. Dies wird verwendet, um für Indexbefehle oder -% Labels die möglicherweise enthaltenen |@|"~Zeichen zu ersetzen. -% \begin{macrocode} -\newcommand*\tud@replace[3]{% - \begingroup% -% \end{macrocode} -% Zunächst wird \cs{@tempa} als ein durch \cs{@nil} abgegrenztes Makro mit -% zwei Argumenten definiert, wobei diese durch das im zweiten Argument gegebene -% \meta{Zeichen} voneinander abgegrenzt werden. Mit diese beiden Argumente wird -% das Makro \cs{@tempb} aufgerufen. -% \begin{macrocode} - \toks@{\def\@tempa##1}% - \eaddto@hook\toks@{\detokenize{#2}}% - \addto@hook\toks@{##2\@nil{\@tempb{##1}{##2}}}% -% \end{macrocode} -% Der Inhalt von \cs{toks@} ist -% \cs{def}\cs{@tempa\#1\meta{Zeichen}\#2}\cs{@nil\{\cs{@tempb\{\#1\}\{\#2\}}\}} -% und definiert \cs{@tempa}. -% \begin{macrocode} - \the\toks@% -% \end{macrocode} -% Nun wird \cs{@tempb} definiert. Dieses Makro fügt dem Zielmakro das erste -% Argumente gefolgt von \meta{Ersatzzeichen} hinzu. Mit dem zweiten Argument -% wird anschließend \cs{@tempa\#\#2}\cs{@nil} so lange rekursiv aufgerufen, bis -% es wirklich leer ist, wodurch das zweite Argument \meta{Zeichen} sukzessive -% durch das dritte Argument \meta{Ersatzzeichen} ersetzt wird. -% \begin{macrocode} - \def\@tempb##1##2{% - \IfArgIsEmpty{##2}{% - \appto#1{##1}% - \let\@tempc\relax% - }{% - \appto#1{##1#3}% - \def\@tempc{\@tempa##2\@nil}% - }% - \@tempc% - }% -% \end{macrocode} -% Nachdem die beiden notwendigen Makros definiert wurden, erfolgt jetzt die -% eigentliche Ersetzung. Dafür wird der Inhalt des Zielmakros als Argument für -% \cs{@tempa} verwendet. Diesem wird das zu ersetzende Zeichen gefolgt von -% \cs{@nil} hinzugefügt, um das Argument abschließend zu begrenzen. -% \begin{macrocode} - \toks@{\@tempa}% - \edef\@tempc{\expandafter\detokenize\expandafter{#1}}% - \eaddto@hook\toks@{\@tempc}% - \eaddto@hook\toks@{\detokenize{#2}\@nil}% -% \end{macrocode} -% Der Inhalt von \cs{toks@} hat die Form \cs{@tempa\#1\meta{Zeichen}}\cs{@nil}, -% wobei der Inhalt von \meta{\#1} expandiert wird. -% \begin{macrocode} - \def#1{}% - \the\toks@% - \edef\tud@reserved{% - \noexpand\endgroup% - \def\noexpand#1{#1}% - }% - \tud@reserved% -} -% \end{macrocode} -% \end{macro}^^A \tud@replace -% -% \iffalse -% -%<*body> -% \fi -% -% % \subsubsection{Zusätzliche Markup-Befehle} % -% \begin{macro}{\Attention} -% \changes{v2.02}{2014/08/16}{neu}^^A -% \begin{macro}{\Forum} -% \begin{macro}{\CTAN} -% \changes{v2.05}{2015/11/22}{neu}^^A -% \begin{macro}{\GitHubRepo} -% \changes{v2.02}{2014/08/16}{neu}^^A -% \begin{macro}{\Download} -% \changes{v2.05g}{2016/11/08}{neu}^^A % \begin{macro}{\notudscrartcl} % \begin{macro}{\scrguide} % \changes{v2.02}{2014/09/04}{neu}^^A % \changes{v2.05}{2015/07/23}{Hyperlinktext über optionales Argument}^^A % Für die Anwenderdokumentation werden weitere Auszeichnungsbefehle definiert. % \begin{macrocode} -\newcommand*\Attention[2][\z@]{% - \marginnote{% - \setlength\fboxsep{0.25em}% - \fbox{Achtung!}% - }[#1]% - \emph{\trim@spaces{#2}}% -} -\NewDocumentCommand\Forum{!s !t'}{% - \IfBooleanTF{#1}{\toks@{\href}}{\toks@{\hrfn}}% - \IfBooleanT{#2}{\toks@{\url}}% - \addto@hook\toks@{{http://latex.wcms-file3.tu-dresden.de/phpBB3/}}% - \IfBooleanF{#2}{\addto@hook\toks@{{TUD-\LaTeX-Forum}}}% - \the\toks@\xspace% -} -\NewDocumentCommand\CTAN{!s !o !g}{% - \IfBooleanTF{#1}{\toks@{\href}}{\toks@{\hrfn}}% - \addto@hook\toks@{{http://www.ctan.org/\IfValueT{#2}{#2}}}% - \addto@hook\toks@{% - {\tud@english{Comprehensive TeX Archive Network (CTAN\IfValueT{#3}{~#3})}}% - }% - \the\toks@\xspace% -} -%<*class> -\NewDocumentCommand\GitHubRepo{!s !t' !O{releases}}{% - \IfBooleanTF{#1}{\toks@{\href}}{\toks@{\hrfn}}% - \IfBooleanT{#2}{\toks@{\url}}% - \addto@hook\toks@{{https://github.com/tud-cd/tudscr/#3}}% - \IfBooleanF{#2}{% - \addto@hook\toks@{{\tud@english{GitHub-Repository~\Distribution*{tudscr}}}}% - }% - \the\toks@\xspace% -} -\newcommand*\Download[1]{% - https://github.com/tud-cd/tudscr/releases/download/#1% -} \newcommand*\notudscrartcl{% F\"ur die Klassen \Class{tudscrartcl} sowie \Class{tudscrposter} ist diese Option nicht verf\"ugbar.% } -% \NewDocumentCommand\scrguide{!s !O{\KOMAScript-Handbuch}}{% \IfBooleanTF{#1}{\toks@{\href}}{\toks@{\hrfn}}% \addto@hook\toks@{% @@ -6262,119 +5677,11 @@ % \end{macrocode} % \end{macro}^^A \scrguide % \end{macro}^^A \notudscrartcl -% \end{macro}^^A \Download -% \end{macro}^^A \GitHubRepo -% \end{macro}^^A \CTAN -% \end{macro}^^A \Forum -% \end{macro}^^A \Attention -% -% \iffalse -% -%<*body|class&doc> -% \fi -% -% \begin{macro}{\CD} -% \begin{macro}{\CDs} -% \begin{macro}{\TUD} -% \begin{macro}{\TnUD} -% \begin{macro}{\TUDCD} -% \changes{v2.05}{2015/11/01}{neu}^^A -% \begin{macro}{\TUDCDs} -% \changes{v2.05}{2015/11/01}{neu}^^A -% \begin{macro}{\DDC} -% Diese Befehle stellen regelmäßig in der Quelltextdokumentatuion und im -% Handbuch genutzte Textbausteine bereit. Dazu wird der Befehl \cs{xspace} aus -% dem \pkg{xspace}-Paket genutzt. -% \begin{macrocode} -\newcommand*\CD{\tud@english{Corporate Design}\xspace} -\newcommand*\CDs{\tud@english{Corporate Designs}\xspace} -\newcommand*\TUD{Technische Universit\"at Dresden\xspace} -\newcommand*\TnUD{Technischen Universit\"at Dresden\xspace} -\newcommand*\TUDCD{\CD der \TnUD} -\newcommand*\TUDCDs{\CDs der \TnUD} -\newrobustcmd*\DDC{% - \mbox{% - D\kern.05em R\kern.05em E\kern.05em S\kern.05em % - D\kern.05em E\kern.05em N\kern.1em-\kern.1em concept% - }\xspace% -} -\AfterPackage*{hyperref}{% - \pdfstringdefDisableCommands{% - \def\DDC{DRESDEN-concept}% - \def\TUDScript{TUD-Script}% - \def\KOMAScript{KOMA-Script}% - }% -} -% \end{macrocode} -% \end{macro}^^A \DDC -% \end{macro}^^A \TUDCDs -% \end{macro}^^A \TUDCD -% \end{macro}^^A \TnUD -% \end{macro}^^A \TUD -% \end{macro}^^A \CDs -% \end{macro}^^A \CD -% \begin{macro}{\OpenSans} -% \changes{v2.06}{2018/07/02}{neu}^^A -% \begin{macro}{\tud@cdfont@texteb} -% \changes{v2.06}{2018/08/31}{neu}^^A -% \begin{macro}{\Univers} -% \begin{macro}{\DIN} -% Für die Nennung der Schriften spezielle Markos bereitgestellt. -% \begin{macrocode} -\DeclareTextFontCommand\tud@cdfont@texteb{% - \fontfamily{\tud@cdfont@fam}\fontseries{\tud@cdfont@ebf}\selectfont% -} -\newrobustcmd*\OpenSans{% - \texorpdfstring{\tud@cdfont@texteb{Open~Sans}}{Open Sans}\xspace% -} -\newrobustcmd*\Univers{\texorpdfstring{\textcdbi{Univers}}{Univers}\xspace} -\newrobustcmd*\DIN{\texorpdfstring{\textcdxi{DIN~Bold}}{DIN Bold}\xspace} -% \end{macrocode} -% \end{macro}^^A \DIN -% \end{macro}^^A \Univers -% \end{macro}^^A \tud@cdfont@texteb -% \end{macro}^^A \OpenSans -% \begin{macro}{\@pnumwidth} -% \begin{macro}{\@tocrmarg} -% Für das Inhaltsverzeichnis werden die beiden Längen angepasst. -% \begin{macrocode} -\renewcommand*\@pnumwidth{2.1em}% -\renewcommand*\@tocrmarg{3.1em}% -% \end{macrocode} -% \end{macro}^^A \@tocrmarg -% \end{macro}^^A \@pnumwidth -% -% \iffalse -% -%<*body> -% \fi -% -% \begin{macro}{\textsbn} -% \changes{v2.02}{2014/08/16}{neu}^^A -% \begin{macro}{\sbnfont} -% \changes{v2.02}{2014/08/16}{neu}^^A -% \begin{macro}{\textsbs} -% \changes{v2.02}{2014/08/16}{neu}^^A -% \begin{macro}{\sbsfont} -% \changes{v2.02}{2014/08/16}{neu}^^A -% Für die Anwenderdokumentation werden weitere Auszeichnungsbefehle definiert. -% \begin{macrocode} -\newcommand*\textsbn{} -\newrobustcmd*\sbnfont{\sffamily\bfseries\upshape} -\DeclareTextFontCommand\textsbn{\sbnfont} -\newcommand*\textsbs{} -\newrobustcmd*\sbsfont{\sffamily\bfseries\slshape} -\DeclareTextFontCommand\textsbs{\sbsfont} -% \end{macrocode} -% \end{macro}^^A \sbsfont -% \end{macro}^^A \textsbs -% \end{macro}^^A \sbnfont -% \end{macro}^^A \textsbn % % \iffalse % % \fi % -% \Finale +% \PrintBackMatter % \endinput diff --git a/macros/latex/contrib/tudscr/source/tudscr-mathswap.dtx b/macros/latex/contrib/tudscr/source/tudscr-mathswap.dtx index f38a897db4..5ab771efda 100644 --- a/macros/latex/contrib/tudscr/source/tudscr-mathswap.dtx +++ b/macros/latex/contrib/tudscr/source/tudscr-mathswap.dtx @@ -1,10 +1,10 @@ -% \CheckSum{149} % \iffalse meta-comment +%/GitFileInfo=tudscr-mathswap.dtx % % TUD-Script -- Corporate Design of Technische Universität Dresden % ---------------------------------------------------------------------------- % -% Copyright (C) Falk Hanisch , 2012-2021 +% Copyright (C) Falk Hanisch , 2012-2022 % % ---------------------------------------------------------------------------- % @@ -23,47 +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-mathswap.dtx -%<*dtx> -% \fi -% -\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi -\ProvidesFile{tudscr-mathswap.dtx}[2019/06/28 v2.06 TUD-Script\space% -% -% \iffalse -% -%\NeedsTeXFormat{LaTeX2e} -%\ProvidesPackage{mathswap}[% -%<*package> -%!TUD@Version -% -% package -%<*dtx|package> -% \fi -% - (swap mathematical separators)% -] -% -% \iffalse -% +% \iffalse ins:batch + dtx:driver +%<*ins> +\ifx\documentclass\undefined + \input docstrip.tex + \ifToplevel{\batchinput{tudscr.ins}} +\else + \let\endbatchfile\relax +\fi +\endbatchfile +% %<*dtx> +\ProvidesFile{tudscr-mathswap.dtx}[2022/08/09] +\RequirePackage{tudscr-gitinfo} \documentclass[english,ngerman,xindy]{tudscrdoc} \iftutex \usepackage{fontspec} @@ -73,18 +45,11 @@ \fi \usepackage{babel} \usepackage{tudscrfonts} -\KOMAoptions{parskip=half-} -\usepackage{bookmark} \usepackage[babel]{microtype} -\CodelineIndex -\RecordChanges -\GetFileInfo{tudscr-mathswap.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} @@ -92,45 +57,57 @@ % % \fi % +% +% % \selectlanguage{ngerman} % % \changes{v2.02}{2014/08/18}{\pkg{mathswap}: Schalter zum Aktivieren und % Deaktivieren der Funktionalität}^^A % +% \ToDo{Vergleich mit \pkg{ionumbers}, ist \pkg{mathswap} notwendig?}[v2.08] +% \ToDo{eingenständiges Paket oder via AfterPackage{ionumbers}?}[v2.08] +% \ToDo{Allgem. Bezeichnungen englisches/deutsches Format?}[v2.08] +% \ToDo{Sprachabhängige Einstellungen in Paket und aus Klassen raus}[v2.08] +% \ToDo{Makro(s)/Key-Value zum Festlegen von Eingabe- und Ausgabeformat}[v2.08] +% \ToDo{Inhalte von \file{mathswap.tex} hier rein}[v2.08] +% +% +% % \section{Das Paket \pkg{mathswap} -- Aktive Trennzeichen im Mathematikmodus} % -% Die Verwendung von Dezimal- und Tausendertrennzeichen im mathematischen Satz -% sind regional sehr unterschiedlich. In den meisten englischsprachigen Ländern -% wird der Punkt als Dezimaltrennzeichen und das Komma zur Zifferngruppierung -% verwendet, im restlichen Europa wird dies genau entgegengesetzt praktiziert. -% Dieses Paket soll dazu dienen, beliebige formatierte Zahlen in ihrer Ausgabe -% anzupassen. Dafür werden die Zeichen Punkt (~.~) und Komma (~,~) als aktive -% Zeichen im Mathematikmodus definiert. +% Die Verwendung von Dezimal- und Tausendertrennzeichen im mathematischen +% Satz sind regional sehr unterschiedlich. In den meisten englischsprachigen +% Ländern wird für gewöhnlich der Punkt als Dezimaltrennzeichen und das Komma +% zur Zifferngruppierung verwendet. In weiten Teilen Europas wird dies genau +% entgegengesetzt praktiziert. Dieses Paket soll dazu dienen, beliebige +% formatierte Zahlen in ihrer Ausgabe anzupassen. Dafür werden Punkt (~.~) +% und Komma (~,~) als aktive Zeichen im Mathematikmodus definiert. % % Ähnliche Funktionalitäten werden bereits durch die Pakete \pkg{icomma} und -% \pkg{ziffer} bereitgestellt. Bei \pkg{icomma} muss jedoch beim -% Verfassen des Dokumentes durch den Autor beachtet werden, ob das verwendete -% Komma einem Dezimaltrennzeichen entspricht ($t=1,\!2$) oder aber einem -% normalen Komma im Mathematiksatz ($z=f(x,y)$), wo ein gewisser Abstand nach -% dem Komma durchaus gewünscht ist. Das Paket \pkg{ziffer} liefert dafür die +% \pkg{ziffer} bereitgestellt. Bei \pkg{icomma} muss jedoch beim Verfassen +% des Dokumentes durch den Autor beachtet werden, ob das verwendete Komma +% einem Dezimaltrennzeichen entspricht ($t=1,\!2$) oder aber einem normalen +% Komma im Mathematiksatz ($z=f(x,y)$), wo ein gewisser Abstand nach dem +% Komma durchaus gewünscht ist. Das Paket \pkg{ziffer} liefert dafür die % gewünschte Funktionalität,\footnote{kein Leerraum nach Komma, wenn direkt -% danach eine Ziffer folgt} ist allerdings etwas unflexibel, was den Umgang mit -% den Trennzeichen anbelangt. Als Alternative zu diesem Paket kann außerdem -% \pkg{ionumbers} verwendet werden. +% danach eine Ziffer folgt} ist allerdings etwas unflexibel, was den Umgang +% mit den Trennzeichen anbelangt. Als Alternative zu diesem Paket kann +% außerdem \pkg{ionumbers} verwendet werden. % % Das Paket \pkg{mathswap} sorgt dafür, dass Trennzeichen direkt vor einer % Ziffer erkannt und nach bestimmten Vorgaben ersetzt werden. Sollte sich % jedoch zwischen Trennzeichen und Ziffer Leerraum befinden, wird dieser als % solcher auch gesetzt. % -% \ToDo{Vergleich mit \pkg{ionumbers}, ist \pkg{mathswap} notwendig?}[v2.??] -% \ToDo{Als eingenständiges Paket herauslösen}[v2.??] -% \ToDo{Allgem. Bezeichnungen englisches/deutsches Format?}[v2.??] -% \ToDo{Sprachabhängige Einstellungen in Paket und aus Klassen raus}[v2.??] -% \ToDo{Makro(s)/Key-Value zum Festlegen von Eingabe- und Ausgabeformat}[v2.??] -% \ToDo{Inhalte von \file{mathswap.tex} hier rein}[v2.??] -% -% \StopEventually{\PrintIndex\PrintChanges\PrintToDos} +% \begin{macrocode} +%<*package> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mathswap}[% +%!TUD@Version + package (swap mathematical separators)% +] +% +% \end{macrocode} % % \iffalse %<*package> @@ -143,8 +120,8 @@ % Die beiden Befehle \cs{commaswap} und \cs{dotswap} sind die zentrale % Benutzerschnittstelle des Paketes. Das Makro \cs{commaswap} definiert das % Trennzeichen oder den Inhalt, wodurch ein Komma ersetzt werden soll, auf -% welches direkt danach eine Ziffer folgt. Normalerweise setzt \LaTeX{} -% nach einem Komma im mathematischen Satz zusätzlich einen horizontalen Abstand. +% welches direkt danach eine Ziffer folgt. Normalerweise setzt \LaTeX{} nach +% einem Komma im mathematischen Satz zusätzlich einen horizontalen Abstand. % Bei der Ersetzung durch \cs{commaswap} entfällt dieser. Die Voreinstellung % für \cs{commaswap} ist deshalb auf ein Komma (,) gesetzt. % @@ -269,10 +246,10 @@ % \begin{macrocode} \newcommand*\ms@token{} \begingroup - \catcode`,=\active - \gdef,{\futurelet\ms@token\ms@smartcomma} - \catcode`.=\active - \gdef.{\futurelet\ms@token\ms@smartdot} + \catcode`,=\active% + \gdef,{\futurelet\ms@token\ms@smartcomma}% + \catcode`.=\active% + \gdef.{\futurelet\ms@token\ms@smartdot}% \endgroup \newcommand*\ms@smartcomma{\ms@ifnum{\ms@commaswap}{\ms@commachar}} \newcommand*\ms@smartdot{\ms@ifnum{\ms@dotswap}{\ms@dotchar}} @@ -285,6 +262,6 @@ % % \fi % -% \Finale +% \PrintBackMatter % \endinput diff --git a/macros/latex/contrib/tudscr/source/tudscr-misc.dtx b/macros/latex/contrib/tudscr/source/tudscr-misc.dtx index fdabaea0ec..125f72be1d 100644 --- a/macros/latex/contrib/tudscr/source/tudscr-misc.dtx +++ b/macros/latex/contrib/tudscr/source/tudscr-misc.dtx @@ -1,10 +1,10 @@ -% \CheckSum{334} % \iffalse meta-comment +%/GitFileInfo=tudscr-misc.dtx % % TUD-Script -- Corporate Design of Technische Universität Dresden % ---------------------------------------------------------------------------- % -% Copyright (C) Falk Hanisch , 2012-2021 +% Copyright (C) Falk Hanisch , 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-misc.dtx +% \iffalse ins:batch + dtx:driver +%<*ins> +\ifx\documentclass\undefined + \input docstrip.tex + \ifToplevel{\batchinput{tudscr.ins}} +\else + \let\endbatchfile\relax +\fi +\endbatchfile +% %<*dtx> -% \fi -% -\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi -\ProvidesFile{tudscr-misc.dtx}[2021/07/06 v2.06m TUD-Script\space% - (miscellaneous)% -] -% -% \iffalse +\ProvidesFile{tudscr-misc.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-misc.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} @@ -83,13 +62,14 @@ % \changes{v2.02}{2014/06/23}{Paket \pkg{titlepage} nicht weiter unterstützt}^^A % \changes{v2.02}{2014/07/08}{\cs{FamilyKeyState} wird von Optionen genutzt}^^A % +% +% % \section{Verschiedenes für das \TUDScript-Bundle} % % Alles, wofür sich eine separate Datei nicht lohnt, landet hier. % -% \StopEventually{\PrintIndex\PrintChanges\PrintToDos} -% % \iffalse +%<*!(manual|doc)> %<*class&option> % \fi % @@ -101,7 +81,7 @@ % genutzt werden, um zu steuern, ob für Titel und Inhaltsverzeichnis % automatisch ein Eintrag für die Sprungmarken erzeugt werden soll. % \begin{macrocode} -\newif\if@tud@bookmarks +\tud@newif\if@tud@bookmarks \TUD@key{tudbookmarks}[true]{% \TUD@set@ifkey{tudbookmarks}{@tud@bookmarks}{#1}% } @@ -123,15 +103,17 @@ % Für die Titelseite werden~-- wie auch durch das Paket \pkg{hyperref}~-- die % Fußnoten mit dem Befehl \cs{tud@x@hyperref@realfootnotes} auf den originalen % Zustand zurückgesetzt. +% \ToDo{nur als internen Befehl definieren, dazugehörige Option nötig?}[v2.07] +% \ToDo{\cs{tud@x@hyperref@realfootnotes} prüfen}[v2.07] % \begin{macrocode} \newcommand*\tudbookmark[1][]{\@gobbletwo} \newcommand*\tud@x@hyperref@realfootnotes{} \AfterPackage{hyperref}{% - \renewcommand*\tudbookmark[3][]{% + \renewcommand*\tudbookmark[3][0]{% \relax% \if@tud@bookmarks% - \phantomsection% - \ifblank{#1}{\pdfbookmark{#2}{#3}}{\pdfbookmark[#1]{#2}{#3}}% + \csuse{phantomsection}% + \pdfbookmark[{#1}]{#2}{#3}% \fi% }% \renewcommand*\tud@x@hyperref@realfootnotes{% @@ -140,7 +122,6 @@ \let\@footnotemark\H@@footnotemark% \let\@footnotetext\H@@footnotetext% }% - \pdfstringdefDisableCommands{\let\NoCaseChange\@firstofone}% } % \end{macrocode} % \end{macro}^^A \tud@x@hyperref@realfootnotes @@ -168,7 +149,7 @@ % Titelseite PDF"=Lesezeichen bzw. Outline-Einträge erzeugt. % \begin{macrocode} %<*book|report|article> -\apptocmd{\titlepage}{% +\apptocmd\titlepage{% \tud@x@bookmark@startatroot% \@tud@res@swafalse% \if@tud@coverpage\@tud@res@swatrue\fi% @@ -189,14 +170,14 @@ % \end{macrocode} % Dies geschieht außerdem auch für die Titelköpfe. % \begin{macrocode} -\pretocmd{\tud@maketitle@inpage}{% +\pretocmd\tud@maketitle@inpage{% \tud@x@bookmark@startatroot% \tudbookmark[% % 0% % 1% ]{\titlename}{title}% }{}{\tud@patch@wrn{tud@maketitle@inpage}} -\pretocmd{\@maketitle}{% +\pretocmd\@maketitle{% \tud@x@bookmark@startatroot% \tudbookmark[% % 0% @@ -264,7 +245,7 @@ %^^A% in den Überschriften Symbole für die Fußnoten anstelle von Zahlen %^^A% verwendet werden sollen. %^^A% \begin{macrocode} -%^^A\newif\if@tud@symbolheadings +%^^A\tud@newif\if@tud@symbolheadings %^^A\TUD@key{footnotes}{% %^^A \TUD@set@numkey{footnotes}{@tempa}{% %^^A {nosymbolheadings}{0},{numberheadings}{0},% @@ -340,12 +321,13 @@ \expandafter\PassOptionsToClass\expandafter{\CurrentOption}{\TUD@Class@KOMA}% } % \end{macrocode} -% Wird die Schriftgröße im veralteten Format \val{\dots pt} übergeben, so wird -% der Schalter \cs{if@tud@x@scr@fontsize@set} auf \val{true} gesetzt. +% Wird die Schriftgröße im veralteten Format \val{\dots pt} als Option +% übergeben, so wird der Schalter \cs{if@tud@x@scr@fontsize@set} auf \val{true} +% gesetzt. % \begin{macrocode} \newcommand*\tud@x@scr@pt{} \def\tud@x@scr@pt #1pt#2\@nil{% - \ifstr{#2}{pt}{\ifnumber{#1}{\@tud@x@scr@fontsize@settrue}{}}{}% + \tud@if@strequal{#2}{pt}{\Ifnumber{#1}{\@tud@x@scr@fontsize@settrue}{}}{}% } % \end{macrocode} % \end{macro}^^A \tud@x@scr@pt @@ -362,10 +344,10 @@ \AtBeginDocument{% \if@tud@x@scr@fontsize@set\else% \@tud@res@swafalse% - \ifdim\tud@len@layoutwidth<208mm\relax\@tud@res@swatrue\fi% - \ifdim\tud@len@layoutwidth>212mm\relax\@tud@res@swatrue\fi% - \ifdim\tud@len@layoutheight<295mm\relax\@tud@res@swatrue\fi% - \ifdim\tud@len@layoutheight>299mm\relax\@tud@res@swatrue\fi% + \ifdim\tud@dim@layoutwidth<208mm\relax\@tud@res@swatrue\fi% + \ifdim\tud@dim@layoutwidth>212mm\relax\@tud@res@swatrue\fi% + \ifdim\tud@dim@layoutheight<295mm\relax\@tud@res@swatrue\fi% + \ifdim\tud@dim@layoutheight>299mm\relax\@tud@res@swatrue\fi% \if@tud@res@swa% \ClassWarningNoLine{\TUD@Class@Name}{% You've set a layout size, which is different from\MessageBreak% @@ -378,15 +360,62 @@ } % \end{macrocode} % +% \subsection{Fixierte Gleitobjekte für Poster} +% +% \begin{environment}{figurehere} +% \changes{v2.05}{2016/04/17}{neu}^^A +% \changes{v2.06o}{2022/08/02}{für \cls{tudscrposter} übernommen}^^A +% \begin{environment}{tablehere} +% \changes{v2.05}{2016/04/17}{neu}^^A +% \changes{v2.06o}{2022/08/02}{für \cls{tudscrposter} übernommen}^^A +% \begin{macro}{\tud@here@begin} +% \changes{v2.06o}{2022/08/02}{neu}^^A +% \begin{macro}{\tud@here@end} +% \changes{v2.06o}{2022/08/02}{neu}^^A +% Für die Klasse \cls{tudscrposter} werden zwei Umgebungen bereitgestellt, mit +% denen sich Tabellen und Bilder an einer bestimmten Stelle exakt platzieren +% lassen. Prinzipiell könnte hierfür auch das Paket \pkg{float} zum Einsatz +% kommen. Ursprünglich stammt die Idee aus \cls{tudmathposter} und wurde hier +% generalisiert implementiert. +% \begin{macrocode} +%<*poster> +\newcommand*\tud@here@begin[1]{% + \def\@captype{#1}% + \vskip\intextsep% + \color@vbox% + \normalcolor% + \vbox\bgroup% + \hsize=\columnwidth% + \@parboxrestore% + \@floatboxreset% + \@setnobreak% + \ignorespaces% +} +\newcommand*\tud@here@end{% + \vskip\intextsep% + \@minipagefalse% + \outer@nobreak% + \egroup% + \color@endbox% +} +\newenvironment{figurehere}{\tud@here@begin{figure}}{\tud@here@end} +\newenvironment{tablehere}{\tud@here@begin{table}}{\tud@here@end} +% +% \end{macrocode} +% \end{macro}^^A \tud@here@end +% \end{macro}^^A \tud@here@begin +% \end{environment}^^A tablehere +% \end{environment}^^A figurehere +% % \iffalse % -%<*class&!inherit|package&fonts> %<*option> % \fi % +% \section{Verarbeitung von Optionen} % \subsection{Sukkzessives Abarbeiten von Optionen im Dokument} % -% Werden mit \cs{TUDoptions} nach \cs{begin\{document\}} mehrere Layoutoptionen +% Werden mit \cs{TUDoptions} nach |\begin{document}| mehrere Layoutoptionen % gleichzeitig angegeben, muss dafür Sorge getragen werden, dass diese in der % korrekten Reihenfolge abgearbeitet werden. % @@ -432,7 +461,7 @@ % \changes{v2.05}{2016/06/14}{neu}^^A % \begin{macro}{\if@tud@math@set} % \changes{v2.05}{2016/06/14}{neu}^^A -% \begin{macro}{\if@tud@font@skip@set} +% \begin{macro}{\if@tud@relspacing@set} % \changes{v2.05}{2016/06/14}{neu}^^A % \begin{macro}{\if@tud@x@scr@headings@reset} % \changes{v2.05}{2016/06/14}{neu}^^A @@ -446,24 +475,24 @@ % dazugehörigen Befehle für die Einstellungen von Schriften, Layout und/oder % Satzspiegel in der richtigen Reihenfolge ausgeführt. % \begin{macrocode} -\newif\if@tud@font@set -\newif\if@tud@math@set -\newif\if@tud@font@skip@set +\tud@newif\if@tud@font@set +\tud@newif\if@tud@math@set +\tud@newif\if@tud@relspacing@set %<*class> -\newif\if@tud@x@scr@headings@reset -\newif\if@tud@cd@process -\newif\if@tud@cdgeometry@process +\tud@newif\if@tud@x@scr@headings@reset +\tud@newif\if@tud@cd@process +\tud@newif\if@tud@cdgeometry@process % \newcommand*\tud@atdocument@process{% \if@tud@font@set% \tud@font@set% \global\@tud@font@setfalse% - \global\@tud@font@skip@setfalse% + \global\@tud@relspacing@setfalse% % \global\@tud@cd@processfalse% \fi% - \if@tud@font@skip@set% - \tud@font@skip@set% - \global\@tud@font@skip@setfalse% + \if@tud@relspacing@set% + \tud@relspacing@set% + \global\@tud@relspacing@setfalse% \fi% \if@tud@math@set% \tud@math@set% @@ -489,14 +518,14 @@ % \end{macro}^^A \if@tud@cdgeometry@process % \end{macro}^^A \if@tud@cd@process % \end{macro}^^A \if@tud@x@scr@headings@reset -% \end{macro}^^A \if@tud@font@skip@set +% \end{macro}^^A \if@tud@relspacing@set % \end{macro}^^A \if@tud@math@set % \end{macro}^^A \if@tud@font@set % \end{macro}^^A \tud@atdocument@process % % \iffalse % -% +% %<*execute> %<*class&!inherit|package&fonts> % \fi @@ -510,7 +539,7 @@ % die gewählte Kompatibilitäsversion getestet werden. % \begin{macrocode} \DeclareOption*{} -\FamilyProcessOptions[.comp]{TUD}\relax +\TUDProcessOptions[.comp]\relax % \end{macrocode} % Ab der \TUDScript-Version~v2.05 werden einige vertikale Abstände abhängig von % der Schriftgröße definiert. Sollte eine frühere Kompatibilitätseinstellung @@ -542,6 +571,30 @@ % % \fi % +% Es werden die Standardoptionen ausgeführt. Für die Klasse \cls{tudscrposter} +% werden die Farben aktiviert. +% \begin{macrocode} +%<*package&manual> +\KOMAoptions{headings=small} +\TUDoptions{cdfoot=true} +% +%<*class&!inherit|package> +\TUDExecuteOptions{% +%<*package&fixfonts> + headings=heavy% +% +%<*class&!inherit> +%<*book|report|article> + cd=true,tudbookmarks=true% +% +%<*poster> + cd=bicolor,tudbookmarks=false% +% +% +} +% +% \end{macrocode} +% % \subsection{Durchreichen von Optionen und Standardoptionen} % % Durchreichen aller Klassenoptionen an die \KOMAScript-Klasse bzw. an die @@ -550,7 +603,7 @@ % \begin{macrocode} %<*package> %<*fonts> -\DeclareOption*{\expandafter\KOMAoptions\expandafter{\CurrentOption}} +\DeclareOption*{\expandafter\TUD@KOMAoptions\expandafter{\CurrentOption}} % %<*fixfonts> \DeclareOption*{% @@ -574,42 +627,19 @@ % % % \end{macrocode} -% Es werden die Standardoptionen ausgeführt. Für die Klasse \cls{tudscrposter} -% werden die Farben aktiviert. +% Nach der Auswerung der Optionen wird die korrespondierende \KOMAScript-Klasse +% bzw. \TUDScript-Elternklasse geladen. % \begin{macrocode} -%<*package&tutorial> -\KOMAoptions{headings=small} -\TUDoptions{cdfoot=true} -% -\TUDExecuteOptions{% -%<*package> -%<*fixfonts> - headings=heavy% -% -%<*tutorial> - ToDo=true% -% -% -%<*class&!inherit> -%<*book|report|article> - cd=true,tudbookmarks=true% -% -%<*poster> - cd=bicolor,tudbookmarks=false% -% -% -} \TUDProcessOptions\relax -% \end{macrocode} -% Die korrespindierende \KOMAScript-Klasse bzw. \TUDScript-Elternklasse wird -% geladen. -% \begin{macrocode} %<*class&!inherit> -\LoadClass{\TUD@Class@KOMA}[2020/09/21] +\LoadClass{\TUD@Class@KOMA}[% +%!TUD@KOMAVersion +] % %<*class&inherit> -%\PassOptionsToClass{ttfont=roboto}{\TUD@Class@Parent} -\LoadClass{\TUD@Class@Parent} +\LoadClass{\TUD@Class@Parent}[% +%!TUD@Version +] % % \end{macrocode} % @@ -627,14 +657,14 @@ % \changes{v2.06c}{2019/08/20}{neu}^^A % Dieser Befehl definiert eine Fehlermeldung für Schlüssel respektive Optionen, % die zu spät verwendet wurden, wobei er innerhalb der Makros \cs{AtEndOfClass}, -% \cs{AtEndOfClass}, \cs{AtEndPreamble} etc. genutzt werden sollte. Wird dieser -% noch im Kontext von Klasse oder Paket (\verb=\@currname.\@currext-h@@k=) +% oder \cs{AtEndOfPackage} respektive \cs{AtEndPreamble} genutzt werden sollte. +% Wird dieser im Kontext von Klasse oder Paket (|\@currname.\@currext-h@@k|) % verwendet, wird gemeldet, dass der Schlüssel allein beim Laden der Klasse % respektive des Paketes genutzt werden darf. Andernfalls wird die zwingende % Verwendung in der Präambel angemerkt. % \begin{macrocode} \newcommand*\TUD@key@toolate[1]{% - \csedef{tud@key@#1@error}{% + \csedef{tud@key@toolate@@#1}{% %<*class> \noexpand\ClassError{\noexpand\TUD@Class@Name}% % @@ -643,7 +673,7 @@ % {Option `#1' too late}{% Option `#1' can only be set\space% - \ifcsname \@currname.\@currext-h@@k\endcsname% + \ifcsdef{\@currname.\@currext-h@@k}{% as optional \MessageBreak argument while loading\space% %<*class> class `\noexpand\TUD@Class@Name'% @@ -651,64 +681,607 @@ %<*package&fonts> package `tudscrfonts'% % - \else% - in the preamble - \fi% + }{% + in the preamble% + }% \MessageBreak but you have tried to set it up later.% }% }% - \TUD@key{#1}[]% + \TUD@key[]{#1}[]% {% - \csuse{tud@key@#1@error} + \csuse{tud@key@toolate@@#1}% \FamilyKeyStateProcessed% }% } % \end{macrocode} % \end{macro}^^A \TUD@key@toolate % -% % \iffalse % % -%<*body> +%<*manual|doc> +% \fi +% +% \section{Zusätzliches für die Benutzer- und Quelltextdokumentation} +% +% Hier tauchen Hilfsmittel auf, die für die Dokumentation verwendet werden. +% +% \iffalse +%<*option> % \fi % -% \subsection{Anpassungen für das Paket \pkg{textcase}} -% -% \begin{macro}{\@uclcnotmath} -% \begin{macro}{\tud@x@textcase@uclcnotmath} -% \changes{v2.02}{2014/06/27}{\pkg{textcase}: Ignorieren von Fußnoten im -% Argument des Befehls \cs{MakeTextUppercase}}^^A -% \changes{v2.03}{2015/01/21}{\pkg{textcase}: Ignorieren des Befehls -% \cs{@mkboth} im Argument des Befehls \cs{MakeTextUppercase}}^^A -% Damit Fußnoten innerhalb von \cs{MakeTextUppercase} nicht in Majuskeln -% gesetzt werden, wird der interne Befehl \cs{@uclcnotmath} aus dem Paket -% \pkg{textcase} angepasst. -% \begin{macrocode} -\if@tud@cdoldfont@active - \RequirePackage{textcase}[2004/10/07] - \AfterPackage*{textcase}{% - \robustify\NoCaseChange% - \newcommand*\tud@x@textcase@uclcnotmath{% - \@nonchangecase\hologo% - \def\footnote##1##{\toks@{\noexpand\footnote##1}\@footnote}% - \def\@footnote##1{\NoCaseChange{\the\toks@{##1}}}% - \def\@mkboth##1##2{\NoCaseChange{\@mkboth{##1}{##2}}}% +% \subsection{Zusätzliche Pakete} +% +% Bugfixes für unterschiedliche Pakete. +% \begin{macrocode} +\RequirePackage{scrhack}[% +%!TUD@KOMAVersion +] +% \end{macrocode} +% Das Paket für intelligente Leerzeichen am Ende von Makros mit \cs{xspace}. +% \begin{macrocode} +\RequirePackage{xspace} +\xspaceaddexceptions{"=} +% \end{macrocode} +% Das Paket \pkg{marginnote} stellt nicht fließenden Randnotizen bereit, welche +% für die Kennzeichnung von Änderungen, Hinweise oder ToDo-Notizen verwendet +% werden. Die Randnotizen werden auf dem linken~-- weil größeren~-- Seitenrand +% gesetzt. +% \begin{macrocode} +\PassOptionsToPackage{quiet}{marginnote} +\RequirePackage{marginnote} +%\reversemarginpar +% \end{macrocode} +% Das Paket \pkg{shellesc} ermöglicht mit dem Befehl \cs{ShellEscape} die +% Verwendung von Systembefehlen auf der Kommandozeile unabhängig vom genutzten +% Format. Sollte \app{lualatex} als Dokumentprozessor eingesetzt werden, sind +% dennoch die beiden \app{pdflatex}-Primitiven \cs{pdf(@)strcmp} und +% \cs{pdf(@)shellescape} nötig, wofür das Paket \pkg{pdftexcmds} geladen wird. +% \begin{macrocode} +\RequirePackage{shellesc} +\RequirePackage{pdftexcmds} +% \end{macrocode} +% +% Das Paket \pkg{hyperref} wird für alle möglichen Links und Querverweise +% geladen, \pkg{bookmark} verbessert das Erstellen der Outline-Einträge. +% +% \begin{macrocode} +\PassOptionsToPackage{hyperindex=false}{hyperref} +\AfterPackage*{bookmark}{\bookmarksetup{open,openlevel=1}} +% \end{macrocode} +% Es folgen einige Befehle, die an das Paket \pkg{hyperref} gekoppelt sind. +% Sobald das Paket geladen wurde, werden die Makros mit der jeweiligen +% Funktionalität definiert. +% \begin{macrocode} +\AfterAtEndOfPackage*{hyperref}{% + \@ifpackageloaded{bookmark}{}{\RequirePackage{bookmark}}% + \hypersetup{colorlinks,linkcolor=blue}% +} +% \end{macrocode} +% \begin{macro}{\hrfn} +% \changes{v2.02}{2014/08/16}{neu}^^A +% \changes{v2.04}{2015/02/18}{Schriftgröße mit \cs{scalebox}}^^A +% Mit diesem Makro können Hyperlinks im Fließtext erzeugt werden, welche +% zusätzlich noch die dazugeörige URL als Fußnote anzeigen. +% \begin{macrocode} +\newcommand*\hrfn[2]{% + \href{#1}{\trim@spaces{#2}}% + \footnote{\strut\url{#1}}% +} +% \end{macrocode} +% \end{macro}^^A \hrfn +% \begin{macro}{\mailto} +% Ein Makro zur Angabe einer verlinkten E"~Mail-Adresse. +% \begin{macrocode} +\newrobustcmd*\mailto[1]{\mbox{\href{mailto:#1}{\nolinkurl{#1}}}} +% \end{macrocode} +% \end{macro}^^A \mailto +% \begin{macro}{\url} +% \begin{macro}{\nolinkurl} +% \begin{macro}{\href} +% \begin{macro}{\hypersetup} +% \begin{macro}{\phantomsection} +% \begin{macro}{\pdfbookmark} +% \begin{macro}{\currentpdfbookmark} +% \begin{macro}{\subpdfbookmark} +% \begin{macro}{\belowpdfbookmark} +% Sollte \pkg{hyperref} nicht geladen werden, müssen einige Befehle rudimentär +% definiert werden. +% \begin{macrocode} +\TUD@UnwindPackage{hyperref}{% + \RequirePackage{url} + \providerobustcmd*\url[1]{\texttt{\detokenize{#1}}}% + \providerobustcmd*\nolinkurl[1]{\url{#1}}% + \providerobustcmd*\href[3][]{#3}% + \providecommand*\hypersetup[1]{}% + \providecommand*\phantomsection{}% + \providecommand*\pdfbookmark[3][]{}% + \providecommand*\currentpdfbookmark[2]{}% + \providecommand*\subpdfbookmark[2]{}% + \providecommand*\belowpdfbookmark[2]{}% +} +% \end{macrocode} +% \end{macro}^^A \belowpdfbookmark +% \end{macro}^^A \subpdfbookmark +% \end{macro}^^A \currentpdfbookmark +% \end{macro}^^A \pdfbookmark +% \end{macro}^^A \phantomsection +% \end{macro}^^A \hypersetup +% \end{macro}^^A \href +% \end{macro}^^A \nolinkurl +% \end{macro}^^A \url +% +% Etwas Kleinkram für \pkg{babel} und \pkg{csquotes}. Das letztere Paket dient +% dem sprachabhängigen Setzen von Anführungszeichen und sollte erst nach +% \pkg{inputenc} oder \pkg{inputenx} geladen werden. +% \begin{macrocode} +\AfterPackage*{babel}{\RequirePackage{csquotes}} +% \end{macrocode} +% \begin{macro}{\selectlanguage} +% \begin{macro}{\glqq} +% \begin{macro}{\grqq} +% \begin{macro}{\enquote} +% \begin{macrocode} +\TUD@UnwindPackage{babel}{% + \ClassWarningNoLine{\TUD@Class@Name}{Package `babel' not loaded}% + \providecommand*\selectlanguage[1]{}% + \providecommand*\glqq{\quotedblbase}% + \providecommand*\grqq{\textquotedblleft}% + \providecommand*\seename{see}% + \providecommand*\alsoname{see\nobreakspace also}% +} +\TUD@UnwindPackage{csquotes}{% + \ClassWarningNoLine{\TUD@Class@Name}{Package `csquotes' not loaded}% + \providecommand\enquote[1]{\emph{#1}}% +} +% \end{macrocode} +% \end{macro}^^A \enquote +% \end{macro}^^A \grqq +% \end{macro}^^A \glqq +% \end{macro}^^A \selectlanguage +% +% \iffalse +%<*class&manual> +% \fi +% +% \subsection{Sortieren von Listen} +% +% \begin{macro}{\tud@list@sort} +% \changes{v2.02}{2014/07/25}{neu}^^A +% \begin{macro}{\tud@list@@sort} +% \changes{v2.02}{2014/07/25}{neu}^^A +% \begin{macro}{\tud@templist} +% \changes{v2.02}{2014/07/25}{neu}^^A +% \begin{macro}{\if@tud@list@sorted} +% \changes{v2.02}{2014/07/25}{neu}^^A +% Der Befehl \cs{tud@list@sort} erwartet eine \pkg{etoolbox}-Liste und sortiert +% diese mit dem Makro \cs{sort@list} in alphabetischer Reihenfolge in eine +% kommagetrennte Auflistung. Diese wird anschließend wieder in eine +% \pkg{etoolbox}-Liste umgewandelt. +% \begin{macrocode} +\newcommand*\tud@templist{} +\let\tud@templist\relax +\newcommand*\tud@list@sort[1]{% + \ifdefvoid{#1}{% + \ClassWarning{tudscrmanual}{% + The given list \string#1\space\MessageBreak% + is empty, nothing to sort here% }% - \patchcmd{\@uclcnotmath}{\@nonchangecase\ensuremath}{% - \@nonchangecase\ensuremath\tud@x@textcase@uclcnotmath% - }{}{\tud@patch@wrn{@uclcnotmath}}% + }{% + \let\tud@reserved#1% + \let\tud@templist\relax% + \forlistloop\tud@list@@sort{\tud@reserved}% + \let\tud@reserved\relax% + \@for\@tempa:=\tud@templist\do{\listeadd\tud@reserved{\@tempa}}% + \let#1\tud@reserved% }% -\fi -\TUD@deprecated@cs{NoCaseChange}{@firstofone} +} +% \end{macrocode} +% Hier erfolgt die eigentliche Sortierung der Liste. +% \begin{macrocode} +\tud@newif\if@tud@list@sorted +\newcommand*\tud@list@@sort[1]{% +% \end{macrocode} +% Der erste Eintrag wird direkt der Liste hinzugefügt. +% \begin{macrocode} + \ifx\tud@templist\relax% + \def\tud@templist{#1}% +% \end{macrocode} +% Weitere Einräge werden mit \cs{pdfstrcmp} an der richtigen Stelle eingefügt. +% Dabei wird die kommagetrennte Liste \cs{tud@templist} durchlaufen und +% \cs{@tempb} als Hilfsmakro verwendet, in welches die aktuelle Liste innerhalb +% der \cs{@for}-Schleife stückweise expandiert wird. Wenn das aktuelle Element +% an der dafür passenden Stelle eingesetzt wurde, wird \cs{if@tud@list@sorted} +% gesetzt. +% \begin{macrocode} + \else% + \@tud@list@sortedfalse% + \let\@tempb\@empty% + \@for\@tempa:=\tud@templist\do{% +% \end{macrocode} +% Ist der Eintrag bereits erfolgt, wird der verbliebene Teil der Liste +% angehangen. +% \ToDo{\cs{expandafter}\cs{edef}\cs{expandafter} ist quatsch, oder?}[v2.07] +% \begin{macrocode} + \if@tud@list@sorted% + \expandafter\edef\expandafter\@tempb\expandafter{\@tempb,\@tempa}% + \else% +% \end{macrocode} +% Liegt der Eintrag in alphabetischer Reihenfolge vor dem aktuellen der +% durchlaufenenen Liste, so wird dieser davor eingefügt. Dabei muss der Fall, +% dass das Element der erste Eintrag in der temporären Liste \cs{@tempb} ist, +% eine Sonderbehandlung erfolgen. Anschließend wird \cs{@tud@list@sortedtrue} +% gesetzt. +% \begin{macrocode} + \expandafter\ifnum\pdf@strcmp{#1}{\@tempa}<\z@\relax% + \ifx\@tempb\@empty% + \expandafter\edef\expandafter\@tempb\expandafter{% + #1,\@tempa% + }% + \else% + \expandafter\edef\expandafter\@tempb\expandafter{% + \@tempb,#1,\@tempa% + }% + \fi% + \@tud@list@sortedtrue% + \else% +% \end{macrocode} +% Ist Eintrag in alphabetischer Reihenfolge nach dem aktuellen der geprüften +% Liste, so wird dieser (noch) nicht eingefügt. Der Sonderfall des ersten +% Elementes wird abgedeckt. +% \begin{macrocode} + \ifx\@tempb\@empty% + \expandafter\edef\expandafter\@tempb\expandafter{\@tempa}% + \else% + \expandafter\edef\expandafter\@tempb\expandafter{\@tempb,\@tempa}% + \fi% + \fi% + \fi% + }% +% \end{macrocode} +% Wurde der Eintrag nach dem Durchlaufen der Liste nicht eingefügt, so erfolgt +% dies hier am Ende der Liste. +% \begin{macrocode} + \if@tud@list@sorted\else% + \expandafter\edef\expandafter\@tempb\expandafter{\@tempb,#1}% + \fi% +% \end{macrocode} +% Die temporäre Liste \cs{@tempb} wird auf \cs{tud@templist} überschrieben. +% \begin{macrocode} + \let\tud@templist\@tempb% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \if@tud@list@sorted +% \end{macro}^^A \tud@templist +% \end{macro}^^A \tud@list@@sort +% \end{macro}^^A \tud@list@sort +% +% \iffalse +% +% \fi +% +% \subsection{Stringmanipulation} +% +% \begin{macro}{\tud@replace@in} +% \changes{v2.05}{2015/11/01}{neu}^^A +% \changes{v2.06o}{2022/08/08}{neu}^^A +% \begin{macro}{\tud@replace@@in} +% \changes{v2.06o}{2022/08/08}{neu}^^A +% Mit diesem Befehl kann in einem gegebenen Makro ein bestimmtes Zeichen durch +% ein anderes ersetzt werden. Dies wird verwendet, um für Indexbefehle die +% möglicherweise enthaltenen |@|"~Zeichen oder in Datei- und Pfadangaben +% Unterstriche zu ersetzen. +% \begin{macrocode} +\newcommand*\tud@replace@in[3]{% + \begingroup% +% \end{macrocode} +% Zunächst wird der Inhalt des ersten Argumentes expandiert. Anschließend +% wird \cs{tud@res@b} als ein durch \cs{@nil} abgegrenztes Makro mit zwei +% Argumenten definiert, wobei diese durch das im zweiten Argument gegebene +% \meta{Zeichen} voneinander abgegrenzt werden. Dieses Makro wird nun so lange +% rekursiv mit dem zweiten Teil aufgerufen, bis dieses leer is. Dabei wird der +% erste, durch das angegebene zu ersetzende Zeichen Teil sukzessive an +% \cs{tud@res@c} angehängt und um das im dritten Argument angegebene +% Ersatzzeichen vervollständigt. +% \begin{macrocode} + \edef\tud@res@a{\expandonce{#1}}% + \let\tud@res@c\@empty% + \def\tud@res@b##1#2##2\@nil{% + \IfArgIsEmpty{##2}{% + \appto\tud@res@c{##1}% + }{% + \appto\tud@res@c{##1#3}% + \tud@res@b##2\@nil% + }% + }% + \expandafter\tud@res@b\tud@res@a#2\@nil% + \edef\tud@res@a{% + \endgroup% + \unexpanded{\def#1}{\expandonce\tud@res@c}% + }% + \tud@res@a% +} +% \end{macrocode} +% Diese Variante sorgt dafür, dass die zu ersetzenden Zeichen alle als Strings +% behandelt werden. +% \begin{macrocode} +\newcommand*\tud@replace@@in[3]{% + \begingroup% + \protected@edef\tud@res@a{#1}% + \edef\tud@res@a{\detokenize\expandafter{\tud@res@a}}% + \edef\tud@res@b{% + \unexpanded{\tud@replace@in\tud@res@a}{\detokenize{#2}}{\detokenize{#3}}% + }% + \tud@res@b% + \edef\tud@res@a{% + \endgroup% + \unexpanded{\def#1}{\tud@res@a}% + }% + \tud@res@a% +} +% \end{macrocode} +% \end{macro}^^A \tud@replace@@in +% \end{macro}^^A \tud@replace@in +% +% \iffalse +% +%<*body> +% \fi +% +% \subsection{Zusätzliche Markup-Befehle} +% \subsubsection{Textauszeichnung} +% +% \begin{macro}{\@pnumwidth} +% \begin{macro}{\@tocrmarg} +% Etwas mehr Platz im Inhaltsverzeichnis für die Seitenzahlen. +% \ToDo{direkt in die Klassen übernehmen}[v2.07] +% \begin{macrocode} +\renewcommand*\@pnumwidth{2.1em} +\renewcommand*\@tocrmarg{3.1em} +% \end{macrocode} +% \end{macro}^^A \@tocrmarg +% \end{macro}^^A \@pnumwidth +% +% \begin{macro}{\textsbn} +% \changes{v2.02}{2014/08/16}{neu}^^A +% \begin{macro}{\sbnfont} +% \changes{v2.02}{2014/08/16}{neu}^^A +% \begin{macro}{\textsbi} +% \changes{v2.02}{2014/08/16}{neu}^^A +% \begin{macro}{\sbifont} +% \changes{v2.02}{2014/08/16}{neu}^^A +% \begin{macro}{\textttit} +% \changes{v2.06o}{2022/08/03}{neu}^^A +% \begin{macro}{\ttitfont} +% \changes{v2.06o}{2022/08/03}{neu}^^A +% Kombinierte Auszeichnungsbefehle für Text. +% \begin{macrocode} +\newcommand*\textsbn{} +\newrobustcmd*\sbnfont{\sffamily\bfseries\upshape} +\DeclareTextFontCommand\textsbn{\sbnfont} +\newcommand*\textsbi{} +\newrobustcmd*\sbifont{\sffamily\bfseries\itshape} +\DeclareTextFontCommand\textsbi{\sbifont} +\newcommand*\textttit{} +\newrobustcmd*\ttitfont{\ttfamily\itshape} +\DeclareTextFontCommand\textttit{\ttitfont} +% \end{macrocode} +% \end{macro}^^A \ttitfont +% \end{macro}^^A \textttit +% \end{macro}^^A \sbifont +% \end{macro}^^A \textsbi +% \end{macro}^^A \sbnfont +% \end{macro}^^A \textsbn +% +% \subsubsection{Logisches Markup} +% +% \begin{macro}{\tud@english} +% Hiermit wird der Argumentsinhalt mit englischen Trennungsmustern gesetzt, +% falls die Sprache geladen wurde. +% \begin{macrocode} +\newcommand*\tud@english[1]{% + \iflanguageloaded{english}{\foreignlanguage{english}{#1}}{#1}% +} +\AfterPackage*{babel}{% + \renewcommand*\tud@english[1]{\foreignlanguage{english}{#1}}% +} +% \end{macrocode} +% \end{macro}^^A \tud@english +% \begin{macro}{\KOMAScript} +% \begin{macro}{\TUDScript} +% \begin{macro}{\vTUDScript} +% \begin{macro}{\vKOMAScript} +% Für die robuste Verwendung im Text. +% \begin{macrocode} +\kernel@make@fragile\KOMAScript +\edef\KOMAScript{\noexpand\mbox{\expandonce\KOMAScript}\noexpand\xspace} +\robustify\KOMAScript +\robustify\TUDScript +\AfterPackage*{hyperref}{% + \pdfstringdefDisableCommands{% + \def\KOMAScript{KOMA-Script{}}% + \def\TUDScript{TUD-Script{}}% + }% +} +% \end{macrocode} +% Diese Befehle geben in der Dokumentation die aktuelle Version von \TUDScript +% sowie die mindestens notwendige Version von \KOMAScript{} aus. +% \begin{macrocode} +\newcommand*\vTUDScript{v\TUDScriptVersionNumber} +\newcommand*\vKOMAScript{v\TUD@KOMAVersionNumber} +% \end{macrocode} +% \end{macro}^^A \vKOMAScript +% \end{macro}^^A \vTUDScript +% \end{macro}^^A \TUDScript +% \end{macro}^^A \KOMAScript +% \begin{macro}{\CD} +% \begin{macro}{\CDs} +% \begin{macro}{\TUD} +% \begin{macro}{\TnUD} +% \begin{macro}{\TUDCD} +% \changes{v2.05}{2015/11/01}{neu}^^A +% \begin{macro}{\TUDCDs} +% \changes{v2.05}{2015/11/01}{neu}^^A +% \begin{macro}{\TUDForum} +% \changes{v2.06o}{2022/08/04}{neu}^^A +% \begin{macro}{\DDC} +% Diese Befehle stellen regelmäßig in der Quelltextdokumentatuion und im +% Handbuch genutzte Textbausteine bereit. Dazu wird der Befehl \cs{xspace} aus +% dem \pkg{xspace}-Paket genutzt. +% \begin{macrocode} +\newrobustcmd*\CD{\tud@english{Corporate Design}\xspace} +\newrobustcmd*\CDs{\tud@english{Corporate Designs}\xspace} +\newrobustcmd*\TUD{Technische Universit\"at Dresden\xspace} +\newrobustcmd*\TnUD{Technischen Universit\"at Dresden\xspace} +\newcommand*\TUDCD{\CD der \TnUD} +\newcommand*\TUDCDs{\CDs der \TnUD} +\newrobustcmd*\TUDForum{\mbox{T\kern.05em U\kern.05em D-\LaTeX-Forum}\xspace} +\newrobustcmd*\DDC{% + \mbox{% + D\kern.05em R\kern.05em E\kern.05em S\kern.05em % + D\kern.05em E\kern.05em N\kern.1em-\kern.1em concept% + }\xspace% +} +\AfterPackage*{hyperref}{% + \pdfstringdefDisableCommands{% + \def\CD{Corporate Design{}}% + \def\CDs{Corporate Designs{}}% + \def\TUD{Technische Universit\"at Dresden{}}% + \def\TnUD{Technischen Universit\"at Dresden{}}% + \def\TUDForum{TUD-LaTeX-Forum{}}% + \def\DDC{DRESDEN-concept{}}% + }% +} +% \end{macrocode} +% \end{macro}^^A \DDC +% \end{macro}^^A \TUDForum +% \end{macro}^^A \TUDCDs +% \end{macro}^^A \TUDCD +% \end{macro}^^A \TnUD +% \end{macro}^^A \TUD +% \end{macro}^^A \CDs +% \end{macro}^^A \CD +% +% \begin{macro}{\OpenSans} +% \changes{v2.06}{2018/07/02}{neu}^^A +% \begin{macro}{\Univers} +% \begin{macro}{\DIN} +% Für die Nennung der Schriften spezielle Markos bereitgestellt. +% \begin{macrocode} +\newrobustcmd*\OpenSans{\textcdbn{Open\nobreakspace Sans}\xspace} +\newrobustcmd*\Univers{\textcdbi{Univers}\xspace} +\newrobustcmd*\DIN{\textcdbi{DIN\nobreakspace Bold}\xspace} +\AfterPackage*{hyperref}{% + \pdfstringdefDisableCommands{% + \def\OpenSans{Open Sans{}}% + \def\Univers{Univers{}}% + \def\DIN{DIN Bold{}}% + }% +} +% \end{macrocode} +% \end{macro}^^A \DIN +% \end{macro}^^A \Univers +% \end{macro}^^A \OpenSans +% +% \begin{macro}{\GitHubBase} +% Angabe der URL des verwendeten GitHub-Repository. Aktuell nicht implementiert. +% \begin{macrocode} +\newcommand*\GitHubBase[1]{} +% \end{macrocode} +% \end{macro}^^A \GitHubBase +% \begin{macro}{\GitHubRepo} +% \changes{v2.02}{2014/08/16}{neu}^^A +% Auszeichnungsbefehle für Verweise auf ein GitHub-Repository. +% \begin{macrocode} +\NewDocumentCommand\GitHubRepo{!s !t' !O{releases} !D(){tud-cd/tudscr} !d<>}{% + \IfBooleanTF{#1}{\toks@{\href}}{\toks@{\hrfn}}% + \IfBooleanT{#2}{\toks@{\url}}% + \def\@tempa{https://github.com/#4/}% + \edef\@tempa{{\@tempa\IfValueTF{#5}{issues/#5}{#3}}}% + \addto@hook@expandafter\toks@{\@tempa}% + \IfBooleanF{#2}{% + \addto@hook\toks@{{\tud@english{GitHub-Repository~\textsbn{#4}}}}% + }% + \the\toks@\xspace% +} +% \end{macrocode} +% \end{macro}^^A \GitHubRepo +% \begin{macro}{\Download} +% \changes{v2.05g}{2016/11/08}{neu}^^A +% Der Befehl für die Angabe von direkten Downloadlinks. +% \begin{macrocode} +%<*manual> +\newcommand*\Download[1]{% + https://github.com/tud-cd/tudscr/releases/download/#1% +} +% +% \end{macrocode} +% \end{macro}^^A \Download +% \begin{macro}{\CTAN} +% \changes{v2.05}{2015/11/22}{neu}^^A +% \begin{macrocode} +\NewDocumentCommand\CTAN{!s !o !g}{% + \IfBooleanTF{#1}{\toks@{\href}}{\toks@{\hrfn}}% + \addto@hook\toks@{{http://www.ctan.org/\IfValueT{#2}{#2}}}% + \addto@hook\toks@{% + {\tud@english{Comprehensive TeX Archive Network (CTAN\IfValueT{#3}{~#3})}}% + }% + \the\toks@\xspace% +} +% \end{macrocode} +% \end{macro}^^A \CTAN +% \begin{macro}{\Forum} +% Der Befehl für die Ausgabe eines Links zum \TUDForum. Das optionale Argument +% in Guillemets kann genutzt werden, um auf einen spezifisches Beitrag zu +% verlinken. +% \begin{macrocode} +\NewDocumentCommand\Forum{!s !t' !O{\TUDForum} !d<>}{% + \IfBooleanTF{#1}{\toks@{\href}}{\toks@{\hrfn}}% + \IfBooleanT{#2}{\toks@{\url}}% + \def\@tempa{http://latex.wcms-file3.tu-dresden.de/phpBB3/}% + \edef\@tempa{{\@tempa\IfValueT{#4}{viewtopic.php?t=#4}}}% + \addto@hook@expandafter\toks@{\@tempa}% + \IfBooleanF{#2}{\addto@hook\toks@{{#3}}}% + \the\toks@\xspace% +} +% \end{macrocode} +% \end{macro}^^A \Forum +% \begin{macro}{\Attention} +% \changes{v2.02}{2014/08/16}{neu}^^A +% Falls irgendetwas besonders hervorgehoben werden sollte. +% \begin{macrocode} +\newcommand*\Attention[2][\z@]{% + \marginnote{% + \tud@setdim\fboxsep{0.25em}% + \fbox{Achtung!}% + }[{#1}]% + \emph{\trim@spaces{#2}}% +} +% \end{macrocode} +% \end{macro}^^A \Attention +% \begin{macro}{\TUDScriptContactTitle} +% \changes{v2.06o}{2022/08/09}{neu}^^A +% Die Angabe der E-Mail-Adresse auf dem Titel innerhalb von \cs{author}. +% \begin{macrocode} +\newrobustcmd*\TUDScriptContactTitle{% + \ifundef{\emailaddress}{% + \qquad\expandafter\mailto\expandafter{\TUDScriptContact}% + }{% + \expandafter\emailaddress\expandafter{\TUDScriptContact}% + }% +} +\AfterPackage*{hyperref}{% + \pdfstringdefDisableCommands{\let\TUDScriptContactTitle\relax}% +} % \end{macrocode} -% \end{macro}^^A \tud@x@textcase@uclcnotmath -% \end{macro}^^A \@uclcnotmath +% \end{macro}^^A \TUDScriptContactTitle % % \iffalse % +% % \fi % -% \Finale +% \PrintBackMatter % \endinput 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 , 2012-2021 +% Copyright (C) Falk Hanisch , 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 +% %<*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,1414 +1091,1447 @@ % 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&option> % \fi % -% \subsection{Der Kopfbereich der Seitenstile} -% -% Es folgen Option und Befehle zur Gestaltung des Kopfbereichs mit Hauptlogo, -% Querbalken und ggf. Zweitlogo. +% \subsection{Optionen für das \DDC-Logo} % -% \begin{option}{cdhead} -% \changes{v2.03}{2015/01/29}{neu}^^A -% \changes{v2.04}{2015/05/18}{Wert \val{barcolor} neu}^^A -% \begin{macro}{\tud@head@font@num} -% \changes{v2.03}{2015/02/04}{neu}^^A -% \begin{macro}{\if@tud@head@font@num@locked} -% \changes{v2.03}{2015/02/04}{neu}^^A -% \begin{macro}{\tud@head@bar@num} -% \changes{v2.03}{2015/02/04}{neu}^^A -% \begin{macro}{\if@tud@head@bar@num@locked} -% \changes{v2.04}{2015/04/01}{neu}^^A -% \begin{macro}{\if@tud@head@widebar} -% \changes{v2.03}{2015/02/14}{neu}^^A -% \begin{macro}{\if@tud@head@widebar@locked} -% \changes{v2.03}{2015/02/14}{neu}^^A -% \begin{macro}{\if@tud@head@font@set} -% \begin{macro}{\if@tud@head@date} -% \changes{v2.05}{2016/05/27}{neu}^^A -% Mit dieser Option wird die zentrale Benutzerschnittstelle für Einstellungen -% des typischen Querbalkens für den TUD-Kopf geschaffen. Durch sie können -% sowohl die verwendete Schrift als auch die Stärke für den Balkentext -% (Institut, Fakultät etc.) geändert werden. Zusätzlich ist die Laufweite des -% Querbalkens bzw. die Farbe einstellbar. +% \begin{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} -\tud@locked@newnum{tud@head@font@num}{0} -\tud@locked@newnum{tud@head@bar@num}{0} -\tud@locked@newbool{@tud@head@widebar} -\newif\if@tud@head@font@set -\newif\if@tud@head@date -\TUD@key{cdhead}[true]{% - \TUD@set@numkey{cdhead}{@tempa}{% - \TUD@bool@numkey,% - {nocd}{0},{nocdfont}{0},{nocdfonts}{0},{notudfonts}{0},% - {cd}{1},{cdfont}{1},{cdfonts}{1},{tudfonts}{1},% - {light}{1},{lightfont}{1},{lite}{1},{litefont}{1},{noheavyfont}{1},% - {heavy}{2},{heavyfont}{2},{bold}{2},{boldfont}{2},% - {nocolor}{3},{nocolour}{3},{monochrome}{3},{monochromatic}{3},% - {colorlite}{4},{litecolor}{4},{colourlite}{4},{litecolour}{4},% - {colorlight}{4},{lightcolor}{4},{colourlight}{4},{lightcolour}{4},% - {pale}{4},{colorpale}{4},{palecolor}{4},{colourpale}{4},{palecolour}{4},% - {colorbar}{5},{barcolor}{5},{colourbar}{5},{barcolour}{5},% - {bicolor}{6},{bicolour}{6},{twocolor}{6},{twocolour}{6},% - {bichrome}{6},{bichromatic}{6},{dichrome}{6},{dichromatic}{6},% - {color}{6},{colour}{6},% - {full}{6},{colorfull}{6},{fullcolor}{6},{colourfull}{6},{fullcolour}{6},% - {textwidth}{7},{slim}{7},{slimhead}{7},{nowide}{7},{nowidehead}{7},% - {narrow}{7},{narrowhead}{7},{small}{7},{smallhead}{7},% - {paperwidth}{8},{wide}{8},{widehead}{8},% - {date}{9},{showdate}{9},{dateon}{9},{datetrue}{9},{dateyes}{9},% - {nodate}{10},{hidedate}{10},{dateoff}{10},{datefalse}{10},{dateno}{10}% - }{#1}% - \ifx\FamilyKeyState\FamilyKeyStateProcessed% - \ifcase\@tempa\relax% false - \tud@locked@num@set{tud@head@font@num}{0}% - \or% true - \tud@locked@num@set{tud@head@font@num}{1}% - \or% heavy - \tud@locked@num@set{tud@head@font@num}{2}% - \or% nocolor - \tud@locked@num@set{tud@head@bar@num}{0}% - \or% litecolor - \tud@locked@num@set{tud@head@bar@num}{1}% - \or% barcolor - \tud@locked@num@set{tud@head@bar@num}{2}% - \or% color - \tud@locked@num@set{tud@head@bar@num}{3}% - \or% textwidth - \tud@locked@bool@set{@tud@head@widebar}{false}% - \or% paperwidth - \tud@locked@bool@set{@tud@head@widebar}{true}% - \or% date - \@tud@head@datetrue% - \or% nodate - \@tud@head@datefalse% +%<*class&option> +\tud@newif\if@tud@ddc@internal +\newcommand*\tud@comp@clearpage{}% +\newcommand*\tud@comp@resetpagestyle{}% +% +%<*class&body> +\tud@if@v@lower{2.04}{% + \renewcommand*\tud@comp@clearpage{% + \if@tud@ddc@internal\else% + \tud@if@tudheadings{\currentpagestyle}{\clearpage}{}% \fi% - \ifnum\@tempa<\thr@@\relax% - \global\@tud@head@font@settrue% + }% + \renewcommand*\tud@comp@resetpagestyle{% + \if@tud@ddc@internal\else% + \tud@if@tudheadings{\currentpagestyle}{% + \expandafter\pagestyle\expandafter{\currentpagestyle}% + }{}% \fi% - \fi% -} + }% +}{}% +% % \end{macrocode} -% \end{macro}^^A \if@tud@head@date -% \end{macro}^^A \if@tud@head@font@set -% \end{macro}^^A \if@tud@head@widebar@locked -% \end{macro}^^A \if@tud@head@widebar -% \end{macro}^^A \if@tud@head@bar@num@locked -% \end{macro}^^A \tud@head@bar@num -% \end{macro}^^A \if@tud@head@font@num@locked -% \end{macro}^^A \tud@head@font@num -% \end{option}^^A cdhead +% \end{macro}^^A \if@tud@ddc@internal +% \end{macro}^^A \tud@comp@clearpage +% \end{macro}^^A \tud@comp@resetpagestyle % % \iffalse -% -%<*class&body> +%<*class&option> % \fi % -% \begin{macro}{\tud@layer@main@black} -% \changes{v2.04}{2015/05/31}{neu}^^A -% \begin{macro}{\tud@layer@main@HKS41} -% \changes{v2.04}{2015/05/31}{neu}^^A -% \begin{macro}{\tud@layer@main@white} -% \changes{v2.04}{2015/05/31}{neu}^^A -% Diese drei Boxen werden für das Logo der \TnUD reserviert. Abhängig von der -% gewählten Option des Layouts und der Seitenfarbe wird eine der Logos in der -% notwendigen Farbe ausgewählt. +% \begin{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} -\tud@newlayerbox{main@black} -\tud@newlayerbox{main@HKS41} -\tud@newlayerbox{main@white} +\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@layer@main@white -% \end{macro}^^A \tud@layer@main@HKS41 -% \end{macro}^^A \tud@layer@main@black -% -% \subsubsection{Das Hauptlogo der \TnUD} -% -% \begin{macro}{\tud@mainlogo@set} -% \changes{v2.04}{2015/05/31}{neu}^^A -% \begin{macro}{\if@tud@mainlogo@wrn} -% \changes{v2.04}{2015/05/31}{neu}^^A -% \begin{length}{\tud@len@mainlogoheight} +% \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}{\tud@mainlogo@wrn} -% \changes{v2.02}{2014/06/23}{Umbenennen von \cs{tud@head@logo@wrn}}^^A -% Das Makro \cs{tud@mainlogo@set} setzt sowohl das Logo der \TnUD als auch~-- -% durch den Aufruf der entsprechenden Befehle zum Schluss~-- alle weiteren -% Logos und Inhalte im Kopf und Fuß. Dies geschieht nach jeder Änderung des -% Satzspiegels beim Ausführen der einzelnen Seitenstil-Layer. Dafür wird der -% Schalter \cs{if@tud@mainlogo@set} im Hook \cs{tud@AfterChangingArea} gesetzt. +% \begin{macro}{\if@tud@footlogo@option@set} +% \changes{v2.04}{2015/06/01}{neu}^^A +% Die Option \opt{ddc}. % \begin{macrocode} -\newlength\tud@len@mainlogoheight -\newcommand*\tud@mainlogo@wrn[1]{} -\newif\if@tud@mainlogo@set -\newcommand*\tud@mainlogo@set{% - \if@tud@mainlogo@set% - \def\@tempa{\includegraphics[keepaspectratio,width=\tud@len@logowidth]}% - \tud@savelayerbox{main@black}{\@tempa{TUD-black}}% - \tud@savelayerbox{main@HKS41}{\@tempa{TUD-blue}}% - \tud@savelayerbox{main@white}{\@tempa{TUD-white}}% - \settoheight\tud@len@mainlogoheight{\tud@uselayerbox{main@black}}% - \global\tud@len@mainlogoheight=\tud@len@mainlogoheight% +\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} -% Es soll sichergestellt werden, dass das bei der Verwendung von \pkg{typearea} -% über den Satzspiegel in den Seitenrand hinausragende TUD-Logo nicht außerhalb -% des Druckrandes liegt. Dies kann beispielsweise bei kleinen Papierformaten, -% zweiseitigem Satz und/oder einem zu großen \opt{DIV}-Wertes passieren. Es -% wird in diesem Fall eine Warnung ausgegeben, damit das Problem durch den -% Anwender behoben werden kann. -% \begin{macrocode} - \gdef\tud@mainlogo@wrn##1{% - \ifdim##1<\ta@bcor\relax% - \ClassWarning{\TUD@Class@Name}{% - The selected page layout means that the\MessageBreak% - logo of TUD extends beyond the printing area. \MessageBreak% - The inner margin is smaller than BCOR\MessageBreak% - (`BCOR=\the\ta@bcor', inner margin is \the##1)\MessageBreak% - Maybe you should decrease the current value\MessageBreak% - of DIV (`DIV=\the\ta@div')% - }% - \global\let\tud@mainlogo@wrn\@gobble% - \fi% - }% +% 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} -% Hier werden die beiden Makros aufgerufen, um die Inhalte von Kopf und Fuß in -% den Boxen in der richtigen Größe neu zu setzen. +% Wurde die Option \opt{ddc} intern durch \opt{ddchead} oder \opt{ddcfoot} +% aufgerufen, wird die automatische Auswahl des \DDC-Logos deaktiviert. % \begin{macrocode} - \tud@headlogo@set% - \@tud@footlogo@option@settrue% - \tud@footlogo@option@set% - \global\@tud@mainlogo@setfalse% + \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} -% \end{macro}^^A \tud@mainlogo@wrn -% \end{length}^^A \tud@len@mainlogoheight -% \end{macro}^^A \if@tud@mainlogo@set -% \end{macro}^^A \tud@mainlogo@set -% \begin{macro}{\tud@mainlogo@use} -% \changes{v2.04}{2015/05/31}{neu}^^A -% Hiermit erfolgt die Ausgabe der gespeicherten Boxen für das Logo der \TnUD, -% wobei \cs{tud@head@logocolor} die Farbe festlegt. +% Abschließend wird im Kompatibilitätsmodus der aktuelle Seitenstil aufgerufen, +% um bei einem geänderten Fuß den notwendigen Satzspiegel zu laden. % \begin{macrocode} -\newcommand*\tud@mainlogo@use{% - \tud@mainlogo@wrn{% - \dimexpr\oddsidemargin+1in+\tud@len@logox-\tud@len@widemargin\relax% - }% - \tud@uselayerbox{main@\tud@head@logocolor}% + \tud@comp@resetpagestyle% } % \end{macrocode} -% \end{macro}^^A \tud@mainlogo@use -% -% \subsubsection{Optionales Zweit- oder \DDC-Logo} -% -% \begin{macro}{\tud@layer@head@black} -% \changes{v2.04}{2015/05/31}{neu}^^A -% \begin{macro}{\tud@layer@head@HKS41} -% \changes{v2.04}{2015/05/31}{neu}^^A -% \begin{macro}{\tud@layer@head@white} -% \changes{v2.04}{2015/05/31}{neu}^^A -% \begin{macro}{\tud@layer@head@option} -% \changes{v2.04}{2015/05/31}{neu}^^A -% Diese Boxen werden für das \DDC-Logo und das Zweitlogo im Kopf definiert. Der -% Box \cs{tud@layer@head@option} fäält dabei die Rolle zu, entweder ein~-- per -% Option gewähltes~-- \DDC-Logo oder aber das mit \cs{headlogo} angegebene -% Zweitlogo zusichern und auszugeben. Die anderen drei Boxen speichern das Logo -% von \DDC in den drei für die unterschiedlichen Layoutausprägung benötigten -% Varianten. +% \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} -\tud@newlayerbox{head@black} -\tud@newlayerbox{head@HKS41} -\tud@newlayerbox{head@white} -\tud@newlayerbox{head@option} +\newcommand*\tud@ddc@head@num{0} +\TUD@key{ddchead}[true]{% % \end{macrocode} -% \end{macro}^^A \tud@layer@head@option -% \end{macro}^^A \tud@layer@head@white -% \end{macro}^^A \tud@layer@head@HKS41 -% \end{macro}^^A \tud@layer@head@black -% \begin{macro}{\headlogo} -% \changes{v2.02}{2014/06/23}{Anpassung an automatische Wahl des \DDC-Logos}^^A -% \begin{macro}{\tud@headlogo@filename} -% \changes{v2.02}{2014/06/23}{neu}^^A -% \begin{macro}{\tud@headlogo@fileoptions} -% \changes{v2.02}{2014/06/23}{neu}^^A -% \begin{macro}{\tud@headlogo@wrn} -% \changes{v2.02}{2014/06/23}{neu}^^A -% Diese Befehle dienen zum Einbinden eines möglichen Zweitlogos im Kopf bündig -% zum rechten Seitenrand. Mit \cs{headlogo}\oarg{Optionsliste}\marg{Dateiname} -% werden der Dateiname und das optionale Argument in \cs{tud@headlogo@filename} -% bzw. \cs{tud@headlogo@fileoptions} gespeichert, damit diese später bei der -% tatsächlichen Verwendung des Logos mit dem Makro \cs{tud@headlogo@set} an den -% Befehl \cs{includegraphics} weitergereicht werden können. +% Der Seitenumbruch im Kompatibilitätsmodus. % \begin{macrocode} -\newcommand*\tud@headlogo@filename{} -\newcommand*\tud@headlogo@fileoptions{} -\newcommand*\tud@headlogo@wrn{} -\newcommand*\headlogo[2][]{% \tud@comp@clearpage% - \renewcommand*\tud@headlogo@filename{#2}% - \renewcommand*\tud@headlogo@fileoptions{#1}% + \TUD@set@numkey{ddchead}{tud@ddc@head@num}{\tud@ddc@switch}{#1}% % \end{macrocode} -% Nach dem Setzen des Zweitlogos müssen die Boxen mit den Logos von \DDC neu -% gesetzt werden. Weil dieses dabei vom Kopf in den Fuß oder umgekehrt wandern -% könnte, werden beide relevanten Makros ausgeführt. +% 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} - \global\@tud@headlogo@option@settrue% - \global\@tud@footlogo@option@settrue% - \gdef\tud@headlogo@wrn{% - \ClassWarning{\TUD@Class@Name}{% - Secondary logo `\string\headlogo{\tud@headlogo@filename}'\MessageBreak% - is overwritten with DDC logo. Maybe you should\MessageBreak% - use `ddcfoot' or better `ddc' instead of `ddchead'% - }% - \global\let\tud@headlogo@wrn\relax% - }% \tud@comp@resetpagestyle% } % \end{macrocode} -% \end{macro}^^A \tud@headlogo@wrn -% \end{macro}^^A \tud@headlogo@fileoptions -% \end{macro}^^A \tud@headlogo@filename -% \end{macro}^^A \headlogo -% \begin{macro}{\tud@headlogo@set} -% \changes{v2.04}{2015/05/31}{neu}^^A -% \begin{macro}{\tud@headlogo@option@set} -% \changes{v2.04}{2015/05/31}{neu}^^A -% \changes{v2.05}{2015/07/27}{Bugfix für Dateien in Unterordnern}^^A -% Äquivalent zum Logo der \TnUD werden auch für das Logo von \DDC drei -% Farbvarianten erstellt. +% \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@headlogo@set{% - \def\@tempa{% - \includegraphics[keepaspectratio,totalheight=\tud@len@mainlogoheight]% - }% - \tud@savelayerbox{head@black}{\@tempa{DDC-24}}% - \tud@savelayerbox{head@HKS41}{\@tempa{DDC-27}}% - \tud@savelayerbox{head@white}{\@tempa{DDC-30}}% - \tud@headlogo@option@set% -} +\newcommand*\tud@ddc@foot@num{0} +\TUD@key{ddcfoot}[true]{% % \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. +% Der Seitenumbruch im Kompatibilitätsmodus. % \begin{macrocode} -\newcommand*\tud@headlogo@option@set{% - \if@tud@headlogo@option@set% - \def\@tempc##1##2{% - \tud@savelayerbox{head@option}{% - \includegraphics[% - keepaspectratio,totalheight=\tud@len@mainlogoheight,##2% - ]{##1}% - }% - }% - \tud@savelayerbox{head@option}{}% - \tud@ddc@check% - \ifcase\@tempa\relax% \tud@ddc@head@num=false - \ifdefvoid{\tud@headlogo@filename}{}{% - \protected@edef\tud@headlogo@filename{% - \expandafter\trim@spaces\expandafter{\tud@headlogo@filename}% - }% - \protected@edef\@tempb{% - \noexpand\@tempc{\tud@headlogo@filename}{\tud@headlogo@fileoptions}% - }% - \@tempb% - }% - \or\or% \tud@ddc@head@num=color - \@tempc{DDC-03}{}% - \or% \tud@ddc@head@num=colorblack - \@tempc{DDC-09}{}% - \or% \tud@ddc@head@num=gray - \@tempc{DDC-21}{}% - \or% \tud@ddc@head@num=black - \@tempc{DDC-24}{}% - \or% \tud@ddc@head@num=blue - \@tempc{DDC-27}{}% - \or% \tud@ddc@head@num=white - \@tempc{DDC-30}{}% + \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% - \global\@tud@headlogo@option@setfalse% \fi% -} % \end{macrocode} -% \end{macro}^^A \tud@headlogo@option@set -% \end{macro}^^A \tud@headlogo@set -% \begin{macro}{\tud@headlogo@use} -% \changes{v2.04}{2015/05/31}{neu}^^A -% Die Ausgabe von \DDC- oder Zweitlogo im Kopf erfolgt mit diesem Makro. Dabei -% werden diese in einer Box vertikal zentriert. +% Das Setzen des Seitenstils im Kompatibilitätsmodus. % \begin{macrocode} -\newcommand*\tud@headlogo@use{% - \tud@vlayerbox{\tud@len@mainlogoheight}{% - \vss% - \hbox{% - \tud@ddc@check% - \ifnum\@tempa=\@ne\relax% \tud@ddc@head@num=true - \tud@uselayerbox{head@\tud@head@logocolor}% - \else% - \tud@uselayerbox{head@option}% - \fi% - }% - \vss% - }{% - The given `\string\headlogo{\tud@headlogo@filename}' is too large.% - }% - \ifdefvoid{\tud@headlogo@filename}{}{% - \tud@ddc@check% - \ifnum\@tempa>\z@\relax\tud@headlogo@wrn\fi% - }% + \tud@comp@resetpagestyle% } % \end{macrocode} -% \end{macro}^^A \tud@headlogo@use +% \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 % -% \subsection{Der Fußbereich der Seitenstile} -% -% Es folgen Option und Befehle zur Gestaltung des Fußbereichs mit optionalem -% Inhalt im Fuß, Drittlogos und \DDC-Logo. -% -% \begin{option}{cdfoot} -% \changes{v2.03}{2015/02/02}{Bei Längenangabe wird \opt{extrabottommargin} -% indirekt genutzt}^^A -% \changes{v2.04}{2015/06/18}{bedingtes Setzen der Option \opt{automark}}^^A -% \begin{macro}{\if@tud@foot@colored} -% \changes{v2.03}{2015/02/15}{neu}^^A -% \begin{macro}{\if@tud@foot@colored@locked} -% \changes{v2.05}{2015/07/14}{neu}^^A -% \begin{macro}{\tud@ps@store} -% \changes{v2.02}{2014/06/23}{neu}^^A -% \begin{macro}{\tud@ps@@store} -% \changes{v2.02}{2014/06/23}{neu}^^A -% \begin{macro}{\tud@ps@restore} -% \changes{v2.02}{2014/06/23}{neu}^^A -% \begin{macro}{\tud@ps@@restore} +% \begin{macro}{\tud@ddc@check} % \changes{v2.02}{2014/06/23}{neu}^^A -% Dieser Seitenstil mit dem Kolumnentitel im Fuß wurde bereits für die alte -% \cls{tudbook}-Klasse bereitgestellt und soll auch hier optional angeboten -% werden. Zusätzlich kann mit dieser Option ggf. ein farbiger Hintergrund in -% der Fußzeile aktiviert werden. -% -% Einige Einstellungen sind abhängig vom Paket \pkg{scrlayer-scrpage}, welches -% unter Umständen nicht geladen wird. Mit \cs{TUD@AfterPackage@do} kann -% Quelltext nur dann ausgeführt werden, wenn ein Paket auch tatsächlich geladen -% wurde. Hierfür ist die Initialisierung mit \cs{TUD@AfterPackage@set} nötig. -% \begin{macrocode} -\TUD@AfterPackage@set{scrlayer-scrpage} -\tud@locked@newbool{@tud@foot@colored} -\TUD@key{cdfoot}[true]{% - \TUD@set@numkey{cdfoot}{@tempa}{% - \TUD@bool@numkey,% - {nocolor}{2},{nocolour}{2},{monochrome}{2},{monochromatic}{2},% - {bicolor}{3},{bicolour}{3},{twocolor}{3},{twocolour}{3},% - {bichrome}{3},{bichromatic}{3},{dichrome}{3},{dichromatic}{3},% - {color}{3},{colour}{3},% - {full}{3},{colorfull}{3},{fullcolor}{3},{colourfull}{3},{fullcolour}{3}% - }{#1}% - \ifx\FamilyKeyState\FamilyKeyStateProcessed% - \ifcase\@tempa\relax% false -% \end{macrocode} -% Die ursprünglichen Kopf- und Fußzeilen werden mit \cs{tud@ps@restore} -% wiederhergestellt. Dies wird allerdings frühestens nach dem Laden von -% \pkg{scrlayer-scrpage} durchgeführt. -% \begin{macrocode} - \TUD@AfterPackage@do{scrlayer-scrpage}{% - \tud@ps@restore{scrheadings}% - \tud@ps@restore{plain.scrheadings}% - \tud@komafont@unset{pageheadfoot}% - }% -% \end{macrocode} -% Die ursprünglichen Kopf- und Fußzeilen werden mit dem Makro \cs{tud@ps@store} -% gesichert, um gegebenenfalls zurückschalten zu können. Anschließend werden -% diese mit dem neuen Stil überschrieben. Dies wird allerdings frühestens nach -% dem Laden von \pkg{scrlayer-scrpage} durchgeführt. -% \begin{macrocode} - \or% true - \TUD@AfterPackage@do{scrlayer-scrpage}{% - \tud@ps@store{scrheadings}% - \tud@ps@store{plain.scrheadings}% - \tud@komafont@set{pageheadfoot}{\upshape}% - \clearpairofpagestyles% - \ofoot[\pagemark]{% - \if@twoside\ifodd\value{page}\else\pagemark\quad\fi\fi% - {\footnotesize\headmark}% - \if@twoside\ifodd\value{page}\quad\pagemark\fi\else\quad\pagemark\fi% - }% - \ifx\@mkdouble\@gobble\else\KOMAoptions{automark}\fi% - }% -% \end{macrocode} -% Hier kann die Hintergrundfarbe des Fußes aktiviert bzw. deaktiviert werden. -% \begin{macrocode} - \or% nocolor - \tud@locked@bool@set{@tud@foot@colored}{false}% - \or% color - \tud@locked@bool@set{@tud@foot@colored}{true}% - \fi% -% \end{macrocode} -% Außerdem kann mit der Option \opt{extrabottommargin} gesetzt werden. +% 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} - \else% - \tud@lowerstring\tud@res@a{#1}% - \ifdimen{\tud@res@a}{\TUDoptions{extrabottommargin=#1}}{}% +\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} -% Die nächsten beiden Befehle dienen zum Sichern der Kopf- und Fußzeilen\dots -% \begin{macrocode} -\newcommand*\tud@ps@store[1]{% - \tud@ps@@store{#1}{odd}{left}{head}% - \tud@ps@@store{#1}{odd}{right}{head}% - \tud@ps@@store{#1}{odd}{middle}{head}% - \tud@ps@@store{#1}{even}{left}{head}% - \tud@ps@@store{#1}{even}{right}{head}% - \tud@ps@@store{#1}{even}{middle}{head}% - \tud@ps@@store{#1}{odd}{left}{foot}% - \tud@ps@@store{#1}{odd}{right}{foot}% - \tud@ps@@store{#1}{odd}{middle}{foot}% - \tud@ps@@store{#1}{even}{left}{foot}% - \tud@ps@@store{#1}{even}{right}{foot}% - \tud@ps@@store{#1}{even}{middle}{foot}% -} -% \end{macrocode} -% \dots, wobei hierfür auf die internen Befehle von \pkg{scrlayer-scrpage} -% zurückgegriffen werden muss. +% 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} -\newcommand*\tud@ps@@store[4]{% - \ifcsundef{@@tud@ps@#1@#2@#3@#4}{% - \csletcs{@@tud@ps@#1@#2@#3@#4}{sls@ps@#1@#2@#3@#4}% - }{}% -} -\newcommand*\tud@ps@restore[1]{% - \tud@ps@@restore{#1}{odd}{left}{head}% - \tud@ps@@restore{#1}{odd}{right}{head}% - \tud@ps@@restore{#1}{odd}{middle}{head}% - \tud@ps@@restore{#1}{even}{left}{head}% - \tud@ps@@restore{#1}{even}{right}{head}% - \tud@ps@@restore{#1}{even}{middle}{head}% - \tud@ps@@restore{#1}{odd}{left}{foot}% - \tud@ps@@restore{#1}{odd}{right}{foot}% - \tud@ps@@restore{#1}{odd}{middle}{foot}% - \tud@ps@@restore{#1}{even}{left}{foot}% - \tud@ps@@restore{#1}{even}{right}{foot}% - \tud@ps@@restore{#1}{even}{middle}{foot}% -} -\newcommand*\tud@ps@@restore[4]{% - \ifcsdef{@@tud@ps@#1@#2@#3@#4}{% - \csletcs{sls@ps@#1@#2@#3@#4}{@@tud@ps@#1@#2@#3@#4}% - \csundef{@@tud@ps@#1@#2@#3@#4}% + \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@ps@@restore -% \end{macro}^^A \tud@ps@restore -% \end{macro}^^A \tud@ps@@store -% \end{macro}^^A \tud@ps@store -% \end{macro}^^A \if@tud@foot@colored@locked -% \end{macro}^^A \if@tud@foot@colored -% \end{option}^^A cdfoot +% \end{macro}^^A \tud@ddc@check % % \iffalse -% -%<*class> +% +%<*class&option> % \fi % -% \subsubsection{Optionales \DDC-Logo oder Drittlogos} +% \subsection{Der Kopfbereich der Seitenstile} % -% \begin{option}{footlogoheight} -% \changes{v2.05}{2016/06/16}{neu}^^A -% \begin{macro}{\tud@dim@footlogoheight} -% \changes{v2.04}{2015/06/01}{neu}^^A -% Für den Anwender besteht mit der Option \opt{footlogoheight} die Möglichkeit, -% die Höhe aller Logos im Fußbereich~-- also eventuell das \DDC-Logo sowie -% vom Anwender mit dem Befehl \cs{footlogo} angegebene Logos~-- zentral -% festzulegen. Dabei wird der gewünschte Wert in \cs{tud@dim@footlogoheight} -% abgelegt. +% Es folgen Option und Befehle zur Gestaltung des Kopfbereichs mit Hauptlogo, +% Querbalken und ggf. Zweitlogo. +% +% \begin{option}{cdhead} +% \changes{v2.03}{2015/01/29}{neu}^^A +% \changes{v2.04}{2015/05/18}{Wert \val{barcolor} neu}^^A +% \begin{macro}{\tud@head@font@num} +% \changes{v2.03}{2015/02/04}{neu}^^A +% \begin{macro}{\if@tud@head@font@num@locked} +% \changes{v2.03}{2015/02/04}{neu}^^A +% \begin{macro}{\tud@head@bar@num} +% \changes{v2.03}{2015/02/04}{neu}^^A +% \begin{macro}{\if@tud@head@bar@num@locked} +% \changes{v2.04}{2015/04/01}{neu}^^A +% \begin{macro}{\if@tud@head@widebar} +% \changes{v2.03}{2015/02/14}{neu}^^A +% \begin{macro}{\if@tud@head@widebar@locked} +% \changes{v2.03}{2015/02/14}{neu}^^A +% \begin{macro}{\if@tud@head@font@set} +% \begin{macro}{\if@tud@head@date} +% \changes{v2.05}{2016/05/27}{neu}^^A +% Mit dieser Option wird die zentrale Benutzerschnittstelle für Einstellungen +% des typischen Querbalkens für den TUD-Kopf geschaffen. Durch sie können +% sowohl die verwendete Schrift als auch die Stärke für den Balkentext +% (Institut, Fakultät etc.) geändert werden. Zusätzlich ist die Laufweite des +% Querbalkens bzw. die Farbe einstellbar. % \begin{macrocode} -%<*option> -\newcommand*\tud@dim@footlogoheight{} -\let\tud@dim@footlogoheight\relax -\TUD@key{footlogoheight}{% - \TUD@set@dimenkey{footlogoheight}{\tud@dim@footlogoheight}{#1}% +\tud@locked@newnum{tud@head@font@num}{0} +\tud@locked@newnum{tud@head@bar@num}{0} +\tud@locked@newbool{@tud@head@widebar} +\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,% + {nocd}{0},{nocdfont}{0},{nocdfonts}{0},{notudfonts}{0},% + {cd}{1},{cdfont}{1},{cdfonts}{1},{tudfonts}{1},% + {light}{1},{lightfont}{1},{lite}{1},{litefont}{1},{noheavyfont}{1},% + {heavy}{2},{heavyfont}{2},{bold}{2},{boldfont}{2},% + {nocolor}{3},{nocolour}{3},{monochrome}{3},{monochromatic}{3},% + {colorlite}{4},{litecolor}{4},{colourlite}{4},{litecolour}{4},% + {colorlight}{4},{lightcolor}{4},{colourlight}{4},{lightcolour}{4},% + {pale}{4},{colorpale}{4},{palecolor}{4},{colourpale}{4},{palecolour}{4},% + {colorbar}{5},{barcolor}{5},{colourbar}{5},{barcolour}{5},% + {bicolor}{6},{bicolour}{6},{twocolor}{6},{twocolour}{6},% + {bichrome}{6},{bichromatic}{6},{dichrome}{6},{dichromatic}{6},% + {color}{6},{colour}{6},% + {full}{6},{colorfull}{6},{fullcolor}{6},{colourfull}{6},{fullcolour}{6},% + {textwidth}{7},{slim}{7},{slimhead}{7},{nowide}{7},{nowidehead}{7},% + {narrow}{7},{narrowhead}{7},{small}{7},{smallhead}{7},% + {paperwidth}{8},{wide}{8},{widehead}{8},% + {date}{9},{showdate}{9},{dateon}{9},{datetrue}{9},{dateyes}{9},% + {nodate}{10},{hidedate}{10},{dateoff}{10},{datefalse}{10},{dateno}{10}% + }{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed% - \ifdim\dimexpr\tud@dim@footlogoheight\relax<\z@\relax% - \def\@tempa-##1\@nil{\def\tud@dim@footlogoheight{##1}}% - \@tempa#1\@nil% + \ifcase\@tempa\relax% false + \tud@locked@num@set{tud@head@font@num}{0}% + \or% true + \tud@locked@num@set{tud@head@font@num}{1}% + \or% heavy + \tud@locked@num@set{tud@head@font@num}{2}% + \or% nocolor + \tud@locked@num@set{tud@head@bar@num}{0}% + \or% litecolor + \tud@locked@num@set{tud@head@bar@num}{1}% + \or% barcolor + \tud@locked@num@set{tud@head@bar@num}{2}% + \or% color + \tud@locked@num@set{tud@head@bar@num}{3}% + \or% textwidth + \tud@locked@bool@set{@tud@head@widebar}{false}% + \or% paperwidth + \tud@locked@bool@set{@tud@head@widebar}{true}% + \or% date + \@tud@head@datetrue% + \or% nodate + \@tud@head@datefalse% + \fi% + \ifnum\@tempa<\thr@@\relax% + \global\@tud@head@font@settrue% \fi% - \global\@tud@footlogo@option@settrue% \fi% } -% -% \end{macrocode} -% Da sich mit der Version~v2.03 die Standardhöhe des \DDC-Logos im Fußbereich -% geändert hat, wird dieser Wert abhängig von der Einstellung für die Option -% \opt{tudscrver} nach der Abarbeitung der Optionen am Ende der Klasse gesetzt. -% \begin{macrocode} -%<*body> -\AtEndOfClass{% - \ifdefvoid{\tud@dim@footlogoheight}{% - \tud@if@v@lower{2.03}{% - \def\tud@dim@footlogoheight{.6\tud@len@topmargin}% - }{% - \def\tud@dim@footlogoheight{\tud@len@mainlogoheight}% - }% - }{}% -} -% % \end{macrocode} -% \end{macro}^^A \tud@dim@footlogoheight -% \end{option}^^A footlogoheight +% \end{macro}^^A \if@tud@head@date +% \end{macro}^^A \if@tud@head@font@set +% \end{macro}^^A \if@tud@head@widebar@locked +% \end{macro}^^A \if@tud@head@widebar +% \end{macro}^^A \if@tud@head@bar@num@locked +% \end{macro}^^A \tud@head@bar@num +% \end{macro}^^A \if@tud@head@font@num@locked +% \end{macro}^^A \tud@head@font@num +% \end{option}^^A cdhead % % \iffalse -% +% %<*class&body> % \fi % -% \begin{macro}{\tud@layer@foot@black} -% \changes{v2.04}{2015/06/01}{neu}^^A -% \begin{macro}{\tud@layer@foot@HKS41} -% \changes{v2.04}{2015/06/01}{neu}^^A -% \begin{macro}{\tud@layer@foot@white} -% \changes{v2.04}{2015/06/01}{neu}^^A -% \begin{macro}{\tud@layer@foot@option} -% \changes{v2.04}{2015/06/01}{neu}^^A -% Im Fußbereich kann das \DDC-Logo rechtsbündig ausgegeben. Hierfür werden die -% entsprechenden Boxen für alle Farbvarianten definiert. Diese werden genutzt, -% wenn entweder die Option \opt{ddcfoot} oder aber \opt{ddc} in Verbindung mit -% einem Zweitlogo (\cs{headlogo}) genutzt wird. -% \begin{macrocode} -\tud@newlayerbox{foot@black} -\tud@newlayerbox{foot@HKS41} -\tud@newlayerbox{foot@white} -\tud@newlayerbox{foot@option} -% \end{macrocode} -% \end{macro}^^A \tud@layer@foot@option -% \end{macro}^^A \tud@layer@foot@white -% \end{macro}^^A \tud@layer@foot@HKS41 -% \end{macro}^^A \tud@layer@foot@black -% \begin{macro}{\tud@footlogo@ddc@set} -% \changes{v2.04}{2015/06/01}{neu}^^A -% \begin{macro}{\tud@footlogo@option@set} -% \changes{v2.04}{2015/06/01}{neu}^^A -% Auch im Fuß werden für das \DDC-Logo verschiedene Boxen für die Farbvarianten -% \val{black}, \val{HKS41} und \val{white} sowie eine für die gezielte Auswahl -% über die Optionen \opt{ddc} bzw. \opt{ddcfoot} erstellt. Dafür wird zunächst -% das Makro \cs{tud@footlogo@ddc@set} definiert. +% \begin{macro}{\tud@layer@main@black} +% \changes{v2.04}{2015/05/31}{neu}^^A +% \begin{macro}{\tud@layer@main@HKS41} +% \changes{v2.04}{2015/05/31}{neu}^^A +% \begin{macro}{\tud@layer@main@white} +% \changes{v2.04}{2015/05/31}{neu}^^A +% Diese drei Boxen werden für das Logo der \TnUD reserviert. Abhängig von der +% gewählten Option des Layouts und der Seitenfarbe wird eine der Logos in der +% notwendigen Farbe ausgewählt. % \begin{macrocode} -\newcommand*\tud@footlogo@ddc@set[2]{% - \tud@savelayerbox{foot@#1}{% - \includegraphics[keepaspectratio,totalheight=\tud@dim@footlogoheight]{#2}% - }% -} +\tud@newlayerbox{main@black} +\tud@newlayerbox{main@HKS41} +\tud@newlayerbox{main@white} % \end{macrocode} -% Hiermit werden die \DDC-Optionen \opt{ddc} bzw. \opt{ddcfoot} abgearbeitet. -% Dies geschieht, falls hierfür der Schalter \cs{if@tud@footlogo@option@set} -% gesetzt wurde, bei der Ausgabe des dazugehörigen Layers. +% \end{macro}^^A \tud@layer@main@white +% \end{macro}^^A \tud@layer@main@HKS41 +% \end{macro}^^A \tud@layer@main@black +% +% \subsubsection{Das Hauptlogo der \TnUD} +% +% \begin{macro}{\tud@mainlogo@set} +% \changes{v2.04}{2015/05/31}{neu}^^A +% \begin{macro}{\if@tud@mainlogo@wrn} +% \changes{v2.04}{2015/05/31}{neu}^^A +% \begin{length}{\tud@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 +% Das Makro \cs{tud@mainlogo@set} setzt sowohl das Logo der \TnUD als auch~-- +% durch den Aufruf der entsprechenden Befehle zum Schluss~-- alle weiteren +% Logos und Inhalte im Kopf und Fuß. Dies geschieht nach jeder Änderung des +% Satzspiegels beim Ausführen der einzelnen Seitenstil-Layer. Dafür wird der +% Schalter \cs{if@tud@mainlogo@set} im Hook \cs{tud@AfterChangingArea} gesetzt. % \begin{macrocode} -\newcommand*\tud@footlogo@option@set{% - \if@tud@footlogo@option@set% - \tud@footlogo@ddc@set{black}{DDC-22}% - \tud@footlogo@ddc@set{HKS41}{DDC-25}% - \tud@footlogo@ddc@set{white}{DDC-28}% - \tud@ddc@check% - \ifcase\@tempb\relax\or\or% \tud@ddc@foot@num=color - \tud@footlogo@ddc@set{option}{DDC-01}% - \or% \tud@ddc@foot@num=colorblack - \tud@footlogo@ddc@set{option}{DDC-07}% - \or% \tud@ddc@foot@num=gray - \tud@footlogo@ddc@set{option}{DDC-19}% - \or% \tud@ddc@foot@num=black - \tud@footlogo@ddc@set{option}{DDC-22}% - \or% \tud@ddc@foot@num=blue - \tud@footlogo@ddc@set{option}{DDC-25}% - \or% \tud@ddc@foot@num=white - \tud@footlogo@ddc@set{option}{DDC-28}% - \fi% - \global\@tud@footlogo@option@setfalse% - \fi% -} +\tud@newdim\tud@dim@mainlogoheight +\newcommand*\tud@mainlogo@wrn[1]{} +\tud@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}}% + \settoheight\tud@dim@mainlogoheight{\tud@uselayerbox{main@black}}% + \global\tud@dim@mainlogoheight=\tud@dim@mainlogoheight% % \end{macrocode} -% \end{macro}^^A \tud@footlogo@option@set -% \end{macro}^^A \tud@footlogo@ddc@set -% \begin{macro}{\tud@footlogo@ddc@use} -% \changes{v2.04}{2015/06/01}{neu}^^A -% Die Ausgabe des \DDC-Logos im Fuß erfolgt mit diesem Makro. Dabei wird dieses -% in einer Box optisch~-- leicht nach oben verschoben~-- vertikal zentriert. +% Es soll sichergestellt werden, dass das bei der Verwendung von \pkg{typearea} +% über den Satzspiegel in den Seitenrand hinausragende TUD-Logo nicht außerhalb +% des Druckrandes liegt. Dies kann beispielsweise bei kleinen Papierformaten, +% zweiseitigem Satz und/oder einem zu großen \opt{DIV}-Wertes passieren. Es +% wird in diesem Fall eine Warnung ausgegeben, damit das Problem durch den +% Anwender behoben werden kann. % \begin{macrocode} -\newcommand*\tud@footlogo@ddc@use[2]{% - \tud@ddc@check% - \ifcase\@tempb\relax\else% \tud@ddc@foot@num=!false - \tud@footlogo@option@set% - \setbox\z@\hbox{% - \tud@vlayerbox{#1}{% - \vss% - \hbox to #2{% - \hss% - \ifcase\@tempb\relax\or% \tud@ddc@foot@num=true - \tud@uselayerbox{foot@\tud@foot@logocolor}% - \else% - \tud@uselayerbox{foot@option}% - \fi% + \gdef\tud@mainlogo@wrn##1{% + \ifdim##1<\ta@bcor\relax% + \ClassWarning{\TUD@Class@Name}{% + The selected page layout means that the\MessageBreak% + logo of TUD extends beyond the printing area. \MessageBreak% + The inner margin is smaller than BCOR\MessageBreak% + (`BCOR=\the\ta@bcor', inner margin is \the##1)\MessageBreak% + Maybe you should decrease the current value\MessageBreak% + of DIV (`DIV=\the\ta@div')% }% - \vss\vss% - }{% - You should reduce `footlogoheight', because it is\MessageBreak% - too high (\the\dimexpr\tud@dim@footlogoheight\relax).% - \ifnum\tud@cdgeometry@num>\@ne% true/symmetric/twoside - \MessageBreak% - Alternatively you can enlarge the bottom margin\MessageBreak% - by using option `extrabottommargin'.% - \fi% - }% + \global\let\tud@mainlogo@wrn\@gobble% + \fi% }% % \end{macrocode} -% Nach der Ausgabe wird ein begativer horizontaler Abstand in der Boxbreite -% eingefügt, damit nachfolgende Boxen überlagert werden können. +% 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} - \usebox\z@\hspace*{-\wd\z@}% + \tud@headlogo@set% + \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@footlogo@ddc@use -% \begin{macro}{\tud@layer@foot@cmd} -% \changes{v2.04}{2015/06/01}{neu}^^A -% Für das Setzen von benutzerdefinierten Logos im Fußbereich wird diese Box -% verwendet. +% \end{macro}^^A \tud@mainlogo@wrn +% \end{length}^^A \tud@dim@mainlogoheight +% \end{macro}^^A \if@tud@mainlogo@set +% \end{macro}^^A \tud@mainlogo@set +% \begin{macro}{\tud@mainlogo@use} +% \changes{v2.04}{2015/05/31}{neu}^^A +% Hiermit erfolgt die Ausgabe der gespeicherten Boxen für das Logo der \TnUD, +% wobei \cs{tud@head@logocolor} die Farbe festlegt. % \begin{macrocode} -\tud@newlayerbox{foot@cmd} +\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@layer@foot@cmd -% \begin{macro}{\footlogo} -% \changes{v2.03}{2015/01/27}{neu}^^A -% \begin{macro}{\tud@footlogo@filenames} -% \changes{v2.03}{2015/01/27}{neu}^^A -% \begin{macro}{\tud@footlogo@fileoptions} -% \changes{v2.03}{2015/01/27}{neu}^^A -% \begin{macro}{\footlogosep} -% \changes{v2.03}{2015/01/27}{neu}^^A -% \begin{macro}{\tud@footlogo@cmd@set} -% \changes{v2.04}{2015/06/01}{neu}^^A -% \begin{macro}{\tud@footlogo@cmd@@set} -% \changes{v2.03}{2015/01/27}{neu}^^A -% \changes{v2.03}{2015/02/02}{optionale Parameter für unterschiedliche Dateien -% individuell nutzbar}^^A -% \begin{macro}{\if@tud@footlogo@cmd@set} -% \changes{v2.04}{2015/06/01}{neu}^^A -% Mit dem Befehl \cs{footlogo} kann eine kommasparierte Liste für Logos im -% Fuß angegeben werden, die mit \cs{footlogosep} voneinander getrennt werden. +% \end{macro}^^A \tud@mainlogo@use +% +% \subsubsection{Optionales Zweit- oder \DDC-Logo} +% +% \begin{macro}{\tud@layer@head@black} +% \changes{v2.04}{2015/05/31}{neu}^^A +% \begin{macro}{\tud@layer@head@HKS41} +% \changes{v2.04}{2015/05/31}{neu}^^A +% \begin{macro}{\tud@layer@head@white} +% \changes{v2.04}{2015/05/31}{neu}^^A +% \begin{macro}{\tud@layer@head@option} +% \changes{v2.04}{2015/05/31}{neu}^^A +% Diese Boxen werden für das \DDC-Logo und das Zweitlogo im Kopf definiert. Der +% Box \cs{tud@layer@head@option} fäält dabei die Rolle zu, entweder ein~-- per +% Option gewähltes~-- \DDC-Logo oder aber das mit \cs{headlogo} angegebene +% Zweitlogo zusichern und auszugeben. Die anderen drei Boxen speichern das Logo +% von \DDC in den drei für die unterschiedlichen Layoutausprägung benötigten +% Varianten. % \begin{macrocode} -\newcommand*\footlogosep{\hfill} -\newcommand*\tud@footlogo@filenames{} -\newcommand*\tud@footlogo@fileoptions{} -\newcommand*\footlogo[2][]{% +\tud@newlayerbox{head@black} +\tud@newlayerbox{head@HKS41} +\tud@newlayerbox{head@white} +\tud@newlayerbox{head@option} +% \end{macrocode} +% \end{macro}^^A \tud@layer@head@option +% \end{macro}^^A \tud@layer@head@white +% \end{macro}^^A \tud@layer@head@HKS41 +% \end{macro}^^A \tud@layer@head@black +% \begin{macro}{\headlogo} +% \changes{v2.02}{2014/06/23}{Anpassung an automatische Wahl des \DDC-Logos}^^A +% \begin{macro}{\tud@headlogo@filename} +% \changes{v2.02}{2014/06/23}{neu}^^A +% \begin{macro}{\tud@headlogo@fileoptions} +% \changes{v2.02}{2014/06/23}{neu}^^A +% 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*\headlogo[2][]{% \tud@comp@clearpage% - \renewcommand*\tud@footlogo@filenames{#2}% - \renewcommand*\tud@footlogo@fileoptions{#1}% - \global\@tud@footlogo@cmd@settrue% + \renewcommand*\tud@headlogo@filename{#2}% + \renewcommand*\tud@headlogo@fileoptions{#1}% +% \end{macrocode} +% Nach dem Setzen des Zweitlogos müssen die Boxen mit den Logos von \DDC neu +% gesetzt werden. Weil dieses dabei vom Kopf in den Fuß oder umgekehrt wandern +% könnte, werden beide relevanten Makros ausgeführt. +% \begin{macrocode} + \global\@tud@headlogo@option@settrue% + \global\@tud@footlogo@option@settrue% \tud@comp@resetpagestyle% } % \end{macrocode} -% Die mit \cs{footlogo} angegeben Logos und die dazugehörigen Einstellungen, -% welche entweder allgemein über das optionale Argument oder aber individuell -% durch \val{:} an den Dateinamen angehängt übergeben wurden, werden hier in -% der Box \cs{tud@layer@foot@cmd} gespeichert. +% \end{macro}^^A \tud@headlogo@fileoptions +% \end{macro}^^A \tud@headlogo@filename +% \end{macro}^^A \headlogo +% \begin{macro}{\tud@headlogo@set} +% \changes{v2.04}{2015/05/31}{neu}^^A +% \begin{macro}{\tud@headlogo@option@set} +% \changes{v2.04}{2015/05/31}{neu}^^A +% \changes{v2.05}{2015/07/27}{Bugfix für Dateien in Unterordnern}^^A +% Äquivalent zum Logo der \TnUD werden auch für das Logo von \DDC drei +% Farbvarianten erstellt. % \begin{macrocode} -\newif\if@tud@footlogo@cmd@set -\newcommand*\tud@footlogo@cmd@set[2]{% - \if@tud@footlogo@cmd@set% - \tud@savelayerbox{foot@cmd}{% - \hbox to #2{% +\newcommand*\tud@headlogo@set{% + \def\@tempa{% + \includegraphics[keepaspectratio,totalheight=\tud@dim@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} -% Hier erfolgt die eigentliche Abarbeitung der mit \cs{footlogo} angegeben -% Liste der benutzerdefinierten Logos. In \cs{@tempa} wird nach dem ersten -% Durchlauf der Schleife der Inhalt von \cs{footlogosep} gespeichert und nach -% dem ersten Logo vor jedem weiteren eingefügt. Um versehentlich angegebene -% Leerzeichen zu entfernen, werden diese mit \cs{trim@spaces} entfernt. +% 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} - \let\@tempa\relax% - \@for\@tempb:=\tud@footlogo@filenames\do{% - \edef\@tempb{\expandafter\trim@spaces\expandafter{\@tempb}}% - \@tempa% - \ifx\@tempb\@empty\else% - \expandafter\tud@footlogo@cmd@@set\expandafter{\@tempb}{#1}% - \fi% - \let\@tempa\footlogosep% - }% - \hss% +\newcommand*\tud@headlogo@option@set{% + \if@tud@headlogo@option@set% + \def\@tempc##1##2{% + \tud@savelayerbox{head@option}{% + \includegraphics[{% + keepaspectratio,% + totalheight=\tud@dim@mainlogoheight,% + ##2% + }]{##1}% }% }% - \global\@tud@footlogo@cmd@setfalse% + \tud@savelayerbox{head@option}{}% + \tud@ddc@check% + \ifcase\@tempa\relax% \tud@ddc@head@num=false + \ifdefvoid{\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}% + }% + \@tempb% + }% + \or\or% \tud@ddc@head@num=color + \@tempc{DDC-03}{}% + \or% \tud@ddc@head@num=colorblack + \@tempc{DDC-09}{}% + \or% \tud@ddc@head@num=gray + \@tempc{DDC-21}{}% + \or% \tud@ddc@head@num=black + \@tempc{DDC-24}{}% + \or% \tud@ddc@head@num=blue + \@tempc{DDC-27}{}% + \or% \tud@ddc@head@num=white + \@tempc{DDC-30}{}% + \fi% + \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% } % \end{macrocode} -% Der Befehl \cs{tud@footlogo@cmd@set} wird genutzt, um die einzelnen Logos für -% den Fuß nacheinander in der Box \cs{tud@layer@foot@cmd} zu setzen. +% \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 +% \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[headlogo]{\tud@dim@mainlogoheight}{% + \vss% + \hbox{% + \tud@ddc@check% + \ifnum\@tempa=\@ne\relax% \tud@ddc@head@num=true + \tud@uselayerbox{head@\tud@head@logocolor}% + \else% + \tud@uselayerbox{head@option}% + \fi% + }% + \vss% + }{% + The given `\string\headlogo{\tud@headlogo@filename}' is too large.% + }% +} +% \end{macrocode} +% \end{macro}^^A \tud@layer@headlogo@wrn +% \end{macro}^^A \tud@headlogo@use +% +% \iffalse +% +%<*class&option> +% \fi +% +% \subsection{Der Fußbereich der Seitenstile} +% +% Es folgen Option und Befehle zur Gestaltung des Fußbereichs mit optionalem +% Inhalt im Fuß, Drittlogos und \DDC-Logo. +% +% \begin{option}{cdfoot} +% \changes{v2.03}{2015/02/02}{Bei Längenangabe wird \opt{extrabottommargin} +% indirekt genutzt}^^A +% \changes{v2.04}{2015/06/18}{bedingtes Setzen der Option \opt{automark}}^^A +% \begin{macro}{\if@tud@foot@colored} +% \changes{v2.03}{2015/02/15}{neu}^^A +% \begin{macro}{\if@tud@foot@colored@locked} +% \changes{v2.05}{2015/07/14}{neu}^^A +% \begin{macro}{\tud@ps@store} +% \changes{v2.02}{2014/06/23}{neu}^^A +% \begin{macro}{\tud@ps@@store} +% \changes{v2.02}{2014/06/23}{neu}^^A +% \begin{macro}{\tud@ps@restore} +% \changes{v2.02}{2014/06/23}{neu}^^A +% \begin{macro}{\tud@ps@@restore} +% \changes{v2.02}{2014/06/23}{neu}^^A +% Dieser Seitenstil mit dem Kolumnentitel im Fuß wurde bereits für die alte +% \cls{tudbook}-Klasse bereitgestellt und soll auch hier optional angeboten +% werden. Zusätzlich kann mit dieser Option ggf. ein farbiger Hintergrund in +% der Fußzeile aktiviert werden. +% +% Einige Einstellungen sind abhängig vom Paket \pkg{scrlayer-scrpage}, welches +% unter Umständen nicht geladen wird. Mit \cs{TUD@AfterPackage@do} kann +% Quelltext nur dann ausgeführt werden, wenn ein Paket auch tatsächlich geladen +% wurde. Hierfür ist die Initialisierung mit \cs{TUD@AfterPackage@set} nötig. +% \begin{macrocode} +\TUD@AfterPackage@set{scrlayer-scrpage} +\tud@locked@newbool{@tud@foot@colored} +\TUD@key{cdfoot}[true]{% + \TUD@set@numkey{cdfoot}{@tempa}{% + \TUD@bool@numkey,% + {nocolor}{2},{nocolour}{2},{monochrome}{2},{monochromatic}{2},% + {bicolor}{3},{bicolour}{3},{twocolor}{3},{twocolour}{3},% + {bichrome}{3},{bichromatic}{3},{dichrome}{3},{dichromatic}{3},% + {color}{3},{colour}{3},% + {full}{3},{colorfull}{3},{fullcolor}{3},{colourfull}{3},{fullcolour}{3}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \ifcase\@tempa\relax% false +% \end{macrocode} +% Die ursprünglichen Kopf- und Fußzeilen werden mit \cs{tud@ps@restore} +% wiederhergestellt. Dies wird allerdings frühestens nach dem Laden von +% \pkg{scrlayer-scrpage} durchgeführt. % \begin{macrocode} -\newcommand*\tud@footlogo@cmd@@set[2]{% - \begingroup% + \TUD@AfterPackage@do{scrlayer-scrpage}{% + \tud@ps@restore{scrheadings}% + \tud@ps@restore{plain.scrheadings}% + \tud@komafont@unset{pageheadfoot}% + }% % \end{macrocode} -% Dabei soll es möglich sein, optionale Parameter an \cs{includegraphics} zu -% übergeben. Dies soll zum einen global für alle Dateien als auch individuell -% für einzelne Logos möglich sein. Zu diesem Zweck wird die Schnittstelle für -% den Anwender so gestaltet, dass individuelle Parameter mit einem Doppelpunkt -% direkt an den Dateinamen angehangen werden können. +% Die ursprünglichen Kopf- und Fußzeilen werden mit dem Makro \cs{tud@ps@store} +% gesichert, um gegebenenfalls zurückschalten zu können. Anschließend werden +% diese mit dem neuen Stil überschrieben. Dies wird allerdings frühestens nach +% dem Laden von \pkg{scrlayer-scrpage} durchgeführt. % \begin{macrocode} - \let\@tempa\@empty% - \let\@tempb\@empty% - \@tempswatrue% - \def\do##1{% - \if@tempswa% - \def\@tempa{##1}% - \@tempswafalse% - \else% - \l@addto@macro\@tempb{,##1}% - \fi% - }% - \let\@tempc\relax% - \DeclareListParser{\@tempc}{:}% - \@tempc{#1}% + \or% true + \TUD@AfterPackage@do{scrlayer-scrpage}{% + \tud@ps@store{scrheadings}% + \tud@ps@store{plain.scrheadings}% + \tud@komafont@set{pageheadfoot}{\upshape}% + \clearpairofpagestyles% + \ofoot[\pagemark]{% + \if@twoside\ifodd\value{page}\else\pagemark\quad\fi\fi% + {\footnotesize\headmark}% + \if@twoside\ifodd\value{page}\quad\pagemark\fi\else\quad\pagemark\fi% + }% + \ifx\@mkdouble\@gobble\else\KOMAoptions{automark}\fi% + }% % \end{macrocode} -% In jedem Fall werden die Grundeinstellungen als erstes ausgeführt. +% Hier kann die Hintergrundfarbe des Fußes aktiviert bzw. deaktiviert werden. % \begin{macrocode} - \preto\tud@footlogo@fileoptions{% - keepaspectratio,totalheight=\tud@dim@footlogoheight,% - }% + \or% nocolor + \tud@locked@bool@set{@tud@foot@colored}{false}% + \or% color + \tud@locked@bool@set{@tud@foot@colored}{true}% + \fi% % \end{macrocode} -% Wurden tatsächlich inidviduelle Parameter übergeben, so werden diese als -% letztes ausgeführt, um vorige Einstellungen überschreiben zu können. +% Außerdem kann mit der Option \opt{extrabottommargin} gesetzt werden. % \begin{macrocode} - \eappto\tud@footlogo@fileoptions{\expandonce\@tempb}% - \protected@edef\@tempc{% - \noexpand\includegraphics[\expandonce\tud@footlogo@fileoptions]{\@tempa}% - }% + \else% + \TUD@set@dimkey{cdfoot}{\@tempa}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \TUDoptions{extrabottommargin=#1}% + \fi% + \fi% +} % \end{macrocode} -% Die Logos werden~-- wie auch das \DDC-Logo im Fuß~-- individuell optisch -% vertikal zentriert. +% Die nächsten beiden Befehle dienen zum Sichern der Kopf- und Fußzeilen\dots % \begin{macrocode} - \tud@vlayerbox{#2}{\vss\hbox{\@tempc}\vss\vss}{% - The given `\string\footlogo{\@tempa}' is too large.% - }% - \endgroup% +\newcommand*\tud@ps@store[1]{% + \tud@ps@@store{#1}{odd}{left}{head}% + \tud@ps@@store{#1}{odd}{right}{head}% + \tud@ps@@store{#1}{odd}{middle}{head}% + \tud@ps@@store{#1}{even}{left}{head}% + \tud@ps@@store{#1}{even}{right}{head}% + \tud@ps@@store{#1}{even}{middle}{head}% + \tud@ps@@store{#1}{odd}{left}{foot}% + \tud@ps@@store{#1}{odd}{right}{foot}% + \tud@ps@@store{#1}{odd}{middle}{foot}% + \tud@ps@@store{#1}{even}{left}{foot}% + \tud@ps@@store{#1}{even}{right}{foot}% + \tud@ps@@store{#1}{even}{middle}{foot}% } % \end{macrocode} -% \end{macro}^^A \if@tud@footlogo@cmd@set -% \end{macro}^^A \tud@footlogo@cmd@@set -% \end{macro}^^A \tud@footlogo@cmd@set -% \end{macro}^^A \footlogosep -% \end{macro}^^A \tud@footlogo@fileoptions -% \end{macro}^^A \tud@footlogo@filenames -% \end{macro}^^A \footlogo -% \begin{macro}{\tud@footlogo@cmd@use} -% \changes{v2.04}{2015/06/01}{neu}^^A -% Der Befehl \cs{tud@footlogo@cmd@use} wird genutzt, um die einzelnen Logos für -% den Fuß innerhalb der Ebene \val{tudheadings.foot.content} auszugeben. +% \dots, wobei hierfür auf die internen Befehle von \pkg{scrlayer-scrpage} +% zurückgegriffen werden muss. % \begin{macrocode} -\newcommand*\tud@footlogo@cmd@use[2]{% - \tud@footlogo@option@set% - \tud@footlogo@cmd@set{#1}{#2}% - \setbox\z@\hbox{\tud@uselayerbox{foot@cmd}}% - \usebox\z@\hspace*{-\wd\z@}% +\newcommand*\tud@ps@@store[4]{% + \ifcsundef{@@tud@ps@#1@#2@#3@#4}{% + \csletcs{@@tud@ps@#1@#2@#3@#4}{sls@ps@#1@#2@#3@#4}% + }{}% +} +\newcommand*\tud@ps@restore[1]{% + \tud@ps@@restore{#1}{odd}{left}{head}% + \tud@ps@@restore{#1}{odd}{right}{head}% + \tud@ps@@restore{#1}{odd}{middle}{head}% + \tud@ps@@restore{#1}{even}{left}{head}% + \tud@ps@@restore{#1}{even}{right}{head}% + \tud@ps@@restore{#1}{even}{middle}{head}% + \tud@ps@@restore{#1}{odd}{left}{foot}% + \tud@ps@@restore{#1}{odd}{right}{foot}% + \tud@ps@@restore{#1}{odd}{middle}{foot}% + \tud@ps@@restore{#1}{even}{left}{foot}% + \tud@ps@@restore{#1}{even}{right}{foot}% + \tud@ps@@restore{#1}{even}{middle}{foot}% +} +\newcommand*\tud@ps@@restore[4]{% + \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@footlogo@cmd@use +% \end{macro}^^A \tud@ps@@restore +% \end{macro}^^A \tud@ps@restore +% \end{macro}^^A \tud@ps@@store +% \end{macro}^^A \tud@ps@store +% \end{macro}^^A \if@tud@foot@colored@locked +% \end{macro}^^A \if@tud@foot@colored +% \end{option}^^A cdfoot % -% \subsubsection{Optionaler Inhalt im Fußbereich} +% \iffalse +% +%<*class> +% \fi % -% \begin{macro}{\footcontent} -% \changes{v2.04}{2015/04/21}{neu}^^A -% \begin{KOMAfont}{tudheadings} -% \changes{v2.04}{2015/04/21}{neu}^^A -% \begin{macro}{\tud@footcontent@do} -% \changes{v2.04}{2015/04/21}{neu}^^A -% \begin{macro}{\tud@footcontent@@do} -% \changes{v2.04}{2015/04/21}{neu}^^A -% \changes{v2.05}{2016/04/17}{Stern im Argument erhält aktuellen Inhalt}^^A -% \begin{macro}{\tud@footcontent@usefont} -% \changes{v2.06}{2018/08/01}{neu}^^A -% \begin{macro}{\tud@footcontent@fontsize} -% \changes{v2.06}{2018/08/01}{neu}^^A -% \begin{macro}{\tud@footcontent@fontface} -% \changes{v2.04}{2015/06/01}{neu}^^A -% \changes{v2.05}{2015/07/21}{Bugfix für die Schriftgröße und den Durchschuss -% bei einer entsprechenden Anpassung der Schriftart \val{tudheadings}}^^A -% \begin{macro}{\tud@footcontent@left} -% \changes{v2.04}{2015/06/01}{neu}^^A -% \begin{macro}{\tud@footcontent@right} +% \subsubsection{Optionales \DDC-Logo oder Drittlogos} +% +% \begin{option}{footlogoheight} +% \changes{v2.05}{2016/06/16}{neu}^^A +% \begin{macro}{\tud@footlogoheight@dim} % \changes{v2.04}{2015/06/01}{neu}^^A -% Mit dem Befehl \cs{footcontent} kann der Inhalt für den Fußbereich der -% Seiten im Stil \pgs{tudheadings} festgelegt werden. Dieser wird mit passenden -% Schrifteinstellungen entweder einspaltig oder zweispaltig gesetzt. Die -% Sternversion des Befehls nimmt keinerlei Einstellungen für die Schrift vor. -% \begin{macrocode} -\newkomafont{tudheadings}{\tud@color{\tud@foot@fontcolor}} -% \end{macrocode} -% Dieser Befehl wird zur Formatierung der Schrift im Fußbereich definiert. +% \begin{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@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} -\newcommand*\tud@footcontent@usefont[1]{% - \usekomafont{tudheadings}{% - \tud@footcontent@fontsize% - \tud@footcontent@fontface% - \selectfont% - #1% - }% +%<*option> +\newcommand*\tud@footlogoheight@dim{0pt} +\TUD@key{footlogoheight}{% + \TUD@set@dimkey{footlogoheight}{\tud@footlogoheight@dim}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \tud@length@setabsolute\tud@footlogoheight@dim% + \global\@tud@footlogo@option@settrue% + \fi% } +% % \end{macrocode} -% Die mit \cs{footcontent} angegebenen Einstellungen und Inhalte werden in -% diesen Makros gesichert, weshalb diese vorher alloziert werden. Anschließend -% erfolgt die Definition des Befehls. -% \begin{macrocode} -\newcommand*\tud@footcontent@fontsize{} -\newcommand*\tud@footcontent@fontface{} -\newcommand*\tud@footcontent@left{} -\newcommand*\tud@footcontent@right{\@nil} -% \end{macrocode} -% Die Sternversion ändert die Schriftgröße vom Inhalt nicht. Die Normalversion -% nutzt die Schriftgröße der Kopfzeile mit einem passenden Durchschuss. +% 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} gesetzt. % \begin{macrocode} -\newcommand*\footcontent{% - \kernel@ifstar{% - \renewcommand*\tud@footcontent@fontsize{}% - \tud@footcontent@do% - }{% - \renewcommand*\tud@footcontent@fontsize{% - \setlength\@tempdima{\tud@head@fontsize\p@}% - \fontsize{\@tempdima}{1.25\@tempdima}% +%<*body> +\newcommand*\tud@footlogoheight@set{% + \ifdim\dimexpr\tud@footlogoheight@dim\relax=\z@\relax% + \tud@if@v@lower{2.03}{% + \def\tud@footlogoheight@dim{\tud@dim@topmargin*3/5}% + }{% + \def\tud@footlogoheight@dim{\tud@dim@mainlogoheight}% }% - \tud@footcontent@do% - }% -} -% \end{macrocode} -% Normalerweise wird der Inhalt vollständig über die verfügbare Seitenfußbreite -% gesetzt. Wird das optionale Argument \emph{nach} dem obligatorischen genutzt, -% so erfolgt die Ausgabe zweispaltig. Das optionale Argument kann für -% zusätzliche Formatierungsbefehle genutzt werden. -% \begin{macrocode} -\newcommand*\tud@footcontent@do[2][]{% - \kernel@ifnextchar[%] - {\tud@footcontent@@do{#1}{#2}}% - {\tud@footcontent@@do{#1}{#2}[\@nil]}% + \fi% } -\newcommand*\tud@footcontent@@do{} -\def\tud@footcontent@@do#1#2[#3]{% +% % \end{macrocode} -% Wurde im optionalen Argument für zusätzliche Schrifteinstellungen ein Stern -% verwendet, bleibt die bisherige Definition bestehen. +% \end{macro}^^A \tud@footlogoheight@set +% \end{macro}^^A \tud@footlogoheight@dim +% \end{option}^^A footlogoheight +% +% \iffalse +% +%<*class&body> +% \fi +% +% \begin{macro}{\tud@layer@foot@black} +% \changes{v2.04}{2015/06/01}{neu}^^A +% \begin{macro}{\tud@layer@foot@HKS41} +% \changes{v2.04}{2015/06/01}{neu}^^A +% \begin{macro}{\tud@layer@foot@white} +% \changes{v2.04}{2015/06/01}{neu}^^A +% \begin{macro}{\tud@layer@foot@option} +% \changes{v2.04}{2015/06/01}{neu}^^A +% Im Fußbereich kann das \DDC-Logo rechtsbündig ausgegeben. Hierfür werden die +% entsprechenden Boxen für alle Farbvarianten definiert. Diese werden genutzt, +% wenn entweder die Option \opt{ddcfoot} oder aber \opt{ddc} in Verbindung mit +% einem Zweitlogo (\cs{headlogo}) genutzt wird. % \begin{macrocode} - \if\detokenize{*#1}\relax\else% - \renewcommand*\tud@footcontent@fontface{#1}% - \fi% +\tud@newlayerbox{foot@black} +\tud@newlayerbox{foot@HKS41} +\tud@newlayerbox{foot@white} +\tud@newlayerbox{foot@option} % \end{macrocode} -% Wurde in einem der Argumente für den linken und/oder rechten Inhalt ein Stern -% verwendet, bleibt die bisherige Definition bestehen. +% \end{macro}^^A \tud@layer@foot@option +% \end{macro}^^A \tud@layer@foot@white +% \end{macro}^^A \tud@layer@foot@HKS41 +% \end{macro}^^A \tud@layer@foot@black +% \begin{macro}{\tud@footlogo@ddc@set} +% \changes{v2.04}{2015/06/01}{neu}^^A +% \begin{macro}{\tud@footlogo@option@set} +% \changes{v2.04}{2015/06/01}{neu}^^A +% Auch im Fuß werden für das \DDC-Logo verschiedene Boxen für die Farbvarianten +% \val{black}, \val{HKS41} und \val{white} sowie eine für die gezielte Auswahl +% über die Optionen \opt{ddc} bzw. \opt{ddcfoot} erstellt. Dafür wird zunächst +% das Makro \cs{tud@footlogo@ddc@set} definiert. % \begin{macrocode} - \if\detokenize{*#2}\relax\else% - \renewcommand*\tud@footcontent@left{#2}% - \fi% - \if\detokenize{*#3}\relax\else% - \renewcommand*\tud@footcontent@right{#3}% - \fi% +\newcommand*\tud@footlogo@ddc@set[2]{% + \tud@savelayerbox{#1}{% + \includegraphics[% + keepaspectratio,% + totalheight=\dimexpr\glueexpr\tud@footlogoheight@dim\relax\relax% + ]{#2}% + }% } % \end{macrocode} -% \end{macro}^^A \tud@footcontent@right -% \end{macro}^^A \tud@footcontent@left -% \end{macro}^^A \tud@footcontent@fontface -% \end{macro}^^A \tud@footcontent@fontsize -% \end{macro}^^A \tud@footcontent@usefont -% \end{macro}^^A \tud@footcontent@@do -% \end{macro}^^A \tud@footcontent@do -% \end{KOMAfont}^^A tudheadings -% \end{macro}^^A \footcontent -% -% \iffalse -%<*class&poster> -% \fi -% -% \begin{macro}{\tud@footcontent@@left} -% \changes{v2.05}{2015/07/06}{neu}^^A -% \changes{v2.05}{2016/04/17}{Überschrift optional}^^A -% \begin{macro}{\tud@footcontent@@right} -% \changes{v2.05}{2015/07/06}{neu}^^A -% \changes{v2.05}{2016/04/17}{Überschrift optional}^^A -% \begin{macro}{\tud@newline@poster} -% Mit diesen beiden Hilfsmakros werden die linke und die rechte Spalte des -% Standard-Seitenfußes eines Posters festgelegt. In der linken Spalte werden -% dabei Fakultät, Einrichtung, Institut und Lehrstuhl sowie der Professor -% ausgegeben, wobei die Angaben über das optionale Argument der entsprechenden -% Feldbefehle, die in den Klassen normalerweise nur für den Seitenkopf genutzt -% werden, variiert werden können. +% Hiermit werden die \DDC-Optionen \opt{ddc} bzw. \opt{ddcfoot} abgearbeitet. +% Dies geschieht, falls hierfür der Schalter \cs{if@tud@footlogo@option@set} +% gesetzt wurde, bei der Ausgabe des dazugehörigen Layers. % \begin{macrocode} -\newcommand*\tud@newline@poster{} -\newcommand*\tud@footcontent@@left[1]{% - \ifxblank{#1}{}{{\tud@head@font@@bold#1\newline}}% - Technische Universit\"at Dresden% - \tud@foot@line@write{faculty}% - \tud@foot@line@write{department}% - \tud@foot@line@write{institute}% - \tud@foot@line@write{chair}% - \tud@foot@line@write{professor}% +\newcommand*\tud@footlogo@option@set{% + \tud@footlogoheight@set% + \if@tud@footlogo@option@set% + \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{foot@option}{DDC-01}% + \or% \tud@ddc@foot@num=colorblack + \tud@footlogo@ddc@set{foot@option}{DDC-07}% + \or% \tud@ddc@foot@num=gray + \tud@footlogo@ddc@set{foot@option}{DDC-19}% + \or% \tud@ddc@foot@num=black + \tud@footlogo@ddc@set{foot@option}{DDC-22}% + \or% \tud@ddc@foot@num=blue + \tud@footlogo@ddc@set{foot@option}{DDC-25}% + \or% \tud@ddc@foot@num=white + \tud@footlogo@ddc@set{foot@option}{DDC-28}% + \fi% + \global\@tud@footlogo@option@setfalse% + \global\@tud@footlogo@cmd@settrue% + \fi% } % \end{macrocode} -% In der rechten Spalte werden der Autor oder die Autoren (\cs{author}) und -% die Kontaktperson(en) (\cs{contactperson}) ausgegeben. Zu jeder Person können -% individuelle Angaben bzgl. Büro, Telefonnummer und E"~Mail-Adresse gemacht -% werden. +% \end{macro}^^A \tud@footlogo@option@set +% \end{macro}^^A \tud@footlogo@ddc@set +% \begin{macro}{\tud@footlogo@ddc@use} +% \changes{v2.04}{2015/06/01}{neu}^^A +% \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@footcontent@@right[2]{% - \def\tud@newline@poster{% - \ifx\@authormore\@empty\else\newline\@authormore\fi% - \ifx\@course\@empty% - \ifx\@discipline\@empty\else\newline\@discipline\fi% - \else% - \newline\@course% - \ifx\@discipline\@empty\else% - \nobreakspace(\@discipline)% - \fi% - \fi% - \ifx\@office\@empty\else\newline\@office\fi% - \ifx\@telephone\@empty\else\newline\@telephone\fi% - \ifx\@telefax\@empty\else\newline\@telefax\fi% - \ifx\@emailaddress\@empty\else\newline\@emailaddress\fi% - }% +\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[footlogo]{#1}{% + \vss% + \hbox to #2{% + \hss% + \ifcase\@tempb\relax\or% \tud@ddc@foot@num=true + \tud@uselayerbox{foot@\tud@foot@logocolor}% + \else% + \tud@uselayerbox{foot@option}% + \fi% + }% + \vss\vss% + }{% + You should reduce `footlogoheight', because it is\noexpand\MessageBreak% + too high. % + \ifnum\tud@cdgeometry@num>\@ne% true/symmetric/twoside + Alternatively you could use\noexpand\MessageBreak% + option `extrabottommargin='\noexpand\MessageBreak% + in order to enlarge the bottom margin. % + \fi% + }% + }% % \end{macrocode} -% Wurde kein Autor angegeben, wird in diesem Fall die normalerweise erzeugte -% Warnung bei der Verwendung des Feldes \cs{@author} unterdrückt. +% Nach der Ausgabe wird ein begativer horizontaler Abstand in der Boxbreite +% eingefügt, damit nachfolgende Boxen überlagert werden können. % \begin{macrocode} - \ifpatchable{\@author}{\@latex@warning@no@line}{% - \let\@tempa\@empty% - }{% - \let\@tempa\@author% - }% - \ifx\@tempa\@empty\else% - \ifxblank{#1}{}{{\tud@head@font@@bold#1\newline}}% + \usebox\z@\hspace*{-\wd\z@}% + \fi% +} % \end{macrocode} -% Das Makro zum Aufteilen der Autorenangaben wird für die hier benötigte Form -% definiert. Die Ausgabe aller nicht \emph{lokal} angegebenen Felder wird -% unterdrückt, indem das Makro \cs{tud@multiple@fields@preset} im zweiten -% Argument mit einem \val{*} aufgerufen wird. +% \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 +% Für das Setzen von benutzerdefinierten Logos im Fußbereich wird diese Box +% verwendet. % \begin{macrocode} - \renewcommand*\tud@split@author@do[2]{% - \tud@multiple@fields@store{@author}{##1}% - \tud@multiple@fields@preset{@author}{*}{##1}% - \ignorespaces##1\tud@newline@poster% - \tud@multiple@fields@restore{@author}% - \tud@multiple@@@split{##2}{\newline}% - }% - \noindent\tud@multiple@split{@author}% - \tud@multiple@fields@restore{@author}% +\tud@newlayerbox{foot@cmd} % \end{macrocode} -% Wurde gültige Felder außerhalb von \cs{@author} global angegeben, so werden -% diese \emph{nach} allen Autoren ausgegeben. +% \end{macro}^^A \tud@layer@foot@cmd +% \begin{macro}{\footlogo} +% \changes{v2.03}{2015/01/27}{neu}^^A +% \begin{macro}{\tud@footlogo@filenames} +% \changes{v2.03}{2015/01/27}{neu}^^A +% \begin{macro}{\tud@footlogo@fileoptions} +% \changes{v2.03}{2015/01/27}{neu}^^A +% \begin{macro}{\footlogosep} +% \changes{v2.03}{2015/01/27}{neu}^^A +% \begin{macro}{\tud@footlogo@cmd@set} +% \changes{v2.04}{2015/06/01}{neu}^^A +% \begin{macro}{\tud@footlogo@cmd@@set} +% \changes{v2.03}{2015/01/27}{neu}^^A +% \changes{v2.03}{2015/02/02}{optionale Parameter für unterschiedliche Dateien +% individuell nutzbar}^^A +% \begin{macro}{\if@tud@footlogo@cmd@set} +% \changes{v2.04}{2015/06/01}{neu}^^A +% Mit dem Befehl \cs{footlogo} kann eine kommasparierte Liste für Logos im +% Fuß angegeben werden, die mit \cs{footlogosep} voneinander getrennt werden. % \begin{macrocode} - \tud@newline@poster% +\newcommand*\footlogosep{\hfill} +\newcommand*\tud@footlogo@filenames{} +\newcommand*\tud@footlogo@fileoptions{} +\newcommand*\footlogo[2][]{% + \tud@comp@clearpage% + \renewcommand*\tud@footlogo@filenames{#2}% + \renewcommand*\tud@footlogo@fileoptions{#1}% + \global\@tud@footlogo@cmd@settrue% + \tud@comp@resetpagestyle% +} % \end{macrocode} -% Werden Autor und Kontaktperson ausgegeben, ist eine Leerzeile einzufügen. +% Die mit \cs{footlogo} angegeben Logos und die dazugehörigen Einstellungen, +% welche entweder allgemein über das optionale Argument oder aber individuell +% durch \val{:} an den Dateinamen angehängt übergeben wurden, werden hier in +% der Box \cs{tud@layer@foot@cmd} gespeichert. % \begin{macrocode} - \ifx\@contactperson\@empty\else\newline\fi% - \fi% +\tud@newif\if@tud@footlogo@cmd@set +\newcommand*\tud@footlogo@cmd@set[2]{% + \if@tud@footlogo@cmd@set% + \tud@savelayerbox{foot@cmd}{% + \hbox to #2{% % \end{macrocode} -% Die Ausgabe der Kontaktperson(en) erfolgt analog zu der Autorenausgabe. +% Hier erfolgt die eigentliche Abarbeitung der mit \cs{footlogo} angegeben +% Liste der benutzerdefinierten Logos. In \cs{@tempa} wird nach dem ersten +% Durchlauf der Schleife der Inhalt von \cs{footlogosep} gespeichert und nach +% dem ersten Logo vor jedem weiteren eingefügt. Um versehentlich angegebene +% Leerzeichen zu entfernen, werden diese mit \cs{trim@spaces} entfernt. % \begin{macrocode} - \def\tud@newline@poster{% - \ifx\@office\@empty\else\newline\@office\fi% - \ifx\@telephone\@empty\else\newline\@telephone\fi% - \ifx\@telefax\@empty\else\newline\@telefax\fi% - \ifx\@emailaddress\@empty\else\newline\@emailaddress\fi% - }% - \ifx\@contactperson\@empty\else% - \ifxblank{#2}{}{{\tud@head@font@@bold#2\newline}}% - \renewcommand*\tud@split@contactperson@do[2]{% - \tud@multiple@fields@store{@contactperson}{##1}% - \tud@multiple@fields@preset{@contactperson}{*}{##1}% - \ignorespaces##1\tud@newline@poster% - \tud@multiple@fields@restore{@contactperson}% - \tud@multiple@@@split{##2}{\newline}% + \let\@tempa\relax% + \@for\@tempb:=\tud@footlogo@filenames\do{% + \protected@edef\@tempb{\@tempb}% + \trim@spaces@in{\@tempb}% + \@tempa% + \ifx\@tempb\@empty\else% + \expandafter\tud@footlogo@cmd@@set\expandafter{\@tempb}{#1}% + \fi% + \let\@tempa\footlogosep% + }% + \hss% + }% }% - \noindent\tud@multiple@split{@contactperson}% - \tud@multiple@fields@restore{@contactperson}% - \tud@newline@poster% + \global\@tud@footlogo@cmd@setfalse% \fi% +} % \end{macrocode} -% Zu guter letzt noch eine mögliche Homepage. +% Der Befehl \cs{tud@footlogo@cmd@set} wird genutzt, um die einzelnen Logos für +% den Fuß nacheinander in der Box \cs{tud@layer@foot@cmd} zu setzen. % \begin{macrocode} - \ifx\@webpage\@empty\else\newline\@webpage\fi% -} -\footcontent{% - \tud@footcontent@@left{\contactname}% -}[% - \tud@footcontent@@right{\authorname}{\contactpersonname}% -] +\newcommand*\tud@footlogo@cmd@@set[2]{% + \begingroup% % \end{macrocode} -% \end{macro}^^A \tud@newline@poster -% \end{macro}^^A \tud@footcontent@@right -% \end{macro}^^A \tud@footcontent@@left -% -% \iffalse -% -% \fi -% -% \begin{macro}{\tud@footcontent@use} -% \changes{v2.04}{2015/06/01}{neu}^^A -% Mit \cs{tud@footcontent@use} erfolgt die Ausgabe der mit \cs{footcontent} -% definierten Inhalte. Dabei wird darauf geachtet, ob ein \DDC-Logo im Fuß -% verwendet wird. Die Ausgabe erfolgt jedoch nur, falls tatsächlich etwas -% definiert wurde. Andernfalls wird lediglich eine leere Box der geforderten -% Breite ausgegeben. Dies ist notwendig, da nachgelagerte Funktionen diese Box -% fester Breite erwarten. +% Dabei soll es möglich sein, optionale Parameter an \cs{includegraphics} zu +% übergeben. Dies soll zum einen global für alle Dateien als auch individuell +% für einzelne Logos möglich sein. Zu diesem Zweck wird die Schnittstelle für +% den Anwender so gestaltet, dass individuelle Parameter mit einem Doppelpunkt +% direkt an den Dateinamen angehangen werden können. +% \ToDo{\cs{DeclareListParser} außerhalb global definieren}[v2.07] % \begin{macrocode} -\newcommand*\tud@footcontent@use[2]{% - \@tempswafalse% - \ifx\tud@footcontent@left\@empty\relax% - \def\@tempa{\@nil}% - \ifx\@tempa\tud@footcontent@right\relax\else% - \ifx\tud@footcontent@right\@empty\relax\else% - \@tempswatrue% - \fi% - \fi% - \else% + \let\@tempa\@empty% + \let\@tempb\@empty% \@tempswatrue% - \fi% - \if@tempswa% - \tud@ddc@check% - \ifcase\@tempb\relax% - \setlength\@tempdimc{\z@}% - \else% - \settowidth\@tempdimc{\tud@uselayerbox{foot@black}}% - \addtolength\@tempdimc{\columnsep}% - \fi% + \def\do##1{% + \if@tempswa% + \def\@tempa{##1}% + \@tempswafalse% + \else% + \l@addto@macro\@tempb{,##1}% + \fi% + }% + \let\@tempc\relax% + \DeclareListParser{\@tempc}{:}% + \@tempc{#1}% % \end{macrocode} -% Ä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. +% In jedem Fall werden die Grundeinstellungen als erstes ausgeführt. % \begin{macrocode} - \tud@vlayerbox{#1}{% - \linespread{1}% - \vss% - \hbox to #2{% - \tud@footcontent@usefont{% + \preto\tud@footlogo@fileoptions{% + keepaspectratio,% + totalheight=\dimexpr\glueexpr\tud@footlogoheight@dim\relax\relax,% + }% % \end{macrocode} -% Wurde das optionale Argument nach dem obligatorischen nicht genutzt, so wird -% der Inhalt über die komplette Breite des Textbereiches ausgegeben. +% Wurden tatsächlich inidviduelle Parameter übergeben, so werden diese als +% letztes ausgeführt, um vorige Einstellungen überschreiben zu können. % \begin{macrocode} - \def\@tempa{\@nil}% - \ifx\@tempa\tud@footcontent@right\relax% - \vtop{% - \hsize=\dimexpr#2-\@tempdimc\relax% - \strut\ignorespaces\tud@footcontent@left\strut% - }% + \eappto\tud@footlogo@fileoptions{\expandonce\@tempb}% + \protected@edef\@tempc{% + \noexpand\includegraphics[{% + \expandonce\tud@footlogo@fileoptions% + }]{\@tempa}% + }% % \end{macrocode} -% Im zweispaltigen modus werden zwei vertikale Boxen erzeugt, zwischen denen -% der Abstand \cs{columnsep} eingefügt wird. +% Die Logos werden~-- wie auch das \DDC-Logo im Fuß~-- individuell optisch +% vertikal zentriert. % \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% + \tud@vlayerbox{#2}{\vss\hbox{\@tempc}\vss\vss}{% + The given `\string\footlogo{\@tempa}' is too large.% + }% + \endgroup% +} % \end{macrocode} -% Sollte der Inhalt für den Fußbereich zu groß sein, wird eine Warnung erzeugt. +% \end{macro}^^A \if@tud@footlogo@cmd@set +% \end{macro}^^A \tud@footlogo@cmd@@set +% \end{macro}^^A \tud@footlogo@cmd@set +% \end{macro}^^A \footlogosep +% \end{macro}^^A \tud@footlogo@fileoptions +% \end{macro}^^A \tud@footlogo@filenames +% \end{macro}^^A \footlogo +% \begin{macro}{\tud@footlogo@cmd@use} +% \changes{v2.04}{2015/06/01}{neu}^^A +% Der Befehl \cs{tud@footlogo@cmd@use} wird genutzt, um die einzelnen Logos für +% den Fuß innerhalb der Ebene \val{tudheadings.foot.content} auszugeben. % \begin{macrocode} - }{% - The content for the footer (`\string\footcontent')\MessageBreak% - is too high. You should either reduce the content\MessageBreak% - or lower the fontsize via the optional argument.% - \ifnum\tud@cdgeometry@num>\@ne% true/symmetric/twoside - \MessageBreak% - Alternatively you can enlarge the bottom margin\MessageBreak% - by using option `extrabottommargin'.% - \fi% - }% - \else% - \hbox to #2{}% - \fi% +\newcommand*\tud@footlogo@cmd@use[2]{% + \tud@footlogo@option@set% + \tud@footlogo@cmd@set{#1}{#2}% + \setbox\z@\hbox{\tud@uselayerbox{foot@cmd}}% + \usebox\z@\hspace*{-\wd\z@}% } % \end{macrocode} -% \end{macro}^^A \tud@footcontent@use -% -% \iffalse -% -% \fi +% \end{macro}^^A \tud@footlogo@cmd@use % -% \subsection{Optionen für das \DDC-Logo} +% \subsubsection{Optionaler Inhalt im Fußbereich} % -% \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{macro}{\footcontent} +% \changes{v2.04}{2015/04/21}{neu}^^A +% \begin{KOMAfont}{tudheadings} +% \changes{v2.04}{2015/04/21}{neu}^^A +% \begin{macro}{\tud@footcontent@do} +% \changes{v2.04}{2015/04/21}{neu}^^A +% \begin{macro}{\tud@footcontent@@do} +% \changes{v2.04}{2015/04/21}{neu}^^A +% \changes{v2.05}{2016/04/17}{Stern im Argument erhält aktuellen Inhalt}^^A +% \begin{macro}{\tud@footcontent@font@use} +% \changes{v2.06}{2018/08/01}{neu}^^A +% \begin{macro}{\tud@footcontent@font@size} +% \changes{v2.06}{2018/08/01}{neu}^^A +% \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 +% \begin{macro}{\tud@footcontent@left} +% \changes{v2.04}{2015/06/01}{neu}^^A +% \begin{macro}{\tud@footcontent@right} +% \changes{v2.04}{2015/06/01}{neu}^^A +% Mit dem Befehl \cs{footcontent} kann der Inhalt für den Fußbereich der +% Seiten im Stil \pgs{tudheadings} festgelegt werden. Dieser wird mit passenden +% Schrifteinstellungen entweder einspaltig oder zweispaltig gesetzt. Die +% Sternversion des Befehls nimmt keinerlei Einstellungen für die Schrift vor. % \begin{macrocode} -%<*class&option> -\newif\if@tud@ddc@internal -\newcommand*\tud@comp@clearpage{}% -\newcommand*\tud@comp@resetpagestyle{}% -% -%<*class&body> -\tud@if@v@lower{2.04}{% - \renewcommand*\tud@comp@clearpage{% - \if@tud@ddc@internal\else% - \tud@if@tudheadings{\currentpagestyle}{\clearpage}{}% - \fi% +\newkomafont{tudheadings}{\tud@color{\tud@foot@fontcolor}} +% \end{macrocode} +% Dieser Befehl wird zur Formatierung der Schrift im Fußbereich definiert. +% \begin{macrocode} +\newcommand*\tud@footcontent@font@use[1]{% + \usekomafont{tudheadings}{% + \tud@footcontent@font@size% + \tud@footcontent@font@face% + \selectfont% + #1% }% - \renewcommand*\tud@comp@resetpagestyle{% - \if@tud@ddc@internal\else% - \tud@if@tudheadings{\currentpagestyle}{% - \expandafter\pagestyle\expandafter{\currentpagestyle}% - }{}% - \fi% +} +% \end{macrocode} +% Die mit \cs{footcontent} angegebenen Einstellungen und Inhalte werden in +% diesen Makros gesichert, weshalb diese vorher alloziert werden. Anschließend +% erfolgt die Definition des Befehls. +% \begin{macrocode} +\newcommand*\tud@footcontent@font@size{} +\newcommand*\tud@footcontent@font@face{} +\newcommand*\tud@footcontent@left{} +\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@font@size{}% + \tud@footcontent@do% + }{% + \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% }% -}{}% -% +} % \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}. +% Normalerweise wird der Inhalt vollständig über die verfügbare Seitenfußbreite +% gesetzt. Wird das optionale Argument \emph{nach} dem obligatorischen genutzt, +% so erfolgt die Ausgabe zweispaltig. Das optionale Argument kann für +% zusätzliche Formatierungsbefehle genutzt werden. % \begin{macrocode} -\newcommand*\tud@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}% +\newcommand*\tud@footcontent@do[2][]{% + \kernel@ifnextchar[%] + {\tud@footcontent@@do{#1}{#2}}% + {\tud@footcontent@@do{#1}{#2}[\@nil]}% } +\newcommand*\tud@footcontent@@do{} +\def\tud@footcontent@@do#1#2[#3]{% % \end{macrocode} -% \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}. +% Wurde im optionalen Argument für zusätzliche Schrifteinstellungen ein Stern +% verwendet, bleibt die bisherige Definition bestehen. % \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]{% + \if\detokenize{#1*}\relax\else% + \renewcommand*\tud@footcontent@font@face{#1}% + \fi% % \end{macrocode} -% Im Kompatibiltätsmodus wird ein Seitenumbruch erzwungen. Anschließend wird -% die Option abgearbeitet. +% Wurde in einem der Argumente für den linken und/oder rechten Inhalt ein Stern +% verwendet, bleibt die bisherige Definition bestehen. % \begin{macrocode} - \tud@comp@clearpage% - \TUD@set@numkey{ddc}{tud@ddc@auto@num}{\tud@ddc@switch}{#1}% - \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \if\detokenize{#2*}\relax\else% + \renewcommand*\tud@footcontent@left{#2}% + \fi% + \if\detokenize{#3*}\relax\else% + \renewcommand*\tud@footcontent@right{#3}% + \fi% +} % \end{macrocode} -% Wurde die Option \opt{ddc} intern durch \opt{ddchead} oder \opt{ddcfoot} -% aufgerufen, wird die automatische Auswahl des \DDC-Logos deaktiviert. +% \end{macro}^^A \tud@footcontent@right +% \end{macro}^^A \tud@footcontent@left +% \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 +% \end{macro}^^A \footcontent +% +% \iffalse +%<*class&poster> +% \fi +% +% \begin{macro}{\tud@footcontent@@left} +% \changes{v2.05}{2015/07/06}{neu}^^A +% \changes{v2.05}{2016/04/17}{Überschrift optional}^^A +% \begin{macro}{\tud@footcontent@@right} +% \changes{v2.05}{2015/07/06}{neu}^^A +% \changes{v2.05}{2016/04/17}{Überschrift optional}^^A +% \begin{macro}{\tud@newline@poster} +% Mit diesen beiden Hilfsmakros werden die linke und die rechte Spalte des +% Standard-Seitenfußes eines Posters festgelegt. In der linken Spalte werden +% dabei Fakultät, Einrichtung, Institut und Lehrstuhl sowie der Professor +% ausgegeben, wobei die Angaben über das optionale Argument der entsprechenden +% Feldbefehle, die in den Klassen normalerweise nur für den Seitenkopf genutzt +% werden, variiert werden können. % \begin{macrocode} - \if@tud@ddc@internal% - \@tud@ddc@autofalse% - \else% +\newcommand*\tud@newline@poster{} +\newcommand*\tud@footcontent@@left[1]{% + \tud@if@strblank{#1}{}{{\tud@head@font@@bold#1\newline}}% + Technische Universit\"at Dresden% + \tud@foot@line@write{faculty}% + \tud@foot@line@write{department}% + \tud@foot@line@write{institute}% + \tud@foot@line@write{chair}% + \tud@foot@line@write{professor}% +} % \end{macrocode} -% Andernfalls wird die automatische Auswahl aktiviert und die beiden Optionen -% \opt{ddchead} sowie \opt{ddcfoot} intern zurückgesetzt. +% In der rechten Spalte werden der Autor oder die Autoren (\cs{author}) und +% die Kontaktperson(en) (\cs{contactperson}) ausgegeben. Zu jeder Person können +% individuelle Angaben bzgl. Büro, Telefonnummer und E"~Mail-Adresse gemacht +% werden. % \begin{macrocode} - \@tud@ddc@autotrue% - \@tud@ddc@internaltrue% - \TUDoptions{ddchead=false}% - \TUDoptions{ddcfoot=false}% - \@tud@ddc@internalfalse% +\newcommand*\tud@footcontent@@right[2]{% + \def\tud@newline@poster{% + \ifx\@authormore\@empty\else\newline\@authormore\fi% + \ifx\@course\@empty% + \ifx\@discipline\@empty\else\newline\@discipline\fi% + \else% + \newline\@course% + \ifx\@discipline\@empty\else% + \nobreakspace(\@discipline)% + \fi% \fi% + \ifx\@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% + }% % \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}. +% Wurde kein Autor angegeben, wird in diesem Fall die normalerweise erzeugte +% Warnung bei der Verwendung des Feldes \cs{@author} unterdrückt. % \begin{macrocode} - \global\@tud@headlogo@option@settrue% - \global\@tud@footlogo@option@settrue% - \fi% + \tud@if@field@unset{\@author}{% + \let\@tempa\@empty% + }{% + \let\@tempa\@author% + }% + \ifx\@tempa\@empty\else% + \tud@if@strblank{#1}{}{{\tud@head@font@@bold#1\newline}}% % \end{macrocode} -% Abschließend wird im Kompatibilitätsmodus der aktuelle Seitenstil aufgerufen, -% um bei einem geänderten Fuß den notwendigen Satzspiegel zu laden. +% Das Makro zum Aufteilen der Autorenangaben wird für die hier benötigte Form +% definiert. Die Ausgabe aller nicht \emph{lokal} angegebenen Felder wird +% unterdrückt, indem das Makro \cs{tud@multiple@fields@preset} im zweiten +% Argument mit einem \val{*} aufgerufen wird. % \begin{macrocode} - \tud@comp@resetpagestyle% -} + \renewcommand*\tud@split@author@do[2]{% + \tud@multiple@fields@store{@author}{##1}% + \tud@multiple@fields@preset{@author}{*}{##1}% + \ignorespaces##1\tud@newline@poster% + \tud@multiple@fields@restore{@author}% + \tud@multiple@@@split{##2}{\newline}% + }% + \noindent\tud@multiple@split{@author}% + \tud@multiple@fields@restore{@author}% % \end{macrocode} -% \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}. +% Wurde gültige Felder außerhalb von \cs{@author} global angegeben, so werden +% diese \emph{nach} allen Autoren ausgegeben. % \begin{macrocode} -\newcommand*\tud@ddc@head@num{0} -\TUD@key{ddchead}[true]{% + \tud@newline@poster% % \end{macrocode} -% Der Seitenumbruch im Kompatibilitätsmodus. +% Werden Autor und Kontaktperson ausgegeben, ist eine Leerzeile einzufügen. % \begin{macrocode} - \tud@comp@clearpage% - \TUD@set@numkey{ddchead}{tud@ddc@head@num}{\tud@ddc@switch}{#1}% + \ifx\@contactperson\@empty\else\newline\fi% + \fi% % \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. +% Die Ausgabe der Kontaktperson(en) erfolgt analog zu der Autorenausgabe. % \begin{macrocode} - \ifx\FamilyKeyState\FamilyKeyStateProcessed% - \if@tud@ddc@internal\else% - \@tud@ddc@internaltrue% - \TUDoptions{ddcfoot=false}% - \TUDoptions{ddc=false}% - \@tud@ddc@internalfalse% - \fi% + \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\@contactperson\@empty\else% + \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}% + \ignorespaces##1\tud@newline@poster% + \tud@multiple@fields@restore{@contactperson}% + \tud@multiple@@@split{##2}{\newline}% + }% + \noindent\tud@multiple@split{@contactperson}% + \tud@multiple@fields@restore{@contactperson}% + \tud@newline@poster% \fi% % \end{macrocode} -% Das Setzen des Seitenstils im Kompatibilitätsmodus. +% Zu guter letzt noch eine mögliche Homepage. % \begin{macrocode} - \tud@comp@resetpagestyle% + \ifx\@webpage\@empty\else\newline\@webpage\fi% } +\footcontent{% + \tud@footcontent@@left{\contactname}% +}[% + \tud@footcontent@@right{\authorname}{\contactpersonname}% +] % \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. +% \end{macro}^^A \tud@newline@poster +% \end{macro}^^A \tud@footcontent@@right +% \end{macro}^^A \tud@footcontent@@left +% +% \iffalse +% +% \fi +% +% \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 +% definiert wurde. Andernfalls wird lediglich eine leere Box der geforderten +% Breite ausgegeben. Dies ist notwendig, da nachgelagerte Funktionen diese Box +% fester Breite erwarten. % \begin{macrocode} - \ifx\FamilyKeyState\FamilyKeyStateProcessed% - \if@tud@ddc@internal\else% - \@tud@ddc@internaltrue% - \TUDoptions{ddchead=false}% - \TUDoptions{ddc=false}% - \@tud@ddc@internalfalse% +\newcommand*\tud@layer@footcontent@wrn{} +\newcommand*\tud@footcontent@use[2]{% + \@tempswafalse% + \ifx\tud@footcontent@left\@empty% + \ifx\tud@footcontent@right\@nnil\else% + \ifx\tud@footcontent@right\@empty\else% + \@tempswatrue% + \fi% \fi% + \else% + \@tempswatrue% \fi% + \if@tempswa% + \tud@ddc@check% + \ifcase\@tempb\relax% + \tud@setdim\@tempdimc{\z@}% + \else% + \settowidth\@tempdimc{\tud@uselayerbox{foot@black}}% + \tud@addtodim\@tempdimc{\columnsep}% + \fi% % \end{macrocode} -% Das Setzen des Seitenstils im Kompatibilitätsmodus. +% Ä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@comp@resetpagestyle% -} + \tud@vlayerbox[footcontent]{#1}{% + \linespread{1}% + \vss% + \hbox to #2{% + \tud@footcontent@font@use{% + \tud@setglue\tud@res@glue{#2}% + \tud@footcontent@@use{\tud@res@glue}% + \hss% + }% + }% + \vss\vss% % \end{macrocode} -% \end{macro}^^A \tud@ddc@foot@num -% \end{option}^^A ddcfoot -% \end{option}^^A ddchead -% \end{option}^^A ddc -% -% \iffalse -% -%<*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. +% Sollte der Inhalt für den Fußbereich zu groß sein, wird eine Warnung erzeugt. % \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% + 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 + \noexpand\MessageBreak% + Alternatively you can enlarge the bottom margin\noexpand\MessageBreak% + by using option `extrabottommargin'.% + \fi% }% + \else% + \hbox to #2{}% \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. +% Wurde das optionale Argument nach dem obligatorischen nicht genutzt, so wird +% der Inhalt über die komplette Breite des Textbereiches ausgegeben. % \begin{macrocode} - \tud@if@v@lower{2.03}{% - \ifnum\@tempb=\z@\relax% - \ifdefvoid{\tud@footlogo@filenames}{}{\let\@tempb\m@ne}% - \fi% - }{}% +\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} +% Im zweispaltigen modus werden zwei vertikale Boxen erzeugt, zwischen denen +% der Abstand \cs{columnsep} eingefügt wird. +% \begin{macrocode} + \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} -% \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 @@ % \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 @@ % % \fi % -% \Finale +% \PrintBackMatter % \endinput diff --git a/macros/latex/contrib/tudscr/source/tudscr-supervisor.dtx b/macros/latex/contrib/tudscr/source/tudscr-supervisor.dtx index db5b85bd59..af2aa82be2 100644 --- a/macros/latex/contrib/tudscr/source/tudscr-supervisor.dtx +++ b/macros/latex/contrib/tudscr/source/tudscr-supervisor.dtx @@ -1,10 +1,10 @@ -% \CheckSum{600} % \iffalse meta-comment +%/GitFileInfo=tudscr-supervisor.dtx % % TUD-Script -- Corporate Design of Technische Universität Dresden % ---------------------------------------------------------------------------- % -% Copyright (C) Falk Hanisch , 2012-2021 +% Copyright (C) Falk Hanisch , 2012-2022 % % ---------------------------------------------------------------------------- % @@ -23,44 +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-supervisor.dtx -%<*dtx> -% \fi -% -\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi -\ProvidesFile{tudscr-supervisor.dtx}[2019/08/20 v2.06c TUD-Script\space% -% -% \iffalse -% -%\ProvidesPackage{tudscrsupervisor}[% -%<*package> -%!TUD@Version -% -% package -%<*dtx|package> -% \fi - (commands for supervisors)% -] -% \iffalse -% +% \iffalse ins:batch + dtx:driver +%<*ins> +\ifx\documentclass\undefined + \input docstrip.tex + \ifToplevel{\batchinput{tudscr.ins}} +\else + \let\endbatchfile\relax +\fi +\endbatchfile +% %<*dtx> +\ProvidesFile{tudscr-supervisor.dtx}[2022/08/09] +\RequirePackage{tudscr-gitinfo} \documentclass[english,ngerman,xindy]{tudscrdoc} \iftutex \usepackage{fontspec} @@ -70,18 +45,11 @@ \fi \usepackage{babel} \usepackage{tudscrfonts} -\KOMAoptions{parskip=half-} -\usepackage{bookmark} \usepackage[babel]{microtype} -\CodelineIndex -\RecordChanges -\GetFileInfo{tudscr-supervisor.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} @@ -91,18 +59,28 @@ % % \selectlanguage{ngerman} % -% \section{% -% Das Paket \pkg{tudscrsupervisor} -- Betreuung wissenschaftlicher Arbeiten% +% +% +% \section{^^A +% Das Paket \pkg{tudscrsupervisor} -- Betreuung wissenschaftlicher Arbeiten^^A % } % % Diese Paket stellt für die \TUDScript-Klassen mehrere Umgebungen und Befehle % zur Erstellung der Aufgabenstellung einer Abschlussarbeit sowie eines % Gutachtens und eines Aushangs bereit. % -% \StopEventually{\PrintIndex\PrintChanges\PrintToDos} +% \begin{macrocode} +%<*package&identify> +\ProvidesPackage{tudscrsupervisor}[% +%!TUD@Version + package (commands for supervisors)% +] +\TUD@Class@Check{tudscrsupervisor} +% +% \end{macrocode} % % \iffalse -%<*package> +%<*package&body> % \fi % % \begin{macro}{\tud@multiple@fields@output} @@ -112,6 +90,9 @@ % Diesen beiden Makros dienen dazu, unterschiedliche Varianten für die Ausgabe % innerhalb der nachfolgenden Umgebungen generieren zu können. Momentan werden % diese nur innerhalb der \env{task}-Umgebung verwendet. +% \ToDo{ +% Definition von \cs{tud@multiple@fields@style} mit \cs{FamilyNumericalKey} +% }[v2.07] % \begin{macrocode} \newcommand*\tud@multiple@fields@output{} \newcommand*\tud@multiple@fields@style{table} @@ -126,12 +107,12 @@ % \end{macro}^^A \student % \begin{macro}{\tud@authortable@set} % \changes{v2.01b}{2014/06/04}{Probleme mit Paket \pkg{calc} behoben}^^A -% \begin{length}{\tud@len@authortable} +% \begin{length}{\tud@dim@authortable} % Der Befehl \cs{tud@authortable@set} dient bei Aufgabenstellung und Gutachten % zur Ausgabe einer Tabelle mit Informationen zum Autor beziehungsweise zu den % Autoren.\footnote{Matrikelnummer, Jahrgang, Studiengang etc.} % \begin{macrocode} -\newlength\tud@len@authortable +\tud@newdim\tud@dim@authortable \newcommand*\tud@authortable@set{% \begingroup% \let\thanks\@gobble% @@ -148,19 +129,17 @@ % \begin{macrocode} \tud@multiple@split{@author}% \tud@multiple@fields@preset{@author}{\null}{}% - \setlength\tud@len@authortable{2em}% + \tud@setdim\tud@dim@authortable{2em}% % \end{macrocode} % Anschließend werden die Bezeichner sowohl der obligatorischen als auch der % genutzten, optionalen Felder in \cs{@tempa} gespeichert. Mit der Liste wird -% der längste Bezeichner bestimmt und dessen Länge in \cs{tud@len@authortable} +% der längste Bezeichner bestimmt und dessen Länge in \cs{tud@dim@authortable} % gespeichert. % \begin{macrocode} \def\@tempb##1{% - \expandafter\ifx\csname @##1\endcsname\@empty\else% - \expandafter\appto\expandafter\@tempa\expandafter{% - \expandafter,\csname ##1name\endcsname% - }% - \fi% + \tud@if@strempty{\csname @##1\endcsname}{}{% + \eappto\@tempa{,\expandafter\noexpand\csname ##1name\endcsname}% + }% }% \def\@tempa{% \namesname,\titlename,\issuedatetext,\duedatetext,\supervisorname% @@ -174,11 +153,11 @@ \@tempb{discipline}% \@for\@tempb:=\@tempa\do{% \settowidth\@tempdima{\@tempb\tud@title@delimiter}% - \ifdim\@tempdima>\tud@len@authortable\relax% - \setlength\tud@len@authortable{\@tempdima}% + \ifdim\@tempdima>\tud@dim@authortable\relax% + \tud@setdim\tud@dim@authortable{\@tempdima}% \fi% }% - \global\tud@len@authortable=\tud@len@authortable% + \global\tud@dim@authortable=\tud@dim@authortable% % \end{macrocode} % Die Tabelle mit den benötigten Bezeichnern. Damit diese bis an den Seiterand % ohne Warnungen gesetzt werden können, wird die Auszeichnung von Absatzenden @@ -186,7 +165,7 @@ % \begin{macrocode} \begingroup% \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative% - \begin{tabular}{@{}p{\tud@len@authortable}}% + \begin{tabular}{@{}p{\tud@dim@authortable}}% \ifx\@course\@empty\else% \coursename\tud@title@delimiter\tabularnewline% \fi% @@ -203,9 +182,9 @@ \end{tabular}% % \end{macrocode} % Der Befehl \cs{tud@split@author@do} wird innerhalb der \TUDScript-Klassen zur -% formatierten Ausgabe mehrerer Autoren auf der Titelseite verwendet, welche -% durch \cs{author}\marg{Autor(en)} angegeben und mit \cs{and} getrennt wurden. -% Er wird hier auf die Ausgabe der Autoren mit den jeweils zusätzlich gegebenen +% formatierten Ausgabe mehrerer Autoren auf der Titelseite genutzt, welche mit +% \cs{author}\marg{Autor(en)} angegeben und mit \cs{and} getrennt wurden. Er +% wird hier auf die Ausgabe der Autoren mit den jeweils zusätzlich gegebenen % Informationen in einer Tabelle angepasst. % \begin{macrocode} \renewcommand*\tud@split@author@do[2]{% @@ -252,8 +231,8 @@ % Danach wird der Inhalt der Aufgabenstellung gesetzt. % \begin{macrocode} \vskip\smallskipamount% - \begin{tabular}{@{}p{\tud@len@authortable}% - p{\dimexpr\textwidth-\tud@len@authortable-2\tabcolsep\relax}@{}}% + \begin{tabular}{@{}p{\tud@dim@authortable}% + p{\dimexpr\textwidth-\tabcolsep*2-\tud@dim@authortable\relax}@{}}% \titlename\tud@title@delimiter & \tud@RaggedRight\textsf{\textbf{\@@title}}% \end{tabular}% \par% @@ -263,8 +242,14 @@ \noindent\ignorespaces% } % \end{macrocode} -% \end{length}^^A \tud@len@authortable +% \end{length}^^A \tud@dim@authortable % \end{macro}^^A \tud@authortable@set +% \begin{field}{\@headline} +% Hier wird der Inhalt des Parametes \prm{headline} hinein geschrieben. +% \begin{macrocode} +\newcommand*\@headline{} +% \end{macrocode} +% \end{field}^^A \@headline % % \subsection{Aufgabenstellung} % @@ -284,17 +269,18 @@ % \end{macrocode} % Die \env{tudpage}-Umgebung wird geöffnet. Mit dem Parameter \opt{headline} % kann die standardmäßige Überschrift überschrieben werden. +% \ToDo{style=table/inline mit \cs{FamilyNumericalKey}}[v2.07] % \begin{macrocode} \cleardoubleoddpage% \let\@headline\@empty% \TUD@parameter@family{tudpage}{% - \TUD@parameter@def{headline}{\def\@headline{##1}}% + \TUD@parameter@def{headline}{\tud@trim@field\@headline{##1}}% \TUD@parameter@let{heading}{headline}% \TUD@parameter@let{line}{headline}% \TUD@parameter@def{style}{\def\tud@multiple@fields@style{##1}}% \TUD@parameter@handler@default{headline}% }% - \tudpage[pagestyle=empty,#1]% + \tudpage[{pagestyle=empty,#1}]% % \end{macrocode} % Zu Beginn wird als erstes die Überschrift und~-- die entsprechende Option % vorausgesetzt~-- im PDF einen Lesezeichen- oder auch Outline-Eintrag gesetzt. @@ -317,10 +303,10 @@ % oberen Teil. % \begin{macrocode} \def\tud@multiple@fields@output##1{% - \ifstr{\tud@multiple@fields@style}{table}{% + \tud@if@strequal{\tud@multiple@fields@style}{table}{% \def\and{% \tabularnewline% - \ifstr{\csuse{##1othername}}{}{}{% + \tud@if@strempty{\csuse{##1othername}}{}{% \csuse{##1othername}\tud@title@delimiter% }% & \def\and{\tabularnewline &}% @@ -334,13 +320,13 @@ \ifdim\parskip>\z@\vskip\parskip\else\vskip\topsep\fi\medskip% \begingroup% \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative% - \begin{tabular}{@{}p{\tud@len@authortable}l@{}}% + \begin{tabular}{@{}p{\tud@dim@authortable}l@{}}% \ifx\@referee\@empty\else% \refereename\tud@title@delimiter & % - \tud@multiple@fields@output{referee}\tabularnewline[\smallskipamount]% + \tud@multiple@fields@output{referee}\tabularnewline[1\smallskipamount]% \fi% \supervisorname\tud@title@delimiter & % - \tud@multiple@fields@output{supervisor}\tabularnewline[\smallskipamount]% + \tud@multiple@fields@output{supervisor}\tabularnewline[1\smallskipamount]% \issuedatetext\tud@title@delimiter & \@issuedate\tabularnewline% \duedatetext\tud@title@delimiter & \@duedate\tabularnewline% \end{tabular}% @@ -350,7 +336,7 @@ % in einer Tabelle ausgegeben. Die \env{tudpage}-Umgebung wird beendet, und % eine neue (rechte) Seite geöffnet. % \begin{macrocode} - \vskip\tud@len@signatureskip\noindent% + \vskip\tud@glue@signaturevskip\noindent% \ifx\@chairman\@empty\else% \begin{tabular}{@{}l@{}}% \@chairman\tabularnewline% @@ -379,9 +365,10 @@ % Dies soll die Standardform einer Aufgabenstellung sein. Im ersten Argument % werden kurz die Ziele motiviert und erläutert, im zweiten Argument werden im % besten Fall die Schwerpunkte in einer \env{itemize}-Umgebung aufgeschlüsselt. +% \ToDo{optionales Argument zum Schluss für nachfolgenden Text}[v2.07] % \begin{macrocode} \newcommand\taskform[3][]{% - \begin{task}[#1]% + \begin{task}[{#1}]% \ifblank{#2}{}{\minisec{\objectivesname}\smallskip#2}% \ifblank{#3}{}{% \minisec{\focusname}\smallskip% @@ -417,13 +404,13 @@ \cleardoubleoddpage% \let\@headline\@empty% \TUD@parameter@family{tudpage}{% - \TUD@parameter@def{headline}{\def\@headline{##1}}% + \TUD@parameter@def{headline}{\tud@trim@field\@headline{##1}}% \TUD@parameter@let{heading}{headline}% \TUD@parameter@let{line}{headline}% \TUD@parameter@def{grade}{\def\@grade{##1}}% \TUD@parameter@handler@default{headline}% }% - \tudpage[pagestyle=empty,#1]% + \tudpage[{pagestyle=empty,#1}]% \tudbookmark{\evaluationname}{evaluation}% \subsection*{% \ifx\@headline\@empty% @@ -440,17 +427,17 @@ % \begin{macrocode} \removelastskip% \ifdim\parskip>\z@\vskip\parskip\else\vskip\topsep\fi% - \setlength\@tempskipa{\smallskipamount}% + \tud@setglue\@tempskipa{\smallskipamount}% \ifx\@grade\@empty\else% \vskip\@tempskipa\noindent% \gradetext% - \setlength\@tempskipa{\bigskipamount}% + \tud@setglue\@tempskipa{\bigskipamount}% \fi% \ifx\@date\@empty\else% \vskip\@tempskipa\noindent% \ifx\@place\@empty\else\@place,\nobreakspace\fi\@date% \fi% - \vskip\tud@len@signatureskip\noindent% + \vskip\tud@glue@signaturevskip\noindent% % \end{macrocode} % Der Befehl \cs{and} wird für einen möglichen Zweitgutachter angepasst. Das % Hilfsmakro \cs{@tempa} dient zur Übernahme des richtigen Bezeichners für @@ -489,7 +476,7 @@ % erfolgt die Bewertung, das letzte Argument beinhaltet die Note. % \begin{macrocode} \newcommand\evaluationform[5][]{% - \begin{evaluation}[#1]% + \begin{evaluation}[{#1}]% \ifblank{#2}{}{\minisec{\taskname}\smallskip#2}% \ifblank{#3}{}{\minisec{\contentname}\smallskip#3}% \ifblank{#4}{}{\minisec{\assessmentname}\smallskip#4}% @@ -515,7 +502,7 @@ \cleardoubleoddpage% \def\@headline{\noticename}% \TUD@parameter@family{tudpage}{% - \TUD@parameter@def{headline}{\def\@headline{##1}}% + \TUD@parameter@def{headline}{\tud@trim@field\@headline{##1}}% \TUD@parameter@let{heading}{headline}% \TUD@parameter@let{line}{headline}% \TUD@parameter@handler@default{headline}% @@ -524,7 +511,7 @@ % Es wird zu Beginn das angegebene Datum oben auf der rechten Seite ausgegeben. % Anschließend wird die Überschrift und der gegebene Titel gesetzt. % \begin{macrocode} - \tudpage[pagestyle=empty,cdhead=date,#1]% + \tudpage[{pagestyle=empty,cdhead=date,#1}]% \tudbookmark{\noticename}{notice}% \ifx\@headline\@empty\else% \section*{\@headline}% @@ -544,10 +531,10 @@ \tud@multiple@fields@preset{@contactperson}{}{##1}% \begin{tabular}[t]{@{}l@{}}% \ignorespaces##1\tabularnewline% + \ifx\@emailaddress\@empty\else\@emailaddress\tabularnewline\fi% \ifx\@office\@empty\else\@office\tabularnewline\fi% \ifx\@telephone\@empty\else\@telephone\tabularnewline\fi% \ifx\@telefax\@empty\else\@telefax\tabularnewline\fi% - \ifx\@emailaddress\@empty\else\@emailaddress\tabularnewline\fi% \end{tabular}% \tud@multiple@fields@restore{@contactperson}% \tud@multiple@@@split{##2}{\hfill}% @@ -569,7 +556,7 @@ % werden die Arbeitsschwerpunkte beschrieben. % \begin{macrocode} \newcommand\noticeform[3][]{% - \begin{notice}[#1]% + \begin{notice}[{#1}]% \ifblank{#2}{}{% \ifx\@@title\@empty\else% \minisec{\expandonce{\@@title}}\medskip% @@ -588,9 +575,9 @@ % \end{macro}^^A \noticeform % % \iffalse -% +% % \fi % -% \Finale +% \PrintBackMatter % \endinput diff --git a/macros/latex/contrib/tudscr/source/tudscr-texindy.dtx b/macros/latex/contrib/tudscr/source/tudscr-texindy.dtx index 49983ccdde..9bf007a540 100644 --- a/macros/latex/contrib/tudscr/source/tudscr-texindy.dtx +++ b/macros/latex/contrib/tudscr/source/tudscr-texindy.dtx @@ -1,10 +1,10 @@ -% \CheckSum{491} % \iffalse meta-comment +%/GitFileInfo=tudscr-texindy.dtx % % TUD-Script -- Corporate Design of Technische Universität Dresden % ---------------------------------------------------------------------------- % -% Copyright (C) Falk Hanisch , 2012-2021 +% Copyright (C) Falk Hanisch , 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-texindy.dtx +% \iffalse ins:batch + dtx:driver +%<*ins> +\ifx\documentclass\undefined + \input docstrip.tex + \ifToplevel{\batchinput{tudscr.ins}} +\else + \let\endbatchfile\relax +\fi +\endbatchfile +% %<*dtx> -% \fi -% -\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi -\ProvidesFile{tudscr-texindy.dtx}[2019/06/28 v2.06 TUD-Script\space% - (texindy style files)% -] -% -% \iffalse +\ProvidesFile{tudscr-texindy.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-texindy.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} @@ -80,14 +59,14 @@ % % \selectlanguage{ngerman} % -% \section{Stildateien für \texorpdfstring{\app{texindy}}{texindy}} +% +% +% \section{Stildateien für \app{texindy}} % % Für die Dokumentationsklassen und -pakete wird zur Sortierung \app{texindy} % verwendet. Da das Programm die die Dateien nicht in einem |TEXPATH| nach den % Stildateien sucht, werden diese zur Laufzeit im Arbeitsverzeichnis erstellt. -% Nachfolgend werden die zu erstellenden \app{texindy}-Stildateien beschrieben. -% -% \StopEventually{\PrintIndex\PrintChanges\PrintToDos} +% Nachfolgend werden die erstellten \app{texindy}-Stildateien beschrieben. % % \begin{macro}{\@hashchar} % \changes{v2.05}{2016/04/25}{neu}^^A @@ -95,67 +74,63 @@ % Stildatei benötigt. Damit dieses beim Erzeugen der Datei nicht als solches % interpretiert wird, ist dafür ein separates Makro notwendig. % \begin{macrocode} -%<*doc> -\catcode`\#=12 +\edef\tud@res@a{\catcode`\noexpand\#=\the\catcode`\#\relax}% +\@makeother\# \newcommand*\@hashchar{#} -\catcode`\#=6 -% +\tud@res@a % \end{macrocode} % \end{macro}^^A \@hashchar -% -% \subsection{Defintion der verwendeten Umgebung} -% % \begin{macro}{\tud@xdy@create} % \changes{v2.05}{2016/04/24}{neu}^^A -% \begin{macro}{\tud@write@xdy} +% \begin{macro}{\tud@xdy@@create} +% \begin{macro}{\tud@xdy@write} % \changes{v2.05}{2016/04/24}{neu}^^A -% \begin{macro}{\if@tud@xdy@glo} -% \changes{v2.05}{2016/04/25}{neu}^^A % Dies sind die Hilfsmakros für die Erzeugung der nötigen Dateien. Mit dem % \cs{tud@xdy@create} wird angegeben, ob die Stildatei für einen Index oder ein % Glossar erzeugt wird, was prinzipiell nur für die Klasse \cls{tudscrdoc} -% notwendig ist. +% notwendig ist. % \begin{macrocode} -\begingroup -%\ifdef{\tudxdyflag}{% -\newcommand*\tud@write@xdy{} -\newwrite\tud@write@xdy -\newif\if@tud@xdy@glo -\newcommand*\tud@xdy@create[2][theindex]{% - \IfFileExists{\@currname-#2.xdy}{}{% - \ifstr{#1}{theglossary}{\@tud@xdy@glotrue}{\@tud@xdy@glofalse}% - \openout\tud@write@xdy=\@currname-#2.xdy\relax% +%\ifdefined\tudxdyflag +%\tud@newwrite\tud@xdy@write +\NewDocumentCommand\tud@xdy@create{s}{% + \begingroup% + \edef\tud@res@a{\@currname-\IfBooleanTF{#1}{gls}{ind}.xdy}% + \expandafter\IfFileExists\expandafter{\tud@res@a}{}{% + \IfBooleanTF{#1}{\@tud@res@swatrue}{\@tud@res@swafalse}% + \edef\tud@res@b{the\if@tud@res@swa glossary\else index\fi}% + \edef\tud@res@a{\noexpand\tud@xdy@@create{\tud@res@b}{\tud@res@a}}% + \tud@res@a% + }% + \endgroup% +} +\newcommand*\tud@xdy@@create[2]{% + \immediate\openout\tud@xdy@write=#2\relax% % \end{macrocode} -% Als erstes wird Standard-\LaTeXe-Modul geladen. +% Als erstes wird das \LaTeX-Standardmodul geladen. % \begin{macrocode} - \write\tud@write@xdy{(require "texindy.xdy")}% + \immediate\write\tud@xdy@write{(require "texindy.xdy")}% % \end{macrocode} % -% \subsection{Befehle zur Gruppierung der Indexeinträge} -% +% Für die Klasse \cls{tudscrdoc} werden in den Stildateien die verwendeten +% Umgebung definiert, welche für die prozessierten Indexdateien zu nutzen sind. % \begin{macrocode} -%<*doc> - \write\tud@write@xdy{% + \immediate\write\tud@xdy@write{% (markup-index^^J% - \space\space:open^^J% + \@spaces:open^^J% "\string\begin{#1}^^J% - \space\space% - \string\providecommand*\string\lettergroupDefault[1]{\@percentchar^^J% - \@spaces\string\par% - \string\centerline{\string\textbf{\string\textsf{Symbole}}}% - \string\par\@percentchar^^J% - \@spaces\string\nopagebreak\@percentchar^^J% - \space\space}\@percentchar^^J% - \space\space% - \string\providecommand*\string\lettergroup[1]{\@percentchar^^J% - \@spaces\string\par% - \string\centerline{\string\textbf{\string\textsf{\@hashchar1}}}% - \string\par\@percentchar^^J% - \@spaces\string\nopagebreak\@percentchar^^J% - \space\space}\@percentchar^^J% +%<*doc> \space\space\string\makeatletter\@percentchar^^J% - \space\space\string\scan@allowedfalse\@percentchar% - }% + \space\space\string\providecommand*\string\lettergroupDefault[1]% + {\string\lettergroup{\string\tud@symbols@name}}\@percentchar^^J% + \space\space\string\providecommand*\string\lettergroup[1]{\@percentchar^^J% + \@spaces\string\belowpdfbookmark% + {\@hashchar1}{#1/\@hashchar1}\@percentchar^^J% + \@spaces\string\par\string\centerline% + {\string\normalsize\string\textbf{\string\textsf{\@hashchar1}}}% + \@percentchar^^J% + \@spaces\string\par\string\smallskip\string\nopagebreak\@percentchar^^J% + \space\space}\@percentchar^^J% + \space\space\string\scan@allowedfalse\@percentchar^^J% % \end{macrocode} % Für die Änderungsliste erfolgt die Gruppierung anhand der Versionsnummer. Da % diese auf der ersten Ebene angegeben ist (\cs{item}) muss das Ganze mit einem @@ -163,114 +138,94 @@ % Außerdem werden mit \cs{tud@lst@def} die benötigten Befehle zur selektiven % Anzeige der Änderungseinträge erstellt. % \begin{macrocode} - \if@tud@xdy@glo% - \write\tud@write@xdy{% +\if@tud@res@swa \space\space\string\newcommand*\string\@lettergroup{}\@percentchar^^J% - \space\space% - \string\def\string\@lettergroup\@hashchar1\string\relax% - {\string\lettergroup{\@hashchar1}}\@percentchar^^J% - \space\space\string\tud@lst@def\@percentchar% - }% - \fi% + \space\space\string\def\string\@lettergroup\@hashchar1\string\relax% + {\string\lettergroup{\@hashchar1}}\@percentchar^^J% + \space\space\string\tud@lst@def\@percentchar^^J% +\fi +% + \space\space\string\providecommand*\string\seesep{/}\@percentchar^^J% % \end{macrocode} % Der Abschluss der Umgebungsdefinition. % \begin{macrocode} - \if@tud@xdy@glo% - \write\tud@write@xdy{% - "^^J% - \space\space:close "\string~n\string~n\string\end{#1}\string~n"^^J% - \space\space:hierdepth 4^^J% - )% - }% - \else% - \write\tud@write@xdy{% - "^^J% - \space\space:close "\string~n\string~n\string\end{#1}\string~n"^^J% - \space\space:hierdepth 3^^J% - )% - }% - \fi% + "^^J% Ende des Umgebungsbeginns + \@spaces:close "\string~n\string~n\string\end{#1}\string~n"^^J% + \@spaces:hierdepth 3^^J% + )^^J% +% \end{macrocode} +% Für die Sortierung des Indexes sollen einzelne Zeichen beachtet werden. +% Hierfür wird |xy-ignore-special| durch |xy-resolve-special| ersetzt. +% \begin{macrocode} +%<*doc> + (define-sort-rule-orientations (forward backward forward forward))^^J% + (use-rule-set :run 0^^J% + \@spaces:rule-set ("xy-alphabetize" "xy-resolve-special")^^J% + )^^J% + (use-rule-set :run 1^^J% + \@spaces:rule-set ("xy-resolve-diacritics" "xy-resolve-special")^^J% + )^^J% + (use-rule-set :run 2^^J% + \@spaces:rule-set ("xy-resolve-case" "xy-resolve-special")^^J% + )^^J% +% \end{macrocode} +% Die Seitenzahlenbereiche für die Quelltextdokumentation bestehen aus drei +% Teilen, um das Verlinken auf Codezeilen zu ermöglichen~-- +% \meta{Target}|:|\meta{Dateischlüssel}|-|\meta{Codezeile}|:|\meta{Seitenzahl} +% \begin{macrocode} + (define-alphabet "AlphaExtended"^^J% + \@spaces(^^J% + \@spaces\@spaces"A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M"^^J% + \@spaces\@spaces"N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"^^J% + \@spaces\@spaces"a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m"^^J% + \@spaces\@spaces"n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"^^J% + \@spaces\@spaces"?"^^J% + \@spaces)^^J% + )^^J% + (define-location-class "hypdoc"^^J% + \@spaces(^^J% + \@spaces\@spaces"arabic-numbers" :sep ":"^^J% + \@spaces\@spaces"AlphaExtended" \space:sep "-" "arabic-numbers" :sep ":"^^J% + \@spaces\@spaces"arabic-numbers"^^J% + \@spaces)^^J% + \@spaces:min-range-length 2^^J% + )^^J% % % \end{macrocode} -% -% \subsection{Defintion und Markup der Seitenzahlen} -% % Leider lässt sich für Seitenzahlbereiche via |:attr| (noch) kein Markup für % angehängte \enquote*{f.} sowie \enquote*{ff.} einstellen. Diese würden deshalb % bei kursiven oder fetten Seitenzahlen trotzdem in normaler Schrift erscheinen, % weshalb auf die Auszeichnung folgender Seiten verzichtet wird. % \begin{macrocode} -%^^A \write\tud@write@xdy{(require "ff-ranges.xdy")}% +%^^A (require "ff-ranges.xdy")^^J% % \end{macrocode} % Bereiche mit mehr als zwei Seitenzahlen werden zusammengefasst, wobei als -% Trennzeichen ein Halbgeviertstrich verwendet wird. Für \cls{tudscrdoc} werden -% die Seitenzahlen beim Einbinden der einzelnen \file{.dtx}-Dateien mit einem -% alphanumerischen Präfix versehen, wofür eine eigene |location-class| erstellt -% wird. +% Trennzeichen ein Halbgeviertstrich verwendet wird. % \begin{macrocode} - \write\tud@write@xdy{% - (define-location-class^^J% - \space\space"arabic-page-numbers" ("arabic-numbers")% - \space:min-range-length 1^^J% + (define-location-class "arabic-page-numbers"^^J% + \@spaces("arabic-numbers")^^J% + \@spaces:min-range-length 2^^J% )^^J% %<*doc> - (define-alphabet "AlphaExtended"^^J% - \space(^^J% - \space\space"A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M"^^J% - \space\space"N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"^^J% - \space\space"a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m"^^J% - \space\space"n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"^^J% - \space\space"?"^^J% - \space)^^J% - )^^J% - (define-location-class^^J% - \space\space"codeline" ("AlphaExtended" :sep "-" "arabic-numbers")% - \space:min-range-length 2^^J% - )^^J% - (define-location-class-order ("arabic-page-numbers" "codeline"))^^J% + (define-location-class-order ("hypdoc" "arabic-page-numbers"))^^J% % - (markup-range :sep "--")% - }% + (markup-range :sep "--")^^J% % \end{macrocode} -% -% \subsection{Ignorieren von bestimmten Anteilen bei der Sortierung} -% % Alle Argumente in eckigen Klammern werden ignoriert. Dies wird bei einigen % Indexbefehlen genutzt, um die nicht beachteten RegExp-Regeln auszugleichen, -% siehe den nächsten Absatz. In der Klasse \cls{tudscrdoc} werden außerdem ein -% oder mehrere vorangestellte |@|"~Zeichen ignoriert. +% siehe den nächsten Absatz. In der Klasse \cls{tudscrdoc} werden außerdem im +% Befehlsnamen enthaltene |@|"~Zeichen für die Sortierung gesondert behandelt. % \begin{macrocode} - \write\tud@write@xdy{% - (merge-rule "\@backslashchar[(.*)\@backslashchar]" "" :eregexp)% %<*doc> - ^^J% - (merge-rule% - \space"\string^(@+)([\string^@~n]*)"% - \space"\string\2\string~e\string\1"% - \space:eregexp :again% - )^^J% - (merge-rule% - \space"(.*)(@@@@)([\string^@~n]*)"% - \space"\string\1@@@\string\3\string~e"% - \space:again :eregexp% - )^^J% - (merge-rule% - \space"(.*)(@@@)([\string^@~n]*)"% - \space"\string\1@@\string\3\string~e"% - \space:again :eregexp% - )^^J% - (merge-rule% - \space"(.*)(@@)([\string^@~n]*)"% - \space"\string\1@\string\3\string~e"% - \space:eregexp :again% - )^^J% - (merge-rule% - \space"(.*?)(@)([\string^@~n]*)"% - \space"\string\1\string~b\string\3"% - \space:eregexp :again% - )% + (merge-rule :again^^J% + \@spaces"(.*)@(.*)"^^J% + \@spaces"\string\1\string\2\space\string~e"^^J% + )^^J% % - }% + (merge-rule :eregexp^^J% + \@spaces"\string\[(.*)\string\]"^^J% + \@spaces""^^J% + )^^J% % \end{macrocode} % Innerhalb ausgewählter Auszeichnungs- und Textbefehle sollten die Befehle % selbst, nicht jedoch die Argumente verworfen werden. Leider lässt sich dies @@ -279,36 +234,30 @@ % genutzt werden. % \begin{macrocode} %<*!doc> -%^^A \write\tud@write@xdy{% %^^A (merge-rule "\\hologo\{(.*)\}" "/1" :eregexp)^^J% %^^A (merge-rule "\\texttt\{(.*)\}" "/1" :eregexp)^^J% %^^A (merge-rule "\\textsbn\{(.*)\}" "/1" :eregexp)^^J% -%^^A (merge-rule "\\textsbs\{(.*)\}" "/1" :eregexp)^^J% -%^^A }% +%^^A (merge-rule "\\textsbi\{(.*)\}" "/1" :eregexp)^^J% % % \end{macrocode} -% -% \subsection{Markup der einzelnen Einträge} -% % Für die Änderungsliste im Handbuch werden Untereinträge bis zur vierten Ebene % unterstützt. % \begin{macrocode} -%<*!doc&class> - \write\tud@write@xdy{% - (markup-indexentry :open "~n \string\subsubsubitem " :depth 3)% - }% -% +%<*!doc> + (markup-indexentry :depth 3^^J% + \@spaces:open\space\space"\string~n\string\subsubsubitem\space"^^J% + )^^J% +% % \end{macrocode} % Für die Änderungsliste von \cls{tudscrdoc} erfolgt die Gruppierung anhand der % angegebenen Versionsnummer. Das bedeutet, das das Markup für die eigentliche % |letter-group| unterdrückt und die erste Ebene dafür verwendet wird. % \begin{macrocode} %<*doc> - \if@tud@xdy@glo% - \write\tud@write@xdy{% - (markup-letter-group% - \space:open-head "\string~n\space\space\string\@gobble{"% - \space:close-head "}"% +\if@tud@res@swa + (markup-letter-group^^J% + \@spaces:open-head\space\space"\string~n\space\space\string\@gobble{"^^J% + \@spaces:close-head "}"^^J% )^^J% % \end{macrocode} % Leider gibt es für die Eintragsebenen keine Schlüssel |open-head| und @@ -316,36 +265,32 @@ % Zwischen Einträgen der ersten Ebene soll äquivalent zu |letter-group| etwas % Abstand eingefügt werden. % \begin{macrocode} - (markup-indexentry-list% - \space:sep "\string~n\string~n\space\space\string\indexspace\string~n"% - \space:depth 0% + (markup-indexentry-list :depth 0^^J% + \@spaces:sep\space\space\space% + "\string~n\string~n\space\space\string\indexspace\string~n"^^J% )^^J% % \end{macrocode} % Da jeder Eintrag in der Änderungsliste aus mindestens drei Ebenen besteht, % wird vor der ersten Ebene der Beginn des Markupbefehls gesetzt\dots % \begin{macrocode} - (markup-indexentry\@spaces\space\space% - :open "\string~n\space\space\string\@lettergroup\space"\space:depth 0% + (markup-indexentry \@spaces\space:depth 0^^J% + \@spaces:open\space\space% + "\string~n\space\space\string\@lettergroup\space"^^J% )^^J% % \end{macrocode} -% \dots und vor Beginn der zweiten Ebene mit \cs{relax} terminiert. +% \dots und vor Beginn der zweiten Ebene mit \cs{relax} terminiert. Diese +% wird mit \cs{item} ausgezeichnet. % \begin{macrocode} - (markup-indexentry-list :open "\string\relax" :depth 1)^^J% -% \end{macrocode} -% Anschließend werden die zweite sowie die dritte Ebene mit \cs{item} und -% \cs{subitem} ausgezeichnet. -% \begin{macrocode} - (markup-indexentry\@spaces\space\space% - :open "\string~n\space\space\string\item\space" :depth 1% + (markup-indexentry-list :depth 1^^J% + \@spaces:open\space\space"\string\relax"^^J% )^^J% - (markup-indexentry-list :open "\string\efill" :depth 2)^^J% - (markup-indexentry\@spaces\space\space% - :open "\string~n\@spaces\string\subitem\space" :depth 2% + (markup-indexentry \@spaces\space:depth 1^^J% + \@spaces:open\space\space"\string~n\space\space\string\item\space"^^J% )^^J% % \end{macrocode} -% Im Implemetierungsteil soll eine einzelne Änderungsnotiz für einen Eintrag -% direkt danach ausgegeben werden. Exisitieren für diesen jedoch mehrere -% Anmerkungen, so sollen diese in der nächsten Ebene ausgegeben werden. Da die +% Eine einzelne, nachfolgende Änderungsnotiz für den aktuellen Eintrag soll +% direkt ausgegeben werden. Sind jedoch mehrere nachgelagerte Anmerkungen +% vorhanden, so sollen diese in der nächsten Ebene ausgegeben werden. Da die % Anzahl aller Anmerkungen zu einem einzelnen Eintrag zu Beginn noch unbekannt % ist, werden alle dazugehörigen Änderungsnotizen zunächst mit \cs{tud@lst@add} % in der~-- zuvor mit dem Makro \cs{tud@lst@init} initialisierten~-- Liste @@ -354,42 +299,32 @@ % werden entsprechend die Makros \cs{tud@lst@@init}, \cs{tud@lst@@values} und % \cs{tud@lst@@add} sowie \cs{tud@lst@@process} verwendet. % \begin{macrocode} - (markup-indexentry-list^^J% - \space\space:open\space\space"\string\tud@lst@init"^^J% - \space\space:close "\string~n \@spaces\space\string\tud@lst@process"^^J% - \space\space:depth 3^^J% - )^^J% - (markup-indexentry^^J% - \space\space:open% - \space\space"\string~n\@spaces\space\space\string\tud@lst@add{"^^J% - \space\space:close "}"^^J% - \space\space:depth 3^^J% - )^^J% - (markup-indexentry-list^^J% - \space\space:close "\string~n\@spaces\@spaces\string\tud@lst@@process{"^^J% - \space\space:open\space\space"}\string\tud@lst@@init"^^J% - \space\space:depth 4^^J% - )^^J% - (markup-indexentry^^J% - \space\space:open% - \space\space"\string~n\@spaces\@spaces\string\tud@lst@@add{"^^J% - \space\space:close "}"^^J% - \space\space:depth 4^^J% - )% - }% + (markup-indexentry-list :depth 2^^J% + \@spaces:open\space\space"\string\tud@lst@init"^^J% + \@spaces:close "\string~n \@spaces\space\string\tud@lst@process"^^J% + )^^J% + (markup-indexentry \@spaces\space:depth 2^^J% + \@spaces:open% + \space\space"\string~n\@spaces\space\space\string\tud@lst@add{"^^J% + \@spaces:close "}"^^J% + )^^J% + (markup-indexentry-list :depth 3^^J% + \@spaces:close "\string~n\@spaces\@spaces\string\tud@lst@@process{"^^J% + \@spaces:open\space\space"}\string\tud@lst@@init"^^J% + )^^J% + (markup-indexentry \@spaces\space:depth 3^^J% + \@spaces:open% + \space\space"\string~n\@spaces\@spaces\string\tud@lst@@add{"^^J% + \@spaces:close "}"^^J% + )^^J% % \end{macrocode} % Für den Index aller Eintragstypen ist nur auf zu leere \cs{hbox} zu achten. % \begin{macrocode} - \else% - \write\tud@write@xdy{% - (markup-indexentry-list :open "\string\efil" :depth 1)% - }% - \fi% +\else + (markup-indexentry-list :open "\string\efil" :depth 1)^^J% +\fi % % \end{macrocode} -% -% \subsection{Markup des Füllbereichs zwischen Eintrag und Seitenzahlen} -% % Punkte zwischen Eintrag und Seitenzahl. Das schließende \cs{relax} wird für % die smarte Definition des Befehls \cs{cleversee} benötigt, welcher nach den % beiden obligatorischen Argument die nachfolgenden Seitenzahlen sucht und @@ -397,202 +332,149 @@ % der Änderungsliste der Hyperlink für die Seitenzahl respektive die Codezeile % direkt erzeugt. % \begin{macrocode} - \write\tud@write@xdy{% - (markup-locclass-list% -% \space:open "\string\,\string\dotfill\string\,"% -% \space:open "\string\pfill\space"% - \space:close "\string\relax"% - \space:sep ",\space"% - )% - }% + (markup-locclass-list^^J% +% \@spaces:open\space\space"\string\,\string\dotfill\string\,"^^J% +% \@spaces:open\space\space"\string\pfill\space"^^J% + \@spaces:close "\string\relax"^^J% + \@spaces:sep\space\space\space",\space"^^J% + )^^J% % \end{macrocode} +% Es werden für Handbuch und Tutorials die Attribute \emph{!} für deklarierende +% sowie \emph{?} für wichtige Einträge zusätzlich zu \emph{default} definiert. % -% \subsection{Attribute für Einträge} -% -% Es werden für Handbuch und Tutorials die Attribute \emph{declare} mit der -% Abkürzung~\emph{!} sowie \emph{important} mit der Abkürzung~\emph{?} und -% \emph{default} definiert, welche hierarchisch gleichgestellt sind. -% -% \iffalse -%<*!doc> -% \fi -% +% Einträge werden hierarchisch unterschieden. Standardeinträge \val{default} +% werden ggf. von deklarierenden oder wichtigen Einträgen überschrieben bzw. +% nicht separat gelistet. % \begin{macrocode} - \write\tud@write@xdy{% - (define-attributes (("declare" "!" "important" "?" "default")))^^J% -% \end{macrocode} -% Eine Alternative wäre, diese in der Hierarchie zu unterscheiden, allerdings -% war eine Bildung von zufriedenstellenden Seitenbereichen dabei nicht möglich -% und wurde deshalb verworfen. -% \begin{macrocode} -%^^A (markup-attribute-group-list :sep ", ")^^J% -%^^A (define-attributes (("declare" "!") ("important" "?")("default")))^^J% -% \end{macrocode} -% Einträge, die als wichtig oder als Deklaration festgelegt wurden, könnten -% auch für normale Indexeinträge zur Bereichsbildung verwendet werden. -% Allerdings führt dies auch zur Erzeugung redundanter Einträge, falls es sich -% bei den Sondereinträgen bereits um einen Seitenbereich handelt. -% \begin{macrocode} -%^^A (merge-to "declare" "default")^^J% -%^^A (merge-to "!" "default")^^J% -%^^A (merge-to "important" "default")^^J% -%^^A (merge-to "?" "default")^^J% +%<*!doc> + (define-attributes (("!" "default") ("?" "default") ("default")))^^J% + (markup-attribute-group-list :sep ", ")^^J% % \end{macrocode} % Hier erfolgt die Definition der Auszeichnugen der Attribute. Deklarationen % werden fett gedruckt, wichtige Einträge erscheinen kursiv. Außerdem wird ein % entsprechnder Link auf die Seite eingefügt. % \begin{macrocode} - (markup-locref% - \space:attr "declare"\space\space% - \space:open "\string\textbf{\string\hyperpage{"% - \space:close "}}"% - )^^J% - (markup-locref% - \space:attr "!"\@spaces\@spaces% - \space:open "\string\textbf{\string\hyperpage{"% - \space:close "}}"% - )^^J% - (markup-locref% - \space:attr "important"% - \space:open "\string\textsl{\string\hyperpage{"% - \space:close "}}"% - )^^J% - (markup-locref% - \space:attr "?"\@spaces\@spaces% - \space:open "\string\textsl{\string\hyperpage{"% - \space:close "}}"% - )^^J% - (markup-locref% - \space:attr "default"\space\space% - \space:open "\string\hyperpage{"\@spaces\@spaces% - \space:close "}"% - )% - }% -% \end{macrocode} -% -% \iffalse + (markup-locref :attr "!"^^J% + \@spaces:open\space\space"\string\textbf{\string\hyperpage{"^^J% + \@spaces:close "}}"^^J% + )^^J% + (markup-locref :attr "?"^^J% + \@spaces:open\space\space"\string\textit{\string\hyperpage{"^^J% + \@spaces:close "}}"^^J% + )^^J% + (markup-locref :attr "default"^^J% + \@spaces:open\space\space"\string\hyperpage{"^^J% + \@spaces:close "}" ^^J% + )^^J% % -%<*doc> -% \fi -% +% \end{macrocode} % Für \cls{tudscrdoc} erfolgen die Auszeichnungen für den Index im Stile von -% \pkg{doc} mit den Attribute \emph{main} und \emph{usage}, wobei hier eine -% Hierarchie verwendet wird. Es werden Einträge mit dem Attribut \emph{usage} -% vor \emph{main} und \emph{default} aufgeführt. +% \pkg{doc} vorallem mit den Attributen \emph{usage} für Erläuterung sowie +% \emph{main} für Codedefinitionen und \emph{code} für Verweise auf die +% Verwendung im Quellcode. Zusätzlich wird \emph{change} definiert, um auch +% Änderungseinträge separat zu erfassen. Diese Attribute dienen \app{texindy} +% lediglich für die Kategorisierung der Einträge, die Formatierung dieser für +% die Ausgabe erfolgt mit \cs{tud@xdy@mapping}\marg{Attribut}\marg{Referenz}. % \begin{macrocode} - \write\tud@write@xdy{% +%<*doc> (markup-attribute-group-list :sep ", ")^^J% - (define-attributes (("usage") ("main") ("default")))^^J% - (markup-locref :attr "usage"% - \space:open "\string\usage{"\space:close "}"% + (define-attributes (("usage") ("main") ("code") ("change") ("default")))^^J% + (markup-locref :attr "change"^^J% + \@spaces:open"\string\tud@xdy@mapping{change}{"^^J + \@spaces:close "}"^^J% + )^^J% + (markup-locref :attr "code"^^J% + \@spaces:open "\string\tud@xdy@mapping{code}{"^^J% + \@spaces:close "}"^^J% + )^^J% + (markup-locref :attr "usage"^^J% + \@spaces:open "\string\tud@xdy@mapping{usage}{"^^J% + \@spaces:close "}"^^J% + )^^J% + (markup-locref :attr "main"^^J% + \@spaces:open "\string\tud@xdy@mapping{main}{"^^J% + \@spaces:close "}"^^J% )^^J% - (markup-locref :attr "main"% - \space\space:open "\string\main{"\space\space:close "}"% - )% - }% -% \end{macrocode} -% -% \iffalse % -%<*!doc> -% \fi -% -% \subsection{Querverweise im Index} -% -% Im Handbuch prüfen, mit \verb=|see=\marg{Eintrag} erzeugte Querverweise im +% \end{macrocode} +% Im Handbuch prüfen, mit \verb+|see+\marg{Eintrag} erzeugte Querverweise im % Index, ob außerdem noch Seitenzahlangaben existent sind. % \begin{macrocode} - \write\tud@write@xdy{% +%<*!doc> (markup-crossref-list :class "see"^^J% - \space\space:open "\string\cleversee{" \@spaces:sep "; " :close "}"^^J% + \@spaces:open\space\space"\string\cleversee\space"^^J% + \@spaces:sep\space\space\space"; "^^J% + \@spaces:close "\@backslashchar\@backslashchar"^^J% )^^J% (markup-crossref-list :class "seealso"^^J% - \space\space:open "\string\cleverseealso{" :sep "; " :close "}"^^J% - )% - }% + \@spaces:open\space\space"\string\cleverseealso\space"^^J% + \@spaces:sep\space\space\space"; "^^J% + \@spaces:close "\@backslashchar\@backslashchar"^^J% + )^^J% % \end{macrocode} -% -% \iffalse -%<*class> -% \fi -% % Um Querverweise ohne Prüfung des Zieleintrags erzeugen zu können, wird der % passende Typ |seeunverified| definiert. % \begin{macrocode} - \write\tud@write@xdy{% +%<*class> (define-crossref-class "seeunverified" :unverified)^^J% (markup-crossref-list :class "seeunverified"^^J% - \space\space:open "\string\cleversee{" \@spaces:sep "; " :close "}"^^J% - )% - }% + \@spaces:open\space\space"\string\cleversee\space"^^J% + \@spaces:sep\space\space\space"; "^^J% + \@spaces:close "\@backslashchar\@backslashchar"^^J% + )^^J% % \end{macrocode} % Dieser Querverweistyp wird speziell im allgemeinen Index verwendet, um auf % einen Spezialindex zu verweisen. Dabei dient |:unverified| zum Unterdrücken % von Warnungen durch \app{texindy} aufgrund eines fehlenden Ziels für den % Querverweis. % \begin{macrocode} - \write\tud@write@xdy{% (define-crossref-class "seeidx" :unverified)^^J% (markup-crossref-list :class "seeidx"^^J% - \space\space:open "\string\seeidx{"\@spaces\@spaces:sep "; "% - \space:close "}{}"^^J% - )% - }% + \@spaces:open\space\space"\string\seeidx{"^^J% + \@spaces:sep\space\space\space"; "^^J% + \@spaces:close "}{}"^^J% + )^^J% +% +% \end{macrocode} +% Werden mit \verb+|see+\marg{Eintrag!Untereintrag} gezielte Querverweise auf +% Untereinträge im Index erstellt, so werden diese nicht standardmäßig mit +% einem Komma sondern mit dem anpassbaren Makro \cs{seesep} getrennt. +% \begin{macrocode} + (markup-crossref-layer-list :class "see"% + \@spaces\space:sep "\string\seesep{}"% + )^^J% + (markup-crossref-layer-list :class "seealso"% + \space:sep "\string\seesep{}"% + )^^J% % \end{macrocode} % Damit die Makros \cs{cleversee} und \cs{cleverseealso} sowie \cs{seeidx} auf % nachfolgende Seitenzahlen suchen können, müssen diese vor selbigen im Index % aufgerufen werden. % \begin{macrocode} - \write\tud@write@xdy{% (define-location-class-order^^J% - \space\space(^^J% - \@spaces"see" "seealso" "seeidx" "seeunverified"^^J% + \@spaces(^^J% +% \@spaces"see" "seealso" "seeidx" "seeunverified"^^J% +% \@spaces"see" "seealso"^^J% \@spaces"roman-page-numbers" "arabic-page-numbers" "alpha-page-numbers"^^J% \@spaces"Roman-page-numbers" "Alpha-page-numbers"^^J% - \space\space)^^J% - )% - }% -% \end{macrocode} -% -% \iffalse -% -% \fi -% -% Werden mit \verb=|see=\marg{Eintrag!Untereintrag} gezielte Querverweise auf -% Untereinträge im Index erstellt, so werden diese nicht standardmäßig mit -% einem Komma sondern mit \enquote*{\,\textbar\,} getrennt. -% \begin{macrocode} - \write\tud@write@xdy{% - (markup-crossref-layer-list :class "see"% - \@spaces\space:sep "\string\,\string\textbar\string\,"% + \@spaces)^^J% )^^J% - (markup-crossref-layer-list :class "seealso"% - \space:sep "\string\,\string\textbar\string\,"% - )% - }% -% \end{macrocode} -% -% \iffalse % -% \fi -% -% \subsection{Erzeugen der Stildateien} -% +% \end{macrocode} % Damit ist die \app{texindy}-Stildatei fertig und kann mit \cs{tud@xdy@create} % erstellt werden. % \begin{macrocode} - \closeout\tud@write@xdy% }% + \immediate\closeout\tud@xdy@write% } -\tud@xdy@create{ind} -%\tud@xdy@create[theglossary]{gls} -%}{} -\endgroup +\tud@xdy@create +%\tud@xdy@create* +%\fi % \end{macrocode} -% \end{macro}^^A \if@tud@xdy@glo -% \end{macro}^^A \tud@write@xdy +% \end{macro}^^A \tud@xdy@write +% \end{macro}^^A \tud@xdy@@create % \end{macro}^^A \tud@xdy@create % -% \Finale +% \PrintBackMatter % \endinput diff --git a/macros/latex/contrib/tudscr/source/tudscr-title.dtx b/macros/latex/contrib/tudscr/source/tudscr-title.dtx index df4975d375..eb1468aa10 100644 --- a/macros/latex/contrib/tudscr/source/tudscr-title.dtx +++ b/macros/latex/contrib/tudscr/source/tudscr-title.dtx @@ -1,10 +1,10 @@ -% \CheckSum{1406} % \iffalse meta-comment +%/GitFileInfo=tudscr-title.dtx % % TUD-Script -- Corporate Design of Technische Universität Dresden % ---------------------------------------------------------------------------- % -% Copyright (C) Falk Hanisch , 2012-2021 +% Copyright (C) Falk Hanisch , 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-title.dtx +% \iffalse ins:batch + dtx:driver +%<*ins> +\ifx\documentclass\undefined + \input docstrip.tex + \ifToplevel{\batchinput{tudscr.ins}} +\else + \let\endbatchfile\relax +\fi +\endbatchfile +% %<*dtx> -% \fi -% -\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi -\ProvidesFile{tudscr-title.dtx}[2019/08/20 v2.06c TUD-Script\space% - (title)% -] -% -% \iffalse +\ProvidesFile{tudscr-title.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-title.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} @@ -83,9 +62,11 @@ % \changes{v2.02}{2014/06/23}{Paket \pkg{titlepage} nicht weiter unterstützt}^^A % \changes{v2.05}{2015/07/13}{Titel für Poster}^^A % +% +% % \section{Titelei für die \TUDScript-Klassen} % -% Zusätzlich zu den \KOMAScript-Varianten werde für die \TUDScript-Klassen +% Ergänzend zu den \KOMAScript-Varianten werden für die \TUDScript-Klassen % spezielle, im \TUDCD gehaltene Ausführungen von Titelseite und Titelkopf % bereitgestellt. Zusätzlich gibt es auch eine Umschlagsseite (Cover), welche % in beiden Gestaltungsvarianten genutzt werden kann. @@ -95,8 +76,6 @@ % \TUDCD bereitgestellt. Dabei wird auch das Aussehen und die Position des % Titels analog zu den Überschriften auf Teile- und Kapitelseiten festgelegt. % -% \StopEventually{\PrintIndex\PrintChanges\PrintToDos} -% % \iffalse %<*class&body> % \fi @@ -115,7 +94,7 @@ % Titels gesetzt. Um dieses Verhalten nachbilden zu können, wird diese Option % zur Verfügung gestellt. % \begin{macrocode} -\newif\if@tud@subjectthesis +\tud@newif\if@tud@subjectthesis \TUD@key{subjectthesis}[true]{% \TUD@set@ifkey{subjectthesis}{@tud@subjectthesis}{#1}% } @@ -130,7 +109,7 @@ % verlangt. Diese Option dient zum Aktivieren dieser Unterschriftenzeile am % Ende der Titelseite. % \begin{macrocode} -\newif\if@tud@titlesignature +\tud@newif\if@tud@titlesignature \TUD@key{titlesignature}[true]{% \TUD@set@ifkey{titlesignature}{@tud@titlesignature}{#1}% } @@ -150,11 +129,9 @@ % Warnung ausgegeben. % \begin{macrocode} \DefineFamilyMember{KOMA} -\DefineFamilyKey{KOMA}{titlepage}[true]{% - \TUD@set@numkey{titlepage}{@tempa}{\TUD@bool@numkey,{firstiscover}{2}}{#1}% - \ifx\FamilyKeyState\FamilyKeyStateProcessed% - \AtEndOfFamilyOptions{\tud@titlepage@deactivate}% - \fi% +\DefineFamilyKey{KOMA}{titlepage}{% + \FamilyKeyStateUnknownValue% + \AtEndOfFamilyOptions{\tud@titlepage@deactivate}% } \newcommand*\tud@titlepage@deactivate{% \if@titlepage% @@ -194,7 +171,7 @@ %<*book|report|article> \newkomafont{thesis}{% \usekomafont{title}% - \tud@thesis@fontsize% + \tud@subtitle@fontsizecmd% } % \newkomafont{titlepage}{% @@ -252,6 +229,10 @@ \newcommand*\tud@title@pagenumber{} \let\tud@title@pagenumber\relax \newcommand*\tud@maketitle[1][]{% +%<*book|report|article> + \TUD@deprecated@length\pageheadingsvskip% + \TUD@deprecated@length\headingsvskip% +% \begingroup% \cleardoublepage% % \end{macrocode} @@ -274,7 +255,9 @@ \tud@cs@use{maketitle}[\tud@title@pagenumber]% \fi% \tud@if@tudheadings{\currentpagestyle}{% - \ifstr{\titlepagestyle}{empty}{\thispagestyle{empty.tudheadings}}{}% + \tud@if@strequal{\titlepagestyle}{empty}% + {\thispagestyle{empty.tudheadings}}% + {}% }{}% % \end{macrocode} % Für die \TUDScript-Klassen gibt es für doe Titleseite sowie den Titelkopf @@ -308,6 +291,9 @@ % \end{macrocode} % Die einzelnen Parameter dienen zur Einstellung der Titelseite und entsprechen % in ihrem Verhalten den gleichnamigen Klassenoptionen. +% \ToDo{cdgeometry liefert falschen Satzspiegel nach Titel, siehe vlp}[v2.07] +% \ToDo{titleback ist im Flattersatz, warum?}[v2.07] +% \ToDo{Warnung, wenn pagenumber gerade}[v2.07] % \begin{macrocode} \TUD@parameter@family{title}{% %<*book|report|article> @@ -346,7 +332,9 @@ % aus der \pgs{tudheadings}-Reihe der Titel ebenfalls in diesem gesetzt wird, % auch wenn das Layout des \CDs selber nicht aktiv ist. % \begin{macrocode} -\patchcmd{\titlepage}{\thispagestyle{empty}}{% +\patchcmd\titlepage{% + \thispagestyle{empty}% +}{% \tud@if@tudheadings{\currentpagestyle}{% \thispagestyle{empty.tudheadings}% }{% @@ -480,9 +468,9 @@ % Das ganze Layout wird vertikal so verschoben, dass der Titel auf der gleichen % Höhe steht wie die Überschriften auf Teil- und Kapitelseiten. % \begin{macrocode} - \tud@cd@headstartvskip% - \TUD@deprecated@lengthcs{pageheadingsvskip}% - \vspace*{\tud@dim@pageheadingsvskip}% + \vspace*{-\baselineskip}% + \tud@cd@headstart@vskip% + \vspace*{\dimexpr\tud@pageheadingsvskip@dim\relax}% \tud@cd@vphantom% \setparsizes{\z@}{\z@}{\z@\@plus1fil}\par@updaterelative% % \end{macrocode} @@ -505,10 +493,9 @@ % allerdings etwas kleiner. % \begin{macrocode} \ifx\@subtitle\@empty\else% - {\usekomafont{partnumber}{\nobreak\tud@sec@strut}}% - {\usekomafont{subtitle}{\tud@title@format{\@subtitle}\par}}% + {\usekomafont{subtitle}{\tud@title@format[partnumber]{\@subtitle}\par}}% \fi% - \vskip 2\bigskipamount% + \vskip\glueexpr\bigskipamount*2\relax% % \end{macrocode} % Ausgabe eines Autors oder mehrerer Autoren ggf. mit Zusatzinformationen. % \begin{macrocode} @@ -551,7 +538,7 @@ \def\@tempc{% \@graduation% \ifx\@graduationabbreviation\@empty\else% - \nobreakspace\@graduationabbreviation% + \nobreakspace(\@graduationabbreviation)% \fi% }% {\usekomafont{titlepage}{\graduationtext\par}}% @@ -563,7 +550,8 @@ \vskip 2ex\@plus.5fill% \fi% % \end{macrocode} -% \ToDo{Befehl zum Angeben optionaler Inhalte, bspw. ein Bild}[v2.07] +% \ToDo{Befehl zum Angeben optionaler Inhalte, bspw. ein Bild}[v2.08] +% \ToDo{...othername als Liste für mehr als zwei Angaben}[v2.08] % Wenn Betreuer angegeben wurden, dann werden diese auf dem Titel ausgeben. Um % diese Titelseite auch für Dissertationen verwenden zu können, ist ein Feld % für Gutachter vorgesehen. Außerdem wird für Promotionsschriften ein Feld für @@ -586,13 +574,13 @@ \tud@date@check% \ifx\@date\@empty\else% \vskip 2ex\@plus1ex\@minus1ex% - \ifxblank{\datetext}{}{\datetext\tud@title@delimiter}% + \tud@if@strblank{\datetext}{}{\datetext\tud@title@delimiter}% {\usekomafont{date}{\tud@date@print\par}}% % \end{macrocode} % Zusätzlich kann noch ein Datum der mündlichen Verteidigung angegeben werden. % \begin{macrocode} \ifx\@defensedate\@empty\else% - \ifxblank{\defensedatetext}{}{% + \tud@if@strblank{\defensedatetext}{}{% \defensedatetext\tud@title@delimiter% }% {\usekomafont{date}{\@defensedate\par}}% @@ -605,7 +593,7 @@ % \begin{macrocode} \if@tud@titlesignature% \let\tud@split@@author@do\tud@split@author@signature% - \vskip\tud@len@signatureskip\noindent% + \vskip\tud@glue@signaturevskip\noindent% \tud@ifin@and{\@@author}{}{\hfill}% \tud@multiple@split{@@author}% \fi% @@ -743,7 +731,9 @@ \newcommand*\tud@maketitle@inpage{% \renewcommand*\tud@title@fontcolor{}% \ifcase\tud@cd@title@num\relax\or\else% *color - \ifstr{\tud@pagecolor}{HKS41}{}{\renewcommand*\tud@title@fontcolor{HKS41}}% + \tud@if@strequal{\tud@pagecolor}{HKS41}% + {}% + {\renewcommand*\tud@title@fontcolor{HKS41}}% \fi% \par% \ifx\tud@title@pagenumber\relax\else% @@ -776,7 +766,7 @@ \ifx\@extratitle\@empty% \ifx\@frontispiece\@empty\else% \if@twoside\null\fi% - \fi + \fi% \else% \tud@res@a{\@makeextratitle}% \fi% @@ -795,10 +785,10 @@ % \begin{macrocode} \newcommand*\tud@maketitle@@inpage{% \global\@topnum=\z@% - \tud@cd@headstartvskip% + \vspace*{-\baselineskip}% + \tud@cd@headstart@vskip% %<*book|report|article> - \TUD@deprecated@lengthcs{headingsvskip}% - \vspace*{\tud@dim@headingsvskip}% + \vspace*{\dimexpr\tud@headingsvskip@dim\relax}% \tud@cd@vphantom% % \setparsizes{\z@}{\z@}{\z@\@plus1fil}\par@updaterelative% @@ -827,15 +817,14 @@ % \begin{macrocode} {\usekomafont{title}{\tud@title@format{\@title}\par}}% \ifx\@subtitle\@empty\else% - \vskip 1ex\@plus.5ex\@minus.5ex% - {\usekomafont{subtitle}{\tud@title@format{\@subtitle}\par}}% + {\usekomafont{subtitle}{\tud@title@format[partnumber]{\@subtitle}\par}}% \fi% \vskip 2ex\@plus1ex\@minus1ex% % \end{macrocode} % Ausgabe eines Autors oder mehrerer Autoren ggf. mit Zusatzinformationen. % \begin{macrocode} %<*book|report|article> - \vskip 2\bigskipamount% + \vskip\bigskipamount% \let\tud@split@author@do\tud@split@author@title% \tud@multiple@split{@author}\par% % \end{macrocode} @@ -865,12 +854,10 @@ % \end{macrocode} % Am Ende wird noch etwas vertikaler Abstand eingefügt. % \begin{macrocode} - \vskip 2\bigskipamount% + \vskip\bigskipamount% % \ifnum\col@number>\@ne\relax% - \ifdefvoid{\multicolsep}{}{% - \ifisskip{\multicolsep}{\vspace{-\multicolsep}}{}% - }% + \tud@if@lengthregister{\multicolsep}{\vspace{-\multicolsep}}{}% \fi% % \end{macrocode} % Wird das \DDC-Logo im Kompatibilitätsmodus für die Version~v2.02 gesetzt, @@ -898,36 +885,32 @@ \newcommand*\tud@maketitle@head{% \setbox\z@\vbox{% \ifx\@titlehead\@empty\else% - {\usekomafont{titlehead}{% - \begin{minipage}[t]{\textwidth}% - \@titlehead\tud@sec@strut% - \end{minipage}% - }}% + \begin{minipage}[t]{\textwidth}% + \usekomafont{titlehead}{\@titlehead\strut\par}% + \end{minipage}% \fi% %<*book|report|article> \tud@thesis@tosubject% % \ifx\@subject\@empty\else% \par\medskip% - {\usekomafont{subject}{% - \@subject\tud@sec@strut% - }}% + {\usekomafont{subject}{\tud@sec@format[partnumber]{\@subject}}}% \fi% }% % \end{macrocode} % Der ermittelte Offset muss~-- warum auch immer~-- um \val{1pt} vergrößert % werden. Zusätzlich wird ein mittlerer Abstand zwischen Kopf und Titel gesetzt. % \begin{macrocode} - \setlength\@tempdima{\dimexpr\ht\z@+\dp\z@\relax}% + \tud@setdim\@tempdima{\ht\z@+\dp\z@}% \ifdim\@tempdima>\z@\relax% %<*book|report|article> - \vskip\dimexpr-\@tempdima-\p@-\medskipamount\relax% + \vskip\dimexpr-\@tempdima-\p@-1\medskipamount\relax% % \usebox\z@\par\medskip% \fi% } % \end{macrocode} -% \end{macro}^^A \tud@maketitle@inpage +% \end{macro}^^A \tud@maketitle@head % % \subsubsection{Hilfsmakros für die Ausgabe} % @@ -937,31 +920,11 @@ % der Titelseite soll sichergestellt werden, dass der Inhalt selbst nicht in % Majuskeln gesetzt wird. % \begin{macrocode} -\newcommand*\tud@title@format[1]{% +\newcommand*\tud@title@format[2][]{% \begingroup% \let\\\newline% -% \end{macrocode} -% Der Befehl \cs{thanks} wird so umdefiniert, dass der Inhalt in ein temporäres -% Makro gespeichert wird. Danach wird durch das Setzen einer temporären Box der -% Befehl \cs{thanks} ausgeführt und der Inhalt gesichert. Für die Ausführung von -% \cs{tud@sec@format} wird das Argument von \cs{thanks} ignoriert. Nachdem das -% gewünschte Feld in Majuskeln gesetzt wurde, wird die gespeicherte Fußnote -% ausgegeben. -% \begin{macrocode} - \let\tud@thanks\relax% - \def\thanks##1{\gdef\tud@thanks{##1}}% - \let\footnote\thanks% - \sbox\z@{#1}% - \let\thanks\@gobble% - \let\footnote\@gobble% - \tud@sec@format{#1}% - \edef\tud@res@a{% - \endgroup% - \ifx\tud@thanks\relax\else% - \noexpand\thanks{\expandonce\tud@thanks}% - \fi% - }% - \tud@res@a% + \tud@sec@format[{#1}]{#2}% + \endgroup% } % \end{macrocode} % \end{macro}^^A \tud@title@format @@ -993,6 +956,8 @@ % Dieser Befehl dient zur getrennten Ausgabe von mehreren, mit dem Makro % \cs{and} separierten Einträgen in den Feldern \cs{@supervisor}, \cs{@referee} % und \cs{@advisor}. +% \ToDo{generisch für beliebig viele Bezeichner (Drittgutachter)}[v2.07] +% \ToDo{...othername als Liste?}[v2.07] % \begin{macrocode} \newcommand*\tud@title@names[1]{% \letcs\@tempa{@#1}% @@ -1066,7 +1031,9 @@ \ifx\@dateofbirth\@empty\else% \if@titlepage% \tud@newline@title% - \ifxblank{\dateofbirthtext}{}{\dateofbirthtext\tud@title@delimiter}% + \tud@if@strblank{\dateofbirthtext}% + {}% + {\dateofbirthtext\tud@title@delimiter}% \@dateofbirth% \ifx\@placeofbirth\@empty\else% \nobreakspace\placeofbirthtext\nobreakspace\@placeofbirth% @@ -1076,15 +1043,17 @@ \fi% \fi% \def\@tempc##1{% - \ifstr{\csuse{@##1}}{}{}{% + \expandafter\ifx\csname @##1\endcsname\@empty\else% \if@titlepage% \tud@newline@title% - \ifstr{\csuse{##1name}}{}{}{\csuse{##1name}\tud@title@delimiter}% + \tud@if@strblank{\csuse{##1name}}% + {}% + {\csuse{##1name}\tud@title@delimiter}% \csuse{@##1}% \else% \tud@title@wrn{##1}% \fi% - }% + \fi% }% \@tempc{course}% \@tempc{discipline}% @@ -1131,9 +1100,9 @@ % Autors zentriert ausgegeben. % \begin{macrocode} \vbox{% - \hsize=.3\textwidth% + \hsize=\dimexpr\textwidth*3/10\relax% \centering% - \rule{.3\textwidth}{.05pt}\newline% + \rule{\dimexpr\textwidth*3/10\relax}{.05pt}\newline% \ignorespaces#1\strut\unskip% }% % \end{macrocode} @@ -1173,18 +1142,19 @@ \if@twocolumn% %<*book|report|article> \if@titlepage% - \tud@maketitle[#1]% - \onecolumn{#2}\twocolumn% + \tud@maketitle[{#1}]% + \onecolumn#2\twocolumn% \else% % - \tud@title@twocolumn{\tud@maketitle[#1]{#2}}% + \tud@title@twocolumn{\tud@maketitle[{#1}]#2}% %<*book|report|article> \fi% % \else% \ClassError{\TUD@Class@Name}{% `\string\maketitleonecolumn' can only be used in twocolumn mode% - }{}% + }{You should use `\string\maketitle' instead.}% + \tud@maketitle[{#1}]#2% \fi% } % \end{macrocode} @@ -1210,7 +1180,7 @@ % werden. % \begin{macrocode} \global\setbox\tud@title@box\vbox{% - \vspace*{.9\baselineskip}#1\bigskip% + \vspace*{\dimexpr1\baselineskip*9/10\relax}#1\bigskip% }% \endgroup% % \end{macrocode} @@ -1218,11 +1188,11 @@ % Vor der Version~v2.03 gab es für das \DDC-Logo einen abweichenden Satzspiegel % der ggf. beachtet werden muss. % \begin{macrocode} - \setlength\@tempdima{\textheight}% + \tud@setdim\@tempdima{\textheight}% \tud@if@v@lower{2.03}{% \tud@ddc@check% \ifcase\@tempb\relax\else% \tud@ddc@foot@num!=false - \setlength\@tempdima{\dimexpr\textheight-\tud@len@ddcdiff\relax}% + \tud@setdim\@tempdima{\textheight-\tud@dim@ddcdiff}% \@tempswatrue% \fi% }{}% @@ -1236,7 +1206,7 @@ \splitmaxdepth\maxdepth% \vsplit\tud@title@box to \@tempdima% \clearpage% - \setlength\@tempdima{\textheight}% + \tud@setdim\@tempdima{\textheight}% \tud@if@v@lower{2.03}{\@tempswafalse}{}% }% % \end{macrocode} @@ -1263,7 +1233,7 @@ You are using a two-column title along with\MessageBreak% the DDC-logo. Unfortunately in this case, the\MessageBreak% type area has to be adjusted manually. Please\MessageBreak% - use `\string\enlargethispage{-\the\tud@len@ddcdiff}'\MessageBreak% + use `\string\enlargethispage{-\the\tud@dim@ddcdiff}'\MessageBreak% in both columns after the title% }% \fi% @@ -1290,8 +1260,7 @@ % \changes{v2.02}{2014/06/23}{Warnung für die Option \opt{titlepage} mit dem % Wert \val{firstiscover}}^^A % \changes{v2.02}{2014/08/08}{ohne \CD verwendbar}^^A -% \changes{v2.02}{2014/08/12}{Satzspiegel mit \cs{coverpage\dots{}margin} -% änderbar, falls CD-Layout deaktiviert}^^A +% \changes{v2.02}{2014/08/12}{Satzspiegel ohne CD-Layout änderbar}^^A % \changes{v2.03}{2015/01/09}{Anpassungen für neue Satzspiegelerzeugung}^^A % \begin{parameter}{cdcover} % \changes{v2.03}{2015/01/12}{neu}^^A @@ -1306,7 +1275,7 @@ % Der Befehl \cs{makecover} ist für eine Umschlagseite bei einem gebundenen % Werk zu verwenden. % \begin{macrocode} -\newif\if@tud@coverpage +\tud@newif\if@tud@coverpage \newcommand*\makecover[1][]{% % \end{macrocode} % Ist die Option \opt{titlepage}|=|\val{firstiscover} aktiv, wird eine Warnung @@ -1374,33 +1343,33 @@ % \end{macrocode} % Wird der Parameter \opt{cdgeometry} aktiviert, werden die Seitenränder wie % durch das \CD vorgegeben eingestellt. Andernfalls entsprechen diese den -% Einstellungen des Satzspiegels und können mit \cs{coverpage\dots margin} +% Einstellungen des Satzspiegels und können mit |\coverpage|\meta{\dots}|margin| % durch den Anwender angepasst werden. % \begin{macrocode} \if@tud@cdgeometry@cover% % \end{macrocode} % Bei der Höhe des oberen Seitenrandes muss unterschieden werden, ob der -% Satzspiegel im \CD oder aber im Buchblock erscheinen soll. +% Satzspiegel im \CD oder aber im Buchblock erscheinen soll. Die Makros werden +% von \KOMAScript via \cs{dimexpr} interpretiert. % \begin{macrocode} \if@tud@coverpage% \def\coverpagetopmargin{% - \dimexpr\tud@len@topmargin+\tud@len@barheight% - +\tud@len@headsep\relax% + \tud@dim@topmargin+\tud@dim@barheight+\tud@dim@headsep% }% \else% \tud@if@v@lower{2.03}{% - \def\coverpagetopmargin{.5\tud@len@both}% + \def\coverpagetopmargin{\tud@dim@bothmargin/2}% }{% - \def\coverpagetopmargin{\tud@len@slimmargin}% + \def\coverpagetopmargin{\tud@dim@slimmargin}% }% \fi% \tud@if@v@lower{2.03}{% - \def\coverpagebottommargin{.5\tud@len@both}% + \def\coverpagebottommargin{\tud@dim@bothmargin/2}% }{% - \def\coverpagebottommargin{\tud@len@widemargin}% + \def\coverpagebottommargin{\tud@dim@widemargin}% }% - \def\coverpageleftmargin{\tud@len@widemargin}% - \def\coverpagerightmargin{\tud@len@slimmargin}% + \def\coverpageleftmargin{\tud@dim@widemargin}% + \def\coverpagerightmargin{\tud@dim@slimmargin}% \fi% \if@tud@coverpage% % \end{macrocode} @@ -1417,12 +1386,12 @@ }% % \end{macrocode} % Linker und rechter Rand sowie die Textbreite werden identisch erzeugt. Für -% das Layout im \CD wurden die Seitenränder (\cs{coverpage\dots margin}) zuvor -% angepasst. +% das Layout im \CD wurden die Seitenränder (|\coverpage|\meta{\dots}|margin|) +% zuvor angepasst. % \begin{macrocode} \begingroup% \tud@cover@setmargins% - \tud@len@areavskip=\z@% + \tud@setdim\tud@dim@areavskip{\z@}% % \end{macrocode} % Die Ausgabe des Covers und ggf. das Wiederherstellen des Satzspiegels. % \begin{macrocode} @@ -1450,9 +1419,9 @@ % Die einzelnen Parameter dienen zur Einstellung der Umschlagseite und % entsprechen~-- \prm{cdgeometry} ausgenommen~-- in ihrem Verhalten den % gleichnamigen Klassenoptionen. Der genannte Parameter kann eigentlich nur mit -% booleschen Werten verwenet werden. Für einen benutzerdefinierten Satzspiegel -% der Umschlagseite müssen die \KOMAScript-Makros \cs{coverpage\dots{}margin} -% angepasst werden. +% booleschen Werten verwendet werden. Für einen benutzerdefinierten Satzspiegel +% der Umschlagseite müssen die \KOMAScript-Makros +% |\coverpage|\meta{\dots}|margin| angepasst werden. % \begin{macrocode} \tud@locked@newbool{@tud@cdgeometry@cover} \TUD@parameter@family{cover}{% @@ -1496,18 +1465,18 @@ % voreingestellt sind. Das Vermeiden einer unerwünschten Überdeckung des Kopfes % oder ein zu kleiner Fußbereich muss durch den Anwender korrigiert werden. % \begin{macrocode} -\renewcommand*{\coverpagetopmargin}{% +\renewcommand*\coverpagetopmargin{% \if@tud@coverpage% - \dimexpr\tud@len@topmargin+\tud@len@barheight+\tud@len@headsep\relax% + \tud@dim@topmargin+\tud@dim@barheight+\tud@dim@headsep% \else% - \dimexpr\topmargin+1in\relax% + \topmargin+1in% \fi% } -\renewcommand*{\coverpagebottommargin}{% +\renewcommand*\coverpagebottommargin{% \if@tud@coverpage% - \dimexpr\tud@len@widemargin\relax% + \tud@dim@widemargin% \else% - 2\dimexpr\coverpagetopmargin\relax% + \coverpagetopmargin*2% \fi% } % \end{macrocode} @@ -1531,26 +1500,22 @@ % Standardmäßig ist \cs{coverbottommargin} abhängig von \cs{covertopmargin}, % weshalb dieses Makro als erstes expandiert wird. % \begin{macrocode} - \setlength\@tempdima{% - \dimexpr\coverpagebottommargin-\tud@len@layoutvoffset - +\paperheight-\tud@len@layoutheight\relax% + \tud@setdim\@tempdima{% + \coverpagebottommargin-\tud@dim@layoutvoffset% + +\paperheight-\tud@dim@layoutheight% }% \edef\coverpagebottommargin{\the\@tempdima}% - \setlength\@tempdima{% - \dimexpr\coverpagetopmargin+\tud@len@layoutvoffset\relax% - }% + \tud@setdim\@tempdima{\coverpagetopmargin+\tud@dim@layoutvoffset}% \edef\coverpagetopmargin{\the\@tempdima}% % \end{macrocode} % Selbiges gilt für \cs{coverrightmargin} und \cs{coverleftmargin}. % \begin{macrocode} - \setlength\@tempdima{% - \dimexpr\coverpagerightmargin-\tud@len@layouthoffset - +\paperwidth-\tud@len@layoutwidth\relax% + \tud@setdim\@tempdima{% + \coverpagerightmargin-\tud@dim@layouthoffset% + +\paperwidth-\tud@dim@layoutwidth% }% \edef\coverpagerightmargin{\the\@tempdima}% - \setlength\@tempdima{% - \dimexpr\coverpageleftmargin+\tud@len@layouthoffset\relax% - }% + \tud@setdim\@tempdima{\coverpageleftmargin+\tud@dim@layouthoffset}% \edef\coverpageleftmargin{\the\@tempdima}% % \end{macrocode} % Abschließend werden die gewünschten Längen nach der lokalen Gruppe definiert. @@ -1575,7 +1540,7 @@ -\coverpagebottommargin\relax% \headheight=0pt% \headsep=0pt% - \footskip=\baselineskip% + \footskip=1\baselineskip% \@colht=\textheight% \@colroom=\textheight% \vsize=\textheight% @@ -1592,6 +1557,6 @@ % % \fi % -% \Finale +% \PrintBackMatter % \endinput diff --git a/macros/latex/contrib/tudscr/source/tudscr-twocolfix.dtx b/macros/latex/contrib/tudscr/source/tudscr-twocolfix.dtx index 143038e2bc..a5897f38d5 100644 --- a/macros/latex/contrib/tudscr/source/tudscr-twocolfix.dtx +++ b/macros/latex/contrib/tudscr/source/tudscr-twocolfix.dtx @@ -1,10 +1,10 @@ -% \CheckSum{214} % \iffalse meta-comment +%/GitFileInfo=tudscr-twocolfix.dtx % % TUD-Script -- Corporate Design of Technische Universität Dresden % ---------------------------------------------------------------------------- % -% Copyright (C) Falk Hanisch , 2012-2021 +% Copyright (C) Falk Hanisch , 2012-2022 % % ---------------------------------------------------------------------------- % @@ -23,45 +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-twocolfix.dtx -%<*dtx> -% \fi -% -\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi -\ProvidesFile{tudscr-twocolfix.dtx}[2019/06/28 v2.06 TUD-Script\space% -% -% \iffalse -% -%\NeedsTeXFormat{LaTeX2e} -%\ProvidesPackage{twocolfix}[% -%<*package> -%!TUD@Version -% -% package -%<*dtx|package> -% \fi - (twocolumn layout bugfix)% -] -% \iffalse -% +% \iffalse ins:batch + dtx:driver +%<*ins> +\ifx\documentclass\undefined + \input docstrip.tex + \ifToplevel{\batchinput{tudscr.ins}} +\else + \let\endbatchfile\relax +\fi +\endbatchfile +% %<*dtx> +\ProvidesFile{tudscr-twocolfix.dtx}[2022/08/09] +\RequirePackage{tudscr-gitinfo} \documentclass[english,ngerman,xindy]{tudscrdoc} \iftutex \usepackage{fontspec} @@ -71,18 +45,11 @@ \fi \usepackage{babel} \usepackage{tudscrfonts} -\KOMAoptions{parskip=half-} -\usepackage{bookmark} \usepackage[babel]{microtype} -\CodelineIndex -\RecordChanges -\GetFileInfo{tudscr-twocolfix.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} @@ -93,28 +60,40 @@ % \selectlanguage{ngerman} % % \changes{v2.05}{2016/04/25}{Überprüfen der Definition von \cs{@topnewpage} -% des \LaTeXe-Kernels}^^A +% des \LaTeXe"~Kernels}^^A +% +% \ToDo{Als eingenständiges Paket herauslösen}[v2.08] +% \ToDo{CheckCommand verwenden?}[v2.08] +% +% % % \section{Das Paket \pkg{twocolfix} -- Bugfix für den zweispaltigen Satz} % -% Der \LaTeXe-Kernel enthält einen Fehler, der Kapitelüberschriften im -% zweispaltigen Layout höher setzt, als im einspaltigen. Zwar ist der -% \hrfn{http://latex-project.org/cgi-bin/ltxbugs2html?pr=latex/3126}{Fehler} -% schon länger bekannt, allerdings noch nicht in den \LaTeXe-Kernel übernommen -% worden. Das Paket \pkg{twocolfix} soll das Problem beheben. Eine Integration -% des Bugfixes in \KOMAScript{} wurde bereits bei Markus Kohm angefragt, jedoch -% \hrfn{http://www.komascript.de/node/1681}{von ihm nicht weiter verfolgt}. +% Der \LaTeXe"~Kernel enthält einen +% \href{http://latex-project.org/cgi-bin/ltxbugs2html?pr=latex/3126}{Fehler}, +% wodurch im zweispaltigen Satz Kapitelüberschriften höher als im +% einspaltigen Layout gesetzt werden. Zwar ist dieser schon länger bekannt, +% jedoch bisher noch nicht behoben (\GitHubRepo(latex3/latex2e)<509>). % -% \ToDo{Als eingenständiges Paket herauslösen}[v2.??] -% \ToDo{CheckCommand verwenden}[v2.??] +% Das Paket \pkg{twocolfix} soll dies beheben. Eine Integration des Bugfixes +% in \KOMAScript{} wurde bereits bei Markus Kohm angefragt, jedoch +% \href{http://www.komascript.de/node/1681}{von ihm nicht weiter verfolgt}. % -% \StopEventually{\PrintIndex\PrintChanges\PrintToDos} +% \begin{macrocode} +%<*package> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{twocolfix}[% +%!TUD@Version + package (twocolumn layout bugfix)% +] +% +% \end{macrocode} % % \iffalse %<*package> % \fi % -% Es wird der fehlerhafte Befehl aus dem \LaTeXe-Kernel neu definiert. +% Es wird der fehlerhafte Befehl aus dem \LaTeXe"~Kernel neu definiert. % Allerdings definieren die \KOMAScript-Klassen das Makro \cs{@topnewpage} % um und sichern vorher das Original in \cs{scr@topnewpage}. Daher wird der % neue Befehl erst temporär definiert. @@ -246,6 +225,6 @@ % % \fi % -% \Finale +% \PrintBackMatter % \endinput diff --git a/macros/latex/contrib/tudscr/source/tudscr-version.dtx b/macros/latex/contrib/tudscr/source/tudscr-version.dtx index 971205af90..049c25833d 100644 --- a/macros/latex/contrib/tudscr/source/tudscr-version.dtx +++ b/macros/latex/contrib/tudscr/source/tudscr-version.dtx @@ -1,10 +1,10 @@ -% \CheckSum{135} % \iffalse meta-comment +%/GitFileInfo=tudscr-version.dtx % % TUD-Script -- Corporate Design of Technische Universität Dresden % ---------------------------------------------------------------------------- % -% Copyright (C) Falk Hanisch , 2012-2021 +% Copyright (C) Falk Hanisch , 2012-2022 % % ---------------------------------------------------------------------------- % @@ -23,27 +23,7 @@ % % \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-version.dtx -% \fi -% -% \iffalse +% \iffalse comment % Nicht verwirren lassen! In dieser Datei steht ein Teil der Dokumentation und % des Codes vor dem Treiber. Das ist notwendig, weil der Teil des Codes bereits % am Anfang des Treibers selbst benötigt wird. Genauer gesagt handelt es sich @@ -61,82 +41,92 @@ % \changes{v2.02}{2014/05/16}{Umbennenung mehrerer Befehle zur Kompatibilität % mit anderen Paketen}^^A % -% \section{Die Version des \texorpdfstring{\TUDScript}{TUD-Script}-Bundles} % -% Für alle Klassen und Paketen, die zum \TUDScript-Bundle auf \KOMAScript-Basis -% gehören wird als erstes die aktuelle Version festgelgt. % -% \StopEventually{\PrintIndex\PrintChanges\PrintToDos} +% \section{Die Version des \TUDScript-Bundles} +% +% Für das \TUDScript-Bundle wird die aktuelle Version sowie \LaTeXe{} als +% benötigtes Format festgelegt. +% +% \subsection{Definition und Validierung der Version} % % \begin{macro}{\TUD@Version} -% \begin{macro}{\TUD@Version@Check} +% \begin{macro}{\TUD@@Version} % \changes{v2.02}{2014/07/22}{Expandieren der Versionsangabe bei der Verwendung % von \pkg{docstrip} ermöglicht}^^A -% \begin{macro}{\TUD@Version@KOMA} % \begin{macro}{\TUDScriptVersion} % \begin{macro}{\TUDScriptVersionNumber} -% Das Makro \cs{TUD@Version} gibt an, zu welcher \TUDScript"~Version die -% Datei gehört. Die Klassen und Pakete des Bundles verwenden dieses Makro -% außerdem zur eigenen Versionsangabe. Je nachdem, ob \cs{TUD@Version} -% bereits definiert ist oder nicht, wird mit \cs{TUD@Version@Check} die -% Definition überprüft oder eine globale Definition vorgenommen. Da das Ganze -% auch bei der Erstellung der Dokumentation geschieht, wird \cs{makeatletter} -% innerhalb einer Gruppe verwendet. Das Makro \cs{TUD@Version@KOMA} definiert -% die mindestens notwendige Version von \KOMAScript. In \cs{TUDScriptVersion} -% wird die Versioninformation für den Anwender definiert. +% \begin{macro}{\TUD@KOMAVersion} +% \begin{macro}{\TUD@KOMAVersionNumber} +% Die Klassen und Pakete des \TUDScript-Bundles verwenden \cs{TUD@Version} +% zur Versionsangabe. Je nachdem, ob \cs{TUD@Version} bereits definiert ist +% oder nicht, wird mit \cs{TUD@@Version} die Definition überprüft oder eine +% globale Definition vorgenommen. In \cs{TUD@KOMAVersion} wird die mindestens +% notwendige Version von \KOMAScript{} definiert. % \begin{macrocode} +%<*identify> +%\NeedsTeXFormat{LaTeX2e}[2022-06-01] \begingroup - \catcode`\@11\relax -%<*!(package|class)> - \ifx\newcommand\undefined - \gdef\TUD@Version@Check#1{% + \catcode`\@11\relax% +%<*!(class|package)> + \ifx\documentclass\undefined% + \gdef\TUD@@Version#1#2{% \gdef\TUD@Version{\space\space#1}% - \gdef\TUDScriptVersion{\space\space#1}% - \aftergroup\endinput% - } - \else -% - \ifx\TUD@Version\@undefined - \newcommand*\TUD@Version@Check[1]{% + \gdef\TUD@KOMAVersion{\space\space#2}% + }% + \else% +% + \ifx\TUD@Version\@undefined% + \newcommand*\TUD@@Version[2]{% \gdef\TUD@Version{#1}% - \gdef\TUDScriptVersion{#1}% - \def\@tempb##1 v##2 ##3\relax##4\relax{\gdef\TUDScriptVersionNumber{##2}}% - \edef\@tempa{\TUD@Version}% - \expandafter\@tempb\@tempa\relax? ? \relax\relax% - \gdef\TUD@Version@KOMA{3.32}% - } - \else - \newcommand*\TUD@Version@Check[1]{% + \gdef\TUD@KOMAVersion{#2}% + }% + \else% + \newcommand*\TUD@@Version[2]{% \def\@tempa{#1}% \ifx\TUD@Version\@tempa\else% \@latex@warning@no@line{% \noexpand\TUD@Version\space is `\TUD@Version',\MessageBreak% but `#1' was expected!\MessageBreak% You should not use classes, packages or files from\MessageBreak% - different TUD-Script-Bundle versions% + different TUD-Script bundle versions% }% \fi% - } - \fi -%<*!(package|class)> - \fi -% - \TUD@Version@Check{2021/07/15 v2.06n TUD-Script} + }% + \fi% +%<*!(class|package)> + \fi% +% + \TUD@@Version{2022/08/09 v2.06o TUD-Script}{2022/05/01 v3.36 KOMA-Script}% + \ifx\TUDScriptVersion\@undefined% + \xdef\TUDScriptVersion{\TUD@Version}% + \def\@tempa#1 v#2 #3\relax#4\relax#5{\gdef#5{#2}}% + \expandafter\@tempa\TUD@Version ? ?\relax\relax{\TUDScriptVersionNumber}% + \expandafter\@tempa\TUD@KOMAVersion ? ?\relax\relax{\TUD@KOMAVersionNumber}% + \fi% \endgroup +% % \end{macrocode} +% \end{macro}^^A \TUD@KOMAVersionNumber +% \end{macro}^^A \TUD@KOMAVersion % \end{macro}^^A \TUDScriptVersionNumber % \end{macro}^^A \TUDScriptVersion -% \end{macro}^^A \TUD@Version@KOMA -% \end{macro}^^A \TUD@Version@Check +% \end{macro}^^A \TUD@@Version % \end{macro}^^A \TUD@Version % -% \iffalse +% \iffalse ins:batch + dtx:driver +%<*ins> +\ifx\documentclass\undefined + \input docstrip.tex + \ifToplevel{\batchinput{tudscr.ins}} +\else + \let\endbatchfile\relax +\fi +\endbatchfile +% %<*dtx> -% \fi -% -\ProvidesFile{tudscr-version.dtx}[\TUDScriptVersion\space (versions)] -% -% \iffalse +\ProvidesFile{tudscr-version.dtx}[2022/08/09] +\RequirePackage{tudscr-gitinfo} \documentclass[english,ngerman,xindy]{tudscrdoc} \iftutex \usepackage{fontspec} @@ -146,18 +136,11 @@ \fi \usepackage{babel} \usepackage{tudscrfonts} -\KOMAoptions{parskip=half-} -\usepackage{bookmark} \usepackage[babel]{microtype} -\CodelineIndex -\RecordChanges -\GetFileInfo{tudscr-version.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} @@ -165,21 +148,49 @@ % % \fi % -% Als erstes das benötigte \LaTeX-Format. +% \iffalse comment +% Der Rest wird nicht mehr vom Treiber benötigt. +% \fi +% +% \iffalse +%<*identify> +% \fi +% +% \subsection{Das \TUDScript-Logo und Anlaufstellen} +% \begin{macro}{\TUDScript} +% Der Schriftzug von \TUDScript. % \begin{macrocode} -%\NeedsTeXFormat{LaTeX2e}[2019/10/01] +\@ifundefined{TUDScript}{% + \DeclareRobustCommand\TUDScript{% + \mbox{% + \textsf{% + T\kern.05em U\kern.05em D\kern.1em-\kern.1em Script% + }% + }\ifcsname xspace\endcsname\xspace\fi% + }% +}{} % \end{macrocode} -% \begin{macro}{\tudscrmail} -% Die E"~Mail-Adresse für Supportanfragen. +% \end{macro}^^A \TUDScript +% +% \begin{macro}{\TUDScriptContact} +% \begin{macro}{\TUDScriptRepository} +% \begin{macro}{\TUDScriptForum} +% Die E"~Mail-Adresse, Repository und Forum für Supportanfragen. % \begin{macrocode} -%\providecommand*\tudscrmail{hanisch.latex@outlook.com} +\providecommand*\TUDScriptContact{hanisch.latex@outlook.com} +\providecommand*\TUDScriptRepository{https://github.com/tud-cd/tudscr} +\providecommand*\TUDScriptForum{https://latex.wcms-file3.tu-dresden.de/phpBB3/} % \end{macrocode} -% \end{macro}^^A \tudscrmail +% \end{macro}^^A \TUDScriptForum +% \end{macro}^^A \TUDScriptRepository +% \end{macro}^^A \TUDScriptContact % % \iffalse %<*class> % \fi % +% \subsection{Laden von Klassen und Paketen} +% % \begin{macro}{\TUD@ProvidesClass} % \changes{v2.04}{2015/06/13}{neu}^^A % \begin{macro}{\TUD@ProvidesWrapperClass} @@ -190,6 +201,8 @@ % \changes{v2.04}{2015/06/12}{neu}^^A % \begin{macro}{\TUD@Class@KOMA} % \changes{v2.04}{2015/06/12}{neu}^^A +% \begin{macro}{\TUDScriptClassName} +% \begin{macro}{\TUDClassName} % Mit diesen Befehlen erfolgt die Versionsangabe der \TUDScript-Klassen beim % Laden. Dabei werden hier einmalig die Namen der jeweiligen Klassen definiert. % Hierfür werden die Befehle \cs{TUD@ProvidesClass} für die Hauptklassen und @@ -198,31 +211,28 @@ % Argument entspricht der Basis-Klasse. Das dritte Argument enthält eine kurze % Beschreibung. % \begin{macrocode} -%<*!inherit> -\newcommand*\TUD@ProvidesClass[3]{% +%\newcommand*\TUD@ProvidesClass[3] +%\newcommand*\TUD@ProvidesWrapperClass[3] +{% \ProvidesClass{#1}[% %!TUD@Version #3 (#2)% ]% - \newcommand*\TUD@Class@KOMA{#2}% - \ifx\TUD@Class@Parent\@undefined% - \newcommand*\TUD@Class@Name{#1}% - \TUD@Class@Info% - \fi% -} -% -%<*inherit> -\newcommand*\TUD@ProvidesWrapperClass[3]{% - \ProvidesClass{#1}[% -%!TUD@Version - #3 (#2)% - ]% - \newcommand*\TUD@Class@Parent{#2}% +% \newcommand*\TUD@Class@KOMA{#2}% +% \newcommand*\TUD@Class@Parent{#2}% +% \ifx\TUD@Class@Parent\@undefined% \newcommand*\TUD@Class@Name{#1}% +% \end{macrocode} +% Die Benutzermakros für den Namen der verwendeten \TUDScript-Klasse. +% \begin{macrocode} + \newcommand*\TUDScriptClassName{#1}% + \providecommand*\TUDClassName{\TUDScriptClassName}% \TUD@Class@Info% +% \fi% } -% % \end{macrocode} +% \end{macro}^^A \TUDClassName +% \end{macro}^^A \TUDScriptClassName % \end{macro}^^A \TUD@Class@KOMA % \end{macro}^^A \TUD@Class@Parent % \end{macro}^^A \TUD@Class@Name @@ -236,11 +246,11 @@ \providecommand*\TUD@Class@Info{% \typeout{+------------------------------------------------------------------}% \typeout{| Corporate Design of Technische Universitaet Dresden}% - \typeout{| Class: \TUD@Class@Name}% - \typeout{| Version: \TUD@Version}% - \typeout{| Author: Falk Hanisch (\tudscrmail)}% - \typeout{| Repository: https://github.com/tud-cd/tudscr}% - \typeout{| Forum: https://latex.wcms-file3.tu-dresden.de}% + \typeout{| Class: \TUDScriptClassName}% + \typeout{| Version: \TUDScriptVersion}% + \typeout{| Author: Falk Hanisch (\TUDScriptContact)}% + \typeout{| Repository: \TUDScriptRepository}% + \typeout{| Forum: \TUDScriptForum}% \typeout{+------------------------------------------------------------------}% } % \end{macrocode} @@ -254,64 +264,38 @@ %\TUD@ProvidesClass{tudscrdoc}{scrartcl}{source code documentation class} %\TUD@ProvidesWrapperClass{tudscrmanual}{tudscrreprt}{manual class} % \end{macrocode} -% \begin{macro}{\TUDScriptClassName} -% \begin{macro}{\TUDClassName} -% Die Benutzermakros für den Namen der verwendeten \TUDScript-Klasse. -% \begin{macrocode} -\edef\TUDScriptClassName{\TUD@Class@Name} -\providecommand*\TUDClassName{\TUDScriptClassName} -% \end{macrocode} -% \end{macro}^^A \TUDClassName -% \end{macro}^^A \TUDScriptClassName % % \iffalse % -%<*package&(supervisor|comp|tutorial)> +%<*package> +%<*supervisor|comp|manual> % \fi % -% \section{Verwendbarkeit von \TUDScript-Paketen} -% +% \begin{macro}{\TUD@Class@Check} +% \changes{v2.06o}{2022/08/09}{neu}^^A % Einige Pakete sind nur mit den \TUDScript-Klassen verwendbar. Diese erzeugen -% einen Fehler, wenn sie nicht mit diesen verwendet werden. +% einen Fehler, wenn sie nicht mit einer dieser verwendet werden. % \begin{macrocode} -\ifx\TUD@Class@Name\@undefined - \PackageError{% -% tudscrsupervisor% -% tudscrcomp% -% tudscrcomp-book% -% tudscrcomp-poster% -% tudscrtutorial% - }{Unsupported class found}{% - This package can only be used with a class out of the\MessageBreak% - tudscr bundle (tudscrbook, tudscrreprt, tudscrartcl, tudscrposter).% - }% - \endinput% -\fi +\providecommand*\TUD@Class@Check[1]{% + \ifx\TUD@Class@Name\@undefined% + \PackageError{#1}{TUD-Script class not loaded}{% + This package requires a class of the TUD-Script bundle\MessageBreak% + (tudscrbook, tudscrreprt, tudscrartcl, tudscrposter).% + }% + \DeclareOption*{}% + \ProcessOptions\relax% + \expandafter\endinput% + \fi% +}% % \end{macrocode} +% \end{macro}^^A \TUD@Class@Check % % \iffalse -% +% +% +% % \fi % -% \section{Das \TUDScript-Logo} -% \begin{macro}{\TUDScript} -% Der Schriftzug von \TUDScript. -% \begin{macrocode} -%<*package|class> -\@ifundefined{TUDScript}{% - \DeclareRobustCommand\TUDScript{% - \textsf{% - T\kern.05em U\kern.05em D\kern.1em-\kern.1em Script% - }% - \ifcsname xspace\endcsname% - \xspace% - \fi% - }% -}{} -% -% \end{macrocode} -% \end{macro}^^A \TUDScript -% -% \Finale +% \PrintBackMatter % \endinput diff --git a/macros/latex/contrib/tudscr/source/tudscr.ins b/macros/latex/contrib/tudscr/source/tudscr.ins index 4b1d147de1..6b19540fd5 100644 --- a/macros/latex/contrib/tudscr/source/tudscr.ins +++ b/macros/latex/contrib/tudscr/source/tudscr.ins @@ -2,7 +2,7 @@ % TUD-Script -- Corporate Design of Technische Universität Dresden % ---------------------------------------------------------------------------- % -% Copyright (C) Falk Hanisch , 2012-2021 +% Copyright (C) Falk Hanisch , 2012-2022 % % ---------------------------------------------------------------------------- % @@ -24,29 +24,54 @@ \gdef\processLineX%#1{* \ifcase\ifx%#10\else \ifx<#11\else - \ifx!#12\else 3\fi\fi\fi\relax + \ifx!#12\else + \ifx/#13\else 4\fi\fi\fi\fi\relax \expandafter\putMetaComment\or \expandafter\checkOption\or - \expandafter\expandVariable\or + \expandafter\TUDexpandVariable\or + \expandafter\TUDexpandCommand\or \expandafter\removeComment\fi #1} \endgroup -\def\expandVariable!#1\endLine{% - \advance\codeLinesPassed\@ne - \maybeMsg{x}% - \edef\inLine{\csname #1\endcsname}% - \let\do\putline@do - \activefiles +\def\TUDexpandVariable!#1\endLine{% + \expandafter\ifx\csname#1\endcsname\relax + \errmessage{% + You've tried to expand the undefined command^^J% + \expandafter\string\csname#1\endcsname% + }% + \else + \advance\codeLinesPassed\@ne + \maybeMsg{x}% + \edef\inLine{\csname#1\endcsname}% + \let\do\putline@do + \activefiles + \fi +} +\def\TUDexpandCommand/#1=#2\endLine{% + \expandafter\ifx\csname#1\endcsname\relax + \errmessage{% + You've tried to expand the undefined command^^J% + \expandafter\string\csname#1\endcsname% + }% + \else + \advance\codeLinesPassed\@ne + \maybeMsg{x}% + \expandafter\edef\expandafter\inLine\expandafter{\csname#1\endcsname{#2}}% + \let\do\putline@do + \activefiles + \fi } \@@input tudscr-version.dtx +\@@input tudscr-gitinfo.dtx \keepsilent \preamble TUD-Script -- Corporate Design of Technische Universitaet Dresden + \TUD@Version -\TUD@Version - -Copyright (C) Falk Hanisch , 2012-2021 +Copyright (C) Falk Hanisch , 2012-2022 + https://github.com/tud-cd/tudscr + https://latex.wcms-file3.tu-dresden.de/phpBB3/ This file was generated from file(s) of the TUD-Script bundle. ---------------------------------------------------------------------------- @@ -67,12 +92,11 @@ The current maintainer and author of this work is Falk Hanisch. \usedir{tex/latex/tudscr} \generate{% \usepreamble\defaultpreamble% - \file{tudscrbase.sty}{% - \from{tudscr-version.dtx}{package,base}% - \from{tudscr-base.dtx}{package,base}% - } \file{tudscrbook.cls}{% - \from{tudscr-version.dtx}{class,book}% + \from{tudscr-version.dtx}{class,book,identify}% + \needed{tudscr-fonts.dtx}% + \needed{tudscr-supervisor.dtx}% + \needed{tudscr-comp.dtx}% \from{tudscr-base.dtx}{class,book,load}% \from{tudscr-base.dtx}{class,book,option}% \from{tudscr-fonts.dtx}{class,book,option}% @@ -93,11 +117,14 @@ The current maintainer and author of this work is Falk Hanisch. \from{tudscr-layout.dtx}{class,book,body}% \from{tudscr-title.dtx}{class,book,body}% \from{tudscr-frontmatter.dtx}{class,book,body}% - \from{tudscr-comp.dtx}{class,book,body}% \from{tudscr-misc.dtx}{class,book,body}% + \from{tudscr-comp.dtx}{class,book,body}% } \file{tudscrreprt.cls}{% - \from{tudscr-version.dtx}{class,report}% + \from{tudscr-version.dtx}{class,report,identify}% + \needed{tudscr-fonts.dtx}% + \needed{tudscr-supervisor.dtx}% + \needed{tudscr-comp.dtx}% \from{tudscr-base.dtx}{class,report,load}% \from{tudscr-base.dtx}{class,report,option}% \from{tudscr-fonts.dtx}{class,report,option}% @@ -118,11 +145,14 @@ The current maintainer and author of this work is Falk Hanisch. \from{tudscr-layout.dtx}{class,report,body}% \from{tudscr-title.dtx}{class,report,body}% \from{tudscr-frontmatter.dtx}{class,report,body}% - \from{tudscr-comp.dtx}{class,report,body}% \from{tudscr-misc.dtx}{class,report,body}% + \from{tudscr-comp.dtx}{class,report,body}% } \file{tudscrartcl.cls}{% - \from{tudscr-version.dtx}{class,article}% + \from{tudscr-version.dtx}{class,article,identify}% + \needed{tudscr-fonts.dtx}% + \needed{tudscr-supervisor.dtx}% + \needed{tudscr-comp.dtx}% \from{tudscr-base.dtx}{class,article,load}% \from{tudscr-base.dtx}{class,article,option}% \from{tudscr-fonts.dtx}{class,article,option}% @@ -143,11 +173,14 @@ The current maintainer and author of this work is Falk Hanisch. \from{tudscr-layout.dtx}{class,article,body}% \from{tudscr-title.dtx}{class,article,body}% \from{tudscr-frontmatter.dtx}{class,article,body}% - \from{tudscr-comp.dtx}{class,article,body}% \from{tudscr-misc.dtx}{class,article,body}% + \from{tudscr-comp.dtx}{class,article,body}% } \file{tudscrposter.cls}{% - \from{tudscr-version.dtx}{class,poster}% + \from{tudscr-version.dtx}{class,poster,identify}% + \needed{tudscr-fonts.dtx}% + \needed{tudscr-supervisor.dtx}% + \needed{tudscr-comp.dtx}% \from{tudscr-base.dtx}{class,poster,load}% \from{tudscr-base.dtx}{class,poster,option}% \from{tudscr-fonts.dtx}{class,poster,option}% @@ -168,75 +201,52 @@ The current maintainer and author of this work is Falk Hanisch. \from{tudscr-layout.dtx}{class,poster,body}% \from{tudscr-title.dtx}{class,poster,body}% \from{tudscr-frontmatter.dtx}{class,poster,body}% - \from{tudscr-comp.dtx}{class,poster,body}% \from{tudscr-misc.dtx}{class,poster,body}% + \from{tudscr-comp.dtx}{class,poster,body}% + } + \file{tudscrbase.sty}{% + \from{tudscr-version.dtx}{package,base,identify}% + \from{tudscr-base.dtx}{package,base}% + } + \file{tudscrcolor.sty}{% + \from{tudscr-version.dtx}{package,color,identify}% + \from{tudscr-color.dtx}{package,color}% } -} -\generate{% - \usepreamble\defaultpreamble% \file{tudscrsupervisor.sty}{% - \from{tudscr-version.dtx}{package,supervisor}% - \from{tudscr-supervisor.dtx}{package,supervisor}% - \from{tudscr-fields.dtx}{package,supervisor}% - \from{tudscr-localization.dtx}{package,supervisor}% + \from{tudscr-version.dtx}{package,supervisor,identify}% + \from{tudscr-supervisor.dtx}{package,supervisor,identify}% + \from{tudscr-fields.dtx}{package,supervisor,body}% + \from{tudscr-localization.dtx}{package,supervisor,body}% + \from{tudscr-supervisor.dtx}{package,supervisor,body}% + } + \file{tudscrcomp.sty}{% + \from{tudscr-version.dtx}{package,comp,identify}% + \from{tudscr-comp.dtx}{package,comp,identify}% + \needed{tudscr-misc.dtx}% + \from{tudscr-comp.dtx}{package,comp,option}% + \from{tudscr-misc.dtx}{package,comp,execute}% + \from{tudscr-comp.dtx}{package,comp,body}% } -} -\generate{% - \usepreamble\defaultpreamble% \file{tudscrfonts.sty}{% - \from{tudscr-version.dtx}{package,fonts}% + \from{tudscr-version.dtx}{package,fonts,identify}% \from{tudscr-fonts.dtx}{package,fonts,identify}% + \needed{tudscr-comp.dtx}% \from{tudscr-base.dtx}{package,fonts,load}% \from{tudscr-fonts.dtx}{package,fonts,option}% \from{tudscr-misc.dtx}{package,fonts,option}% \from{tudscr-comp.dtx}{package,fonts,option}% \from{tudscr-misc.dtx}{package,fonts,execute}% \from{tudscr-fonts.dtx}{package,fonts,body}% - \from{tudscr-comp.dtx}{package,fonts,body}% \from{tudscr-misc.dtx}{package,fonts,body}% + \from{tudscr-comp.dtx}{package,fonts,body}% } -} -\generate{% - \usepreamble\defaultpreamble% - \file{tudscrcolor.sty}{% - \from{tudscr-version.dtx}{package,color}% - \from{tudscr-color.dtx}{package,color}% - } - \file{twocolfix.sty}{% - \from{tudscr-twocolfix.dtx}{package}% - } - \file{mathswap.sty}{% - \from{tudscr-mathswap.dtx}{package}% - } -} -\generate{% - \usepreamble\defaultpreamble% - \file{tudscrcomp.sty}{% - \from{tudscr-version.dtx}{package,comp,base}% - \from{tudscr-comp.dtx}{package,comp,base,identify}% - } - \file{tudscrcomp-book.sty}{% - \from{tudscr-version.dtx}{package,comp,book}% - \from{tudscr-comp.dtx}{package,comp,book,identify}% - \from{tudscr-comp.dtx}{package,comp,book,option}% - \from{tudscr-misc.dtx}{package,comp,book,execute}% - \from{tudscr-comp.dtx}{package,comp,book,body}% - } - \file{tudscrcomp-poster.sty}{% - \from{tudscr-version.dtx}{package,comp,poster}% - \from{tudscr-comp.dtx}{package,comp,poster,identify}% - \from{tudscr-comp.dtx}{package,comp,poster,option}% - \from{tudscr-misc.dtx}{package,comp,poster,execute}% - \from{tudscr-comp.dtx}{package,comp,poster,body}% - } -} -\generate{% - \usepreamble\defaultpreamble% \file{fix-tudscrfonts.sty}{% - \from{tudscr-version.dtx}{package,fixfonts}% + \from{tudscr-version.dtx}{package,fixfonts,identify}% \from{tudscr-comp.dtx}{package,fixfonts,identify}% \from{tudscr-base.dtx}{package,fixfonts,load}% \from{tudscr-layout.dtx}{package,fixfonts,option}% + \needed{tudscr-misc.dtx}% + \needed{tudscr-comp.dtx}% \from{tudscr-misc.dtx}{package,fixfonts,execute}% \from{tudscr-layout.dtx}{package,fixfonts,body}% \from{tudscr-comp.dtx}{package,fixfonts,body}% @@ -245,36 +255,54 @@ The current maintainer and author of this work is Falk Hanisch. \generate{% \usepreamble\defaultpreamble% \file{tudscrmanual.cls}{% - \from{tudscr-version.dtx}{class,manual,inherit}% - \from{tudscr-manual.dtx}{class,manual}% + \from{tudscr-version.dtx}{class,manual,identify,inherit}% + \needed{tudscr-manual.dtx}% \from{tudscr-base.dtx}{class,manual,inherit,load}% + \from{tudscr-misc.dtx}{class,manual,option}% \from{tudscr-manual.dtx}{class,manual,option}% \from{tudscr-misc.dtx}{class,manual,inherit,execute}% + \from{tudscr-misc.dtx}{class,manual,body}% \from{tudscr-manual.dtx}{class,manual,body}% \from{tudscr-fields.dtx}{class,manual,body}% \from{tudscr-localization.dtx}{class,manual,body}% \from{tudscr-texindy.dtx}{class,manual}% } - \file{tudscrtutorial.sty}{% - \from{tudscr-version.dtx}{package,tutorial}% - \from{tudscr-manual.dtx}{package,tutorial,identify}% - \from{tudscr-base.dtx}{package,tutorial,load}% - \from{tudscr-manual.dtx}{package,tutorial,option}% - \from{tudscr-misc.dtx}{package,tutorial,execute}% - \from{tudscr-manual.dtx}{package,tutorial,body}% - \from{tudscr-texindy.dtx}{package,tutorial}% + \file{tudscrmanual.sty}{% + \from{tudscr-version.dtx}{package,manual,identify}% + \from{tudscr-manual.dtx}{package,manual,identify}% + \from{tudscr-base.dtx}{package,manual,load}% + \from{tudscr-misc.dtx}{package,manual,option}% + \from{tudscr-manual.dtx}{package,manual,option}% + \from{tudscr-misc.dtx}{package,manual,execute}% + \from{tudscr-misc.dtx}{package,manual,body}% + \from{tudscr-manual.dtx}{package,manual,body}% + \from{tudscr-texindy.dtx}{package,manual}% } } \generate{% \usepreamble\defaultpreamble% \file{tudscrdoc.cls}{% - \from{tudscr-version.dtx}{class,doc}% + \from{tudscr-version.dtx}{class,doc,identify}% \from{tudscr-base.dtx}{class,doc,load}% + \from{tudscr-misc.dtx}{class,doc,option}% \from{tudscr-doc.dtx}{class,doc,option}% \from{tudscr-localization.dtx}{class,doc}% - \from{tudscr-manual.dtx}{class,doc}% + \from{tudscr-misc.dtx}{class,doc,body}% \from{tudscr-doc.dtx}{class,doc,body}% \from{tudscr-texindy.dtx}{class,doc}% } } +\generate{% + \usepreamble\defaultpreamble% + \file{tudscr-gitinfo.sty}{% + \from{tudscr-version.dtx}{package,git,identify}% + \from{tudscr-gitinfo.dtx}{identify,package}% + } + \file{twocolfix.sty}{% + \from{tudscr-twocolfix.dtx}{package}% + } + \file{mathswap.sty}{% + \from{tudscr-mathswap.dtx}{package}% + } +} \endbatchfile diff --git a/macros/latex/contrib/tudscr/source/tudscrsource.tex b/macros/latex/contrib/tudscr/source/tudscrsource.tex index aa11b0f111..92ef3fa4b5 100644 --- a/macros/latex/contrib/tudscr/source/tudscrsource.tex +++ b/macros/latex/contrib/tudscr/source/tudscrsource.tex @@ -1,9 +1,12 @@ -\begingroup - \def\ProvidesFile#1[#2]{\csname endinput\endcsname}% - \input tudscr-version.dtx - \gdef\filename{\jobname} -\endgroup -\ProvidesFile{tudscrsource.tex}[\TUDScriptVersion (sourcedoc)] +\ifx\documentclass\undefined + \input docstrip.tex + \ifToplevel{\batchinput{tudscr.ins}} +\else + \let\endbatchfile\relax +\fi +\endbatchfile + +\RequirePackage{tudscr-gitinfo} \documentclass[english,ngerman,xindy]{tudscrdoc} \iftutex \usepackage{fontspec} @@ -13,22 +16,16 @@ \fi \usepackage{babel} \usepackage{tudscrfonts} -\KOMAoptions{parskip=half-} -\usepackage{bookmark} \usepackage[babel]{microtype} -%\EnableCrossrefs -\CodelineIndex -\RecordChanges -\GetFileInfo{tudscrsource.tex} - +\GitHubBase{\TUDScriptRepository} \begin{document} \addtokomafont{subject}{\sffamily} \subject{\TUDScript basierend auf \KOMAScript} -\title{Ein \LaTeX-Bundle für Dokumente \mbox{im neuen \CD der} \mbox{\TnUD}} -\subtitle{Dokumentierter Quelltext} -\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}} -\date{\fileversion\nobreakspace(\filedate)} +\title{Ein \LaTeX-Bundle für Dokumente \mbox{im \CD der} \mbox{\TnUD}} +\subtitle{Quelltextdokumentation} +\author{Falk Hanisch\TUDScriptContactTitle} +\date{\TUDScriptVersion} \makeatletter \begingroup% @@ -38,9 +35,9 @@ \let\mailto\@gobble% \let\qquad\relax% \hypersetup{% - pdfauthor = {\@author},% - pdftitle = {\@title},% - pdfsubject = {Quelltextdokumentation des \TUDScript-Bundles},% + pdfauthor = {\@author},% + pdftitle = {\@title},% + pdfsubject = {\@subtitle},% pdfkeywords = {LaTeX, \TUDScript, Quelltext},% }% \endgroup% @@ -50,12 +47,11 @@ \maketitle -\ToDo{Release-Prozess mit \app{make} und \file{Makefile}}[v2.07] -Das \TUDScript-Bundle setzt das \TUDCD für \LaTeXe{} um. Die enthaltenen +Das \TUDScript-Bundle setzt das \TUDCD für \LaTeX{} um. Die enthaltenen Klassen und Pakete basieren auf dem \KOMAScript-Bundle und sind sehr eng mit -diesen verwoben. Momentan ergänzen sie das Vorlagenpaket von Klaus Bergmann, -das auf den Standard-\LaTeX-Klassen basiert und als veraltet betrachtet werden +diesen verwoben. Momentan ergänzen sie das Vorlagenbundle von Klaus~Bergmann, +das auf den \LaTeX"=Standardklassen basiert und als veraltet betrachtet werden kann. Die dazugehörigen Klassen sollen mittel- bis langfristig ersetzt werden.% \footnote{% aktuell ist dies \cls{tudbook}, geplant \cls{tudfax}, \cls{tudletter}, @@ -63,10 +59,17 @@ kann. Die dazugehörigen Klassen sollen mittel- bis langfristig ersetzt werden.% } Es handelt sich bei diesem Dokument \emph{nicht} um das Anwenderhandbuch sondern um den dokumentierten Quelltext der Implementierung von \TUDScript. -Das Anwenderhandbuch kann über die Kommandozeile respektive das Terminal mit -dem Aufruf \texttt{texdoc tudscr} geöffnet werden. +Das Anwenderhandbuch kann via Kommandozeile/Terminal mit \texttt{texdoc tudscr} +geöffnet werden. \tableofcontents +\ToDo{Release-Prozess mit \app{make} und \file{Makefile}}[v2.07] +\ToDo{^^A + \cs{kernel@ifnextchar}, \cs{kernel@ifstar} mit \cs{NewDocumentCommand}^^A +}[v2.07] +\ToDo{\cs{IfArgIsEmpty} überprüfen/ersetzen}[v2.07] +% renewcommand[^\{]*?\\[^\{\[]*?\{ +\ToDo{\cs{renewcommand} mit \cs{def} ersetzen, wo sinnvoll}[v2.07] \clearpage \DocInclude{tudscr-version} @@ -91,16 +94,9 @@ dem Aufruf \texttt{texdoc tudscr} geöffnet werden. \DocInclude{tudscr-manual} \DocInclude{tudscr-doc} \DocInclude{tudscr-texindy} -%\DocInclude{install/tudscr-metrics} -%\DocInclude{install/tudscr-scripts} +\DocInclude{install/tudscr-metrics} +\DocInclude{install/tudscr-scripts} \fi -\addpart{\appendixname} -\vspace*{-2\baselineskip} -\PrintIndex -\clearpage -\PrintChanges -\clearpage -\PrintToDos -\clearpage +\PrintBackMatter* \end{document} -- cgit v1.2.3