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.sty160
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%