%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%%  lidiasty.tex     LiDIA style file           Version 1.1
%%
%%  This file contains the LaTeX definitions for LiDIA
%%  included here because to allow latex2html find the commands
%%  (latex2html doesn't include *.sty-files)
%%
%%  Copyright   (c)   1995  -   LiDIA-Group.  
%%



%%
%% Define LATEXVERSION as 2e if you are running Latex2e.
%% Define LATEXVERSION as, e.g. 209, if you are running Latex 209.
%% MM.
%%

\def\LATEXVERSION{2e}

%%
%% YOU SHOULD NOT HAVE TO CHANGE ANYTHING BELOW THIS LINE.
%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



%% latexonly (ignored_commands)
\parskip .5ex plus 0.5ex minus 0.5ex
\lineskip 3ex
\parindent 0pt

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% misc
%%
\newcommand{\LiDIA}{{\sf LiDIA}}
\newcommand{\Version}{{\sf 1.3}}
\newcommand{\LiDIAVersion}{{\sf LiDIA 1.3}}

\def\LATEXV2e{2e}
\def\onLaTeXe#1#2{{\ifx\LATEXVERSION\LATEXV2e #1\else #2\fi}}

%% \BF{x} = prints bold face x
%% \IT{x} = prints italic x
%% \TT{x} = prints typewriter x
%% \SF{x} 
%% \UL{x} = prints underlined x 

\ifx\LATEXVERSION\LATEXV2e
	\newcommand{\BF}[1]{\textbf{#1}}
	\newcommand{\IT}[1]{\textit{#1}}
	\newcommand{\TT}[1]{\texttt{#1}}
	\newcommand{\EM}[1]{\emph{#1}}        %% Version 1.1
	\newcommand{\SF}[1]{\textsf{#1}}      %% Version 1.1
	\newcommand{\UL}[1]{{\underline #1}}  %% Version 1.1
\else
	\newcommand{\BF}[1]{{\bf #1}}
	\newcommand{\IT}[1]{{\it #1}}
	\newcommand{\TT}[1]{{\tt #1}}
	\newcommand{\EM}[1]{{\em #1}}          %% Version 1.1
	\newcommand{\SF}[1]{{\sf #1}}          %% Version 1.1
	\newcommand{\UL}[1]{{\underline #1}}   %% Version 1.1
\fi

\begin{htmlonly}
\newcommand{\BF}[1]{\mbox{\bf #1}}
\newcommand{\IT}[1]{\mbox{\it #1}}
\newcommand{\TT}[1]{\mbox{\tt #1}}
\newcommand{\EM}[1]{\mbox{\em #1}}          %% Version 1.1
\newcommand{\SF}[1]{\mbox{\sf #1}}          %% Version 1.1
\newcommand{\UL}[1]{\mbox{\underline #1}}   %% Version 1.1
\end{htmlonly}

%% \INDEX{x} prints bold face x and makes an index entry
%% \INDEXSUB{x}{y} prints bold face y and makes an index subentry x:y
%% \INDEXTT{x} prints bold face x and makes a typewriter index entry
%% \INDEXSUBTT{x}{y} prints bold face y and makes a typewriter 
%%                   subindex entry x:y

\newcommand{\Index}[1]{{\bf #1}\index{#1}}
\newcommand{\IndexSUB}[2]{{\bf #2}\index{#1!#2}}
\newcommand{\IndexTT}[1]{{\bf #1}\index{#1@{\tt #1}}}
\newcommand{\IndexSUBTT}[2]{{\bf #2}\index{#1!#2@{\tt #2}}}
\newcommand{\IndexSH}[1]{{\bf \##1}\index{#1@{\tt \##1}}}

%% Postscript support
%% \PS{x} loads the file x.ps
%% \EPS{x} loads the file x.eps

\newcommand{\PS}[1]{\mbox{\psfig{file=PS/#1.ps}}}
\newcommand{\EPS}[1]{\mbox{\psfig{file=EPS/#1.eps}}}

%% latexonly (ignored_commands)
\newenvironment{ITEMIZE}%
{\labelsep 0 pt \labelwidth 0 pt \itemindent 0 pt
\begin{description}}%
{\end{description}}
\newcommand{\ITEM}{\item[]}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% Commands to handle math modus
%%

%% \MATH{x} prints x in math modus
%% \LE prints <=
%% \GE prints >=
%% \LT prints <
%% \GT prints >
%% \MID prints |
%% \TRUE prints 1
%% \FALSE prints 0

%\begin{latexonly}
\newcommand{\MATH}[1]{\protect\mbox{$#1$}}
\newcommand{\TEMPL}[1]{\mbox{$<$#1$>$}}
\newcommand{\LE}{\onLaTeXe{\ensuremath{\le}}{\mbox{$\le$}}}
\newcommand{\LT}{\onLaTeXe{\ensuremath{<}}{\mbox{$<$}}}
\newcommand{\GE}{\onLaTeXe{\ensuremath{\ge}}{\mbox{$\ge$}}}
\newcommand{\GT}{\onLaTeXe{\ensuremath{>}}{\mbox{$>$}}}
\newcommand{\MID}{\onLaTeXe{\ensuremath{\mid}}{\mbox{$\mid$}}}
\newcommand{\TRUE}{\onLaTeXe{\ensuremath{true}}{\mbox{$true$}}}
\newcommand{\FALSE}{\onLaTeXe{\ensuremath{false}}{\mbox{$false$}}}
%\end{latexonly}

\begin{htmlonly}
\newcommand{\MATH}[1]{\BF{#1}}
\newcommand{\TEMPL}[1]{\BF{<#1>}}
\newcommand{\LE}{\BF{<=}}
\newcommand{\LT}{\BF{<}}
\newcommand{\GE}{\BF{>=}}
\newcommand{\GT}{\BF{>}}
\newcommand{\MID}{\BF{|}}
\newcommand{\TRUE}{\BF{true}}
\newcommand{\FALSE}{\BF{false}}
\end{htmlonly}

%%
%%
%%

%\begin{latexonly}
\newcommand{\NEG}{\onLaTeXe{\ensuremath{\neg}}{\mbox{$\neg$}}}
\newcommand{\NEQ}{\onLaTeXe{\ensuremath{\neq}}{\mbox{$\neq$}}}
\newcommand{\SQRT}[1]{\onLaTeXe{\ensuremath{\sqrt{#1}}}{\mbox{$\sqrt{#1}$}}}
\newcommand{\EQUIV}{\onLaTeXe{\ensuremath{\equiv}}{\mbox{$\equiv$}}}
\newcommand{\AND}{\onLaTeXe{\ensuremath{\wedge}}{\mbox{$\wedge$}}}
\newcommand{\OR}{\onLaTeXe{\ensuremath{\vee}}{\mbox{$vee$}}}
\newcommand{\XOR}{\onLaTeXe{\ensuremath{\oplus}}{\mbox{$\oplus$}}}
\newcommand{\NOT}{\onLaTeXe{\ensuremath{\neg}}{\mbox{$\neg$}}}
\newcommand{\CDOT}{\onLaTeXe{\ensuremath{\cdot}}{\mbox{$\cdot$}}}
\newcommand{\LDOTS}{\onLaTeXe{\ensuremath{\ldots}}{\mbox{$\ldots$}}}
\newcommand{\DOTFILL}{\dotfill}
%\end{latexonly}

\begin{htmlonly}
\newcommand{\NEG}{\BF{!}}
\newcommand{\NEQ}{\BF{!=}}
\newcommand{\SQRT}[1]{\BF{SQRT(\mbox{#1})}}
\newcommand{\EQUIV}{\BF{<==>}}
\newcommand{\AND}{\BF{AND}}
\newcommand{\OR}{\BF{OR}}
\newcommand{\XOR}{\BF{XOR}}
\newcommand{\NOT}{\BF{NOT}}
\newcommand{\CDOT}{\BF{*}}
\newcommand{\LDOTS}{...}
\newcommand{\DOTFILL}{\vspace{1cm}}
\end{htmlonly}

%%
%%
%%

%\begin{latexonly}
\newcommand{\PM}{\onLaTeXe{\ensuremath{\pm}}{\mbox{$\pm$}}}
\newcommand{\LFLOOR}{\onLaTeXe{\ensuremath{\lfloor}}{\mbox{$\lfloor$}}}
\newcommand{\RFLOOR}{\onLaTeXe{\ensuremath{\rfloor}}{\mbox{$\rfloor$}}}
%\newcommand{\SIM}{\onLaTeXe{\ensuremath{\sim}}{\mbox{$\sim$}}}
\newcommand{\SIM}{\mbox{$\sim$}}
\newcommand{\IN}{\onLaTeXe{\ensuremath{\in}}{\mbox{$\in$}}}
\newcommand{\ABS}[1]{\onLaTeXe{\ensuremath{|\mbox{#1}|}}{\mbox{$|\mbox{#1}|$}}}
\newcommand{\TERM}[1]{\onLaTeXe{\ensuremath{\mbox{#1}}}{\mbox{$\mbox{#1}$}}}
\newcommand{\FRAC}[2]{\onLaTeXe{\ensuremath{\frac{#1}{#2}}}{\mbox{$\frac{#1}{#2}$}}}
\newcommand{\SUM}[3]{\onLaTeXe{\ensuremath{\sum_{#1}^{#2} #3}}{\mbox{$\sum_{#1}^{#2} #3$}}}
%\end{latexonly}

\begin{htmlonly}
\newcommand{\PM}{\BF{+/-}}
\newcommand{\LFLOOR}{\BF{INT(}}
\newcommand{\RFLOOR}{\BF{)}}
\newcommand{\SIM}{\BF{\~{}}}
\newcommand{\IN}{\BF{IN}}
\newcommand{\ABS}[1]{\BF{|#1|}}
\newcommand{\TERM}[1]{\BF{(#1)}}
\newcommand{\FRAC}[2]{\BF{(\mbox{#1})/(\mbox{#2})}}
\newcommand{\SUM}[3]{\BF{SUM(\mbox{#1},\ldots,\mbox{#2}; \mbox{#3})}}

%\newcommand{\LEFTABS}{\BF{|}}
%\newcommand{\RIGHTABS}{\BF{|}}
\end{htmlonly}

%%
%% Version 1.1:
%%

%%
%%
%%

%\begin{latexonly}
\newcommand{\COPYRIGHT}{\copyright}
\newcommand{\AST}{\onLaTeXe{\ensuremath{\ast}}{\mbox{$\ast$}}}
\newcommand{\CUP}{\onLaTeXe{\ensuremath{\cup}}{\mbox{$\cup$}}}
\newcommand{\DASHV}{\onLaTeXe{\ensuremath{\dashv}}{\mbox{$\dashv$}}}
\newcommand{\DIV}{\onLaTeXe{\ensuremath{\div}}{\mbox{$\div$}}}
\newcommand{\EQ}{\onLaTeXe{\ensuremath{=}}{\mbox{$=$}}}
\newcommand{\GEQ}{\onLaTeXe{\ensuremath{\geq}}{\mbox{$\geq$}}}
\newcommand{\CIRC}{\onLaTeXe{\ensuremath{\circ}}{\mbox{$\circ$}}}
%\end{latexonly}

\begin{htmlonly}
\newcommand{\COPYRIGHT}{\BF{(c)}}
\newcommand{\AST}{\mbox{*}}
\newcommand{\CUP}{\BF{U}}
\newcommand{\DASHV}{\BF{-|}}
\newcommand{\DIV}{\mbox{/}}
\newcommand{\EQ}{\BF{==}}
\newcommand{\GEQ}{\BF{>=}}
\newcommand{\CIRC}{\BF{o}}
\end{htmlonly}

%%
%%
%%

%\begin{latexonly}
\newcommand{\GG}{\onLaTeXe{\ensuremath{\gg}}{\mbox{$\gg$}}}
\newcommand{\INFTY}{\onLaTeXe{\ensuremath{\infty}}{\mbox{$\infty$}}}
\newcommand{\LCEIL}{\onLaTeXe{\ensuremath{\lceil}}{\mbox{$\lceil$}}}
\newcommand{\RIGHT}{\right}
\newcommand{\LEFT}{\left}
\newcommand{\LEFTARROW}{\onLaTeXe{\ensuremath{\leftarrow}}{\mbox{$\leftarrow$}}}
\newcommand{\LEQ}{\onLaTeXe{\ensuremath{\leq}}{\mbox{$\leq$}}}
\newcommand{\LL}{\onLaTeXe{\ensuremath{\ll}}{\mbox{$\ll$}}}
\newcommand{\MOD}{\onLaTeXe{\ensuremath{\%}}{\mbox{$\%$}}}
%\end{latexonly}

\begin{htmlonly}
\newcommand{\GG}{\BF{>>}}
\newcommand{\INFTY}{\BF{oo}}
\newcommand{\LCEIL}{\BF{CEIL(}}
\newcommand{\LEFTARROW}{\BF{<==}}
\newcommand{\RIGHT}{\hspace{0.001cm}}
\newcommand{\LEFT}{\hspace{0.001cm}}
\newcommand{\LEQ}{\BF{<=}}
\newcommand{\LL}{\BF{<<}}
\newcommand{\MOD}{\BF{MOD}}
\end{htmlonly}

%%
%%
%%

%\begin{latexonly}
\newcommand{\MODELS}{\onLaTeXe{\ensuremath{\models}}{\mbox{$\models$}}}
\newcommand{\MP}{\onLaTeXe{\ensuremath{\mp}}{\mbox{$\mp$}}}
\newcommand{\NI}{\onLaTeXe{\ensuremath{\ni}}{\mbox{$\ni$}}}
\newcommand{\PERP}{\onLaTeXe{\ensuremath{\perp}}{\mbox{$\perp$}}}
\newcommand{\PROD}[3]{\onLaTeXe{\ensuremath{\prod_{#1}^{#2} #3}}{\mbox{$\prod_{#1}^{#2} #3$}}}
\newcommand{\RCEIL}{\onLaTeXe{\ensuremath{\rceil}}{\mbox{$\rceil$}}}
\newcommand{\RIGHTARROW}{\onLaTeXe{\ensuremath{\rightarrow}}{\mbox{$\rightarrow$}}}
\newcommand{\SETMINUS}{\onLaTeXe{\ensuremath{\setminus}}{\mbox{$\setminus$}}}  %% \
%\end{latexonly}

\begin{htmlonly}
\newcommand{\MODELS}{\BF{|=}}
\newcommand{\MP}{\BF{-/+}}
\newcommand{\NI}{\BF{CONTAINS}}
\newcommand{\PERP}{\BF{_|_}}
\newcommand{\PROD}[3]{\BF{PROD(\mbox{#1},\ldots,\mbox{#2}; \mbox{#3})}}
\newcommand{\RCEIL}{\BF{)}}
\newcommand{\RIGHTARROW}{\BF{==>}}
\newcommand{\SETMINUS}{\BF{-}}  %% \
\end{htmlonly}

%%
%%
%%

%\begin{latexonly}
\newcommand{\SQCUP}{\onLaTeXe{\ensuremath{\sqcup}}{\mbox{$\sqcup$}}}
\newcommand{\STAR}{\onLaTeXe{\ensuremath{\star}}{\mbox{$\star$}}}
\newcommand{\TIMES}{\onLaTeXe{\ensuremath{\times}}{\mbox{$\times$}}}
\newcommand{\VEE}{\onLaTeXe{\ensuremath{\vee}}{\mbox{$\vee$}}}
\newcommand{\VDASH}{\onLaTeXe{\ensuremath{\vdash}}{\mbox{$\vdash$}}}
\newcommand{\WEDGE}{\onLaTeXe{\ensuremath{\wedge}}{\mbox{$\wedge$}}}
\newcommand{\POT}[2]{\onLaTeXe{\ensuremath{{\mbox{#1}}^{\mbox{#2}}}}{\mbox{${\mbox{#1}}^{\mbox{#2}}$}}}
\newcommand{\CAP}{\onLaTeXe{\ensuremath{\cap}}{\mbox{$\cap$}}} 
\newcommand{\SQCAP}{\onLaTeXe{\ensuremath{\sqcap}}{\mbox{$\sqcap$}}} 
\newcommand{\SUBSET}{\onLaTeXe{\ensuremath{\subset}}{\mbox{$\subset$}}}
\newcommand{\SUBSETEQ}{\onLaTeXe{\ensuremath{\subseteq}}{\mbox{$\subseteq$}}} 
%\newcommand{\SUBSETNEQ}{\onLaTeXe{\ensuremath{\subsetneq}}{\mbox{$\subsetneq$}}}
%\end{latexonly}

\begin{htmlonly}
\newcommand{\SQCUP}{\BF{|_|}}
\newcommand{\STAR}{\mbox{*}}
\newcommand{\TIMES}{\mbox{x}}
\newcommand{\VEE}{\BF{$\backslash$/}}     % \/
\newcommand{\VDASH}{\BF{|-}}
\newcommand{\WEDGE}{\BF{/$\backslash$}}   % /\
\newcommand{\POT}[2]{\BF{(\mbox{#1})^(\mbox{#2})}}
\newcommand{\CAP}{\BF{?+?}} 
\newcommand{\SQCAP}{\BF{?+?}} 
\newcommand{\SUBSET}{\BF{?+?}} 
\newcommand{\SUBSETEQ}{\BF{?+?}} 
%\newcommand{\SUBSETNEQ}{\BF{?+?}} 
\end{htmlonly}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% Documentation environment 
%%

%% \begin{lidia_man} ... \end{lidia_man}

\newenvironment{lidia_man}%
{\begin{description}}%
{\end{description}
\vfill
\hfill{\footnotesize Copyright \COPYRIGHT 1997 by the 
{\LiDIA}-Group, Universit\"at des Saarlandes, TH Darmstadt}}

%% The format of a manual page
%%
%% \NAME
%% \ABSTRACT
%% \DESCRIPTION
%% \SEEALSO
%% \NOTES
%% \WARNINGS
%% \BUGS
%% \EXAMPLES
%% \AUTHOR
%%

%\begin{latexonly}
\newcommand{\NAME}{\item \PS{man_name}\\}
\newcommand{\ABSTRACT}{\item \PS{man_abstract}\\}
\newcommand{\DESCRIPTION}{\item \PS{man_description}\\}
\newcommand{\SEEALSO}{\item \PS{man_seealso}\\}
\newcommand{\NOTES}{\item \PS{man_notes}\\}
\newcommand{\WARNINGS}{\item \PS{man_warnings}\\}
\newcommand{\BUGS}{\item \PS{man_bugs}\\}
\newcommand{\EXAMPLES}{\item \PS{man_examples}\\}
\newcommand{\AUTHOR}{\item \PS{man_author}\\}
%\end{latexonly}

\begin{htmlonly}
\newcommand{\NAME}{\item \mbox{\bf\sf NAME}\\ }
\newcommand{\ABSTRACT}{\item \mbox{\bf\sf ABSTRACT}\\ }
\newcommand{\DESCRIPTION}{\item \mbox{\bf\sf DESCRIPTION}\\ }
\newcommand{\SEEALSO}{\item \mbox{\bf\sf SEE ALSO}\\ }
\newcommand{\NOTES}{\item \mbox{\bf\sf NOTES}\\ }
\newcommand{\WARNINGS}{\item \mbox{\bf\sf WARNINGS}\\ }
\newcommand{\BUGS}{\item \mbox{\bf\sf BUGS}\\ }
\newcommand{\EXAMPLES}{\item \mbox{\bf\sf EXAMPLES}\\ }
\newcommand{\AUTHOR}{\item \mbox{\bf\sf AUTHOR}\\ }
\end{htmlonly}

%%
%% Kategories in DESCRIPTION
%% \CONS Constructors/Destructor
%% \ASGN Assignments
%% ... 
%% \IO Input/Output
%%

%\begin{latexonly}
%% for internal use
%%
\newcommand{\SUBK}[1]{\parindent=0pt\mbox{\underline{\sc #1}}\par}
\newcommand{\SUBSUBK}[1]{\parindent=0pt\mbox{\underline{\small\sc #1}}\par}

\newcommand{\CONS}{\SUBK{Constructors/Destructor}}
\newcommand{\INIT}{\SUBK{Initialization}}
\newcommand{\ACCS}{\SUBK{Access Functions}}
\newcommand{\ASGN}{\SUBK{Assignments}}
\newcommand{\TYPE}{\SUBK{Type Checking}}
\newcommand{\ARTH}{\SUBK{Arithmetical Operations}}
\newcommand{\SHFT}{\SUBK{Shift Operations}}
\newcommand{\BIT}{\SUBK{Bit Operations}}
\newcommand{\COMP}{\SUBK{Comparisons}}
\newcommand{\HIGH}{\SUBK{High-Level Functions}}
\newcommand{\BASIC}{\SUBK{Basic Functions}}
\newcommand{\IO}{\SUBK{Input/Output}}
%\end{latexonly}

\begin{htmlonly}
\newcommand{\CONS}{\mbox{\bf Constructors/Destructor}}
\newcommand{\INIT}{\mbox{\bf Initialization}}
\newcommand{\ACCS}{\mbox{\bf Access Functions}}
\newcommand{\ASGN}{\mbox{\bf Assignments}}
\newcommand{\TYPE}{\mbox{\bf Type Checking}}
\newcommand{\ARTH}{\mbox{\bf Arithmetical Operations}}
\newcommand{\SHFT}{\mbox{\bf Shift Operations}}
\newcommand{\BIT}{\mbox{\bf Bit Operations}}
\newcommand{\COMP}{\mbox{\bf Comparisons}}
\newcommand{\HIGH}{\mbox{\bf High-Level Functions}}
\newcommand{\BASIC}{\mbox{\bf Basic Functions}}
\newcommand{\IO}{\mbox{\bf Input/Output}}
\end{htmlonly}

%%
%% Subkategories in DESCRIPTION
%%

%\begin{latexonly}
\newcommand{\STITLE}[1]{\SUBK{#1}}
\newcommand{\SSTITLE}[1]{\SUBSUBK{#1}}
%\end{latexonly}

\begin{htmlonly}
\newcommand{\STITLE}[1]{\mbox{\bf #1}}
\newcommand{\SSTITLE}[1]{\mbox{\small\bf #1}}
\end{htmlonly}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% Letter environment 
%%

%% \C prints    |C
%% \R prints    |R
%% \Q prints    |Q
%% \Z prints    |Z
%% \N prints    |N

%\begin{latexonly}
\expandafter\ifx\csname mathrm\endcsname\relax
  \let\mathrm=\rm
  \let\normalshape=\rm
\fi

%\def\A{\roundletter{A}{0.68}{0.6}{0.01}{0.1}}
\def\B{\straightletter{B}}
\def\C{\roundletter{C}{0.63}{0.94}{-0.05}{0.07}}
\def\D{\straightletter{D}}
\def\E{\straightletter{E}}
\def\F{\straightletter{F}}
\def\G{\roundletter{G}{0.63}{0.96}{-0.04}{0.07}}
\def\H{\straightletter{H}}
%\def\I{{\mathord{\mathrm I\mkern-3.9mu\mathrm I}}}
%\def\J{\roundletter{J}{0.68}{0.95}{-0.01}{0.1}}
\def\K{\straightletter{K}}
\def\L{\straightletter{L}}
\def\M{\straightletter{M}}
\def\N{\straightletter{N}}
\def\O{\roundletter{O}{0.63}{0.97}{-0.03}{0.07}}
\def\P{\straightletter{P}}
\def\Q{\roundletter{Q}{0.65}{0.96}{-0.03}{0.07}}
\def\R{\straightletter{R}}
%\def\S ...
%\def\T{\roundletter{T}{0.71}{0.92}{-0.01}{0.1}}
%\def\U{\roundletter{U}{0.65}{0.87}{-0.01}{0.1}}
%\def\V{\roundletter{V}{0.68}{0.95}{-0.3}{0.1}}
%\def\W{\roundletter{W}{0.75}{0.92}{-0.3}{0.1}}
%\def\X ...
%\def\Y{\roundletter{Y}{0.65}{0.93}{-0.01}{0.1}}
\def\Z{{\mathord{\mathrm Z\mkern-6.1mu\mathrm Z}}}

\newcommand{\roundletter}[5]{{\mathord{\mathchoice%
  {\setbox255\hbox{$\displaystyle\mathrm #1$}\roundkern{#2}{#3}{#4}{#5}}%
  {\setbox255\hbox{$\textstyle\mathrm #1$}\roundkern{#2}{#3}{#4}{#5}}%
  {\setbox255\hbox{$\scriptstyle\mathrm #1$}\roundkern{#2}{#3}{#4}{#5}}%
  {\setbox255\hbox{$\scriptscriptstyle\mathrm #1$}\roundkern{#2}{#3}{#4}{#5}}}}}
\newcommand{\roundkern}[4]{\copy255 \kern-#1\wd255 \vrule width #4\wd255
  height #2\ht255 depth #3\ht255 \kern#1\wd255}
\newcommand{\straightletter}[1]{{\mathord{\mathrm I\mkern-3.6mu\mathrm #1}}}
%\end{latexonly}

\begin{htmlonly}
\newcommand{\C}{\BF{|C}}
\newcommand{\R}{\BF{|R}}
\newcommand{\Q}{\BF{|Q}}
\newcommand{\Z}{\BF{|Z}}
\newcommand{\N}{\BF{|N}}
\end{htmlonly}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% Environment for LiDIA code handling
%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% programmed by Christoph Thiel
%%

%\begin{latexonly}
%% Zum Bequemen TeXen von Funktionsbeschreibungen:
%% in der Parameterliste sind Parameter statt durch , durch \k zu
%% trennen!
%% 
%% F\"ur normale Funktionen:
%% ---------- \fcode --------
%%
%% Beispiel
%% \fcode{void add}{parameter & v1\k parameter & v2}{kommentar}
%% liefert in \tt
%%
%% void add (parameter & v1, parameter & v2)
%%      kommentar
%%
%% mit Zeilenumbruch nur hinter , und automatischem Einruecken
%%
%% F\"ur konstante Memberfunktionen: (d.h. const hintendran)
%% ---------- \cfcode --------
%% \bccode{void add}{ parameter & v1\k parameter & v2}{kommentar}
%% liefert in \tt
%%
%% void add (parameter & v1, parameter & v2) const
%%      kommentar
%%

%%
%% LaTeX2e
%%
\ifx\LATEXVERSION\LATEXV2e
	\renewcommand{\k}{, \penalty-1}
\else
	\newcommand{\k}{, \penalty-1}
\fi


%%
%% Automatischer Indexeintrag!
%%
\newlength{\fktwidth}     %aktuelle Laenge des Funktinstyps und -namens
\setlength{\fktwidth}{0ex}%dient der Berechnung der Breite der vbox fuer
                          %die Parameterliste
\newlength{\rest}         %rest wird spaeter die Laenge der Parliste
\setlength{\rest}{\textwidth} %sein

% Der automatische Index! classname ist der Name der aktuellen Klasse
% Gesetzt wird der Klassenname mit \setclass{bigint}
\newtoks\classname
\classname={\relax}
\newcommand{\setclass}[1]{\classname={#1}}

%% Verwaltung des Inhaltsverzeichnisses
\newcounter{classnum}
\setcounter{classnum}{1}
\newcommand{\addtoc}[1]{%
%\addcontentsline{toc}{section}{#1\dotfill}%
\addcontentsline{toc}{section}{#1}%
%\addtocontents{toc}{\hfill\protect\newline}%
%\addtocontents{toc}{\hfill\protect\newline}
}

\newcommand{\addnltoc}{%
\addtocontents{toc}{\hfill\protect\newline}%
}


\def\consume#1{}  %Funktion die ihr Argument ueberliest --> fktindex
\def\QWT{\consume} %dient der Fallunterscheidung in fktindex
                   %und konsumiert die naechste Eingabe


% Trickreich: fktindex macht automatischen Indexeintrag!
% #1 #2+ wird als regulaerer Ausdruck behandelt 
% das Ganze wird entweder mit sowas wie ``void add+ \QWD+''
% oder mit was wie ``add+ \QWD+'' aufgerufen
% Im ersten Fall ist #2=add sonst ist #1=add+ und #2=\QWD.
% 1.Fall: einfach nur noch index aufrufen. Da ausserdem das \QWD
%         noch nicht abgearbeitet ist, wird es als Kommando ausgefuehrt.
%         Das bewirkt dann, dass das naechste Zeichen, das + einfach
%         ueberlesen wird.
% 2.Fall: Man benutze den gleichen Mechanismus, indem man fktindex
%         mit ``void #1'', was zu ``void add+'' etwa expandiert
%         aufruft.
\def\fktindex #1 #2+{%
\ifx\QWT#2%         Test, ob der zweite Parameter das Kommando \QWT ist
\fktindex void #1 % 
\else%
\expandafter\index{\expandafter\the\classname!#2}% Verzoegerte Auswertung noetig!
\fi}


% fcode mit automatischem Indexeintrag!

\newcommand{\fcode}[3]{%
\expandafter\fktindex #1+ \QWT+% Indexeintrag
\vspace{0.3ex}%                  Platz am Anfang
\begingroup%                     Formatierungsanweisungen
\settowidth{\fktwidth}{#1\hspace{0.1ex}(}%
%                                fktwidth gibt Laenge des Fktheaders an
\parindent=0ex%                  kein Einruecken am Paragraphanfang
\parskip=0.5ex%                  kleiner Abstand zwischen Codebeschr.
%                                und Kommentar
\baselineskip=0.5ex%             ditto
\lineskip=0.5ex%                 ditto
\vbox{%                          die Codebeschr. ist eine vbox
\begingroup%
\tt%                             Codebeschr. in tt
\setlength{\rest}{\textwidth}%   Berechnung der Parameterlisten-Breite
\addtolength{\rest}{-\fktwidth}%
\addtolength{\rest}{-\leftmargin}%
\addtolength{\rest}{-10ex}%
\hspace*{\leftmargin}\hbox{#1\hspace{0.1ex}(}%
%                                Einruecken gemaess itemize-Umgebung 
\vtop{\parindent=0pt\hsize=\rest\strut% Einruecken in Par.listenbox
\raggedright\ignorespaces#2\ignorespaces)\hfill% die Parameterliste
\strut}%
\endgroup%tt                     Ende tt
\expandafter\if#3\relax%         Falls es keinen Komentar gibt: nix
\relax%
\else \\%                        sonst neuer Paragraph usw.
\nopagebreak%                    kein Seitenumbruch vor Kommentar
\begingroup%
\setlength{\rest}{\textwidth}%   Einruecktiefe fuer Kommentar
\addtolength{\rest}{-5ex}%
\addtolength{\rest}{-\leftmargin}%
\hbox{%
\hspace*{\leftmargin}\hspace*{5ex}% analog oben
\vtop{\parindent=0pt\hsize=\rest\strut%
\ignorespaces#3\hfill%           Kommentar
\strut}%vtop
}%
\endgroup%
\fi%
}\vspace{1ex}%                    Platz am Ende
\endgroup%
%par
}


% cfcode mit automatischem Indexeintrag!

\newcommand{\cfcode}[3]{%
\expandafter\fktindex #1+ \QWT+% Indexeintrag
\vspace{0.3ex}                 % Platz am Anfang
\begingroup%                     Formatierungsanweisungen
\settowidth{\fktwidth}{#1\hspace{0.1ex}(}%      fktwidth gibt Laenge des Fktheaders an
\parindent=0ex%                  kein Einruecken am Paragraphanfang
\parskip=0.5ex%                  kleiner Abstand zwischen Codebeschr.
%                                und Kommentar
\baselineskip=0.5ex%             ditto
\lineskip=0.5ex%                 ditto
\vbox{%                          die Codebeschr. ist eine vbox
\begingroup%
\tt%                             Codebeschr. in tt
\setlength{\rest}{\textwidth}%   Berechnung der Parameterlisten-Breite
\addtolength{\rest}{-\fktwidth}%
\addtolength{\rest}{-\leftmargin}%
\addtolength{\rest}{-10ex}%
\hspace*{\leftmargin}\hbox{#1\hspace{0.1ex}(}%
%                                Einruecken gemaess itemize-Umgebung 
\vtop{\parindent=0pt\hsize=\rest\strut% Einruecken in Par.listenbox
\raggedright\ignorespaces#2\ignorespaces) \penalty-1const\hfill% 
%                                Parameterliste mit const Anhaengsel
\strut}%
\endgroup%tt                     Ende tt
\expandafter\if#3\relax%         Falls es keinen Kommentar gibt: nix 
\relax%
\else \\%                        sonst neuer Paragraph usw.
\nopagebreak%                    kein Seitenumbruch vor Kommentar
\begingroup%
\setlength{\rest}{\textwidth}%   Einruecktiefe fuer Kommentar
\addtolength{\rest}{-5ex}%
\addtolength{\rest}{-\leftmargin}%
\hbox{%
\hspace*{\leftmargin}\hspace*{5ex}%analog oben
\vtop{\parindent=0pt\hsize=\rest\strut%
\ignorespaces#3\hfill%             Kommentar
\strut}%vtop
}%
\endgroup%
\fi%
}\vspace{1ex}%                     Platz danach
\endgroup%
%\par
}
%\end{latexonly}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% programmed by TP & Andreas Monstadt
%%

\begin{htmlonly}
\newcommand{\k}{, }

\newcommand{\fcode}[4]{{\tt\fussy #1 #2(\begin{minipage}[t]
{0.75\textwidth}{#3})\end{minipage}}
\item \mbox{#4}\newline}

\newcommand{\cfcode}[4]{{\tt\fussy #1 #2(\begin{minipage}[t]
{0.75\textwidth}{#3}) const\end{minipage}}
\item \mbox{#4}\newline}
\end{htmlonly}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
\begin{htmlonly}
\renewcommand{\fussy}{\vspace{0.001cm}}
\end{htmlonly}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%          Further helpful Stuff
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newcommand{\RULE}[1]{\rule{\textwidth}{#1}}
\newcommand{\CPP}{\mbox{C$++$}}

\newcommand{\postscript}[2]{
   \mbox{\psfig{file=#1.ps}}}

\newcommand{\ATTENTION}[1]{\vspace{1ex}
                           \mbox{\PS{attention}}
                           \vspace{1ex}}

\begin{htmlonly}
\newcommand{\ATTENTION}{\BF{!!}}
\end{htmlonly}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%                        END
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% Environment for LiDIA code handling (temporary)
%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% programmed by Christoph Thiel
%%

%\begin{latexonly}
%% Zum Bequemen TeXen von Funktionsbeschreibungen:
%% in der Parameterliste sind Parameter statt durch , durch \k zu
%% trennen!
%% 
%% F\"ur normale Funktionen:
%% ---------- \fcode --------
%%
%% Beispiel
%% \fcode{void add}{parameter & v1\k parameter & v2}{kommentar}
%% liefert in \tt
%%
%% void add (parameter & v1, parameter & v2)
%%      kommentar
%%
%% mit Zeilenumbruch nur hinter , und automatischem Einruecken
%%
%% F\"ur konstante Memberfunktionen: (d.h. const hintendran)
%% ---------- \cfcode --------
%% \bccode{void add}{ parameter & v1\k parameter & v2}{kommentar}
%% liefert in \tt
%%
%% void add (parameter & v1, parameter & v2) const
%%      kommentar
%%

% fcode mit automatischem Indexeintrag!

\renewcommand{\fcode}[4]{%
\vspace{0.3ex}%                  Platz am Anfang
\begingroup%                     Formatierungsanweisungen
\expandafter\if#1\relax
\settowidth{\fktwidth}{\hspace{0.1ex}#2(}%
\else%
\settowidth{\fktwidth}{#1 \hspace{0.1ex}#2(}%
\fi%
\expandafter\index{\expandafter\the\classname!#2}%
%                                fktwidth gibt Laenge des Fktheaders an
\parindent=0ex%                  kein Einruecken am Paragraphanfang
\parskip=0.5ex%                  kleiner Abstand zwischen Codebeschr.
%                                und Kommentar
\baselineskip=0.5ex%             ditto
\lineskip=0.5ex%                 ditto
\vbox{%                          die Codebeschr. ist eine vbox
\begingroup%
\tt%                             Codebeschr. in tt
\setlength{\rest}{\textwidth}%   Berechnung der Parameterlisten-Breite
\addtolength{\rest}{-\fktwidth}%
\addtolength{\rest}{-\leftmargin}%
\addtolength{\rest}{-10ex}%
\expandafter\if#1\relax
\hspace*{\leftmargin}\hbox{#2(}%
\else%
\hspace*{\leftmargin}\hbox{#1 \hspace{0.1ex}#2(}%
\fi%
%                                Einruecken gemaess itemize-Umgebung 
\vtop{\parindent=0pt\hsize=\rest\strut% Einruecken in Par.listenbox
\raggedright\ignorespaces#3\ignorespaces) \hfill% die Parameterliste
\strut}%
\endgroup%tt                     Ende tt
\expandafter\if#4\relax%         Falls es keinen Komentar gibt: nix
\relax%
\else \\%                        sonst neuer Paragraph usw.
\nopagebreak%                    kein Seitenumbruch vor Kommentar
\begingroup%
\setlength{\rest}{\textwidth}%   Einruecktiefe fuer Kommentar
\addtolength{\rest}{-5ex}%
\addtolength{\rest}{-\leftmargin}%
\hbox{%
\hspace*{\leftmargin}\hspace*{5ex}% analog oben
\vtop{\parindent=0pt\hsize=\rest\strut%
\ignorespaces#4\hfill%           Kommentar
\strut}%vtop
}%
\endgroup%
\fi%
}\vspace{1ex}%                    Platz am Ende
\endgroup%
%par
}

\renewcommand{\cfcode}[4]{%
\vspace{0.3ex}%                  Platz am Anfang
\begingroup%                     Formatierungsanweisungen
\expandafter\if#1\relax
\settowidth{\fktwidth}{\hspace{0.1ex}#2(}%
\else%
\settowidth{\fktwidth}{#1 \hspace{0.1ex}#2(}%
\fi%
\expandafter\index{\expandafter\the\classname!#2}%
%                                fktwidth gibt Laenge des Fktheaders an
\parindent=0ex%                  kein Einruecken am Paragraphanfang
\parskip=0.5ex%                  kleiner Abstand zwischen Codebeschr.
%                                und Kommentar
\baselineskip=0.5ex%             ditto
\lineskip=0.5ex%                 ditto
\vbox{%                          die Codebeschr. ist eine vbox
\begingroup%
\tt%                             Codebeschr. in tt
\setlength{\rest}{\textwidth}%   Berechnung der Parameterlisten-Breite
\addtolength{\rest}{-\fktwidth}%
\addtolength{\rest}{-\leftmargin}%
\addtolength{\rest}{-10ex}%
\expandafter\if#1\relax
\hspace*{\leftmargin}\hbox{#2(}%
\else%
\hspace*{\leftmargin}\hbox{#1 \hspace{0.1ex}#2(}%
\fi%
%                                Einruecken gemaess itemize-Umgebung 
\vtop{\parindent=0pt\hsize=\rest\strut% Einruecken in Par.listenbox
\raggedright\ignorespaces#3\ignorespaces) \penalty-1const\hfill% die Parameterliste
\strut}%
\endgroup%tt                     Ende tt
\expandafter\if#4\relax%         Falls es keinen Komentar gibt: nix
\relax%
\else \\%                        sonst neuer Paragraph usw.
\nopagebreak%                    kein Seitenumbruch vor Kommentar
\begingroup%
\setlength{\rest}{\textwidth}%   Einruecktiefe fuer Kommentar
\addtolength{\rest}{-5ex}%
\addtolength{\rest}{-\leftmargin}%
\hbox{%
\hspace*{\leftmargin}\hspace*{5ex}% analog oben
\vtop{\parindent=0pt\hsize=\rest\strut%
\ignorespaces#4\hfill%           Kommentar
\strut}%vtop
}%
\endgroup%
\fi%
}\vspace{1ex}%                    Platz am Ende
\endgroup%
%par
}

