%% %% This is file `lgrind.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% lgrind.dtx (with options: `package') %% %% LGrind is used to format source code of different programming %% languages for LaTeX. %% %% LGrind is a minor adaptation of Jerry Leichter's tgrind for LaTeX, %% which was a notable improvement upon Van Jacobsen's tgrind for %% plain TeX, which was adapted from vgrind, a troff prettyprinter. %% %% Based on Van Jacobson's ``tgrindmac'', a macro package for TeX. %% Modified, 1987 by Jerry Leichter. Put '@' in all internal names. %% Modified, 1991 by George Reilly. Changed name from tgrind to lgrind. %% Modified, 1995 by Michael Piefel. Made it work with \LaTeXe. \NeedsTeXFormat{LaTeX2e}[1995/06/01] \ProvidesPackage{lgrind} [1997/01/30 v3.4 LGrind environment and supporting stuff] \newcount\lc@unt \newcount\ln@xt \newcount\LGnuminterval \LGnuminterval=10 \DeclareOption{nolineno}{\LGnuminterval=50000} \DeclareOption{lineno5}{\LGnuminterval=5} \newif\ifLGleftnum \DeclareOption{leftnum}{\LGleftnumtrue} \newskip\LGindent \LGindent=1.6667\parindent \DeclareOption{noindent}{\LGindent=0pt} \newif\ifLGnorules \DeclareOption{norules}{\LGnorulestrue} \newlength{\LGsloppy} \setlength{\LGsloppy}{7.2pt} \DeclareOption{fussy}{\LGsloppy=0pt} \newcommand{\DefaultProc}{\@gobble} \newcommand{\DefaultProcCont}{\@gobble} \DeclareOption{procnames}{ \renewcommand{\DefaultProc}[1]{\renewcommand{\Procname}{#1}% \global\setbox\procbox=\hbox{\PNsize #1}} \renewcommand{\DefaultProcCont}[1]{\renewcommand\Procname{#1} \global\setbox\procbox=\hbox{\PNsize\dots #1}}} \newbox\procbox \newcommand{\Procname}{} \ProcessOptions \def\BGfont{\sffamily} \def\CMfont{\rmfamily\itshape} \def\NOfont{\sffamily} \def\KWfont{\rmfamily\bfseries} \def\STfont{\ttfamily} \def\VRfont{\rmfamily} \def\PNsize{\BGfont\small} \def\LGsize{\small} \def\LGfsize{\footnotesize} \newif\ifLGinline \newif\ifLGd@fault \def\LGbegin{\ifLGinline$\hbox\else$$\vbox\fi\bgroup\LGd@faulttrue} \def\LGend{\ifLGd@fault\egroup\ifLGinline$\else$$\fi\LGd@faultfalse\fi} \newif\ifc@mment \newif\ifstr@ng \newif\ifright@ \newbox\ls@far \newbox\tb@x \newdimen\TBw@d \newdimen\@ts {\catcode`\_=\active \gdef\@setunder{\let_=\sp@ce}} \newcommand{\lgrindheader}{} \newcommand{\lgrindfilename}{}\newcommand{\lgrindfilesize}{} \newcommand{\lgrindmodyear}{}\newcommand{\lgrindmodmonth}{} \newcommand{\lgrindmodday}{}\newcommand{\lgrindmodtime}{} \newenvironment{lgrind}[1][1]{% \def\Line##1{\L{\LB{##1}}}% \newcommand{\Head}[1]{\gdef\lgrindhead{##1}}% \newcommand{\File}[6]{\gdef\lgrindfilename{##1}\message{(LGround: ##1)}% \gdef\lgrindmodyear{##2}\gdef\lgrindmodmonth{##3}% \gdef\lgrindmodday{##4}\gdef\lgrindmodtime{##5}% \gdef\lgrindfilesize{##6}}% \let\Proc=\DefaultProc% \let\ProcCont=\DefaultProcCont% \hfuzz=\LGsloppy \def\NewPage{\filbreak\bigskip}% \ifLGinline \def\L##1{\setbox\ls@far\null{\CF\strut##1}\ignorespaces}% \else \let\r@ghtlno\relax\let\l@ftlno\relax \ifnum\LGnuminterval>\z@ \ifLGleftnum \def\l@ftlno{\ifvoid\procbox\ifnum\lc@unt>\ln@xt \global\advance\ln@xt by\LGnuminterval \llap{{\normalfont\scriptsize\the\lc@unt\quad}}\fi \else\llap{\box\procbox\quad}\fi}% \else \def\r@ghtlno{\ifvoid\procbox\ifnum\lc@unt>\ln@xt \global\advance\ln@xt by\LGnuminterval \rlap{{\normalfont\scriptsize\enspace\the\lc@unt}}\fi \else\rlap{\enspace\box\procbox}\fi}% \fi \fi \def\L##1{\@@par\setbox\ls@far=\null\strut \global\advance\lc@unt by1% \hbox to \hsize{\hskip\LGindent\l@ftlno ##1\egroup% \hfil\r@ghtlno}% \ignorespaces}% \fi \lc@unt=#1\advance\lc@unt by-1% \ln@xt=\LGnuminterval\advance\ln@xt by-1% \loop\ifnum\lc@unt>\ln@xt\advance\ln@xt by\LGnuminterval\repeat% \def\LB{\hbox\bgroup\bgroup\box\ls@far\CF\let\next=}% \def\Tab##1{\egroup\setbox\tb@x=\lastbox\TBw@d=\wd\tb@x% \advance\TBw@d by 1\@ts\ifdim\TBw@d>##1\@ts \setbox\ls@far=\hbox{\box\ls@far \box\tb@x \sp@ce}\else \setbox\ls@far=\hbox to ##1\@ts{\box\ls@far \box\tb@x \hfil}\fi\LB}% \ifLGinline\def\sp@ce{\hskip .3333em}% \else \setbox\tb@x=\hbox{\texttt{0}}% \@ts=0.8\wd\tb@x \def\sp@ce{\hskip 1\@ts}\fi \catcode`\_=\active \@setunder \def\CF{\ifc@mment\CMfont\else\ifstr@ng\STfont\fi\fi} \def\N##1{{\NOfont ##1}\global\futurelet\next\ic@r}% \def\K##1{{\KWfont ##1}\global\futurelet\next\ic@r}% \def\V##1{{\VRfont ##1}\global\futurelet\next\ic@r}% \def\ic@r{\let\@tempa\/\ifx.\next\let\@tempa\relax% \else\ifx,\next\let\@tempa\relax\fi\fi\@tempa}% \def\C{\egroup\bgroup\CMfont \global\c@mmenttrue \global\right@false}% \def\CE{\egroup\bgroup \global\c@mmentfalse}% \def\S{\egroup\bgroup\STfont \global\str@ngtrue}% \def\SE{\egroup\bgroup \global\str@ngfalse}% \def\,{\relax \ifmmode\mskip\thinmuskip \else\thinspace \fi}% \def\!{\relax \ifmmode\mskip-\thinmuskip \else\negthinspace \fi}% \def\CH##1##2##3{\relax\ifmmode ##1\relax \else\ifstr@ng ##2\relax\else$##3$\fi\fi }% \def\{{\CH\lbrace {\char'173}\lbrace }% \def\}{\CH\rbrace {\char'175}\rbrace }% \def\1{\CH///}% % / \def\2{\CH\backslash {\char'134}\backslash }% % \ \def\|{\CH|{\char'174}|}% \def\<{\CH<<<}% \def\>{\CH>>>}% \def\*{\CH***}\relax %\relax for DOCSTY \def\-{\CH---}% \def\_{\ifstr@ng {\char'137}\else \leavevmode \kern.06em \vbox{\hrule width.35em}% \ifdim\fontdimen\@ne\font=\z@ \kern.06em \fi\fi }% \def\&{\textsf{\char'046}}% \def\#{{\STfont\char'043}}% \def\%{{\char'045}}% \def\~{{\char'176}}% \def\3{\ifc@mment\ifright@ ''\global\right@false% \else``\global\right@true \fi \else{\texttt{\char'042}}\fi}% \def\4{\ifc@mment'\else {\texttt{\char'015}}\fi}% \def\5{{\texttt{\char'136}}}% \def\${{\ifmmode\slshape\else\ifdim\fontdimen\@ne\font>\z@\slshape\fi\fi \char'044}}% %No $ in \it, use \sl \parindent\z@\parskip\z@ plus 1pt\hsize\linewidth% \bgroup\BGfont } {\egroup\@@par} % end of environment lgrind \def\lgrinde{\ifLGinline\else\LGsize\fi\begin{lgrind}} \def\endlgrinde{\end{lgrind}} \def\lagrind{\@ifstar{\@slagrind}{\@lagrind}} \def\@lagrind{\@ifnextchar[{\@@lagrind}{\@@lagrind[t]}} \def\@slagrind{\@ifnextchar[{\@@slagrind}{\@@slagrind[t]}} \def\@@lagrind[#1]#2#3#4{% \begin{figure}[#1] \ifLGnorules\else\hrule\fi \vskip .5\baselineskip \begin{minipage}\columnwidth\LGsize\LGindent\z@ \begin{lgrind} \input #2\relax \end{lgrind} \end{minipage} \vskip .5\baselineskip plus .5\baselineskip \ifLGnorules\else\hrule\fi\vskip .5\baselineskip \begingroup \setbox\z@=\hbox{#4}% \ifdim\wd\z@>\z@ \caption{#3}% \label{#4}% \else \captcont{#3}% \fi \endgroup \vskip 2pt \end{figure} } \def\@@slagrind[#1]#2#3#4{% \begin{figure*}[#1] \ifLGnorules\else\hrule\fi \vskip .5\baselineskip \begin{minipage}\linewidth\LGsize\LGindent\z@ \begin{lgrind} \input #2\relax \end{lgrind} \end{minipage} \vskip .5\baselineskip plus .5\baselineskip \ifLGnorules\else\hrule\fi\vskip .5\baselineskip \begingroup \setbox\z@=\hbox{#4}% \ifdim\wd\z@>\z@ \caption{#3}% \label{#4}% \else \captcont{#3}% \fi \endgroup \vskip 2pt \end{figure*} } \def\lgrindfile#1{% \par\addvspace{0.1in} \ifLGnorules\else\hrule\fi \vskip .5\baselineskip \begingroup\LGfsize\LGindent\z@ \begin{lgrind} \input #1\relax \end{lgrind} \endgroup \vskip .5\baselineskip \ifLGnorules\else\hrule\fi \addvspace{0.1in} } \endinput %% %% End of file `lgrind.sty'.