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.sty96
1 files changed, 70 insertions, 26 deletions
diff --git a/Master/texmf-dist/tex/generic/xint/xinttools.sty b/Master/texmf-dist/tex/generic/xint/xinttools.sty
index 9b0414b32fa..945f73bf1b5 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 (version 1.09h of November 28, 2013)
+%% The xint bundle (version 1.09i of December 18, 2013)
%% xinttools: Expandable and non-expandable utilities
%% Copyright (C) 2013 by Jean-Francois Burnol
%%----------------------------------------------------------------
@@ -120,7 +120,7 @@
\catcode40=12 % (
\catcode41=12 % )
\catcode47=12 % /
- \catcode96=12 % `
+ \catcode96=12 % ` (for ubiquitous \romannumeral-`0 and some \catcode )
\catcode94=11 % ^
\catcode36=3 % $
\catcode91=12 % [
@@ -150,7 +150,7 @@
\fi
\XINT_providespackage
\ProvidesPackage {xinttools}%
- [2013/11/28 v1.09h Expandable and non-expandable utilities (jfB)]%
+ [2013/12/18 v1.09i Expandable and non-expandable utilities (jfB)]%
\long\def\xint_gobble_ {}%
\long\def\xint_gobble_i #1{}%
\long\def\xint_gobble_ii #1#2{}%
@@ -164,9 +164,9 @@
\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 { -}%
+\long\def\xint_firstoftwo_afterstop #1#2{ #1}%
+\long\def\xint_secondoftwo_afterstop #1#2{ #2}%
+\def\xint_minus_afterstop { -}%
\long\def\xint_gob_til_R #1\R {}%
\long\def\xint_gob_til_W #1\W {}%
\long\def\xint_gob_til_Z #1\Z {}%
@@ -178,6 +178,18 @@
\chardef\xint_c_ 0
\chardef\xint_c_viii 8
\newtoks\XINT_toks
+\def\XINT_odef #1{\expandafter\def\expandafter#1\expandafter }%
+\ifdefined\odef\else\let\odef\XINT_odef\fi
+\def\XINT_godef {\global\XINT_odef }%
+\def\XINT_oodef #1{\expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter#1%
+ \expandafter\expandafter\expandafter }%
+\ifdefined\oodef\else\let\oodef\XINT_oodef\fi
+\def\XINT_goodef {\global\XINT_oodef }%
+\def\XINT_fdef #1#2{\expandafter\def\expandafter#1\expandafter
+ {\romannumeral-`0#2}}%
+\ifdefined\fdef\else\let\fdef\XINT_fdef\fi
+\def\XINT_gfdef {\global\XINT_fdef }%
\def\xintReverseOrder {\romannumeral0\xintreverseorder }%
\long\def\xintreverseorder #1%
{%
@@ -192,9 +204,9 @@
\xint_bye #9\XINT_rord_cleanup\xint_bye
\XINT_rord_main {#9#8#7#6#5#4#3#2#1}%
}%
-\long\def\XINT_rord_cleanup\xint_bye\XINT_rord_main #1#2\xint_relax
+\long\edef\XINT_rord_cleanup\xint_bye\XINT_rord_main #1#2\xint_relax
{%
- \expandafter\space\xint_gob_til_xint_relax #1%
+ \noexpand\expandafter\space\noexpand\xint_gob_til_xint_relax #1%
}%
\def\xintRevWithBraces {\romannumeral0\xintrevwithbraces }%
\def\xintRevWithBracesNoExpand {\romannumeral0\xintrevwithbracesnoexpand }%
@@ -266,7 +278,8 @@
#7\XINT_length_finish_c 2%
\W\XINT_length_finish_c 1\Z
}%
-\def\XINT_length_finish_c #1#2\Z #3{\expandafter\space\the\numexpr #3-#1\relax}%
+\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 }%
@@ -452,9 +465,9 @@
\expandafter\expandafter\expandafter\XINT_nthelt_finish
\csname xint_gobble_\romannumeral\numexpr#1-1\endcsname
}%
-\long\def\XINT_nthelt_finish #1#2\xint_bye
- {\xint_gob_til_xint_relax #1\expandafter\space
- \xint_gobble_iii\xint_relax\space #1}%
+\long\edef\XINT_nthelt_finish #1#2\xint_bye
+ {\noexpand\xint_gob_til_xint_relax #1\noexpand\expandafter\space
+ \noexpand\xint_gobble_iii\xint_relax\space #1}%
\def\xintApply {\romannumeral0\xintapply }%
\def\xintApplyNoExpand {\romannumeral0\xintapplynoexpand }%
\long\def\xintapply #1#2%
@@ -509,7 +522,7 @@
\def\XINT_seq #1#2%
{%
\ifcase\ifnum #1=#2 0\else\ifnum #2>#1 1\else -1\fi\fi\space
- \expandafter\xint_firstoftwo_andstop
+ \expandafter\xint_firstoftwo_afterstop
\or
\expandafter\XINT_seq_p
\else
@@ -935,27 +948,41 @@
}%
\catcode`Z 11
\catcode`j 11
-\long\def\xintAssign #1\to
+\def\xintAssign{\def\XINT_flet_macro {\XINT_assign_fork}\XINT_flet_zapsp }%
+\def\XINT_assign_fork
{%
- \expandafter\XINT_assign_a\romannumeral-`0#1{}\to
+ \let\XINT_assign_def\edef
+ \ifx\XINT_token[\expandafter\XINT_assign_opt
+ \else\expandafter\XINT_assign_a
+ \fi
+}%
+\def\XINT_assign_opt [#1]%
+{%
+ \expandafter\let\expandafter\XINT_assign_def \csname XINT_#1def\endcsname
+ \XINT_assign_a
+}%
+\long\def\XINT_assign_a #1\to
+{%
+ \expandafter\XINT_assign_b\romannumeral-`0#1{}\to
}%
-\long\def\XINT_assign_a #1% attention to the # at the beginning of next line
+\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_b
+ \expandafter\XINT_assign_c
\else
- \expandafter\XINT_assign_B
+ \expandafter\XINT_assign_d
\fi
}%
-\long\def\XINT_assign_b #1#2\to #3%
+\long\def\XINT_assign_c #1#2\to #3%
{%
- \edef #3{#1}\def\xint_temp {#2}%
- \unless\ifx\empty\xint_temp\xint_afterfi{\XINT_assign_a #2\to }\fi
+ \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_B #1\to #2%
+\def\XINT_assign_d #1\to #2% normally #1 is {} here.
{%
- \edef #2{\xint_temp}%
+ \expandafter\XINT_assign_def\expandafter #2\expandafter{\xint_temp}%
}%
\def\xintRelaxArray #1%
{%
@@ -971,7 +998,22 @@
\global\expandafter\let\csname\xint_arrayname 00\endcsname\relax
\global\let #1\relax
}%
-\long\def\xintAssignArray #1\to #2%
+\def\xintAssignArray{\def\XINT_flet_macro {\XINT_assignarray_fork}%
+ \XINT_flet_zapsp }%
+\def\XINT_assignarray_fork
+{%
+ \let\XINT_assignarray_def\edef
+ \ifx\XINT_token[\expandafter\XINT_assignarray_opt
+ \else\expandafter\XINT_assignarray
+ \fi
+}%
+\def\XINT_assignarray_opt [#1]%
+{%
+ \expandafter\let\expandafter\XINT_assignarray_def
+ \csname XINT_#1def\endcsname
+ \XINT_assignarray
+}%
+\long\def\XINT_assignarray #1\to #2%
{%
\edef\XINT_restoreescapechar {\escapechar\the\escapechar\relax }%
\escapechar -1
@@ -993,8 +1035,9 @@
\else
\expandafter\def\expandafter\xint_itemcount\expandafter
{\the\numexpr\xint_itemcount+\xint_c_i}%
- \expandafter\edef
- \csname\xint_arrayname\xint_itemcount\endcsname {\xint_temp }%
+ \expandafter\XINT_assignarray_def
+ \csname\xint_arrayname\xint_itemcount\expandafter\endcsname
+ \expandafter{\xint_temp }%
\expandafter\XINT_assignarray_loop
\fi
}%
@@ -1019,6 +1062,7 @@
}%
}%
\let\xintDigitsOf\xintAssignArray
+\let\XINT_tmpa\relax \let\XINT_tmpb\relax \let\XINT_tmpc\relax
\XINT_restorecatcodes_endinput%
\endinput
%%