%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % verbasef.sty % % This stands for VERBatim Automatic Splitting of External Files. % % Copyright (c) 1994 by Paul A. Thompson, All Rights Reserved. % Copy freely as per the GNU Copyleft. % % Requires: % The New Font Selection Scheme (NFSS) as implemented in LaTeX2e % VERBATIM.STY ::: Rainer Schoepf % VRBEXIN.STY ::: You % However, it is based on vrbinput.sty, a style by % Bernd Raichle which must be revised as discussed below % in the section labeled IMPORTANT % HERE.STY ::: David Carlisle % % verbasef allows you to input (subsections of a) file, print them in % verbatim mode, while automatically breaking up the inputted lines into % pieces of a given length, which are output as figures. These figures are % posted using the [H] specification, which forces LaTeX to place the figure % at the spot of invocation, rather than floating the figures to the top of % the next page. % % Options for the verbasef specification include: % o numbering of input lines % o differential number of lines for the first page % o specification of the font for the verbatim output % o specification of the font for the optional line numbering % o specification of line numbers as labels % To use the labelling feature, non-standard approaches must be used. % A line number will be inserted into the main .aux file with label foo, % if the specification % % Vzzlabel|foo| % % is inserted AFTER the line which is to be indicated. Thus, if we have % a file with the following % % a line % b line % Vzzlabel|fooa| % c line % Vzzlabel|foob| % d line % Vzzlabel|fooc| % e line % f line % Vzzlabel|food| % % these lines will be found in the .aux file. % \newlabel{fooa}{{2}{1}} % \newlabel{foob}{{3}{1}} % \newlabel{fooc}{{4}{1}} % \newlabel{food}{{6}{1}} % % They can be used as any other label, for instance % % Using the labeling feature, pay attention to Line \ref{food} (found on % Page \pageref{food}) to understand this radically new method. % % Any lines with the Vzzlabel specification will be ignored in the % line counts. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % USING THE styLE % % verbasef is an adaptation of VRBSUBFILE, from Norman Walsh. % I fully acknowledge Mr./Dr. Walsh as the imprimature of the code ensconced % herein, but have included other features as indicated above. % % Comments and suggestions always welcome. % Paul A. Thompson % Department of Psychiatry, Data Analysis and Statistics Section % Case Western Reserve University % Cleveland, OH 44106 % % AudioNet: (216) 844-8946 % InterNet: pat@po.cwru.edu % % User interface: % VautoSubF[#1]#2#3#4#5#6 % Input lines #2 to #3 of file #4. If present, #1 indicates which lines % should be numbered. For example, if #1 is 5, lines 5, 10, 15, etc. % will be numbered. By default, lines are not numbered at all. % #5 is figure caption, and #6 is figure label. % % VautoSfFont[#1]#2 % Use font #2 for verbatim input lines and, if present, use font #1 for % line numbers. By default, #2 is \tt and #1 is \rm\tiny. % % VautoPl#1 % Placement of the figure (either H or some other placement character) % By default, placement is H (immediate here, here.sty) % (This currently does not function. All placement is done using the % H specification.) % % VautoLines[#1]{#2} % #2 is number of lines per page. If #1 is included, it is the number of % lines for the first page. If not, #1=#2 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT % IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT % IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % In order to use the verbasef.sty file, VRBINPUT.STY must be MODIFIED % and given a NEW NAME. Here are instructions for modification: % % You must do EITHER 1-4 below OR 5 below to get verbasef to run properly. % % 1. Obtain vrbinput.sty from the standard distribution channels. The file % should have the following characteristics: % % \fileversion{v1.0b} % \filedate{91/06/30} % \docdate{91/08/05} % % 2. Copy vrbinput.sty to a file vrbexin.sty. THIS MUST BE DONE PRIOR TO % EDITING ANY FILE. % % 3. Edit the file vrbexin.sty. Please don't edit the file vrbinput.sty. % Change Line 90 from % \verbatim@startline % to % \verbatim@start % as shown in the fragment of code from Lines 89-92 below. % % \def\verbatim@readfile#1{% % \verbatim@start % \openin\verbatim@in@stream #1\relax % \ifeof\verbatim@in@stream % % % 4. VERY IMPORTANT. CHANGE ALL OCCURRANCES of vrbinput, in titles, typeout % sections and credits to vrbexin. Remove all references to the original % author, Bernd Raichle, as he is not the author of the style file vrbexin. % You may substitute my name for Mr. Raichle if you wish. % % 5. Obtain vrbexin.sty directly from the same subdirectory that verbasef was % found in. % % 6. Place this .sty file in a place searched by TeX, on the TEXINPUT path. % % After I can figure out the docstrip utility, I will do this stuff myself. % % Note: As is standard practice in the TeX community, any modifications in % .sty files must be given new names. Thus, it is certainly vitally important % that the modifications in vrbinput.sty be done in the file named % vrbexin.sty, not in the original which I did not write. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT % IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT % IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \NeedsTeXFormat{LaTeX2e}% \RequirePackage{vrbexin}% \RequirePackage{verbatim}% \RequirePackage{here}% \def\fileversion{v1.1}% \def\filedate{95/01/20}% \typeout{Style-Option: `verbasef' \fileversion \space <\filedate> (ndw)}% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \newcounter{g@nu} \newcommand{\incr@macv}[2]{ \setcounter{g@nu}{#1}\addtocounter{g@nu}{#2}% \global\edef#1{\theg@nu}% } \gdef\Vauto@LinePage{0}% % lines/page counter \gdef\Vauto@NP{0}% % Number of pages \gdef\Vauto@Fignum{0}% % Figure number - retain over figures \gdef\Vauto@Pagea{0}% % # lines page 1 \gdef\Vauto@LineNo{0}% % current line number \gdef\Vauto@LineMod{0}% % modulo to print on \gdef\Vauto@LineLoop{0}% % loop count in line number (1..Mod) \gdef\Vauto@LineStart{0}% % first line to print \gdef\Vauto@LineCount{0}% % number of lines to print \gdef\Vauto@NotLabel{0}% % Printable - not a label \gdef\Vauto@PFlag{0}% % print this line? % %%%% Default table placement, and macros to change table placement \def\Vauto@Plx{H}\def\Vauto@Pl#1{\def\Vauto@Plx{#1}}\def\VautoPl{\Vauto@Pl}% %%%% Default verbatim font and verbatim line number font \def\Vauto@sfFont{\tt}\def\Vauto@sfLNF{\rm\tiny}% % %%%% Macros to change fonts \def\Vauto@sbf[#1]#2{\def\Vauto@sfFont{#2}\def\Vauto@sfLNF{#1}}% \def\Vauto@svf#1{\def\Vauto@sfFont{#1}}% \def\VautoSfFont{% \@ifnextchar[{\Vauto@sbf}{\Vauto@svf}%] % This is for bracket match }% % ] has no effect on code %%%% Macros to set number of lines per figure \def\Vauto@LPP{46}\def\Vauto@LPPa{46}% \def\Vauto@TwoLPP[#1]#2{\def\Vauto@LPP{#2}\def\Vauto@LPPa{#1}}% \def\Vauto@OneLPP#1{\def\Vauto@LPP{#1}\def\Vauto@LPPa{#1}}% \def\VautoLines{% \@ifnextchar[{\Vauto@TwoLPP}{\Vauto@OneLPP}%] % Bracket match }% \def\VautoSubFF{\@ifnextchar[{\Vauto@sbf}{\Vauto@svf}%] }% \def\xxparse Vzzlabel|#1|{% \immediate\write\@mainaux{\string\newlabel{#1}{{\Vauto@LineNo}{\thepage}}}% }% \def\ifsubstr#1#2#3#4%% #1=string #2=substring, #3=yes, #4=no {% \def\tempa##1#2##2\over_##3\end{% \ifx##3% % can't parse \gdef\Vauto@NotLabel{1}% \else% can parse \gdef\Vauto@NotLabel{0}% \xxparse #1% \fi% }% \tempa#1\over_\over#2\over___\end% }% % %%Macro which sets beginfigure and endfigure constructions % \def\Vauto@etab#1#2#3{% {caption}{label}{prtype}% \ifnum#3<3% 1 or 2 qualifies here \begingroup \normalsize\rm\selectfont% \ifnum\Vauto@NP=1 \caption{#1}\label{#2}% \global\edef\Vauto@Fignum{\thefigure}% \else \vspace{2em}% \centerline{Figure \Vauto@Fignum: #1 (cont.)}% \fi% \endgroup% \end{figure}% \def\Vauto@PrCnt{\Vauto@LPP}% \ifnum#3=2 \setcounter{figure}{\Vauto@Fignum}\fi% \fi% \ifnum#3>1% 2 or 3 qualifies here \begin{figure}[H]% % \begin{figure}[\theVauto@Plx]% \incr@macv{\Vauto@NP}{1}% \gdef\Vauto@LinePage{0}% \gdef\Vauto@PFlag{1}% \fi% \catcode`\^^M9% }% % %%%% Internal macro that does the work... \def\Vauto@sf#1#2#3{\begingroup% \def\verbatim@start{\Vauto@etab{#2}{#3}{3}}% \def\verbatim@finish{\Vauto@etab{#2}{#3}{1}}% \def\verbatim@font{\Vauto@sfFont\selectfont}% \gdef\Vauto@LineNo{0}% \gdef\Vauto@LineLoop{0}% \parskip=0pt% \def\verbatim@processline{% \edef\subz{\noexpand\ifsubstr{\the\verbatim@line}{Vzzlabel}{1}{0}}\subz% \ifnum\Vauto@NotLabel=1% \incr@macv{\Vauto@LineNo}{1}% \incr@macv{\Vauto@LineLoop}{1}% \gdef\Vauto@PFlag{1}% \ifnum\Vauto@LineStart>0% we haven't reached the first line yet... \gdef\Vauto@PFlag{0}% \incr@macv{\Vauto@LineStart}{-1}% \else% \ifnum\Vauto@LineCount=0% we're out of the "printable" region \gdef\Vauto@PFlag{0}% \else% \incr@macv{\Vauto@LineCount}{-1}% decrease the line count \fi% \fi% % debugging... %\typeout{Start: \theVauto@LineStart, Count: \theVauto@LineCount, % Print: \theVauto@PrintFlag, Loop: \theVauto@LineLoop, % Mod: \theVauto@LineMod}% \ifnum\Vauto@PFlag=1% \leavevmode% \ifnum\Vauto@LineLoop=\Vauto@LineMod% \llap{{\Vauto@sfLNF\selectfont \Vauto@LineNo}% \ \hskip\@totalleftmargin}% \gdef\Vauto@LineLoop{0}% \else% \llap{\phantom{\Vauto@sfLNF\selectfont 0}\ % \hskip\@totalleftmargin}% \fi% \the\verbatim@line\par% \incr@macv{\Vauto@LinePage}{1}% \else% \ifnum\Vauto@LineLoop=\Vauto@LineMod% \gdef\Vauto@LineLoop{0}% \fi% \fi% \ifnum\Vauto@LinePage=\Vauto@PrCnt \Vauto@etab{#2}{#3}{2}\fi% \fi% End of the loop printing non-labels }% \verbatiminput{#1} \endgroup}% % \def\Vauto@sfP#1#2#3#4#5{% \begingroup% \gdef\Vauto@PrCnt{\Vauto@LPPa}% \gdef\Vauto@NP{0}% % Number of pages \gdef\Vauto@LineMod{-1}% \gdef\Vauto@LineStart{#1}% \gdef\Vauto@LineCount{#2}% \incr@macv{\Vauto@LineCount}{-\Vauto@LineStart}% \incr@macv{\Vauto@LineCount}{1}% \incr@macv{\Vauto@LineStart}{-1}% \Vauto@sf{#3}{#4}{#5}% \catcode`\^^M`\^^M% \endgroup% }% \def\Vauto@sfN[#1]#2#3#4#5#6{% \begingroup% \gdef\Vauto@PrCnt{\Vauto@LPPa}% \gdef\Vauto@NP{0}% % Number of pages \gdef\Vauto@LineMod{#1}% \gdef\Vauto@LineStart{#2}% \gdef\Vauto@LineCount{#3}% \incr@macv{\Vauto@LineCount}{-\Vauto@LineStart}% \incr@macv{\Vauto@LineCount}{1}% \incr@macv{\Vauto@LineStart}{-1}% \Vauto@sf{#4}{#5}{#6}% \catcode`\^^M`\^^M% \endgroup% }% \def\VautoSubF{% \@ifnextchar[{\Vauto@sfN}{\Vauto@sfP}%] }% \endinput% %%%% EOF