summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2017-06-05 23:17:08 +0000
committerKarl Berry <karl@freefriends.org>2017-06-05 23:17:08 +0000
commit683004f8a1d94fc432fd8104903a431e27bfba93 (patch)
tree2450b41f4c918810556cbaec853ec48ddc2b949a /Master/texmf-dist/source
parentc684ba451bf548bdb24c40ed54caa9f11ac21422 (diff)
latex3 (30may17)
git-svn-id: svn://tug.org/texlive/trunk@44483 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source')
-rw-r--r--Master/texmf-dist/source/latex/l3build/l3build.dtx48
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx5
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3str.ins5
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/expl3.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3.ins21
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3basics.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3box.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx342
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3clist.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3color.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3doc.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx343
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3expan.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3file.dtx181
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3final.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3flag.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3format.ins17
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3int.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx (renamed from Master/texmf-dist/source/latex/l3experimental/l3str/l3intarray.dtx)50
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3keys.dtx78
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3msg.dtx14
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3names.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx18
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prg.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prop.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3quark.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3regex.dtx (renamed from Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx)64
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3seq.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3skip.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3sort.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3str.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3sys.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx (renamed from Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-analysis.dtx)33
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl-build.dtx (renamed from Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-build.dtx)27
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl.dtx9
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3token.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx8
64 files changed, 930 insertions, 469 deletions
diff --git a/Master/texmf-dist/source/latex/l3build/l3build.dtx b/Master/texmf-dist/source/latex/l3build/l3build.dtx
index 6e9d4e3adb4..815d941b00b 100644
--- a/Master/texmf-dist/source/latex/l3build/l3build.dtx
+++ b/Master/texmf-dist/source/latex/l3build/l3build.dtx
@@ -202,7 +202,7 @@
% }^^A
% }
%
-% \date{Released 2017/05/19}
+% \date{Released 2017/05/29}
%
% \maketitle
% \tableofcontents
@@ -286,7 +286,7 @@
% \item check \meta{name(s)}
% \item cmdcheck
% \item clean
-% \item doc
+% \item doc \meta{name(s)}
% \item install
% \item save \meta{name(s)}
% \item setversion
@@ -443,12 +443,15 @@
% If \var{typesetsearch} is \code{true} (default), standard \texttt{texmf} search trees are used in the typesetting compilation. If set to false, \emph{all} necessary files for compilation must be included in the |build/local| sandbox.
% \end{buildcmd}
%
+% \begin{buildcmd}{doc \meta{name(s)}}
+% Typesets only the files with the \meta{name(s)} given, which should be the
+% root name without any extension.
+% \end{buildcmd}
%
% \begin{buildcmd}{install}
% Copies all package files (defined by \var{installfiles}) into the user's home \texttt{texmf} tree in the form of the \TeX\ Directory Structure.
% \end{buildcmd}
%
-%
% \begin{buildcmd}{save \meta{name(s)}}
% This command runs through the same execution as |check| for a specific test(s) \texttt{\meta{name(s)}.lvt}.
% This command saves the output of the test to a |.tlg| file.
@@ -1067,9 +1070,9 @@
% \texttt{tex} can be used, along with custom code, to define a PDF
% typesetting pathway. The functions \texttt{biber} and \texttt{bibtex}
% take a single argument: the name of the file to work with \emph{minus}
-% any extension. The \texttt{tex} takes as an arugment the full name
+% any extension. The \texttt{tex} takes as an argument the full name
% of the file. The most complex function \texttt{makeindex} requires the
-% name, input extension, putput extension, log extension and style name.
+% name, input extension, output extension, log extension and style name.
% For example, Figure~\ref{fig:PDF} shows a simple script which might
% apply to a case where multiple \BibTeX{} runs are needed (perhaps where
% citations can appear within other references).
@@ -1082,17 +1085,17 @@
%
% module = "mymodule"
%
-% function typeset (file)
-% local name = string.match (file, "^(.*)%.") or name
+% function typeset(file)
+% local name = jobname(file)
% local errorlevel = tex (file)
% if errorlevel == 0 then
% -- Return a non-zero errorlevel if anything goes wrong
-% errorlevel = (
-% bibtex (name) +
-% tex (file) +
-% bibtex (name) +
-% tex (file) +
-% tex (file)
+% errorlevel =(
+% bibtex(name) +
+% tex(file) +
+% bibtex(name) +
+% tex(file) +
+% tex(file)
% )
% end
% return errorlevel
@@ -1154,6 +1157,14 @@
% \meta{target} directory.
% \end{function}
%
+% \begin{function}{basename()}
+% \begin{syntax}
+% |basename(|\meta{file}|)|
+% \end{syntax}
+% Returns a string comprising the full name of the file with the
+% path removed (\emph{i.e.}~from the last |/| onward).
+% \end{function}
+%
% \begin{function}{cleandir()}
% \begin{syntax}
% |cleandir(|\meta{dir}|)|
@@ -1192,7 +1203,16 @@
% all files in the \meta{path}.
% \end{function}
%
-% \begin{function}{mkidr()}
+% \begin{function}{jobname()}
+% \begin{syntax}
+% |jobname(|\meta{file}|)|
+% \end{syntax}
+% Returns a string comprising the jobname of the file with the
+% path and extension removed (\emph{i.e.}~from the last |/| up to the
+% last |.|).
+% \end{function}
+%
+% \begin{function}{mkdir()}
% \begin{syntax}
% |mkdir(|\meta{dir}|)|
% \end{syntax}
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx
index 4e4b8c3959b..5d0300e6f4b 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Released 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
@@ -252,9 +252,8 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3str-convert}{2017/05/13}{}
+\ProvidesExplPackage{l3str-convert}{2017/05/29}{}
{L3 Experimental string encoding conversions}
-\RequirePackage{l3tl-analysis,l3tl-build}
% \end{macrocode}
%
% \subsection{Helpers}
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
index c61d2575e90..56111fade54 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Released 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
@@ -163,7 +163,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3str-format}{2017/05/13}{}
+\ProvidesExplPackage{l3str-format}{2017/05/29}{}
{L3 Experimental string formatting}
\RequirePackage{l3str}
%</package>
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str.ins b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str.ins
index be46fd21845..2f2ed04c016 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str.ins
+++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str.ins
@@ -51,13 +51,8 @@ and all files in that bundle must be distributed together.
\keepsilent
-\generate{\file{l3regex.sty} {\from{l3regex.dtx} {package}}}
\generate{\file{l3str-convert.sty} {\from{l3str-convert.dtx} {package}}}
\generate{\file{l3str-format.sty} {\from{l3str-format.dtx} {package}}}
-\generate{\file{l3tl-analysis.sty} {\from{l3tl-analysis.dtx} {package}}}
-\generate{\file{l3tl-build.sty} {\from{l3tl-build.dtx} {package}}}
-\generate{\file{l3regex-trace.sty} {\from{l3regex.dtx} {package,trace}}}
-\generate{\file{l3intarray.sty} {\from{l3intarray.dtx} {package}}}
% Escapings.
\generate{%
diff --git a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
index 59439b2b93f..7f57f213d87 100644
--- a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
@@ -54,7 +54,7 @@
% }^^A
% }
%
-% \date{Released 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
@@ -673,7 +673,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2017/05/13}{}
+\ProvidesExplPackage{xcoffins}{2017/05/29}{}
{L3 Experimental design level coffins}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
index b29e9fa8364..b030677562f 100644
--- a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
@@ -24,8 +24,8 @@
%<*driver|package>
% The version of expl3 required is tested as early as possible, as
% some really old versions do not define \ProvidesExplPackage.
-\RequirePackage{expl3}[2017/05/13]
-%<package>\@ifpackagelater{expl3}{2017/05/13}
+\RequirePackage{expl3}[2017/05/29]
+%<package>\@ifpackagelater{expl3}{2017/05/29}
%<package> {}
%<package> {%
%<package> \PackageError{l3galley}{Support package l3kernel too old}
@@ -59,7 +59,7 @@
% }^^A
% }
%
-% \date{Released 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
@@ -685,7 +685,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3galley}{2017/05/13}{}
+\ProvidesExplPackage{l3galley}{2017/05/29}{}
{L3 Experimental galley code}
%</package>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
index 00b6928e4bc..23a75e2c37d 100644
--- a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
@@ -45,7 +45,7 @@
% }^^A
% }
%
-% \date{Released 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
@@ -732,7 +732,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2017/05/13}{}
+\ProvidesExplPackage{xgalley}{2017/05/29}{}
{L3 Experimental galley}
\RequirePackage{xparse,xtemplate,l3galley}
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
index eaee0f7a59d..cc7493c71e3 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{2017/05/13}%
+\def\ExplFileDate{2017/05/29}%
%</driver|generic|package>
%<*driver>
\documentclass[full]{l3doc}
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3.ins b/Master/texmf-dist/source/latex/l3kernel/l3.ins
index 2c381ced862..94b3fe38571 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3.ins
+++ b/Master/texmf-dist/source/latex/l3kernel/l3.ins
@@ -67,6 +67,7 @@ and all files in that bundle must be distributed together.
\from{l3str.dtx} {package}
\from{l3seq.dtx} {package}
\from{l3int.dtx} {package}
+ \from{l3intarray.dtx} {package}
\from{l3flag.dtx} {package}
\from{l3quark.dtx} {package}
\from{l3prg.dtx} {package}
@@ -91,6 +92,9 @@ and all files in that bundle must be distributed together.
\from{l3fp-random.dtx} {package}
\from{l3fp-assign.dtx} {package}
\from{l3sort.dtx} {package}
+ \from{l3tl-build.dtx} {package}
+ \from{l3tl-analysis.dtx}{package}
+ \from{l3regex.dtx} {package}
\from{l3box.dtx} {package}
\from{l3coffins.dtx} {package}
\from{l3color.dtx} {package}
@@ -138,11 +142,13 @@ and all files in that bundle must be distributed together.
\generate{\file{l3prg.sty} {\from{l3oldmodules.dtx} {l3prg,oldmodules}}}
\generate{\file{l3prop.sty} {\from{l3oldmodules.dtx} {l3prop,oldmodules}}}
\generate{\file{l3quark.sty} {\from{l3oldmodules.dtx} {l3quark,oldmodules}}}
+\generate{\file{l3regex.sty} {\from{l3oldmodules.dtx} {l3regex,oldmodules}}}
\generate{\file{l3seq.sty} {\from{l3oldmodules.dtx} {l3seq,oldmodules}}}
\generate{\file{l3skip.sty} {\from{l3oldmodules.dtx} {l3skip,oldmodules}}}
-\generate{\file{l3sort.sty} {\from{l3oldmodules.dtx} {l3sort,oldmodules}}}
+\generate{\file{l3sort.sty} {\from{l3oldmodules.dtx} {l3sort,oldmodules}}}
\generate{\file{l3str.sty} {\from{l3oldmodules.dtx} {l3str,oldmodules}}}
\generate{\file{l3tl.sty} {\from{l3oldmodules.dtx} {l3tl,oldmodules}}}
+\generate{\file{l3tl-analysis.sty}{\from{l3oldmodules.dtx} {l3tl-analysis,oldmodules}}}
\generate{\file{l3token.sty} {\from{l3oldmodules.dtx} {l3token,oldmodules}}}
% Lua code
@@ -150,12 +156,17 @@ and all files in that bundle must be distributed together.
\def\MetaPrefix{--}
\preamble
-EXPERIMENTAL CODE
+Copyright (C) 1990-2017 The LaTeX3 Project
-Do not distribute this file without also distributing the
-source files specified above.
+It may be distributed and/or modified under the conditions of
+the LaTeX Project Public License (LPPL), either version 1.3c of
+this license or (at your option) any later version. The latest
+version of this license is in the file:
-Do not distribute a modified version of this file.
+ http://www.latex-project.org/lppl.txt
+
+This file is part of the "l3kernel bundle" (The Work in LPPL)
+and all files in that bundle must be distributed together.
\endpreamble
\nopostamble
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
index 1e94b66f730..989cd514177 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
index 7b895ee75d0..f37f4bcc4b4 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
index db8e9826e3b..11032c534dd 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
@@ -139,7 +139,7 @@
% }^^A
% }
%
-% \date{Released 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
index b7ac16ab656..5bc3bd3c2ce 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
index 627f4eba9e0..aeb2ce1469b 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
@@ -201,89 +201,6 @@
% an error if the file is not found, in contrast to \cs{file_input:n}.
% \end{function}
%
-% \begin{function}[added = 2012-02-11]{\ior_map_inline:Nn}
-% \begin{syntax}
-% \cs{ior_map_inline:Nn} \meta{stream} \Arg{inline function}
-% \end{syntax}
-% Applies the \meta{inline function} to \meta{lines} obtained by
-% reading one or more lines (until an equal number of left and right
-% braces are found) from the \meta{stream}. The \meta{inline function}
-% should consist of code which will receive the \meta{line} as |#1|.
-% Note that \TeX{} removes trailing space and tab characters
-% (character codes 32 and 9) from every line upon input. \TeX{} also
-% ignores any trailing new-line marker from the file it reads.
-% \end{function}
-%
-% \begin{function}[added = 2012-02-11]{\ior_str_map_inline:Nn}
-% \begin{syntax}
-% \cs{ior_str_map_inline:Nn} \Arg{stream} \Arg{inline function}
-% \end{syntax}
-% Applies the \meta{inline function} to every \meta{line}
-% in the \meta{stream}. The material is read from the \meta{stream}
-% as a series of tokens with category code $12$ (other), with the
-% exception of space characters which are given category code $10$
-% (space). The \meta{inline function} should consist of code which
-% will receive the \meta{line} as |#1|.
-% Note that \TeX{} removes trailing space and tab characters
-% (character codes 32 and 9) from every line upon input. \TeX{} also
-% ignores any trailing new-line marker from the file it reads.
-% \end{function}
-%
-% \begin{function}[added = 2012-06-29]{\ior_map_break:}
-% \begin{syntax}
-% \cs{ior_map_break:}
-% \end{syntax}
-% Used to terminate a \cs[no-index]{ior_map_\ldots} function before all
-% lines from the \meta{stream} have been processed. This will
-% normally take place within a conditional statement, for example
-% \begin{verbatim}
-% \ior_map_inline:Nn \l_my_ior
-% {
-% \str_if_eq:nnTF { #1 } { bingo }
-% { \ior_map_break: }
-% {
-% % Do something useful
-% }
-% }
-% \end{verbatim}
-% Use outside of a \cs[no-index]{ior_map_\ldots} scenario will lead to low
-% level \TeX{} errors.
-% \begin{texnote}
-% When the mapping is broken, additional tokens may be inserted by the
-% internal macro \cs{__prg_break_point:Nn} before further items are taken
-% from the input stream. This will depend on the design of the mapping
-% function.
-% \end{texnote}
-% \end{function}
-%
-% \begin{function}[added = 2012-06-29]{\ior_map_break:n}
-% \begin{syntax}
-% \cs{ior_map_break:n} \Arg{tokens}
-% \end{syntax}
-% Used to terminate a \cs[no-index]{ior_map_\ldots} function before all
-% lines in the \meta{stream} have been processed, inserting
-% the \meta{tokens} after the mapping has ended. This will
-% normally take place within a conditional statement, for example
-% \begin{verbatim}
-% \ior_map_inline:Nn \l_my_ior
-% {
-% \str_if_eq:nnTF { #1 } { bingo }
-% { \ior_map_break:n { <tokens> } }
-% {
-% % Do something useful
-% }
-% }
-% \end{verbatim}
-% Use outside of a \cs[no-index]{ior_map_\ldots} scenario will lead to low
-% level \TeX{} errors.
-% \begin{texnote}
-% When the mapping is broken, additional tokens may be inserted by the
-% internal macro \cs{__prg_break_point:Nn} before the \meta{tokens} are
-% inserted into the input stream.
-% This will depend on the design of the mapping function.
-% \end{texnote}
-% \end{function}
-%
% \begin{function}[added = 2014-08-22]
% {\ior_log_streams:, \iow_log_streams:}
% \begin{syntax}
@@ -475,7 +392,7 @@
%
% \section{Additions to \pkg{l3sys}}
%
-% \begin{function}[added = 2017-04-12, EXP, pTF]{\sys_if_rand_exist:}
+% \begin{function}[added = 2017-05-27, EXP, pTF]{\sys_if_rand_exist:}
% \begin{syntax}
% \cs{sys_if_rand_exist_p:}
% \cs{sys_if_rand_exist:TF} \Arg{true code} \Arg{false code}
@@ -484,7 +401,7 @@
% this is the case in \pdfTeX{} and \LuaTeX{}.
% \end{function}
%
-% \begin{function}[added = 2017-04-12, EXP]{\sys_rand_seed:}
+% \begin{function}[added = 2017-05-27, EXP]{\sys_rand_seed:}
% \begin{syntax}
% \cs{sys_rand_seed:}
% \end{syntax}
@@ -493,7 +410,7 @@
% expands to $0$.
% \end{function}
%
-% \begin{function}[added = 2017-04-12]{\sys_gset_rand_seed:n}
+% \begin{function}[added = 2017-05-27]{\sys_gset_rand_seed:n}
% \begin{syntax}
% \cs{sys_gset_rand_seed:n} \Arg{intexpr}
% \end{syntax}
@@ -506,6 +423,61 @@
% random number support this produces an error.
% \end{function}
%
+% \begin{variable}[added = 2017-05-27]{\c_sys_shell_escape_int}
+% This variable exposes the internal triple of the shell escape
+% status. The possible values are
+% \begin{description}
+% \item[0] Shell escape is disabled
+% \item[1] Unrestricted shell escape is enabled
+% \item[2] Restricted shell escape is enabled
+% \end{description}
+% \end{variable}
+%
+% \begin{function}[added = 2017-05-27, EXP, pTF]{\sys_if_shell:}
+% \begin{syntax}
+% \cs{sys_if_shell_p:}
+% \cs{sys_if_shell:TF} \Arg{true code} \Arg{false code}
+% \end{syntax}
+% Performs a check for whether shell escape is enabled. This will
+% return true if either of restricted or unrestircted shell escape
+% is enabled.
+% \end{function}
+%
+% \begin{function}[added = 2017-05-27, EXP, pTF]{\sys_if_shell_unrestricted:}
+% \begin{syntax}
+% \cs{sys_if_shell_unrestricted_p:}
+% \cs{sys_if_shell_unrestricted:TF} \Arg{true code} \Arg{false code}
+% \end{syntax}
+% Performs a check for whether \emph{unrestricted} shell escape is
+% enabled.
+% \end{function}
+%
+% \begin{function}[added = 2017-05-27, EXP, pTF]{\sys_if_shell_restricted:}
+% \begin{syntax}
+% \cs{sys_if_shell_restricted_p:}
+% \cs{sys_if_shell_restricted:TF} \Arg{true code} \Arg{false code}
+% \end{syntax}
+% Performs a check for whether \emph{restricted} shell escape is
+% enabled. This will return false if unrestricted shell escape is
+% enabled. Unrestricted shell escape is not considered a superset
+% of restricted shell escape in this case. To find whether any
+% shell escape is enabled use \cs{sys_if_shell:}.
+% \end{function}
+%
+% \begin{function}[added = 2017-05-27]{\sys_shell_now:n, \sys_shell_now:x}
+% \begin{syntax}
+% \cs{sys_shell_now:n} \Arg{tokens}
+% \end{syntax}
+% Execute \meta{tokens} through shell escape immediately.
+% \end{function}
+%
+% \begin{function}[added = 2017-05-27]{\sys_shell_shipout:n, \sys_shell_shipout:x}
+% \begin{syntax}
+% \cs{sys_shell_shipout:n} \Arg{tokens}
+% \end{syntax}
+% Execute \meta{tokens} through shell escape at shipout.
+% \end{function}
+%
% \section{Additions to \pkg{l3tl}}
%
% \begin{function}[EXP,pTF]{\tl_if_single_token:n}
@@ -1523,67 +1495,6 @@
}
% \end{macrocode}
% \end{macro}
-%
-% \begin{macrocode}
-%<@@=ior>
-% \end{macrocode}
-%
-% \begin{macro}[EXP]{\ior_map_break:, \ior_map_break:n}
-% Usual map breaking functions. Those are not yet in \pkg{l3kernel}
-% proper since the mapping below is the first of its kind.
-% \begin{macrocode}
-\cs_new:Npn \ior_map_break:
- { \__prg_map_break:Nn \ior_map_break: { } }
-\cs_new:Npn \ior_map_break:n
- { \__prg_map_break:Nn \ior_map_break: }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\ior_map_inline:Nn, \ior_str_map_inline:Nn}
-% \begin{macro}[aux]{\@@_map_inline:NNn}
-% \begin{macro}[aux]{\@@_map_inline:NNNn}
-% \begin{macro}[aux]{\@@_map_inline_loop:NNN}
-% \begin{variable}{\l_@@_internal_tl}
-% Mapping to an input stream can be done on either a token or a string
-% basis, hence the set up. Within that, there is a check to avoid reading
-% past the end of a file, hence the two applications of \cs{ior_if_eof:N}.
-% This mapping cannot be nested with twice the same stream, as the
-% stream has only one \enquote{current line}.
-% \begin{macrocode}
-\cs_new_protected:Npn \ior_map_inline:Nn
- { \@@_map_inline:NNn \ior_get:NN }
-\cs_new_protected:Npn \ior_str_map_inline:Nn
- { \@@_map_inline:NNn \ior_str_get:NN }
-\cs_new_protected:Npn \@@_map_inline:NNn
- {
- \int_gincr:N \g__prg_map_int
- \exp_args:Nc \@@_map_inline:NNNn
- { __prg_map_ \int_use:N \g__prg_map_int :n }
- }
-\cs_new_protected:Npn \@@_map_inline:NNNn #1#2#3#4
- {
- \cs_gset_protected:Npn #1 ##1 {#4}
- \ior_if_eof:NF #3 { \@@_map_inline_loop:NNN #1#2#3 }
- \__prg_break_point:Nn \ior_map_break:
- { \int_gdecr:N \g__prg_map_int }
- }
-\cs_new_protected:Npn \@@_map_inline_loop:NNN #1#2#3
- {
- #2 #3 \l_@@_internal_tl
- \ior_if_eof:NF #3
- {
- \exp_args:No #1 \l_@@_internal_tl
- \@@_map_inline_loop:NNN #1#2#3
- }
- }
-\tl_new:N \l_@@_internal_tl
-% \end{macrocode}
-% \end{variable}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
% \begin{macro}{\ior_log_streams:}
% Redirect output of \cs{ior_list_streams:} to the log.
% \begin{macrocode}
@@ -1592,10 +1503,6 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macrocode}
-%<@@=iow>
-% \end{macrocode}
-%
% \begin{macro}{\iow_log_streams:}
% Redirect output of \cs{iow_list_streams:} to the log.
% \begin{macrocode}
@@ -1976,6 +1883,10 @@
%
% \subsection{Additions to \pkg{l3sys}}
%
+% \begin{macrocode}
+%<@@=sys>
+% \end{macrocode}
+%
% \begin{macro}[EXP, pTF]{\sys_if_rand_exist:}
% Currently, randomness exists under \pdfTeX{} and \LuaTeX{}.
% \begin{macrocode}
@@ -2006,6 +1917,133 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{variable}{\c_sys_shell_escape_int}
+% Expose the engine's shell escape status to the user.
+% \begin{macrocode}
+\int_const:Nn \c_sys_shell_escape_int
+ {
+ \sys_if_engine_luatex:TF
+ {
+ \luatex_directlua:D
+ {
+ tex.sprint((status.shell_escape~or~os.execute()) .. " ")
+ }
+ }
+ {
+ \pdftex_shellescape:D
+ }
+ }
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}[EXP, pTF]{\sys_if_shell:}
+% Performs a check for whether shell escape is enabled. This will
+% return true if either of restricted or unrestricted shell escape
+% is enabled.
+% \begin{macrocode}
+\prg_new_conditional:Nnn \sys_if_shell: { p , T , F , TF }
+ {
+ \if_int_compare:w \c_sys_shell_escape_int = 0 ~
+ \prg_return_false:
+ \else:
+ \prg_return_true:
+ \fi:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[EXP, pTF]{\sys_if_shell_unrestricted:}
+% Performs a check for whether \emph{unrestricted} shell escape is
+% enabled.
+% \begin{macrocode}
+\prg_new_conditional:Nnn \sys_if_shell_unrestricted: { p , T , F , TF }
+ {
+ \if_int_compare:w \c_sys_shell_escape_int = 1 ~
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[EXP, pTF]{\sys_if_shell_unrestricted:}
+% Performs a check for whether \emph{restricted} shell escape is
+% enabled. This will return false if unrestricted shell escape is
+% enabled. Unrestricted shell escape is not considered a superset
+% of restricted shell escape in this case. To find whether any
+% shell escape is enabled use \cs{sys_if_shell:}.
+% \begin{macrocode}
+\prg_new_conditional:Nnn \sys_if_shell_restricted: { p , T , F , TF }
+ {
+ \if_int_compare:w \c_sys_shell_escape_int = 2 ~
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{variable}{\c_@@_shell_stream_int}
+% This is not needed for \LuaTeX{}: shell escape there isn't done using
+% a \TeX{} interface
+% \begin{macrocode}
+\sys_if_engine_luatex:F
+ { \int_const:Nn \c_@@_shell_stream_int { 18 } }
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\sys_shell_now:n}
+% Execute commands through shell escape immediately.
+% \begin{macrocode}
+\sys_if_engine_luatex:TF
+ {
+ \cs_new_protected:Npn \sys_shell_now:n #1
+ {
+ \luatex_directlua:D
+ {
+ os.execute("
+ \luatex_luaescapestring:D { \etex_detokenize:D {#1} }
+ ")
+ }
+ }
+ }
+ {
+ \cs_new_protected:Npn \sys_shell_now:n #1
+ {
+ \iow_now:Nn \c_@@_shell_stream_int { #1 }
+ }
+ }
+\cs_generate_variant:Nn \sys_shell_now:n { x }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sys_shell_shipout:n}
+% Execute commands through shell escape at shipout.
+% \begin{macrocode}
+\sys_if_engine_luatex:TF
+ {
+ \cs_new_protected:Npn \sys_shell_shipout:n #1
+ {
+ \luatex_latelua:D
+ {
+ os.execute("
+ \luatex_luaescapestring:D { \etex_detokenize:D {#1} }
+ ")
+ }
+ }
+ }
+ {
+ \cs_new_protected:Npn \sys_shell_shipout:n #1
+ {
+ \iow_shipout:Nn \c_@@_shell_stream_int { #1 }
+ }
+ }
+\cs_generate_variant:Nn \sys_shell_shipout:n { x }
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Additions to \pkg{l3tl}}
%
% \begin{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
index 4876e488bd3..3ae99922226 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
index 1bc70605f7b..c571516ea79 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3color.dtx b/Master/texmf-dist/source/latex/l3kernel/l3color.dtx
index 72bca5f43db..7201aac2abc 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3color.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3color.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
index d1eaba62294..4b6f1c28f3a 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
index 516925b3e4a..489a6a68f93 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
@@ -70,14 +70,14 @@ and all files in that bundle must be distributed together.
% This isn't included in the typeset documentation because it's a bit
% ugly:
%<*class>
-\ProvidesExplClass{l3doc}{2017/05/13}{}
+\ProvidesExplClass{l3doc}{2017/05/29}{}
{L3 Experimental documentation class}
%</class>
% \fi
%
% \title{The \cls{l3doc} class}
% \author{\Team}
-% \date{Released 2017/05/13}
+% \date{Released 2017/05/29}
% \maketitle
% \tableofcontents
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
index 4f8ec457518..dd8b978269a 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
index 9584a9aa624..68bb90ec8cc 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
@@ -45,7 +45,7 @@
% }^^A
% }
%
-% \date{Released 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
@@ -640,17 +640,17 @@
%
% \subsubsection{Color}
%
-% \begin{variable}{\l_@@_current_color_tl}
+% \begin{variable}{\l_@@_color_current_tl}
% The current color in driver-dependent format: pick up the package-mode
% data if available.
% \begin{macrocode}
-\tl_new:N \l_@@_current_color_tl
-\tl_set:Nn \l_@@_current_color_tl { 0~g~0~G }
+\tl_new:N \l_@@_color_current_tl
+\tl_set:Nn \l_@@_color_current_tl { 0~g~0~G }
%<*package>
\AtBeginDocument
{
\@ifpackageloaded { color }
- { \tl_set:Nn \l_@@_current_color_tl { \current@color } }
+ { \tl_set:Nn \l_@@_color_current_tl { \current@color } }
{ }
}
%</package>
@@ -676,7 +676,7 @@
{ \luatex_pdfextension:D colorstack }
{ \pdftex_pdfcolorstack:D }
\exp_not:N \l_@@_color_stack_int push
- { \exp_not:N \l_@@_current_color_tl }
+ { \exp_not:N \l_@@_color_current_tl }
\group_insert_after:N \exp_not:N \@@_color_reset:
}
\cs_new_protected:Npx \@@_color_reset:
@@ -690,6 +690,108 @@
% \end{macro}
% \end{macro}
%
+% \subsection{Images}
+%
+% \begin{variable}{\l_@@_image_attr_tl}
+% In PDF mode, additional attributes of an image (such as page number) are
+% needed both to obtain the bounding box and when inserting the image: this
+% occurs as the image dictionary approach means they are read as part of
+% the bounding box operation. As such, it is easier to track additional
+% attributes using a dedicated |tl| rather than build up the same data
+% twice.
+% \begin{macrocode}
+\tl_new:N \l_@@_image_attr_tl
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}[int]
+% {\@@_image_getbb_jpg:n, \@@_image_getbb_pdf:n, \@@_image_getbb_png:n}
+% \begin{macro}[aux]
+% {\@@_image_getbb_auxi:n, \@@_image_getbb_auxii:n}
+% Getting the bounding box here requires us to box up the image and
+% measure it. To deal with the difference in feature support in bitmap
+% and vector images but keeping the common parts, there is a little work
+% to do in terms of auxiliaries. The key here is to notice that we need
+% two forms of the attributes: a \enquote{short} set to allow us to
+% track for caching, and the full form to pass to the primitive. Note that
+% in |pdftex.def| the short reference is stored to be used in the inclusion
+% stage: may be required when there are more aspects to track.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_image_getbb_jpg:n #1
+ {
+ \int_zero:N \l__image_page_int
+ \tl_set:Nx \l_@@_image_attr_tl
+ {
+ \bool_if:NT \l__image_interpolate_bool
+ { :I }
+ }
+ \@@_image_getbb_auxi:n {#1}
+ }
+\cs_new_eq:NN \@@_image_getbb_png:n \@@_image_getbb_jpg:n
+\cs_new_protected:Npn \@@_image_getbb_pdf:n #1
+ {
+ \bool_set_false:N \l__image_interpolate_bool
+ \tl_set:Nx \l_@@_image_attr_tl
+ {
+ \int_compare:nNnT \l__image_page_int > 0
+ { :P \int_use:N \l__image_page_int }
+ }
+ \@@_image_getbb_auxi:n {#1}
+ }
+\cs_new_protected:Npn \@@_image_getbb_auxi:n #1
+ {
+ \dim_if_exist:cTF { c__image_ #1 \l_@@_image_attr_tl _ht_dim }
+ {
+ \dim_set_eq:Nc \l__image_ht_dim
+ { c__image_ #1 \l_@@_image_attr_tl _ht_dim }
+ \dim_set_eq:Nc \l__image_wd_dim
+ { c__image_ #1 \l_@@_image_attr_tl _wd_dim }
+ }
+ { \@@_image_getbb_auxii:n {#1} }
+ }
+% \begin{macrocode}
+% Measuring the image is done by boxing up: for PDF images we could
+% use |\pdftex_pdfximagebbox:D|, but if doesn't work for other types.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_image_getbb_auxii:n #1
+ {
+ \tex_immediate:D \pdftex_pdfximage:D
+ \bool_if:NT \l__image_interpolate_bool
+ { attr ~ { /Interpolate~true } }
+ \int_compare:nNnT \l__image_page_int > 0
+ { page ~ \int_use:N \l__image_page_int }
+ {#1}
+ \hbox_set:Nn \l__image_tmp_box
+ { \pdftex_pdfrefximage:D \pdftex_pdflastximage:D }
+ \dim_set:Nn \l__image_ht_dim { \box_ht:N \l__image_tmp_box }
+ \dim_set:Nn \l__image_wd_dim { \box_wd:N \l__image_tmp_box }
+ \int_const:cn { c__image_ #1 \l_@@_image_attr_tl _int }
+ { \tex_the:D \pdftex_pdflastximage:D }
+ \dim_const:cn { c__image_ #1 \l_@@_image_attr_tl _ht_dim }
+ { \l__image_ht_dim }
+ \dim_const:cn { c__image_ #1 \l_@@_image_attr_tl _wd_dim }
+ { \l__image_wd_dim }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}[int]
+% {\@@_image_include_jpg:n, \@@_image_include_pdf:n, \@@_image_include_png:n}
+% Images are already loaded for the measurement part of the code, so
+% inclusion is straight-forward, with only any attributes to worry about. The
+% latter carry through from determination of the bounding box.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_image_include_jpg:n #1
+ {
+ \pdftex_pdfrefximage:D
+ \int_use:c { c__image_ #1 \l_@@_image_attr_tl _int }
+ }
+\cs_new_eq:NN \@@_image_include_pdf:n \@@_image_include_jpg:n
+\cs_new_eq:NN \@@_image_include_png:n \@@_image_include_jpg:n
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macrocode}
%</pdfmode>
% \end{macrocode}
@@ -799,16 +901,16 @@
%
% \subsubsection{Color}
%
-% \begin{variable}{\l_@@_current_color_tl}
+% \begin{variable}{\l_@@_color_current_tl}
% The current color in driver-dependent format.
% \begin{macrocode}
-\tl_new:N \l_@@_current_color_tl
-\tl_set:Nn \l_@@_current_color_tl { [ 0 ] }
+\tl_new:N \l_@@_color_current_tl
+\tl_set:Nn \l_@@_color_current_tl { [ 0 ] }
%<*package>
\AtBeginDocument
{
\@ifpackageloaded { color }
- { \tl_set:Nn \l_@@_current_color_tl { \current@color } }
+ { \tl_set:Nn \l_@@_color_current_tl { \current@color } }
{ }
}
%</package>
@@ -821,7 +923,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_color_ensure_current:
{
- \tex_special:D { pdf:bcolor~\l_@@_current_color_tl }
+ \tex_special:D { pdf:bcolor~\l_@@_color_current_tl }
\group_insert_after:N \@@_color_reset:
}
\cs_new_protected:Npn \@@_color_reset:
@@ -830,6 +932,107 @@
% \end{macro}
% \end{macro}
%
+% \subsection{Images}
+%
+% \begin{macro}[int]
+% {
+% \@@_image_getbb_eps:n, \@@_image_getbb_jpg:n,
+% \@@_image_getbb_pdf:n, \@@_image_getbb_png:n
+% }
+% Simply use the generic functions: only for \texttt{dvipdfmx} in the
+% extraction cases.
+% \begin{macrocode}
+\cs_new_eq:NN \@@_image_getbb_eps:n \__image_read_bb:n
+%<*dvipdfmx>
+\cs_new_protected:Npn \@@_image_getbb_jpg:n #1
+ {
+ \int_zero:N \l__image_page_int
+ \__image_extract_bb:n {#1}
+ }
+\cs_new_eq:NN \@@_image_getbb_png:n \@@_image_getbb_jpg:n
+\cs_new_protected:Npn \@@_image_getbb_pdf:n #1
+ {
+ \bool_set_false:N \l__image_interpolate_tl
+ \__image_extract_bb:n {#1}
+ }
+%</dvipdfmx>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{variable}[aux]{\g_@@_image_int}
+% Used to track the object number associated with each image.
+% \begin{macrocode}
+\int_new:N \g_@@_image_int
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}[int]
+% {
+% \@@_image_include_eps:n, \@@_image_include_jpg:n,
+% \@@_image_include_pdf:n, \@@_image_include_png:n
+% }
+% \begin{macro}[aux]{\@@_image_include_auxi:nn}
+% \begin{macro}[aux]{\@@_image_include_auxii:nnn, \@@_image_include_auxii:xnn}
+% \begin{macro}[aux]{\@@_image_include_auxiii:nn}
+% The special syntax depends on the file type.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_image_include_eps:n #1
+ {
+ \tex_special:D { PSfile = #1 }
+ }
+\cs_new_protected:Npn \@@_image_include_jpg:n #1
+ { \@@_image_include_auxi:nn {#1} { image } }
+\cs_new_eq:NN \@@_image_include_png:n \@@_image_include_png:n
+\cs_new_protected:Npn \@@_image_include_pdf:n #1
+ { \@@_image_include_auxi:nn {#1} { epdf } }
+% \end{macrocode}
+% Image inclusion is set up to use the fact that each image is stored in
+% the PDF as an XObject. This means that we can include repeated images
+% only once and refer to them. To allow that, track the nature of each
+% image: much the same as for the direct PDF mode case.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_image_include_auxi:nn #1#2
+ {
+ \@@_image_include_auxii:xnn
+ {
+ \int_compare:nNnT \l__image_page_int > 0
+ { :P \int_use:N \l__image_page_int }
+ \bool_if:NT \l__image_interpolate_bool
+ { :I }
+ }
+ {#1} {#2}
+ }
+\cs_new_protected:Npn \@@_image_include_auxii:nnn #1#2#3
+ {
+ \int_if_exist:cTF { c__image_ #2#1 _int }
+ {
+ \tex_special:D
+ { pdf:usexobj~@image \int_use:c { c__image_ #2#1 _int } }
+ }
+ { \@@_image_include_auxiii:nn {#2} {#1} {#3} }
+ }
+\cs_generate_variant:Nn \@@_image_include_auxii:nnn { x }
+\cs_new_protected:Npn \@@_image_include_auxiii:nnn #1#2#3
+ {
+ \int_gincr:N \g_@@_image_int
+ \int_const:cn { c__image_ #1#2 _int } { \g_@@_image_int }
+ \tex_special:D
+ {
+ pdf:#3~
+ @image \int_use:c { c__image_ #1#2 _int }
+ \int_compare:nNnT \l__image_page_int > 0
+ { page ~ \int_use:N \l__image_page_int \c_space_tl }
+ (#1)
+ \bool_if:NT \l__image_interpolate_bool
+ { <</Interpolate~true>> }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
% \begin{macrocode}
%</dvipdfmx|xdvipdfmx>
% \end{macrocode}
@@ -844,21 +1047,29 @@
%
% \begin{macro}[int]{\@@_color_ensure_current:}
% \begin{macro}[aux]{\@@_color_reset:}
-% The \LaTeXe{} driver uses \texttt{dvips}-like specials so there has to
-% be a change of set up if \pkg{color} is loaded.
+% Older \LaTeXe{} drivers uses \texttt{dvips}-like specials so there has to
+% be a change of set up if \pkg{color} is loaded and if the current color
+% doesn't match the pattern expected for |dvipdfmx|.
% \begin{macrocode}
%<*package>
\AtBeginDocument
{
\@ifpackageloaded { color }
{
- \cs_set_protected:Npn \@@_color_ensure_current:
+ \cs_set_protected:Npn \@@_tmp:w #1 [ #2 ] #3 \q_stop
{
- \tex_special:D { color~push~\l_@@_current_color_tl }
- \group_insert_after:N \@@_color_reset:
+ \tl_if_empty:nT {#2}
+ {
+ \cs_set_protected:Npn \@@_color_ensure_current:
+ {
+ \tex_special:D { color~push~\l_@@_color_current_tl }
+ \group_insert_after:N \@@_color_reset:
+ }
+ \cs_set_protected:Npn \@@_color_reset:
+ { \tex_special:D { color~pop } }
+ }
}
- \cs_set_protected:Npn \@@_color_reset:
- { \tex_special:D { color~pop } }
+ \exp_after:wN \@@_tmp:w \current@color [ ] \q_stop
}
{ }
}
@@ -867,6 +1078,58 @@
% \end{macro}
% \end{macro}
%
+% \subsection{Images}
+%
+% \begin{macro}[int]
+% {\@@_image_getbb_jpg:n, \@@_image_getbb_pdf:n, \@@_image_getbb_png:n}
+% \begin{macro}[aux]{\@@_image_getbb_auxi:nN}
+% \begin{macro}[aux]{\@@_image_getbb_auxii:nnN, \@@_image_getbb_auxii:VnN}
+% \begin{macro}[aux]{\@@_image_getbb_auxiii:nNnn}
+% For \texttt{xdvipdfmx}, there are two primitives that allow us to obtain
+% the bounding box without needing \texttt{extractbb}.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_image_getbb_jpg:n #1
+ {
+ \int_zero:N \l__image_page_int
+ \@@_image_getbb_auxi:nN {#1} \xetex_picfile:D
+ }
+\cs_new_eq:NN \@@_image_getbb_png:n \@@_image_getbb_jpg:n
+\cs_new_protected:Npn \@@_image_getbb_pdf:n #1
+ { \@@_image_getbb_auxi:nN {#1} \xetex_pdffile:D }
+\cs_new_protected:Npn \@@_image_getbb_auxi:nN #1#2
+ {
+ \int_compare:nNnTF \l__image_page_int > 0
+ { \@@_image_getbb_auxii:VnN \l__image_page_int {#1} #2 }
+ { \@@_image_getbb_auxiii:nNnn {#1} #2 }
+ }
+\cs_new_protected:Npn \@@_image_getbb_auxii:nnN #1#2#3
+ { \@@_image_getbb_auxiii:nNnn {#2} #3 { :P #1 } { page #1 } }
+\cs_generate_variant:Nn \@@_image_getbb_auxii:nnN { V }
+\cs_new_protected:Npn \@@_image_getbb_auxiii:nNnn #1#2#3#4
+ {
+ \dim_if_exist:cTF { c__image_ #1#3 _ht_dim }
+ {
+ \dim_set_eq:Nc \l__image_ht_dim { c__image_ #1#3 _ht_dim }
+ \dim_set_eq:Nc \l__image_wd_dim { c__image_ #1#3 _wd_dim }
+ }
+ { \@@_image_getbb_auxvi:nNnn {#1} #2 {#3} {#4} }
+ }
+\cs_new_protected:Npn \@@_image_getbb_auxvi:nNnn #1#2#3#4
+ {
+ \hbox_set:Nn \l__image_tmp_box { #2 #1 ~ #4 }
+ \dim_set:Nn \l__image_ht_dim { \box_ht:N \l__image_tmp_box }
+ \dim_set:Nn \l__image_wd_dim { \box_wd:N \l__image_tmp_box }
+ \dim_const:cn { c__image_ #1#3 _ht_dim }
+ { \l__image_ht_dim }
+ \dim_const:cn { c__image_ #1#3 _wd_dim }
+ { \l__image_wd_dim }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
% \begin{macrocode}
%</xdvipdfmx>
% \end{macrocode}
@@ -874,7 +1137,7 @@
% \subsection{Drawing commands: \texttt{pdfmode} and \texttt{(x)dvipdfmx}}
%
% Both \texttt{pdfmode} and \texttt{(x)dvipdfmx} directly produce PDF output
-% and undertand a shared set of specials for drawing commands.
+% and understand a shared set of specials for drawing commands.
%
% \begin{macrocode}
%<*dvipdfmx|pdfmode|xdvipdfmx>
@@ -954,7 +1217,7 @@
% \end{macro}
%
% \begin{macro}[int]{\@@_draw_evenodd_rule:, \@@_draw_nonzero_rule:}
-% \begin{variable}[aux]{\g_@@_draw_eor_bool}
+% \begin{variable}[int]{\g_@@_draw_eor_bool}
% The even-odd rule here can be implemented as a simply switch.
% \begin{macrocode}
\cs_new_protected:Npn \@@_draw_evenodd_rule:
@@ -1341,16 +1604,16 @@
%
% \subsubsection{Color}
%
-% \begin{variable}{\l_@@_current_color_tl}
+% \begin{variable}{\l_@@_color_current_tl}
% The current color in driver-dependent format.
% \begin{macrocode}
-\tl_new:N \l_@@_current_color_tl
-\tl_set:Nn \l_@@_current_color_tl { gray~0 }
+\tl_new:N \l_@@_color_current_tl
+\tl_set:Nn \l_@@_color_current_tl { gray~0 }
%<*package>
\AtBeginDocument
{
\@ifpackageloaded { color }
- { \tl_set:Nn \l_@@_current_color_tl { \current@color } }
+ { \tl_set:Nn \l_@@_color_current_tl { \current@color } }
{ }
}
%</package>
@@ -1363,7 +1626,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_color_ensure_current:
{
- \tex_special:D { color~push~\l_@@_current_color_tl }
+ \tex_special:D { color~push~\l_@@_color_current_tl }
\group_insert_after:N \@@_color_reset:
}
\cs_new_protected:Npn \@@_color_reset:
@@ -1372,6 +1635,26 @@
% \end{macro}
% \end{macro}
%
+% \subsection{Images}
+%
+% \begin{macro}[int]{\@@_image_getbb_eps:n}
+% Simply use the generic function.
+% \begin{macrocode}
+\cs_new_eq:NN \@@_image_getbb_eps:n \__image_read_bb:n
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[int]{\@@_image_include_eps:n}
+% The special syntax is relatively clear here: remember we need PostScript
+% sizes here.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_image_include_eps:n #1
+ {
+ \tex_special:D { PSfile = #1 }
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Drawing}
%
% \begin{macro}[aux]{\@@_draw_literal:n, \@@_draw_literal:x}
@@ -1972,17 +2255,17 @@
%
% \subsubsection{Color}
%
-% \begin{variable}{\l_@@_current_color_tl}
+% \begin{variable}{\l_@@_color_current_tl}
% The current color in driver-dependent format: the same as for
% \texttt{dvips}.
% \begin{macrocode}
-\tl_new:N \l_@@_current_color_tl
-\tl_set:Nn \l_@@_current_color_tl { gray~0 }
+\tl_new:N \l_@@_color_current_tl
+\tl_set:Nn \l_@@_color_current_tl { gray~0 }
%<*package>
\AtBeginDocument
{
\@ifpackageloaded { color }
- { \tl_set:Nn \l_@@_current_color_tl { \current@color } }
+ { \tl_set:Nn \l_@@_color_current_tl { \current@color } }
{ }
}
%</package>
@@ -1995,7 +2278,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_color_ensure_current:
{
- \tex_special:D { color~push~\l_@@_current_color_tl }
+ \tex_special:D { color~push~\l_@@_color_current_tl }
\group_insert_after:N \@@_color_reset:
}
\cs_new_protected:Npn \@@_color_reset:
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
index 6908c0bc050..ae03bfb7cb8 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
index 12ffc79a8c5..a3ceb04d1cf 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
@@ -232,28 +232,34 @@
% and right braces are found) from the input \meta{stream} and stores
% the result locally in the \meta{token list} variable. If the
% \meta{stream} is not open, input is requested from the terminal.
-% The material read from the \meta{stream} will be tokenized by
-% \TeX{} according to the category codes in force when the function
-% is used. Note that any blank lines will be converted to the token
-% \cs{par}. Therefore, if skipping blank lines is requires a test such as
+% The material read from the \meta{stream} will be tokenized by \TeX{}
+% according to the category codes and \tn{endlinechar} in force when
+% the function is used. Assuming normal settings, any lines which do
+% not end in a comment character~|%| will have the line ending
+% converted to a space, so for example input
+% \begin{verbatim}
+% a b c
+% \end{verbatim}
+% will result in a token list \verb*|a b c |. Any blank line is
+% converted to the token \cs{par}. Therefore, blank lines can be
+% skipped by using a test such as
% \begin{verbatim}
% \ior_get:NN \l_my_stream \l_tmpa_tl
% \tl_set:Nn \l_tmpb_tl { \par }
% \tl_if_eq:NNF \l_tmpa_tl \l_tmpb_tl
% ...
% \end{verbatim}
-% may be used. Also notice that if multiple lines are read to match braces
-% then the resulting token list will contain \cs{par} tokens. As normal
-% \TeX{} tokenization is in force, any lines which do not end in a comment
-% character (usually |%|) will have the line ending converted to a space,
-% so for example input
-% \begin{verbatim}
-% a b c
-% \end{verbatim}
-% will result in a token list |a b c |.
+% Also notice that if multiple lines are read to match braces
+% then the resulting token list can contain \cs{par} tokens.
% \begin{texnote}
-% This protected macro expands to the \TeX{} primitive \tn{read}
-% along with the |to| keyword.
+% This protected macro is a wrapper around the \TeX{} primitive
+% \tn{read}. Regardless of settings, \TeX{} replaces trailing space
+% and tab characters (character codes 32 and~9) in each line by an
+% end-of-line character (character code \tn{endlinechar}, omitted if
+% \tn{endlinechar} is negative or too large) before turning
+% characters into tokens according to current category codes. With
+% default settings, spaces appearing at the beginning of lines are
+% also ignored.
% \end{texnote}
% \end{function}
%
@@ -279,9 +285,91 @@
% having category code~12.
% \begin{texnote}
% This protected macro is a wrapper around the \eTeX{} primitive
-% \tn{readline}. However, the end-line character normally added by
-% this primitive is not included in the result of
-% \cs{ior_str_get:NN}.
+% \tn{readline}. Regardless of settings, \TeX{} removes trailing
+% space and tab characters (character codes 32 and~9). However, the
+% end-line character normally added by this primitive is not
+% included in the result of \cs{ior_str_get:NN}.
+% \end{texnote}
+% \end{function}
+%
+% \begin{function}[added = 2012-02-11]{\ior_map_inline:Nn}
+% \begin{syntax}
+% \cs{ior_map_inline:Nn} \meta{stream} \Arg{inline function}
+% \end{syntax}
+% Applies the \meta{inline function} to each set of \meta{lines}
+% obtained by calling \cs{ior_get:NN} until reaching the end of the
+% file. \TeX{} ignores any trailing new-line marker from the file it
+% reads. The \meta{inline function} should consist of code which will
+% receive the \meta{line} as |#1|.
+% \end{function}
+%
+% \begin{function}[added = 2012-02-11]{\ior_str_map_inline:Nn}
+% \begin{syntax}
+% \cs{ior_str_map_inline:Nn} \Arg{stream} \Arg{inline function}
+% \end{syntax}
+% Applies the \meta{inline function} to every \meta{line}
+% in the \meta{stream}. The material is read from the \meta{stream}
+% as a series of tokens with category code $12$ (other), with the
+% exception of space characters which are given category code $10$
+% (space). The \meta{inline function} should consist of code which
+% will receive the \meta{line} as |#1|.
+% Note that \TeX{} removes trailing space and tab characters
+% (character codes 32 and 9) from every line upon input. \TeX{} also
+% ignores any trailing new-line marker from the file it reads.
+% \end{function}
+%
+% \begin{function}[added = 2012-06-29]{\ior_map_break:}
+% \begin{syntax}
+% \cs{ior_map_break:}
+% \end{syntax}
+% Used to terminate a \cs[no-index]{ior_map_\ldots} function before all
+% lines from the \meta{stream} have been processed. This will
+% normally take place within a conditional statement, for example
+% \begin{verbatim}
+% \ior_map_inline:Nn \l_my_ior
+% {
+% \str_if_eq:nnTF { #1 } { bingo }
+% { \ior_map_break: }
+% {
+% % Do something useful
+% }
+% }
+% \end{verbatim}
+% Use outside of a \cs[no-index]{ior_map_\ldots} scenario will lead to low
+% level \TeX{} errors.
+% \begin{texnote}
+% When the mapping is broken, additional tokens may be inserted by the
+% internal macro \cs{__prg_break_point:Nn} before further items are taken
+% from the input stream. This will depend on the design of the mapping
+% function.
+% \end{texnote}
+% \end{function}
+%
+% \begin{function}[added = 2012-06-29]{\ior_map_break:n}
+% \begin{syntax}
+% \cs{ior_map_break:n} \Arg{tokens}
+% \end{syntax}
+% Used to terminate a \cs[no-index]{ior_map_\ldots} function before all
+% lines in the \meta{stream} have been processed, inserting
+% the \meta{tokens} after the mapping has ended. This will
+% normally take place within a conditional statement, for example
+% \begin{verbatim}
+% \ior_map_inline:Nn \l_my_ior
+% {
+% \str_if_eq:nnTF { #1 } { bingo }
+% { \ior_map_break:n { <tokens> } }
+% {
+% % Do something useful
+% }
+% }
+% \end{verbatim}
+% Use outside of a \cs[no-index]{ior_map_\ldots} scenario will lead to low
+% level \TeX{} errors.
+% \begin{texnote}
+% When the mapping is broken, additional tokens may be inserted by the
+% internal macro \cs{__prg_break_point:Nn} before the \meta{tokens} are
+% inserted into the input stream.
+% This will depend on the design of the mapping function.
% \end{texnote}
% \end{function}
%
@@ -1183,6 +1271,61 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}[EXP]{\ior_map_break:, \ior_map_break:n}
+% Usual map breaking functions.
+% \begin{macrocode}
+\cs_new:Npn \ior_map_break:
+ { \__prg_map_break:Nn \ior_map_break: { } }
+\cs_new:Npn \ior_map_break:n
+ { \__prg_map_break:Nn \ior_map_break: }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ior_map_inline:Nn, \ior_str_map_inline:Nn}
+% \begin{macro}[aux]{\@@_map_inline:NNn}
+% \begin{macro}[aux]{\@@_map_inline:NNNn}
+% \begin{macro}[aux]{\@@_map_inline_loop:NNN}
+% \begin{variable}{\l_@@_internal_tl}
+% Mapping to an input stream can be done on either a token or a string
+% basis, hence the set up. Within that, there is a check to avoid reading
+% past the end of a file, hence the two applications of \cs{ior_if_eof:N}.
+% This mapping cannot be nested with twice the same stream, as the
+% stream has only one \enquote{current line}.
+% \begin{macrocode}
+\cs_new_protected:Npn \ior_map_inline:Nn
+ { \@@_map_inline:NNn \ior_get:NN }
+\cs_new_protected:Npn \ior_str_map_inline:Nn
+ { \@@_map_inline:NNn \ior_str_get:NN }
+\cs_new_protected:Npn \@@_map_inline:NNn
+ {
+ \int_gincr:N \g__prg_map_int
+ \exp_args:Nc \@@_map_inline:NNNn
+ { __prg_map_ \int_use:N \g__prg_map_int :n }
+ }
+\cs_new_protected:Npn \@@_map_inline:NNNn #1#2#3#4
+ {
+ \cs_gset_protected:Npn #1 ##1 {#4}
+ \ior_if_eof:NF #3 { \@@_map_inline_loop:NNN #1#2#3 }
+ \__prg_break_point:Nn \ior_map_break:
+ { \int_gdecr:N \g__prg_map_int }
+ }
+\cs_new_protected:Npn \@@_map_inline_loop:NNN #1#2#3
+ {
+ #2 #3 \l_@@_internal_tl
+ \ior_if_eof:NF #3
+ {
+ \exp_args:No #1 \l_@@_internal_tl
+ \@@_map_inline_loop:NNN #1#2#3
+ }
+ }
+\tl_new:N \l_@@_internal_tl
+% \end{macrocode}
+% \end{variable}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
% \begin{variable}{\g__file_internal_ior}
% Needed by the higher-level code, but cannot be created until here.
% \begin{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
index 2c25386e920..d49b33d33da 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
index 658acbd3518..8c12450f32a 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3format.ins b/Master/texmf-dist/source/latex/l3kernel/l3format.ins
index 14d71ea4463..ec089835e9d 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3format.ins
+++ b/Master/texmf-dist/source/latex/l3kernel/l3format.ins
@@ -67,6 +67,7 @@ and all files in that bundle must be distributed together.
\from{l3alloc.dtx} {initex}
% ==============================
\from{l3int.dtx} {initex}
+ \from{l3intarray.dtx} {initex}
\from{l3flag.dtx} {initex}
\from{l3quark.dtx} {initex}
\from{l3prg.dtx} {initex}
@@ -91,6 +92,9 @@ and all files in that bundle must be distributed together.
\from{l3fp-random.dtx} {initex}
\from{l3fp-assign.dtx} {initex}
\from{l3sort.dtx} {initex}
+ \from{l3tl-build.dtx} {initex}
+ \from{l3tl-analysis.dtx}{initex}
+ \from{l3regex.dtx} {initex}
\from{l3box.dtx} {initex}
\from{l3coffins.dtx} {initex}
\from{l3color.dtx} {initex}
@@ -117,12 +121,17 @@ and all files in that bundle must be distributed together.
\def\MetaPrefix{--}
\preamble
-EXPERIMENTAL CODE
+Copyright (C) 1990-2017 The LaTeX3 Project
-Do not distribute this file without also distributing the
-source files specified above.
+It may be distributed and/or modified under the conditions of
+the LaTeX Project Public License (LPPL), either version 1.3c of
+this license or (at your option) any later version. The latest
+version of this license is in the file:
-Do not distribute a modified version of this file.
+ http://www.latex-project.org/lppl.txt
+
+This file is part of the "l3kernel bundle" (The Work in LPPL)
+and all files in that bundle must be distributed together.
\endpreamble
\nopostamble
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
index 02a22405d25..af396801a00 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 2017/05/13}
+% \date{Released 2017/05/29}
% \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 4d7ccd55a90..58c67b9cf57 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
index cd8a2822cec..8a8e233edc5 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
index 463892caee7..ae0c958d999 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
index 2cf6e06b8d5..521bdae30e6 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
index de04c7cf796..286d320973c 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
index c51dd6069f7..ff54b840a59 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
index 83dca37310c..b0abdd5abac 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
index d78c7c5e2de..ebe0d53cb5c 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
index dfc00ce2999..8b88920c57e 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
index b11c8532a12..9a3a94ffc53 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 2017/05/13}
+% \date{Released 2017/05/29}
% \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 9ff46ddee9a..d5c48436db4 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
index 380dd7f3641..6eb6e2b68e1 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
index 7ea2be4fed0..d5b6eb60ace 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3intarray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
index 0327082bf18..e64ee21f1bb 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3intarray.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
@@ -9,7 +9,7 @@
%
% http://www.latex-project.org/lppl.txt
%
-% This file is part of the "l3experimental bundle" (The Work in LPPL)
+% This file is part of the "l3kernel bundle" (The Work in LPPL)
% and all files in that bundle must be distributed together.
%
% -----------------------------------------------------------------------
@@ -20,26 +20,8 @@
%
% for those people who are interested.
%
-%<*driver|package>
-% The version of expl3 required is tested as early as possible, as
-% some really old versions do not define \ProvidesExplPackage.
-\RequirePackage{expl3}[2017/05/13]
-%<package>\@ifpackagelater{expl3}{2017/05/13}
-%<package> {}
-%<package> {%
-%<package> \PackageError{l3intarray}{Support package l3kernel too old}
-%<package> {%
-%<package> Please install an up to date version of l3kernel\MessageBreak
-%<package> using your TeX package manager or from CTAN.\MessageBreak
-%<package> \MessageBreak
-%<package> Loading l3intarray will abort!%
-%<package> }%
-%<package> \endinput
-%<package> }
-%</driver|package>
%<*driver>
\documentclass[full]{l3doc}
-\usepackage{amsmath}
\begin{document}
\DocInput{\jobname.dtx}
\end{document}
@@ -60,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
@@ -142,11 +124,6 @@
%<@@=intarray>
% \end{macrocode}
%
-% \begin{macrocode}
-\ProvidesExplPackage{l3intarray}{2017/05/13}{}
- {L3 Experimental low-level arrays of small integers}
-% \end{macrocode}
-%
% \subsection{Allocating arrays}
%
% \begin{variable}{\g_@@_font_int}
@@ -207,7 +184,7 @@
\int_compare:nTF { - \c_max_dim <= \int_abs:n {#3} <= \c_max_dim }
{ \@@_gset_fast:Nnn #1 {#2} {#3} }
{
- \__msg_kernel_error:nnxxxx { intarray } { overflow }
+ \__msg_kernel_error:nnxxxx { kernel } { overflow }
{ \token_to_str:N #1 } {#2} {#3}
{ \int_compare:nNnT {#3} < 0 { - } \__int_value:w \c_max_dim }
\@@_gset_fast:Nnn #1 {#2}
@@ -215,7 +192,7 @@
}
}
{
- \__msg_kernel_error:nnxxx { intarray } { out-of-bounds }
+ \__msg_kernel_error:nnxxx { kernel } { out-of-bounds }
{ \token_to_str:N #1 } {#2} { \@@_count:N #1 }
}
}
@@ -236,7 +213,7 @@
\int_compare:nTF { 1 <= #2 <= \@@_count:N #1 }
{ \@@_item_fast:Nn #1 {#2} }
{
- \__msg_kernel_expandable_error:nnnnn { intarray } { out-of-bounds }
+ \__msg_kernel_expandable_error:nnnnn { kernel } { out-of-bounds }
{ \token_to_str:N #1 } {#2} { \@@_count:N #1 }
0
}
@@ -245,23 +222,6 @@
% \end{macro}
% \end{macro}
%
-% \subsection{Messages}
-%
-% \begin{macrocode}
-\__msg_kernel_new:nnnn { intarray } { overflow }
- { Integers~larger~than~2^{30}-1~cannot~be~stored~in~arrays. }
- {
- An~attempt~was~made~to~store~#3~at~position~#2~in~the~array~'#1'.~
- The~largest~allowed~value~#4~will~be~used~instead.
- }
-\__msg_kernel_new:nnnn { intarray } { out-of-bounds }
- { Access~to~an~entry~beyond~an~array's~bounds. }
- {
- An~attempt~was~made~to~access~or~store~data~at~position~#2~of~the~
- array~'#1',~but~this~array~has~entries~at~positions~from~1~to~#3.
- }
-% \end{macrocode}
-%
% \begin{macrocode}
%</initex|package>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
index 13c088c2785..2b1deb80434 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
@@ -656,7 +656,7 @@
% }
% \end{verbatim}
%
-% \begin{function}[added = 2011-08-23, updated = 2015-11-07]
+% \begin{function}[added = 2011-08-23, updated = 2017-05-27]
% {
% \keys_set_known:nnN, \keys_set_known:nVN,
% \keys_set_known:nvN, \keys_set_known:noN,
@@ -720,7 +720,7 @@
% groups to be made \enquote{active}, or by marking one or more groups to
% be ignored in key setting.
%
-% \begin{function}[added = 2013-07-14, updated = 2015-11-07]
+% \begin{function}[added = 2013-07-14, updated = 2017-05-27]
% {
% \keys_set_filter:nnnN, \keys_set_filter:nnVN,
% \keys_set_filter:nnvN, \keys_set_filter:nnoN,
@@ -742,7 +742,7 @@
% \meta{keyval list} returned at each stage.
% \end{function}
%
-% \begin{function}[added = 2013-07-14, updated = 2015-11-07]
+% \begin{function}[added = 2013-07-14, updated = 2017-05-27]
% {
% \keys_set_groups:nnn, \keys_set_groups:nnV,
% \keys_set_groups:nnv, \keys_set_groups:nno
@@ -2022,6 +2022,7 @@
% \keys_set_known:nn, \keys_set_known:nV,
% \keys_set_known:nv, \keys_set_known:no
% }
+% \begin{macro}[aux]{\@@_keys_set_known:nn}
% Setting known keys simply means setting the appropriate flag, then
% running the standard code. To allow for nested setting, any existing
% value of \cs{l_@@_unused_clist} is saved on the stack and reset
@@ -2041,15 +2042,23 @@
\cs_generate_variant:Nn \@@_set_known:nnnN { o }
\cs_new_protected:Npn \keys_set_known:nn #1#2
{
+ \bool_if:NTF \l_@@_only_known_bool
+ { \keys_set:nn }
+ { \@@_set_known:nn }
+ {#1} {#2}
+ }
+\cs_generate_variant:Nn \keys_set_known:nn { nV , nv , no }
+\cs_new_protected:Npn \@@_set_known:nn #1#2
+ {
\bool_set_true:N \l_@@_only_known_bool
\keys_set:nn {#1} {#2}
\bool_set_false:N \l_@@_only_known_bool
}
-\cs_generate_variant:Nn \keys_set_known:nn { nV , nv , no }
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
%
% \begin{macro}
% {
@@ -2062,14 +2071,20 @@
% \keys_set_filter:nnn, \keys_set_filter:nnV, \keys_set_filter:nnv,
% \keys_set_filter:nno
% }
+% \begin{macro}[aux]{\@@_set_filter:nnn}
% \begin{macro}
% {
% \keys_set_groups:nnn, \keys_set_groups:nnV, \keys_set_groups:nnv,
% \keys_set_groups:nno
% }
+% \begin{macro}[aux]{\@@_set_groups:nnn}
+% \begin{macro}[aux]{\@@_set_selective:nnn}
+% \begin{macro}[aux]{\@@_set_selective:nnnn, \@@_set_selective:onnn}
+% \begin{macro}[aux]{\@@_set_selective:nn}
% The idea of setting keys in a selective manner again uses flags
% wrapped around the basic code. The comments on \cs{keys_set_known:nnN}
-% also apply here.
+% also apply here. We have a bit more shuffling to do to keep everything
+% nestable.
% \begin{macrocode}
\cs_new_protected:Npn \keys_set_filter:nnnN
{ \@@_set_filter:onnnN \l_@@_unused_clist }
@@ -2084,27 +2099,60 @@
\cs_generate_variant:Nn \@@_set_filter:nnnnN { o }
\cs_new_protected:Npn \keys_set_filter:nnn #1#2#3
{
- \bool_set_true:N \l_@@_selective_bool
- \bool_set_true:N \l_@@_filtered_bool
- \seq_set_from_clist:Nn \l_@@_selective_seq {#2}
- \keys_set:nn {#1} {#3}
- \bool_set_false:N \l_@@_selective_bool
+ \bool_if:NTF \l_@@_filtered_bool
+ { \@@_set_selective:nnn }
+ { \@@_set_filter:nnn }
+ {#1} {#2} {#3}
}
\cs_generate_variant:Nn \keys_set_filter:nnn { nnV , nnv , nno }
+\cs_new_protected:Npn \@@_set_filter:nnn #1#2#3
+ {
+ \bool_set_true:N \l_@@_filtered_bool
+ \@@_set_selective:nnn {#1} {#2} {#3}
+ \bool_set_false:N \l_@@_filtered_bool
+ }
\cs_new_protected:Npn \keys_set_groups:nnn #1#2#3
{
- \bool_set_true:N \l_@@_selective_bool
+ \bool_if:NTF \l_@@_filtered_bool
+ { \@@_set_groups:nnn }
+ { \@@_set_selective:nnn }
+ {#1} {#2} {#3}
+ }
+\cs_generate_variant:Nn \keys_set_groups:nnn { nnV , nnv , nno }
+\cs_new_protected:Npn \@@_set_groups:nnn #1#2#3
+ {
\bool_set_false:N \l_@@_filtered_bool
- \seq_set_from_clist:Nn \l_@@_selective_seq {#2}
- \keys_set:nn {#1} {#3}
+ \@@_set_selective:nnn {#1} {#2} {#3}
+ \bool_set_true:N \l_@@_filtered_bool
+ }
+\cs_new_protected:Npn \@@_set_selective:nnn
+ { \@@_set_selective:onnn \l_@@_selective_seq }
+\cs_new_protected:Npn \@@_set_selective:nnnn #1#2#3#4
+ {
+ \seq_set_from_clist:Nn \l_@@_selective_seq {#3}
+ \bool_if:NTF \l_@@_selective_bool
+ { \keys_set:nn }
+ { \@@_set_selective:nn }
+ {#2} {#4}
+ \tl_set:Nn \l_@@_selective_seq {#1}
+ }
+\cs_generate_variant:Nn \@@_set_selective:nnnn { o }
+\cs_new_protected:Npn \@@_set_selective:nn #1#2
+ {
+ \bool_set_true:N \l_@@_selective_bool
+ \keys_set:nn {#1} {#2}
\bool_set_false:N \l_@@_selective_bool
}
-\cs_generate_variant:Nn \keys_set_groups:nnn { nnV , nnv , nno }
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \begin{macro}[int]{\@@_set:n, \@@_set:nn}
% \begin{macro}[aux]{\@@_set_aux:nnn, \@@_set_aux:onn}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
index 9fd49d2acd4..b83cc86cde1 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
@@ -186,7 +186,7 @@
}
}
\clist_map_inline:nn
- { \lua_shipout_x :n , \lua_shipout:n }
+ { \lua_shipout_x:n , \lua_shipout:n }
{
\cs_set_protected:Npn #1 ##1
{
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
index 466da628f8a..8e6a6525406 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
@@ -1902,6 +1902,18 @@
needed~when~defining~conditionals~or~variants,~or~when~building~a~
parameter~text~from~the~number~of~arguments~of~the~function.
}
+\@@_kernel_new:nnnn { kernel } { overflow }
+ { Integers~larger~than~2^{30}-1~cannot~be~stored~in~arrays. }
+ {
+ An~attempt~was~made~to~store~#3~at~position~#2~in~the~array~'#1'.~
+ The~largest~allowed~value~#4~will~be~used~instead.
+ }
+\@@_kernel_new:nnnn { kernel } { out-of-bounds }
+ { Access~to~an~entry~beyond~an~array's~bounds. }
+ {
+ An~attempt~was~made~to~access~or~store~data~at~position~#2~of~the~
+ array~'#1',~but~this~array~has~entries~at~positions~from~1~to~#3.
+ }
\@@_kernel_new:nnnn { kernel } { protected-predicate }
{ Predicate~'#1'~must~be~expandable. }
{
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
index d46b5c9fbf6..805700f73c8 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx b/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx
index b52cec077c2..a8750f614c2 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
@@ -103,11 +103,13 @@
%<l3prg>{l3prg}
%<l3prop>{l3prop}
%<l3quark>{l3quark}
+%<l3regex>{l3regex}
%<l3seq>{l3seq}
%<l3skip>{l3skip}
%<l3sort>{l3sort}
%<l3str>{l3str}
%<l3tl>{l3tl}
+%<l3tl-analysis>{l3tl-analysis}
%<l3token>{l3token}
% \end{macrocode}
%
@@ -127,20 +129,20 @@
\typeout{** }
\typeout{** Its functionality is now only provided as part of the expl3 package.}
\typeout{** }
-%<!l3sort>\typeout{** After showing you an error message you can hit <return> we will continue}
-%<!l3sort>\typeout{** for now by loading expl3 for you. However, the old packages will be}
-%<!l3sort>\typeout{** removed entirely at the end of 2017.}
-%<l3sort>\typeout{** The old packages will be removed entirely at the end of 2018.}
+%<!l3regex|l3sort|l3tl-analysis>\typeout{** After showing you an error message you can hit <return> we will continue}
+%<!l3regex|l3sort|l3tl-analysis>\typeout{** for now by loading expl3 for you. However, the old packages will be}
+%<!l3regex|l3sort|l3tl-analysis>\typeout{** removed entirely at the end of 2017.}
+%<l3regex|l3sort|l3tl-analysis>\typeout{** The old packages will be removed entirely at the end of 2018.}
\typeout{** }
\typeout{** Therefore, please replace '\string\usepackage{\old@liii@module@name}'}
\typeout{** with '\string\usepackage{expl3}' in your documents as soon as possible.}
\typeout{** }
\typeout{*******************************************************************}
-%<!l3sort>\PackageError
-%<l3sort>\PackageWarning
+%<!l3regex|l3sort|l3tl-analysis>\PackageError
+%<l3regex|l3sort|l3tl-analysis>\PackageWarning
\old@liii@module@name{This package is obsolete ---
use 'expl3' instead}
-%<!l3sort> \@ehc
+%<!l3regex|l3sort|l3tl-analysis> \@ehc
% \end{macrocode}
% Finally load \texttt{expl3} so that the user can continue for now.
% \begin{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
index 055fab38e6b..b74c712d0a4 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
index b30ad2e1278..5545dbec4b0 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
index 6cfbf18f043..86be080ee8a 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
index ddfbc79de23..fd57d6736cb 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
@@ -9,7 +9,7 @@
%
% http://www.latex-project.org/lppl.txt
%
-% This file is part of the "l3experimental bundle" (The Work in LPPL)
+% This file is part of the "l3kernel bundle" (The Work in LPPL)
% and all files in that bundle must be distributed together.
%
% -----------------------------------------------------------------------
@@ -20,26 +20,8 @@
%
% for those people who are interested.
%
-%<*driver|package>
-% The version of expl3 required is tested as early as possible, as
-% some really old versions do not define \ProvidesExplPackage.
-\RequirePackage{expl3}[2017/05/13]
-%<package>\@ifpackagelater{expl3}{2017/05/13}
-%<package> {}
-%<package> {%
-%<package> \PackageError{l3regex}{Support package l3kernel too old}
-%<package> {%
-%<package> Please install an up to date version of l3kernel\MessageBreak
-%<package> using your TeX package manager or from CTAN.\MessageBreak
-%<package> \MessageBreak
-%<package> Loading l3regex will abort!%
-%<package> }%
-%<package> \endinput
-%<package> }
-%</driver|package>
%<*driver>
\documentclass[full]{l3doc}
-\usepackage{amsmath}
\begin{document}
\DocInput{\jobname.dtx}
\end{document}
@@ -59,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
@@ -68,7 +50,7 @@
% {\begin{itemize}\def\\{\char`\\}\def\makelabel##1{\hss\llap{\ttfamily##1}}}
% {\end{itemize}}
%
-% \section{\pkg{l3regex} documentation}
+% \section{Regular expressions}
%
% The \pkg{l3regex} package provides regular expression testing,
% extraction of submatches, splitting, and replacement, all acting
@@ -427,7 +409,7 @@
% regular expression argument either as an explicit string
% or as a compiled regular expression.
%
-% \begin{function}{\regex_new:N}
+% \begin{function}[added = 2017-05-26]{\regex_new:N}
% \begin{syntax}
% \cs{regex_new:N} \meta{regex~var}
% \end{syntax}
@@ -436,7 +418,8 @@
% \meta{regex~var} will initially be such that it never matches.
% \end{function}
%
-% \begin{function}{\regex_set:Nn, \regex_gset:Nn, \regex_const:Nn}
+% \begin{function}[added = 2017-05-26]
+% {\regex_set:Nn, \regex_gset:Nn, \regex_const:Nn}
% \begin{syntax}
% \cs{regex_set:Nn} \meta{regex~var} \Arg{regex}
% \end{syntax}
@@ -452,7 +435,7 @@
% which will never change.
% \end{function}
%
-% \begin{function}{\regex_show:n, \regex_show:N}
+% \begin{function}[added = 2017-05-26]{\regex_show:n, \regex_show:N}
% \begin{syntax}
% \cs{regex_show:n} \Arg{regex}
% \end{syntax}
@@ -476,7 +459,7 @@
% while the later require a compiled expression as generated by
% \cs{regex_(g)set:Nn}.
%
-% \begin{function}[TF]{\regex_match:nn, \regex_match:Nn}
+% \begin{function}[TF, added = 2017-05-26]{\regex_match:nn, \regex_match:Nn}
% \begin{syntax}
% \cs{regex_match:nnTF} \Arg{regex} \Arg{token list} \Arg{true code} \Arg{false code}
% \end{syntax}
@@ -489,7 +472,7 @@
% leaves \texttt{TRUE} then \texttt{FALSE} in the input stream.
% \end{function}
%
-% \begin{function}{\regex_count:nnN, \regex_count:NnN}
+% \begin{function}[added = 2017-05-26]{\regex_count:nnN, \regex_count:NnN}
% \begin{syntax}
% \cs{regex_count:nnN} \Arg{regex} \Arg{token list} \meta{int var}
% \end{syntax}
@@ -513,7 +496,8 @@
%
% \subsection{Submatch extraction}
%
-% \begin{function}[TF]{\regex_extract_once:nnN, \regex_extract_once:NnN}
+% \begin{function}[TF, added = 2017-05-26]
+% {\regex_extract_once:nnN, \regex_extract_once:NnN}
% \begin{syntax}
% \cs{regex_extract_once:nnN} \Arg{regex} \Arg{token list} \meta{seq~var}
% \cs{regex_extract_once:nnNTF} \Arg{regex} \Arg{token list} \meta{seq~var} \Arg{true code} \Arg{false code}
@@ -540,7 +524,8 @@
% branch is left in the input stream.
% \end{function}
%
-% \begin{function}[TF]{\regex_extract_all:nnN, \regex_extract_all:NnN}
+% \begin{function}[TF, added = 2017-05-26]
+% {\regex_extract_all:nnN, \regex_extract_all:NnN}
% \begin{syntax}
% \cs{regex_extract_all:nnN} \Arg{regex} \Arg{token list} \meta{seq~var}
% \cs{regex_extract_all:nnNTF} \Arg{regex} \Arg{token list} \meta{seq~var} \Arg{true code} \Arg{false code}
@@ -563,7 +548,7 @@
% and the \texttt{true} branch is left in the input stream.
% \end{function}
%
-% \begin{function}[TF]{\regex_split:nnN, \regex_split:NnN}
+% \begin{function}[TF, added = 2017-05-26]{\regex_split:nnN, \regex_split:NnN}
% \begin{syntax}
% \cs{regex_split:nnN} \Arg{regular expression} \Arg{token list} \meta{seq~var}
% \cs{regex_split:nnNTF} \Arg{regular expression} \Arg{token list} \meta{seq~var} \Arg{true code} \Arg{false code}
@@ -591,7 +576,8 @@
%
% \subsection{Replacement}
%
-% \begin{function}[TF]{\regex_replace_once:nnN,\regex_replace_once:NnN}
+% \begin{function}[TF, added = 2017-05-26]
+% {\regex_replace_once:nnN,\regex_replace_once:NnN}
% \begin{syntax}
% \cs{regex_replace_once:nnN} \Arg{regular expression} \Arg{replacement} \meta{tl~var}
% \cs{regex_replace_once:nnNTF} \Arg{regular expression} \Arg{replacement} \meta{tl~var} \Arg{true code} \Arg{false code}
@@ -603,7 +589,8 @@
% first capturing group, |\2| of the second, \emph{etc.}
% \end{function}
%
-% \begin{function}[TF]{\regex_replace_all:nnN, \regex_replace_all:NnN}
+% \begin{function}[TF, added = 2017-05-26]
+% {\regex_replace_all:nnN, \regex_replace_all:NnN}
% \begin{syntax}
% \cs{regex_replace_all:nnN} \Arg{regular expression} \Arg{replacement} \meta{tl~var}
% \cs{regex_replace_all:nnNTF} \Arg{regular expression} \Arg{replacement} \meta{tl~var} \Arg{true code} \Arg{false code}
@@ -742,14 +729,6 @@
%<@@=regex>
% \end{macrocode}
%
-% \begin{macrocode}
-%<*package>
-\ProvidesExplPackage{l3regex}{2017/05/13}{}
- {L3 Experimental regular expressions}
-\RequirePackage{l3tl-build, l3tl-analysis, l3intarray}
-%</package>
-% \end{macrocode}
-%
% \subsection{Plan of attack}
%
% Most regex engines use backtracking. This allows to provide very
@@ -850,13 +829,6 @@
%
% \subsection{Helpers}
%
-% \begin{macro}[aux]{\tl_to_str:V}
-% A variant we need for the |\u| escape in the replacement text.
-% \begin{macrocode}
-\cs_generate_variant:Nn \tl_to_str:n { V }
-% \end{macrocode}
-% \end{macro}
-%
% \begin{macro}[int]{\@@_standard_escapechar:}
% Make the \tn{escapechar} into the standard backslash.
% \begin{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
index 3681b4b4104..3af96d7ad28 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
index 0fc90333ab8..e43dd6320b6 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
index 9a7e9709631..009d228859e 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
index 90c2f79fc8b..3739bc8a766 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
index ba1d67bd495..c21509d6f1d 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
index 5dd95a5e208..d427b756056 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-analysis.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: l3tl-analysis.dtx Copyright (C) 2011-2012,2015-2017 The LaTeX3 Project
+%% File: l3tl-analysis.dtx Copyright (C) 2011-2012,2015-2017 The LaTeX3 Project%
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -9,7 +9,7 @@
%
% http://www.latex-project.org/lppl.txt
%
-% This file is part of the "l3experimental bundle" (The Work in LPPL)
+% This file is part of the "l3kernel bundle" (The Work in LPPL)
% and all files in that bundle must be distributed together.
%
% -----------------------------------------------------------------------
@@ -20,12 +20,8 @@
%
% for those people who are interested.
%
-%<*driver|package>
-\RequirePackage{expl3}
-%</driver|package>
%<*driver>
\documentclass[full]{l3doc}
-\usepackage{amsmath}
\begin{document}
\DocInput{\jobname.dtx}
\end{document}
@@ -46,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
@@ -59,7 +55,7 @@
% debugging function, very similar to the \cs{ShowTokens} macro from the
% \pkg{ted} package.
%
-% \begin{function}{\tl_show_analysis:N, \tl_show_analysis:n}
+% \begin{function}[added = 2017-05-26]{\tl_show_analysis:N, \tl_show_analysis:n}
% \begin{syntax}
% \cs{tl_show_analysis:n} \Arg{token list}
% \end{syntax}
@@ -69,6 +65,12 @@
% characters, and the value of registers.
% \end{function}
%
+% \end{documentation}
+%
+% \begin{implementation}
+%
+% \section{\pkg{l3tl-analysis} implementation}
+%
% \subsection{Internal functions}
%
% \begin{variable}{\s__tl}
@@ -156,12 +158,6 @@
% ^^A todo: ask LuaTeX list for an \ifx\undefined <active char>
% ^^A which does not add the <active char> in memory.
%
-% \end{documentation}
-%
-% \begin{implementation}
-%
-% \section{\pkg{l3tl-analysis} implementation}
-%
% \begin{macrocode}
%<*initex|package>
% \end{macrocode}
@@ -170,11 +166,6 @@
%<@@=tl_analysis>
% \end{macrocode}
%
-% \begin{macrocode}
-\ProvidesExplPackage{l3tl-analysis}{2017/05/13}{}
- {L3 Experimental token list analysis}
-% \end{macrocode}
-%
% \subsection{Variables and helper functions}
%
% \begin{variable}{\s__tl}
@@ -410,9 +401,7 @@
\tex_lowercase:D { \tex_let:D ^^@ } \tex_undefined:D
\@@_disable_loop:N
}
- \bool_lazy_or:nnT
- { \sys_if_engine_ptex_p: }
- { \sys_if_engine_uptex_p: }
+ \cs_if_exist:NT \ptex_kanjiskip:D
{
\cs_gset_protected:Npn \@@_disable_loop:N #1
{
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-build.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-build.dtx
index bbdb3958613..268c8616a55 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-build.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3tl-build.dtx
@@ -9,7 +9,7 @@
%
% http://www.latex-project.org/lppl.txt
%
-% This file is part of the "l3experimental bundle" (The Work in LPPL)
+% This file is part of the "l3kernel bundle" (The Work in LPPL)
% and all files in that bundle must be distributed together.
%
% -----------------------------------------------------------------------
@@ -20,26 +20,8 @@
%
% for those people who are interested.
%
-%<*driver|package>
-% The version of expl3 required is tested as early as possible, as
-% some really old versions do not define \ProvidesExplPackage.
-\RequirePackage{expl3}[2017/05/13]
-%<package>\@ifpackagelater{expl3}{2017/05/13}
-%<package> {}
-%<package> {%
-%<package> \PackageError{l3tl-build}{Support package l3kernel too old}
-%<package> {%
-%<package> Please install an up to date version of l3kernel\MessageBreak
-%<package> using your TeX package manager or from CTAN.\MessageBreak
-%<package> \MessageBreak
-%<package> Loading l3tl-build will abort!%
-%<package> }%
-%<package> \endinput
-%<package> }
-%</driver|package>
%<*driver>
\documentclass[full]{l3doc}
-\usepackage{amsmath}
\begin{document}
\DocInput{\jobname.dtx}
\end{document}
@@ -60,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
@@ -149,11 +131,6 @@
%<@@=tl_build>
% \end{macrocode}
%
-% \begin{macrocode}
-\ProvidesExplPackage{l3tl-build}{2017/05/13}{}
- {L3 Experimental token list construction}
-% \end{macrocode}
-%
% \subsection{Variables and helper functions}
%
% \begin{variable}{\l_@@_start_index_int, \l_@@_index_int}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
index d111582686f..e0124c53a60 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
@@ -605,7 +605,7 @@
%
% \section{Using token lists}
%
-% \begin{function}[EXP]{\tl_to_str:n}
+% \begin{function}[EXP]{\tl_to_str:n, \tl_to_str:V}
% \begin{syntax}
% \cs{tl_to_str:n} \Arg{token list}
% \end{syntax}
@@ -2267,8 +2267,11 @@
%
% \subsection{Using token lists}
%
-% \begin{macro}{\tl_to_str:n}
+% \begin{macro}{\tl_to_str:n, \tl_to_str:V}
% Another name for a primitive: defined in \pkg{l3basics}.
+% \begin{macrocode}
+\cs_generate_variant:Nn \tl_to_str:n { V }
+% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\tl_to_str:N, \tl_to_str:c}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
index 9b74a8f8346..3d9f02a2b1c 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 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx
index 18465e22d54..fcc6c4e6dfd 100644
--- a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx
+++ b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx
@@ -23,8 +23,8 @@
%<*driver|package>
% The version of expl3 required is tested as early as possible, as
% some really old versions do not define \ProvidesExplPackage.
-\RequirePackage{expl3}[2017/05/13]
-%<package>\@ifpackagelater{expl3}{2017/05/13}
+\RequirePackage{expl3}[2017/05/29]
+%<package>\@ifpackagelater{expl3}{2017/05/29}
%<package> {}
%<package> {%
%<package> \PackageError{l3keys2e}{Support package l3kernel too old}
@@ -60,7 +60,7 @@
% }^^A
% }
%
-% \date{Released 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
@@ -131,7 +131,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3keys2e}{2017/05/13}{}
+\ProvidesExplPackage{l3keys2e}{2017/05/29}{}
{LaTeX2e option processing using LaTeX3 keys}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx b/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx
index 0196c9cd775..dd3477874f9 100644
--- a/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx
+++ b/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx
@@ -23,8 +23,8 @@
%<*driver|package>
% The version of expl3 required is tested as early as possible, as
% some really old versions do not define \ProvidesExplPackage.
-\RequirePackage{expl3}[2017/05/13]
-%<package>\@ifpackagelater{expl3}{2017/05/13}
+\RequirePackage{expl3}[2017/05/29]
+%<package>\@ifpackagelater{expl3}{2017/05/29}
%<package> {}
%<package> {%
%<package> \PackageError{xfpu}{Support package l3kernel too old}
@@ -62,7 +62,7 @@
% }^^A
% }
%
-% \date{Released 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
@@ -143,7 +143,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xfp}{2017/05/13}{}
+\ProvidesExplPackage{xfp}{2017/05/29}{}
{L3 Floating point unit}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx b/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx
index 2556fa267bf..cfdfc5d5e9f 100644
--- a/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx
+++ b/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx
@@ -24,8 +24,8 @@
%<*driver|package>
% The version of expl3 required is tested as early as possible, as
% some really old versions do not define \ProvidesExplPackage.
-\RequirePackage{expl3}[2017/05/13]
-%<package>\@ifpackagelater{expl3}{2017/05/13}
+\RequirePackage{expl3}[2017/05/29]
+%<package>\@ifpackagelater{expl3}{2017/05/29}
%<package> {}
%<package> {%
%<package> \PackageError{xfrac}{Support package l3kernel too old}
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
@@ -533,7 +533,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xfrac}{2017/05/13}{}
+\ProvidesExplPackage{xfrac}{2017/05/29}{}
{L3 Experimental split-level fractions}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx
index 95e08f91fdb..98e99bfbd88 100644
--- a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx
+++ b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx
@@ -27,8 +27,8 @@
%<*driver|package>
% The version of expl3 required is tested as early as possible, as
% some really old versions do not define \ProvidesExplPackage.
-\RequirePackage{expl3}[2017/05/13]
-%<package>\@ifpackagelater{expl3}{2017/05/13}
+\RequirePackage{expl3}[2017/05/29]
+%<package>\@ifpackagelater{expl3}{2017/05/29}
%<package> {}
%<package> {%
%<package> \PackageError{xparse}{Support package l3kernel too old}
@@ -67,7 +67,7 @@
% }^^A
% }
%
-% \date{Released 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
@@ -776,7 +776,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xparse}{2017/05/13}{}
+\ProvidesExplPackage{xparse}{2017/05/29}{}
{L3 Experimental document command parser}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx
index 069612e4d0d..3ceba577192 100644
--- a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx
+++ b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx
@@ -27,8 +27,8 @@
%<*driver|package>
% The version of expl3 required is tested as early as possible, as
% some really old versions do not define \ProvidesExplPackage.
-\RequirePackage{expl3}[2017/05/13]
-%<package>\@ifpackagelater{expl3}{2017/05/13}
+\RequirePackage{expl3}[2017/05/29]
+%<package>\@ifpackagelater{expl3}{2017/05/29}
%<package> {}
%<package> {%
%<package> \PackageError{xtemplate}{Support package l3kernel too old}
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2017/05/13}
+% \date{Released 2017/05/29}
%
% \maketitle
%
@@ -682,7 +682,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xtemplate}{2017/05/13}{}
+\ProvidesExplPackage{xtemplate}{2017/05/29}{}
{L3 Experimental prototype document functions}
% \end{macrocode}
%