diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/tudscr/tudscr-fields.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/tudscr/tudscr-fields.dtx | 510 |
1 files changed, 285 insertions, 225 deletions
diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-fields.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-fields.dtx index c662c46bd9a..166f3d7da08 100644 --- a/Master/texmf-dist/source/latex/tudscr/tudscr-fields.dtx +++ b/Master/texmf-dist/source/latex/tudscr/tudscr-fields.dtx @@ -1,10 +1,10 @@ -% \CheckSum{875} % \iffalse meta-comment +%/GitFileInfo=tudscr-fields.dtx % % TUD-Script -- Corporate Design of Technische Universität Dresden % ---------------------------------------------------------------------------- % -% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2021 +% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2022 % % ---------------------------------------------------------------------------- % @@ -23,33 +23,19 @@ % % \fi % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} -% -% \iffalse -%%% From File: tudscr-fields.dtx +% \iffalse ins:batch + dtx:driver +%<*ins> +\ifx\documentclass\undefined + \input docstrip.tex + \ifToplevel{\batchinput{tudscr.ins}} +\else + \let\endbatchfile\relax +\fi +\endbatchfile +%</ins> %<*dtx> -% \fi -% -\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi -\ProvidesFile{tudscr-fields.dtx}[2019/08/20 v2.06c TUD-Script\space% - (input fields)% -] -% -% \iffalse +\ProvidesFile{tudscr-fields.dtx}[2022/08/09] +\RequirePackage{tudscr-gitinfo} \documentclass[english,ngerman,xindy]{tudscrdoc} \iftutex \usepackage{fontspec} @@ -59,18 +45,11 @@ \fi \usepackage{babel} \usepackage{tudscrfonts} -\KOMAoptions{parskip=half-} -\usepackage{bookmark} \usepackage[babel]{microtype} -\CodelineIndex -\RecordChanges -\GetFileInfo{tudscr-fields.dtx} -\title{\file{\filename}} -\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}} -\date{\fileversion\nobreakspace(\filedate)} - +\GitHubBase{\TUDScriptRepository} \begin{document} + \author{Falk Hanisch\TUDScriptContactTitle} \maketitle \tableofcontents \DocInput{\filename} @@ -82,6 +61,8 @@ % % \changes{v2.02}{2014/06/23}{Paket \pkg{titlepage} nicht weiter unterstützt}^^A % +% +% % \section{Anwenderbefehle für Eingabefelder} % % Das \TUDScript-Bundle für das \TUDCD definieren mehrere Felder, welche durch @@ -95,8 +76,6 @@ % \pkg{titlepage}-Paket entworfen worden. Um gleichzeitig konsistent zu diesem % Paket zu sein, werden für die entsprechenden Felder Alias-Befehle definiert. % -% \StopEventually{\PrintIndex\PrintChanges\PrintToDos} -% % \iffalse %<*class&!manual> % \fi @@ -106,7 +85,10 @@ % Hiermit wird der Inhalt des im zweiten (obligatorischen) Argument namentlich % genannten Feldes in die im ersten (optionalen) Argument gegebene Anweisung % expandiert. -% \begin{macrocode} +% \ToDo{getfield für thesis etc. überarbeiten}[v2.07] +% \ToDo{getfield nur für festgelegte Felder (Liste) zulassen}[v2.07] +% \ToDo{Ausgabe von definition und expandierte Version unterscheiden}[v2.07] +% \begin{macrocode} \newcommand*\getfield[2][\@firstofone]{% \begingroup% \def\tud@res@b{#1}% @@ -160,32 +142,25 @@ % \cs{@department}, \cs{@institute} und \cs{@chair} gespeichert werden. % % Das optionale Argument wird zur Kompatibilität zur Klasse \cls{tudscrposter} -% vorgehalten. Wird das Paket geladen, kann mit dem optionalen Argument die +% vorgehalten. Wird diese Klasse geladen, kann mit dem optionalen Argument die % Angabe der Struktureinheiten im Fußbereich variiert werden. Dafür werden die % Felder \cs{@facultyfoot}, \cs{@departmentfoot}, \cs{@institutefoot} sowie -% \cs{@chairfoot} -% definiert. +% \cs{@chairfoot} definiert. % \begin{macrocode} \newcommand*\@faculty{} \newcommand*\@department{} \newcommand*\@institute{} \newcommand*\@chair{} -%<*book|report|article> -\newcommand*\faculty[2][]{\tud@head@text@field{faculty}{#2}} -\newcommand*\department[2][]{\tud@head@text@field{department}{#2}} -\newcommand*\institute[2][]{\tud@head@text@field{institute}{#2}} -\newcommand*\chair[2][]{\tud@head@text@field{chair}{#2}} -%</book|report|article> %<*poster> \newcommand*\@facultyfoot{} \newcommand*\@departmentfoot{} \newcommand*\@institutefoot{} \newcommand*\@chairfoot{} -\newcommand*\faculty[2][\@empty]{\tud@foot@line@add{faculty}{#2}{#1}} -\newcommand*\department[2][\@empty]{\tud@foot@line@add{department}{#2}{#1}} -\newcommand*\institute[2][\@empty]{\tud@foot@line@add{institute}{#2}{#1}} -\newcommand*\chair[2][\@empty]{\tud@foot@line@add{chair}{#2}{#1}} %</poster> +\newcommand*\faculty{\@dblarg{\tud@head@text@field{faculty}}} +\newcommand*\department{\@dblarg{\tud@head@text@field{department}}} +\newcommand*\institute{\@dblarg{\tud@head@text@field{institute}}} +\newcommand*\chair{\@dblarg{\tud@head@text@field{chair}}} % \end{macrocode} % \end{field}^^A \@chairfoot % \end{field}^^A \@chair @@ -205,30 +180,21 @@ % besonderen Ausnahmefällen gestattet. % \begin{macrocode} \newcommand*\@extraheadline{} -\newcommand*\extraheadline[1]{\tud@head@text@field{extraheadline}{#1}} +\newcommand*\extraheadline[1]{\tud@head@text@field{extraheadline}[]{#1}} % \end{macrocode} % \end{field}^^A \@extraheadline % \end{macro}^^A \extraheadline % \begin{macro}{\tud@head@text@field} % \changes{v2.05}{2015/11/26}{neu}^^A -% Wird ein Feld gesetzt, muss im Zweifel die Kopfzeile neu erstellt werden. -% \begin{macrocode} -\newcommand*\tud@head@text@field[2]{% - \csgdef{@#1}{\trim@spaces{#2}}% - \global\@tud@head@text@settrue% -} -% \end{macrocode} -% \end{macro}^^A \tud@head@text@field -% \begin{macro}{\tud@foot@line@add} -% \changes{v2.05}{2015/07/06}{neu}^^A % \begin{macro}{\tud@foot@line@write} % \changes{v2.05}{2015/07/06}{neu}^^A -% Mit \cs{tud@foot@line@add} wird der Inhalt eines Feldes in \cs{@\meta{Feld}} +% Mit \cs{tud@head@text@field} wird der Inhalt eines Feldes in |\@|\meta{Feld} % gespeichert. Der Befehl erwartet als erstes obligatorisches Argument den -% Feldnamen und als zweites den Inhalt. Entspricht das dritte obligatorische -% Argument \cs{@empty}, so wird in \cs{@\meta{Feld}foot} ebenfalls das zweite -% Argument abgelegt, andernfalls das dritte. +% Feldnamen und als letztes den Inhalt. Wird ein Feld gesetzt, muss die +% Kopfzeile neu erstellt werden. % +% Das (optionale) Argument dazwischen befüllt |\@|\meta{Feld}|foot| und wird +% mit \cs{@dblarg} standardmäßig auf den Inhalt von |\@|\meta{Feld} gesetzt. % Damit wird es für Poster möglich, die Befehle \cs{faculty}, \cs{department}, % \cs{institute}, \cs{chair} und \cs{professor} dahingehend zu erweitern, dass % unterschiedliche Angaben für die Kopf- und Fußzeile gemacht werden können. @@ -237,15 +203,15 @@ % jedoch zusätzlich das optionale Argument genutzt, so wird dessen Inhalt im % Fußbereich mit \cs{tud@foot@line@write} ausgegeben. % \begin{macrocode} +\newcommand*\tud@head@text@field{} +\def\tud@head@text@field#1[#2]#3{% + \expandafter\tud@trim@field\csname @#1\endcsname{#3}% %<*poster> -\newcommand*\tud@foot@line@add[3]{% - \tud@head@text@field{#1}{#2}% - \ifx\@empty#3\relax% - \global\csletcs{@#1foot}{@#1}% - \else% - \csgdef{@#1foot}{\trim@spaces{#3}}% - \fi% + \expandafter\tud@trim@field\csname @#1foot\endcsname{#2}% +%</poster> + \global\@tud@head@text@settrue% } +%<*poster> \newcommand*\tud@foot@line@write[1]{% \protected@edef\@tempa{\csuse{@#1foot}}% \ifx\@tempa\@empty\else\newline\mbox{\csuse{@#1foot}}\fi% @@ -253,7 +219,18 @@ %</poster> % \end{macrocode} % \end{macro}^^A \tud@foot@line@write -% \end{macro}^^A \tud@foot@line@add +% \end{macro}^^A \tud@head@text@field +% \begin{macro}{\tud@trim@field} +% Hiermit werden Feldinhalte gegebenenfalls um unnötige Leerzeichen befreit. +% \changes{v2.06o}{2022/08/03}{neu}^^A +% \begin{macrocode} +\newcommand*\tud@trim@field[2]{% + \def#1{#2}% + \trim@spaces@in#1% + \global\let#1#1% +} +% \end{macrocode} +% \end{macro}^^A \tud@trim@field % \begin{macro}{\title} % \begin{field}{\@title} % \begin{field}{\@@title} @@ -266,7 +243,7 @@ \newcommand*\@@title{} \robustify\@title \renewcommand*\title[1]{% - \gdef\@title{#1}% + \tud@trim@field\@title{#1}% \begingroup% \let\thanks\@gobble% \let\footnote\@gobble% @@ -287,10 +264,11 @@ % Die Ausgabe einer zusätzlichen Zeile mit \cs{authormore}\marg{Textzeile} % direkt unterhalb der Angabe des Autors auf der Titelseite, wird im Makro % \cs{@authormore} gespeichert. +% \ToDo{Anrede als optionales Argument?}[v2.07] % \begin{macrocode} \newcommand*\@@author{} \renewcommand*\author[1]{% - \gdef\@author{#1}% + \tud@trim@field\@author{#1}% % \end{macrocode} % Das Feld \cs{@@author} soll lediglich die Autoren ohne weitere Anmerkungen % enthalten. Deshalb werden die gewöhnlichen Formatierungsbefehle des Titels @@ -327,6 +305,9 @@ \expandafter\@tempb##1##2\@nil% }% \protected@edef\@@author{#1}% +% \end{macrocode} +% Zuletzt werden alle eingefügten \cs{@tempc} entfernt. +% \begin{macrocode} \@tempa{\@@author}{ \@tempc }% \@tempa{\@@author}{\@tempc }% \@tempa{\@@author}{ \@tempc}% @@ -335,7 +316,7 @@ \endgroup% } \newcommand*\@authormore{} -\newrobustcmd*\authormore[1]{\gdef\@authormore{#1}\ignorespaces} +\newrobustcmd*\authormore[1]{\tud@trim@field\@authormore{#1}} % \end{macrocode} % \end{field}^^A \@authormore % \end{macro}^^A \authormore @@ -352,18 +333,23 @@ % \changes{v2.05}{2016/07/09}{neu}^^A % \begin{macrocode} \newcommand*\@emailaddress{} -\newrobustcmd*\emailaddress{% - \kernel@ifstar{\tud@emailaddress@simple}{\tud@emailaddress@hyper}% +\newrobustcmd*\emailaddress[2][]{% + \kernel@ifstar% + {\tud@emailaddress@simple{#2}}% + {\tud@emailaddress@hyper[{#1}]{#2}}% } -\newrobustcmd*\tud@emailaddress@simple[1]{\gdef\@emailaddress{#1}} -\newrobustcmd*\tud@emailaddress@hyper[2][]{\gdef\@emailaddress{#2}} +\newrobustcmd*\tud@emailaddress@simple[1]{\tud@trim@field\@emailaddress{#1}} +\newrobustcmd*\tud@emailaddress@hyper[2][]{\tud@trim@field\@emailaddress{#2}} \AfterPackage{hyperref}{% \renewrobustcmd*\tud@emailaddress@hyper[2][hidelinks]{% - \gdef\@emailaddress{% + \tud@trim@field\@emailaddress{#2}% + \xdef\@emailaddress{% \begingroup% - \urlstyle{same}% - \hypersetup{#1}% - \href{mailto:#2}{\nolinkurl{#2}}% + \noexpand\urlstyle{same}% + \unexpanded{\hypersetup{#1}}% + \noexpand\href% + {mailto:\expandonce\@emailaddress}% + {\noexpand\nolinkurl{\expandonce\@emailaddress}}% \endgroup% }% }% @@ -379,7 +365,7 @@ % \cs{@course} gespeichert. % \begin{macrocode} \newcommand*\@course{} -\newrobustcmd*\course[1]{\gdef\@course{#1}\ignorespaces} +\newrobustcmd*\course[1]{\tud@trim@field\@course{#1}} % \end{macrocode} % \end{field}^^A \@course % \end{macro}^^A \course @@ -391,7 +377,7 @@ % wird im Makro \cs{@discipline} gespeichert. % \begin{macrocode} \newcommand*\@discipline{} -\newrobustcmd*\discipline[1]{\gdef\@discipline{#1}\ignorespaces} +\newrobustcmd*\discipline[1]{\tud@trim@field\@discipline{#1}} % \end{macrocode} % \end{field}^^A \@discipline % \end{macro}^^A \discipline @@ -406,9 +392,7 @@ % \cs{@matriculationid} gespeichert. % \begin{macrocode} \newcommand*\@matriculationnumber{} -\newrobustcmd*\matriculationnumber[1]{% - \gdef\@matriculationnumber{#1}\ignorespaces% -} +\newrobustcmd*\matriculationnumber[1]{\tud@trim@field\@matriculationnumber{#1}} % \end{macrocode} % \end{field}^^A \@matriculationnumber % \end{macro}^^A \matriculationnumber @@ -418,7 +402,7 @@ % gespeichert. % \begin{macrocode} \newcommand*\@matriculationyear{} -\newrobustcmd*\matriculationyear[1]{\gdef\@matriculationyear{#1}\ignorespaces} +\newrobustcmd*\matriculationyear[1]{\tud@trim@field\@matriculationyear{#1}} % \end{macrocode} % \end{field}^^A \@matriculationyear % \end{macro}^^A \matriculationyear @@ -427,7 +411,7 @@ % Der Geburtsort für den Titel wird in \cs{@placeofbirth} gespeichert. % \begin{macrocode} \newcommand*\@placeofbirth{} -\newrobustcmd*\placeofbirth[1]{\gdef\@placeofbirth{#1}\ignorespaces} +\newrobustcmd*\placeofbirth[1]{\tud@trim@field\@placeofbirth{#1}} % \end{macrocode} % \end{field}^^A \@placeofbirth % \end{macro}^^A \placeofbirth @@ -438,84 +422,109 @@ % \changes{v2.02}{2014/11/06}{\cs{protected@xdef} genutzt}^^A % \begin{macro}{\subject} % \begin{field}{\@subject} -% \begin{macro}{\tud@thesis@do} -% \begin{macro}{\tud@thesis@@do} -% \begin{macro}{\tud@thanks} +% \begin{field}{\@@subject} +% \begin{macro}{\tud@thesis@evaluate} % Art bzw. Typ der Abschlussarbeit kann \cs{thesis}\marg{Abschlussarbeit} % angegeben werden und wird im Makro \cs{@thesis} gespeichert. Alternativ % dazu kann auch der Befehl \cs{subject} verwendet werden. Mit dem Befehl -% \cs{tud@thesis@do} wird in den Feldern \cs{@thesis} respektive \cs{@subject} -% nach bestimmten Schlagwörtern für Abschlussarbeiten o.\,ä. gesucht. Wird -% eines dieser Wörter gefunden, wird der entsprechende Bezeichner für dieses -% Feld gesetzt. Zusätzlich wird durch \cs{tud@thesis@@do} dafür gesorgt, dass -% gegebenenfalls der Inhalt von \cs{@subject} in \cs{@thesis} verschoben und -% entsprechend die Option \opt{subjectthesis} gesetzt wird. In \cs{@@thesis} -% wird die angegebene Abschlussarbeit ohne etwaige Fußnoten gespeichert. +% \cs{tud@thesis@evaluate} wird in den Feldern \cs{@thesis} respektive +% \cs{@subject} nach bestimmten Schlagwörtern für Abschlussarbeiten o.\,ä. +% gesucht. Bei einem Treffer wird der entsprechende Bezeichner für dieses Feld +% gesetzt. In \cs{@@subject} beziehungsweise \cs{@@thesis} wird der gegebene +% oder substituierte Inhalt ohne etwaige Fußnoten gespeichert. +% \ToDo{Option thesis}[v2.07] % \begin{macrocode} \newcommand*\@thesis{} \newcommand*\@@thesis{} -\newcommand*\thesis[1]{\tud@thesis@do{thesis}{#1}} -\renewcommand*\subject[1]{\tud@thesis@do{subject}{#1}} -\newcommand*\tud@thanks{} -\newcommand*\tud@thesis@do[2]{% +\newcommand*\thesis[1]{\tud@thesis@evaluate{thesis}{#1}} +\CheckCommand*\subject[1]{\gdef\@subject{#1}} +\newcommand*\@@subject{} +\renewcommand*\subject[1]{\tud@thesis@evaluate{subject}{#1}} +\newcommand*\tud@thesis@evaluate[2]{% \begingroup% + \expandafter\tud@trim@field\csname @#1\endcsname{#2}% % \end{macrocode} -% Hier das gleiche wie an anderer Stelle auch schon. Der Inhalt einer eventuell -% vorhandenen Fußnote wird gesichert +% Der Inhalt des Befehls \cs{thanks} wird durch das Setzen einer temporären Box +% in ein temporäres Makro gesichert. Nach der Verarbeitung des Feldinhalts und +% der möglichen Substitution durch den gewünschten Bezeichner wird \cs{thanks} +% wieder hinzugefügt. % \begin{macrocode} - \global\let\tud@thanks\relax% - \def\thanks##1{\gdef\tud@thanks{##1}}% + \let\tud@res@c\@empty% + \def\thanks##1{\listgadd\tud@res@c{##1}}% \let\footnote\thanks% \sbox\z@{#2}% \let\thanks\@gobble% \let\footnote\@gobble% - \tud@lowerstring{\@tempa}{#2}% - \ifstr{#1}{thesis}{\protected@xdef\@@thesis{#2}}{}% - \protected@edef\@tempa{% + \protected@csxdef{@@#1}{\trim@spaces{#2}}% + \letcs\tud@res@a{@@#1}% + \TUD@set@numkey{thesis}{@tempa}{% + {habil}{0}, + {diss}{1},{doctoral}{1},{phd}{1}, + {diploma}{2}, + {master}{3}, + {bachelor}{4}, + {student}{5}, + {evidence}{6}, + {project}{7}, + {seminar}{8}, + {term}{9}, + {research}{10}, + {log}{11}, + {report}{12}, + {internship}{13} + }{\tud@res@a}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \ifcase\@tempa\relax% habil + \def\tud@res@a{\habilitationname}% + \or% diss + \def\tud@res@a{\dissertationname}% + \or% diploma + \def\tud@res@a{\diplomathesisname}% + \or% master + \def\tud@res@a{\masterthesisname}% + \or% bachelor + \def\tud@res@a{\bachelorthesisname}% + \or% student + \def\tud@res@a{\studentthesisname}% + \or% evidence + \def\tud@res@a{\studentresearchname}% + \or% project + \def\tud@res@a{\projectpapername}% + \or% seminar + \def\tud@res@a{\seminarpapername}% + \or% term + \def\tud@res@a{\termpapername}% + \or% research + \def\tud@res@a{\researchname}% + \or% log + \def\tud@res@a{\logname}% + \or% report + \def\tud@res@a{\reportname}% + \or% internship + \def\tud@res@a{\internshipname}% + \else% + \FamilyKeyStateUnknownValue% + \fi% + \fi% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \global\cslet{@@#1}\tud@res@a% + \tud@if@strequal{#1}{subject}{% + \ifx\@@thesis\@empty\global\let\@@thesis\@@subject\fi% + }{}% + \def\do##1{\appto\tud@res@a{\thanks{##1}}}% + \dolistloop{\tud@res@c}% + \fi% + \edef\tud@res@a{% \endgroup% - \def\noexpand\@tempa{\@tempa}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \noexpand\csgdef{@#1}{\expandonce\tud@res@a}% + \fi% }% - \@tempa% - \ifstr{\@tempa}{diss}{\tud@thesis@@do{#1}{\dissertationname}}{% - \ifstr{\@tempa}{doctoral}{\tud@thesis@@do{#1}{\dissertationname}}{% - \ifstr{\@tempa}{phd}{\tud@thesis@@do{#1}{\dissertationname}}{% - \ifstr{\@tempa}{diploma}{\tud@thesis@@do{#1}{\diplomathesisname}}{% - \ifstr{\@tempa}{master}{\tud@thesis@@do{#1}{\masterthesisname}}{% - \ifstr{\@tempa}{bachelor}{\tud@thesis@@do{#1}{\bachelorthesisname}}{% - \ifstr{\@tempa}{student}{\tud@thesis@@do{#1}{\studentthesisname}}{% - \ifstr{\@tempa}{evidence}{\tud@thesis@@do{#1}{\studentresearchname}}{% - \ifstr{\@tempa}{project}{\tud@thesis@@do{#1}{\projectpapername}}{% - \ifstr{\@tempa}{seminar}{\tud@thesis@@do{#1}{\seminarpapername}}{% - \ifstr{\@tempa}{term}{\tud@thesis@@do{#1}{\termpapername}}{% - \ifstr{\@tempa}{research}{\tud@thesis@@do{#1}{\researchname}}{% - \ifstr{\@tempa}{log}{\tud@thesis@@do{#1}{\logname}}{% - \ifstr{\@tempa}{report}{\tud@thesis@@do{#1}{\reportname}}{% - \ifstr{\@tempa}{internship}{\tud@thesis@@do{#1}{\internshipname}}{% - \csdef{@#1}{#2}% - }}}}}}}}}}}}}}}% -} -\newcommand*\tud@thesis@@do[2]{% - \ifstr{#1}{subject}{% - \ifx\@thesis\@empty\else% - \ClassWarning{\TUD@Class@Name}{% - Field `thesis' is overwritten by `subject'% - }% - \fi% - \TUD@key@preset{subjectthesis}{true}% - }{% - \TUD@key@preset{subjectthesis}{false}% - }% - \ifx\tud@thanks\relax% - \gdef\@thesis{#2}% - \else% - \protected@xdef\@thesis{\noexpand#2\noexpand\thanks{\tud@thanks}}% - \fi% - \protected@xdef\@@thesis{\trim@spaces{#2}}% + \tud@res@a% } % \end{macrocode} -% \end{macro}^^A \tud@thanks -% \end{macro}^^A \tud@thesis@@do -% \end{macro}^^A \tud@thesis@do +% \end{macro}^^A \tud@thesis@evaluate +% \end{field}^^A \@@subject % \end{field}^^A \@subject % \end{macro}^^A \subject % \end{field}^^A \@@thesis @@ -536,9 +545,8 @@ \newcommand*\@graduation{} \newcommand*\@graduationabbreviation{} \newcommand*\graduation[2][]{% - \gdef\@graduationabbreviation{}% - \ifxblank{#1}{}{\gdef\@graduationabbreviation{(#1)}}% - \gdef\@graduation{#2}% + \tud@trim@field\@graduationabbreviation{#1}% + \tud@trim@field\@graduation{#2}% } % \end{macrocode} % \end{field}^^A \@graduationabbreviation @@ -558,11 +566,11 @@ % \begin{macrocode} %<*book|report|article> \newcommand*\@professor{} -\newcommand*\professor[1]{\gdef\@professor{#1}} +\newcommand*\professor[1]{\tud@trim@field\@professor{#1}} %</book|report|article> %<*poster> \newcommand*\@professorfoot{} -\newcommand*\professor[1]{\gdef\@professorfoot{#1}} +\newcommand*\professor[1]{\tud@trim@field\@professorfoot{#1}} %</poster> % \end{macrocode} % \end{field}^^A \@professorfoot @@ -578,7 +586,7 @@ % \begin{macrocode} %<*book|report|article> \newcommand*\@supervisor{} -\newcommand*\supervisor[1]{\gdef\@supervisor{#1}} +\newcommand*\supervisor[1]{\tud@trim@field\@supervisor{#1}} %</book|report|article> %<*poster> \newcommand*\supervisor[1]{} @@ -593,14 +601,14 @@ % % \begin{macro}{\supporter} % \changes{v2.02}{2014/05/16}{erzeugter Eintrag der Betreuer mit -% \cs{supervisor} für Selbstständigkeitserklärung verworfen}^^A +% \cs{supporter} für Selbstständigkeitserklärung verworfen}^^A % \begin{field}{\@supporter} % Diese Feld ist für die Hilfesteller bei der Anfertigung der Abschlussarbeit, % welche auf der Selbstständigkeitserklärung aufgeführt werden. Mehrere % Hilfesteller werden durch \cs{and} voneinander getrennt. % \begin{macrocode} \newcommand*\@supporter{} -\newcommand*\supporter[1]{\gdef\@supporter{#1}} +\newcommand*\supporter[1]{\tud@trim@field\@supporter{#1}} % \end{macrocode} % \end{field}^^A \@supporter % \end{macro}^^A \supporter @@ -609,7 +617,7 @@ % Angabe einer externen Firma, wird im Makro \cs{@company} gespeichert. % \begin{macrocode} \newcommand*\@company{} -\newcommand*\company[1]{\gdef\@company{#1}} +\newcommand*\company[1]{\tud@trim@field\@company{#1}} % \end{macrocode} % \end{field}^^A \@company % \end{macro}^^A \company @@ -619,7 +627,7 @@ % Mehrere Gutachter werden durch \cs{and} getrennt. % \begin{macrocode} \newcommand*\@referee{} -\newcommand*\referee[1]{\gdef\@referee{#1}} +\newcommand*\referee[1]{\tud@trim@field\@referee{#1}} % \end{macrocode} % \end{field}^^A \@referee % \end{macro}^^A \referee @@ -629,19 +637,19 @@ % gespeichert. Mehrere Fachreferenten werden durch \cs{and} getrennt. % \begin{macrocode} \newcommand*\@advisor{} -\newcommand*\advisor[1]{\gdef\@advisor{#1}} +\newcommand*\advisor[1]{\tud@trim@field\@advisor{#1}} % \end{macrocode} % \end{field}^^A \@advisor % \end{macro}^^A \advisor -% \begin{length}{\tud@len@signatureskip} +% \begin{length}{\tud@glue@signaturevskip} % \changes{v2.04}{2015/05/06}{neu}^^A % Für alle Formatvorlagen, welche eine Unterschriftenzeile bereitstellen, wird % ein einheitlicher Abstand verwendet. % \begin{macrocode} -\newlength\tud@len@signatureskip -\setlength\tud@len@signatureskip{8ex plus 6ex minus 6ex} +\tud@newglue\tud@glue@signaturevskip +\tud@setglue\tud@glue@signaturevskip{8ex plus 6ex minus 6ex} % \end{macrocode} -% \end{length}^^A \tud@len@signatureskip +% \end{length}^^A \tud@glue@signaturevskip % \begin{macro}{\confirmationclosing} % \begin{field}{\@confirmationclosing} % Als Abschluss der Selbstständigkeitserklärung für Ort und Unterschrift. @@ -652,13 +660,13 @@ \medskip\noindent% \ifx\@place\@empty\else\@place,\nobreakspace\fi\@date% \fi% - \vskip\tud@len@signatureskip\noindent% + \vskip\tud@glue@signaturevskip\noindent% \begingroup% \let\and\hfil% \@@author\hfil% \endgroup% } -\newcommand*\confirmationclosing[1]{\gdef\@confirmationclosing{#1}} +\newcommand*\confirmationclosing[1]{\tud@trim@field\@confirmationclosing{#1}} % \end{macrocode} % \end{field}^^A \@confirmationclosing % \end{macro}^^A \confirmationclosing @@ -669,7 +677,7 @@ % \enquote{Dresden} gesetzt. % \begin{macrocode} \newcommand*\@place{Dresden} -\newcommand*\place[1]{\gdef\@place{#1}} +\newcommand*\place[1]{\tud@trim@field\@place{#1}} % \end{macrocode} % \end{field}^^A \@place % \end{macro}^^A \place @@ -678,12 +686,24 @@ %</book|report|article> % \fi % +% \begin{macro}{\subtitle} +% \begin{macro}{\@subtitle} +% \begin{macro}{\publishers} +% \begin{macro}{\@publishers} % \begin{macro}{\publisher} -% Kleine Korrektur für \KOMAScript, der Befehl sollte im Singular stehen. +% Die Felder von \KOMAScript werden ebenfalls behandelt. % \begin{macrocode} +\CheckCommand*\subtitle[1]{\gdef\@subtitle{#1}} +\renewcommand*\subtitle[1]{\tud@trim@field\@subtitle{#1}} +\CheckCommand\publishers[1]{\gdef\@publishers{#1}}% +\renewcommand*\publishers[1]{\tud@trim@field\@publishers{#1}} \providecommand*\publisher[1]{\publishers{#1}} % \end{macrocode} % \end{macro}^^A \publisher +% \end{macro}^^A \@publishers +% \end{macro}^^A \publishers +% \end{macro}^^A \@subtitle +% \end{macro}^^A \subtitle % % \iffalse %<*poster> @@ -698,20 +718,24 @@ % \begin{macro}{\tud@webpage@hyper} % \changes{v2.05}{2016/07/09}{neu}^^A % Im Fußbereich eines Posters kann zusätzlich eine Web-Seite angegeben werden. +% \ToDo{auch für notice in tudscrsupervisor}[v2.07] % \begin{macrocode} \newcommand*\@webpage{} -\newrobustcmd*\webpage{% - \kernel@ifstar{\tud@webpage@simple}{\tud@webpage@hyper}% +\newrobustcmd*\webpage[2][]{% + \kernel@ifstar% + {\tud@webpage@simple{#2}}% + {\tud@webpage@hyper[{#1}]{#2}}% } -\newrobustcmd*\tud@webpage@simple[1]{\gdef\@webpage{#1}} -\newrobustcmd*\tud@webpage@hyper[2][]{\gdef\@webpage{#2}} +\newrobustcmd*\tud@webpage@simple[1]{\tud@trim@field\@webpage{#1}} +\newrobustcmd*\tud@webpage@hyper[2][]{\tud@trim@field\@webpage{#2}} \AfterPackage{hyperref}{% \renewrobustcmd*\tud@webpage@hyper[2][hidelinks]{% - \gdef\@webpage{% + \tud@trim@field\@webpage{#2}% + \xdef\@webpage{% \begingroup% - \urlstyle{same}% - \hypersetup{#1}% - \url{#2}% + \noexpand\urlstyle{same}% + \unexpanded{\hypersetup{#1}}% + \noexpand\url{\expandonce\@webpage}% \endgroup% }% }% @@ -736,6 +760,11 @@ % geladen sein, so verwendet der Befehl die Schnittstelle von \pkg{datetime2}, % welches nur ein spezielles Datenformat als Eingabe akzeptiert. Wird keines % der beiden Pakete verwendet, wird das Argument direkt durchgereicht. +% \ToDo{^^A +% direkt auf datetime2 matchen? was, wenn beide Pakete geladen?^^A +% \cs{localedate} von \pkg{babel} gibt es auch noch... +% }[v2.07] +% \ToDo{Angabe eines leeren Datums ermöglichen: gh/55}[v2.07] % \begin{macrocode} \TUD@UnwindPackage{isodate}{% \@ifpackageloaded{datetime2}{% @@ -758,9 +787,10 @@ \ifx\today#2\relax% \gdef#1{#2}% \else% - \ifxblank{#2}% - {\gdef#1{}}% - {\gdef#1{\printdate{#2}}}% + \tud@trim@field#1{#2}% + \tud@if@strblank{#1}% + {}% + {\xdef#1{\noexpand\printdate{\expandonce#1}}}% \fi% } % \end{macrocode} @@ -865,12 +895,14 @@ % \begin{macrocode} \newcommand*\tud@date@print{% \ifx\@date\@empty\else% + \trim@spaces@in\@beforedate% \ifx\@beforedate\@empty\else% - \expandafter\trim@spaces@noexp\expandafter{\@beforedate}\nobreakspace% + \@beforedate\nobreakspace% \fi% \@date% + \trim@spaces@in\@afterdate% \ifx\@afterdate\@empty\else% - \nobreakspace\expandafter\trim@spaces@noexp\expandafter{\@afterdate}% + \nobreakspace\@afterdate% \fi% \fi% } @@ -897,9 +929,7 @@ % gespeichert. % \begin{macrocode} \newcommand*\@dateofbirth{} -\newrobustcmd*\dateofbirth[1]{% - \tud@printdate{\@dateofbirth}{#1}\ignorespaces% -} +\newrobustcmd*\dateofbirth[1]{\tud@printdate{\@dateofbirth}{#1}} % \end{macrocode} % \end{field}^^A \@dateofbirth % \end{macro}^^A \dateofbirth @@ -910,10 +940,7 @@ %<*package&supervisor|class&manual> % \fi % -% \subsection{% -% Felder für die Klasse \cls{tudscrposter}% -% und das Paket \pkg{tudscrsupervisor}% -% } +% \subsection{Felder für \cls{tudscrposter} und \pkg{tudscrsupervisor}} % % Die Klasse \cls{tudscrposter} und das Paket \pkg{tudscrsupervisor} stellen % einige weitere Felder bereit bzw. erweitern deren Funktionalitäten. @@ -924,21 +951,18 @@ % im Makro \cs{@chairman} gespeichert. % \begin{macrocode} \newcommand*\@chairman{} -\newcommand*\chairman[1]{\gdef\@chairman{#1}} +\newcommand*\chairman[1]{\tud@trim@field\@chairman{#1}} % \end{macrocode} % \end{field}^^A \@chairman % \end{macro}^^A \chairman % \begin{macro}{\grade} % \begin{field}{\@grade} -% \begin{field}{\@headline} % Die Befehle dienen zum Abspeichern der entsprechenden Parameter innerhalb % der neu definierten Umgebungen aus dem Paket \pkg{tudscrsupervisor}. % \begin{macrocode} \newcommand*\@grade{} -\newcommand*\grade[1]{\gdef\@grade{#1}} -\newcommand*\@headline{} +\newcommand*\grade[1]{\tud@trim@field\@grade{#1}} % \end{macrocode} -% \end{field}^^A \@headline % \end{field}^^A \@grade % \end{macro}^^A \grade % \begin{macro}{\issuedate} @@ -994,16 +1018,16 @@ % eine Telefonnummer und die E"~Mail-Adresse hinzugefügen. % \begin{macrocode} \newcommand*\@contactperson{} -\newcommand*\contactperson[1]{\gdef\@contactperson{#1}} +\newcommand*\contactperson[1]{\tud@trim@field\@contactperson{#1}} %<*poster> \let\supervisor\contactperson %</poster> \newcommand*\@office{} -\newrobustcmd*\office[1]{\gdef\@office{#1}} +\newrobustcmd*\office[1]{\tud@trim@field\@office{#1}} \newcommand*\@telephone{} -\newrobustcmd*\telephone[1]{\gdef\@telephone{#1}} +\newrobustcmd*\telephone[1]{\tud@trim@field\@telephone{#1}} \newcommand*\@telefax{} -\newrobustcmd*\telefax[1]{\gdef\@telefax{#1}} +\newrobustcmd*\telefax[1]{\tud@trim@field\@telefax{#1}} % \end{macrocode} % \end{field}^^A \@telefax % \end{macro}^^A \telefax @@ -1025,6 +1049,36 @@ % Einige Felder sind darauf ausgelegt, dass deren kommagetrennte Inhalte % einzeln abgearbeitet und ausgewertet werden können. Die folgenden Makros % übernehmen diese Aufgabe. +% +% \begin{macro}{\tud@if@field@unset} +% \changes{v2.06o}{2022/08/02}{neu}^^A +% Insbesondere das Autorenfeld (\cs{@author}) benötigt eine Sonderbehandlung, +% da dieses nicht leer sondern mit einer Warnung initialisiert ist. Mit diesem +% Makro kann darauf geprüft werden, ob innerhalb eines Feldes ein Befehl +% enthalten ist, welcher mit \cs{@latex@...} beginnt, was normalerweise für +% generische Fehler oder Warnungen genutzt wird. +% \begin{macrocode} +\newcommand*\tud@if@field@unset[1]{% + \begingroup% + \edef\tud@res@a{% + \def\noexpand\tud@res@a####1\string\@latex@####2\noexpand\@nil{% + \noexpand\IfArgIsEmpty{####2}% + \unexpanded{\@tud@res@swafalse\@tud@res@swatrue}% + }% + \noexpand\tud@res@a% + \expandafter\strip@prefix\meaning#1% + \string\@latex@\noexpand\@nil% + }% + \tud@res@a% + \if@tud@res@swa% + \aftergroup\@firstoftwo% + \else% + \aftergroup\@secondoftwo% + \fi% + \endgroup% +} +% \end{macrocode} +% \end{macro}^^A \tud@if@field@unset % \begin{macro}{\tud@multiple@split} % \begin{macro}{\tud@multiple@@split} % \begin{macro}{\tud@multiple@@@split} @@ -1037,8 +1091,8 @@ % ist dabei das Feld mit dem auszuwertenden Inhalt. % % Dafür müssen für jedes so auszuwertende Feld zum einen zum Zeitpunkt der -% Ausgabe das entsprechende Makro \cs{tud@split\meta{Feld}} und zum anderen -% eine Liste der auszuwertenden lokalen Angaben \cs{tud@split\meta{Feld}@list} +% Ausgabe das entsprechende Makro |\tud@split|\meta{Feld} und zum anderen +% eine Liste der auszuwertenden lokalen Angaben |\tud@split|\meta{Feld}|@list| % definiert sein. Momentan werden die beiden Felder \cs{@author} und~-- für die % Klasse \cls{tudscrposter} sowie das Paket Pakete \pkg{tudscrsupervisor}~-- % \cs{@contactperson} zur Angabe zusätzlicher Informationen unterstützt. @@ -1047,11 +1101,9 @@ \newcommand*\tud@multiple@split[1]{% % \end{macrocode} % Sollte ein Feld verwendet werden, welches initial eine Fehlermeldung enthält, -% so die vorhandene Warnung ausgegeben und danach das Feld als leer definiert. +% wird die vorhandene Warnung ausgegeben und danach das Feld als leer definiert. % \begin{macrocode} - \expandafter\ifpatchable\expandafter{\csname#1\endcsname}{% - \@latex@warning@no@line% - }{% + \expandafter\tud@if@field@unset\expandafter{\csname #1\endcsname}{% \csuse{#1}\csgdef{#1}{}% }{}% % \end{macrocode} @@ -1059,7 +1111,7 @@ % \cs{and} als Separator für die einzelnen Argumente dient. Mit den beiden % freigestellten Argumenten kann das Makro zur eigentlichen Ausgabe aufgerufen % werden, welches aus dem obligatorischen Argument |#1| konstruiert wird -% (\cs{tud@split\meta{Feld}}). An dieses wird der jeweils aktuelle Autor +% (|\tud@split|\meta{Feld}). An dieses wird der jeweils aktuelle Autor % im ersten Argument und die restlichen im zweiten Argument übergeben. % \begin{macrocode} \def\tud@multiple@@split##1\and##2\relax{% @@ -1073,7 +1125,7 @@ % Das Feld wird mit \cs{and} terminiert, um der Definition von % \cs{tud@multiple@@split} in jedem Fall zu entsprechen. % \begin{macrocode} - \edef\@tempa{\csname#1\endcsname\and}% + \edef\@tempa{\csname #1\endcsname\and}% \expandafter\endgroup% \expandafter\tud@multiple@@split\@tempa\relax% } @@ -1083,14 +1135,14 @@ % zweiten Argumentes ausgeführt und \cs{tud@multiple@@split} ein weiteres Mal % aufgerufen, um so sequentiell alle Autoren abzuarbeiten. Dafür muss % \cs{tud@multiple@@@split} innerhalb des verarbeitenden Makro -% (\cs{tud@split\meta{Feld}}) aufgerufen werden. +% (|\tud@split|\meta{Feld}) aufgerufen werden. % \begin{macrocode} \newcommand*\tud@multiple@@@split[2]{% - \ifx\relax#1\relax% + \IfArgIsEmpty{#1}{% \let\@tempb\relax% - \else% + }{% \def\@tempb{#2\tud@multiple@@split#1\relax}% - \fi% + }% \@tempb% } % \end{macrocode} @@ -1109,11 +1161,18 @@ % des zweiten Argumentes mit \cs{sbox}\cs{z@}\marg{\#2} in eine Box expandiert. % Der Teilinhalt entspricht dabei dem aktuellen Teil des Feldes vor dem % nächsten \cs{and}. Damit werden die ggf. angegebenen lokalen Felder gesetzt, -% welche in \cs{tud@split\meta{Feld}@list} aufgelistet sind ohne eine Ausgabe +% welche in |\tud@split|\meta{Feld}|@list| aufgelistet sind ohne eine Ausgabe % zu erzeugen. % \begin{macrocode} \newcommand*\tud@multiple@fields@store[2]{% - \def\@tempa##1{\ifcsdef{@##1}{\tud@cs@store{@##1}}{}}% + \def\@tempa##1{% + \ifcsdef{@##1}{\tud@cs@store{@##1}}{}% + \ifcsdef{##1}{% + \tud@cs@store{##1}% + \expandafter\xapptocmd\csname ##1\endcsname{\ignorespaces}% + {}{\tud@patch@wrn##1}% + }{}% + }% \letcs\@tempb{tud@split#1@list}% \let\and\relax% \expandafter\forcsvlist\expandafter\@tempa\expandafter{\@tempb}% @@ -1133,6 +1192,7 @@ \tud@cs@restore{@##1}% \global\csletcs{@##1}{@##1}% }{}% + \ifcsdef{##1}{\tud@cs@restore{##1}}{}% }% \letcs\@tempb{tud@split#1@list}% \let\and\relax% @@ -1144,21 +1204,21 @@ % \begin{macro}{\tud@multiple@fields@preset} % \changes{v2.04}{2015/05/12}{neu}^^A % Mit diesem Makro wird es möglich, die Inhalte bestimmter Felder aus einer -% definierten Liste \cs{tud@split\meta{Feld}@list} auf Standardwerte zu setzen. +% definierten Liste |\tud@split|\meta{Feld}|@list| auf Standardwerte zu setzen. % \begin{macrocode} \newcommand*\tud@multiple@fields@preset[3]{% \def\@tempa##1{% \edef\@tempc{\csuse{##1}}% - \ifstr{#2}{*}{% + \if\detokenize{#2*}\relax% \csdef{@##1}{}% - }{% + \else% \begingroup% \protected@expandtwoargs\in@{\@tempc}{\csuse{#1}}% \ifin@% \ifcsvoid{@##1}{\@tempc{#2}}{}% \fi% \endgroup% - }% + \fi% }% \letcs\@tempb{tud@split#1@list}% \let\and\relax% @@ -1177,7 +1237,7 @@ % \fi % % Auf der Titelseite sowie für die Aufgabenstellung (\pkg{tudscrsupervisor}) -% und den Seitenfuß von Postern (\cls{tudscrposter}) wird die Angabe einer +% und den Seitenfuß von Postern (\cls{tudscrposter}) wird die Angabe einer % kollaborativen Autorenschaft ermöglicht, wo für jeden einzelnen Autor weitere % Angaben (Matrikelnummer etc.) gemacht werden können. Hierfür werden die % folgenden Makros bereitgestellt. @@ -1194,8 +1254,8 @@ % Stellen umdefiniert. Dies betrifft den Titel, die Aufgabenstellung und den % Aushang in den Umgebungen \env{task} und \env{notice} sowie den Seitenfuß bei % Postern. Im Makro \cs{tud@split@author@list} werden alle Felder hinterlegt, -% die durch \cs{tud@multiple@fields@\dots} geprüft und ggf. initialisiert -% werden sollen. +% die durch die |\tud@multiple@fields@...|-Befehle geprüft und gegebenenfalls +% initialisiert werden sollen. % % Für die Angabe mehrerer Kontaktpersonen im Posterfuß (\cls{tudscrposter}) % oder auf einem Aushang (\pkg{tudscrsupervisor}) wird äquivalent verfahren. @@ -1241,6 +1301,6 @@ %</!manual> % \fi % -% \Finale +% \PrintBackMatter % \endinput |