%%% { BRACE MATCHING HACK 
%-------------------------------------------------------------------------- 
% Created by T.Birnthaler (FAU Erlangen-Nuernberg, IMMD5 (Mustererkennung)) 
%-------------------------------------------------------------------------- 
\message{Document Style Option `regel' Version 1.0, as of 30. November 1989} 
% 
% Befehle zum Erzeugen von Regeln 
% (werden zusammen mit den Formeln durchnumeriert): 
% 
% Erzeugung: 
%   \begin{regel}             \begin{regel*} 
%     Anweisungen     bzw.      Anweisungen 
%   \end{regel}               \end{regel*}       
%  
% 
% Anweisung: 
%   \IF{Bedingung1 \AND Bedingung2 \AND ... \AND BedingungN}[,.;] 
%   \THEN{Folgerung1 \OR Folgerung2 \OR ... \OR FolgerungM}[,.;] 
%   \label{...} 
%   \nonumber 
% 
% Masse:                (Bedeutung:                             Defaultwert) 
%   \aboveruleskip      (Abstand zu vorhergeh. abgetr. Absatz:        1.5ex) 
%   \belowruleskip      (Abstand zu nachfolg. abgetr. Absatz:         1.5ex) 
%   \aboveruleshortskip (Abstand zu vorhergeh. angrenz. Absatz:       0.5ex) 
%   \belowruleshortskip (Abstand zu nachfolg. angrenz. Absatz:        0.5ex) 
%   \ruleleftindent     (linke Einrueckung:                             1cm) 
%   \rulerightindent    (rechte Einrueckung:                            2cm) 
%   \inruleskip         (Abstand zw. zus.geh. IF- und THEN-Teil:        0pt) 
%   \betweenruleskip    (Abstand zw. zwei Regeln in derselben Umgebung: 1ex) 
%   \rulehskip          (Abstand zw. THEN,AND,OR und folg. Text:        1ex) 
% 
% Bedingung, Folgerung: 
%   beliebiger Text mit TeX-Kommandos zum Zeilenumbruch, 
%   Schriftartwechsel, ... 
% 
% Hinweise: 
%   -- \label-Kommandos *duerfen nur* direkt vor dem abschliessenden 
%      \end{regel}-Kommando von Regeln angegeben werden. 
% 
%   -- Die regel*-Umgebung erzeugt *keine* Numerierung der Regel(n). 
%      Alternativ kann auch in der regel-Umgebung die Numerierung 
%      mit \nonumber unterdrueckt werden. 
% 
%   -- nach dem Argument von \IF- oder \THEN-Anweisungen *darf optional* 
%      eines der Satzzeichen ,;. folgen, das dann im Text nach dem  
%      Argumenttext und der abschliessenden rechten Klammer erscheint. 
% 
%   -- Die Masse *koennen* durch Zuweisung einer beliebigen Laenge mit dem 
%      Kommando   
%                   \setlength{\mass}{laenge} 
% 
%      nach Geschmack veraendert werden. 
% 
%   -- Leerzeichen am Anfang einer Zeile werden von TeX bis zum ersten 
%      echten Zeichen *nicht* beachtet (d.h Einruecken ist erlaubt). 
%----------------------------------------------------------------------- 
 
% interne Boxen 
\newbox\rule@then@box 
\newbox\rule@if@box 
\newbox\rule@and@box 
\newbox\rule@or@box 
\newbox\rule@regel@box 
 
% Masse 
\newdimen\aboveruleskip 
\newdimen\belowruleskip 
\newdimen\aboveruleshortskip 
\newdimen\belowruleshortskip 
\newdimen\ruleleftindent 
\newdimen\rulerightindent 
\newdimen\inruleskip 
\newdimen\betweenruleskip 
\newdimen\rulehskip 
\newdimen\rule@depth   %%% intern verwendet 
 
% Defaultwerte fuer Masse 
\aboveruleskip      = 1.5ex 
\belowruleskip      = 1.5ex 
\aboveruleshortskip = 0.5ex 
\belowruleshortskip = 0.5ex 
\ruleleftindent     = 1cm 
\rulerightindent    = 2cm 
\inruleskip         = 0pt 
\betweenruleskip    = 1ex 
\rulehskip          = 1ex 
 
% fuer Folgen von Regeln 
\newif\if@firstrule \@firstruletrue 
 
% Alternative regel*-Umgebung, *un*numeriert 
\@namedef{regel*}{\regel} 
\@namedef{endregel*}{\nonumber\endregel} 
 
% Normale regel-Umgebung, numeriert 
\def\regel{% 
% 
% Abstand zum vorhergehenden Text bestimmen 
  \ifhmode 
    \ifinner \errmessage{regel-Umgebung in \string\hbox nicht erlaubt}% 
    \else 
%%%   \message{ regel: hmode->aboveshort}% 
      \vskip\aboveruleshortskip 
    \fi 
  \else 
    \ifvmode 
      \if@firstrule 
%%%     \message{ regel: vmode,firsttrue->above}% 
        \ifdim \lastskip < \aboveruleskip 
          \vskip -\lastskip 
          \vskip\aboveruleskip 
        \fi 
      \else 
%%%     \message{ regel: vmode,firstfalse->between}% 
        \@restorepar 
        \everypar{}% 
        \ifdim \lastskip < \betweenruleskip 
          \vskip -\lastskip 
          \vskip\betweenruleskip 
        \fi 
      \fi 
    \else \errmessage{regel-Umgebung in math-mode nicht erlaubt}% 
    \fi 
  \fi 
% 
% Gleichungsnummer aktualisieren 
  \stepcounter{equation}% 
  \let\@currentlabel=\theequation 
  \global\@eqnswtrue 
% 
% hier wegen Schriftgroesse 
  \setbox\rule@then@box=\hbox{THEN\hskip\rulehskip(}%        left parentheses 
  \setbox\rule@if@box=\hbox to \wd\rule@then@box{IF\hfill(}% left parentheses 
  \setbox\rule@and@box=\hbox{AND\hskip\rulehskip}% 
  \setbox\rule@or@box=\hbox{OR\hskip\rulehskip}% 
% 
% Kommandos nur lokal erlauben 
  \def\IF{\RULE@IF}% 
  \def\THEN{\RULE@THEN}% 
  \def\OR{\RULE@OR}% 
  \def\AND{\RULE@AND}% 
% 
% Regelkoerper setzen 
  \setbox\rule@regel@box\vtop\bgroup   % begin of vtop 
    \advance\hsize by -\ruleleftindent 
    \advance\hsize by -\rulerightindent 
    \@parboxrestore 
} 
 
\def\endregel{% 
  \egroup                            	 % end of vtop 
% 
% Regelhoehe bestimmen 
  \rule@depth=\ht\rule@regel@box 
  \advance\rule@depth by \dp\rule@regel@box 
  \advance\rule@depth by -\dp\strutbox 
% 
% Regelkoerper mit Raendern und Regelnummer plazieren 
  \hbox{% 
    \hskip\ruleleftindent 
    \box\rule@regel@box 
    \hskip\rulerightindent 
% 
    \vtop to \rule@depth {% 
      \hbox{\strut}% 
      \vss 
      \if@eqnsw                       % Regelnummer ausgeben ? 
        \llap{\@eqnnum}% 
      \else 
        \global\advance\c@equation\m@ne 
      \fi 
    }% 
  }% 
% 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%%% tricky, tricky, ...                                                     %%% 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
% Abstand zum nachfolgenden Text bestimmen 
\def\@doendpe{% 
% 
  \@firstrulefalse 
  \@ignoretrue 
% 
  \def\par{% 
%%% \message{ *tmp par}% 
    \@restorepar 
    \everypar{}% 
    \vskip\belowruleskip 
    \@firstruletrue 
    \@endpefalse 
  }% 
% 
  \everypar={% 
%%% \message{ *tmp everypar}% 
    \@restorepar 
    \everypar{}% 
    \setbox0=\lastbox   %%% anstatt \unskip !!! 
    \vskip\belowruleshortskip 
    \noindent 
    \@firstruletrue 
    \@endpefalse 
  }% 
}% 
% 
  \@endpetrue 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%%% ... tricky, tricky.                                                     %%% 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
} 
 
 
% \IF mit optionalem Satzzeichen [,;.] 
% 
\long\def\RULE@IF#1{% 
  \@ifnextchar,{\RULE@@IF{#1}}{% 
  \@ifnextchar;{\RULE@@IF{#1}}{% 
  \@ifnextchar.{\RULE@@IF{#1}}{\RULE@@IF{#1}{}}% 
}}} 
 
\long\def\RULE@@IF#1#2{% 
  \hbox to \hsize{% 
    \copy\rule@if@box 
    \vtop{% 
      \advance\hsize by -\wd\rule@then@box 
      \vtop\bgroup                       % begin of first vtop 
        \noindent\strut\ignorespaces #1\unskip\strut)#2% right parentheses 
      \egroup                            % end of last vtop 
    }% 
  }% 
  \vskip\inruleskip 
  \ignorespaces 
} 
 
 
% \THEN mit optionalem Satzzeichen [,;.] 
% 
\long\def\RULE@THEN#1{% 
  \@ifnextchar,{\RULE@@THEN{#1}}{% 
  \@ifnextchar;{\RULE@@THEN{#1}}{% 
  \@ifnextchar.{\RULE@@THEN{#1}}{\RULE@@THEN{#1}{}}% 
}}} 
 
\long\def\RULE@@THEN#1#2{% 
  \hbox to \hsize{% 
    \copy\rule@then@box 
    \vtop{% 
      \advance\hsize by -\wd\rule@then@box 
      \vtop\bgroup                       % begin of first vtop 
        \noindent\strut\ignorespaces #1\unskip\strut)#2% right parentheses 
      \egroup                            % end of last vtop 
    }% 
  }% 
  \ignorespaces 
} 
 
 
\def\RULE@AND{% 
        \unskip\strut 
      \egroup                               % end of previous vtop 
      \vtop\bgroup                          % begin of next vtop 
        \noindent\copy\rule@and@box\strut   % AND keyword 
} 
 
 
\def\RULE@OR{% 
        \unskip\strut 
      \egroup                               % end of previous vtop 
      \vtop\bgroup                          % begin of next vtop 
        \noindent\copy\rule@or@box\strut    % OR keyword 
} 
 
%%% } BRACE MATCHING HACK 
