% \iffalse meta-comment %/GitFileInfo=tudscr-fields.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-fields.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 % % % % \section{Anwenderbefehle für Eingabefelder} % % Das \TUDScript-Bundle für das \TUDCD definieren mehrere Felder, welche durch % den Anwender festgelegt werden können und dadurch auf der Titelseite bzw. auf % der Aufgabenstellung~-- falls das Paket \pkg{tudscrsupervisor} zum Einsatz % kommt~-- ausgegeben werden. Ein Großteil der definierten Felder wird unter % anderem für den Satz der Titelseite benötigt. % % Das Setzen einer speziellen Titelseite mit \LaTeX{} ist eines der häufigsten % anliegen. Dafür ist von Markus Kohm\footnote{Autor von \KOMAScript} das % \pkg{titlepage}-Paket entworfen worden. Um gleichzeitig konsistent zu diesem % Paket zu sein, werden für die entsprechenden Felder Alias-Befehle definiert. % % \iffalse %<*class&!manual> % \fi % % \begin{macro}{\getfield} % \changes{v2.06}{2018/08/20}{neu}^^A % Hiermit wird der Inhalt des im zweiten (obligatorischen) Argument namentlich % genannten Feldes in die im ersten (optionalen) Argument gegebene Anweisung % expandiert. % \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}% \ifcsdef{@@#2}{% \letcs\tud@res@a{@@#2}% }{% \ifcsdef{@#2}{% \letcs\tud@res@a{@#2}% }{% \let\tud@res@a\@empty% \ClassWarning{\TUD@Class@Name}{% The internal field `@#2' does not exist% }% }% }% \edef\tud@res@a{% \endgroup% \expandonce\tud@res@b{\expandonce\tud@res@a}% }% \tud@res@a% } % \end{macrocode} % \end{macro}^^A \getfield % % \subsection{Textfelder für die \TUDScript-Klassen} % % Von den Klassen benötigte Formularfelder werden definiert. Für das Setzen von % Feldern werden mit dem Makro \cs{trim@spaces} aus dem Paket \pkg{trimspaces} % bei einem übergebenen Argument führende und angehängte Leerzeichen beseitigt. % \begin{macro}{\faculty} % \begin{field}{\@faculty} % \begin{field}{\@facultyfoot} % \changes{v2.05}{2015/07/06}{neu}^^A % \begin{macro}{\department} % \begin{field}{\@department} % \begin{field}{\@departmentfoot} % \changes{v2.05}{2015/07/06}{neu}^^A % \begin{macro}{\institute} % \begin{field}{\@institute} % \begin{field}{\@institutefoot} % \changes{v2.05}{2015/07/06}{neu}^^A % \begin{macro}{\chair} % \begin{field}{\@chair} % \begin{field}{\@chairfoot} % \changes{v2.05}{2015/07/06}{neu}^^A % Für die für die TUD-Kopfzeile kann mit \cs{faculty}\marg{Fakultät} die % Fakultät angegeben werden, welche im Makro \cs{@faculty} gespeichert wird. % Das gilt ebenso für die Angabe von Einrichtung, Institut und Lehrstuhls bzw. % Professur. Dies erfolgt mit den Makros \cs{department}\marg{Fachrichtung}, % \cs{institute}\marg{Institut} sowie \cs{chair}\marg{Lehrstuhl}, welche in % \cs{@department}, \cs{@institute} und \cs{@chair} gespeichert werden. % % Das optionale Argument wird zur Kompatibilität zur Klasse \cls{tudscrposter} % 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. % \begin{macrocode} \newcommand*\@faculty{} \newcommand*\@department{} \newcommand*\@institute{} \newcommand*\@chair{} %<*poster> \newcommand*\@facultyfoot{} \newcommand*\@departmentfoot{} \newcommand*\@institutefoot{} \newcommand*\@chairfoot{} % \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 % \end{macro}^^A \chair % \end{field}^^A \@institutefoot % \end{field}^^A \@institute % \end{macro}^^A \institute % \end{field}^^A \@departmentfoot % \end{field}^^A \@department % \end{macro}^^A \department % \end{field}^^A \@facultyfoot % \end{field}^^A \@faculty % \end{macro}^^A \faculty % \begin{macro}{\extraheadline} % \begin{field}{\@extraheadline} % Für die Angabe weiteren, freien Textzeile im Kopf. Dies ist laut \CD nur in % besonderen Ausnahmefällen gestattet. % \begin{macrocode} \newcommand*\@extraheadline{} \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 % \begin{macro}{\tud@foot@line@write} % \changes{v2.05}{2015/07/06}{neu}^^A % 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 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. % Wird eines der zuvor genannten Makros lediglich mit einem obligatorischen % Argument verwendet, so enthalten Kopf und Fuß den gleichen Eintrag. Wird % 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> \expandafter\tud@trim@field\csname @#1foot\endcsname{#2}% % \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% } % % \end{macrocode} % \end{macro}^^A \tud@foot@line@write % \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} % \changes{v2.02}{2014/11/06}{\cs{protected@xdef} genutzt}^^A % Für die spätere Verwendung im Dokument des Titels~-- beispielsweise für die % Aufgabenstellung oder die Selbstständigkeitserklärung~-- wird das Feld % \cs{@@title} definiert. In diesem wird der mit \cs{title} gesicherte Eintrag % ohne die etwaigen Fußnoten gespeichert. % \begin{macrocode} \newcommand*\@@title{} \robustify\@title \renewcommand*\title[1]{% \tud@trim@field\@title{#1}% \begingroup% \let\thanks\@gobble% \let\footnote\@gobble% \def\newline{\space\ignorespaces}% \def\\{\space\ignorespaces}% \protected@xdef\@@title{\trim@spaces{#1}}% \endgroup% } % \end{macrocode} % \end{field}^^A \@@title % \end{field}^^A \@title % \end{macro}^^A \title % \begin{macro}{\author} % \begin{field}{\@author} % \begin{field}{\@@author} % \begin{macro}{\authormore} % \begin{field}{\@authormore} % 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]{% \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 % temporär unschädlich gemacht. % \begin{macrocode} \begingroup% \let\thanks\@gobble% \let\footnote\@gobble% \def\newline{\space\ignorespaces}% \def\\{\space\ignorespaces}% % \end{macrocode} % Die Makros aus \cs{tud@split@author@list} werden zu \cs{@tempc} gesetzt, um % diese nach der Expansion weiter zu behandeln. % \begin{macrocode} \let\@tempc\relax% \def\@tempa##1{\csedef{##1}####1{\@tempc}}% \let\@tempb\tud@split@author@list% \ifx\and\relax\else% \robustify\and% \fi% \expandafter\forcsvlist\expandafter\@tempa\expandafter{\@tempb}% % \end{macrocode} % Da die Befehle für Zusatzinformationen unter Umständen ungewollte Leerzeichen % im Feld \cs{@@author} hinterlassen, werden diese entfernt. % \begin{macrocode} \def\@tempa##1##2{% \def\@tempb####1##2####2\@nil{% \IfArgIsEmpty{####2}{% \def##1{####1}% }{% \@tempb####1####2\@nil% }% }% \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}% \@tempa{\@@author}{\@tempc}% \xdef\@@author{\expandonce\@@author}% \endgroup% } \newcommand*\@authormore{} \newrobustcmd*\authormore[1]{\tud@trim@field\@authormore{#1}} % \end{macrocode} % \end{field}^^A \@authormore % \end{macro}^^A \authormore % \end{field}^^A \@@author % \end{field}^^A \@author % \end{macro}^^A \author % \begin{macro}{\emailaddress} % \changes{v2.02}{2014/05/16}{neu, Umbenennung des Makros \cs{email}}^^A % \begin{field}{\@emailaddress} % \changes{v2.02}{2014/05/16}{neu, Umbenennung des Makros \cs{@email}}^^A % \begin{macro}{\tud@emailaddress@simple} % \changes{v2.05}{2016/07/09}{neu}^^A % \begin{macro}{\tud@emailaddress@hyper} % \changes{v2.05}{2016/07/09}{neu}^^A % \begin{macrocode} \newcommand*\@emailaddress{} \newrobustcmd*\emailaddress[2][]{% \kernel@ifstar% {\tud@emailaddress@simple{#2}}% {\tud@emailaddress@hyper[{#1}]{#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]{% \tud@trim@field\@emailaddress{#2}% \xdef\@emailaddress{% \begingroup% \noexpand\urlstyle{same}% \unexpanded{\hypersetup{#1}}% \noexpand\href% {mailto:\expandonce\@emailaddress}% {\noexpand\nolinkurl{\expandonce\@emailaddress}}% \endgroup% }% }% } % \end{macrocode} % \end{macro}^^A \tud@emailaddress@hyper % \end{macro}^^A \tud@emailaddress@simple % \end{field}^^A \@emailaddress % \end{macro}^^A \emailaddress % \begin{macro}{\course} % \begin{field}{\@course} % Studiengang für den Titel sowie den Kopf der Aufgabenstellung, wird im Makro % \cs{@course} gespeichert. % \begin{macrocode} \newcommand*\@course{} \newrobustcmd*\course[1]{\tud@trim@field\@course{#1}} % \end{macrocode} % \end{field}^^A \@course % \end{macro}^^A \course % \begin{macro}{\discipline} % \changes{v2.02}{2014/05/16}{neu, von \cs{branch} umbenannt}^^A % \begin{field}{\@discipline} % \changes{v2.02}{2014/05/16}{neu, von \cs{@branch} umbenannt}^^A % Studienrichtung bzw. Fachrichtung für Titel und Kopf der Aufgabenstellung, % wird im Makro \cs{@discipline} gespeichert. % \begin{macrocode} \newcommand*\@discipline{} \newrobustcmd*\discipline[1]{\tud@trim@field\@discipline{#1}} % \end{macrocode} % \end{field}^^A \@discipline % \end{macro}^^A \discipline % % \iffalse %<*book|report|article> % \fi % % \begin{macro}{\matriculationnumber} % \begin{field}{\@matriculationnumber} % Die Matrikelnummer für Titelseite und Aufgabenstellung, wird in % \cs{@matriculationid} gespeichert. % \begin{macrocode} \newcommand*\@matriculationnumber{} \newrobustcmd*\matriculationnumber[1]{\tud@trim@field\@matriculationnumber{#1}} % \end{macrocode} % \end{field}^^A \@matriculationnumber % \end{macro}^^A \matriculationnumber % \begin{macro}{\matriculationyear} % \begin{field}{\@matriculationyear} % Das Immatrikulationsjahr für den Titel wird in \cs{@matriculationyear} % gespeichert. % \begin{macrocode} \newcommand*\@matriculationyear{} \newrobustcmd*\matriculationyear[1]{\tud@trim@field\@matriculationyear{#1}} % \end{macrocode} % \end{field}^^A \@matriculationyear % \end{macro}^^A \matriculationyear % \begin{macro}{\placeofbirth} % \begin{field}{\@placeofbirth} % Der Geburtsort für den Titel wird in \cs{@placeofbirth} gespeichert. % \begin{macrocode} \newcommand*\@placeofbirth{} \newrobustcmd*\placeofbirth[1]{\tud@trim@field\@placeofbirth{#1}} % \end{macrocode} % \end{field}^^A \@placeofbirth % \end{macro}^^A \placeofbirth % \begin{macro}{\thesis} % \begin{field}{\@thesis} % \changes{v2.02}{2014/11/06}{\cs{protected@xdef} genutzt}^^A % \begin{field}{\@@thesis} % \changes{v2.02}{2014/11/06}{\cs{protected@xdef} genutzt}^^A % \begin{macro}{\subject} % \begin{field}{\@subject} % \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@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@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} % 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} \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% \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% \ifx\FamilyKeyState\FamilyKeyStateProcessed% \noexpand\csgdef{@#1}{\expandonce\tud@res@a}% \fi% }% \tud@res@a% } % \end{macrocode} % \end{macro}^^A \tud@thesis@evaluate % \end{field}^^A \@@subject % \end{field}^^A \@subject % \end{macro}^^A \subject % \end{field}^^A \@@thesis % \end{field}^^A \@thesis % \end{macro}^^A \thesis % \begin{macro}{\graduation} % \changes{v2.02}{2014/05/16}{neu, von \cs{degree} umbenannt}^^A % \begin{field}{\@graduation} % \changes{v2.02}{2014/05/16}{neu, von \cs{@degree} umbenannt}^^A % \begin{field}{\@graduationabbreviation} % \changes{v2.02}{2014/05/16}{neu, \cs{@degreeabbr} umbenannt}^^A % Der angestrebte Abschluss bzw. der zu erwerbende akademische Grad, welcher % auf der Titelseite ausgegeben werden soll, wird im Makro \cs{@graduation} % gespeichert. Zusätzlich kann als optionales Argument die Kurzform des % akademischen Grades angegeben werden, wird in \cs{@graduationabbr} % gespeichert. % \begin{macrocode} \newcommand*\@graduation{} \newcommand*\@graduationabbreviation{} \newcommand*\graduation[2][]{% \tud@trim@field\@graduationabbreviation{#1}% \tud@trim@field\@graduation{#2}% } % \end{macrocode} % \end{field}^^A \@graduationabbreviation % \end{field}^^A \@graduation % \end{macro}^^A \graduation % % \iffalse % % \fi % % \begin{macro}{\professor} % \begin{field}{\@professor} % \begin{field}{\@professorfoot} % \changes{v2.05}{2015/07/06}{neu}^^A % Angabe des verantwortlichen Hochschullehrers für Titel und Aufgabenstellung, % wird im Makro \cs{@professor} gespeichert. % \begin{macrocode} %<*book|report|article> \newcommand*\@professor{} \newcommand*\professor[1]{\tud@trim@field\@professor{#1}} % %<*poster> \newcommand*\@professorfoot{} \newcommand*\professor[1]{\tud@trim@field\@professorfoot{#1}} % % \end{macrocode} % \end{field}^^A \@professorfoot % \end{field}^^A \@professor % \end{macro}^^A \professor % \begin{macro}{\supervisor} % \changes{v2.02}{2014/05/16}{erzeugter Eintrag der Betreuer mit % \cs{supervisor} für Selbstständigkeitserklärung verworfen}^^A % \begin{field}{\@supervisor} % (Erst- und Zweit"~)Betreuer bei Abschlussarbeiten, wird in \cs{@supervisor} % gespeichert. Mehrere Betreuer werden durch \cs{and} getrennt. Für Poster kann % der Befehl als Äquivalent zu \cs{contactperson} genutzt werden. % \begin{macrocode} %<*book|report|article> \newcommand*\@supervisor{} \newcommand*\supervisor[1]{\tud@trim@field\@supervisor{#1}} % %<*poster> \newcommand*\supervisor[1]{} % % \end{macrocode} % \end{field}^^A \@supervisor % \end{macro}^^A \supervisor % % \iffalse %<*book|report|article> % \fi % % \begin{macro}{\supporter} % \changes{v2.02}{2014/05/16}{erzeugter Eintrag der Betreuer mit % \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]{\tud@trim@field\@supporter{#1}} % \end{macrocode} % \end{field}^^A \@supporter % \end{macro}^^A \supporter % \begin{macro}{\company} % \begin{field}{\@company} % Angabe einer externen Firma, wird im Makro \cs{@company} gespeichert. % \begin{macrocode} \newcommand*\@company{} \newcommand*\company[1]{\tud@trim@field\@company{#1}} % \end{macrocode} % \end{field}^^A \@company % \end{macro}^^A \company % \begin{macro}{\referee} % \begin{field}{\@referee} % Gutachter bei einer Dissertation, werden im Makro \cs{@referee} gespeichert. % Mehrere Gutachter werden durch \cs{and} getrennt. % \begin{macrocode} \newcommand*\@referee{} \newcommand*\referee[1]{\tud@trim@field\@referee{#1}} % \end{macrocode} % \end{field}^^A \@referee % \end{macro}^^A \referee % \begin{macro}{\advisor} % \begin{field}{\@advisor} % Fachreferenten bei einer Dissertation, werden im Makro \cs{@advisor} % gespeichert. Mehrere Fachreferenten werden durch \cs{and} getrennt. % \begin{macrocode} \newcommand*\@advisor{} \newcommand*\advisor[1]{\tud@trim@field\@advisor{#1}} % \end{macrocode} % \end{field}^^A \@advisor % \end{macro}^^A \advisor % \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} \tud@newglue\tud@glue@signaturevskip \tud@setglue\tud@glue@signaturevskip{8ex plus 6ex minus 6ex} % \end{macrocode} % \end{length}^^A \tud@glue@signaturevskip % \begin{macro}{\confirmationclosing} % \begin{field}{\@confirmationclosing} % Als Abschluss der Selbstständigkeitserklärung für Ort und Unterschrift. % \begin{macrocode} \newcommand*\@confirmationclosing{% \tud@date@check% \ifx\@date\@empty\else% \medskip\noindent% \ifx\@place\@empty\else\@place,\nobreakspace\fi\@date% \fi% \vskip\tud@glue@signaturevskip\noindent% \begingroup% \let\and\hfil% \@@author\hfil% \endgroup% } \newcommand*\confirmationclosing[1]{\tud@trim@field\@confirmationclosing{#1}} % \end{macrocode} % \end{field}^^A \@confirmationclosing % \end{macro}^^A \confirmationclosing % \begin{macro}{\place} % \begin{field}{\@place} % Die Angabe des Ortes mit \cs{place} für die Selbstständigkeitserklärung und % ggf. das Datum wird im Makro \cs{@place} gespeichert und standardmäßig mit % \enquote{Dresden} gesetzt. % \begin{macrocode} \newcommand*\@place{Dresden} \newcommand*\place[1]{\tud@trim@field\@place{#1}} % \end{macrocode} % \end{field}^^A \@place % \end{macro}^^A \place % % \iffalse % % \fi % % \begin{macro}{\subtitle} % \begin{macro}{\@subtitle} % \begin{macro}{\publishers} % \begin{macro}{\@publishers} % \begin{macro}{\publisher} % 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> % \fi % % \begin{macro}{\webpage} % \changes{v2.05}{2015/07/06}{neu}^^A % \begin{field}{\@webpage} % \changes{v2.05}{2015/07/06}{neu}^^A % \begin{macro}{\tud@webpage@simple} % \changes{v2.05}{2016/07/09}{neu}^^A % \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[2][]{% \kernel@ifstar% {\tud@webpage@simple{#2}}% {\tud@webpage@hyper[{#1}]{#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]{% \tud@trim@field\@webpage{#2}% \xdef\@webpage{% \begingroup% \noexpand\urlstyle{same}% \unexpanded{\hypersetup{#1}}% \noexpand\url{\expandonce\@webpage}% \endgroup% }% }% } % \end{macrocode} % \end{macro}^^A \tud@webpage@hyper % \end{macro}^^A \tud@webpage@simple % \end{field}^^A \@webpage % \end{macro}^^A \webpage % % \iffalse % % \fi % % \subsection{Datumsfelder für die \TUDScript-Klassen} % % \begin{macro}{\printdate} % Im Folgenden werden mehrere Datumsfelder definiert. Damit diese optional % durch eines der Pakete \pkg{isodate} oder \pkg{datetime2} formatiert werden % können, wird der zu \pkg{isodate} gehörende Befehl \cs{printdate} in die % Definition der eigentlichen Datumsfelder integriert. Sollte das Paket nicht % 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}{% \providecommand*\printdate[1]{\DTMDate{#1}}% }{% \providecommand*\printdate[1]{#1}% }% } % \end{macrocode} % \end{macro}^^A \printdate % \begin{macro}{\tud@printdate} % Damit die Datumsfelder definiert werden können und eines der Datumspakete % unterstützen, muss beim Festlegen der Datumsfelder einiges beachtet werden. % So müssen beispielsweise leere Argumente und Sonderfälle separat betrachtet % werden. Damit dies einheitlich für alle Felder geschehen kann, wird dieser % Befehl genutzt. Dabei wird als erstes Argument der Befehlsname für das % Datumsfeld übergeben, als zweites Argument der gewünschte Inhalt. % \begin{macrocode} \newcommand*\tud@printdate[2]{% \ifx\today#2\relax% \gdef#1{#2}% \else% \tud@trim@field#1{#2}% \tud@if@strblank{#1}% {}% {\xdef#1{\noexpand\printdate{\expandonce#1}}}% \fi% } % \end{macrocode} % \end{macro}^^A \tud@printdate % \begin{macro}{\tud@date@check} % \changes{v2.04}{2015/05/06}{neu}^^A % Das Makro prüft vor der Nutzung des Datumfeldes \cs{@date}, ob selbiges % explizit angegeben wurde. Falls dies nicht der Fall ist, wird eine Warnung % ausgegeben. % \begin{macrocode} \newcommand*\tud@date@check{% \ifdefvoid{\@duedate}{% \ClassWarning{\TUD@Class@Name}{% `\string\date' was not given\MessageBreak% Since a thesis is a self-contained work, an end\MessageBreak% date should be specified by the author. \MessageBreak% Nevertheless, today's date is used% }% }{% \ClassWarning{\TUD@Class@Name}{% `\string\date' was not given\MessageBreak% It's substituted by the given due date% }% \global\let\@date\@duedate% }% \global\let\tud@date@check\relax% } % \end{macrocode} % \end{macro}^^A \tud@date@check % \begin{macro}{\date} % \begin{parameter}{before} % \changes{v2.05}{2016/05/27}{neu}^^A % \begin{parameter}{after} % \changes{v2.05}{2016/05/27}{neu}^^A % \begin{parameter}{prefix} % \changes{v2.05}{2016/05/27}{neu}^^A % \begin{parameter}{suffix} % \changes{v2.05}{2016/05/27}{neu}^^A % \begin{parameter}{pre} % \changes{v2.05}{2016/05/27}{neu}^^A % \begin{parameter}{app} % \changes{v2.05}{2016/05/27}{neu}^^A % \begin{parameter}{place} % \changes{v2.05}{2016/05/27}{neu}^^A % \begin{macro}{\tud@date@set} % \changes{v2.05}{2016/05/27}{neu}^^A % \changes{v2.06}{2018/08/08}{optionales Argument nutzt \cs{tud@toks@}}^^A % \begin{field}{\@date} % \begin{field}{\@beforedate} % \changes{v2.05}{2016/05/27}{neu}^^A % \begin{field}{\@afterdate} % \changes{v2.05}{2016/05/27}{neu}^^A % Das Abgabedatum der Arbeit für den Titel, wird im originalen Makro \cs{@date} % gespeichert. Zusätzlich kann über die Parameter im optionalen Argument eine % Ergänzung davorgesetzt angehängt werden~-- beispielsweise als Erklärung für % eine verspätete Abgabe aufgrund einer Verlängerung der Bearbeitungszeit~-- % welche in den Feldern \cs{@beforedate} und \cs{@afterdate} gespeichert % wird. Hierfür wird der originale Befehl für das Datum \cs{date} erweitert, % wobei die Sternversion \cs{date*} den angegebenen Ort als Präfix verwendet. % \begin{macrocode} \renewcommand*\date{% \kernel@ifstar{% \TUD@parameter@set{date}{pre=\noexpand\@place{,}}% \tud@date@set% }{\tud@date@set}% } \newcommand*\tud@date@set[2][]{% \tud@toks@{#1}% \TUD@parameter@set{date}{\the\tud@toks@}% \tud@printdate{\@date}{#2}% \global\let\tud@date@check\relax% } \newcommand*\@beforedate{} \newcommand*\@afterdate{} \TUD@parameter@family{date}{% \TUD@parameter@def{before}{\def\@beforedate{#1}}% \TUD@parameter@let{pre}{before}% \TUD@parameter@let{prefix}{before}% \TUD@parameter@def{after}{\def\@afterdate{#1}}% \TUD@parameter@let{app}{after}% \TUD@parameter@let{suffix}{after}% \TUD@parameter@def{place}{\def\@place{#1}\def\@beforedate{#1,}}% \TUD@parameter@handler@value{after}% } % \end{macrocode} % \end{field}^^A \@afterdate % \end{field}^^A \@beforedate % \end{field}^^A \@date % \end{macro}^^A \tud@date@set % \end{parameter}^^A place % \end{parameter}^^A app % \end{parameter}^^A pre % \end{parameter}^^A suffix % \end{parameter}^^A prefix % \end{parameter}^^A after % \end{parameter}^^A before % \end{macro}^^A \date % \begin{macro}{\tud@date@print} % \changes{v2.05}{2016/05/27}{neu}^^A % Mit diesem Makro erfolgt die eigentliche Ausgabe des Datums und ggf. der % optionalen Ergänzungen. % \begin{macrocode} \newcommand*\tud@date@print{% \ifx\@date\@empty\else% \trim@spaces@in\@beforedate% \ifx\@beforedate\@empty\else% \@beforedate\nobreakspace% \fi% \@date% \trim@spaces@in\@afterdate% \ifx\@afterdate\@empty\else% \nobreakspace\@afterdate% \fi% \fi% } % \end{macrocode} % \end{macro}^^A \tud@date@print % % \iffalse %<*book|report|article> % \fi % % \begin{macro}{\defensedate} % \begin{field}{\@defensedate} % Das Verteidigungsdatum erscheint auf dem Titel und wird in \cs{@defensedate} % gespeichert. % \begin{macrocode} \newcommand*\@defensedate{} \newcommand*\defensedate[1]{\tud@printdate{\@defensedate}{#1}} % \end{macrocode} % \end{field}^^A \@defensedate % \end{macro}^^A \defensedate % \begin{macro}{\dateofbirth} % \begin{field}{\@dateofbirth} % Angabe des Geburtstages für die Titelseite, wird im Makro \cs{@dateofbirth} % gespeichert. % \begin{macrocode} \newcommand*\@dateofbirth{} \newrobustcmd*\dateofbirth[1]{\tud@printdate{\@dateofbirth}{#1}} % \end{macrocode} % \end{field}^^A \@dateofbirth % \end{macro}^^A \dateofbirth % % \iffalse % % %<*package&supervisor|class&manual> % \fi % % \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. % % \begin{macro}{\chairman} % \begin{field}{\@chairman} % Die Angabe des Prüfungsausschussvorsitzenden für die Aufgabenstellung, wird % im Makro \cs{@chairman} gespeichert. % \begin{macrocode} \newcommand*\@chairman{} \newcommand*\chairman[1]{\tud@trim@field\@chairman{#1}} % \end{macrocode} % \end{field}^^A \@chairman % \end{macro}^^A \chairman % \begin{macro}{\grade} % \begin{field}{\@grade} % 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]{\tud@trim@field\@grade{#1}} % \end{macrocode} % \end{field}^^A \@grade % \end{macro}^^A \grade % \begin{macro}{\issuedate} % \begin{field}{\@issuedate} % Angabe des Anfangsdatums für die Aufgabenstellung, wird im Makro % \cs{@issuedate} gespeichert. % \begin{macrocode} \newcommand*\@issuedate{} \newcommand*\issuedate[1]{\tud@printdate{\@issuedate}{#1}} % \end{macrocode} % \end{field}^^A \@issuedate % \end{macro}^^A \issuedate % \begin{macro}{\duedate} % \begin{field}{\@duedate} % Angabe des geplanten Abgabedatums für die Aufgabenstellung, wird im Makro % \cs{@duedate} gespeichert. % \begin{macrocode} \newcommand*\@duedate{} \newcommand*\duedate[1]{\tud@printdate{\@duedate}{#1}} % \end{macrocode} % \end{field}^^A \@duedate % \end{macro}^^A \duedate % % \iffalse % %<*class&poster|package&supervisor|class&manual> % \fi % % Einige Befehle werden nur definiert, falls das Paket nicht mit der Klasse % \cls{tudscrposter} verwendet wird -- was allerdings nicht sinnvoll ist. % \begin{macrocode} %<*supervisor> \@ifclassloaded{tudscrposter}{\@tempswafalse}{\@tempswatrue} \if@tempswa % % \end{macrocode} % \begin{macro}{\contactperson} % \changes{v2.02}{2014/05/16}{neu, Makro \cs{contact} umbenannt}^^A % \begin{field}{\@contactperson} % \changes{v2.02}{2014/05/16}{neu, Makro \cs{@contact} umbenannt}^^A % \begin{macro}{\office} % \begin{field}{\@office} % \begin{macro}{\telephone} % \changes{v2.02}{2014/05/16}{neu, Umbenennung des Makros \cs{phone}}^^A % \begin{field}{\@telephone} % \changes{v2.02}{2014/05/16}{neu, Umbenennung des Makros \cs{@phone}}^^A % \begin{macro}{\telefax} % \changes{v2.05}{2016/04/05}{neu}^^A % \begin{field}{\@telefax} % \changes{v2.05}{2016/04/05}{neu}^^A % Für einen Aushang bzw. ein Poster kann eine oder mehrere Kontaktpersonen % angegeben werden. Zusätzlich lassen sich für jede einzelne Person ein Raum, % eine Telefonnummer und die E"~Mail-Adresse hinzugefügen. % \begin{macrocode} \newcommand*\@contactperson{} \newcommand*\contactperson[1]{\tud@trim@field\@contactperson{#1}} %<*poster> \let\supervisor\contactperson % \newcommand*\@office{} \newrobustcmd*\office[1]{\tud@trim@field\@office{#1}} \newcommand*\@telephone{} \newrobustcmd*\telephone[1]{\tud@trim@field\@telephone{#1}} \newcommand*\@telefax{} \newrobustcmd*\telefax[1]{\tud@trim@field\@telefax{#1}} % \end{macrocode} % \end{field}^^A \@telefax % \end{macro}^^A \telefax % \end{field}^^A \@telephone % \end{macro}^^A \telephone % \end{field}^^A \@office % \end{macro}^^A \office % \end{field}^^A \@contactperson % \end{macro}^^A \contactperson % % \iffalse % %<*!manual> %<*class> % \fi % % \subsection{Verarbeitung bestimmter Feldinhalte für die Ausgabe} % % 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} % Für Felder, die mehrere Personen~-- getrennt durch \cs{and}~-- beinhalten % können und für die zusätzliche Angaben durch die Verwendung weiterer Makros % innerhalb des Feldbefehlargumentes möglich sind, werden diese Befehle zum % Aufteilen der Angaben bereitgestellt. Mit diesen wird es möglich, die durch % \cs{and} getrennten Teile separat auszuwerten. Für diese Unterfangen wird der % Befehl \cs{tud@multiple@@split} definiert. Dessen obligatorisches Argument % 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 |\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. % \begin{macrocode} \newcommand*\tud@multiple@@split{} \newcommand*\tud@multiple@split[1]{% % \end{macrocode} % Sollte ein Feld verwendet werden, welches initial eine Fehlermeldung enthält, % wird die vorhandene Warnung ausgegeben und danach das Feld als leer definiert. % \begin{macrocode} \expandafter\tud@if@field@unset\expandafter{\csname #1\endcsname}{% \csuse{#1}\csgdef{#1}{}% }{}% % \end{macrocode} % Das Makro \cs{tud@multiple@@split} wird so definiert, dass der Befehl % \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 % (|\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{% \expandafter\csname tud@split#1@do\endcsname{##1}{##2}% }% \begingroup% \let\and\relax% \let\newline\@empty% \let\\\@empty% % \end{macrocode} % 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}% \expandafter\endgroup% \expandafter\tud@multiple@@split\@tempa\relax% } % \end{macrocode} % Der Befehl \cs{tud@multiple@@@split} prüft zum Schluss, ob noch weitere % Autoren angegeben sind. Sollte dies der Fall sein, so wird der Inhalt des % 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 % (|\tud@split|\meta{Feld}) aufgerufen werden. % \begin{macrocode} \newcommand*\tud@multiple@@@split[2]{% \IfArgIsEmpty{#1}{% \let\@tempb\relax% }{% \def\@tempb{#2\tud@multiple@@split#1\relax}% }% \@tempb% } % \end{macrocode} % \end{macro}^^A \tud@multiple@@@split % \end{macro}^^A \tud@multiple@@split % \end{macro}^^A \tud@multiple@split % \begin{macro}{\tud@multiple@fields@store} % \changes{v2.04}{2015/05/12}{neu}^^A % \begin{macro}{\tud@multiple@fields@restore} % \changes{v2.04}{2015/05/12}{neu}^^A % Mit \cs{tud@multiple@fields@store} und \cs{tud@multiple@fields@restore} % werden Hilfsmakros definiert, um einzelne Feldinhalte lokal ändern und nach % der Verarbeitung auf den ursprünglichen Wert zurücksetzen zu können. % % Nach der Sicherung der globalen Feldinhalte wird der übergebene Teilinhalt % 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 |\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}}{}% \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}% \begingroup% \let\thanks\@gobble% \let\footnote\@gobble% \sbox\z@{#2}% \endgroup% } % \end{macrocode} % Nach dem Verarbeiten und der Ausgabe der lokalen Felder werden die zuvor % bestehenden Feldwerte zurückgesetzt. % \begin{macrocode} \newcommand*\tud@multiple@fields@restore[1]{% \def\@tempa##1{% \ifcsdef{@##1}{% \tud@cs@restore{@##1}% \global\csletcs{@##1}{@##1}% }{}% \ifcsdef{##1}{\tud@cs@restore{##1}}{}% }% \letcs\@tempb{tud@split#1@list}% \let\and\relax% \expandafter\forcsvlist\expandafter\@tempa\expandafter{\@tempb}% } % \end{macrocode} % \end{macro}^^A \tud@multiple@fields@restore % \end{macro}^^A \tud@multiple@fields@store % \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 |\tud@split|\meta{Feld}|@list| auf Standardwerte zu setzen. % \begin{macrocode} \newcommand*\tud@multiple@fields@preset[3]{% \def\@tempa##1{% \edef\@tempc{\csuse{##1}}% \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% \expandafter\forcsvlist\expandafter\@tempa\expandafter{\@tempb}% \begingroup% \let\thanks\@gobble% \let\footnote\@gobble% \sbox\z@{#3}% \endgroup% } % \end{macrocode} % \end{macro}^^A \tud@multiple@fields@preset % % \iffalse % % \fi % % Auf der Titelseite sowie für die Aufgabenstellung (\pkg{tudscrsupervisor}) % 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. % \begin{macro}{\tud@split@author@do} % \changes{v2.02}{2014/07/25}{neu, aus Umbenennung \cs{tud@split@@author}}^^A % \begin{macro}{\tud@split@author@list} % \changes{v2.02}{2014/07/25}{neu, Umbenennung \cs{tud@split@@author@list}}^^A % \begin{macro}{\tud@split@contactperson@do} % \changes{v2.05}{2015/07/06}{neu}^^A % \begin{macro}{\tud@split@contactperson@list} % \changes{v2.05}{2015/07/06}{neu}^^A % Die beiden Makros \cs{tud@split@author@do} und \cs{tud@split@contactperson@do} % werden zunächst jeweils als Dummy initialisiert und an den entsprechenden % 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 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. % \begin{macrocode} %<*class> \newcommand*\tud@split@author@do[2]{} %<*book|report|article> \newcommand*\tud@split@author@list{% authormore,course,discipline,emailaddress,% matriculationyear,enrolmentyear,% matriculationnumber,studentid,matriculationid,% placeofbirth,birthplace,dateofbirth,birthday,% } % % \end{macrocode} % Der Befehl \cs{tud@split@author@list} für die Klasse \cls{tudscrposter}. % \begin{macrocode} %<*poster> \newcommand*\tud@split@author@list{% authormore,course,discipline,emailaddress,office,telephone,telefax% } % % %<*class&poster|package&supervisor> \newcommand*\tud@split@contactperson@do[2]{} \newcommand*\tud@split@contactperson@list{emailaddress,office,telephone,telefax} % % \end{macrocode} % Damit ist der Teil für das Paket \pkg{tudscrsupervisor} abgeschlossen, wo % bei der Verwendung von \cls{tudscrposter} die vorhergenden Befehle nicht % definiert werden, beendet. % \begin{macrocode} %<*package&supervisor> \fi % % \end{macrocode} % \end{macro}^^A \tud@split@contactperson@list % \end{macro}^^A \tud@split@contactperson@do % \end{macro}^^A \tud@split@author@list % \end{macro}^^A \tud@split@author@do % % \iffalse % % \fi % % \PrintBackMatter % \endinput