From 6b200dd5c2335baa8c78037d8f1c75d1295187f4 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 30 Jul 2016 23:12:46 +0000 Subject: tudscr (26jul16) git-svn-id: svn://tug.org/texlive/trunk@41776 c570f23f-e606-0410-a88d-b1316a301751 --- .../source/latex/tudscr/tudscr-fields.dtx | 1083 ++++++++++++-------- 1 file changed, 650 insertions(+), 433 deletions(-) (limited to 'Master/texmf-dist/source/latex/tudscr/tudscr-fields.dtx') diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-fields.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-fields.dtx index c0fb3c05490..fbd211859ad 100644 --- a/Master/texmf-dist/source/latex/tudscr/tudscr-fields.dtx +++ b/Master/texmf-dist/source/latex/tudscr/tudscr-fields.dtx @@ -1,4 +1,4 @@ -% \CheckSum{647} +% \CheckSum{835} % \iffalse meta-comment % % ============================================================================ @@ -18,13 +18,13 @@ % % ---------------------------------------------------------------------------- % -% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz -% in der Version 1.3c, verteilt und/oder veraendert werden. Die aktuelle -% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und -% Version 1.3c oder spaeter ist Teil aller Verteilungen von LaTeX 2005/12/01 -% oder spaeter und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status -% "author-maintained", wird somit allein durch den Autor verwaltet. Der -% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch. +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz +% in der Version 1.3c, verteilt und/oder veraendert werden. Die aktuelle +% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und +% Version 1.3c oder spaeter ist Teil aller Verteilungen von LaTeX 2005/12/01 +% oder spaeter und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status +% "author-maintained", wird somit allein durch den Autor verwaltet. Der +% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch. % % ============================================================================ % @@ -51,15 +51,17 @@ %<*driver> \ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi \ProvidesFile{tudscr-fields.dtx}[% - 2015/06/12 v2.04 TUD-KOMA-Script (input fields)% + 2016/07/22 v2.05 TUD-KOMA-Script (input fields)% ] \RequirePackage[ngerman=ngerman-x-latest]{hyphsubst} -\documentclass[english,ngerman]{tudscrdoc} +\documentclass[english,ngerman,xindy]{tudscrdoc} \usepackage{selinput}\SelectInputMappings{adieresis={ä},germandbls={ß}} \usepackage[T1]{fontenc} \usepackage{babel} \usepackage{tudscrfonts} % only load this package, if the fonts are installed \KOMAoptions{parskip=half-} +\usepackage{microtype} +\usepackage{bookmark} \CodelineIndex \RecordChanges \GetFileInfo{tudscr-fields.dtx} @@ -72,7 +74,7 @@ % % \selectlanguage{ngerman} % -% \changes{v2.02}{2014/06/23}{Unterstützung für \pkg{titlepage} entfernt}^^A +% \changes{v2.02}{2014/06/23}{Paket \pkg{titlepage} nicht weiter unterstützt}^^A % % \section{Eingabefelder für den Nutzer} % @@ -87,133 +89,245 @@ % \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} +% \StopEventually{\PrintIndex\PrintChanges\PrintToDos} % % \iffalse -%<*class|poster> +%<*class&!manual> % \fi % % \subsection{Textfelder} % -% Für das Setzen von Feldern werden bei einem übergebenen Argument führende und -% angehängte Leerzeichen beseitigt. -% \begin{macrocode} -%\RequirePackage{trimspaces}[2009/09/17] -% \end{macrocode} -% Von den Klassen benötigte Formularfelder werden definiert. +% 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}{\@faculty@foot} -% \changes{v2.04}{2015/05/06}{neu}^^A +% \begin{field}{\@@faculty} +% \changes{v2.05}{2015/07/06}{neu}^^A % \begin{macro}{\department} % \begin{field}{\@department} -% \begin{field}{\@department@foot} -% \changes{v2.04}{2015/05/06}{neu}^^A +% \begin{field}{\@@department} +% \changes{v2.05}{2015/07/06}{neu}^^A % \begin{macro}{\institute} % \begin{field}{\@institute} -% \begin{field}{\@institute@foot} -% \changes{v2.04}{2015/05/06}{neu}^^A +% \begin{field}{\@@institute} +% \changes{v2.05}{2015/07/06}{neu}^^A % \begin{macro}{\chair} % \begin{field}{\@chair} -% \begin{field}{\@chair@foot} -% \changes{v2.04}{2015/05/06}{neu}^^A +% \begin{field}{\@@chair} +% \changes{v2.05}{2015/00/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 den % Feldern \cs{@department}, \cs{@institute} und \cs{@chair} gespeichert werden. -% -% Das optionale Argument wird zur Kompatibilität zum Paket \pkg{tudscrposter} +% +% Das optionale Argument wird zur Kompatibilität zur Klasse \cls{tudscrposter} % vorgehalten. Wird das Paket geladen, kann mit dem optionalen Argument die -% Angabe der Struktureinheiten im Fußbereich variiert werden. Hierfür werden -% die Felder \cs{@faculty@foot}, \cs{@department@foot}, \cs{@institute@foot} -% sowie \cs{@chair@foot} definiert. +% Angabe der Struktureinheiten im Fußbereich variiert werden. Dafür werden die +% Felder \cs{@@faculty}, \cs{@@department}, \cs{@@institute} sowie \cs{@@chair} +% definiert. % \begin{macrocode} -%<*class> \newcommand*\@faculty{} -\newcommand*\faculty[2][]{\gdef\@faculty{\trim@spaces{#2}}} \newcommand*\@department{} -\newcommand*\department[2][]{\gdef\@department{\trim@spaces{#2}}} \newcommand*\@institute{} -\newcommand*\institute[2][]{\gdef\@institute{\trim@spaces{#2}}} \newcommand*\@chair{} -\newcommand*\chair[2][]{\gdef\@chair{\trim@spaces{#2}}} -% +%<*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}} +% %<*poster> -\newcommand*\@faculty@foot{} -\renewcommand*\faculty[2][\@empty]{\tud@foot@line@add{faculty}{#2}{#1}} -\newcommand*\@department@foot{} -\renewcommand*\department[2][\@empty]{\tud@foot@line@add{department}{#2}{#1}} -\newcommand*\@institute@foot{} -\renewcommand*\institute[2][\@empty]{\tud@foot@line@add{institute}{#2}{#1}} -\newcommand*\@chair@foot{} -\renewcommand*\chair[2][\@empty]{\tud@foot@line@add{chair}{#2}{#1}} +\newcommand*\@@faculty{} +\newcommand*\@@department{} +\newcommand*\@@institute{} +\newcommand*\@@chair{} +\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}} % % \end{macrocode} -% \end{field}^^A \@chair@foot +% \end{field}^^A \@@chair % \end{field}^^A \@chair % \end{macro}^^A \chair -% \end{field}^^A \@institute@foot +% \end{field}^^A \@@institute % \end{field}^^A \@institute % \end{macro}^^A \institute -% \end{field}^^A \@department@foot +% \end{field}^^A \@@department % \end{field}^^A \@department % \end{macro}^^A \department -% \end{field}^^A \@faculty@foot +% \end{field}^^A \@@faculty % \end{field}^^A \@faculty % \end{macro}^^A \faculty -% -% \iffalse -% -%<*class> -% \fi -% % \begin{macro}{\extraheadline} % \begin{field}{\@extraheadline} -% Für die Angabe einer freien zweiten bzw. dritten Textzeile im Kopf. Dies ist -% laut \CD nur in besonderen Ausnahmefällen gestattet. +% 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]{\gdef\@extraheadline{\trim@spaces{#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}} +% 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}} ebenfalls das zweite +% Argument abgelegt, andernfalls das dritte. +% +% 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} +%<*poster> +\newcommand*\tud@foot@line@add[3]{% + \tud@head@text@field{#1}{#2}% + \ifx\@empty#3\relax% + \global\csletcs{@@#1}{@#1}% + \else% + \csgdef{@@#1}{\trim@spaces{#3}}% + \fi% +} +\newcommand*\tud@foot@line@write[1]{% + \protected@edef\@tempa{\csuse{@@#1}}% + \ifx\@tempa\@empty\else\newline\mbox{\csuse{@@#1}}\fi% +} +% +% \end{macrocode} +% \end{macro}^^A \tud@foot@line@write +% \end{macro}^^A \tud@foot@line@add % \begin{macro}{\title} +% \begin{field}{\@title} % \begin{field}{\@@title} % \changes{v2.02}{2014/11/06}{\cs{protected@xdef} genutzt}^^A -% \begin{field}{\@@author} -% \changes{v2.02}{2014/07/25}{entfernt}^^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. Das Feld \cs{@@author} wurde mit der -% Version~v2.02 entfernt. +% ohne die etwaigen Fußnoten gespeichert. % \begin{macrocode} \newcommand*\@@title{} +\robustify\@title \renewcommand*\title[1]{% \gdef\@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 \@@author % \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} -% Ausgabe einer zusätzlichen Zeile mit \cs{authormore}\marg{Textzeile} direkt -% unterhalb der Angabe des Autors auf der Titelseite, wird im Makro +% 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. % \begin{macrocode} +\newcommand*\@@author{} +\renewcommand*\author[1]{% + \gdef\@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{relax} gesetzt, um +% diese nach der Expansion weiter zu behandeln. +% \begin{macrocode} + \def\@tempa##1{\csdef{##1}####1{\noexpand\relax}}% + \let\@tempb\tud@split@author@list% + \robustify\and% + \expandafter\forcsvlist\expandafter\@tempa\expandafter{\@tempb}% + \protected@edef\@@author{#1}% +% \end{macrocode} +% Da die Befehle für Zusatzinformationen unter Umständen ungewollte Leerzeichen +% im Feld \cs{@@author} hinterlassen, werden diese entfernt. +% \begin{macrocode} + \tud@replace\@@author{ \relax }{}% + \tud@replace\@@author{\relax }{}% + \tud@replace\@@author{ \relax}{}% + \tud@replace\@@author{\relax}{}% + \tud@replace\@@author{ \and }{\and}% + \tud@replace\@@author{ \and}{\and}% + \tud@replace\@@author{\and }{\and}% + \protected@xdef\@@author{\trim@spaces{\@@author}}% + \endgroup% +} \newcommand*\@authormore{} -\newrobustcmd*\authormore[1]{\gdef\@authormore{#1}} +\newrobustcmd*\authormore[1]{\gdef\@authormore{#1}\ignorespaces} % \end{macrocode} % \end{field}^^A \@authormore % \end{macro}^^A \authormore +% \end{field}^^A \@@author +% \end{field}^^A \@author +% \end{macro}^^A \author +% \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]{\gdef\@course{#1}\ignorespaces} +% \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]{\gdef\@discipline{#1}\ignorespaces} +% \end{macrocode} +% \end{field}^^A \@discipline +% \end{macro}^^A \discipline +% \begin{macro}{\publisher} +% Kleine Korrektur für \KOMAScript, der Befehl sollte im Singular stehen. +% \begin{macrocode} +\providecommand*\publisher[1]{\publishers{#1}} +% \end{macrocode} +% \end{macro}^^A \publisher +% +% \iffalse +%<*book|report|article> +% \fi +% % \begin{macro}{\thesis} % \begin{field}{\@thesis} % \changes{v2.02}{2014/11/06}{\cs{protected@xdef} genutzt}^^A @@ -221,25 +335,25 @@ % \changes{v2.02}{2014/11/06}{\cs{protected@xdef} genutzt}^^A % \begin{macro}{\subject} % \begin{field}{\@subject} -% \begin{macro}{\tud@thesis} -% \begin{macro}{\tud@@thesis} +% \begin{macro}{\tud@thesis@do} +% \begin{macro}{\tud@thesis@@do} % \begin{macro}{\tud@thanks} % 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} wird in den Feldern \@thesis bzw. \@subject nach bestimmten -% Schlagwörtern für Abschlussarbeiten o.\,ä. gesucht. Wird eines dieser Wörter -% gefunden, wird der entsprechende reguläre Ausdruck für dieses Feld gesetzt. -% Zusätzlich wird durch \cs{tud@@thesis} dafür gesorgt, dass gegebenenfalls der -% Inhalt von \cs{@subject} in \cs{@thesis} verschoben und die entsprechende -% Option \opt{subjectthesis} gesetzt wird. In \cs{@@thesis} wird die angegebene -% Abschlussarbeit ohne etwaige Fußnoten gespeichert. +% \cs{tud@thesis@do} wird in den Feldern \@thesis respektive \@subject nach +% bestimmten Schlagwörtern für Abschlussarbeiten o.\,ä. gesucht. Wird eines +% dieser Wörter gefunden, wird der entsprechende reguläre Ausdruck 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 +% die entsprechende Option \opt{subjectthesis} gesetzt wird. In \cs{@@thesis} +% wird die angegebene Abschlussarbeit ohne etwaige Fußnoten gespeichert. % \begin{macrocode} \newcommand*\@thesis{} \newcommand*\@@thesis{} -\newcommand*\thesis[1]{\tud@thesis{thesis}{#1}} +\newcommand*\thesis[1]{\tud@thesis@do{thesis}{#1}} \newcommand*\tud@thanks{} -\newcommand*\tud@thesis[2]{% +\newcommand*\tud@thesis@do[2]{% \begingroup% % \end{macrocode} % Hier das gleiche wie an anderer Stelle auch schon. Der Inhalt einer eventuell @@ -255,43 +369,47 @@ \ifstr{#1}{thesis}{\protected@xdef\@@thesis{#2}}{}% \global\let\@tempa\@tempa% \endgroup% - \ifstr{\@tempa}{diss}{\tud@@thesis{#1}{\dissertationname}}{% - \ifstr{\@tempa}{doctoral}{\tud@@thesis{#1}{\dissertationname}}{% - \ifstr{\@tempa}{phd}{\tud@@thesis{#1}{\dissertationname}}{% - \ifstr{\@tempa}{diploma}{\tud@@thesis{#1}{\diplomathesisname}}{% - \ifstr{\@tempa}{master}{\tud@@thesis{#1}{\masterthesisname}}{% - \ifstr{\@tempa}{bachelor}{\tud@@thesis{#1}{\bachelorthesisname}}{% - \ifstr{\@tempa}{student}{\tud@@thesis{#1}{\studentresearchname}}{% - \ifstr{\@tempa}{project}{\tud@@thesis{#1}{\projectpapername}}{% - \ifstr{\@tempa}{seminar}{\tud@@thesis{#1}{\seminarpapername}}{% - \ifstr{\@tempa}{research}{\tud@@thesis{#1}{\researchname}}{% - \ifstr{\@tempa}{log}{\tud@@thesis{#1}{\logname}}{% - \ifstr{\@tempa}{report}{\tud@@thesis{#1}{\reportname}}{% - \ifstr{\@tempa}{internship}{\tud@@thesis{#1}{\internshipname}}{% - \@namedef{@#1}{#2}% - }}}}}}}}}}}}}% + \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[2]{% +\newcommand*\tud@thesis@@do[2]{% \ifstr{#1}{subject}{% \ifx\@thesis\@empty\else% - \ClassWarning{\TUDClassName}{Field `thesis' is overwritten by `subject'}% + \ClassWarning{\TUD@Class@Name}{% + Field `thesis' is overwritten by `subject'% + }% \fi% - \TUD@std@ifkey@lock{subjectthesis}{true}% + \TUD@std@ifkey@lock{subjectthesis}{@tud@subjectthesis}{true}% }{% - \TUD@std@ifkey@lock{subjectthesis}{false}% + \TUD@std@ifkey@lock{subjectthesis}{@tud@subjectthesis}{false}% }% \ifx\tud@thanks\relax% \gdef\@thesis{#2}% \else% \protected@xdef\@thesis{\noexpand#2\noexpand\thanks{\tud@thanks}}% \fi% - \gdef\@@thesis{#2}% + \protected@xdef\@@thesis{\trim@spaces{#2}}% } -\renewcommand*\subject[1]{\tud@thesis{subject}{#1}} +\renewcommand*\subject[1]{\tud@thesis@do{subject}{#1}} % \end{macrocode} % \end{macro}^^A \tud@thanks -% \end{macro}^^A \tud@@thesis -% \end{macro}^^A \tud@thesis +% \end{macro}^^A \tud@thesis@@do +% \end{macro}^^A \tud@thesis@do % \end{field}^^A \@subject % \end{macro}^^A \subject % \end{field}^^A \@@thesis @@ -301,67 +419,71 @@ % \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}{\@graduationabbr} +% \begin{field}{\@@graduation} % \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} +% akademischen Grades angegeben werden, wird in \cs{@@graduation} % gespeichert. % \begin{macrocode} \newcommand*\@graduation{} -\newcommand*\@graduationabbr{} +\newcommand*\@@graduation{} \newcommand*\graduation[2][]{% - \ifxblank{#1}{\gdef\@graduationabbr{}}{\gdef\@graduationabbr{(#1)}}% + \ifxblank{#1}{\gdef\@@graduation{}}{\gdef\@@graduation{(#1)}}% \gdef\@graduation{#2}% } % \end{macrocode} -% \end{field}^^A \@graduationabbr +% \end{field}^^A \@@graduation % \end{field}^^A \@graduation % \end{macro}^^A \graduation % % \iffalse -% -%<*class|poster> +% % \fi % % \begin{macro}{\professor} % \begin{field}{\@professor} -% \begin{field}{\@professor@foot} -% \changes{v2.04}{2015/05/06}{neu}^^A +% \begin{field}{\@@professor} +% \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} -%<*class> +%<*book|report|article> \newcommand*\@professor{} -\newcommand*\professor[2][]{\gdef\@professor{#2}} -% +\newcommand*\professor[1]{\gdef\@professor{#1}} +% %<*poster> -\newcommand*\@professor@foot{} -\renewcommand*\professor[2][\@empty]{\tud@foot@line@add{professor}{#2}{#1}} +\newcommand*\@@professor{} +\newcommand*\professor[1]{\gdef\@@professor{#1}} % % \end{macrocode} -% \end{field}^^A \@professor@foot +% \end{field}^^A \@@professor % \end{field}^^A \@professor % \end{macro}^^A \professor -% -% \iffalse -% -%<*class> -% \fi -% % \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. +% 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]{\gdef\@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{supervisor} für Selbstständigkeitserklärung verworfen}^^A @@ -411,7 +533,7 @@ % \begin{macrocode} \newcommand*\@matriculationnumber{} \newrobustcmd*\matriculationnumber[1]{% - \gdef\@matriculationnumber{#1}% + \gdef\@matriculationnumber{#1}\ignorespaces% } % \end{macrocode} % \end{field}^^A \@matriculationnumber @@ -422,7 +544,7 @@ % gespeichert. % \begin{macrocode} \newcommand*\@matriculationyear{} -\newrobustcmd*\matriculationyear[1]{\gdef\@matriculationyear{#1}} +\newrobustcmd*\matriculationyear[1]{\gdef\@matriculationyear{#1}\ignorespaces} % \end{macrocode} % \end{field}^^A \@matriculationyear % \end{macro}^^A \matriculationyear @@ -431,52 +553,33 @@ % Der Geburtsort für den Titel wird in \cs{@placeofbirth} gespeichert. % \begin{macrocode} \newcommand*\@placeofbirth{} -\newrobustcmd*\placeofbirth[1]{\gdef\@placeofbirth{#1}} +\newrobustcmd*\placeofbirth[1]{\gdef\@placeofbirth{#1}\ignorespaces} % \end{macrocode} % \end{field}^^A \@placeofbirth % \end{macro}^^A \placeofbirth -% \begin{macro}{\publisher} -% \begin{field}{\@publisher} -% \changes{v2.02}{2014/07/25}{entfernt}^^A -% Kleine Korrektur für \KOMAScript, der Befehl sollte im Singular stehen. -% \begin{macrocode} -\providecommand*\publisher[1]{\publishers{#1}} -% \end{macrocode} -% \end{field}^^A \@publisher -% \end{macro}^^A \publisher -% \begin{length}{\tud@signatureskip} +% \begin{length}{\tud@len@signatureskip} % \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@signatureskip -\setlength\tud@signatureskip{15mm plus 10mm minus 10mm} +\newlength\tud@len@signatureskip +\setlength\tud@len@signatureskip{8ex plus 6ex minus 6ex} % \end{macrocode} -% \end{length}^^A \tud@signatureskip +% \end{length}^^A \tud@len@signatureskip % \begin{macro}{\confirmationclosing} % \begin{field}{\@confirmationclosing} -% \changes{v2.02}{2014/07/25}{\cs{@@date} durch \cs{@date} ersetzt}^^A -% \changes{v2.04}{2015/06/10}{Nutzung von \cs{tud@split@author}}^^A % Als Abschluss der Selbstständigkeitserklärung für Ort und Unterschrift. % \begin{macrocode} \newcommand*\@confirmationclosing{% - \tud@datecheck% + \tud@date@check% \ifx\@date\@empty\else% \medskip\noindent% \ifx\@place\@empty\else\@place,\nobreakspace\fi\@date% \fi% - \vskip\tud@signatureskip\noindent% + \vskip\tud@len@signatureskip\noindent% \begingroup% - \let\thanks\@gobble% - \let\footnote\@gobble% - \renewcommand*\tud@split@author[2]{% - \tud@multiple@fields@store{@author}{##1}% - \ignorespaces##1% - \tud@multiple@fields@restore{@author}% - \tud@multiple@@@split{##2}{\hfil}% - }% - \tud@multiple@split{@author}% - \hfil% + \let\and\hfil% + \@@author\hfil% \endgroup% } \newcommand*\confirmationclosing[1]{\gdef\@confirmationclosing{#1}} @@ -485,9 +588,9 @@ % \end{macro}^^A \confirmationclosing % \begin{macro}{\place} % \begin{field}{\@place} -% Die Angabe des Ortes mit \cs{place} für die Selbstständigkeitserklärung wird -% im Makro \cs{@place} gespeichert und standardmäßig mit \enquote{Dresden} -% gesetzt. +% 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]{\gdef\@place{#1}} @@ -495,6 +598,48 @@ % \end{field}^^A \@place % \end{macro}^^A \place % +% \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. +% \begin{macrocode} +\newcommand*\@webpage{} +\newrobustcmd*\webpage{% + \kernel@ifstar{\tud@webpage@simple}{\tud@webpage@hyper}% +} +\newrobustcmd*\tud@webpage@simple[1]{\gdef\@webpage{#1}} +\newrobustcmd*\tud@webpage@hyper[2][]{\gdef\@webpage{#2}} +\AfterPackage{hyperref}{% + \renewrobustcmd*\tud@webpage@hyper[2][hidelinks]{% + \gdef\@webpage{% + \begingroup% + \urlstyle{same}% + \hypersetup{#1}% + \url{#2}% + \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} % % \begin{macro}{\printdate} @@ -503,12 +648,12 @@ % diesem Paket gehörende Befehl \cs{printdate} in die Definition der % eigentlichen Datumsfelder integriert. Sollte das \pkg{isodate}-Paket nicht % geladen werden, so muss dieser Befehl trotzdem definiert sein. +% \ToDo{Unterstützung für \pkg{datetime2}}[v2.06] % \begin{macrocode} -\newcommand*\printdate[1]{#1} -\BeforePackage{isodate}{\undef\printdate} +\TUD@UnwindPackage{isodate}{\providecommand*\printdate[1]{#1}} % \end{macrocode} % \end{macro}^^A \printdate -% \begin{macro}{\tud@printdate} +% \begin{macro}{\tud@x@isodate@printdate} % Damit die Datumsfelder definiert werden können und das \pkg{isodate}-Paket % unterstützen, muss beim Festlegen der Datumsfelder einiges beachtet werden. % So müssen beispielsweise leere Argumente und Sonderfälle separat betrachtet @@ -516,7 +661,7 @@ % 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]{% +\newcommand*\tud@x@isodate@printdate[2]{% \ifx\today#2\relax% \gdef#1{#2}% \else% @@ -526,62 +671,130 @@ \fi% } % \end{macrocode} -% \end{macro}^^A \tud@printdate -% \begin{macro}{\tud@datecheck} +% \end{macro}^^A \tud@x@isodate@printdate +% \begin{macro}{\tud@date@check} % \changes{v2.04}{2015/05/06}{neu}^^A % Das Makro wird vor der Nutzung des Datumfeldes genutzt um zu prüfen, ob ein % selbiges explizit angegeben wurde. Falls dies nicht der Fall ist, wird eine % Warnung ausgegeben. % \begin{macrocode} -\newcommand*\tud@datecheck{% +\newcommand*\tud@date@check{% \ifdefvoid{\@duedate}{% - \ClassWarning{\TUDClassName}{% - `\string\date' was not given.\MessageBreak% + \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{\TUDClassName}{% - `\string\date' was not given.\MessageBreak% + \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@datecheck\relax% + \global\let\tud@date@check\relax% } % \end{macrocode} -% \end{macro}^^A \tud@datecheck +% \end{macro}^^A \tud@date@check % \begin{macro}{\date} % \begin{field}{\@date} -% \begin{field}{\@@date} -% \changes{v2.02}{2014/07/25}{entfernt}^^A -% \begin{field}{\@datemore} +% \begin{macro}{\tud@date@set} +% \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 als optionales Argument eine Ergänzung angehängt -% werden~-- beispielsweise als Erklärung für eine verspätete Abgabe aufgrund -% einer offiziellen Verlängerung der Bearbeitungszeit~-- welche im Feld -% \cs{@datemore} gespeichert wird. Der originale Standardbefehl für das Datum -% \cs{date} wird erweitert, das Feld \cs{@@date} wurde entfernt. -% \begin{macrocode} -\newcommand*\@datemore{} -\renewcommand*\date[2][]{% - \gdef\@datemore{\trim@spaces{#1}}% - \tud@printdate{\@date}{#2}% - \global\let\tud@datecheck\relax% +% 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{tud@date@pre} und \cs{tud@date@app} 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@parameter@set{date}{#1}% + \tud@x@isodate@printdate{\@date}{#2}% + \global\let\tud@date@check\relax% } % \end{macrocode} -% \end{field}^^A \@datemore -% \end{field}^^A \@@date +% \end{macro}^^A \tud@date@set % \end{field}^^A \@date % \end{macro}^^A \date +% \begin{field}{\tud@date@pre} +% \changes{v2.05}{2016/05/27}{neu}^^A +% \begin{field}{\tud@date@app} +% \changes{v2.05}{2016/05/27}{neu}^^A +% \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{macrocode} +\newcommand*\tud@date@pre{} +\newcommand*\tud@date@app{} +\TUD@parameter@family{date}{% + \TUD@parameter@def{before}{\def\tud@date@pre{#1}}% + \TUD@parameter@let{pre}{before}% + \TUD@parameter@let{prefix}{before}% + \TUD@parameter@def{after}{\def\tud@date@app{#1}}% + \TUD@parameter@let{app}{after}% + \TUD@parameter@let{suffix}{after}% + \TUD@parameter@def{place}{\def\@place{#1}\def\tud@date@pre{#1,}}% + \TUD@parameter@handler@value{after}% +} +% \end{macrocode} +% \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{field}^^A \tud@date@app +% \end{field}^^A \tud@date@pre +% \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% + \ifx\tud@date@pre\@empty\else% + \expandafter\trim@spaces\expandafter{\tud@date@pre}\nobreakspace% + \fi% + \@date% + \ifx\tud@date@app\@empty\else% + \nobreakspace\expandafter\trim@spaces\expandafter{\tud@date@app}% + \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}} +\newcommand*\defensedate[1]{\tud@x@isodate@printdate{\@defensedate}{#1}} % \end{macrocode} % \end{field}^^A \@defensedate % \end{macro}^^A \defensedate @@ -591,15 +804,165 @@ % gespeichert. % \begin{macrocode} \newcommand*\@dateofbirth{} -\newrobustcmd*\dateofbirth[1]{\tud@printdate{\@dateofbirth}{#1}} +\newrobustcmd*\dateofbirth[1]{% + \tud@x@isodate@printdate{\@dateofbirth}{#1}\ignorespaces% +} % \end{macrocode} % \end{field}^^A \@dateofbirth % \end{macro}^^A \dateofbirth +% +% \iffalse +% +% +%<*package&supervisor|class&manual> +% \fi +% +% \subsection{Felder für \pkg{tudscrsupervisor} und \cls{tudscrposter}} +% +% Die beiden genanntent Pakete stellen einige weitere Felder bereit bzw. +% erweitern deren Funktionalitäten. +% +% \begin{macro}{\chairman} +% \begin{field}{\@chairman} +% Angabe des Prüfungsausschussvorsitzenden für die Aufgabenstellung, wird im +% Makro \cs{@chairman} gespeichert. +% \begin{macrocode} +\newcommand*\@chairman{} +\newcommand*\chairman[1]{\gdef\@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{} +% \end{macrocode} +% \end{field}^^A \@headline +% \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@x@isodate@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@x@isodate@printdate{\@duedate}{#1}} +\newcommand*\finaldate{} +\newcommand*\maturitydate{} +% \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 +% \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 +% 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]{\gdef\@contactperson{#1}} +%<*poster> +\let\supervisor\contactperson +% +\newcommand*\@office{} +\newrobustcmd*\office[1]{\gdef\@office{#1}} +\newcommand*\@telephone{} +\newrobustcmd*\telephone[1]{\gdef\@telephone{#1}} +\newcommand*\@telefax{} +\newrobustcmd*\telefax[1]{\gdef\@telefax{#1}} +\newcommand*\@emailaddress{} +\newrobustcmd*\emailaddress{% + \kernel@ifstar{\tud@emailaddress@simple}{\tud@emailaddress@hyper}% +} +\newrobustcmd*\tud@emailaddress@simple[1]{\gdef\@emailaddress{#1}} +\newrobustcmd*\tud@emailaddress@hyper[2][]{\gdef\@emailaddress{#2}} +\AfterPackage*{hyperref}{% + \renewrobustcmd*\tud@emailaddress@hyper[2][hidelinks]{% + \gdef\@emailaddress{% + \begingroup% + \urlstyle{same}% + \hypersetup{#1}% + \href{mailto:#2}{\nolinkurl{#2}}% + \endgroup% + }% + }% +} +% \end{macrocode} +% \end{macro}^^A \tud@emailaddress@hyper +% \end{macro}^^A \tud@emailaddress@simple +% \end{field}^^A \@emailaddress +% \end{macro}^^A \emailaddress +% \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{Prozessieren von Feldern} +% +% 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@multiple@split} % \begin{macro}{\tud@multiple@@split} % \begin{macro}{\tud@multiple@@@split} -% \begin{macro}{\tud@multiple@field} -% \changes{v2.04}{2015/05/12}{entfernt}^^A % 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 @@ -612,17 +975,19 @@ % Ausgabe das entsprechende Makro \cs{tud@split\meta{Feld}} und zum anderen % eine Liste der auszuwertenden lokalen Angaben \cs{tud@split\meta{Feld}@list} % definiert sein. Momentan werden die beiden Felder \cs{@author} und~-- für die -% Pakete \pkg{tudscrsupervisor} sowie \pkg{tudscrposter}~-- \cs{@contactperson} -% zur Angabe zusätzlicher Informationen unterstützt. +% 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{} \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. % \begin{macrocode} \expandafter\ifpatchable\expandafter{\csname#1\endcsname}{% - \@latex@warning@no@line}{\csuse{#1}\csgdef{#1}{}% + \@latex@warning@no@line% + }{% + \csuse{#1}\csgdef{#1}{}% }{}% % \end{macrocode} % Das Makro \cs{tud@multiple@@split} wird so definiert, dass der Befehl @@ -633,10 +998,12 @@ % 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\endcsname{##1}{##2}% + \expandafter\csname tud@split#1@do\endcsname{##1}{##2}% }% \begingroup% \let\and\relax% + \def\newline{}% + \def\\{}% % \end{macrocode} % Das Feld wird mit \cs{and} terminiert, um der Definition von % \cs{tud@multiple@@split} in jedem Fall zu entsprechen. @@ -662,7 +1029,6 @@ \@tempb% } % \end{macrocode} -% \end{macro}^^A \tud@multiple@field % \end{macro}^^A \tud@multiple@@@split % \end{macro}^^A \tud@multiple@@split % \end{macro}^^A \tud@multiple@split @@ -670,8 +1036,6 @@ % \changes{v2.04}{2015/05/12}{neu}^^A % \begin{macro}{\tud@multiple@fields@restore} % \changes{v2.04}{2015/05/12}{neu}^^A -% \begin{macro}{\tud@multiple@setfields} -% \changes{v2.04}{2015/05/12}{entfernt}^^A % Mit \cs{tud@multiple@fields@store} und \cs{tud@multiple@fields@restore} % werden zwei Hilfsmakros definiert, um einzelne Feldinhalte lokal ändern und % nach der Verarbeitung auf den ursprünglichen Wert zurücksetzen zu können. @@ -684,13 +1048,10 @@ % zu erzeugen. % \begin{macrocode} \newcommand*\tud@multiple@fields@store[2]{% - \letcs\@tempa{tud@split#1@list}% + \def\@tempa##1{\ifcsdef{@##1}{\tud@cmd@store{@##1}}{}}% + \letcs\@tempb{tud@split#1@list}% \let\and\relax% - \@for\@tempb:=\@tempa\do{% - \ifx\@tempb\@empty\else% - \ifcsdef{@\@tempb}{\tud@cmd@store{@\@tempb}}{}% - \fi% - }% + \expandafter\forcsvlist\expandafter\@tempa\expandafter{\@tempb}% \begingroup% \let\thanks\@gobble% \let\footnote\@gobble% @@ -702,261 +1063,117 @@ % bestehenden Feldwerte zurückgesetzt. % \begin{macrocode} \newcommand*\tud@multiple@fields@restore[1]{% - \letcs\@tempa{tud@split#1@list}% - \let\and\relax% - \@for\@tempb:=\@tempa\do{% - \ifx\@tempb\@empty\else% - \ifcsdef{@\@tempb}{% - \tud@cmd@restore{@\@tempb}% - \global\csletcs{@\@tempb}{@\@tempb}% - }{}% - \fi% + \def\@tempa##1{% + \ifcsdef{@##1}{% + \tud@cmd@restore{@##1}% + \global\csletcs{@##1}{@##1}% + }{}% }% + \letcs\@tempb{tud@split#1@list}% + \let\and\relax% + \expandafter\forcsvlist\expandafter\@tempa\expandafter{\@tempb}% } % \end{macrocode} -% \end{macro}^^A \tud@multiple@setfields % \end{macro}^^A \tud@multiple@fields@restore % \end{macro}^^A \tud@multiple@fields@store -% Auf der Titelseite sowie für die Aufgabenstellung \pkg{tudscrsupervisor} und -% den Seitenfuß von Postern (\pkg{tudscrposter}) wird die Angabe einer +% \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 +% definerten Liste \cs{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}{*}{% + \csdef{@##1}{}% + }{% + \begingroup% + \protected@expandtwoargs\in@{\@tempc}{\csuse{#1}}% + \ifin@% + \ifcsvoid{@##1}{\@tempc{#2}}{}% + \fi% + \endgroup% + }% + }% + \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} +% \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 -% Der Befehl \cs{tud@split@author} wird hier als Dummy initialisiert und an der -% entsprechenden Stelle umdefiniert. Dies betrifft in den Klassen den Titel -% sowie die Aufgabenstellung in der Umgebung \env{task} und den Seitenfuß bei -% Postern. +% \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 Befehle \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 \cs{tud@multiple@fields@\dots} geprüft und ggf. initialisiert +% werden sollen. % -% Innerhalb von \cs{tud@split@author@list} werden die Feldbefehle hinterlegt, -% die durch \cs{tud@multiple@fields@\dots} geprüft und ggf. initialisiert -% werden sollen. +% Für die Angabe mehrerer Kontaktpersonen im Posterfuß (\cls{tudscrposter}) +% oder auf einem Aushang (\pkg{tudscrsupervisor}) wird äquivalent verfahren. % \begin{macrocode} -\newcommand*\tud@split@author[2]{} +%<*class> +\newcommand*\tud@split@author@do[2]{} +%<*book|report|article> \newcommand*\tud@split@author@list{% - authormore,matriculationyear,enrolmentyear,% + authormore,course,discipline,% + matriculationyear,enrolmentyear,% matriculationnumber,studentid,matriculationid,% placeofbirth,birthplace,dateofbirth,birthday,% } +% % \end{macrocode} -% \end{macro}^^A \tud@split@author@list -% \end{macro}^^A \tud@split@author -% -% \iffalse -% -%<*supervisor> -% \fi -% -% -% \subsection{Felder für \pkg{tudscrsupervisor} und \pkg{tudscrposter}} -% -% Die beiden genanntent Pakete stellen einige weitere Felder bereit bzw. -% erweitern deren Funktionalitäten. -% -% \begin{macro}{\course} -% \begin{field}{\@course} -% Studiengang für den Kopf der Aufgabenstellung, wird im Makro \cs{@course} -% gespeichert. -% \begin{macrocode} -\newcommand*\@course{} -\newrobustcmd*\course[1]{\gdef\@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 den Kopf der Aufgabenstellung, wird -% im Makro \cs{@discipline} gespeichert. -% \begin{macrocode} -\newcommand*\@discipline{} -\newrobustcmd*\discipline[1]{\gdef\@discipline{#1}} -% \end{macrocode} -% \end{field}^^A \@discipline -% \end{macro}^^A \discipline -% \begin{macro}{\chairman} -% \begin{field}{\@chairman} -% Angabe des Prüfungsausschussvorsitzenden für die Aufgabenstellung, wird im -% Makro \cs{@chairman} gespeichert. -% \begin{macrocode} -\newcommand*\@chairman{} -\newcommand*\chairman[1]{\gdef\@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{} -% \end{macrocode} -% \end{field}^^A \@headline -% \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}} -\newcommand*\finaldate{} -\newcommand*\maturitydate{} -% \end{macrocode} -% \end{field}^^A \@duedate -% \end{macro}^^A \duedate -% -% \iffalse -% -%<*supervisor|poster> -% \fi -% -% \begin{macrocode} -\@ifpackageloaded{% -% tudscrposter% -% tudscrsupervisor% -}{}{% -% \end{macrocode} -% \begin{macro}{\contactperson} -% \changes{v2.02}{2014/05/16}{neu, \cs{contact} umbenannt}^^A -% \begin{field}{\@contactperson} -% \changes{v2.02}{2014/05/16}{neu, \cs{@contact} umbenannt}^^A -% \begin{macro}{\office} -% \begin{field}{\@office} -% \begin{macro}{\telephone} -% \changes{v2.02}{2014/05/16}{neu, \cs{phone} umbenannt}^^A -% \begin{field}{\@telephone} -% \changes{v2.02}{2014/05/16}{neu, \cs{@phone} umbenannt}^^A -% \begin{macro}{\emailaddress} -% \changes{v2.02}{2014/05/16}{neu, \cs{email} umbenannt}^^A -% \begin{field}{\@emailaddress} -% \changes{v2.02}{2014/05/16}{neu, \cs{@email} umbenannt}^^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]{\gdef\@contactperson{#1}} - \newcommand*\@office{} - \newrobustcmd*\office[1]{\gdef\@office{#1}} - \newcommand*\@telephone{} - \newrobustcmd*\telephone[1]{\gdef\@telephone{#1}} - \newcommand*\@emailaddress{} - \newrobustcmd*\emailaddress[2][]{\gdef\@emailaddress{#2}} - \AfterPackage*{hyperref}{% - \renewrobustcmd*\emailaddress[2][hidelinks]{% - \gdef\@emailaddress{% - \begingroup% - \hypersetup{#1}% - \href{mailto:#2}{#2}% - \endgroup% - }% - }% - }% -% \end{macrocode} -% \end{field}^^A \@emailaddress -% \end{macro}^^A \emailaddress -% \end{field}^^A \@telephone -% \end{macro}^^A \telephone -% \end{field}^^A \@office -% \end{macro}^^A \office -% \end{field}^^A \@contactperson -% \end{macro}^^A \contactperson -% \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 -% definerten Liste \cs{tud@split\meta{Feld}@list} auf Standardwerte zu setzen. -% \begin{macrocode} - \newcommand*\tud@multiple@fields@preset[3]{% - \letcs\@tempa{tud@split#1@list}% - \let\and\relax% - \@for\@tempb:=\@tempa\do{% - \ifx\@tempb\@empty\else% - \edef\@tempc{\@nameuse{\@tempb}}% - \ifstr{#2}{*}{% - \@namedef{@\@tempb}{}% - }{% - \begingroup% - \protected@expandtwoargs\in@{\@tempc}{\@nameuse{#1}}% - \ifin@% - \ifcsempty{@\@tempb}{\@tempc{#2}}{}% - \fi% - \endgroup% - }% - \fi% - }% - \begingroup% - \let\thanks\@gobble% - \let\footnote\@gobble% - \sbox\z@{#3}% - \endgroup% - }% -% \end{macrocode} -% \end{macro}^^A \tud@multiple@fields@preset -% \begin{macro}{\tud@split@contactperson} -% \changes{v2.04}{2015/05/12}{neu}^^A -% \begin{macro}{\tud@split@contactperson@list} -% \changes{v2.04}{2015/05/12}{neu}^^A -% Mit diesen Befehlen werden für einen Aushang die Daten für einen oder mehrere -% Kontaktpersonen ausgegeben. -% \begin{macrocode} - \newcommand*\tud@split@contactperson[2]{} - \newcommand*\tud@split@contactperson@list{office,telephone,emailaddress} -% \end{macrocode} -% \end{macro}^^A \tud@split@contactperson@list -% \end{macro}^^A \tud@split@contactperson -% Damit sind alle Felder für die Pakete definiert. +% Der Befehl \cs{tud@split@author@list} für die Klasse \cls{tudscrposter}. % \begin{macrocode} +%<*poster> +\newcommand*\tud@split@author@list{% + authormore,course,discipline,office,telephone,telefax,emailaddress% } +% +% +%<*class&poster|package&supervisor> +\newcommand*\tud@split@contactperson@do[2]{} +\newcommand*\tud@split@contactperson@list{office,telephone,telefax,emailaddress} +% % \end{macrocode} -% -% \iffalse -% -%<*poster> -% \fi -% -% \begin{macro}{\webpage} -% \changes{v2.04}{2015/05/13}{neu}^^A -% \begin{field}{\@webpage} -% \changes{v2.04}{2015/05/13}{neu}^^A -% Im Fußbereich eines Posters kann zusätzlich eine Web-Seite angegeben werden. +% 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} -\newcommand*\@webpage{} -\newcommand*\webpage[2][]{\gdef\@webpage{#2}} -\AfterPackage*{hyperref}{% - \renewcommand*\webpage[2][hidelinks]{% - \gdef\@webpage{% - \begingroup% - \hypersetup{#1}% - \href{#2}{#2}% - \endgroup% - }% - }% -}% +%<*package&supervisor> +\fi +% % \end{macrocode} -% \end{field}^^A \@webpage -% \end{macro}^^A \webpage +% \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 % % \Finale -- cgit v1.2.3