From bbbf3700086ea2f861b6594ea23e37f29d3f9dc1 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 13 Dec 2018 22:53:27 +0000 Subject: l3kernel (13dec18) git-svn-id: svn://tug.org/texlive/trunk@49405 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md | 13 +- Master/texmf-dist/doc/latex/l3kernel/README.md | 2 +- Master/texmf-dist/doc/latex/l3kernel/expl3.pdf | Bin 585407 -> 585407 bytes .../texmf-dist/doc/latex/l3kernel/interface3.pdf | Bin 1544192 -> 1544530 bytes .../texmf-dist/doc/latex/l3kernel/interface3.tex | 2 +- .../texmf-dist/doc/latex/l3kernel/l3docstrip.pdf | Bin 263327 -> 263328 bytes .../texmf-dist/doc/latex/l3kernel/l3styleguide.pdf | Bin 280047 -> 280047 bytes .../texmf-dist/doc/latex/l3kernel/l3styleguide.tex | 2 +- .../doc/latex/l3kernel/l3syntax-changes.pdf | Bin 227775 -> 227776 bytes .../doc/latex/l3kernel/l3syntax-changes.tex | 2 +- .../doc/latex/l3kernel/l3term-glossary.pdf | Bin 186553 -> 186554 bytes .../doc/latex/l3kernel/l3term-glossary.tex | 2 +- Master/texmf-dist/doc/latex/l3kernel/source3.pdf | Bin 5638820 -> 5638526 bytes Master/texmf-dist/doc/latex/l3kernel/source3.tex | 2 +- Master/texmf-dist/source/latex/l3kernel/expl3.dtx | 4 +- .../texmf-dist/source/latex/l3kernel/l3alloc.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3basics.dtx | 2 +- .../source/latex/l3kernel/l3bootstrap.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3box.dtx | 2 +- .../source/latex/l3kernel/l3candidates.dtx | 213 +------------------- .../texmf-dist/source/latex/l3kernel/l3clist.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3coffins.dtx | 2 +- .../source/latex/l3kernel/l3color-base.dtx | 2 +- .../source/latex/l3kernel/l3deprecation.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3doc.dtx | 2 +- .../source/latex/l3kernel/l3docstrip.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3drivers.dtx | 12 +- .../texmf-dist/source/latex/l3kernel/l3expan.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3file.dtx | 15 +- .../texmf-dist/source/latex/l3kernel/l3final.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3flag.dtx | 2 +- .../source/latex/l3kernel/l3fp-assign.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3fp-aux.dtx | 2 +- .../source/latex/l3kernel/l3fp-basics.dtx | 2 +- .../source/latex/l3kernel/l3fp-convert.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3fp-expo.dtx | 2 +- .../source/latex/l3kernel/l3fp-extended.dtx | 2 +- .../source/latex/l3kernel/l3fp-logic.dtx | 2 +- .../source/latex/l3kernel/l3fp-parse.dtx | 2 +- .../source/latex/l3kernel/l3fp-random.dtx | 2 +- .../source/latex/l3kernel/l3fp-round.dtx | 2 +- .../source/latex/l3kernel/l3fp-traps.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3fp-trig.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3fp.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3fparray.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3int.dtx | 2 +- .../source/latex/l3kernel/l3intarray.dtx | 2 +- .../source/latex/l3kernel/l3kernel-functions.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3keys.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3luatex.dtx | 13 +- Master/texmf-dist/source/latex/l3kernel/l3msg.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3names.dtx | 2 +- .../source/latex/l3kernel/l3oldmodules.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3prg.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3prop.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3quark.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3regex.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3seq.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3skip.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3sort.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3str.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3sys.dtx | 2 +- .../source/latex/l3kernel/l3tl-analysis.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3tl.dtx | 214 ++++++++++++++++++++- .../texmf-dist/source/latex/l3kernel/l3token.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3unicode.dtx | 2 +- .../texmf-dist/tex/latex/l3kernel/expl3-code.tex | 208 ++++++++++---------- .../tex/latex/l3kernel/expl3-generic.tex | 2 +- Master/texmf-dist/tex/latex/l3kernel/expl3.lua | 7 +- Master/texmf-dist/tex/latex/l3kernel/expl3.sty | 2 +- .../texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def | 2 +- Master/texmf-dist/tex/latex/l3kernel/l3dvips.def | 2 +- Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def | 2 +- Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def | 2 +- .../texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def | 2 +- 75 files changed, 434 insertions(+), 383 deletions(-) (limited to 'Master') diff --git a/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md index c52aba1fbfb..c3016a82ef5 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md +++ b/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md @@ -7,6 +7,16 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2018-12-12] + +## Changed + +- Move `\tl_range:nnn` to stable + +## Fixed + +- Loading in ConTeXt MkIV + ## [2018-12-11] - Enable `\char_generate:nn` to create active tokens with XeTeX @@ -180,7 +190,8 @@ this project uses date-based 'snapshot' version identifiers. - Step func­tions have been added for dim vari­ables, e.g. `\dim_step_in­line:nnnn` -[Unreleased]: https://github.com/latex3/latex3/compare/2018-12-11...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2018-12-12...HEAD +[2018-12-12]: https://github.com/latex3/latex3/compare/2018-12-11...2018-12-12 [2018-12-11]: https://github.com/latex3/latex3/compare/2018-12-06...2018-12-11 [2018-12-06]: https://github.com/latex3/latex3/compare/2018-11-19...2018-12-06 [2018-11-19]: https://github.com/latex3/latex3/compare/2018-10-31...2018-11-19 diff --git a/Master/texmf-dist/doc/latex/l3kernel/README.md b/Master/texmf-dist/doc/latex/l3kernel/README.md index 8e3deacea0c..bfae1dc267e 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/README.md +++ b/Master/texmf-dist/doc/latex/l3kernel/README.md @@ -1,7 +1,7 @@ LaTeX3 Programming Conventions ============================== -Release 2018-12-11 +Release 2018-12-12 Overview -------- diff --git a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf index 244f4373864..eec1dc2e101 100644 Binary files a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf and b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf index 1a17efb0812..2fce2cd3174 100644 Binary files a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf and b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.tex b/Master/texmf-dist/doc/latex/l3kernel/interface3.tex index 4310b8e18e7..b767bbb5dd0 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/interface3.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.tex @@ -52,7 +52,7 @@ {latex-team@latex-project.org}% }% } -\date{Released 2018-12-11} +\date{Released 2018-12-12} \pagenumbering{roman} \maketitle diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf index ab8059dc087..e62a3929335 100644 Binary files a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf and b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf index 5e2bc5913c3..afe4bd58ad9 100644 Binary files a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf and b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex index 587d39808da..a3b9d62473c 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex @@ -30,7 +30,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2018-12-11} +\date{Released 2018-12-12} \begin{document} diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf index 9829e00f1cc..fbdb1574c6d 100644 Binary files a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf and b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex index eb7db9ab209..289b4c354ac 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex @@ -30,7 +30,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2018-12-11} +\date{Released 2018-12-12} \newcommand{\TF}{\textit{(TF)}} diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf index 6ff76f52559..427ad5a6c34 100644 Binary files a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf and b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex index af25048bd2a..83259b5bb11 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex @@ -30,7 +30,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2018-12-11} +\date{Released 2018-12-12} \newcommand{\TF}{\textit{(TF)}} diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf index 204c09e3229..519cbe7f252 100644 Binary files a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf and b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.tex b/Master/texmf-dist/doc/latex/l3kernel/source3.tex index ccdcd7400d1..ff0d97bf121 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/source3.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/source3.tex @@ -51,7 +51,7 @@ {latex-team@latex-project.org}% }% } -\date{Released 2018-12-11} +\date{Released 2018-12-12} \pagenumbering{roman} \maketitle diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx index cdbd6f91563..7500ea3a794 100644 --- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx @@ -21,7 +21,7 @@ % for those people who are interested. % %<*driver|generic|package> -\def\ExplFileDate{2018-12-11}% +\def\ExplFileDate{2018-12-12}% % %<*driver> \documentclass[full]{l3doc} @@ -49,7 +49,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx index fb1a9a0ace3..72adae80423 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx index 6b7748a87f1..92ef56b2497 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx index 90590af4838..2959353c2a6 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx @@ -138,7 +138,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx index 07c4cd51336..b0c545ffe8d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx index 823af73f16b..0fdfe1ea798 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % @@ -1236,79 +1236,6 @@ % \meta{shell command}. % \end{function} % -% \begin{function}[EXP, added = 2017-02-17, updated = 2017-07-15] -% {\tl_range:Nnn, \tl_range:nnn} -% \begin{syntax} -% \cs{tl_range:Nnn} \meta{tl~var} \Arg{start index} \Arg{end index} -% \cs{tl_range:nnn} \Arg{token list} \Arg{start index} \Arg{end index} -% \end{syntax} -% Leaves in the input stream the items from the \meta{start index} to the -% \meta{end index} inclusive. Spaces and braces are preserved between -% the items returned (but never at either end of the list). -% -% Here \meta{start index} and \meta{end index} should be integer denotations. -% For describing in detail the functions' behavior, let $m$ and $n$ be the start -% and end index respectively. If either is $0$, the result is empty. A positive -% index means `start counting from the left end', a negative index means -% `start counting from the right end'. Let $l$ be the count of the token list. -% -% The \emph{actual start point} is determined as $M=m$ if~$m>0$ and as $M=l+m+1$ -% if~$m<0$. Similarly the \emph{actual end point} is $N=n$ if~$n>0$ and $N=l+n+1$ -% if~$n<0$. If $M>N$, the result is empty. Otherwise it consists of all items from -% position $M$ to position $N$ inclusive; for the purpose of this rule, we can -% imagine that the token list extends at infinity on either side, with void items -% at positions $s$ for $s\le0$ or $s>l$. - -% Spaces in between items in the actual range are preserved. Spaces at either end -% of the token list will be removed anyway (think to the token list being passed to -% |\tl_trim_spaces:n| to begin with. -% -% Thus, with $l=7$ as in the examples below, all of the following are equivalent -% and result in the whole token list -% \begin{verbatim} -% \tl_range:nnn { abcd~{e{}}fg } { 1 } { 7 } -% \tl_range:nnn { abcd~{e{}}fg } { 1 } { 12 } -% \tl_range:nnn { abcd~{e{}}fg } { -7 } { 7 } -% \tl_range:nnn { abcd~{e{}}fg } { -12 } { 7 } -% \end{verbatim} -% Here are some more interesting examples. The calls -% \begin{verbatim} -% \iow_term:x { \tl_range:nnn { abcd{e{}}fg } { 2 } { 5 } } -% \iow_term:x { \tl_range:nnn { abcd{e{}}fg } { 2 } { -3 } } -% \iow_term:x { \tl_range:nnn { abcd{e{}}fg } { -6 } { 5 } } -% \iow_term:x { \tl_range:nnn { abcd{e{}}fg } { -6 } { -3 } } -% \end{verbatim} -% are all equivalent and will print |bcd{e{}}| on the terminal; similarly -% \begin{verbatim} -% \iow_term:x { \tl_range:nnn { abcd~{e{}}fg } { 2 } { 5 } } -% \iow_term:x { \tl_range:nnn { abcd~{e{}}fg } { 2 } { -3 } } -% \iow_term:x { \tl_range:nnn { abcd~{e{}}fg } { -6 } { 5 } } -% \iow_term:x { \tl_range:nnn { abcd~{e{}}fg } { -6 } { -3 } } -% \end{verbatim} -% are all equivalent and will print |bcd {e{}}| on the -% terminal (note the space in the middle). To the contrary, -% \begin{verbatim} -% \tl_range:nnn { abcd~{e{}}f } { 2 } { 4 } -% \end{verbatim} -% will discard the space after `d`. -% -% If we want to get the items from the third to the last, the call -% is |\tl_range:nnn { } { 3 } { -1 }|. Similarly, for discarding -% the last item, we can do |\tl_range:nnn { } { 1 } { -2 }|. -% -% The behavior of \cs{tl_range:Nnn} is exactly the same, acting on the -% contents of the tl variable. -% -% For improved performance, see \cs{tl_range_braced:nnn} and -% \cs{tl_range_unbraced:nnn}. -% \begin{texnote} -% The result is returned within the \tn{unexpanded} -% primitive (\cs{exp_not:n}), which means that the \meta{item} -% does not expand further when appearing in an \texttt{x}-type -% argument expansion. -% \end{texnote} -% \end{function} -% % \begin{function}[EXP, added = 2017-07-15] % { % \tl_range_braced:Nnn, \tl_range_braced:cnn, \tl_range_braced:nnn, @@ -5020,34 +4947,15 @@ % % \subsubsection{Other additions to \pkg{l3tl}} % -% Some preliminary code is needed for the \cs{tl_range:nnn} family of functions. -% -% \begin{macro}{\tl_range:Nnn, \tl_range:cnn, \tl_range:nnn} % \begin{macro}{\tl_range_braced:Nnn, \tl_range_braced:cnn, \tl_range_braced:nnn} % \begin{macro} % {\tl_range_unbraced:Nnn, \tl_range_unbraced:cnn, \tl_range_unbraced:nnn} % \begin{macro} % { -% \@@_range:Nnnn, \@@_range:nnnNn, \@@_range:nnNn, \@@_range_skip:w, % \@@_range_braced:w, \@@_range_collect_braced:w, % \@@_range_unbraced:w, \@@_range_collect_unbraced:w, -% \@@_range:w, \@@_range_skip_spaces:n, \@@_range_collect:nn, -% \@@_range_collect:ff, \@@_range_collect_space:nw, -% \@@_range_collect_N:nN, \@@_range_collect_group:nN, % } -% To avoid checking for the end of the token list at every step, start -% by counting the number $l$ of items and \enquote{normalizing} the -% bounds, namely clamping them to the interval $[0,l]$ and dealing -% with negative indices. More precisely, \cs{@@_range_items:nnNn} -% receives the number of items to skip at the beginning of the token -% list, the index of the last item to keep, a function among -% \cs{@@_range:w}, \cs{@@_range_braced:w}, \cs{@@_range_unbraced:w}, -% and the token list itself. If nothing should be kept, leave |{}|: -% this stops the \texttt{f}-expansion of \cs{tl_head:f} and that -% function produces an empty result. Otherwise, repeatedly call -% \cs{@@_range_skip:w} to delete |#1| items from the input stream (the -% extra brace group avoids an off-by-one shift). For the braced -% version \cs{@@_range_braced:w} sets up +% For the braced version \cs{@@_range_braced:w} sets up % \cs{@@_range_collect_braced:w} which stores items one by one in an % argument after the semicolon. The unbraced version is almost % identical. The version preserving braces and spaces starts by @@ -5056,15 +4964,8 @@ % |{| \Arg{collected} \meta{tokens} |}|, whose head is the collected % tokens and whose tail is what remains of the original token list. % This form makes it easier to move tokens to the \meta{collected} -% tokens. Depending on the first token of the tail, either just move -% it (if it is a space) or also decrement the number of items left to -% find. Eventually, the result is a brace group followed by the rest -% of the token list, and \cs{tl_head:f} cleans up and gives the result -% in \cs{exp_not:n}. -% \begin{macrocode} -\cs_new:Npn \tl_range:Nnn { \exp_args:No \tl_range:nnn } -\cs_generate_variant:Nn \tl_range:Nnn { c } -\cs_new:Npn \tl_range:nnn { \@@_range:Nnnn \@@_range:w } +% tokens. +% \begin{macrocode} \cs_new:Npn \tl_range_braced:Nnn { \exp_args:No \tl_range_braced:nnn } \cs_generate_variant:Nn \tl_range_braced:Nnn { c } \cs_new:Npn \tl_range_braced:nnn { \@@_range:Nnnn \@@_range_braced:w } @@ -5073,44 +4974,6 @@ \cs_generate_variant:Nn \tl_range_unbraced:Nnn { c } \cs_new:Npn \tl_range_unbraced:nnn { \@@_range:Nnnn \@@_range_unbraced:w } -\cs_new:Npn \@@_range:Nnnn #1#2#3#4 - { - \tl_head:f - { - \exp_args:Nf \@@_range:nnnNn - { \tl_count:n {#2} } {#3} {#4} #1 {#2} - } - } -\cs_new:Npn \@@_range:nnnNn #1#2#3 - { - \exp_args:Nff \@@_range:nnNn - { - \exp_args:Nf \@@_range_normalize:nn - { \int_eval:n { #2 - 1 } } {#1} - } - { - \exp_args:Nf \@@_range_normalize:nn - { \int_eval:n {#3} } {#1} - } - } -\cs_new:Npn \@@_range:nnNn #1#2#3#4 - { - \if_int_compare:w #2 > #1 \exp_stop_f: \else: - \exp_after:wN { \exp_after:wN } - \fi: - \exp_after:wN #3 - \int_value:w \int_eval:n { #2 - #1 } \exp_after:wN ; - \exp_after:wN { \exp:w \@@_range_skip:w #1 ; { } #4 } - } -\cs_new:Npn \@@_range_skip:w #1 ; #2 - { - \if_int_compare:w #1 > 0 \exp_stop_f: - \exp_after:wN \@@_range_skip:w - \int_value:w \int_eval:n { #1 - 1 } \exp_after:wN ; - \else: - \exp_after:wN \exp_end: - \fi: - } \cs_new:Npn \@@_range_braced:w #1 ; #2 { \@@_range_collect_braced:w #1 ; { } #2 } \cs_new:Npn \@@_range_unbraced:w #1 ; #2 @@ -5131,78 +4994,10 @@ \fi: { #2 #3 } } -\cs_new:Npn \@@_range:w #1 ; #2 - { - \exp_args:Nf \@@_range_collect:nn - { \@@_range_skip_spaces:n {#2} } {#1} - } -\cs_new:Npn \@@_range_skip_spaces:n #1 - { - \tl_if_head_is_space:nTF {#1} - { \exp_args:Nf \@@_range_skip_spaces:n {#1} } - { { } #1 } - } -\cs_new:Npn \@@_range_collect:nn #1#2 - { - \int_compare:nNnTF {#2} = 0 - {#1} - { - \exp_args:No \tl_if_head_is_space:nTF { \use_none:n #1 } - { - \exp_args:Nf \@@_range_collect:nn - { \@@_range_collect_space:nw #1 } - {#2} - } - { - \@@_range_collect:ff - { - \exp_args:No \tl_if_head_is_N_type:nTF { \use_none:n #1 } - { \@@_range_collect_N:nN } - { \@@_range_collect_group:nn } - #1 - } - { \int_eval:n { #2 - 1 } } - } - } - } -\cs_new:Npn \@@_range_collect_space:nw #1 ~ { { #1 ~ } } -\cs_new:Npn \@@_range_collect_N:nN #1#2 { { #1 #2 } } -\cs_new:Npn \@@_range_collect_group:nn #1#2 { { #1 {#2} } } -\cs_generate_variant:Nn \@@_range_collect:nn { ff } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} -% \end{macro} -% -% \begin{macro}[EXP]{\@@_range_normalize:nn} -% This function converts an \meta{index} argument into an explicit -% position in the token list (a result of $0$ denoting \enquote{out of -% bounds}). Expects two explicit integer arguments: the \meta{index} -% |#1| and the string count~|#2|. If |#1| is negative, replace it by -% $|#1| + |#2| + 1$, then limit to the range $[0, |#2|]$. -% \begin{macrocode} -\cs_new:Npn \@@_range_normalize:nn #1#2 - { - \int_eval:n - { - \if_int_compare:w #1 < 0 \exp_stop_f: - \if_int_compare:w #1 < -#2 \exp_stop_f: - 0 - \else: - #1 + #2 + 1 - \fi: - \else: - \if_int_compare:w #1 < #2 \exp_stop_f: - #1 - \else: - #2 - \fi: - \fi: - } - } -% \end{macrocode} -% \end{macro} % % \subsection{Additions to \pkg{l3token}} % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx index fe042967193..eee5474874b 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx index 1895f573ba4..b3f37081ae8 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx index 140fb2c6c87..4cda24b3d25 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx index 05f4b3c9815..55a03cc9a40 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx index 868d8ad8818..2be7fcfed3a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx @@ -77,7 +77,7 @@ and all files in that bundle must be distributed together. % % \title{The \cls{l3doc} class} % \author{\Team} -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % \maketitle % \tableofcontents % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx index 395a6697ff2..8c87b691642 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx @@ -61,7 +61,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx index e0ede7b82a9..535714e56a8 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % @@ -554,23 +554,23 @@ %<*package> \ProvidesExplFile %<*dvipdfmx> - {l3dvidpfmx.def}{2018-12-11}{} + {l3dvidpfmx.def}{2018-12-12}{} {L3 Experimental driver: dvipdfmx} % %<*dvips> - {l3dvips.def}{2018-12-11}{} + {l3dvips.def}{2018-12-12}{} {L3 Experimental driver: dvips} % %<*dvisvgm> - {l3dvisvgm.def}{2018-12-11}{} + {l3dvisvgm.def}{2018-12-12}{} {L3 Experimental driver: dvisvgm} % %<*pdfmode> - {l3pdfmode.def}{2018-12-11}{} + {l3pdfmode.def}{2018-12-12}{} {L3 Experimental driver: PDF mode} % %<*xdvipdfmx> - {l3xdvidpfmx.def}{2018-12-11}{} + {l3xdvidpfmx.def}{2018-12-12}{} {L3 Experimental driver: xdvipdfmx} % % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx index 5e2d3991c5f..d4c07c4b0a3 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx index 09ef15f0bb2..23f34a1e95f 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % @@ -797,11 +797,22 @@ % third-party package \pkg{morewrites}), this macro is saved here % under a private name. The complicated code ensures that % \cs{@@_new:N} is not \tn{outer} despite plain \TeX{}'s \tn{newread} -% being \tn{outer}. +% being \tn{outer}. For \ConTeXt{}, we have to deal with the fact +% that \tn{newread} works like our own: it actually checks before +% altering definition. % \begin{macrocode} %<*package> \exp_args:NNf \cs_new_protected:Npn \@@_new:N { \exp_args:NNc \exp_after:wN \exp_stop_f: { newread } } +\cs_if_exist:NT \normalend + { + \cs_new_eq:NN \@@_new_aux:N \@@_new:N + \cs_set_protected:Npn \@@_new:N #1 + { + \cs_undefine:N #1 + \@@_new_aux:N #1 + } + } % % \end{macrocode} % \end{macro} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx index cfe54bd8fac..3a404d6d7ba 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx index dfc37c8ed03..1bb1b81f236 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx index ac7b4c93278..43aaaa02329 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % \maketitle % % \begin{documentation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx index e3598793265..224c41de621 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx index fb6d5781e6f..44bb46bca49 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx index 79155d00959..ea329ab40de 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx index 59a4861e7c7..d5a523371e9 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx index 612535e796b..1c70b959b3a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx index 57778d40dde..21365b45ea0 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx index 231513d2bce..3c13e3be6d8 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx index 8c60a0dfe50..038f222028b 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx index fc18f1d74d1..6a3ad894c99 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx index 8f572357cda..287adb037cf 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % \maketitle % % \begin{documentation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx index 16549bce3f2..ede5b7c1caf 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx index 868d539d143..77472f65103 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx @@ -47,7 +47,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx index ff5d46dbab6..2a3daa476a1 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx index 040758ca77f..f9d75e4c7b6 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx index 6063dc88f36..a67f7b74ad2 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx index 2f23ebdc9c6..75d2ac887a8 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx index d259543b635..eef25a90f88 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx index 376a96c4249..e99e293795a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % @@ -333,7 +333,9 @@ local byte = string.byte local floor = math.floor local format = string.format local gsub = string.gsub -local kpse_find = kpse.find_file +if not resolvers then + local kpse_find = kpse.find_file +end local lfs_attr = lfs.attributes local md5_sum = md5.sum local open = io.open @@ -345,6 +347,13 @@ local write = tex.write local utf8_char = unicode.utf8.char % \end{macrocode} % +% Deal with Con\TeX{}t: doesn't use |kpse| library. +% \begin{macrocode} +if resolvers then + kpse_find = resolvers.findfile +end +% \end{macrocode} +% % \begin{macro}[int]{escapehex} % An internal auxiliary to convert a string to the matching hex escape. % This works on a byte basis: extension to handled UTF-8 input is diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx index 19dc4b9b99e..482ddf423c9 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx index a70b741950c..500b4c7ecb7 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx b/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx index 9bdae0370dc..b98ff93d266 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx @@ -42,7 +42,7 @@ % } % % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx index 0fb0fc0c7a0..2f098c37d15 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx index 760ce546c94..c70c0c18966 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx index 241829050fb..3507d524eb8 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx index 5bd28e1cd13..c3812e26443 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx index 210aeb5973d..8e4d7b58b0e 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx index 469558a0065..5e4098eb367 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx index 47e0b866cf8..bb2d6f966e5 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx index 88dabd950b2..0eb50ae3775 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx index aa899b1ea44..3aa20856ee2 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx index 1cc0ecad91a..b81545a05da 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx index fab5c69b28a..b85b98a9222 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % @@ -1026,6 +1026,79 @@ % \end{texnote} % \end{function} % +% \begin{function}[EXP, added = 2017-02-17, updated = 2017-07-15] +% {\tl_range:Nnn, \tl_range:nnn} +% \begin{syntax} +% \cs{tl_range:Nnn} \meta{tl~var} \Arg{start index} \Arg{end index} +% \cs{tl_range:nnn} \Arg{token list} \Arg{start index} \Arg{end index} +% \end{syntax} +% Leaves in the input stream the items from the \meta{start index} to the +% \meta{end index} inclusive. Spaces and braces are preserved between +% the items returned (but never at either end of the list). +% +% Here \meta{start index} and \meta{end index} should be integer denotations. +% For describing in detail the functions' behavior, let $m$ and $n$ be the start +% and end index respectively. If either is $0$, the result is empty. A positive +% index means `start counting from the left end', a negative index means +% `start counting from the right end'. Let $l$ be the count of the token list. +% +% The \emph{actual start point} is determined as $M=m$ if~$m>0$ and as $M=l+m+1$ +% if~$m<0$. Similarly the \emph{actual end point} is $N=n$ if~$n>0$ and $N=l+n+1$ +% if~$n<0$. If $M>N$, the result is empty. Otherwise it consists of all items from +% position $M$ to position $N$ inclusive; for the purpose of this rule, we can +% imagine that the token list extends at infinity on either side, with void items +% at positions $s$ for $s\le0$ or $s>l$. +% +% Spaces in between items in the actual range are preserved. Spaces at either end +% of the token list will be removed anyway (think to the token list being passed to +% |\tl_trim_spaces:n| to begin with. +% +% Thus, with $l=7$ as in the examples below, all of the following are equivalent +% and result in the whole token list +% \begin{verbatim} +% \tl_range:nnn { abcd~{e{}}fg } { 1 } { 7 } +% \tl_range:nnn { abcd~{e{}}fg } { 1 } { 12 } +% \tl_range:nnn { abcd~{e{}}fg } { -7 } { 7 } +% \tl_range:nnn { abcd~{e{}}fg } { -12 } { 7 } +% \end{verbatim} +% Here are some more interesting examples. The calls +% \begin{verbatim} +% \iow_term:x { \tl_range:nnn { abcd{e{}}fg } { 2 } { 5 } } +% \iow_term:x { \tl_range:nnn { abcd{e{}}fg } { 2 } { -3 } } +% \iow_term:x { \tl_range:nnn { abcd{e{}}fg } { -6 } { 5 } } +% \iow_term:x { \tl_range:nnn { abcd{e{}}fg } { -6 } { -3 } } +% \end{verbatim} +% are all equivalent and will print |bcd{e{}}| on the terminal; similarly +% \begin{verbatim} +% \iow_term:x { \tl_range:nnn { abcd~{e{}}fg } { 2 } { 5 } } +% \iow_term:x { \tl_range:nnn { abcd~{e{}}fg } { 2 } { -3 } } +% \iow_term:x { \tl_range:nnn { abcd~{e{}}fg } { -6 } { 5 } } +% \iow_term:x { \tl_range:nnn { abcd~{e{}}fg } { -6 } { -3 } } +% \end{verbatim} +% are all equivalent and will print |bcd {e{}}| on the +% terminal (note the space in the middle). To the contrary, +% \begin{verbatim} +% \tl_range:nnn { abcd~{e{}}f } { 2 } { 4 } +% \end{verbatim} +% will discard the space after `d`. +% +% If we want to get the items from the third to the last, the call +% is |\tl_range:nnn { } { 3 } { -1 }|. Similarly, for discarding +% the last item, we can do |\tl_range:nnn { } { 1 } { -2 }|. +% +% The behavior of \cs{tl_range:Nnn} is exactly the same, acting on the +% contents of the tl variable. +% +% For improved performance, see \cs{tl_range_braced:nnn} and +% \cs{tl_range_unbraced:nnn}. +% \begin{texnote} +% The result is returned within the \tn{unexpanded} +% primitive (\cs{exp_not:n}), which means that the \meta{item} +% does not expand further when appearing in an \texttt{x}-type +% argument expansion. +% \end{texnote} +% \end{function} +% % \section{Viewing token lists} % % \begin{function}[updated = 2015-08-01]{\tl_show:N, \tl_show:c} @@ -2994,6 +3067,145 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\tl_range:Nnn, \tl_range:cnn, \tl_range:nnn} +% \begin{macro} +% { +% \@@_range:Nnnn, \@@_range:nnnNn, \@@_range:nnNn, \@@_range_skip:w, +% \@@_range:w, \@@_range_skip_spaces:n, \@@_range_collect:nn, +% \@@_range_collect:ff, \@@_range_collect_space:nw, +% \@@_range_collect_N:nN, \@@_range_collect_group:nN, +% } +% To avoid checking for the end of the token list at every step, start +% by counting the number $l$ of items and \enquote{normalizing} the +% bounds, namely clamping them to the interval $[0,l]$ and dealing +% with negative indices. More precisely, \cs{@@_range_items:nnNn} +% receives the number of items to skip at the beginning of the token +% list, the index of the last item to keep, a function which is either +% \cs{@@_range:w} or the token list itself. If nothing should be kept, +% leave |{}|: this stops the \texttt{f}-expansion of \cs{tl_head:f} and that +% function produces an empty result. Otherwise, repeatedly call +% \cs{@@_range_skip:w} to delete |#1| items from the input stream (the +% extra brace group avoids an off-by-one shift). For the braced +% version \cs{@@_range_braced:w} sets up +% \cs{@@_range_collect_braced:w} which stores items one by one in an +% argument after the semicolon. Depending on the first token of the tail, +% either just move it (if it is a space) or also decrement the number of +% items left to find. Eventually, the result is a brace group followed by +% the rest of the token list, and \cs{tl_head:f} cleans up and gives the +% result in \cs{exp_not:n}. +% \begin{macrocode} +\cs_new:Npn \tl_range:Nnn { \exp_args:No \tl_range:nnn } +\cs_generate_variant:Nn \tl_range:Nnn { c } +\cs_new:Npn \tl_range:nnn { \@@_range:Nnnn \@@_range:w } +\cs_new:Npn \@@_range:Nnnn #1#2#3#4 + { + \tl_head:f + { + \exp_args:Nf \@@_range:nnnNn + { \tl_count:n {#2} } {#3} {#4} #1 {#2} + } + } +\cs_new:Npn \@@_range:nnnNn #1#2#3 + { + \exp_args:Nff \@@_range:nnNn + { + \exp_args:Nf \@@_range_normalize:nn + { \int_eval:n { #2 - 1 } } {#1} + } + { + \exp_args:Nf \@@_range_normalize:nn + { \int_eval:n {#3} } {#1} + } + } +\cs_new:Npn \@@_range:nnNn #1#2#3#4 + { + \if_int_compare:w #2 > #1 \exp_stop_f: \else: + \exp_after:wN { \exp_after:wN } + \fi: + \exp_after:wN #3 + \int_value:w \int_eval:n { #2 - #1 } \exp_after:wN ; + \exp_after:wN { \exp:w \@@_range_skip:w #1 ; { } #4 } + } +\cs_new:Npn \@@_range_skip:w #1 ; #2 + { + \if_int_compare:w #1 > 0 \exp_stop_f: + \exp_after:wN \@@_range_skip:w + \int_value:w \int_eval:n { #1 - 1 } \exp_after:wN ; + \else: + \exp_after:wN \exp_end: + \fi: + } +\cs_new:Npn \@@_range:w #1 ; #2 + { + \exp_args:Nf \@@_range_collect:nn + { \@@_range_skip_spaces:n {#2} } {#1} + } +\cs_new:Npn \@@_range_skip_spaces:n #1 + { + \tl_if_head_is_space:nTF {#1} + { \exp_args:Nf \@@_range_skip_spaces:n {#1} } + { { } #1 } + } +\cs_new:Npn \@@_range_collect:nn #1#2 + { + \int_compare:nNnTF {#2} = 0 + {#1} + { + \exp_args:No \tl_if_head_is_space:nTF { \use_none:n #1 } + { + \exp_args:Nf \@@_range_collect:nn + { \@@_range_collect_space:nw #1 } + {#2} + } + { + \@@_range_collect:ff + { + \exp_args:No \tl_if_head_is_N_type:nTF { \use_none:n #1 } + { \@@_range_collect_N:nN } + { \@@_range_collect_group:nn } + #1 + } + { \int_eval:n { #2 - 1 } } + } + } + } +\cs_new:Npn \@@_range_collect_space:nw #1 ~ { { #1 ~ } } +\cs_new:Npn \@@_range_collect_N:nN #1#2 { { #1 #2 } } +\cs_new:Npn \@@_range_collect_group:nn #1#2 { { #1 {#2} } } +\cs_generate_variant:Nn \@@_range_collect:nn { ff } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}[EXP]{\@@_range_normalize:nn} +% This function converts an \meta{index} argument into an explicit +% position in the token list (a result of $0$ denoting \enquote{out of +% bounds}). Expects two explicit integer arguments: the \meta{index} +% |#1| and the string count~|#2|. If |#1| is negative, replace it by +% $|#1| + |#2| + 1$, then limit to the range $[0, |#2|]$. +% \begin{macrocode} +\cs_new:Npn \@@_range_normalize:nn #1#2 + { + \int_eval:n + { + \if_int_compare:w #1 < 0 \exp_stop_f: + \if_int_compare:w #1 < -#2 \exp_stop_f: + 0 + \else: + #1 + #2 + 1 + \fi: + \else: + \if_int_compare:w #1 < #2 \exp_stop_f: + #1 + \else: + #2 + \fi: + \fi: + } + } +% \end{macrocode} +% \end{macro} +% % \subsection{Viewing token lists} % % \begin{macro}{\tl_show:N, \tl_show:c, \tl_log:N, \tl_log:c, \@@_show:NN} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx index c9ffbf3bb03..312d4546dac 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx index d9dcd72c228..9506e49fbd0 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-12-11} +% \date{Released 2018-12-12} % % \maketitle % diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex index ba488f19c58..dddac0128ed 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex @@ -63,7 +63,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx Copyright (C) 1990-2018 The LaTeX3 Project -\def\ExplFileDate{2018-12-11}% +\def\ExplFileDate{2018-12-12}% \begingroup \def\next{\endgroup}% \expandafter\ifx\csname PackageError\endcsname\relax @@ -4988,6 +4988,104 @@ } \cs_new:Npn \tl_rand_item:N { \exp_args:No \tl_rand_item:n } \cs_generate_variant:Nn \tl_rand_item:N { c } +\cs_new:Npn \tl_range:Nnn { \exp_args:No \tl_range:nnn } +\cs_generate_variant:Nn \tl_range:Nnn { c } +\cs_new:Npn \tl_range:nnn { \__tl_range:Nnnn \__tl_range:w } +\cs_new:Npn \__tl_range:Nnnn #1#2#3#4 + { + \tl_head:f + { + \exp_args:Nf \__tl_range:nnnNn + { \tl_count:n {#2} } {#3} {#4} #1 {#2} + } + } +\cs_new:Npn \__tl_range:nnnNn #1#2#3 + { + \exp_args:Nff \__tl_range:nnNn + { + \exp_args:Nf \__tl_range_normalize:nn + { \int_eval:n { #2 - 1 } } {#1} + } + { + \exp_args:Nf \__tl_range_normalize:nn + { \int_eval:n {#3} } {#1} + } + } +\cs_new:Npn \__tl_range:nnNn #1#2#3#4 + { + \if_int_compare:w #2 > #1 \exp_stop_f: \else: + \exp_after:wN { \exp_after:wN } + \fi: + \exp_after:wN #3 + \int_value:w \int_eval:n { #2 - #1 } \exp_after:wN ; + \exp_after:wN { \exp:w \__tl_range_skip:w #1 ; { } #4 } + } +\cs_new:Npn \__tl_range_skip:w #1 ; #2 + { + \if_int_compare:w #1 > 0 \exp_stop_f: + \exp_after:wN \__tl_range_skip:w + \int_value:w \int_eval:n { #1 - 1 } \exp_after:wN ; + \else: + \exp_after:wN \exp_end: + \fi: + } +\cs_new:Npn \__tl_range:w #1 ; #2 + { + \exp_args:Nf \__tl_range_collect:nn + { \__tl_range_skip_spaces:n {#2} } {#1} + } +\cs_new:Npn \__tl_range_skip_spaces:n #1 + { + \tl_if_head_is_space:nTF {#1} + { \exp_args:Nf \__tl_range_skip_spaces:n {#1} } + { { } #1 } + } +\cs_new:Npn \__tl_range_collect:nn #1#2 + { + \int_compare:nNnTF {#2} = 0 + {#1} + { + \exp_args:No \tl_if_head_is_space:nTF { \use_none:n #1 } + { + \exp_args:Nf \__tl_range_collect:nn + { \__tl_range_collect_space:nw #1 } + {#2} + } + { + \__tl_range_collect:ff + { + \exp_args:No \tl_if_head_is_N_type:nTF { \use_none:n #1 } + { \__tl_range_collect_N:nN } + { \__tl_range_collect_group:nn } + #1 + } + { \int_eval:n { #2 - 1 } } + } + } + } +\cs_new:Npn \__tl_range_collect_space:nw #1 ~ { { #1 ~ } } +\cs_new:Npn \__tl_range_collect_N:nN #1#2 { { #1 #2 } } +\cs_new:Npn \__tl_range_collect_group:nn #1#2 { { #1 {#2} } } +\cs_generate_variant:Nn \__tl_range_collect:nn { ff } +\cs_new:Npn \__tl_range_normalize:nn #1#2 + { + \int_eval:n + { + \if_int_compare:w #1 < 0 \exp_stop_f: + \if_int_compare:w #1 < -#2 \exp_stop_f: + 0 + \else: + #1 + #2 + 1 + \fi: + \else: + \if_int_compare:w #1 < #2 \exp_stop_f: + #1 + \else: + #2 + \fi: + \fi: + } + } \cs_new_protected:Npn \tl_show:N { \__tl_show:NN \tl_show:n } \cs_generate_variant:Nn \tl_show:N { c } \cs_new_protected:Npn \tl_log:N { \__tl_show:NN \tl_log:n } @@ -10322,6 +10420,15 @@ \prg_generate_conditional_variant:Nnn \ior_open:Nn { c } { T , F , TF } \exp_args:NNf \cs_new_protected:Npn \__ior_new:N { \exp_args:NNc \exp_after:wN \exp_stop_f: { newread } } +\cs_if_exist:NT \normalend + { + \cs_new_eq:NN \__ior_new_aux:N \__ior_new:N + \cs_set_protected:Npn \__ior_new:N #1 + { + \cs_undefine:N #1 + \__ior_new_aux:N #1 + } + } \cs_new_protected:Npn \__kernel_ior_open:Nn #1#2 { \ior_close:N #1 @@ -24958,7 +25065,6 @@ \group_end: } %% File: l3candidates.dtx Copyright (C) 2012-2018 The LaTeX3 Project - \cs_new_protected:Npn \mode_leave_vertical: { \if_mode_vertical: @@ -27069,9 +27175,6 @@ #2 #1 \exp_args:Nc \__tl_build_end_loop:NN { \cs_to_str:N #1 ' } #2 } -\cs_new:Npn \tl_range:Nnn { \exp_args:No \tl_range:nnn } -\cs_generate_variant:Nn \tl_range:Nnn { c } -\cs_new:Npn \tl_range:nnn { \__tl_range:Nnnn \__tl_range:w } \cs_new:Npn \tl_range_braced:Nnn { \exp_args:No \tl_range_braced:nnn } \cs_generate_variant:Nn \tl_range_braced:Nnn { c } \cs_new:Npn \tl_range_braced:nnn { \__tl_range:Nnnn \__tl_range_braced:w } @@ -27080,44 +27183,6 @@ \cs_generate_variant:Nn \tl_range_unbraced:Nnn { c } \cs_new:Npn \tl_range_unbraced:nnn { \__tl_range:Nnnn \__tl_range_unbraced:w } -\cs_new:Npn \__tl_range:Nnnn #1#2#3#4 - { - \tl_head:f - { - \exp_args:Nf \__tl_range:nnnNn - { \tl_count:n {#2} } {#3} {#4} #1 {#2} - } - } -\cs_new:Npn \__tl_range:nnnNn #1#2#3 - { - \exp_args:Nff \__tl_range:nnNn - { - \exp_args:Nf \__tl_range_normalize:nn - { \int_eval:n { #2 - 1 } } {#1} - } - { - \exp_args:Nf \__tl_range_normalize:nn - { \int_eval:n {#3} } {#1} - } - } -\cs_new:Npn \__tl_range:nnNn #1#2#3#4 - { - \if_int_compare:w #2 > #1 \exp_stop_f: \else: - \exp_after:wN { \exp_after:wN } - \fi: - \exp_after:wN #3 - \int_value:w \int_eval:n { #2 - #1 } \exp_after:wN ; - \exp_after:wN { \exp:w \__tl_range_skip:w #1 ; { } #4 } - } -\cs_new:Npn \__tl_range_skip:w #1 ; #2 - { - \if_int_compare:w #1 > 0 \exp_stop_f: - \exp_after:wN \__tl_range_skip:w - \int_value:w \int_eval:n { #1 - 1 } \exp_after:wN ; - \else: - \exp_after:wN \exp_end: - \fi: - } \cs_new:Npn \__tl_range_braced:w #1 ; #2 { \__tl_range_collect_braced:w #1 ; { } #2 } \cs_new:Npn \__tl_range_unbraced:w #1 ; #2 @@ -27138,63 +27203,6 @@ \fi: { #2 #3 } } -\cs_new:Npn \__tl_range:w #1 ; #2 - { - \exp_args:Nf \__tl_range_collect:nn - { \__tl_range_skip_spaces:n {#2} } {#1} - } -\cs_new:Npn \__tl_range_skip_spaces:n #1 - { - \tl_if_head_is_space:nTF {#1} - { \exp_args:Nf \__tl_range_skip_spaces:n {#1} } - { { } #1 } - } -\cs_new:Npn \__tl_range_collect:nn #1#2 - { - \int_compare:nNnTF {#2} = 0 - {#1} - { - \exp_args:No \tl_if_head_is_space:nTF { \use_none:n #1 } - { - \exp_args:Nf \__tl_range_collect:nn - { \__tl_range_collect_space:nw #1 } - {#2} - } - { - \__tl_range_collect:ff - { - \exp_args:No \tl_if_head_is_N_type:nTF { \use_none:n #1 } - { \__tl_range_collect_N:nN } - { \__tl_range_collect_group:nn } - #1 - } - { \int_eval:n { #2 - 1 } } - } - } - } -\cs_new:Npn \__tl_range_collect_space:nw #1 ~ { { #1 ~ } } -\cs_new:Npn \__tl_range_collect_N:nN #1#2 { { #1 #2 } } -\cs_new:Npn \__tl_range_collect_group:nn #1#2 { { #1 {#2} } } -\cs_generate_variant:Nn \__tl_range_collect:nn { ff } -\cs_new:Npn \__tl_range_normalize:nn #1#2 - { - \int_eval:n - { - \if_int_compare:w #1 < 0 \exp_stop_f: - \if_int_compare:w #1 < -#2 \exp_stop_f: - 0 - \else: - #1 + #2 + 1 - \fi: - \else: - \if_int_compare:w #1 < #2 \exp_stop_f: - #1 - \else: - #2 - \fi: - \fi: - } - } \group_begin: \char_set_catcode_active:N * \char_set_lccode:nn { `* } { `\ } diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex index c4ea2bf7ceb..72b02297075 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx Copyright (C) 1990-2018 The LaTeX3 Project -\def\ExplFileDate{2018-12-11}% +\def\ExplFileDate{2018-12-12}% \let\ExplLoaderFileDate\ExplFileDate \begingroup \def\tempa{LaTeX2e}% diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.lua b/Master/texmf-dist/tex/latex/l3kernel/expl3.lua index 36b5f631f31..be9b741ca6c 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3.lua +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.lua @@ -34,7 +34,9 @@ local byte = string.byte local floor = math.floor local format = string.format local gsub = string.gsub -local kpse_find = kpse.find_file +if not resolvers then + local kpse_find = kpse.find_file +end local lfs_attr = lfs.attributes local md5_sum = md5.sum local open = io.open @@ -44,6 +46,9 @@ local setcatcode = tex.setcatcode local sprint = tex.sprint local write = tex.write local utf8_char = unicode.utf8.char +if resolvers then + kpse_find = resolvers.findfile +end local function escapehex(str) write((gsub(str, ".", function (ch) return format("%02X", byte(ch)) end))) diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty index f7b148c2e86..0913dd3c2c2 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx Copyright (C) 1990-2018 The LaTeX3 Project -\def\ExplFileDate{2018-12-11}% +\def\ExplFileDate{2018-12-12}% \let\ExplLoaderFileDate\ExplFileDate \ProvidesPackage{expl3} [% diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def index 788d4e7af17..58a71114065 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def @@ -20,7 +20,7 @@ %% %% File: l3drivers.dtx Copyright(C) 2011-2018 The LaTeX3 Project \ProvidesExplFile - {l3dvidpfmx.def}{2018-12-11}{} + {l3dvidpfmx.def}{2018-12-12}{} {L3 Experimental driver: dvipdfmx} \cs_new_eq:NN \__driver_literal:e \tex_special:D \cs_new_protected:Npn \__driver_literal:n #1 diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def index 7eca794eb53..24109c6cbf9 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def @@ -20,7 +20,7 @@ %% %% File: l3drivers.dtx Copyright(C) 2011-2018 The LaTeX3 Project \ProvidesExplFile - {l3dvips.def}{2018-12-11}{} + {l3dvips.def}{2018-12-12}{} {L3 Experimental driver: dvips} \cs_new_eq:NN \__driver_literal:e \tex_special:D \cs_new_protected:Npn \__driver_literal:n #1 diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def index 669fff8398c..24236fac527 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def @@ -20,7 +20,7 @@ %% %% File: l3drivers.dtx Copyright(C) 2011-2018 The LaTeX3 Project \ProvidesExplFile - {l3dvisvgm.def}{2018-12-11}{} + {l3dvisvgm.def}{2018-12-12}{} {L3 Experimental driver: dvisvgm} \cs_new_eq:NN \__driver_literal:e \tex_special:D \cs_new_protected:Npn \__driver_literal:n #1 diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def index aff9a0e06bb..1b3ab9ce6b6 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def @@ -20,7 +20,7 @@ %% %% File: l3drivers.dtx Copyright(C) 2011-2018 The LaTeX3 Project \ProvidesExplFile - {l3pdfmode.def}{2018-12-11}{} + {l3pdfmode.def}{2018-12-12}{} {L3 Experimental driver: PDF mode} \cs_new_eq:NN \__driver_literal:e \tex_special:D \cs_new_protected:Npn \__driver_literal:n #1 diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def index a6920092432..7593a064a27 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def @@ -20,7 +20,7 @@ %% %% File: l3drivers.dtx Copyright(C) 2011-2018 The LaTeX3 Project \ProvidesExplFile - {l3xdvidpfmx.def}{2018-12-11}{} + {l3xdvidpfmx.def}{2018-12-12}{} {L3 Experimental driver: xdvipdfmx} \cs_new_eq:NN \__driver_literal:e \tex_special:D \cs_new_protected:Npn \__driver_literal:n #1 -- cgit v1.2.3