diff options
author | Karl Berry <karl@freefriends.org> | 2019-10-11 21:33:04 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2019-10-11 21:33:04 +0000 |
commit | 83b507f56f72909f7552936d229f1130c8fb05c5 (patch) | |
tree | 360f905351d9db1e1be9168840b76d7ba8c1e4ca | |
parent | aa2dbb8897371a36028d3ce667140365345dfbfe (diff) |
l3 (11oct19)
git-svn-id: svn://tug.org/texlive/trunk@52343 c570f23f-e606-0410-a88d-b1316a301751
88 files changed, 1083 insertions, 617 deletions
diff --git a/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md index 77ad3215ead..36f2fe987e9 100644 --- a/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md +++ b/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md @@ -6,6 +6,12 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2019-10-11] + +### Changed + +- Improved functionality in generic mode + ## [2019-09-05] ### Added @@ -35,7 +41,8 @@ this project uses date-based 'snapshot' version identifiers. - Include `l3backend` in file names - Moved backend code to internal for each 'parent' module -[Unreleased]: https://github.com/latex3/latex3/compare/2019-09-05...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2019-10-11...HEAD +[2019-10-11]: https://github.com/latex3/latex3/compare/2019-09-05...2019-10-11 [2019-09-05]: https://github.com/latex3/latex3/compare/2019-08-25...2019-09-05 [2019-08-25]: https://github.com/latex3/latex3/compare/2019-07-01...2019-08-25 [2019-07-01]: https://github.com/latex3/latex3/compare/2019-05-28...2019-07-01 diff --git a/Master/texmf-dist/doc/latex/l3backend/README.md b/Master/texmf-dist/doc/latex/l3backend/README.md index d9d9d4b8d28..fb3c01febda 100644 --- a/Master/texmf-dist/doc/latex/l3backend/README.md +++ b/Master/texmf-dist/doc/latex/l3backend/README.md @@ -1,7 +1,7 @@ LaTeX3 Backend Drivers ====================== -Release 2019-09-05 +Release 2019-10-11 This package forms parts of `expl3`, and contains the code used to interface with backends (drivers) across the `expl3` codebase. The functions here are diff --git a/Master/texmf-dist/doc/latex/l3backend/l3backend-code.pdf b/Master/texmf-dist/doc/latex/l3backend/l3backend-code.pdf Binary files differindex be9d752b514..218d64d794a 100644 --- a/Master/texmf-dist/doc/latex/l3backend/l3backend-code.pdf +++ b/Master/texmf-dist/doc/latex/l3backend/l3backend-code.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md index ba11c32453e..0c6dd7e225f 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md +++ b/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md @@ -7,6 +7,23 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2019-10-11] + +### Changed + +- Standard backend for (u)pTeX is now `dvips` +- Minimum LuaTeX version now v0.95 +- Moved `\debug_on:`, `\debug_off:`, `\debug_suspend:` and `\debug_resume:` + to stable +- Accept 'traditional' class options for backend (`dvipdfmx`, `dvips`, etc.) +- Performance enhancements when loading `expl3` + +### Fixed + +- Handling of files with no extension +- Behaviour of Lua function `l3kernel.charcat` in some circumstances +- Loading under ConTeXt + ## [2019-10-02] ### Fixed @@ -539,7 +556,8 @@ this project uses date-based 'snapshot' version identifiers. - Step functions have been added for dim variables, e.g. `\dim_step_inline:nnnn` -[Unreleased]: https://github.com/latex3/latex3/compare/2019-10-02...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2019-10-11...HEAD +[2019-10-11]: https://github.com/latex3/latex3/compare/2019-10-02...2019-10-11 [2019-10-02]: https://github.com/latex3/latex3/compare/2019-09-30...2019-10-02 [2019-09-30]: https://github.com/latex3/latex3/compare/2019-09-28...2019-09-30 [2019-09-28]: https://github.com/latex3/latex3/compare/2019-09-19...2019-09-28 diff --git a/Master/texmf-dist/doc/latex/l3kernel/README.md b/Master/texmf-dist/doc/latex/l3kernel/README.md index 1d0566362a2..fe2dbe9cd2d 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/README.md +++ b/Master/texmf-dist/doc/latex/l3kernel/README.md @@ -1,7 +1,7 @@ LaTeX3 Programming Conventions ============================== -Release 2019-10-02 +Release 2019-10-11 Overview -------- diff --git a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf Binary files differindex f3575a7c4e8..50ee043f394 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf Binary files differindex b76f488d918..ae12881d895 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.tex b/Master/texmf-dist/doc/latex/l3kernel/interface3.tex index bfbfc020479..54d0a7c5381 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/interface3.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.tex @@ -54,7 +54,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2019-10-02} +\date{Released 2019-10-11} \pagenumbering{roman} \maketitle diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf Binary files differindex 9d18617c801..30188d59d02 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf Binary files differindex 3a7065aa910..29ed4bff7cd 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf Binary files differindex f7c3292758b..2218680d193 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex index 0c30614d765..c41498211ea 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2019-10-02} +\date{Released 2019-10-11} \begin{document} diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf Binary files differindex 3f02f94e44d..b52aa8507fa 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex index f3fa98dbcd9..7a83497d7d6 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2019-10-02} +\date{Released 2019-10-11} \newcommand{\TF}{\textit{(TF)}} diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf Binary files differindex e816fc719d4..e5f77693c55 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex index 4a2fd2aeb11..a051a440090 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2019-10-02} +\date{Released 2019-10-11} \newcommand{\TF}{\textit{(TF)}} diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf Binary files differindex 9e90af917aa..3315fd861c6 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.tex b/Master/texmf-dist/doc/latex/l3kernel/source3.tex index f73c5b17987..5f2f2e44ce1 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/source3.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/source3.tex @@ -53,7 +53,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2019-10-02} +\date{Released 2019-10-11} \pagenumbering{roman} \maketitle diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx index b80972ffc58..3bb240f1e6d 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-09-05} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx index 630bc99140b..651537398dd 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-09-05} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx index e11e68a5d28..4bf4b1a0d94 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-09-05} +% \date{Released 2019-10-11} % % \maketitle % @@ -84,7 +84,7 @@ \cs_new_protected:Npn \@@_backend_pickup:N #1 { } \AtBeginDocument { - \@ifpackageloaded { color } + \cs_if_exist:cT { ver@color.sty } { \cs_set_protected:Npn \@@_backend_pickup:N #1 { @@ -104,7 +104,6 @@ \cs_new_protected:Npn \@@_backend_pickup:w #1 ~ #2 \q_stop #3 { \tl_set:Nn #3 { #1 ~ #2 } } } - { } } %</package> % \end{macrocode} @@ -176,13 +175,13 @@ % we store our color data in \texttt{dvips} format. % The \tn{current@color} needs to be \texttt{x}-expanded before % \cs{@@_backend_pickup:w} breaks it apart, because for instance -% \pkg{xcolor} sets it to be instructions to generate a colour +% \pkg{xcolor} sets it to be instructions to generate a color % \begin{macrocode} %<*package> \cs_new_protected:Npn \@@_backend_pickup:N #1 { } \AtBeginDocument { - \@ifpackageloaded { color } + \cs_if_exist:cT { ver@color.sty } { \cs_set_protected:Npn \@@_backend_pickup:N #1 { @@ -213,7 +212,6 @@ } } } - { } } %</package> % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx index 28e7f90d1c7..fcbf889d5f6 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-09-05} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx index 4993de4e56e..5ed22d54fa0 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-09-05} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx index 1f8f3591fbb..832b835c107 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-09-05} +% \date{Released 2019-10-11} % % \maketitle % @@ -71,7 +71,7 @@ % A very small number of items that belong at the backend level but which % are common to all backends. % -% \begin{variable}{\l_@@_internal_boxf} +% \begin{variable}{\l_@@_internal_box} % \begin{macrocode} \box_new:N \l_@@_internal_box % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx index 7dfc70847b9..dbbf69a773f 100644 --- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx @@ -22,9 +22,9 @@ % % for those people who are interested. % -%<*driver|generic|package> -\def\ExplFileDate{2019-10-02}% -%</driver|generic|package> +%<*driver|generic|package|2ekernel> +%</driver|generic|package|2ekernel> +\def\ExplFileDate{2019-10-11}% %<*driver> \documentclass[full]{l3doc} \usepackage{graphicx} @@ -51,7 +51,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % @@ -1007,7 +1007,7 @@ % \begin{itemize} % \item \pdfTeX{} v1.40 or later. % \item \XeTeX{} v0.99992 or later. -% \item \LuaTeX{} v0.76 or later. +% \item \LuaTeX{} v0.95 or later. % \item e-(u)\pTeX{} mid-2012 or later. % \end{itemize} % @@ -1156,19 +1156,31 @@ %</!loader> % \end{macrocode} % -% \subsection{\LaTeXe{} loader} +% \subsection{\LaTeXe{} loaders} +% +% Loading with \LaTeXe{} may be as part of the format (pre-loading) +% or as a package. We have to allow for both possible paths, and of +% course the package being loaded on to of the pre-load. That means +% the the code here must be safe against re-loading. % % \begin{macrocode} -%<*package&loader> +%<*package&loader|2ekernel> % \end{macrocode} % -% Identify the package. +% Identify the package or add to the format message. % \begin{macrocode} +%<*2ekernel> +\everyjob\expandafter{\the\everyjob + \message{^^J\ExplFileDate\space L3 programming layer}% +} +%</2ekernel> +%<*!2ekernel> \ProvidesPackage{expl3} [% \ExplFileDate\space L3 programming layer (loader) ]% +%</!2ekernel> % \end{macrocode} % % \begin{macro}{\ProvidesExplPackage, \ProvidesExplClass, \ProvidesExplFile} @@ -1194,8 +1206,16 @@ % \end{macro} % % Load the business end: this leaves \cs{expl3} syntax on. +% The test ensures we only load once without needing to know if +% there was a preloading step. % \begin{macrocode} -\input{expl3-code.tex}% +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname tex\string _let:D\endcsname\relax + \expandafter\@firstofone +\else + \expandafter\@gobble +\fi + {\input{expl3-code.tex}}% % \end{macrocode} % % A check that the bootstrap code did not abort loading: if it did, @@ -1207,34 +1227,55 @@ \fi % \end{macrocode} % +% If \pkg{expl3} was pre-loaded, we now have to deal with the fact that +% the syntax will not be activated for the package mode version: +% simply turn it on. We use \tn{@pushfilenameaux} as a marker: it's defined +% a little later. +% \begin{macrocode} +%<*!2ekernel> +\ifdefined\@pushfilenameaux + \ExplSyntaxOn +\fi +%</!2ekernel> +% \end{macrocode} +% % \begin{macrocode} %<@@=expl> % \end{macrocode} % % \begin{variable}{\c_@@_def_ext_tl} -% Needed by \LaTeXe{}. +% Needed by \LaTeXe{}, and avoiding a re-load issue. % \begin{macrocode} -\tl_const:Nn \c_@@_def_ext_tl { def } +\cs_if_exist:NF \c_@@_def_ext_tl + { \tl_const:Nn \c_@@_def_ext_tl { def } } % \end{macrocode} % \end{variable} % -% \begin{macro}{\__kernel_sys_configuration_load:n} -% For \LaTeXe{}, option loading uses the built-in functionality: as this -% may be a reload we have to force the issue. +% \begin{macro} +% {\__kernel_sys_configuration_load:n,\__kernel_sys_configuration_load_std:n} +% To load configurations, we have the following cases +% \begin{itemize} +% \item \pkg{expl3} is pre-loaded: by the time any configuration loads, +% we have the full file loading stack, and only need the standard +% version of the code here. +% \item The package is loaded with pre-loading: we again use the standard +% version, but we don't test just yet. +% \item The package is used without pre-loaded code: we need to manually +% manage \pkg{expl3} syntax. +% \end{itemize} % \begin{macrocode} -\cs_new_protected:Npn \__kernel_sys_configuration_load:n #1 +\cs_gset_protected:Npn \__kernel_sys_configuration_load:n #1 +%<*!2ekernel> + { + \ExplSyntaxOff + \cs_undefine:c { ver@ #1 .def } + \@onefilewithoptions {#1} [ ] [ ] + \c_@@_def_ext_tl + \ExplSyntaxOn + } +\cs_gset_protected:Npn \__kernel_sys_configuration_load_std:n #1 +%</!2ekernel> { - \group_begin: - \cs_set_protected:Npn \ProvidesExplFile - { - \char_set_catcode_space:n { `\ } - \ProvidesExplFileAux - } - \cs_set_protected:Npn \ProvidesExplFileAux ##1##2##3##4 - { - \group_end: - \ProvidesFile {##1} [ ##2~v##3~##4 ] - } \cs_undefine:c { ver@ #1 .def } \@onefilewithoptions {#1} [ ] [ ] \c_@@_def_ext_tl @@ -1244,10 +1285,12 @@ % % \begin{variable}{\l_@@_options_clist} % \begin{macrocode} +%<*!2ekernel> \clist_new:N \l_@@_options_clist \DeclareOption* { \clist_put_right:NV \l_@@_options_clist \CurrentOption } \ProcessOptions \relax +%</!2ekernel> % \end{macrocode} % \end{variable} % @@ -1279,10 +1322,46 @@ } % \end{macrocode} % +% A backend has to be in place by the start of the document. % \begin{macrocode} +%<*2ekernel> +\AtBeginDocument + { + \str_if_exist:NF \c_sys_backend_str + { \sys_load_backend:n { } } + } +%</2ekernel> +%<*!2ekernel> \keys_set:nV { sys } \l_@@_options_clist \str_if_exist:NF \c_sys_backend_str { \sys_load_backend:n { } } +%</!2ekernel> +% \end{macrocode} +% +% A test for pre-loading: does \tn{@pushfilenameaux} already exist. +% The alrady-loaded mechanism will handle everything now. +% \begin{macrocode} +%<*!2ekernel> +\cs_if_exist:NT \@pushfilenameaux + { + \cs_gset_eq:NN \__kernel_sys_configuration_load:n + \__kernel_sys_configuration_load_std:n + \endinput + } +%</!2ekernel> +% \end{macrocode} +% +% Load the dynamic part of the code, either now or during the next run. +% \begin{macrocode} +\cs_if_free:cTF { ver@expl3.sty } + { + \tex_everyjob:D \exp_after:wN + { + \tex_the:D \tex_everyjob:D + \sys_everyjob: + } + } + { \sys_everyjob: } % \end{macrocode} % % \begin{macro}{\@pushfilename, \@popfilename} @@ -1351,8 +1430,23 @@ % \end{macrocode} % \end{variable} % +% Tidy up configuration loading, as promised. +% \begin{macrocode} +%<*!2ekernel> +\cs_gset_eq:NN \__kernel_sys_configuration_load:n + \__kernel_sys_configuration_load_std:n +%</!2ekernel> +% \end{macrocode} +% +% For pre-loading, we have to manually disable the syntax. +% \begin{macrocode} +%<*2ekernel> +\ExplSyntaxOff +%</2ekernel> +% \end{macrocode} +% % \begin{macrocode} -%</package&loader> +%</package&loader|2ekernel> % \end{macrocode} % % \subsection{Generic loader} @@ -1424,12 +1518,12 @@ % \begin{macro}{\AtBeginDocument} % \begin{macro}[int]{\expl@AtBeginDocument} % There are a few uses of \cs{AtBeginDocument} in the package code: the -% easiest way around that is to simply do nothing for these. As +% easiest way around that is to simply do the code \enquote{now}. As % bundles such as \pkg{miniltx} may have defined \cs{AtBeginDocument} % any existing definition is saved for restoration after the payload. % \begin{macrocode} \let\expl@AtBeginDocument\AtBeginDocument -\def\AtBeginDocument#1{}% +\def\AtBeginDocument#1{#1}% \expandafter\def\expandafter\l@expl@tidy@tl\expandafter {% \l@expl@tidy@tl @@ -1475,8 +1569,9 @@ % \end{macrocode} % \end{macro} % -% Load the standard back-end. +% Load the dynamic code and standard back-end. % \begin{macrocode} +\sys_everyjob: \sys_load_backend:n { } % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3.ins b/Master/texmf-dist/source/latex/l3kernel/l3.ins index 343d8d7f186..d9c7f2e6cf2 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3.ins +++ b/Master/texmf-dist/source/latex/l3kernel/l3.ins @@ -111,6 +111,7 @@ and all files in that bundle must be distributed together. } \generate{\file{expl3.sty} {\from{expl3.dtx} {package,loader}}} +\generate{\file{expl3.ltx} {\from{expl3.dtx} {2ekernel,loader}}} \generate{\file{expl3-generic.tex}{\from{expl3.dtx} {generic,loader}}} \generate{\file{l3doc.cls} {\from{l3doc.dtx} {class}}} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx index 7288e1b72a1..ce75d1f4480 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx index a6b92aff81e..bfe28e37887 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % @@ -1293,6 +1293,45 @@ % \end{texnote} % \end{function} % +% \subsection{Debugging support} +% +% \begin{function}[added = 2017-07-16, updated = 2017-08-02]{\debug_on:n, \debug_off:n} +% \begin{syntax} +% \cs{debug_on:n} |{| \meta{comma-separated list} |}| +% \cs{debug_off:n} |{| \meta{comma-separated list} |}| +% \end{syntax} +% Turn on and off within a group various debugging code, some of which +% is also available as \pkg{expl3} load-time options. The items that +% can be used in the \meta{list} are +% \begin{itemize} +% \item \texttt{check-declarations} that checks all \pkg{expl3} +% variables used were previously declared and that local/global +% variables (based on their name or on their first assignment) are +% only locally/globally assigned; +% \item \texttt{check-expressions} that checks integer, dimension, +% skip, and muskip expressions are not terminated prematurely; +% \item \texttt{deprecation} that makes soon-to-be-deprecated commands produce errors; +% \item \texttt{log-functions} that logs function definitions; +% \item \texttt{all} that does all of the above. +% \end{itemize} +% Providing these as switches rather than options allows testing code +% even if it relies on other packages: load all other packages, call +% \cs{debug_on:n}, and load the code that one is interested in +% testing. These functions can only be used in \LaTeXe{} package mode +% loaded with \texttt{enable-debug} or another option implying it. +% \end{function} +% +% \begin{function}[added = 2017-11-28]{\debug_suspend:, \debug_resume:} +% \begin{syntax} +% \cs{debug_suspend:} \ldots{} \cs{debug_resume:} +% \end{syntax} +% Suppress (locally) errors and logging from \texttt{debug} commands, +% except for the \texttt{deprecation} errors or warnings. These pairs +% of commands can be nested. This can be used around pieces of code +% that are known to fail checks, if such failures should be ignored. +% See for instance \pkg{l3coffins}. +% \end{function} +% % \end{documentation} % % \begin{implementation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx index 7f8da0b60b8..f780908fa0f 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % @@ -212,24 +212,17 @@ \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname directlua\endcsname\relax \else - \ifnum\luatexversion<70 % + \ifnum\luatexversion<95 % \else % \end{macrocode} -% In package mode a category code table is needed: either use a pre-loaded -% allocator or provide one using the \LaTeXe{}-based generic code. In format -% mode the table used here can be hard-coded into the \Lua{}. +% In package mode for \LuaTeX{} we make sure the basic support is loaded: +% this is only necessary in plain. % \begin{macrocode} %<*package> \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname newcatcodetable\endcsname\relax \input{ltluatex}% \fi - \newcatcodetable\ucharcat@table - \directlua{ - l3kernel = l3kernel or { } - local charcat_table = \number\ucharcat@table\space - l3kernel.charcat_table = charcat_table - }% %</package> \directlua{require("expl3")}% % \end{macrocode} @@ -269,7 +262,7 @@ These are available in the engines\LineBreak - pdfTeX v1.40\LineBreak - XeTeX v0.99992\LineBreak - - LuaTeX v0.76\LineBreak + - LuaTeX v0.95\LineBreak - e-(u)pTeX mid-2012\LineBreak or later.\LineBreak \LineBreak diff --git a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx index f44b622fcde..21a038538f6 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % @@ -1027,9 +1027,9 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\box_set_ht:Nn, \box_set_ht:cn} -% \begin{macro}{\box_set_dp:Nn, \box_set_dp:cn} -% \begin{macro}{\box_set_wd:Nn, \box_set_wd:cn} +% \begin{macro}{\box_set_ht:Nn, \box_set_ht:cn, \box_gset_ht:Nn, \box_gset_ht:cn} +% \begin{macro}{\box_set_dp:Nn, \box_set_dp:cn, \box_gset_dp:Nn, \box_gset_dp:cn} +% \begin{macro}{\box_set_wd:Nn, \box_set_wd:cn, \box_gset_wd:Nn, \box_gset_wd:cn} % Setting the size whilst respecting local scope requires copying; % the same issue does not come up when working globally. % When debugging, the dimension expression |#2| is surrounded by diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx index 6f50651ed8e..980975dd5f8 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % @@ -84,45 +84,6 @@ % into the kernel. However, real use sometimes leads to better ideas, so functions from this module are % \textbf{not necessarily stable} and we may have to adjust them! % -% \section{Additions to \pkg{l3basics}} -% -% \begin{function}[added = 2017-07-16, updated = 2017-08-02]{\debug_on:n, \debug_off:n} -% \begin{syntax} -% \cs{debug_on:n} |{| \meta{comma-separated list} |}| -% \cs{debug_off:n} |{| \meta{comma-separated list} |}| -% \end{syntax} -% Turn on and off within a group various debugging code, some of which -% is also available as \pkg{expl3} load-time options. The items that -% can be used in the \meta{list} are -% \begin{itemize} -% \item \texttt{check-declarations} that checks all \pkg{expl3} -% variables used were previously declared and that local/global -% variables (based on their name or on their first assignment) are -% only locally/globally assigned; -% \item \texttt{check-expressions} that checks integer, dimension, -% skip, and muskip expressions are not terminated prematurely; -% \item \texttt{deprecation} that makes soon-to-be-deprecated commands produce errors; -% \item \texttt{log-functions} that logs function definitions; -% \item \texttt{all} that does all of the above. -% \end{itemize} -% Providing these as switches rather than options allows testing code -% even if it relies on other packages: load all other packages, call -% \cs{debug_on:n}, and load the code that one is interested in -% testing. These functions can only be used in \LaTeXe{} package mode -% loaded with \texttt{enable-debug} or another option implying it. -% \end{function} -% -% \begin{function}[added = 2017-11-28]{\debug_suspend:, \debug_resume:} -% \begin{syntax} -% \cs{debug_suspend:} \ldots{} \cs{debug_resume:} -% \end{syntax} -% Suppress (locally) errors and logging from \texttt{debug} commands, -% except for the \texttt{deprecation} errors or warnings. These pairs -% of commands can be nested. This can be used around pieces of code -% that are known to fail checks, if such failures should be ignored. -% See for instance \pkg{l3coffins}. -% \end{function} -% % \section{Additions to \pkg{l3box}} % % \subsection{Viewing part of a box} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx index 69e2fe67291..baf31892bcc 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx index 916953285d2..8f4d5aad78a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % @@ -816,6 +816,8 @@ % \begin{macro} % { % \coffin_set_eq:NN, \coffin_set_eq:Nc, +% \coffin_set_eq:cN, \coffin_set_eq:cc, +% \coffin_gset_eq:NN, \coffin_gset_eq:Nc, % \coffin_gset_eq:cN, \coffin_gset_eq:cc % } % Setting two coffins equal is just a wrapper around other functions. diff --git a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx index d1ac9bdad4b..be5a23efaa4 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx b/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx index ab64345a3f6..944fc060bfe 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx index c00c7f33cb8..416af9ab8e5 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx index c5df6600089..ba0eff183af 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx @@ -79,7 +79,7 @@ and all files in that bundle must be distributed together. % % \title{The \cls{l3doc} class} % \author{\Team} -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % \maketitle % \tableofcontents % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx index b9c13c4ef8b..1ae1afc9add 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx index fe85c98bd5a..487b32ccafc 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % @@ -467,6 +467,7 @@ % \exp_args:NVo, % \exp_args:Nfo, % \exp_args:Nff, +% \exp_args:Nee, % } % \begin{syntax} % \cs{exp_args:Noo} \meta{token} \Arg{tokens_1} \Arg{tokens_2} @@ -503,7 +504,6 @@ % { % \exp_args:NNNo, % \exp_args:NNNV, -% \exp_args:NNNv, % \exp_args:Nccc, % \exp_args:NcNc, % \exp_args:NcNo, @@ -1465,6 +1465,7 @@ % \exp_last_unbraced:No, % \exp_last_unbraced:NV, % \exp_last_unbraced:Nv, +% \exp_last_unbraced:Ne, % \exp_last_unbraced:Nf, % \exp_last_unbraced:NNo, % \exp_last_unbraced:NNV, @@ -2793,7 +2794,7 @@ % { % \exp_args:Nnc, \exp_args:Nno, \exp_args:NnV, \exp_args:Nnv, \exp_args:Nne, \exp_args:Nnf, % \exp_args:Noc, \exp_args:Noo, \exp_args:Nof, -% \exp_args:NVo, \exp_args:Nfo, \exp_args:Nff, +% \exp_args:NVo, \exp_args:Nfo, \exp_args:Nff, \exp_args:Nee % } % \begin{macro} % { @@ -2823,6 +2824,7 @@ \@@_tmp:w { Vo } \@@_tmp:w { fo } \@@_tmp:w { ff } +\@@_tmp:w { ee } \@@_tmp:w { Nx } \@@_tmp:w { cx } \@@_tmp:w { nx } diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx index 5dd15d0e3d3..c9c1fd72eea 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % @@ -1043,11 +1043,18 @@ %</package> } \cs_generate_variant:Nn \__kernel_ior_open:Nn { No } -\cs_new_protected:Npn \@@_open_stream:Nn #1#2 +% \end{macrocode} +% Here, we act defensively in case \LuaTeX{} is in use with an +% extensionless file name. +% \begin{macrocode} +\cs_new_protected:Npx \@@_open_stream:Nn #1#2 { - \tex_global:D \tex_chardef:D #1 = \l_@@_stream_tl \scan_stop: - \prop_gput:NVn \g_@@_streams_prop #1 {#2} - \tex_openin:D #1 #2 \scan_stop: + \tex_global:D \tex_chardef:D #1 = \exp_not:N \l_@@_stream_tl \scan_stop: + \prop_gput:NVn \exp_not:N \g_@@_streams_prop #1 {#2} + \tex_openin:D #1 + \sys_if_engine_luatex:TF + { {#2} } + { #2 \scan_stop: } } % \end{macrocode} % \end{macro} @@ -2251,25 +2258,12 @@ % \g_file_curr_ext_str , % \g_file_curr_name_str % } -% The name of the current file should be available at all times. -% For the format the file name needs to be picked up at the start of the -% run. In \LaTeXe{} package mode the current file name is collected from -% \tn{@currname}. +% The name of the current file should be available at all times: +% the name itself is set dynamically. % \begin{macrocode} \str_new:N \g_file_curr_dir_str \str_new:N \g_file_curr_ext_str \str_new:N \g_file_curr_name_str -%<*initex> -\tex_everyjob:D \exp_after:wN - { - \tex_the:D \tex_everyjob:D - \str_gset:Nx \g_file_curr_name_str { \tex_jobname:D } - } -%</initex> -%<*package> -\cs_if_exist:NT \@currname - { \str_gset_eq:NN \g_file_curr_name_str \@currname } -%</package> % \end{macrocode} % \end{variable} % @@ -2278,7 +2272,8 @@ % mode we can recover the information from the details held by % \LaTeXe{} (we must be in the preamble and loaded using \tn{usepackage} % or \tn{RequirePackage}). As \LaTeXe{} doesn't store directory and -% name separately, we stick to the same convention here. +% name separately, we stick to the same convention here. In pre-loading, +% \tn{@currnamestack} is empty so is skipped. % \begin{macrocode} \seq_new:N \g_@@_stack_seq %<*package> @@ -2301,7 +2296,10 @@ } } \cs_if_exist:NT \@currnamestack - { \exp_after:wN \@@_tmp:w \@currnamestack } + { + \tl_if_empty:NF \@currnamestack + { \exp_after:wN \@@_tmp:w \@currnamestack } + } \group_end: %</package> % \end{macrocode} @@ -2642,9 +2640,27 @@ \cs_new:Npx \@@_file_ext_check_auxiii:nw #1#2 . #3 . #4 \q_stop { \exp_not:N \quark_if_nil:nTF {#3} - { \exp_not:N \__kernel_file_name_quote:n { #1 \tl_to_str:n { .tex } } } + { + \exp_not:N \exp_args:Nee \exp_not:N \@@_file_ext_check_auxiv:nn + { \exp_not:N \__kernel_file_name_quote:n {#1} } + { + \exp_not:N \__kernel_file_name_quote:n + { #1 \tl_to_str:n { .tex } } + } + } {#1} } +\cs_new:Npn \@@_file_ext_check_auxiv:nn #1#2 + { + \tl_if_blank:eTF { \@@_file_size:n {#2} } + {#1} + { + \int_compare:nNnTF + { \@@_file_size:n {#1} } = { \@@_file_size:n {#2} } + {#2} + {#1} + } + } % \end{macrocode} % Deal with the fact that the primitive might not be available. % \begin{macrocode} @@ -2816,7 +2832,7 @@ % \end{macro} % \end{macro} % -% \begin{macro} +% \begin{macro}[noTF] % {\file_get_mdfive_hash:nN, \file_get_size:nN, \file_get_timestamp:nN} % \begin{macro}{\@@_get_details:nnN} % Non-expandable wrappers around the above in the case where appropriate @@ -3073,7 +3089,7 @@ \str_gset_eq:NN \g_file_curr_ext_str \l_@@_ext_str } %<*package> -\cs_new_eq:NN \__kernel_file_input_push:n \__file_input_push:n +\cs_new_eq:NN \__kernel_file_input_push:n \@@_input_push:n %</package> \cs_new_protected:Npn \@@_input_pop: { @@ -3081,7 +3097,7 @@ \exp_after:wN \@@_input_pop:nnn \l_@@_internal_tl } %<*package> -\cs_new_eq:NN \__kernel_file_input_pop: \__file_input_pop: +\cs_new_eq:NN \__kernel_file_input_pop: \@@_input_pop: %</package> \cs_new_protected:Npn \@@_input_pop:nnn #1#2#3 { @@ -3191,14 +3207,17 @@ % \cs{g_@@_record_seq}. % \begin{macrocode} %<*package> -\AtBeginDocument - { - \exp_args:NNx \seq_set_from_clist:Nn \l_@@_tmp_seq - { \tl_to_str:N \@filelist } - \seq_gconcat:NNN - \g_@@_record_seq - \g_@@_record_seq - \l_@@_tmp_seq +\cs_if_exist:NT \@filelist + { + \AtBeginDocument + { + \exp_args:NNx \seq_set_from_clist:Nn \l_@@_tmp_seq + { \tl_to_str:N \@filelist } + \seq_gconcat:NNN + \g_@@_record_seq + \g_@@_record_seq + \l_@@_tmp_seq + } } %</package> % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx index 520a329e0db..ebf24ce777a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx index 62f903934b4..f94b5d7c5b3 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx index 5262f680b8b..270b492c52b 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % \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 63aafee928d..63d21202bd9 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx index 8764f0212b4..842f2ec8bd5 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx index a99f3215a9c..158b16b6183 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx index a19698934a6..20cdce74c31 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx index 1f267a7479b..f3530ccef75 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx index 3db19b3cfba..23b758fa8a5 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx index 11ff1e4f27e..b14d045a2db 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx index 7975aa651c1..ccb2791cabe 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx index eb68ec0baf3..e8483b0346a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx index f76616eef34..8b0a1735326 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % \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 77af2e71ac3..2354328e8a3 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx index d4e5b7c31dd..6a6b5803847 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx @@ -49,7 +49,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx index 8ca49335b4f..983a0815fb8 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx index 67c3542e559..280c06652db 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx index b8a33eb677d..883e5ae4018 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % @@ -462,7 +462,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\intarray_show:N, \intarray_show:c, \intarray_log:c, \intarray_log:N} +% \begin{macro}{\intarray_show:N, \intarray_show:c, \intarray_log:N, \intarray_log:c} % Convert the list to a comma list (with spaces after each comma) % \begin{macrocode} \cs_new_protected:Npn \intarray_show:N { \@@_show:NN \msg_show:nnxxxx } diff --git a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx index 66b763ed7b3..2abd9b28191 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx index aa2b4df82c5..6cadb629552 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx index ca3c96d85d0..a11c5385bc2 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx index cbc3d7a4e2f..7a59765ed5c 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % @@ -328,6 +328,7 @@ local os_clock = os.clock local os_date = os.date local setcatcode = tex.setcatcode local sprint = tex.sprint +local cprint = tex.cprint local write = tex.write % \end{macrocode} % @@ -354,15 +355,11 @@ end % \end{macro} % % \begin{macro}{l3kernel.charcat} -% Creating arbitrary chars needs a category code table. As set up here, -% one may have been assigned earlier (see \pkg{l3bootstrap}) or a hard-coded -% one is used. The latter is intended for format mode and should be adjusted -% to match an eventual allocator. +% Creating arbitrary chars using |tex.cprint|. % \begin{macrocode} -local charcat_table = l3kernel.charcat_table or 1 -local function charcat(charcode, catcode) - setcatcode(charcat_table, charcode, catcode) - sprint(charcat_table, utf8_char(charcode)) +local charcat +function charcat(charcode, catcode) + cprint(catcode, utf8_char(charcode)) end l3kernel.charcat = charcat % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx index 79a2ecc5ff5..729e5ca7c44 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx index c11c837c6ae..a9b587f9e19 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx index f984c3aa766..bddc05a7e36 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx index 2ab8ea46dfb..9bdc4403c65 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx index c828aa1d493..6dac83802c9 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx index 8d409b2dc5c..cbc6b1b05be 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx index 0e66adfd812..e5c5126963e 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx index 1e3962b3935..f9689fb155e 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx index 129bcef4561..3f7ad1f5b95 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx index 86cf7db4691..9f5dd3ab47f 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx index b961e89df8b..f09bbb4418d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx index 172d9507eb3..c476e67e232 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % @@ -276,6 +276,16 @@ % back deprecations, respectively. % \end{function} % +% \subsection{Final settins} +% +% \begin{function}[added = 2019-10-06]{\sys_finalise:} +% \begin{syntax} +% \cs{sys_finalise:} +% \end{syntax} +% Finalises all system-dependent functionality: required before loading +% a backend. +% \end{function} +% % \end{documentation} % % \begin{implementation} @@ -283,34 +293,16 @@ % \section{\pkg{l3sys} implementation} % % \begin{macrocode} -%<*initex|package> -% \end{macrocode} -% -% \begin{macrocode} %<@@=sys> % \end{macrocode} % -% \subsection{The name of the job} +% \subsection{Kernel code} % -% \begin{variable}{\c_sys_jobname_str} -% Inherited from the \LaTeX3 name for the primitive: this needs to -% actually contain the text of the job name rather than the name of -% the primitive, of course. % \begin{macrocode} -%<*initex> -\tex_everyjob:D \exp_after:wN - { - \tex_the:D \tex_everyjob:D - \str_const:Nx \c_sys_jobname_str { \tex_jobname:D } - } -%</initex> -%<*package> -\str_const:Nx \c_sys_jobname_str { \tex_jobname:D } -%</package> +%<*initex|package> % \end{macrocode} -% \end{variable} % -% \subsection{Detecting the engine} +% \subsubsection{Detecting the engine} % % \begin{macro}{\@@_const:nn} % Set the |T|, |F|, |TF|, |p| forms of |#1| to be constants equal to @@ -373,89 +365,7 @@ % \end{variable} % \end{macro} % -% \subsection{Time and date} -% -% \begin{variable} -% { -% \c_sys_minute_int, -% \c_sys_hour_int, -% \c_sys_day_int, -% \c_sys_month_int, -% \c_sys_year_int, -% } -% Copies of the information provided by \TeX{}. There is a lot of defensive -% code in package mode: someone may have moved the primitives, and they can -% only be recovered if we have \tn{primitive} and it is working correctly. -% \begin{macrocode} -%<*initex> -\int_const:Nn \c_sys_minute_int - { \int_mod:nn { \tex_time:D } { 60 } } -\int_const:Nn \c_sys_hour_int - { \int_div_truncate:nn { \tex_time:D } { 60 } } -\int_const:Nn \c_sys_day_int { \tex_day:D } -\int_const:Nn \c_sys_month_int { \tex_month:D } -\int_const:Nn \c_sys_year_int { \tex_year:D } -%</initex> -%<*package> -\group_begin: - \cs_set:Npn \@@_tmp:w #1 - { - \str_if_eq:eeTF { \cs_meaning:N #1 } { \token_to_str:N #1 } - { #1 } - { - \cs_if_exist:NTF \tex_primitive:D - { - \bool_lazy_and:nnTF - { \sys_if_engine_xetex_p: } - { - \int_compare_p:nNn - { \exp_after:wN \use_none:n \tex_XeTeXrevision:D } - < { 99999 } - } - { 0 } - { \tex_primitive:D #1 } - } - { 0 } - } - } - \int_const:Nn \c_sys_minute_int - { \int_mod:nn { \@@_tmp:w \time } { 60 } } - \int_const:Nn \c_sys_hour_int - { \int_div_truncate:nn { \@@_tmp:w \time } { 60 } } - \int_const:Nn \c_sys_day_int { \@@_tmp:w \day } - \int_const:Nn \c_sys_month_int { \@@_tmp:w \month } - \int_const:Nn \c_sys_year_int { \@@_tmp:w \year } -\group_end: -%</package> -% \end{macrocode} -% \end{variable} -% -% \subsection{Detecting the output} -% -% \begin{macro}[pTF, EXP] -% { -% \sys_if_output_dvi:, -% \sys_if_output_pdf: -% } -% \begin{variable}{\c_sys_output_str} -% This is a simple enough concept: the two views here are complementary. -% \begin{macrocode} -\str_const:Nx \c_sys_output_str - { - \int_compare:nNnTF - { \cs_if_exist_use:NF \tex_pdfoutput:D { 0 } } > { 0 } - { pdf } - { dvi } - } -\@@_const:nn { sys_if_output_dvi } - { \str_if_eq_p:Vn \c_sys_output_str { dvi } } -\@@_const:nn { sys_if_output_pdf } - { \str_if_eq_p:Vn \c_sys_output_str { pdf } } -% \end{macrocode} -% \end{variable} -% \end{macro} -% -% \subsection{Randomness} +% \subsubsection{Randomness} % % This candidate function is placed there because % \cs{sys_if_rand_exist:TF} is used in \pkg{l3fp-rand}. @@ -468,7 +378,7 @@ % \end{macrocode} % \end{macro} % -% \subsection{Platform} +% \subsubsection{Platform} % % \begin{macro}[pTF]{\sys_if_platform_unix:, \sys_if_platform_windows:} % \begin{variable}{\c_sys_platform_str} @@ -477,63 +387,95 @@ % \end{variable} % \end{macro} % -% \subsection{Random numbers} +% \subsubsection{Configurations} % -% \begin{macro}[EXP]{\sys_rand_seed:} -% Unpack the primitive. When random numbers are not available, we -% return zero after an error (and incidentally make sure the number of -% expansions needed is the same as with random numbers available). +% \begin{macro}{\sys_load_backend:n} +% \begin{macro}{\@@_load_backend_check:N} +% \begin{variable}{\c_sys_backend_str} +% Loading the backend code is pretty simply: check that the backend is valid, +% then load it up. % \begin{macrocode} -\sys_if_rand_exist:TF - { \cs_new:Npn \sys_rand_seed: { \tex_the:D \tex_randomseed:D } } +\cs_new_protected:Npn \sys_load_backend:n #1 { - \cs_new:Npn \sys_rand_seed: + \sys_finalise: + \str_if_exist:NTF \c_sys_backend_str + { \__kernel_msg_error:nn { sys } { backend-set } } { - \int_value:w - \__kernel_msg_expandable_error:nnn { kernel } { fp-no-random } - { \sys_rand_seed: } - \c_zero_int + \tl_if_blank:nF {#1} + { \tl_set:Nn \g_@@_backend_tl {#1} } + \@@_load_backend_check:N \g_@@_backend_tl + \str_const:Nx \c_sys_backend_str { \g_@@_backend_tl } + \__kernel_sys_configuration_load:n + { l3backend- \c_sys_backend_str } } } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\sys_gset_rand_seed:n} -% The primitive always assigns the seed globally. -% \begin{macrocode} -\sys_if_rand_exist:TF - { - \cs_new_protected:Npn \sys_gset_rand_seed:n #1 - { \tex_setrandomseed:D \int_eval:n {#1} \exp_stop_f: } - } +\cs_new_protected:Npn \@@_load_backend_check:N #1 { - \cs_new_protected:Npn \sys_gset_rand_seed:n #1 + \sys_if_engine_xetex:TF { - \__kernel_msg_error:nnn { kernel } { fp-no-random } - { \sys_gset_rand_seed:n {#1} } + \str_if_eq:VnF #1 { xdvipdfmx } + { + \__kernel_msg_error:nnxx { sys } { wrong-backend } + #1 { xdvipdfmx } + \tl_gset:Nn #1 { xdvipdfmx } + } + } + { + \sys_if_output_pdf:TF + { + \str_if_eq:VnF #1 { pdfmode } + { + \__kernel_msg_error:nnxx { sys } { wrong-backend } + #1 { pdfmode } + \tl_gset:Nn #1 { pdfmode } + } + } + { + \str_case:VnF #1 + { + { dvipdfmx } { } + { dvips } { } + { dvisvgm } { } + } + { + \__kernel_msg_error:nnxx { sys } { wrong-backend } + #1 { dvips } + \tl_gset:Nn #1 { dvips } + } + } } } % \end{macrocode} +% \end{variable} +% \end{macro} % \end{macro} % -% \subsection{Access to the shell} +% \begin{variable}{\g_@@_debug_bool, \g_@@_deprecation_bool} +% \begin{macrocode} +\bool_new:N \g_@@_debug_bool +\bool_new:N \g_@@_deprecation_bool +% \end{macrocode} +% \end{variable} % -% \begin{variable}{\c_sys_shell_escape_int} -% Expose the engine's shell escape status to the user. +% \begin{macro}{\sys_load_debug:, \sys_load_deprecation:} +% Simple. % \begin{macrocode} -\int_const:Nn \c_sys_shell_escape_int +\cs_new_protected:Npn \sys_load_debug: { - \sys_if_engine_luatex:TF - { - \tex_directlua:D - { tex.sprint(status.shell_escape~or~os.execute()) } - } - { - \tex_shellescape:D - } + \bool_if:NF \g_@@_debug_bool + { \__kernel_sys_configuration_load:n { l3debug } } + \bool_gset_true:N \g_@@_debug_bool + } +\cs_new_protected:Npn \sys_load_deprecation: + { + \bool_if:NF \g_@@_deprecation_bool + { \__kernel_sys_configuration_load:n { l3deprecation } } + \bool_gset_true:N \g_@@_deprecation_bool } % \end{macrocode} -% \end{variable} +% \end{macro} +% +% \subsubsection{Access to the shell} % % \begin{variable}{\l_@@_internal_tl} % \begin{macrocode} @@ -597,21 +539,6 @@ % \end{macro} % \end{macro} % -% \begin{macro}[EXP, pTF]{\sys_if_shell:, \sys_if_shell_unrestricted:, \sys_if_shell_restricted:} -% Performs a check for whether shell escape is enabled. The first set -% of functions returns true if either of restricted or unrestricted -% shell escape is enabled, while the other two sets of functions -% return true in only one of these two cases. -% \begin{macrocode} -\@@_const:nn { sys_if_shell } - { \int_compare_p:nNn \c_sys_shell_escape_int > 0 } -\@@_const:nn { sys_if_shell_unrestricted } - { \int_compare_p:nNn \c_sys_shell_escape_int = 1 } -\@@_const:nn { sys_if_shell_restricted } - { \int_compare_p:nNn \c_sys_shell_escape_int = 2 } -% \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. @@ -659,117 +586,285 @@ % \end{macrocode} % \end{macro} % -% \subsection{Configurations} +% \subsection{Dynamic (every job) code} % -% \begin{variable}{\g_@@_backend_tl} -% As the backend has to be checked and possibly adjusted, the approach here -% is to create a variable and use that in a one-shot to set a constant. +% \begin{macro}{\sys_everyjob:} +% \begin{macro}{\@@_everyjob:n} +% \begin{variable}{\g_@@_everyjob_tl} % \begin{macrocode} -\tl_new:N \g_@@_backend_tl -\tl_gset:Nx \g_@@_backend_tl +\cs_new_protected:Npn \sys_everyjob: { - \sys_if_engine_xetex:TF - { xdvipdfmx } - { - \sys_if_output_pdf:TF - { pdfmode } - { - \bool_lazy_or:nnTF - { \sys_if_engine_ptex_p: } - { \sys_if_engine_uptex_p: } - { dvipdfmx } - { dvips } - } - } + \tl_use:N \g_@@_everyjob_tl + \tl_gclear:N \g_@@_everyjob_tl } +\cs_new_protected:Npn \@@_everyjob:n #1 + { \tl_gput_right:Nn \g_@@_everyjob_tl {#1} } +\tl_new:N \g_@@_everyjob_tl % \end{macrocode} % \end{variable} +% \end{macro} +% \end{macro} % -% \begin{macro}{\sys_load_backend:n} -% \begin{macro}{\@@_load_backend_check:N} -% \begin{variable}{\c_sys_backend_str} -% Loading the backend code is pretty simply: check that the backend is valid, -% then load it up. +% \subsubsection{The name of the job} +% +% \begin{variable}{\c_sys_jobname_str} +% Inherited from the \LaTeX3 name for the primitive: this needs to +% actually contain the text of the job name rather than the name of +% the primitive, of course. % \begin{macrocode} -\cs_new_protected:Npn \sys_load_backend:n #1 +\@@_everyjob:n + { \str_const:Nx \c_sys_jobname_str { \tex_jobname:D } } +% \end{macrocode} +% \end{variable} +% +% \subsubsection{Time and date} +% +% \begin{variable} +% { +% \c_sys_minute_int, +% \c_sys_hour_int, +% \c_sys_day_int, +% \c_sys_month_int, +% \c_sys_year_int, +% } +% Copies of the information provided by \TeX{}. There is a lot of defensive +% code in package mode: someone may have moved the primitives, and they can +% only be recovered if we have \tn{primitive} and it is working correctly. +% For Ini\TeX{} of course that is all redundant but does no harm. +% \begin{macrocode} +\@@_everyjob:n { - \str_if_exist:NTF \c_sys_backend_str - { \__kernel_msg_error:nnxx { sys } { backend-set } } - { - \tl_if_blank:nF {#1} - { \tl_set:Nn \g_@@_backend_tl {#1} } - \@@_load_backend_check:N \g_@@_backend_tl - \str_const:Nx \c_sys_backend_str { \g_@@_backend_tl } - \__kernel_sys_configuration_load:n - { l3backend- \c_sys_backend_str } - } + \group_begin: + \cs_set:Npn \@@_tmp:w #1 + { + \str_if_eq:eeTF { \cs_meaning:N #1 } { \token_to_str:N #1 } + { #1 } + { + \cs_if_exist:NTF \tex_primitive:D + { + \bool_lazy_and:nnTF + { \sys_if_engine_xetex_p: } + { + \int_compare_p:nNn + { \exp_after:wN \use_none:n \tex_XeTeXrevision:D } + < { 99999 } + } + { 0 } + { \tex_primitive:D #1 } + } + { 0 } + } + } + \int_const:Nn \c_sys_minute_int + { \int_mod:nn { \@@_tmp:w \time } { 60 } } + \int_const:Nn \c_sys_hour_int + { \int_div_truncate:nn { \@@_tmp:w \time } { 60 } } + \int_const:Nn \c_sys_day_int { \@@_tmp:w \day } + \int_const:Nn \c_sys_month_int { \@@_tmp:w \month } + \int_const:Nn \c_sys_year_int { \@@_tmp:w \year } + \group_end: } -\cs_new_protected:Npn \@@_load_backend_check:N #1 +% \end{macrocode} +% \end{variable} +% +% \subsubsection{Random numbers} +% +% \begin{macro}[EXP]{\sys_rand_seed:} +% Unpack the primitive. When random numbers are not available, we +% return zero after an error (and incidentally make sure the number of +% expansions needed is the same as with random numbers available). +% \begin{macrocode} +\@@_everyjob:n { - \sys_if_engine_xetex:TF + \sys_if_rand_exist:TF + { \cs_new:Npn \sys_rand_seed: { \tex_the:D \tex_randomseed:D } } { - \str_if_eq:VnF #1 { xdvipdfmx } + \cs_new:Npn \sys_rand_seed: { - \__kernel_msg_error:nnxx { sys } { wrong-backend } - #1 { xdvipdfmx } - \tl_gset:Nn #1 { xdvipdfmx } + \int_value:w + \__kernel_msg_expandable_error:nnn { kernel } { fp-no-random } + { \sys_rand_seed: } + \c_zero_int } } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\sys_gset_rand_seed:n} +% The primitive always assigns the seed globally. +% \begin{macrocode} +\@@_everyjob:n + { + \sys_if_rand_exist:TF { - \sys_if_output_pdf:TF + \cs_new_protected:Npn \sys_gset_rand_seed:n #1 + { \tex_setrandomseed:D \int_eval:n {#1} \exp_stop_f: } + } + { + \cs_new_protected:Npn \sys_gset_rand_seed:n #1 { - \str_if_eq:VnF #1 { pdfmode } - { - \__kernel_msg_error:nnxx { sys } { wrong-backend } - #1 { pdfmode } - \tl_gset:Nn #1 { pdfmode } - } + \__kernel_msg_error:nnn { kernel } { fp-no-random } + { \sys_gset_rand_seed:n {#1} } } + } + } +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Access to the shell} +% +% \begin{variable}{\c_sys_shell_escape_int} +% Expose the engine's shell escape status to the user. +% \begin{macrocode} +\@@_everyjob:n + { + \int_const:Nn \c_sys_shell_escape_int + { + \sys_if_engine_luatex:TF { - \str_case:VnF #1 - { - { dvipdfmx } { } - { dvips } { } - { dvisvgm } { } - } - { - \__kernel_msg_error:nnxx { sys } { wrong-backend } - #1 { dvips } - \tl_gset:Nn #1 { dvips } - } + \tex_directlua:D + { tex.sprint(status.shell_escape~or~os.execute()) } } + { \tex_shellescape:D } } } % \end{macrocode} % \end{variable} -% \end{macro} +% +% \begin{macro}[EXP, pTF]{\sys_if_shell:, \sys_if_shell_unrestricted:, \sys_if_shell_restricted:} +% Performs a check for whether shell escape is enabled. The first set +% of functions returns true if either of restricted or unrestricted +% shell escape is enabled, while the other two sets of functions +% return true in only one of these two cases. +% \begin{macrocode} +\@@_everyjob:n + { + \@@_const:nn { sys_if_shell } + { \int_compare_p:nNn \c_sys_shell_escape_int > 0 } + \@@_const:nn { sys_if_shell_unrestricted } + { \int_compare_p:nNn \c_sys_shell_escape_int = 1 } + \@@_const:nn { sys_if_shell_restricted } + { \int_compare_p:nNn \c_sys_shell_escape_int = 2 } + } +% \end{macrocode} % \end{macro} % -% \begin{variable}{\g_@@_debug_bool, \g_@@_deprecation_bool} +% \subsubsection{Held over from \pkg{l3file}} +% +% \begin{variable}{\g_file_curr_name_str} % \begin{macrocode} -\bool_new:N \g_@@_debug_bool -\bool_new:N \g_@@_deprecation_bool +\@@_everyjob:n + { \str_gset:Nx \g_file_curr_name_str { \tex_jobname:D } } % \end{macrocode} % \end{variable} % -% \begin{macro}{\sys_load_debug:, \sys_load_deprecation:} -% Simple. +% \subsection{Last-minute code} +% +% \begin{macro}{\sys_finalise:} +% \begin{macro}{\@@_finalise:n} +% \begin{variable}{\g_@@_finalise_tl} +% A simple hook to finalise the system-dependent layer. This is forced by +% the backend loader, which is forced by the main loader, so we do not need +% to include that here. % \begin{macrocode} -\cs_new_protected:Npn \sys_load_debug: +\cs_new_protected:Npn \sys_finalise: { - \bool_if:NF \g_@@_debug_bool - { \__kernel_sys_configuration_load:n { l3debug } } - \bool_gset_true:N \g_@@_debug_bool + \sys_everyjob: + \tl_use:N \g_@@_finalise_tl + \tl_gclear:N \g_@@_finalise_tl } -\cs_new_protected:Npn \sys_load_deprecation: +\cs_new_protected:Npn \@@_finalise:n #1 + { \tl_gput_right:Nn \g_@@_finalise_tl {#1} } +\tl_new:N \g_@@_finalise_tl +% \end{macrocode} +% \end{variable} +% \end{macro} +% \end{macro} +% +% \subsubsection{Detecting the output} +% +% \begin{macro}[pTF, EXP] +% { +% \sys_if_output_dvi:, +% \sys_if_output_pdf: +% } +% \begin{variable}{\c_sys_output_str} +% This is a simple enough concept: the two views here are complementary. +% \begin{macrocode} +\@@_finalise:n { - \bool_if:NF \g_@@_deprecation_bool - { \__kernel_sys_configuration_load:n { l3deprecation } } - \bool_gset_true:N \g_@@_deprecation_bool + \str_const:Nx \c_sys_output_str + { + \int_compare:nNnTF + { \cs_if_exist_use:NF \tex_pdfoutput:D { 0 } } > { 0 } + { pdf } + { dvi } + } + \@@_const:nn { sys_if_output_dvi } + { \str_if_eq_p:Vn \c_sys_output_str { dvi } } + \@@_const:nn { sys_if_output_pdf } + { \str_if_eq_p:Vn \c_sys_output_str { pdf } } } % \end{macrocode} +% \end{variable} % \end{macro} % +% \subsubsection{Configurations} +% +% If there is a class option set, and recognised, we pick it up: these +% will over-ride anything set automatically but will themsevles be +% over-written if there is a package option. +% \begin{macrocode} +\@@_finalise:n + { + \cs_if_exist:NT \@classoptionslist + { + \cs_if_eq:NNF \@classoptionslist \scan_stop: + { + \clist_map_inline:Nn \@classoptionslist + { + \str_case:nnT {#1} + { + { dvipdfmx } + { \tl_gset:Nn \g_@@_backend_tl { dvipdfmx } } + { dvips } + { \tl_gset:Nn \g_@@_backend_tl { dvips } } + { dvisvgm } + { \tl_gset:Nn \g_@@_backend_tl { dvisvgm } } + { pdftex } + { \tl_gset:Nn \g_@@_backend_tl { pdfmode } } + { xetex } + { \tl_gset:Nn \g_@@_backend_tl { xdvipdfmx } } + } + { \clist_remove_all:Nn \@unusedoptionlist {#1} } + } + } + } + } +% \end{macrocode} +% +% \begin{variable}{\g_@@_backend_tl} +% As the backend has to be checked and possibly adjusted, the approach here +% is to create a variable and use that in a one-shot to set a constant. +% \begin{macrocode} +\tl_new:N \g_@@_backend_tl +\@@_finalise:n + { + \tl_gset:Nx \g_@@_backend_tl + { + \sys_if_engine_xetex:TF + { xdvipdfmx } + { + \sys_if_output_pdf:TF + { pdfmode } + { dvips } + } + } + } +% \end{macrocode} +% \end{variable} +% % \begin{macrocode} %</initex|package> % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx index 3e34bfd8f90..2cd92799738 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx index c6eb6aa3f28..adec7596ff6 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx index 51c7b597f05..b8759fbce42 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx index 78d3f1bdb96..8452f2df6ff 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-02} +% \date{Released 2019-10-11} % % \maketitle % diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def index 8b8ce109289..0b9fb6212cf 100644 --- a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def +++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def @@ -44,7 +44,7 @@ \cs_new_protected:Npn \__color_backend_pickup:N #1 { } \AtBeginDocument { - \@ifpackageloaded { color } + \cs_if_exist:cT { ver@color.sty } { \cs_set_protected:Npn \__color_backend_pickup:N #1 { @@ -64,7 +64,6 @@ \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \q_stop #3 { \tl_set:Nn #3 { #1 ~ #2 } } } - { } } \cs_new_protected:Npn \__color_backend_cmyk:nnnn #1#2#3#4 { diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def index cf837f7e101..1fa2e583b95 100644 --- a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def +++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def @@ -63,7 +63,7 @@ \cs_new_protected:Npn \__color_backend_pickup:N #1 { } \AtBeginDocument { - \@ifpackageloaded { color } + \cs_if_exist:cT { ver@color.sty } { \cs_set_protected:Npn \__color_backend_pickup:N #1 { @@ -83,7 +83,6 @@ \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \q_stop #3 { \tl_set:Nn #3 { #1 ~ #2 } } } - { } } \cs_new_protected:Npn \__color_backend_cmyk:nnnn #1#2#3#4 { diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def index 62dbf732d82..4c336c61034 100644 --- a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def +++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def @@ -45,7 +45,7 @@ \cs_new_protected:Npn \__color_backend_pickup:N #1 { } \AtBeginDocument { - \@ifpackageloaded { color } + \cs_if_exist:cT { ver@color.sty } { \cs_set_protected:Npn \__color_backend_pickup:N #1 { @@ -65,7 +65,6 @@ \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \q_stop #3 { \tl_set:Nn #3 { #1 ~ #2 } } } - { } } \cs_new_protected:Npn \__color_backend_cmyk:nnnn #1#2#3#4 { diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def index f1900f32c0d..bebefe30325 100644 --- a/Master/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def +++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def @@ -71,7 +71,7 @@ \cs_new_protected:Npn \__color_backend_pickup:N #1 { } \AtBeginDocument { - \@ifpackageloaded { color } + \cs_if_exist:cT { ver@color.sty } { \cs_set_protected:Npn \__color_backend_pickup:N #1 { @@ -102,7 +102,6 @@ } } } - { } } \int_new:N \l__kernel_color_stack_int \cs_new_protected:Npn \__color_backend_cmyk:nnnn #1#2#3#4 diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-xdvipdfmx.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-xdvipdfmx.def index 7dd12f6e434..da7289b8ef1 100644 --- a/Master/texmf-dist/tex/latex/l3backend/l3backend-xdvipdfmx.def +++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-xdvipdfmx.def @@ -44,7 +44,7 @@ \cs_new_protected:Npn \__color_backend_pickup:N #1 { } \AtBeginDocument { - \@ifpackageloaded { color } + \cs_if_exist:cT { ver@color.sty } { \cs_set_protected:Npn \__color_backend_pickup:N #1 { @@ -64,7 +64,6 @@ \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \q_stop #3 { \tl_set:Nn #3 { #1 ~ #2 } } } - { } } \cs_new_protected:Npn \__color_backend_cmyk:nnnn #1#2#3#4 { diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex index 672739004e7..8d8b7973ea9 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex @@ -65,7 +65,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2019-10-02}% +\def\ExplFileDate{2019-10-11}% \begingroup \def\next{\endgroup}% \expandafter\ifx\csname PackageError\endcsname\relax @@ -147,18 +147,12 @@ \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname directlua\endcsname\relax \else - \ifnum\luatexversion<70 % + \ifnum\luatexversion<95 % \else \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname newcatcodetable\endcsname\relax \input{ltluatex}% \fi - \newcatcodetable\ucharcat@table - \directlua{ - l3kernel = l3kernel or { } - local charcat_table = \number\ucharcat@table\space - l3kernel.charcat_table = charcat_table - }% \directlua{require("expl3")}% \ifnum 0% \directlua{ @@ -184,7 +178,7 @@ These are available in the engines\LineBreak - pdfTeX v1.40\LineBreak - XeTeX v0.99992\LineBreak - - LuaTeX v0.76\LineBreak + - LuaTeX v0.95\LineBreak - e-(u)pTeX mid-2012\LineBreak or later.\LineBreak \LineBreak @@ -3876,6 +3870,7 @@ \__cs_tmp:w { Vo } \__cs_tmp:w { fo } \__cs_tmp:w { ff } +\__cs_tmp:w { ee } \__cs_tmp:w { Nx } \__cs_tmp:w { cx } \__cs_tmp:w { nx } @@ -7442,7 +7437,6 @@ { \if_int_compare:w `{ = \c_zero_int } \fi: } \int_new:N \g__kernel_prg_map_int %% File: l3sys.dtx -\str_const:Nx \c_sys_jobname_str { \tex_jobname:D } \cs_new_protected:Npn \__sys_const:nn #1#2 { \bool_if:nTF {#2} @@ -7478,82 +7472,72 @@ \__sys_const:nn { sys_if_engine_ #1 } { \str_if_eq_p:Vn \c_sys_engine_str {#1} } } -\group_begin: - \cs_set:Npn \__sys_tmp:w #1 - { - \str_if_eq:eeTF { \cs_meaning:N #1 } { \token_to_str:N #1 } - { #1 } - { - \cs_if_exist:NTF \tex_primitive:D - { - \bool_lazy_and:nnTF - { \sys_if_engine_xetex_p: } - { - \int_compare_p:nNn - { \exp_after:wN \use_none:n \tex_XeTeXrevision:D } - < { 99999 } - } - { 0 } - { \tex_primitive:D #1 } - } - { 0 } - } - } - \int_const:Nn \c_sys_minute_int - { \int_mod:nn { \__sys_tmp:w \time } { 60 } } - \int_const:Nn \c_sys_hour_int - { \int_div_truncate:nn { \__sys_tmp:w \time } { 60 } } - \int_const:Nn \c_sys_day_int { \__sys_tmp:w \day } - \int_const:Nn \c_sys_month_int { \__sys_tmp:w \month } - \int_const:Nn \c_sys_year_int { \__sys_tmp:w \year } -\group_end: -\str_const:Nx \c_sys_output_str - { - \int_compare:nNnTF - { \cs_if_exist_use:NF \tex_pdfoutput:D { 0 } } > { 0 } - { pdf } - { dvi } - } -\__sys_const:nn { sys_if_output_dvi } - { \str_if_eq_p:Vn \c_sys_output_str { dvi } } -\__sys_const:nn { sys_if_output_pdf } - { \str_if_eq_p:Vn \c_sys_output_str { pdf } } \__sys_const:nn { sys_if_rand_exist } { \cs_if_exist_p:N \tex_uniformdeviate:D } -\sys_if_rand_exist:TF - { \cs_new:Npn \sys_rand_seed: { \tex_the:D \tex_randomseed:D } } - { - \cs_new:Npn \sys_rand_seed: - { - \int_value:w - \__kernel_msg_expandable_error:nnn { kernel } { fp-no-random } - { \sys_rand_seed: } - \c_zero_int - } - } -\sys_if_rand_exist:TF - { - \cs_new_protected:Npn \sys_gset_rand_seed:n #1 - { \tex_setrandomseed:D \int_eval:n {#1} \exp_stop_f: } - } +\cs_new_protected:Npn \sys_load_backend:n #1 { - \cs_new_protected:Npn \sys_gset_rand_seed:n #1 + \sys_finalise: + \str_if_exist:NTF \c_sys_backend_str + { \__kernel_msg_error:nn { sys } { backend-set } } { - \__kernel_msg_error:nnn { kernel } { fp-no-random } - { \sys_gset_rand_seed:n {#1} } + \tl_if_blank:nF {#1} + { \tl_set:Nn \g__sys_backend_tl {#1} } + \__sys_load_backend_check:N \g__sys_backend_tl + \str_const:Nx \c_sys_backend_str { \g__sys_backend_tl } + \__kernel_sys_configuration_load:n + { l3backend- \c_sys_backend_str } } } -\int_const:Nn \c_sys_shell_escape_int +\cs_new_protected:Npn \__sys_load_backend_check:N #1 { - \sys_if_engine_luatex:TF + \sys_if_engine_xetex:TF { - \tex_directlua:D - { tex.sprint(status.shell_escape~or~os.execute()) } + \str_if_eq:VnF #1 { xdvipdfmx } + { + \__kernel_msg_error:nnxx { sys } { wrong-backend } + #1 { xdvipdfmx } + \tl_gset:Nn #1 { xdvipdfmx } + } } { - \tex_shellescape:D + \sys_if_output_pdf:TF + { + \str_if_eq:VnF #1 { pdfmode } + { + \__kernel_msg_error:nnxx { sys } { wrong-backend } + #1 { pdfmode } + \tl_gset:Nn #1 { pdfmode } + } + } + { + \str_case:VnF #1 + { + { dvipdfmx } { } + { dvips } { } + { dvisvgm } { } + } + { + \__kernel_msg_error:nnxx { sys } { wrong-backend } + #1 { dvips } + \tl_gset:Nn #1 { dvips } + } + } } } +\bool_new:N \g__sys_debug_bool +\bool_new:N \g__sys_deprecation_bool +\cs_new_protected:Npn \sys_load_debug: + { + \bool_if:NF \g__sys_debug_bool + { \__kernel_sys_configuration_load:n { l3debug } } + \bool_gset_true:N \g__sys_debug_bool + } +\cs_new_protected:Npn \sys_load_deprecation: + { + \bool_if:NF \g__sys_deprecation_bool + { \__kernel_sys_configuration_load:n { l3deprecation } } + \bool_gset_true:N \g__sys_deprecation_bool + } \tl_new:N \l__sys_internal_tl \tl_const:Nx \c__sys_marker_tl { : \token_to_str:N : } \cs_new_protected:Npn \sys_get_shell:nnN #1#2#3 @@ -7596,12 +7580,6 @@ \group_end: \tl_set:No #1 {#2} } -\__sys_const:nn { sys_if_shell } - { \int_compare_p:nNn \c_sys_shell_escape_int > 0 } -\__sys_const:nn { sys_if_shell_unrestricted } - { \int_compare_p:nNn \c_sys_shell_escape_int = 1 } -\__sys_const:nn { sys_if_shell_restricted } - { \int_compare_p:nNn \c_sys_shell_escape_int = 2 } \sys_if_engine_luatex:F { \int_const:Nn \c__sys_shell_stream_int { 18 } } \sys_if_engine_luatex:TF @@ -7630,85 +7608,162 @@ { \iow_shipout:Nn \c__sys_shell_stream_int {#1} } } \cs_generate_variant:Nn \sys_shell_shipout:n { x } -\tl_new:N \g__sys_backend_tl -\tl_gset:Nx \g__sys_backend_tl +\cs_new_protected:Npn \sys_everyjob: { - \sys_if_engine_xetex:TF - { xdvipdfmx } - { - \sys_if_output_pdf:TF - { pdfmode } - { - \bool_lazy_or:nnTF - { \sys_if_engine_ptex_p: } - { \sys_if_engine_uptex_p: } - { dvipdfmx } - { dvips } - } - } + \tl_use:N \g__sys_everyjob_tl + \tl_gclear:N \g__sys_everyjob_tl } -\cs_new_protected:Npn \sys_load_backend:n #1 +\cs_new_protected:Npn \__sys_everyjob:n #1 + { \tl_gput_right:Nn \g__sys_everyjob_tl {#1} } +\tl_new:N \g__sys_everyjob_tl +\__sys_everyjob:n + { \str_const:Nx \c_sys_jobname_str { \tex_jobname:D } } +\__sys_everyjob:n { - \str_if_exist:NTF \c_sys_backend_str - { \__kernel_msg_error:nnxx { sys } { backend-set } } + \group_begin: + \cs_set:Npn \__sys_tmp:w #1 + { + \str_if_eq:eeTF { \cs_meaning:N #1 } { \token_to_str:N #1 } + { #1 } + { + \cs_if_exist:NTF \tex_primitive:D + { + \bool_lazy_and:nnTF + { \sys_if_engine_xetex_p: } + { + \int_compare_p:nNn + { \exp_after:wN \use_none:n \tex_XeTeXrevision:D } + < { 99999 } + } + { 0 } + { \tex_primitive:D #1 } + } + { 0 } + } + } + \int_const:Nn \c_sys_minute_int + { \int_mod:nn { \__sys_tmp:w \time } { 60 } } + \int_const:Nn \c_sys_hour_int + { \int_div_truncate:nn { \__sys_tmp:w \time } { 60 } } + \int_const:Nn \c_sys_day_int { \__sys_tmp:w \day } + \int_const:Nn \c_sys_month_int { \__sys_tmp:w \month } + \int_const:Nn \c_sys_year_int { \__sys_tmp:w \year } + \group_end: + } +\__sys_everyjob:n + { + \sys_if_rand_exist:TF + { \cs_new:Npn \sys_rand_seed: { \tex_the:D \tex_randomseed:D } } { - \tl_if_blank:nF {#1} - { \tl_set:Nn \g__sys_backend_tl {#1} } - \__sys_load_backend_check:N \g__sys_backend_tl - \str_const:Nx \c_sys_backend_str { \g__sys_backend_tl } - \__kernel_sys_configuration_load:n - { l3backend- \c_sys_backend_str } + \cs_new:Npn \sys_rand_seed: + { + \int_value:w + \__kernel_msg_expandable_error:nnn { kernel } { fp-no-random } + { \sys_rand_seed: } + \c_zero_int + } } } -\cs_new_protected:Npn \__sys_load_backend_check:N #1 +\__sys_everyjob:n { - \sys_if_engine_xetex:TF + \sys_if_rand_exist:TF { - \str_if_eq:VnF #1 { xdvipdfmx } + \cs_new_protected:Npn \sys_gset_rand_seed:n #1 + { \tex_setrandomseed:D \int_eval:n {#1} \exp_stop_f: } + } + { + \cs_new_protected:Npn \sys_gset_rand_seed:n #1 { - \__kernel_msg_error:nnxx { sys } { wrong-backend } - #1 { xdvipdfmx } - \tl_gset:Nn #1 { xdvipdfmx } + \__kernel_msg_error:nnn { kernel } { fp-no-random } + { \sys_gset_rand_seed:n {#1} } } } + } +\__sys_everyjob:n + { + \int_const:Nn \c_sys_shell_escape_int { - \sys_if_output_pdf:TF + \sys_if_engine_luatex:TF { - \str_if_eq:VnF #1 { pdfmode } - { - \__kernel_msg_error:nnxx { sys } { wrong-backend } - #1 { pdfmode } - \tl_gset:Nn #1 { pdfmode } - } + \tex_directlua:D + { tex.sprint(status.shell_escape~or~os.execute()) } } + { \tex_shellescape:D } + } + } +\__sys_everyjob:n + { + \__sys_const:nn { sys_if_shell } + { \int_compare_p:nNn \c_sys_shell_escape_int > 0 } + \__sys_const:nn { sys_if_shell_unrestricted } + { \int_compare_p:nNn \c_sys_shell_escape_int = 1 } + \__sys_const:nn { sys_if_shell_restricted } + { \int_compare_p:nNn \c_sys_shell_escape_int = 2 } + } +\__sys_everyjob:n + { \str_gset:Nx \g_file_curr_name_str { \tex_jobname:D } } +\cs_new_protected:Npn \sys_finalise: + { + \sys_everyjob: + \tl_use:N \g__sys_finalise_tl + \tl_gclear:N \g__sys_finalise_tl + } +\cs_new_protected:Npn \__sys_finalise:n #1 + { \tl_gput_right:Nn \g__sys_finalise_tl {#1} } +\tl_new:N \g__sys_finalise_tl +\__sys_finalise:n + { + \str_const:Nx \c_sys_output_str + { + \int_compare:nNnTF + { \cs_if_exist_use:NF \tex_pdfoutput:D { 0 } } > { 0 } + { pdf } + { dvi } + } + \__sys_const:nn { sys_if_output_dvi } + { \str_if_eq_p:Vn \c_sys_output_str { dvi } } + \__sys_const:nn { sys_if_output_pdf } + { \str_if_eq_p:Vn \c_sys_output_str { pdf } } + } +\__sys_finalise:n + { + \cs_if_exist:NT \@classoptionslist + { + \cs_if_eq:NNF \@classoptionslist \scan_stop: { - \str_case:VnF #1 + \clist_map_inline:Nn \@classoptionslist { - { dvipdfmx } { } - { dvips } { } - { dvisvgm } { } - } - { - \__kernel_msg_error:nnxx { sys } { wrong-backend } - #1 { dvips } - \tl_gset:Nn #1 { dvips } + \str_case:nnT {#1} + { + { dvipdfmx } + { \tl_gset:Nn \g__sys_backend_tl { dvipdfmx } } + { dvips } + { \tl_gset:Nn \g__sys_backend_tl { dvips } } + { dvisvgm } + { \tl_gset:Nn \g__sys_backend_tl { dvisvgm } } + { pdftex } + { \tl_gset:Nn \g__sys_backend_tl { pdfmode } } + { xetex } + { \tl_gset:Nn \g__sys_backend_tl { xdvipdfmx } } + } + { \clist_remove_all:Nn \@unusedoptionlist {#1} } } } } } -\bool_new:N \g__sys_debug_bool -\bool_new:N \g__sys_deprecation_bool -\cs_new_protected:Npn \sys_load_debug: - { - \bool_if:NF \g__sys_debug_bool - { \__kernel_sys_configuration_load:n { l3debug } } - \bool_gset_true:N \g__sys_debug_bool - } -\cs_new_protected:Npn \sys_load_deprecation: +\tl_new:N \g__sys_backend_tl +\__sys_finalise:n { - \bool_if:NF \g__sys_deprecation_bool - { \__kernel_sys_configuration_load:n { l3deprecation } } - \bool_gset_true:N \g__sys_deprecation_bool + \tl_gset:Nx \g__sys_backend_tl + { + \sys_if_engine_xetex:TF + { xdvipdfmx } + { + \sys_if_output_pdf:TF + { pdfmode } + { dvips } + } + } } %% File: l3clist.dtx \cs_new_eq:NN \c_empty_clist \c_empty_tl @@ -10307,11 +10362,14 @@ } } \cs_generate_variant:Nn \__kernel_ior_open:Nn { No } -\cs_new_protected:Npn \__ior_open_stream:Nn #1#2 +\cs_new_protected:Npx \__ior_open_stream:Nn #1#2 { - \tex_global:D \tex_chardef:D #1 = \l__ior_stream_tl \scan_stop: - \prop_gput:NVn \g__ior_streams_prop #1 {#2} - \tex_openin:D #1 #2 \scan_stop: + \tex_global:D \tex_chardef:D #1 = \exp_not:N \l__ior_stream_tl \scan_stop: + \prop_gput:NVn \exp_not:N \g__ior_streams_prop #1 {#2} + \tex_openin:D #1 + \sys_if_engine_luatex:TF + { {#2} } + { #2 \scan_stop: } } \cs_new_protected:Npn \ior_close:N #1 { @@ -10890,8 +10948,6 @@ \str_new:N \g_file_curr_dir_str \str_new:N \g_file_curr_ext_str \str_new:N \g_file_curr_name_str -\cs_if_exist:NT \@currname - { \str_gset_eq:NN \g_file_curr_name_str \@currname } \seq_new:N \g__file_stack_seq \group_begin: \cs_set_protected:Npn \__file_tmp:w #1#2#3 @@ -10912,7 +10968,10 @@ } } \cs_if_exist:NT \@currnamestack - { \exp_after:wN \__file_tmp:w \@currnamestack } + { + \tl_if_empty:NF \@currnamestack + { \exp_after:wN \__file_tmp:w \@currnamestack } + } \group_end: \seq_new:N \g__file_record_seq \tl_new:N \l__file_base_name_tl @@ -11108,9 +11167,27 @@ \cs_new:Npx \__file_file_ext_check_auxiii:nw #1#2 . #3 . #4 \q_stop { \exp_not:N \quark_if_nil:nTF {#3} - { \exp_not:N \__kernel_file_name_quote:n { #1 \tl_to_str:n { .tex } } } + { + \exp_not:N \exp_args:Nee \exp_not:N \__file_file_ext_check_auxiv:nn + { \exp_not:N \__kernel_file_name_quote:n {#1} } + { + \exp_not:N \__kernel_file_name_quote:n + { #1 \tl_to_str:n { .tex } } + } + } {#1} } +\cs_new:Npn \__file_file_ext_check_auxiv:nn #1#2 + { + \tl_if_blank:eTF { \__file_file_size:n {#2} } + {#1} + { + \int_compare:nNnTF + { \__file_file_size:n {#1} } = { \__file_file_size:n {#2} } + {#2} + {#1} + } + } \bool_lazy_or:nnF { \cs_if_exist_p:N \tex_filesize:D } { \sys_if_engine_luatex_p: } @@ -11470,14 +11547,17 @@ { } { } { } } \cs_new:Npn \__file_list_aux:n #1 { \iow_newline: #1 } -\AtBeginDocument - { - \exp_args:NNx \seq_set_from_clist:Nn \l__file_tmp_seq - { \tl_to_str:N \@filelist } - \seq_gconcat:NNN - \g__file_record_seq - \g__file_record_seq - \l__file_tmp_seq +\cs_if_exist:NT \@filelist + { + \AtBeginDocument + { + \exp_args:NNx \seq_set_from_clist:Nn \l__file_tmp_seq + { \tl_to_str:N \@filelist } + \seq_gconcat:NNN + \g__file_record_seq + \g__file_record_seq + \l__file_tmp_seq + } } \cs_new_protected:Npn \GetIdInfo { diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex index 61161e0b5fe..b57d838d549 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2019-10-02}% +\def\ExplFileDate{2019-10-11}% \let\ExplLoaderFileDate\ExplFileDate \begingroup \def\tempa{LaTeX2e}% @@ -58,7 +58,7 @@ }% \catcode64=11 % \let\expl@AtBeginDocument\AtBeginDocument -\def\AtBeginDocument#1{}% +\def\AtBeginDocument#1{#1}% \expandafter\def\expandafter\l@expl@tidy@tl\expandafter {% \l@expl@tidy@tl @@ -85,6 +85,7 @@ } \tex_input:D #1 .def \scan_stop: } +\sys_everyjob: \sys_load_backend:n { } \ExplSyntaxOff \l@expl@tidy@tl diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx b/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx new file mode 100644 index 00000000000..44264b3a188 --- /dev/null +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx @@ -0,0 +1,139 @@ +%% +%% This is file `expl3.ltx', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% expl3.dtx (with options: `2ekernel,loader') +%% +%% Copyright (C) 1990-2019 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 license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% https://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. +%% +%% File: expl3.dtx +\def\ExplFileDate{2019-10-11}% +\let\ExplLoaderFileDate\ExplFileDate +\everyjob\expandafter{\the\everyjob + \message{^^J\ExplFileDate\space L3 programming layer}% +} +\protected\def\ProvidesExplPackage#1#2#3#4% + {% + \ProvidesPackage{#1}[#2 \ifx\relax#3\relax\else v#3\space\fi #4]% + \ExplSyntaxOn + }% +\protected\def\ProvidesExplClass#1#2#3#4% + {% + \ProvidesClass{#1}[#2 \ifx\relax#3\relax\else v#3\space\fi #4]% + \ExplSyntaxOn + }% +\protected\def\ProvidesExplFile#1#2#3#4% + {% + \ProvidesFile{#1}[#2 \ifx\relax#3\relax\else v#3\space\fi #4]% + \ExplSyntaxOn + }% +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname tex\string _let:D\endcsname\relax + \expandafter\@firstofone +\else + \expandafter\@gobble +\fi + {\input{expl3-code.tex}}% +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname tex\string _let:D\endcsname\relax + \expandafter\endinput +\fi +\cs_if_exist:NF \c__expl_def_ext_tl + { \tl_const:Nn \c__expl_def_ext_tl { def } } +\cs_gset_protected:Npn \__kernel_sys_configuration_load:n #1 + { + \cs_undefine:c { ver@ #1 .def } + \@onefilewithoptions {#1} [ ] [ ] + \c__expl_def_ext_tl + } +\keys_define:nn { sys } + { + backend .choices:nn = + { dvipdfmx , dvips , dvisvgm , pdfmode , xdvipdfmx } + { \sys_load_backend:n {#1} } , + check-declarations .code:n = + { + \sys_load_debug: + \debug_on:n { check-declarations } + } , + driver .meta:n = { backend = #1 } , + enable-debug .code:n = + \sys_load_debug: , + log-functions .code:n = + { + \sys_load_debug: + \debug_on:n { log-functions } + } , + undo-recent-deprecations .code:n = + { + \sys_load_deprecation: + \bool_gset_true:N \g__kernel_deprecation_undo_recent_bool + } + } +\AtBeginDocument + { + \str_if_exist:NF \c_sys_backend_str + { \sys_load_backend:n { } } + } +\cs_if_free:cTF { ver@expl3.sty } + { + \tex_everyjob:D \exp_after:wN + { + \tex_the:D \tex_everyjob:D + \sys_everyjob: + } + } + { \sys_everyjob: } +\tl_put_left:Nn \@pushfilename + { + \exp_args:Nx \__kernel_file_input_push:n + { + \tl_to_str:N \@currname + \tl_to_str:N \@currext + } + \tl_put_left:Nx \l__expl_status_stack_tl + { + \bool_if:NTF \l__kernel_expl_bool + { 1 } + { 0 } + } + \ExplSyntaxOff + } +\tl_put_right:Nn \@pushfilename { \@pushfilenameaux } +\cs_set_protected:Npn \@pushfilenameaux #1#2#3 + { + \str_gset:Nn \g_file_curr_name_str {#3} + #1 #2 {#3} + } +\tl_put_right:Nn \@popfilename + { + \__kernel_file_input_pop: + \tl_if_empty:NTF \l__expl_status_stack_tl + { \ExplSyntaxOff } + { \exp_after:wN \__expl_status_pop:w \l__expl_status_stack_tl \q_stop } + } +\cs_new_protected:Npn \__expl_status_pop:w #1#2 \q_stop + { + \tl_set:Nn \l__expl_status_stack_tl {#2} + \int_if_odd:nTF {#1} + { \ExplSyntaxOn } + { \ExplSyntaxOff } + } +\tl_new:N \l__expl_status_stack_tl +\tl_set:Nn \l__expl_status_stack_tl { 0 } +\ExplSyntaxOff +%% +%% +%% End of file `expl3.ltx'. diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.lua b/Master/texmf-dist/tex/latex/l3kernel/expl3.lua index e81e52a591a..835051a40fe 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3.lua +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.lua @@ -41,6 +41,7 @@ local os_clock = os.clock local os_date = os.date local setcatcode = tex.setcatcode local sprint = tex.sprint +local cprint = tex.cprint local write = tex.write local utf8_char = (utf and utf.char) or unicode.utf8.char local kpse_find = (resolvers and resolvers.findfile) or kpse.find_file @@ -48,10 +49,9 @@ local function escapehex(str) write((gsub(str, ".", function (ch) return format("%02X", byte(ch)) end))) end -local charcat_table = l3kernel.charcat_table or 1 -local function charcat(charcode, catcode) - setcatcode(charcat_table, charcode, catcode) - sprint(charcat_table, utf8_char(charcode)) +local charcat +function charcat(charcode, catcode) + cprint(catcode, utf8_char(charcode)) end l3kernel.charcat = charcat local base_time = 0 diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty index 0bec10e1004..b239fabe069 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2019-10-02}% +\def\ExplFileDate{2019-10-11}% \let\ExplLoaderFileDate\ExplFileDate \ProvidesPackage{expl3} [% @@ -41,25 +41,32 @@ \ProvidesFile{#1}[#2 \ifx\relax#3\relax\else v#3\space\fi #4]% \ExplSyntaxOn }% -\input{expl3-code.tex}% +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname tex\string _let:D\endcsname\relax + \expandafter\@firstofone +\else + \expandafter\@gobble +\fi + {\input{expl3-code.tex}}% \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname tex\string _let:D\endcsname\relax \expandafter\endinput \fi -\tl_const:Nn \c__expl_def_ext_tl { def } -\cs_new_protected:Npn \__kernel_sys_configuration_load:n #1 +\ifdefined\@pushfilenameaux + \ExplSyntaxOn +\fi +\cs_if_exist:NF \c__expl_def_ext_tl + { \tl_const:Nn \c__expl_def_ext_tl { def } } +\cs_gset_protected:Npn \__kernel_sys_configuration_load:n #1 + { + \ExplSyntaxOff + \cs_undefine:c { ver@ #1 .def } + \@onefilewithoptions {#1} [ ] [ ] + \c__expl_def_ext_tl + \ExplSyntaxOn + } +\cs_gset_protected:Npn \__kernel_sys_configuration_load_std:n #1 { - \group_begin: - \cs_set_protected:Npn \ProvidesExplFile - { - \char_set_catcode_space:n { `\ } - \ProvidesExplFileAux - } - \cs_set_protected:Npn \ProvidesExplFileAux ##1##2##3##4 - { - \group_end: - \ProvidesFile {##1} [ ##2~v##3~##4 ] - } \cs_undefine:c { ver@ #1 .def } \@onefilewithoptions {#1} [ ] [ ] \c__expl_def_ext_tl @@ -95,6 +102,21 @@ \keys_set:nV { sys } \l__expl_options_clist \str_if_exist:NF \c_sys_backend_str { \sys_load_backend:n { } } +\cs_if_exist:NT \@pushfilenameaux + { + \cs_gset_eq:NN \__kernel_sys_configuration_load:n + \__kernel_sys_configuration_load_std:n + \endinput + } +\cs_if_free:cTF { ver@expl3.sty } + { + \tex_everyjob:D \exp_after:wN + { + \tex_the:D \tex_everyjob:D + \sys_everyjob: + } + } + { \sys_everyjob: } \tl_put_left:Nn \@pushfilename { \exp_args:Nx \__kernel_file_input_push:n @@ -132,6 +154,8 @@ } \tl_new:N \l__expl_status_stack_tl \tl_set:Nn \l__expl_status_stack_tl { 0 } +\cs_gset_eq:NN \__kernel_sys_configuration_load:n + \__kernel_sys_configuration_load_std:n %% %% %% End of file `expl3.sty'. |