% This is picinpar.sty
% Macros for making windows with LaTeX
%
% By Friedhelm Sowa, Heinrich-Heine-University D\"usseldorf,
%                    Computing Center
%                    In case of emergency try to get the email adress
%                    after having checked the input :-)
%                    Okay, for those who are too lazy:
%                          tex@ze8.rz.uni-duesseldorf.de
%                          sowa@convex.rz.uni-duesseldorf.de
%
% Incorporated are basic ideas of Alan Hoenig (Thanks Alan!)
% Thanks to Phil Taylor, who gave some useful hints during his
% tutorial at the EURO TeX 92 in Prague.
%
% Also thanks to Ulrik Vieth, who incorporated the macros for
% generating captions within the windows.
%
%----------------
% Known problems:
%
%    - Don't use \samepage
%    - Use \footnotemark within and \footnotetext outside the
%      window-environment instead of \footnote
%    - When using the epic-package load picinpar before epic
%      like \documentstyle[...,picinpar,epic]{...}
%----------------
%
%                       Here we go
%
% Counts
\newcount\br     \newcount\bl
\newcount\na     \newcount\nb  \newcount\tcdsav
\newcount\tcl    \newcount\tcd \newcount\tcn
\newcount\cumtcl \newcount\cumpartcl
% Dimens
\newdimen\lftside   \newdimen\rtside
\newdimen\hpic      \newdimen\vpic
\newdimen\strutilg  \newdimen\picwd
\newdimen\topheight \newdimen\ilg
\newdimen\lpic      \newdimen\cumpar
% Tokens
\newtoks\twa \newtoks\la \newtoks\ra
\newtoks\ha  \newtoks\pictoc
% Boxes
\newbox\rawtext   \newbox\holder
\newbox\windowbox \newbox\wartext
\newbox\finaltext \newbox\aslice    \newbox\bslice
\newbox\wbox      \newbox\wstrutbox \newbox\picbox
\newbox\waslice   \newbox\wbslice   \newbox\fslice
% Another strut
\def\wstrut{\relax\ifmmode\copy\wstrutbox\else\unhcopy\wstrutbox\fi}
%
\long\def\window[#1,#2,#3,#4] {%
% #1 is an integer---no.  of lines down from par top
% #2 is l, r or c what means left, right or centered
%    default is, that the picture is printed at the left side
% #3 is the material for setting a graphic box
% #4 is the explanation for the graphic
\vskip\parskip
\global\cumpar=0pt
\global\cumpartcl=0
\global\cumtcl=0
    \tcd=#1
    \lftside=0pt \rtside=0pt
%    \hpic=\linewidth
    \twa={} \la={} \ra={} \ha={}
\setbox\wbox=\hbox{(}
\computeilg
\pictoc={#3}
\setbox\windowbox=\vbox{\hbox{#3}}
\setbox\wbox=\vbox{\hbox{\noindent#4}}
\picwd=\wd\windowbox
\hpic=\picwd
\vpic=\ht\windowbox\advance\vpic\dp\windowbox
\if #2c\lftside=\linewidth\advance\lftside-\picwd\rtside=0.5\lftside
       \lftside=\rtside
\else \if #2r\lftside=\linewidth\advance\lftside-\picwd
              \rtside=0pt
      \else\rtside=\linewidth\advance\rtside-\picwd
           \lftside=0pt
      \fi
\fi
%
% In case of a centered picture, that does not allow text beside
% we have to add some glue between preceding text, window and
% following text.
%
\if #2c
 \ifdim\rtside<72pt
  \rtside=0pt\lftside=0pt
  \setbox\windowbox=\vbox{%
    \hrule width\picwd height0pt depth0pt
    \vskip.5\parskip\box\windowbox\vskip.5\parskip
    \hrule width\picwd height0pt depth0pt}
  \vpic=\ht\windowbox\advance\vpic\dp\windowbox
 \fi
 \parskip0pt % Within the window area a \parskip>0pt may look ugly
\fi
\ifnum\picwd=0\setbox\picbox=\vbox{\hbox{\noindent#4}}   % without picture
                               \hpic=\wd\picbox % calculate dimensions
              \ifnum\lftside=0\rtside=\linewidth\advance\rtside-\hpic
              \else\ifnum\rtside=0\lftside=\linewidth\advance\lftside-\hpic
              \else\rtside=0.5\linewidth\advance\rtside-0.5\hpic
                   \lftside=\rtside
              \fi\fi
\else\setbox\picbox=\vbox{\hsize=\hpic\vbox to\vpic{\box\windowbox\vfill}%
\ifdim\ht\wbox>0pt\vskip\ilg\vbox{\hsize=\hpic\noindent#4
%
% See above, this is the second part of glue
%
\if #2c
 \ifdim\rtside=0pt \ifdim\lftside=0pt
 \vskip\parskip\hrule width\hpic height0pt depth0pt
 \fi \fi
\fi
}
\fi}\fi
\vpic=\ht\picbox\advance\vpic\dp\picbox
\ifdim\lftside>0pt\advance\lftside-0.5\baselineskip\fi  % put in a distance
\ifdim\rtside>0pt\advance\rtside-0.5\baselineskip\fi    % between text and
                                                        % window
\global\br=\rtside \global\bl=\lftside
\ifnum\picwd=0
\ifdim\vpic>0pt\picwd=\hpic
\else\vpic=\ht\picbox\advance\vpic\dp\picbox
\fi
\fi
    \global\tcl=0 \lpic=0pt
    \loop\global\advance\tcl by 1 \lpic=\tcl\baselineskip
    \ifdim\lpic<\vpic\repeat
    \vpic=\lpic
    \global\cumtcl=\tcl
%
% Here we know exactly the number of indented lines and
% are able to generate the tokens for the \parshape list
%
    \ifnum\bl>0\la={ 0pt \lftside}\fi
    \ifnum\br>0\ra={ 0pt \rtside}\fi
    \ifnum\tcd>0\ha={ 0pt \linewidth}\fi
    \ifnum\tcl<1\global\tcl=1\fi
    \createparshapespec
    \tcd=#1                        % restore the lintel
    \global\tcdsav=#1
%
% This is a very tricky part of the package. Some day there
% will exist a detailed documentation.
%
\ifdim\parskip>0pt
    \def\par{\hfill\vadjust{\vskip0pt\vbox to\parskip{\vss}}
             \global\advance\cumpartcl by 1
             \global\advance\cumpar by \parskip
             \global\lpic=\ht\wstrutbox
             \global\advance\lpic by \dp\wstrutbox
             \ifdim\cumpar<\lpic
             \else\advance\cumpar by -\lpic
                  \advance\cumtcl by -1
             \fi
             \egroup\global\tcd=\tcdsav
             \setbox\wartext=\vbox{\unvbox\rawtext}
\setbox\rawtext=\vbox\bgroup
\clubpenalty=0\widowpenalty=0
\tolerance=1000
\global\lpic=\ht\wstrutbox
\global\advance\lpic by \dp\wstrutbox
%
% Pick up header lines
%
\ifnum\tcd>0\vbadness=10000\splittopskip0pt
 \loop\setbox\holder=\vsplit\wartext to \lpic
  \hpic=\wd\holder\prune\holder\hpic
  \ifdim\ht\holder=\parskip
   \hbox{\vrule height\parskip width0pt depth0pt}
   \typeout{A paragraph ended within headlines! Please change }
   \typeout{the number of headlines for the window environment!}
   \global\advance\tcd by -1
  \else\hbox{\vbox{\box\holder\unskip}}
   \global\advance\tcd by -1
  \fi
 \ifnum\tcd>0\repeat
 \global\tcd=0
 \ifdim\ht\wartext>0pt
 \ifdim\ht\wartext=\parskip\global\advance\tcdsav by 1
       \setbox\holder=\vsplit\wartext to \lpic
       \hbox{\vrule height\parskip width0pt depth0pt}
       \global\advance\cumpar by -\parskip
       \global\advance\cumpartcl by -1
 \fi\fi
\fi
%
% Pick up lines beside window, the rest too
%
\global\tcn=0
\topheight=0pt
\ifdim\ht\wartext>0pt\vbadness=10000\splittopskip0pt
 \loop\setbox\holder=\vsplit\wartext to \lpic
  \hpic=\wd\holder\prune\holder\hpic
  \ifdim\ht\holder=\parskip
  \hbox{\vrule height\parskip width0pt depth0pt}
  \global\advance\topheight by \parskip
  \else
   \setbox\fslice=\hbox{\box\holder}
    \hpic=\ht\fslice
    \advance\hpic by\dp\fslice
   \ifdim\hpic>\lpic
   \global\advance\topheight by\hpic
   \hbox{\vbox{\box\fslice\vss}}
   \else\ifdim\hpic=0pt\relax
   \else\global\advance\topheight by \lpic
   \hbox{\vbox{\box\fslice}}\fi\fi
  \fi
 \ifdim\ht\wartext>0pt\repeat
\tcn=0
\loop\advance\tcn by 1
\advance\topheight by -\lpic
\ifdim\topheight>0pt\repeat
\hpic=\topheight
\ifdim\hpic<0pt\advance\tcn by -1\fi
\global\topheight=\tcn\lpic
\fi
%
% If the indented part is not completed we have to generate a
% new token for the \parshape list
%
\ifnum\tcn<\cumtcl
\global\tcl=\cumtcl
\global\advance\topheight by\cumpartcl\parskip
             \global\advance\tcl by -\tcn \global\twa={}
             \ifnum\tcl>0
\global\vpic=\topheight
\global\topheight=\tcl\lpic
\global\advance\vpic by \topheight
\global\advance\vpic by \lpic
             \createparshapespec
             \parshape=\tcn \the\twa
             \else\parshape=0
             \fi
\else\parshape=0\fi}
\else\def\par{\\}
\fi % new definition of \par in case of \parskip>0 ends here
%
% This is where we start to pick up the paragraph(s)
%
    \setbox\rawtext=\vbox\bgroup\unvbox\rawtext\unskip
    \clubpenalty=0\widowpenalty=0
    \tolerance=1000
    \parshape=\tcn \the\twa }
%
\def\endwindow{%
    \global\tcd=\tcdsav
    \egroup\vskip\parskip\parshape=0 % reset parshape; end \box\rawtext
    \vbadness=10000
    \splittopskip=0pt
%
% Typeset the lines above the window
%
\ifnum\tcd>0\setbox\holder=\vsplit\rawtext to \tcd\baselineskip
\tcn=\tcd
\loop\advance\tcn -1
\setbox\fslice=\vsplit\holder to\baselineskip
\prune\fslice\linewidth
\topheight=0pt
\ifnum\dp\fslice>\dp\wstrutbox
       \advance\topheight-\dp\fslice
       \advance\topheight\dp\wstrutbox
       \advance\topheight\ilg\fi
\hbox to\linewidth{\box\fslice}
\vskip-\topheight
\ifdim\ht\holder>0pt\repeat
\fi
%
% Now we build the boxes beside the window
%
\global\topheight=\tcl\baselineskip
\ifnum\cumpartcl>0\global\tcl=\cumtcl
      \global\topheight=\vpic
\fi
\ifnum\bl>0\ifnum\br>0\multiply\topheight by 2\fi\fi
\ifnum\bl>0\setbox\holder=\vsplit\rawtext to\topheight
\else\ifnum\br>0\setbox\holder=\vsplit\rawtext to\topheight\fi\fi
\tcn=\tcl \na=0 \nb=0
\ifnum\bl>0\ifnum\br>0\multiply\tcn by 2\fi\fi
\ifnum\bl>0\na=\tcn\ifnum\br>0\divide\na by 2\fi\fi
\ifnum\br>0\nb=\tcn\ifnum\bl>0\divide\nb by 2\fi\fi
\ifnum\na=0\ifnum\nb=0
      \setbox\waslice=\vbox to\vpic{\vss}
      \setbox\wbslice=\vbox to\vpic{\vss}
      \bl=1\br=1
      \vskip\ilg
\fi\fi
%
% both sides
%
\ifnum\na>0 \ifnum\nb>0
\loop\advance\nb -1
\advance\na -1
\setbox\aslice=\vsplit\holder to\baselineskip
\prune\aslice\lftside
\setbox\waslice=\vbox{\unvbox\waslice\hbox
to\lftside{\box\aslice\hfil}}
\setbox\bslice=\vsplit\holder to\baselineskip
\prune\bslice\rtside
\setbox\wbslice=\vbox{\unvbox\wbslice\hbox
to\rtside{\box\bslice\hfil}}
\ifnum\nb>0\repeat
\fi\fi
%
% only text on the left side
%
\ifnum\na>0
    \loop\advance\na -1
    \setbox\aslice=\vsplit\holder to\baselineskip
    \prune\aslice\lftside
    \setbox\waslice=\vbox{\unvbox\waslice\hbox
    to\lftside{\box\aslice\hfil}}
    \ifdim\ht\holder>0pt\repeat
\fi
%
% only text on the right side
%
\ifnum\nb>0
    \loop\advance\nb -1
    \setbox\bslice=\vsplit\holder to\baselineskip
    \prune\bslice\rtside
    \setbox\wbslice=\vbox{\unvbox\wbslice\hbox
    to\rtside{\box\bslice\hfil}}
    \ifdim\ht\holder>0pt\repeat
\fi
%
% fixing the dimensions of the window part
%
\ifnum\bl=0\topheight=\ht\wbslice
\else\ifnum\br=0\topheight=\ht\waslice
      \else\ifdim\ht\waslice>\ht\wbslice\topheight=\ht\waslice
            \else\topheight=\ht\wbslice\fi\fi\fi
%
% ship out the window material to the main vertical list
%
\setbox\windowbox=\vbox{\hbox to\linewidth{%
\ifnum\bl>0\box\waslice\hfill\fi%
\vbox to\topheight{\hrule width\picwd height0pt depth0pt\vskip0pt%
\vfill\unvbox\picbox%
\ifnum\picwd>0\vfill\fi%
\vss}\ifnum\br>0\hfill\box\wbslice\fi}}%
\unvbox\windowbox%
\loop
 \setbox\bslice=\vsplit\rawtext to\baselineskip
 \prune\bslice\linewidth
 \setbox\wbslice=\vbox{\hbox to\linewidth{\box\bslice\hfil}}
 \unvbox\wbslice
 \ifdim\ht\rawtext>0pt
\repeat
}% FINITO
%
% What else do we need?
%
\def\prune#1#2{
% take a \vbox containing a single \hbox,
% \unvbox it, and cancel the \lastskip
% put in a \hbox of width #2
 \unvbox#1 \setbox#1=\lastbox % \box#1 now is an \hbox
 \ifdim\ht#1=\parskip
 \setbox#1=\hbox to#2{\vrule height\parskip depth0pt width0pt\hfill}
 \else\ifdim\ht#1=0pt\relax
 \else\setbox#1=\hbox to#2{\wstrut\unhbox#1\unskip}\fi\fi}
%
% Here the token \twa is generated.
% It's not so difficult as it looks like.
%
\def\createparshapespec{%
\global\tcn=0
\ifnum\bl>0\global\tcn=\tcl\else\ifnum\br>0\global\tcn=\tcl\fi\fi
\na=0 \nb=0
\ifnum\bl>0\ifnum\br>0\multiply\tcn by 2\fi\fi
\ifnum\bl>0\na=\tcn\ifnum\br>0\divide\na by 2\fi\fi
\ifnum\br>0\nb=\tcn\ifnum\bl>0\divide\nb by 2\fi\fi
\global\advance\tcn by\tcd \global\advance\tcn by1
\ifnum\tcd>0
\loop\twa=\expandafter{\the\twa\the\ha}\advance\tcd -1
\ifnum\tcd>0\repeat
\fi
\ifnum\bl>0 \ifnum\br>0
\loop\twa=\expandafter{\the\twa\the\la}\advance\na -1
\twa=\expandafter{\the\twa\the\ra}\advance\nb -1
\ifnum\na>0\repeat
\fi\fi
\ifnum\na>0
\loop\twa=\expandafter{\the\twa\the\la}\advance\na -1
\ifnum\na>0\repeat
\fi
\ifnum\nb>0
\loop\twa=\expandafter{\the\twa\the\ra}\advance\nb -1
\ifnum\nb>0\repeat
\fi
\global\twa=\expandafter{\the\twa 0pt \the\linewidth}}
%
\def\computeilg{% compute the interline glue
 \tcl=0\ilg=0pt\strutilg=0pt
 \loop\setbox\wbox=\hbox{\char\tcl}
 \ifdim\ht\wbox>\ilg\ilg=\ht\wbox\fi
 \ifdim\dp\wbox>\strutilg\strutilg=\dp\wbox\fi
 \advance\tcl by 1
 \ifnum\tcl<128\repeat
 \ht\wbox=\ilg
 \dp\wbox=\strutilg
 \strutilg=\ht\wbox %\advance\strutilg by\ilg
 \ifdim\strutilg>\baselineskip
  \typeout{character with height greater baselineskip found in font}
  \typeout{baselineskip changed to 1.5 of that height!}
  \baselineskip=1.5\strutilg
 \fi
 \global\ilg=\baselineskip
 \global\advance\ilg-\ht\wbox \global\advance\ilg-\dp\wbox
 \strutilg=\ht\wbox \advance\strutilg by\ilg
 \setbox\wstrutbox=\hbox{\vrule height\strutilg depth\dp\wbox width0pt}}
%
% frames
%
\def\framepic#1{\vbox{%
\hsize\expandafter\wd\csname #1box\endcsname
\advance\hsize .8pt \hrule%
\hbox to\hsize%
{\vrule\hfill\vbox to\expandafter\ht\csname #1box\endcsname{%
\expandafter\box\csname #1box\endcsname }\hfill\vrule}\hrule\vss}}
%
\def\wframepic#1{\vbox{%
\hsize\expandafter\wd\csname #1box\endcsname
\advance\hsize 3.8pt\hrule%
\hbox to\hsize%
{\vrule\hfill\vbox{\kern1.5pt%
\expandafter\box\csname #1box\endcsname
\kern1.5pt}\hfill\vrule}\hrule\vss}}
%
% caption
%
\def\winstepcounter#1{\global\advance\csname c@#1\endcsname 1
    {\let\@elt\@stpelt \csname cl@#1\endcsname}}

\def\winrefstepcounter#1{\winstepcounter{#1}\let\@tempa\protect
\def\protect{\noexpand\protect\noexpand}%
\edef\@currentlabel{\csname p@#1\endcsname\csname the#1\endcsname}%
\let\protect\@tempa}
\long\def\w@dblarg#1{\@ifnextchar[{#1}{\w@xdblarg{#1}}}
\long\def\w@xdblarg#1#2\par{#1[{#2}]#2\par}

\def\wincaption{\winrefstepcounter\@captype \w@dblarg{\@wincaption\@captype}}

\long\def\@wincaption#1[#2]#3\par{\par\addcontentsline{\csname
  ext@#1\endcsname}{#1}{\protect\numberline{\csname
  the#1\endcsname}{\ignorespaces #2}}\begingroup
    \@parboxrestore
    \normalsize
    \@makewincaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
  \endgroup}

\long\def\@makewincaption#1#2{%
   \setbox\@tempboxa\hbox{\footnotesize{\bf #1:\enspace}{#2}}%
   \ifdim\wd\@tempboxa>\picwd
      {\footnotesize{\bf #1:\enspace}{#2\par}}
   \else
      \hbox to\picwd{\hfil\box\@tempboxa\hfil}
   \fi}

\long\def\figwindow[#1,#2,#3,#4] {%
     \advance\c@figure -1
     \begin{window}[#1,#2,{#3},{\def\@captype{figure}%
        \wincaption#4\par}] }

\long\def\tabwindow[#1,#2,#3,#4] {%
     \advance\c@table -1
     \begin{window}[#1,#2,{#3},{\def\@captype{table}%
        \wincaption#4\par}] }

\def\endfigwindow{\end{window}}
\def\endtabwindow{\end{window}}
\endinput
%%%
\documentstyle[german,picinpar]{article}
\setlength{\parskip}{.66\baselineskip}
\setlength{\parindent}{0pt}
\begin{document}
\section*{Beispiele zu {\tt picinpar.sty}}
\font\yn=cmss17 scaled \magstep5 %oder sonst was gro"ses (yinit?)
\begin{verbatim}
\begin{window}[0,l,{\yn V},{}]
or einigen Jahren wurde von ...
... Abschnitts erfolgten automatisch.
\end{window}
\end{verbatim}

\begin{window}[0,l,{\yn V},{}]
or einigen Jahren wurde von Donald E.~Knuth im TUGboat ein kleines
Problem mit der Bitte um L"osung vorgestellt. Es handelte sich darum,
in einem Paragraphen ein Fenster zu erzeugen, in das man beliebigen Text
oder eine Zeichnung hineinsetzen kann. Prompt kamen dann in den folgenden
Ausgaben L"osungsvorschl"age: Einer von DEK pers"onlich, der andere von
Alan Hoenig. Der letztgenannte brachte die elegantere L"osung, die keine
manuellen Korrekturen mehr notwendig machte. Sein Makro verlangte lediglich
in den Parametern Informationen "uber die Breite und H"ohe der
freizulassenden Stelle im Paragraphen. Die Einz"uge und der Satz der
Fragmente des Abschnitts erfolgten automatisch.
\end{window}

\begin{verbatim}
\begin{figwindow}[2,r,{
\unitlength1cm
\begin{picture}(3,1.4)
\put(0.7,0.7){\circle*{0.2}}     \put(0.7,0.7){\circle{1.2}}
\put(0.7,0.7){\vector(0,1){0.6}} \put(2.5,0.7){\circle*{0.5}}
\end{picture}
},{Kreise und Pfeile}]
Was leisten nun diese Macros ...
... sieht hierbei wie folgt aus:
\end{figwindow}
\end{verbatim}

\begin{figwindow}[2,r,{
\unitlength1cm
\begin{picture}(3,1.4)
\put(0.7,0.7){\circle*{0.2}}     \put(0.7,0.7){\circle{1.2}}
\put(0.7,0.7){\vector(0,1){0.6}} \put(2.5,0.7){\circle*{0.5}}
\end{picture}
},{Kreise und Pfeile}]
Was leisten nun diese Macros? Einen kleinen Eindruck hat man schon
zu Anfang dieses Artikels bekommen: der erste Buchstabe des Absatzes
ist in einer anderen Schriftgr"o"se gedruckt und in den Absatz eingepa"st.
Es mu"s aber nicht unbedingt Text sein, der so einger"uckt wird. Es kann
ebenso eine \verb?picture?--Umgebung sein, die so in den Absatz eingef"ugt
wird. Das rechts stehende Beispiel, das aus "'\LaTeX , Eine Einf"uhrung"'
bekannt sein d"urfte, ist in einer \verb?minipage?--Umgebung gesetzt
worden. Die Eingabe im Text sieht hierbei wie oben aus.
\end{figwindow}

\begin{verbatim}
\begin{tabwindow}[1,r,{
\begin{tabular}[t]{|r|l|r@{:}l|}
\hline
1&HSV&12&0\\
...
\end{tabular}
},{Tabelle}]
Auch der Satz von Tabellen in ...
... w"urde sie etwas durchh"angen.

Nachdem die Tastatur gequ"alt ...
... noch die Nummerierung stimmt.
\end{tabwindow}
\end{verbatim}

\begin{tabwindow}[1,r,{
\begin{tabular}[t]{|r|l|r@{:}l|}
\hline
1&HSV&12&0\\
\hline
2&MSV&11&1\\
\hline
3&VfB&10&2\\
\hline
4&SVW&9&3\\
\hline
5&1.\ FCK&8&4\\
\hline
\end{tabular}
},{Tabelle}]
Auch der Satz von Tabellen in ein Fenster ist kein gro"ses Problem.
Man nimmt einfach eine Tabelle, oder denkt sich auch eine aus.
Dann wird daf"ur Sorge getragen, da"s sie auch mit der unteren
Zeile ausgerichtet wird. Ansonsten w"urde sie etwas durchh"angen.

Nachdem die Tastatur gequ"alt und das Hirn zermartert wurde kommt
dann so etwas heraus, wie es hier rechts zu sehen ist. Sogar die
Tabellenbezeichnung ist erschienen. Aber wirklich interessant wird's,
wenn auch bei der n"achsten Tabelle noch die Nummerierung stimmt.
\end{tabwindow}

\begin{verbatim}
\begin{tabwindow}[2,l,{
\begin{tabular}[t]{|r|l|r@{:}l|}
...
\end{tabular}
},{Tabelle}]
Was wahnsinnig ...
... sagt's denn?
\end{tabwindow}
\end{verbatim}

\begin{tabwindow}[2,l,{
\begin{tabular}[t]{|r|l|r@{:}l|}
\hline
1&HSV&12&0\\
\hline
2&MSV&11&1\\
\hline
3&VfB&10&2\\
\hline
4&SVW&9&3\\
\hline
5&1.\ FCK&8&4\\
\hline
\end{tabular}
},{Tabelle}]
Was wahnsinnig auflockernd wirkt, ist der st"andige Positionswechsel
von Abbildungen auf einer Seite. Das Auge wird nicht m"ude bei
der Erkundung der typographischen Vielfalt, die in gedruckten
Werken enthalten ist. Aber man sollte sich nichtsdestotrotz doch
auf die wesentlichen Mitteilungen konzentrieren, die mit derartigen
Werken vermittelt werden sollen.

Was sind aber nun die essentiellen Informationen? Naja, ein kleines
{\tt l} und eine {\tt 2} bewirkt ein g"anzlich anderes Erscheinungsbild
der Realit"at, wie sie mit den Augen eines Fu"sballfans der sechziger
Jahre gesehen sein k"onnte. Bevor wir es vergessen: Da war doch noch
die Unsicherheit wegen der Nummerierung von Tabellen. Na also, wer
sagt's denn?
\end{tabwindow}

\begin{verbatim}
\begin{tabwindow}[4,c,{
\begin{tabular}[t]{|r|l|r@{:}l|r@{:}l|}
...
\end{tabular}
},{Tabelle}]
\sloppy
Aber jetzt wird alles auf ...
... genug der Beispiele.
\end{tabwindow}
\end{verbatim}

\begin{tabwindow}[4,c,{
\begin{tabular}[t]{|r|l|r@{:}l|r@{:}l|}
\hline
1&HSV&12&0&14&1\\
\hline
2&MSV&11&1&10&4\\
\hline
3&VfB&10&2&12&9\\
\hline
4&SVW&9&3&11&9\\
\hline
5&1.\ FCK&8&4&10&10\\
\hline
\end{tabular}
},{Tabelle}]
\sloppy
Aber jetzt wird alles auf die Spitze getrieben. Oder vielmehr
in die Mitte gesetzt. Ja doch, auch der zentrierte Satz einer Tabelle
ist ebenfalls kein gro"ses Problem. Ein Problem ist jedoch, wie denn
der Text gelesen werden soll. Erst die linke Spalte und dann die
rechte oder einfach von links nach rechts? Oft kann man es nicht
falsch machen. Das tr"ostet doch ungemein!

Nun noch ein kleiner Hinweis in eigener Sache:
Beim zentrierten Satz ist es schon besser, wenn der Abstand zwischen
den Abschnitten auf $0pt$ gesetzt wird oder nur ein Paragraph verwendet
wird. Der Grund? Die Abst"ande k"onnen unabh"angig vom Zeilenabstand
sein und so ist ein optisch korrekter Satz der Spalten rechts und
links vom Fenster etwas m"uhsam {\tt :-)}. Um nichts dem Zufall zu
"uberlassen wird dies gleich von {\tt picinpar} erledigt.
\end{tabwindow}

Jetzt noch der Fall, bei dem eine Abbildung zentriert in den Text gesetzt
werden soll, aber rechts und links so wenig Platz ($<=72pt$) bleibt,
da"s dort die Probleme mit den Trennungen zu gro"s werden w"urden. Als
Beispiel wird im Fenster die \TeX{}--Eingabe zu diesem Fall gezeigt. Um
gleich etwaigen Problemen vorzubeugen, wird zun"achst wie folgt vorgegangen:

{\parskip0pt\topsep0pt
\begin{verbatim}
\newbox\pppbox
\setbox\pppbox=\vbox{\hsize=11cm
\begin{verbatim}
\begin{figwindow}[4,c,{\wframepic{ppp}
},
{Die Eingabe zu diesem Textteil!}]
Diese Vorgehensweise ist wegen der Benutzung
...
dem Einsatz im Wege.
\end{figwindow}
\end{verbatim}
\verb?\end{verbatim}?
\begin{verbatim}
}
\end{verbatim}
}
\newbox\pppbox
\setbox\pppbox=\vbox{\hsize=11cm
\begin{verbatim}
\begin{figwindow}[4,c,{\wframepic{ppp}
},
{Die Eingabe zu diesem Textteil!}]
Diese Vorgehensweise ist wegen der Benutzung
...
dem Einsatz im Wege.
\end{figwindow}
\end{verbatim}
}
\begin{figwindow}[4,c,{\wframepic{ppp}},
{Die Eingabe zu diesem Textteil!}]
Diese Vorgehensweise ist wegen der Benutzung von {\tt figwindow} und
der {\tt verbatim} dargestellten Eingabe notwendig. Aber ist ja auch egal.
Wichtig ist einfach, da"s festgestellt wird, ob rechts und links vom
zentrierten Bild noch genug Platz frei ist, um dort Text ohne gro"se
Probleme zu setzen. Die Wahl von $72pt$ ist mehr oder weniger willk"urlich
vorgenommen worden. Letztlich h"angt diese Grenze ja auch von der
verwendeten Sprache ab. Falls also nicht genug Platz an den Seiten
vorhanden ist, dann wird einfach nach dem Fenster mit dem Text fortgefahren.
Noch mal schnell ein Blick auf die Nummerierung der Abbildungen...
Ja, stimmt genau. Jetzt steht also dem Einsatz nichts im Wege.
\end{figwindow}

\begin{window}[3,r,{\arraycolsep=2.5pt \def\arraystretch{.75}
$\left(\begin{array}{ccccccccc}%
	 *&*&*&*&&&&&\\
        **&*&*&*&*&&&&\\ \cline{3-6}
	 *&*&\multicolumn{1}{|c}{*}&*&*&\multicolumn{1}{c|}{*}&&&\\
	 &*&\multicolumn{1}{|c}{*}&*&*&\multicolumn{1}{c|}{*}&*&&\\
	 &&\multicolumn{1}{|c}{*}&*&*&\multicolumn{1}{c|}{*}&*&*&\\ \cline{3-6}
	 &&&*&*&*&*&*&*\\
	 &&&&*&*&*&*&*\\
	 &&&&&*&*&*&*\\
	 &&&&&&*&*&*
	 \end{array}
   \right)$},{}]
Doch halt! Es handelt sich hier ja um \TeX{}. Und das ist Grund genug, auch
noch kurz auf mathematischen Formelsatz einzugehen. Sowohl im Fenster als
auch im Text neben dem Fenster k"onnen Formeln erscheinen, deren Dimensionen
beim Satz weitestgehend ber"ucksichtigt werden. Da ist also rechts ein
{\tt array} und hier folgt eine Formel:

\def\formel#1#2#3#4#5{#1(#4)-#1(#3)=
\int_{#3}^{#4}\sum_{j=0}^{#5}#2(x_j)
\prod_{{k=0}\atop{k\not= j}}^{#5}
{x-x_k\over x_j-x_k}\; dx}
$\formel Ffabn$

Der zentrierte Satz von Formeln neben dem Text ist bisher mit
{\tt picinpar.sty} nicht m"oglich, vielleicht kommt es aber eines
Tages. Und "uberhaupt hat sich gerade der Mathematiksatz als gro"ses
Problem bei der Entwicklung herausgestellt, da doch viel {\tt glue} in
den {\tt boxes} verwendet wird. Aber es geht ja doch so halbwegs.
\end{window}
\vfill
\centerline{Friedhelm Sowa, Heinrich--Heine--Universit"at D"usseldorf,
Universit"atsrechenzentrum}
\centerline{Email: sowa@convex.rz.uni-duesseldorf.de {\sl oder}
tex@ze8.rz.uni-duesseldorf.de}
\end{document}
