diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/xint/xintexpr.sty')
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintexpr.sty | 96 |
1 files changed, 81 insertions, 15 deletions
diff --git a/Master/texmf-dist/tex/generic/xint/xintexpr.sty b/Master/texmf-dist/tex/generic/xint/xintexpr.sty index 979511d5410..68fa92e62d3 100644 --- a/Master/texmf-dist/tex/generic/xint/xintexpr.sty +++ b/Master/texmf-dist/tex/generic/xint/xintexpr.sty @@ -21,7 +21,7 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- -%% The xint bundle 1.3 2018/03/01 +%% The xint bundle 1.3a 2018/03/07 %% Copyright (C) 2013-2018 by Jean-Francois Burnol %% xintexpr: Expandable expression parser %% --------------------------------------------------------------- @@ -81,7 +81,7 @@ \XINTsetupcatcodes% \XINT_providespackage \ProvidesPackage{xintexpr}% - [2018/03/01 1.3 Expandable expression parser (JFB)]% + [2018/03/07 1.3a Expandable expression parser (JFB)]% \catcode`! 11 \let\XINT_Cmp \xintiiCmp \def\xint_gob_til_! #1!{}% ! with catcode 11 @@ -2543,20 +2543,50 @@ }% \let\XINT_flexpr_func_reversed\XINT_expr_func_reversed \let\XINT_iiexpr_func_reversed\XINT_expr_func_reversed -\def\xintifNotZero: #1,#2,#3,{\xintiiifNotZero{#1}{#2}{#3}}% +\def\xintiiifNotZero: #1,#2,#3,{\xintiiifNotZero{#1}{#2}{#3}}% \def\XINT_expr_func_if #1#2#3% {% \expandafter #1\expandafter #2\csname.=% - \expandafter\xintifNotZero:% + \expandafter\xintiiifNotZero:% \romannumeral`&&@\XINT_expr_unlock #3,\endcsname }% \let\XINT_flexpr_func_if\XINT_expr_func_if \let\XINT_iiexpr_func_if\XINT_expr_func_if -\def\xintifSgn: #1,#2,#3,#4,{\xintiiifSgn{#1}{#2}{#3}{#4}}% +\def\xintifInt: #1,#2,#3,{\xintifInt{#1}{#2}{#3}}% +\def\XINT_expr_func_ifint #1#2#3% +{% + \expandafter #1\expandafter #2\csname.=% + \expandafter\xintifInt:% + \romannumeral`&&@\XINT_expr_unlock #3,\endcsname +}% +\let\XINT_iiexpr_func_ifint\XINT_expr_func_ifint +\def\xintifFloatInt: #1,#2,#3,{\xintifFloatInt{#1}{#2}{#3}}% +\def\XINT_flexpr_func_ifint #1#2#3% +{% + \expandafter #1\expandafter #2\csname.=% + \expandafter\xintifFloatInt:% + \romannumeral`&&@\XINT_expr_unlock #3,\endcsname +}% +\def\xintifOne: #1,#2,#3,{\xintifOne{#1}{#2}{#3}}% +\def\XINT_expr_func_ifone #1#2#3% +{% + \expandafter #1\expandafter #2\csname.=% + \expandafter\xintifOne:% + \romannumeral`&&@\XINT_expr_unlock #3,\endcsname +}% +\let\XINT_flexpr_func_ifone\XINT_expr_func_ifone +\def\xintiiifOne: #1,#2,#3,{\xintiiifOne{#1}{#2}{#3}}% +\def\XINT_iiexpr_func_ifone #1#2#3% +{% + \expandafter #1\expandafter #2\csname.=% + \expandafter\xintiiifOne:% + \romannumeral`&&@\XINT_expr_unlock #3,\endcsname +}% +\def\xintiiifSgn: #1,#2,#3,#4,{\xintiiifSgn{#1}{#2}{#3}{#4}}% \def\XINT_expr_func_ifsgn #1#2#3% {% \expandafter #1\expandafter #2\csname.=% - \expandafter\xintifSgn:% + \expandafter\xintiiifSgn:% \romannumeral`&&@\XINT_expr_unlock #3,\endcsname }% \let\XINT_flexpr_func_ifsgn\XINT_expr_func_ifsgn @@ -2687,7 +2717,7 @@ {\csname XINT_#1_userfunc_#2\expandafter\endcsname \romannumeral0\xintcsvtolistnonstripped{#3}}% \def\XINT:newexpr:userfunc #1#2#3% - {~csname XINT_#1_userfunc_#2~endcsname\xintCSVtoListNonStripped{#3}}% + {~xintExpandArgs{XINT_#1_userfunc_#2}{\xintCSVtoListNonStripped{#3}}}% \def\XINT_expr_wrapit #1{\expandafter\XINT_expr_wrap\csname.=#1\endcsname}% \def\xintNewFunction #1#2[#3]#4% {% @@ -2861,20 +2891,52 @@ \XINT:NE:two#3{#1}{#2}% }% \let\XINT:newflexpr:two:to:one\XINT:newexpr:two:to:one -\def\xintifNotZeroNE:#1#2,#3,#4,% +\def\xintiiifNotZeroNE:#1#2,#3,#4,% +{% + \if1\if###11\else\if~#11\else\if$#11\else0%$ + \fi\fi\fi + \xint_dothis{~xintiiifNotZero}\fi + \xint_orthat\xintiiifNotZero + {#1#2}{#3}{#4}% +}% +\def\xintifIntNE:#1#2,#3,#4,% +{% + \if1\if###11\else\if~#11\else\if$#11\else0%$ + \fi\fi\fi + \xint_dothis{~xintifInt}\fi + \xint_orthat\xintifInt + {#1#2}{#3}{#4}% +}% +\def\xintifFloatIntNE:#1#2,#3,#4,% +{% + \if1\if###11\else\if~#11\else\if$#11\else0%$ + \fi\fi\fi + \xint_dothis{~xintifFloatInt}\fi + \xint_orthat\xintifFloatInt + {#1#2}{#3}{#4}% +}% +\def\xintiiifOneNE:#1#2,#3,#4,% +{% + \if1\if###11\else\if~#11\else\if$#11\else0%$ + \fi\fi\fi + \xint_dothis{~xintiiifOne}\fi + \xint_orthat\xintiiifOne + {#1#2}{#3}{#4}% +}% +\def\xintifOneNE:#1#2,#3,#4,% {% \if1\if###11\else\if~#11\else\if$#11\else0%$ \fi\fi\fi - \xint_dothis{~xintifNotZero}\fi - \xint_orthat\xintifNotZero + \xint_dothis{~xintifOne}\fi + \xint_orthat\xintifOne {#1#2}{#3}{#4}% }% -\def\xintifSgnNE:#1#2,#3,#4,#5,% +\def\xintiiifSgnNE:#1#2,#3,#4,#5,% {% \if1\if###11\else\if~#11\else\if$#11\else0%$ \fi\fi\fi - \xint_dothis{~xintifSgn}\fi - \xint_orthat\xintifSgn + \xint_dothis{~xintiiifSgn}\fi + \xint_orthat\xintiiifSgn {#1#2}{#3}{#4}{#5}% }% \def\XINT_expr_redefinemacros {% @@ -2890,8 +2952,12 @@ \let\XINT:expr:two:to:one \XINT:newexpr:two:to:one \let\XINT:flexpr:two:to:two \XINT:newflexpr:two:to:two \let\XINT:flexpr:two:to:one \XINT:newflexpr:two:to:one - \let\xintifNotZero: \xintifNotZeroNE: - \let\xintifSgn: \xintifSgnNE: + \let\xintiiifNotZero: \xintiiifNotZeroNE: + \let\xintifInt: \xintifIntNE: + \let\xintifFloatInt: \xintifFloatIntNE: + \let\xintiiifOne: \xintiiifOneNE: + \let\xintifOne: \xintifOneNE: + \let\xintiiifSgn: \xintiiifSgnNE: \let\xintSeqNumeric::csv \xintSeq::csv \let\xintiiSeqNumeric::csv \xintiiSeq::csv \let\XINTinFloatSeqNumeric::csv \XINTinFloatSeq::csv |