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