diff options
author | Karl Berry <karl@freefriends.org> | 2013-12-18 22:00:14 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-12-18 22:00:14 +0000 |
commit | e715b1673cfe57d1b73e0298497daa2ed19f17af (patch) | |
tree | 1903e5fa3cdef12995050bf0064966c1fa097713 /Master/texmf-dist/tex/generic/xint/xinttools.sty | |
parent | dc42edf41fdf637675cb7d76876773c4ac5df883 (diff) |
xint (18dec13)
git-svn-id: svn://tug.org/texlive/trunk@32436 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/xint/xinttools.sty')
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xinttools.sty | 96 |
1 files changed, 70 insertions, 26 deletions
diff --git a/Master/texmf-dist/tex/generic/xint/xinttools.sty b/Master/texmf-dist/tex/generic/xint/xinttools.sty index 9b0414b32fa..945f73bf1b5 100644 --- a/Master/texmf-dist/tex/generic/xint/xinttools.sty +++ b/Master/texmf-dist/tex/generic/xint/xinttools.sty @@ -21,7 +21,7 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %%---------------------------------------------------------------- -%% The xint bundle (version 1.09h of November 28, 2013) +%% The xint bundle (version 1.09i of December 18, 2013) %% xinttools: Expandable and non-expandable utilities %% Copyright (C) 2013 by Jean-Francois Burnol %%---------------------------------------------------------------- @@ -120,7 +120,7 @@ \catcode40=12 % ( \catcode41=12 % ) \catcode47=12 % / - \catcode96=12 % ` + \catcode96=12 % ` (for ubiquitous \romannumeral-`0 and some \catcode ) \catcode94=11 % ^ \catcode36=3 % $ \catcode91=12 % [ @@ -150,7 +150,7 @@ \fi \XINT_providespackage \ProvidesPackage {xinttools}% - [2013/11/28 v1.09h Expandable and non-expandable utilities (jfB)]% + [2013/12/18 v1.09i Expandable and non-expandable utilities (jfB)]% \long\def\xint_gobble_ {}% \long\def\xint_gobble_i #1{}% \long\def\xint_gobble_ii #1#2{}% @@ -164,9 +164,9 @@ \xint_firstofone{\let\XINT_sptoken= } %<- space here! \long\def\xint_firstoftwo #1#2{#1}% \long\def\xint_secondoftwo #1#2{#2}% -\long\def\xint_firstoftwo_andstop #1#2{ #1}% -\long\def\xint_secondoftwo_andstop #1#2{ #2}% -\def\xint_minus_andstop { -}% +\long\def\xint_firstoftwo_afterstop #1#2{ #1}% +\long\def\xint_secondoftwo_afterstop #1#2{ #2}% +\def\xint_minus_afterstop { -}% \long\def\xint_gob_til_R #1\R {}% \long\def\xint_gob_til_W #1\W {}% \long\def\xint_gob_til_Z #1\Z {}% @@ -178,6 +178,18 @@ \chardef\xint_c_ 0 \chardef\xint_c_viii 8 \newtoks\XINT_toks +\def\XINT_odef #1{\expandafter\def\expandafter#1\expandafter }% +\ifdefined\odef\else\let\odef\XINT_odef\fi +\def\XINT_godef {\global\XINT_odef }% +\def\XINT_oodef #1{\expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter#1% + \expandafter\expandafter\expandafter }% +\ifdefined\oodef\else\let\oodef\XINT_oodef\fi +\def\XINT_goodef {\global\XINT_oodef }% +\def\XINT_fdef #1#2{\expandafter\def\expandafter#1\expandafter + {\romannumeral-`0#2}}% +\ifdefined\fdef\else\let\fdef\XINT_fdef\fi +\def\XINT_gfdef {\global\XINT_fdef }% \def\xintReverseOrder {\romannumeral0\xintreverseorder }% \long\def\xintreverseorder #1% {% @@ -192,9 +204,9 @@ \xint_bye #9\XINT_rord_cleanup\xint_bye \XINT_rord_main {#9#8#7#6#5#4#3#2#1}% }% -\long\def\XINT_rord_cleanup\xint_bye\XINT_rord_main #1#2\xint_relax +\long\edef\XINT_rord_cleanup\xint_bye\XINT_rord_main #1#2\xint_relax {% - \expandafter\space\xint_gob_til_xint_relax #1% + \noexpand\expandafter\space\noexpand\xint_gob_til_xint_relax #1% }% \def\xintRevWithBraces {\romannumeral0\xintrevwithbraces }% \def\xintRevWithBracesNoExpand {\romannumeral0\xintrevwithbracesnoexpand }% @@ -266,7 +278,8 @@ #7\XINT_length_finish_c 2% \W\XINT_length_finish_c 1\Z }% -\def\XINT_length_finish_c #1#2\Z #3{\expandafter\space\the\numexpr #3-#1\relax}% +\edef\XINT_length_finish_c #1#2\Z #3% + {\noexpand\expandafter\space\noexpand\the\numexpr #3-#1\relax}% \def\xintZapFirstSpaces {\romannumeral0\xintzapfirstspaces }% \long\edef\xintzapfirstspaces #1% {\noexpand\XINT_zapbsp_a \space #1\space\space\noexpand\xint_bye\xint_relax }% @@ -452,9 +465,9 @@ \expandafter\expandafter\expandafter\XINT_nthelt_finish \csname xint_gobble_\romannumeral\numexpr#1-1\endcsname }% -\long\def\XINT_nthelt_finish #1#2\xint_bye - {\xint_gob_til_xint_relax #1\expandafter\space - \xint_gobble_iii\xint_relax\space #1}% +\long\edef\XINT_nthelt_finish #1#2\xint_bye + {\noexpand\xint_gob_til_xint_relax #1\noexpand\expandafter\space + \noexpand\xint_gobble_iii\xint_relax\space #1}% \def\xintApply {\romannumeral0\xintapply }% \def\xintApplyNoExpand {\romannumeral0\xintapplynoexpand }% \long\def\xintapply #1#2% @@ -509,7 +522,7 @@ \def\XINT_seq #1#2% {% \ifcase\ifnum #1=#2 0\else\ifnum #2>#1 1\else -1\fi\fi\space - \expandafter\xint_firstoftwo_andstop + \expandafter\xint_firstoftwo_afterstop \or \expandafter\XINT_seq_p \else @@ -935,27 +948,41 @@ }% \catcode`Z 11 \catcode`j 11 -\long\def\xintAssign #1\to +\def\xintAssign{\def\XINT_flet_macro {\XINT_assign_fork}\XINT_flet_zapsp }% +\def\XINT_assign_fork {% - \expandafter\XINT_assign_a\romannumeral-`0#1{}\to + \let\XINT_assign_def\edef + \ifx\XINT_token[\expandafter\XINT_assign_opt + \else\expandafter\XINT_assign_a + \fi +}% +\def\XINT_assign_opt [#1]% +{% + \expandafter\let\expandafter\XINT_assign_def \csname XINT_#1def\endcsname + \XINT_assign_a +}% +\long\def\XINT_assign_a #1\to +{% + \expandafter\XINT_assign_b\romannumeral-`0#1{}\to }% -\long\def\XINT_assign_a #1% attention to the # at the beginning of next line +\long\def\XINT_assign_b #1% attention to the # at the beginning of next line #{% \def\xint_temp {#1}% \ifx\empty\xint_temp - \expandafter\XINT_assign_b + \expandafter\XINT_assign_c \else - \expandafter\XINT_assign_B + \expandafter\XINT_assign_d \fi }% -\long\def\XINT_assign_b #1#2\to #3% +\long\def\XINT_assign_c #1#2\to #3% {% - \edef #3{#1}\def\xint_temp {#2}% - \unless\ifx\empty\xint_temp\xint_afterfi{\XINT_assign_a #2\to }\fi + \XINT_assign_def #3{#1}% + \def\xint_temp {#2}% + \unless\ifx\empty\xint_temp\xint_afterfi{\XINT_assign_b #2\to }\fi }% -\def\XINT_assign_B #1\to #2% +\def\XINT_assign_d #1\to #2% normally #1 is {} here. {% - \edef #2{\xint_temp}% + \expandafter\XINT_assign_def\expandafter #2\expandafter{\xint_temp}% }% \def\xintRelaxArray #1% {% @@ -971,7 +998,22 @@ \global\expandafter\let\csname\xint_arrayname 00\endcsname\relax \global\let #1\relax }% -\long\def\xintAssignArray #1\to #2% +\def\xintAssignArray{\def\XINT_flet_macro {\XINT_assignarray_fork}% + \XINT_flet_zapsp }% +\def\XINT_assignarray_fork +{% + \let\XINT_assignarray_def\edef + \ifx\XINT_token[\expandafter\XINT_assignarray_opt + \else\expandafter\XINT_assignarray + \fi +}% +\def\XINT_assignarray_opt [#1]% +{% + \expandafter\let\expandafter\XINT_assignarray_def + \csname XINT_#1def\endcsname + \XINT_assignarray +}% +\long\def\XINT_assignarray #1\to #2% {% \edef\XINT_restoreescapechar {\escapechar\the\escapechar\relax }% \escapechar -1 @@ -993,8 +1035,9 @@ \else \expandafter\def\expandafter\xint_itemcount\expandafter {\the\numexpr\xint_itemcount+\xint_c_i}% - \expandafter\edef - \csname\xint_arrayname\xint_itemcount\endcsname {\xint_temp }% + \expandafter\XINT_assignarray_def + \csname\xint_arrayname\xint_itemcount\expandafter\endcsname + \expandafter{\xint_temp }% \expandafter\XINT_assignarray_loop \fi }% @@ -1019,6 +1062,7 @@ }% }% \let\xintDigitsOf\xintAssignArray +\let\XINT_tmpa\relax \let\XINT_tmpb\relax \let\XINT_tmpc\relax \XINT_restorecatcodes_endinput% \endinput %% |