diff options
Diffstat (limited to 'macros/latex/contrib/tudscr/source/tudscr-fonts.dtx')
-rw-r--r-- | macros/latex/contrib/tudscr/source/tudscr-fonts.dtx | 1867 |
1 files changed, 1068 insertions, 799 deletions
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 |