%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Klammercode in TeX %%%
%%%%%%%%%%%%%%%%%%%%%%%%%%
% Beginn des Makropaketes
%
% \gap: kleine Luecke, zwischen einzelnen Textbloecken
% \Gap: mittlere Luecke: Text <-> Klammer
% \GAP: grosse Luecke: Klammer <-> Klammer
\def\gap{\par\smallskip\noindent}
\def\Gap{\par\medskip\noindent}
\def\GAP{\par\bigskip\noindent}
%
% 5 intern benoetigte Hilfsdefinitionen...
%
\def\pointt{\hbox to 1mm{\hss$\bullet$\hss}}
\def\point{\hbox to 0mm{\hss$\bullet$\hss}}
\def\strich{\hbox to 0mm{\hss =\hss}}

\def\linie{\vrule depth 5pt}
\def\back{\vskip-3pt}
%%%%%
%%%%% SEQUENZ
%%%%%
% \sequence{...} : Um Text Sequenzklammer setzen (VORSICHT! kein
%                  Seitenumbruch darin moeglich)
%
\def\sequence#1{\vbox{\hrule width 5mm%
                      \hbox{\vrule%
                            \hskip 3mm%
                            \vbox{\vskip 1mm{}%
                                  \noindent #1%
                                  \vskip 1mm%
                                 }%
                           }%
                      \hrule width 5mm%
                     }%
               }
%
% \seqtop{..} : oberer Teile einer \sequence
%
\def\seqtop#1{\vbox{\hrule width 5mm%
                    \hbox{\linie%
                          \hskip 3mm%
                          \vbox{\vskip 1mm{}%
                                \noindent #1%
                               }%
                         }\back%
                   }%
             }
%
% \seqfoot{..} : unterer Teile einer \sequence. Alias: \iffoot (s.dort)
%
\def\seqfoot#1{\vbox{\hbox{\vrule%
                           \hskip 3mm%
                           \vbox{\vskip 1mm{}%
                                 \noindent #1%
                                 \vskip 1mm%
                                }%
                          }\hrule width 5mm%
                    }%
              }
%
% \body{..} : mittlerer Teil einer \sequence (oder in \if-Teil).
%
\def\body#1{\hbox{\linie%
                  \hskip 3mm%
                  \vbox{\vskip 1mm{}%
                        \noindent #1%
                       }%
                 }\back%
           }
%
% \iftop{..} : oberer Teil einer \sequence mit Bedingung (body extra benutzen!)
%
\def\iftop#1{\vbox{\hrule width 5mm%
                   \hbox{\point%
                         \linie%
                         \hskip 1mm%
                         \vbox{\vskip 1mm{}%
                               \noindent #1%
                              }%
                        }\back%
                  }%
            }
%
% \ifbody{..} : mittlerer Teil einer \sequence mit Bedingung (aber ohne body)
%
\def\ifbody#1{\hbox{\point%
                    \linie%
                    \hskip 1mm%
                    \vbox{\vskip 1mm{}%
                          \noindent #1%
                         }%
                   }\back%
             }
%
% \iffoot{..} : dasselbe wie \seqfoot{..} (der Uebersicht halber)
%
\def\iffoot#1{\seqfoot{#1}}
%
% \elsebody : Mitte einer \sequence mit Trennstrichen OHNE Text
%
\def\elsebody{\hbox{\strich%
                    \linie%
                   }\back%
             }
%
% \elseif{..} : Mitte einer \sequence mit Trennstrichen und Bedingung
%
\def\elseif#1{\elsebody%
              \ifbody{#1}%
             }
%%%%%
%%%%% ITERATION
%%%%%
%
% \forever{..} : Text mit Endlos-Iteration versehen (FOREVER)
%                Achtung: kein Seitenumbruch!
%
\def\forever#1{\vbox{\hrule width 5mm%
                     \hbox{\linie%
                           \pointt%
                           \linie%
                           \hskip 1mm%
                           \vbox{\vskip 1mm{}
                                 \noindent FOREVER%
                                }%
                          }\back%
                     \hbox{\vrule%
                           \phantom{\pointt}%
                           \vrule%
                           \hskip 3mm%
                           \vbox{\vskip 1mm{}%
                                 \noindent #1%
                                 \vskip 1mm%
                                }%
                          }%
                     \hrule width 5mm%
                    }%
              }
%
% \whiletop{..}   : Oberer Teil einer Iteration (mit Body)
% \whiletopif{..} : dito mit Bedingung, ohne Body
%
\def\whiletop#1{\vbox{\hrule width 5mm%
                      \hbox{\linie%
                            \phantom{\pointt}%
                            \linie%
                            \hskip 3mm%
                            \vbox{\vskip 1mm{}%
                                  \noindent #1%
                                 }%
                      }\back%
                   }%
             }

\def\whiletopif#1{\vbox{\hrule width 5mm%
                        \hbox{\linie%
                              \pointt%
                              \linie%
                              \hskip 1mm%
                              \vbox{\vskip 1mm{}%
                                    \noindent #1%
                                   }%
                        }\back%
                     }%
               }
%
% \whilebody{..}   : Mittlerer Teil einer Iteration mit Text
% \whilebodyif{..} : dito mit Bedingung, ohne Body
%
\def\whilebody#1{\hbox{\linie%
                       \phantom{\pointt}%
                       \linie%
                       \hskip 3mm%
                       \vbox{\vskip 1mm{}%
                             \noindent #1%
                            }%
                      }\back%
                }

\def\whilebodyif#1{\hbox{\linie%
                         \pointt%
                         \linie%
                         \hskip 1mm%
                         \vbox{\vskip 1mm{}%
                               \noindent #1%
                              }%
                        }\back%
                  }
%
% \whilefoot{..}   : unterer Teil einer Iteration mit Body
% \whilefootif{..} : dito mit Bedingung, ohne Body
%
\def\whilefoot#1{\vbox{\hbox{\vrule%
                             \phantom{\pointt}%
                             \vrule%
                             \hskip 3mm%
                             \vbox{\vskip 1mm{}%
                                   \noindent #1%
                                   \vskip 1mm%
                                  }%
                            }%
                       \hrule width 5mm%
                      }%
                }

\def\whilefootif#1{\whilebodyif{#1}\whilefoot{}}

%%%%%
%%%%% PAR-BLOCK (nur LaTeX)
%%%%%
%
% \partop{..} : oberer Teil
% \parbody{..} : mittlerer Teil
% \parfoot{..} : unterer Teil
% \parallel{..} : ganzer PAR-Block (ohne Trennung)
%
% \makedashbox ist ein Hilfsmakro
%
\newbox\ddashbox
\newbox\tempbox
\newdimen\dashdimen

\def\makedashbox{\dashdimen=\ht\tempbox%
                 \advance\dashdimen by -\ht\ddashbox%
                 \ifdim\dashdimen<3mm%
                    \setbox\ddashbox=\vbox{\unvbox\ddashbox%
                                           \hbox{\vrule height \dashdimen}}%
                 \else%
                    \setbox\ddashbox=\vbox{\unvbox\ddashbox%
                                           \hbox{\vrule height 2.5mm}%
                                           \vskip 0.5mm}%
                    \makedashbox%
                 \fi}


\def\parallel#1{%
  \setbox\tempbox=\vbox{\vskip 1mm{}{\noindent #1}\vskip 1mm}%
  \setbox\ddashbox=\vbox{}%
  \makedashbox%
  \vbox{\hrule width 5mm%
        \hbox{\box\ddashbox%
              \hskip 3mm%
              \box\tempbox%
             }%
        \hrule width 5mm%
       }
}

\def\partop#1{%
  \setbox\tempbox=\vbox{\vskip 1mm{}{\noindent #1}\vskip 1mm}%
  \setbox\ddashbox=\vbox{}%
  \makedashbox%
  \vbox{\hrule width 5mm%
        \hbox{\box\ddashbox%
              \hskip 3mm%
              \box\tempbox%
             }%
       }
}

\def\parbody#1{%
  \setbox\tempbox=\vbox{\vskip 1mm{}{\noindent #1}\vskip 1mm}%
  \setbox\ddashbox=\vbox{}%
  \makedashbox%
  \hbox{\box\ddashbox%
        \hskip 3mm%
        \box\tempbox%
       }
}

\def\parfoot#1{%
  \setbox\tempbox=\vbox{\vskip 1mm{}{\noindent #1}\vskip 1mm}%
  \setbox\ddashbox=\vbox{}%
  \makedashbox%
  \vbox{\hbox{\box\ddashbox%
              \hskip 3mm%
              \box\tempbox%
             }%
        \hrule width 5mm%
       }
}
%%%%%
%%%%% ENDE der Klammercode-Befehle (d.h. des Makropaketes)
%%%%%

