diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-12 23:46:03 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-12 23:46:03 +0000 |
commit | 873660d1a83ece926fe7206288dda9c36b349c1b (patch) | |
tree | a48f77125c309a355b5d0eb58d6b24446abe9d62 /Master/texmf-dist/tex/generic/textmerg/textmerg.sty | |
parent | 2939242967231097459df0fc3150fabc2f639111 (diff) |
generic 1
git-svn-id: svn://tug.org/texlive/trunk@613 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/textmerg/textmerg.sty')
-rw-r--r-- | Master/texmf-dist/tex/generic/textmerg/textmerg.sty | 177 |
1 files changed, 177 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/textmerg/textmerg.sty b/Master/texmf-dist/tex/generic/textmerg/textmerg.sty new file mode 100644 index 00000000000..4157bfaf6d2 --- /dev/null +++ b/Master/texmf-dist/tex/generic/textmerg/textmerg.sty @@ -0,0 +1,177 @@ +%% +%% 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 +%% +%% This file is now placed in the public domain. You are encouraged to +%% distribute it together with the sources from which it was generated. +%% +\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'. |