diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/xint/xinttools.sty')
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xinttools.sty | 300 |
1 files changed, 142 insertions, 158 deletions
diff --git a/Master/texmf-dist/tex/generic/xint/xinttools.sty b/Master/texmf-dist/tex/generic/xint/xinttools.sty index 9e2fad8b5d6..17150430247 100644 --- a/Master/texmf-dist/tex/generic/xint/xinttools.sty +++ b/Master/texmf-dist/tex/generic/xint/xinttools.sty @@ -22,7 +22,7 @@ %% in the same archive or directory.) %% %%---------------------------------------------------------------- -%% The xint bundle (version 1.09g of November 22, 2013) +%% The xint bundle (version 1.09h of November 28, 2013) %% xinttools: Expandable and non-expandable utilities %% Copyright (C) 2013 by Jean-Francois Burnol %%---------------------------------------------------------------- @@ -152,37 +152,36 @@ \fi \XINT_providespackage \ProvidesPackage {xinttools}% - [2013/11/22 v1.09g Expandable and non-expandable utilities (jfB)]% -\def\xint_gobble_ {}% -\def\xint_gobble_i #1{}% -\def\xint_gobble_ii #1#2{}% -\def\xint_gobble_iii #1#2#3{}% -\def\xint_gobble_iv #1#2#3#4{}% -\def\xint_gobble_v #1#2#3#4#5{}% -\def\xint_gobble_vi #1#2#3#4#5#6{}% -\def\xint_gobble_vii #1#2#3#4#5#6#7{}% -\def\xint_gobble_viii #1#2#3#4#5#6#7#8{}% -\long\def\xint_firstofone #1{#1}% long since 1.09f, 2013/11/01 -\xint_firstofone{\let\XINT_sptoken= } % 1.09d, 2013/10/22 -\long\def\xint_firstoftwo #1#2{#1}% long since 1.09e, 2013/10/28 -\long\def\xint_secondoftwo #1#2{#2}% idem -\def\xint_firstoftwo_andstop #1#2{ #1}% -\def\xint_secondoftwo_andstop #1#2{ #2}% + [2013/11/28 v1.09h Expandable and non-expandable utilities (jfB)]% +\long\def\xint_gobble_ {}% +\long\def\xint_gobble_i #1{}% +\long\def\xint_gobble_ii #1#2{}% +\long\def\xint_gobble_iii #1#2#3{}% +\long\def\xint_gobble_iv #1#2#3#4{}% +\long\def\xint_gobble_v #1#2#3#4#5{}% +\long\def\xint_gobble_vi #1#2#3#4#5#6{}% +\long\def\xint_gobble_vii #1#2#3#4#5#6#7{}% +\long\def\xint_gobble_viii #1#2#3#4#5#6#7#8{}% +\long\def\xint_firstofone #1{#1}% +\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 { -}% -\def\xint_gob_til_R #1\R {}% -\def\xint_gob_til_W #1\W {}% -\def\xint_gob_til_Z #1\Z {}% -\long\def\xint_bye #1\xint_bye {}% long since 1.09f +\long\def\xint_gob_til_R #1\R {}% +\long\def\xint_gob_til_W #1\W {}% +\long\def\xint_gob_til_Z #1\Z {}% +\long\def\xint_bye #1\xint_bye {}% \let\xint_relax\relax \def\xint_brelax {\xint_relax }% -\long\def\xint_gob_til_xint_relax #1\xint_relax {}% long since 1.09f -\def\xint_afterfi #1#2\fi {\fi #1}% +\long\def\xint_gob_til_xint_relax #1\xint_relax {}% +\long\def\xint_afterfi #1#2\fi {\fi #1}% \chardef\xint_c_ 0 \chardef\xint_c_viii 8 \newtoks\XINT_toks -\newcount\XINT_count % 1.09g: \xintFor from 1.09f modified \count 255 :-( \def\xintReverseOrder {\romannumeral0\xintreverseorder }% -\def\xintreverseorder #1% +\long\def\xintreverseorder #1% {% \XINT_rord_main {}#1% \xint_relax @@ -190,35 +189,35 @@ \xint_bye\xint_bye\xint_bye\xint_bye \xint_relax }% -\def\XINT_rord_main #1#2#3#4#5#6#7#8#9% +\long\def\XINT_rord_main #1#2#3#4#5#6#7#8#9% {% \xint_bye #9\XINT_rord_cleanup\xint_bye \XINT_rord_main {#9#8#7#6#5#4#3#2#1}% }% -\def\XINT_rord_cleanup\xint_bye\XINT_rord_main #1#2\xint_relax +\long\def\XINT_rord_cleanup\xint_bye\XINT_rord_main #1#2\xint_relax {% \expandafter\space\xint_gob_til_xint_relax #1% }% \def\xintRevWithBraces {\romannumeral0\xintrevwithbraces }% \def\xintRevWithBracesNoExpand {\romannumeral0\xintrevwithbracesnoexpand }% -\def\xintrevwithbraces #1% +\long\def\xintrevwithbraces #1% {% \expandafter\XINT_revwbr_loop\expandafter{\expandafter}% \romannumeral-`0#1\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye }% -\def\xintrevwithbracesnoexpand #1% +\long\def\xintrevwithbracesnoexpand #1% {% \XINT_revwbr_loop {}% #1\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye }% -\def\XINT_revwbr_loop #1#2#3#4#5#6#7#8#9% +\long\def\XINT_revwbr_loop #1#2#3#4#5#6#7#8#9% {% \xint_gob_til_xint_relax #9\XINT_revwbr_finish_a\xint_relax \XINT_revwbr_loop {{#9}{#8}{#7}{#6}{#5}{#4}{#3}{#2}#1}% }% -\def\XINT_revwbr_finish_a\xint_relax\XINT_revwbr_loop #1#2\xint_bye +\long\def\XINT_revwbr_finish_a\xint_relax\XINT_revwbr_loop #1#2\xint_bye {% \XINT_revwbr_finish_b #2\R\R\R\R\R\R\R\Z #1% }% @@ -241,13 +240,13 @@ \csname xint_gobble_\romannumeral #1\endcsname }% \def\xintLength {\romannumeral0\xintlength }% -\def\xintlength #1% +\long\def\xintlength #1% {% \XINT_length_loop {0}#1\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye }% -\def\XINT_length_loop #1#2#3#4#5#6#7#8#9% +\long\def\XINT_length_loop #1#2#3#4#5#6#7#8#9% {% \xint_gob_til_xint_relax #9\XINT_length_finish_a\xint_relax \expandafter\XINT_length_loop\expandafter {\the\numexpr #1+8\relax}% @@ -271,81 +270,83 @@ }% \def\XINT_length_finish_c #1#2\Z #3{\expandafter\space\the\numexpr #3-#1\relax}% \def\xintZapFirstSpaces {\romannumeral0\xintzapfirstspaces }% -\edef\xintzapfirstspaces #1% +\long\edef\xintzapfirstspaces #1% {\noexpand\XINT_zapbsp_a \space #1\space\space\noexpand\xint_bye\xint_relax }% -\xint_firstofone {\def\XINT_zapbsp_a #1 } %<- space token here +\xint_firstofone {\long\def\XINT_zapbsp_a #1 } %<- space token here {% \XINT_zapbsp_again? #1\xint_bye\XINT_zapbsp_b {#1}% }% -\def\XINT_zapbsp_again? #1{\xint_bye #1\XINT_zapbsp_again }% +\long\def\XINT_zapbsp_again? #1{\xint_bye #1\XINT_zapbsp_again }% \edef\XINT_zapbsp_again\XINT_zapbsp_b #1{\noexpand\XINT_zapbsp_a\space }% -\def\XINT_zapbsp_b #1#2\xint_relax +\long\def\XINT_zapbsp_b #1#2\xint_relax {\XINT_zapbsp_end? #2\XINT_zapbsp_e\empty #2{#1}}% -\def\XINT_zapbsp_end? #1{\xint_bye #1\XINT_zapbsp_end }% -\def\XINT_zapbsp_end\XINT_zapbsp_e\empty #1\xint_bye #2{#2#1}% -\xint_firstofone{\def\XINT_zapbsp_e #1 } \xint_bye +\long\def\XINT_zapbsp_end? #1{\xint_bye #1\XINT_zapbsp_end }% +\long\def\XINT_zapbsp_end\XINT_zapbsp_e\empty #1\xint_bye #2{#2#1}% +\xint_firstofone{\long\def\XINT_zapbsp_e #1 } \xint_bye {\expandafter\XINT_zapbsp_f \expandafter{#1}}% -\edef\XINT_zapbsp_f #1#2{#2\space\space #1}% +\long\edef\XINT_zapbsp_f #1#2{#2\space\space #1}% \def\xintZapLastSpaces {\romannumeral0\xintzaplastspaces }% -\edef\xintzaplastspaces #1{\noexpand\XINT_zapesp_a {\space}\noexpand\empty +\long\edef\xintzaplastspaces #1{\noexpand\XINT_zapesp_a {\space}\noexpand\empty #1\space\space\noexpand\xint_bye \xint_relax}% -\xint_firstofone {\def\XINT_zapesp_a #1#2 } %<- second space here +\xint_firstofone {\long\def\XINT_zapesp_a #1#2 } %<- second space here {\expandafter\XINT_zapesp_b\expandafter{#2}{#1}}% -\def\XINT_zapesp_b #1#2#3\xint_relax +\long\def\XINT_zapesp_b #1#2#3\xint_relax {\XINT_zapesp_end? #3\XINT_zapesp_e {#2#1}\empty #3\xint_relax }% -\def\XINT_zapesp_end? #1{\xint_bye #1\XINT_zapesp_end }% -\def\XINT_zapesp_end\XINT_zapesp_e #1#2\xint_relax {#1}% -\edef\XINT_zapesp_e #1{\noexpand \XINT_zapesp_a {#1\space\space}}% +\long\def\XINT_zapesp_end? #1{\xint_bye #1\XINT_zapesp_end }% +\long\def\XINT_zapesp_end\XINT_zapesp_e #1#2\xint_relax {#1}% +\long\edef\XINT_zapesp_e #1{\noexpand \XINT_zapesp_a {#1\space\space}}% \def\xintZapSpaces {\romannumeral0\xintzapspaces }% -\edef\xintzapspaces #1% +\long\edef\xintzapspaces #1% {\noexpand\XINT_zapsp_a \space #1\space\space\noexpand\xint_bye\xint_relax}% -\xint_firstofone {\def\XINT_zapsp_a #1 } %<- space token here +\xint_firstofone {\long\def\XINT_zapsp_a #1 } %<- space token here {% \XINT_zapsp_again? #1\xint_bye\XINT_zapesp_b {#1}{}% }% -\def\XINT_zapsp_again? #1{\xint_bye #1\XINT_zapsp_again }% -\edef\XINT_zapsp_again\XINT_zapesp_b #1#2{\noexpand\XINT_zapsp_a\space }% +\long\def\XINT_zapsp_again? #1{\xint_bye #1\XINT_zapsp_again }% +\long\edef\XINT_zapsp_again\XINT_zapesp_b #1#2{\noexpand\XINT_zapsp_a\space }% \def\xintZapSpacesB {\romannumeral0\xintzapspacesb }% -\def\xintzapspacesb #1{\XINT_zapspb_one? #1\xint_relax\xint_relax +\long\def\xintzapspacesb #1{\XINT_zapspb_one? #1\xint_relax\xint_relax \xint_bye\xintzapspaces {#1}}% -\def\XINT_zapspb_one? #1#2% +\long\def\XINT_zapspb_one? #1#2% {\xint_gob_til_xint_relax #1\XINT_zapspb_onlyspaces\xint_relax \xint_gob_til_xint_relax #2\XINT_zapspb_bracedorone\xint_relax \xint_bye {#1}}% \def\XINT_zapspb_onlyspaces\xint_relax \xint_gob_til_xint_relax\xint_relax\XINT_zapspb_bracedorone\xint_relax \xint_bye #1\xint_bye\xintzapspaces #2{ }% -\def\XINT_zapspb_bracedorone\xint_relax +\long\def\XINT_zapspb_bracedorone\xint_relax \xint_bye #1\xint_relax\xint_bye\xintzapspaces #2{ #1}% \def\xintCSVtoList {\romannumeral0\xintcsvtolist }% -\def\xintcsvtolist #1{\expandafter\xintApply\expandafter\xintzapspacesb +\long\def\xintcsvtolist #1{\expandafter\xintApply + \expandafter\xintzapspacesb \expandafter{\romannumeral0\xintcsvtolistnonstripped{#1}}}% \def\xintCSVtoListNoExpand {\romannumeral0\xintcsvtolistnoexpand }% -\def\xintcsvtolistnoexpand #1{\expandafter\xintApply\expandafter\xintzapspacesb +\long\def\xintcsvtolistnoexpand #1{\expandafter\xintApply + \expandafter\xintzapspacesb \expandafter{\romannumeral0\xintcsvtolistnonstrippednoexpand{#1}}}% \def\xintCSVtoListNonStripped {\romannumeral0\xintcsvtolistnonstripped }% \def\xintCSVtoListNonStrippedNoExpand {\romannumeral0\xintcsvtolistnonstrippednoexpand }% -\def\xintcsvtolistnonstripped #1% +\long\def\xintcsvtolistnonstripped #1% {% \expandafter\XINT_csvtol_loop_a\expandafter {\expandafter}\romannumeral-`0#1% ,\xint_bye,\xint_bye,\xint_bye,\xint_bye ,\xint_bye,\xint_bye,\xint_bye,\xint_bye,\Z }% -\def\xintcsvtolistnonstrippednoexpand #1% +\long\def\xintcsvtolistnonstrippednoexpand #1% {% \XINT_csvtol_loop_a {}#1,\xint_bye,\xint_bye,\xint_bye,\xint_bye ,\xint_bye,\xint_bye,\xint_bye,\xint_bye,\Z }% -\def\XINT_csvtol_loop_a #1#2,#3,#4,#5,#6,#7,#8,#9,% +\long\def\XINT_csvtol_loop_a #1#2,#3,#4,#5,#6,#7,#8,#9,% {% \xint_bye #9\XINT_csvtol_finish_a\xint_bye \XINT_csvtol_loop_b {#1}{{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}}% }% -\def\XINT_csvtol_loop_b #1#2{\XINT_csvtol_loop_a {#1#2}}% -\def\XINT_csvtol_finish_a\xint_bye\XINT_csvtol_loop_b #1#2#3\Z +\long\def\XINT_csvtol_loop_b #1#2{\XINT_csvtol_loop_a {#1#2}}% +\long\def\XINT_csvtol_finish_a\xint_bye\XINT_csvtol_loop_b #1#2#3\Z {% \XINT_csvtol_finish_b #3\R,\R,\R,\R,\R,\R,\R,\Z #2{#1}% }% @@ -365,14 +366,15 @@ {% \csname XINT_csvtol_finish_d\romannumeral #1\endcsname }% -\def\XINT_csvtol_finish_dviii #1#2#3#4#5#6#7#8#9{ #9}% -\def\XINT_csvtol_finish_dvii #1#2#3#4#5#6#7#8#9{ #9{#1}}% -\def\XINT_csvtol_finish_dvi #1#2#3#4#5#6#7#8#9{ #9{#1}{#2}}% -\def\XINT_csvtol_finish_dv #1#2#3#4#5#6#7#8#9{ #9{#1}{#2}{#3}}% -\def\XINT_csvtol_finish_div #1#2#3#4#5#6#7#8#9{ #9{#1}{#2}{#3}{#4}}% -\def\XINT_csvtol_finish_diii #1#2#3#4#5#6#7#8#9{ #9{#1}{#2}{#3}{#4}{#5}}% -\def\XINT_csvtol_finish_dii #1#2#3#4#5#6#7#8#9{ #9{#1}{#2}{#3}{#4}{#5}{#6}}% -\def\XINT_csvtol_finish_di #1#2#3#4#5#6#7#8#9% +\long\def\XINT_csvtol_finish_dviii #1#2#3#4#5#6#7#8#9{ #9}% +\long\def\XINT_csvtol_finish_dvii #1#2#3#4#5#6#7#8#9{ #9{#1}}% +\long\def\XINT_csvtol_finish_dvi #1#2#3#4#5#6#7#8#9{ #9{#1}{#2}}% +\long\def\XINT_csvtol_finish_dv #1#2#3#4#5#6#7#8#9{ #9{#1}{#2}{#3}}% +\long\def\XINT_csvtol_finish_div #1#2#3#4#5#6#7#8#9{ #9{#1}{#2}{#3}{#4}}% +\long\def\XINT_csvtol_finish_diii #1#2#3#4#5#6#7#8#9{ #9{#1}{#2}{#3}{#4}{#5}}% +\long\def\XINT_csvtol_finish_dii #1#2#3#4#5#6#7#8#9% + { #9{#1}{#2}{#3}{#4}{#5}{#6}}% +\long\def\XINT_csvtol_finish_di #1#2#3#4#5#6#7#8#9% { #9{#1}{#2}{#3}{#4}{#5}{#6}{#7}}% \def\xintListWithSep {\romannumeral0\xintlistwithsep }% \def\xintListWithSepNoExpand {\romannumeral0\xintlistwithsepnoexpand }% @@ -403,7 +405,7 @@ {% \expandafter\XINT_ntheltnoexpand_a\expandafter {\the\numexpr #1}% }% -\def\XINT_nthelt_a #1#2% +\long\def\XINT_nthelt_a #1#2% {% \ifnum #1<0 \xint_afterfi{\expandafter\XINT_nthelt_c\expandafter @@ -413,7 +415,7 @@ {\romannumeral-`0#2}{#1}}% \fi }% -\def\XINT_ntheltnoexpand_a #1#2% +\long\def\XINT_ntheltnoexpand_a #1#2% {% \ifnum #1<0 \xint_afterfi{\expandafter\XINT_nthelt_c\expandafter @@ -423,7 +425,7 @@ {#2}{#1}}% \fi }% -\def\XINT_nthelt_c #1#2% +\long\def\XINT_nthelt_c #1#2% {% \ifnum #2>\xint_c_ \expandafter\XINT_nthelt_loop_a @@ -441,7 +443,7 @@ \fi {#1}% }% -\def\XINT_nthelt_loop_b #1#2#3#4#5#6#7#8#9% +\long\def\XINT_nthelt_loop_b #1#2#3#4#5#6#7#8#9% {% \xint_gob_til_xint_relax #9\XINT_nthelt_silentend\xint_relax \expandafter\XINT_nthelt_loop_a\expandafter{\the\numexpr #1-8}% @@ -452,46 +454,46 @@ \expandafter\expandafter\expandafter\XINT_nthelt_finish \csname xint_gobble_\romannumeral\numexpr#1-1\endcsname }% -\def\XINT_nthelt_finish #1#2\xint_bye +\long\def\XINT_nthelt_finish #1#2\xint_bye {\xint_gob_til_xint_relax #1\expandafter\space \xint_gobble_iii\xint_relax\space #1}% \def\xintApply {\romannumeral0\xintapply }% \def\xintApplyNoExpand {\romannumeral0\xintapplynoexpand }% -\def\xintapply #1#2% +\long\def\xintapply #1#2% {% \expandafter\XINT_apply\expandafter {\romannumeral-`0#2}% {#1}% }% -\def\XINT_apply #1#2{\XINT_apply_loop_a {}{#2}#1\xint_bye }% -\def\xintapplynoexpand #1#2{\XINT_apply_loop_a {}{#1}#2\xint_bye }% -\def\XINT_apply_loop_a #1#2#3% +\long\def\XINT_apply #1#2{\XINT_apply_loop_a {}{#2}#1\xint_bye }% +\long\def\xintapplynoexpand #1#2{\XINT_apply_loop_a {}{#1}#2\xint_bye }% +\long\def\XINT_apply_loop_a #1#2#3% {% \xint_bye #3\XINT_apply_end\xint_bye \expandafter \XINT_apply_loop_b \expandafter {\romannumeral-`0#2{#3}}{#1}{#2}% }% -\def\XINT_apply_loop_b #1#2{\XINT_apply_loop_a {#2{#1}}}% -\def\XINT_apply_end\xint_bye\expandafter\XINT_apply_loop_b +\long\def\XINT_apply_loop_b #1#2{\XINT_apply_loop_a {#2{#1}}}% +\long\def\XINT_apply_end\xint_bye\expandafter\XINT_apply_loop_b \expandafter #1#2#3{ #2}% \def\xintApplyUnbraced {\romannumeral0\xintapplyunbraced }% \def\xintApplyUnbracedNoExpand {\romannumeral0\xintapplyunbracednoexpand }% -\def\xintapplyunbraced #1#2% +\long\def\xintapplyunbraced #1#2% {% \expandafter\XINT_applyunbr\expandafter {\romannumeral-`0#2}% {#1}% }% -\def\XINT_applyunbr #1#2{\XINT_applyunbr_loop_a {}{#2}#1\xint_bye }% -\def\xintapplyunbracednoexpand #1#2% +\long\def\XINT_applyunbr #1#2{\XINT_applyunbr_loop_a {}{#2}#1\xint_bye }% +\long\def\xintapplyunbracednoexpand #1#2% {\XINT_applyunbr_loop_a {}{#1}#2\xint_bye }% -\def\XINT_applyunbr_loop_a #1#2#3% +\long\def\XINT_applyunbr_loop_a #1#2#3% {% \xint_bye #3\XINT_applyunbr_end\xint_bye \expandafter\XINT_applyunbr_loop_b \expandafter {\romannumeral-`0#2{#3}}{#1}{#2}% }% -\def\XINT_applyunbr_loop_b #1#2{\XINT_applyunbr_loop_a {#2#1}}% -\def\XINT_applyunbr_end\xint_bye\expandafter\XINT_applyunbr_loop_b +\long\def\XINT_applyunbr_loop_b #1#2{\XINT_applyunbr_loop_a {#2#1}}% +\long\def\XINT_applyunbr_end\xint_bye\expandafter\XINT_applyunbr_loop_b \expandafter #1#2#3{ #2}% \def\xintSeq {\romannumeral0\xintseq }% \def\xintseq #1{\XINT_seq_chkopt #1\xint_bye }% @@ -508,7 +510,7 @@ }% \def\XINT_seq #1#2% {% - \ifcase\xintiiSgn{\the\numexpr #2-#1\relax} + \ifcase\ifnum #1=#2 0\else\ifnum #2>#1 1\else -1\fi\fi\space \expandafter\xint_firstoftwo_andstop \or \expandafter\XINT_seq_p @@ -545,7 +547,7 @@ }% \def\XINT_seqo #1#2% {% - \ifcase\xintiiSgn{\the\numexpr #2-#1\relax} + \ifcase\ifnum #1=#2 0\else\ifnum #2>#1 1\else -1\fi\fi\space \expandafter\XINT_seqo_a \or \expandafter\XINT_seqo_pa @@ -558,12 +560,12 @@ \def\XINT_seqo_o #1#2#3#4{ #4}% \def\XINT_seqo_pa #1#2#3% {% - \ifcase\XINT_Sgn {#3} - \expandafter\XINT_seqo_o + \ifcase\ifnum #3=\xint_c_ 0\else\ifnum #3>\xint_c_ 1\else -1\fi\fi\space + \expandafter\XINT_seqo_o \or - \expandafter\XINT_seqo_pb + \expandafter\XINT_seqo_pb \else - \xint_afterfi{\expandafter\space\xint_gobble_iv}% + \xint_afterfi{\expandafter\space\xint_gobble_iv}% \fi {#1}{#2}{#3}{{#1}}% }% @@ -573,7 +575,7 @@ }% \def\XINT_seqo_pc #1#2% {% - \ifnum#1>#2 + \ifnum #1>#2 \expandafter\XINT_seqo_o \else \expandafter\XINT_seqo_pd @@ -583,7 +585,7 @@ \def\XINT_seqo_pd #1#2#3#4{\XINT_seqo_pb {#1}{#2}{#3}{#4{#1}}}% \def\XINT_seqo_na #1#2#3% {% - \ifcase\XINT_Sgn {#3} + \ifcase\ifnum #3=\xint_c_ 0\else\ifnum #3>\xint_c_ 1\else -1\fi\fi\space \expandafter\XINT_seqo_o \or \xint_afterfi{\expandafter\space\xint_gobble_iv}% @@ -598,7 +600,7 @@ }% \def\XINT_seqo_nc #1#2% {% - \ifnum#1<#2 + \ifnum #1<#2 \expandafter\XINT_seqo_o \else \expandafter\XINT_seqo_nd @@ -606,31 +608,32 @@ {#1}{#2}% }% \def\XINT_seqo_nd #1#2#3#4{\XINT_seqo_nb {#1}{#2}{#3}{#4{#1}}}% -\def\xintloop #1#2\repeat {#1#2\xintloop_again\fi\xint_gobble_i {#1#2}}% -\def\xintloop_again\fi\xint_gobble_i #1{\fi +\long\def\xintloop #1#2\repeat {#1#2\xintloop_again\fi\xint_gobble_i {#1#2}}% +\long\def\xintloop_again\fi\xint_gobble_i #1{\fi #1\xintloop_again\fi\xint_gobble_i {#1}}% -\def\xintbreakloop #1\xintloop_again\fi\xint_gobble_i #2{}% -\def\xintbreakloopanddo #1#2\xintloop_again\fi\xint_gobble_i #3{#1}% -\def\xintloopskiptonext #1\xintloop_again\fi\xint_gobble_i #2{% +\long\def\xintbreakloop #1\xintloop_again\fi\xint_gobble_i #2{}% +\long\def\xintbreakloopanddo #1#2\xintloop_again\fi\xint_gobble_i #3{#1}% +\long\def\xintloopskiptonext #1\xintloop_again\fi\xint_gobble_i #2{% #2\xintloop_again\fi\xint_gobble_i {#2}}% \def\xintiloop [#1+#2]{% \expandafter\xintiloop_a\the\numexpr #1\expandafter.\the\numexpr #2.}% -\def\xintiloop_a #1.#2.#3#4\repeat{% +\long\def\xintiloop_a #1.#2.#3#4\repeat{% #3#4\xintiloop_again\fi\xint_gobble_iii {#1}{#2}{#3#4}}% \def\xintiloop_again\fi\xint_gobble_iii #1#2{% \fi\expandafter\xintiloop_again_b\the\numexpr#1+#2.#2.}% -\def\xintiloop_again_b #1.#2.#3{% +\long\def\xintiloop_again_b #1.#2.#3{% #3\xintiloop_again\fi\xint_gobble_iii {#1}{#2}{#3}}% -\def\xintbreakiloop #1\xintiloop_again\fi\xint_gobble_iii #2#3#4{}% -\def\xintbreakiloopanddo #1.#2\xintiloop_again\fi\xint_gobble_iii #3#4#5{#1}% -\def\xintiloopindex #1\xintiloop_again\fi\xint_gobble_iii #2% +\long\def\xintbreakiloop #1\xintiloop_again\fi\xint_gobble_iii #2#3#4{}% +\long\def\xintbreakiloopanddo + #1.#2\xintiloop_again\fi\xint_gobble_iii #3#4#5{#1}% +\long\def\xintiloopindex #1\xintiloop_again\fi\xint_gobble_iii #2% {#2#1\xintiloop_again\fi\xint_gobble_iii {#2}}% -\def\xintouteriloopindex #1\xintiloop_again +\long\def\xintouteriloopindex #1\xintiloop_again #2\xintiloop_again\fi\xint_gobble_iii #3% {#3#1\xintiloop_again #2\xintiloop_again\fi\xint_gobble_iii {#3}}% -\def\xintiloopskiptonext #1\xintiloop_again\fi\xint_gobble_iii #2#3{% +\long\def\xintiloopskiptonext #1\xintiloop_again\fi\xint_gobble_iii #2#3{% \expandafter\xintiloop_again_b \the\numexpr#2+#3.#3.}% -\def\xintiloopskipandredo #1\xintiloop_again\fi\xint_gobble_iii #2#3#4{% +\long\def\xintiloopskipandredo #1\xintiloop_again\fi\xint_gobble_iii #2#3#4{% #4\xintiloop_again\fi\xint_gobble_iii {#2}{#3}{#4}}% \def\XINT_xflet #1% {% @@ -733,9 +736,8 @@ }% \long\def\XINT_for #1#2in#3#4#5% {% - \XINT_count #2\relax \expandafter\XINT_toks\expandafter - {\expandafter\XINT_for_d\the\XINT_count{#5}}% + {\expandafter\XINT_for_d\the\numexpr #2\relax {#5}}% \def\XINT_flet_macro {\expandafter\XINT_for_forever?\space}% \expandafter\XINT_flet_zapsp #3Z% }% @@ -749,9 +751,8 @@ \def\XINT_to_forever\fi #1\xintcsvtolist #2{\fi \XINT_forever #2}% \long\def\XINT_forx *#1#2in#3#4#5% {% - \XINT_count #2\relax \expandafter\XINT_toks\expandafter - {\expandafter\XINT_forx_d\the\XINT_count{#5}}% + {\expandafter\XINT_forx_d\the\numexpr #2\relax {#5}}% \XINT_xflet\XINT_forx_forever? #3Z% }% \def\XINT_forx_forever? @@ -936,11 +937,11 @@ }% \catcode`Z 11 \catcode`j 11 -\def\xintAssign #1\to +\long\def\xintAssign #1\to {% \expandafter\XINT_assign_a\romannumeral-`0#1{}\to }% -\def\XINT_assign_a #1% attention to the # at the beginning of next line +\long\def\XINT_assign_a #1% attention to the # at the beginning of next line #{% \def\xint_temp {#1}% \ifx\empty\xint_temp @@ -949,13 +950,10 @@ \expandafter\XINT_assign_B \fi }% -\def\XINT_assign_b #1#2\to #3% +\long\def\XINT_assign_b #1#2\to #3% {% \edef #3{#1}\def\xint_temp {#2}% - \ifx\empty\xint_temp - \else - \xint_afterfi{\XINT_assign_a #2\to }% - \fi + \unless\ifx\empty\xint_temp\xint_afterfi{\XINT_assign_a #2\to }\fi }% \def\XINT_assign_B #1\to #2% {% @@ -965,56 +963,44 @@ {% \edef\XINT_restoreescapechar {\escapechar\the\escapechar\relax}% \escapechar -1 - \edef\xint_arrayname {\string #1}% + \expandafter\def\expandafter\xint_arrayname\expandafter {\string #1}% \XINT_restoreescapechar - \expandafter\let\expandafter\xint_temp - \csname\xint_arrayname 0\endcsname - \XINT_count 0 - \loop - \global\expandafter\let - \csname\xint_arrayname\the\XINT_count\endcsname\relax - \ifnum \XINT_count < \xint_temp - \advance\XINT_count 1 + \xintiloop [\csname\xint_arrayname 0\endcsname+-1] + \global + \expandafter\let\csname\xint_arrayname\xintiloopindex\endcsname\relax + \ifnum \xintiloopindex > \xint_c_ \repeat \global\expandafter\let\csname\xint_arrayname 00\endcsname\relax \global\let #1\relax }% -\def\xintAssignArray #1\to #2% 1.06b: #1 may now be empty +\long\def\xintAssignArray #1\to #2% {% \edef\XINT_restoreescapechar {\escapechar\the\escapechar\relax }% \escapechar -1 - \edef\xint_arrayname {\string #2}% + \expandafter\def\expandafter\xint_arrayname\expandafter {\string #2}% \XINT_restoreescapechar - \XINT_count 0 + \def\xint_itemcount {0}% \expandafter\XINT_assignarray_loop \romannumeral-`0#1\xint_relax - \csname\xint_arrayname 00\endcsname - \csname\xint_arrayname 0\endcsname - {\xint_arrayname}% - #2% + \csname\xint_arrayname 00\expandafter\endcsname + \csname\xint_arrayname 0\expandafter\endcsname + \expandafter {\xint_arrayname}#2% }% -\def\XINT_assignarray_loop #1% +\long\def\XINT_assignarray_loop #1% {% \def\xint_temp {#1}% \ifx\xint_brelax\xint_temp - \expandafter\edef\csname\xint_arrayname 0\endcsname{\the\XINT_count }% - \expandafter\expandafter\expandafter\XINT_assignarray_end_a + \expandafter\def\csname\xint_arrayname 0\expandafter\endcsname + \expandafter{\the\numexpr\xint_itemcount}% + \expandafter\expandafter\expandafter\XINT_assignarray_end \else - \advance\XINT_count 1 + \expandafter\def\expandafter\xint_itemcount\expandafter + {\the\numexpr\xint_itemcount+\xint_c_i}% \expandafter\edef - \csname\xint_arrayname\the\XINT_count\endcsname{\xint_temp }% + \csname\xint_arrayname\xint_itemcount\endcsname {\xint_temp }% \expandafter\XINT_assignarray_loop \fi }% -\def\XINT_assignarray_end_a #1% -{% - \expandafter\XINT_assignarray_end_b\expandafter #1% -}% -\def\XINT_assignarray_end_b #1#2#3% -{% - \expandafter\XINT_assignarray_end_c - \expandafter #1\expandafter #2\expandafter {#3}% -}% -\def\XINT_assignarray_end_c #1#2#3#4% +\def\XINT_assignarray_end #1#2#3#4% {% \def #4##1% {% @@ -1022,16 +1008,14 @@ }% \def #1##1% {% - \ifnum ##1< 0 - \xint_afterfi {\xintError:ArrayIndexIsNegative\space 0}% + \ifnum ##1<\xint_c_ + \xint_afterfi {\xintError:ArrayIndexIsNegative\space }% \else - \xint_afterfi {% + \xint_afterfi {% \ifnum ##1>#2 - \xint_afterfi {\xintError:ArrayIndexBeyondLimit\space 0}% - \else - \xint_afterfi - {\expandafter\expandafter\expandafter - \space\csname #3##1\endcsname}% + \xint_afterfi {\xintError:ArrayIndexBeyondLimit\space }% + \else\xint_afterfi + {\expandafter\expandafter\expandafter\space\csname #3##1\endcsname}% \fi}% \fi }% |