% \iffalse Meta-Kommentar % % Copyright (C) 1997 Projektgruppe ACIT, Lehrstuhl VII, % Fachbereich Informatik, Universit"at Dortmund % 1997-1999,2006,2009 Thomas Leineweber (protocol@tleine.de) % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 % of this license or (at your option) any later version. % The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.3 or later is part of all distributions of LaTeX % version 2005/12/01 or later. % % This work has the LPPL maintenance status `maintained'. % % The Current Maintainer of this work is Thomas Leineweber. % % This work consists of the files protocol.dtx and protocol.ins, % protest.tex, readme % and the derived file protocol.cls. % % % Dies ist der dokumentierte Makrocode zur Erzeugung und Dokumentation % der LaTeX-Klasse `protocol'. % \fi % % \CheckSum{289} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z %% Digits \0\1\2\3\4\5\6\7\8\9 %% Exclamation \! Double quote \" Hash (number) \# %% Dollar \$ Percent \% Ampersand \& %% Acute accent \' Left paren \( Right paren \) %% Asterisk \* Plus \+ Comma \, %% Minus \- Point \. Solidus \/ %% Colon \: Semicolon \; Less than \< %% Equals \= Greater than \> Question mark \? %% Commercial at \@ Left bracket \[ Backslash \\ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} % % \title{\LaTeX-Dokumentklasse zur Erstellung von Sitzungs-Protokollen} % \author{Thomas Leineweber} % \maketitle % \tableofcontents % % \section{Identifizierung und Dokumentation} % % Diese Dokumentklasse kann nur mit \LaTeXe\ benutzt werden. Deshalb % wird sichergestellt, da\ss eine entsprechende Fehlermeldung ausgegeben % wird, falls ein anderes \TeX-Format benutzt wird. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} % \end{macrocode} % % Nenne den Klassennamen und die Version. % \begin{macrocode} %<+protocol>\ProvidesClass{protocol} %<+protocol> [2009/04/24 v1.10 %<+protocol> LaTeX-Class fuer Sitzungs-Protokolle TL] % \end{macrocode} % % % Es gibt eine eigene Klasse um \LaTeXe-Klassen zu dokumentieren. % \begin{macrocode} %<*driver> \documentclass[a4paper]{ltxdoc} % \end{macrocode} % Setze entsprechende Optionen. Die Zeilen sollen numeriert werden % und der Index soll in die Zeilen verweisen. Au"serdem wird auf % Deutsch dokumentiert. % \begin{macrocode} \CodelineNumbered \CodelineIndex \EnableCrossrefs \RecordChanges \setcounter{StandardModuleDepth}{1} \usepackage{german} \usepackage[T1]{fontenc} % \end{macrocode} % Alle Details sollen ausgegeben werden. % \begin{macrocode} \begin{document} \DocInput{protocol.dtx} \PrintIndex \PrintChanges \end{document} % % \end{macrocode} % % \changes{v1.0}{1997/06/08}{Erste Version.} % \changes{v1.2}{1997/06/09}{Dokumentation berichtigt} % \changes{v1.4}{1999/01/07}{Ab sofort kann auch der Name der % Gruppe ge"andert werden} % \changes{v1.5}{1999/01/22}{Die Klasse hei"st ab sofort protocol und % ist fuer generische Protokolle gedacht.} % \changes{v1.6}{1999/02/05}{"Anderungen von Norbert G"overt eingebaut.} % \changes{v1.6a}{1999/02/19}{Versuch, die Befehlsnamen anzugleichen} % \changes{v1.7}{1999/07/30}{Endg"ultige Befehlsnamen festgelegt} % \iffalse % Copyright (C) 1997 Projektgruppe ACIT, Universit"at Dortmund % 1997-1999,2006,2009 Thomas Leineweber (protocol@tleine.de) % all rights reserved. % \fi % % \StopEventually % % % \section{Grundeinstellungen} % % Hier werden die einzelnen Optionen deklariert und an die Klasse scrartcl, % auf der alles basiert weitergegeben. Ein paar Optionen werden einfach % ausgeschaltet. % \changes{v1.3}{1997/06/10}{Verschiedene Optionen d"urfen in dieser Klasse % nicht benutzt werden.} % Die Optionen a5paper, b5paper, twocolumn und titlepage sind f"ur % diese Klasse nicht vorgesehen und werden deshalb abgefangen. % \begin{macrocode} \DeclareOption{a5paper} {\ClassError{protocol}{Option `a5paper' not supported}{}} \DeclareOption{b5paper} {\ClassError{protocol}{Option `b5paper' not supported}{}} \DeclareOption{twocolumn} {\ClassError{protocol}{Option `twocolumn' not supported}{}} \DeclareOption{titlepage} {\ClassError{protocol}{Option `titlepage' not supported}{}} % \end{macrocode} % Die Option [nonext] sorgt daf"ur, dass der Termin f"ur die n"achste % Sitzung nicht ausgegeben wird. L"osche daf"ur am Anfang des Dokuments % das Kommando \cs{\@makefoot}. % \changes{v1.10}{2009/04/24}{Zus"atzliche Option nonext zum Unterdr"ucken des n"achsten Termins} % \begin{macrocode} \DeclareOption{nonext} {\AtBeginDocument{\let\@makefoot\relax}} % \end{macrocode} % Alle anderen Optionen werden an die Klasse scrartcl weitergegeben. % \changes{v1.8}{2004/02/05}{Basisklasse article durch scrartcl ersetzt.} % \begin{macrocode} \DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrartcl}} \ProcessOptions\relax % \end{macrocode} % % Nun kann die Klasse scrartcl geladen werden. % \changes{v1.1}{1997/06/09}{\cs{LoadClassWithOptions} durch \cs{LoadClass} % ersetzt. Leider ist im PG-Pool noch eine verdammt alte \LaTeXe-Version. % Die Optionen m"ussen noch angepa"st werden.} % \changes{v1.3}{1997/06/10}{Der Befehl \cs{LoadClass} kann bleiben.} % \begin{macrocode} \PassOptionsToClass{halfparskip}{scrartcl} \LoadClass{scrartcl} % \end{macrocode} % % \section{Layout} % % Zuerst werden ein paar zus"atzliche Befehle definiert, die einige % Eigenschaften des Protokolls definieren. % % \subsection{Definitionen f"ur den Benutzer} % % \begin{macro}{\groupname} % \changes{v1.4}{1998/01/07}{Neues Makro \cs{pgname}} % \changes{v1.5}{1998/01/22}{\cs{pgname} in \cs{groupname} geaendert} % \begin{macro}{\ProtocolGroupName} % \changes{v1.10}{2009/04/24}{Im Protokoll kann ab sofort das Makro \cs{ProtocolGroupName} genutzt werden. Es gibt den mit \cs{groupname} definierten Gruppennamen wieder aus.} % \begin{macro}{\chair} % \changes{v1.6a}{1999/02/19}{\cs{vorsitz} in \cs{chair} umbenannt} % \begin{macro}{\writer} % \changes{v1.6a}{1999/02/19}{\cs{protokoll} in \cs{writer} umbenannt} % \begin{macro}{\date} % \begin{macro}{\begintime} % \changes{v1.6a}{1999/02/19}{\cs{beginn} in \cs{begintime} umbenannt} % \begin{macro}{\endtime} % \changes{v1.6}{1999/02/05}{Neues Makro \cs{ende}} % \changes{v1.6a}{1999/02/19}{\cs{ende} in \cs{endtime} umbenannt} % \begin{macro}{\nextdate} % \begin{macro}{\nextplace} % \changes{v1.6}{1999/02/05}{Neues Makro \cs{nextplace}} % \begin{macro}{\nexttime} % Die folgenden Deklarationen, die hier mit Beispielen angegeben werden, % stellen Informationen "uber die Sitzung zur Verf"ugung. % \begin{itemize} % \item |\groupname{PG 296 -- ACIT}| : Nummer und/oder Name der % Gruppe, deren Sitzung protokolliert wird. Ist auf jeden Fall zu setzen. Hier wird auch das Makro \cs{ProtocolGroupName} gesetzt, mit dem der Gruppenname innerhalb des Protokolls ausgegeben werden kann. % \begin{macrocode} \def\groupname#1{\gdef\@groupname{#1}\gdef\ProtocolGroupName{#1}} % \end{macrocode} % \item |\chair{Lothar Laber}| : gibt an, wer den Vorsitz in der % Sitzung hatte. Mu"s definiert werden. % \begin{macrocode} \def\chair#1{\gdef\@chair{#1}} % \end{macrocode} % \item |\writer{Siggi Schreiber}| : Wer Protokoll gef"uhrt % hat. Mu"s definiert werden. % \begin{macrocode} \def\writer#1{\gdef\@writer{#1}} % \end{macrocode} % \item |\date{10. Juni 1997}| : Das Datum der Sitzung. Hierf"ur wird die % Standarddeklaration aus der Klasse article genommen. Wenn |\date| % nicht deklariert wird, wird das aktuelle Datum genommen. % \item |\begintime{08:30}| : Beginn der Sitzung. Mu"s ebenfalls % gesetzt werden. % \begin{macrocode} \def\begintime#1{\gdef\@begintime{#1}} % \end{macrocode} % \item |\endtime{14:47}| : Ende der Sitzung. Mu"s auch % gesetzt werden. % \begin{macrocode} \def\endtime#1{\gdef\@endtime{#1}} % \end{macrocode} % \item |\nextdate{17. Juni 1997}| : Datum der folgenden Sitzung. % \begin{macrocode} \def\nextdate#1{\gdef\@nextdate{#1}} % \end{macrocode} % \item |\nextplace{Raum 08/15 im Geb"aude 4711}| : Ort der folgenden % Sitzung. % \begin{macrocode} \def\nextplace#1{\gdef\@nextplace{#1}} % \end{macrocode} % \item |\nexttime{08:30}| : Uhrzeit der n"achsten Sitzung. Dito. % \begin{macrocode} \def\nexttime#1{\gdef\@nexttime{#1}} % \end{macrocode} % \end{itemize} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \subsection{Interne Befehle zur Umsetzung} % \begin{macro}{\@groupname} % \changes{v1.4}{1998/01/07}{Neues Makro \cs{@pgname}} % \changes{v1.5}{1998/01/22}{\cs{@pgname} in \cs{@groupname} geaendert} % \begin{macro}{\@chairman} % \begin{macro}{\@writer} % \begin{macro}{\@nextdate} % \begin{macro}{\@nextplace} % \changes{v1.6}{1999/02/05}{Neues Makro \cs{@nextplace}} % \begin{macro}{\@nexttime} % \begin{macro}{\@begintime} % \begin{macro}{\@endtime} % \changes{v1.6}{1999/02/05}{Neues Makro \cs{@ende}} % Dies sind die internen Makros, in denen die entsprechenden Werte % gespeichert werden. Es wird sichergestellt, da"s eine Warnung ausgegeben % wird, falls kein Wert eingegeben wird. Bei Standardwerten werden % sie hier gesetzt. % \begin{macrocode} \def\@groupname{\ClassWarning{protocol}{No \noexpand\groupname given}} \def\@chair{\ClassWarning{protocol}{No \noexpand\chair given}} \def\@writer{\ClassWarning{protocol}{No \noexpand\writer given}} \global\let\@nextdate\@empty \gdef\@nextplace{\ClassWarning{protocol}{No \noexpand\nextplace given}} \gdef\@nexttime{\ClassWarning{protocol}{No \noexpand\nexttime given}} \gdef\@begintime{\ClassWarning{protocol}{No \noexpand\beginn given}} \gdef\@endtime{\ClassWarning{protocol}{No \noexpand\endtime given}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % % \subsection{Deklarationen zur Ausgabe der Daten} % \begin{macro}{\makehead} % \begin{macro}{\@makehead} % Das Kommande |\makehead| sorgt daf"ur, da"s alle wichtigen % Informationen zum Anfang des Dokumentes ausgegeben werden. Es wird mit % |\AtBeginDocument| aufgerufen. Hier habe ich schamlos die Definition von % |\maketitle| aus den Standard-Klassen kopiert und f"ur meine Zwecke % mi"sbraucht. Dabei wird dann auch das Makro |\@makehead| % aufgerufen. Am Ende werden die gebrauchten Makros wieder zur"uckgesetzt. % \begin{macrocode} \newcommand\makehead{\par \begingroup \renewcommand\thefootnote{\@fnsymbol\c@footnote}% \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}% \long\def\@makefntext##1{\parindent 1em\noindent \hb@xt@1.8em{% \hss\@textsuperscript{\normalfont\@thefnmark}}##1}% \newpage \global\@topnum\z@ % Prevents figures from going at top of page. \@makehead \thispagestyle{plain}\@thanks \endgroup \setcounter{footnote}{0}% \global\let\thanks\relax \global\let\maketitle\relax \global\let\@maketitle\relax \global\let\@thanks\@empty \global\let\@author\@empty \global\let\@date\@empty \global\let\@title\@empty \global\let\title\relax \global\let\author\relax \global\let\date\relax \global\let\and\relax \global\let\makehead\relax \global\let\@makehead\relax \global\let\chairman\relax \global\let\@chair\@empty \global\let\writer\relax \global\let\@writer\@empty \global\let\begintime\relax \global\let\@begintime\@empty \global\let\endtime\relax \global\let\@endtime\@empty \global\let\groupname\relax \global\let\@groupname\@empty } % \end{macrocode} % Das Kommando |\@makehead| erzeugt nun den Titel selber. % \changes{v1.8}{2004/02/04}{Groupname nun in boldface} % \begin{macrocode} \def\@makehead{% \clearpage \let\footnote\thanks \null \vskip 2em% \begin{center}% {\titlefont\huge \@groupname \par}% \vskip 1.5em% {\Large \lineskip .5em% Protokoll der Sitzung vom \@date \par}% \vskip 1em% {\Large Sitzungsleitung: \@chair\\ Protokollf\"uhrer: \@writer \par}% \vskip \z@ \@plus 1em \end{center}% \par \vskip 2em{% \noindent\begin{tabular}{@{}ll} Beginn: & \@begintime\ Uhr \\ Ende: & \@endtime\ Uhr \\ \end{tabular}\par}\vskip 0.5cm} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\@makefoot} % Das Kommando |\@makefoot| stellt den Abschlu"s f"ur das Protokoll dar. Es % formatiert eine \"Uberschrift und gibt die Daten f"ur die n"achste Sitzung % an. Es wird implizit mit % |\AtEndOfDocument| aufgerufen. Die Option [nonext] sorft dafür, das dieser Teil nicht gesetzt wird. % \changes{v1.7a}{2002/04/23}{Wenn keine n\"achste Sitzung vereinbart wurde, schreibe dieses auch (Idee und Implementierung: Boris Majowski)} % \changes{v1.8}{2004/02/05}{Punkt am Satzende eingef\"ugt.} % \changes{v1.9}{2006/11/02}{Korrektur von |\@makefoot| nach Hinweisen von L. Humbert und C. Timm} % \begin{macrocode} \newcommand{\@makefoot}{ \ifx\@nextdate\@empty \section*{N\"achste Sitzung} Es wurde keine n\"achste Sitzung vereinbart. \else \section*{N\"achste Sitzung} Die n\"achste Sitzung findet am \@nextdate\ um \@nexttime\ Uhr statt. Ort:~\@nextplace. \fi } % \end{macrocode} % \end{macro} % % \subsection{Die Umgebung Persons} % % \begin{environment}{Persons} % \begin{environment}{Absent} % Die Umgebung Persons stellt eine "Uberschrift f"ur die Anwesenheitsliste % zur Verf"ugung. Daf"ur kann ein beliebiger Text in die Umgebung % geschrieben werden. Das gleiche gilt für die Umgebung Absent f"ur eine % Aufstellung von Abwesenden. % \begin{macrocode} \newenvironment{Persons}{\section*{Anwesenheit:}}{} \newenvironment{Absent}{\section*{Abwesenheit:}}{} % \end{macrocode} % \end{environment} % \end{environment} % % \section{Abschlu"sdeklarationen} % % Zum Beginn soll |\makehead|, zum Ende |\makefoot| aufgerufen werden. % \begin{macrocode} \AtBeginDocument{\makehead} \AtEndDocument{\@makefoot} % \end{macrocode} % % % \Finale % \endinput