diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/tudscr/tudscr-misc.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/tudscr/tudscr-misc.dtx | 859 |
1 files changed, 716 insertions, 143 deletions
diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-misc.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-misc.dtx index fdabaea0ece..125f72be1de 100644 --- a/Master/texmf-dist/source/latex/tudscr/tudscr-misc.dtx +++ b/Master/texmf-dist/source/latex/tudscr/tudscr-misc.dtx @@ -1,10 +1,10 @@ -% \CheckSum{334} % \iffalse meta-comment +%/GitFileInfo=tudscr-misc.dtx % % TUD-Script -- Corporate Design of Technische Universität Dresden % ---------------------------------------------------------------------------- % -% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2021 +% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2022 % % ---------------------------------------------------------------------------- % @@ -23,33 +23,19 @@ % % \fi % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} -% -% \iffalse -%%% From File: tudscr-misc.dtx +% \iffalse ins:batch + dtx:driver +%<*ins> +\ifx\documentclass\undefined + \input docstrip.tex + \ifToplevel{\batchinput{tudscr.ins}} +\else + \let\endbatchfile\relax +\fi +\endbatchfile +%</ins> %<*dtx> -% \fi -% -\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi -\ProvidesFile{tudscr-misc.dtx}[2021/07/06 v2.06m TUD-Script\space% - (miscellaneous)% -] -% -% \iffalse +\ProvidesFile{tudscr-misc.dtx}[2022/08/09] +\RequirePackage{tudscr-gitinfo} \documentclass[english,ngerman,xindy]{tudscrdoc} \iftutex \usepackage{fontspec} @@ -59,18 +45,11 @@ \fi \usepackage{babel} \usepackage{tudscrfonts} -\KOMAoptions{parskip=half-} -\usepackage{bookmark} \usepackage[babel]{microtype} -\CodelineIndex -\RecordChanges -\GetFileInfo{tudscr-misc.dtx} -\title{\file{\filename}} -\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}} -\date{\fileversion\nobreakspace(\filedate)} - +\GitHubBase{\TUDScriptRepository} \begin{document} + \author{Falk Hanisch\TUDScriptContactTitle} \maketitle \tableofcontents \DocInput{\filename} @@ -83,13 +62,14 @@ % \changes{v2.02}{2014/06/23}{Paket \pkg{titlepage} nicht weiter unterstützt}^^A % \changes{v2.02}{2014/07/08}{\cs{FamilyKeyState} wird von Optionen genutzt}^^A % +% +% % \section{Verschiedenes für das \TUDScript-Bundle} % % Alles, wofür sich eine separate Datei nicht lohnt, landet hier. % -% \StopEventually{\PrintIndex\PrintChanges\PrintToDos} -% % \iffalse +%<*!(manual|doc)> %<*class&option> % \fi % @@ -101,7 +81,7 @@ % genutzt werden, um zu steuern, ob für Titel und Inhaltsverzeichnis % automatisch ein Eintrag für die Sprungmarken erzeugt werden soll. % \begin{macrocode} -\newif\if@tud@bookmarks +\tud@newif\if@tud@bookmarks \TUD@key{tudbookmarks}[true]{% \TUD@set@ifkey{tudbookmarks}{@tud@bookmarks}{#1}% } @@ -123,15 +103,17 @@ % Für die Titelseite werden~-- wie auch durch das Paket \pkg{hyperref}~-- die % Fußnoten mit dem Befehl \cs{tud@x@hyperref@realfootnotes} auf den originalen % Zustand zurückgesetzt. +% \ToDo{nur als internen Befehl definieren, dazugehörige Option nötig?}[v2.07] +% \ToDo{\cs{tud@x@hyperref@realfootnotes} prüfen}[v2.07] % \begin{macrocode} \newcommand*\tudbookmark[1][]{\@gobbletwo} \newcommand*\tud@x@hyperref@realfootnotes{} \AfterPackage{hyperref}{% - \renewcommand*\tudbookmark[3][]{% + \renewcommand*\tudbookmark[3][0]{% \relax% \if@tud@bookmarks% - \phantomsection% - \ifblank{#1}{\pdfbookmark{#2}{#3}}{\pdfbookmark[#1]{#2}{#3}}% + \csuse{phantomsection}% + \pdfbookmark[{#1}]{#2}{#3}% \fi% }% \renewcommand*\tud@x@hyperref@realfootnotes{% @@ -140,7 +122,6 @@ \let\@footnotemark\H@@footnotemark% \let\@footnotetext\H@@footnotetext% }% - \pdfstringdefDisableCommands{\let\NoCaseChange\@firstofone}% } % \end{macrocode} % \end{macro}^^A \tud@x@hyperref@realfootnotes @@ -168,7 +149,7 @@ % Titelseite PDF"=Lesezeichen bzw. Outline-Einträge erzeugt. % \begin{macrocode} %<*book|report|article> -\apptocmd{\titlepage}{% +\apptocmd\titlepage{% \tud@x@bookmark@startatroot% \@tud@res@swafalse% \if@tud@coverpage\@tud@res@swatrue\fi% @@ -189,14 +170,14 @@ % \end{macrocode} % Dies geschieht außerdem auch für die Titelköpfe. % \begin{macrocode} -\pretocmd{\tud@maketitle@inpage}{% +\pretocmd\tud@maketitle@inpage{% \tud@x@bookmark@startatroot% \tudbookmark[% %<book|report> 0% %<article|poster> 1% ]{\titlename}{title}% }{}{\tud@patch@wrn{tud@maketitle@inpage}} -\pretocmd{\@maketitle}{% +\pretocmd\@maketitle{% \tud@x@bookmark@startatroot% \tudbookmark[% %<book|report> 0% @@ -264,7 +245,7 @@ %^^A% in den Überschriften Symbole für die Fußnoten anstelle von Zahlen %^^A% verwendet werden sollen. %^^A% \begin{macrocode} -%^^A\newif\if@tud@symbolheadings +%^^A\tud@newif\if@tud@symbolheadings %^^A\TUD@key{footnotes}{% %^^A \TUD@set@numkey{footnotes}{@tempa}{% %^^A {nosymbolheadings}{0},{numberheadings}{0},% @@ -340,12 +321,13 @@ \expandafter\PassOptionsToClass\expandafter{\CurrentOption}{\TUD@Class@KOMA}% } % \end{macrocode} -% Wird die Schriftgröße im veralteten Format \val{\dots pt} übergeben, so wird -% der Schalter \cs{if@tud@x@scr@fontsize@set} auf \val{true} gesetzt. +% Wird die Schriftgröße im veralteten Format \val{\dots pt} als Option +% übergeben, so wird der Schalter \cs{if@tud@x@scr@fontsize@set} auf \val{true} +% gesetzt. % \begin{macrocode} \newcommand*\tud@x@scr@pt{} \def\tud@x@scr@pt #1pt#2\@nil{% - \ifstr{#2}{pt}{\ifnumber{#1}{\@tud@x@scr@fontsize@settrue}{}}{}% + \tud@if@strequal{#2}{pt}{\Ifnumber{#1}{\@tud@x@scr@fontsize@settrue}{}}{}% } % \end{macrocode} % \end{macro}^^A \tud@x@scr@pt @@ -362,10 +344,10 @@ \AtBeginDocument{% \if@tud@x@scr@fontsize@set\else% \@tud@res@swafalse% - \ifdim\tud@len@layoutwidth<208mm\relax\@tud@res@swatrue\fi% - \ifdim\tud@len@layoutwidth>212mm\relax\@tud@res@swatrue\fi% - \ifdim\tud@len@layoutheight<295mm\relax\@tud@res@swatrue\fi% - \ifdim\tud@len@layoutheight>299mm\relax\@tud@res@swatrue\fi% + \ifdim\tud@dim@layoutwidth<208mm\relax\@tud@res@swatrue\fi% + \ifdim\tud@dim@layoutwidth>212mm\relax\@tud@res@swatrue\fi% + \ifdim\tud@dim@layoutheight<295mm\relax\@tud@res@swatrue\fi% + \ifdim\tud@dim@layoutheight>299mm\relax\@tud@res@swatrue\fi% \if@tud@res@swa% \ClassWarningNoLine{\TUD@Class@Name}{% You've set a layout size, which is different from\MessageBreak% @@ -378,15 +360,62 @@ } % \end{macrocode} % +% \subsection{Fixierte Gleitobjekte für Poster} +% +% \begin{environment}{figurehere} +% \changes{v2.05}{2016/04/17}{neu}^^A +% \changes{v2.06o}{2022/08/02}{für \cls{tudscrposter} übernommen}^^A +% \begin{environment}{tablehere} +% \changes{v2.05}{2016/04/17}{neu}^^A +% \changes{v2.06o}{2022/08/02}{für \cls{tudscrposter} übernommen}^^A +% \begin{macro}{\tud@here@begin} +% \changes{v2.06o}{2022/08/02}{neu}^^A +% \begin{macro}{\tud@here@end} +% \changes{v2.06o}{2022/08/02}{neu}^^A +% Für die Klasse \cls{tudscrposter} werden zwei Umgebungen bereitgestellt, mit +% denen sich Tabellen und Bilder an einer bestimmten Stelle exakt platzieren +% lassen. Prinzipiell könnte hierfür auch das Paket \pkg{float} zum Einsatz +% kommen. Ursprünglich stammt die Idee aus \cls{tudmathposter} und wurde hier +% generalisiert implementiert. +% \begin{macrocode} +%<*poster> +\newcommand*\tud@here@begin[1]{% + \def\@captype{#1}% + \vskip\intextsep% + \color@vbox% + \normalcolor% + \vbox\bgroup% + \hsize=\columnwidth% + \@parboxrestore% + \@floatboxreset% + \@setnobreak% + \ignorespaces% +} +\newcommand*\tud@here@end{% + \vskip\intextsep% + \@minipagefalse% + \outer@nobreak% + \egroup% + \color@endbox% +} +\newenvironment{figurehere}{\tud@here@begin{figure}}{\tud@here@end} +\newenvironment{tablehere}{\tud@here@begin{table}}{\tud@here@end} +%</poster> +% \end{macrocode} +% \end{macro}^^A \tud@here@end +% \end{macro}^^A \tud@here@begin +% \end{environment}^^A tablehere +% \end{environment}^^A figurehere +% % \iffalse %</class&body> -%<*class&!inherit|package&fonts> %<*option> % \fi % +% \section{Verarbeitung von Optionen} % \subsection{Sukkzessives Abarbeiten von Optionen im Dokument} % -% Werden mit \cs{TUDoptions} nach \cs{begin\{document\}} mehrere Layoutoptionen +% Werden mit \cs{TUDoptions} nach |\begin{document}| mehrere Layoutoptionen % gleichzeitig angegeben, muss dafür Sorge getragen werden, dass diese in der % korrekten Reihenfolge abgearbeitet werden. % @@ -432,7 +461,7 @@ % \changes{v2.05}{2016/06/14}{neu}^^A % \begin{macro}{\if@tud@math@set} % \changes{v2.05}{2016/06/14}{neu}^^A -% \begin{macro}{\if@tud@font@skip@set} +% \begin{macro}{\if@tud@relspacing@set} % \changes{v2.05}{2016/06/14}{neu}^^A % \begin{macro}{\if@tud@x@scr@headings@reset} % \changes{v2.05}{2016/06/14}{neu}^^A @@ -446,24 +475,24 @@ % dazugehörigen Befehle für die Einstellungen von Schriften, Layout und/oder % Satzspiegel in der richtigen Reihenfolge ausgeführt. % \begin{macrocode} -\newif\if@tud@font@set -\newif\if@tud@math@set -\newif\if@tud@font@skip@set +\tud@newif\if@tud@font@set +\tud@newif\if@tud@math@set +\tud@newif\if@tud@relspacing@set %<*class> -\newif\if@tud@x@scr@headings@reset -\newif\if@tud@cd@process -\newif\if@tud@cdgeometry@process +\tud@newif\if@tud@x@scr@headings@reset +\tud@newif\if@tud@cd@process +\tud@newif\if@tud@cdgeometry@process %</class> \newcommand*\tud@atdocument@process{% \if@tud@font@set% \tud@font@set% \global\@tud@font@setfalse% - \global\@tud@font@skip@setfalse% + \global\@tud@relspacing@setfalse% %<class> \global\@tud@cd@processfalse% \fi% - \if@tud@font@skip@set% - \tud@font@skip@set% - \global\@tud@font@skip@setfalse% + \if@tud@relspacing@set% + \tud@relspacing@set% + \global\@tud@relspacing@setfalse% \fi% \if@tud@math@set% \tud@math@set% @@ -489,14 +518,14 @@ % \end{macro}^^A \if@tud@cdgeometry@process % \end{macro}^^A \if@tud@cd@process % \end{macro}^^A \if@tud@x@scr@headings@reset -% \end{macro}^^A \if@tud@font@skip@set +% \end{macro}^^A \if@tud@relspacing@set % \end{macro}^^A \if@tud@math@set % \end{macro}^^A \if@tud@font@set % \end{macro}^^A \tud@atdocument@process % % \iffalse %</body> -%</class&!inherit|package&fonts> +%</!(manual|doc)> %<*execute> %<*class&!inherit|package&fonts> % \fi @@ -510,7 +539,7 @@ % die gewählte Kompatibilitäsversion getestet werden. % \begin{macrocode} \DeclareOption*{} -\FamilyProcessOptions[.comp]{TUD}\relax +\TUDProcessOptions[.comp]\relax % \end{macrocode} % Ab der \TUDScript-Version~v2.05 werden einige vertikale Abstände abhängig von % der Schriftgröße definiert. Sollte eine frühere Kompatibilitätseinstellung @@ -542,6 +571,30 @@ %</class&!inherit|package&fonts> % \fi % +% Es werden die Standardoptionen ausgeführt. Für die Klasse \cls{tudscrposter} +% werden die Farben aktiviert. +% \begin{macrocode} +%<*package&manual> +\KOMAoptions{headings=small} +\TUDoptions{cdfoot=true} +%</package&manual> +%<*class&!inherit|package> +\TUDExecuteOptions{% +%<*package&fixfonts> + headings=heavy% +%</package&fixfonts> +%<*class&!inherit> +%<*book|report|article> + cd=true,tudbookmarks=true% +%</book|report|article> +%<*poster> + cd=bicolor,tudbookmarks=false% +%</poster> +%</class&!inherit> +} +%</class&!inherit|package> +% \end{macrocode} +% % \subsection{Durchreichen von Optionen und Standardoptionen} % % Durchreichen aller Klassenoptionen an die \KOMAScript-Klasse bzw. an die @@ -550,7 +603,7 @@ % \begin{macrocode} %<*package> %<*fonts> -\DeclareOption*{\expandafter\KOMAoptions\expandafter{\CurrentOption}} +\DeclareOption*{\expandafter\TUD@KOMAoptions\expandafter{\CurrentOption}} %</fonts> %<*fixfonts> \DeclareOption*{% @@ -574,42 +627,19 @@ %</inherit> %</class> % \end{macrocode} -% Es werden die Standardoptionen ausgeführt. Für die Klasse \cls{tudscrposter} -% werden die Farben aktiviert. +% Nach der Auswerung der Optionen wird die korrespondierende \KOMAScript-Klasse +% bzw. \TUDScript-Elternklasse geladen. % \begin{macrocode} -%<*package&tutorial> -\KOMAoptions{headings=small} -\TUDoptions{cdfoot=true} -%</package&tutorial> -\TUDExecuteOptions{% -%<*package> -%<*fixfonts> - headings=heavy% -%</fixfonts> -%<*tutorial> - ToDo=true% -%</tutorial> -%</package> -%<*class&!inherit> -%<*book|report|article> - cd=true,tudbookmarks=true% -%</book|report|article> -%<*poster> - cd=bicolor,tudbookmarks=false% -%</poster> -%</class&!inherit> -} \TUDProcessOptions\relax -% \end{macrocode} -% Die korrespindierende \KOMAScript-Klasse bzw. \TUDScript-Elternklasse wird -% geladen. -% \begin{macrocode} %<*class&!inherit> -\LoadClass{\TUD@Class@KOMA}[2020/09/21] +\LoadClass{\TUD@Class@KOMA}[% +%!TUD@KOMAVersion +] %</class&!inherit> %<*class&inherit> -%<manual>\PassOptionsToClass{ttfont=roboto}{\TUD@Class@Parent} -\LoadClass{\TUD@Class@Parent} +\LoadClass{\TUD@Class@Parent}[% +%!TUD@Version +] %</class&inherit> % \end{macrocode} % @@ -627,14 +657,14 @@ % \changes{v2.06c}{2019/08/20}{neu}^^A % Dieser Befehl definiert eine Fehlermeldung für Schlüssel respektive Optionen, % die zu spät verwendet wurden, wobei er innerhalb der Makros \cs{AtEndOfClass}, -% \cs{AtEndOfClass}, \cs{AtEndPreamble} etc. genutzt werden sollte. Wird dieser -% noch im Kontext von Klasse oder Paket (\verb=\@currname.\@currext-h@@k=) +% oder \cs{AtEndOfPackage} respektive \cs{AtEndPreamble} genutzt werden sollte. +% Wird dieser im Kontext von Klasse oder Paket (|\@currname.\@currext-h@@k|) % verwendet, wird gemeldet, dass der Schlüssel allein beim Laden der Klasse % respektive des Paketes genutzt werden darf. Andernfalls wird die zwingende % Verwendung in der Präambel angemerkt. % \begin{macrocode} \newcommand*\TUD@key@toolate[1]{% - \csedef{tud@key@#1@error}{% + \csedef{tud@key@toolate@@#1}{% %<*class> \noexpand\ClassError{\noexpand\TUD@Class@Name}% %</class> @@ -643,7 +673,7 @@ %</package&fonts> {Option `#1' too late}{% Option `#1' can only be set\space% - \ifcsname \@currname.\@currext-h@@k\endcsname% + \ifcsdef{\@currname.\@currext-h@@k}{% as optional \MessageBreak argument while loading\space% %<*class> class `\noexpand\TUD@Class@Name'% @@ -651,64 +681,607 @@ %<*package&fonts> package `tudscrfonts'% %</package&fonts> - \else% - in the preamble - \fi% + }{% + in the preamble% + }% \MessageBreak but you have tried to set it up later.% }% }% - \TUD@key{#1}[]% + \TUD@key[]{#1}[]% {% - \csuse{tud@key@#1@error} + \csuse{tud@key@toolate@@#1}% \FamilyKeyStateProcessed% }% } % \end{macrocode} % \end{macro}^^A \TUD@key@toolate % -% % \iffalse %</class&!inherit|package&fonts> %</execute> -%<*body> +%<*manual|doc> +% \fi +% +% \section{Zusätzliches für die Benutzer- und Quelltextdokumentation} +% +% Hier tauchen Hilfsmittel auf, die für die Dokumentation verwendet werden. +% +% \iffalse +%<*option> % \fi % -% \subsection{Anpassungen für das Paket \pkg{textcase}} -% -% \begin{macro}{\@uclcnotmath} -% \begin{macro}{\tud@x@textcase@uclcnotmath} -% \changes{v2.02}{2014/06/27}{\pkg{textcase}: Ignorieren von Fußnoten im -% Argument des Befehls \cs{MakeTextUppercase}}^^A -% \changes{v2.03}{2015/01/21}{\pkg{textcase}: Ignorieren des Befehls -% \cs{@mkboth} im Argument des Befehls \cs{MakeTextUppercase}}^^A -% Damit Fußnoten innerhalb von \cs{MakeTextUppercase} nicht in Majuskeln -% gesetzt werden, wird der interne Befehl \cs{@uclcnotmath} aus dem Paket -% \pkg{textcase} angepasst. -% \begin{macrocode} -\if@tud@cdoldfont@active - \RequirePackage{textcase}[2004/10/07] - \AfterPackage*{textcase}{% - \robustify\NoCaseChange% - \newcommand*\tud@x@textcase@uclcnotmath{% - \@nonchangecase\hologo% - \def\footnote##1##{\toks@{\noexpand\footnote##1}\@footnote}% - \def\@footnote##1{\NoCaseChange{\the\toks@{##1}}}% - \def\@mkboth##1##2{\NoCaseChange{\@mkboth{##1}{##2}}}% +% \subsection{Zusätzliche Pakete} +% +% Bugfixes für unterschiedliche Pakete. +% \begin{macrocode} +\RequirePackage{scrhack}[% +%!TUD@KOMAVersion +] +% \end{macrocode} +% Das Paket für intelligente Leerzeichen am Ende von Makros mit \cs{xspace}. +% \begin{macrocode} +\RequirePackage{xspace} +\xspaceaddexceptions{"=} +% \end{macrocode} +% Das Paket \pkg{marginnote} stellt nicht fließenden Randnotizen bereit, welche +% für die Kennzeichnung von Änderungen, Hinweise oder ToDo-Notizen verwendet +% werden. Die Randnotizen werden auf dem linken~-- weil größeren~-- Seitenrand +% gesetzt. +% \begin{macrocode} +\PassOptionsToPackage{quiet}{marginnote} +\RequirePackage{marginnote} +%<!doc>\reversemarginpar +% \end{macrocode} +% Das Paket \pkg{shellesc} ermöglicht mit dem Befehl \cs{ShellEscape} die +% Verwendung von Systembefehlen auf der Kommandozeile unabhängig vom genutzten +% Format. Sollte \app{lualatex} als Dokumentprozessor eingesetzt werden, sind +% dennoch die beiden \app{pdflatex}-Primitiven \cs{pdf(@)strcmp} und +% \cs{pdf(@)shellescape} nötig, wofür das Paket \pkg{pdftexcmds} geladen wird. +% \begin{macrocode} +\RequirePackage{shellesc} +\RequirePackage{pdftexcmds} +% \end{macrocode} +% +% Das Paket \pkg{hyperref} wird für alle möglichen Links und Querverweise +% geladen, \pkg{bookmark} verbessert das Erstellen der Outline-Einträge. +% +% \begin{macrocode} +\PassOptionsToPackage{hyperindex=false}{hyperref} +\AfterPackage*{bookmark}{\bookmarksetup{open,openlevel=1}} +% \end{macrocode} +% Es folgen einige Befehle, die an das Paket \pkg{hyperref} gekoppelt sind. +% Sobald das Paket geladen wurde, werden die Makros mit der jeweiligen +% Funktionalität definiert. +% \begin{macrocode} +\AfterAtEndOfPackage*{hyperref}{% + \@ifpackageloaded{bookmark}{}{\RequirePackage{bookmark}}% + \hypersetup{colorlinks,linkcolor=blue}% +} +% \end{macrocode} +% \begin{macro}{\hrfn} +% \changes{v2.02}{2014/08/16}{neu}^^A +% \changes{v2.04}{2015/02/18}{Schriftgröße mit \cs{scalebox}}^^A +% Mit diesem Makro können Hyperlinks im Fließtext erzeugt werden, welche +% zusätzlich noch die dazugeörige URL als Fußnote anzeigen. +% \begin{macrocode} +\newcommand*\hrfn[2]{% + \href{#1}{\trim@spaces{#2}}% + \footnote{\strut\url{#1}}% +} +% \end{macrocode} +% \end{macro}^^A \hrfn +% \begin{macro}{\mailto} +% Ein Makro zur Angabe einer verlinkten E"~Mail-Adresse. +% \begin{macrocode} +\newrobustcmd*\mailto[1]{\mbox{\href{mailto:#1}{\nolinkurl{#1}}}} +% \end{macrocode} +% \end{macro}^^A \mailto +% \begin{macro}{\url} +% \begin{macro}{\nolinkurl} +% \begin{macro}{\href} +% \begin{macro}{\hypersetup} +% \begin{macro}{\phantomsection} +% \begin{macro}{\pdfbookmark} +% \begin{macro}{\currentpdfbookmark} +% \begin{macro}{\subpdfbookmark} +% \begin{macro}{\belowpdfbookmark} +% Sollte \pkg{hyperref} nicht geladen werden, müssen einige Befehle rudimentär +% definiert werden. +% \begin{macrocode} +\TUD@UnwindPackage{hyperref}{% + \RequirePackage{url} + \providerobustcmd*\url[1]{\texttt{\detokenize{#1}}}% + \providerobustcmd*\nolinkurl[1]{\url{#1}}% + \providerobustcmd*\href[3][]{#3}% + \providecommand*\hypersetup[1]{}% + \providecommand*\phantomsection{}% + \providecommand*\pdfbookmark[3][]{}% + \providecommand*\currentpdfbookmark[2]{}% + \providecommand*\subpdfbookmark[2]{}% + \providecommand*\belowpdfbookmark[2]{}% +} +% \end{macrocode} +% \end{macro}^^A \belowpdfbookmark +% \end{macro}^^A \subpdfbookmark +% \end{macro}^^A \currentpdfbookmark +% \end{macro}^^A \pdfbookmark +% \end{macro}^^A \phantomsection +% \end{macro}^^A \hypersetup +% \end{macro}^^A \href +% \end{macro}^^A \nolinkurl +% \end{macro}^^A \url +% +% Etwas Kleinkram für \pkg{babel} und \pkg{csquotes}. Das letztere Paket dient +% dem sprachabhängigen Setzen von Anführungszeichen und sollte erst nach +% \pkg{inputenc} oder \pkg{inputenx} geladen werden. +% \begin{macrocode} +\AfterPackage*{babel}{\RequirePackage{csquotes}} +% \end{macrocode} +% \begin{macro}{\selectlanguage} +% \begin{macro}{\glqq} +% \begin{macro}{\grqq} +% \begin{macro}{\enquote} +% \begin{macrocode} +\TUD@UnwindPackage{babel}{% + \ClassWarningNoLine{\TUD@Class@Name}{Package `babel' not loaded}% + \providecommand*\selectlanguage[1]{}% + \providecommand*\glqq{\quotedblbase}% + \providecommand*\grqq{\textquotedblleft}% + \providecommand*\seename{see}% + \providecommand*\alsoname{see\nobreakspace also}% +} +\TUD@UnwindPackage{csquotes}{% + \ClassWarningNoLine{\TUD@Class@Name}{Package `csquotes' not loaded}% + \providecommand\enquote[1]{\emph{#1}}% +} +% \end{macrocode} +% \end{macro}^^A \enquote +% \end{macro}^^A \grqq +% \end{macro}^^A \glqq +% \end{macro}^^A \selectlanguage +% +% \iffalse +%<*class&manual> +% \fi +% +% \subsection{Sortieren von Listen} +% +% \begin{macro}{\tud@list@sort} +% \changes{v2.02}{2014/07/25}{neu}^^A +% \begin{macro}{\tud@list@@sort} +% \changes{v2.02}{2014/07/25}{neu}^^A +% \begin{macro}{\tud@templist} +% \changes{v2.02}{2014/07/25}{neu}^^A +% \begin{macro}{\if@tud@list@sorted} +% \changes{v2.02}{2014/07/25}{neu}^^A +% Der Befehl \cs{tud@list@sort} erwartet eine \pkg{etoolbox}-Liste und sortiert +% diese mit dem Makro \cs{sort@list} in alphabetischer Reihenfolge in eine +% kommagetrennte Auflistung. Diese wird anschließend wieder in eine +% \pkg{etoolbox}-Liste umgewandelt. +% \begin{macrocode} +\newcommand*\tud@templist{} +\let\tud@templist\relax +\newcommand*\tud@list@sort[1]{% + \ifdefvoid{#1}{% + \ClassWarning{tudscrmanual}{% + The given list \string#1\space\MessageBreak% + is empty, nothing to sort here% }% - \patchcmd{\@uclcnotmath}{\@nonchangecase\ensuremath}{% - \@nonchangecase\ensuremath\tud@x@textcase@uclcnotmath% - }{}{\tud@patch@wrn{@uclcnotmath}}% + }{% + \let\tud@reserved#1% + \let\tud@templist\relax% + \forlistloop\tud@list@@sort{\tud@reserved}% + \let\tud@reserved\relax% + \@for\@tempa:=\tud@templist\do{\listeadd\tud@reserved{\@tempa}}% + \let#1\tud@reserved% }% -\fi -\TUD@deprecated@cs{NoCaseChange}{@firstofone} +} +% \end{macrocode} +% Hier erfolgt die eigentliche Sortierung der Liste. +% \begin{macrocode} +\tud@newif\if@tud@list@sorted +\newcommand*\tud@list@@sort[1]{% +% \end{macrocode} +% Der erste Eintrag wird direkt der Liste hinzugefügt. +% \begin{macrocode} + \ifx\tud@templist\relax% + \def\tud@templist{#1}% +% \end{macrocode} +% Weitere Einräge werden mit \cs{pdfstrcmp} an der richtigen Stelle eingefügt. +% Dabei wird die kommagetrennte Liste \cs{tud@templist} durchlaufen und +% \cs{@tempb} als Hilfsmakro verwendet, in welches die aktuelle Liste innerhalb +% der \cs{@for}-Schleife stückweise expandiert wird. Wenn das aktuelle Element +% an der dafür passenden Stelle eingesetzt wurde, wird \cs{if@tud@list@sorted} +% gesetzt. +% \begin{macrocode} + \else% + \@tud@list@sortedfalse% + \let\@tempb\@empty% + \@for\@tempa:=\tud@templist\do{% +% \end{macrocode} +% Ist der Eintrag bereits erfolgt, wird der verbliebene Teil der Liste +% angehangen. +% \ToDo{\cs{expandafter}\cs{edef}\cs{expandafter} ist quatsch, oder?}[v2.07] +% \begin{macrocode} + \if@tud@list@sorted% + \expandafter\edef\expandafter\@tempb\expandafter{\@tempb,\@tempa}% + \else% +% \end{macrocode} +% Liegt der Eintrag in alphabetischer Reihenfolge vor dem aktuellen der +% durchlaufenenen Liste, so wird dieser davor eingefügt. Dabei muss der Fall, +% dass das Element der erste Eintrag in der temporären Liste \cs{@tempb} ist, +% eine Sonderbehandlung erfolgen. Anschließend wird \cs{@tud@list@sortedtrue} +% gesetzt. +% \begin{macrocode} + \expandafter\ifnum\pdf@strcmp{#1}{\@tempa}<\z@\relax% + \ifx\@tempb\@empty% + \expandafter\edef\expandafter\@tempb\expandafter{% + #1,\@tempa% + }% + \else% + \expandafter\edef\expandafter\@tempb\expandafter{% + \@tempb,#1,\@tempa% + }% + \fi% + \@tud@list@sortedtrue% + \else% +% \end{macrocode} +% Ist Eintrag in alphabetischer Reihenfolge nach dem aktuellen der geprüften +% Liste, so wird dieser (noch) nicht eingefügt. Der Sonderfall des ersten +% Elementes wird abgedeckt. +% \begin{macrocode} + \ifx\@tempb\@empty% + \expandafter\edef\expandafter\@tempb\expandafter{\@tempa}% + \else% + \expandafter\edef\expandafter\@tempb\expandafter{\@tempb,\@tempa}% + \fi% + \fi% + \fi% + }% +% \end{macrocode} +% Wurde der Eintrag nach dem Durchlaufen der Liste nicht eingefügt, so erfolgt +% dies hier am Ende der Liste. +% \begin{macrocode} + \if@tud@list@sorted\else% + \expandafter\edef\expandafter\@tempb\expandafter{\@tempb,#1}% + \fi% +% \end{macrocode} +% Die temporäre Liste \cs{@tempb} wird auf \cs{tud@templist} überschrieben. +% \begin{macrocode} + \let\tud@templist\@tempb% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \if@tud@list@sorted +% \end{macro}^^A \tud@templist +% \end{macro}^^A \tud@list@@sort +% \end{macro}^^A \tud@list@sort +% +% \iffalse +%</class&manual> +% \fi +% +% \subsection{Stringmanipulation} +% +% \begin{macro}{\tud@replace@in} +% \changes{v2.05}{2015/11/01}{neu}^^A +% \changes{v2.06o}{2022/08/08}{neu}^^A +% \begin{macro}{\tud@replace@@in} +% \changes{v2.06o}{2022/08/08}{neu}^^A +% Mit diesem Befehl kann in einem gegebenen Makro ein bestimmtes Zeichen durch +% ein anderes ersetzt werden. Dies wird verwendet, um für Indexbefehle die +% möglicherweise enthaltenen |@|"~Zeichen oder in Datei- und Pfadangaben +% Unterstriche zu ersetzen. +% \begin{macrocode} +\newcommand*\tud@replace@in[3]{% + \begingroup% +% \end{macrocode} +% Zunächst wird der Inhalt des ersten Argumentes expandiert. Anschließend +% wird \cs{tud@res@b} als ein durch \cs{@nil} abgegrenztes Makro mit zwei +% Argumenten definiert, wobei diese durch das im zweiten Argument gegebene +% \meta{Zeichen} voneinander abgegrenzt werden. Dieses Makro wird nun so lange +% rekursiv mit dem zweiten Teil aufgerufen, bis dieses leer is. Dabei wird der +% erste, durch das angegebene zu ersetzende Zeichen Teil sukzessive an +% \cs{tud@res@c} angehängt und um das im dritten Argument angegebene +% Ersatzzeichen vervollständigt. +% \begin{macrocode} + \edef\tud@res@a{\expandonce{#1}}% + \let\tud@res@c\@empty% + \def\tud@res@b##1#2##2\@nil{% + \IfArgIsEmpty{##2}{% + \appto\tud@res@c{##1}% + }{% + \appto\tud@res@c{##1#3}% + \tud@res@b##2\@nil% + }% + }% + \expandafter\tud@res@b\tud@res@a#2\@nil% + \edef\tud@res@a{% + \endgroup% + \unexpanded{\def#1}{\expandonce\tud@res@c}% + }% + \tud@res@a% +} +% \end{macrocode} +% Diese Variante sorgt dafür, dass die zu ersetzenden Zeichen alle als Strings +% behandelt werden. +% \begin{macrocode} +\newcommand*\tud@replace@@in[3]{% + \begingroup% + \protected@edef\tud@res@a{#1}% + \edef\tud@res@a{\detokenize\expandafter{\tud@res@a}}% + \edef\tud@res@b{% + \unexpanded{\tud@replace@in\tud@res@a}{\detokenize{#2}}{\detokenize{#3}}% + }% + \tud@res@b% + \edef\tud@res@a{% + \endgroup% + \unexpanded{\def#1}{\tud@res@a}% + }% + \tud@res@a% +} +% \end{macrocode} +% \end{macro}^^A \tud@replace@@in +% \end{macro}^^A \tud@replace@in +% +% \iffalse +%</option> +%<*body> +% \fi +% +% \subsection{Zusätzliche Markup-Befehle} +% \subsubsection{Textauszeichnung} +% +% \begin{macro}{\@pnumwidth} +% \begin{macro}{\@tocrmarg} +% Etwas mehr Platz im Inhaltsverzeichnis für die Seitenzahlen. +% \ToDo{direkt in die Klassen übernehmen}[v2.07] +% \begin{macrocode} +\renewcommand*\@pnumwidth{2.1em} +\renewcommand*\@tocrmarg{3.1em} +% \end{macrocode} +% \end{macro}^^A \@tocrmarg +% \end{macro}^^A \@pnumwidth +% +% \begin{macro}{\textsbn} +% \changes{v2.02}{2014/08/16}{neu}^^A +% \begin{macro}{\sbnfont} +% \changes{v2.02}{2014/08/16}{neu}^^A +% \begin{macro}{\textsbi} +% \changes{v2.02}{2014/08/16}{neu}^^A +% \begin{macro}{\sbifont} +% \changes{v2.02}{2014/08/16}{neu}^^A +% \begin{macro}{\textttit} +% \changes{v2.06o}{2022/08/03}{neu}^^A +% \begin{macro}{\ttitfont} +% \changes{v2.06o}{2022/08/03}{neu}^^A +% Kombinierte Auszeichnungsbefehle für Text. +% \begin{macrocode} +\newcommand*\textsbn{} +\newrobustcmd*\sbnfont{\sffamily\bfseries\upshape} +\DeclareTextFontCommand\textsbn{\sbnfont} +\newcommand*\textsbi{} +\newrobustcmd*\sbifont{\sffamily\bfseries\itshape} +\DeclareTextFontCommand\textsbi{\sbifont} +\newcommand*\textttit{} +\newrobustcmd*\ttitfont{\ttfamily\itshape} +\DeclareTextFontCommand\textttit{\ttitfont} +% \end{macrocode} +% \end{macro}^^A \ttitfont +% \end{macro}^^A \textttit +% \end{macro}^^A \sbifont +% \end{macro}^^A \textsbi +% \end{macro}^^A \sbnfont +% \end{macro}^^A \textsbn +% +% \subsubsection{Logisches Markup} +% +% \begin{macro}{\tud@english} +% Hiermit wird der Argumentsinhalt mit englischen Trennungsmustern gesetzt, +% falls die Sprache geladen wurde. +% \begin{macrocode} +\newcommand*\tud@english[1]{% + \iflanguageloaded{english}{\foreignlanguage{english}{#1}}{#1}% +} +\AfterPackage*{babel}{% + \renewcommand*\tud@english[1]{\foreignlanguage{english}{#1}}% +} +% \end{macrocode} +% \end{macro}^^A \tud@english +% \begin{macro}{\KOMAScript} +% \begin{macro}{\TUDScript} +% \begin{macro}{\vTUDScript} +% \begin{macro}{\vKOMAScript} +% Für die robuste Verwendung im Text. +% \begin{macrocode} +\kernel@make@fragile\KOMAScript +\edef\KOMAScript{\noexpand\mbox{\expandonce\KOMAScript}\noexpand\xspace} +\robustify\KOMAScript +\robustify\TUDScript +\AfterPackage*{hyperref}{% + \pdfstringdefDisableCommands{% + \def\KOMAScript{KOMA-Script{}}% + \def\TUDScript{TUD-Script{}}% + }% +} +% \end{macrocode} +% Diese Befehle geben in der Dokumentation die aktuelle Version von \TUDScript +% sowie die mindestens notwendige Version von \KOMAScript{} aus. +% \begin{macrocode} +\newcommand*\vTUDScript{v\TUDScriptVersionNumber} +\newcommand*\vKOMAScript{v\TUD@KOMAVersionNumber} +% \end{macrocode} +% \end{macro}^^A \vKOMAScript +% \end{macro}^^A \vTUDScript +% \end{macro}^^A \TUDScript +% \end{macro}^^A \KOMAScript +% \begin{macro}{\CD} +% \begin{macro}{\CDs} +% \begin{macro}{\TUD} +% \begin{macro}{\TnUD} +% \begin{macro}{\TUDCD} +% \changes{v2.05}{2015/11/01}{neu}^^A +% \begin{macro}{\TUDCDs} +% \changes{v2.05}{2015/11/01}{neu}^^A +% \begin{macro}{\TUDForum} +% \changes{v2.06o}{2022/08/04}{neu}^^A +% \begin{macro}{\DDC} +% Diese Befehle stellen regelmäßig in der Quelltextdokumentatuion und im +% Handbuch genutzte Textbausteine bereit. Dazu wird der Befehl \cs{xspace} aus +% dem \pkg{xspace}-Paket genutzt. +% \begin{macrocode} +\newrobustcmd*\CD{\tud@english{Corporate Design}\xspace} +\newrobustcmd*\CDs{\tud@english{Corporate Designs}\xspace} +\newrobustcmd*\TUD{Technische Universit\"at Dresden\xspace} +\newrobustcmd*\TnUD{Technischen Universit\"at Dresden\xspace} +\newcommand*\TUDCD{\CD der \TnUD} +\newcommand*\TUDCDs{\CDs der \TnUD} +\newrobustcmd*\TUDForum{\mbox{T\kern.05em U\kern.05em D-\LaTeX-Forum}\xspace} +\newrobustcmd*\DDC{% + \mbox{% + D\kern.05em R\kern.05em E\kern.05em S\kern.05em % + D\kern.05em E\kern.05em N\kern.1em-\kern.1em concept% + }\xspace% +} +\AfterPackage*{hyperref}{% + \pdfstringdefDisableCommands{% + \def\CD{Corporate Design{}}% + \def\CDs{Corporate Designs{}}% + \def\TUD{Technische Universit\"at Dresden{}}% + \def\TnUD{Technischen Universit\"at Dresden{}}% + \def\TUDForum{TUD-LaTeX-Forum{}}% + \def\DDC{DRESDEN-concept{}}% + }% +} +% \end{macrocode} +% \end{macro}^^A \DDC +% \end{macro}^^A \TUDForum +% \end{macro}^^A \TUDCDs +% \end{macro}^^A \TUDCD +% \end{macro}^^A \TnUD +% \end{macro}^^A \TUD +% \end{macro}^^A \CDs +% \end{macro}^^A \CD +% +% \begin{macro}{\OpenSans} +% \changes{v2.06}{2018/07/02}{neu}^^A +% \begin{macro}{\Univers} +% \begin{macro}{\DIN} +% Für die Nennung der Schriften spezielle Markos bereitgestellt. +% \begin{macrocode} +\newrobustcmd*\OpenSans{\textcdbn{Open\nobreakspace Sans}\xspace} +\newrobustcmd*\Univers{\textcdbi{Univers}\xspace} +\newrobustcmd*\DIN{\textcdbi{DIN\nobreakspace Bold}\xspace} +\AfterPackage*{hyperref}{% + \pdfstringdefDisableCommands{% + \def\OpenSans{Open Sans{}}% + \def\Univers{Univers{}}% + \def\DIN{DIN Bold{}}% + }% +} +% \end{macrocode} +% \end{macro}^^A \DIN +% \end{macro}^^A \Univers +% \end{macro}^^A \OpenSans +% +% \begin{macro}{\GitHubBase} +% Angabe der URL des verwendeten GitHub-Repository. Aktuell nicht implementiert. +% \begin{macrocode} +\newcommand*\GitHubBase[1]{} +% \end{macrocode} +% \end{macro}^^A \GitHubBase +% \begin{macro}{\GitHubRepo} +% \changes{v2.02}{2014/08/16}{neu}^^A +% Auszeichnungsbefehle für Verweise auf ein GitHub-Repository. +% \begin{macrocode} +\NewDocumentCommand\GitHubRepo{!s !t' !O{releases} !D(){tud-cd/tudscr} !d<>}{% + \IfBooleanTF{#1}{\toks@{\href}}{\toks@{\hrfn}}% + \IfBooleanT{#2}{\toks@{\url}}% + \def\@tempa{https://github.com/#4/}% + \edef\@tempa{{\@tempa\IfValueTF{#5}{issues/#5}{#3}}}% + \addto@hook@expandafter\toks@{\@tempa}% + \IfBooleanF{#2}{% + \addto@hook\toks@{{\tud@english{GitHub-Repository~\textsbn{#4}}}}% + }% + \the\toks@\xspace% +} +% \end{macrocode} +% \end{macro}^^A \GitHubRepo +% \begin{macro}{\Download} +% \changes{v2.05g}{2016/11/08}{neu}^^A +% Der Befehl für die Angabe von direkten Downloadlinks. +% \begin{macrocode} +%<*manual> +\newcommand*\Download[1]{% + https://github.com/tud-cd/tudscr/releases/download/#1% +} +%</manual> +% \end{macrocode} +% \end{macro}^^A \Download +% \begin{macro}{\CTAN} +% \changes{v2.05}{2015/11/22}{neu}^^A +% \begin{macrocode} +\NewDocumentCommand\CTAN{!s !o !g}{% + \IfBooleanTF{#1}{\toks@{\href}}{\toks@{\hrfn}}% + \addto@hook\toks@{{http://www.ctan.org/\IfValueT{#2}{#2}}}% + \addto@hook\toks@{% + {\tud@english{Comprehensive TeX Archive Network (CTAN\IfValueT{#3}{~#3})}}% + }% + \the\toks@\xspace% +} +% \end{macrocode} +% \end{macro}^^A \CTAN +% \begin{macro}{\Forum} +% Der Befehl für die Ausgabe eines Links zum \TUDForum. Das optionale Argument +% in Guillemets kann genutzt werden, um auf einen spezifisches Beitrag zu +% verlinken. +% \begin{macrocode} +\NewDocumentCommand\Forum{!s !t' !O{\TUDForum} !d<>}{% + \IfBooleanTF{#1}{\toks@{\href}}{\toks@{\hrfn}}% + \IfBooleanT{#2}{\toks@{\url}}% + \def\@tempa{http://latex.wcms-file3.tu-dresden.de/phpBB3/}% + \edef\@tempa{{\@tempa\IfValueT{#4}{viewtopic.php?t=#4}}}% + \addto@hook@expandafter\toks@{\@tempa}% + \IfBooleanF{#2}{\addto@hook\toks@{{#3}}}% + \the\toks@\xspace% +} +% \end{macrocode} +% \end{macro}^^A \Forum +% \begin{macro}{\Attention} +% \changes{v2.02}{2014/08/16}{neu}^^A +% Falls irgendetwas besonders hervorgehoben werden sollte. +% \begin{macrocode} +\newcommand*\Attention[2][\z@]{% + \marginnote{% + \tud@setdim\fboxsep{0.25em}% + \fbox{Achtung!}% + }[{#1}]% + \emph{\trim@spaces{#2}}% +} +% \end{macrocode} +% \end{macro}^^A \Attention +% \begin{macro}{\TUDScriptContactTitle} +% \changes{v2.06o}{2022/08/09}{neu}^^A +% Die Angabe der E-Mail-Adresse auf dem Titel innerhalb von \cs{author}. +% \begin{macrocode} +\newrobustcmd*\TUDScriptContactTitle{% + \ifundef{\emailaddress}{% + \qquad\expandafter\mailto\expandafter{\TUDScriptContact}% + }{% + \expandafter\emailaddress\expandafter{\TUDScriptContact}% + }% +} +\AfterPackage*{hyperref}{% + \pdfstringdefDisableCommands{\let\TUDScriptContactTitle\relax}% +} % \end{macrocode} -% \end{macro}^^A \tud@x@textcase@uclcnotmath -% \end{macro}^^A \@uclcnotmath +% \end{macro}^^A \TUDScriptContactTitle % % \iffalse %</body> +%</manual|doc> % \fi % -% \Finale +% \PrintBackMatter % \endinput |