% \iffalse meta-comment %/GitFileInfo=tudscr-supervisor.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-supervisor.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} % % % % \section{^^A % Das Paket \pkg{tudscrsupervisor} -- Betreuung wissenschaftlicher Arbeiten^^A % } % % Diese Paket stellt für die \TUDScript-Klassen mehrere Umgebungen und Befehle % zur Erstellung der Aufgabenstellung einer Abschlussarbeit sowie eines % Gutachtens und eines Aushangs bereit. % % \begin{macrocode} %<*package&identify> \ProvidesPackage{tudscrsupervisor}[% %!TUD@Version package (commands for supervisors)% ] \TUD@Class@Check{tudscrsupervisor} % % \end{macrocode} % % \iffalse %<*package&body> % \fi % % \begin{macro}{\tud@multiple@fields@output} % \changes{v2.05}{2016/03/09}{neu}^^A % \begin{macro}{\tud@multiple@fields@style} % \changes{v2.05}{2016/05/26}{neu}^^A % Diesen beiden Makros dienen dazu, unterschiedliche Varianten für die Ausgabe % innerhalb der nachfolgenden Umgebungen generieren zu können. Momentan werden % diese nur innerhalb der \env{task}-Umgebung verwendet. % \ToDo{ % Definition von \cs{tud@multiple@fields@style} mit \cs{FamilyNumericalKey} % }[v2.07] % \begin{macrocode} \newcommand*\tud@multiple@fields@output{} \newcommand*\tud@multiple@fields@style{table} % \end{macrocode} % \end{macro}^^A \tud@multiple@fields@style % \end{macro}^^A \tud@multiple@fields@output % \begin{macro}{\student} % Der Befehl \cs{student} kann als Alias für \cs{author} genutzt werden. % \begin{macrocode} \newcommand*\student{\author} % \end{macrocode} % \end{macro}^^A \student % \begin{macro}{\tud@authortable@set} % \changes{v2.01b}{2014/06/04}{Probleme mit Paket \pkg{calc} behoben}^^A % \begin{length}{\tud@dim@authortable} % Der Befehl \cs{tud@authortable@set} dient bei Aufgabenstellung und Gutachten % zur Ausgabe einer Tabelle mit Informationen zum Autor beziehungsweise zu den % Autoren.\footnote{Matrikelnummer, Jahrgang, Studiengang etc.} % \begin{macrocode} \tud@newdim\tud@dim@authortable \newcommand*\tud@authortable@set{% \begingroup% \let\thanks\@gobble% \let\footnote\@gobble% % \end{macrocode} % Zu Beginn wird eine Tabelle mit den Bezeichnern aller genutzten Feldern % ausgegeben. Danach folgen alle Autoren. Damit ein einheitliches Layout % entsteht und auch die Tabellen am Ende der Umgebung in der ersten Spalte die % gleiche Breite haben wie im oberen Teil, ist die Bestimmung einer festen % Spaltenbreite notwendig, die so breit wie der längste Bezeichner ist. % Dafür muss festgestellt werden, welche optionalen Felder denn nun überhaupt % genutzt werden. Dafür wird \cs{tud@multiple@fields@preset} mit \cs{null} als % Argument aufgerufen, um alle potenziellen Felder erkennen zu können. % \begin{macrocode} \tud@multiple@split{@author}% \tud@multiple@fields@preset{@author}{\null}{}% \tud@setdim\tud@dim@authortable{2em}% % \end{macrocode} % Anschließend werden die Bezeichner sowohl der obligatorischen als auch der % genutzten, optionalen Felder in \cs{@tempa} gespeichert. Mit der Liste wird % der längste Bezeichner bestimmt und dessen Länge in \cs{tud@dim@authortable} % gespeichert. % \begin{macrocode} \def\@tempb##1{% \tud@if@strempty{\csname @##1\endcsname}{}{% \eappto\@tempa{,\expandafter\noexpand\csname ##1name\endcsname}% }% }% \def\@tempa{% \namesname,\titlename,\issuedatetext,\duedatetext,\supervisorname% }% \tud@ifin@and{\@supervisor}{\appto\@tempa{,\supervisorothername}}{}% \@tempb{referee}% \tud@ifin@and{\@referee}{\appto\@tempa{,\refereeothername}}{}% \@tempb{matriculationnumber}% \@tempb{matriculationyear}% \@tempb{course}% \@tempb{discipline}% \@for\@tempb:=\@tempa\do{% \settowidth\@tempdima{\@tempb\tud@title@delimiter}% \ifdim\@tempdima>\tud@dim@authortable\relax% \tud@setdim\tud@dim@authortable{\@tempdima}% \fi% }% \global\tud@dim@authortable=\tud@dim@authortable% % \end{macrocode} % Die Tabelle mit den benötigten Bezeichnern. Damit diese bis an den Seiterand % ohne Warnungen gesetzt werden können, wird die Auszeichnung von Absatzenden % aufgehoben. % \begin{macrocode} \begingroup% \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative% \begin{tabular}{@{}p{\tud@dim@authortable}}% \ifx\@course\@empty\else% \coursename\tud@title@delimiter\tabularnewline% \fi% \ifx\@discipline\@empty\else% \disciplinename\tud@title@delimiter\tabularnewline% \fi% \namesname\tud@title@delimiter\tabularnewline% \ifx\@matriculationnumber\@empty\else% \matriculationnumbername\tud@title@delimiter\tabularnewline% \fi% \ifx\@matriculationyear\@empty\else% \matriculationyearname\tud@title@delimiter\tabularnewline% \fi% \end{tabular}% % \end{macrocode} % Der Befehl \cs{tud@split@author@do} wird innerhalb der \TUDScript-Klassen zur % formatierten Ausgabe mehrerer Autoren auf der Titelseite genutzt, welche mit % \cs{author}\marg{Autor(en)} angegeben und mit \cs{and} getrennt wurden. Er % wird hier auf die Ausgabe der Autoren mit den jeweils zusätzlich gegebenen % Informationen in einer Tabelle angepasst. % \begin{macrocode} \renewcommand*\tud@split@author@do[2]{% % \end{macrocode} % Weil alle Autoren in einer Tabelle gesetzt werden wird geprüft, welche Felder % individuell via \cs{author} angegeben wurden. Damit die Tabellen die gleiche % Höhe haben, auch wenn für einen Autor ein Feld ausgelassen wurde, werden alle % insgesamt angegebenen Felder mit via \cs{tud@multiple@fields@preset} mit % \cs{null} initialisiert. Anschließend werden die für den aktuellen Autor % angegebenen Felder gesetzt. % \begin{macrocode} \tud@multiple@fields@store{@author}{##1}% \tud@multiple@fields@preset{@author}{\null}{##1}% % \end{macrocode} % Nach viel Geplänkel kommt nun die eigentliche Tabelle mit ggf. zusätzlichen % Informationen zum Autor. % \begin{macrocode} \begin{tabular}{l@{}}% \ifx\@course\@empty\else\@course\tabularnewline\fi% \ifx\@discipline\@empty\else\@discipline\tabularnewline\fi% \textsf{\textbf{\ignorespaces##1}}\tabularnewline% \ifx\@matriculationnumber\@empty\else% \@matriculationnumber\tabularnewline% \fi% \ifx\@matriculationyear\@empty\else% \@matriculationyear\tabularnewline% \fi% \end{tabular}% % \end{macrocode} % Sollte ein weiterer Autor folgen, wird \cs{tabcolsep} zusätzlich eingefügt, % um den Standardabstand bei Tabellen zu sichern, da die Tabelle vorher ohne % rechten \enquote{Rand} gesetzt wurde, um die letzte Tabelle ggf. genau bis % zum rechten Rand setzen zu können. % \begin{macrocode} \tud@multiple@fields@restore{@author}% \tud@multiple@@@split{##2}{\enskip\hspace{\tabcolsep}}% }% % \end{macrocode} % Hier erfolgt die eigentliche Ausgabe. % \begin{macrocode} \tud@multiple@split{@author}% % \end{macrocode} % Nach den Autoren wird der Titel über die komplette Textbreite ausgegeben. % Danach wird der Inhalt der Aufgabenstellung gesetzt. % \begin{macrocode} \vskip\smallskipamount% \begin{tabular}{@{}p{\tud@dim@authortable}% p{\dimexpr\textwidth-\tabcolsep*2-\tud@dim@authortable\relax}@{}}% \titlename\tud@title@delimiter & \tud@RaggedRight\textsf{\textbf{\@@title}}% \end{tabular}% \par% \endgroup% \ifdim\parskip>\z@\else\vskip\topsep\fi% \endgroup% \noindent\ignorespaces% } % \end{macrocode} % \end{length}^^A \tud@dim@authortable % \end{macro}^^A \tud@authortable@set % \begin{field}{\@headline} % Hier wird der Inhalt des Parametes \prm{headline} hinein geschrieben. % \begin{macrocode} \newcommand*\@headline{} % \end{macrocode} % \end{field}^^A \@headline % % \subsection{Aufgabenstellung} % % \begin{environment}{task} % \changes{v2.03}{2015/01/05}{Bugfix für initialen Seitenstil}^^A % \changes{v2.03}{2015/01/05}{Bugfix für Seitenstil im zweiseitigen Satz}^^A % \begin{parameter}{headline} % \begin{parameter}{heading} % \begin{parameter}{line} % \begin{parameter}{style} % Die Umgebung für die Aufgabenstellung nutzt die \env{tudpage}-Umgebung. Sie % wird auf einer neuen (rechten) Seite gesetzt. Es wird zu Beginn eine Tabelle % mit Informationen zum Autor gesetzt. Zum Abschluss werden Betreuer, % Hochschullehrer und ggf. Vorsitzender des Prüfungsausschusses ausgegeben. % \begin{macrocode} \newenvironment{task}[1][]{% % \end{macrocode} % Die \env{tudpage}-Umgebung wird geöffnet. Mit dem Parameter \opt{headline} % kann die standardmäßige Überschrift überschrieben werden. % \ToDo{style=table/inline mit \cs{FamilyNumericalKey}}[v2.07] % \begin{macrocode} \cleardoubleoddpage% \let\@headline\@empty% \TUD@parameter@family{tudpage}{% \TUD@parameter@def{headline}{\tud@trim@field\@headline{##1}}% \TUD@parameter@let{heading}{headline}% \TUD@parameter@let{line}{headline}% \TUD@parameter@def{style}{\def\tud@multiple@fields@style{##1}}% \TUD@parameter@handler@default{headline}% }% \tudpage[{pagestyle=empty,#1}]% % \end{macrocode} % Zu Beginn wird als erstes die Überschrift und~-- die entsprechende Option % vorausgesetzt~-- im PDF einen Lesezeichen- oder auch Outline-Eintrag gesetzt. % \begin{macrocode} \tudbookmark{\taskname}{task}% \subsection*{% \ifx\@headline\@empty% \taskname\space% \ifx\tasktext\@empty\else\ifx\@@thesis\@empty\else% \ignorespaces\tasktext\space\@@thesis% \fi\fi% \else\@headline\fi% }% \tud@authortable@set% }{% % \end{macrocode} % Da auch Gutachter und Betreuer durch den Befehl \cs{and} getrennt werden, % wird dieser für die korrekte Ausgabe umdefiniert. Anschließend folgt die % Ausgabe in einer Tabelle, die Spalte der Bezeichner entspricht der aus dem % oberen Teil. % \begin{macrocode} \def\tud@multiple@fields@output##1{% \tud@if@strequal{\tud@multiple@fields@style}{table}{% \def\and{% \tabularnewline% \tud@if@strempty{\csuse{##1othername}}{}{% \csuse{##1othername}\tud@title@delimiter% }% & \def\and{\tabularnewline &}% }% }{% \def\and{\unskip,\space\ignorespaces}% }% \csuse{@##1}% }% \removelastskip% \ifdim\parskip>\z@\vskip\parskip\else\vskip\topsep\fi\medskip% \begingroup% \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative% \begin{tabular}{@{}p{\tud@dim@authortable}l@{}}% \ifx\@referee\@empty\else% \refereename\tud@title@delimiter & % \tud@multiple@fields@output{referee}\tabularnewline[1\smallskipamount]% \fi% \supervisorname\tud@title@delimiter & % \tud@multiple@fields@output{supervisor}\tabularnewline[1\smallskipamount]% \issuedatetext\tud@title@delimiter & \@issuedate\tabularnewline% \duedatetext\tud@title@delimiter & \@duedate\tabularnewline% \end{tabular}% % \end{macrocode} % Darunter wird etwas Platz für die Unterschriften von betreuendem Professor % und ggf. Prüfungsausschussvorsitzenden gehalten. Auch diese beiden werden % in einer Tabelle ausgegeben. Die \env{tudpage}-Umgebung wird beendet, und % eine neue (rechte) Seite geöffnet. % \begin{macrocode} \vskip\tud@glue@signaturevskip\noindent% \ifx\@chairman\@empty\else% \begin{tabular}{@{}l@{}}% \@chairman\tabularnewline% \chairmanname\tabularnewline% \end{tabular}% \hfill% \fi% \ifx\@professor\@empty\else% \begin{tabular}{@{}l@{}}% \@professor\tabularnewline% \professorname\tabularnewline% \end{tabular}% \fi% \par% \endgroup% \endtudpage% \aftergroup\cleardoublepage% } % \end{macrocode} % \end{parameter}^^A style % \end{parameter}^^A line % \end{parameter}^^A heading % \end{parameter}^^A headline % \end{environment}^^A task % \begin{macro}{\taskform} % Dies soll die Standardform einer Aufgabenstellung sein. Im ersten Argument % werden kurz die Ziele motiviert und erläutert, im zweiten Argument werden im % besten Fall die Schwerpunkte in einer \env{itemize}-Umgebung aufgeschlüsselt. % \ToDo{optionales Argument zum Schluss für nachfolgenden Text}[v2.07] % \begin{macrocode} \newcommand\taskform[3][]{% \begin{task}[{#1}]% \ifblank{#2}{}{\minisec{\objectivesname}\smallskip#2}% \ifblank{#3}{}{% \minisec{\focusname}\smallskip% \begin{itemize}\tud@RaggedRight% #3% \end{itemize}% }% \end{task}% } % \end{macrocode} % \end{macro}^^A \taskform % % \subsection{Gutachten} % % \begin{environment}{evaluation} % \changes{v2.03}{2015/01/05}{Bugfix für Seitenstil im zweiseitigen Satz}^^A % \begin{parameter}{headline} % \begin{parameter}{heading} % \begin{parameter}{line} % \begin{parameter}{grade} % Die Umgebung für das Gutachten nutzt ebenfalls die \env{tudpage}-Umgebung. Sie % wird auf einer neuen (rechten) Seite gesetzt. Es wird zu Beginn eine Tabelle % mit Informationen zum Autor gesetzt. Zum Abschluss werden Ort, Datum und % Gutachter ausgegeben. % \begin{macrocode} \newenvironment{evaluation}[1][]{% % \end{macrocode} % Die \env{tudpage}-Umgebung wird geöffnet. Mit dem Parameter \opt{headline} % kann die standardmäßige Überschrift überschrieben werden. Zu Beginn wird als % erstes die Überschrift und~-- die entsprechende Option vorausgesetzt~-- im % PDF einen Lesezeichen- oder auch Outline-Eintrag gesetzt. % \begin{macrocode} \cleardoubleoddpage% \let\@headline\@empty% \TUD@parameter@family{tudpage}{% \TUD@parameter@def{headline}{\tud@trim@field\@headline{##1}}% \TUD@parameter@let{heading}{headline}% \TUD@parameter@let{line}{headline}% \TUD@parameter@def{grade}{\def\@grade{##1}}% \TUD@parameter@handler@default{headline}% }% \tudpage[{pagestyle=empty,#1}]% \tudbookmark{\evaluationname}{evaluation}% \subsection*{% \ifx\@headline\@empty% \evaluationname\space% \ifx\evaluationtext\@empty\else\ifx\@@thesis\@empty\else% \ignorespaces\evaluationtext\space\@@thesis% \fi\fi% \else\@headline\fi% }% \tud@authortable@set% }{% % \end{macrocode} % Die gegebenen Note sowie Ort und Datum werden am Ende ggf. ausgegeben. % \begin{macrocode} \removelastskip% \ifdim\parskip>\z@\vskip\parskip\else\vskip\topsep\fi% \tud@setglue\@tempskipa{\smallskipamount}% \ifx\@grade\@empty\else% \vskip\@tempskipa\noindent% \gradetext% \tud@setglue\@tempskipa{\bigskipamount}% \fi% \ifx\@date\@empty\else% \vskip\@tempskipa\noindent% \ifx\@place\@empty\else\@place,\nobreakspace\fi\@date% \fi% \vskip\tud@glue@signaturevskip\noindent% % \end{macrocode} % Der Befehl \cs{and} wird für einen möglichen Zweitgutachter angepasst. Das % Hilfsmakro \cs{@tempa} dient zur Übernahme des richtigen Bezeichners für % Erst- bzw. Zweitgutachter. Sollten mit \cs{referee} keine Gutachter angegeben % sein, so werden die angegeben Betreuer verwendet. % \begin{macrocode} \ifx\@referee\@empty\let\@referee\@supervisor\fi% \let\@tempa\refereename% \def\and{% \tabularnewline% \@tempa% \endtabular% \hfill% \tabular{@{}l@{}}% \global\let\@tempa\refereeothername% }% \begin{tabular}{@{}l@{}}% \@referee% \tabularnewline% \@tempa% \end{tabular}% \hfill\null% \endtudpage% \aftergroup\cleardoublepage% } % \end{macrocode} % \end{parameter}^^A grade % \end{parameter}^^A line % \end{parameter}^^A heading % \end{parameter}^^A headline % \end{environment}^^A evaluation % \begin{macro}{\evaluationform} % Dies soll die Standardform eines Gutachtens sein. Im ersten Argument wird % kurz die Aufgabenstellung zusammengefasst, im zweiten Argument wird der % Inhalt und die Struktur der Arbeit kurz beschrieben. Im dritten Argument % erfolgt die Bewertung, das letzte Argument beinhaltet die Note. % \begin{macrocode} \newcommand\evaluationform[5][]{% \begin{evaluation}[{#1}]% \ifblank{#2}{}{\minisec{\taskname}\smallskip#2}% \ifblank{#3}{}{\minisec{\contentname}\smallskip#3}% \ifblank{#4}{}{\minisec{\assessmentname}\smallskip#4}% \ifblank{#5}{}{\def\@grade{#5}}% \end{evaluation}% } % \end{macrocode} % \end{macro}^^A \evaluationform % % \subsection{Aushang} % % \begin{environment}{notice} % \begin{parameter}{headline} % \begin{parameter}{heading} % \begin{parameter}{line} % \changes{v2.03}{2015/01/05}{Bugfix für Seitenstil im zweiseitigen Satz}^^A % Die Umgebung für Aushänge nutzt ebenfalls die \env{tudpage}-Umgebung. Sie wird % auf einer neuen (rechten) Seite gesetzt. Die Überschrift wird in der % Voreinstellung auf den sprachabhängigen Bezeichner \cs{noticename} gesetzt, % welcher allerdings mit dem Parameter \opt{headline} überschrieben werden kann. % \begin{macrocode} \newenvironment{notice}[1][]{% \cleardoubleoddpage% \def\@headline{\noticename}% \TUD@parameter@family{tudpage}{% \TUD@parameter@def{headline}{\tud@trim@field\@headline{##1}}% \TUD@parameter@let{heading}{headline}% \TUD@parameter@let{line}{headline}% \TUD@parameter@handler@default{headline}% }% % \end{macrocode} % Es wird zu Beginn das angegebene Datum oben auf der rechten Seite ausgegeben. % Anschließend wird die Überschrift und der gegebene Titel gesetzt. % \begin{macrocode} \tudpage[{pagestyle=empty,cdhead=date,#1}]% \tudbookmark{\noticename}{notice}% \ifx\@headline\@empty\else% \section*{\@headline}% \fi% }{% % \end{macrocode} % Wenn keine Kontaktperson direkt angegeben wurden, werden die Informationen der % angegeben Betreuer verwendet. Wenn eine Personenangabe gefunden wurde, werden % die Kontaktdaten ausgegeben. % \begin{macrocode} \ifx\@contactperson\@empty\let\@contactperson\@supervisor\fi% \ifx\@contactperson\@empty\else% \removelastskip% \ifdim\parskip>\z@\vskip\parskip\else\vskip\topsep\fi% \renewcommand*\tud@split@contactperson@do[2]{% \tud@multiple@fields@store{@contactperson}{##1}% \tud@multiple@fields@preset{@contactperson}{}{##1}% \begin{tabular}[t]{@{}l@{}}% \ignorespaces##1\tabularnewline% \ifx\@emailaddress\@empty\else\@emailaddress\tabularnewline\fi% \ifx\@office\@empty\else\@office\tabularnewline\fi% \ifx\@telephone\@empty\else\@telephone\tabularnewline\fi% \ifx\@telefax\@empty\else\@telefax\tabularnewline\fi% \end{tabular}% \tud@multiple@fields@restore{@contactperson}% \tud@multiple@@@split{##2}{\hfill}% }% \subsection*{\contactpersonname}% \noindent\tud@multiple@split{@contactperson}\hfill\null% \fi% \endtudpage% \aftergroup\cleardoublepage% } % \end{macrocode} % \end{parameter}^^A line % \end{parameter}^^A heading % \end{parameter}^^A headline % \end{environment}^^A notice % \begin{macro}{\noticeform} % Dies soll die Standardform eines Aushangs für eine Abschlussarbeit sein. Im % ersten Argument wird kurz der Inhalt zusammengefasst, im zweiten Argument % werden die Arbeitsschwerpunkte beschrieben. % \begin{macrocode} \newcommand\noticeform[3][]{% \begin{notice}[{#1}]% \ifblank{#2}{}{% \ifx\@@title\@empty\else% \minisec{\expandonce{\@@title}}\medskip% \fi% #2% }% \ifblank{#3}{}{% \minisec{\focusname}\smallskip% \begin{itemize}\tud@RaggedRight% #3% \end{itemize}% }% \end{notice}% } % \end{macrocode} % \end{macro}^^A \noticeform % % \iffalse % % \fi % % \PrintBackMatter % \endinput