\def\fileversion{1.2c}
\def\filedate{94/03/24}

%
% Makrodatei f"ur die Realisierung der Stylebeschreibungsbefehle von
% Stefan Pasche und Andreas Schrell, DANTE-\TeX-Stammtisch, Wuppertal.
% Fehlermeldungen f"ur diese (unver"anderte) Datei an
% Andreas.Schrell@FernUni-Hagen.de
%

%
% Datei nur einmal einlesen!
%
\ifx\StyleName\undefined
    \let\next\relax
\else
    \let\next\endinput
\fi\next

\message{^^JStylebeschreibungsmakrodatei Version \fileversion\space
    vom \filedate.^^J^^J}

%
% \newif darf bei uns nicht \outer sein!
%
\makeatletter
\def\newif#1{\count@\escapechar \escapechar\m@ne
  \expandafter\expandafter\expandafter
   \edef\@if#1{true}{\let\noexpand#1=\noexpand\iftrue}%
  \expandafter\expandafter\expandafter
   \edef\@if#1{false}{\let\noexpand#1=\noexpand\iffalse}%
  \@if#1{false}\escapechar\count@} % the condition starts out false
\makeatother

%
% Normalerweise wird nur eine SB-Datei ausgef"uhrt.
%
\newif\ifSingleBeschreibung
\ifx\AlleDefined\undefined
    \SingleBeschreibungtrue
\else
    \SingleBeschreibungfalse
\fi

\ifx\documentclass\undefined
    \ifSingleBeschreibung
        \documentstyle[german,twoside]{article}
    \else
        \documentstyle[german,twoside,xfinder]{article}
    \fi
\else
    \documentclass[twoside]{article}
    \usepackage{german}
    \ifSingleBeschreibung\else
        \usepackage{xfinder}
    \fi
\fi
\ifSingleBeschreibung\else
    \fields={[\DatenZeile:\Name\Rest]
        }
    \reademptylinefalse
    \serienbrief{{%
        \message{^^JDatei \Name wird bearbeitet...^^J^^J}%
        \input{\Name}}}
    \def\SBFiles#1{%
        \begin{document}
        \addressfile{#1}
        \end{document}}
\fi

\makeatletter

\newif\ifFuerPlain  \FuerPlainfalse
\newif\ifFuerLaTeX  \FuerLaTeXfalse
\newif\ifMitFonts   \MitFontsfalse
\newif\ifVRules     \VRulesfalse

\def\StyleName#1{%
    \def\TEST{#1}%
    \ifx\TEST\empty\else
        \StyleNametrue
    \fi
    \def\@StyleName{#1}%
    \def\@StyleNAME{\uppercase{#1}}}%
\newif\ifStyleName

\def\ifnotempty#1#2{%
    \def\TEST{#1}%
    \ifx\TEST\empty\else#2\fi}

\def\InitialisiereIf#1{%
    \expandafter\newif\csname if#1\endcsname
    \csname #1false\endcsname}

\def\ErstelleBefehl{\@ifstar{\ErstelleMit}{\ErstelleOhne}}

\def\ErstelleOhne#1{%
    \InitialisiereIf{#1}%
    \expandafter\def\csname #1\endcsname##1{%
        \ifnotempty{##1}{\csname #1true\endcsname}%
        \expandafter\def\csname @#1\endcsname{##1}}}
\def\ErstelleMit#1{%
    \InitialisiereIf{#1}%
    \expandafter\def\csname #1\endcsname##1{%
        \ifnotempty{##1}{\csname #1true\endcsname}%
        \expandafter\def\csname @#1\endcsname{##1}%
        \notwendig{#1}}}

\newdimen\MaxAutorName
\newcount\AutorCount
\def\StyleAutor#1 #2{%
	\settowidth{\dimen0}{#1}%
	\ifdim\dimen0>\MaxAutorName
		\setlength\MaxAutorName{\dimen0}%
	\fi
    \csname StyleAutor\the\AutorCount\endcsname{#1}%
    \csname StyleAutorAdresse\the\AutorCount\endcsname{#2}%
    \advance\AutorCount by 1}

\ErstelleBefehl{StyleVersion}
\ErstelleBefehl{StyleDatum}
\AutorCount=0
\MaxAutorName=0pt
\loop
    \ErstelleBefehl{StyleAutor\the\AutorCount}
    \ErstelleBefehl{StyleAutorAdresse\the\AutorCount}
    \advance\AutorCount by 1
\ifnum\AutorCount<6
\repeat
\AutorCount=0

\ErstelleBefehl*{StyleBezugsQuelle}
\ErstelleBefehl*{StyleDokumentation}
\ErstelleBefehl*{StyleKurzBeschreibung}
\ErstelleBefehl{StyleVoraussetzungen}
\ErstelleBefehl*{StyleStichWorte}

\def\StyleFuerPlain#1{%
    \ifnum#1=1
        \FuerPlaintrue
    \fi}

\def\StyleFuerLaTeX#1{%
    \ifnum#1=1
        \FuerLaTeXtrue
    \fi}

\def\StyleMitFonts#1{%
    \ifnum#1=1
        \MitFontstrue
    \fi}

\def\BoxSize{6pt}
\def\BoxMit{\vrule height \BoxSize width \BoxSize depth 0pt}
\def\BoxOhne{{\fboxrule=0.4pt\fboxsep=-\fboxrule
    \fbox{\vbox to \BoxSize{\hbox to \BoxSize{\hss}\vss}}}}

\def\BeschreibungAutor#1 #2{%
    \BeschreibungAutorIntern{#1}
    \BeschreibungAutorAdresse{#2}}

\ErstelleBefehl*{BeschreibungDatum}
\ErstelleBefehl*{BeschreibungAutorIntern}
\ErstelleBefehl{BeschreibungAutorAdresse}

\def\StyleFuerBeschreibung#1#2{%
    \ifnotempty{#1}{%
        \def\TEST{#2}\def\TESTX{sty}%
        \ifx\TEST\TESTX
            \makeatletter
            \input #1.#2
            \makeatother
        \else
            \input #1.#2
        \fi
    }}

%
% Layout
%

\evensidemargin=0mm
\oddsidemargin=0mm

\headheight=0pt
\headsep=0pt

\topmargin=0pt

\textwidth=159.2mm
\textheight=246.2mm

\parindent=0pt
\parskip=0.5\baselineskip

\pagestyle{empty}

\def\sfb{\ifx\undefined\sffamily\else\sffamily\fi
    \ifx\undefined\bfseries\bf\else\bfseries\fi}

%
% Entnommen aus script.sty:
%
\def\labelinglabel#1{\sfb#1\hfil\sc@septext}
\def\labeling{\@ifnextchar [{\@labeling}{\@labeling[]}}
\def\@labeling[#1]#2{\def\sc@septext{#1}
 \begin{list}{}{\settowidth{\labelwidth}{\sfb#2#1}
 \setlength{\leftmargin}{\labelwidth}
 \addtolength{\leftmargin}{\labelsep}
 \let\makelabel\labelinglabel}}
\def\endlabeling{\end{list}}

\def\notwendig#1{%
    \global\let\mynext\relax
    \csname if#1\endcsname\else
        \global\let\mynext\@@end
        \@latexerr{SB-Makro: \expandafter
            \string\csname #1\endcsname\space muss
            eingetragen werden!^^J}
    \fi\mynext}

\def\notwendigor#1#2{%
    \global\let\mynext\relax
    {\count100=0
    \csname if#1\endcsname
        \advance\count100 by 1
    \fi
    \csname if#2\endcsname
        \advance\count100 by 1
    \fi
    \ifnum\count100=0
        \global\let\mynext\@@end
        \@latexerr{SB-Makro:
            \expandafter\string\csname #1\endcsname\space oder
            \expandafter\string\csname #2\endcsname\space
            muss eingetragen werden!^^J}
    \fi}\mynext}

\def\LeseDatum#1.#2.#3.{% ohne "ausruhen" machts TeX wieder nicht:
    \day=#1\relax
    \month=#2\relax
    \year=#3\relax
	\let\Today\today
	\ifnum\day=0
		\def\Today{\the\month.\the\year}%
	\fi
	\ifnum\month=0
		\def\Today{\the\year}%
	\fi
	\ifnum\year=0
		\def\Today{???????}%
	\fi
    \ifnum\year<82 \advance\year by 2000\relax\fi 
					% Wir benutzen ein TeX82. Alles <82 ist >2000!
					% Damit funktionierts noch bis zum Jahr 2081 ;-)
    \ifnum\year<100 \advance\year by 1900\relax\fi}

\def\KonvertiereDatum#1{%
    {\expandafter\LeseDatum#1.%
     \xdef#1{\Today}}}
	 
\newwrite\StichFile

\def\SchreibeStichWorte{%
	\immediate\openout\StichFile=\jobname.stw
	\edef\@StyleStichWorteSp{\@StyleStichWorte\space}%
	\expandafter\SchreibeStichWort\@StyleStichWorteSp 0 }
	 
\def\StichClose{\immediate\closeout\StichFile}
	 
\def\SchreibeStichWort #1 {%
	\def\TEST{#1}%
	\def\RTEST{0}%
	\ifx\TEST\RTEST
		\let\Snext\StichClose
	\else
		\immediate\write\StichFile{#1\string\dotfill\space\jobname}%
		\let\Snext\SchreibeStichWort
	\fi
	\Snext}

\def\ps@stylebesch{%
	\def\@evenhead{\hfil}%
	\def\@oddhead{\hfil}%
	\def\@evenfoot{\hfil\@StyleName\qquad -- \thepage\ --\hfil}%
	\let\@oddfoot\@evenfoot}

\pagestyle{stylebesch}

\newif\ifWeiter

\def\Beschreibung{%
    \notwendig{StyleName}
    \notwendigor{StyleVersion}{StyleDatum}
    \notwendig{StyleAutor0}
    \notwendig{StyleBezugsQuelle}
    \notwendig{StyleDokumentation}
    \notwendig{StyleStichWorte}
    \notwendig{StyleKurzBeschreibung}
    \notwendig{BeschreibungDatum}
    \notwendig{BeschreibungAutorIntern}
    \ifSingleBeschreibung
        \begin{document}
    \else
        \cleardoublepage
    \fi
	\SchreibeStichWorte
    \begin{flushright}
    \Huge\sfb \@StyleNAME
    \end{flushright}
	\thispagestyle{empty}
    \begin{labeling}[ :]{Kurzbeschreibung}
    \item[Bezeichnung] \@StyleName
    \item[Version] \ifStyleVersion\@StyleVersion
        \ifStyleDatum\ vom \fi\fi
        \ifStyleDatum
            \KonvertiereDatum\@StyleDatum
            \@StyleDatum
        \fi
    \item[Autor]
        \AutorCount=0
        \loop
            \leavevmode\hbox to \MaxAutorName{\csname 
			@StyleAutor\the\AutorCount\endcsname\hfil}%
            \expandafter\ifx\csname @StyleAutorAdresse\the\AutorCount
                \endcsname\relax\else
                \ifVRules
                    \ \vrule\
                \else
                    \hskip 1cm
                \fi
                \vtop{\def\\{\egroup\hbox\bgroup\strut\ignorespaces}
                    \hbox\bgroup\strut
                        \csname @StyleAutorAdresse\the\AutorCount\endcsname
                        \egroup}
            \fi
            \advance\AutorCount by 1
            {\expandafter\ifx\csname @StyleAutor\the\AutorCount\endcsname
                \relax\global\Weiterfalse\else\global\Weitertrue\fi}
        \ifWeiter
            \vskip0pt
        \repeat
    \item[Bezugsquelle] \@StyleBezugsQuelle
    \item[Dokumentation] \@StyleDokumentation
    \item[Voraussetzungen]
        {\sc Plain}-\TeX\ \ifFuerPlain\BoxMit\else\BoxOhne\fi\hskip1cm
        \LaTeX\ \ifFuerLaTeX\BoxMit\else\BoxOhne\fi\hskip1cm
        Mit Fonts \ifMitFonts\BoxMit\else\BoxOhne\fi
        \ifStyleVoraussetzungen\\
            \@StyleVoraussetzungen
        \fi
    \item[Stichworte] (\,\@StyleStichWorte\,)
    \item[Kurzbeschreibung] \@StyleKurzBeschreibung
    \vskip 7mm
    \item[Beschreibung] \@BeschreibungAutorIntern
        \ifBeschreibungAutorAdresse
            \ifVRules
                \ \vrule\
            \else
                \hskip 1cm
            \fi
            \vtop{\def\\{\egroup\hbox\bgroup\strut\ignorespaces}
                \hbox\bgroup\strut
                    \@BeschreibungAutorAdresse
                    \egroup}
        \fi
        \hfill
        \KonvertiereDatum\@BeschreibungDatum
        \@BeschreibungDatum
    \end{labeling}\par}

\def\endBeschreibung{%
    \ifSingleBeschreibung
        \par\endgroup
        \def\@currenvir{document}
        \def\next{\end{document}}
    \else
        \def\next{\par\ifodd\c@page\clearpage\hbox{}\fi}
    \fi\next}

\makeatother

\endinput
