\usepackage{listings}
\usepackage{color}
\definecolor{hellgelb}{rgb}{1,1,0.9}
\definecolor{colKeys}{rgb}{0,0,1}
\definecolor{colIdentifier}{rgb}{0,0,0}
\definecolor{colComments}{rgb}{1,0,0}
\definecolor{colString}{rgb}{0,0.5,0}
% Symbol to put when line wraps
\newcommand{\wrapsign}{\hbox{\rm\ensuremath\hookleftarrow}}
%
% Default verbatim layout used if \lstparamset not defined
%
\@ifundefined{lstparamset}{
\lstset{%
basicstyle=\ttfamily\small, %
identifierstyle=\color{colIdentifier}, %
keywordstyle=\color{colKeys}, %
stringstyle=\color{colString}, %
commentstyle=\color{colComments}, %
tabsize=2, %
frame=single, %
framerule=0pt, %
extendedchars=true, %
showspaces=false, %
showlines=true, %
showstringspaces=false, %
numberstyle=\tiny, %
breaklines=true, %
prebreak={\space\wrapsign}, %
backgroundcolor=\color[gray]{0.95}, %
breakautoindent=true, %
captionpos=b%
}
}{
% Call the user macro that defines the layout
\lstparamset
}
%
% GAP language, derivated from Pascal, has more keywords to highlight
%
\lstdefinelanguage[]{GAP}[]{Pascal}{%
morekeywords={od,fi,alias}%
}
% Lengths to compute the listing width from the number of characters
\newlength{\lstcharwidth}
\newlength{\lstcharwidthb}
\newlength{\lstframesep}
\newlength{\lstwidth}
\setlength{\lstcharwidth}{\lst@width}
%\let\lstcharwidth\lst@width
\setlength{\lstframesep}{\lst@frametextsep}
% Setup to compute a char width
\def\lstsetup{\sbox{\z@}{\lstinline!x!}%
\settowidth{\lstcharwidth}{\usebox{\z@}}%
\sbox{\z@}{\lstinline[basicstyle=\ttfamily]!x!}
\settowidth{\lstcharwidthb}{\usebox{\z@}}}
% Environment to render fancyvrb like listings does
\newenvironment{fvlisting}[1][]
{\lstset{fancyvrb,#1}}
{\lstset{fancyvrb=false}}