diff options
author | Norbert Preining <preining@logic.at> | 2013-05-27 05:00:41 +0000 |
---|---|---|
committer | Norbert Preining <preining@logic.at> | 2013-05-27 05:00:41 +0000 |
commit | 04fd1776023ee2133a059a5a7c0974705552be89 (patch) | |
tree | 146f87138e07a550161e6dd7d59dec64a9049238 /Master/texmf-dist/tex/generic/xint/xintexpr.sty | |
parent | 9187fc6b720d7c26139a39d4edfec826fd9fbe25 (diff) |
xint update (5/27)
git-svn-id: svn://tug.org/texlive/trunk@30723 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/xint/xintexpr.sty')
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintexpr.sty | 769 |
1 files changed, 769 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/xint/xintexpr.sty b/Master/texmf-dist/tex/generic/xint/xintexpr.sty new file mode 100644 index 00000000000..14fc53b418c --- /dev/null +++ b/Master/texmf-dist/tex/generic/xint/xintexpr.sty @@ -0,0 +1,769 @@ +%% +%% This is file `xintexpr.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% xint.dtx (with options: `xintexpr') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from xintexpr.sty. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file xint.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +%% +%%---------------------------------------------------------------- +%% The xint bundle (version 1.07a of May 26, 2013) +%% xintexpr: Expandable expression parser +%% Copyright (C) 2013 by Jean-Francois Burnol +%%---------------------------------------------------------------- +%% +\begingroup\catcode61\catcode48\catcode32=10\relax% + \catcode13=5 % ^^M + \endlinechar=13 % + \catcode123=1 % { + \catcode125=2 % } + \catcode64=11 % @ + \catcode35=6 % # + \catcode44=12 % , + \catcode45=12 % - + \catcode46=12 % . + \catcode58=12 % : + \def\space { }% + \let\z\endgroup + \expandafter\let\expandafter\x\csname ver@xintexpr.sty\endcsname + \expandafter\let\expandafter\w\csname ver@xintfrac.sty\endcsname + \expandafter + \ifx\csname PackageInfo\endcsname\relax + \def\y#1#2{\immediate\write-1{Package #1 Info: #2.}}% + \else + \def\y#1#2{\PackageInfo{#1}{#2}}% + \fi + \expandafter + \ifx\csname numexpr\endcsname\relax + \y{xintexpr}{\numexpr not available, aborting input}% + \aftergroup\endinput + \else + \ifx\x\relax % plain-TeX, first loading of xintexpr.sty + \ifx\w\relax % but xintfrac.sty not yet loaded. + \y{xintexpr}{Package xintfrac is required}% + \y{xintexpr}{Will try \string\input\space xintfrac.sty}% + \def\z{\endgroup\input xintfrac.sty\relax}% + \fi + \else + \def\empty {}% + \ifx\x\empty % LaTeX, first loading, + % variable is initialized, but \ProvidesPackage not yet seen + \ifx\w\relax % xintfrac.sty not yet loaded. + \y{xintexpr}{Package xintfrac is required}% + \y{xintexpr}{Will try \string\RequirePackage{xintfrac}}% + \def\z{\endgroup\RequirePackage{xintfrac}}% + \fi + \else + \y{xintexpr}{I was already loaded, aborting input}% + \aftergroup\endinput + \fi + \fi + \fi +\z% +\begingroup\catcode61\catcode48\catcode32=10\relax% + \catcode13=5 % ^^M + \endlinechar=13 % + \catcode123=1 % { + \catcode125=2 % } + \catcode64=11 % @ + \catcode35=6 % # + \catcode44=12 % , + \catcode45=12 % - + \catcode46=12 % . + \catcode58=12 % : + \expandafter + \ifx\csname PackageInfo\endcsname\relax + \def\y#1#2{\immediate\write-1{Package #1 Info: #2.}}% + \else + \def\y#1#2{\PackageInfo{#1}{#2}}% + \fi + \def\empty {}% + \expandafter\let\expandafter\w\csname ver@xintfrac.sty\endcsname + \ifx\w\relax % Plain TeX, user gave a file name at the prompt + \y{xintexpr}{Loading of package xintfrac failed, aborting input}% + \aftergroup\endinput + \fi + \ifx\w\empty % LaTeX, user gave a file name at the prompt + \y{xintexpr}{Loading of package xintfrac failed, aborting input}% + \aftergroup\endinput + \fi +\endgroup% +\begingroup\catcode61\catcode48\catcode32=10\relax% + \catcode13=5 % ^^M + \endlinechar=13 % + \catcode123=1 % { + \catcode125=2 % } + \catcode95=11 % _ + \def\x + {% + \endgroup + \edef\XINT_expr_restorecatcodes_endinput + {% + \catcode94=\the\catcode94 % ^ + \catcode33=\the\catcode33 % ! + \catcode93=\the\catcode93 % ] + \catcode91=\the\catcode91 % [ + \catcode96=\the\catcode96 % ` + \catcode47=\the\catcode47 % / + \catcode41=\the\catcode41 % ) + \catcode40=\the\catcode40 % ( + \catcode42=\the\catcode42 % * + \catcode43=\the\catcode43 % + + \catcode62=\the\catcode62 % > + \catcode60=\the\catcode60 % < + \catcode58=\the\catcode58 % : + \catcode46=\the\catcode46 % . + \catcode45=\the\catcode45 % - + \catcode44=\the\catcode44 % , + \catcode35=\the\catcode35 % # + \catcode95=\the\catcode95 % _ + \catcode125=\the\catcode125 % } + \catcode123=\the\catcode123 % { + \endlinechar=\the\endlinechar + \catcode13=\the\catcode13 % ^^M + \catcode32=\the\catcode32 % + \catcode61=\the\catcode61\relax % = + \noexpand\endinput + }% + \XINT_setcatcodes + \catcode91=12 % [ + \catcode93=12 % ] + \catcode33=11 % ! + \catcode94=12 % ^ + }% +\x +\begingroup + \catcode64=11 % @ + \catcode58=12 % : + \expandafter\ifx\csname ProvidesPackage\endcsname\relax + \def\x#1#2#3[#4]{\endgroup + \immediate\write-1{Package: #3 #4}% + \xdef#1{#4}% + }% + \else + \def\x#1#2[#3]{\endgroup + #2[{#3}]% + \ifx#1\@undefined + \xdef#1{#3}% + \fi + \ifx#1\relax + \xdef#1{#3}% + \fi + }% + \fi +\expandafter\x\csname ver@xintexpr.sty\endcsname +\ProvidesPackage{xintexpr}% + [2013/05/26 v1.07a Expandable expression parser (jfB)]% +\chardef\xint_c_ 0 +\chardef\xint_c_i 1 +\chardef\xint_c_ii 2 +\chardef\xint_c_iii 3 +\chardef\xint_c_iv 4 +\chardef\xint_c_v 5 +\chardef\xint_c_ix 9 +\def\xint_gob_til_dot #1.{}% +\def\xint_gob_til_dot_andstop #1.{ }% +\def\xint_gob_til_! #1!{}% ! of catcode 11 +\def\XINT_expr_string {\expandafter\xint_gob_til_dot\string }% +\def\XINT_expr_unexpectedtoken {\xintError:ignored }% +\def\xintexpr {\romannumeral0\xinteval }% +\def\xinteval +{% + \expandafter\XINT_expr_until_end\romannumeral-`0% + \expandafter\XINT_expr_checkifprefix_ii\romannumeral-`0% + \XINT_expr_getnext +}% +\def\xinttheexpr {\romannumeral0\xinttheeval }% +\def\xinttheeval {\expandafter\XINT_expr_the\romannumeral0\xinteval }% +\def\XINT_expr_the #1#2#3{\xintraw{\XINT_expr_string #3}}% +\def\xintthe #1{\ifx#1\xintexpr \expandafter\xinttheexpr + \else\expandafter\xintthefloatexpr\fi}% +\def\XINT_expr_until_end #1% +{% + \ifcase#1% + \expandafter\xint_gobble_vi + \or + \expandafter\XINT_expr_extra_closing_paren + \fi + \expandafter\XINT_expr_until_end\romannumeral-`0% +}% +\def\XINT_expr_extra_closing_paren {\xintError:removed }% +\def\XINT_expr_endofexpr {!\XINT_illegaluse }% +\def\XINT_illegaluse + {Illegal_here_use_xintthe\xintError:use_xintthe!\xint_gobble_i }% +\def\XINT_expr_oparen +{% + \expandafter\XINT_expr_until_cparen\romannumeral-`0% + \expandafter\XINT_expr_checkifprefix_ii\romannumeral-`0% + \XINT_expr_getnext +}% +\def\XINT_expr_until_cparen #1% +{% + \ifcase#1% + \expandafter\XINT_expr_missing_cparen + \or + \else \xint_afterfi{\expandafter\XINT_expr_until_cparen\romannumeral-`0}% + \fi +}% +\def\XINT_expr_missing_cparen #1% +{% + \xintError:inserted \xint_c_ \XINT_expr_endofexpr +}% +\def\xint_tmp_def #1#2#3% +{% + \expandafter\xint_tmp_do_defs + \csname XINT_expr_op_#1\expandafter\endcsname + \csname XINT_expr_until_#1\expandafter\endcsname + \csname XINT_expr_checkifprefix_#2\expandafter\endcsname + \csname XINT_expr_precedence_#1\expandafter\endcsname + \csname xint_c_#2\expandafter\endcsname + \csname xint#3\endcsname +}% +\def\xint_tmp_do_defs #1#2#3#4#5#6% +{% + \def #1##1% \XINT_expr_op_? + {% + \expandafter #2\expandafter ##1\romannumeral-`0\expandafter + #3\romannumeral-`0\XINT_expr_getnext + }% + \def #2##1##2##3##4% \XINT_expr_until_? + {% + \ifnum ##2>#5% + \xint_afterfi {\expandafter #2\expandafter ##1\romannumeral-`0##3##4}% + \else + \xint_afterfi + {\expandafter ##2\expandafter ##3% + \csname .#6{\XINT_expr_string ##1}{\XINT_expr_string ##4}\endcsname }% + \fi + }% + \global\let #4#5% +}% +\xint_tmp_def +{ii}{Add}% +\xint_tmp_def -{ii}{Sub}% +\xint_tmp_def *{iii}{Mul}% +\xint_tmp_def /{iii}{Div}% +\xint_tmp_def ^{iv}{fPow}% +\xint_tmp_def e{v}{fE}% +\xint_tmp_def E{v}{fE}% +\def\xint_tmp_def #1% +{% + \expandafter\xint_tmp_do_defs + \csname XINT_expr_checkifprefix_#1\expandafter\endcsname + \csname XINT_expr_op_-#1\endcsname +}% +\def\xint_tmp_do_defs #1#2% +{% + \def #1##1% + {\xint_UDsignfork + ##1\dummy #2% + -\dummy ##1% + \krof }% +}% +\xint_tmp_def {ii}% +\xint_tmp_def {iii}% +\xint_tmp_def {iv}% +\xint_tmp_def {v}% +\def\xint_tmp_def #1% +{% + \expandafter\xint_tmp_do_defs + \csname XINT_expr_op_-#1\expandafter\endcsname + \csname XINT_expr_until_-#1\expandafter\endcsname + \csname XINT_expr_checkifprefix_#1\expandafter\endcsname + \csname xint_c_#1\endcsname +}% +\def\xint_tmp_do_defs #1#2#3#4% +{% + \def #1% \XINT_expr_op_-ii,iii,iv,v + {% + \expandafter #2\romannumeral-`0\expandafter + #3\romannumeral-`0\XINT_expr_getnext + }% + \def #2##1##2##3% \XINT_expr_until_-ii,iii,iv,v + {% + \ifnum ##1>#4% + \xint_afterfi {\expandafter #2\romannumeral-`0##2##3}% + \else + \xint_afterfi {\expandafter ##1\expandafter ##2% + \csname .\xintOpp{\XINT_expr_string ##3}\endcsname }% + \fi + }% +}% +\xint_tmp_def {ii}% +\xint_tmp_def {iii}% +\xint_tmp_def {iv}% +\xint_tmp_def {v}% +\def\XINT_expr_getop #1% +{% + \expandafter\XINT_expr_getop_a\expandafter #1\romannumeral-`0% +}% +\def\XINT_expr_getop_a #1#2% +{% + \ifcat #2\relax + \ifx #2\relax + \expandafter\expandafter\expandafter + \XINT_expr_foundendofexpr + \else + \XINT_expr_unexpectedtoken + \expandafter\expandafter\expandafter + \XINT_expr_getop + \fi + \else + \expandafter\XINT_expr_op_found\expandafter #2% + \fi + #1% +}% +\def\XINT_expr_foundendofexpr {\xint_c_ \XINT_expr_endofexpr }% +\def\XINT_expr_op_found #1% +{% + \ifcsname XINT_expr_precedence_\string #1\endcsname + \expandafter\xint_afterfi\expandafter + {\csname XINT_expr_precedence_\string #1\expandafter\endcsname + \csname XINT_expr_op_\string #1\endcsname }% + \else + \XINT_expr_unexpectedtoken + \expandafter\XINT_expr_getop + \fi +}% +\expandafter\let\csname XINT_expr_precedence_)\endcsname \xint_c_i +\expandafter\let\csname XINT_expr_op_)\endcsname\XINT_expr_getop +\def\xint_tmp_def +{% + \expandafter\xint_tmp_do_defs + \csname XINT_expr_precedence_!\expandafter\endcsname + \csname XINT_expr_op_!\endcsname +}% +\def\xint_tmp_do_defs #1#2% +{% + \def #1##1##2% + {\ifx ##1#2% + \expandafter\xint_firstoftwo + \else\expandafter\xint_secondoftwo + \fi{\expandafter\XINT_expr_getop}{\expandafter\XINT_flexpr_getop}% + \csname .\xintfFac{\XINT_expr_string ##2}/1[0]\endcsname }% + \let#2\empty +}% +\xint_tmp_def +\def\XINT_expr_getnext +{% + \expandafter\XINT_expr_getnext_checkforbraced_a\romannumeral-`0% +}% +\def\XINT_expr_getnext_checkforbraced_a #1% +{% + \XINT_expr_getnext_checkforbraced_b #1\W\Z {#1}% +}% +\def\XINT_expr_getnext_checkforbraced_b #1#2% +{% + \xint_UDwfork + #1\dummy \XINT_expr_getnext_emptybracepair + #2\dummy \XINT_expr_getnext_onetoken_perhaps + \W\dummy \XINT_expr_getnext_gotbracedstuff + \krof +}% +\def\XINT_expr_getnext_onetoken_perhaps\Z #1% +{% + \expandafter\XINT_expr_getnext_checkforbraced_c\expandafter + {\romannumeral-`0#1}% +}% +\def\XINT_expr_getnext_checkforbraced_c #1% +{% + \XINT_expr_getnext_checkforbraced_d #1\W\Z {#1}% +}% +\def\XINT_expr_getnext_checkforbraced_d #1#2% +{% + \xint_UDwfork + #1\dummy \XINT_expr_getnext_emptybracepair + #2\dummy \XINT_expr_getnext_onetoken_wehope + \W\dummy \XINT_expr_getnext_gotbracedstuff + \krof +}% +\def\XINT_expr_getnext_emptybracepair #1{\XINT_expr_getnext }% +\def\XINT_expr_getnext_gotbracedstuff #1\W\Z #2% +{% + \expandafter\XINT_expr_getop\csname .#2\endcsname +}% +\def\XINT_expr_getnext_onetoken_wehope\Z #1% +{% + \xint_gob_til_! #1\XINT_expr_subexpr !% + \expandafter\XINT_expr_getnext_onetoken_fork\string #1% +}% +\def\XINT_expr_subexpr !#1!{\expandafter\XINT_expr_getop\xint_gobble_i }% +\begingroup +\lccode`*=`_ +\lowercase{\endgroup +\def\XINT_expr_sixwayfork #1(-.+*\dummy #2#3\krof {#2}% +\def\XINT_expr_getnext_onetoken_fork #1% +{% + \XINT_expr_sixwayfork + #1-.+*\dummy \XINT_expr_oparen + (#1.+*\dummy -% + (-#1+*\dummy {\XINT_expr_scannum_start\XINT_expr_scannum_decpart_b.}% + (-.#1*\dummy \XINT_expr_getnext% + (-.+#1\dummy {\XINT_expr_scannum_start\XINT_expr_scannum_decpart_b*}% + (-.+*\dummy {\XINT_expr_scannum_check #1}% + \krof +}}% +\def\XINT_expr_scannum_check #1% +{% + \ifnum \xint_c_ix<1#1 + \expandafter\XINT_expr_scannum_start + \else + \xint_afterfi{\XINT_expr_unexpectedtoken + \expandafter\XINT_expr_getnext\xint_gobble_ii}% + \fi \XINT_expr_scannum_intpart_b #1% +}% +\def\XINT_expr_scannum_stopscan {!}% ! catcode 11 +\def\XINT_expr_gathernum #1!% ! with catcode 11 +{% + \expandafter\space\csname .#1\endcsname +}% +\def\XINT_expr_scannum_start #1% +{% + \expandafter\XINT_expr_getop + \romannumeral-`0\expandafter\XINT_expr_gathernum + \romannumeral-`0#1% +}% +\def\XINT_expr_scannum_intpart_a #1% +{% + \ifnum \xint_c_ix<1\string#1 + \expandafter\expandafter\expandafter + \XINT_expr_scannum_intpart_b + \expandafter\string + \else + \if #1.% + \expandafter\expandafter\expandafter + \XINT_expr_scannum_transition + \else + \expandafter\expandafter\expandafter + \XINT_expr_scannum_stopscan + \fi + \fi + #1% +}% +\def\XINT_expr_scannum_intpart_b #1% +{% + \expandafter #1\romannumeral-`0\expandafter + \XINT_expr_scannum_intpart_a\romannumeral-`0% +}% +\def\XINT_expr_scannum_transition #1% +{% + \expandafter.\romannumeral-`0\expandafter + \XINT_expr_scannum_decpart_a\romannumeral-`0% +}% +\def\XINT_expr_scannum_decpart_a #1% +{% + \ifnum \xint_c_ix<1\string#1 + \expandafter\expandafter\expandafter + \XINT_expr_scannum_decpart_b\expandafter\string + \else + \expandafter \XINT_expr_scannum_stopscan + \fi + #1% +}% +\def\XINT_expr_scannum_decpart_b #1% +{% + \expandafter #1\romannumeral-`0\expandafter + \XINT_expr_scannum_decpart_a\romannumeral-`0% +}% +\def\xintfloatexpr {\romannumeral0\xintfloateval }% +\def\xintfloateval +{% + \expandafter\XINT_expr_until_end\romannumeral-`0% + \expandafter\XINT_flexpr_checkifprefix_ii\romannumeral-`0% + \XINT_flexpr_getnext +}% +\def\xintthefloatexpr {\romannumeral0\xintthefloateval }% +\def\xintthefloateval + {\expandafter\XINT_flexpr_the\romannumeral0\xintfloateval }% +\def\XINT_flexpr_the #1#2#3{\xintfloat{\XINT_expr_string #3}}% +\def\XINT_flexpr_oparen +{% + \expandafter\XINT_expr_until_cparen\romannumeral-`0% + \expandafter\XINT_flexpr_checkifprefix_ii\romannumeral-`0% + \XINT_flexpr_getnext +}% +\def\xint_tmp_def #1#2#3% +{% + \expandafter\xint_tmp_do_defs + \csname XINT_flexpr_op_#1\expandafter\endcsname + \csname XINT_flexpr_until_#1\expandafter\endcsname + \csname XINT_flexpr_checkifprefix_#2\expandafter\endcsname + \csname XINT_expr_precedence_#1\expandafter\endcsname + \csname xint_c_#2\expandafter\endcsname + \csname XINTinFloat#3\endcsname +}% +\def\xint_tmp_do_defs #1#2#3#4#5#6% +{% + \def #1##1% \XINT_flexpr_op_? + {% + \expandafter #2\expandafter ##1\romannumeral-`0\expandafter + #3\romannumeral-`0\XINT_flexpr_getnext + }% + \def #2##1##2##3##4% \XINT_flexpr_until_? + {% + \ifnum ##2>#5% + \xint_afterfi {\expandafter #2\expandafter ##1\romannumeral-`0##3##4}% + \else + \xint_afterfi + {\expandafter ##2\expandafter ##3% + \csname .#6{\XINT_expr_string ##1}% + {\XINT_expr_string ##4}\endcsname }% + \fi + }% +}% +\xint_tmp_def +{ii}{Add}% +\xint_tmp_def -{ii}{Sub}% +\xint_tmp_def *{iii}{Mul}% +\xint_tmp_def /{iii}{Div}% +\xint_tmp_def ^{iv}{Power}% +\xint_tmp_def e{v}{fE}% +\xint_tmp_def E{v}{fE}% +\def\xint_tmp_def #1% +{% + \expandafter\xint_tmp_do_defs + \csname XINT_flexpr_checkifprefix_#1\expandafter\endcsname + \csname XINT_flexpr_op_-#1\endcsname +}% +\def\xint_tmp_do_defs #1#2% +{% + \def #1##1% + {\xint_UDsignfork + ##1\dummy #2% + -\dummy ##1% + \krof }% +}% +\xint_tmp_def {ii}% +\xint_tmp_def {iii}% +\xint_tmp_def {iv}% +\xint_tmp_def {v}% +\def\xint_tmp_def #1% +{% + \expandafter\xint_tmp_do_defs + \csname XINT_flexpr_op_-#1\expandafter\endcsname + \csname XINT_expr_until_-#1\expandafter\endcsname + \csname XINT_flexpr_checkifprefix_#1\expandafter\endcsname + \csname xint_c_#1\endcsname +}% +\def\xint_tmp_do_defs #1#2#3#4% +{% + \def #1% \XINT_flexpr_op_-ii,iii,iv,v + {% + \expandafter #2\romannumeral-`0\expandafter + #3\romannumeral-`0\XINT_flexpr_getnext + }% +}% +\xint_tmp_def {ii}% +\xint_tmp_def {iii}% +\xint_tmp_def {iv}% +\xint_tmp_def {v}% +\let\xint_tmp_def\empty +\let\xint_tmp_do_defs\empty +\def\XINT_flexpr_getop #1% +{% + \expandafter\XINT_flexpr_getop_a\expandafter #1\romannumeral-`0% +}% +\def\XINT_flexpr_getop_a #1#2% +{% + \ifcat #2\relax + \ifx #2\relax + \expandafter\expandafter\expandafter + \XINT_expr_foundendofexpr + \else + \XINT_expr_unexpectedtoken + \expandafter\expandafter\expandafter + \XINT_flexpr_getop + \fi + \else + \expandafter\XINT_flexpr_op_found\expandafter #2% + \fi + #1% +}% +\def\XINT_flexpr_op_found #1% +{% + \ifcsname XINT_expr_precedence_\string #1\endcsname + \expandafter\xint_afterfi\expandafter + {\csname XINT_expr_precedence_\string #1\expandafter\endcsname + \csname XINT_flexpr_op_\string #1\endcsname }% + \else + \XINT_expr_unexpectedtoken + \expandafter\XINT_flexpr_getop + \fi +}% +\expandafter\let\csname XINT_flexpr_op_)\endcsname\XINT_flexpr_getop +\def\XINT_flexpr_getnext +{% + \expandafter\XINT_flexpr_getnext_checkforbraced_a\romannumeral-`0% +}% +\def\XINT_flexpr_getnext_checkforbraced_a #1% +{% + \XINT_flexpr_getnext_checkforbraced_b #1\W\Z {#1}% +}% +\def\XINT_flexpr_getnext_checkforbraced_b #1#2% +{% + \xint_UDwfork + #1\dummy \XINT_flexpr_getnext_emptybracepair + #2\dummy \XINT_flexpr_getnext_onetoken_perhaps + \W\dummy \XINT_flexpr_getnext_gotbracedstuff + \krof +}% +\def\XINT_flexpr_getnext_onetoken_perhaps\Z #1% +{% + \expandafter\XINT_flexpr_getnext_checkforbraced_c\expandafter + {\romannumeral-`0#1}% +}% +\def\XINT_flexpr_getnext_checkforbraced_c #1% +{% + \XINT_flexpr_getnext_checkforbraced_d #1\W\Z {#1}% +}% +\def\XINT_flexpr_getnext_checkforbraced_d #1#2% +{% + \xint_UDwfork + #1\dummy \XINT_flexpr_getnext_emptybracepair + #2\dummy \XINT_flexpr_getnext_onetoken_wehope + \W\dummy \XINT_flexpr_getnext_gotbracedstuff + \krof +}% +\def\XINT_flexpr_getnext_emptybracepair #1{\XINT_flexpr_getnext }% +\def\XINT_flexpr_getnext_gotbracedstuff #1\W\Z #2% +{% + \expandafter\XINT_flexpr_getop\csname .#2\endcsname +}% +\def\XINT_flexpr_getnext_onetoken_wehope\Z #1% +{% + \xint_gob_til_! #1\XINT_flexpr_subexpr !% + \expandafter\XINT_flexpr_getnext_onetoken_fork\string #1% +}% +\def\XINT_flexpr_subexpr !#1!{\expandafter\XINT_flexpr_getop\xint_gobble_i }% +\begingroup +\lccode`*=`_ +\lowercase{\endgroup +\def\XINT_flexpr_getnext_onetoken_fork #1% +{% + \XINT_expr_sixwayfork + #1-.+*\dummy \XINT_flexpr_oparen + (#1.+*\dummy -% + (-#1+*\dummy {\XINT_flexpr_scannum_start\XINT_expr_scannum_decpart_b.}% + (-.#1*\dummy \XINT_flexpr_getnext% + (-.+#1\dummy {\XINT_flexpr_scannum_start\XINT_expr_scannum_decpart_b*}% + (-.+*\dummy {\XINT_flexpr_scannum_check #1}% + \krof +}}% +\def\XINT_flexpr_scannum_check #1% +{% + \ifnum \xint_c_ix<1#1 + \expandafter\XINT_flexpr_scannum_start + \else + \xint_afterfi + {\XINT_expr_unexpectedtoken + \expandafter\XINT_flexpr_getnext\xint_gobble_ii}% + \fi \XINT_expr_scannum_intpart_b #1% +}% +\def\XINT_flexpr_scannum_start #1% +{% + \expandafter\XINT_flexpr_getop + \romannumeral-`0\expandafter\XINT_expr_gathernum + \romannumeral-`0#1% +}% +\catcode`* 13 +\def\xintNewExpr #1[#2]#3% +{% + \begingroup + \ifcase #2\relax + \toks0 {\xdef #1}% + \or \toks0 {\xdef #1##1}% + \or \toks0 {\xdef #1##1##2}% + \or \toks0 {\xdef #1##1##2##3}% + \or \toks0 {\xdef #1##1##2##3##4}% + \or \toks0 {\xdef #1##1##2##3##4##5}% + \or \toks0 {\xdef #1##1##2##3##4##5##6}% + \or \toks0 {\xdef #1##1##2##3##4##5##6##7}% + \or \toks0 {\xdef #1##1##2##3##4##5##6##7##8}% + \or \toks0 {\xdef #1##1##2##3##4##5##6##7##8##9}% + \else + \immediate\write-1{Package xintexpr Error! illegal number of macro + parameters.}% + \fi + \def\xintAdd {:xintAdd}% + \def\xintSub {:xintSub}% + \def\xintMul {:xintMul}% + \def\xintDiv {:xintDiv}% + \def\xintfPow {:xintfPow}% + \def\xintfFac {:xintfFac}% + \def\xintOpp {:xintOpp}% + \def\xintfE {:xintfE}% + \def\xintraw { :romannumeral0:xintraw}% + \def\XINT_expr_the ##1##2##3% + {\expandafter\xintraw + \expandafter{\romannumeral-`0\XINT_expr_string ##3}}% + \lccode`\*=`: \lowercase {\def*}{!noexpand!}% + \catcode`: 13 + \endlinechar -1 + \everyeof {\noexpand }% + \edef\xintNewExprtmp + {\expandafter\scantokens + \expandafter{\romannumeral0\xinttheeval #3\relax}}% + \lccode`\*=`_ \lowercase {\def*}{####}% + \catcode`_ 13 \catcode`! 0 \catcode`: 11 + \the\toks0 {\expandafter\scantokens\expandafter{\xintNewExprtmp }}% +\endgroup +}% +\def\xintNewFloatExpr #1[#2]#3% +{% + \begingroup + \ifcase #2\relax + \toks0 {\xdef #1}% + \or \toks0 {\xdef #1##1}% + \or \toks0 {\xdef #1##1##2}% + \or \toks0 {\xdef #1##1##2##3}% + \or \toks0 {\xdef #1##1##2##3##4}% + \or \toks0 {\xdef #1##1##2##3##4##5}% + \or \toks0 {\xdef #1##1##2##3##4##5##6}% + \or \toks0 {\xdef #1##1##2##3##4##5##6##7}% + \or \toks0 {\xdef #1##1##2##3##4##5##6##7##8}% + \or \toks0 {\xdef #1##1##2##3##4##5##6##7##8##9}% + \else + \immediate\write-1{Package xintexpr Error! illegal number of macro + parameters.}% + \fi + \def\XINTinFloatAdd {:XINTinFloatAdd}% + \def\XINTinFloatSub {:XINTinFloatSub}% + \def\XINTinFloatMul {:XINTinFloatMul}% + \def\XINTinFloatDiv {:XINTinFloatDiv}% + \def\XINTinFloatPower {:XINTinFloatPower}% + \def\xintfFac {:xintfFac}% + \def\xintOpp {:xintOpp}% + \def\XINTinFloatfE {:XINTinFloatfE}% + \def\xintfloat { :romannumeral0:xintfloat}% + \def\XINT_flexpr_the ##1##2##3% + {\expandafter\xintfloat + \expandafter{\romannumeral-`0\XINT_expr_string ##3}}% + \lccode`\*=`: \lowercase {\def*}{!noexpand!}% + \catcode`: 13 + \endlinechar -1 + \everyeof {\noexpand }% + \edef\xintNewExprtmp + {\expandafter\scantokens + \expandafter{\romannumeral0\xintthefloateval #3\relax}}% + \lccode`\*=`_ \lowercase {\def*}{####}% + \catcode`_ 13 \catcode`! 0 \catcode`: 11 + \the\toks0 {\expandafter\scantokens\expandafter{\xintNewExprtmp }}% +\endgroup +}% +\XINT_expr_restorecatcodes_endinput% +\endinput +%% +%% End of file `xintexpr.sty'. |