%% %% This is file `textmerg.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% textmerg.dtx (with options: `textmerg') %% %% Copyright (C) 1992,1994 Mike Piff, University of Sheffield, England %% %% You are not allowed to change this file. %% %% You are NOT ALLOWED to distribute this file alone. You are NOT %% ALLOWED to take money for the distribution or use of this %% file except for a nominal charge for copying etc. %% %% Please address any problems to: %% %% M.Piff@shef.ac.uk %% %% For updates, contact your nearest CTAN site. %% \def\fileversion{2.01} \def\filedate{1994/06/20} \def\filename{textmerg.dtx} \def\Copyright{Copyright (C) 1992,1994 Mike Piff, University of Sheffield, England} \NeedsTeXFormat{LaTeX2e}[1994/01/01] \ProvidesPackage{textmerg}[\filedate] \typeout{Package `textmerg' <\filedate>.} \typeout{\Copyright} \def\glet{\global\let} \newread\MergeFile \def\InputFile#1{% \openin\MergeFile=#1 \ifeof\MergeFile \errmessage{Empty merge file}% \closein\MergeFile \long\def\MakeTemplate##1{% \def\Template{}}% \else\GetInput\fi} \def\GetInput{{\endlinechar=-1 \global\read\MergeFile to\InputBuffer}} \def\SeeIfEof{% \let\NextLook\relax \ifeof\MergeFile \else \ifx\InputBuffer\empty \LookAgain \fi \fi \NextLook} \def\LookAgain{\GetInput \let\NextLook\SeeIfEof} \newif\ifNonBlank \NonBlankfalse \def\AllowBlank{\global\NonBlankfalse} \def\DontAllowBlank{\global\NonBlanktrue} \def\ReadIn#1{% \ifNonBlank\SeeIfEof\fi \ifeof\MergeFile \gdef#1{??}\MissingField \else \glet#1\InputBuffer \GetInput \fi} \def\MissingField{% \message{Missing field in file}} \newtoks\GlobalFields \def\Fields#1{\GlobalFields{#1}} \def\ParseFields#1{% \ifx#1\EndParseFields \let\NextParse\relax \else \let\NextParse\ParseFields \ifx#1+\DontAllowBlank \else \ifx#1-\AllowBlank \else\ReadIn#1 \fi \fi \fi\NextParse} \let\EndParseFields\ParseFields \def\ReadFields#1{\expandafter\ParseFields \the#1\EndParseFields \AllowBlank} \long\def\Merge#1#2{\begingroup% \InputFile{#1}% \def\Fields##1{% \ParseFields##1\EndParseFields}% \MakeTemplate{#2}\Iterate} \long\def\MakeTemplate#1{\def\Template{#1}} \countdef\Iteratecounter=2 \Iteratecounter=0 \def\Iterate{% \global\advance\Iteratecounter by1 \ReadFields\GlobalFields \Template \SeeIfEof \ifeof\MergeFile \def\NextIteration{% \endgroup\closein\MergeFile}% \else \let\NextIteration\Iterate \fi \NextIteration} \newcount\MultiCount \newcount\MaxCount \newif\ifStartOfList \def\MultiRead#1{% \ifnum#1>0 \SelectCR \MakeEmpty{#1}% \global\StartOfListtrue \glet\NextRead\MRead \AllowBlank \global\MaxCount=#1 \NextRead \fi} \newcount\Emptyctr \def\MakeEmpty#1{\Emptyctr=0 \loop \advance\Emptyctr by1 \expandafter\ifx\csname pr\the\Emptyctr\endcsname\relax \expandafter\glet\csname pr\the\Emptyctr\endcsname\empty \fi \ifnum\Emptyctr<#1 \repeat} \def\Process#1#2{% \expandafter\def\csname pr#1\endcsname##1{#2{##1}}} \def\MarkEnd#1{\gdef\EndMarker{#1}} \MarkEnd{} \newtoks\NextLine \newtoks\NextField \def\AppendNextField{% \global\advance\MultiCount1 \NextField=\expandafter{\TempField}% \edef\Append{\NextLine= {\the\NextLine&\csname pr\the\MultiCount\endcsname {\the\NextField}}}% \Append} \def\SelectCR{\glet\EndLine\\}% \def\FinishLine{% \ifStartOfList \global\StartOfListfalse \else\EndLine\fi} \def\StopProcessing{% \global\MultiCount\MaxCount \glet\NextRead\AllowBlank} \def\MRead{% \global\MultiCount=1 \ReadIn\TempField \ifx\TempField\EndMarker \StopProcessing \else \FinishLine \NextField=\expandafter{\TempField}% \edef\StartLine{\NextLine={\csname pr1\endcsname{\the\NextField}}}% \StartLine \ConstructNextRow \fi \NextRead} \def\ConstructNextRow{% \ifnum\MultiCount<\MaxCount \loop \ReadIn\TempField \ifx\TempField\EndMarker \glet\TempField\empty \StopProcessing \MissingField \else \ifeof\MergeFile \glet\TempField\empty \StopProcessing \MissingField \fi \fi \AppendNextField \ifnum\MultiCount<\MaxCount \repeat \fi \the\NextLine} \endinput %% %% End of file `textmerg.sty'.