"Fossies" - the Fresh Open Source Software Archive

Member "libsafe-2.0-16/doc/whitepaper-1.3/lgrind.sty" (1 Feb 2001, 7661 Bytes) of package /linux/misc/old/libsafe-2.0-16.tgz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) TeX and LaTeX source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 %% 
    2 %% This is file `lgrind.sty',
    3 %% generated with the docstrip utility.
    4 %% 
    5 %% The original source files were:
    6 %% 
    7 %% lgrind.dtx  (with options: `package')
    8 %% 
    9 %% LGrind is used to format source code of different programming 
   10 %% languages for LaTeX. 
   11 %% 
   12 %% LGrind is a minor adaptation of Jerry Leichter's tgrind for LaTeX, 
   13 %% which was a notable improvement upon Van Jacobsen's tgrind for 
   14 %% plain TeX, which was adapted from vgrind, a troff prettyprinter. 
   15 %% 
   16 %% Based on Van Jacobson's ``tgrindmac'', a macro package for TeX.
   17 %% Modified, 1987 by Jerry Leichter. Put '@' in all internal names.
   18 %% Modified, 1991 by George Reilly. Changed name from tgrind to lgrind.
   19 %% Modified, 1995 by Michael Piefel. Made it work with \LaTeXe.
   20 \NeedsTeXFormat{LaTeX2e}[1995/06/01]
   21 \ProvidesPackage{lgrind}
   22           [1997/01/30 v3.4 LGrind environment and supporting stuff]
   23 \newcount\lc@unt
   24 \newcount\ln@xt
   25 \newcount\LGnuminterval
   26 \LGnuminterval=10
   27 \DeclareOption{nolineno}{\LGnuminterval=50000}
   28 \DeclareOption{lineno5}{\LGnuminterval=5}
   29 \newif\ifLGleftnum
   30 \DeclareOption{leftnum}{\LGleftnumtrue}
   31 \newskip\LGindent
   32 \LGindent=1.6667\parindent
   33 \DeclareOption{noindent}{\LGindent=0pt}
   34 \newif\ifLGnorules
   35 \DeclareOption{norules}{\LGnorulestrue}
   36 \newlength{\LGsloppy}
   37 \setlength{\LGsloppy}{7.2pt}
   38 \DeclareOption{fussy}{\LGsloppy=0pt}
   39 \newcommand{\DefaultProc}{\@gobble}
   40 \newcommand{\DefaultProcCont}{\@gobble}
   41 \DeclareOption{procnames}{
   42 \renewcommand{\DefaultProc}[1]{\renewcommand{\Procname}{#1}%
   43 \global\setbox\procbox=\hbox{\PNsize #1}}
   44 \renewcommand{\DefaultProcCont}[1]{\renewcommand\Procname{#1}
   45 \global\setbox\procbox=\hbox{\PNsize\dots #1}}}
   46 \newbox\procbox
   47 \newcommand{\Procname}{}
   48 \ProcessOptions
   49 \def\BGfont{\sffamily}
   50 \def\CMfont{\rmfamily\itshape}
   51 \def\NOfont{\sffamily}
   52 \def\KWfont{\rmfamily\bfseries}
   53 \def\STfont{\ttfamily}
   54 \def\VRfont{\rmfamily}
   55 %% \def\PNsize{\BGfont\small} -ab.
   56 \def\PNsize{\BGfont}
   57 %% \def\LGsize{\small} -ab.
   58 \def\LGsize{\normalsize}
   59 %% \def\LGfsize{\footnotesize} -ab
   60 \def\LGfsize{\normalsize}
   61 \newif\ifLGinline
   62 \newif\ifLGd@fault
   63 \def\LGbegin{\ifLGinline$\hbox\else$$\vbox\fi\bgroup\LGd@faulttrue}
   64 \def\LGend{\ifLGd@fault\egroup\ifLGinline$\else$$\fi\LGd@faultfalse\fi}
   65 \newif\ifc@mment
   66 \newif\ifstr@ng
   67 \newif\ifright@
   68 \newbox\ls@far
   69 \newbox\tb@x
   70 \newdimen\TBw@d
   71 \newdimen\@ts
   72 {\catcode`\_=\active \gdef\@setunder{\let_=\sp@ce}}
   73 \newcommand{\lgrindheader}{}
   74 \newcommand{\lgrindfilename}{}\newcommand{\lgrindfilesize}{}
   75 \newcommand{\lgrindmodyear}{}\newcommand{\lgrindmodmonth}{}
   76 \newcommand{\lgrindmodday}{}\newcommand{\lgrindmodtime}{}
   77 \newenvironment{lgrind}[1][1]{%
   78 \def\Line##1{\L{\LB{##1}}}%
   79 \newcommand{\Head}[1]{\gdef\lgrindhead{##1}}%
   80 \newcommand{\File}[6]{\gdef\lgrindfilename{##1}\message{(LGround: ##1)}%
   81     \gdef\lgrindmodyear{##2}\gdef\lgrindmodmonth{##3}%
   82     \gdef\lgrindmodday{##4}\gdef\lgrindmodtime{##5}%
   83     \gdef\lgrindfilesize{##6}}%
   84 \let\Proc=\DefaultProc%
   85 \let\ProcCont=\DefaultProcCont%
   86 \hfuzz=\LGsloppy
   87 \def\NewPage{\filbreak\bigskip}%
   88 \ifLGinline
   89  \def\L##1{\setbox\ls@far\null{\CF\strut##1}\ignorespaces}%
   90 \else
   91  \let\r@ghtlno\relax\let\l@ftlno\relax
   92  \ifnum\LGnuminterval>\z@
   93   \ifLGleftnum
   94    \def\l@ftlno{\ifvoid\procbox\ifnum\lc@unt>\ln@xt
   95      \global\advance\ln@xt by\LGnuminterval
   96 %%     \llap{{\normalfont\scriptsize\the\lc@unt\quad}}\fi -ab.
   97      \llap{{\normalfont\small\the\lc@unt\quad}}\fi
   98      \else\llap{\box\procbox\quad}\fi}%
   99   \else
  100    \def\r@ghtlno{\ifvoid\procbox\ifnum\lc@unt>\ln@xt
  101      \global\advance\ln@xt by\LGnuminterval
  102 %%     \rlap{{\normalfont\scriptsize\enspace\the\lc@unt}}\fi -ab
  103      \rlap{{\normalfont\small\enspace\the\lc@unt}}\fi
  104      \else\rlap{\enspace\box\procbox}\fi}%
  105   \fi
  106  \fi
  107  \def\L##1{\@@par\setbox\ls@far=\null\strut
  108   \global\advance\lc@unt by1%
  109   \hbox to \hsize{\hskip\LGindent\l@ftlno ##1\egroup%
  110   \hfil\r@ghtlno}%
  111   \ignorespaces}%
  112 \fi
  113 \lc@unt=#1\advance\lc@unt by-1%
  114 \ln@xt=\LGnuminterval\advance\ln@xt by-1%
  115 \loop\ifnum\lc@unt>\ln@xt\advance\ln@xt by\LGnuminterval\repeat%
  116 \def\LB{\hbox\bgroup\bgroup\box\ls@far\CF\let\next=}%
  117 \def\Tab##1{\egroup\setbox\tb@x=\lastbox\TBw@d=\wd\tb@x%
  118  \advance\TBw@d by 1\@ts\ifdim\TBw@d>##1\@ts
  119   \setbox\ls@far=\hbox{\box\ls@far \box\tb@x \sp@ce}\else
  120   \setbox\ls@far=\hbox to ##1\@ts{\box\ls@far \box\tb@x \hfil}\fi\LB}%
  121 \ifLGinline\def\sp@ce{\hskip .3333em}%
  122 \else \setbox\tb@x=\hbox{\texttt{0}}%
  123       \@ts=0.8\wd\tb@x \def\sp@ce{\hskip 1\@ts}\fi
  124 \catcode`\_=\active \@setunder
  125 \def\CF{\ifc@mment\CMfont\else\ifstr@ng\STfont\fi\fi}
  126 \def\N##1{{\NOfont ##1}\global\futurelet\next\ic@r}%
  127 \def\K##1{{\KWfont ##1}\global\futurelet\next\ic@r}%
  128 \def\V##1{{\VRfont ##1}\global\futurelet\next\ic@r}% -ab.
  129 \def\ic@r{\let\@tempa\/\ifx.\next\let\@tempa\relax%
  130  \else\ifx,\next\let\@tempa\relax\fi\fi\@tempa}%
  131 \def\C{\egroup\bgroup\CMfont \global\c@mmenttrue \global\right@false}%
  132 \def\CE{\egroup\bgroup \global\c@mmentfalse}%
  133 \def\S{\egroup\bgroup\STfont \global\str@ngtrue}%
  134 \def\SE{\egroup\bgroup \global\str@ngfalse}%
  135 \def\,{\relax \ifmmode\mskip\thinmuskip \else\thinspace \fi}%
  136 \def\!{\relax \ifmmode\mskip-\thinmuskip \else\negthinspace \fi}%
  137 \def\CH##1##2##3{\relax\ifmmode ##1\relax
  138 \else\ifstr@ng ##2\relax\else$##3$\fi\fi }%
  139 \def\{{\CH\lbrace {\char'173}\lbrace }%
  140 \def\}{\CH\rbrace {\char'175}\rbrace }%
  141 \def\1{\CH///}%                                % /
  142 \def\2{\CH\backslash {\char'134}\backslash }%  % \
  143 \def\|{\CH|{\char'174}|}%
  144 \def\<{\CH<<<}%
  145 \def\>{\CH>>>}%
  146 \def\*{\CH***}\relax %\relax for DOCSTY
  147 \def\-{\CH---}%
  148 \def\_{\ifstr@ng {\char'137}\else
  149   \leavevmode \kern.06em \vbox{\hrule width.35em}%
  150   \ifdim\fontdimen\@ne\font=\z@ \kern.06em \fi\fi }%
  151 \def\&{\textsf{\char'046}}%
  152 \def\#{{\STfont\char'043}}%
  153 \def\%{{\char'045}}%
  154 \def\~{{\char'176}}%
  155 \def\3{\ifc@mment\ifright@ ''\global\right@false%
  156                       \else``\global\right@true \fi
  157    \else{\texttt{\char'042}}\fi}%
  158 \def\4{\ifc@mment'\else {\texttt{\char'015}}\fi}%
  159 \def\5{{\texttt{\char'136}}}%
  160 \def\${{\ifmmode\slshape\else\ifdim\fontdimen\@ne\font>\z@\slshape\fi\fi
  161   \char'044}}% %No $ in \it, use \sl
  162 \parindent\z@\parskip\z@ plus 1pt\hsize\linewidth%
  163 \bgroup\BGfont
  164 }
  165 {\egroup\@@par}           % end of environment lgrind
  166 \def\lgrinde{\ifLGinline\else\LGsize\fi\begin{lgrind}}
  167 \def\endlgrinde{\end{lgrind}}
  168 \def\lagrind{\@ifstar{\@slagrind}{\@lagrind}}
  169 
  170 \def\@lagrind{\@ifnextchar[{\@@lagrind}{\@@lagrind[t]}}
  171 \def\@slagrind{\@ifnextchar[{\@@slagrind}{\@@slagrind[t]}}
  172 \def\@@lagrind[#1]#2#3#4{%
  173     \begin{figure}[#1]
  174 \ifLGnorules\else\hrule\fi
  175 \vskip .5\baselineskip
  176 \begin{minipage}\columnwidth\LGsize\LGindent\z@
  177     \begin{lgrind}
  178 \input #2\relax
  179     \end{lgrind}
  180 \end{minipage}
  181 \vskip .5\baselineskip plus .5\baselineskip
  182 \ifLGnorules\else\hrule\fi\vskip .5\baselineskip
  183 \begingroup
  184     \setbox\z@=\hbox{#4}%
  185     \ifdim\wd\z@>\z@
  186 \caption{#3}%
  187 \label{#4}%
  188     \else
  189 \captcont{#3}%
  190     \fi
  191 \endgroup
  192 \vskip 2pt
  193     \end{figure}
  194 }
  195 \def\@@slagrind[#1]#2#3#4{%
  196     \begin{figure*}[#1]
  197 \ifLGnorules\else\hrule\fi
  198 \vskip .5\baselineskip
  199 \begin{minipage}\linewidth\LGsize\LGindent\z@
  200     \begin{lgrind}
  201 \input #2\relax
  202     \end{lgrind}
  203 \end{minipage}
  204 \vskip .5\baselineskip plus .5\baselineskip
  205 \ifLGnorules\else\hrule\fi\vskip .5\baselineskip
  206 \begingroup
  207     \setbox\z@=\hbox{#4}%
  208     \ifdim\wd\z@>\z@
  209 \caption{#3}%
  210 \label{#4}%
  211     \else
  212 \captcont{#3}%
  213     \fi
  214 \endgroup
  215 \vskip 2pt
  216     \end{figure*}
  217 }
  218 \def\lgrindfile#1{%
  219     \par\addvspace{0.1in}
  220     \ifLGnorules\else\hrule\fi
  221     \vskip .5\baselineskip
  222     \begingroup\LGfsize\LGindent\z@
  223 \begin{lgrind}
  224     \input #1\relax
  225 \end{lgrind}
  226     \endgroup
  227     \vskip .5\baselineskip
  228     \ifLGnorules\else\hrule\fi
  229     \addvspace{0.1in}
  230 }
  231 \endinput
  232 %% 
  233 %% End of file `lgrind.sty'.