summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/xint/xinttools.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-10-28 22:36:18 +0000
committerKarl Berry <karl@freefriends.org>2014-10-28 22:36:18 +0000
commit6751ea76abc2df59197ab3c20fe780ecf9de81fb (patch)
treef0ddbcd0525b27fc8755bec4c667f0a4b076b2a0 /Master/texmf-dist/tex/generic/xint/xinttools.sty
parent1eff88f8256fc97ff44035cfd29e162947e4fd67 (diff)
xint (28oct14)
git-svn-id: svn://tug.org/texlive/trunk@35458 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/xint/xinttools.sty')
-rw-r--r--Master/texmf-dist/tex/generic/xint/xinttools.sty254
1 files changed, 37 insertions, 217 deletions
diff --git a/Master/texmf-dist/tex/generic/xint/xinttools.sty b/Master/texmf-dist/tex/generic/xint/xinttools.sty
index b95a530dc77..9639b665c8b 100644
--- a/Master/texmf-dist/tex/generic/xint/xinttools.sty
+++ b/Master/texmf-dist/tex/generic/xint/xinttools.sty
@@ -20,24 +20,25 @@
%% 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.09n of April 1st, 2014)
-%% xinttools: Expandable and non-expandable utilities
+%% ---------------------------------------------------------------
+%% The xint bundle v1.1 (2014/10/28)
%% Copyright (C) 2013-2014 by Jean-Francois Burnol
-%%----------------------------------------------------------------
+%% xinttools: Expandable and non-expandable utilities
+%% ---------------------------------------------------------------
\begingroup\catcode61\catcode48\catcode32=10\relax%
\catcode13=5 % ^^M
\endlinechar=13 %
\catcode123=1 % {
\catcode125=2 % }
\catcode64=11 % @
- \catcode95=11 % _
\catcode35=6 % #
\catcode44=12 % ,
\catcode45=12 % -
\catcode46=12 % .
\catcode58=12 % :
- \expandafter\let\expandafter\x\csname ver@xint.sty\endcsname
+ \let\z\endgroup
+ \expandafter\let\expandafter\x\csname ver@xinttools.sty\endcsname
+ \expandafter\let\expandafter\w\csname ver@xintkernel.sty\endcsname
\expandafter
\ifx\csname PackageInfo\endcsname\relax
\def\y#1#2{\immediate\write-1{Package #1 Info: #2.}}%
@@ -49,177 +50,32 @@
\y{xinttools}{\numexpr not available, aborting input}%
\aftergroup\endinput
\else
- \ifx\x\relax % plain-TeX, first loading
+ \ifx\x\relax % plain-TeX, first loading of xinttools.sty
+ \ifx\w\relax % but xintkernel.sty not yet loaded.
+ \def\z{\endgroup\input xintkernel.sty\relax}%
+ \fi
\else
\def\empty {}%
\ifx\x\empty % LaTeX, first loading,
% variable is initialized, but \ProvidesPackage not yet seen
+ \ifx\w\relax % xintkernel.sty not yet loaded.
+ \def\z{\endgroup\RequirePackage{xintkernel}}%
+ \fi
\else
- \y{xinttools}{I was already loaded, aborting input}%
- \aftergroup\endinput
+ \aftergroup\endinput % xinttools already loaded.
\fi
\fi
\fi
- \def\ChangeCatcodesIfInputNotAborted
- {%
- \endgroup
- \def\XINT_storecatcodes
- {% takes care of all, to allow more economical code in modules
- \catcode34=\the\catcode34 % " xintbinhex, and 1.09k xintexpr
- \catcode63=\the\catcode63 % ? xintexpr
- \catcode124=\the\catcode124 % | xintexpr
- \catcode38=\the\catcode38 % & xintexpr
- \catcode64=\the\catcode64 % @ xintexpr
- \catcode33=\the\catcode33 % ! xintexpr
- \catcode93=\the\catcode93 % ] -, xintfrac, xintseries, xintcfrac
- \catcode91=\the\catcode91 % [ -, xintfrac, xintseries, xintcfrac
- \catcode36=\the\catcode36 % $ xintgcd only
- \catcode94=\the\catcode94 % ^
- \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 % =
- }%
- \edef\XINT_restorecatcodes_endinput
- {%
- \XINT_storecatcodes\noexpand\endinput %
- }%
- \def\XINT_setcatcodes
- {%
- \catcode61=12 % =
- \catcode32=10 % space
- \catcode13=5 % ^^M
- \endlinechar=13 %
- \catcode123=1 % {
- \catcode125=2 % }
- \catcode95=11 % _ (replaces @ everywhere, starting with 1.06b)
- \catcode35=6 % #
- \catcode44=12 % ,
- \catcode45=12 % -
- \catcode46=12 % .
- \catcode58=11 % : (made letter for error cs)
- \catcode60=12 % <
- \catcode62=12 % >
- \catcode43=12 % +
- \catcode42=12 % *
- \catcode40=12 % (
- \catcode41=12 % )
- \catcode47=12 % /
- \catcode96=12 % ` (for ubiquitous \romannumeral-`0 and some \catcode )
- \catcode94=11 % ^
- \catcode36=3 % $
- \catcode91=12 % [
- \catcode93=12 % ]
- \catcode33=11 % !
- \catcode64=11 % @
- \catcode38=12 % &
- \catcode124=12 % |
- \catcode63=11 % ?
- \catcode34=12 % " missing from v < 1.09k although needed in xintbinhex
- }%
- \XINT_setcatcodes
- }%
-\ChangeCatcodesIfInputNotAborted
-\def\XINTsetupcatcodes {% for use by other modules
- \edef\XINT_restorecatcodes_endinput
- {%
- \XINT_storecatcodes\noexpand\endinput %
- }%
- \XINT_setcatcodes
-}%
-\ifdefined\ProvidesPackage
- \let\XINT_providespackage\relax
-\else
- \def\XINT_providespackage #1#2[#3]%
- {\immediate\write-1{Package: #2 #3}%
- \expandafter\xdef\csname ver@#2.sty\endcsname{#3}}%
-\fi
+\z%
+\XINTsetupcatcodes% defined in xintkernel.sty
\XINT_providespackage
-\ProvidesPackage {xinttools}%
- [2014/04/01 v1.09n Expandable and non-expandable utilities (jfB)]%
-\long\def\xint_gobble_ {}%
-\long\def\xint_gobble_i #1{}%
-\long\def\xint_gobble_ii #1#2{}%
-\long\def\xint_gobble_iii #1#2#3{}%
-\long\def\xint_gobble_iv #1#2#3#4{}%
-\long\def\xint_gobble_v #1#2#3#4#5{}%
-\long\def\xint_gobble_vi #1#2#3#4#5#6{}%
-\long\def\xint_gobble_vii #1#2#3#4#5#6#7{}%
-\long\def\xint_gobble_viii #1#2#3#4#5#6#7#8{}%
-\long\def\xint_firstofone #1{#1}%
-\long\def\xint_firstoftwo #1#2{#1}%
-\long\def\xint_secondoftwo #1#2{#2}%
-\long\def\xint_firstofone_thenstop #1{ #1}%
-\long\def\xint_firstoftwo_thenstop #1#2{ #1}%
-\long\def\xint_secondoftwo_thenstop #1#2{ #2}%
-\def\xint_minus_thenstop { -}%
-\def\xint_gob_til_zero #10{}% no need to make it long, so far
-\def\xint_UDzerominusfork #10-#2#3\krof {#2}% id.
-\long\def\xint_gob_til_R #1\R {}%
-\long\def\xint_gob_til_W #1\W {}%
-\long\def\xint_gob_til_Z #1\Z {}%
-\long\def\xint_bye #1\xint_bye {}%
-\let\xint_relax\relax
-\def\xint_brelax {\xint_relax }%
-\long\def\xint_gob_til_xint_relax #1\xint_relax {}%
-\long\def\xint_afterfi #1#2\fi {\fi #1}%
-\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_vi 6
-\chardef\xint_c_vii 7
-\chardef\xint_c_viii 8
+\ProvidesPackage{xinttools}%
+ [2014/10/28 v1.1 Expandable and non-expandable utilities (jfB)]%
\newtoks\XINT_toks
\xint_firstofone{\let\XINT_sptoken= } %<- space here!
-\def\xintodef #1{\expandafter\def\expandafter#1\expandafter }%
-\ifdefined\odef\else\let\odef\xintodef\fi
-\def\xintgodef {\global\xintodef }%
-\def\xintoodef #1{\expandafter\expandafter\expandafter\def
- \expandafter\expandafter\expandafter#1%
- \expandafter\expandafter\expandafter }%
-\ifdefined\oodef\else\let\oodef\xintoodef\fi
+\def\xintgodef {\global\xintodef }%
\def\xintgoodef {\global\xintoodef }%
-\def\xintfdef #1#2{\expandafter\def\expandafter#1\expandafter
- {\romannumeral-`0#2}}%
-\ifdefined\fdef\else\let\fdef\xintfdef\fi
-\def\xintgfdef {\global\xintfdef }% should be \global\fdef if \fdef pre-exists?
-\def\xintReverseOrder {\romannumeral0\xintreverseorder }%
-\long\def\xintreverseorder #1%
-{%
- \XINT_rord_main {}#1%
- \xint_relax
- \xint_bye\xint_bye\xint_bye\xint_bye
- \xint_bye\xint_bye\xint_bye\xint_bye
- \xint_relax
-}%
-\long\def\XINT_rord_main #1#2#3#4#5#6#7#8#9%
-{%
- \xint_bye #9\XINT_rord_cleanup\xint_bye
- \XINT_rord_main {#9#8#7#6#5#4#3#2#1}%
-}%
-\long\edef\XINT_rord_cleanup\xint_bye\XINT_rord_main #1#2\xint_relax
-{%
- \noexpand\expandafter\space\noexpand\xint_gob_til_xint_relax #1%
-}%
+\def\xintgfdef {\global\xintfdef }%
\def\xintRevWithBraces {\romannumeral0\xintrevwithbraces }%
\def\xintRevWithBracesNoExpand {\romannumeral0\xintrevwithbracesnoexpand }%
\long\def\xintrevwithbraces #1%
@@ -261,72 +117,36 @@
\space
\csname xint_gobble_\romannumeral #1\endcsname
}%
-\def\xintLength {\romannumeral0\xintlength }%
-\long\def\xintlength #1%
-{%
- \XINT_length_loop
- 0.#1\xint_relax\xint_relax\xint_relax\xint_relax
- \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye
-}%
-\long\def\XINT_length_loop #1.#2#3#4#5#6#7#8#9%
-{%
- \xint_gob_til_xint_relax #9\XINT_length_finish_a\xint_relax
- \expandafter\XINT_length_loop\the\numexpr #1+\xint_c_viii.%
-}%
-\def\XINT_length_finish_a\xint_relax\expandafter\XINT_length_loop
- \the\numexpr #1+\xint_c_viii.#2\xint_bye
-{%
- \XINT_length_finish_b #2\W\W\W\W\W\W\W\Z {#1}%
-}%
-\def\XINT_length_finish_b #1#2#3#4#5#6#7#8\Z
-{%
- \xint_gob_til_W
- #1\XINT_length_finish_c \xint_c_
- #2\XINT_length_finish_c \xint_c_i
- #3\XINT_length_finish_c \xint_c_ii
- #4\XINT_length_finish_c \xint_c_iii
- #5\XINT_length_finish_c \xint_c_iv
- #6\XINT_length_finish_c \xint_c_v
- #7\XINT_length_finish_c \xint_c_vi
- \W\XINT_length_finish_c \xint_c_vii\Z
-}%
-\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 }%
-\xint_firstofone {\long\def\XINT_zapbsp_a #1 } %<- space token here
+ {\noexpand\XINT_zapbsp_a \space #1\xint_relax \space\space\xint_relax }%
+\xint_firstofone {\long\edef\XINT_zapbsp_a #1 } %<- space token here
{%
- \XINT_zapbsp_again? #1\xint_bye\XINT_zapbsp_b {#1}%
+ \noexpand\XINT_zapbsp_again? #1\noexpand\xint_bye\noexpand\XINT_zapbsp_b #1\space\space
}%
\long\def\XINT_zapbsp_again? #1{\xint_bye #1\XINT_zapbsp_again }%
-\edef\XINT_zapbsp_again\XINT_zapbsp_b #1{\noexpand\XINT_zapbsp_a\space }%
-\long\def\XINT_zapbsp_b #1#2\xint_relax
- {\XINT_zapbsp_end? #2\XINT_zapbsp_e\empty #2{#1}}%
-\long\def\XINT_zapbsp_end? #1{\xint_bye #1\XINT_zapbsp_end }%
-\long\def\XINT_zapbsp_end\XINT_zapbsp_e\empty #1\xint_bye #2{#2#1}%
-\xint_firstofone{\long\def\XINT_zapbsp_e #1 } \xint_bye
- {\expandafter\XINT_zapbsp_f \expandafter{#1}}%
-\long\edef\XINT_zapbsp_f #1#2{#2\space\space #1}%
+\xint_firstofone{\def\XINT_zapbsp_again\XINT_zapbsp_b} {\XINT_zapbsp_a }%
+\long\def\XINT_zapbsp_b #1\xint_relax #2\xint_relax {#1}%
\def\xintZapLastSpaces {\romannumeral0\xintzaplastspaces }%
-\long\edef\xintzaplastspaces #1{\noexpand\XINT_zapesp_a {\space}\noexpand\empty
- #1\space\space\noexpand\xint_bye \xint_relax}%
+\long\edef\xintzaplastspaces #1{\noexpand\XINT_zapesp_a {}\noexpand\empty#1%
+ \space\space\noexpand\xint_bye\xint_relax}%
\xint_firstofone {\long\def\XINT_zapesp_a #1#2 } %<- second space here
{\expandafter\XINT_zapesp_b\expandafter{#2}{#1}}%
\long\def\XINT_zapesp_b #1#2#3\xint_relax
{\XINT_zapesp_end? #3\XINT_zapesp_e {#2#1}\empty #3\xint_relax }%
\long\def\XINT_zapesp_end? #1{\xint_bye #1\XINT_zapesp_end }%
-\long\def\XINT_zapesp_end\XINT_zapesp_e #1#2\xint_relax {#1}%
+\long\def\XINT_zapesp_end\XINT_zapesp_e #1#2\xint_relax { #1}%
\long\edef\XINT_zapesp_e #1{\noexpand \XINT_zapesp_a {#1\space\space}}%
\def\xintZapSpaces {\romannumeral0\xintzapspaces }%
-\long\edef\xintzapspaces #1%
- {\noexpand\XINT_zapsp_a \space #1\space\space\noexpand\xint_bye\xint_relax}%
-\xint_firstofone {\long\def\XINT_zapsp_a #1 } %<- space token here
-{%
- \XINT_zapsp_again? #1\xint_bye\XINT_zapesp_b {#1}{}%
-}%
+\long\edef\xintzapspaces #1% like \xintZapFirstSpaces.
+ {\noexpand\XINT_zapsp_a \space #1\xint_relax \space\space\xint_relax }%
+\xint_firstofone {\long\edef\XINT_zapsp_a #1 } %
+ {\noexpand\XINT_zapsp_again? #1\noexpand\xint_bye\noexpand\XINT_zapsp_b #1\space\space}%
\long\def\XINT_zapsp_again? #1{\xint_bye #1\XINT_zapsp_again }%
-\long\edef\XINT_zapsp_again\XINT_zapesp_b #1#2{\noexpand\XINT_zapsp_a\space }%
+\xint_firstofone{\def\XINT_zapsp_again\XINT_zapsp_b} {\XINT_zapsp_a }%
+\xint_firstofone{\def\XINT_zapsp_b} {\XINT_zapsp_c }%
+\long\edef\XINT_zapsp_c #1\xint_relax #2\xint_relax {\noexpand\XINT_zapesp_a
+ {}\noexpand \empty #1\space\space\noexpand\xint_bye\xint_relax }%
\def\xintZapSpacesB {\romannumeral0\xintzapspacesb }%
\long\def\xintzapspacesb #1{\XINT_zapspb_one? #1\xint_relax\xint_relax
\xint_bye\xintzapspaces {#1}}%