You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
358 lines
8.6 KiB
358 lines
8.6 KiB
%%
|
|
%% 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'.
|
|
|