home *** CD-ROM | disk | FTP | other *** search
- %%
- %% This is file `docstrip.tex', generated
- %% on <1995/6/21> with the docstrip utility (2.2i).
- %%
- %% The original source files were:
- %%
- %% docstrip.dtx (with options: `program,stats')
- %%
- %%
- %% This is a generated file.
- %%
- %% Copyright 1993-1995 the LaTeX3 project and any individual authors
- %% listed elsewhere in this file. All rights reserved.
- %%
- %% For further copyright information see the file legal.txt, and any
- %% other copyright notices in this file.
- %%
- %% This file is part of the LaTeX2e system.
- %% ----------------------------------------
- %% This system 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.
- %%
- %% For error reports concerning UNCHANGED versions of this file no more
- %% than one year old, see bugs.txt.
- %%
- %% Please do not request updates from us directly. Primary
- %% distribution is through the CTAN archives.
- %%
- %%
- %% IMPORTANT COPYRIGHT NOTICE:
- %%
- %% You are NOT ALLOWED to distribute this file alone.
- %%
- %% You are allowed to distribute this file under the condition that it is
- %% distributed together with all the files listed in manifest.txt.
- %%
- %% If you receive only some of these files from someone, complain!
- %%
- %% Permission is granted to copy this file to another file with a clearly
- %% different name and to customize the declarations in that copy to serve
- %% the needs of your installation, provided that you comply with
- %% the conditions in the file legal.txt.
- %%
- %% However, NO PERMISSION is granted to generate or to distribute a
- %% modified version of this file under its original name.
- %%
- %% You are NOT ALLOWED to change this file.
- %%
- %%
- %% MODIFICATION ADVICE:
- %%
- %% If you want to customize this file, it is best to make a copy of the
- %% source file(s) from which it was produced. Use a different name for
- %% your copy(ies) and modify the copy(ies); this will ensure that your
- %% modifications do not get overwritten when you install a new release of
- %% the standard system. You should also ensure that your modified source
- %% file does not generate any modified file with the same name as a
- %% standard file. You can then easily distribute your modifications by
- %% distributing the modified and renamed copy of the source file, taking
- %% care to observe the conditions in legal.txt; this will ensure that
- %% other users can safely use your modifications.
- %%
- %% You will also need to produce your own, suitably named, .ins file to
- %% control the generation of files from your source file; this file
- %% should contain your own preambles for the files it generates, not
- %% those in the standard .ins files.
- %%
- %% The names of the source files used are shown above.
- %%
- %%
- %%
-
- \def\filename{docstrip.dtx}
- \def\fileversion{2.2i}
- \def\filedate{1994/12/15}
- \def\docdate {1994/06/09}
-
- %% \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 \~}
- %%
- %% The docstrip program for use with TeX.
- %% Copyright (C) 1989-1991 Frank Mittelbach
- %% Copyright (C) 1992-1994 Johannes Braams, Denys Duchier,
- %% Frank Mittelbach
- %% All rights are reserved.
- %%
- \catcode`\@=11
- \newlinechar=`\^^J
- \newtoks\TerminalString
- \newif\ifOff
- \newif\ifGenerate
- \newif\ifContinue
- \newif\ifTerminal
- \newif\ifForlist
- \newif\ifDefault
- \newif\ifMoreFiles \MoreFilestrue
- \newcount\blockLevel \blockLevel\z@
- \newcount\offLevel \offLevel \z@
- \newcount\emptyLines \emptyLines \z@
- \newcount\processedLines \processedLines \z@
- \newcount\commentsRemoved \commentsRemoved \z@
- \newcount\commentsPassed \commentsPassed \z@
- \newcount\codeLinesPassed \codeLinesPassed \z@
- \newcount\NumberOfFiles \NumberOfFiles\z@
- \newcount\TotalprocessedLines \TotalprocessedLines \z@
- \newcount\TotalcommentsRemoved \TotalcommentsRemoved \z@
- \newcount\TotalcommentsPassed \TotalcommentsPassed \z@
- \newcount\TotalcodeLinesPassed \TotalcodeLinesPassed \z@
- \newread\inFile
- \newwrite\outFile
- \newread\ttyin
- \newwrite\ttyout
- \newread\@tempa
- \let\lowestbatchFile\@tempa
- \newread\@tempa \newread\@tempa \newread\@tempa \newread\@tempa
- \newread\@tempa \newread\@tempa \newread\@tempa \newread\@tempa
- \newread\@tempa
- \let\highestbatchFile\@tempa
- \newcount\currbatchFile
- \currbatchFile=\highestbatchFile
- \advance\currbatchFile by -9
- \def\ifToplevel{\relax\ifnum\currbatchFile=\lowestbatchFile
- \expandafter\iden \else \expandafter\gobble\fi}
- \ifx\undefined\@@input \let\@@input\input\fi
- \def\batchinput#1{%
- \begingroup
- \def\batchfile{#1}%
- \advance\currbatchFile\@ne
- \ifnum\currbatchFile>\highestbatchFile
- \errhelp{Only up to ten levels of nesting for
- \noexpand\batchinput commands are supported}%
- \errmessage{Batchfiles too deeply nested}%
- \fi
- \processbatchFile
- \endgroup
- }
- \def\skip@input#1 {}
- \let\input\skip@input
- \def\guardStack{}
- \def\blockHead{}
- \def\Options{}
- \def\lastOption{}
- \def\TrueExpression{TT}
- \def\FalseExpression{TF}
- \def\yes{yes}
- \def\y{y}
- \def\n{n}
- \def\DefaultbatchFile{docstrip.cmd}
- {\catcode`\%=12
- \gdef\perCent{%}
- \gdef\DoubleperCent{%% }
- }
- \def^^L{ }
- \def\eltStart{}
- \def\eltEnd{}
- \def\qStop{\qStop}
- \def\pop#1#2{%
- \ifx#1\empty
- \Msg{Warning: Found end guard without matching begin}%
- \let#2\empty
- \else
- \def\tmp{\expandafter\popX #1\qStop #1#2}%
- \expandafter\tmp\fi}
- \def\popX\eltStart #1\eltEnd #2\qStop #3#4{\def#3{#2}\def#4{#1}}
- \def\push#1#2{\expandafter\pushX #1\qStop #1{\eltStart #2\eltEnd}}
- \def\pushX #1\qStop #2#3{\def #2{#3#1}}
- \def\forlist#1:=#2\do#3\od{%
- \edef\ListCondition{#2}%
- \Forlisttrue
- \loop
- \edef#1{\expandafter\FirstElt\ListCondition,\empty.}%
- \edef\ListCondition{\expandafter\OtherElts\ListCondition,\empty.}%
- \ifx#1\empty \Forlistfalse \else#3\fi
- \ifForlist
- \repeat}
- \def\FirstElt#1,#2.{#1}
- \def\OtherElts#1,#2.{#2}
- \def\whileswitch#1\fi#2{#1\loop#2#1\repeat\fi}
- \def\showprogress{\let\maybeMsg\message}
- \def\keepsilent{\let\maybeMsg\gobble}
- \showprogress
- \def\Msg{\immediate\write\ttyout}
- \def\iden#1{#1}
- \def\strip#1#2 \gobble{\def #1{#2}}
- \def\@defpar{\par}
- \def\Ask#1#2{%
- \message{#2}\read\ttyin to #1\ifx#1\@defpar\def#1{}\else
- \iden{\expandafter\strip\expandafter#1#1\gobble\gobble} \gobble\fi}
- \def\WriteOut#1{\maybeMsg{.}\immediate\write\outFile{#1}}
- \def\OffStart{\Offtrue\advance\offLevel\@ne}
- \def\OffEnd{%
- \advance\offLevel\m@ne
- \ifnum\offLevel=\z@
- \Offfalse
- \fi}
- \def\gobble#1{}
- \edef\Endinput{\expandafter\gobble\string\\endinput}
- \def\makeOther#1{\catcode`#1=12\relax}
- \ifx\undefined\@@end\else\let\end\@@end\fi
- \def\PropagateValue#1\qStop{%
- \edef\ExpressionValue{#1}}
- \def\ContinueExpression#1{%
- \if\ExpressionValue
- \else
- \def\ExpressionValue{#1}%
- \fi
- \futurelet\nextToken\ContinueExpressionX}
- \def\ContinueExpressionX{%
- \ifx|\nextToken
- \def\doNext|{\Primary}%
- \else
- \ifx,\nextToken
- \def\doNext,{\Primary}%
- \else
- \edef\doNext){\endgroup\noexpand\PropagateValue{\ExpressionValue}}
- \fi
- \fi
- \doNext}
- \def\ContinuePrimary#1{%
- \if\ExpressionValue
- \def\ExpressionValue{#1}%
- \fi
- \futurelet\nextToken\ContinuePrimaryX}
- {\catcode`\&=12
- \gdef\ContinuePrimaryX{%
- \ifx&\nextToken
- \def\doNext&{\Secondary}%
- \else
- \edef\doNext{\endgroup\noexpand\PropagateValue{\ExpressionValue}}%
- \fi
- \doNext}}
- \def\PropagateNegatedValue#1{%
- \edef\doNext{\endgroup
- \noexpand\PropagateValue
- {\if#1%
- \noexpand\FalseExpression
- \else
- \noexpand\TrueExpression
- \fi}}%
- \doNext}
- \def\Evaluate#1{%
- \Expression(#1)\qStop}
- \def\Expression({%
- \begingroup
- \let\ExpressionValue\FalseExpression
- \let\PropagateValue\ContinueExpression
- \Primary}
- \def\Primary{%
- \begingroup
- \let\ExpressionValue\TrueExpression
- \let\PropagateValue\ContinuePrimary
- \Secondary}
- \def\Secondary{%
- \futurelet\nextToken\SecondaryX}
- \def\SecondaryX{%
- \ifx\nextToken(\let\doNext\Expression\else
- \ifx\nextToken!\let\doNext\Negate\else
- \let\doNext\Terminal\fi\fi
- \doNext}
- \def\Negate!{%
- \begingroup
- \let\PropagateValue\PropagateNegatedValue
- \Secondary}
- \def\Terminal{%
- \global\TerminalString{}\TerminalX}
- \def\TerminalX#1{%
- \global\TerminalString\expandafter{\the\TerminalString#1}%
- \futurelet\nextToken\TerminalXX}
- {\catcode`\&=12
- \gdef\TerminalXX{%
- \Terminalfalse
- \ifx &\nextToken \else
- \ifx |\nextToken \else
- \ifx ,\nextToken \else
- \ifx !\nextToken \else
- \ifx (\nextToken \else
- \ifx )\nextToken \else
- \Terminaltrue
- \fi\fi\fi\fi\fi\fi
- \ifTerminal
- \let\doNext\TerminalX
- \else
- \edef\doNext{\noexpand\SetValue{\the\TerminalString}}%
- \global\TerminalString{}%
- \fi
- \doNext}
- }
- \def\SetValue#1{%
- \def\tmp##1,#1,##2\qStop{%
- \def\tmp{##2}%
- \edef\doNext{\noexpand\PropagateValue
- {\ifx\tmp\empty\FalseExpression\else\TrueExpression\fi}}%
- \doNext}%
- \expandafter\tmp\expandafter,\Options,#1,\qStop}
- \def\copyLine#1\endLine{%
- \advance\codeLinesPassed\@ne
- \WriteOut{#1}}
- \def\removeLine#1\endLine{%
- \maybeMsg{\perCent}}
- \def\removeComment#1\endLine{%
- \advance\commentsRemoved\@ne
- \maybeMsg{\perCent}}
- \def\putMetaComment#1\endLine{%
- \closeOption%
- \advance\commentsPassed\@ne
- \WriteOut{\inLine}}
- \def\processLine{%
- \advance\processedLines\@ne
- \futurelet\nextToken\processLineX}
- \begingroup
- \catcode`\%=12 \catcode`\#=14
- \gdef\processLineX{#
- \ifx%\nextToken
- \let\doNext\processLineXX
- \else
- \closeOption
- \ifOff
- \let\doNext\removeLine
- \else
- \let\doNext\copyLine
- \fi
- \fi
- \doNext}
- \endgroup
- \def\processLineXX#1{%
- \futurelet\nextToken\processLineXXX}
- \begingroup
- \catcode`\%=12 \catcode`\#=14
- \gdef\processLineXXX{#
- \ifx%\nextToken \let\doNext\putMetaComment \else
- \ifx<\nextToken \let\doNext\checkOption \else
- \closeOption
- \let\doNext\removeComment \fi\fi
- \doNext}
- \endgroup
- \def\checkOption<{%
- \futurelet\nextToken\checkOptionsX}
- \def\checkOptionsX{%
- \ifx*\nextToken \let\doNext\starOption \else
- \ifx/\nextToken \let\doNext\slashOption \else
- \ifOff \let\doNext\removeLine \else
- \ifx+\nextToken \let\doNext\plusOption \else
- \ifx-\nextToken \let\doNext\minusOption \else
- \let\doNext\doOption \fi\fi\fi\fi\fi
- \doNext}
- \def\closeOption{%
- \ifx\lastOption\empty\else
- \maybeMsg{>}\let\lastOption\empty\fi}
- \def\doOption#1>{%
- \testOption{}{#1}%
- \if\ExpressionValue \expandafter\copyLine
- \else \expandafter\removeLine \fi}
- \def\plusOption+#1>{%
- \testOption+{#1}%
- \if\ExpressionValue \expandafter\copyLine
- \else \expandafter\removeLine \fi}
- \def\minusOption-#1>{%
- \testOption-{#1}%
- \if\ExpressionValue \expandafter\removeLine
- \else \expandafter\copyLine \fi}
- \def\starOption*#1>{%
- \closeOption
- \maybeMsg{<*#1}%
- \expandafter\push\expandafter\guardStack\expandafter{\blockHead}%
- \advance\blockLevel\@ne
- \def\blockHead{#1}%
- \ifOff
- \advance\offLevel\@ne
- \else
- \Evaluate{#1}%
- \if\ExpressionValue\else\OffStart\fi
- \fi
- \removeLine}
- \def\slashOption/#1>{%
- \def\tmp{#1}%
- \ifnum\blockLevel<\@ne
- \errmessage{Spurious end block </\tmp> ignored}%
- \else
- \ifx\tmp\blockHead
- \pop\guardStack\blockHead
- \else
- \errmessage{Found </\tmp> instead of <*\blockHead>}%
- \fi
- \maybeMsg{>}%
- \advance\blockLevel\m@ne
- \ifOff\OffEnd\fi
- \fi
- \removeLine}
- \def\testOption#1#2{%
- \def\tmp{#2}%
- \ifx\tmp\empty
- \errmessage{Missing option expression!}%
- \def\tmp{MISSING OPTION}%
- \else
- \def\tmp{<#1#2}%
- \fi
- \ifx\tmp\lastOption
- \else
- \closeOption
- \let\lastOption\tmp
- \maybeMsg{\lastOption}%
- \Evaluate{#2}%
- \fi}
- \def\generateFile#1#2#3{{%
- \Msg{^^JGenerating file \WriteToDir#1^^J}%
- \Generatetrue
- \def\tmp{#2}\def\t{t}%
- \ifx\tmp\t
- \immediate\openin\inFile\WriteToDir#1\relax
- \ifeof\inFile\else
- \Ask\answer{File \WriteToDir#1 already exists
- \ifx\@empty\WriteToDir somewhere \fi
- on the system.^^J%
- Overwrite it%
- \ifx\@empty\WriteToDir\space if necessary\fi
- ? [y/n]}%
- \ifx\y \answer \Generatetrue \else
- \ifx\yes\answer \Generatetrue \else
- \Generatefalse\fi\fi\fi
- \immediate\closein\inFile
- \fi
- \ifGenerate
- \def\outFileName{#1}%
- \def\from##1##2{\WriteOut{\DoubleperCent ##1 \if>##2>\else
- \space (with options: `##2')\fi}}%
- \edef\ReferenceLines{%
- \WriteOut{\DoubleperCent ^^J%
- \DoubleperCent The original source files were:^^J%
- \DoubleperCent }%
- #3}%
- \def\from##1##2{\edef\inFileName{\inFileName##1\space}}
- \def\inFileName{}#3
- \def\from##1##2{\def\inFileName{##1}%
- \edef\Options{##2}%
- \generateFileX}%
- \immediate\openout\outFile\WriteToDir#1\relax
- \WritePreamble
- #3%
- \WritePostamble
- \immediate\closeout\outFile
- \let\ReferenceLines\OriginalRefs
- \else
- \Msg{Not generating file #1^^J}%
- \fi}}
- \ifx\@currdir\@undefined
- \def\WriteToDir{}
- \else
- \let\WriteToDir\@currdir
- \fi
- \def\include#1{\def\Options{#1}}
- \def\processFile#1#2#3#4{%
- \generateFile{#1.#3}{#4}{\from{#1.#2}{\Options}}}
- \def\processfile{\Msg{%
- ^^Jplease use \string\processFile\space instead of
- \string\processfile!^^J}%
- \processFile}
- \def\generatefile{\Msg{%
- ^^Jplease use \string\generateFile\space instead of
- \string\generatefile!^^J}%
- \generateFile}
- \def\generateFileX{{%
- \Msg{Processing File \inFileName
- \ifx\Options\empty\else\space(\Options)\fi
- \space -> \outFileName^^J}%
- \immediate\openin\inFile\inFileName\relax
- \ifeof\inFile
- \errmessage{Cannot find file \inFileName}%
- \else
- \makeOther\ \makeOther\\\makeOther\$%
- \makeOther\#\makeOther\^\makeOther\^^K%
- \makeOther\_\makeOther\^^A\makeOther\%%
- \makeOther\~\makeOther\{\makeOther\}\makeOther\&%
- \endlinechar-1\relax
- \loop
- \read\inFile to\inLine
- \ifx\inLine\Endinput
- \Msg{File \inFileName\space ended by \string\endinput.}%
- \Continuefalse
- \else
- \ifeof\inFile
- \Continuefalse
- \else
- \Continuetrue
- \ifx\inLine\empty
- \advance\emptyLines\@ne
- \else
- \emptyLines\z@
- \fi
- \ifnum \emptyLines<2
- \expandafter\processLine\inLine\endLine
- \else
- \maybeMsg{/}%
- \fi
- \fi
- \fi
- \ifContinue
- \repeat
- \closeOption
- \immediate\closein\inFile
- \Msg{Lines \space processed: \the\processedLines^^J%
- Comments removed: \the\commentsRemoved^^J%
- Comments \space passed: \the\commentsPassed^^J%
- Codelines passed: \the\codeLinesPassed^^J}%
- \global\advance\TotalprocessedLines by \processedLines
- \global\advance\TotalcommentsRemoved by \commentsRemoved
- \global\advance\TotalcommentsPassed by \commentsPassed
- \global\advance\TotalcodeLinesPassed by \codeLinesPassed
- \global\advance\NumberOfFiles by \@ne
- \fi}}
- \def\WritePreamble{%
- \WriteOut{%
- \DoubleperCent ^^J%
- \DoubleperCent This is file `\outFileName', generated %
- on <\the\year/\the\month/\the\day> ^^J%
- \DoubleperCent with the docstrip utility (\fileversion).%
- }%
- \ReferenceLines
- \WriteOut{%
- \DoubleperCent ^^J%
- \DoubleperCent IMPORTANT NOTICE:^^J%
- \DoubleperCent You are not allowed to distribute this file.^^J%
- \DoubleperCent For distribution of the original source see^^J%
- \DoubleperCent the copyright notice in the file \inFileName.^^J%
- \DoubleperCent }}
- \def\OriginalRefs{%
- \WriteOut{\DoubleperCent }%
- \WriteOut{\DoubleperCent The original source file was
- `\inFileName'.}%
- \ifx\Options\empty\else
- \WriteOut{\DoubleperCent Included options: `\Options'.}\fi
- \WriteOut{\DoubleperCent }}
- \let\ReferenceLines\OriginalRefs
- \def\WritePostamble{%
- \WriteOut{\string\endinput}%
- \WriteOut{\DoubleperCent ^^J%
- \DoubleperCent End of file `\outFileName'.}}
- \def\preamble{\begingroup
- \def\tmp{\par}%
- \def\Endpreamble{\endpreamble}%
- \Continuetrue
- \let\inFileName\relax
- \let\outFileName\relax
- \let\ReferenceLines\relax
- \gdef\WritePreamble{%
- \WriteOut{\DoubleperCent ^^J%
- \DoubleperCent This is file `\outFileName',
- generated ^^J%
- \DoubleperCent on <\the\year/\the\month/\the\day> with
- the docstrip utility (\fileversion).}%
- \ReferenceLines}%
- \loop
- \read\currbatchFile to \batchLine
- \ifx\batchLine\Endpreamble \Continuefalse
- \else
- \xdef\WritePreamble{%
- \WritePreamble
- \WriteOut{\DoubleperCent
- \ifx\batchLine\tmp\else\batchLine\fi}}%
- \fi
- \ifContinue\repeat
- \endgroup}
- \def\postamble{\begingroup
- \Continuetrue
- \def\Endpostamble{\endpostamble}%
- \def\tmp{\par}%
- \gdef\WritePostamble{}%
- \loop
- \read\currbatchFile to \batchLine
- \ifx\batchLine\Endpostamble \Continuefalse
- \else
- \xdef\WritePostamble{%
- \WritePostamble
- \WriteOut{\DoubleperCent
- \ifx\batchLine\tmp\else\batchLine\fi}}%
- \fi
- \ifContinue\repeat
- \endgroup}
- \def\processbatchFile{%
- \ifx\undefined\batchfile
- \let\batchfile\DefaultbatchFile
- \Defaulttrue
- \else
- \Defaultfalse
- \fi
- \openin\currbatchFile \batchfile\relax
- \ifeof\currbatchFile
- \ifDefault
- \else
- \Msg{**************************************************^^J%
- * Could not find your \string\batchfile=\batchfile^^J%
- * Try to continue without it^^J%
- **************************************************}%
- \fi
- \else
- \ifDefault
- \Msg{**************************************************^^J%
- * Batchfile \DefaultbatchFile\space found Use it? (y/n)?}%
- \Ask\answer{%
- **************************************************}%
- \else
- \let\answer\y
- \fi
- \ifx\answer\y
- \Continuetrue
- \let\endinput\Continuefalse
- \loop
- \ifeof\currbatchFile
- \Continuefalse
- \else
- \read\currbatchFile to \batchLine
- \batchLine
- \fi
- \ifContinue \repeat
- \fi
- \fi}
- \def\ReportTotals{%
- \ifnum\NumberOfFiles>\@ne
- \Msg{Overall statistics:^^J%
- Files \space processed: \the\NumberOfFiles^^J%
- Lines \space processed: \the\TotalprocessedLines^^J%
- Comments removed: \the\TotalcommentsRemoved^^J%
- Comments \space passed: \the\TotalcommentsPassed^^J%
- Codelines passed: \the\TotalcodeLinesPassed}%
- \fi}
- \def\SetFileNames{%
- \edef\inFileName{\MainFileName.\infileext}%
- \edef\outFileName{\MainFileName.\outfileext}}
- \def\CheckFileNames{%
- \ifx\inFileName\outFileName
- \Msg{^^J%
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J%
- ! It is not possible to read from and write to the same file !^^J%
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J}%
- \Continuefalse
- \else
- \Continuetrue
- \immediate\openin\inFile \inFileName\relax
- \ifeof\inFile
- \Msg{^^J%
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J%
- ! Your input file `\inFileName' was not found !^^J%
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J}%
- \Continuefalse
- \else
- \immediate\closein\inFile
- \immediate\openin\inFile\WriteToDir \outFileName\relax
- \ifeof\inFile
- \Continuetrue
- \else
- \Continuefalse
- \Ask\answer{File \WriteToDir\outFileName\space already
- exists
- \ifx\@empty\WriteToDir somewhere \fi
- on the system.^^J%
- Overwrite it%
- \ifx\@empty\WriteToDir\space if necessary\fi
- ? [y/n]}%
- \ifx\y \answer \Continuetrue \else
- \ifx\yes\answer \Continuetrue \else
- \fi\fi
- \fi
- \fi
- \fi
- \immediate\closein\inFile}
- \def\interactive{%
- \whileswitch\ifMoreFiles\fi%
- {\begingroup
- \AskQuestions
- \forlist\MainFileName:=\filelist
- \do
- \SetFileNames
- \CheckFileNames
- \ifContinue
- \immediate\openout\outFile\WriteToDir\outFileName\relax
- \WritePreamble
- \generateFileX
- \WritePostamble
- \immediate\closeout\outFile
- \fi%
- \od
- \endgroup
- \Ask\answer{More files to process (y/n)?}%
- \ifx\y \answer\MoreFilestrue \else
- \ifx\yes\answer\MoreFilestrue \else
- \MoreFilesfalse\fi\fi
- }}
- \def\AskQuestions{%
- \Msg{^^J%
- ****************************************************}%
- \Ask\infileext{%
- * First type the extension of your input file(s): \space *}%
- \Msg{****************************************************^^J^^J%
- ****************************************************}%
- \Ask\outfileext{%
- * Now type the extension of your output file(s) \space: *}%
- \Msg{****************************************************^^J^^J%
- ****************************************************}%
- \Ask\Options{%
- * Now type the name(s) of option(s) to include \space\space: *}%
- \Msg{****************************************************^^J^^J%
- ****************************************************^^J%
- * Finally give the list of input file(s) without \space\space*}%
- \Ask\filelist{%
- * extension seperated by commas if necessary %
- \space\space\space\space: *}%
- \Msg{****************************************************^^J}}%
- \Msg{Utility: `docstrip' \fileversion\space <\filedate>^^J%
- English documentation \space\space\space <\docdate>}%
- \Msg{^^J%
- **********************************************************^^J%
- * This program converts documented macro-files into fast *^^J%
- * loadable files by stripping off (nearly) all comments! *^^J%
- **********************************************************^^J}%
- \processbatchFile
- \ifnum\NumberOfFiles=\z@
- \interactive
- \fi
- \ReportTotals
- \end
- \endinput
- %%
- %% End of file `docstrip.tex'.
-