% \iffalse meta-comment %/GitFileInfo=tudscr-fonts.dtx % % TUD-Script -- Corporate Design of Technische Universität Dresden % ---------------------------------------------------------------------------- % % Copyright (C) Falk Hanisch , 2012-2022 % % ---------------------------------------------------------------------------- % % This work may be distributed and/or modified under the conditions of the % LaTeX Project Public License, either version 1.3c of this license or % any later version. The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.3c or later is part of all distributions of % LaTeX version 2008-05-04 or later. % % This work has the LPPL maintenance status "maintained". % % The current maintainer and author of this work is Falk Hanisch. % % ---------------------------------------------------------------------------- % % \fi % % \iffalse ins:batch + dtx:driver %<*ins> \ifx\documentclass\undefined \input docstrip.tex \ifToplevel{\batchinput{tudscr.ins}} \else \let\endbatchfile\relax \fi \endbatchfile % %<*dtx> \ProvidesFile{tudscr-fonts.dtx}[2022/08/09] \RequirePackage{tudscr-gitinfo} \documentclass[english,ngerman,xindy]{tudscrdoc} \iftutex \usepackage{fontspec} \else \usepackage[T1]{fontenc} \usepackage[ngerman=ngerman-x-latest]{hyphsubst} \fi \usepackage{babel} \usepackage{tudscrfonts} \usepackage[babel]{microtype} \GitHubBase{\TUDScriptRepository} \begin{document} \author{Falk Hanisch\TUDScriptContactTitle} \maketitle \tableofcontents \DocInput{\filename} \end{document} % % \fi % % \selectlanguage{ngerman} % % \changes{v2.02}{2014/06/23}{Paket \pkg{titlepage} nicht weiter unterstützt}^^A % \changes{v2.02}{2014/07/08}{\cs{FamilyKeyState} wird von Optionen genutzt}^^A % \changes{v2.02}{2014/08/29}{Verwendung von \pkg{mweights} unnötig}^^A % \changes{v2.02}{2014/08/29}{Unterstützung für \pkg{fontspec}}^^A % \changes{v2.04}{2015/02/27}{Interaktion mit Paketen insbesondere für % 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} % % Für das \TUDCD wird die Schrift \OpenSans benötigt. Die Type1-Variante wird % mit diesen Klassen mitgeliefert, die OTF-Variante muss entweder durch das % Paket \pkg{opensans} oder über das System bereitgestellt werden. Hier werden % 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-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. % % \begin{macrocode} %<*package&identify> \ProvidesPackage{tudscrfonts}[% %!TUD@Version package (corporate design fonts)% ] % % \end{macrocode} % % \iffalse %<*option> % \fi % % Der Category Code für Anführungsstriche wird auf nicht-aktiv gesetzt für den % Fall das ein Paket dies gerne anders hätte. % % \begin{macrocode} \newcommand*\tud@catcodes@restore{} \edef\tud@catcodes@restore{% \catcode`\noexpand\"\the\catcode`\"\relax% }% \@makeother\"% %\AtEndOfClass{\tud@catcodes@restore} %\AtEndOfPackage{\tud@catcodes@restore} % \end{macrocode} % % \iffalse %<*class> % \fi % % \subsection{^^A % Nutzung durch die \TUDScript-Klassen und das Paket \pkg{tudscrfonts}^^A % } % % Die Schriften des \TUDCDs werden standardmäßig durch die \TUDScript-Klassen % verwendet. Für Dokumentklassen, welche nicht zum \TUDScript-Bundle gehören, % können diese über das Paket \pkg{tudscrfonts} geladen werden. % \begin{macrocode} \PreventPackageFromLoading[% \ClassWarning{\TUD@Class@Name}{% The package `tudscrfonts' must not be used with\MessageBreak% a TUD-Script class% }% ]{tudscrfonts} % \end{macrocode} % % \iffalse % %<*package> % \fi % % Sollte keine \KOMAScript-Klasse genutzt werden, wird zusätzlich das Paket % \pkg{scrextend} benötigt. % \begin{macrocode} \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 % Warnung mit dem Hinweis auf das Paket \pkg{fix-tudscrfonts} ausgegeben. % \begin{macrocode} \@tempswafalse% \@for\@tempa:={% tudbook,tudbeamer,tudfax,tudform,tudhaus,tudletter,tudposter,tudmathposter% }\do{% \if@tempswa\else \@ifclassloaded{\@tempa}{\@tempswatrue\let\@tempb\@tempa}{}% \fi }% \if@tempswa% \@ifpackageloaded{fix-tudscrfonts}{}{% \PackageWarning{tudscrfonts}{% As you loaded class `\@tempb', you should\MessageBreak% load `fix-tudscrfonts' before the class\MessageBreak% with `\string\RequirePackage'% }% }% \fi% % \end{macrocode} % % \iffalse % % %<*body> % \fi % % \begin{macro}{\tud@cdfont@wrn} % \changes{v2.06}{2018/06/17}{neu}^^A % \begin{macro}{\tud@cdmath@wrn} % \changes{v2.06}{2019/06/17}{neu}^^A % Diese beiden Makros dienen als zentrale Hooks, die während der Initialiserung % der Schrfiten des \CDs befüllt werden, falls beispielsweise Warnungen wegen % fehlender Schriftdateien oder inkompatibler Pakete ausgegeben werden müssen. % Diese werden gegebebfalls nur einmalig bei der Aktivierung der Schriften des % \CDs ausgegeben. % \begin{macrocode} \newcommand*\tud@cdfont@wrn{\global\let\tud@cdfont@wrn\relax} \newcommand*\tud@cdmath@wrn{\global\let\tud@cdmath@wrn\relax} % \end{macrocode} % \end{macro}^^A \tud@cdmath@wrn % \end{macro}^^A \tud@cdfont@wrn % % \subsection{Auswahl des Fontformates} % % Das \TUDScript-Bundle unterstützt sowohl die Schriftauswahl im klassischen % New Font Selection Scheme (NFSS) als auch das Einbinden der Schriften im % OpenType-Format aus dem System über das Paket \pkg{fontspec} für Lua\LaTeX{} % bzw. Xe\LaTeX{}, wobei die letztere Variante nicht ideal ist. Zum einen % funktioniert das Kerning nicht sonderlich gut und zum anderen sind keine % Schriften für den mathematischen Satz vorhanden. % % \begin{macro}{\if@tud@x@fontspec@enabled} % \changes{v2.02}{2014/08/29}{neu}^^A % Wird das Paket \pkg{fontspec} durch den Nutzer geladen, wird der passende % Schlüssel gesetzt und die Schrifteinstellungen erfolgen mit den dazugehörigen % Befehlen. Dies wurde in früheren Versionen mit der Option \opt{fontspec} % realisiert, die auch weiterhin bereitgehalten wird. Nach dem Laden des Paketes % 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} \tud@newif\if@tud@x@fontspec@enabled \PassOptionsToPackage{no-math}{fontspec} \AfterPackage*{fontspec}{% \@ifpackagelater{fontspec}{2017/01/24}{% \@tud@x@fontspec@enabledtrue% \@tud@res@swafalse% \@ifpackagewith{fontspec}{no-math}{}{\@tud@res@swatrue}% \@ifpackagewith{fontspec}{math}{\@tud@res@swatrue}{}% \if@tud@res@swa% \appto\tud@cdmath@wrn{% %<*class> \ClassWarningNoLine{\TUD@Class@Name}% % %<*package> \PackageWarningNoLine{tudscrfonts}% % {% It's recommended to load package `fontspec'\MessageBreak% with option `no-math', if you want to use the\MessageBreak% corporate design fonts in math mode% }% }% \fi% }{% \@tud@x@fontspec@enabledfalse% %<*class> \ClassWarningNoLine{\TUD@Class@Name}% % %<*package> \PackageWarningNoLine{tudscrfonts}% % {% Version `2017/01/24' of package `fontspec' is needed,\MessageBreak% but only version\MessageBreak% `\csname ver@fontspec.sty\endcsname'\MessageBreak% is available, so a fallback layout is used% }% }% } % \end{macrocode} % 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{% %<*class> \ClassWarningNoLine{\TUD@Class@Name}% % %<*package> \PackageWarningNoLine{tudscrfonts}% % {% The usage of package `unicode-math' will\MessageBreak% most likely cause erroneous outputs in math mode\MessageBreak% with corporate design fonts% }% }% } % \end{macrocode} % \end{macro}^^A \if@tud@x@fontspec@enabled % \begin{macro}{\if@tud@x@mweights@enabled} % \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} \tud@newif\if@tud@x@mweights@enabled \AfterPackage*{mweights}{\@tud@x@mweights@enabledtrue} % \end{macrocode} % \end{macro}^^A \if@tud@x@mweights@enabled % % \subsection{Prüfen der Schriftverfügbarkeit} % % Nachfolgend werden Makros definiert, mit denen geprüft werden kann, ob die % notwendigen Schriften im passenden Fontformat auch installiert sind. Seit % 2018 wird \OpenSans als die Hausschrift verwendet. Um weiterhin noch alte % Dokumente mit den Schriften \Univers und \DIN nutzen zu können, werden die % entsprechenden Befehle ebenfalls vorgehalten. % % \begin{macro}{\tud@cdfont@fam} % \changes{v2.06}{2018/07/12}{neu}^^A % \begin{macro}{\tud@cdfont@fam@lf} % \changes{v2.06}{2018/07/12}{neu}^^A % \begin{macro}{\tud@cdfont@fam@osf} % \changes{v2.06}{2018/07/12}{neu}^^A % \begin{macro}{\tud@cdfont@db} % Zu Beginn werden Schalter und Hilfsmakros sowohl für den Fließtext\dots % \begin{macrocode} \newcommand*\tud@cdfont@fam{opensans-TLF} \newcommand*\tud@cdfont@fam@lf{opensans-TLF} \newcommand*\tud@cdfont@fam@osf{opensans-TOsF} \if@tud@cdoldfont@active \renewcommand*\tud@cdfont@fam{lun} \renewcommand*\tud@cdfont@fam@lf{lun} \renewcommand*\tud@cdfont@fam@osf{lun} \newcommand*\tud@cdfont@db{0m6} \fi % \end{macrocode} % \end{macro}^^A \tud@cdfont@db % \end{macro}^^A \tud@cdfont@fam@osf % \end{macro}^^A \tud@cdfont@fam@lf % \end{macro}^^A \tud@cdfont@fam % \begin{macro}{\tud@ttfont@fam} % \changes{v2.06}{2018/07/12}{neu}^^A % \begin{macro}{\tud@ttfont@rb} % \changes{v2.06}{2018/07/12}{neu}^^A % \begin{macro}{\tud@ttfont@lm} % \changes{v2.06}{2018/07/12}{neu}^^A % \dots als auch für die TypeWriter-Schriften definiert. % \begin{macrocode} \newcommand*\tud@ttfont@fam{tudtt} \newcommand*\tud@ttfont@rb{tudtt} \newcommand*\tud@ttfont@lm{lmtt} % \end{macrocode} % \end{macro}^^A \tud@ttfont@lm % \end{macro}^^A \tud@ttfont@rb % \end{macro}^^A \tud@ttfont@fam % \begin{macro}{\if@tud@ttfont@rb@exist} % \changes{v2.06}{2018/07/12}{neu}^^A % Die TypeWriter-Schrift aus \pkg{roboto-mono} kann nur genutzt werden, wenn % diese tatsächlich auch vorhanden ist. % \begin{macrocode} \tud@newif\if@tud@ttfont@rb@exist \IfFileExists{roboto-mono.sty}{% \@tud@ttfont@rb@existtrue% }{% \TUD@key@preset{ttfont}{lmodern}% } % \end{macrocode} % \end{macro}^^A \if@tud@ttfont@rb@exist % \begin{macro}{\tud@cdfont@check} % \changes{v2.04}{2015/03/10}{neu}^^A % \begin{macro}{\tud@cdfont@@check} % \changes{v2.06}{2018/07/12}{Auswahl der Schriftfamilie angepasst}^^A % \changes{v2.06b}{2019/07/17}{Verwendung von \cs{tud@if@fdfileexists}}^^A % \begin{macro}{\tud@cdfont@@@check} % \changes{v2.06}{2019/06/18}{neu}^^A % \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 % beide Formate vom Paket \pkg{opensans} geliefert, die veralteten Schriften % \Univers und \DIN müssen aus lizenrechtlichen Gründen installiert werden. Bei % 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}{% Light,,Bold,Black,% 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@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 % genutzt, um fehlende Glyphen und Symbole für die Mathematikschriften des \CDs % zu ergänzen. % \begin{macrocode} \@ifpackageloaded{opensans}{% %<*class> \ClassWarningNoLine{\TUD@Class@Name}% % %<*package> \PackageWarningNoLine{tudscrfonts}% % {% You should not load package `opensans'\MessageBreak% manually but just use option `cdfont=true'% }% }{}% \if@tud@cdfont@active% \TUD@CheckPackage{opensans}{2019/06/20}% \TUD@CheckPackage{iwona}{2005/10/03}% \fi% \tud@cdfont@@check{OpenSans}{% 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} % Dieses Makro prüft auf das Vorhandensein der Schriften für den Fließtext. % Im optionalen Argument wird das Trennzeichen zwischen dem Hauptnamen für die % OTF-Schriften aus dem ersten obligatorischen Argument und der Liste der % Bezeichnungen für die einzelnen Schriftschnitte im zweiten obligatorischen % Argument angegeben. Die darauffolgenden Argumente enthalten die zu prüfenden % Type1-Schriftfamilien und die Bezeichnung des zu setzenden Schalters. % \begin{macrocode} \newcommand*\tud@cdfont@@check[5][-]{% \@tud@res@swatrue% \def\tud@res@a##1{% \@tud@res@swafalse% \tud@cdfont@missing{##1}{\tud@cdfont@wrn}% }% % \end{macrocode} % Für jede der OTF-Schriften wird eine Warnung ausgegeben, falls diese nicht % installiert ist. Um sicher zu gehen, dass das Layout komplett genutzt werden % kann, ist es hinreichend, wenn eine der benötigten Schriften nicht existiert, % um die Rückfallebene zu aktivieren. % \begin{macrocode} \if@tud@x@fontspec@enabled% \def\tud@res@b##1{\IfFontExistsTF{##1}{}{\tud@res@a{##1}}}% \@for\tud@res@c:={#3}\do{% \expandafter\IfArgIsEmpty\expandafter{\tud@res@c}% {\tud@res@b{#2}}% {\tud@res@b{#2#1\tud@res@c}}% }% \else% % \end{macrocode} % Ist \pkg{fontspec} nicht aktiv, wird auf die Type1-Schriften für den % Fließtext für die aktuelle Kodierung im gleichen Maße geprüft. % \begin{macrocode} \def\tud@res@b##1##2{% % \end{macrocode} % Der Schalter \cs{if@tud@res@swa} wird \val{false} gesetzt, falls die Schrift % gefunden wurde. Der zu prüfenden Schriftname wird dabei in unterschiedlichen % Varianten getestet, da \cs{IfFileExists} auf unixoiden Betriebssystemen % case-sensitiv ist. % \begin{macrocode} \tud@if@fdfileexists{##1}{##2}{}{% % \end{macrocode} % Existiert die Schrift nicht, wird die entsprechende Warnung ausgegeben. % \begin{macrocode} \begingroup% \edef\tud@res@a{% \endgroup% \noexpand\tud@res@a{##1##2.fd}% }% \tud@res@a% }% }% \@for\tud@res@c:={#4}\do{\tud@res@b{\encodingdefault}{\tud@res@c}}% \fi% % \end{macrocode} % Zuletzt wird der angegebene Schalter gesetzt. % \begin{macrocode} \if@tud@res@swa% \booltrue{#5}% \else% \boolfalse{#5}% \fi% } % \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 und der im dritten Argument gegebene Schalter % wird entsprechend gesetzt. % \begin{macrocode} \newcommand*\tud@cdfont@@@check[3]{% \@tud@res@swatrue% \def\tud@res@a##1##2{% \@tud@res@swafalse% \tud@cdfont@missing[{##1}]{##2}{\tud@cdmath@wrn}% }% \def\tud@res@b##1##2{% \tud@if@fdfileexists{##1}{##2}{}{% \begingroup% \edef\tud@res@a{% \endgroup% \noexpand\tud@res@a{##1}{##1##2.fd}% }% \tud@res@a% }% }% \@for\tud@res@c:={#1}\do{\tud@res@b{\tud@res@c}{#2}}% % \end{macrocode} % 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% \booltrue{#3}% \else% \boolfalse{#3}% \AtBeginDocument{% \if@tud@cdmath@active% %<*class> \ClassWarningNoLine{\TUD@Class@Name}% % %<*package> \PackageWarningNoLine{tudscrfonts}% % {% 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% \if@tud@cdoldfont@active% all necessary fonts with a installation script\MessageBreak% listed in the manual% \else% package `opensans'% \fi% }% \fi% \TUDoptions{cdmath=false}% }% \fi% } % \end{macrocode} % Das Makro für die Erstellung einer Warnung bei fehlenden Schriften. Diese % wird an den Hook im letzten Argument angehängt. % \begin{macrocode} \newcommand*\tud@cdfont@missing[3][\encodingdefault]{% \begingroup% \def\tud@res@a{% `#2' font\MessageBreak% not found for `#1' encoding. \MessageBreak% }% \if@tud@x@fontspec@enabled% \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% the fonts manually to your OS\MessageBreak% \if@tud@cdoldfont@active\else% or install package `opensans'\MessageBreak% \fi% }% }{}% \else% \if@tud@cdoldfont@active% \def\tud@res@b{T1,OT1,OMS,OML}% \else% \def\tud@res@b{T1,OT1,T2A,T2B,T2C,X2,LGR}% \fi% \@tud@res@swafalse% \@for\tud@res@c:=\tud@res@b\do{% \tud@if@strequal{#1}{\tud@res@c}{\@tud@res@swatrue}{}% }% % \end{macrocode} % Wird eine unterstützte Kodierung verwendet, müssen die Schriften installiert % werden. % \begin{macrocode} \if@tud@res@swa% \appto\tud@res@a{% You should % \if@tud@cdoldfont@active% try to install the necessary fonts\MessageBreak% with a installation script listed in the manual% \else% install package `opensans'% \fi% . \MessageBreak% }% \else% \tud@if@strequal{#1}{\encodingdefault}{% \tud@if@strequal{#1}{TU}{% \appto\tud@res@a{% You should either load package `fontspec'\MessageBreak% or % }% }{% \appto\tud@res@a{Please }% }% \appto\tud@res@a{% choose a possible encoding with package\MessageBreak% `fontenc' (\tud@res@b). \MessageBreak% }% }{}% \fi% \fi% \appto\tud@res@a{A fallback layout is used}% \edef\tud@res@c{% %<*class> \unexpanded{\ClassWarningNoLine{\TUD@Class@Name}}% % %<*package> \unexpanded{\PackageWarningNoLine{tudscrfonts}}% % {\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 % % \iffalse % %<*option> % \fi % % \subsection{Optionen und Befehle zur Schriftauswahl} % % Hier werden die Optionen und Befehle zur Schriftauswahl definiert. % % \subsubsection{Schriften für den Fließtext} % \begin{option}{cdfont} % \changes{v2.02}{2014/07/08}{Schlüsselwerte für \opt{cdhead}}^^A % \changes{v2.02}{2014/08/29}{Schlüsselwerte für \opt{fontspec}}^^A % \changes{v2.05}{2016/04/04}{Schlüsselwerte für \val{ultrabold}}^^A % \changes{v2.05l}{2017/03/29}{Standardeinstellungen für \opt{cdmath}}^^A % \begin{macro}{\if@tud@cdfont@active} % \changes{v2.06}{2018/06/26}{neu}^^A % \begin{macro}{\if@tud@cdfont@heavy} % \changes{v2.06}{2018/06/26}{neu}^^A % \begin{macro}{\if@tud@cdfont@ultrabold} % \changes{v2.05}{2016/04/04}{neu}^^A % \begin{macro}{\if@tud@cdfont@lining} % \changes{v2.06}{2018/07/10}{neu}^^A % \begin{macro}{\tud@cdfont@activate} % \changes{v2.06}{2018/07/02}{neu}^^A % \begin{macro}{\tud@cdfont@deactivate} % \changes{v2.06}{2018/07/24}{neu}^^A % Mit dieser Option wird die zentrale Benutzerschnittstelle für alle möglichen % Schrifteinstellungen innerhalb Dokumentes geschaffen. Durch diese Option % können sowohl die verwendete Schrift für den Fließtext, als auch die Stärke % 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{ % Option evtl. überarbeiten und nicht mehr im Dokument zulassen; % das macht alles um einiges einfacher, siehe \opt{cdoldfont}, \opt{cdmath} % }[v2.07] % \begin{macrocode} \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}{% \TUD@bool@numkey,% {light}{1},{lightfont}{1},{lite}{1},{litefont}{1},{noheavyfont}{1},% {heavy}{2},{heavyfont}{2},{bold}{2},{boldfont}{2},% {normalbold}{3},{boldnormal}{3},% {ultrabold}{4},{boldultra}{4},{heavybold}{4},{boldheavy}{4},% {extendedbold}{4},{boldextended}{4},% {lf}{5},{lfigures}{5},{liningfigures}{5},{lining}{5},% {ln}{5},{lnumbers}{5},{liningnumbers}{5},% {nf}{5},{nfigures}{5},{normalfigures}{5},% {nn}{5},{nnumbers}{5},{normalnumbers}{5},% {osf}{6},{osfigures}{6},{oldfigures}{6},{oldstylefigures}{6},{oldstyle}{6},% {osn}{6},{osnumbers}{6},{oldnumbers}{6},{oldstylenumbers}{6},% {nomath}{7},{nocdmath}{7},% {serifmath}{7},{serif}{7},{nosansmath}{7},{nosans}{7},% {math}{8},{cdmath}{8},{sansmath}{8},{sans}{8},% {upgreek}{9},{uprightgreek}{9},{uprightgreeks}{9},% {slgreek}{10},{slantedgreek}{10},{slantedgreeks}{10},% {itgreek}{10},{italicgreek}{10},{italicgreeks}{10},% {texgreek}{11},{latexgreek}{11},{texgreeks}{11},{latexgreeks}{11},% {standardgreek}{11},{standardgreeks}{11},% {fontspec}{12},{luatex}{12},{lualatex}{12}{xetex}{12},{xelatex}{12},% {nofontspec}{13},{nfss}{13},{pdftex}{13},{pdflatex}{13}% %<*class> ,{nohead}{14},{nocdhead}{14},{noheadfont}{14},{noheadcdfont}{14},% {nocdheadfont}{14},{nobar}{14},{nobarfont}{14},% {head}{15},{headfont}{15},{cdhead}{15},{headcdfont}{15},{cdheadfont}{15},% {bar}{15},{barfont}{15},% {lighthead}{15},{lightheadfont}{15},{lightfonthead}{15},% {lightcdhead}{15},{lightheadcdfont}{15},{lightcdheadfont}{15},% {lightbar}{15},{lightbarfont}{15},{lightfontbar}{15},% {headlight}{15},{headfontlight}{15},{headlightfont}{15},% {cdheadlight}{15},{headcdfontlight}{15},{cdheadfontlight}{15},% {barlight}{15},{barfontlight}{15},{barlightfont}{15},% {litehead}{15},{liteheadfont}{15},{litefonthead}{15},% {litecdhead}{15},{liteheadcdfont}{15},{litecdheadfont}{15},% {litebar}{15},{litebarfont}{15},{litefontbar}{15},% {headlite}{15},{headfontlite}{15},{headlitefont}{15},% {cdheadlite}{15},{headcdfontlite}{15},{cdheadfontlite}{15},% {barlite}{15},{barfontlite}{15},{barlitefont}{15},% {noheavyhead}{15},{noheavyheadfont}{15},{noheavyfonthead}{15},% {noheavycdhead}{15},{noheavyheadcdfont}{15},{noheavycdheadfont}{15},% {noheavybar}{15},{noheavybarfont}{15},{noheavyfontbar}{15},% {headnoheavy}{15},{headfontnoheavy}{15},{headnoheavyfont}{15},% {cdheadnoheavy}{15},{headcdfontnoheavy}{15},{cdheadfontnoheavy}{15},% {barnoheavy}{15},{barfontnoheavy}{15},{barnoheavyfont}{15},% {heavyhead}{16},{heavyheadfont}{16},{heavyfonthead}{16},% {heavycdhead}{16},{heavyheadcdfont}{16},{heavycdheadfont}{16},% {heavybar}{16},{heavybarfont}{16},{heavyfontbar}{16},% {headheavy}{16},{headfontheavy}{16},{headheavyfont}{16},% {cdheadheavy}{16},{headcdfontheavy}{16},{cdheadfontheavy}{16},% {barheavy}{16},{barfontheavy}{16},{barheavyfont}{16}% % }{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed% % \end{macrocode} % Die ersten drei Werte dienen zum Umschalten auf die Schriften des \CDs für % den Fließtext. % \begin{macrocode} \ifcase\@tempa\relax% false \tud@cdfont@deactivate% \or% true \@tud@cdfont@heavyfalse% \tud@cdfont@activate% \or% heavy \@tud@cdfont@heavytrue% \tud@cdfont@activate% % \end{macrocode} % Für die Definition der fetten Schriftstärke kommt je nach Einstellung ein % anderer Schriftschnitt zum Einsatz. % \begin{macrocode} \or% normalbold \@tud@cdfont@ultraboldfalse% \tud@cdfont@activate% \or% ultrabold \@tud@cdfont@ultraboldtrue% \tud@cdfont@activate% % \end{macrocode} % Hier wird die Art der Ziffern für den Fleißtext festgelegt. % \begin{macrocode} \or% liningfigures \@tud@cdfont@liningtrue% \tud@cdfont@activate% \or% oldstylefigures \@tud@cdfont@liningfalse% \tud@cdfont@activate% % \end{macrocode} % Die Mathematikschriften. % \begin{macrocode} \or% nomath \TUDoptions{cdmath=false}% \or% math \TUDoptions{cdmath=true}% % \end{macrocode} % Die Neigung der griechischen Majuskeln. % \begin{macrocode} \or% uprightgreek \TUDoptions{slantedgreek=false}% \or% slantedgreek \TUDoptions{slantedgreek=true}% \or% standardgreek \TUDoptions{slantedgreek=standard}% % \end{macrocode} % Die Verwendung von \pkg{fontspec}. % \begin{macrocode} \or% fontspec \TUDoptions{fontspec=true}% \or% nofontspec \TUDoptions{fontspec=false}% % \end{macrocode} % Die Schrift für den Querbalken. % \begin{macrocode} %<*class> \or% nohead \TUDoptions{cdhead=false}% \or% head \TUDoptions{cdhead=true}% \or% heavyhead \TUDoptions{cdhead=heavy}% % \fi% % \end{macrocode} % Wird kein gültiger Wert für die Option angegeben, so wird davon ausgegangen, % dass es sich bei diesem um die gewünschte Schriftgröße handelt. % \begin{macrocode} \else% \TUD@set@dimkey{cdfont}{\@tempa}{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed% \TUDoptions{fontsize=#1}% \tud@cdfont@activate% \fi% \fi% } \newcommand*\tud@cdfont@activate{% \@tud@cdfont@activetrue% % \end{macrocode} % Die Schrift im Querbalken wird bei den Klassen angepasst. % \begin{macrocode} %<*class> \if@tud@cdfont@heavy% \tud@locked@num@preset{tud@head@font@num}{2}% \else% \tud@locked@num@preset{tud@head@font@num}{1}% \fi% % \TUD@SpecialOptionAtDocument{tud@font@set}% \tud@locked@bool@preset{@tud@cdmath@active}{true}% \TUD@SpecialOptionAtDocument{tud@math@set}% } \newcommand*\tud@cdfont@deactivate{% \@tud@cdfont@activefalse% %<*class> \tud@locked@num@preset{tud@head@font@num}{0}% % \TUD@SpecialOptionAtDocument{tud@font@set}% \tud@locked@bool@preset{@tud@cdmath@active}{false}% \TUD@SpecialOptionAtDocument{tud@math@set}% } % \end{macrocode} % \end{macro}^^A \tud@cdfont@deactivate % \end{macro}^^A \tud@cdfont@activate % \end{macro}^^A \if@tud@cdfont@lining % \end{macro}^^A \if@tud@cdfont@ultrabold % \end{macro}^^A \if@tud@cdfont@heavy % \end{macro}^^A \if@tud@cdfont@active % \end{option}^^A cdfont % \begin{option}{cdoldfont} % \changes{v2.06}{2018/07/12}{neu}^^A % \begin{macro}{\if@tud@cdoldfont@active} % \changes{v2.06}{2018/07/12}{neu}^^A % \begin{macro}{\if@tud@cdoldfont@nodin} % \changes{v2.06}{2018/07/12}{neu}^^A % Seit 2018 wird \OpenSans als Hausschrift im \TUDCD genutzt. Für die Nutzung % der vormals verwendeten Schriften \Univers und \DIN für ältere Dokumente wird % die Option \pkg{cdoldfont} bereitgestellt. Damit werden die Befehle zur % Schriftauswahl für die \TUDScript-Klassen oder das Paket \pkg{tudscrfonts} % entsprechend angepasst. % \begin{macrocode} \tud@newif\if@tud@cdoldfont@active \tud@newif\if@tud@cdoldfont@nodin \TUD@key{cdoldfont}[true]{% \TUD@set@numkey{cdoldfont}{@tempa}{% \TUD@bool@numkey,% {din}{1},{dinbold}{1},% {nodin}{2},{nodinbold}{2},% {onlydin}{3},{onlydinbold}{3}% }{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed% \ifcase\@tempa\relax% false \@tud@cdoldfont@activefalse% \@tud@cdoldfont@nodintrue% % \end{macrocode} % 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{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% \tud@cdfont@deactivate% \fi% \or% true/din \@tud@cdoldfont@activetrue% \@tud@cdoldfont@nodinfalse% \tud@cdfont@activate% \or% nodin \@tud@cdoldfont@activetrue% \@tud@cdoldfont@nodintrue% \tud@cdfont@activate% \or% onlydin \@tud@cdoldfont@activetrue% \@tud@cdoldfont@nodinfalse% \tud@cdfont@deactivate% \fi% \else% \@tud@cdoldfont@activetrue% \TUDoptions{cdfont=#1}% \fi% } \TUD@key{cdoldfonts}[true]{\TUDoptions{cdoldfont=#1}} %<*class> \AtEndOfClass% % %<*package> \AtEndOfPackage% % {% \if@tud@cdoldfont@active% % \end{macrocode} % Der aktive Zustand der Option \opt{cdoldfont} wird \enquote{eingefroren}. % \begin{macrocode} \let\@tud@cdoldfont@activefalse\@tud@cdoldfont@activetrue% % \end{macrocode} % Wenn die Option \opt{cdoldfont} beim Laden der Klasse aktiviert wurde, kann % sie auch im Dokument genutzt werden. Um möglichst einfach alte Dokumente mit % den alten Schriften setzen zu können, wird die Option \opt{cdfont} in diesem % Fall um die alten Werte erweitert. % \begin{macrocode} \TUD@key[.comp]{cdfont}{% \TUD@set@numkey{cdfont}{@tempa}{% {din}{1},{dinbold}{1},% {nodin}{2},{nodinbold}{2},% {onlydin}{3},{onlydinbold}{3}% }{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed% \TUDoptions{cdoldfont=#1}% \fi% }% % \end{macrocode} % Andernfalls wird \opt{cdoldfont} schlichtweg deaktiviert. % \begin{macrocode} \else% \TUD@key{cdoldfont}[]{% %<*class> \ClassError{\TUD@Class@Name}% % %<*package> \PackageError{tudscrfonts}% % {Option `cdoldfont' not active}{% Option `cdoldfont' must be activated while loading the\MessageBreak% %<*class> class `\TUD@Class@Name'\space% % %<*package> package `tudscrfonts'\space% % but you have tried to set it up later.% }% \FamilyKeyStateProcessed% }% \fi% } % \end{macrocode} % \end{macro}^^A \if@tud@cdoldfont@nodin % \end{macro}^^A \if@tud@cdoldfont@active % \end{option}^^A cdoldfont % \begin{option}{fontsize} % \changes{v2.04}{2015/04/24}{Option aus \KOMAScript{} erweitert}^^A % \begin{macro}{\if@tud@x@scr@fontsize@set} % \changes{v2.05}{2015/07/24}{neu}^^A % Die genutzte Grundschriftgröße kann mit der \KOMAScript-Option \opt{fontsize} % eingestellt werden. Um ein aktives Setzen der Schriftgröße zu erkennen, wird % für das Laden der \TUDScript-Klasse ein Schlüssel definiert, der den Wert an % \KOMAScript{} weiterreicht. % \begin{macrocode} %<*class> \tud@newif\if@tud@x@scr@fontsize@set % \TUD@key{fontsize}{% \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 % Option also lokal dem Paket selbst übergeben wurde~--, wird eine Warnung mit % 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% }% }% \expandafter\AtEndOfPackage\expandafter{\tud@res@a}% \fi% % %<*class> \@tud@x@scr@fontsize@settrue% % \TUD@KOMAoptions{fontsize=#1}% \fi% \fi% % \end{macrocode} % Für ungültige Werte wird eine Warnung ausgegeben. % \begin{macrocode} \ifx\FamilyKeyState\FamilyKeyStateUnknownValue% %<*class> \ClassWarningNoLine{\TUD@Class@Name}% % %<*package> \PackageWarningNoLine{tudscrfonts}% % {% The value for option `fontsize' must be a dimension\MessageBreak% and at least 1pt but `#1' was given% }% \FamilyKeyStateProcessed% \fi% } %<*class> \AtEndOfClass% % %<*package> \AtEndOfPackage% % {% \RelaxFamilyKey{TUD}{fontsize}% \DefineFamilyMember{KOMA}% \DefineFamilyKey{KOMA}{fontsize}{% \FamilyKeyStateUnknownValue% %<*class> \@tud@x@scr@fontsize@settrue% \ClassWarning{\TUD@Class@Name}% % %<*package> \PackageWarning{tudscrfonts}% % {% The key `fontsize=#1' should only be\MessageBreak% used as class option% }% \TUD@SpecialOptionAtDocument{tud@relspacing@set}% }% } % \end{macrocode} % \end{macro}^^A \if@tud@x@scr@fontsize@set % \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 Längendefinition erfolgt durch das Makro \cs{tud@relspacing@set}. % \begin{macrocode} \tud@newif\if@tud@relspacing \TUD@key{relspacing}[true]{% \TUD@set@numkey{relspacing}{@tempa}{% \TUD@bool@numkey,% {absolute}{0},{classic}{0},{standard}{0},% {relative}{1},{fontsize}{1},{font}{1},{size}{1}% }{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed% \ifcase\@tempa\relax% false \@tud@relspacingfalse% \or% true \@tud@relspacingtrue% \fi% \TUD@SpecialOptionAtDocument{tud@relspacing@set}% \fi% } % \end{macrocode} % \end{macro}^^A \if@tud@relspacing % \end{option}^^A relspacing % % \iffalse % %<*body> % \fi % % \begin{macro}{\tud@x@fontspec@init} % \changes{v2.06}{2018/06/28}{neu}^^A % Dieses Makro wird bei der Initialisierun der Schriftfamilien aufgerufen, % falls \pkg{fontspec} aktiv ist. Das erste Argument enthält den NFSS-Namen % der Schriftfamilie, das zweite Argument spezifiziert die Schriften für die % jeweiligen Schriftschnitte. % \begin{macrocode} \newcommand*\tud@x@fontspec@init[2]{% % \end{macrocode} % Durch die Verwendung des optionalen Argumentes von \cs{defaultfontfeatures} % werden die gewünschten Features einem Schriftfamiliennamen zugewiesen. Diese % können anschließend einfach bspw. mit \cs{setsansfont}\marg{Name} genutzt % werden. Damit alle Änderungen lokal bleiben, werden die Argumente in einer % Gruppe expandiert. % \begin{macrocode} \begingroup% \edef\tud@res@a{% \noexpand\defaultfontfeatures[{#1}]{% NFSSFamily=#1,% Ligatures=TeX,% BoldFont={},% ItalicFont={},% BoldItalicFont={},% SmallCapsFont={},% #2% }% }% % \end{macrocode} % Damit die Schrift mit ihrem NFSS-Namen auf jeden Fall definiert ist, auch % wenn die Schriften des \CDs nicht aktiviert wurden, wird \cs{newfontfamily} % aufgerufen. % \begin{macrocode} \edef\tud@res@b{% \noexpand\newfontfamily% \expandafter\noexpand\csname tud@x@fontspec@fam@#1\endcsname{#1}% }% % \end{macrocode} % Die expandierten Argumente werden nach der Gruppe ausgeführt. % \begin{macrocode} \edef\tud@res@c{% \endgroup\expandonce\tud@res@a\expandonce\tud@res@b% }% \tud@res@c% } % \end{macrocode} % \end{macro}^^A \tud@x@fontspec@init % \begin{macro}{\tud@x@fontspec@set} % \changes{v2.06}{2018/08/31}{neu}^^A % Das Paket \pkg{fontspec} ermöglicht es leider nicht, mit \cs{newfontfamily} % bereits definierte Schriftfamilien für die Zuweisung mit \cs{setmainfont} % etc. zu nutzen. Deshalb wird folgendes Hilfsmakro definiert, welches diese % Aufgabe übernimmt. % \begin{macrocode} \newcommand*\tud@x@fontspec@set[2]{% \begingroup% \edef\tud@res@a{% \expandafter\noexpand\csname tud@x@fontspec@fam@#2\endcsname% }% \edef\tud@res@a{% \endgroup% \noexpand\renewrobustcmd*% \expandafter\noexpand\csname #1family\endcsname{% \expandafter\noexpand\csname tud@x@fontspec@fam@#2\endcsname% }% \def\expandafter\noexpand\csname #1default\endcsname{\tud@cdfont@fam}% }% \tud@res@a% } % \end{macrocode} % \end{macro}^^A \tud@x@fontspec@set % \begin{macro}{\tud@font@set} % \changes{v2.04}{2015/03/01}{Unterstützung für das Paket \pkg{mweights}}^^A % \begin{macro}{\bfseries@rm} % \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A % \begin{macro}{\mdseries@rm} % \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A % \begin{macro}{\bfseries@sf} % \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A % \begin{macro}{\mdseries@sf} % \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A % \begin{macro}{\bfseries@tt} % \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A % \begin{macro}{\mdseries@tt} % \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A % \begin{macro}{\rmdef@ult} % \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A % \begin{macro}{\sfdef@ult} % \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A % \begin{macro}{\ttdef@ult} % \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A % \begin{macro}{\bfdef@ult} % \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A % \begin{macro}{\mddef@ult} % \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A % Mit \cs{tud@font@set} werden entweder die normalen oder aber die Schriften % des \CDs aktiviert. Dabei werden die Pakete \pkg{fontspec} und \pkg{mweights} % beachtet. % \begin{macrocode} \newcommand*\tud@font@set[1][\tud@cdfont@wrn]{% % \end{macrocode} % 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}% \tud@cs@store{bfdefault}% \tud@cs@store{mddefault}% \tud@cs@store{updefault}% \tud@cs@store{sldefault}% \tud@cs@store{itdefault}% \tud@cs@store{familydefault}% \tud@cs@store{seriesdefault}% \tud@cs@store{shapedefault}% \if@tud@x@mweights@enabled% \tud@cs@store{bfseries@rm}% \tud@cs@store{mdseries@rm}% \tud@cs@store{bfseries@sf}% \tud@cs@store{mdseries@sf}% \tud@cs@store{bfseries@tt}% \tud@cs@store{mdseries@tt}% \fi% % \end{macrocode} % Das Paket \pkg{fontspec} definiert u.\,U. die Familienauswahlbefehle um, so % dass diese ebenfalls gesichert werden. % \begin{macrocode} \if@tud@x@fontspec@enabled% \tud@cs@store{rmfamily}% \tud@cs@store{sffamily}% \tud@cs@store{ttfamily}% \fi% % \end{macrocode} % Danach erfolgt die Definition der Schriften des \CDs. % \begin{macrocode} \tud@cdfont@set% \tud@cdfont@symbols@set% \tud@ttfont@set% \if@tud@x@mweights@enabled% \edef\bfseries@rm{\tud@cdfont@bf}% \edef\mdseries@rm{\tud@cdfont@md}% \edef\bfseries@sf{\tud@cdfont@bf}% \edef\mdseries@sf{\tud@cdfont@md}% \edef\bfseries@tt{\tud@ttfont@bf}% \edef\mdseries@tt{\tud@ttfont@md}% \fi% \let\bfdefault\tud@cdfont@bf% \let\mddefault\tud@cdfont@md% % \end{macrocode} % Werden die Schriften des \CDs deaktiviert, wird auf die zu Dokumentbeginn % gesicherten Schriften\footnote{mit und ohne Serifen} zurückgeschaltet. % \begin{macrocode} \else% \tud@cs@restore{rmdefault}% \tud@cs@restore{sfdefault}% \tud@cs@restore{ttdefault}% \tud@cs@restore{bfdefault}% \tud@cs@restore{mddefault}% \tud@cs@restore{updefault}% \tud@cs@restore{sldefault}% \tud@cs@restore{itdefault}% \tud@cs@restore{familydefault}% \tud@cs@restore{seriesdefault}% \tud@cs@restore{shapedefault}% \if@tud@x@mweights@enabled% \tud@cs@restore{bfseries@rm}% \tud@cs@restore{mdseries@rm}% \tud@cs@restore{bfseries@sf}% \tud@cs@restore{mdseries@sf}% \tud@cs@restore{bfseries@tt}% \tud@cs@restore{mdseries@tt}% \fi% \if@tud@x@fontspec@enabled% \tud@cs@restore{rmfamily}% \tud@cs@restore{sffamily}% \tud@cs@restore{ttfamily}% \fi% \tud@cdfont@symbols@reset% \fi% \if@tud@x@mweights@enabled% \edef\rmdef@ult{\rmdefault}% \edef\sfdef@ult{\sfdefault}% \edef\ttdef@ult{\ttdefault}% \edef\bfdef@ult{\bfdefault}% \edef\mddef@ult{\mddefault}% \edef\famdef@ult{\familydefault}% \fi% % \end{macrocode} % Zum Ende werden einige Abstände abhängig von der gewählten Schriftgröße % definiert. Danach wird gewählte Standardschrift aktiviert und für die Klassen % das Layout erneuert. % \begin{macrocode} \tud@relspacing@set% \normalfont\selectfont% %<*class> \tud@cd@process% \global\@tud@head@font@settrue% % } % \end{macrocode} % \end{macro}^^A \mddef@ult % \end{macro}^^A \bfdef@ult % \end{macro}^^A \ttdef@ult % \end{macro}^^A \sfdef@ult % \end{macro}^^A \rmdef@ult % \end{macro}^^A \mdseries@tt % \end{macro}^^A \bfseries@tt % \end{macro}^^A \mdseries@sf % \end{macro}^^A \bfseries@sf % \end{macro}^^A \mdseries@rm % \end{macro}^^A \bfseries@rm % \end{macro}^^A \tud@font@set % \begin{macro}{\tud@cdfont@set} % \changes{v2.06}{2018/06/28}{neu}^^A % \begin{macro}{\tud@cdfont@@set} % \changes{v2.06}{2018/06/28}{neu}^^A % \begin{macro}{\tud@cdfont@md} % \changes{v2.06}{2018/06/28}{neu}^^A % \begin{macro}{\tud@cdfont@bf} % \changes{v2.06}{2018/06/28}{neu}^^A % \begin{macro}{\tud@cdfont@ebf} % \changes{v2.06}{2018/06/28}{neu}^^A % 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% \else% \let\tud@cdfont@fam\tud@cdfont@fam@osf% \fi% % \end{macrocode} % Das Aktivieren der Schriften erfolgt entweder mit dem Paket \pkg{fontspec} % oder\dots % \begin{macrocode} \if@tud@x@fontspec@enabled% \tud@x@fontspec@set{sf}{\tud@cdfont@fam}% % \end{macrocode} % \dots nach dem NFSS. % \begin{macrocode} \else% \renewcommand*\sfdefault{\tud@cdfont@fam}% \fi% \tud@cdfont@@set% \fi% } \newcommand*\tud@cdfont@md{m} \newcommand*\tud@cdfont@bf{b} \newcommand*\tud@cdfont@ebf{bx} \newcommand*\tud@cdfont@@set{% \if@tud@cdfont@heavy% \renewcommand*\tud@cdfont@md{m}% \if@tud@cdfont@ultrabold% \renewcommand*\tud@cdfont@bf{b}% \renewcommand*\tud@cdfont@ebf{eb}% \else% \renewcommand*\tud@cdfont@bf{sb}% \renewcommand*\tud@cdfont@ebf{b}% \fi% \else% \renewcommand*\tud@cdfont@md{l}% \if@tud@cdfont@ultrabold% \renewcommand*\tud@cdfont@bf{sb}% \renewcommand*\tud@cdfont@ebf{b}% \else% \renewcommand*\tud@cdfont@bf{m}% \renewcommand*\tud@cdfont@ebf{sb}% \fi% \fi% } \if@tud@cdoldfont@active \renewcommand*\tud@cdfont@@set{% \if@tud@cdfont@heavy% \renewcommand*\tud@cdfont@md{m}% \if@tud@cdfont@ultrabold% \renewcommand*\tud@cdfont@bf{eb}% \renewcommand*\tud@cdfont@ebf{eb}% \else% \renewcommand*\tud@cdfont@bf{b}% \renewcommand*\tud@cdfont@ebf{eb}% \fi% \else% \renewcommand*\tud@cdfont@md{l}% \if@tud@cdfont@ultrabold% \renewcommand*\tud@cdfont@bf{b}% \renewcommand*\tud@cdfont@ebf{eb}% \else% \renewcommand*\tud@cdfont@bf{m}% \renewcommand*\tud@cdfont@ebf{b}% \fi% \fi% }% \fi % \end{macrocode} % \end{macro}^^A \tud@cdfont@ebf % \end{macro}^^A \tud@cdfont@bf % \end{macro}^^A \tud@cdfont@md % \end{macro}^^A \tud@cdfont@@set % \end{macro}^^A \tud@cdfont@set % \begin{macro}{\tud@cdfont@declare@symb} % \changes{v2.06g}{2020/06/18}{neu}^^A % \begin{macro}{\tud@cdfont@symb@list} % \changes{v2.06g}{2020/06/18}{neu}^^A % \begin{macro}{\tud@DeclareTextSymbol} % \changes{v2.06g}{2020/06/18}{neu}^^A % Mit \cs{tud@cdfont@declare@symb} können Glyhen respektive einzelne Zeichen % definiert werden, welche über das Makro \cs{tud@cdfont@symbols@set} nur zum % Einsatz kommen, wenn \opt{cdfont=true} aktiviert wurde. Damit können gezielt % Symbole in verschiedenen Kodierungen aus unterscihedlichen Schriftfamilien % definiert werden. % \begin{macrocode} \newcommand*\tud@cdfont@symb@list{} \newcommand*\tud@cdfont@declare@symb[4]{% \listeadd\tud@cdfont@symb@list{#1}% \tud@DeclareTextSymbol{#1}{#2}{#3}{#4}% } % \end{macrocode} % Die an \cs{tud@cdfont@declare@symb} übergebenen Letter für Auswahlbefehle % 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 % |\tud@cdfont@symbol@|\meta{Letter} resultiert sondern in jedem Fall % |\|\meta{Letter} erhalten bleibt. % \begin{macrocode} \newcommand*\tud@DeclareTextSymbol[4]{% \begingroup% \edef\tud@res@a{% \endgroup% \noexpand\DeclareTextCommand% {\csname tud@cdfont@symbol@#1\endcsname}{#2}% {\unexpanded{{\fontfamily{#3}\selectfont\char#4}}}% \noexpand\DeclareTextCommandDefault% {\csname tud@cdfont@symbol@#1\endcsname}% {\noexpand\UseTextSymbol{#2}{\csname tud@cdfont@symbol@#1\endcsname}}% }% \tud@res@a% \expandafter\robustify\csname tud@cdfont@symbol@#1\endcsname% } % \end{macrocode} % \end{macro}^^A \tud@DeclareTextSymbol % \end{macro}^^A \tud@cdfont@symb@list % \end{macro}^^A \tud@cdfont@declare@symb % \begin{macro}{\tud@cdfont@symbols@set} % \changes{v2.06g}{2020/06/18}{neu}^^A % \begin{macro}{\tud@cdfont@symbols@toks} % \changes{v2.06g}{2020/06/18}{neu}^^A % \begin{macro}{\tud@cdfont@symbols@set@cmd} % \changes{v2.06g}{2020/06/18}{neu}^^A % \begin{macro}{\tud@cdfont@symbols@reset} % \changes{v2.06g}{2020/06/18}{neu}^^A % Mit diesen Befehlen wird im zwischen Symbolen für die Schriften des \CDs, % welche mit \cs{tud@cdfont@declare@symb} deklariert wurden, und den normalen % gewechselt werden. % \begin{macrocode} \tud@newtoks\tud@cdfont@symbols@toks \newcommand*\tud@cdfont@symbols@set{% % \end{macrocode} % Die Sicherung der alten Definitionen erfolgt nur einmalig. Die Liste der % Symbole wird durchlaufen und die erfolgten Definitionen werden umgesetzt. % \begin{macrocode} \expandafter\IfArgIsEmpty\expandafter{\the\tud@cdfont@symbols@toks}{% \forlistloop\tud@cdfont@symbols@set@cmd\tud@cdfont@symb@list% % \end{macrocode} % Wird das Tokenregister abgerufen, soll es anschließend auch wieder geleert % werden. % \begin{macrocode} \addto@hook\tud@cdfont@symbols@toks{\tud@cdfont@symbols@toks{}}% }{}% } % \end{macrocode} % Das Vorgehen zur Wiederherstellung im Token \cs{tud@cdfont@symbols@toks} % definiert. % \begin{macrocode} \newcommand*\tud@cdfont@symbols@set@cmd[1]{% \tud@cs@store{#1}% \addto@hook\tud@cdfont@symbols@toks{\tud@cs@restore{#1}}% \tud@cs@letltx{#1}{tud@cdfont@symbol@#1}% } % \end{macrocode} % Für das Zurücksetzen muss lediglich das Tokenregister aufgerufen werden. % \begin{macrocode} \newcommand*\tud@cdfont@symbols@reset{\the\tud@cdfont@symbols@toks} % \end{macrocode} % \end{macro}^^A \tud@cdfont@symbols@reset % \end{macro}^^A \tud@cdfont@symbols@set@cmd % \end{macro}^^A \tud@cdfont@symbols@toks % \end{macro}^^A \tud@cdfont@symbols@set % \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}% \tud@cdfont@declare@symb{textrightarrow}{TS1}{iwona}{25}% \tud@cdfont@declare@symb{textuparrow}{TS1}{iwona}{94}% \tud@cdfont@declare@symb{textdownarrow}{TS1}{iwona}{95}% \tud@cdfont@declare@symb{textlangle}{TS1}{iwona}{60}% \tud@cdfont@declare@symb{textrangle}{TS1}{iwona}{62}% } % \end{macrocode} % \end{macro}^^A \tud@cdfont@declare@textsymb % \begin{macro}{\tud@relspacing@set} % \changes{v2.04}{2015/02/17}{neu}^^A % \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} % \changes{v2.04}{2015/04/24}{Wert abhängig von der Schriftgröße}^^A % \begin{macro}{\bigskipamount} % \changes{v2.04}{2015/04/24}{Wert abhängig von der Schriftgröße}^^A % \begin{macro}{\abovecaptionskip} % \changes{v2.04}{2015/04/24}{Wert abhängig von der Schriftgröße}^^A % \begin{macro}{\belowcaptionskip} % \begin{macro}{\columnsep} % \changes{v2.04}{2015/04/24}{Wert abhängig von der Schriftgröße}^^A % Mit diesem Befehl wird nach der Auswahl der Schriftgröße die Länge einiger % Abstände angepasst, die bei den \KOMAScript-Klassen nicht abhängig von dieser % sind. % \begin{macrocode} \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@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@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@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 % \end{macro}^^A \belowcaptionskip % \end{macro}^^A \abovecaptionskip % \end{macro}^^A \bigskipamount % \end{macro}^^A \medskipamount % \end{macro}^^A \smallskipamount % \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} % \changes{v2.06}{2018/06/29}{neu}^^A % \begin{macro}{\cdfontsn} % \changes{v2.06}{2018/06/29}{neu}^^A % \begin{macro}{\cdfontbn} % \changes{v2.06}{2018/06/29}{neu}^^A % \begin{macro}{\cdfontxn} % \changes{v2.06}{2018/06/29}{neu}^^A % \begin{macro}{\cdfontli} % \changes{v2.06}{2018/06/29}{neu}^^A % \begin{macro}{\cdfontri} % \changes{v2.06}{2018/06/29}{neu}^^A % \begin{macro}{\cdfontsi} % \changes{v2.06}{2018/06/29}{neu}^^A % \begin{macro}{\cdfontbi} % \changes{v2.06}{2018/06/29}{neu}^^A % \begin{macro}{\cdfontxi} % \changes{v2.06}{2018/06/29}{neu}^^A % \begin{macro}{\textcdln} % \changes{v2.06}{2018/06/29}{neu}^^A % \begin{macro}{\textcdrn} % \changes{v2.06}{2018/06/29}{neu}^^A % \begin{macro}{\textcdsn} % \changes{v2.06}{2018/06/29}{neu}^^A % \begin{macro}{\textcdbn} % \changes{v2.06}{2018/06/29}{neu}^^A % \begin{macro}{\textcdxn} % \changes{v2.06}{2018/06/29}{neu}^^A % \begin{macro}{\textcdli} % \changes{v2.06}{2018/06/29}{neu}^^A % \begin{macro}{\textcdri} % \changes{v2.06}{2018/06/29}{neu}^^A % \begin{macro}{\textcdsi} % \changes{v2.06}{2018/06/29}{neu}^^A % \begin{macro}{\textcdbi} % \changes{v2.06}{2018/06/29}{neu}^^A % \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. 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. % \begin{macrocode} \if@tud@cdfont@fam@exist% \if@tud@x@fontspec@enabled% \def\tud@res@a{% UprightFont={OpenSans-Regular},% FontFace={l}{n}{OpenSans-Light},% FontFace={m}{n}{OpenSans-Regular},% FontFace={sb}{n}{OpenSans-SemiBold},% FontFace={b}{n}{OpenSans-Bold},% FontFace={bx}{n}{OpenSans-Bold},% FontFace={eb}{n}{OpenSans-ExtraBold},% FontFace={l}{it}{OpenSans-LightItalic},% FontFace={m}{it}{OpenSans-Italic},% FontFace={sb}{it}{OpenSans-SemiBoldItalic},% FontFace={b}{it}{OpenSans-BoldItalic},% FontFace={bx}{it}{OpenSans-BoldItalic},% FontFace={eb}{it}{OpenSans-ExtraBoldItalic}% }% \tud@x@fontspec@init{\tud@cdfont@fam@osf}{Numbers=OldStyle,\tud@res@a}% \tud@x@fontspec@init{\tud@cdfont@fam@lf}{\tud@res@a}% % \end{macrocode} % Da einige Befehle mit \cs{DeclareTextSymbolDefault} für den Textmodus % definiert werden und dabei lediglich die Kodierung auf \val{OMS} oder % \val{OML} jedoch nicht den Namen der Schriftfamilie anpassen, werden hierfür % Aliasbefehle definiert, welche sich der Schriften des Paketes \pkg{iwona} % bedienen. % \begin{macrocode} \else% \IfFileExists{omliwona.fd}{% \input{omliwona.fd}% \@for\tud@res@a:={l,m,sb,b,eb}\do{% \csletcs{OML/\tud@cdfont@fam@lf/\tud@res@a/it}% {OML/iwona/\tud@res@a/it}% \csletcs{OML/\tud@cdfont@fam@osf/\tud@res@a/it}% {OML/iwona/\tud@res@a/it}% }% }{}% \IfFileExists{omsiwona.fd}{% \input{omsiwona.fd}% \@for\tud@res@a:={l,m,sb,b,eb}\do{% \csletcs{OMS/\tud@cdfont@fam@lf/\tud@res@a/n}% {OMS/iwona/\tud@res@a/n}% \csletcs{OMS/\tud@cdfont@fam@osf/\tud@res@a/n}% {OMS/iwona/\tud@res@a/n}% }% }{}% % \end{macrocode} % Nun folgen noch einzeln definierte Symbole. % \begin{macrocode} \tud@cdfont@declare@textsymb% \fi% % \end{macrocode} % Es werden mehrere Schalter zur expliziten Auswahl für die Schriftschnitte % \textcdln{Open~Sans~Light}, \textcdrn{Open~Sans~Regular}, % \textcdsn{Open~Sans~SemiBold}, \textcdbn{Open~Sans~Bold} und % \textcdxn{Open~Sans~ExtraBold} sowie \textcdli{Open~Sans~Light~Italic}, % \textcdri{Open~Sans~Regular~Italic}, \textcdsi{Open~Sans~SemiBold} % \textcdbi{Open~Sans~Bold~Italic} und \textcdxi{Open~Sans~ExtraBold~Italic} % definiert. Diese können so im Dokument unabhängig von der Option % \opt{cdfont} genutzt werden. % \begin{macrocode} \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}% \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{}% \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} % \end{macro}^^A \textcdxi % \end{macro}^^A \textcdbi % \end{macro}^^A \textcdsi % \end{macro}^^A \textcdri % \end{macro}^^A \textcdli % \end{macro}^^A \textcdxn % \end{macro}^^A \textcdbn % \end{macro}^^A \textcdsn % \end{macro}^^A \textcdrn % \end{macro}^^A \textcdln % \end{macro}^^A \cdfontxi % \end{macro}^^A \cdfontbi % \end{macro}^^A \cdfontsi % \end{macro}^^A \cdfontri % \end{macro}^^A \cdfontli % \end{macro}^^A \cdfontxn % \end{macro}^^A \cdfontbn % \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} % \begin{macro}{\univbn} % \begin{macro}{\univxn} % \begin{macro}{\univls} % \begin{macro}{\univrs} % \begin{macro}{\univbs} % \begin{macro}{\univxs} % \begin{macro}{\dinbn} % \begin{macro}{\tud@db} % \begin{macro}{\tud@db@wrn} % \begin{macro}{\textuln} % \begin{macro}{\texturn} % \begin{macro}{\textubn} % \begin{macro}{\textuxn} % \begin{macro}{\textuls} % \begin{macro}{\texturs} % \begin{macro}{\textubs} % \begin{macro}{\textuxs} % \begin{macro}{\textdbn} % Die Definition der Befehle der veralteten Schriften des \CDs. % \begin{macrocode} \if@tud@cdoldfont@active \renewcommand*\tud@cdfont@@init{% \if@tud@cdfont@fam@exist% \if@tud@x@fontspec@enabled% \def\tud@res@a{% UprightFont={Univers},% FontFace={l}{n}{Univers-Light},% FontFace={m}{n}{Univers},% FontFace={b}{n}{Univers-Bold},% FontFace={bx}{n}{Univers-Bold},% FontFace={eb}{n}{Univers-Black},% FontFace={l}{it}{Univers-LightOblique},% FontFace={m}{it}{Univers-Oblique},% FontFace={b}{it}{Univers-BoldOblique},% FontFace={bx}{it}{Univers-BoldOblique},% FontFace={eb}{it}{Univers-BlackOblique}% }% \tud@x@fontspec@init{\tud@cdfont@fam@lf}{\tud@res@a}% \fi% % \end{macrocode} % Die Schalter zur expliziten Auswahl für die \Univers-Schriftschnitte. % \begin{macrocode} \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}{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 % bereitgestellt. % \begin{macrocode} \newcommand*\textuln{}% \newcommand*\texturn{}% \newcommand*\textubn{}% \newcommand*\textuxn{}% \newcommand*\textuls{}% \newcommand*\texturs{}% \newcommand*\textubs{}% \newcommand*\textuxs{}% \DeclareTextFontCommand\textuln{\univln}% \DeclareTextFontCommand\texturn{\univrn}% \DeclareTextFontCommand\textubn{\univbn}% \DeclareTextFontCommand\textuxn{\univxn}% \DeclareTextFontCommand\textuls{\univls}% \DeclareTextFontCommand\texturs{\univrs}% \DeclareTextFontCommand\textubs{\univbs}% \DeclareTextFontCommand\textuxs{\univxs}% % \end{macrocode} % Diese werden auch für die Definition der neuen Schriftauswahlbefehle genutzt. % \begin{macrocode} \newrobustcmd*\cdfontln{\univln}% \newrobustcmd*\cdfontrn{\univrn}% \newrobustcmd*\cdfontsn{\univrn}% \newrobustcmd*\cdfontbn{\univbn}% \newrobustcmd*\cdfontxn{\univxn}% \newrobustcmd*\cdfontli{\univls}% \newrobustcmd*\cdfontri{\univrs}% \newrobustcmd*\cdfontsi{\univrs}% \newrobustcmd*\cdfontbi{\univbs}% \newrobustcmd*\cdfontxi{\univxs}% % \end{macrocode} % Anschließend wird für \DIN äquivalent verfahren. % \begin{macrocode} \if@tud@cdfont@db@exist% \if@tud@x@fontspec@enabled% \def\tud@res@a{% UprightFont={DIN-Bold},% FontFace={l}{n}{DIN-Bold},% FontFace={m}{n}{DIN-Bold},% FontFace={b}{n}{DIN-Bold},% FontFace={bx}{n}{DIN-Bold},% FontFace={eb}{n}{DIN-Bold},% FontFace={l}{it}{Font=DIN-Bold,FakeSlant=0.15},% FontFace={m}{it}{Font=DIN-Bold,FakeSlant=0.15},% FontFace={b}{it}{Font=DIN-Bold,FakeSlant=0.15},% FontFace={bx}{it}{Font=DIN-Bold,FakeSlant=0.15},% FontFace={eb}{it}{Font=DIN-Bold,FakeSlant=0.15}% }% \tud@x@fontspec@init{\tud@cdfont@db}{\tud@res@a}% \fi% % \end{macrocode} % Bei der Schriftauswahl wird die entsprechende Mathematikschrift aktiviert. % \begin{macrocode} \newrobustcmd*\tud@db{% \usefont{\f@encoding}{\tud@cdfont@db}{b}{n}% \if@tud@cdmath@active\mathversion{tuddin}\fi% }% \newrobustcmd*\dinbn{\tud@db}% % \end{macrocode} % Da der Schalter \cs{dinbn} innerhalb der Überschriften verwendet wird, sollte % dieser zumindest auch auf den Überschriftenstil schalten, falls die benötigte % Schrift selbst nicht installiert ist. % \begin{macrocode} \else% \newrobustcmd*\tud@db{\tud@db@wrn\sectfont}% \newcommand*\tud@db@wrn{% %<*class> \ClassWarning{\TUD@Class@Name}% % %<*package> \PackageWarning{tudscrfonts}% % {% Font `DIN-Bold' is not available and therefore\MessageBreak% can not be used for headings% }% \global\let\tud@db@wrn\relax% }% \newrobustcmd*\dinbn{\tud@cdfont@fallback@wrn{DIN-Bold}\sectfont}% \fi% \newcommand*\textdbn{}% \DeclareTextFontCommand\textdbn{\dinbn}% }% \fi % \end{macrocode} % \end{macro}^^A \textdbn % \end{macro}^^A \textuxs % \end{macro}^^A \textubs % \end{macro}^^A \texturs % \end{macro}^^A \textuls % \end{macro}^^A \textuxn % \end{macro}^^A \textubn % \end{macro}^^A \texturn % \end{macro}^^A \textuln % \end{macro}^^A \tud@db@wrn % \end{macro}^^A \tud@db % \end{macro}^^A \dinbn % \end{macro}^^A \univxs % \end{macro}^^A \univbs % \end{macro}^^A \univrs % \end{macro}^^A \univls % \end{macro}^^A \univxn % \end{macro}^^A \univbn % \end{macro}^^A \univrn % \end{macro}^^A \univln % \begin{macro}{\tud@cdfont@fallback} % \changes{v2.05}{2015/12/14}{neu}^^A % \begin{macro}{\tud@cdfont@fallback@wrn} % \changes{v2.05}{2015/12/14}{neu}^^A % Hier wird die Rückfallebene für die Schriftschalter sowie die dazugehörige % Warnung definiert. % \begin{macrocode} \newcommand*\tud@cdfont@fallback[4]{% \newrobustcmd*#1{% \tud@cdfont@fallback@wrn{#2}% \sffamily\csuse{#3series}\csuse{#4shape}% }% } \newcommand*\tud@cdfont@fallback@wrn[1]{% %<*class> \ClassWarning{\TUD@Class@Name}% % %<*package> \PackageWarning{tudscrfonts}% % {% The requested font `#1'\MessageBreak% is not available, a fallback layout is used% }% } % \end{macrocode} % \end{macro}^^A \tud@cdfont@fallback@wrn % \end{macro}^^A \tud@cdfont@fallback % \begin{macro}{\cdfont} % \changes{v2.04}{2015/03/04}{neu}^^A % \begin{macro}{\textcd} % \changes{v2.04}{2015/03/04}{neu}^^A % \begin{macro}{\tud@cdfont@get} % \changes{v2.04}{2015/03/04}{neu}^^A % \changes{v2.06}{2018/06/29}{für \OpenSans überarbeitet}^^A % \begin{macro}{\tud@cdfont@trim} % \changes{v2.04}{2015/03/04}{neu}^^A % \changes{v2.06}{2018/06/29}{für \OpenSans überarbeitet}^^A % \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 \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 % mit \cs{textcd} die Auswahl der Schrift über einen Textbefehl ermöglicht. % \begin{macrocode} \newcommand*\cdfont[1]{% \tud@cdfont@get{#1}% \ifx\@tempc\relax\else% \csuse{cdfont\@tempc}% \fi% } \newcommand*\textcd[2]{% \tud@cdfont@get{#1}% \ifx\@tempc\relax% \textsf{#2}% \else% \csuse{textcd\@tempc}{#2}% \fi% } \if@tud@cdoldfont@active \renewcommand*\cdfont[1]{% \tud@cdfont@get{#1}% \ifx\@tempc\relax\else% \tud@if@strequal{\@tempc}{dinbn}{\dinbn}{\csuse{univ\@tempc}}% \fi% }% \renewcommand*\textcd[2]{% \tud@cdfont@get{#1}% \ifx\@tempc\relax% \textsf{#2}% \else% \tud@if@strequal{\@tempc}{dinbn}{\textdbn{#2}}{\csuse{textu\@tempc}{#2}}% \fi% }% \fi \newcommand*\tud@cdfont@get[1]{% \tud@cdfont@trim\@tempa{#1}% \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}% % %<*package> \PackageWarning{tudscrfonts}% % {The font `#1' is unknown}% }}}}}}}}}}}}}}}}}% } \if@tud@cdoldfont@active \renewcommand*\tud@cdfont@get[1]{% \tud@cdfont@trim\@tempa{#1}% \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}% % %<*package> \PackageWarning{tudscrfonts}% % {The font `#1' is unknown}% }}}}}}}}}}}}}}% }% \fi \newcommand*\tud@cdfont@trim[2]{% \tud@strlowercase\@tempa{\trim@spaces{#2}}% \tud@cdfont@@trim{ }{}% \tud@cdfont@@trim{-}{}% \tud@cdfont@@trim{_}{}% \tud@cdfont@@trim{~}{}% \tud@cdfont@@trim{opensans}{}% \tud@cdfont@@trim{light}{l}% \tud@cdfont@@trim{regular}{r}% \tud@cdfont@@trim{book}{r}% \tud@cdfont@@trim{semi}{s}% \tud@cdfont@@trim{demi}{s}% \tud@cdfont@@trim{extra}{x}% \tud@cdfont@@trim{black}{x}% \tud@cdfont@@trim{bold}{b}% \tud@cdfont@@trim{italic}{i}% \tud@cdfont@@trim{oblique}{i}% \tud@cdfont@@trim{slanted}{i}% \let#1\@tempa% } \if@tud@cdoldfont@active \renewcommand*\tud@cdfont@trim[2]{% \tud@strlowercase\@tempa{\trim@spaces{#2}}% \tud@cdfont@@trim{ }{}% \tud@cdfont@@trim{-}{}% \tud@cdfont@@trim{_}{}% \tud@cdfont@@trim{~}{}% \tud@cdfont@@trim{ce}{}% \tud@cdfont@@trim{ff}{}% \tud@cdfont@@trim{univers}{}% \tud@cdfont@@trim{60}{65}% \tud@cdfont@@trim{light}{45}% \tud@cdfont@@trim{regular}{55}% \tud@cdfont@@trim{bold}{65}% \tud@cdfont@@trim{black}{75}% \tud@cdfont@@trim{4545}{45}% \tud@cdfont@@trim{5555}{55}% \tud@cdfont@@trim{6565}{65}% \tud@cdfont@@trim{7575}{75}% \tud@cdfont@@trim{italic}{oblique}% \tud@cdfont@@trim{slanted}{oblique}% \let#1\@tempa% }% \fi \newcommand*\tud@cdfont@@trim[2]{% \def\@tempb##1#1##2\relax{\def\@tempa{##1#2##2}}% \@expandtwoargs\in@{#1}{\@tempa}% \@whilesw\ifin@\fi{% \expandafter\@tempb\@tempa\relax% \@expandtwoargs\in@{#1}{\@tempa}% }% } % \end{macrocode} % \end{macro}^^A \tud@cdfont@@trim % \end{macro}^^A \tud@cdfont@trim % \end{macro}^^A \tud@cdfont@get % \end{macro}^^A \textcd % \end{macro}^^A \cdfont % % \iffalse % %<*option> % \fi % % \subsubsection{TypeWriter-Schriften} % % \begin{option}{ttfont} % \changes{v2.06}{2018/07/12}{neu}^^A % \begin{macro}{\tud@ttfont@num} % \changes{v2.06}{2018/07/12}{neu}^^A % Mit dieser Option regelt, ob die TypeWriter-Schriften durch den Anwender % manuell eingestellt werden oder aber die entsprechenden Schriften aus den % Paketen \pkg{lmodern} oder \pkg{roboto-mono} zum Einsatz kommt. % \begin{macrocode} \newcommand*\tud@ttfont@num{0} \TUD@key{ttfont}[true]{% \TUD@set@numkey{ttfont}{@tempa}{% \TUD@bool@numkey,% {roboto}{1},{roboto-mono}{1},{robo}{1},% {lm}{2},{lmtt}{2},{lmodern}{2}% }{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed% \ifcase\@tempa\relax% false \renewcommand*\tud@ttfont@num{0}% \or% roboto \renewcommand*\tud@ttfont@num{1}% \or% lmodern \renewcommand*\tud@ttfont@num{2}% \fi% \TUD@SpecialOptionAtDocument{tud@font@set}% \fi% } % \end{macrocode} % \end{macro}^^A \tud@ttfont@num % \end{option}^^A ttfont % % \iffalse % %<*body> % \fi % % \begin{macro}{\tud@ttfont@set} % \changes{v2.06}{2018/07/12}{neu}^^A % \begin{macro}{\tud@ttfont@@set} % \changes{v2.06}{2018/07/12}{neu}^^A % \begin{macro}{\tud@ttfont@md} % \changes{v2.06}{2018/07/12}{neu}^^A % \begin{macro}{\tud@ttfont@bf} % \changes{v2.06}{2018/07/12}{neu}^^A % \begin{macro}{\tud@ttfont@ebf} % \changes{v2.06}{2018/07/12}{neu}^^A % Die Auswahl der TypeWriter-Schrift. % \begin{macrocode} \newcommand*\tud@ttfont@set{% \if@tud@ttfont@rb@exist\else\ifnum\tud@ttfont@num=\@ne\relax% %<*class> \ClassWarning{\TUD@Class@Name}% % %<*package> \PackageWarning{tudscrfonts}% % {% The package `roboto-mono' is missing so the\MessageBreak% typewriter font of package `lmodern' is used% }% \TUDoptions{ttfont=lmodern}% \fi\fi% \ifcase\tud@ttfont@num\relax% false \let\tud@ttfont@fam\ttdefault% \or% roboto \let\tud@ttfont@fam\tud@ttfont@rb% \else% lmodern \let\tud@ttfont@fam\tud@ttfont@lm% \fi% \ifcase\tud@ttfont@num\relax\else% !false \if@tud@x@fontspec@enabled% % \end{macrocode} % 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\tud@ttfont@fam\ttdefault\else% \tud@x@fontspec@set{tt}{\tud@ttfont@fam}% \fi% \else% \renewcommand*\ttdefault{\tud@ttfont@fam}% \fi% \fi% \tud@ttfont@@set% } \newcommand*\tud@ttfont@md{} \newcommand*\tud@ttfont@bf{} \newcommand*\tud@ttfont@ebf{} \newcommand*\tud@ttfont@@set{% \ifcase\tud@ttfont@num\relax% \ifundef{\mdseries@tt}{% \edef\tud@ttfont@md{\tud@cs@use{mddefault}}% }{% \edef\tud@ttfont@md{\mdseries@tt}% }% \ifundef{\bfseries@tt}{% \edef\tud@ttfont@bf{\tud@cs@use{bfdefault}}% }{% \edef\tud@ttfont@bf{\bfseries@tt}% }% \edef\tud@ttfont@ebf{\tud@ttfont@bf}% \or% roboto \renewcommand*\tud@ttfont@md{\tud@cdfont@md}% \renewcommand*\tud@ttfont@bf{\tud@cdfont@bf}% \renewcommand*\tud@ttfont@ebf{\tud@cdfont@ebf}% \else% lmodern \if@tud@cdfont@heavy% \renewcommand*\tud@ttfont@md{m}% \renewcommand*\tud@ttfont@bf{b}% \renewcommand*\tud@ttfont@ebf{b}% \else% \renewcommand*\tud@ttfont@md{l}% \if@tud@cdfont@ultrabold% \renewcommand*\tud@ttfont@bf{b}% \renewcommand*\tud@ttfont@ebf{b}% \else% \renewcommand*\tud@ttfont@bf{m}% \renewcommand*\tud@ttfont@ebf{b}% \fi% \fi% \fi% } % \end{macrocode} % \end{macro}^^A \tud@ttfont@ebf % \end{macro}^^A \tud@ttfont@bf % \end{macro}^^A \tud@ttfont@md % \end{macro}^^A \tud@ttfont@@set % \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. % \begin{macrocode} \newcommand*\tud@ttfont@init{% % \end{macrocode} % Für die \texttt{RobotoMono} wird der Skalierungsfaktor fest definiert. % \begin{macrocode} \newcommand*\tud@ttfont@rb@scale{0.9}% \if@tud@x@fontspec@enabled% \if@tud@ttfont@rb@exist% \tud@x@fontspec@init{\tud@ttfont@rb}{% Scale={\tud@ttfont@rb@scale},% UprightFont={RobotoMono-Regular},% FontFace={l}{n}{RobotoMono-Light},% FontFace={m}{n}{RobotoMono-Regular},% FontFace={sb}{n}{RobotoMono-Medium},% FontFace={b}{n}{RobotoMono-Bold},% FontFace={bx}{n}{RobotoMono-Bold},% FontFace={eb}{n}{RobotoMono-Bold},% FontFace={l}{it}{RobotoMono-LightItalic},% FontFace={m}{it}{RobotoMono-Italic},% FontFace={sb}{it}{RobotoMono-MediumItalic},% FontFace={b}{it}{RobotoMono-BoldItalic},% FontFace={bx}{it}{RobotoMono-BoldItalic},% FontFace={eb}{it}{RobotoMono-BoldItalic}% }% \fi% % \end{macrocode} % Gewöhnlich ist die Schrift \texttt{lmtt} via \pkg{fontspec} voreingestellt. % Allerdings wird diese von einigen Paketen mit \cs{setmonofont} überschrieben. % Für diesen Fall wird die Schriftfamilie \texttt{lmtt} mit den Mitteln von % \pkg{fontspec} definiert. % \begin{macrocode} \ifx\ttdefault\tud@ttfont@lm\else% \tud@x@fontspec@init{\tud@ttfont@lm}{% UprightFont={LMMono10-Regular},% FontFace={l}{n}{LMMonoLt10-Regular},% FontFace={m}{n}{LMMono10-Regular},% FontFace={b}{n}{LMMonoLt10-Bold},% FontFace={bx}{n}{LMMonoLt10-Bold},% FontFace={l}{it}{LMMonoLt10-Oblique},% FontFace={m}{it}{LMMonoSlant10-Regular},% FontFace={b}{it}{LMMonoLt10-BoldOblique},% FontFace={bx}{it}{LMMonoLt10-BoldOblique}% }% \fi% \else% % \end{macrocode} % Existiert das Paket \pkg{roboto-mono}, wird die Schriftfamilie \val{tudtt} % definiert und die passenden Type1-Schriften für diese definiert. % \begin{macrocode} \if@tud@ttfont@rb@exist% % \end{macrocode} % Der Skalierungsfaktor für das NFSS gesetzt. % \begin{macrocode} \edef\tud@ttfont@rb@scale{s*[\tud@ttfont@rb@scale]}% \begingroup% \def\tud@res@c##1##2{% \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 % den Teil des Dateinamens der \texttt{RobotoMono} für aufrechte Metriken und % im dritten Argument den für kursive. % \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% }{}% \DeclareFontShape{##1}{\tud@ttfont@rb}{####1}{it}{% <->\tud@ttfont@rb@scale RobotoMono-####3-tlf-\tud@res@a% }{}% \DeclareFontShape{##1}{\tud@ttfont@rb}{####1}{sl}{% <->ssub*\tud@ttfont@rb/####1/it% }{}% % \end{macrocode} % Kapitälchen sind nicht für alle Kodierungen definiert, weshalb diese nur % optional definiert werden. % \begin{macrocode} \ifbool{##2}{% \DeclareFontShape{##1}{\tud@ttfont@rb}{####1}{sc}{% <->\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% }{}% \DeclareFontShape{##1}{\tud@ttfont@rb}{####1}{scsl}{% <->ssub*\tud@ttfont@rb/####1/scit% }{}% }{}% }% \tud@res@b{l}{Light}{LightItalic}% \tud@res@b{m}{Regular}{Italic}% \tud@res@b{sb}{Medium}{MediumItalic}% \tud@res@b{b}{Bold}{BoldItalic}% \tud@res@b{bx}{Bold}{BoldItalic}% }% \tud@res@c{OT1}{true}% \tud@res@c{T1}{true}% % \end{macrocode} % Mit \LaTeXe~2020/02/02 wird die \val{TS1}-Kodierung immer definiert und % gleichzeitg ein Kompatibilitätslevel für verschiedene Schriftfamilien % eingeführt. Da hier eine Schriftfamilie für die skalierte \texttt{RobotoMono} % definiert wird, wird der Kompatibilitätslevel dementsprechend übernommen. % \begin{macrocode} \tud@res@c{TS1}{false}% \def\tud@res@a{\endgroup}% \def\tud@res@b{TS1:RobotoMono-TLF}% \ifcsundef{\tud@res@b}{% %<*class> \ClassWarningNoLine{\TUD@Class@Name}% % %<*package> \PackageWarningNoLine{tudscrfonts}% % {`\tud@res@b' encoding subset undefinied}% }{% \eappto\tud@res@a{% \noexpand\DeclareEncodingSubset{TS1}{tudtt}{\csuse{\tud@res@b}}% }% }% \tud@res@a% \fi% \fi% } % \end{macrocode} % \end{macro}^^A \tud@ttfont@rb@scale % \end{macro}^^A \tud@ttfont@init % % \iffalse % %<*option> % \fi % % \subsubsection{Schriften für den Mathematiksatz} % % 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. % % \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{ % 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}% \TUD@key{cdmath}[true]{% \TUD@set@numkey{cdmath}{@tempa}{% \TUD@bool@numkey,% {serifmath}{0},{serif}{0},{nosansmath}{0},{nosans}{0},% {sansmath}{1},{sans}{1},% {upgreek}{2},{uprightgreek}{2},{uprightgreeks}{2},% {slgreek}{3},{slantedgreek}{3},{slantedgreeks}{3},% {itgreek}{3},{italicgreek}{3},{italicgreeks}{3},% {texgreek}{4},{latexgreek}{4},{texgreeks}{4},{latexgreeks}{4},% {standardgreek}{4},{standardgreeks}{4}% }{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed% \ifcase\@tempa\relax% false \tud@locked@bool@set{@tud@cdmath@active}{false}% \TUD@SpecialOptionAtDocument{tud@math@set}% \or% true \tud@locked@bool@set{@tud@cdmath@active}{true}% \TUD@SpecialOptionAtDocument{tud@math@set}% \or% uprightgreek \TUDoptions{slantedgreek=false}% \or% slantedgreek \TUDoptions{slantedgreek=true}% \or% standardgreek \TUDoptions{slantedgreek=standard}% \fi% \fi% } % \end{macrocode} % \end{macro}^^A \if@tud@cdmath@active@locked % \end{macro}^^A \if@tud@cdmath@active % \end{option}^^A cdmath % \begin{option}{slantedgreek} % \begin{option}{slantedGreek} % \begin{option}{slantedGreeks} % \changes{v2.04}{2015/02/27}{neu}^^A % \begin{macro}{\if@tud@slantedgreek} % Mit dieser Option kann die Neigung der griechischen Majuskeln geändert werden. % \begin{macrocode} \newcommand*\tud@slantedgreek@num{0} \TUD@key{slantedgreek}[true]{% \TUD@set@numkey{slantedgreek}{@tempa}{% \TUD@bool@numkey,% {up}{0},{upright}{0},% {sl}{1},{slanted}{1},{it}{1},{italic}{1},% {standard}{2},{std}{2},{tex}{2},{latex}{2},{stdgrk}{2},{stdgrks}{2},% {standardgreek}{2},{standardgreeks}{2},% {texgreek}{2},{latexgreek}{2},{texgreeks}{2},{latexgreeks}{2}% }{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed% \ifcase\@tempa\relax% upright \renewcommand*\tud@slantedgreek@num{0}% \or% slanted \renewcommand*\tud@slantedgreek@num{1}% \or% standard \renewcommand*\tud@slantedgreek@num{2}% \fi% \TUD@SpecialOptionAtDocument{tud@math@set}% \fi% } \TUD@key{slantedGreek}[true]{\TUDoptions{slantedgreek=#1}} \TUD@key{slantedGreeks}[true]{\TUDoptions{slantedgreek=#1}} % \end{macrocode} % \end{macro}^^A \if@tud@slantedgreek % \end{option}^^A slantedGreeks % \end{option}^^A slantedGreek % \end{option}^^A slantedgreek % \begin{option}{lgrgreek} % \changes{v2.06}{2019/06/13}{neu}^^A % \begin{option}{lgrgreeks} % \changes{v2.06}{2019/06/13}{neu}^^A % \begin{option}{LGRgreek} % \changes{v2.06}{2019/06/13}{neu}^^A % \begin{option}{LGRgreeks} % \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 Lettern der aus der % LGR-Kodierung der aktuellen Schriftfamilie für den Mathematiksatz aktivieren. % \begin{macrocode} \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}} \TUD@key{LGRgreek}[true]{\TUDoptions{lgrgreeks=#1}} % \end{macrocode} % \end{macro}^^A \if@tud@lgrgreeks % \end{option}^^A LGRgreeks % \end{option}^^A LGRgreek % \end{option}^^A lgrgreeks % \end{option}^^A lgrgreek % % \iffalse % %<*body> % \fi % % \begin{macro}{\tud@if@issymbolfont} % \changes{v2.06}{2019/06/17}{neu}^^A % \begin{macro}{\tud@if@ismathalphabet} % \changes{v2.06}{2019/06/17}{neu}^^A % Diese Abfragen prüfen, ob der gegebene Bezeichner bzw. das gegebene Makro % für eine Deklaration mit \cs{DeclareSymbolFont} bzw. \cs{DeclareMathAlphabet} % verwendet wurde. % \begin{macrocode} \newcommand*\tud@if@issymbolfont[1]{% \begingroup% \edef\tud@res@a{% \noexpand\in@\expandafter\noexpand% \csname sym#1\endcsname% {\expandonce\group@list}% }% \tud@res@a% \ifin@% \aftergroup\@firstoftwo% \else% \aftergroup\@secondoftwo% \fi% \endgroup% } \@onlypreamble\tud@if@issymbolfont \newcommand*\tud@if@ismathalphabet[1]{% \begingroup% \edef\tud@res@a{% \noexpand\in@\expandafter\noexpand% \csname\expandafter\@gobble\string#1\space\endcsname% {\expandonce\alpha@list}% }% \tud@res@a% \ifin@% \aftergroup\@firstoftwo% \else% \aftergroup\@secondoftwo% \fi% \endgroup% } \@onlypreamble\tud@if@ismathalphabet % \end{macrocode} % \end{macro}^^A \tud@if@ismathalphabet % \end{macro}^^A \tud@if@issymbolfont % \begin{macro}{\tud@math@loop@greeks@all} % \changes{v2.04}{2015/03/10}{neu}^^A % \begin{macro}{\tud@math@loop@greeks@uc} % \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 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]{% \tud@math@loop@greeks@uc{#1}% \tud@math@loop@greeks@lc{#1}% } \newcommand*\tud@math@loop@greeks@uc[1]{% \forcsvlist#1{% Gamma,Delta,Theta,Lambda,Xi,Pi,Sigma,Upsilon,Phi,Psi,Omega% }% } \newcommand*\tud@math@loop@greeks@lc[1]{% \forcsvlist#1{% alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa,lambda,% mu,nu,xi,pi,rho,sigma,tau,upsilon,phi,chi,psi,omega,% varepsilon,vartheta,varpi,varrho,varsigma,varphi% }% } % \end{macrocode} % \end{macro}^^A \tud@math@loop@greeks@lc % \end{macro}^^A \tud@math@loop@greeks@uc % \end{macro}^^A \tud@math@loop@greeks@all % \begin{macro}{\tud@math@declare@lgrgreeks} % \changes{v2.06}{2019/06/18}{neu}^^A % 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 erste Argument enthält die zu deklarierende % Schriftfamilie, zweites und drittes Argument die Schriftstärke für normale % und fette Lettern, die letzten beiden die Schriftgestalt für aufrechte und % kursive Variante. % \begin{macrocode} \newcommand*\tud@math@declare@lgrgreeks[5]{% \ifundef{\T@LGR}{\DeclareFontEncoding{LGR}{}{}}{}% \tud@if@issymbolfont{tudupgrk}{% \SetSymbolFont{tudupgrk}{normal}{LGR}{#1}{#2}{#4}% }{% \DeclareSymbolFont{tudupgrk}{LGR}{#1}{#2}{#4}% }% \SetSymbolFont{tudupgrk}{bold}{LGR}{#1}{#3}{#4}% \tud@if@issymbolfont{tuditgrk}{% \SetSymbolFont{tuditgrk}{normal}{LGR}{#1}{#2}{#5}% }{% \DeclareSymbolFont{tuditgrk}{LGR}{#1}{#2}{#5}% }% \SetSymbolFont{tuditgrk}{bold}{LGR}{#1}{#3}{#5}% } % \end{macrocode} % \end{macro}^^A \tud@math@declare@lgrgreeks % \begin{macro}{\tud@math@map@greeks} % \changes{v2.06}{2018/07/02}{neu}^^A % \begin{macro}{\tud@math@map@@greeks} % \changes{v2.06}{2018/07/02}{neu}^^A % \begin{macro}{\tud@math@map@@@greeks} % \changes{v2.06}{2018/07/02}{neu}^^A % \begin{macro}{\tud@math@supplement@greeks} % \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 % 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 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. % \begin{macrocode} \newcommand*\tud@math@map@greeks{% \tud@math@loop@greeks@all\tud@math@map@@greeks% \tud@math@loop@greeks@uc\tud@math@map@@@greeks% \tud@math@supplement@greeks% } \newcommand*\tud@math@map@@greeks[1]{% \ifcsundef{it#1}{% \@for\tud@res@a:={#1sl,sl#1,#1it}\do{% \ifcsundef{\tud@res@a}{}{\csletcs{it#1}{\tud@res@a}}% }% }{}% \ifcsundef{up#1}{\ifcsundef{#1up}{}{\csletcs{up#1}{#1up}}}{}% \ifcsundef{other#1}{\ifcsundef{#1other}{}{\csletcs{other#1}{#1other}}}{}% } % \end{macrocode} % 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 |\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@strlowercase\tud@res@a{#1}% \edef\tud@res@a{Up\tud@res@a}% \ifcsundef{\tud@res@a}{}{\csletcs{up#1}{\tud@res@a}}% }{}% } % \end{macrocode} % Mit diesem Makro werden letztendlich~-- nachdem \cs{tud@math@map@greeks} % bereits ausgeführt wurde~-- die standardmäßig definierten Symbolschriften % \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 Lettern zu definieren, sofern dies noch notwendig ist. % \begin{macrocode} \newcommand*\tud@math@supplement@greeks{% % \end{macrocode} % Um keine globalen Änderungen vorzunehmen, wird die normale Mathematikversion % in einer Gruppe durchsucht. Alle mit \cs{DeclareMathSymbol} vorzunehmenden % Deklarationen werden in \cs{tud@res@c} gesichert und nach der Gruppe % aufgerufen. % \begin{macrocode} \begingroup% \newcommand*\tud@math@operators@enc{}% \newcommand*\tud@math@operators@fam{}% \newcommand*\tud@math@letters@enc{}% \newcommand*\tud@math@letters@fam{}% \def\getanddefine@fonts##1##2{% \ifx\symoperators##1% \expandafter\tud@res@a\string##2\@nil% \else\ifx\symletters##1% \expandafter\tud@res@b\string##2\@nil% \fi\fi% }% \def\tud@res@a##1##2/##3/##4\@nil{% \def\tud@math@operators@enc{##2}% \def\tud@math@operators@fam{##3}% }% \def\tud@res@b##1##2/##3/##4\@nil{% \def\tud@math@letters@enc{##2}% \def\tud@math@letters@fam{##3}% }% \tud@cs@use{mv@normal}% \let\tud@res@c\@empty% \tud@if@strequal{\tud@math@letters@enc}{OML}{% \def\tud@res@a##1{% \ifcsundef{it##1}{% \eappto\tud@res@c{% \noexpand\DeclareMathSymbol{\csname it##1\endcsname}% {\noexpand\mathalpha}{letters}{\the\tud@res@cnt}% }% }{}% \advance\tud@res@cnt\@ne\relax% }% \tud@res@cnt=\z@\relax% \tud@math@loop@greeks@all\tud@res@a% }{}% \tud@if@strequal{\tud@math@operators@enc}{OT1}{% \def\tud@res@a##1{% \ifcsundef{up##1}{% \eappto\tud@res@c{% \noexpand\DeclareMathSymbol{\csname up##1\endcsname}% {\noexpand\mathalpha}{operators}{\the\tud@res@cnt}% }% }{}% \advance\tud@res@cnt\@ne\relax% }% \tud@res@cnt=\z@\relax% \tud@math@loop@greeks@uc\tud@res@a% }{}% % \end{macrocode} % Mit der Option \opt{lgrgreeks} besteht zusätzlich die Möglichkeit, fehlende % 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% \if@tud@lgrgreeks% \tud@if@fdfileexists{LGR}{\tud@cs@use{familydefault}}{% \def\tud@res@a{\tud@cs@use{familydefault}}% }{% \tud@if@fdfileexists{LGR}{\tud@math@letters@fam}{% \let\tud@res@a\tud@math@letters@fam% }{% \tud@if@fdfileexists{LGR}{\tud@math@operators@fam}{% \let\tud@res@a\tud@math@operators@fam% }{}% }% }% \fi% % \end{macrocode} % Die Gruppe wird beendet, die in \cs{tud@res@c} gesicherten Deklarationen % werden ausgeführt, und der Inhalt von \cs{tud@res@a} wird erhalten. % \begin{macrocode} \edef\tud@res@a{% \endgroup% \expandonce\tud@res@c% \edef\noexpand\tud@res@a{\tud@res@a}% }% \tud@res@a% \ifx\tud@res@a\@empty\else% % \end{macrocode} % Mit der gefunden LGR-Schriftfamilie werden alle bisher nicht vorhanden % aufrechte und kursive griechische Lettern aus den entsprechenden Slots % ergänzt. % \begin{macrocode} \tud@math@declare@lgrgreeks{\tud@res@a}% {\tud@cs@use{mddefault}}{\tud@cs@use{bfdefault}}% {\tud@cs@use{updefault}}{\tud@cs@use{itdefault}}% \let\tud@res@c\@empty% \def\tud@res@b##1##2{% \ifcsundef{it##1}{% \eappto\tud@res@c{% \noexpand\DeclareMathSymbol{\csname it##1\endcsname}% {\noexpand\mathord}{tuditgrk}{##2}% }% }{}% \ifcsundef{up##1}{% \eappto\tud@res@c{% \noexpand\DeclareMathSymbol{\csname up##1\endcsname}% {\noexpand\mathord}{tudupgrk}{##2}% }% }{}% }% \tud@res@b{Gamma}{71}% \tud@res@b{Delta}{68}% \tud@res@b{Theta}{74}% \tud@res@b{Lambda}{76}% \tud@res@b{Xi}{88}% \tud@res@b{Pi}{80}% \tud@res@b{Sigma}{83}% \tud@res@b{Upsilon}{85}% \tud@res@b{Phi}{70}% \tud@res@b{Psi}{89}% \tud@res@b{Omega}{87}% \tud@res@b{alpha}{97}% \tud@res@b{beta}{98}% \tud@res@b{gamma}{103}% \tud@res@b{delta}{100}% \tud@res@b{epsilon}{101}% \tud@res@b{zeta}{122}% \tud@res@b{eta}{104}% \tud@res@b{theta}{106}% \tud@res@b{iota}{105}% \tud@res@b{kappa}{107}% \tud@res@b{lambda}{108}% \tud@res@b{mu}{109}% \tud@res@b{nu}{110}% \tud@res@b{xi}{120}% \tud@res@b{pi}{112}% \tud@res@b{rho}{114}% \tud@res@b{sigma}{115}% \tud@res@b{tau}{116}% \tud@res@b{upsilon}{117}% \tud@res@b{phi}{102}% \tud@res@b{chi}{113}% \tud@res@b{psi}{121}% \tud@res@b{omega}{119}% \tud@res@c% \fi% } % \end{macrocode} % \end{macro}^^A \tud@math@supplement@greeks % \end{macro}^^A \tud@math@map@@@greeks % \end{macro}^^A \tud@math@map@@greeks % \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 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 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 Lettern kursiv gesetzt. Dies betrifft insbesondere die Majuskeln, welche % bei \LaTeX{} normalerweise aufrecht gesetzt werden. % \begin{macrocode} \def\tud@res@c{% \tud@if@v@lower{2.06}{% \TUD@key@preset{slantedgreek}{standard}% }{% \TUD@key@preset{slantedgreek}{true}% }% }% \@tud@res@swafalse% \ifundef{\upalpha}{}{\ifx\upalpha\alpha\@tud@res@swatrue\fi}% % \end{macrocode} % Existiert \cs{upalpha} und ist mit \cs{alpha} identisch, werden \emph{alle} % griechischen Lettern aufrecht gesetzt. % \begin{macrocode} \if@tud@res@swa% \def\tud@res@c{\TUD@key@preset{slantedgreek}{false}}% \else% % \end{macrocode} % Existiert \cs{itGamma} und ist mit \cs{Gamma} identisch oder\dots % \begin{macrocode} \ifundef{\itGamma}{}{\ifx\itGamma\Gamma\@tud@res@swatrue\fi}% % \end{macrocode} % \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\@tud@res@swatrue\fi% \ifx\Gamma\tud@res@b\@tud@res@swatrue\fi% \fi% % \end{macrocode} % \dots werden \emph{alle} griechischen Lettern kursiv gesetzt. % \begin{macrocode} \if@tud@res@swa% \def\tud@res@c{\TUD@key@preset{slantedgreek}{true}}% \fi% \fi% \edef\tud@res@c{\endgroup\expandonce\tud@res@c}% \tud@res@c% } % \end{macrocode} % \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 % \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 % 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*\tud@cdmath@init{% % \end{macrocode} % Für die Schriftfamilie \OpenSans existieren leider bisher keine Kodierung für % den Mathematikmodus (\val{OML}, \val{OMS}, \val{OMX}), weshalb hierfür das % Paket \pkg{mathastext} genutzt wird, um trotzdem einen mathematischen Satz zu % ermöglichen. Dabei wird die Computer~Modern in der \val{LGR}~Kodierung % zwingend benötigt. % % 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 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@cdmath@fam@exist% \@tud@res@swatrue% \if@tud@cdoldfont@active\else% \tud@if@fdfileexists{LGR}{cmr}{}{% \@tud@res@swafalse% \def\tud@res@a{% %<*class> \ClassWarningNoLine{\TUD@Class@Name}% % %<*package> \PackageWarningNoLine{tudscrfonts}% % {% The packages `cbfonts/cbgreek' and\MessageBreak% `cbfonts-fd' have to be installed for using\MessageBreak% corporate design fonts in math mode. As they\MessageBreak% are not, standard math versions are applied% }% }% \if@tud@cdmath@active% \tud@res@a% \else% \eappto\tud@cdmath@wrn{\expandonce\tud@res@a}% \fi% }% \fi% \fi% % \end{macrocode} % Um die Mathematikschriften sauber zu definieren, ist das Laden von bestimmten % Paketen durch den Anwender ungünstig. Deshalb wird für diesen Fall eine % Warnung ausgegeben. % \begin{macrocode} \if@tud@res@swa% \if@tud@cdoldfont@active\else% \if@tud@cdmath@active% \def\tud@res@a##1{% %<*class> \ClassWarningNoLine{\TUD@Class@Name}% % %<*package> \PackageWarningNoLine{tudscrfonts}% % {% You should not load package `##1'\MessageBreak% manually when option `cdmath=true' is active as\MessageBreak% TUD-Script uses package `mathastext' internally\MessageBreak% with a specific set of required options for the\MessageBreak% math font setup% }% }% \@ifpackageloaded{sansmath}{% \tud@res@a{sansmath}% }{}% \@ifpackageloaded{mathastext}{% \tud@res@a{mathastext}% }{}% \fi% \PassOptionsToPackage{% subdued,defaultmathsizes,nosmalldelims,noequal,% defaultrm,defaultbf,defaultit,defaultsf,defaulttt% }{mathastext}% \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}}% \tud@cdmath@@init% % \end{macrocode} % 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{könnte mit \pkg{opensans-math} raus}[v2.08] % \begin{macrocode} \if@tud@cdoldfont@active% \tud@res@cnt=\z@\relax% \tud@math@loop@greeks@uc\tud@cdmath@declare@greek@uc% \tud@math@loop@greeks@lc\tud@cdmath@declare@greek@lc% \else% \tud@cdmath@declare@greek@lgr% \fi% % \end{macrocode} % Abschließend werden einzelne Zeichen für die Mathematikversionen definiert. % \begin{macrocode} \tud@cdmath@declare@char{*}{\mathbin}{symbols}{"03}% % \end{macrocode} % Nach der Definition der griechischen Lettern werden diese~-- inklusive aller % Auswahlvariationen~-- deklariert. % \begin{macrocode} \tud@cdmath@also@greeks% \fi% % \end{macrocode} % Für die Schrift \DIN existiert lediglich eine Mathematikversion, das Vorgehen % ist ähnlich zur \Univers. % \begin{macrocode} \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} % 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} % 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{#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}{#1}{OML}{#3}{#5}{it}% \SetMathAlphabet{\mathbold}{#2}{OML}{#3}{#6}{it}% }{}% \else% % \end{macrocode} % 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 Lettern einzubinden, um % ein Alphabet zu sparen. Siehe Kodierungen FML/FMS, LML/LMS, LBL/LBS, LS1/LS2 % }[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}{#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% % \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% \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}{#1}{U}{eus}{m}{n}% \SetMathAlphabet{\mathcal}{#2}{U}{eus}{b}{n}% }{}% \tud@if@ismathalphabet{\mathfrak}{% \IfFileExists{ueuf.fd}{% \SetMathAlphabet{\mathfrak}{#1}{U}{euf}{m}{n}% \SetMathAlphabet{\mathfrak}{#2}{U}{euf}{b}{n}% }{}% }{}% % \end{macrocode} % 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} \AtBeginDocument{% \@tud@res@swafalse% \tud@if@issymbolfont{AMSa}{\@tud@res@swatrue}{}% \tud@if@issymbolfont{AMSb}{\@tud@res@swatrue}{}% \if@tud@res@swa% \if@tud@cdoldfont@active% \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}{}{% \appto\tud@cdmath@wrn{% %<*class> \ClassInfoNoLine{\TUD@Class@Name}% % %<*package> \PackageInfoNoLine{tudscrfonts}% % {% You may load package `mdsymbol' in order to\MessageBreak% get symbols matching the used math font% }% }% }% \fi% \fi% }% } % \end{macrocode} % Auch für die Schrift \DIN werden mathematische Glyphen bereitgestellt. Diese % wurden schon bei der Installation aus dem \pkg{iwona}-Paket entnommen. % \begin{macrocode} \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} \AtBeginDocument{% \if@tud@cdmath@active% \sbox\z@{\mathversion{normal}$ $\mathversion{tuddin}$ $}% \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 \MTDeclareVersion % \end{macro}^^A \tud@mathversion % \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} % \changes{v2.06}{2019/06/19}{neu}^^A % \begin{macro}{\tud@cdmath@declare@alias} % \changes{v2.06}{2019/06/19}{neu}^^A % \changes{v2.06m}{2021/07/06}{\cs{csedef} durch \cs{csletcs} ersetzt}^^A % \begin{macro}{\tud@cdmath@symb@list} % \changes{v2.06}{2019/06/19}{neu}^^A % \begin{macro}{\tud@cdmath@declare@char} % \changes{v2.06}{2019/06/19}{neu}^^A % \begin{macro}{\tud@cdmath@char@list} % \changes{v2.06}{2019/06/19}{neu}^^A % \begin{macro}{\tud@DeclareMathSymbol} % \changes{v2.06}{2019/06/19}{neu}^^A % Mit \cs{tud@cdmath@declare@symb} und \cs{tud@cdmath@declare@char} können % Glyhen respektive einzelne Zeichen definiert werden, welche über das Makro % \cs{tud@cdmath@symbols@set} nur zum Einsatz kommen, wenn \opt{cdmath=true} % aktiviert wurde. Damit können in den unterschiedlichen Mathematikversionen % Symbole wie beispielsweise \cs{alpha} unterschiedlich kodiert werden, was % über die einfache Verwendung von \cs{DeclareMathSymbol} nicht möglich ist. % \begin{macrocode} \newcommand*\tud@cdmath@symb@list{} \newcommand*\tud@cdmath@declare@symb[4]{% \listeadd\tud@cdmath@symb@list{#1}% \tud@DeclareMathSymbol{#1}{#2}{#3}{#4}% } % \end{macrocode} % Hiermit kann ein Alias-Befehl für ein Symbol definiert werden. % \begin{macrocode} \newcommand*\tud@cdmath@declare@alias[2]{% \listeadd\tud@cdmath@symb@list{#1}% \ifcsundef{tud@cdmath@symbol@#2}{}{% \csletcs{tud@cdmath@symbol@#1}{tud@cdmath@symbol@#2}% }% } \newcommand*\tud@cdmath@char@list{} \newcommand*\tud@cdmath@declare@char[4]{% \listeadd\tud@cdmath@char@list{#1}% \tud@DeclareMathSymbol{#1}{#2}{#3}{#4}% } % \end{macrocode} % Die an \cs{tud@cdmath@declare@symb} und \cs{tud@cdmath@declare@char} % ü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]{% \begingroup% \edef\tud@res@a{% \endgroup% \noexpand\DeclareMathSymbol% {\csname tud@cdmath@symbol@#1\endcsname}% {\unexpanded{#2}}{#3}{#4}% }% \tud@res@a% } % \end{macrocode} % \end{macro}^^A \tud@DeclareMathSymbol % \end{macro}^^A \tud@cdmath@char@list % \end{macro}^^A \tud@cdmath@declare@char % \end{macro}^^A \tud@cdmath@symb@list % \end{macro}^^A \tud@cdmath@declare@alias % \end{macro}^^A \tud@cdmath@declare@symb % \begin{macro}{\tud@cdmath@symbols@set} % \changes{v2.04}{2015/03/10}{neu}^^A % \begin{macro}{\tud@cdmath@symbols@toks} % \changes{v2.06}{2019/06/19}{neu}^^A % \begin{macro}{\tud@cdmath@symbols@set@cmd} % \changes{v2.06}{2019/06/19}{neu}^^A % \begin{macro}{\tud@cdmath@symbols@set@chr} % \changes{v2.06}{2019/06/19}{neu}^^A % \begin{macro}{\tud@cdmath@symbols@reset} % \changes{v2.04}{2015/03/10}{neu}^^A % 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} \tud@newtoks\tud@cdmath@symbols@toks \newcommand*\tud@cdmath@symbols@set{% % \end{macrocode} % Die Sicherung der alten Definitionen erfolgt nur einmalig. Die Liste der % Symbole respektive Zeichen wird durchlaufen und die erfolgten Definitionen % werden umgesetzt. % \begin{macrocode} \expandafter\IfArgIsEmpty\expandafter{\the\tud@cdmath@symbols@toks}{% \forlistloop\tud@cdmath@symbols@set@cmd\tud@cdmath@symb@list% \forlistloop\tud@cdmath@symbols@set@chr\tud@cdmath@char@list% % \end{macrocode} % Wird das Tokenregister abgerufen, soll es anschließend auch wieder geleert % werden. % \begin{macrocode} \addto@hook\tud@cdmath@symbols@toks{\tud@cdmath@symbols@toks{}}% }{}% } % \end{macrocode} % Beim Setzen der Mathematikversion im \CD wird zur Wiederherstellung der % Standardmathematikversion das Vorgehen im Token \cs{tud@cdmath@symbols@toks} % definiert. % \begin{macrocode} \newcommand*\tud@cdmath@symbols@set@cmd[1]{% % \end{macrocode} % Existiert ein Befehl in der Standardmathematikversion, dann wird dieser % gesichert und später wiederhergestellt. Andernfalls wird er wieder undefinert % gesetzt. % \begin{macrocode} \ifcsundef{#1}{% \addto@hook\tud@cdmath@symbols@toks{\csundef{#1}}% }{% \tud@cs@store{#1}% \addto@hook\tud@cdmath@symbols@toks{\tud@cs@restore{#1}}% }% % \end{macrocode} % Nur wenn ein gewünschtes Symbol auch existiert, wird es gesetzt. Damit können % Symbole für \opt{cdmath=true} auch gezielt undefiniert gesetzt werden. % \begin{macrocode} \ifcsundef{tud@cdmath@symbol@#1}{% \csundef{#1}% }{% \tud@cs@letltx{#1}{tud@cdmath@symbol@#1}% }% } % \end{macrocode} % Für einzelne Zeichen ist das Vorgehen vom Prinzip her gleich. Allerdings wird % hier der zu sichernde \cs{mathcode} direkt in \cs{tud@cdmath@symbols@toks} % geschrieben. % \begin{macrocode} \newcommand*\tud@cdmath@symbols@set@chr[1]{% \edef\tud@res@a{\global\mathcode`#1=\the\mathcode`#1\relax}% \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 |\tud@cdmath@symbols@|\meta{Zeichen} mit % \cs{meaning} herausgelöst. % \begin{macrocode} \begingroup% \edef\tud@res@a{\expandafter\meaning\csname tud@cdmath@symbol@#1\endcsname}% \def\tud@res@b##1"##2\@nil{"##2}% \edef\tud@res@c{\expandafter\tud@res@b\tud@res@a\@nil}% \edef\tud@res@a{% \endgroup% \global\mathcode`#1=\tud@res@c% }% \tud@res@a% } % \end{macrocode} % Für das Zurücksetzen muss lediglich das Tokenregister aufgerufen werden. % \begin{macrocode} \newcommand*\tud@cdmath@symbols@reset{\the\tud@cdmath@symbols@toks} % \end{macrocode} % \end{macro}^^A \tud@cdmath@symbols@reset % \end{macro}^^A \tud@cdmath@symbols@set@chr % \end{macro}^^A \tud@cdmath@symbols@set@cmd % \end{macro}^^A \tud@cdmath@symbols@toks % \end{macro}^^A \tud@cdmath@symbols@set % % In Anlehnung an verschiedene Pakete für Mathematikschriften werden Symbole % für aufrechte und kursive Majuskeln der griechischen Lettern definiert. Damit % 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{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 % für die klassischen Kodierungen definiert. % \begin{macrocode} \newcommand*\tud@cdmath@declare@greek@uc[1]{% \tud@cdmath@declare@symb{it#1}{\mathalpha}{letters}{\the\tud@res@cnt}% \tud@cdmath@declare@symb{up#1}{\mathalpha}{operators}{\the\tud@res@cnt}% \advance\tud@res@cnt\@ne\relax% } % \end{macrocode} % \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 % \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 |\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}% \listeadd\tud@cdmath@symb@list{up#1}% \advance\tud@res@cnt\@ne\relax% } % \end{macrocode} % \end{macro}^^A \tud@cdmath@declare@greek@lc % \begin{macro}{\tud@cdmath@declare@greek@lgr} % \changes{v2.06}{2019/06/19}{neu}^^A % \begin{macro}{\tud@cdmath@declare@greek@@lgr} % \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 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 Letter. % \begin{macrocode} \newcommand*\tud@cdmath@declare@greek@lgr{% \tud@cdmath@declare@greek@@lgr{Gamma}{71}% \tud@cdmath@declare@greek@@lgr{Delta}{68}% \tud@cdmath@declare@greek@@lgr{Theta}{74}% \tud@cdmath@declare@greek@@lgr{Lambda}{76}% \tud@cdmath@declare@greek@@lgr{Xi}{88}% \tud@cdmath@declare@greek@@lgr{Pi}{80}% \tud@cdmath@declare@greek@@lgr{Sigma}{83}% \tud@cdmath@declare@greek@@lgr{Upsilon}{85}% \tud@cdmath@declare@greek@@lgr{Phi}{70}% \tud@cdmath@declare@greek@@lgr{Psi}{89}% \tud@cdmath@declare@greek@@lgr{Omega}{87}% \tud@cdmath@declare@greek@@lgr{alpha}{97}% \tud@cdmath@declare@greek@@lgr{beta}{98}% \tud@cdmath@declare@greek@@lgr{gamma}{103}% \tud@cdmath@declare@greek@@lgr{delta}{100}% \tud@cdmath@declare@greek@@lgr{epsilon}{101}% \tud@cdmath@declare@greek@@lgr{zeta}{122}% \tud@cdmath@declare@greek@@lgr{eta}{104}% \tud@cdmath@declare@greek@@lgr{theta}{106}% \tud@cdmath@declare@greek@@lgr{iota}{105}% \tud@cdmath@declare@greek@@lgr{kappa}{107}% \tud@cdmath@declare@greek@@lgr{lambda}{108}% \tud@cdmath@declare@greek@@lgr{mu}{109}% \tud@cdmath@declare@greek@@lgr{nu}{110}% \tud@cdmath@declare@greek@@lgr{xi}{120}% \tud@cdmath@declare@greek@@lgr{pi}{112}% \tud@cdmath@declare@greek@@lgr{rho}{114}% \tud@cdmath@declare@greek@@lgr{sigma}{115}% \tud@cdmath@declare@greek@@lgr{tau}{116}% \tud@cdmath@declare@greek@@lgr{upsilon}{117}% \tud@cdmath@declare@greek@@lgr{phi}{102}% \tud@cdmath@declare@greek@@lgr{chi}{113}% \tud@cdmath@declare@greek@@lgr{psi}{121}% \tud@cdmath@declare@greek@@lgr{omega}{119}% \tud@cdmath@declare@greek@@lgr{varepsilon}{101}% \tud@cdmath@declare@greek@@lgr{vartheta}{106}% \tud@cdmath@declare@greek@@lgr{varpi}{119}% \tud@cdmath@declare@greek@@lgr{varrho}{114}% \tud@cdmath@declare@greek@@lgr{varsigma}{99}% \tud@cdmath@declare@greek@@lgr{varphi}{102}% } \newcommand*\tud@cdmath@declare@greek@@lgr[2]{% \tud@cdmath@declare@symb{it#1}{\mathord}{tuditgrk}{#2}% \tud@cdmath@declare@symb{up#1}{\mathord}{tudupgrk}{#2}% % \end{macrocode} % Normalerweise sollten Ligaturen für angrenzende Glyphen (boundary ligatures) % im Mathematikmodus deaktiviert werden. Bei Lua\LaTeX{} ist dies jedoch nicht % der Fall, weshalb hier etwas nachgeholfen werden muss, indem nach der Glyphe % schlichtweg ein Klammernpaar in der richtigen Kodierung eingefügt wird. % \begin{macrocode} \ifluatex% \begingroup% \def\tud@res@a{\if@tud@cdmath@active\fontencoding{LGR}\selectfont{}\fi}% \def\tud@res@b##1{% \csxdef{tud@cdmath@symbol@##1}{% {% \mathchar\expandafter\the\csuse{tud@cdmath@symbol@##1}% \expandonce\tud@res@a% }% }% }% \tud@res@b{it#1}% \tud@res@b{up#1}% \endgroup% \fi% } % \end{macrocode} % \end{macro}^^A \tud@cdmath@declare@greek@@lgr % \end{macro}^^A \tud@cdmath@declare@greek@lgr % \begin{macro}{\tud@cdmath@also@greeks} % \changes{v2.06}{2019/06/19}{neu}^^A % \begin{macro}{\tud@cdmath@also@@greeks} % \changes{v2.06}{2019/06/19}{neu}^^A % \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 Lettern werden durch die % Definitionen für die Mathematikschriften im \CD gespiegelt. % \begin{macrocode} \newcommand*\tud@cdmath@also@greeks{% \tud@math@loop@greeks@all\tud@cdmath@also@@greeks% \tud@math@loop@greeks@uc\tud@cdmath@also@@@greeks% } \newcommand*\tud@cdmath@also@@greeks[1]{% \tud@cdmath@declare@alias{#1}{it#1}% \tud@cdmath@declare@alias{other#1}{up#1}% \ifcsundef{#1up}{}{% \tud@cdmath@declare@alias{#1up}{up#1}% }% \@for\tud@res@a:={#1sl,sl#1,#1it}\do{% \ifcsundef{\tud@res@a}{}{% \expandafter\tud@cdmath@declare@alias\expandafter{\tud@res@a}{it#1}% }% }% \ifcsundef{#1other}{}{% \tud@cdmath@declare@alias{#1other}{other#1}% }% } \newcommand*\tud@cdmath@also@@@greeks[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}% }% \ifcsundef{var#1}{}{% \expandafter\tud@cdmath@declare@alias\expandafter{var#1}{it#1}% }% } % \end{macrocode} % \end{macro}^^A \tud@cdmath@also@@@greeks % \end{macro}^^A \tud@cdmath@also@@greeks % \end{macro}^^A \tud@cdmath@also@greeks % \begin{macro}{\tud@math@set} % 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 Lettern geändert, zum anderen werden die % originalen Mathematikversionen überschrieben respektive wiederhergestellt. % \begin{macrocode} \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% #1% \tud@cs@store{mv@normal}% \tud@cs@store{mv@bold}% \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 Lettern. % \begin{macrocode} \ifcase\tud@slantedgreek@num\relax% upright \tud@math@loop@greeks@all\tud@math@upright@greeks% \or% slanted \tud@math@loop@greeks@all\tud@math@slanted@greeks% \or% standard \tud@math@loop@greeks@uc\tud@math@upright@greeks% \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% % \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 % \begin{macro}{\tud@math@upright@greeks} % \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 Lettern entweder % auf aufrecht bzw. kursiv gesetzt werden. % \begin{macrocode} \newcommand*\tud@math@upright@greeks[1]{% \ifcsundef{up#1}{}{% \csletcs{#1}{up#1}% \csletcs{other#1}{it#1}% }% } \newcommand*\tud@math@slanted@greeks[1]{% \ifcsundef{up#1}{}{% \csletcs{#1}{it#1}% \csletcs{other#1}{up#1}% }% } % \end{macrocode} % \end{macro}^^A \tud@math@slanted@greeks % \end{macro}^^A \tud@math@upright@greeks % % \iffalse %<*class> % \fi % % \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} % \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 % Schrifthöhe ist durch das \CD unabhängig von der gewählten Schriftgröße im % Dokument vorgegeben und wird in Abhängigkeit von der Papiergröße gewählt und % in \cs{tud@head@fontsize} gespeichert. Das Makro \cs{tud@head@font@@bold} % wird verwendet, um die Einstellung der fetten Schriften ohne die fixierte % Schriftgröße nutzen zu können. % \begin{macrocode} \newcommand*\tud@font@phantomglyphs{\"A\"O\"Ugjpqy} \newcommand*\tud@head@font@light{} \newcommand*\tud@head@font@bold{} %\newcommand*\tud@head@font@@bold{} \newcommand*\tud@head@font@set{% % \end{macrocode} % Die Option \opt{cdhead} wird ausgewertet. Sollte diese inkompatibel gesetzt % sein, wird eine Warnung ausgegeben. % \begin{macrocode} \if@tud@cdfont@active\ifcase\tud@head@font@num\relax% false \if@tud@head@font@set% \ClassWarning{\TUD@Class@Name}{% It isn't possible to use `cdhead=false'\MessageBreak% together with `cdfont=true'% }% \fi% \if@tud@cdfont@heavy% \TUDoptions{cdhead=heavy}% \else% \TUDoptions{cdhead=true}% \fi% \fi\fi% % \end{macrocode} % Die Schriften für die Kopfzeile werden hier definiert. Abhängig von % \cs{if@tud@cdfont@active} werden entweder die Schriften des \CDs oder die % serifenlose Standardschrift für die Kopfzeile verwendet. Die Rückfallebene: % \begin{macrocode} \if@tud@head@font@set% \if@tud@x@mweights@enabled% \DeclareFixedFont{\tud@head@font@light}{\encodingdefault}% {\sfdefault}{\mdseries@sf}{\shapedefault}{\tud@head@fontsize}% \DeclareFixedFont{\tud@head@font@bold}{\encodingdefault}% {\sfdefault}{\bfseries@sf}{\shapedefault}{\tud@head@fontsize}% %<*poster> \protected\gdef\tud@head@font@@bold{% \usefont{\encodingdefault}{\sfdefault}{\bfseries@sf}{\shapedefault}% }% % \else% \DeclareFixedFont{\tud@head@font@light}{\encodingdefault}% {\sfdefault}{\mddefault}{\shapedefault}{\tud@head@fontsize}% \DeclareFixedFont{\tud@head@font@bold}{\encodingdefault}% {\sfdefault}{\bfdefault}{\shapedefault}{\tud@head@fontsize}% %<*poster> \protected\gdef\tud@head@font@@bold{% \usefont{\encodingdefault}{\sfdefault}{\bfdefault}{\shapedefault}% }% % \fi% \ifcase\tud@head@font@num\relax\else% true/heavy \tud@head@cdfont@set% \fi% \global\@tud@head@font@setfalse% \global\@tud@head@text@settrue% \fi% } % \end{macrocode} % Hiermit werden die eigentlichen Schriften des \CDs gesetzt. % \begin{macrocode} \newcommand*\tud@head@cdfont@set{% \if@tud@cdfont@fam@exist% \ifcase\tud@head@font@num\relax\or% true \DeclareFixedFont{\tud@head@font@light}{\encodingdefault}% {\tud@cdfont@fam@lf}{l}{n}{\tud@head@fontsize}% \DeclareFixedFont{\tud@head@font@bold}{\encodingdefault}% {\tud@cdfont@fam@lf}{sb}{n}{\tud@head@fontsize}% %<*poster> \protected\gdef\tud@head@font@@bold{% \usefont{\encodingdefault}{\tud@cdfont@fam@lf}{sb}{n}% }% % \or% heavy \DeclareFixedFont{\tud@head@font@light}{\encodingdefault}% {\tud@cdfont@fam@lf}{m}{n}{\tud@head@fontsize}% \DeclareFixedFont{\tud@head@font@bold}{\encodingdefault}% {\tud@cdfont@fam@lf}{b}{n}{\tud@head@fontsize}% %<*poster> \protected\gdef\tud@head@font@@bold{% \usefont{\encodingdefault}{\tud@cdfont@fam@lf}{b}{n}% }% % \fi% \fi% } % \end{macrocode} % Und noch die Variante für die alten Schriften. % \begin{macrocode} \if@tud@cdoldfont@active \renewcommand*\tud@head@cdfont@set{% \if@tud@cdfont@fam@exist% \ifcase\tud@head@font@num\relax\or% true \DeclareFixedFont{\tud@head@font@light}{\encodingdefault}% {\tud@cdfont@fam@lf}{l}{n}{\tud@head@fontsize}% \or% heavy \DeclareFixedFont{\tud@head@font@light}{\encodingdefault}% {\tud@cdfont@fam@lf}{m}{n}{\tud@head@fontsize}% \fi% \DeclareFixedFont{\tud@head@font@bold}{\encodingdefault}% {\tud@cdfont@fam@lf}{b}{n}{\tud@head@fontsize}% %<*poster> \protected\gdef\tud@head@font@@bold{% \usefont{\encodingdefault}{\tud@cdfont@fam@lf}{b}{n}% }% % \fi% }% \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 % \end{macro}^^A \tud@head@cdfont@set % \end{macro}^^A \tud@head@font@set % % \iffalse % % \fi % % \subsection{Kompatibilität der Schriften} % \subsubsection{Majuskel-ß für Unicode-Prozessoren} % % Es wird für die Majuskelvariante der Letter \enquote*{ß} eine Rückfallebene % (Substitution mit \enquote*{SS}) definiert, da diese für Unicode-Engines % standardmäßig nicht bereitgestellt wird. Um diese zu erkennen, wird auf die % gleiche Methodik wie im Paket \pkg{newunicodechar} zurückgegriffen. % \begin{macrocode} \begingroup \catcode`\^=7 \catcode30=12 \catcode`\!=12 \edef\tud@reserved{\@gobble^^^^0021} \expandafter\endgroup % \end{macrocode} % Wurde eine Unicode-Engine erkannt (|^^^^0021| wird als ein Token gelesen), % dann werden die Kodierungen für kleines und großes \enquote*{ß} dahingehend % angepasst, dass diese \enquote*{ss} bzw. \enquote*{SS} verwenden, wenn die % entsprechende Letter nicht vorhanden ist. % \begin{macrocode} \ifx\tud@reserved\@empty \RequirePackage{newunicodechar} \uccode"00DF="1E9E \lccode"1E9E="00DF \newunicodechar{^^^^00df}{\iffontchar\font"00DF \symbol{"00DF}\else ss\fi} \newunicodechar{^^^^1e9e}{\iffontchar\font"1E9E \symbol{"1E9E}\else SS\fi} \fi % \end{macrocode} % % \subsubsection{Ausrichtung von Überschriften und das Paket \pkg{ragged2e}} % % \begin{macro}{\tud@raggedright} % \begin{macro}{\tud@RaggedRight} % Die Überschriften sollen laut \CD linksbündig und ohne Silbentrennung gesetzt % werden. Normalerweise ist das dies beim linksbündigen Satz bei \LaTeX{} der % Fall. Allerdings ist es mit dem Paket \pkg{ragged2e} möglich, das Verhalten % für den Flattersatz zu ändern und die Silbentrennung zu aktivieren. Mit der % Option \opt{newcommands} werden dabei die originalen Befehle überschrieben, % vorher jedoch beispielsweise in \cs{LaTeXraggedright} gesichert. Diese Makros % dienen dazu, die Überschriften in jedem Fall~-- auch bei der Verwendung von % \pkg{ragged2e} mit der Option \opt{newcommands}~-- ohne Trennungen zu setzen. % \begin{macrocode} \newcommand*\tud@raggedright{\raggedright} \newcommand*\tud@RaggedRight{\raggedright} \AfterPackage*{ragged2e}{% \ifundef{\LaTeXraggedright}{}{% \renewcommand*\tud@raggedright{\LaTeXraggedright}% }% \renewcommand*\tud@RaggedRight{\RaggedRight}% } % \end{macrocode} % \end{macro}^^A \tud@RaggedRight % \end{macro}^^A \tud@raggedright % % \subsubsection{Anpassungen für das Paket \pkg{siunitx}} % % \begin{macro}{\lseries} % \begin{macro}{\tud@x@siunitx@mapping} % \changes{v2.06o}{2022/08/08}{neu} % \begin{macro}{\tud@x@siunitx@reset} % \changes{v2.06o}{2022/07/31}{neu} % \begin{macrocode} \AfterAtEndOfPackage*{siunitx}{% \IfPackageAtLeastTF{siunitx}{2021-04-18}{% % \end{macrocode} % Das Paket \pkg{siunitx} in der Version |v3| stellt eine Schnittstelle für % die Zuordnung von Schriftschnitten zur verwendeten Mathematikversionen zur % Verfügung. Da vorher erheblicher Aufwand betrieben wurde, die korrekten % Schriftschnitte im Mathematikmodus mit den Versionen |normal| und |bold| % bereitzustellen, werden bei aktivierten Schriften des \CDs die entsprechenden % Zuordnungen gesetzt. % \begin{macrocode} \newcommand*\tud@x@siunitx@mapping{% \if@tud@cdfont@active \csname keys_set:nx\endcsname { siunitx / series-version-mapping } { \tud@cdfont@md = normal, \tud@cdfont@bf = bold, \tud@cdfont@ebf = bold } \else % \end{macrocode} % Zurücksetzen auf die Standardeinstellungen von \pkg{siunitx}. % \begin{macrocode} \csname keys_set:nn\endcsname { siunitx / series-version-mapping } { ul = light , el = light , l = light , sl = light , m = normal , sb = bold , b = bold , eb = bold , ub = bold } \fi } \xapptocmd\tud@font@set% {\tud@x@siunitx@mapping}% {}{\tud@patch@wrn{tud@font@set}}% }{% % \end{macrocode} % Das Paket \pkg{siunitx} in der Version |v2| nutzt den Befehl \cs{lseries} für % den Fall, dass für den Fließtext eine Schrift die Serie \val{l} verwendet. % Dem wird hier Rechnung getragen. Außerdem muss bei der Auswahl der Schriften % evtl. auf das Paket reagiert werden, weil es sich bei der Definition der % Schriften für den Mathematikmodus auf \cs{familydefault} bzw. \cs{rmfamily} % verlässt. Deshalb werden am Ende der Präambel die Schrifteinstellungen mit % \opt{cdfont}|=|\val{false} deaktiviert und zu Beginn des Dokumentes auf die % aktuelle Einstellung gesetzt. Dieser etwas merkwürdige Workaround geht auf % die gemeldeten Probleme im \GitHubRepo<22> sowie im \Forum<503> zurück. % \begin{macrocode} \newcommand*\tud@x@siunitx@reset{}% \providecommand*\lseries{\fontseries{l}\selectfont}% \AtEndPreamble{% \if@tud@cdfont@active% \if@tud@cdfont@heavy% \def\tud@x@siunitx@reset{\TUDoptions{cdfont=heavy}}% \else% \def\tud@x@siunitx@reset{\TUDoptions{cdfont=true}}% \fi% \appto\tud@x@siunitx@reset{\tud@font@set[]}% \TUDoptions{cdfont=false}% \tud@font@set[]% \fi% }% \AtBeginDocument{\tud@x@siunitx@reset}% } } % \end{macrocode} % \end{macro}^^A \tud@x@siunitx@reset % \end{macro}^^A \tud@x@siunitx@mapping % \end{macro}^^A \lseries % % \subsubsection{Mathematikschriften in Verbindung mit dem Paket \pkg{bm}} % % \begin{macro}{\tud@x@bm@delayed} % \begin{macro}{\if@tud@x@bm@requested} % Das Paket \pkg{bm} stellt den Befehl \cs{bm} für fette und kursive Symbole im % Mathematiksatz bereit. Damit dies funktioniert, muss das Laden des Paketes % auf das Ende der Präambel verzögert werden, um zuvor alle Einstellungen für % die mathematischen Symbole vornehmen zu können. Dieser Workaround geht auf % eine Meldung im \Forum<448> zurück. % \begin{macrocode} \tud@newif\if@tud@x@bm@requested %<*package> \@ifpackageloaded{bm}{% \PackageWarning{tudscrfonts}{% Package `bm' must be loaded after `tudscrfonts'. \MessageBreak% Otherwise the functionality can not be guaranteed% }% }{% % \PreventPackageFromLoading[\@tud@x@bm@requestedtrue]{bm} %<*package> } % % \end{macrocode} % Wird das Paket verzögert geladen, so werden die Mathematikschriften des \CDs % aktiviert (falls zuvor angefordert), damit die durch das Paket \pkg{bm} % vollzogenen Einstellungen für diese auch wirksam werden. Anschließend wird % der Ausgangszustand wiederhergestellt, um den späteren und erstmaligen Aufruf % von \cs{tud@math@set} vollständig abarbeiten zu können. % \begin{macrocode} \newcommand*\tud@x@bm@delayed{% \if@tud@x@bm@requested% \UnPreventPackageFromLoading{bm}% \if@tud@cdmath@active% \tud@cs@store{mv@normal}% \tud@cs@store{mv@bold}% \tud@cdmath@set% \fi% \RequirePackage{bm} \tud@cs@restore{mv@normal}% \tud@cs@restore{mv@bold}% \fi% \let\tud@x@bm@delayed\relax% } % \end{macrocode} % Für die \OpenSans kommt das Paket \pkg{mathastext} zum Einsatz. In diesem % Fall muss das Paket \pkg{bm} bereits zuvor geladen werden. % \begin{macrocode} \BeforePackage{mathastext}{\tud@x@bm@delayed} % \end{macrocode} % \end{macro}^^A \if@tud@x@bm@requested % \end{macro}^^A \tud@x@bm@delayed % % \subsubsection{Anpassungen für die Klasse \cls{beamer}} % % Die \cls{beamer}-Klasse lädt standardmäßig serifenlose Mathematikschriften. % Dies soll verhindert werden, damit die Auswahl über die Option \opt{cdmath} % erfolgen kann. % \begin{macrocode} %<*package> \AfterClass*{beamer}{\usefonttheme[onlymath]{serif}} % % \end{macrocode} % % \subsection{Aktivieren der gewählten Schriften} % % Die eigentliche Schriftauswahl erfolgt~-- abhängig von den zuvor gesetzten % Einstellungen~-- erst am Ende der Präambel, um etwaige Voreinstellungen % anderer Schriftpakete beachten zu können. Dabei erfolgt die Auswahl der % Schriften für den Mathematiksatz durch \cs{AtBeginDocument} innerhalb von % \cs{AtEndPreamble} am Ende \emph{möglichst aller} \cs{AtBeginDocument}. % \ToDo{das passt mit den neuen hooks so nicht mehr unbedingt}[v2.07] % \begin{macrocode} \AtEndPreamble{% % \end{macrocode} % Falls das Paket \pkg{mweights} geladen wurde, werden im Bedarfsfall die vom % Paket erwarteten Makros für die Schriftstärken der einzelnen Schriftfamilien % definiert. Beim Aufruf von \cs{tud@font@set} werden diese anschließend % gesichert. % \begin{macrocode} \if@tud@x@mweights@enabled% \ifundef{\bfseries@rm}{\edef\bfseries@rm{\bfdefault}}{}% \ifundef{\mdseries@rm}{\edef\mdseries@rm{\mddefault}}{}% \ifundef{\bfseries@sf}{\edef\bfseries@sf{\bfdefault}}{}% \ifundef{\mdseries@sf}{\edef\mdseries@sf{\mddefault}}{}% \ifundef{\bfseries@tt}{\edef\bfseries@tt{\bfdefault}}{}% \ifundef{\mdseries@tt}{\edef\mdseries@tt{\mddefault}}{}% \fi% % \end{macrocode} % Hier wird auf das Vorhandensein aller benötigten Schriften geprüft. % \begin{macrocode} \tud@cdfont@check% % \end{macrocode} % Nachdem auf die Schriften geprüft wurde, werden noch die Schriftschalter und % die dazugehörigen Befehle definiert. Auch die mathematischen Schriften werden % initialisiert. % \begin{macrocode} \tud@cdfont@init% \tud@ttfont@init% % \end{macrocode} % Damit die Schrift im Dokument später noch umgestellt werden kann, werden % sämtliche Einstellungen erst am Ende der Präambel gesichert. Deshalb wird % der dafür verantwortliche Befehl \cs{tud@font@set} hier zum ersten Mal % verwendet. Damit ist es möglich, die Schriften eventuell geladener Pakete wie % \pkg{lmodern} oder \pkg{libertine} vorher zu sichern und später wieder zu % aktivieren. % \begin{macrocode} \tud@font@set% % \end{macrocode} % Die Definitionen für den Mathematiksatz erfolgen erst zu Dokumentbeginn, um % auf Einstellungen von anderen Schriftpaketen reagieren zu können. Wurde % jedoch das Paket \pkg{bm} angefordert, so müssen die Mathematikschriften % bereits zum Ende der Präambel über \cs{tud@x@bm@delayed} initialisiert werden. % \begin{macrocode} \tud@cdmath@init% \tud@x@bm@delayed% % \end{macrocode} % Bereitstellung der Auswahlbefehle für griechische Lettern in der Nomenklatur % von \TUDScript (|\up|\meta{Letter}, |\it|\meta{Letter}). % \begin{macrocode} \tud@math@map@greeks% % \end{macrocode} % Für die griechischen Lettern wird mit \cs{tud@math@checkslanted@greeks} % geprüft, ob diese durch ein Paket explizit auf kursive Majuskeln oder eine % vollständig aufrechte Variante gesetzt wurden. Ist dies der Fall, wird der % Standardwert für die Option \opt{slantedgreek} entsprechend angepasst. % \begin{macrocode} \tud@math@checkslanted@greeks% % \end{macrocode} % Nachdem alle Vorbereitungen getroffen wurden, werden die Schriften für den % mathematischen Satz nun endlich gesetzt. % \begin{macrocode} \AtBeginDocument{\tud@math@set}% % \end{macrocode} % \ToDo{Hook definieren, um Anwender eigenen Kram definieren zu lassen}[v2.07] % \begin{macrocode} } % \end{macrocode} % % \iffalse % % \fi % % \PrintBackMatter % \endinput