summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/textmerg/textmerg.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-12 23:46:03 +0000
committerKarl Berry <karl@freefriends.org>2006-01-12 23:46:03 +0000
commit873660d1a83ece926fe7206288dda9c36b349c1b (patch)
treea48f77125c309a355b5d0eb58d6b24446abe9d62 /Master/texmf-dist/tex/generic/textmerg/textmerg.sty
parent2939242967231097459df0fc3150fabc2f639111 (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.sty177
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'.