%  lstfloat.sty
%  Erzeugt gleitfaehige Verzeichnisse von Listings.
%  Es wird das verbatim-Paket von RS, BR, CR geladen
%
%  \begin{source}
%   \caption{Legende\label{...}}
%   \addcomment{Etwas, das zusaetzlich ins
%      Listingverzeichnis aufgenommen wird}
%   \begin{code}
%     verbatim-Text...
%   \end{code}
%  \end{source}
%
\RequirePackage{moreverb}
\RequirePackage{ifthen}

%  Die Listingumgebungen selbst
\newenvironment{source}
 {\@float{source}}
 {\end@float}
\newenvironment{source*}
 {\@dblfloat{source}}
 {\end@dblfloat}

%  Einige Hilfsfunktionen fuer Gleitobjekte
\newcommand{\fps@source}{htbp}
\newcommand{\ftype@source}{4}
\newcommand{\ext@source}{los}
\newcommand{\fnum@source}{\sourcename~\thesource}

%  Der Listingzaehler.
\newcommand{\sourcename}{Listing}
\@ifundefined{chapter}
{\newcounter{source}
 \renewcommand{\thesource}{\arabic{source}}}
{\newcounter{source}[chapter]
 \renewcommand{\thesource}
   {\thechapter-\arabic{source}}}

%  Formatiert die Eintraege im Listing-Verzeichnis.
\newcommand{\l@source}
{\@dottedtocline{1}{1.5em}{2.3em}}

%  Erzeugt das Verzeichnis der Listings.
\newcommand{\losname}{Die Listings}
\newcommand{\tableofsources}
{\setboolean{@restonecol}{false}
 \ifthenelse{\boolean{@twocolumn}}
   {\setboolean{@restonecol}{true}\onecolumn}
   {}
 % Verzeichnis erzeugen
 \chapter*{\losname\@mkboth{\losname}{\losname}}
 {\setlength{\parindent}{0pt}\@starttoc{los}}
 % Aenderungen rueckgaengig machen
 \ifthenelse{\boolean{@restonecol}}
   {\twocolumn}
   {}
}

%  Setzt ein Listing verbatim, von Linien begrenzt.
%  Ausser-/innerhalb der source-Umgebung anwendbar.
\newenvironment{code}
 {\rule{\linewidth}{0.5pt}\verbatimtab\relax}
 {\endverbatimtab\rule{\linewidth}{0.5pt}}

%  erzeugt die fuehrende oder abschliessende Linie.
%  Geeignet fuer \listinginput von moreverb.
\newcommand{\coderule}{\rule{\linewidth}{0.5pt}}

%  Erlaubt die Aufnahme eines kleingeschriebenen
%  Kommentars in das Listing-verzeichnis.
%  Formatierung durch \bcom...\ecom
\newcommand{\addcomment}[1]
{\addtocontents{los}{\protect\bcom{}#1\protect\ecom}}
\newcommand{\bcom}{\bgroup\footnotesize}
\newcommand{\ecom}{\egroup\par\vspace{1ex}}