diff options
Diffstat (limited to 'Master/texmf-dist/tex/plain/gustlib/map/map.tex')
-rw-r--r-- | Master/texmf-dist/tex/plain/gustlib/map/map.tex | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/plain/gustlib/map/map.tex b/Master/texmf-dist/tex/plain/gustlib/map/map.tex new file mode 100644 index 00000000000..779ef6ae3c7 --- /dev/null +++ b/Master/texmf-dist/tex/plain/gustlib/map/map.tex @@ -0,0 +1,63 @@ +% MAP.TEX + +% Marek Ry\'cko + +% Macro \map +% for applying operations to token sequences + +% uses SPLIT.TEX + +% version 0.0 24.07.1993 +% version 0.1 1.5.1996 +% -- english description + +\def\map + % for each element E of the token list #2 + % ``execute'' the token list #1 + % possibly making use of the following macros: + % \mappre the token list before E (without E) + % \mapcur the token E + % \mappost the token list after E (without E) + % \mapupto the token list from the beginning till and including E + % \mapfrom the token list from and including E till the end + % \mapent the entire token list + % + % -------------\mapent---------------- + % ---\mapfrom--------- + % ----\mapupto----- + % ................E................... + % ----\mappre----- ---\mappost-------- + % + % | + % | + % \mapcur + % + #1% operation + #2% token list + {{% + \def\mapent{#2}% + \def\mappre{}% + \let\mapfrom\mapent + % \mappre contains already processed sequence + % \mapfrom contains the sequence to be processed + % while nonempty \mapfrom do: + \ifx\empty\mapfrom \mapcontfalse \else \mapconttrue \fi + \loop \ifmapcont + % \mapfrom nonempty, so it can be split: + % split \mapfrom to head and tail: + \split\mapfrom\mapcur\mappost + % set \mapupto as the concatenation of \mappre and \mapcur: + \expandafter\expandafter\expandafter + \def\expandafter\expandafter\expandafter + \mapupto\expandafter\expandafter\expandafter + {\expandafter\mappre\mapcur}% + % execute operation(s): + #1% + % define new values of \mappre and \mapfrom + \expandafter\def\expandafter\mappre\expandafter{\mapupto}% + \expandafter\def\expandafter\mapfrom\expandafter{\mappost}% + % \mappre contains already processed sequence + % \mapfrom contains the sequence to be processed + \ifx\empty\mapfrom \mapcontfalse \else \mapconttrue \fi + \repeat}}% +\newif\ifmapcont |