%% %% This is file `xinttools.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% xint.dtx (with options: `xinttools') %% %% IMPORTANT NOTICE: %% %% For the copyright see the source file. %% %% Any modified versions of this file must be renamed %% with new filenames distinct from xinttools.sty. %% %% For distribution of the original source see the terms %% for copying and modification in the file xint.dtx. %% %% This generated file may be distributed as long as the %% original source files, as listed above, are part of the %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %%---------------------------------------------------------------- %% The xint bundle (version 1.09n of April 1st, 2014) %% xinttools: Expandable and non-expandable utilities %% Copyright (C) 2013-2014 by Jean-Francois Burnol %%---------------------------------------------------------------- \begingroup\catcode61\catcode48\catcode32=10\relax% \catcode13=5 % ^^M \endlinechar=13 % \catcode123=1 % { \catcode125=2 % } \catcode64=11 % @ \catcode95=11 % _ \catcode35=6 % # \catcode44=12 % , \catcode45=12 % - \catcode46=12 % . \catcode58=12 % : \expandafter\let\expandafter\x\csname ver@xint.sty\endcsname \expandafter \ifx\csname PackageInfo\endcsname\relax \def\y#1#2{\immediate\write-1{Package #1 Info: #2.}}% \else \def\y#1#2{\PackageInfo{#1}{#2}}% \fi \expandafter \ifx\csname numexpr\endcsname\relax \y{xinttools}{\numexpr not available, aborting input}% \aftergroup\endinput \else \ifx\x\relax % plain-TeX, first loading \else \def\empty {}% \ifx\x\empty % LaTeX, first loading, % variable is initialized, but \ProvidesPackage not yet seen \else \y{xinttools}{I was already loaded, aborting input}% \aftergroup\endinput \fi \fi \fi \def\ChangeCatcodesIfInputNotAborted {% \endgroup \def\XINT_storecatcodes {% takes care of all, to allow more economical code in modules \catcode34=\the\catcode34 % " xintbinhex, and 1.09k xintexpr \catcode63=\the\catcode63 % ? xintexpr \catcode124=\the\catcode124 % | xintexpr \catcode38=\the\catcode38 % & xintexpr \catcode64=\the\catcode64 % @ xintexpr \catcode33=\the\catcode33 % ! xintexpr \catcode93=\the\catcode93 % ] -, xintfrac, xintseries, xintcfrac \catcode91=\the\catcode91 % [ -, xintfrac, xintseries, xintcfrac \catcode36=\the\catcode36 % $ xintgcd only \catcode94=\the\catcode94 % ^ \catcode96=\the\catcode96 % ` \catcode47=\the\catcode47 % / \catcode41=\the\catcode41 % ) \catcode40=\the\catcode40 % ( \catcode42=\the\catcode42 % * \catcode43=\the\catcode43 % + \catcode62=\the\catcode62 % > \catcode60=\the\catcode60 % < \catcode58=\the\catcode58 % : \catcode46=\the\catcode46 % . \catcode45=\the\catcode45 % - \catcode44=\the\catcode44 % , \catcode35=\the\catcode35 % # \catcode95=\the\catcode95 % _ \catcode125=\the\catcode125 % } \catcode123=\the\catcode123 % { \endlinechar=\the\endlinechar \catcode13=\the\catcode13 % ^^M \catcode32=\the\catcode32 % \catcode61=\the\catcode61\relax % = }% \edef\XINT_restorecatcodes_endinput {% \XINT_storecatcodes\noexpand\endinput % }% \def\XINT_setcatcodes {% \catcode61=12 % = \catcode32=10 % space \catcode13=5 % ^^M \endlinechar=13 % \catcode123=1 % { \catcode125=2 % } \catcode95=11 % _ (replaces @ everywhere, starting with 1.06b) \catcode35=6 % # \catcode44=12 % , \catcode45=12 % - \catcode46=12 % . \catcode58=11 % : (made letter for error cs) \catcode60=12 % < \catcode62=12 % > \catcode43=12 % + \catcode42=12 % * \catcode40=12 % ( \catcode41=12 % ) \catcode47=12 % / \catcode96=12 % ` (for ubiquitous \romannumeral-`0 and some \catcode ) \catcode94=11 % ^ \catcode36=3 % $ \catcode91=12 % [ \catcode93=12 % ] \catcode33=11 % ! \catcode64=11 % @ \catcode38=12 % & \catcode124=12 % | \catcode63=11 % ? \catcode34=12 % " missing from v < 1.09k although needed in xintbinhex }% \XINT_setcatcodes }% \ChangeCatcodesIfInputNotAborted \def\XINTsetupcatcodes {% for use by other modules \edef\XINT_restorecatcodes_endinput {% \XINT_storecatcodes\noexpand\endinput % }% \XINT_setcatcodes }% \ifdefined\ProvidesPackage \let\XINT_providespackage\relax \else \def\XINT_providespackage #1#2[#3]% {\immediate\write-1{Package: #2 #3}% \expandafter\xdef\csname ver@#2.sty\endcsname{#3}}% \fi \XINT_providespackage \ProvidesPackage {xinttools}% [2014/04/01 v1.09n 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}% \long\def\xint_firstoftwo #1#2{#1}% \long\def\xint_secondoftwo #1#2{#2}% \long\def\xint_firstofone_thenstop #1{ #1}% \long\def\xint_firstoftwo_thenstop #1#2{ #1}% \long\def\xint_secondoftwo_thenstop #1#2{ #2}% \def\xint_minus_thenstop { -}% \def\xint_gob_til_zero #10{}% no need to make it long, so far \def\xint_UDzerominusfork #10-#2#3\krof {#2}% id. \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\def\xint_afterfi #1#2\fi {\fi #1}% \chardef\xint_c_ 0 \chardef\xint_c_i 1 \chardef\xint_c_ii 2 \chardef\xint_c_iii 3 \chardef\xint_c_iv 4 \chardef\xint_c_v 5 \chardef\xint_c_vi 6 \chardef\xint_c_vii 7 \chardef\xint_c_viii 8 \newtoks\XINT_toks \xint_firstofone{\let\XINT_sptoken= } %<- space here! \def\xintodef #1{\expandafter\def\expandafter#1\expandafter }% \ifdefined\odef\else\let\odef\xintodef\fi \def\xintgodef {\global\xintodef }% \def\xintoodef #1{\expandafter\expandafter\expandafter\def \expandafter\expandafter\expandafter#1% \expandafter\expandafter\expandafter }% \ifdefined\oodef\else\let\oodef\xintoodef\fi \def\xintgoodef {\global\xintoodef }% \def\xintfdef #1#2{\expandafter\def\expandafter#1\expandafter {\romannumeral-`0#2}}% \ifdefined\fdef\else\let\fdef\xintfdef\fi \def\xintgfdef {\global\xintfdef }% should be \global\fdef if \fdef pre-exists? \def\xintReverseOrder {\romannumeral0\xintreverseorder }% \long\def\xintreverseorder #1% {% \XINT_rord_main {}#1% \xint_relax \xint_bye\xint_bye\xint_bye\xint_bye \xint_bye\xint_bye\xint_bye\xint_bye \xint_relax }% \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}% }% \long\edef\XINT_rord_cleanup\xint_bye\XINT_rord_main #1#2\xint_relax {% \noexpand\expandafter\space\noexpand\xint_gob_til_xint_relax #1% }% \def\xintRevWithBraces {\romannumeral0\xintrevwithbraces }% \def\xintRevWithBracesNoExpand {\romannumeral0\xintrevwithbracesnoexpand }% \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 }% \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 }% \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}% }% \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% }% \def\XINT_revwbr_finish_b #1#2#3#4#5#6#7#8\Z {% \xint_gob_til_R #1\XINT_revwbr_finish_c 8% #2\XINT_revwbr_finish_c 7% #3\XINT_revwbr_finish_c 6% #4\XINT_revwbr_finish_c 5% #5\XINT_revwbr_finish_c 4% #6\XINT_revwbr_finish_c 3% #7\XINT_revwbr_finish_c 2% \R\XINT_revwbr_finish_c 1\Z }% \def\XINT_revwbr_finish_c #1#2\Z {% \expandafter\expandafter\expandafter \space \csname xint_gobble_\romannumeral #1\endcsname }% \def\xintLength {\romannumeral0\xintlength }% \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 }% \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\the\numexpr #1+\xint_c_viii.% }% \def\XINT_length_finish_a\xint_relax\expandafter\XINT_length_loop \the\numexpr #1+\xint_c_viii.#2\xint_bye {% \XINT_length_finish_b #2\W\W\W\W\W\W\W\Z {#1}% }% \def\XINT_length_finish_b #1#2#3#4#5#6#7#8\Z {% \xint_gob_til_W #1\XINT_length_finish_c \xint_c_ #2\XINT_length_finish_c \xint_c_i #3\XINT_length_finish_c \xint_c_ii #4\XINT_length_finish_c \xint_c_iii #5\XINT_length_finish_c \xint_c_iv #6\XINT_length_finish_c \xint_c_v #7\XINT_length_finish_c \xint_c_vi \W\XINT_length_finish_c \xint_c_vii\Z }% \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 }% \xint_firstofone {\long\def\XINT_zapbsp_a #1 } %<- space token here {% \XINT_zapbsp_again? #1\xint_bye\XINT_zapbsp_b {#1}% }% \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 }% \long\def\XINT_zapbsp_b #1#2\xint_relax {\XINT_zapbsp_end? #2\XINT_zapbsp_e\empty #2{#1}}% \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}}% \long\edef\XINT_zapbsp_f #1#2{#2\space\space #1}% \def\xintZapLastSpaces {\romannumeral0\xintzaplastspaces }% \long\edef\xintzaplastspaces #1{\noexpand\XINT_zapesp_a {\space}\noexpand\empty #1\space\space\noexpand\xint_bye \xint_relax}% \xint_firstofone {\long\def\XINT_zapesp_a #1#2 } %<- second space here {\expandafter\XINT_zapesp_b\expandafter{#2}{#1}}% \long\def\XINT_zapesp_b #1#2#3\xint_relax {\XINT_zapesp_end? #3\XINT_zapesp_e {#2#1}\empty #3\xint_relax }% \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 }% \long\edef\xintzapspaces #1% {\noexpand\XINT_zapsp_a \space #1\space\space\noexpand\xint_bye\xint_relax}% \xint_firstofone {\long\def\XINT_zapsp_a #1 } %<- space token here {% \XINT_zapsp_again? #1\xint_bye\XINT_zapesp_b {#1}{}% }% \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 }% \long\def\xintzapspacesb #1{\XINT_zapspb_one? #1\xint_relax\xint_relax \xint_bye\xintzapspaces {#1}}% \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{ }% \long\def\XINT_zapspb_bracedorone\xint_relax \xint_bye #1\xint_relax\xint_bye\xintzapspaces #2{ #1}% \def\xintCSVtoList {\romannumeral0\xintcsvtolist }% \long\def\xintcsvtolist #1{\expandafter\xintApply \expandafter\xintzapspacesb \expandafter{\romannumeral0\xintcsvtolistnonstripped{#1}}}% \def\xintCSVtoListNoExpand {\romannumeral0\xintcsvtolistnoexpand }% \long\def\xintcsvtolistnoexpand #1{\expandafter\xintApply \expandafter\xintzapspacesb \expandafter{\romannumeral0\xintcsvtolistnonstrippednoexpand{#1}}}% \def\xintCSVtoListNonStripped {\romannumeral0\xintcsvtolistnonstripped }% \def\xintCSVtoListNonStrippedNoExpand {\romannumeral0\xintcsvtolistnonstrippednoexpand }% \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 }% \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 }% \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}}% }% \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}% }% \def\XINT_csvtol_finish_b #1,#2,#3,#4,#5,#6,#7,#8\Z {% \xint_gob_til_R #1\XINT_csvtol_finish_c 8% #2\XINT_csvtol_finish_c 7% #3\XINT_csvtol_finish_c 6% #4\XINT_csvtol_finish_c 5% #5\XINT_csvtol_finish_c 4% #6\XINT_csvtol_finish_c 3% #7\XINT_csvtol_finish_c 2% \R\XINT_csvtol_finish_c 1\Z }% \def\XINT_csvtol_finish_c #1#2\Z {% \csname XINT_csvtol_finish_d\romannumeral #1\endcsname }% \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 }% \long\def\xintlistwithsep #1#2% {\expandafter\XINT_lws\expandafter {\romannumeral-`0#2}{#1}}% \long\def\XINT_lws #1#2{\XINT_lws_start {#2}#1\xint_bye }% \long\def\xintlistwithsepnoexpand #1#2{\XINT_lws_start {#1}#2\xint_bye }% \long\def\XINT_lws_start #1#2% {% \xint_bye #2\XINT_lws_dont\xint_bye \XINT_lws_loop_a {#2}{#1}% }% \long\def\XINT_lws_dont\xint_bye\XINT_lws_loop_a #1#2{ }% \long\def\XINT_lws_loop_a #1#2#3% {% \xint_bye #3\XINT_lws_end\xint_bye \XINT_lws_loop_b {#1}{#2#3}{#2}% }% \long\def\XINT_lws_loop_b #1#2{\XINT_lws_loop_a {#1#2}}% \long\def\XINT_lws_end\xint_bye\XINT_lws_loop_b #1#2#3{ #1}% \def\xintNthElt {\romannumeral0\xintnthelt }% \def\xintNthEltNoExpand {\romannumeral0\xintntheltnoexpand }% \def\xintnthelt #1#2% {% \expandafter\XINT_nthelt_a\the\numexpr #1\expandafter.% \expandafter{\romannumeral-`0#2}% }% \def\xintntheltnoexpand #1% {% \expandafter\XINT_nthelt_a\the\numexpr #1.% }% \def\XINT_nthelt_a #1#2.% {% \xint_UDzerominusfork #1-{\XINT_nthelt_bzero}% 0#1{\XINT_nthelt_bneg {#2}}% 0-{\XINT_nthelt_bpos {#1#2}}% \krof }% \long\def\XINT_nthelt_bzero #1% {% \XINT_length_loop 0.#1\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye }% \long\def\XINT_nthelt_bneg #1#2% {% \expandafter\XINT_nthelt_loop_a\expandafter {\the\numexpr #1\expandafter}% \romannumeral0\xintrevwithbracesnoexpand {#2}% \xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye }% \long\def\XINT_nthelt_bpos #1#2% {% \XINT_nthelt_loop_a {#1}#2\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye }% \def\XINT_nthelt_loop_a #1% {% \ifnum #1>\xint_c_viii \expandafter\XINT_nthelt_loop_b \else \XINT_nthelt_getit \fi {#1}% }% \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-\xint_c_viii}% }% \def\XINT_nthelt_silentend #1\xint_bye { }% \def\XINT_nthelt_getit\fi #1% {% \fi\expandafter\expandafter\expandafter\XINT_nthelt_finish \csname xint_gobble_\romannumeral\numexpr#1-\xint_c_i\endcsname }% \long\edef\XINT_nthelt_finish #1#2\xint_bye {\noexpand\xint_gob_til_xint_relax #1\noexpand\expandafter\space \noexpand\xint_gobble_ii\xint_relax\space #1}% \def\xintKeep {\romannumeral0\xintkeep }% \def\xintKeepNoExpand {\romannumeral0\xintkeepnoexpand }% \def\xintkeep #1#2% {% \expandafter\XINT_keep_a\the\numexpr #1\expandafter.% \expandafter{\romannumeral-`0#2}% }% \def\xintkeepnoexpand #1% {% \expandafter\XINT_keep_a\the\numexpr #1.% }% \def\XINT_keep_a #1#2.% {% \xint_UDzerominusfork #1-{\expandafter\space\xint_gobble_i }% 0#1{\XINT_keep_bneg_a {#2}}% 0-{\XINT_keep_bpos {#1#2}}% \krof }% \long\def\XINT_keep_bneg_a #1#2% {% \expandafter\XINT_keep_bneg_b \the\numexpr \xintLength{#2}-#1.{#2}% }% \def\XINT_keep_bneg_b #1#2.% {% \xint_UDzerominusfork #1-{\xint_firstofone_thenstop }% 0#1{\xint_firstofone_thenstop }% 0-{\XINT_trim_bpos {#1#2}}% \krof }% \long\def\XINT_keep_bpos #1#2% {% \XINT_keep_loop_a {#1}{}#2\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_bye }% \def\XINT_keep_loop_a #1% {% \ifnum #1>\xint_c_vi \expandafter\XINT_keep_loop_b \else \XINT_keep_finish \fi {#1}% }% \long\def\XINT_keep_loop_b #1#2#3#4#5#6#7#8#9% {% \xint_gob_til_xint_relax #9\XINT_keep_enda\xint_relax \expandafter\XINT_keep_loop_c\expandafter{\the\numexpr #1-\xint_c_vii}% {{#3}{#4}{#5}{#6}{#7}{#8}{#9}}{#2}% }% \long\def\XINT_keep_loop_c #1#2#3{\XINT_keep_loop_a {#1}{#3#2}}% \long\def\XINT_keep_enda\xint_relax \expandafter\XINT_keep_loop_c\expandafter #1#2#3#4\xint_bye {% \XINT_keep_endb #4\W\W\W\W\W\W\Z #2{#3}% }% \def\XINT_keep_endb #1#2#3#4#5#6#7\Z {% \xint_gob_til_W #1\XINT_keep_endc_ #2\XINT_keep_endc_i #3\XINT_keep_endc_ii #4\XINT_keep_endc_iii #5\XINT_keep_endc_iv #6\XINT_keep_endc_v \W\XINT_keep_endc_vi\Z }% \long\def\XINT_keep_endc_ #1\Z #2#3#4#5#6#7#8#9{ #9}% \long\def\XINT_keep_endc_i #1\Z #2#3#4#5#6#7#8#9{ #9{#2}}% \long\def\XINT_keep_endc_ii #1\Z #2#3#4#5#6#7#8#9{ #9{#2}{#3}}% \long\def\XINT_keep_endc_iii #1\Z #2#3#4#5#6#7#8#9{ #9{#2}{#3}{#4}}% \long\def\XINT_keep_endc_iv #1\Z #2#3#4#5#6#7#8#9{ #9{#2}{#3}{#4}{#5}}% \long\def\XINT_keep_endc_v #1\Z #2#3#4#5#6#7#8#9{ #9{#2}{#3}{#4}{#5}{#6}}% \long\def\XINT_keep_endc_vi\Z #1#2#3#4#5#6#7#8{ #8{#1}{#2}{#3}{#4}{#5}{#6}}% \long\def\XINT_keep_finish\fi #1#2#3#4#5#6#7#8#9\xint_bye {% \fi\XINT_keep_finish_loop_a {#1}{}{#3}{#4}{#5}{#6}{#7}{#8}\Z {#2}% }% \def\XINT_keep_finish_loop_a #1% {% \xint_gob_til_zero #1\XINT_keep_finish_z0% \expandafter\XINT_keep_finish_loop_b\expandafter {\the\numexpr #1-\xint_c_i}% }% \long\def\XINT_keep_finish_z0% \expandafter\XINT_keep_finish_loop_b\expandafter #1#2#3\Z #4{ #4#2}% \long\def\XINT_keep_finish_loop_b #1#2#3% {% \xint_gob_til_xint_relax #3\XINT_keep_finish_exit\xint_relax \XINT_keep_finish_loop_c {#1}{#2}{#3}% }% \long\def\XINT_keep_finish_exit\xint_relax \XINT_keep_finish_loop_c #1#2#3\Z #4{ #4#2}% \long\def\XINT_keep_finish_loop_c #1#2#3% {\XINT_keep_finish_loop_a {#1}{#2{#3}}}% \def\xintTrim {\romannumeral0\xinttrim }% \def\xintTrimNoExpand {\romannumeral0\xinttrimnoexpand }% \def\xinttrim #1#2% {% \expandafter\XINT_trim_a\the\numexpr #1\expandafter.% \expandafter{\romannumeral-`0#2}% }% \def\xinttrimnoexpand #1% {% \expandafter\XINT_trim_a\the\numexpr #1.% }% \def\XINT_trim_a #1#2.% {% \xint_UDzerominusfork #1-{\xint_firstofone_thenstop }% 0#1{\XINT_trim_bneg_a {#2}}% 0-{\XINT_trim_bpos {#1#2}}% \krof }% \long\def\XINT_trim_bneg_a #1#2% {% \expandafter\XINT_trim_bneg_b \the\numexpr \xintLength{#2}-#1.{#2}% }% \def\XINT_trim_bneg_b #1#2.% {% \xint_UDzerominusfork #1-{\expandafter\space\xint_gobble_i }% 0#1{\expandafter\space\xint_gobble_i }% 0-{\XINT_keep_bpos {#1#2}}% \krof }% \long\def\XINT_trim_bpos #1#2% {% \XINT_trim_loop_a {#1}#2\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye }% \def\XINT_trim_loop_a #1% {% \ifnum #1>\xint_c_vii \expandafter\XINT_trim_loop_b \else \XINT_trim_finish \fi {#1}% }% \long\def\XINT_trim_loop_b #1#2#3#4#5#6#7#8#9% {% \xint_gob_til_xint_relax #9\XINT_trim_silentend\xint_relax \expandafter\XINT_trim_loop_a\expandafter{\the\numexpr #1-\xint_c_viii}% }% \def\XINT_trim_silentend #1\xint_bye { }% \def\XINT_trim_finish\fi #1% {% \fi\expandafter\expandafter\expandafter\XINT_trim_finish_a \expandafter\expandafter\expandafter\space % avoids brace removal \csname xint_gobble_\romannumeral\numexpr#1\endcsname }% \long\def\XINT_trim_finish_a #1\xint_relax #2\xint_bye {#1}% \def\xintApply {\romannumeral0\xintapply }% \def\xintApplyNoExpand {\romannumeral0\xintapplynoexpand }% \long\def\xintapply #1#2% {% \expandafter\XINT_apply\expandafter {\romannumeral-`0#2}% {#1}% }% \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}% }% \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 }% \long\def\xintapplyunbraced #1#2% {% \expandafter\XINT_applyunbr\expandafter {\romannumeral-`0#2}% {#1}% }% \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 }% \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}% }% \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 }% \def\XINT_seq_chkopt #1% {% \ifx [#1\expandafter\XINT_seq_opt \else\expandafter\XINT_seq_noopt \fi #1% }% \def\XINT_seq_noopt #1\xint_bye #2% {% \expandafter\XINT_seq\expandafter {\the\numexpr#1\expandafter}\expandafter{\the\numexpr #2}% }% \def\XINT_seq #1#2% {% \ifcase\ifnum #1=#2 0\else\ifnum #2>#1 1\else -1\fi\fi\space \expandafter\xint_firstoftwo_thenstop \or \expandafter\XINT_seq_p \else \expandafter\XINT_seq_n \fi {#2}{#1}% }% \def\XINT_seq_p #1#2% {% \ifnum #1>#2 \expandafter\expandafter\expandafter\XINT_seq_p \else \expandafter\XINT_seq_e \fi \expandafter{\the\numexpr #1-\xint_c_i}{#2}{#1}% }% \def\XINT_seq_n #1#2% {% \ifnum #1<#2 \expandafter\expandafter\expandafter\XINT_seq_n \else \expandafter\XINT_seq_e \fi \expandafter{\the\numexpr #1+\xint_c_i}{#2}{#1}% }% \def\XINT_seq_e #1#2#3{ }% \def\XINT_seq_opt [\xint_bye #1]#2#3% {% \expandafter\XINT_seqo\expandafter {\the\numexpr #2\expandafter}\expandafter {\the\numexpr #3\expandafter}\expandafter {\the\numexpr #1}% }% \def\XINT_seqo #1#2% {% \ifcase\ifnum #1=#2 0\else\ifnum #2>#1 1\else -1\fi\fi\space \expandafter\XINT_seqo_a \or \expandafter\XINT_seqo_pa \else \expandafter\XINT_seqo_na \fi {#1}{#2}% }% \def\XINT_seqo_a #1#2#3{ {#1}}% \def\XINT_seqo_o #1#2#3#4{ #4}% \def\XINT_seqo_pa #1#2#3% {% \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 \else \xint_afterfi{\expandafter\space\xint_gobble_iv}% \fi {#1}{#2}{#3}{{#1}}% }% \def\XINT_seqo_pb #1#2#3% {% \expandafter\XINT_seqo_pc\expandafter{\the\numexpr #1+#3}{#2}{#3}% }% \def\XINT_seqo_pc #1#2% {% \ifnum #1>#2 \expandafter\XINT_seqo_o \else \expandafter\XINT_seqo_pd \fi {#1}{#2}% }% \def\XINT_seqo_pd #1#2#3#4{\XINT_seqo_pb {#1}{#2}{#3}{#4{#1}}}% \def\XINT_seqo_na #1#2#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}% \else \expandafter\XINT_seqo_nb \fi {#1}{#2}{#3}{{#1}}% }% \def\XINT_seqo_nb #1#2#3% {% \expandafter\XINT_seqo_nc\expandafter{\the\numexpr #1+#3}{#2}{#3}% }% \def\XINT_seqo_nc #1#2% {% \ifnum #1<#2 \expandafter\XINT_seqo_o \else \expandafter\XINT_seqo_nd \fi {#1}{#2}% }% \def\XINT_seqo_nd #1#2#3#4{\XINT_seqo_nb {#1}{#2}{#3}{#4{#1}}}% \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}}% \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.}% \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.}% \long\def\xintiloop_again_b #1.#2.#3{% #3\xintiloop_again\fi\xint_gobble_iii {#1}{#2}{#3}}% \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}}% \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}}% \long\def\xintiloopskiptonext #1\xintiloop_again\fi\xint_gobble_iii #2#3{% \expandafter\xintiloop_again_b \the\numexpr#2+#3.#3.}% \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% {% \def\XINT_xflet_macro {#1}\XINT_xflet_zapsp }% \def\XINT_xflet_zapsp {% \expandafter\futurelet\expandafter\XINT_token \expandafter\XINT_xflet_sp?\romannumeral-`0% }% \def\XINT_xflet_sp? {% \ifx\XINT_token\XINT_sptoken \expandafter\XINT_xflet_zapsp \else\expandafter\XINT_xflet_zapspB \fi }% \def\XINT_xflet_zapspB {% \expandafter\futurelet\expandafter\XINT_tokenB \expandafter\XINT_xflet_spB?\romannumeral-`0% }% \def\XINT_xflet_spB? {% \ifx\XINT_tokenB\XINT_sptoken \expandafter\XINT_xflet_zapspB \else\expandafter\XINT_xflet_eq? \fi }% \def\XINT_xflet_eq? {% \ifx\XINT_token\XINT_tokenB \expandafter\XINT_xflet_macro \else\expandafter\XINT_xflet_zapsp \fi }% \catcode`Z 3 \long\def\xintApplyInline #1#2% {% \long\expandafter\def\expandafter\XINT_inline_macro \expandafter ##\expandafter 1\expandafter {#1{##1}}% \XINT_xflet\XINT_inline_b #2Z% this Z has catcode 3 }% \def\XINT_inline_b {% \ifx\XINT_token Z\expandafter\xint_gobble_i \else\expandafter\XINT_inline_d\fi }% \long\def\XINT_inline_d #1% {% \long\def\XINT_item{{#1}}\XINT_xflet\XINT_inline_e }% \def\XINT_inline_e {% \ifx\XINT_token Z\expandafter\XINT_inline_w \else\expandafter\XINT_inline_f\fi }% \def\XINT_inline_f {% \expandafter\XINT_inline_g\expandafter{\XINT_inline_macro {##1}}% }% \long\def\XINT_inline_g #1% {% \expandafter\XINT_inline_macro\XINT_item \long\def\XINT_inline_macro ##1{#1}\XINT_inline_d }% \def\XINT_inline_w #1% {% \expandafter\XINT_inline_macro\XINT_item }% \def\XINT_tmpa #1#2{\ifnum #2<#1 \xint_afterfi {{#########2}}\fi}% \def\XINT_tmpb #1#2{\ifnum #1<#2 \xint_afterfi {{#########2}}\fi}% \def\XINT_tmpc #1% {% \expandafter\edef \csname XINT_for_left#1\endcsname {\xintApplyUnbraced {\XINT_tmpa #1}{123456789}}% \expandafter\edef \csname XINT_for_right#1\endcsname {\xintApplyUnbraced {\XINT_tmpb #1}{123456789}}% }% \xintApplyInline \XINT_tmpc {123456789}% \long\def\xintBreakFor #1Z{}% \long\def\xintBreakForAndDo #1#2Z{#1}% \def\xintFor {\let\xintifForFirst\xint_firstoftwo \futurelet\XINT_token\XINT_for_ifstar }% \def\XINT_for_ifstar {\ifx\XINT_token*\expandafter\XINT_forx \else\expandafter\XINT_for \fi }% \catcode`U 3 % with numexpr \catcode`V 3 % with xintfrac.sty (xint.sty not enough) \catcode`D 3 % with dimexpr \def\XINT_flet_zapsp {% \futurelet\XINT_token\XINT_flet_sp? }% \def\XINT_flet_sp? {% \ifx\XINT_token\XINT_sptoken \xint_afterfi{\expandafter\XINT_flet_zapsp\romannumeral0}% \else\expandafter\XINT_flet_macro \fi }% \long\def\XINT_for #1#2in#3#4#5% {% \expandafter\XINT_toks\expandafter {\expandafter\XINT_for_d\the\numexpr #2\relax {#5}}% \def\XINT_flet_macro {\expandafter\XINT_for_forever?\space}% \expandafter\XINT_flet_zapsp #3Z% }% \def\XINT_for_forever? #1Z% {% \ifx\XINT_token U\XINT_to_forever\fi \ifx\XINT_token V\XINT_to_forever\fi \ifx\XINT_token D\XINT_to_forever\fi \expandafter\the\expandafter\XINT_toks\romannumeral0\xintcsvtolist {#1}Z% }% \def\XINT_to_forever\fi #1\xintcsvtolist #2{\fi \XINT_forever #2}% \long\def\XINT_forx *#1#2in#3#4#5% {% \expandafter\XINT_toks\expandafter {\expandafter\XINT_forx_d\the\numexpr #2\relax {#5}}% \XINT_xflet\XINT_forx_forever? #3Z% }% \def\XINT_forx_forever? {% \ifx\XINT_token U\XINT_to_forxever\fi \ifx\XINT_token V\XINT_to_forxever\fi \ifx\XINT_token D\XINT_to_forxever\fi \XINT_forx_empty? }% \def\XINT_to_forxever\fi #1\XINT_forx_empty? {\fi \XINT_forever }% \catcode`U 11 \catcode`D 11 \catcode`V 11 \def\XINT_forx_empty? {% \ifx\XINT_token Z\expandafter\xintBreakFor\fi \the\XINT_toks }% \long\def\XINT_for_d #1#2#3% {% \long\def\XINT_y ##1##2##3##4##5##6##7##8##9{#2}% \XINT_toks {{#3}}% \long\edef\XINT_x {\noexpand\XINT_y \csname XINT_for_left#1\endcsname \the\XINT_toks \csname XINT_for_right#1\endcsname }% \XINT_toks {\XINT_x\let\xintifForFirst\xint_secondoftwo\XINT_for_d #1{#2}}% \futurelet\XINT_token\XINT_for_last? }% \long\def\XINT_forx_d #1#2#3% {% \long\def\XINT_y ##1##2##3##4##5##6##7##8##9{#2}% \XINT_toks {{#3}}% \long\edef\XINT_x {\noexpand\XINT_y \csname XINT_for_left#1\endcsname \the\XINT_toks \csname XINT_for_right#1\endcsname }% \XINT_toks {\XINT_x\let\xintifForFirst\xint_secondoftwo\XINT_forx_d #1{#2}}% \XINT_xflet\XINT_for_last? }% \def\XINT_for_last? {% \let\xintifForLast\xint_secondoftwo \ifx\XINT_token Z\let\xintifForLast\xint_firstoftwo \xint_afterfi{\xintBreakForAndDo{\XINT_x\xint_gobble_i Z}}\fi \the\XINT_toks }% \catcode`U 3 \catcode`D 3 \catcode`V 3 \let\xintegers U% \let\xintintegers U% \let\xintdimensions D% \let\xintrationals V% \def\XINT_forever #1% {% \expandafter\XINT_forever_a \csname XINT_?expr_\ifx#1UU\else\ifx#1DD\else V\fi\fi a\expandafter\endcsname \csname XINT_?expr_\ifx#1UU\else\ifx#1DD\else V\fi\fi i\expandafter\endcsname \csname XINT_?expr_\ifx#1UU\else\ifx#1DD\else V\fi\fi \endcsname }% \catcode`U 11 \catcode`D 11 \catcode`V 11 \def\XINT_?expr_Ua #1#2% {\expandafter{\expandafter\numexpr\the\numexpr #1\expandafter\relax \expandafter\relax\expandafter}% \expandafter{\the\numexpr #2}}% \def\XINT_?expr_Da #1#2% {\expandafter{\expandafter\dimexpr\number\dimexpr #1\expandafter\relax \expandafter s\expandafter p\expandafter\relax\expandafter}% \expandafter{\number\dimexpr #2}}% \catcode`Z 11 \def\XINT_?expr_Va #1#2% {% \expandafter\XINT_?expr_Vb\expandafter {\romannumeral-`0\xintrawwithzeros{\xintZapSpacesB{#2}}}% {\romannumeral-`0\xintrawwithzeros{\xintZapSpacesB{#1}}}% }% \catcode`Z 3 \def\XINT_?expr_Vb #1#2{\expandafter\XINT_?expr_Vc #2.#1.}% \def\XINT_?expr_Vc #1/#2.#3/#4.% {% \xintifEq {#2}{#4}% {\XINT_?expr_Vf {#3}{#1}{#2}}% {\expandafter\XINT_?expr_Vd\expandafter {\romannumeral0\xintiimul {#2}{#4}}% {\romannumeral0\xintiimul {#1}{#4}}% {\romannumeral0\xintiimul {#2}{#3}}% }% }% \def\XINT_?expr_Vd #1#2#3{\expandafter\XINT_?expr_Ve\expandafter {#2}{#3}{#1}}% \def\XINT_?expr_Ve #1#2{\expandafter\XINT_?expr_Vf\expandafter {#2}{#1}}% \def\XINT_?expr_Vf #1#2#3{{#2/#3}{{0}{#1}{#2}{#3}}}% \def\XINT_?expr_Ui {{\numexpr 1\relax}{1}}% \def\XINT_?expr_Di {{\dimexpr 0pt\relax}{65536}}% \def\XINT_?expr_Vi {{1/1}{0111}}% \def\XINT_?expr_U #1#2% {\expandafter{\expandafter\numexpr\the\numexpr #1+#2\relax\relax}{#2}}% \def\XINT_?expr_D #1#2% {\expandafter{\expandafter\dimexpr\the\numexpr #1+#2\relax sp\relax}{#2}}% \def\XINT_?expr_V #1#2{\XINT_?expr_Vx #2}% \def\XINT_?expr_Vx #1#2% {% \expandafter\XINT_?expr_Vy\expandafter {\romannumeral0\xintiiadd {#1}{#2}}{#2}% }% \def\XINT_?expr_Vy #1#2#3#4% {% \expandafter{\romannumeral0\xintiiadd {#3}{#1}/#4}{{#1}{#2}{#3}{#4}}% }% \def\XINT_forever_a #1#2#3#4% {% \ifx #4[\expandafter\XINT_forever_opt_a \else\expandafter\XINT_forever_b \fi #1#2#3#4% }% \def\XINT_forever_b #1#2#3Z{\expandafter\XINT_forever_c\the\XINT_toks #2#3}% \long\def\XINT_forever_c #1#2#3#4#5% {\expandafter\XINT_forever_d\expandafter #2#4#5{#3}Z}% \def\XINT_forever_opt_a #1#2#3[#4+#5]#6Z% {% \expandafter\expandafter\expandafter \XINT_forever_opt_c\expandafter\the\expandafter\XINT_toks \romannumeral-`0#1{#4}{#5}#3% }% \long\def\XINT_forever_opt_c #1#2#3#4#5#6{\XINT_forever_d #2{#4}{#5}#6{#3}Z}% \long\def\XINT_forever_d #1#2#3#4#5% {% \long\def\XINT_y ##1##2##3##4##5##6##7##8##9{#5}% \XINT_toks {{#2}}% \long\edef\XINT_x {\noexpand\XINT_y \csname XINT_for_left#1\endcsname \the\XINT_toks \csname XINT_for_right#1\endcsname }% \XINT_x \let\xintifForFirst\xint_secondoftwo \expandafter\XINT_forever_d\expandafter #1\romannumeral-`0#4{#2}{#3}#4{#5}% }% \catcode`j 3 \long\def\xintForpair #1#2#3in#4#5#6% {% \let\xintifForFirst\xint_firstoftwo \XINT_toks {\XINT_forpair_d #2{#6}}% \expandafter\the\expandafter\XINT_toks #4jZ% }% \long\def\XINT_forpair_d #1#2#3(#4)#5% {% \long\def\XINT_y ##1##2##3##4##5##6##7##8##9{#2}% \XINT_toks \expandafter{\romannumeral0\xintcsvtolist{ #4}}% \long\edef\XINT_x {\noexpand\XINT_y \csname XINT_for_left#1\endcsname \the\XINT_toks \csname XINT_for_right\the\numexpr#1+\xint_c_i\endcsname}% \let\xintifForLast\xint_secondoftwo \ifx #5j\expandafter\xint_firstoftwo \else\expandafter\xint_secondoftwo \fi {\let\xintifForLast\xint_firstoftwo \xintBreakForAndDo {\XINT_x \xint_gobble_i Z}}% \XINT_x \let\xintifForFirst\xint_secondoftwo\XINT_forpair_d #1{#2}% }% \long\def\xintForthree #1#2#3in#4#5#6% {% \let\xintifForFirst\xint_firstoftwo \XINT_toks {\XINT_forthree_d #2{#6}}% \expandafter\the\expandafter\XINT_toks #4jZ% }% \long\def\XINT_forthree_d #1#2#3(#4)#5% {% \long\def\XINT_y ##1##2##3##4##5##6##7##8##9{#2}% \XINT_toks \expandafter{\romannumeral0\xintcsvtolist{ #4}}% \long\edef\XINT_x {\noexpand\XINT_y \csname XINT_for_left#1\endcsname \the\XINT_toks \csname XINT_for_right\the\numexpr#1+\xint_c_ii\endcsname}% \let\xintifForLast\xint_secondoftwo \ifx #5j\expandafter\xint_firstoftwo \else\expandafter\xint_secondoftwo \fi {\let\xintifForLast\xint_firstoftwo \xintBreakForAndDo {\XINT_x \xint_gobble_i Z}}% \XINT_x \let\xintifForFirst\xint_secondoftwo\XINT_forthree_d #1{#2}% }% \long\def\xintForfour #1#2#3in#4#5#6% {% \let\xintifForFirst\xint_firstoftwo \XINT_toks {\XINT_forfour_d #2{#6}}% \expandafter\the\expandafter\XINT_toks #4jZ% }% \long\def\XINT_forfour_d #1#2#3(#4)#5% {% \long\def\XINT_y ##1##2##3##4##5##6##7##8##9{#2}% \XINT_toks \expandafter{\romannumeral0\xintcsvtolist{ #4}}% \long\edef\XINT_x {\noexpand\XINT_y \csname XINT_for_left#1\endcsname \the\XINT_toks \csname XINT_for_right\the\numexpr#1+\xint_c_iii\endcsname}% \let\xintifForLast\xint_secondoftwo \ifx #5j\expandafter\xint_firstoftwo \else\expandafter\xint_secondoftwo \fi {\let\xintifForLast\xint_firstoftwo \xintBreakForAndDo {\XINT_x \xint_gobble_i Z}}% \XINT_x \let\xintifForFirst\xint_secondoftwo\XINT_forfour_d #1{#2}% }% \catcode`Z 11 \catcode`j 11 \def\xintAssign{\def\XINT_flet_macro {\XINT_assign_fork}\XINT_flet_zapsp }% \def\XINT_assign_fork {% \let\XINT_assign_def\def \ifx\XINT_token[\expandafter\XINT_assign_opt \else\expandafter\XINT_assign_a \fi }% \def\XINT_assign_opt [#1]% {% \ifcsname #1def\endcsname \expandafter\let\expandafter\XINT_assign_def \csname #1def\endcsname \else \expandafter\let\expandafter\XINT_assign_def \csname xint#1def\endcsname \fi \XINT_assign_a }% \long\def\XINT_assign_a #1\to {% \expandafter\XINT_assign_b\romannumeral-`0#1{}\to }% \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_c \else \expandafter\XINT_assign_d \fi }% \long\def\XINT_assign_c #1#2\to #3% {% \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_d #1\to #2% normally #1 is {} here. {% \expandafter\XINT_assign_def\expandafter #2\expandafter{\xint_temp}% }% \def\xintRelaxArray #1% {% \edef\XINT_restoreescapechar {\escapechar\the\escapechar\relax}% \escapechar -1 \expandafter\def\expandafter\xint_arrayname\expandafter {\string #1}% \XINT_restoreescapechar \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{\def\XINT_flet_macro {\XINT_assignarray_fork}% \XINT_flet_zapsp }% \def\XINT_assignarray_fork {% \let\XINT_assignarray_def\def \ifx\XINT_token[\expandafter\XINT_assignarray_opt \else\expandafter\XINT_assignarray \fi }% \def\XINT_assignarray_opt [#1]% {% \ifcsname #1def\endcsname \expandafter\let\expandafter\XINT_assignarray_def \csname #1def\endcsname \else \expandafter\let\expandafter\XINT_assignarray_def \csname xint#1def\endcsname \fi \XINT_assignarray }% \long\def\XINT_assignarray #1\to #2% {% \edef\XINT_restoreescapechar {\escapechar\the\escapechar\relax }% \escapechar -1 \expandafter\def\expandafter\xint_arrayname\expandafter {\string #2}% \XINT_restoreescapechar \def\xint_itemcount {0}% \expandafter\XINT_assignarray_loop \romannumeral-`0#1\xint_relax \csname\xint_arrayname 00\expandafter\endcsname \csname\xint_arrayname 0\expandafter\endcsname \expandafter {\xint_arrayname}#2% }% \long\def\XINT_assignarray_loop #1% {% \def\xint_temp {#1}% \ifx\xint_brelax\xint_temp \expandafter\def\csname\xint_arrayname 0\expandafter\endcsname \expandafter{\the\numexpr\xint_itemcount}% \expandafter\expandafter\expandafter\XINT_assignarray_end \else \expandafter\def\expandafter\xint_itemcount\expandafter {\the\numexpr\xint_itemcount+\xint_c_i}% \expandafter\XINT_assignarray_def \csname\xint_arrayname\xint_itemcount\expandafter\endcsname \expandafter{\xint_temp }% \expandafter\XINT_assignarray_loop \fi }% \def\XINT_assignarray_end #1#2#3#4% {% \def #4##1% {% \romannumeral0\expandafter #1\expandafter{\the\numexpr ##1}% }% \def #1##1% {% \ifnum ##1<\xint_c_ \xint_afterfi {\xintError:ArrayIndexIsNegative\space }% \else \xint_afterfi {% \ifnum ##1>#2 \xint_afterfi {\xintError:ArrayIndexBeyondLimit\space }% \else\xint_afterfi {\expandafter\expandafter\expandafter\space\csname #3##1\endcsname}% \fi}% \fi }% }% \let\xintDigitsOf\xintAssignArray \let\XINT_tmpa\relax \let\XINT_tmpb\relax \let\XINT_tmpc\relax \XINT_restorecatcodes_endinput% \endinput %% %% End of file `xinttools.sty'.