summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/xint/xinttools.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/xint/xinttools.sty')
-rw-r--r--Master/texmf-dist/tex/generic/xint/xinttools.sty300
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
}%