diff options
author | Karl Berry <karl@freefriends.org> | 2017-06-05 23:17:08 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2017-06-05 23:17:08 +0000 |
commit | 683004f8a1d94fc432fd8104903a431e27bfba93 (patch) | |
tree | 2450b41f4c918810556cbaec853ec48ddc2b949a /Master/texmf-dist/source | |
parent | c684ba451bf548bdb24c40ed54caa9f11ac21422 (diff) |
latex3 (30may17)
git-svn-id: svn://tug.org/texlive/trunk@44483 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source')
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} % |