%% %% This is file `sverb.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% sverb.dtx (with options: `package') %% %% IMPORTANT NOTICE %% %% sverb package -- handling of verbatim text %% Copyright (c) 1996 Mark Wooding %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 2 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; if not, write to the Free Software %% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{sverb} [1996/05/08 1.3 Verbatim typesetting] %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z %% Digits \0\1\2\3\4\5\6\7\8\9 %% Exclamation \! Double quote \" Hash (number) \# %% Dollar \$ Percent \% Ampersand \& %% Acute accent \' Left paren \( Right paren \) %% Asterisk \* Plus \+ Comma \, %% Minus \- Point \. Solidus \/ %% Colon \: Semicolon \; Less than \< %% Equals \= Greater than \> Question mark \? %% Commercial at \@ Left bracket \[ Backslash \\ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% \def\@cspecials{% \begingroup% \catcode`|0% \catcode`<1% \catcode`>2% \catcode`\{12% \catcode`\}12% \catcode`\\12% } \def\sv@startlisting{% \def\par{\@@par\penalty\interlinepenalty}% \@@par% \leftskip\@totalleftmargin% \obeylines% \@noligs% \let\do\@makeother\dospecials% \verbatim@font% \frenchspacing% \@vobeyspaces% \settabwidth% \catcode9\active% \lccode`\~9\lowercase{\let~\sv@vtab}% \lccode`\~13\lowercase{\let~\vinput@cr}% \interlinepenalty500% } \newdimen\svtab \def\settabwidth{\setbox\z@\hbox{\texttt{\space}}\svtab8\wd\z@} \def\sv@vtab{% \hfill\egroup% \@tempdima\wd\z@% \divide\@tempdima\svtab% \multiply\@tempdima\svtab% \advance\@tempdima\svtab% \wd\z@\@tempdima% \leavevmode\box\z@% \setbox\z@\hbox\bgroup% } \def\verbinput#1{% \begin{listinglist}% \listingsize% \sv@startlisting% \setbox\z@\hbox\bgroup% \input{#1}% \sv@stripspc% \egroup% \ifdim\wd\z@=\z@% \ifhmode\par\fi% \else% \leavevmode\box\z@\par% \fi% \end{listinglist}% } \def\vinput@cr{% \egroup% \leavevmode\box\z@% \par% \setbox\z@\hbox\bgroup% } \newif\if@matched \def\matcher#1#2#3{% \expandafter\def\csname\string#1$match\endcsname##1#2##2##3\end{% \ifx##2\relax% \@matchedfalse% \else% \@matchedtrue% \fi% #3{##1}% }% \expandafter\def\expandafter#1\expandafter##\expandafter1\expandafter{% \csname\string#1$match\endcsname##1#2\relax\end% }% } \def\sv@stripspc{% \unpenalty% \ifdim\lastskip=\z@\else% \unskip\expandafter\sv@stripspc% \fi% } \begingroup \catcode`\%=12 \gdef\sv@percent#1#2\relax {\ifx\check@percent\@@undefined \ifx#1\relax\def\@tempa{}\else \def\@tempa{#1#2}\fi\else \ifx#1\relax\def\@tempa{}\else \ifx#1%\def\@tempa{#2}\else \def\@tempa{#1#2}\fi\fi\fi} \endgroup \lccode`\~32 \lccode`\!32 \lowercase{% \def\@isspaces#1{% \ifx#1\relax% \def\@tempb{\@tempswafalse}% \else\ifx#1~% \let\@tempb\@isspaces% \else% \def\@tempb##1\relax{}% \fi\fi% \@tempb% } \def\sv@safespc{% \catcode32\active% \def~{ }% } } \def\sv@read#1#2#3{% \begingroup% \matcher\@match{#1}\sv@read@ii% \catcode13\active% \catcode32\active% \@tempswafalse% \lccode`\~13\lowercase{% \def\sv@read@i##1~{\@match{##1}}% }% \def\sv@read@ii##1{% \sv@percent##1\relax\relax% \if@matched\@tempswafalse\fi% \if@tempswa\else\@tempswatrue\expandafter\@isspaces\@tempa\relax\fi% \if@tempswa% \begingroup% \expandafter#2\expandafter{\@tempa}% \endgroup% \fi% \@tempswatrue% \if@matched\def\@tempa{\endgroup#3}\else\let\@tempa\sv@read@i\fi% \@tempa% }% \sv@read@i% } \begingroup \lccode`\<=`\{ \lccode`\>=`\} \lccode`\|=`\\ \lowercase{\endgroup \def\sv@readenv#1{% \expandafter\expandafter\expandafter% #1\expandafter\sv@readenv@i\@currenvir\@@% } \def\sv@readenv@i#1\@@{{|end<#1>}{\end{#1}}} } \def\sv@verbline#1{% \setbox\z@\hbox{#1\sv@stripspc}% \ifdim\wd\z@=\z@% \if@matched\ifhmode\par\relax\fi\else\leavevmode\par\relax\fi% \else% \leavevmode\box\z@\par\relax% \fi% } \newdimen\listingindent \AtBeginDocument{% \ifdim\parindent=\z@\listingindent1em\else\listingindent\parindent\fi% } \ifx\listingsize\@@undefined \let\listingsize\small \fi \def\listinglist{% \list{}{% \if@inlabel% \leftmargin\z@% \else% \leftmargin\listingindent% \fi% \rightmargin\z@% \labelwidth\z@% \labelsep\z@% \itemindent\z@% \listparindent\z@% \let\makelabel\relax% \parsep\z@skip% }% \parfillskip\@flushglue% \item\relax% } \let\endlistinglist\endlist \def\listing{% \listinglist% \listingsize% \sv@readenv\sv@listing% } \def\sv@listing#1#2{% \sv@startlisting% \sv@read{#1}\sv@verbline{\endlistinglist#2}% } \expandafter\def\csname listing*\endcsname{% \listinglist% \listingsize% \begingroup% \@noligs% \def\@tempa##1{\endgroup\sv@listing{##1}{\end{listing*}}}% \@tempa% } \def\sv@ignore#1#2{% \@bsphack% \let\do\@makeother\dospecials% \sv@read{#1}\@gobble{\@esphack#2}% } \def\ignore{\sv@readenv\sv@ignore} \def\ignoreenv#1{% \expandafter\let\csname #1\endcsname\ignore% } \def\unignoreenv#1{% \expandafter\def\csname #1\endcsname{\endgroup}% \expandafter\def\csname end#1\endcsname% {\begingroup\def\@currenvir{#1}}% } \newwrite\sv@writefile \def\sv@write#1#2{% \begingroup% \@bsphack% \let\do\@makeother\dospecials% \sv@safespc% \sv@read{#1}\sv@writeline{\sv@endwrite#2}% } \def\sv@writeline#1{% \immediate\write\sv@writefile{#1}% } \def\sv@endwrite{% \@esphack% \endgroup% } \def\verbwrite#1{% \immediate\openout\sv@writefile#1\relax% \sv@readenv\sv@write% } \def\endverbwrite{\immediate\closeout\sv@writefile} \expandafter\def\csname verbwrite*\endcsname#1#2{% \immediate\openout\sv@writefile#2\relax% \sv@write{#1}{\immediate\closeout\sv@writefile\end{verbwrite*}}% } \newcount\sv@nestcount \def\sv@demoname{demo\number\sv@nestcount.tmp} \def\sv@demo#1#2{% \@ifnextchar[{\sv@demo@i{#1}{#2}}{\sv@demo@i{#1}{#2}[n]}% } \def\sv@demo@i#1#2[#3]#4{% \advance\sv@nestcount by\@ne% \immediate\openout\sv@writefile\sv@demoname\relax% \sv@write{#1}{% \immediate\closeout\sv@writefile% \sv@dodemo{#2}{#3}{#4}% }% } \def\demo{\sv@readenv\sv@demo} \expandafter\def\csname demo*\endcsname#1{\sv@demo{#1}{\end{demo*}}} \def\sv@demosmp{% \begin{minipage}[t]{\@tempdima}% \vskip8\p@% \hrule\@height\z@% \raggedright% \vbox\bgroup% } \def\sv@demoemp{% \par\unpenalty\unskip% \egroup% \vskip8\p@% \hrule\@height\z@% \end{minipage}% } \def\sv@dodemo#1#2#3{% \begingroup% \@tempdima\linewidth% \advance\@tempdima-2em% \hsize\@tempdima% \if#2w% \advance\@tempdima-2em% \else% \advance\@tempdima-3em% \divide\@tempdima2% \fi% \par% \setbox\z@\hbox{\strut\enspace#3\enspace\strut}% \@tempdimb.5\dp\z@% \advance\@tempdimb-.5\ht\z@% \ht\z@\@tempdimb\dp\z@\@tempdimb% \noindent\hskip1em\vtop{% \hb@xt@\hsize{% \hrulefill% \raise\@tempdimb\box\z@% \hrulefill% }% \nointerlineskip% \hb@xt@\hsize{\vrule\@height5\p@\hfil\vrule\@height5\p@}% \nointerlineskip% \vskip-\parskip% \noindent\hbox{}\hskip1em% \sv@demosmp% \catcode`\%14\relax% \input{\sv@demoname}% \sv@demoemp% \if#2w% \vskip8\p@\hrule\vskip8\p@% \noindent\hbox{}% \fi% \hskip1em% \sv@demosmp% \listingindent\z@% \verbinput\sv@demoname% \sv@demoemp% \par% \nointerlineskip% \hb@xt@\hsize{\vrule\@height5\p@\hfil\vrule\@height5\p@}% \hrule% }% \endgroup% \par% \vskip\baselineskip% #1% } \endinput %% %% End of file `sverb.sty'.