diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/xint/xintexpr.sty')
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintexpr.sty | 80 |
1 files changed, 30 insertions, 50 deletions
diff --git a/Master/texmf-dist/tex/generic/xint/xintexpr.sty b/Master/texmf-dist/tex/generic/xint/xintexpr.sty index 8df9da27a74..c6889155f66 100644 --- a/Master/texmf-dist/tex/generic/xint/xintexpr.sty +++ b/Master/texmf-dist/tex/generic/xint/xintexpr.sty @@ -21,8 +21,8 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- -%% The xint bundle 1.4c 2021/02/20 -%% Copyright (C) 2013-2020 by Jean-Francois Burnol +%% The xint bundle 1.4d 2021/03/29 +%% Copyright (C) 2013-2021 by Jean-Francois Burnol %% xintexpr: Expandable expression parser %% --------------------------------------------------------------- \begingroup\catcode61\catcode48\catcode32=10\relax% @@ -82,7 +82,7 @@ \XINTsetupcatcodes% \XINT_providespackage \ProvidesPackage{xintexpr}% - [2021/02/20 v1.4c Expandable expression parser (JFB)]% + [2021/03/29 v1.4d Expandable expression parser (JFB)]% \catcode`! 11 \let\XINT_Cmp \xintiiCmp \def\XINTfstop{\noexpand\XINTfstop}% @@ -107,8 +107,13 @@ \def\XINT:expr:toblist_a #1{#2% <% \if{#2\xint_dothis<[\XINT:expr:toblist_a>\fi + \if P#2\xint_dothis<\XINT:expr:toblist_pol>\fi \xint_orthat\XINT:expr:toblist_b #1#2% >% +\def\XINT:expr:toblist_pol #1!#2.{#3}}% +<% + pol([\XINT:expr:toblist_b #1!#3}^])\XINT:expr:toblist_c #1!}% +>% \def\XINT:expr:toblist_b #1!#2}% <% \if\relax#2\relax\xintexprEmptyItem\else#1<#2>\fi\XINT:expr:toblist_c #1!}% @@ -388,7 +393,6 @@ \let\XINT:NEhook:f:one:from:two\expandafter \let\XINT:NEhook:f:one:from:two:direct\empty \let\XINT:NEhook:x:one:from:two\empty -\let\XINT:NEhook:x:one:from:twoandone\empty \let\XINT:NEhook:f:one:and:opt:direct \empty \let\XINT:NEhook:f:tacitzeroifone:direct \empty \let\XINT:NEhook:f:iitacitzeroifone:direct \empty @@ -1112,11 +1116,11 @@ \XINT_expr_defbin_b {flexpr}{xor}{vi}{xii} {xintXOR}% \XINT_expr_defbin_b {iiexpr}{xor}{vi}{xii} {xintXOR}% \XINT_expr_defbin_b {expr} {//} {xiv}{xiv}{xintDivFloor}% -\XINT_expr_defbin_b {flexpr}{//} {xiv}{xiv}{XINTinFloatDivFloor}% " -\XINT_expr_defbin_b {iiexpr}{//} {xiv}{xiv}{xintiiDivFloor}% " -\XINT_expr_defbin_b {expr} {/:} {xiv}{xiv}{xintMod}% " -\XINT_expr_defbin_b {flexpr}{/:} {xiv}{xiv}{XINTinFloatMod}% " -\XINT_expr_defbin_b {iiexpr}{/:} {xiv}{xiv}{xintiiMod}% " +\XINT_expr_defbin_b {flexpr}{//} {xiv}{xiv}{XINTinFloatDivFloor}% +\XINT_expr_defbin_b {iiexpr}{//} {xiv}{xiv}{xintiiDivFloor}% +\XINT_expr_defbin_b {expr} {/:} {xiv}{xiv}{xintMod}% +\XINT_expr_defbin_b {flexpr}{/:} {xiv}{xiv}{XINTinFloatMod}% +\XINT_expr_defbin_b {iiexpr}{/:} {xiv}{xiv}{xintiiMod}% \XINT_expr_defbin_b {expr} + {xii}{xii}{xintAdd}% \XINT_expr_defbin_b {flexpr} + {xii}{xii}{XINTinFloatAdd}% \XINT_expr_defbin_b {iiexpr} + {xii}{xii}{xintiiAdd}% @@ -1841,7 +1845,7 @@ *\unexpanded{\expandafter\expandafter}% \expandafter\noexpand\csname XINT_expr_var_#1\endcsname(}% \ifxintverbose\xintMessage{xintexpr}{Info} - {Variable "#1" \ifxintglobaldefs globally \fi + {Variable #1 \ifxintglobaldefs globally \fi defined with value \csname XINT_expr_varvalue_#1\endcsname.}% \fi }% @@ -3143,27 +3147,13 @@ {\xintiiRandRange{#1}}% {\xintiiRandRangeAtoB{#1}{#2}}% }% -\def\XINT_expr_func_quo #1#2#3% -{% - \expandafter #1\expandafter #2\expandafter{\romannumeral`&&@% - \XINT:NEhook:f:one:from:two - {\romannumeral`&&@\xintiQuo #3}}% -}% -\let\XINT_flexpr_func_quo\XINT_expr_func_quo -\def\XINT_iiexpr_func_quo #1#2#3% +\def\XINT_iiexpr_func_iquo #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\romannumeral`&&@% \XINT:NEhook:f:one:from:two {\romannumeral`&&@\xintiiQuo #3}}% }% -\def\XINT_expr_func_rem #1#2#3% -{% - \expandafter #1\expandafter #2\expandafter{\romannumeral`&&@% - \XINT:NEhook:f:one:from:two - {\romannumeral`&&@\xintiRem #3}}% -}% -\let\XINT_flexpr_func_rem\XINT_expr_func_rem -\def\XINT_iiexpr_func_rem #1#2#3% +\def\XINT_iiexpr_func_irem #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\romannumeral`&&@% \XINT:NEhook:f:one:from:two @@ -3746,7 +3736,7 @@ }}\expandafter\XINT:NE:f:iitacitzeroifone:direct\string#% \def\XINT:NE:f:iitacitzeroifone_a #1#2&&A#3% {% - \detokenize{\romannumeral`-0\expandafter#1\expanded{#2}$XINT_expr_exclam#3}%$ + \detokenize{\romannumeral`$XINT_expr_null\expandafter#1\expanded{#2}$XINT_expr_exclam#3}% }% \def\XINT:NE:f:iitacitzeroifone_b\XINT:expr:f:iitacitzeroifone #1#2#3&&A#4% {% @@ -3767,16 +3757,6 @@ }}\expandafter\XINT:NE:x:one:from:two_fork\string#% \def\XINT:NE:x:one:from:two:p #1#2#3% {~expanded{\detokenize{\expandafter#1}~expanded{{#2}{#3}}}}% -\def\XINT:NE:x:one:from:twoandone #1#2#3{\XINT:NE:x:one:from:twoandone_a #2#3&&A#1{#2}{#3}}% -\def\XINT:NE:x:one:from:twoandone_a #1#2{\XINT:NE:x:one:from:twoandone_fork #1&&A#2&&A}% -\def\XINT:NE:x:one:from:twoandone_fork #1{% -\def\XINT:NE:x:one:from:twoandone_fork ##1##2&&A##3##4&&A##5##6&&A% -{% - \if0\XINT:NE:hastilde ##1##3##5~!\relax\XINT:NE:hashash ##1##3##5#1!\relax 0% - \else - \expandafter\XINT:NE:x:one:from:two:p - \fi -}}\expandafter\XINT:NE:x:one:from:twoandone_fork\string#% \def\XINT:NE:x:listsel #1{% \def\XINT:NE:x:listsel ##1##2&% {% @@ -3787,13 +3767,12 @@ \fi ##1##2&% }}\expandafter\XINT:NE:x:listsel\string#% -\def\XINT:NE:x:listsel:p #1#2&(#3% +\def\XINT:NE:x:listsel:p #1#2_#3&(#4% {% - \detokenize - {% - \expanded{\expandafter#1\expanded{#2$XINT_expr_tab({#3}}\expandafter\empty\empty}%$ - }% + \detokenize{\expanded\XINT:expr:ListSel{{#3}{#4}}}% }% +\def\XINT:expr:ListSel{\expandafter\XINT:expr:ListSel_i\expanded}% +\def\XINT:expr:ListSel_i #1#2{{\XINT_ListSel_top #2_#1&({#2}}}% \def\XINT:NE:f:reverse #1{% \def\XINT:NE:f:reverse ##1^% {% @@ -3806,13 +3785,14 @@ }}\expandafter\XINT:NE:f:reverse\string#% \def\XINT:NE:f:reverse:p #1^#2\xint_bye {% - \detokenize - {% - \romannumeral0\expandafter\XINT:expr:f:reverse - \expandafter{\expanded\expandafter{\xint_gobble_i#1}}% - }% + \expandafter\XINT:NE:f:reverse:p_i\expandafter{\xint_gobble_i#1}% +}% +\def\XINT:NE:f:reverse:p_i #1% +{% + \detokenize{\romannumeral0\XINT:expr:f:reverse{{#1}}}% }% -\def\XINT:expr:f:reverse #1% +\def\XINT:expr:f:reverse{\expandafter\XINT:expr:f:reverse_i\expanded}% +\def\XINT:expr:f:reverse_i #1% {% \XINT_expr_reverse #1^^#1\xint:\xint:\xint:\xint: \xint:\xint:\xint:\xint:\xint_bye @@ -3840,7 +3820,7 @@ ##1{##2}% }}\expandafter\XINT:NE:f:noeval:from:braced:u\string#% \def\XINT:NE:f:noeval:from:braced:u:p #1#2% - {\detokenize{\expandafter#1}~expanded{{#2}}}% + {\detokenize{\romannumeral`$XINT_expr_null\expandafter#1}~expanded{{#2}}}% \catcode`- 11 \def\XINT:NE:exec_? #1#2% {% @@ -4210,7 +4190,6 @@ \let\XINT:NEhook:f:one:from:two \XINT:NE:f:one:from:two \let\XINT:NEhook:f:one:from:two:direct \XINT:NE:f:one:from:two:direct \let\XINT:NEhook:x:one:from:two \XINT:NE:x:one:from:two - \let\XINT:NEhook:x:one:from:twoandone \XINT:NE:x:one:from:twoandone \let\XINT:NEhook:f:one:and:opt:direct \XINT:NE:f:one:and:opt:direct \let\XINT:NEhook:f:tacitzeroifone:direct \XINT:NE:f:tacitzeroifone:direct \let\XINT:NEhook:f:iitacitzeroifone:direct \XINT:NE:f:iitacitzeroifone:direct @@ -4280,6 +4259,7 @@ \def\XINT_expr_tilde{~}\def\XINT_expr_qmark{?}% catcode 3 \def\XINT_expr_caret{^}\def\XINT_expr_exclam{!}% catcode 11 \def\XINT_expr_tab{&}% catcode 7 +\def\XINT_expr_null{&&@}% \catcode`~ 13 \catcode`@ 14 \catcode`\% 6 \catcode`# 12 \catcode`$ 11 @ $ \def\XINT_NewExpr_a %1%2%3%4%5@ {@ |