\documentstyle[german,dina4]{article}
\author{Robert Tolksdorf\\K"ortestr.~30\\D-1000 Berlin 61}
\title{Kennzeichnung von Vorversionen eines Dokuments}
\def\prelim{{\tt prelim}}
\def\Prelim{{\tt prelim}\ }
\begin{document}
\maketitle
\begin{abstract}
Durch eine kleine Modifikation der Output-Routine von \LaTeX\ werden
Vorver"-sion"-en eines Dokuments durch eine zus"atzliche Zeile am
Seitenende als solche markiert. Die Modifikation wird als Style-Option
implementiert.
\end{abstract}

\section{Das Problem}

Wer Dokumente zur Ver"offentlichung erstellt, schreibt normalerweise
nicht sofort die endg"ultige Version. Vor einer Herausgabe stehen
diverse Korrekturdurchl"aufe; vor einer Ver"offentlichung eine Edition
und Korrektur durch den Herausgeber. Die dabei entstehenden Dokumente
sind vorl"aufige Versionen, Korrekturexemplare oder halbfertige
Notizensammlungen.

Druckt man sich diese Dokumente aus, besteht hinterher keine
M"oglichkeit, auf einen Blick festzustellen, aus welcher Phase der
Dokumentenerstellung der Ausdruck stammt. W"un"-schens"-wert w"are eine
einfache Markierung, m"oglichst mit Ausdruckdatum.

Eine L"osung daf"ur w"are mit \LaTeX, vorl"aufige Versionen
beispielsweise zweispaltig zu setzen und erst in der endg"ultigen
Version auf Spalten zu verzichten. Dieses Vorgehen hat allerdings den
Nachteil, da"s die auch bei \LaTeX\ n"otige visuelle Kontrolle des
Layouts in den Vorversionen nicht m"oglich ist.

Wir implementieren daher eine Dokumentenstil-Option, bei der in den
Vorversionen eine zus"atzliche Zeile mit der Kennzeichnung "`ENTWURF"'
und dem Formatierungsdatum erscheint. Da die Implementierung an der
Output-Routine von \LaTeX\ ansetzt, beeinflu"st sie nicht das Layout.
Da gleichzeitig ein vern"unftiges Layout einen unteren Rand l"a"st,
wird die Markierung im Ausdruck bei gleichbleibender
Druckerseitenl"ange ausreichend Platz finden.

\section{Die \prelim-Option}

Die hier vorgestellte \prelim-Option sorgt f"ur die Kennzeichnung des
Status eines Dokuments als "`preliminary"' -- also vorl"aufig. Dazu
wird sie einfach in der \verb!\documentstyle!-Deklaration als Option
aufgef"uhrt:

{\small\begin{verbatim}
\documentstyle[...,prelim]{...}
\end{verbatim}}

\noindent \Prelim kann an jeder Position in der Liste der Optionen
erscheinen. Jeder Seite wird nun eine Zeile der Art "`ENTWURF (27. Mai
1990 -- 12:34)"' hinzugef"ugt, wobei Datum und Uhrzeit dem
Formatierungszeitpunkt entsprechen. Die Seite wird dabei etwas
h"oher, ohne den Satzspiegel w"ahrend der Formatierung zu "andern. F"ur
die Endversion entfernt man einfach die Option in der
\verb!\documentstyle!-Deklaration.

Text und Aussehen der Markierungszeile sind durch zwei Makros
ver"anderbar. Dabei definiert \verb!\drafttext! den Text, der
den Status des Dokuments bezeichnet -- also als Voreinstellung
"`ENTWURF"' mit Datum und Uhrzeit oder auch "`Draft"' oder "`To appear
in `Die \TeX nische Ko"-m"o"-die'"' oder "`Vorversion"'. Eine "Anderung
ist beispielsweise durch \verb!\def\drafttext{Draft}! m"oglich. Es
sollte hier nur Text expandieren.

Das Aussehen der Zeile ist in \verb!\draftmark! definiert. Hier findet
das Layout der Zeile statt, wobei mindestens ein variabler horizontaler
Leerraum vorhanden sein sollte. Die Voreinstellung lautet
\verb!\rm\hfil\drafttext\hfil!, was die Zeile zentriert und die normale
Modern-Schrift verwendet. Man k"onnte ihr Erscheinungsbild auch mit
einer "Anderung nach \verb!\def\draftmark{\sl\drafttext\hfil}!
modifizieren; dann w"urde die Zeile in {\sl slanted} und linksb"undig
erzeugt. Zum Einf"ugen des Datums der Formatierung kann das Makro
\verb!\timeofday! verwendet werden.

In der endg"ultigen Version eines Dokuments brauchen eventuell
vorhandene Neudefinitionen von \verb!\drafttext! und \verb!\draftmark!
nicht entfernt zu werden, da sie ohne die {\tt prelim}-Option nicht
weiter st"oren. Die Einf"uhrung zweier Makros dient der Trennung
zwischen Inhalt und Aussehen.

Eigentlich sollte die Option {\tt draft} hei"sen. Da aber in \LaTeX\
eine Style-Option \verb!\ds@draft! vordefiniert ist -- bei ihr werden
"ubervolle K"asten durch einen \verb!\vrule! markiert -- schied der
Name aus zugunsten von \Prelim f"ur "`preliminary"'.

\section{Die Implementierung}

Zur Implementierung war ein Blick in {\tt LATEX.TEX} n"otig. Die
zentrale Routine zum Ausgeben einer Seite ist \verb!\@outputpage!. In
ihr wird an \verb!\shipout! eine {\sf vbox} "ubergeben, in der der
Seiteninhalt aus mehreren {\sf hbox} zusammengesetzt wird.  F"ur unsere
Zwecke mu"s nur eine Zeile hinzugef"ugt werden, in der die
Kennzeichnung als {\sf hbox} hinzu kommt.

Die Stil-Option ersetzt die \LaTeX-Definition von \verb!\@outputpage!
einfach durch die so modifizierte. Tats"achlich wurde der Code direkt
aus {\tt LATEX.TEX} herauskopiert. Die Idee zu \verb!\timeofday! stammt
aus {\tt FONTBL.TEX} von Pierre A.\ MacKay.

\noindent
Es folgt der Code von {\tt PRELIM.STY}:

{\small\begin{verbatim}
% Documentstyle-option ``prelim''(-inary)
%
% Copyright (C) 1990 by
% Robert Tolksdorf
% K\"ortestr. 30
% D-1000 Berlin 61
% West-Germany
%
% 27.05.90 Original
% 29.05.90 Added a blank after \today in \draftmark
% 31.05.90 Changed \timeofday to insert an addition `0' (eg. in 2:07)
% 31.07.90 Rearranged the message output
%
\newcount\@hourmin
\def\timeofday{\@hourmin=\time\divide\@hourmin by 60\relax\the\@hourmin:%
  \multiply\@hourmin by -60 \advance\@hourmin by\time\ifnum\@hourmin<10{0}\fi%
  \the\@hourmin}
%
% \drafttext defines what text should appear
%
\def\drafttext{ENTWURF (\today\ -- \timeofday)}
%
% \draftmark defines how the draft-marking line should appear
%
\def\draftmark{\rm\hfil\drafttext\hfil}
%
% We redefine the original LaTeX-output-grandmaster and introduce an
% additional line saying that the document is in draft-status.
%
\def\@outputpage{\begingroup\catcode`\ =10 \if@specialpage
     \global\@specialpagefalse\@nameuse{ps@\@specialstyle}\fi
     \if@twoside
       \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot
            \let\@themargin\oddsidemargin
          \else \let\@thehead\@evenhead
          \let\@thefoot\@evenfoot \let\@themargin\evensidemargin
     \fi\fi
     \shipout
     \vbox{\normalsize \baselineskip\z@ \lineskip\z@
           \vskip \topmargin \moveright\@themargin
           \vbox{\setbox\@tempboxa
                   \vbox to\headheight{\vfil \hbox to\textwidth{\@thehead}}
                 \dp\@tempboxa\z@
                 \box\@tempboxa
                 \vskip \headsep
                 \box\@outputbox
                 \baselineskip\footskip
                 \hbox to\textwidth{\@thefoot}
%
% Here our modification is: simply add an additional line
% to the \vbox that contains the \draftmark. Simple, but it works!
%
                 \hbox to\textwidth{\draftmark}}}\global\@colht\textheight
           \endgroup\stepcounter{page}\let\firstmark\botmark}
%
% Type out a message (it contains a version-number in parenthesis).
%
\typeout{*** This document is in draft-status *** (1-310790RT)}

\endinput
\end{verbatim}}

\end{document}


