summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/xint/xintexpr.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/xint/xintexpr.sty')
-rw-r--r--Master/texmf-dist/tex/generic/xint/xintexpr.sty96
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