% lorenz.sty wird vor dem eigentlichen sty-file als Option wie
% z.B. "twocolumn" in eckigen Klammern angegeben.
%
\newlinechar=`\^^J
%
\newtoks\Sammlung
%
\newread\Pr@t@
\newread\WelcherFile
%
\newwrite\K@ll
\newwrite\Baum
\newwrite\Schreibraus
%
\newif\ifschl@ss
\newif\ifopti@n
\newif\if@EinBildlinks
\newif\if@EinBildinnen
\newif\if@gleich
%
\newcount\Zeilenn@mmer
\newcount\Z@hner
\newcount\p@teins
\newcount\p@tzwei
\newcount\Ast
\newcount\zeilenzahl
%
\newdimen\Br@it
\newdimen\H@ch
\newdimen\M@ttelbreit
\newdimen\M@ttelhoch
\newdimen\Anf@nghoch
\newdimen\Anf@ngbreit
\newdimen\Unt@nhoch
\newdimen\Unt@nbreit
\newdimen\Texth@ch
\newdimen\Rasterh@ch
\newdimen\bildhoch
\newdimen\restseite
\newdimen\Rahmendicke
\newdimen\oldparindent
%
\newbox\T@stenbreite
\newbox\V@rtest
\newbox\H@upttest
\newbox\Textdr@n
%
\newhelp\H@lfe{Der Befehl zur Darstellung der Funktionstasten
ist als `put(x,y)...' geschrieben und deshalb nur im restricted
horizontal mode (`picture'-Umgebung) einzusetzen!}
\newhelp\w@rklich{Das ist doch nicht ernst gemeint??}
%
\setcounter{topnumber}{3}
\setcounter{bottomnumber}{3}
\setcounter{totalnumber}{5}
\gdef\topfraction{1}
\gdef\bottomfraction{1}
\gdef\textfraction{0}
\marginparsep=4mm
\marginparwidth=12mm
\global\Rahmendicke=0.8pt
\global\unitlength=1cm
%
{\def~{ }
\typeout{%
_______________________________________________________^^J%
|~Einen wunderschoenen guten Tag, dies ist lorenz.sty~|^^J%
|~~~~~~~~~~~~zuletzt durcheinandergebracht am 33.9.88~|^^J%
-------------------------------------------------------}%
}
%
\def\m@time{%
\begingroup
\count1=\time
\count2=0
\loop
 \ifnum\count1>60
 \advance\count1 by-60
 \advance\count2 by 1
\repeat
\xdef\Zeit{\the\count2:\ifnum\count1<10 0\fi\the\count1}
\endgroup
}
%
\def\ps@lorenz#1#2#3#4{\let\@mkboth\@gobbletwo
\def\@oddhead{#1}%
\def\@oddfoot{#2}%
\def\@evenhead{#3}%
\def\@evenfoot{#4}%
\def\sectionmark##1{}\def\subsectionmark##1{}}
%
\gdef\ps@hoffmann#1#2#3#4{%
\global\let\@Part=\@part
\gdef\@part[##1]##2{%
\gdef\Ueberschrift{##2}%
\gdef\Unterueberschrift{}%
\@Part[##1]{##2}%
}
\global\let\@Spart=\@spart
\gdef\@spart##1{%
\gdef\Ueberschrift{##1}%
\gdef\Unterueberschrift{}%
\@Spart{##1}%
}
\global\let\@Chapter=\@chapter
\gdef\@chapter[##1]##2{%
\gdef\Ueberschrift{##2}%
\gdef\Unterueberschrift{}%
\@Chapter[##1]{##2}%
}
\global\let\@Schapter=\@schapter
\gdef\@schapter##1{%
\gdef\Ueberschrift{##1}%
\gdef\Unterueberschrift{}%
\@Schapter{##1}%
}
\global\let\@Sect=\@sect
\gdef\@sect##1##2##3##4##5##6[##7]##8{%
\gdef\Unterueberschrift{##8}%
\@Sect{##1}{##2}{##3}{##4}{##5}{##6}[##7]{##8}%
}
\global\let\@Ssect=\@ssect
\gdef\@ssect##1##2##3##4##5{%
\gdef\Unterueberschrift{##5}%
\@Ssect{##1}{##2}{##3}{##4}{##5}%
}
\global\let\@Abstract=\abstract
\gdef\abstract{%
\gdef\Ueberschrift{\abstractname}
\gdef\Unterueberschrift{}%
\@Abstract
}
\def\ps@plain{%
\def\@oddhead{\hrulefill}
\def\@evenhead{\hrulefill}
}
\def\ps@h@ffmann{%
\gdef\@oddhead{\ifx\Unterueberschrift\empty\hrulefill\else#1\fi}
\gdef\@oddfoot{#2}
\gdef\@evenhead{\ifx\Ueberschrift\empty\hrulefill\else#3\fi}
\gdef\@evenfoot{#4}
}
\gdef\Unterueberschrift{}
\gdef\Ueberschrift{}
\pagestyle{h@ffmann}
}
%
\def\heute{\number\day.\ \ifcase\month\or
 Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or
 Juli\or August\or September\or Oktober\or November\or Dezember\fi
 \space \number\year}
%
\def\dinA#1{%
\ifnum#1=4
 \oddsidemargin=0cm
 \evensidemargin=0cm
 \headsep=1cm
 \textheight=21cm
 \textwidth=16cm
 \footheight=1cm
 \footskip=1cm
 \topmargin=0cm
\else
 \ifnum#1=5
  \oddsidemargin=0cm
  \evensidemargin=0cm
  \headsep=1cm
  \textheight=15cm
  \textwidth=10cm
  \footheight=1cm
  \footskip=1cm
  \topmargin=0cm
 \else
 \errhelp=\w@rklich
 \errmessage{Es sind bisher nur
 \string\dinA4 und \string\dinA5 zugelassen!}
 \fi
\fi
}
%
\def\AmSTeX{{\textfontii A}\kern-.1667em\lower.5ex\hbox
 {\textfontii M}\kern-.125em{\textfontii S}-\TeX}
%
\def\gestrichen{%
\let\screen=\beginscreen
%
\long\def\screen##1{\beginscreen{##1}}
%
\long\def\beginscreen##1{%
\begingroup
%
\font\SchriftA=cmtt10 scaled \magstep2
\font\SchriftB=cmtt10 scaled \magstep1
\font\SchriftC=cmtt10 scaled \magstephalf
\font\SchriftD=cmtt9
\font\SchriftE=cmtt8 %Schriftgroesse unabhaengig von LaTeX
%
\newcommand{\Achtzig}{% %erzeugt die Spaltennumerierung
123456789\vbox{\hbox{\lower4em\hbox{1}}\hbox{0}}%
123456789\vbox{\hbox{\lower4em\hbox{2}}\hbox{0}}%
123456789\vbox{\hbox{\lower4em\hbox{3}}\hbox{0}}%
123456789\vbox{\hbox{\lower4em\hbox{4}}\hbox{0}}%
123456789\vbox{\hbox{\lower4em\hbox{5}}\hbox{0}}%
123456789\vbox{\hbox{\lower4em\hbox{6}}\hbox{0}}%
123456789\vbox{\hbox{\lower4em\hbox{7}}\hbox{0}}%
123456789\vbox{\hbox{\lower4em\hbox{8}}\hbox{0}}%
}
%
\setbox\V@rtest=\hbox{\SchriftE \Achtzig}
\ifdim\wd\V@rtest>\hsize
 \errmessage{Das funktioniert bei dieser geringen Spaltenbreite nicht!}
\else
\global\setbox\H@upttest=\hbox{\SchriftA \Achtzig}
                  \global\def\Schrift{\SchriftA}
 \ifdim\wd\H@upttest>\hsize
   \global\setbox\H@upttest=\hbox{\SchriftB \Achtzig}
                  \global\def\Schrift{\SchriftB}
    \ifdim\wd\H@upttest>\hsize
      \global\setbox\H@upttest=\hbox{\SchriftC \Achtzig}
                  \global\def\Schrift{\SchriftC}
       \ifdim\wd\H@upttest>\hsize
         \global\setbox\H@upttest=\hbox{\SchriftD \Achtzig}
                  \global\def\Schrift{\SchriftD}
        \ifdim\wd\H@upttest>\hsize
         \global\setbox\H@upttest=\hbox{\SchriftE \Achtzig}
                  \global\def\Schrift{\SchriftE}
\fi\fi\fi\fi\fi
\Schrift
%
\Br@it=\wd\H@upttest     %die Breite der \Achtzig-Zeile
\advance\Br@it by 10mm
\H@ch=\Br@it
\divide\H@ch by 100
\multiply\H@ch by 73     %73% der Hoehe
\M@ttelbreit=\Br@it
\divide\M@ttelbreit by 2 %Mittelpunkt fuer Bildschirm-"oval" (x)
\M@ttelhoch=\H@ch
\divide\M@ttelhoch by 2  %Mittelpunkt fuer Bildschirm-"oval" (y)
\Anf@ngbreit=5mm         %Beginn des Textes (x)
\Anf@nghoch=\H@ch
\advance\Anf@nghoch by -5mm  %Beginn des Textes (y)
\Unt@nbreit=\Anf@ngbreit %Beginn der \f-Tasten (x)
\Unt@nhoch=5mm           %Beginn der \f-Tasten (y)
\advance\H@ch by 1cm
%
\def\unitlength{}        %ich benutze Dimensionen statt Ziffern!!!!
\begin{picture}(\Br@it,\H@ch)(0pt,0pt)
\advance\H@ch by -8mm
\put(\Anf@ngbreit,\H@ch){\unhcopy\H@upttest} %schreibt die \Achtzig
\put(\M@ttelbreit,\M@ttelhoch){\oval(\Br@it,\H@ch)} %macht Bildschirm
\put(\Anf@ngbreit,\Anf@nghoch){%
\makebox(0pt,0pt)[tl]{\shortstack[l]{##1}}} %positioniert den Text
}
%
\def\endscreen##1{%
\def\T@st{Richtig}       %zur Kontrolle fuer \f-Makro
##1
\end{picture} \endgroup \par \vskip5mm plus3mm minus5mm
}
%
\def\T@st{Falsch}
%
\def\H@chtief{\vphantom{\"Ay}} %\mathstrut reicht nicht mit depth=0pt
%
\def\f##1:(##2,##3){%
\def\R@chtig{Richtig}
\ifx\R@chtig\T@st        %nur in screen-Umgebung zugelassen
 \setbox\T@stenbreite=\hbox{%
 \Schrift f##1 \fbox{\shortstack[l]{\H@chtief ##2 \\
 \H@chtief ##3}}}
 \put(\Unt@nbreit,\Unt@nhoch){\unhcopy\T@stenbreite}
 \advance\Unt@nbreit by \wd\T@stenbreite
 \advance\Unt@nbreit by 2mm
\else
 \errhelp=\H@lfe
 \errmessage{Nur im `screen'-environment zugelassen!}
\fi
}
}   % Ende von gestrichen!
\def\gestrichen{}
\def\screen{\errmessage{Ist wieder geloescht!}}
%
\def\Einlesefile{}
%
\def\Liesmichein#1{%
\gdef\Einlesefile{#1}
\begingroup \frenchspacing  %das Folgende entspricht
\raggedbottom               %in etwa dem \verbatim
\def\do##1{\catcode`##1=12 }
\dospecials %
\parskip=0cm \parindent=0cm %
\catcode`\ =\active %
\catcode`\^^M=\active %
\tt \def\par{\endgraf \penalty1000 ~} %
\obeylines \obeyspaces \par
\input #1
\endgroup
}
%
\def\Listing#1{%
\global\Zeilenn@mmer=0
\global\Z@hner=0
\begingroup
\everypar{%
\global\advance\Zeilenn@mmer by 1
\global\advance\Z@hner by 1
\hbox to 12mm{%
\ifnum\Z@hner=10
  {\footnotesize\bf \hfill\number\Zeilenn@mmer}%
  \global\Z@hner=0
\else
  {\footnotesize\rm \hfill\number\Zeilenn@mmer}%
\fi}%
}%
\Liesmichein{#1}
\endgroup
}
%
\def\Kommentaranfang{\begingroup%
\def\do##1{\catcode`##1=9}\dospecials\do\^^M%
\catcode`\\=12}%
{\obeyspaces\gdef {\ }}
%
\outer\def\KOMMENTAR{\let\par=\endgraf \Kommentaranfang%
  \catcode`\|=0 \Kommentarende}%
{\catcode`\|=0 |catcode`|\=12%
|obeylines%
|long|gdef|Kommentarende#1\ENDE{|endgroup}%
}
{\catcode`\|=\active%
\obeylines\gdef|{\Kommentaranfang\let^^M=\ \let|=endgroup}%
}
%
\def\Protokoll#1#2{%
\message{(Protokoll auf}
\immediate\openin\Pr@t@=#1
\immediate\openout\K@ll=#1
\schl@sstrue
\def\Liesm@ch{}
\loop
 \read\Pr@t@ to\Liesm@ch
 \ifeof\Pr@t@
  \let\Liesm@ch\relax
  \immediate\write\K@ll{#2}
  \schl@ssfalse
 \else
  \immediate\write\K@ll{\Liesm@ch}
 \fi
\ifschl@ss
\repeat
\immediate\closein\Pr@t@
\immediate\closeout\K@ll
\message{#1)}
}
%
\def\Syntaxcheck{%
\message{Beim Syntaxcheck wird \space k e i n \space .dvi-file erstellt!!}
\font\dummy=dummy
\let\rm=\dummy
\let\em=\dummy
\let\bf=\dummy           %siehe TeX-Book S. 401
\let\it=\dummy
\let\sl=\dummy
\let\sf=\dummy
\let\sc=\dummy
\let\tt=\dummy
\dummy
\nofiles
\tracinglostchars=0
\output={\setbox0=\box255\deadcycles=0}
\frenchspacing
\hbadness=10000
\let\immediate=\relax
\def\write##1##{{\afterassignment}\toks0=}
}
%
\def\Version(#1){%
\gdef\V@rsionsnummer{#1}
\message{(Update: Version #1)}
}
%
\def\Kl@mmernweg[#1]{#1}
%
\def\Schr@ibdies#1{%
\begingroup%
\def\Opti@nstext{\Kl@mmernweg#1}%
\marginpar[\hfill $\Rightarrow$ \par \tiny \Opti@nstext]%
{$\Leftarrow$ \par \tiny \Opti@nstext}%
\endgroup%
}
%
\long\def\Updatetext#1(#2)#3{%
\def\Updatenummer{#2}%
\def\Klammer{#1}%
\ifx\Updatenummer\V@rsionsnummer%
 \ifx\Klammer\empty%
  #3%
 \else%
  {\Kl@mmernweg#1#3}%
 \fi%
\fi%
}
%
\long\def\Update#1(#2) {%
\begingroup%
\def\Upd@tenummer{#2}%
\ifx\Upd@tenummer\V@rsionsnummer%
 \ifopti@n%
  \def\Upd@teeins{#1}%
  \ifx\Upd@teeins\empty%
   \marginpar[\hfill $\Rightarrow$ \par \tiny \Opti@nstext]%
   {$\Leftarrow$ \par \tiny \Opti@nstext}%
  \else%
   \Schr@ibdies{#1}%
  \fi%
 \else%
  \Schr@ibdies{#1}%
 \fi%
\fi%
\endgroup%
}
%
\def\Updateoption[#1]{%
\opti@ntrue%
\def\Opti@nstext{#1}%
}
%
\long\def\Updatetext#1(#2)#3{%
\def\Updatenummer{#2}%
\def\Klammer{#1}%
\ifx\Updatenummer\V@rsionsnummer%
 \ifx\Klammer\empty%
  #3%
 \else%
  \ifopti@n
   \def\Upd@teeins{#1}%
   \ifx\Upd@teeins\empty
    \marginpar[\hfill$\Rightarrow$\par\tiny\Opti@nstext]%
     {\$Leftarrow$\par\tiny\Opti@nstext}#3%
   \else
    \Schr@ibdies{#1}#3%
   \fi
  \else
   \Schr@ibdies{#1}#3%
  \fi
 \fi%
\fi%
}
%
\def\Testbild(#1,#2)#3 {%
\begin{picture}(#1,#2)#3 \relax
\let\Hi@r=\put
\Hi@r(0,0){\vector(1,0){1}}
\Hi@r(0,0){\vector(0,1){1}}
\Hi@r(0,0){\dashbox{.1}(#1,#2)[tr]{\tiny (Testbild)}}
\def\put(##1,##2)##3{%
 \Hi@r(##1,##2){##3}
 \Hi@r(##1,##2){\begin{picture}(1,1)
 \Hi@r(-1,-1){\vector(1,1){1}}
 \Hi@r(-1,-1){\makebox(0,0)[tr]{\tiny (##1,##2)}}
 \end{picture}}
 }
}
%
\def\@ben{\hbox{\rm\char'134}\penalty10000\hskip0pt plus0pt\relax}
\def\@nten{\hbox{\rm,\kern-0.2ex,}\penalty10000\hskip0pt plus0pt\relax}
\def\wegdamit#1{\relax}
%
{\catcode`\"=\active
\gdef"{\protect\@a@}
\gdef\@a@{\leavevmode\futurelet\next\Ganstest}
}
%
\def\DeutscheHochkommata{\global\catcode`\"=\active
\def\Ganstest{%
\ifcat\next b%
 {\gdef\weiter{\@nten}}%
\else%
 \ifcat\next\noexpand_%
 {\gdef\weiter{\@nten\wegdamit}}%
 \else%
  \ifcat\next\noexpand$%
   {\gdef\weiter{\@nten}}%
  \else%
   {\gdef\weiter{\@ben}}%
  \fi%
 \fi%
\fi%
\weiter%
}
}
\def\EnglischeHochkommata{\global\catcode`\"=12 \def\Ganstest{}}
%
\def\Oben{{\rm\char'134}\penalty10000\hskip0pt plus0pt\relax\message{Das braucht's doch auch nicht mehr!}}
\def\Unten{{\rm,\kern-0.2ex,}\penalty10000\hskip0pt plus0pt\relax\message{Das braucht's doch gar nicht mehr!}}
%
\global\let\Dospecials=\dospecials
\gdef\dospecials{\Dospecials\do\"\do\|}
%
\let\eszet@=\ss
\gdef\ss{\protect\@c@}
\gdef\@c@{{\eszet@\penalty10000\hskip0pt plus0pt\relax}}
%
\gdef\"{\protect\@b@}
\gdef\@b@#1{%
\ifmmode
 \ddot{#1}%
\else
 {\accent'177 #1\penalty10000\hskip 0pt plus 0pt\relax}%
\fi
}
%
%
\def\Baumstruktur{%
\def\~{\string\\ ~}
\def\/{\string\\ /}
\def\_{\string\\ _}
\def\|{\string\\ |}
\def~{ }
\typeout{%
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^J
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^J
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^J
~~~~~~~~~~~~~~~~~~~~\/~/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^J
~~~~~~~~~~~\~|~~~~~~~\/~~~~~\/~~~~~~~~~~~~~~~~~~~~~~~~^^J
~~~~~~~~~~~~\/~/~~~\/~|~~\/~~\____/~~/~~~~~~~~~~~~~~~~~~^^J
~~~~~~~~~~~~~\/~~~~|~\/~~/~~~/~~~___/~~~~~~~~~~~~~~~~~~~~~^^J
~~~~~~~~~~~~~~~\__/~~~|~~|~~|___/~~~~~~~~~~~~~~~~~~~~~~~~~~^^J
~~~~~~~~~~~~~~~~~~\~~~|~/~~/~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^J
~~~~~~~~~~~~~~~~~~~\~~|~|~/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^J
~~~~~~~~~~~~~~~~~~~~\~||/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^J
~~~~~~~~~~~~~~~~~~~~~\|||~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^J
~~~~~~~~~~~~~~~~~~~~~||||~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^J
~~~~~~~~~~~~~~~~~~~~~||||~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^J
~~~~~~~~~~~~~~~~~~~~~||||~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^J
~~~~~~~~~~~~~~~~~~~~~||||~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^J
~~~~~~~~~~~~~~~~____/~||~\___~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^J
~~~~~~~~~~~~~~~~~~~-------~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^J
}
\immediate\openout\Baum=\jobname.tre
\immediate\write\Baum{Baumstruktur von: \jobname.tex}
\immediate\write\Baum{=================================}
\let\Input=\input
%
\nofiles
\let\Document=\document
\gdef\document{%
\typeout{Achtung, es wird \space k e i n \space Output erzeugt!}
\Document
\output={\setbox0=\box255 \deadcycles=1}
}
%
\def\include##1{\input{##1}}
%
\def\input##1{%
\global\advance\Ast by 1
\def~{ }
\global\Sammlung=\expandafter{\the\Sammlung (##1)}
\ifcase\Ast
 \gdef\Schachtelung{}
\or
 \gdef\Schachtelung{-}
\or
 \gdef\Schachtelung{--}
\or
 \gdef\Schachtelung{---}
\or
 \gdef\Schachtelung{----}
\or
 \gdef\Schachtelung{-----}
\or
 \gdef\Schachtelung{------}
\or
 \gdef\Schachtelung{-------}
\or
 \gdef\Schachtelung{--------}
\else
 \gdef\Schachtelung{.............}
\fi
\immediate\write\Baum{\Schachtelung(##1)}
\Input{##1}
\global\advance\Ast by -1
}
%
\let\Enddocument=\enddocument
\gdef\enddocument{%
\typeout{Die Struktur ist zu finden im File: \jobname.tre}
\message{Gelesen? <return>:}\read-1 to\nix
\Enddocument
}%
}
%
\def\Raster#1#2{%
\ifcase#1   % 0 bleibt unveraendert
\or
 \global\Rasterh@ch=1mm
 \gdef\Zeile{\cleaders\hbox to\Rasterh@ch{\hss\vrule height\Rasterh@ch width0.4pt depth0pt\hss}\hfill}%  1
\or
 {\setbox0=\hbox{$\scriptscriptstyle\circ$}
 \global\Rasterh@ch=\ht0
 \global\advance\Rasterh@ch by\dp0}
 \gdef\Zeile{\cleaders\hbox to\Rasterh@ch{\hss$\scriptscriptstyle\circ$\hss}\hfill}%  2
\or
 \Rasterh@ch=0.5mm
 \gdef\Zeile{\cleaders\hrule height0.05pt depth0mm\hfill}%  3
\or
 \global\Rasterh@ch=0.5mm
 \gdef\Zeile{\cleaders\hbox to\Rasterh@ch{\hss\scriptsize\it.\hss}\hfill}%  4
 % Achtung, dauert ewig!
\or
 \global\Rasterh@ch=0.7mm
 \gdef\Zeile{\cleaders\hbox to\Rasterh@ch{\hss\scriptsize\it.\hss}\hfill}%  5
\or
 \global\Rasterh@ch=1mm
 \gdef\Zeile{\cleaders\hbox to\Rasterh@ch{\hss.\hss}\hfill}%  6
\or
 {\setbox0=\hbox{\scriptsize\it:}
 \global\Rasterh@ch=1.1\ht0}
 \gdef\Zeile{\cleaders\hbox to\Rasterh@ch{\hss\scriptsize\it:\hss}\hfill}%  7
\or
 {\setbox0=\hbox{$\scriptscriptstyle\dashv$}
 \global\Rasterh@ch=\ht0
 \global\advance\Rasterh@ch by\dp0}
 \gdef\Zeile{\cleaders\hbox to\Rasterh@ch{\hss$\scriptscriptstyle\dashv$\hss}\hfill}%  2
\fi
\leavevmode
\setbox\Textdr@n=\hbox{#2\vphantom{\"Ay}}%
\Texth@ch=\ht\Textdr@n
\advance\Texth@ch by\dp\Textdr@n
\lower\dp\Textdr@n
\hbox to0pt{%
 \hskip0.1\wd\Textdr@n \vbox{\vskip0.1\Texth@ch \copy\Textdr@n\vss}%
       \hss}%
\lower2\dp\Textdr@n\vbox to1.2\Texth@ch{%
     \cleaders\vbox to\Rasterh@ch{%
       \offinterlineskip \hbox to1.2\wd\Textdr@n{\Zeile}\vfill}%
                               \vfill}%
}
\def\Zeile{%
\hfill
\typeout{\string\Zeile \space im Raster nicht definiert!
(wird durch \string\hfill \space ersetzt ...)}
}
%
\def\Bilderlinks{\global\@gleichtrue\global\@Einbildlinkstrue}
\def\Bilderrechts{\global\@gleichtrue\global\@EinBildlinksfalse}
\def\Bilderinnen{\global\@gleichfalse\global\@EinBildinnentrue}
\def\Bilderaussen{\global\@gleichfalse\global\@EinBildinnenfalse}

\def\ignorepar{%
\oldparindent=\parindent
\parindent=0pt
\def\par{\ifvmode\else\endgraf\let\par=\endgraf\parindent=\oldparindent\fi}%
}


\def\Absatz{%
\ifvmode
\else
 \vadjust{\vskip\parskip}\hfill\break\indent
\fi
}

\def\Absatzbild#1(#2,#3)#4#5{%      [plushoehe](breit,hoch){caption}{label}
 \ifvmode
 \else
  \par
 \fi
 \noindent
 \xdef\alterCounter{\@currentlabel}%
 \gdef\@currentlabel{\thefigure}%
 \addtocounter{figure}{1}%
 \addcontentsline{lof}{figure}{\protect\numberline{\thefigure}{#4}}%
 \ifx#5\empty
 \else
  \label{#5}%
 \fi
 \xdef\@currentlabel{\alterCounter}%
 \setbox0=\hbox{\small Bild \thefigure: #4}%
 \ifdim\wd0<#2\unitlength
  \setbox1=\hbox to#2\unitlength{\hfill\copy0\hfill}%
 \else
  \setbox1=\vbox{\hsize=#2\unitlength\noindent\unhbox0}%
 \fi
 \bildhoch=\ht1
 \advance\bildhoch by \dp1
 \advance\bildhoch by 20pt
 \advance\bildhoch by #3\unitlength
 \ifx#1\empty
 \else
  \advance\bildhoch by \Kl@mmernweg#1 \unitlength
 \fi
 \restseite=\pagegoal
 \advance\restseite by -\pagetotal
 \ifdim\restseite<\bildhoch
   \ifdim\restseite>0pt
   \clearpage\noindent\null
  \fi
 \fi
 \zeilenzahl=0
 \loop
  \global\advance\zeilenzahl by 1
  \global\advance\bildhoch by -\baselineskip
  \ifdim\bildhoch>0pt
 \repeat
\def\@Bildlinks{\global\hangindent=#2\unitlength
 \global\advance\hangindent by\columnsep
 \global\hangafter=-\zeilenzahl
 \def\springnachhier{\hskip-\hangindent}%
 }%
\def\@Bildrechts{\global\hangindent=-#2\unitlength
 \global\advance\hangindent by-\columnsep
 \global\hangafter=-\zeilenzahl
 \def\springnachhier{\hskip\textwidth\hskip\hangindent\hskip\columnsep}%
 }%
\if@EinBildlinks
 \@Bildlinks
\else
 \@Bildrechts
\fi
\if@gleich
\else
 \if@twoside
  \ifodd\count0
   \if@EinBildinnen
    \@Bildlinks
   \else
    \@Bildrechts
   \fi
  \else
   \if@EinBildinnen
    \@Bildrechts
   \else
    \@Bildlinks
   \fi
  \fi
 \fi
\fi
 \hbox to 0pt{%
  \springnachhier
  \vbox to 0pt{\hsize=#2\unitlength\noindent
   \vskip-1ex
   \hrule height\Rahmendicke
   \hbox to#2\unitlength{\vrule width\Rahmendicke\hss\vbox to#3\unitlength{\null\hfill
     \par\vfill}\hss\vrule width\Rahmendicke}\break
   \hrule height\Rahmendicke
   \vskip7pt\box1
   \vss}%
  \hss}%
 \ignorespaces
}%

\def\Rahmenbild(#1,#2)#3#4{%
 \begin{figure}[htbp]
  \hbox to\textwidth{\hfill
   \vbox{\hsize=#1\unitlength\noindent
         \hrule height\Rahmendicke
         \hbox to #1\unitlength{\vrule width\Rahmendicke\hss
                           \vbox to#2\unitlength{\null\hfill\par\vfill}%
                               \hss\vrule width\Rahmendicke}\break
         \hrule height\Rahmendicke
         \vbox{\hsize=#1\unitlength
         \ifx#3\empty
         \else
          \caption{#3}%
         \fi
         \ifx#4\empty
         \else
          \label{#4}%
         \fi}}%
   \hfill}%
  \end{figure}\par
}
%
\def\Fileinput{%
\bgroup
\def\par{}
\def\LiesdenFile{`   '}
\immediate\openin\WelcherFile=\jobname.xyz
\ifeof\WelcherFile
 \def\LiesdenFile{????}
\else
 \immediate\read\WelcherFile to\LiesdenFile
\fi
\immediate\closein\WelcherFile
\endlinechar=-1
\typeout{Soll \LiesdenFile <cr>}
\message{oder ein anderer File gelesen werden?: }
\read-1 to\FileName
\ifx\FileName\empty
 \global\let\LiesdenFile=\LiesdenFile
\else
 \global\let\LiesdenFile=\FileName
 \immediate\openout\Schreibraus=\jobname.xyz
 \immediate\write\Schreibraus{\LiesdenFile}
 \immediate\closeout\Schreibraus
\fi
\egroup
\global\let\liesdenfile=\LiesdenFile
}   % Benutzung: \Fileinput \include{\LiesdenFile} oder \input{\liesdenfile}
%
\dinA4
\EnglischeHochkommata
%
