From c6b827c6f5aab4beff40b7bef80e869c6815d826 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Thu, 12 Jan 2006 23:58:22 +0000
Subject: ltxmisc

git-svn-id: svn://tug.org/texlive/trunk@1056 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/tex/latex/ltxmisc/verbasef.sty | 339 +++++++++++++++++++++++
 1 file changed, 339 insertions(+)
 create mode 100644 Master/texmf-dist/tex/latex/ltxmisc/verbasef.sty

(limited to 'Master/texmf-dist/tex/latex/ltxmisc/verbasef.sty')

diff --git a/Master/texmf-dist/tex/latex/ltxmisc/verbasef.sty b/Master/texmf-dist/tex/latex/ltxmisc/verbasef.sty
new file mode 100644
index 00000000000..9daf21e999a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/ltxmisc/verbasef.sty
@@ -0,0 +1,339 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% 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
-- 
cgit v1.2.3

