diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/tudscr/tudscr-fields.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/tudscr/tudscr-fields.dtx | 685 |
1 files changed, 506 insertions, 179 deletions
diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-fields.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-fields.dtx index b2b3b3a1141..9621da464ce 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{390} +% \CheckSum{647} % \iffalse meta-comment % % ============================================================================ @@ -51,7 +51,7 @@ %<*driver> \ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi \ProvidesFile{tudscr-fields.dtx}[% - 2015/02/12 v2.03 TUD-KOMA-Script (input fields)% + 2015/06/12 v2.04 TUD-KOMA-Script (input fields)% ] \RequirePackage[ngerman=ngerman-x-latest]{hyphsubst} \documentclass[english,ngerman]{tudscrdoc} @@ -72,7 +72,7 @@ % % \selectlanguage{ngerman} % -% \changes{v2.02}{2014/06/23}{Unterstützung für \pkg{titlepage} entfernt}%^^A +% \changes{v2.02}{2014/06/23}{Unterstützung für \pkg{titlepage} entfernt}^^A % % \section{Eingabefelder für den Nutzer} % @@ -90,7 +90,7 @@ % \StopEventually{\PrintIndex\PrintChanges} % % \iffalse -%<*class> +%<*class|poster> % \fi % % \subsection{Textfelder} @@ -98,49 +98,77 @@ % 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] +%<class>\RequirePackage{trimspaces}[2009/09/17] % \end{macrocode} % Von den Klassen benötigte Formularfelder werden definiert. % \begin{macro}{\faculty} % \begin{field}{\@faculty} -% Angabe der Fakultät für die TUD-Kopfzeile mit \cs{faculty}\marg{Fakultät}, -% wird im Makro \cs{@faculty} gespeichert. -% \begin{macrocode} -\newcommand*\@faculty{} -\newcommand*\faculty[1]{\gdef\@faculty{\trim@spaces{#1}}} -% \end{macrocode} -% \end{field}^^A \@faculty -% \end{macro}^^A \faculty +% \begin{field}{\@faculty@foot} +% \changes{v2.04}{2015/05/06}{neu}^^A % \begin{macro}{\department} % \begin{field}{\@department} -% Angabe der Einrichtung mit \cs{department}\marg{Fachrichtung} für die -% TUD-Kopfzeile, wird im Makro \cs{@department} gespeichert. -% \begin{macrocode} -\newcommand*\@department{} -\newcommand*\department[1]{\gdef\@department{\trim@spaces{#1}}} -% \end{macrocode} -% \end{field}^^A \@department -% \end{macro}^^A \department +% \begin{field}{\@department@foot} +% \changes{v2.04}{2015/05/06}{neu}^^A % \begin{macro}{\institute} % \begin{field}{\@institute} -% Angabe des Instituts für die TUD-Kopfzeile mit \cs{institute}\marg{Institut}, -% wird im Makro \cs{@institute} gespeichert. -% \begin{macrocode} -\newcommand*\@institute{} -\newcommand*\institute[1]{\gdef\@institute{\trim@spaces{#1}}} -% \end{macrocode} -% \end{field}^^A \@institute -% \end{macro}^^A \institute +% \begin{field}{\@institute@foot} +% \changes{v2.04}{2015/05/06}{neu}^^A % \begin{macro}{\chair} % \begin{field}{\@chair} -% Angabe des Lehrstuhls bzw. der Professur mit \cs{chair}\marg{Lehrstuhl} für -% die TUD-Kopfzeile, wird im Makro \cs{@chair} gespeichert. +% \begin{field}{\@chair@foot} +% \changes{v2.04}{2015/05/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} +% 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. % \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[1]{\gdef\@chair{\trim@spaces{#1}}} -% \end{macrocode} +\newcommand*\chair[2][]{\gdef\@chair{\trim@spaces{#2}}} +%</class> +%<*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}} +%</poster> +% \end{macrocode} +% \end{field}^^A \@chair@foot % \end{field}^^A \@chair % \end{macro}^^A \chair +% \end{field}^^A \@institute@foot +% \end{field}^^A \@institute +% \end{macro}^^A \institute +% \end{field}^^A \@department@foot +% \end{field}^^A \@department +% \end{macro}^^A \department +% \end{field}^^A \@faculty@foot +% \end{field}^^A \@faculty +% \end{macro}^^A \faculty +% +% \iffalse +%</class|poster> +%<*class> +% \fi +% % \begin{macro}{\extraheadline} % \begin{field}{\@extraheadline} % Für die Angabe einer freien zweiten bzw. dritten Textzeile im Kopf. Dies ist @@ -153,9 +181,9 @@ % \end{macro}^^A \extraheadline % \begin{macro}{\title} % \begin{field}{\@@title} -% \changes{v2.02}{2014/11/06}{\cs{protected@xdef} genutzt}%^^A +% \changes{v2.02}{2014/11/06}{\cs{protected@xdef} genutzt}^^A % \begin{field}{\@@author} -% \changes{v2.02}{2014/07/25}{entfernt}%^^A +% \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 @@ -188,9 +216,9 @@ % \end{macro}^^A \authormore % \begin{macro}{\thesis} % \begin{field}{\@thesis} -% \changes{v2.02}{2014/11/06}{\cs{protected@xdef} genutzt}%^^A +% \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 +% \changes{v2.02}{2014/11/06}{\cs{protected@xdef} genutzt}^^A % \begin{macro}{\subject} % \begin{field}{\@subject} % \begin{macro}{\tud@thesis} @@ -212,42 +240,41 @@ \newcommand*\thesis[1]{\tud@thesis{thesis}{#1}} \newcommand*\tud@thanks{} \newcommand*\tud@thesis[2]{% - \AfterPreamble{% - \begingroup% + \begingroup% % \end{macrocode} % Hier das gleiche wie an anderer Stelle auch schon. Der Inhalt einer eventuell % vorhandenen Fußnote wird gesichert % \begin{macrocode} - \global\let\tud@thanks\relax% - \def\thanks##1{\gdef\tud@thanks{##1}}% - \let\footnote\thanks% - \setbox0\vbox{#2}% - \let\thanks\@gobble% - \let\footnote\@gobble% - \tud@lowerstring{\@tempa}{#2}% - \ifstr{#1}{thesis}{\protected@xdef\@@thesis{#2}}{}% - \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}% - }}}}}}}}}}}}}% - }% + \global\let\tud@thanks\relax% + \def\thanks##1{\gdef\tud@thanks{##1}}% + \let\footnote\thanks% + \sbox\z@{#2}% + \let\thanks\@gobble% + \let\footnote\@gobble% + \tud@lowerstring{\@tempa}{#2}% + \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}% + }}}}}}}}}}}}}% } \newcommand*\tud@@thesis[2]{% \ifstr{#1}{subject}{% \ifx\@thesis\@empty\else% - \ClassWarning{\tudcls@name}{Field `thesis' is overwritten by `subject'}% + \ClassWarning{\TUDClassName}{Field `thesis' is overwritten by `subject'}% \fi% \TUD@std@ifkey@lock{subjectthesis}{true}% }{% @@ -271,11 +298,11 @@ % \end{field}^^A \@thesis % \end{macro}^^A \thesis % \begin{macro}{\graduation} -% \changes{v2.02}{2014/05/16}{neu, von \cs{degree} umbenannt}%^^A +% \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 +% \changes{v2.02}{2014/05/16}{neu, von \cs{@degree} umbenannt}^^A % \begin{field}{\@graduationabbr} -% \changes{v2.02}{2014/05/16}{neu, \cs{@degreeabbr} umbenannt}%^^A +% \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 @@ -292,19 +319,40 @@ % \end{field}^^A \@graduationabbr % \end{field}^^A \@graduation % \end{macro}^^A \graduation +% +% \iffalse +%</class> +%<*class|poster> +% \fi +% % \begin{macro}{\professor} % \begin{field}{\@professor} +% \begin{field}{\@professor@foot} +% \changes{v2.04}{2015/05/06}{neu}^^A % Angabe des verantwortlichen Hochschullehrers für Titel und Aufgabenstellung, % wird im Makro \cs{@professor} gespeichert. % \begin{macrocode} +%<*class> \newcommand*\@professor{} -\newcommand*\professor[1]{\gdef\@professor{#1}} +\newcommand*\professor[2][]{\gdef\@professor{#2}} +%</class> +%<*poster> +\newcommand*\@professor@foot{} +\renewcommand*\professor[2][\@empty]{\tud@foot@line@add{professor}{#2}{#1}} +%</poster> % \end{macrocode} +% \end{field}^^A \@professor@foot % \end{field}^^A \@professor % \end{macro}^^A \professor +% +% \iffalse +%</class|poster> +%<*class> +% \fi +% % \begin{macro}{\supervisor} -% \changes{v2.02}{2014/05/16}{Automatisch erzeugter Eintrag der Betreuer mit -% \cs{supervisor} für Selbstständigkeitserklärung verworfen}%^^A +% \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. @@ -315,8 +363,8 @@ % \end{field}^^A \@supervisor % \end{macro}^^A \supervisor % \begin{macro}{\supporter} -% \changes{v2.02}{2014/05/16}{Automatisch erzeugter Eintrag der Betreuer mit -% \cs{supervisor} für Selbstständigkeitserklärung verworfen}%^^A +% \changes{v2.02}{2014/05/16}{erzeugter Eintrag der Betreuer mit +% \cs{supervisor} 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 @@ -389,27 +437,45 @@ % \end{macro}^^A \placeofbirth % \begin{macro}{\publisher} % \begin{field}{\@publisher} -% \changes{v2.02}{2014/07/25}{entfernt}%^^A +% \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} +% \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} +% \end{macrocode} +% \end{length}^^A \tud@signatureskip % \begin{macro}{\confirmationclosing} % \begin{field}{\@confirmationclosing} -% \changes{v2.02}{2014/07/25}{\cs{@@date} mit \cs{@date} ersetzt}%^^A +% \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{% - \medskip% - \noindent\@place, \@date% - \\[20mm plus 10mm minus 10mm]% + \tud@datecheck% + \ifx\@date\@empty\else% + \medskip\noindent% + \ifx\@place\@empty\else\@place,\nobreakspace\fi\@date% + \fi% + \vskip\tud@signatureskip\noindent% \begingroup% - \let\and\hfil% \let\thanks\@gobble% \let\footnote\@gobble% - \@author% + \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% \endgroup% } @@ -429,102 +495,6 @@ % \end{field}^^A \@place % \end{macro}^^A \place % -% \iffalse -%</class> -%<*supervisor> -% \fi -% -% \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}{\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 kann eine oder mehrere Kontaktpersonen angegeben werden. -% Zusätzlich kann für jede einzelne Person ein Raum, eine Telefonnummer und die -% E-Mail"=Adresse hinzugefügt werden. -% \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[1]{\gdef\@emailaddress{#1}} -\AfterPackage*{hyperref}{% - \renewrobustcmd*\emailaddress[1]{% - \gdef\@emailaddress{\href{mailto:#1}{\nolinkurl{#1}}}% - }% -} -% \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}{\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 -% -% \iffalse -%</supervisor> -%<*class> -% \fi -% % \subsection{Datumsfelder} % % \begin{macro}{\printdate} @@ -547,7 +517,7 @@ % Datumsfeld übergeben, als zweites Argument der gewünschte Inhalt. % \begin{macrocode} \newcommand*\tud@printdate[2]{% - \ifx\today#2% + \ifx\today#2\relax% \gdef#1{#2}% \else% \ifxblank{#2}% @@ -557,10 +527,35 @@ } % \end{macrocode} % \end{macro}^^A \tud@printdate +% \begin{macro}{\tud@datecheck} +% \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{% + \ifdefvoid{\@duedate}{% + \ClassWarning{\TUDClassName}{% + `\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% + It's substituted by the given due date% + }% + \global\let\@date\@duedate% + }% + \global\let\tud@datecheck\relax% +} +% \end{macrocode} +% \end{macro}^^A \tud@datecheck % \begin{macro}{\date} % \begin{field}{\@date} % \begin{field}{\@@date} -% \changes{v2.02}{2014/07/25}{entfernt}%^^A +% \changes{v2.02}{2014/07/25}{entfernt}^^A % \begin{field}{\@datemore} % 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 @@ -571,8 +566,9 @@ % \begin{macrocode} \newcommand*\@datemore{} \renewcommand*\date[2][]{% - \gdef\@datemore{#1}% + \gdef\@datemore{\trim@spaces{#1}}% \tud@printdate{\@date}{#2}% + \global\let\tud@datecheck\relax% } % \end{macrocode} % \end{field}^^A \@datemore @@ -599,12 +595,212 @@ % \end{macrocode} % \end{field}^^A \@dateofbirth % \end{macro}^^A \dateofbirth +% \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 +% 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 \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. +% \begin{macrocode} +\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}{}% + }{}% +% \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 \val{\#1} konstruiert wird +% (\cs{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\endcsname{##1}{##2}% + }% + \begingroup% + \let\and\relax% +% \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 +% (\cs{tud@split\meta{Feld}}) aufgerufen werden. +% \begin{macrocode} +\newcommand*\tud@multiple@@@split[2]{% + \ifx\relax#1\relax% + \let\@tempb\relax% + \else% + \def\@tempb{#2\tud@multiple@@split#1\relax}% + \fi% + \@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 +% \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 +% \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. +% +% 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 \cs{tud@split\meta{Feld}@list} aufgelistet sind ohne eine Ausgabe +% zu erzeugen. +% \begin{macrocode} +\newcommand*\tud@multiple@fields@store[2]{% + \letcs\@tempa{tud@split#1@list}% + \let\and\relax% + \@for\@tempb:=\@tempa\do{% + \ifx\@tempb\@empty\else% + \ifcsdef{@\@tempb}{\tud@cmd@store{@\@tempb}}{}% + \fi% + }% + \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]{% + \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% + }% +} +% \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 +% 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} +% \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. +% +% 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. +% \begin{macrocode} +\newcommand*\tud@split@author[2]{} +\newcommand*\tud@split@author@list{% + authormore,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 %</class> %<*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 @@ -630,6 +826,137 @@ % % \iffalse %</supervisor> +%<*supervisor|poster> +% \fi +% +% \begin{macrocode} +\@ifpackageloaded{% +%<supervisor> tudscrposter% +%<poster> 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. +% \begin{macrocode} +} +% \end{macrocode} +% +% \iffalse +%</supervisor|poster> +%<*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. +% \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% + }% + }% +}% +% \end{macrocode} +% \end{field}^^A \@webpage +% \end{macro}^^A \webpage +% +% \iffalse +%</poster> % \fi % % \Finale |