diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/xint/xinttools.sty')
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xinttools.sty | 160 |
1 files changed, 138 insertions, 22 deletions
diff --git a/Master/texmf-dist/tex/generic/xint/xinttools.sty b/Master/texmf-dist/tex/generic/xint/xinttools.sty index 94b8839bea3..6cc3477b30e 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 v1.2 2015/10/10 +%% The xint bundle v1.2a 2015/10/19 %% Copyright (C) 2013-2015 by Jean-Francois Burnol %% xinttools: Expandable and non-expandable utilities %% --------------------------------------------------------------- @@ -70,7 +70,7 @@ \XINTsetupcatcodes% defined in xintkernel.sty \XINT_providespackage \ProvidesPackage{xinttools}% - [2015/10/10 v1.2 Expandable and non-expandable utilities (jfB)]% + [2015/10/19 v1.2a Expandable and non-expandable utilities (jfB)]% \newtoks\XINT_toks \xint_firstofone{\let\XINT_sptoken= } %<- space here! \def\xintgodef {\global\xintodef }% @@ -81,7 +81,7 @@ \long\def\xintrevwithbraces #1% {% \expandafter\XINT_revwbr_loop\expandafter{\expandafter}% - \romannumeral-`0#1\xint_relax\xint_relax\xint_relax\xint_relax + \romannumeral`&&@#1\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye }% \long\def\xintrevwithbracesnoexpand #1% @@ -168,7 +168,7 @@ \long\def\xintcsvtolistnonstripped #1% {% \expandafter\XINT_csvtol_loop_a\expandafter - {\expandafter}\romannumeral-`0#1% + {\expandafter}\romannumeral`&&@#1% ,\xint_bye,\xint_bye,\xint_bye,\xint_bye ,\xint_bye,\xint_bye,\xint_bye,\xint_bye,\Z }% @@ -213,7 +213,7 @@ \def\xintListWithSep {\romannumeral0\xintlistwithsep }% \def\xintListWithSepNoExpand {\romannumeral0\xintlistwithsepnoexpand }% \long\def\xintlistwithsep #1#2% - {\expandafter\XINT_lws\expandafter {\romannumeral-`0#2}{#1}}% + {\expandafter\XINT_lws\expandafter {\romannumeral`&&@#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% @@ -234,7 +234,7 @@ \def\xintnthelt #1#2% {% \expandafter\XINT_nthelt_a\the\numexpr #1\expandafter.% - \expandafter{\romannumeral-`0#2}% + \expandafter{\romannumeral`&&@#2}% }% \def\xintntheltnoexpand #1% {% @@ -293,7 +293,7 @@ \def\xintkeep #1#2% {% \expandafter\XINT_keep_a\the\numexpr #1\expandafter.% - \expandafter{\romannumeral-`0#2}% + \expandafter{\romannumeral`&&@#2}% }% \def\xintkeepnoexpand #1% {% @@ -370,8 +370,7 @@ \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}% + \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}% @@ -384,12 +383,98 @@ \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\xintKeepUnbraced {\romannumeral0\xintkeepunbraced }% +\def\xintKeepUnbracedNoExpand {\romannumeral0\xintkeepunbracednoexpand }% +\def\xintkeepunbraced #1#2% +{% + \expandafter\XINT_keepunbraced_a\the\numexpr #1\expandafter.% + \expandafter{\romannumeral`&&@#2}% +}% +\def\xintkeepnoexpand #1% +{% + \expandafter\XINT_keepunbraced_a\the\numexpr #1.% +}% +\def\XINT_keepunbraced_a #1#2.% +{% + \xint_UDzerominusfork + #1-{\expandafter\space\xint_gobble_i }% + 0#1{\XINT_keep_bneg_a {#2}}% + 0-{\XINT_keepunbraced_bpos {#1#2}}% + \krof +}% +\long\def\XINT_keepunbraced_bpos #1#2% +{% + \XINT_keepunbraced_loop_a {#1}{}#2% + \xint_relax\xint_relax\xint_relax\xint_relax + \xint_relax\xint_relax\xint_relax\xint_bye +}% +\def\XINT_keepunbraced_loop_a #1% +{% + \ifnum #1>\xint_c_vi + \expandafter\XINT_keepunbraced_loop_b + \else + \XINT_keepunbraced_finish + \fi + {#1}% +}% +\long\def\XINT_keepunbraced_loop_b #1#2#3#4#5#6#7#8#9% +{% + \xint_gob_til_xint_relax #9\XINT_keepunbraced_enda\xint_relax + \expandafter\XINT_keepunbraced_loop_c\expandafter + {\the\numexpr #1-\xint_c_vii}{#3}{#4}{#5}{#6}{#7}{#8}{#9}.{#2}% +}% +\long\def\XINT_keepunbraced_loop_c #1#2#3#4#5#6#7#8.#9% + {\XINT_keepunbraced_loop_a {#1}{#9#2#3#4#5#6#7#8}}% +\long\def\XINT_keepunbraced_enda\xint_relax + \expandafter\XINT_keepunbraced_loop_c\expandafter #1#2.#3#4\xint_bye +{% + \XINT_keepunbraced_endb #4\W\W\W\W\W\W\Z #2{#3}% +}% +\def\XINT_keepunbraced_endb #1#2#3#4#5#6#7\Z +{% + \xint_gob_til_W + #1\XINT_keepunbraced_endc_ + #2\XINT_keepunbraced_endc_i + #3\XINT_keepunbraced_endc_ii + #4\XINT_keepunbraced_endc_iii + #5\XINT_keepunbraced_endc_iv + #6\XINT_keepunbraced_endc_v + \W\XINT_keepunbraced_endc_vi\Z +}% +\long\def\XINT_keepunbraced_endc_ #1\Z #2#3#4#5#6#7#8#9{ #9}% +\long\def\XINT_keepunbraced_endc_i #1\Z #2#3#4#5#6#7#8#9{ #9#2}% +\long\def\XINT_keepunbraced_endc_ii #1\Z #2#3#4#5#6#7#8#9{ #9#2#3}% +\long\def\XINT_keepunbraced_endc_iii #1\Z #2#3#4#5#6#7#8#9{ #9#2#3#4}% +\long\def\XINT_keepunbraced_endc_iv #1\Z #2#3#4#5#6#7#8#9{ #9#2#3#4#5}% +\long\def\XINT_keepunbraced_endc_v #1\Z #2#3#4#5#6#7#8#9{ #9#2#3#4#5#6}% +\long\def\XINT_keepunbraced_endc_vi\Z #1#2#3#4#5#6#7#8{ #8#1#2#3#4#5#6}% +\long\def\XINT_keepunbraced_finish\fi #1#2#3#4#5#6#7#8#9\xint_bye +{% + \fi\XINT_keepunbraced_finish_loop_a {#1}{}{#3}{#4}{#5}{#6}{#7}{#8}\Z {#2}% +}% +\def\XINT_keepunbraced_finish_loop_a #1% +{% + \xint_gob_til_zero #1\XINT_keepunbraced_finish_z0% + \expandafter\XINT_keepunbraced_finish_loop_b\expandafter + {\the\numexpr #1-\xint_c_i}% +}% +\long\def\XINT_keepunbraced_finish_z0% + \expandafter\XINT_keepunbraced_finish_loop_b\expandafter #1#2#3\Z #4{ #4#2}% +\long\def\XINT_keepunbraced_finish_loop_b #1#2#3% +{% + \xint_gob_til_xint_relax #3\XINT_keepunbraced_finish_exit\xint_relax + \XINT_keepunbraced_finish_loop_c {#1}{#2}{#3}% +}% +\long\def\XINT_keepunbraced_finish_exit\xint_relax + \XINT_keepunbraced_finish_loop_c #1#2#3\Z #4{ #4#2}% +\long\def\XINT_keepunbraced_finish_loop_c #1#2#3% + {\XINT_keepunbraced_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}% + \expandafter{\romannumeral`&&@#2}% }% \def\xinttrimnoexpand #1% {% @@ -442,11 +527,42 @@ \csname xint_gobble_\romannumeral\numexpr#1\endcsname }% \long\def\XINT_trim_finish_a #1\xint_relax #2\xint_bye {#1}% +\def\xintTrimUnbraced {\romannumeral0\xinttrimunbraced }% +\def\xintTrimUnbracedNoExpand {\romannumeral0\xinttrimunbracednoexpand }% +\def\xinttrimunbraced #1#2% +{% + \expandafter\XINT_trimunbraced_a\the\numexpr #1\expandafter.% + \expandafter{\romannumeral`&&@#2}% +}% +\def\xinttrimunbracednoexpand #1% +{% + \expandafter\XINT_trimunbraced_a\the\numexpr #1.% +}% +\def\XINT_trimunbraced_a #1#2.% +{% + \xint_UDzerominusfork + #1-{\xint_firstofone_thenstop }% + 0#1{\XINT_trimunbraced_bneg_a {#2}}% + 0-{\XINT_trim_bpos {#1#2}}% + \krof +}% +\long\def\XINT_trimunbraced_bneg_a #1#2% +{% + \expandafter\XINT_trimunbraced_bneg_b \the\numexpr \xintLength{#2}-#1.{#2}% +}% +\def\XINT_trimunbraced_bneg_b #1#2.% +{% + \xint_UDzerominusfork + #1-{\expandafter\space\xint_gobble_i }% + 0#1{\expandafter\space\xint_gobble_i }% + 0-{\XINT_keepunbraced_bpos {#1#2}}% + \krof +}% \def\xintApply {\romannumeral0\xintapply }% \def\xintApplyNoExpand {\romannumeral0\xintapplynoexpand }% \long\def\xintapply #1#2% {% - \expandafter\XINT_apply\expandafter {\romannumeral-`0#2}% + \expandafter\XINT_apply\expandafter {\romannumeral`&&@#2}% {#1}% }% \long\def\XINT_apply #1#2{\XINT_apply_loop_a {}{#2}#1\xint_bye }% @@ -456,7 +572,7 @@ \xint_bye #3\XINT_apply_end\xint_bye \expandafter \XINT_apply_loop_b - \expandafter {\romannumeral-`0#2{#3}}{#1}{#2}% + \expandafter {\romannumeral`&&@#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 @@ -465,7 +581,7 @@ \def\xintApplyUnbracedNoExpand {\romannumeral0\xintapplyunbracednoexpand }% \long\def\xintapplyunbraced #1#2% {% - \expandafter\XINT_applyunbr\expandafter {\romannumeral-`0#2}% + \expandafter\XINT_applyunbr\expandafter {\romannumeral`&&@#2}% {#1}% }% \long\def\XINT_applyunbr #1#2{\XINT_applyunbr_loop_a {}{#2}#1\xint_bye }% @@ -475,7 +591,7 @@ {% \xint_bye #3\XINT_applyunbr_end\xint_bye \expandafter\XINT_applyunbr_loop_b - \expandafter {\romannumeral-`0#2{#3}}{#1}{#2}% + \expandafter {\romannumeral`&&@#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 @@ -627,7 +743,7 @@ \def\XINT_xflet_zapsp {% \expandafter\futurelet\expandafter\XINT_token - \expandafter\XINT_xflet_sp?\romannumeral-`0% + \expandafter\XINT_xflet_sp?\romannumeral`&&@% }% \def\XINT_xflet_sp? {% @@ -639,7 +755,7 @@ \def\XINT_xflet_zapspB {% \expandafter\futurelet\expandafter\XINT_tokenB - \expandafter\XINT_xflet_spB?\romannumeral-`0% + \expandafter\XINT_xflet_spB?\romannumeral`&&@% }% \def\XINT_xflet_spB? {% @@ -810,8 +926,8 @@ \def\XINT_?expr_Va #1#2% {% \expandafter\XINT_?expr_Vb\expandafter - {\romannumeral-`0\xintrawwithzeros{\xintZapSpacesB{#2}}}% - {\romannumeral-`0\xintrawwithzeros{\xintZapSpacesB{#1}}}% + {\romannumeral`&&@\xintrawwithzeros{\xintZapSpacesB{#2}}}% + {\romannumeral`&&@\xintrawwithzeros{\xintZapSpacesB{#1}}}% }% \catcode`Z 3 \def\XINT_?expr_Vb #1#2{\expandafter\XINT_?expr_Vc #2.#1.}% @@ -858,7 +974,7 @@ {% \expandafter\expandafter\expandafter \XINT_forever_opt_c\expandafter\the\expandafter\XINT_toks - \romannumeral-`0#1{#4}{#5}#3% + \romannumeral`&&@#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% @@ -869,7 +985,7 @@ \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}% + \expandafter\XINT_forever_d\expandafter #1\romannumeral`&&@#4{#2}{#3}#4{#5}% }% \catcode`j 3 \long\def\xintForpair #1#2#3in#4#5#6% @@ -957,7 +1073,7 @@ \long\def\XINT_assign_a #1\to {% \def\XINT_flet_macro{\XINT_assign_b}% - \expandafter\XINT_flet_zapsp\romannumeral-`0#1\xint_relax\to + \expandafter\XINT_flet_zapsp\romannumeral`&&@#1\xint_relax\to }% \long\def\XINT_assign_b {% @@ -1025,7 +1141,7 @@ \expandafter\def\expandafter\xint_arrayname\expandafter {\string #2}% \XINT_restoreescapechar \def\xint_itemcount {0}% - \expandafter\XINT_assignarray_loop \romannumeral-`0#1\xint_relax + \expandafter\XINT_assignarray_loop \romannumeral`&&@#1\xint_relax \csname\xint_arrayname 00\expandafter\endcsname \csname\xint_arrayname 0\expandafter\endcsname \expandafter {\xint_arrayname}#2% |