summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/generic/xint/xint.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2015-03-08 22:30:31 +0000
committerKarl Berry <karl@freefriends.org>2015-03-08 22:30:31 +0000
commitcadedf1ea67e944e0382f729e82f3a5c78811d99 (patch)
treeab2c4032df7745a705da838d4586ad4931917e3e /Master/texmf-dist/source/generic/xint/xint.dtx
parenta5bd498c48edcf5b4a3b5a3e771c64e3e89c67f2 (diff)
xint (8mar15)
git-svn-id: svn://tug.org/texlive/trunk@36463 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/generic/xint/xint.dtx')
-rw-r--r--Master/texmf-dist/source/generic/xint/xint.dtx547
1 files changed, 325 insertions, 222 deletions
diff --git a/Master/texmf-dist/source/generic/xint/xint.dtx b/Master/texmf-dist/source/generic/xint/xint.dtx
index 2d628eb7d86..c890a72993b 100644
--- a/Master/texmf-dist/source/generic/xint/xint.dtx
+++ b/Master/texmf-dist/source/generic/xint/xint.dtx
@@ -1,10 +1,10 @@
% -*- coding: iso-latin-1; time-stamp-format: "%02d-%02m-%:y at %02H:%02M:%02S %Z" -*-
%<*dtx>
-\def\xintdtxtimestamp {Time-stamp: <07-11-2014 at 23:44:15 CET>}
+\def\xintdtxtimestamp {Time-stamp: <07-03-2015 at 20:06:50 CET>}
%</dtx>
%<*drv>
%% ---------------------------------------------------------------
-\def\xintdocdate {2014/11/07}
+\def\xintdocdate {2015/03/07}
\def\xintbndldate{2014/11/07}
\def\xintbndlversion {1.1a}
%</drv>
@@ -14,10 +14,10 @@
%<readme>% README
%<changes>% CHANGE LOG
%<readme|changes>% xint v1.1a
-%<readme|changes>% 2014/11/07
+%<readme|changes>% 2014/11/07 (doc 2015/03/07)
%<*readme|changes>
- Source: xint.dtx (v1.1a, 2014/11/07)
+ Source: xint.dtx (v1.1a 2014/11/07, doc of 2015/03/07)
Author: Jean-Francois Burnol
Info: Expandable operations on big integers, decimals, fractions
License: LPPL 1.3c or later
@@ -25,8 +25,8 @@
%</readme|changes>
%<*!readme&!changes&!dohtmlsh&!dopdfsh&!makefile>
%% ---------------------------------------------------------------
-%% The xint bundle v1.1a (2014/11/07)
-%% Copyright (C) 2013-2014 by Jean-Francois Burnol
+%% The xint bundle v1.1a (2014/11/07; doc: 2015/03/07)
+%% Copyright (C) 2013-2015 by Jean-Francois Burnol
%<xintkernel>%% xintkernel: Paraphernalia for the xint packages
%<xinttools>%% xinttools: Expandable and non-expandable utilities
%<xintcore>%% xintcore: Expandable arithmetic on big integers
@@ -175,7 +175,7 @@ License
=======
<div class="mono">
-Copyright (C) 2014 by Jean-Francois Burnol
+Copyright (C) 2013-2015 by Jean-Francois Burnol
This Work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either
@@ -207,7 +207,7 @@ Makefile.mk.</div>
`1.1a (2014/11/07)`
----
- - fixed a bug which prevented `\xintNewExpr` to produce correctly working
+ - fixed a bug which prevented `\xintNewExpr` from producing correctly working
macros from a comma separated replacement text.
- new `\xintiiSqrtR` for rounded integer square root; former `\xintiiSqrt`
@@ -276,6 +276,11 @@ breaking changes
letter operators might be assigned some other meaning in later releases
(bitwise operations, perhaps). Do not use them.
+ - [this missing item added 2015/03/07] place holders for `\xintNewExpr`
+ could be denoted `#1`, `#2`, ... or also, for special purposes `$1`, `$2`,
+ ... Only the first form is now accepted and the special cases previously
+ treated via the second form are now managed via a `protect(...)` function.
+
There are many novelties, most to be found in package **xintexpr**.
But first the other changes.
@@ -356,7 +361,7 @@ But first the other changes.
* functions `first`, `last`, `reversed`,
* itemwise operations on comma separated lists `a*[list]`, etc.., possible
- on both sides `a*[list]^b`, an obeying the same precedence rules as with
+ on both sides `a*[list]^b`, and obeying the same precedence rules as with
numbers,
* `add` and `mul` must use a dummy variable: `add(x(x+1)(x-1), x=-10..10)`,
@@ -387,8 +392,10 @@ But first the other changes.
* `\xintthecoords` converts a comma separated list of an even number
of items to the format expected by the `TikZ` `coordinates` syntax,
- * completely new version `\xintNewExpr`, `protect` function to handle
- external macros. Not all constructs are compatible with `\xintNewExpr`.
+ * completely new version `\xintNewExpr`, `protect` function to handle
+ external macros. The dollar sign
+ `$` for place holders is not accepted anymore, only the standard macro
+ parameter `#`. Not all constructs are compatible with `\xintNewExpr`.
`1.09n (2014/04/01)`
----
@@ -1585,27 +1592,31 @@ dvipdfmx CHANGES.dvi
\addtocontents{toc}{\protect\hypersetup{hidelinks}}
-% Septembre 2014, préparation de la doc pour xint 1.1
-\usepackage[zerostyle=a,scaled=0.95]{newtxtt}
+\usepackage[zerostyle=a,straightquotes,scaled=0.95]{newtxtt}
+% j'ai essayé zerostyle=e, finalement je reviens à =a
\usepackage{newtxmath}
\makeatletter
% I need also the font with a slashed zero, for verbatim code.
+% Mardi 18 novembre 2014 à 09:06:44
+% Test de newtxtt 1.05, 'q' pour uprightquotes
+% (maintenant: straightquotes)
+
\DeclareFontFamily{T1}{newtxttb}{\hyphenchar\font\m@ne}
\DeclareFontShape{T1}{newtxttb}{m}{n}{
- <-> s*[\newtxtt@scale]newtxttb
+ <-> s*[\newtxtt@scale]newtxttbq
}{}
\DeclareFontShape{T1}{newtxttb}{b}{n}{
- <-> s*[\newtxtt@scale]newtxbttb
+ <-> s*[\newtxtt@scale]newtxbttbq
}{}
\DeclareFontShape{T1}{newtxttb}{bx}{n}{
<-> ssub * newtxttb/b/n
}{}
\DeclareFontShape{T1}{newtxttb}{m}{sl}{
- <-> s*[\newtxtt@scale]newtxttslb
+ <-> s*[\newtxtt@scale]newtxttslbq
}{}
\DeclareFontShape{T1}{newtxttb}{m}{it}{
<-> ssub * newtxttb/m/sl
@@ -1620,6 +1631,14 @@ dvipdfmx CHANGES.dvi
% is later some use to it.
% 11 octobre, j'essaie couleur, YellowOrange, CadetBlue
% \def\digitstt {\bgroup \color[named]{OrangeRed}\let\next=}
+
+% Mardi 18 novembre 2014 à 09:07:30
+% test des old style figures par \textsc
+% ATTENTION à cause emploi d'argument pouvant contenir des tokens comme \if
+% (cf lignes environ 5319)
+% Finalement pour release doc du 7 mars 2015, je n'utilise pas old style
+%\def\digitstt #1{\begingroup\color[named]{OrangeRed}%
+% \unless\ifmmode\scshape\fi #1\endgroup}
\def\digitstt #1{\begingroup\color[named]{OrangeRed}#1\endgroup}
\let\dtt\digitstt
@@ -1838,16 +1857,16 @@ pdfpagemode=UseOutlines}
%--- straight quotes, added (finally...) Nov 2, 2014
-\begingroup\makeatletter
- \catcode`\'\active
- \catcode`\`\active
-\@firstofone {\endgroup
- \def\makequotesstraight{% assumes textcomp package
- \let`\textasciigrave
- \let'\textquotesingle
- \catcode39\active
- \catcode96\active }%
-}
+% \begingroup\makeatletter
+% \catcode`\'\active
+% \catcode`\`\active
+% \@firstofone {\endgroup
+% \def\makequotesstraight{% assumes textcomp package
+% \let`\textasciigrave
+% \let'\textquotesingle
+% \catcode39\active
+% \catcode96\active }%
+% }
%--- for soft-wrapping. I will use discretionaries.
@@ -1904,7 +1923,7 @@ pdfpagemode=UseOutlines}
\def\macrocode{\macro@code
\frenchspacing \@vobeyspaces
- \makestarlowast\makequotesstraight
+ \makestarlowast %\makequotesstraight
\xmacro@code }
@@ -1941,7 +1960,7 @@ pdfpagemode=UseOutlines}
\relax \ifmmode\else\leavevmode\null\fi
\bgroup
\let\do\@makeother \dospecials
- \makequotesstraight % belatedly added for 1.1a release
+ %\makequotesstraight % belatedly added for 1.1a release
\MicroFont % change font, color, catcode hooks, ...
\catcode 32 10
\endlinechar 32
@@ -1989,7 +2008,7 @@ pdfpagemode=UseOutlines}
\aftergroup\@@par \aftergroup\endgroup \aftergroup\medskip
\let\do\do@noligs \verbatim@nolig@list
\let\do\@makeother \dospecials
- \makequotesstraight % belatedly added for 1.1a release
+ %\makequotesstraight % belatedly added for 1.1a release
\catcode32 10 \catcode`\% 9 \catcode`\& 14 \catcode`\$ 0
\MicroFont % sera donc en couleur.
\@lverb
@@ -2006,11 +2025,6 @@ pdfpagemode=UseOutlines}
\makeatletter
\catcode`_ 11
-\def\everbatimxprehook {\colorlet{everbsavedcolor}{.}\color[named]{OrangeRed}}
-\def\everbatimxposthook {\color{everbsavedcolor}}
-% \def\everbatimxprehook {}
-% \def\everbatimxposthook {}
-
\def\everbatimtop {\MacroFont\small }
\let\everbatimbottom\relax
\let\everbatimhook\relax
@@ -2042,7 +2056,6 @@ pdfpagemode=UseOutlines}
\lineskip \z@skip
\let\do\@makeother \dospecials
\let\do\do@noligs \verbatim@nolig@list
- \makequotesstraight % belatedly added for 1.1a release
\makestarlowast
\everbatimhook
\trivlist\item\relax
@@ -2077,6 +2090,8 @@ pdfpagemode=UseOutlines}
\everbatimbottom
% No group here: this allows executed code to make macro
% definitions which may reused in later uses of everbatim.
+ % But the problem is with colors... j'ai visiblement un problème
+ % avec le color stack pour dvipdfmx avec les \colorlet/\color
\newlinechar 13
% Indentation of next paragraph produced from execution of #3 is
% suppressed, if #3 by itself or \everbatimbottom does no \par,
@@ -2089,6 +2104,9 @@ pdfpagemode=UseOutlines}
\everbatimxposthook
}%
+\def\everbatimxprehook {\colorlet{everbsavedcolor}{.}\color[named]{OrangeRed}}
+\def\everbatimxposthook {\color{everbsavedcolor}}
+
% L'espace venant du endofline final mis par \scantokens sera inhibé si #3 se
% termine par un % ou un \x, etc...
@@ -2159,7 +2177,24 @@ pdfpagemode=UseOutlines}
\newcommand\csbh[1]
{\texorpdfstring{\csbnolk{#1}}{\textbackslash\detokenize{#1}}}
-%--- \xintname, \xintnameimp etc...
+% --- \xintname, \xintnameimp etc...
+
+% 7 mars 2015, je résous (non!) un problème de color stack overflow avec
+% dvipdfmx qui venait au final des page headers, et à cause d'un brace
+% stripping qui enlevait la protection de mes \color ci-dessous. Il a suffi de
+% rajouter un \empty pour me débarrasser finalement du problème.
+%
+% Bon c'est bizarre, en fait le problème n'est pas résolu. Après avoir
+% supprimé fichiers auxiliaires et recompilé, il revient.
+
+% J'ai dû remettre
+%\def\everbatimxprehook {}
+%\def\everbatimxposthook {}
+% avant la section Command of xintseries
+
+% et aussi j'ai dû supprimer la couleur dans \digitstt là-bas.
+% C'est très étrange que j'ai cru le problème réglé un temps.
+
\xintForpair #1#2 in
{(xintkernel,kernel),
(xinttools,tools),
@@ -2170,13 +2205,13 @@ pdfpagemode=UseOutlines}
\expandafter\def\csname #1name\endcsname
{\texorpdfstring
{\hyperref[sec:#2]%
- {{\color{joli}\ttzfamily #1}}}
+ {\relax{\color{joli}\ttzfamily #1}}}
{#1}%
\xspace }%
\expandafter\def\csname #1nameimp\endcsname
{\texorpdfstring
{\hyperref[sec:#2imp]%
- {{\color[named]{RoyalPurple}\ttzfamily #1}}}
+ {\relax{\color[named]{RoyalPurple}\ttzfamily #1}}}
{#1}%
\xspace }%
}%
@@ -2608,8 +2643,12 @@ Further modules:
\subsection {Changes}
-See file |CHANGES.pdf| for the cumulative change log since the initial
-release.
+See file
+\href{http://mirrors.ctan.org/macros/generic/xint/CHANGES.html}{CHANGES.html}
+for the cumulative change log since the initial release.
+
+Release of |2015/03/07| only improves a few things in the documentation. The
+version number is kept unchanged at |1.1a|.
\subsubsection{\unexpanded{\unexpanded{Changes from |1.1| to |1.1a|}}}
@@ -3014,7 +3053,7 @@ $\U\times(7^{200}-3^{200})+\xintiOpp\V\times(2^{200}-1)=\D$
\item $\sum_{n=1}^{500} (4n^2 - 9)^{-2}$ with each term rounded to twelve digits,
and the sum to nine digits:
\begin{everbatim*}
-\def\coeff #1{\xintiRound {12}{1/\xintiSqr{\the\numexpr 4*#1*#1-9\relax }[0]}}
+\def\coeff #1{\xintiRound {12}{1/\xintiiSqr{\the\numexpr 4*#1*#1-9\relax }[0]}}
\xintRound {9}{\xintiSeries {1}{500}{\coeff}[-12]}
\end{everbatim*}
@@ -3040,8 +3079,8 @@ coefficient macro must be redefined to avoid a |\numexpr| overflow, as
was:
\everb|@
\def\coeff #1%
-{\xintiRound {22}{1/\xintiSqr{\xintiMul{\the\numexpr 2*#1-3\relax}
- {\the\numexpr 2*#1+3\relax}}[0]}}
+{\xintiRound {22}{1/\xintiiSqr{\xintiiMul{\the\numexpr 2*#1-3\relax}
+ {\the\numexpr 2*#1+3\relax}}[0]}}
|
\restoreMacroFont
@@ -3140,12 +3179,12 @@ digits. This is not so many, let us print them here:
examples in \autoref{sec:expr11}.
\end{itemize}
Almost all of the computational results interspersed throughout the
-documentation are not hard-coded in the source of the document. They are the
-result of evaluation of the package macros, and were selected to not impact
-too much the compilation time of this documentation. Nevertheless, there are so
-many computations done that compilation time is nevertheless significantly
-increased compared to a \LaTeX\ run on a typical document of about the same
-size.
+documentation are not hard-coded in the source of the document. They are
+the result of evaluation of the package macros, and were selected to not
+impact too much the compilation time of this documentation.
+Nevertheless, there are so many computations done that compilation time
+is significantly increased compared to a \LaTeX\ run on a typical
+document of about the same size.
\section{The \xintname bundle}
@@ -3358,15 +3397,16 @@ systematically fed to a |\numexpr..\relax| hence the expansion is then a
means not only complete expansion, but also that spaces are ignored, infix
algebra is possible, count registers are allowed, etc\dots
-The \csbxint{ApplyInline} and \csbxint{For*}\ntype{{\lowast f}} macros from
-\xinttoolsname apply a special iterated \fexpan sion, which gobbles spaces, to
-all those items which are found \emph{unbraced} from left to right in the list
-argument; this is denoted specially as here in the margin. Some other macros
-such as \csbxint{Sum}\ntype{f{$\to$}{\lowast\Ff}} from \xintfracname first do an
-\fexpan sion, then treat each found (braced or not) item (skipping spaces
-between such items) via the general fraction input parsing, this is signaled as
-here in the margin where the signification of the \lowast{} is thus a bit
-different from the previous case.
+The \csbxint{ApplyInline} and \csbxint{For*} macros from \xinttoolsname
+apply a special iterated \fexpan sion, which gobbles spaces, to all
+those items which are found \emph{unbraced} from left to right in the
+list argument; this is denoted specially as here\ntype{{\lowast f}} in
+the margin. Some other macros such as \csbxint{Sum} from \xintfracname
+first do an \fexpan sion, then treat each found (braced or not) item
+(skipping spaces between such items) via the general fraction input
+parsing, this is signaled as here\ntype{f{$\to$}{\lowast\Ff}} in the
+margin where the signification of the \lowast{} is thus a bit different
+from the previous case.
A few macros from \xinttoolsname do not expand, or expand only once their
argument\ntype{n{{\color{black}\upshape, resp.}} o}. This is also
@@ -3571,7 +3611,7 @@ achieved though is exact rounding for the basic operations. The only
non-algebraic operation currently implemented is square root extraction.
The power functions (there are three of them: \csbxint{Pow} to which |^|
is mapped in |\xintexpr..\relax|, \csbxint{FloatPower} for |^| in
-|\xintfloatexpr..relax|, and \csbxint{FloatPow} which is slighty faster
+|\xintfloatexpr..\relax|, and \csbxint{FloatPow} which is slighty faster
but limits the exponent to the \TeX{} bound) allow only integral
exponents.
@@ -3885,7 +3925,7 @@ $\xintIrr{273.3734e5/3395.7200e-2}$
%\subsection{Multiple outputs}\label{sec:multout}
Some macros return a token list of two or more numbers or fractions; they are
-then each enclosed in braces. Examples are \csbxint{iDivision} which gives
+then each enclosed in braces. Examples are \csbxint{iiDivision} which gives
first the quotient and then the remainder of euclidean division,
\csbxint{Bezout} from the \xintgcdname package which outputs five numbers,
\csbxint{FtoCv} from the \xintcfracname package which returns the list of the
@@ -4111,7 +4151,7 @@ This fits very well with the possible values of the Didot point as listed in
the
\href{http://en.wikipedia.org/wiki/Point_%28typography%29#Didot}{Wikipedia Article}.
%
-The value $0.376065$\,|mm| is said to be the \emph{the traditional value in
+The value $0.376065$\,|mm| is said to be \emph{the traditional value in
European printers' offices}. So the $1157$\,|dd|=$1238$\,|pt| rule refers to
this Didot point, or more precisely to the \emph{conversion factor} to be used
between this Didot and \TeX{} points.
@@ -4185,7 +4225,8 @@ expandable macro of one's own, one needs some \TeX nical expertise (see also
\autoref{fn:expansions} on page~\pageref{fn:expansions}).
It is thus much to be recommended to opt rather for already existing expandable
-branching macros, such as the ones which are provided by \xintname:
+branching macros, such as the ones which are provided by
+\xintname/\xintfracname: among them
\csbxint{SgnFork}, \csbxint{ifSgn}, \csbxint{ifZero}, \csbxint{ifOne},
\csbxint{ifNotZero}, \csbxint{ifTrueAelseB}, \csbxint{ifCmp}, \csbxint{ifGt},
\csbxint{ifLt}, \csbxint{ifEq}, \csbxint{ifOdd}, and \csbxint{ifInt}. See their
@@ -4374,14 +4415,14 @@ The \xintname bundle packages presuppose that the \csa{space}, \csa{empty} and
|\m@ne| control sequences are pre-defined with meanings as in Plain
\TeX{} or \LaTeX2e.
-Private macros of \xinttoolsname, \xintname, \xintfracname, \xintexprname,
-\xintbinhexname, \xintgcdname, \xintseriesname, and \xintcfracname{} use one
-or more underscores |_| as private letter, to reduce the risk of getting
-overwritten. They almost all begin either with |\XINT_| or with |\xint_|, a
-handful of these private macros such as \csa{XINTsetupcatcodes},
-\csa{XINTdigits} and those with names such as |\XINTinFloat...| or
-|\XINTinfloat...| do not have any underscore in their names (for obscure legacy
-reasons).
+Private macros of \xintkernelname, \xintcorename, \xinttoolsname,
+\xintname, \xintfracname, \xintexprname, \xintbinhexname, \xintgcdname,
+\xintseriesname, and \xintcfracname{} use one or more underscores |_| as
+private letter, to reduce the risk of getting overwritten. They almost
+all begin either with |\XINT_| or with |\xint_|, a handful of these
+private macros such as \csa{XINTsetupcatcodes}, \csa{XINTdigits} and
+those with names such as |\XINTinFloat...| or |\XINTinfloat...| do not
+have any underscore in their names (for obscure legacy reasons).
\xinttoolsname provides \hyperref[odef]{|\odef|}, \hyperref[oodef]{|\oodef|},
\hyperref[fdef]{|\fdef|} (if macros with these names already exist
@@ -4423,13 +4464,11 @@ using the \csbxint{iDivision} macro which computes both quotient and remainder
at
the same time:
%
-\leftedline{\csbxint{Assign}|\xintiDivision{100}{3}|\csbnolk{to}|\A\B|}
-%
\leftedline{\csbxint{Assign}
- |\xintiDivision{\xintiPow {2}{1000}}{\xintFac{100}}|\csbnolk{to}|\A\B|}
+ |\xintiiDivision{\xintiiPow {2}{1000}}{\xintFac{100}}|\csbnolk{to}|\A\B|}
%
give:
-\xintAssign\xintiDivision{\xintiPow {2}{1000}}{\xintFac{100}}\to\A\B
+\xintAssign\xintiiDivision{\xintiPow {2}{1000}}{\xintFac{100}}\to\A\B
|\meaning\A|\dtt{: \printnumber{\meaning\A}\relax} and
|\meaning\B|\dtt{: \printnumber{\meaning\B}\relax}.
%
@@ -4590,6 +4629,10 @@ First, there are some breaking changes:
use of |&&| and \verb+||+ is strongly recommended. The single
letter operators might be assigned some other meaning in later releases
(bitwise operations, perhaps). Do not use them.
+ \item place holders for |\xintNewExpr|
+ could be denoted |#1|, |#2|, ... or also, for special purposes |$1|, |$2|,
+ ... Only the first form is now accepted and the special cases previously
+ treated via the second form are now managed via a |protect(...)| function.
\end{itemize}
The novelties are numerous.
@@ -4984,8 +5027,91 @@ the page for examination with about correct line-breaks.
\etocdepthtag.toc {commands}
\indescriptionfalse
\addtocontents{toc}{\gdef\string\sectioncouleur{{joli}}}
+
\renewcommand{\etocaftertochook}{\addvspace{\bigskipamount}}
+
+\section{Commands of the \xintkernelname package}
+\label{sec:kernel}
+
+\localtableofcontents
+
+The \xintkernelname package contains mainly the common code base for handling
+the load-order of the bundle packages, the management of catcodes at loading
+time, definition of common constants and macro utilities which are used
+throughout the code etc ... it is automatically loaded by all packages of the
+bundle.
+
+It provides a few macros possibly useful in other contexts.
+
+\subsection{\csbh{odef}, \csbh{oodef}, \csbh{fdef}}
+\label{odef}
+\label{oodef}
+\label{fdef}
+
+\csa{oodef}|\controlsequence {<stuff>}| does
+\everb|@
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter\controlsequence
+ \expandafter\expandafter\expandafter{<stuff>}
+|
+
+This works only for a single
+|\controlsequence|, with no parameter text, even without parameters. An
+alternative would be:
+\everb|@
+\def\oodef #1#{\def\oodefparametertext{#1}%
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter\oodefparametertext
+ \expandafter\expandafter\expandafter }
+|
+
+\noindent
+but it does not allow |\global| as prefix, and, besides, would have anyhow its
+use (almost) limited to parameter texts without macro parameter tokens
+(except if the expanded thing does not see them, or is designed to deal with
+them).
+
+There is a similar macro |\odef| with only one expansion of the replacement text
+|<stuff>|, and |\fdef| which expands fully |<stuff>| using |\romannumeral-`0|.
+
+These tools are provided as it is sometimes wasteful (from the point of view
+of running time) to do an |\edef| when one knows that the contents expand in
+only two steps for example, as is the case with all (except \csbxint{loop} and
+\csbxint{iloop}) the expandable macros of the \xintname packages. Each will be
+defined only if \xintkernelname finds them currently undefined. They can be
+prefixed with |\global|.
+
+
+\subsection{\csbh{xintReverseOrder}}\label{xintReverseOrder}
+
+\csa{xintReverseOrder}\marg{list}\etype{n} does not do any expansion of its
+argument and just reverses the order of the tokens in the \meta{list}. Braces
+are removed once and the enclosed material, now unbraced, does not get
+reversed. Unprotected spaces (of any character code) are gobbled.
+%
+\leftedline{|\xintReverseOrder{\xintDigitsOf\xintiPow {2}{100}\to\Stuff}|}
+%
+\leftedline{gives:
+ \ttfamily{\string\Stuff\string\to1002\string\xintiPow\string\xintDigitsOf}}
+
+\subsection{\csbh{xintLength}}\label{xintLength}
+
+\csa{xintLength}\marg{list}\etype{n} does not do \emph{any} expansion of its
+argument and just counts how many tokens there are (possibly none). So to use
+it to count things in the replacement text of a macro one should do
+|\expandafter\xintLength\expandafter{\x}|. One may also use it inside macros
+as |\xintLength{#1}|. Things enclosed in braces count as one. Blanks between
+tokens are not counted. See \csbxint{NthElt}|{0}| (from \xinttoolsname) for a
+variant which first \fexpan ds its argument.
+%
+\leftedline{|\xintLength {\xintiPow {2}{100}}|\dtt{=\xintLength
+ {\xintiPow{2}{100}}}}
+%
+\leftedline{${}\neq{}$|\xintLen {\xintiPow {2}{100}}|\dtt{=\xintLen
+ {\xintiPow{2}{100}}}}
+
\section{Commands of the \xinttoolsname package}
\label{sec:tools}
@@ -5008,19 +5134,8 @@ This section contains various concrete examples and ends with a
\hyperref[ssec:quicksort]{completely expandable implementation of the Quick Sort
algorithm} together with a graphical illustration of its action.
-% \clearpage % attention à ce clearpage
-
-\subsection{\csbh{xintReverseOrder}}\label{xintReverseOrder}
-
-\csa{xintReverseOrder}\marg{list}\etype{n} does not do any expansion of its
-argument and just reverses the order of the tokens in the \meta{list}. Braces
-are removed once and the enclosed material, now unbraced, does not get
-reversed. Unprotected spaces (of any character code) are gobbled.
-%
-\leftedline{|\xintReverseOrder{\xintDigitsOf\xintiPow {2}{100}\to\Stuff}|}
-%
-\leftedline{gives:
- \ttfamily{\string\Stuff\string\to1002\string\xintiPow\string\xintDigitsOf}}
+See also \ref{xintReverseOrder} and \ref{xintLength} which come with package
+\xintkernelname, automatically loaded by \xinttoolsname.
\subsection{\csbh{xintRevWithBraces}}\label{xintRevWithBraces}
@@ -5061,21 +5176,6 @@ did not contain macros. Alternatively:
The macro \csa{xintReverseWithBracesNoExpand}\etype{n} does the same job
without the initial expansion of its argument.
-\subsection{\csbh{xintLength}}\label{xintLength}
-
-\csa{xintLength}\marg{list}\etype{n} does not do \emph{any} expansion of its
-argument and just counts how many tokens there are (possibly none). So to use it
-to count things in the replacement text of a macro one should do
-|\expandafter\xintLength\expandafter{\x}|. One may also use it inside macros as
-|\xintLength{#1}|. Things enclosed in braces count as one. Blanks between tokens
-are not counted. See \csbxint{NthElt}|{0}| for a variant which first \fexpan ds
-its argument.
-%
-\leftedline{|\xintLength {\xintiPow {2}{100}}|\dtt{=\xintLength
- {\xintiPow{2}{100}}}}
-%
-\leftedline{${}\neq{}$|\xintLen {\xintiPow {2}{100}}|\dtt{=\xintLen
- {\xintiPow{2}{100}}}}
\subsection{\csbh{xintZapFirstSpaces}, \csbh{xintZapLastSpaces}, \csbh{xintZapSpaces}, \csbh{xintZapSpacesB}}
\label{xintZapFirstSpaces}
@@ -5306,6 +5406,8 @@ may have direct use: %
\leftedline{|\xintCSVtoListNoExpand
{\if,\ifnum,\ifx,\ifdim,\ifcat,\ifmmode}|}
%
+% ATTENTION 18 novembre TEST DE newtxtt 1.05 PAS POSSIBLE \textsc DANS \dtt
+% mais on peut avec \scshape. Finalement je n'utilise pas les old style figures.
\leftedline{|->|\dtt{\expandafter\detokenize\expandafter
{\romannumeral0\xintcsvtolistnoexpand
{\if,\ifnum,\ifx,\ifdim,\ifcat,\ifmmode}}}}
@@ -6251,7 +6353,7 @@ This tabular provides an example:\par
\begin{everbatim*}
\centerline{\normalcolor\begin{tabular}{ccc}
$N$ & $N^2$ & $N^3$ \\ \hline
- \def\Row #1{ #1 & \xintiSqr {#1} & \xintiPow {#1}{3} \\ \hline }%
+ \def\Row #1{ #1 & \xintiiSqr {#1} & \xintiiPow {#1}{3} \\ \hline }%
\xintApplyInline \Row {\xintCSVtoList{17,28,39,50,61}}
\end{tabular}}\medskip
\end{everbatim*}
@@ -6661,9 +6763,10 @@ The\xintNewIExpr \FA [2] {protect(\DimToNum {#2})^3/protect(\DimToNum{#1})^2}
and not only functions from the \csbxint{expr} syntax. The \csa{FA} turns
out to have meaning \texttt{\meaning\FA}. The \csa{romannumeral} part is
only to ensure it expands in only two steps, and could be removed. The
- mysterious \expandafter|\string\xintiRound::csv| is what \csbxint{iexpr}
- uses to round its result (or comma separated results) to an integer. See
- also the next footnote.},
+ \expandafter|\string\xintRound::csv| and
+ \expandafter|\string\xintSPRaw::csv| commands are used internally by
+ \csbxint{iexpr} to round and pretty print its result (or comma separated
+ results). See also the next footnote.},
%
is for illustration only, not
only because of pdf rendering artefacts when displaying adjacent rules (which do
@@ -6991,17 +7094,7 @@ exactly analogous to well-known expandable techniques made possible by
successive digits was not avoided, as it occurs already in the
locking-up of the result, what is avoided is to spend time un-locking,
and then have the macros shuffle around possibly hundreds of digit
- tokens rather than a few control words.\par
- Technical note: I decided (somewhat hesitantly) for reasons of
- optimization purposes to skip in the private \csa{xintexpr} format a
- \csa{protect}-ion for the |.=digits/digits[digits]| control
- sequences used internally. Thus in the improbable case that some macro
- package (such control sequence names are unavailable to the casual
- user) has given a meaning to one such control sequence, there is a
- possibility of a crash when embedding an \csa{xintexpr} without
- \csa{xintthe} prefix in an \csa{edef} (the computations by themselves
- do proceed perfectly correctly even if these control sequences have
- acquired some non \csa{relax} meaning).}
+ tokens rather than a few control words.}
Our |\Fibonacci| expands completely under \fexpan sion,
so we can use \hyperref[fdef]{\ttfamily\char92fdef} rather than |\edef| in a
@@ -7174,8 +7267,8 @@ found one after the otehr on the on the left of \csa{to}. It is not expandable.
A `full' expansion is first applied to the material in front of
\csa{xintAssign}, which may thus be a macro expanding to a list of braced items.
-\xintAssign \xintiPow {7}{13}\to\SevenToThePowerThirteen
-\xintAssign \xintiDivision{1000000000000}{133333333}\to\Q\R
+\xintAssign \xintiiPow {7}{13}\to\SevenToThePowerThirteen
+\xintAssign \xintiiDivision{1000000000000}{133333333}\to\Q\R
Special case: if after this initial expansion no brace is found immediately
after \csa{xintAssign}, it is assumed that there is only one control sequence
@@ -7184,12 +7277,12 @@ following |\to|, and this control sequence is then defined via
\csa{xintAssign} and \csa{to}. Other types of expansions are specified through
an optional parameter to \csa{xintAssign}, see \emph{infra}.
%
-\leftedline{|\xintAssign \xintiDivision{1000000000000}{133333333}\to\Q\R|}
+\leftedline{|\xintAssign \xintiiDivision{1000000000000}{133333333}\to\Q\R|}
%
\leftedline{|\meaning\Q: |\dtt{\meaning\Q}, |\meaning\R:|
\dtt{\meaning\R}} %
%
-\leftedline{|\xintAssign \xintiPow
+\leftedline{|\xintAssign \xintiiPow
{7}{13}\to\SevenToThePowerThirteen|}
%
\leftedline{|\SevenToThePowerThirteen|\dtt{=\SevenToThePowerThirteen}}
@@ -7268,44 +7361,6 @@ submitted to an |\edef|, but the default is now to use |\def|.
(globally) sets to \csa{relax} all macros which were defined by the previous
\csa{xintAssignArray} with \csa{myArray} as array macro.
-\subsection{\csbh{odef}, \csbh{oodef}, \csbh{fdef}}
-\label{odef}
-\label{oodef}
-\label{fdef}
-
-\csa{oodef}|\controlsequence {<stuff>}| does
-\everb|@
- \expandafter\expandafter\expandafter\def
- \expandafter\expandafter\expandafter\controlsequence
- \expandafter\expandafter\expandafter{<stuff>}
-|
-
-This works only for a single
-|\controlsequence|, with no parameter text, even without parameters. An
-alternative would be:
-\everb|@
-\def\oodef #1#{\def\oodefparametertext{#1}%
- \expandafter\expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\def
- \expandafter\expandafter\expandafter\oodefparametertext
- \expandafter\expandafter\expandafter }
-|
-
-\noindent
-but it does not allow |\global| as prefix, and, besides, would have anyhow its
-use (almost) limited to parameter texts without macro parameter tokens
-(except if the expanded thing does not see them, or is designed to deal with
-them).
-
-There is a similar macro |\odef| with only one expansion of the replacement text
-|<stuff>|, and |\fdef| which expands fully |<stuff>| using |\romannumeral-`0|.
-
-These tools are provided as it is sometimes wasteful (from the point of view of
-running time) to do an |\edef| when one knows that the contents expand in only
-two steps for example, as is the case with all (except \csbxint{loop} and
-\csbxint{iloop}) the expandable macros of the \xintname packages.
-Each will be defined only if \xinttoolsname finds them currently undefined. They
-can be prefixed with |\global|.
\subsection{The Quick Sort algorithm illustrated}\label{ssec:quicksort}
@@ -7868,14 +7923,14 @@ Extended by \xintfracname to fractions.
\subsection{\csbh{xintLtorEq}, \csbh{xintiiLtorEq}}
-|\xintLtorEq|\n\m\etype{\Numf\Numf} returns 1 if |N|$\leq$|M|, 0 otherwise.
+|\xintLtorEq|\n\m\etype{\Numf\Numf} returns 1 if |N|$\leqslant$|M|, 0 otherwise.
Extended by \xintfracname to fractions.
\csa{xintiiLtorEq} skips the \csbxint{Num} overhead.\etype{ff}
\subsection{\csbh{xintGtorEq}, \csbh{xintiiGtorEq}}
-|\xintGtorEq|\n\m\etype{\Numf\Numf} returns 1 if |N|$\geq$|M|, 0 otherwise.
+|\xintGtorEq|\n\m\etype{\Numf\Numf} returns 1 if |N|$\geqslant$|M|, 0 otherwise.
Extended by \xintfracname to fractions.
\csa{xintiiGtorEq} skips the \csbxint{Num} overhead.\etype{ff}
@@ -8916,7 +8971,7 @@ zeroes.)
%{\small New with release |1.09a|.\par}
|\xintFloor {f}|\etype{\Ff} returns the largest relative integer |N| with
-|N|${}\leq{}$|f|. %
+|N|${}\leqslant{}$|f|. %
%
\leftedline{|\xintFloor {-2.13}|\dtt{=\xintFloor
{-2.13}}, |\xintFloor {-2}|\dtt{=\xintFloor {-2}}, |\xintFloor
@@ -9034,6 +9089,37 @@ other macros; only its final evaluation is submitted to \csa{xintFloat}: the
inner evaluations of chained arguments are not at all done in `floating'
mode. For this one must use |\xintthefloatexpr|.
+\subsection{\csbh{xintPFloat}}\label{xintPFloat}
+
+The macro |\xintPFloat [P]{f}|\etype{{\upshape[\numx]}\Ff} is like
+\csbxint{Float} but ``pretty-prints'' the output, in the sense of dropping the
+scientific notation if possible. Here are the rules:
+\begin{enumerate}
+\item if it is possible to drop the scientific part and express the number as
+ a decimal number with the same number of digits as in the significand and a
+ decimal mark, it is done so,
+\item if the number is less than one and at most four zeros need be inserted
+ after the decimal mark to express it without scientific part, it is done
+ so,
+\item if the number is zero it is printed as \dtt{\xintPFloat{0}}. All other
+ cases have either a decimal mark or a scientific part or both.
+\item trailing zeros are not trimmed.
+\end{enumerate}
+\begin{everbatim*}
+\begin{itemize}[noitemsep]
+\item \xintPFloat {0}
+\item \xintPFloat {123}
+\item \xintPFloat {0.00004567}
+\item \xintPFloat {0.000004567}
+\item \xintPFloat {12345678e-12}
+\item \xintPFloat {12345678e-13}
+\item \xintPFloat {12345678.12345678}
+\item \xintPFloat {123456789.123456789}
+\item \xintPFloat {123456789123456789}
+\item \xintPFloat {1234567891234567}
+\end{itemize}
+\end{everbatim*}
+
\subsection{\csbh{xintAdd}}\label{xintAdd}
Computes the addition\etype{\Ff\Ff} of two fractions. To keep for integers the
@@ -9627,7 +9713,7 @@ spaces but nothing else in-between their constituent characters.
automatically unpacked using |\number|, discarding the stretch and shrink
components and giving the dimension value in |sp| units ($1/65536$th of a
\TeX{} point). Furthermore, tacit multiplication is implied, when the
- register, variable, or expression if immediately prefixed by a (decimal)
+ register, variable, or expression is immediately prefixed by a (decimal)
number.
\item tacit multiplication (the parser inserts a |*|) applies when the parser is
@@ -9670,8 +9756,8 @@ spaces but nothing else in-between their constituent characters.
% caractère actif... avant j'utilisais ici \everb
% avec délimiteur !
\begin{everbatim*}
-\xintNewBoolExpr \AssertionA[3]{ #1 & (#2|#3) }
-\xintNewBoolExpr \AssertionB[3]{ #1 | (#2&#3) }
+\xintNewBoolExpr \AssertionA[3]{ #1 && (#2|#3) }
+\xintNewBoolExpr \AssertionB[3]{ #1 || (#2&#3) }
\xintNewBoolExpr \AssertionC[3]{ xor(#1,#2,#3) }
{\centering\normalcolor\xintFor #1 in {0,1} \do {%
\xintFor #2 in {0,1} \do {%
@@ -10079,12 +10165,11 @@ Refer to \autoref{sec:expr11} for more examples.
digits may follow.
\item[{\color[named]{DarkOrchid}??}] is used as |(cond)??{<0}{=0}{>0}|.
- |cond| is anything, its sign is evaluated (it is not necessary to
- use |sgn(cond)??{<}{=}{>}|) and depending on the sign the correct
- branch is un-braced, the two others are swallowed. The un-braced
- branch will then be parsed as usual. Differs from the |ifsgn|
- conditional as the two false branches are not evaluated and
- furthermore the number scanner is still active on exit.
+ |cond| is anything, its sign is evaluated and depending on the sign the
+ correct branch is un-braced, the two others are swallowed. The un-braced
+ branch will then be parsed as usual. Differs from the |ifsgn| conditional
+ as the two false branches are not evaluated and furthermore the number
+ scanner is still active on exit.
%
\leftedline{|\def\x{0.33}\def\y{1/3}|}
%
@@ -10129,7 +10214,7 @@ Refer to \autoref{sec:expr11} for more examples.
\item The power operator |^|, or |**|. It is left associative:
{\restoreMicroFont|\xinttheiexpr 2^2^3\relax|} evaluates to \xinttheiexpr
2^2^3\relax, not \xinttheiexpr 2^(2^3)\relax. Note that if the float
- precision is too low, iterated powers withing |\xintfloatexpr..\relax| may
+ precision is too low, iterated powers within |\xintfloatexpr..\relax| may
fail: for example with the default setting |(1+1e-8)^(12^16)| will be
computed with |12^16| approximated from its $16$ most significant digits
but it has $18$ digits (\dtt{={\xintiiPow{12}{16}}}), hence the result is
@@ -10208,7 +10293,7 @@ one obtains as output \xinttheexpr 2^3,3^4,5^6\relax{}.
\item The parentheses.
\end{itemize}
-See \autoref{ssec:countinexpr} for count and dimen registers and variables.
+% See \autoref{ssec:countinexpr} for count and dimen registers and variables.
\subsection{\texorpdfstring{\texttt{\protect\string\numexpr}}{\textbackslash
numexpr} or \texorpdfstring{\texttt{\protect\string\dimexpr}}{\textbackslash
@@ -10420,11 +10505,10 @@ Macros created by |\xintNewExpr| can thus be nested.
\end{everbatim*}
\begin{framed}
- The whole point of using \csbxint{NewExpr} is to produce a macro which does
- not do any of the \csbxint{expr} for expandable manipulations, manipulations
- which may have an impact on some regions of \TeX{}'s memory (this impact gets
- noticeable only if many of thousands of \csbxint{expr}-essions
- are evaluated).
+ The whole point of using \csbxint{NewExpr} is to produce a macro whose
+ execution will not populate the hash table contrarily to what |\xintexpr|
+ does to some extent (this impact on some of \TeX{}'s memory gets noticeable
+ only if many of thousands of \csbxint{expr}-essions are evaluated).
A ``formula'' created by |\xintNewExpr| is thus a macro whose parameters are
given to a possibly very complicated combination of the various macros of
@@ -10510,11 +10594,11 @@ is something non-empty as it found the place holders |#4| and |#5|.
\subsubsection {Conditional operators and \csbh{NewExpr}}
-The |1.09a| conditional operators |?| and |??| cannot be parsed by |\xintNewExpr|
-when they contain macro parameters |#1|,\dots, |#9| within their scope. However
+The |?| and |??| conditional operators cannot be parsed by |\xintNewExpr| when
+they contain macro parameters |#1|,\dots, |#9| within their scope. However
replacing them with the functions |if| and, respectively |ifsgn|, the parsing
-should succeed. And the created macro will \emph{not evaluate the branches
- to be skipped}, thus behaving exactly like |?| and |??| would have in the
+should succeed. And the created macro will \emph{not evaluate the branches to
+ be skipped}, thus behaving exactly like |?| and |??| would have in the
|\xintexpr|.
\begin{everbatim*}
@@ -10591,7 +10675,7 @@ complicated situations with list operations:
\end{everbatim*}
Some things are definitely expected not to work therein: particularly the
-|add|, |mul|, |subs|, |seq|, |rseq|, |rrseq|, |iter| with |omit|, |abort|,
+|seq|, |rseq|, |rrseq|, |iter| with |omit|, |abort|,
|break|. Also, but this is quite anecdotical, |first| and |last| should not
work (I did not try; actually I did not try the functions with dummy letters
either, because each time I think about compatibility with \csbxint{NewExpr},
@@ -10678,8 +10762,9 @@ as is necessary, thus one does not want to do |num(1e100000)| for example!
%
The |reduce| function is not available and will raise un error. The |frac|
-function also. The |sqrt| function is mapped to \csbxint{iSqrt} (this gives
-the truncated not the rounded square root).
+function also. The |sqrt| function is mapped to \csbxint{iiSqrt} which gives
+a truncated square root. The |sqrtr| function is mapped to \csbxint{iiSqrtR}
+which gives a rounded square root.
One can use the Float macros if one is careful to use |num|, or |round| on
their output,
@@ -10891,7 +10976,7 @@ page \pageref{sec:expr11coords}.
As already mentioned \csa{xintNewExpr}|\myformula[n]| does not check the prior
existence of a macro |\myformula|. And the number of parameters |n| given as
-mandatory argument withing square brackets should be (at least) equal
+mandatory argument within square brackets should be (at least) equal
to the number of parameters in the expression.
Obviously I should mention that \csa{xintNewExpr} itself can not be used in an
@@ -11149,8 +11234,7 @@ and keeps a copy of all quotients and remainders. %
%
\leftedline{|\xintAssign {{\xintEuclideAlgorithm {10000}{1113}}}\to\X|}
-|\meaning\X: |\dtt{\expandafter\allowlistsplit
- \meaning\X\relax .}
+|\meaning\X: |\dtt{\expandafter\allowlistsplit\meaning\X\relax .}
The first token is the number of steps, the second is |N|, the
third is the GCD, the fourth is |M| then the first quotient and
@@ -11199,11 +11283,16 @@ macro and modify it to what is needed.
\leftedline{|\xintTypesetBezoutAlgorithm {10000}{1113}|}
\xintTypesetBezoutAlgorithm {10000}{1113}
-% 28 octobre, le problème de color stack overflow avec dvipdfmx vu le 14
-% octobre dans xintcfrac apparaît dans xintseries. Pas envie d'investiguer.
+
+% problème de color stack overflow avec dvipdfmx
+% 14 octobre puis 28 octobre 2014
+% 7 mars 2015
+
\def\everbatimxprehook {}
\def\everbatimxposthook {}
+\def\digitstt #1{\begingroup #1\endgroup}
+\let\dtt\digitstt
\section{Commands of the \xintseriesname package}
\label{sec:series}
@@ -11373,14 +11462,20 @@ expand to its value after iterated full expansion of its first token. |A| and
expressions built with such; they must obey the \TeX{} bound. The initial term
|f| may be a macro |\f|, it will be expanded to its value representing |F(A)|.
+
+% 7 mars 2015, problème de color stack overflow, je dois supprimer textcolor
+% j'essaie en supprimant \normalcolor aussi
+% et aussi dans le multicols plus bas après
+% «Here is a slightly more complicated evaluation»
+
\begin{everbatim*}
\def\ratio #1{2/#1[0]}% 2/n, to compute exp(2)
\cnta 0 % previously declared count
-\begin{quote}\normalcolor
+\begin{quote}
\loop \oodef\z {\xintRationalSeries {0}{\cnta}{1}{\ratio }}%
\noindent$\sum_{n=0}^{\the\cnta} \frac{2^n}{n!}=
\xintTrunc{12}\z\dots=
- \xintFrac\z={}$\textcolor[named]{OrangeRed}{$\xintFrac{\xintIrr\z}$}\vtop to 5pt{}\par
+ \xintFrac\z=\xintFrac{\xintIrr\z}$\vtop to 5pt{}\par
\ifnum\cnta<20 \advance\cnta 1 \repeat
\end{quote}
\end{everbatim*}
@@ -11388,11 +11483,11 @@ expressions built with such; they must obey the \TeX{} bound. The initial term
\begin{everbatim*}
\def\ratio #1{-1/#1[0]}% -1/n, comes from the series of exp(-1)
\cnta 0 % previously declared count
-\begin{quote}\normalcolor
+\begin{quote}
\loop
\oodef\z {\xintRationalSeries {0}{\cnta}{1}{\ratio }}%
\noindent$\sum_{n=0}^{\the\cnta} \frac{(-1)^n}{n!}=
- \xintTrunc{20}\z\dots=\xintFrac{\z}={}$\textcolor[named]{OrangeRed}{$\xintFrac{\xintIrr\z}$}
+ \xintTrunc{20}\z\dots=\xintFrac{\z}=\xintFrac{\xintIrr\z}$%
\vtop to 5pt{}\par
\ifnum\cnta<20 \advance\cnta 1 \repeat
\end{quote}
@@ -11436,7 +11531,7 @@ documented next.
Here is a slightly more complicated evaluation:
\begin{everbatim*}
\cnta 1
-\begin{multicols}{2}\normalcolor
+\begin{multicols}{2}
\loop \oodef\z {\xintRationalSeries
{\cnta}
{2*\cnta-1}
@@ -11445,8 +11540,8 @@ Here is a slightly more complicated evaluation:
\oodef\w {\xintRationalSeries {0}{2*\cnta-1}{1}{\ratioexp{\the\cnta}}}%
\noindent
$\sum_{n=\the\cnta}^{\the\numexpr 2*\cnta-1\relax} \frac{\the\cnta^n}{n!}/%
- \sum_{n=0}^{\the\numexpr 2*\cnta-1\relax} \frac{\the\cnta^n}{n!} = {}$%
- \textcolor[named]{OrangeRed}{$\xintTrunc{8}{\xintDiv\z\w}\dots$} \vtop to 5pt{}\endgraf
+ \sum_{n=0}^{\the\numexpr 2*\cnta-1\relax} \frac{\the\cnta^n}{n!} =
+ \xintTrunc{8}{\xintDiv\z\w}\dots$ \vtop to 5pt{}\endgraf
\ifnum\cnta<20 \advance\cnta 1 \repeat
\end{multicols}
\end{everbatim*}
@@ -12142,11 +12237,6 @@ always do it on a value computed with |D+1| truncation.
\localtableofcontents
-% 14 octobre, problème de color stack overflow avec dvipdfmx que je n'ai
-% pas le temps d'essayer de comprendre.
-\def\everbatimxprehook {}
-\def\everbatimxposthook {}
-
This package was first included in release |1.04| (|2013/04/25|) of the
\xintname bundle. It was kept almost unchanged until |1.09m| of |2014/02/26|
which brings some new macros: \csbxint{FtoC}, \csbxint{CtoF}, \csbxint{CtoCv},
@@ -12809,7 +12899,7 @@ internal use by the package.
\csa{xintGCtoGC}|{a+b/c+d/e+f/g+......+v/w+x/y}|\etype{f} expands (with the
usual meaning) each one of the coefficients and returns an inline continued
-fraction of the same type, each expanded coefficient being enclosed withing
+fraction of the same type, each expanded coefficient being enclosed within
braces.
%
\begin{everbatim*}
@@ -12966,10 +13056,11 @@ $1$ or $-1$.
% \bigskip
% This is \expandafter|\xintbndlversion| of \expandafter|\xintbndldate|.
%
-% The main changes with release |1.1| of |2014/10/28|, apart from the new
-% packages \xintkernelnameimp and \xintcorenameimp which were extracted from
-% \xinttoolsnameimp and \xintnameimp, and the fact that |\xintAdd| does not
-% multiply denominators blindly, are located in \xintexprnameimp.
+% Extensive changes in release |1.1| of |2014/10/28| were located in
+% \xintexprnameimp. Also with that release,
+% packages \xintkernelnameimp and \xintcorenameimp were extracted from
+% \xinttoolsnameimp and \xintnameimp, and |\xintAdd| was modified to not
+% multiply denominators blindly.
%
% \smallskip
% \noindent\fbox{\xinttoolsnameimp is not loaded anymore by
@@ -12980,11 +13071,11 @@ $1$ or $-1$.
%
% \localtableofcontents
%
-% Release |1.1| of |2014/10/28| splits off |xintcore.sty| and also
-% |xintkernel.sty| from |xint.sty|, the latter being the common minimal code
-% base for loading management and catcode control with also a few programming
-% utilities. Loaded by both |xintcore.sty| and |xinttools.sty| hence by all
-% other packages.
+% This package provides the common minimal code base for loading management
+% and catcode control and also a few programming utilities. It is loaded by both
+% |xintcore.sty| and |xinttools.sty| hence by all other packages.
+%
+% First appeared as a separate package with release |1.1|.
%
% \subsection{Catcodes, \protect\eTeX{} and reload detection}
%
@@ -19185,7 +19276,7 @@ $1$ or $-1$.
%
% Some overhead was added inadvertently in 1.09a to inner routines when
% \xintiquo and \xintidivision were also promoted to use \xintnum; release 1.09f
-% thus uses \xintiiquo and \xintiidivision xhich avoid this \xintnum overhead.
+% thus uses \xintiiquo and \xintiidivision which avoid this \xintnum overhead.
%
% 1.09j replaced the previous long \ifcase from \XINT_sqrt_c by some nested
% \ifnum's.
@@ -19204,9 +19295,11 @@ $1$ or $-1$.
\def\xintiisqrt {\expandafter\XINT_sqrt_post\romannumeral0\xintiisquareroot }%
\def\xintiisqrtr {\expandafter\XINT_sqrtr_post\romannumeral0\xintiisquareroot }%
\def\XINT_sqrt_post #1#2{\XINT_dec_pos #1\R\R\R\R\R\R\R\R\Z \W\W\W\W\W\W\W\W }%
-% N = (#1)^2 - #2 avec #1 le plus petit possible et #2>0 (hence #2<2*#1).
+% \end{macrocode}
+% \lverb|N = (#1)^2 - #2 avec #1 le plus petit possible et #2>0 (hence #2<2*#1).
% (#1-.5)^2=#1^2-#1+.25=N+#2-#1+.25. Si 0<#2<#1, <= N-0.75<N, donc rounded->#1
-% si #2>=#1, (#1-.5)^2>=N+.25>N, donc rounded->#1-1.
+% si #2>=#1, (#1-.5)^2>=N+.25>N, donc rounded->#1-1.|
+% \begin{macrocode}
\def\XINT_sqrtr_post #1#2{\xintiiifLt {#2}{#1}% Lt <-> a<b
{ #1}{\XINT_dec_pos #1\R\R\R\R\R\R\R\R\Z \W\W\W\W\W\W\W\W }}%
\def\xintisquareroot #1{\expandafter\XINT_sqrt_checkin\romannumeral0\xintnum{#1}\Z }%
@@ -21455,7 +21548,7 @@ $1$ or $-1$.
%
% 1.09i also adds \xintFloatE and modifies \XINTinFloatfE, although currently
% the latter is only used from \xintfloatexpr hence always with \XINTdigits, it
-% comes equipped with its first argument withing brackets as the other
+% comes equipped with its first argument within brackets as the other
% \XINTinFloat... macros.
%
% 1.09m ceases here and elsewhere, also in \xintcfracname, to use \Z as
@@ -25501,6 +25594,15 @@ $1$ or $-1$.
% number scanner, |a/b[N]| notation can be used without use of braces (the
% |N| will end up as is in a |\numexpr|, it is not parsed by the
% |\xintexpr|-ession scanner).
+% \item although |&| and \verb+|+ are still available as Boolean
+% operators the use of |&&| and \verb+||+ is strongly recommended.
+% The single letter operators might be assigned some other meaning
+% in later releases (bitwise operations, perhaps). Do not use them.
+% \item place holders for |\xintNewExpr| could be denoted |#1|, |#2|,
+% ... or also, for special purposes |$1|,
+% |$2|, ... Only the first form is now accepted and the special cases
+% previously treated via the second form are now managed via a
+% |protect(...)| function.
% \end{itemize}
% \item[novelties] They are quite a few. \begin{itemize}
% \item |\xintiexpr|, |\xinttheiexpr| admit an optional argument within brackets
@@ -25745,6 +25847,8 @@ $1$ or $-1$.
[2014/11/07 v1.1a Expandable expression parser (jfB)]%
% \end{macrocode}
% \subsection{Locking and unlocking}
+% je dois réfléchir si je dois bloquer expansion après |unlock_a|, à
+% cause de nil.
% \begin{macrocode}
\def\xint_gob_til_! #1!{}% this ! has catcode 11
\edef\XINT_expr_lockscan#1!{\noexpand\expandafter\space\noexpand\csname .=#1\endcsname }%
@@ -25752,7 +25856,6 @@ $1$ or $-1$.
\def\XINT_expr_inintpart #1!{\XINT_num{#1}}%
\def\XINT_expr_infracpart #1e#2!{#1![\the\numexpr#2-\xintLength{#1}]!}%
\def\XINT_expr_inexppart e#1!{![\the\numexpr #1]!}%
-% je dois réfléchir si je dois bloquer expansion après unlock_a, à cause de nil.
\def\XINT_expr_unlock {\expandafter\XINT_expr_unlock_a\string }%
\def\XINT_expr_unlock_a #1.={}%
\def\XINT_expr_unexpectedtoken {\xintError:ignored }%
@@ -27568,7 +27671,7 @@ $1$ or $-1$.
\def\XINT_expr_rseq:_end ^,~#1#2{}% no nil for rseq
% \end{macrocode}
% \subsubsection{\csh{XINT_expr_rseq:_A} etc\dots}
-% \lverb |n++ for rseq|.
+% \lverb |n++ for rseq|
% \begin{macrocode}
\def\XINT_expr_rseq:_A +#1!#2#3,^,{\XINT_expr_rseq:_D {#1}#3{#2}}%
\def\XINT_expr_rseq:_D #1#2#3{\expandafter\XINT_expr_rseq:_E
@@ -27651,7 +27754,7 @@ $1$ or $-1$.
}%
% \end{macrocode}
% \subsubsection{\csh{XINT_expr_rrseq:_A} etc\dots}
-% \lverb |n++ for rrseq|.
+% \lverb |n++ for rrseq|
% \begin{macrocode}
\catcode`? 3
\def\XINT_expr_rrseq:_A +#1!#2#3,^,{\XINT_expr_rrseq:_D {#1}{#3}{#2}}%
@@ -27741,7 +27844,7 @@ $1$ or $-1$.
\def\XINT_expr:_unlock #1{\XINT_expr_unlock #1}%
% \end{macrocode}
% \subsubsection{\csh{XINT_expr_iter:_A} etc\dots}
-% \lverb |n++ for iter|.
+% \lverb |n++ for iter|
% \begin{macrocode}
\catcode`? 3
\def\XINT_expr_iter:_A +#1!#2#3,^,{\XINT_expr_iter:_D {#1}{#3}{#2}}%
@@ -27767,9 +27870,9 @@ $1$ or $-1$.
% \subsection{Macros handling csv lists for functions with multiple comma
% separated arguments in expressions}
% \lverb|These 17 macros are used inside \csname...\endcsname. These things
-% are not initiated by a romannumeral in general, but in some cases they are,
+% are not initiated by a \romannumeral in general, but in some cases they are,
% especially when involved in an \xintNewExpr. They will then be protected
-% against expansion will expand only later in in contexts governed by an
+% against expansion and expand only later in contexts governed by an
% initial \romannumeral-`0. There each new item may need to be expanded, which
% would not be the case in the use for the _func_ things.|
% \begin{macrocode}