\message{slverbatim,}
%       ****************************************
%       *              slverbATIM                *
%       ****************************************
%
%  The slverbatim environment uses the fixed-width \sltt font, turns blanks into
%  spaces, starts a new line for each carrige return (or sequence of
%  consecutive carriage returns), and interprets EVERY character literally.
%  I.e., all special characters \, {, $, etc. are \catcode'd to 'other'.
%
%  The command \slverb produces in-line slverbatim text, where the argument
%  is delimited by any pair of characters.  E.g., \slverb #...# takes
%  '...' as its argument, and sets it slverbatim in \sltt font.
%
%  The *-variants of these commands is the same, except that spaces
%  print as the TeXbook's space character instead of as blank spaces.

{\catcode`\^^M=13 \gdef\@gobblecr{\@ifnextchar
{\@gobble}{\ignorespaces}}}

{\catcode`\ =\active\gdef\@vobeyspaces{\catcode`\ \active \let \@xobeysp}}

% Definition of \@xobeysp chaned on 19 Nov 86 from
% \def\@xobeysp{\leavevmode{} }
% to prevent line breaks at spaces.  Change suggested by
% Nelson Beebe
%
\def\@xobeysp{\leavevmode\penalty10000\ }



\begingroup \catcode `|=0 \catcode `[= 1
\catcode`]=2 \catcode `\{=12 \catcode `\}=12
\catcode`\\=12 |gdef|@xslverbatim#1\end{slverbatim}[#1|end[slverbatim]]
|gdef|@sxslverbatim#1\end{slverbatim*}[#1|end[slverbatim*]]
|endgroup

\def\@sslverbatim{\obeyspaces\@slverbatim}

\def\@gobble#1{}

\def\@slverbatim{\trivlist \item[]\if@minipage\else\vskip\parskip\fi
\leftskip\@totalleftmargin\rightskip\z@
\parindent\z@\parfillskip\@flushglue\parskip\z@
\@tempswafalse \def\par{\if@tempswa\hbox{}\fi\@tempswatrue\@@par}
\obeylines \sltt \catcode``=13 \@noligs \let\do\@makeother \dospecials}

\def\slverbatim{\@slverbatim \frenchspacing\@vobeyspaces \@xslverbatim}
\let\endslverbatim=\endtrivlist

\@namedef{slverbatim*}{\@slverbatim\@sxslverbatim}
\expandafter\let\csname endslverbatim*\endcsname =\endtrivlist


\def\@makeother#1{\catcode`#112\relax}

\def\slverb{\begingroup \catcode``=13 \@noligs
\sltt \let\do\@makeother \dospecials
\@ifstar{\@sslverb}{\@slverb}}

\def\@sslverb#1{\def\@tempa ##1#1{##1\endgroup}\@tempa}

\def\@slverb{\obeyspaces \frenchspacing \@sslverb}


%% \@noligs prevents ?` and !` from being treated as ligatures
%% added 19 April 86


\begingroup
\catcode``=13
\gdef\@noligs{\let`=\@lquote}
\endgroup

\def\@lquote{{\kern\z@}`}


