% \iffalse meta-comment %/GitFileInfo=tudscr-misc.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-misc.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 % % % % \section{Verschiedenes für das \TUDScript-Bundle} % % Alles, wofür sich eine separate Datei nicht lohnt, landet hier. % % \iffalse %<*!(manual|doc)> %<*class&option> % \fi % % \subsection{Sprungmarken} % % \begin{option}{tudbookmarks} % \begin{macro}{\if@tud@bookmarks} % Wird das Paket \pkg{hyperref} geladen, so kann die Option \opt{tudbookmarks} % genutzt werden, um zu steuern, ob für Titel und Inhaltsverzeichnis % automatisch ein Eintrag für die Sprungmarken erzeugt werden soll. % \begin{macrocode} \tud@newif\if@tud@bookmarks \TUD@key{tudbookmarks}[true]{% \TUD@set@ifkey{tudbookmarks}{@tud@bookmarks}{#1}% } % \end{macrocode} % \end{macro}^^A \if@tud@bookmarks % \end{option}^^A tudbookmarks % % \iffalse % %<*class&body> % \fi % % \begin{macro}{\tudbookmark} % \begin{macro}{\tud@x@hyperref@realfootnotes} % Die Befehle zum Eintragen der Sprungmarken. Im Dokument kann \cs{tudbookmark} % auch vom Anwender genutzt werden, um weitere Lesezeichen abhängig von der % Option \opt{tudbookmarks} manuell zu erzeugen. % % Für die Titelseite werden~-- wie auch durch das Paket \pkg{hyperref}~-- die % Fußnoten mit dem Befehl \cs{tud@x@hyperref@realfootnotes} auf den originalen % Zustand zurückgesetzt. % \ToDo{nur als internen Befehl definieren, dazugehörige Option nötig?}[v2.07] % \ToDo{\cs{tud@x@hyperref@realfootnotes} prüfen}[v2.07] % \begin{macrocode} \newcommand*\tudbookmark[1][]{\@gobbletwo} \newcommand*\tud@x@hyperref@realfootnotes{} \AfterPackage{hyperref}{% \renewcommand*\tudbookmark[3][0]{% \relax% \if@tud@bookmarks% \csuse{phantomsection}% \pdfbookmark[{#1}]{#2}{#3}% \fi% }% \renewcommand*\tud@x@hyperref@realfootnotes{% \let\Hy@saved@footnotemark\@footnotemark% \let\Hy@saved@footnotetext\@footnotetext% \let\@footnotemark\H@@footnotemark% \let\@footnotetext\H@@footnotetext% }% } % \end{macrocode} % \end{macro}^^A \tud@x@hyperref@realfootnotes % \end{macro}^^A \tudbookmark % \begin{macro}{\tud@x@bookmark@startatroot} % \changes{v2.05}{2015/08/05}{neu}^^A % Wird das Paket \pkg{bookmark} geladen, können die erzeugten Outlines gezielt % auf der obersten Ebene erzeugt werden. % \begin{macrocode} \newcommand*\tud@x@bookmark@startatroot{\relax} \AfterPackage{bookmark}{% \renewcommand*\tud@x@bookmark@startatroot{% \if@tud@bookmarks\bookmarksetup{startatroot}\fi% }% } % \end{macrocode} % \end{macro}^^A \tud@x@bookmark@startatroot % \begin{environment}{titlepage} % \changes{v2.05}{2015/08/05}{neu}^^A % \begin{macro}{\@maketitle} % \changes{v2.05}{2015/08/05}{neu}^^A % \begin{macro}{\tud@maketitle@inpage} % \changes{v2.05}{2015/08/05}{neu}^^A % Ist die Option \opt{tudbookmarks} aktiviert, werden für Umschlag- und % Titelseite PDF"=Lesezeichen bzw. Outline-Einträge erzeugt. % \begin{macrocode} %<*book|report|article> \apptocmd\titlepage{% \tud@x@bookmark@startatroot% \@tud@res@swafalse% \if@tud@coverpage\@tud@res@swatrue\fi% \if@titlepageiscoverpage\@tud@res@swatrue\fi% \if@tud@res@swa% \tudbookmark[% % 0% %
1% ]{\coverpagename}{cover}% \else% \tudbookmark[% % 0% %
1% ]{\titlepagename}{title}% \fi% }{}{\tud@patch@wrn{titlepage}} % % \end{macrocode} % Dies geschieht außerdem auch für die Titelköpfe. % \begin{macrocode} \pretocmd\tud@maketitle@inpage{% \tud@x@bookmark@startatroot% \tudbookmark[% % 0% % 1% ]{\titlename}{title}% }{}{\tud@patch@wrn{tud@maketitle@inpage}} \pretocmd\@maketitle{% \tud@x@bookmark@startatroot% \tudbookmark[% % 0% % 1% ]{\titlename}{title}% }{}{\tud@patch@wrn{@maketitle}} % \end{macrocode} % \end{macro}^^A \tud@maketitle@inpage % \end{macro}^^A \@maketitle % \end{environment}^^A titlepage % \begin{macro}{\tableofcontents} % \begin{macro}{\listoffigures} % \begin{macro}{\listoftables} % Für die Verzeichnisse geschieht dies auch. Für das Inhaltsverzeichnis ist % hierfür etwas mehr Aufwand notwendig. Für dieses wird im Normalfall keine % PDF-Outline erzeugt. Deshalb ist hier ein wenig Trickserei notwendig, um zwar % einen Outline-Eintrag für das Inhaltsverzeichnis zu erzeugen, dieses dabei % aber nicht in sich selbst einzutragen. % \begin{macrocode} \BeforeTOCHead[toc]{% \tud@x@bookmark@startatroot% \let\@tempc\relax% \Iftocfeature{toc}{totoc}{}{% \if@tud@bookmarks% \setuptoc{toc}{totoc}% \tud@cs@store{addtocontents}% \def\@tempc{% \unsettoc{toc}{totoc}% \tud@cs@restore{addtocontents}% }% \let\addtocontents\@gobbletwo% \fi% }% } \AfterTOCHead[toc]{\@tempc} \BeforeTOCHead[lof]{\tud@x@bookmark@startatroot} \BeforeTOCHead[lot]{\tud@x@bookmark@startatroot} % \end{macrocode} % \end{macro}^^A \listoftables % \end{macro}^^A \listoffigures % \end{macro}^^A \tableofcontents % % \iffalse % %<*class&option> % \fi % % \subsection{Fußnoten in Überschriften} % % Eigentlich sollte die Option \opt{footnotes}|=|\val{symbolheadings} es % ermöglichen, Fußnoten mit Symbolen in Überschriften zu verwenden. Umgesetzt % werden sollte dies mit dem Paket \pkg{footmisc}. Da dieses aber mit % Inkompatibilitäten zu \pkg{hyperref} und \KOMAScript{} aufwartet, wird darauf % leider verzichtet. %^^A% \begin{option}{footnotes} %^^A% \changes{v2.02}{2014/06/27}{neu}^^A %^^A% \begin{macro}{\if@tud@symbolheadings} %^^A% \changes{v2.02}{2014/06/27}{neu}^^A %^^A% \begin{macro}{\tud@sec@note} %^^A% \changes{v2.02}{2014/06/27}{neu}^^A %^^A% \begin{counter}{symbolheadings} %^^A% \changes{v2.02}{2014/06/27}{neu}^^A %^^A% Die \KOMAScript-Option \opt{footnotes} wird um den Schlüssel %^^A% \val{symbolheadings} erweitert, mit welchem eingestellt werden kann, ob %^^A% in den Überschriften Symbole für die Fußnoten anstelle von Zahlen %^^A% verwendet werden sollen. %^^A% \begin{macrocode} %^^A\tud@newif\if@tud@symbolheadings %^^A\TUD@key{footnotes}{% %^^A \TUD@set@numkey{footnotes}{@tempa}{% %^^A {nosymbolheadings}{0},{numberheadings}{0},% %^^A {symbolheadings}{1}% %^^A }{#1}% %^^A \ifx\FamilyKeyState\FamilyKeyStateProcessed% %^^A \ifcase\@tempa\relax% nosymbolheadings %^^A \@tud@symbolheadingsfalse% %^^A \or% symbolheadings %^^A \@tud@symbolheadingstrue% %^^A \fi% %^^A \fi% %^^A} %^^A% \end{macrocode} %^^A% Mit \cs{tud@sec@note} wird die Option \opt{footnotes=symbolheadings} %^^A% umgesetzt. Hierfür wird das Paket \pkg{footmisc} benötigt. %^^A% \begin{macrocode} %^^A\newcommand*\tud@sec@note[1]{% %^^A \ClassWarning{\TUD@Class@Name}{% %^^A You have to load package `footmisc' with\MessageBreak% %^^A option `stable' in order to use\MessageBreak% %^^A footnotes with symbols in headings% %^^A }% %^^A} %^^A\AfterPackage{footmisc}{% %^^A \@ifpackagewith{footmisc}{stable}{% %^^A \renewcommand*\tud@sec@note[1]{% %^^A \begingroup% %^^A \if@tud@symbolheadings% %^^A \let\c@footnote\c@symbolheadings% %^^A \def\thefootnote{\fnsymbol{symbolheadings}}% %^^A \fi% %^^A \footnote{#1}% %^^A \endgroup% %^^A }% %^^A }{}% %^^A} %^^A% \end{macrocode} %^^A% Bei aktivierter Option \opt{footnotes}|=|\val{symbolheadings} wird %^^A% dieser Zähler für die Symboleauswahl von Fußnoten in Überschirften %^^A% inkrementiert. %^^A% \begin{macrocode} %^^A\AtEndOfClass{% %^^A% \newcounter{symbolheadings}[chapter] %^^A% \newcounter{symbolheadings} %^^A} %^^A% \end{macrocode} %^^A% \end{counter}^^A symbolheadings %^^A% \end{macro}^^A \tud@sec@note %^^A% \end{macro}^^A \if@tud@symbolheadings %^^A% \end{option}^^A footnotes % % \subsection{Papierformat und Schriftgröße} % % Insbesondere für Poster aber auch für alle anderen \TUDScript-Klassen wird % überprüft, ob nach einer Änderung des Standardpapierformates auch die % Schriftgröße durch den Anwender angepasst wurde. Diese wird jedoch nicht auf % Plausibilität geprüft, da der Aufwand hierfür relativ hoch wäre. Vielmehr % wird davon ausgegangen, dass die explizite Angabe der Schriftgröße bewusst % und dem Papierformat sowie den verwendeten Textspalten entsprechend erfolgt. % % \begin{macro}{\tud@x@scr@checkoptions} % \changes{v2.06}{2018/07/31}{neu}^^A % \begin{macro}{\tud@x@scr@pt} % \changes{v2.06}{2018/07/31}{neu}^^A % Das Makro \cs{tud@x@scr@checkoptions} wird mit \cs{DeclareOption*} für alle % Optionen aufgerufen, welche kein Mitglied der Familie~\val{TUD} sind. Damit % kann auf nicht definierte Schlüssel reagiert werden. Anschließend werden diese % an die zugrundeliegende \KOMAScript-Klasse weitergereicht. % \begin{macrocode} \newcommand*\tud@x@scr@checkoptions{% \expandafter\tud@x@scr@pt\CurrentOption pt\@nil% \expandafter\PassOptionsToClass\expandafter{\CurrentOption}{\TUD@Class@KOMA}% } % \end{macrocode} % Wird die Schriftgröße im veralteten Format \val{\dots pt} als Option % übergeben, so wird der Schalter \cs{if@tud@x@scr@fontsize@set} auf \val{true} % gesetzt. % \begin{macrocode} \newcommand*\tud@x@scr@pt{} \def\tud@x@scr@pt #1pt#2\@nil{% \tud@if@strequal{#2}{pt}{\Ifnumber{#1}{\@tud@x@scr@fontsize@settrue}{}}{}% } % \end{macrocode} % \end{macro}^^A \tud@x@scr@pt % \end{macro}^^A \tud@x@scr@checkoptions % % \iffalse % %<*class&body> % \fi % % Wurde das Papierformat jedoch nicht die Schriftgröße geändert, wird eine % Warnung erzeugt. % \begin{macrocode} \AtBeginDocument{% \if@tud@x@scr@fontsize@set\else% \@tud@res@swafalse% \ifdim\tud@dim@layoutwidth<208mm\relax\@tud@res@swatrue\fi% \ifdim\tud@dim@layoutwidth>212mm\relax\@tud@res@swatrue\fi% \ifdim\tud@dim@layoutheight<295mm\relax\@tud@res@swatrue\fi% \ifdim\tud@dim@layoutheight>299mm\relax\@tud@res@swatrue\fi% \if@tud@res@swa% \ClassWarningNoLine{\TUD@Class@Name}{% You've set a layout size, which is different from\MessageBreak% default (paper=a4, paper=portrait). Therefore you\MessageBreak% should explicitly specify an font size. See the\MessageBreak% manual for further information% }% \fi% \fi% } % \end{macrocode} % % \subsection{Fixierte Gleitobjekte für Poster} % % \begin{environment}{figurehere} % \changes{v2.05}{2016/04/17}{neu}^^A % \changes{v2.06o}{2022/08/02}{für \cls{tudscrposter} übernommen}^^A % \begin{environment}{tablehere} % \changes{v2.05}{2016/04/17}{neu}^^A % \changes{v2.06o}{2022/08/02}{für \cls{tudscrposter} übernommen}^^A % \begin{macro}{\tud@here@begin} % \changes{v2.06o}{2022/08/02}{neu}^^A % \begin{macro}{\tud@here@end} % \changes{v2.06o}{2022/08/02}{neu}^^A % Für die Klasse \cls{tudscrposter} werden zwei Umgebungen bereitgestellt, mit % denen sich Tabellen und Bilder an einer bestimmten Stelle exakt platzieren % lassen. Prinzipiell könnte hierfür auch das Paket \pkg{float} zum Einsatz % kommen. Ursprünglich stammt die Idee aus \cls{tudmathposter} und wurde hier % generalisiert implementiert. % \begin{macrocode} %<*poster> \newcommand*\tud@here@begin[1]{% \def\@captype{#1}% \vskip\intextsep% \color@vbox% \normalcolor% \vbox\bgroup% \hsize=\columnwidth% \@parboxrestore% \@floatboxreset% \@setnobreak% \ignorespaces% } \newcommand*\tud@here@end{% \vskip\intextsep% \@minipagefalse% \outer@nobreak% \egroup% \color@endbox% } \newenvironment{figurehere}{\tud@here@begin{figure}}{\tud@here@end} \newenvironment{tablehere}{\tud@here@begin{table}}{\tud@here@end} % % \end{macrocode} % \end{macro}^^A \tud@here@end % \end{macro}^^A \tud@here@begin % \end{environment}^^A tablehere % \end{environment}^^A figurehere % % \iffalse % %<*option> % \fi % % \section{Verarbeitung von Optionen} % \subsection{Sukkzessives Abarbeiten von Optionen im Dokument} % % Werden mit \cs{TUDoptions} nach |\begin{document}| mehrere Layoutoptionen % gleichzeitig angegeben, muss dafür Sorge getragen werden, dass diese in der % korrekten Reihenfolge abgearbeitet werden. % % Das Makro \cs{TUD@SpecialOptionAtDocument} kann innerhalb von \cs{TUD@key} % verwendet werden, um einen im obligatorischen Argument angegebenen Schalter % zu aktivieren. Dabei wird über \cs{tud@atdocument@hook} garantiert, dass der % Befehl \cs{tud@atdocument@process}, welcher für die Abarbeitung der einzelnen % Makros in der richtigen Reihenfolge verantwortlich ist, lediglich einmal über % \cs{AtEndOfFamilyOptions*} ausgeführt wird. % % \begin{macro}{\TUD@SpecialOptionAtDocument} % \changes{v2.05}{2016/06/14}{neu}^^A % \begin{macro}{\tud@atdocument@hook} % \changes{v2.05}{2016/06/14}{neu}^^A % \begin{macrocode} \newcommand*\tud@atdocument@hook{} \let\tud@atdocument@hook\relax \newcommand*\TUD@SpecialOptionAtDocument[1]{} \AfterEndPreamble{% \renewcommand*\TUD@SpecialOptionAtDocument[1]{% \ifx\tud@atdocument@hook\relax% \gdef\tud@atdocument@hook{\global\let\tud@atdocument@hook\relax}% \AtEndOfFamilyOptions*{% \tud@atdocument@hook% \tud@atdocument@process% }% \fi% \gappto\tud@atdocument@hook{\global\booltrue{@#1}}% }% } % \end{macrocode} % \end{macro}^^A \tud@atdocument@hook % \end{macro}^^A \TUD@SpecialOptionAtDocument % % \iffalse % %<*body> % \fi % % \begin{macro}{\tud@atdocument@process} % \changes{v2.05}{2016/06/14}{neu}^^A % \begin{macro}{\if@tud@font@set} % \changes{v2.05}{2016/06/14}{neu}^^A % \begin{macro}{\if@tud@math@set} % \changes{v2.05}{2016/06/14}{neu}^^A % \begin{macro}{\if@tud@relspacing@set} % \changes{v2.05}{2016/06/14}{neu}^^A % \begin{macro}{\if@tud@x@scr@headings@reset} % \changes{v2.05}{2016/06/14}{neu}^^A % \begin{macro}{\if@tud@cd@process} % \changes{v2.05}{2016/06/14}{neu}^^A % \begin{macro}{\if@tud@cdgeometry@process} % \changes{v2.05}{2016/06/14}{neu}^^A % Das Makro \cs{tud@atdocument@process} wird im Dokument ausgeführt, wenn % mindestens eine Option gesetzt wurde, welche \cs{TUD@SpecialOptionAtDocument} % verwendet. Je nachdem, welche Schalter insgesamt aktiviert wurden, werden die % dazugehörigen Befehle für die Einstellungen von Schriften, Layout und/oder % Satzspiegel in der richtigen Reihenfolge ausgeführt. % \begin{macrocode} \tud@newif\if@tud@font@set \tud@newif\if@tud@math@set \tud@newif\if@tud@relspacing@set %<*class> \tud@newif\if@tud@x@scr@headings@reset \tud@newif\if@tud@cd@process \tud@newif\if@tud@cdgeometry@process % \newcommand*\tud@atdocument@process{% \if@tud@font@set% \tud@font@set% \global\@tud@font@setfalse% \global\@tud@relspacing@setfalse% % \global\@tud@cd@processfalse% \fi% \if@tud@relspacing@set% \tud@relspacing@set% \global\@tud@relspacing@setfalse% \fi% \if@tud@math@set% \tud@math@set% \global\@tud@math@setfalse% \fi% %<*class> \if@tud@x@scr@headings@reset% \tud@x@scr@headings@reset% \global\@tud@x@scr@headings@resetfalse% \global\@tud@cd@processfalse% \fi% \if@tud@cd@process% \tud@cd@process% \global\@tud@cd@processfalse% \fi% \if@tud@cdgeometry@process% \tud@cdgeometry@process% \global\@tud@cdgeometry@processfalse% \fi% % } % \end{macrocode} % \end{macro}^^A \if@tud@cdgeometry@process % \end{macro}^^A \if@tud@cd@process % \end{macro}^^A \if@tud@x@scr@headings@reset % \end{macro}^^A \if@tud@relspacing@set % \end{macro}^^A \if@tud@math@set % \end{macro}^^A \if@tud@font@set % \end{macro}^^A \tud@atdocument@process % % \iffalse % % %<*execute> %<*class&!inherit|package&fonts> % \fi % % \subsection{Versionsabhängige Voreinstellungen} % % Voreinstellungen von neu eingeführten Optionen, welche die resultierende % Ausgabe entscheidend verändern könnten, werden hier versionsabhängig gesetzt. % Hierfür wird der Schlüssel \opt{tudscrver} des Mitglieds \val{.comp} vor % allen anderen Schlüsseln ausgewertet. Danach kann mit \cs{tud@if@v@lower} auf % die gewählte Kompatibilitäsversion getestet werden. % \begin{macrocode} \DeclareOption*{} \TUDProcessOptions[.comp]\relax % \end{macrocode} % Ab der \TUDScript-Version~v2.05 werden einige vertikale Abstände abhängig von % der Schriftgröße definiert. Sollte eine frühere Kompatibilitätseinstellung % angegeben worden sein, wird dieses verhalten deaktiviert. % \begin{macrocode} \tud@if@v@lower{2.05}{% \TUD@key@preset{relspacing}{false}% }{% \TUD@key@preset{relspacing}{true}% } % \end{macrocode} % Ab \TUDScript-Version~v2.06 werden die verwendeten Schriften auf \OpenSans % gesetzt, für die Komptibilität zu vorherigen Versionen auf \Univers und \DIN. % \begin{macrocode} \tud@if@v@lower{2.06}{% % \TUD@key@preset{cdoldfont}{true}% % \TUD@key@preset{cdoldfont}{ultrabold}% \TUD@key@preset{ttfont}{lmodern}% % \TUD@key@preset{headings}{light}% }{% % \TUD@key@preset{cdfont}{true}% % \TUD@key@preset{cdfont}{ultrabold}% \TUD@key@preset{ttfont}{roboto}% % \TUD@key@preset{headings}{heavy}% } % \end{macrocode} % % \iffalse % % \fi % % Es werden die Standardoptionen ausgeführt. Für die Klasse \cls{tudscrposter} % werden die Farben aktiviert. % \begin{macrocode} %<*package&manual> \KOMAoptions{headings=small} \TUDoptions{cdfoot=true} % %<*class&!inherit|package> \TUDExecuteOptions{% %<*package&fixfonts> headings=heavy% % %<*class&!inherit> %<*book|report|article> cd=true,tudbookmarks=true% % %<*poster> cd=bicolor,tudbookmarks=false% % % } % % \end{macrocode} % % \subsection{Durchreichen von Optionen und Standardoptionen} % % Durchreichen aller Klassenoptionen an die \KOMAScript-Klasse bzw. an die % genutzte \TUDScript-Elternklasse. Für Klassen wird vor dem Durchreichen noch % geprüft, ob ein spezielles Papierformat angegeben wurde. % \begin{macrocode} %<*package> %<*fonts> \DeclareOption*{\expandafter\TUD@KOMAoptions\expandafter{\CurrentOption}} % %<*fixfonts> \DeclareOption*{% \expandafter\PassOptionsToPackage\expandafter{\CurrentOption}% {tudscrfonts}% } % %<*comp> \DeclareOption*{\expandafter\TUDoptions\expandafter{\CurrentOption}} % % %<*class> %<*!inherit> \DeclareOption*{\tud@x@scr@checkoptions} % %<*inherit> \DeclareOption*{% \expandafter\PassOptionsToClass\expandafter{\CurrentOption}% {\TUD@Class@Parent}% } % % % \end{macrocode} % Nach der Auswerung der Optionen wird die korrespondierende \KOMAScript-Klasse % bzw. \TUDScript-Elternklasse geladen. % \begin{macrocode} \TUDProcessOptions\relax %<*class&!inherit> \LoadClass{\TUD@Class@KOMA}[% %!TUD@KOMAVersion ] % %<*class&inherit> \LoadClass{\TUD@Class@Parent}[% %!TUD@Version ] % % \end{macrocode} % % \iffalse %<*class&!inherit|package&fonts> % \fi % % \subsection{Optionen ohne späte Wahlmöglichkeit} % % Einige Optionen können nur zum Zeitpunkt des Ladens einer Klasse oder eines % Paketes respektive in der Präambel gesetzt werden. Diese müssen \emph{nach} % \cs{TUDProcessOptions} mit \cs{TUD@key@toolate} redefiniert werden. % % \begin{macro}{\TUD@key@toolate} % \changes{v2.06c}{2019/08/20}{neu}^^A % Dieser Befehl definiert eine Fehlermeldung für Schlüssel respektive Optionen, % die zu spät verwendet wurden, wobei er innerhalb der Makros \cs{AtEndOfClass}, % oder \cs{AtEndOfPackage} respektive \cs{AtEndPreamble} genutzt werden sollte. % Wird dieser im Kontext von Klasse oder Paket (|\@currname.\@currext-h@@k|) % verwendet, wird gemeldet, dass der Schlüssel allein beim Laden der Klasse % respektive des Paketes genutzt werden darf. Andernfalls wird die zwingende % Verwendung in der Präambel angemerkt. % \begin{macrocode} \newcommand*\TUD@key@toolate[1]{% \csedef{tud@key@toolate@@#1}{% %<*class> \noexpand\ClassError{\noexpand\TUD@Class@Name}% % %<*package&fonts> \noexpand\PackageError{tudscrfonts}% % {Option `#1' too late}{% Option `#1' can only be set\space% \ifcsdef{\@currname.\@currext-h@@k}{% as optional \MessageBreak argument while loading\space% %<*class> class `\noexpand\TUD@Class@Name'% % %<*package&fonts> package `tudscrfonts'% % }{% in the preamble% }% \MessageBreak but you have tried to set it up later.% }% }% \TUD@key[]{#1}[]% {% \csuse{tud@key@toolate@@#1}% \FamilyKeyStateProcessed% }% } % \end{macrocode} % \end{macro}^^A \TUD@key@toolate % % \iffalse % % %<*manual|doc> % \fi % % \section{Zusätzliches für die Benutzer- und Quelltextdokumentation} % % Hier tauchen Hilfsmittel auf, die für die Dokumentation verwendet werden. % % \iffalse %<*option> % \fi % % \subsection{Zusätzliche Pakete} % % Bugfixes für unterschiedliche Pakete. % \begin{macrocode} \RequirePackage{scrhack}[% %!TUD@KOMAVersion ] % \end{macrocode} % Das Paket für intelligente Leerzeichen am Ende von Makros mit \cs{xspace}. % \begin{macrocode} \RequirePackage{xspace} \xspaceaddexceptions{"=} % \end{macrocode} % Das Paket \pkg{marginnote} stellt nicht fließenden Randnotizen bereit, welche % für die Kennzeichnung von Änderungen, Hinweise oder ToDo-Notizen verwendet % werden. Die Randnotizen werden auf dem linken~-- weil größeren~-- Seitenrand % gesetzt. % \begin{macrocode} \PassOptionsToPackage{quiet}{marginnote} \RequirePackage{marginnote} %\reversemarginpar % \end{macrocode} % Das Paket \pkg{shellesc} ermöglicht mit dem Befehl \cs{ShellEscape} die % Verwendung von Systembefehlen auf der Kommandozeile unabhängig vom genutzten % Format. Sollte \app{lualatex} als Dokumentprozessor eingesetzt werden, sind % dennoch die beiden \app{pdflatex}-Primitiven \cs{pdf(@)strcmp} und % \cs{pdf(@)shellescape} nötig, wofür das Paket \pkg{pdftexcmds} geladen wird. % \begin{macrocode} \RequirePackage{shellesc} \RequirePackage{pdftexcmds} % \end{macrocode} % % Das Paket \pkg{hyperref} wird für alle möglichen Links und Querverweise % geladen, \pkg{bookmark} verbessert das Erstellen der Outline-Einträge. % % \begin{macrocode} \PassOptionsToPackage{hyperindex=false}{hyperref} \AfterPackage*{bookmark}{\bookmarksetup{open,openlevel=1}} % \end{macrocode} % Es folgen einige Befehle, die an das Paket \pkg{hyperref} gekoppelt sind. % Sobald das Paket geladen wurde, werden die Makros mit der jeweiligen % Funktionalität definiert. % \begin{macrocode} \AfterAtEndOfPackage*{hyperref}{% \@ifpackageloaded{bookmark}{}{\RequirePackage{bookmark}}% \hypersetup{colorlinks,linkcolor=blue}% } % \end{macrocode} % \begin{macro}{\hrfn} % \changes{v2.02}{2014/08/16}{neu}^^A % \changes{v2.04}{2015/02/18}{Schriftgröße mit \cs{scalebox}}^^A % Mit diesem Makro können Hyperlinks im Fließtext erzeugt werden, welche % zusätzlich noch die dazugeörige URL als Fußnote anzeigen. % \begin{macrocode} \newcommand*\hrfn[2]{% \href{#1}{\trim@spaces{#2}}% \footnote{\strut\url{#1}}% } % \end{macrocode} % \end{macro}^^A \hrfn % \begin{macro}{\mailto} % Ein Makro zur Angabe einer verlinkten E"~Mail-Adresse. % \begin{macrocode} \newrobustcmd*\mailto[1]{\mbox{\href{mailto:#1}{\nolinkurl{#1}}}} % \end{macrocode} % \end{macro}^^A \mailto % \begin{macro}{\url} % \begin{macro}{\nolinkurl} % \begin{macro}{\href} % \begin{macro}{\hypersetup} % \begin{macro}{\phantomsection} % \begin{macro}{\pdfbookmark} % \begin{macro}{\currentpdfbookmark} % \begin{macro}{\subpdfbookmark} % \begin{macro}{\belowpdfbookmark} % Sollte \pkg{hyperref} nicht geladen werden, müssen einige Befehle rudimentär % definiert werden. % \begin{macrocode} \TUD@UnwindPackage{hyperref}{% \RequirePackage{url} \providerobustcmd*\url[1]{\texttt{\detokenize{#1}}}% \providerobustcmd*\nolinkurl[1]{\url{#1}}% \providerobustcmd*\href[3][]{#3}% \providecommand*\hypersetup[1]{}% \providecommand*\phantomsection{}% \providecommand*\pdfbookmark[3][]{}% \providecommand*\currentpdfbookmark[2]{}% \providecommand*\subpdfbookmark[2]{}% \providecommand*\belowpdfbookmark[2]{}% } % \end{macrocode} % \end{macro}^^A \belowpdfbookmark % \end{macro}^^A \subpdfbookmark % \end{macro}^^A \currentpdfbookmark % \end{macro}^^A \pdfbookmark % \end{macro}^^A \phantomsection % \end{macro}^^A \hypersetup % \end{macro}^^A \href % \end{macro}^^A \nolinkurl % \end{macro}^^A \url % % Etwas Kleinkram für \pkg{babel} und \pkg{csquotes}. Das letztere Paket dient % dem sprachabhängigen Setzen von Anführungszeichen und sollte erst nach % \pkg{inputenc} oder \pkg{inputenx} geladen werden. % \begin{macrocode} \AfterPackage*{babel}{\RequirePackage{csquotes}} % \end{macrocode} % \begin{macro}{\selectlanguage} % \begin{macro}{\glqq} % \begin{macro}{\grqq} % \begin{macro}{\enquote} % \begin{macrocode} \TUD@UnwindPackage{babel}{% \ClassWarningNoLine{\TUD@Class@Name}{Package `babel' not loaded}% \providecommand*\selectlanguage[1]{}% \providecommand*\glqq{\quotedblbase}% \providecommand*\grqq{\textquotedblleft}% \providecommand*\seename{see}% \providecommand*\alsoname{see\nobreakspace also}% } \TUD@UnwindPackage{csquotes}{% \ClassWarningNoLine{\TUD@Class@Name}{Package `csquotes' not loaded}% \providecommand\enquote[1]{\emph{#1}}% } % \end{macrocode} % \end{macro}^^A \enquote % \end{macro}^^A \grqq % \end{macro}^^A \glqq % \end{macro}^^A \selectlanguage % % \iffalse %<*class&manual> % \fi % % \subsection{Sortieren von Listen} % % \begin{macro}{\tud@list@sort} % \changes{v2.02}{2014/07/25}{neu}^^A % \begin{macro}{\tud@list@@sort} % \changes{v2.02}{2014/07/25}{neu}^^A % \begin{macro}{\tud@templist} % \changes{v2.02}{2014/07/25}{neu}^^A % \begin{macro}{\if@tud@list@sorted} % \changes{v2.02}{2014/07/25}{neu}^^A % Der Befehl \cs{tud@list@sort} erwartet eine \pkg{etoolbox}-Liste und sortiert % diese mit dem Makro \cs{sort@list} in alphabetischer Reihenfolge in eine % kommagetrennte Auflistung. Diese wird anschließend wieder in eine % \pkg{etoolbox}-Liste umgewandelt. % \begin{macrocode} \newcommand*\tud@templist{} \let\tud@templist\relax \newcommand*\tud@list@sort[1]{% \ifdefvoid{#1}{% \ClassWarning{tudscrmanual}{% The given list \string#1\space\MessageBreak% is empty, nothing to sort here% }% }{% \let\tud@reserved#1% \let\tud@templist\relax% \forlistloop\tud@list@@sort{\tud@reserved}% \let\tud@reserved\relax% \@for\@tempa:=\tud@templist\do{\listeadd\tud@reserved{\@tempa}}% \let#1\tud@reserved% }% } % \end{macrocode} % Hier erfolgt die eigentliche Sortierung der Liste. % \begin{macrocode} \tud@newif\if@tud@list@sorted \newcommand*\tud@list@@sort[1]{% % \end{macrocode} % Der erste Eintrag wird direkt der Liste hinzugefügt. % \begin{macrocode} \ifx\tud@templist\relax% \def\tud@templist{#1}% % \end{macrocode} % Weitere Einräge werden mit \cs{pdfstrcmp} an der richtigen Stelle eingefügt. % Dabei wird die kommagetrennte Liste \cs{tud@templist} durchlaufen und % \cs{@tempb} als Hilfsmakro verwendet, in welches die aktuelle Liste innerhalb % der \cs{@for}-Schleife stückweise expandiert wird. Wenn das aktuelle Element % an der dafür passenden Stelle eingesetzt wurde, wird \cs{if@tud@list@sorted} % gesetzt. % \begin{macrocode} \else% \@tud@list@sortedfalse% \let\@tempb\@empty% \@for\@tempa:=\tud@templist\do{% % \end{macrocode} % Ist der Eintrag bereits erfolgt, wird der verbliebene Teil der Liste % angehangen. % \ToDo{\cs{expandafter}\cs{edef}\cs{expandafter} ist quatsch, oder?}[v2.07] % \begin{macrocode} \if@tud@list@sorted% \expandafter\edef\expandafter\@tempb\expandafter{\@tempb,\@tempa}% \else% % \end{macrocode} % Liegt der Eintrag in alphabetischer Reihenfolge vor dem aktuellen der % durchlaufenenen Liste, so wird dieser davor eingefügt. Dabei muss der Fall, % dass das Element der erste Eintrag in der temporären Liste \cs{@tempb} ist, % eine Sonderbehandlung erfolgen. Anschließend wird \cs{@tud@list@sortedtrue} % gesetzt. % \begin{macrocode} \expandafter\ifnum\pdf@strcmp{#1}{\@tempa}<\z@\relax% \ifx\@tempb\@empty% \expandafter\edef\expandafter\@tempb\expandafter{% #1,\@tempa% }% \else% \expandafter\edef\expandafter\@tempb\expandafter{% \@tempb,#1,\@tempa% }% \fi% \@tud@list@sortedtrue% \else% % \end{macrocode} % Ist Eintrag in alphabetischer Reihenfolge nach dem aktuellen der geprüften % Liste, so wird dieser (noch) nicht eingefügt. Der Sonderfall des ersten % Elementes wird abgedeckt. % \begin{macrocode} \ifx\@tempb\@empty% \expandafter\edef\expandafter\@tempb\expandafter{\@tempa}% \else% \expandafter\edef\expandafter\@tempb\expandafter{\@tempb,\@tempa}% \fi% \fi% \fi% }% % \end{macrocode} % Wurde der Eintrag nach dem Durchlaufen der Liste nicht eingefügt, so erfolgt % dies hier am Ende der Liste. % \begin{macrocode} \if@tud@list@sorted\else% \expandafter\edef\expandafter\@tempb\expandafter{\@tempb,#1}% \fi% % \end{macrocode} % Die temporäre Liste \cs{@tempb} wird auf \cs{tud@templist} überschrieben. % \begin{macrocode} \let\tud@templist\@tempb% \fi% } % \end{macrocode} % \end{macro}^^A \if@tud@list@sorted % \end{macro}^^A \tud@templist % \end{macro}^^A \tud@list@@sort % \end{macro}^^A \tud@list@sort % % \iffalse % % \fi % % \subsection{Stringmanipulation} % % \begin{macro}{\tud@replace@in} % \changes{v2.05}{2015/11/01}{neu}^^A % \changes{v2.06o}{2022/08/08}{neu}^^A % \begin{macro}{\tud@replace@@in} % \changes{v2.06o}{2022/08/08}{neu}^^A % Mit diesem Befehl kann in einem gegebenen Makro ein bestimmtes Zeichen durch % ein anderes ersetzt werden. Dies wird verwendet, um für Indexbefehle die % möglicherweise enthaltenen |@|"~Zeichen oder in Datei- und Pfadangaben % Unterstriche zu ersetzen. % \begin{macrocode} \newcommand*\tud@replace@in[3]{% \begingroup% % \end{macrocode} % Zunächst wird der Inhalt des ersten Argumentes expandiert. Anschließend % wird \cs{tud@res@b} als ein durch \cs{@nil} abgegrenztes Makro mit zwei % Argumenten definiert, wobei diese durch das im zweiten Argument gegebene % \meta{Zeichen} voneinander abgegrenzt werden. Dieses Makro wird nun so lange % rekursiv mit dem zweiten Teil aufgerufen, bis dieses leer is. Dabei wird der % erste, durch das angegebene zu ersetzende Zeichen Teil sukzessive an % \cs{tud@res@c} angehängt und um das im dritten Argument angegebene % Ersatzzeichen vervollständigt. % \begin{macrocode} \edef\tud@res@a{\expandonce{#1}}% \let\tud@res@c\@empty% \def\tud@res@b##1#2##2\@nil{% \IfArgIsEmpty{##2}{% \appto\tud@res@c{##1}% }{% \appto\tud@res@c{##1#3}% \tud@res@b##2\@nil% }% }% \expandafter\tud@res@b\tud@res@a#2\@nil% \edef\tud@res@a{% \endgroup% \unexpanded{\def#1}{\expandonce\tud@res@c}% }% \tud@res@a% } % \end{macrocode} % Diese Variante sorgt dafür, dass die zu ersetzenden Zeichen alle als Strings % behandelt werden. % \begin{macrocode} \newcommand*\tud@replace@@in[3]{% \begingroup% \protected@edef\tud@res@a{#1}% \edef\tud@res@a{\detokenize\expandafter{\tud@res@a}}% \edef\tud@res@b{% \unexpanded{\tud@replace@in\tud@res@a}{\detokenize{#2}}{\detokenize{#3}}% }% \tud@res@b% \edef\tud@res@a{% \endgroup% \unexpanded{\def#1}{\tud@res@a}% }% \tud@res@a% } % \end{macrocode} % \end{macro}^^A \tud@replace@@in % \end{macro}^^A \tud@replace@in % % \iffalse % %<*body> % \fi % % \subsection{Zusätzliche Markup-Befehle} % \subsubsection{Textauszeichnung} % % \begin{macro}{\@pnumwidth} % \begin{macro}{\@tocrmarg} % Etwas mehr Platz im Inhaltsverzeichnis für die Seitenzahlen. % \ToDo{direkt in die Klassen übernehmen}[v2.07] % \begin{macrocode} \renewcommand*\@pnumwidth{2.1em} \renewcommand*\@tocrmarg{3.1em} % \end{macrocode} % \end{macro}^^A \@tocrmarg % \end{macro}^^A \@pnumwidth % % \begin{macro}{\textsbn} % \changes{v2.02}{2014/08/16}{neu}^^A % \begin{macro}{\sbnfont} % \changes{v2.02}{2014/08/16}{neu}^^A % \begin{macro}{\textsbi} % \changes{v2.02}{2014/08/16}{neu}^^A % \begin{macro}{\sbifont} % \changes{v2.02}{2014/08/16}{neu}^^A % \begin{macro}{\textttit} % \changes{v2.06o}{2022/08/03}{neu}^^A % \begin{macro}{\ttitfont} % \changes{v2.06o}{2022/08/03}{neu}^^A % Kombinierte Auszeichnungsbefehle für Text. % \begin{macrocode} \newcommand*\textsbn{} \newrobustcmd*\sbnfont{\sffamily\bfseries\upshape} \DeclareTextFontCommand\textsbn{\sbnfont} \newcommand*\textsbi{} \newrobustcmd*\sbifont{\sffamily\bfseries\itshape} \DeclareTextFontCommand\textsbi{\sbifont} \newcommand*\textttit{} \newrobustcmd*\ttitfont{\ttfamily\itshape} \DeclareTextFontCommand\textttit{\ttitfont} % \end{macrocode} % \end{macro}^^A \ttitfont % \end{macro}^^A \textttit % \end{macro}^^A \sbifont % \end{macro}^^A \textsbi % \end{macro}^^A \sbnfont % \end{macro}^^A \textsbn % % \subsubsection{Logisches Markup} % % \begin{macro}{\tud@english} % Hiermit wird der Argumentsinhalt mit englischen Trennungsmustern gesetzt, % falls die Sprache geladen wurde. % \begin{macrocode} \newcommand*\tud@english[1]{% \iflanguageloaded{english}{\foreignlanguage{english}{#1}}{#1}% } \AfterPackage*{babel}{% \renewcommand*\tud@english[1]{\foreignlanguage{english}{#1}}% } % \end{macrocode} % \end{macro}^^A \tud@english % \begin{macro}{\KOMAScript} % \begin{macro}{\TUDScript} % \begin{macro}{\vTUDScript} % \begin{macro}{\vKOMAScript} % Für die robuste Verwendung im Text. % \begin{macrocode} \kernel@make@fragile\KOMAScript \edef\KOMAScript{\noexpand\mbox{\expandonce\KOMAScript}\noexpand\xspace} \robustify\KOMAScript \robustify\TUDScript \AfterPackage*{hyperref}{% \pdfstringdefDisableCommands{% \def\KOMAScript{KOMA-Script{}}% \def\TUDScript{TUD-Script{}}% }% } % \end{macrocode} % Diese Befehle geben in der Dokumentation die aktuelle Version von \TUDScript % sowie die mindestens notwendige Version von \KOMAScript{} aus. % \begin{macrocode} \newcommand*\vTUDScript{v\TUDScriptVersionNumber} \newcommand*\vKOMAScript{v\TUD@KOMAVersionNumber} % \end{macrocode} % \end{macro}^^A \vKOMAScript % \end{macro}^^A \vTUDScript % \end{macro}^^A \TUDScript % \end{macro}^^A \KOMAScript % \begin{macro}{\CD} % \begin{macro}{\CDs} % \begin{macro}{\TUD} % \begin{macro}{\TnUD} % \begin{macro}{\TUDCD} % \changes{v2.05}{2015/11/01}{neu}^^A % \begin{macro}{\TUDCDs} % \changes{v2.05}{2015/11/01}{neu}^^A % \begin{macro}{\TUDForum} % \changes{v2.06o}{2022/08/04}{neu}^^A % \begin{macro}{\DDC} % Diese Befehle stellen regelmäßig in der Quelltextdokumentatuion und im % Handbuch genutzte Textbausteine bereit. Dazu wird der Befehl \cs{xspace} aus % dem \pkg{xspace}-Paket genutzt. % \begin{macrocode} \newrobustcmd*\CD{\tud@english{Corporate Design}\xspace} \newrobustcmd*\CDs{\tud@english{Corporate Designs}\xspace} \newrobustcmd*\TUD{Technische Universit\"at Dresden\xspace} \newrobustcmd*\TnUD{Technischen Universit\"at Dresden\xspace} \newcommand*\TUDCD{\CD der \TnUD} \newcommand*\TUDCDs{\CDs der \TnUD} \newrobustcmd*\TUDForum{\mbox{T\kern.05em U\kern.05em D-\LaTeX-Forum}\xspace} \newrobustcmd*\DDC{% \mbox{% D\kern.05em R\kern.05em E\kern.05em S\kern.05em % D\kern.05em E\kern.05em N\kern.1em-\kern.1em concept% }\xspace% } \AfterPackage*{hyperref}{% \pdfstringdefDisableCommands{% \def\CD{Corporate Design{}}% \def\CDs{Corporate Designs{}}% \def\TUD{Technische Universit\"at Dresden{}}% \def\TnUD{Technischen Universit\"at Dresden{}}% \def\TUDForum{TUD-LaTeX-Forum{}}% \def\DDC{DRESDEN-concept{}}% }% } % \end{macrocode} % \end{macro}^^A \DDC % \end{macro}^^A \TUDForum % \end{macro}^^A \TUDCDs % \end{macro}^^A \TUDCD % \end{macro}^^A \TnUD % \end{macro}^^A \TUD % \end{macro}^^A \CDs % \end{macro}^^A \CD % % \begin{macro}{\OpenSans} % \changes{v2.06}{2018/07/02}{neu}^^A % \begin{macro}{\Univers} % \begin{macro}{\DIN} % Für die Nennung der Schriften spezielle Markos bereitgestellt. % \begin{macrocode} \newrobustcmd*\OpenSans{\textcdbn{Open\nobreakspace Sans}\xspace} \newrobustcmd*\Univers{\textcdbi{Univers}\xspace} \newrobustcmd*\DIN{\textcdbi{DIN\nobreakspace Bold}\xspace} \AfterPackage*{hyperref}{% \pdfstringdefDisableCommands{% \def\OpenSans{Open Sans{}}% \def\Univers{Univers{}}% \def\DIN{DIN Bold{}}% }% } % \end{macrocode} % \end{macro}^^A \DIN % \end{macro}^^A \Univers % \end{macro}^^A \OpenSans % % \begin{macro}{\GitHubBase} % Angabe der URL des verwendeten GitHub-Repository. Aktuell nicht implementiert. % \begin{macrocode} \newcommand*\GitHubBase[1]{} % \end{macrocode} % \end{macro}^^A \GitHubBase % \begin{macro}{\GitHubRepo} % \changes{v2.02}{2014/08/16}{neu}^^A % Auszeichnungsbefehle für Verweise auf ein GitHub-Repository. % \begin{macrocode} \NewDocumentCommand\GitHubRepo{!s !t' !O{releases} !D(){tud-cd/tudscr} !d<>}{% \IfBooleanTF{#1}{\toks@{\href}}{\toks@{\hrfn}}% \IfBooleanT{#2}{\toks@{\url}}% \def\@tempa{https://github.com/#4/}% \edef\@tempa{{\@tempa\IfValueTF{#5}{issues/#5}{#3}}}% \addto@hook@expandafter\toks@{\@tempa}% \IfBooleanF{#2}{% \addto@hook\toks@{{\tud@english{GitHub-Repository~\textsbn{#4}}}}% }% \the\toks@\xspace% } % \end{macrocode} % \end{macro}^^A \GitHubRepo % \begin{macro}{\Download} % \changes{v2.05g}{2016/11/08}{neu}^^A % Der Befehl für die Angabe von direkten Downloadlinks. % \begin{macrocode} %<*manual> \newcommand*\Download[1]{% https://github.com/tud-cd/tudscr/releases/download/#1% } % % \end{macrocode} % \end{macro}^^A \Download % \begin{macro}{\CTAN} % \changes{v2.05}{2015/11/22}{neu}^^A % \begin{macrocode} \NewDocumentCommand\CTAN{!s !o !g}{% \IfBooleanTF{#1}{\toks@{\href}}{\toks@{\hrfn}}% \addto@hook\toks@{{http://www.ctan.org/\IfValueT{#2}{#2}}}% \addto@hook\toks@{% {\tud@english{Comprehensive TeX Archive Network (CTAN\IfValueT{#3}{~#3})}}% }% \the\toks@\xspace% } % \end{macrocode} % \end{macro}^^A \CTAN % \begin{macro}{\Forum} % Der Befehl für die Ausgabe eines Links zum \TUDForum. Das optionale Argument % in Guillemets kann genutzt werden, um auf einen spezifisches Beitrag zu % verlinken. % \begin{macrocode} \NewDocumentCommand\Forum{!s !t' !O{\TUDForum} !d<>}{% \IfBooleanTF{#1}{\toks@{\href}}{\toks@{\hrfn}}% \IfBooleanT{#2}{\toks@{\url}}% \def\@tempa{http://latex.wcms-file3.tu-dresden.de/phpBB3/}% \edef\@tempa{{\@tempa\IfValueT{#4}{viewtopic.php?t=#4}}}% \addto@hook@expandafter\toks@{\@tempa}% \IfBooleanF{#2}{\addto@hook\toks@{{#3}}}% \the\toks@\xspace% } % \end{macrocode} % \end{macro}^^A \Forum % \begin{macro}{\Attention} % \changes{v2.02}{2014/08/16}{neu}^^A % Falls irgendetwas besonders hervorgehoben werden sollte. % \begin{macrocode} \newcommand*\Attention[2][\z@]{% \marginnote{% \tud@setdim\fboxsep{0.25em}% \fbox{Achtung!}% }[{#1}]% \emph{\trim@spaces{#2}}% } % \end{macrocode} % \end{macro}^^A \Attention % \begin{macro}{\TUDScriptContactTitle} % \changes{v2.06o}{2022/08/09}{neu}^^A % Die Angabe der E-Mail-Adresse auf dem Titel innerhalb von \cs{author}. % \begin{macrocode} \newrobustcmd*\TUDScriptContactTitle{% \ifundef{\emailaddress}{% \qquad\expandafter\mailto\expandafter{\TUDScriptContact}% }{% \expandafter\emailaddress\expandafter{\TUDScriptContact}% }% } \AfterPackage*{hyperref}{% \pdfstringdefDisableCommands{\let\TUDScriptContactTitle\relax}% } % \end{macrocode} % \end{macro}^^A \TUDScriptContactTitle % % \iffalse % % % \fi % % \PrintBackMatter % \endinput