summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/l3kernel
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-08-08 03:01:09 +0000
committerNorbert Preining <norbert@preining.info>2020-08-08 03:01:09 +0000
commit1c9455caf30309c8b8ba69afdc5a16a83d9f9a58 (patch)
tree0bc3971e599005a7420c53782539e789de57b40d /macros/latex/contrib/l3kernel
parent3710c23789342d9d88783cbe9ad23eb5263a7c33 (diff)
CTAN sync 202008080301
Diffstat (limited to 'macros/latex/contrib/l3kernel')
-rw-r--r--macros/latex/contrib/l3kernel/CHANGELOG.md12
-rw-r--r--macros/latex/contrib/l3kernel/README.md2
-rw-r--r--macros/latex/contrib/l3kernel/expl3.dtx137
-rw-r--r--macros/latex/contrib/l3kernel/expl3.pdfbin584938 -> 585053 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.pdfbin1555993 -> 1555681 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3.ins2
-rw-r--r--macros/latex/contrib/l3kernel/l3alloc.dtx195
-rw-r--r--macros/latex/contrib/l3kernel/l3basics.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3bootstrap.dtx175
-rw-r--r--macros/latex/contrib/l3kernel/l3box.dtx8
-rw-r--r--macros/latex/contrib/l3kernel/l3candidates.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3cctab.dtx40
-rw-r--r--macros/latex/contrib/l3kernel/l3clist.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3coffins.dtx84
-rw-r--r--macros/latex/contrib/l3kernel/l3color-base.dtx10
-rw-r--r--macros/latex/contrib/l3kernel/l3debug.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3deprecation.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3doc.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.pdfbin263178 -> 263337 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3expan.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3file.dtx104
-rw-r--r--macros/latex/contrib/l3kernel/l3final.dtx389
-rw-r--r--macros/latex/contrib/l3kernel/l3flag.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3format.ins164
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-assign.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-aux.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-basics.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-convert.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-expo.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-extended.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-logic.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-parse.dtx10
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-random.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-round.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-traps.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-trig.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3fp.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fparray.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3int.dtx8
-rw-r--r--macros/latex/contrib/l3kernel/l3intarray.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3kernel-functions.dtx23
-rw-r--r--macros/latex/contrib/l3kernel/l3keys.dtx381
-rw-r--r--macros/latex/contrib/l3kernel/l3legacy.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3luatex.dtx37
-rw-r--r--macros/latex/contrib/l3kernel/l3msg.dtx84
-rw-r--r--macros/latex/contrib/l3kernel/l3names.dtx45
-rw-r--r--macros/latex/contrib/l3kernel/l3news.pdfbin379235 -> 379235 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news01.pdfbin113527 -> 113527 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news02.pdfbin140776 -> 140776 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news03.pdfbin144785 -> 144785 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news04.pdfbin107115 -> 107115 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news05.pdfbin105090 -> 105090 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news06.pdfbin140795 -> 140795 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news07.pdfbin119094 -> 119094 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news08.pdfbin152413 -> 152413 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news09.pdfbin235322 -> 235322 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news10.pdfbin147097 -> 147097 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news11.pdfbin165946 -> 165946 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news12.pdfbin199139 -> 199139 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3prefixes.csv1
-rw-r--r--macros/latex/contrib/l3kernel/l3prefixes.pdfbin75852 -> 75889 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3prg.dtx9
-rw-r--r--macros/latex/contrib/l3kernel/l3prop.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3quark.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3regex.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3seq.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3skip.dtx12
-rw-r--r--macros/latex/contrib/l3kernel/l3sort.dtx27
-rw-r--r--macros/latex/contrib/l3kernel/l3str-convert.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3str.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.pdfbin279956 -> 280064 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.pdfbin228250 -> 228354 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3sys.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.pdfbin217628 -> 217736 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3text-case.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3text-purify.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3text.dtx27
-rw-r--r--macros/latex/contrib/l3kernel/l3tl-analysis.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3tl.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3token.dtx17
-rw-r--r--macros/latex/contrib/l3kernel/l3unicode.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/source3.pdfbin5865524 -> 5844782 bytes
-rw-r--r--macros/latex/contrib/l3kernel/source3.tex2
88 files changed, 646 insertions, 1567 deletions
diff --git a/macros/latex/contrib/l3kernel/CHANGELOG.md b/macros/latex/contrib/l3kernel/CHANGELOG.md
index 1386856157..8a40579449 100644
--- a/macros/latex/contrib/l3kernel/CHANGELOG.md
+++ b/macros/latex/contrib/l3kernel/CHANGELOG.md
@@ -7,6 +7,15 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2020-08-07]
+
+### Changed
+- Color selection implementation
+- Performance enhancements for `\keys_set:nn`
+
+### Fixed
+- Loading generically on ConTeXt (issue #783)
+
## [2020-07-17]
### Added
@@ -725,7 +734,8 @@ this project uses date-based 'snapshot' version identifiers.
- Step func­tions have been added for dim vari­ables,
e.g. `\dim_step_in­line:nnnn`
-[Unreleased]: https://github.com/latex3/latex3/compare/2020-07-17...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2020-08-07...HEAD
+[2020-08-07]: https://github.com/latex3/latex3/compare/2020-07-17...2020-08-07
[2020-07-17]: https://github.com/latex3/latex3/compare/2020-06-18...2020-07-17
[2020-06-18]: https://github.com/latex3/latex3/compare/2020-06-03...2020-06-18
[2020-06-03]: https://github.com/latex3/latex3/compare/2020-05-15...2020-06-03
diff --git a/macros/latex/contrib/l3kernel/README.md b/macros/latex/contrib/l3kernel/README.md
index bfd238bcce..d239d38035 100644
--- a/macros/latex/contrib/l3kernel/README.md
+++ b/macros/latex/contrib/l3kernel/README.md
@@ -1,7 +1,7 @@
LaTeX3 Programming Conventions
==============================
-Release 2020-07-17
+Release 2020-08-07
Overview
--------
diff --git a/macros/latex/contrib/l3kernel/expl3.dtx b/macros/latex/contrib/l3kernel/expl3.dtx
index e1a36c6db5..85284e594a 100644
--- a/macros/latex/contrib/l3kernel/expl3.dtx
+++ b/macros/latex/contrib/l3kernel/expl3.dtx
@@ -24,7 +24,7 @@
%
%<*driver|generic|package|2ekernel>
%</driver|generic|package|2ekernel>
-\def\ExplFileDate{2020-07-17}%
+\def\ExplFileDate{2020-08-07}%
%<*driver>
\documentclass[full]{l3doc}
\usepackage{graphicx}
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -798,16 +798,14 @@
%
% \section{The distribution}
%
-% At present, the \pkg{expl3} modules are designed to be loaded on top
-% of \LaTeXe{}. In time, a \LaTeX3 format may be produced based on this
-% code.
+% The \pkg{expl3} modules are designed to be loaded on top of \LaTeXe{}.
%
% \begin{bfseries}
-% While \pkg{expl3} is still experimental, the bundle is now regarded
-% as broadly stable. The syntax conventions and functions provided
+% The core \pkg{expl3} language is broadly stable, and thus
+% the syntax conventions and functions provided
% are now ready for wider use. There may still be changes to some
% functions, but these will be minor when compared to the scope of
-% \pkg{expl3}.
+% \pkg{expl3}. A robust mechanism is in place for such deprecations.
% \end{bfseries}
%
% The distribution of \pkg{expl3} is split up into three packages on
@@ -821,7 +819,9 @@
% and any changes in this code are very limited. This material is
% therefore suitable for use in third-party packages without concern
% about changes in support. All of this code is documented in
-% \texttt{interface3.pdf}.
+% \texttt{interface3.pdf}. With an up-to-date \LaTeXe{} kernel, this
+% code is built into the format file and therefore can be used
+% without any further steps.
%
% The material in \pkg{l3packages} is also stable, but is not always
% at a programming level: most notably, \pkg{xparse} is stable and
@@ -834,9 +834,9 @@
% in terms of interface and functionality detail. Feedback on these
% modules is extremely valuable.
%
-% \section{Moving from \LaTeXe{} to \LaTeX3}
+% \section{Moving from \LaTeXe{} to \pkg{expl3}}
%
-% To help programmers to use \LaTeX3 code in existing \LaTeXe{} package,
+% To help programmers to use \pkg{expl3} code in existing \LaTeXe{} package,
% some short notes on making the change are probably desirable.
% Suggestions for inclusion here are welcome! Some of the following
% is concerned with code, and some with coding style.
@@ -845,11 +845,10 @@
% \item \pkg{expl3} is mainly focused on programming. This means that
% some areas still require the use of \LaTeXe{} internal macros.
% For example, you may well need \tn{@ifpackageloaded}, as there
-% is currently no native \LaTeX3 package loading module.
+% is currently no native \pkg{expl3} package loading module.
% \item User level macros should be generated using the mechanism
% available in the \pkg{xparse} package, which is part of the
-% \texttt{l3package} bundle, available from CTAN or the \LaTeX3 SVN
-% repository.
+% \texttt{l3package} bundle.
% \item At an internal level, most functions should be generated
% \tn{long} (using \cs{cs_new:Npn}) rather than \enquote{short} (using
% \cs{cs_new_nopar:Npn}).
@@ -894,7 +893,7 @@
% updated in time.
%
% \DescribeOption{check-declarations}
-% All variables used in \LaTeX3 code should be declared. This is enforced
+% All variables used in \pkg{expl3} code should be declared. This is enforced
% by \TeX{} for variable types based on \TeX{} registers, but not for those
% which are constructed using macros as the underlying storage system. The
% \texttt{check-declarations} option enables checking for all variable
@@ -907,7 +906,7 @@
% function name in the \texttt{.log} file. This is useful for debugging
% purposes, as it means that there is a complete list of all functions
% created by each module loaded (with the exceptions of a very small number
-% required by the bootstrap code for \LaTeX3). See also \cs{debug_on:n}
+% required by the bootstrap code). See also \cs{debug_on:n}
% \texttt{\{log-functions\}} in \pkg{l3candidates} for finer control.
%
% \DescribeOption{enable-debug}
@@ -936,6 +935,12 @@
% This option is available to support DVI-based routes that do not
% support the |header| line used by \texttt{dvips}.
%
+% The debugging options may also be given using
+% \verb|\keys_set:nn { sys } { ... }|; the \texttt{backend} option can be
+% given in this way \emph{only} if a backend has not already been loaded.
+% This method of setting options is useful where \pkg{expl3} is pre-loaded
+% by the \LaTeXe{} format.
+%
% \section{Using \pkg{expl3} with formats other than \LaTeXe{}}
%
% As well as the \LaTeXe{} package \pkg{expl3}, there is also a
@@ -1047,6 +1052,24 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\c__kernel_expl_date_tl}
+% The \LaTeXe{} loader stores a private copy of \cs{ExplFileDate},
+% which is fixed when the format is build and cannot be changed later.
+% While \cs{ExplFileDate} ensures that the loader (either
+% \texttt{2ekernel} or \texttt{package}) version matches the version
+% of \file{expl3-code.tex}, this one ensures that the version of an
+% eventual |\usepackage{expl3}| matches the version from the format.
+% It seems to be common to have stray format files in the user tree
+% which trigger errors due to mismatched versions (\emph{e.g.}
+% \url{https://github.com/latex3/latex3/issues/781}).
+% \begin{macrocode}
+%<*2ekernel>
+\global\expandafter\let\csname\detokenize
+ {c__kernel_expl_date_tl}\endcsname\ExplFileDate
+%</2ekernel>
+% \end{macrocode}
+% \end{macro}
+%
% The interlock test itself is simple: \cs{ExplLoaderFileDate} must be
% defined and identical to \cs{ExplFileDate}. As this has to work for
% both \LaTeXe{} and other formats, there is some auto-detection involved.
@@ -1220,6 +1243,88 @@
%<@@=expl>
% \end{macrocode}
%
+% Several times users reported this error when loading \pkg{expl3}:
+% \begin{verbatim}
+% ! Undefined control sequence.
+% l.67 \bool
+% _new:N \g__expl_reload_bool
+% \end{verbatim}
+% raised in the reload block below. This happens because the reload
+% check below assumes that if the boolean \cs{g_@@_reload_bool} doesn't
+% exist, this file is being loaded for the first time, and \pkg{expl3}
+% syntax is on. This is a bit of a stretch for assumptions, but it's
+% valid as long as everything's in sync. However the problem reported
+% happened because of a stray format file in the user tree which didn't
+% have the reload code defined here (commit \texttt{1d16336}), so the
+% \cs{g_@@_reload_bool} doesn't exist, but \pkg{expl3} syntax is off,
+% thus the error.
+%
+% At this point, if we have \cs{c__kernel_expl_date_tl} defined, the
+% situation is straightforward: if it matches \cs{ExplLoaderFileDate},
+% then everything's as expected, so no need to worry. If it doesn't,
+% then the current version of \pkg{expl3} differs from the one in the
+% format, so raise a fatal error: the bahaviour is too unpredictable to
+% continue safely. Also, if the error is to be raised, then we're
+% reloading, which means that \pkg{expl3} syntax is off, so we turn it
+% on for the message.
+% \begin{macrocode}
+\ifcsname\detokenize{c__kernel_expl_date_tl}\endcsname
+ \expandafter\ifx\csname\detokenize
+ {c__kernel_expl_date_tl}\endcsname\ExplLoaderFileDate
+ \else
+ \ExplSyntaxOn
+ \__kernel_msg_set:nnn { kernel } { mismatched-expl3 }
+ {
+ Mismatched~expl3~detected!~Loading~expl3~will~abort.
+ \\ \\
+ The~version~of~expl3~preloaded~in~LaTeX~is~
+ \c__kernel_expl_date_tl,~but~the~version~of~expl3~you~are~
+ trying~to~load~is~dated~\ExplLoaderFileDate.~This~is~most~
+ likely~due~to~a~stray~format~file~in~the~user~tree.~Please~
+ make~sure~that~your~LaTeX~format~is~updated.
+ }
+ \exp_after:wN \ExplSyntaxOff \use:n
+ {
+ \__kernel_msg_critical:nn { kernel } { mismatched-expl3 }
+ \use:c { fi: } \use:c { fi: }
+ }
+ \fi
+% \end{macrocode}
+% If \cs{c__kernel_expl_date_tl} does \emph{not} exist, then we're on
+% uncharted lands (that is, any time prior to the version that
+% introduced this token list :-). Two cases might be here, depending
+% whether \pkg{expl3} is loaded into the kernel or not. If we're loading
+% \pkg{expl3} \enquote{normally} as a package, \pkg{expl3} syntax is on.
+% Otherwise it's already loaded in the kernel and we're reloading
+% \file{expl3.sty} so (\file{expl3-code.tex} doesn't load again and)
+% \pkg{expl3} syntax is off.
+% \begin{macrocode}
+\else
+ \ifodd\csname\detokenize{l__kernel_expl_bool}\endcsname
+% \end{macrocode}
+% Package mode; all should be fine, since \file{expl3.sty} and
+% \file{expl3-code.tex} are both loaded in one go, so versions should
+% match (if they don't, it's detected above).
+% Also, we've just tested that \pkg{expl3} syntax is on, so the reload
+% test below will return false and \cs{bool_new:N} will run correctly.
+% \begin{macrocode}
+ \else
+% \end{macrocode}
+% In this branch we're reloading, but there are still two cases to
+% consider (sigh\ldots); whether the version preloaded in the format
+% is recent enough to have \cs{g_@@_reload_bool} (2020-06-18 and
+% later) or not. If the boolean is there, we have to do nothing
+% because right ahead we deal with this case.
+% If it is not, we just have to create it:
+% \begin{macrocode}
+ \ExplSyntaxOn
+ \bool_if_exist:NF \g_@@_reload_bool
+ { \bool_new:N \g_@@_reload_bool }
+ \ExplSyntaxOff
+ \fi
+\fi
+% \end{macrocode}
+%
% Here we can also detect whether we're reloading. This code goes into
% \texttt{expl3.ltx} and \texttt{expl3.sty}, the former loaded into the
% \LaTeXe{} format. When this code is loaded for the first time, the
diff --git a/macros/latex/contrib/l3kernel/expl3.pdf b/macros/latex/contrib/l3kernel/expl3.pdf
index d76040d2bd..34f0d20a6b 100644
--- a/macros/latex/contrib/l3kernel/expl3.pdf
+++ b/macros/latex/contrib/l3kernel/expl3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/interface3.pdf b/macros/latex/contrib/l3kernel/interface3.pdf
index 3c44cfaf5e..57ea709c8e 100644
--- a/macros/latex/contrib/l3kernel/interface3.pdf
+++ b/macros/latex/contrib/l3kernel/interface3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/interface3.tex b/macros/latex/contrib/l3kernel/interface3.tex
index 467d04cf86..268de9b805 100644
--- a/macros/latex/contrib/l3kernel/interface3.tex
+++ b/macros/latex/contrib/l3kernel/interface3.tex
@@ -54,7 +54,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2020-07-17}
+\date{Released 2020-08-07}
\pagenumbering{roman}
\maketitle
diff --git a/macros/latex/contrib/l3kernel/l3.ins b/macros/latex/contrib/l3kernel/l3.ins
index e54fe0cb51..5e7d1bfff9 100644
--- a/macros/latex/contrib/l3kernel/l3.ins
+++ b/macros/latex/contrib/l3kernel/l3.ins
@@ -58,9 +58,7 @@ and all files in that bundle must be distributed together.
{
\file{expl3-code.tex}
{
- % ======== PACKAGE ONLY ========
\from{expl3.dtx} {package}
- % ==============================
\from{l3bootstrap.dtx} {package}
\from{l3names.dtx} {package}
\from{l3basics.dtx} {package}
diff --git a/macros/latex/contrib/l3kernel/l3alloc.dtx b/macros/latex/contrib/l3kernel/l3alloc.dtx
deleted file mode 100644
index 8f60b563f7..0000000000
--- a/macros/latex/contrib/l3kernel/l3alloc.dtx
+++ /dev/null
@@ -1,195 +0,0 @@
-% \iffalse meta-comment
-%
-%% File: l3alloc.dtx
-%
-% Copyright (C) 1990-2012,2014-2020 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.
-%
-% -----------------------------------------------------------------------
-%
-% The development version of the bundle can be found at
-%
-% https://github.com/latex3/latex3
-%
-% for those people who are interested.
-%
-%<*driver>
-\documentclass[full,kernel]{l3doc}
-\begin{document}
- \DocInput{\jobname.dtx}
-\end{document}
-%</driver>
-% \fi
-%
-% \title{^^A
-% The \pkg{l3alloc} package\\ Register allocation^^A
-% }
-%
-% \author{^^A
-% The \LaTeX3 Project\thanks
-% {^^A
-% E-mail:
-% \href{mailto:latex-team@latex-project.org}
-% {latex-team@latex-project.org}^^A
-% }^^A
-% }
-%
-% \date{Released 2020-07-17}
-%
-% \maketitle
-%
-% \begin{documentation}
-%
-% This module provides the basic mechanism for allocating \TeX{}'s
-% registers when operating in format mode. When loaded as a package on
-% an existing format, the mechanisms from the latter are used.
-%
-% The approach used here is informed by the mechanisms used in plain
-% \TeX{}/\LaTeX{} but noting that newer engines provide us much more
-% flexibility. In addition to this, we do not need allocators for all
-% register types: for example \texttt{toks} are not used by \LaTeX3 whilst
-% reads/writes are handled using a pool and thus do not need a classical
-% allocator.
-%
-% In classical (non-\LuaTeX{}) engines, there are various restriction on
-% registers, for example |\box255| is hard-coded as the output box and
-% inserts have to be allocated below this (not in the extended pool). Rather
-% than worry about this, allocations for the registers affected (\TeX{}
-% |box|, |count|, |dimen| and |skip| types) are simply made only from the
-% extended pool. (There is a performance impact in engines other than
-% \LuaTeX{} but the free use of registers in \pkg{expl3} means that code
-% cannot be sure of obtaining a low-numbered register in any case.)
-%
-% \end{documentation}
-%
-% \begin{implementation}
-%
-% \section{\pkg{l3alloc} implementation}
-%
-% \begin{macrocode}
-%<*initex>
-% \end{macrocode}
-%
-% \begin{macrocode}
-%<@@=alloc>
-% \end{macrocode}
-%
-% \begin{variable}
-% {
-% \g_@@_int_int ,
-% \g_@@_dim_int ,
-% \g_@@_muskip_int ,
-% \g_@@_int_int ,
-% \g_@@_box_int
-% }
-% The core register tracking is done using the same raw \TeX{} count
-% registers as reserved by plain \TeX{} and \LaTeXe{}, as there may be the
-% odd piece of generic code that needs to work by number. However, as not
-% all of our variables work the same way, some of the older registers are
-% simply ignored. For the same reason, there is no special status for the
-% low-numbers registers other than counts. To avoid having to worry about
-% inserts and reflecting the register availability in \eTeX{}, the lower
-% register space is unused here (though is available for hard-coded
-% use).
-% \begin{macrocode}
-\tex_countdef:D \g_@@_int_int = 10 ~
-\tex_countdef:D \g_@@_dim_int = 11 ~
-\tex_countdef:D \g_@@_skip_int = 12 ~
-\tex_countdef:D \g_@@_muskip_int = 13 ~
-\tex_countdef:D \g_@@_box_int = 14 ~
-\g_@@_int_int = 255 ~
-\g_@@_dim_int = 255 ~
-\g_@@_skip_int = 255 ~
-\g_@@_muskip_int = 0 ~
-\g_@@_box_int = 255 ~
-% \end{macrocode}
-% \end{variable}
-%
-% \begin{variable}
-% {
-% \g_@@_attribute_int ,
-% \g_@@_bytecode_int ,
-% \g_@@_chunkname_int ,
-% \g_@@_whatsit_int
-% }
-% To allow \LuaTeX{} to load |ltluatex.lua| for generic \Lua{} support, a
-% small number of counts have to be correctly named at the \TeX{} level.
-% At present there are no \pkg{expl3} allocators for these concepts so the
-% names and numbers of the tracking variables may change.
-% \begin{macrocode}
-\tex_ifdefined:D \tex_luatexversion:D
- \tex_global:D \tex_countdef:D \g_@@_attribute_int = 21 ~
- \tex_global:D \tex_countdef:D \g_@@_bytecode_int = 22 ~
- \tex_global:D \tex_countdef:D \g_@@_chunkname_int = 23 ~
- \tex_global:D \tex_countdef:D \g_@@_whatsit_int = 24 ~
-\tex_fi:D
-% \end{macrocode}
-% \end{variable}
-%
-% \begin{macro}
-% {\box_new:N, \dim_new:N, \int_new:N, \muskip_new:N \skip_new:N}
-% Each of the public allocators is a wrapper around the one internal
-% function needed here.
-% \begin{macrocode}
-\cs_new_protected:Npx \box_new:N #1
- {
- \exp_not:N \@@_reg:nNnN { box }
- \cs_if_exist:NTF \tex_luatexversion:D
- { \tex_chardef:D }
- {
- \cs_if_exist:NTF \tex_omathchardef:D
- { \tex_omathchardef:D }
- { \tex_mathchardef:D }
- }
- \c_max_register_int
- #1
- }
-\cs_new_protected:Npn \dim_new:N #1
- { \@@_reg:nNnN { dim } \tex_dimendef:D \c_max_register_int #1 }
-\cs_new_protected:Npn \int_new:N #1
- { \@@_reg:nNnN { int } \tex_countdef:D \c_max_register_int #1 }
-\cs_new_protected:Npn \muskip_new:N #1
- { \@@_reg:nNnN { muskip } \tex_muskipdef:D \c_max_register_int #1 }
-\cs_new_protected:Npn \skip_new:N #1
- { \@@_reg:nNnN { skip } \tex_skipdef:D \c_max_register_int #1 }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_reg:nNNN}
-% The allocator itself is modelled somewhat on \LaTeXe{}'s \tn{e@alloc},
-% though there is no need to set \tn{allocationnumber}.
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_reg:nNnN #1#2#3#4
- {
- \__kernel_chk_if_free_cs:N #4
- \int_compare:nNnTF { \int_use:c { g_@@_ #1 _int } } < {#3}
- {
- \int_gincr:c { g_@@_ #1 _int }
- \tex_global:D #2 #4 \int_use:c { g_@@_ #1 _int }
- \iow_log:x
- {
- \token_to_str:N #4 ~=~ #1 ~register~
- \int_use:c { g_@@_ #1 _int }
- }
- }
- { \__kernel_msg_fatal:nnx { kernel } { out-of-registers } {#1} }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-%</initex>
-% \end{macrocode}
-%
-% \end{implementation}
-%
-% \PrintIndex
diff --git a/macros/latex/contrib/l3kernel/l3basics.dtx b/macros/latex/contrib/l3kernel/l3basics.dtx
index 3cee7e2e9e..ba422a7961 100644
--- a/macros/latex/contrib/l3kernel/l3basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -1339,7 +1339,7 @@
% \section{\pkg{l3basics} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \subsection{Renaming some \TeX{} primitives (again)}
@@ -3277,7 +3277,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3bootstrap.dtx b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
index 5043d39d56..cf749116d6 100644
--- a/macros/latex/contrib/l3kernel/l3bootstrap.dtx
+++ b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -53,9 +53,7 @@
%
% The modules documented in \file{source3} are designed to be used on top of
% \LaTeXe{} and are loaded all as one with the usual |\usepackage{expl3}| or
-% |\RequirePackage{expl3}| instructions. These modules will also form the
-% basis of the \LaTeX3 format, but work in this area is incomplete and not
-% included in this documentation at present.
+% |\RequirePackage{expl3}| instructions.
%
% As the modules use a coding syntax different from standard
% \LaTeXe{} it provides a few functions for setting it up.
@@ -123,43 +121,11 @@
% \section{\pkg{l3bootstrap} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
%<@@=kernel>
% \end{macrocode}
%
-% \subsection{Format-specific code}
-%
-% The very first thing to do is to bootstrap the \IniTeX{} system so
-% that everything else will actually work. \TeX{} does not start with
-% some pretty basic character codes set up.
-% \begin{macrocode}
-%<*initex>
-\catcode `\{ = 1 %
-\catcode `\} = 2 %
-\catcode `\# = 6 %
-\catcode `\^ = 7 %
-%</initex>
-% \end{macrocode}
-%
-% Tab characters should not show up in the code, but to be on the
-% safe side.
-% \begin{macrocode}
-%<*initex>
-\catcode `\^^I = 10 %
-%</initex>
-% \end{macrocode}
-%
-% For \LuaTeX{}, the extra primitives need to be enabled. This is not needed
-% in package mode: common formats have the primitives enabled.
-% \begin{macrocode}
-%<*initex>
-\begingroup\expandafter\expandafter\expandafter\endgroup
-\expandafter\ifx\csname directlua\endcsname\relax
-\else
- \directlua{tex.enableprimitives("", tex.extraprimitives())}%
-\fi
-%</initex>
-% \end{macrocode}
+% \subsection{\LuaTeX{}-specific code}
%
% Depending on the versions available, the \LaTeX{} format may not have
% the raw |\Umath| primitive names available. We fix that globally:
@@ -169,7 +135,6 @@
% a newer format anyway and as they all start |\U| this should be
% reasonably safe.
% \begin{macrocode}
-%<*package>
\begingroup
\expandafter\ifx\csname directlua\endcsname\relax
\else
@@ -187,7 +152,6 @@
}%
\fi
\endgroup
-%</package>
% \end{macrocode}
%
% \subsection{The \tn{pdfstrcmp} primitive in \XeTeX{}}
@@ -215,15 +179,13 @@
\ifnum\luatexversion<95 %
\else
% \end{macrocode}
-% In package mode for \LuaTeX{} we make sure the basic support is loaded:
+% 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
-%</package>
\directlua{require("expl3")}%
% \end{macrocode}
% As the user might be making a custom format, no assumption is made about
@@ -289,24 +251,6 @@
\fi
=0 %
\newlinechar`\^^J %
-%<*initex>
- \def\LineBreak{^^J}%
- \edef\next
- {%
- \errhelp
- {%
- \LongText
- For pdfTeX and XeTeX the '-etex' command-line switch is also
- needed.\LineBreak
- \LineBreak
- Format building will abort!\LineBreak
- }%
- \errmessage{\ShortText}%
- \endgroup
- \noexpand\end
- }%
-%</initex>
-%<*package>
\def\LineBreak{\noexpand\MessageBreak}%
\expandafter\ifx\csname PackageError\endcsname\relax
\def\LineBreak{^^J}%
@@ -323,18 +267,14 @@
\endgroup
\noexpand\endinput
}%
-%</package>
\fi
\next
% \end{macrocode}
%
% \subsection{Extending allocators}
%
-% In format mode, allocating registers is handled by \pkg{l3alloc}. However, in
-% package mode it's much safer to rely on more general code. For example,
-% the ability to extend \TeX{}'s allocation routine to allow for \eTeX{} has
+% The ability to extend \TeX{}'s allocation routine to allow for \eTeX{} has
% been around since 1997 in the \pkg{etex} package.
-%
% Loading this support is delayed until here as we are now sure that the
% \eTeX{} extensions and \tn{pdfstrcmp} or equivalent are available. Thus
% there is no danger of an \enquote{uncontrolled} error if the engine
@@ -353,7 +293,6 @@
% here is done using a group and \tn{ifx} test as we are not quite in the
% position to have a single name for \tn{pdfstrcmp} just yet.
% \begin{macrocode}
-%<*package>
\begingroup
\def\@tempa{LaTeX2e}%
\def\next{}%
@@ -368,98 +307,6 @@
\fi
\expandafter\endgroup
\next
-%</package>
-% \end{macrocode}
-%
-% \subsection{Character data}
-%
-% \TeX{} needs various pieces of data to be set about characters, in particular
-% which ones to treat as letters and which \tn{lccode} values apply as these
-% affect hyphenation. It makes most sense to set this and related information
-% up in one place. Whilst for \LuaTeX{} hyphenation patterns can be read
-% anywhere, other engines have to build them into the format and so we
-% \emph{must} do this set up before reading the patterns. For the Unicode
-% engines, there are shared loaders available to obtain the relevant
-% information directly from the Unicode Consortium data files. These need
-% standard (Ini)\TeX{} category codes and primitive availability and must
-% therefore loaded \emph{very} early. This has a knock-on effect on the
-% $8$-bit set up: it makes sense to do the definitions for those here as
-% well so it is all in one place.
-%
-% For \XeTeX{} and \LuaTeX{}, which are natively Unicode engines, simply
-% load the Unicode data.
-% \begin{macrocode}
-%<*initex>
-\ifdefined\Umathcode
- \input load-unicode-data %
- \input load-unicode-math-classes %
-\else
-% \end{macrocode}
-% For the $8$-bit engines a font encoding scheme must be chosen. At present,
-% this is the EC (|T1|) scheme, with the assumption that languages for which
-% this is not appropriate will be used with one of the Unicode engines.
-% \begin{macrocode}
- \begingroup
-% \end{macrocode}
-% Lower case chars: map to themselves when lower casing and down by |"20| when
-% upper casing. (The characters |a|--|z| are set up correctly by \IniTeX{}.)
-% \begin{macrocode}
- \def\temp{%
- \ifnum\count0>\count2 %
- \else
- \global\lccode\count0 = \count0 %
- \global\uccode\count0 = \numexpr\count0 - "20\relax
- \advance\count0 by 1 %
- \expandafter\temp
- \fi
- }
- \count0 = "A0 %
- \count2 = "BC %
- \temp
- \count0 = "E0 %
- \count2 = "FF %
- \temp
-% \end{macrocode}
-% Upper case chars: map up by |"20| when lower casing, to themselves when upper
-% casing and require an \tn{sfcode} of $999$. (The characters |A|--|Z| are set
-% up correctly by \IniTeX{}.)
-% \begin{macrocode}
- \def\temp{%
- \ifnum\count0>\count2 %
- \else
- \global\lccode\count0 = \numexpr\count0 + "20\relax
- \global\uccode\count0 = \count0 %
- \global\sfcode\count0 = 999 %
- \advance\count0 by 1 %
- \expandafter\temp
- \fi
- }
- \count0 = "80 %
- \count2 = "9C %
- \temp
- \count0 = "C0 %
- \count2 = "DF %
- \temp
-% \end{macrocode}
-% A few special cases where things are not as one might expect using the above
-% pattern: dotless-I, dotless-J, dotted-I and d-bar.
-% \begin{macrocode}
- \global\lccode`\^^Y = `\^^Y %
- \global\uccode`\^^Y = `\I %
- \global\lccode`\^^Z = `\^^Z %
- \global\uccode`\^^Y = `\J %
- \global\lccode"9D = `\i %
- \global\uccode"9D = "9D %
- \global\lccode"9E = "9E %
- \global\uccode"9E = "D0 %
-% \end{macrocode}
-% Allow hyphenation at a zero-width glyph (used to break up ligatures or
-% to place accents between characters).
-% \begin{macrocode}
- \global\lccode23 = 23 %
- \endgroup
-\fi
-%</initex>
% \end{macrocode}
%
% \subsection{The \LaTeX3 code environment}
@@ -470,14 +317,11 @@
% Before changing any category codes, in package mode we need to save
% the situation before loading. Note the set up here means that once applied
% \cs{ExplSyntaxOff} becomes a \enquote{do nothing} command until
-% \cs{ExplSyntaxOn} is used. For format mode, there is no need to save
-% category codes so that step is skipped.
+% \cs{ExplSyntaxOn} is used.
% \begin{macrocode}
-\protected\def\ExplSyntaxOff{}%
-%<*package>
\protected\edef\ExplSyntaxOff
{%
- \protected\def\ExplSyntaxOff{}%
+ \protected\def\noexpand\ExplSyntaxOff{}%
\catcode 9 = \the\catcode 9\relax
\catcode 32 = \the\catcode 32\relax
\catcode 34 = \the\catcode 34\relax
@@ -490,7 +334,6 @@
\endlinechar = \the\endlinechar\relax
\chardef\csname\detokenize{l_@@_expl_bool}\endcsname = 0\relax
}%
-%</package>
% \end{macrocode}
% \end{macro}
%
@@ -560,7 +403,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3box.dtx b/macros/latex/contrib/l3kernel/l3box.dtx
index e604fe5e4f..8adeb3fb6d 100644
--- a/macros/latex/contrib/l3kernel/l3box.dtx
+++ b/macros/latex/contrib/l3kernel/l3box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -887,7 +887,7 @@
% \section{\pkg{l3box} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -917,13 +917,11 @@
% Defining a new \meta{box} register: remember that box $255$ is not
% generally available.
% \begin{macrocode}
-%<*package>
\cs_new_protected:Npn \box_new:N #1
{
\__kernel_chk_if_free_cs:N #1
\cs:w newbox \cs_end: #1
}
-%</package>
\cs_generate_variant:Nn \box_new:N { c }
% \end{macrocode}
%
@@ -2238,7 +2236,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3candidates.dtx b/macros/latex/contrib/l3kernel/l3candidates.dtx
index d8d6bf6808..7e2cf8df90 100644
--- a/macros/latex/contrib/l3kernel/l3candidates.dtx
+++ b/macros/latex/contrib/l3kernel/l3candidates.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -690,7 +690,7 @@
% \section{\pkg{l3candidates} Implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \subsection{Additions to \pkg{l3box}}
@@ -1638,7 +1638,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3cctab.dtx b/macros/latex/contrib/l3kernel/l3cctab.dtx
index 25becd59fd..a8c063b944 100644
--- a/macros/latex/contrib/l3kernel/l3cctab.dtx
+++ b/macros/latex/contrib/l3kernel/l3cctab.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -169,7 +169,7 @@
% \section{\pkg{l3cctab} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -242,6 +242,8 @@
%
% First, the \LuaTeX{} case.
% Creating a new category code table is done like other registers.
+% In Con\TeX{}t, \tn{newcatcodetable} does not include the initialisation,
+% so that is added explicitly.
% \begin{macrocode}
\sys_if_engine_luatex:TF
{
@@ -250,25 +252,11 @@
\__kernel_chk_if_free_cs:N #1
\@@_new:N #1
}
-%<*initex>
\cs_new_protected:Npn \@@_new:N #1
{
- \int_gincr:N \g_@@_allocate_int
- \int_compare:nNnTF
- \g_@@_allocate_int > \c_max_register_int
- {
- \__kernel_msg_fatal:nnx
- { kernel } { out-of-registers } { cctab }
- }
- {
- \tex_global:D \tex_chardef:D #1 \g_@@_allocate_int
- \tex_initcatcodetable:D #1
- }
+ \newcatcodetable #1
+ \tex_initcatcodetable:D #1
}
-%</initex>
-%<*package>
- \cs_new_eq:NN \@@_new:N \newcatcodetable
-%</package>
}
% \end{macrocode}
% Now the case for other engines. Here, each table is an integer
@@ -716,14 +704,14 @@
{
\cs_new_protected:Npn \@@_chk_if_valid_aux:NTF #1
{
-%<*initex>
- \bool_lazy_and:nnTF
- { \int_if_odd_p:n {#1} }
- { \int_compare_p:nNn {#1-1} < { \g_@@_allocate_int } }
-%</initex>
-%<*package>
\int_compare:nNnTF {#1-1} < { \e@alloc@ccodetable@count }
-%</package>
+ }
+ \cs_if_exist:NT \c_syst_catcodes_n
+ {
+ \cs_gset_protected:Npn \@@_chk_if_valid_aux:NTF #1
+ {
+ \int_compare:nTF { #1 <= \c_syst_catcodes_n }
+ }
}
}
{
@@ -883,7 +871,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3clist.dtx b/macros/latex/contrib/l3kernel/l3clist.dtx
index da18711b6e..f32ad49748 100644
--- a/macros/latex/contrib/l3kernel/l3clist.dtx
+++ b/macros/latex/contrib/l3kernel/l3clist.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -762,7 +762,7 @@
% \TestFiles{m3clist002}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -2058,7 +2058,7 @@
% \end{variable}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3coffins.dtx b/macros/latex/contrib/l3kernel/l3coffins.dtx
index 8c9f29e93b..f828834daf 100644
--- a/macros/latex/contrib/l3kernel/l3coffins.dtx
+++ b/macros/latex/contrib/l3kernel/l3coffins.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -408,7 +408,7 @@
% \section{\pkg{l3coffins} Implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -667,6 +667,7 @@
% \vcoffin_gset:Nnn, \vcoffin_gset:cnn
% }
% \begin{macro}{\@@_set_vertical:NnnNN}
+% \begin{macro}{\@@_set_vertical_aux:}
% Setting vertical coffins is more complex. First, the material is
% typeset with a given width. The default handles and poles are set as
% for a horizontal coffin, before finding the top baseline using a
@@ -694,10 +695,7 @@
#4 #1
{
\dim_set:Nn \tex_hsize:D {#2}
-%<*package>
- \dim_set_eq:NN \linewidth \tex_hsize:D
- \dim_set_eq:NN \columnwidth \tex_hsize:D
-%</package>
+ \@@_set_vertical_aux:
#3
}
#5 #1
@@ -715,9 +713,17 @@
\box_clear:N \l_@@_internal_box
}
}
+\cs_new_protected:Npx \@@_set_vertical_aux:
+ {
+ \cs_if_exist:NT \linewidth
+ { \dim_set_eq:NN \linewidth \tex_hsize:D }
+ \cs_if_exist:NT \columnwidth
+ { \dim_set_eq:NN \columnwidth \tex_hsize:D }
+ }
% \end{macrocode}
% \end{macro}
% \end{macro}
+% \end{macro}
%
% \begin{macro}
% {\hcoffin_set:Nw, \hcoffin_set:cw, \hcoffin_gset:Nw, \hcoffin_gset:cw}
@@ -783,10 +789,7 @@
{
#3 #1
\dim_set:Nn \tex_hsize:D {#2}
-%<*package>
- \dim_set_eq:NN \linewidth \tex_hsize:D
- \dim_set_eq:NN \columnwidth \tex_hsize:D
-%</package>
+ \@@_set_vertical_aux:
\cs_set_protected:Npn #4
{
#5
@@ -2233,17 +2236,48 @@
% flexible.
% \begin{macrocode}
\tl_new:N \l_@@_display_font_tl
-%<*package>
-\tl_set:Nn \l_@@_display_font_tl { \sffamily \tiny }
-%</package>
+\cs_if_exist:NTF \AtBeginDocument
+ { \AtBeginDocument }
+ { \use:n }
+ {
+ \tl_set:Nx \l_@@_display_font_tl
+ {
+ \cs_if_exist:NT \sffamily { \exp_not:N \sffamily }
+ \cs_if_exist:NT \tiny { \exp_not:N \tiny }
+ }
+ }
% \end{macrocode}
% \end{variable}
%
% \begin{macro}{\@@_color:n}
% Calls \tn{color}, and otherwise does nothing if \tn{color} is not defined.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_color:n #1
- { \cs_if_exist:NT \color { \color {#1} } }
+\cs_if_exist:NTF \AtBeginDocument
+ { \AtBeginDocument }
+ { \use:n }
+ {
+ \cs_new_protected:Npx \@@_color:n #1
+ {
+ \cs_if_exist:NTF \color_select:n
+ { \color_select:n {#1} }
+ {
+ \cs_if_exist:NT \color
+ { \exp_not:N \color {#1} }
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_rule:nn}
+% Abstract out creation of rules here until there is a higher-level interface.
+% \begin{macrocode}
+\cs_new_protected:Npx \@@_rule:nn #1#2
+ {
+ \cs_if_exist:NTF \rule
+ { \exp_not:N \rule {#1} {#2} }
+ { \hbox:n { \tex_vrule:D width #1 height #2 \scan_stop: } }
+ }
% \end{macrocode}
% \end{macro}
%
@@ -2259,21 +2293,14 @@
{
\hcoffin_set:Nn \l_@@_display_pole_coffin
{
-%<*initex>
- \hbox:n { \tex_vrule:D width 1pt height 1pt \scan_stop: }
-%</initex>
-%<*package>
\@@_color:n {#4}
- \rule { 1pt } { 1pt }
-%</package>
+ \@@_rule:nn { 1pt } { 1pt }
}
\@@_attach_mark:NnnNnnnn #1 {#2} {#3}
\l_@@_display_pole_coffin { hc } { vc } { 0pt } { 0pt }
\hcoffin_set:Nn \l_@@_display_coord_coffin
{
-%<*package>
\@@_color:n {#4}
-%</package>
\l_@@_display_font_tl
( \tl_to_str:n { #2 , #3 } )
}
@@ -2325,13 +2352,8 @@
{
\hcoffin_set:Nn \l_@@_display_pole_coffin
{
-%<*initex>
- \hbox:n { \tex_vrule:D width 1pt height 1pt \scan_stop: }
-%</initex>
-%<*package>
\@@_color:n {#2}
- \rule { 1pt } { 1pt }
-%</package>
+ \@@_rule:nn { 1pt } { 1pt }
}
\prop_set_eq:Nc \l_@@_display_poles_prop
{ coffin ~ \@@_to_value:N #1 ~ poles }
@@ -2371,9 +2393,7 @@
{ 0pt } { 0pt }
\hcoffin_set:Nn \l_@@_display_coord_coffin
{
-%<*package>
\@@_color:n {#6}
-%</package>
\l_@@_display_font_tl
( \tl_to_str:n { #1 , ##1 } )
}
@@ -2511,7 +2531,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3color-base.dtx b/macros/latex/contrib/l3kernel/l3color-base.dtx
index a01acb8fa1..628a4c6f23 100644
--- a/macros/latex/contrib/l3kernel/l3color-base.dtx
+++ b/macros/latex/contrib/l3kernel/l3color-base.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -85,7 +85,7 @@
% \section{\pkg{l3color-base} Implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -138,9 +138,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \color_ensure_current:
{
-%<*package>
\@@_backend_pickup:N \l_@@_current_tl
-%</package>
\@@_select:N \l_@@_current_tl
}
% \end{macrocode}
@@ -162,7 +160,7 @@
\cs_new_protected:Npn \@@_select:N #1
{ \exp_after:wN \@@_select:nn #1 }
\cs_new_protected:Npn \@@_select:nn #1#2
- { \use:c { @@_backend_ #1 :n } {#2} }
+ { \use:c { @@_backend_select_ #1 :n } {#2} }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -176,7 +174,7 @@
% \end{variable}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3debug.dtx b/macros/latex/contrib/l3kernel/l3debug.dtx
index 632e62e58b..5f8f0b93e9 100644
--- a/macros/latex/contrib/l3kernel/l3debug.dtx
+++ b/macros/latex/contrib/l3kernel/l3debug.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -119,7 +119,7 @@
% \section{\pkg{l3debug} Implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -1476,7 +1476,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3deprecation.dtx b/macros/latex/contrib/l3kernel/l3deprecation.dtx
index 8faf863504..10dae76668 100644
--- a/macros/latex/contrib/l3kernel/l3deprecation.dtx
+++ b/macros/latex/contrib/l3kernel/l3deprecation.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -86,7 +86,7 @@
% \section{\pkg{l3deprecation} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -836,7 +836,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3doc.dtx b/macros/latex/contrib/l3kernel/l3doc.dtx
index 0954108c96..9e7498e265 100644
--- a/macros/latex/contrib/l3kernel/l3doc.dtx
+++ b/macros/latex/contrib/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 2020-07-17}
+% \date{Released 2020-08-07}
% \maketitle
% \tableofcontents
%
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.dtx b/macros/latex/contrib/l3kernel/l3docstrip.dtx
index bf56cdd54f..24a061d192 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.dtx
+++ b/macros/latex/contrib/l3kernel/l3docstrip.dtx
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.pdf b/macros/latex/contrib/l3kernel/l3docstrip.pdf
index 4c59fc9770..c5e42ecbc2 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.pdf
+++ b/macros/latex/contrib/l3kernel/l3docstrip.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3expan.dtx b/macros/latex/contrib/l3kernel/l3expan.dtx
index e902085148..d2ef71dac4 100644
--- a/macros/latex/contrib/l3kernel/l3expan.dtx
+++ b/macros/latex/contrib/l3kernel/l3expan.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -937,7 +937,7 @@
% \section{\pkg{l3expan} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -2909,7 +2909,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3file.dtx b/macros/latex/contrib/l3kernel/l3file.dtx
index 7ee7df5347..553c5419cb 100644
--- a/macros/latex/contrib/l3kernel/l3file.dtx
+++ b/macros/latex/contrib/l3kernel/l3file.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -910,7 +910,7 @@
% \TestFiles{m3file001}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \subsection{Input operations}
@@ -939,16 +939,9 @@
%
% \begin{variable}{\g_@@_streams_seq}
% A list of the currently-available input streams to be used as a
-% stack. In format mode, all streams (from $0$ to~$15$) are
-% available, while the package requests streams to \LaTeXe{} as they
-% are needed (initially none are needed), so the starting point
-% varies!
+% stack.
% \begin{macrocode}
\seq_new:N \g_@@_streams_seq
-%<*initex>
-\seq_gset_split:Nnn \g_@@_streams_seq { , }
- { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 }
-%</initex>
% \end{macrocode}
% \end{variable}
%
@@ -970,7 +963,6 @@
% it holds the value of the \emph{last} stream allocated.
% \begin{macrocode}
\prop_new:N \g_@@_streams_prop
-%<*package>
\int_step_inline:nnn
{ 0 }
{
@@ -984,7 +976,6 @@
{
\prop_gput:Nnn \g_@@_streams_prop {#1} { Reserved~by~format }
}
-%</package>
% \end{macrocode}
% \end{variable}
%
@@ -1043,7 +1034,7 @@
% \end{macro}
%
% \begin{macro}{\@@_new:N}
-% In package mode, streams are reserved using \tn{newread} before they
+% Streams are reserved using \tn{newread} before they
% can be managed by \pkg{ior}. To prevent \pkg{ior} from being
% affected by redefinitions of \tn{newread} (such as done by the
% third-party package \pkg{morewrites}), this macro is saved here
@@ -1053,7 +1044,6 @@
% that \tn{newread} works like our own: it actually checks before
% altering definition.
% \begin{macrocode}
-%<*package>
\exp_args:NNf \cs_new_protected:Npn \@@_new:N
{ \exp_args:NNc \exp_after:wN \exp_stop_f: { newread } }
\cs_if_exist:NT \normalend
@@ -1065,15 +1055,13 @@
\@@_new_aux:N #1
}
}
-%</package>
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\__kernel_ior_open:Nn, \__kernel_ior_open:No}
% \begin{macro}{\@@_open_stream:Nn}
% The stream allocation itself uses the fact that there is a list of all of
-% those available, so allocation is simply a question of using the number at
-% the top of the list. In package mode, life gets more complex as it's
+% those available. Life gets more complex as it's
% important to keep things in sync. That is done using a two-part approach:
% any streams that have already been taken up by \pkg{ior} but are now free
% are tracked, so we first try those. If that fails, ask plain \TeX{} or \LaTeXe{}
@@ -1084,16 +1072,11 @@
\ior_close:N #1
\seq_gpop:NNTF \g_@@_streams_seq \l_@@_stream_tl
{ \@@_open_stream:Nn #1 {#2} }
-%<*initex>
- { \__kernel_msg_fatal:nn { kernel } { input-streams-exhausted } }
-%</initex>
-%<*package>
{
\@@_new:N #1
\tl_set:Nx \l_@@_stream_tl { \int_eval:n {#1} }
\@@_open_stream:Nn #1 {#2}
}
-%</package>
}
\cs_generate_variant:Nn \__kernel_ior_open:Nn { No }
% \end{macrocode}
@@ -1392,20 +1375,9 @@
%
% \begin{variable}{\g_@@_streams_seq}
% A list of the currently-available output streams to be used as a
-% stack. The stream $18$ is special, as \tn{write}18 is used to
-% denote commands to be sent to the OS\@.
+% stack.
% \begin{macrocode}
\seq_new:N \g_@@_streams_seq
-%<*initex>
-\exp_args:Nnx \use:n
- { \seq_gset_split:Nnn \g_@@_streams_seq { } }
- {
- \int_step_function:nnN { 0 } { \c_term_iow }
- \prg_do_nothing:
- }
-\int_compare:nNnF \c_term_iow < { 18 }
- { \seq_gremove_all:Nn \g_@@_streams_seq { 18 } }
-%</initex>
% \end{macrocode}
% \end{variable}
%
@@ -1421,7 +1393,6 @@
% check on.
% \begin{macrocode}
\prop_new:N \g_@@_streams_prop
-%<*package>
\int_step_inline:nnn
{ 0 }
{
@@ -1435,7 +1406,6 @@
{
\prop_gput:Nnn \g_@@_streams_prop {#1} { Reserved~by~format }
}
-%</package>
% \end{macrocode}
% \end{variable}
%
@@ -1483,13 +1453,11 @@
% \end{variable}
%
% \begin{macro}{\@@_new:N}
-% As for read streams, copy \tn{newwrite} in package mode, making sure
+% As for read streams, copy \tn{newwrite}, making sure
% that it is not \tn{outer}.
% \begin{macrocode}
-%<*package>
\exp_args:NNf \cs_new_protected:Npn \@@_new:N
{ \exp_args:NNc \exp_after:wN \exp_stop_f: { newwrite } }
-%</package>
% \end{macrocode}
% \end{macro}
%
@@ -1512,16 +1480,11 @@
\iow_close:N #1
\seq_gpop:NNTF \g_@@_streams_seq \l_@@_stream_tl
{ \@@_open_stream:NV #1 \l_@@_file_name_tl }
-%<*initex>
- { \__kernel_msg_fatal:nn { kernel } { output-streams-exhausted } }
-%</initex>
-%<*package>
{
\@@_new:N #1
\tl_set:Nx \l_@@_stream_tl { \int_eval:n {#1} }
\@@_open_stream:NV #1 \l_@@_file_name_tl
}
-%</package>
}
\cs_generate_variant:Nn \iow_open:Nn { c }
\cs_new_protected:Npn \@@_open_stream:Nn #1#2
@@ -1876,7 +1839,7 @@
\cs_new_protected:Npn \iow_wrap:nnnN #1#2#3#4
{
\group_begin:
-%<package> \cs_if_exist_use:N \conditionally@traceoff
+ \cs_if_exist_use:N \conditionally@traceoff
\int_set:Nn \tex_escapechar:D { -1 }
\cs_set:Npx \{ { \token_to_str:N \{ }
\cs_set:Npx \# { \token_to_str:N \# }
@@ -1897,7 +1860,7 @@
% definition: it only works in the first argument of
% \cs{iow_wrap:nnnN}.
% \begin{macrocode}
-%<package> \cs_set_eq:NN \protect \token_to_str:N
+ \cs_set_eq:NN \protect \token_to_str:N
\tl_set:Nx \l_@@_wrap_tl {#1}
\cs_set_eq:NN \iow_allow_break: \@@_allow_break_error:
\cs_set_eq:NN \iow_indent:n \@@_indent_error:n
@@ -2351,7 +2314,6 @@
% \tn{@currnamestack} is empty so is skipped.
% \begin{macrocode}
\seq_new:N \g_@@_stack_seq
-%<*package>
\group_begin:
\cs_set_protected:Npn \@@_tmp:w #1#2#3
{
@@ -2376,25 +2338,16 @@
{ \exp_after:wN \@@_tmp:w \@currnamestack }
}
\group_end:
-%</package>
% \end{macrocode}
% \end{variable}
%
% \begin{variable}{\g_@@_record_seq}
% The total list of files used is recorded separately from the current
% file stack, as nothing is ever popped from this list. The current
-% file name should be included in the file list! In format mode, this
-% is done at the very start of the \TeX{} run. In package mode we
+% file name should be included in the file list! We
% will eventually copy the contents of \cs{@filelist}.
% \begin{macrocode}
\seq_new:N \g_@@_record_seq
-%<*initex>
-\tex_everyjob:D \exp_after:wN
- {
- \tex_the:D \tex_everyjob:D
- \seq_gput_right:NV \g_@@_record_seq \g_file_curr_name_str
- }
-%</initex>
% \end{macrocode}
% \end{variable}
%
@@ -2424,11 +2377,9 @@
% \end{variable}
%
% \begin{variable}{\l_@@_tmp_seq}
-% Scratch space for comma list conversion in package mode.
+% Scratch space for comma list conversion.
% \begin{macrocode}
-%<*package>
\seq_new:N \l_@@_tmp_seq
-%</package>
% \end{macrocode}
% \end{variable}
%
@@ -2734,13 +2685,11 @@
{
\seq_map_tokens:Nn \l_file_search_path_seq
{ \@@_full_name_aux:Nnn \seq_map_break:n {#1} }
-%<*package>
\cs_if_exist:NT \input@path
{
\tl_map_tokens:Nn \input@path
{ \@@_full_name_aux:Nnn \tl_map_break:n {#1} }
}
-%</package>
\@@_name_end:
}
{ \@@_ext_check:n {#1} }
@@ -2879,13 +2828,11 @@
\@@_get_full_name_search:nN { } \use:n
\seq_map_inline:Nn \l_file_search_path_seq
{ \@@_get_full_name_search:nN { ##1 / } \seq_map_break:n }
-%<*package>
\cs_if_exist:NT \input@path
{
\tl_map_inline:Nn \input@path
{ \@@_get_full_name_search:nN { ##1 } \tl_map_break:n }
}
-%</package>
\tl_set:Nn \l_@@_full_name_tl { \q_no_value }
\prg_break_point:
\quark_if_no_value:NTF \l_@@_full_name_tl
@@ -3319,14 +3266,9 @@
}
\cs_new_protected:Npx \@@_input:n #1
{
-%<*initex>
- \seq_gput_right:Nn \exp_not:N \g_@@_record_seq {#1}
-%</initex>
-%<*package>
\exp_not:N \clist_if_exist:NTF \exp_not:N \@filelist
{ \exp_not:N \@addtofilelist {#1} }
{ \seq_gput_right:Nn \exp_not:N \g_@@_record_seq {#1} }
-%</package>
\exp_not:N \@@_input_push:n {#1}
\exp_not:N \tex_input:D
\sys_if_engine_luatex:TF
@@ -3353,17 +3295,13 @@
\str_gset_eq:NN \g_file_curr_name_str \l_@@_name_str
\str_gset_eq:NN \g_file_curr_ext_str \l_@@_ext_str
}
-%<*package>
\cs_new_eq:NN \__kernel_file_input_push:n \@@_input_push:n
-%</package>
\cs_new_protected:Npn \@@_input_pop:
{
\seq_gpop:NN \g_@@_stack_seq \l_@@_internal_tl
\exp_after:wN \@@_input_pop:nnn \l_@@_internal_tl
}
-%<*package>
\cs_new_eq:NN \__kernel_file_input_pop: \@@_input_pop:
-%</package>
\cs_new_protected:Npn \@@_input_pop:nnn #1#2#3
{
\str_gset:Nn \g_file_curr_dir_str {#1}
@@ -3498,13 +3436,11 @@
\cs_new_protected:Npn \@@_list:N #1
{
\seq_clear:N \l_@@_tmp_seq
-%<*package>
\clist_if_exist:NT \@filelist
{
\exp_args:NNx \seq_set_from_clist:Nn \l_@@_tmp_seq
{ \tl_to_str:N \@filelist }
}
-%</package>
\seq_concat:NNN \l_@@_tmp_seq \l_@@_tmp_seq \g_@@_record_seq
\seq_remove_duplicates:N \l_@@_tmp_seq
#1 { LaTeX/kernel } { file-list }
@@ -3521,7 +3457,6 @@
% \cs{@filelist} must be turned to strings before being added to
% \cs{g_@@_record_seq}.
% \begin{macrocode}
-%<*package>
\cs_if_exist:NT \@filelist
{
\AtBeginDocument
@@ -3534,7 +3469,6 @@
\l_@@_tmp_seq
}
}
-%</package>
% \end{macrocode}
%
% \subsection{GetIfInfo}
@@ -3626,20 +3560,6 @@
#1 \\
.............
}
-\__kernel_msg_new:nnnn { kernel } { input-streams-exhausted }
- { Input~streams~exhausted }
- {
- TeX~can~only~open~up~to~16~input~streams~at~one~time.\\
- All~16~are~currently~in~use,~and~something~wanted~to~open~
- another~one.
- }
-\__kernel_msg_new:nnnn { kernel } { output-streams-exhausted }
- { Output~streams~exhausted }
- {
- TeX~can~only~open~up~to~16~output~streams~at~one~time.\\
- All~16~are~currently~in~use,~and~something~wanted~to~open~
- another~one.
- }
\__kernel_msg_new:nnnn { kernel } { unbalanced-quote-in-filename }
{ Unbalanced~quotes~in~file~name~'#1'. }
{
@@ -3699,7 +3619,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3final.dtx b/macros/latex/contrib/l3kernel/l3final.dtx
deleted file mode 100644
index 809850d1a5..0000000000
--- a/macros/latex/contrib/l3kernel/l3final.dtx
+++ /dev/null
@@ -1,389 +0,0 @@
-% \iffalse meta-comment
-%
-%% File: l3final.dtx
-%
-% Copyright (C) 1990-2020 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.
-%
-% -----------------------------------------------------------------------
-%
-% The development version of the bundle can be found at
-%
-% https://github.com/latex3/latex3
-%
-% for those people who are interested.
-%
-%<*driver>
-\documentclass[full,kernel]{l3doc}
-\begin{document}
- \DocInput{\jobname.dtx}
-\end{document}
-%</driver>
-% \fi
-%
-% \title{^^A
-% The \pkg{l3final} package\\ Format finalisation^^A
-% }
-%
-% \author{^^A
-% The \LaTeX3 Project\thanks
-% {^^A
-% E-mail:
-% \href{mailto:latex-team@latex-project.org}
-% {latex-team@latex-project.org}^^A
-% }^^A
-% }
-%
-% \date{Released 2020-07-17}
-%
-% \maketitle
-%
-% \begin{documentation}
-%
-% This module is the end of the \LaTeX3 format file. Currently, a lot of this
-% is copy-pasted from the \LaTeXe{} format or is highly unstable (essentially
-% hacks which need revisiting later).
-%
-% \end{documentation}
-%
-% \begin{implementation}
-%
-% \section{\pkg{l3final} Implementation}
-%
-% \begin{macrocode}
-%<*initex>
-% \end{macrocode}
-%
-% \subsection{Input encoding}
-%
-% \begin{macrocode}
-%<@@=char>
-% \end{macrocode}
-%
-% The letters |a|--|z| and |A|--|Z| have the correct catcode directly from \IniTeX{}
-% while for Unicode engines (almost) all characters to be treated as letters
-% are defined by the automatic data parsing. Thus the changes here are to
-% deal with the additional cases.
-%
-% All the characters in the range $0$--$31$ \emph{except} tab (|^^I|), nl
-% (|^^J|), ff (|^^L|) and cr (|^^M|).
-% \begin{macrocode}
-\int_step_inline:nnn { 0 } { `\^^H }
- { \char_set_catcode_invalid:n {#1} }
-\char_set_catcode_invalid:n { `\^^K }
-\int_step_inline:nnn { `\^^N } { 31 }
- { \char_set_catcode_invalid:n {#1} }
-% \end{macrocode}
-% The same is true for the top of the $7$-bit range.
-% \begin{macrocode}
-\char_set_catcode_invalid:n { 127 }
-% \end{macrocode}
-% For the $8$-bit engines dotless-I and dotless-J need to be valid,
-% and these therefore appear in some following code. To avoid an issue
-% when those lines are read, the chars are made valid here and that is
-% reversed for Unicode engines below.
-% \begin{macrocode}
-\char_set_catcode_letter:n { `\^^Y }
-\char_set_catcode_letter:n { `\^^Z }
-% \end{macrocode}
-%
-% For non-Unicode engine we now need to convert from UTF-$8$ to $8$-bit
-% for pattern reading and document use. The set up here is copied from
-% the file |conv-utf8-ec.tex| maintained by \textsc{tug} for hyphenation
-% pattern use. As some of the relevant primitives have been moved and to
-% allow for self-contained code that is copied here with minor adjustments.
-% (The primitives have to be available at point of use not just at point of
-% definition so a compatibility layer is hard to arrange here.)
-% \begin{macrocode}
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
-% \end{macrocode}
-% Unicode engines: make these two invalid (this happens after \TeX{}
-% has read and thrown away their use in the following).
-% \begin{macrocode}
- {
- \char_set_catcode_invalid:n { `\^^Y }
- \char_set_catcode_invalid:n { `\^^Z }
- }
-% \end{macrocode}
-% Now for $8$-bit engines.
-% \begin{macrocode}
- {
-% \end{macrocode}
-% At least for the present, make \upTeX{} behave like \pdfTeX{} so
-% the set up is easier.
-% \begin{macrocode}
- \sys_if_engine_uptex:T
- { \tex_disablecjktoken:D }
-% \end{macrocode}
-% The actual mappings: these are kept low-level for performance reasons.
-% \begin{macrocode}
- \cs_new:cpn { @@_active_C3:N } #1
- {
- \if_meaning:w #1 ^^9f ^^ff \else: % ß - U+00DF - germandbls
- \if_meaning:w #1 ^^a0 ^^e0 \else: % à - U+00E0 - agrave
- \if_meaning:w #1 ^^a1 ^^e1 \else: % á - U+00E1 - aacute
- \if_meaning:w #1 ^^a2 ^^e2 \else: % â - U+00E2 - acircumflex
- \if_meaning:w #1 ^^a3 ^^e3 \else: % ã - U+00E3 - atilde
- \if_meaning:w #1 ^^a4 ^^e4 \else: % ä - U+00E4 - adieresis
- \if_meaning:w #1 ^^a5 ^^e5 \else: % å - U+00E5 - aring
- \if_meaning:w #1 ^^a6 ^^e6 \else: % æ - U+00E6 - ae
- \if_meaning:w #1 ^^a7 ^^e7 \else: % ç - U+00E7 - ccedilla
- \if_meaning:w #1 ^^a8 ^^e8 \else: % è - U+00E8 - egrave
- \if_meaning:w #1 ^^a9 ^^e9 \else: % é - U+00E9 - eacute
- \if_meaning:w #1 ^^aa ^^ea \else: % ê - U+00EA - ecircumflex
- \if_meaning:w #1 ^^ab ^^eb \else: % ë - U+00EB - edieresis
- \if_meaning:w #1 ^^ac ^^ec \else: % ì - U+00EC - igrave
- \if_meaning:w #1 ^^ad ^^ed \else: % í - U+00ED - iacute
- \if_meaning:w #1 ^^ae ^^ee \else: % î - U+00EE - icircumflex
- \if_meaning:w #1 ^^af ^^ef \else: % ï - U+00EF - idieresis
- \if_meaning:w #1 ^^b0 ^^f0 \else: % ð - U+00F0 - eth
- \if_meaning:w #1 ^^b1 ^^f1 \else: % ñ - U+00F1 - ntilde
- \if_meaning:w #1 ^^b2 ^^f2 \else: % ò - U+00F2 - ograve
- \if_meaning:w #1 ^^b3 ^^f3 \else: % ó - U+00F3 - oacute
- \if_meaning:w #1 ^^b4 ^^f4 \else: % ô - U+00F4 - ocircumflex
- \if_meaning:w #1 ^^b5 ^^f5 \else: % õ - U+00F5 - otilde
- \if_meaning:w #1 ^^b6 ^^f6 \else: % ö - U+00F6 - odieresis
- \if_meaning:w #1 ^^b8 ^^f8 \else: % ø - U+00F8 - oslash
- \if_meaning:w #1 ^^b9 ^^f9 \else: % ù - U+00F9 - ugrave
- \if_meaning:w #1 ^^ba ^^fa \else: % ú - U+00FA - uacute
- \if_meaning:w #1 ^^bb ^^fb \else: % û - U+00FB - ucircumflex
- \if_meaning:w #1 ^^bc ^^fc \else: % ü - U+00FC - udieresis
- \if_meaning:w #1 ^^bd ^^fd \else: % ý - U+00FD - yacute
- \if_meaning:w #1 ^^be ^^fe \else: % þ - U+00FE - thorn
- \if_meaning:w #1 ^^bf ^^b8 \else: % ÿ - U+00FF - ydieresis
- \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi:
- \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi:
- \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi:
- }
- \cs_new:cpn { @@_active_C4:N } #1
- {
- \if_meaning:w #1 ^^83 ^^a0 \else: % ă - U+0103 - abreve
- \if_meaning:w #1 ^^85 ^^a1 \else: % ą - U+0105 - aogonek
- \if_meaning:w #1 ^^87 ^^a2 \else: % ć - U+0107 - cacute
- \if_meaning:w #1 ^^8d ^^a3 \else: % č - U+010D - ccaron
- \if_meaning:w #1 ^^8f ^^a4 \else: % ď - U+010F - dcaron
- \if_meaning:w #1 ^^91 ^^9e \else: % đ - U+0111 - dcroat
- \if_meaning:w #1 ^^99 ^^a6 \else: % ę - U+0119 - eogonek
- \if_meaning:w #1 ^^9b ^^a5 \else: % ě - U+011B - ecaron
- \if_meaning:w #1 ^^9f ^^a7 \else: % ğ - U+011F - gbreve
- \if_meaning:w #1 ^^b1 ^^19 \else: % ı - U+0131 - dotlessi
- \if_meaning:w #1 ^^b3 ^^bc \else: % ij - U+0133 - ij
- \if_meaning:w #1 ^^ba ^^a8 \else: % ĺ - U+013A - lacute
- \if_meaning:w #1 ^^be ^^a9 \else: % ľ - U+013E - lcaron
- \__kernel_msg_expandable_error:nn { kernel } { encoding-failure }
- \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi:
- }
- \cs_new:cpn { @@_active_C5:N } #1
- {
- \if_meaning:w #1 ^^82 ^^aa \else: % ł - U+0142 - lslash
- \if_meaning:w #1 ^^84 ^^ab \else: % ń - U+0144 - nacute
- \if_meaning:w #1 ^^88 ^^ac \else: % ň - U+0148 - ncaron
- \if_meaning:w #1 ^^8b ^^ad \else: % ŋ - U+014B - eng
- \if_meaning:w #1 ^^91 ^^ae \else: % ő - U+0151 - ohungarumlaut
- \if_meaning:w #1 ^^93 ^^f7 \else: % œ - U+0153 - oe
- \if_meaning:w #1 ^^95 ^^af \else: % ŕ - U+0155 - racute
- \if_meaning:w #1 ^^99 ^^b0 \else: % ř - U+0159 - rcaron
- \if_meaning:w #1 ^^9b ^^b1 \else: % ś - U+015B - sacute
- \if_meaning:w #1 ^^9f ^^b3 \else: % ş - U+015F - scedilla
- \if_meaning:w #1 ^^a1 ^^b2 \else: % š - U+0161 - scaron
- \if_meaning:w #1 ^^a5 ^^b4 \else: % ť - U+0165 - tcaron
- \if_meaning:w #1 ^^af ^^b7 \else: % ů - U+016F - uring
- \if_meaning:w #1 ^^b1 ^^b6 \else: % ű - U+0171 - uhungarumlaut
- \if_meaning:w #1 ^^ba ^^b9 \else: % ź - U+017A - zacute
- \if_meaning:w #1 ^^bc ^^bb \else: % ż - U+017C - zdotaccent
- \if_meaning:w #1 ^^be ^^ba \else: % ž - U+017E - zcaron
- \__kernel_msg_expandable_error:nn { kernel } { encoding-failure }
- \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi:
- \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi:
- }
- \cs_new:cpn { @@_active_C8:N } #1
- {
- \if_meaning:w #1 ^^99 ^^b3 \else: % ș - U+0219 - scommaaccent
- \if_meaning:w #1 ^^9b ^^b5 \else: % ț - U+021B - tcommaaccent
- \if_meaning:w #1 ^^b7 ^^1a \else: % ȷ - U+0237 - dotlessj
- \__kernel_msg_expandable_error:nn { kernel } { encoding-failure }
- \fi: \fi: \fi:
- }
-% \end{macrocode}
-% Install and record the active characters.
-% \begin{macrocode}
- \clist_map_inline:nn { C3 , C4 , C5 , C8 }
- {
- \char_set_catcode_active:n { "#1 }
- \char_set_active_eq:nc { "#1 } { @@_active_ #1 :N }
- \seq_put_right:Nx \l_char_special_seq
- { \exp_not:c { \char_generate:nn { "#1 } { 12 } } }
- \seq_put_right:Nx \l_char_active_seq
- { \exp_not:c { \char_generate:nn { "#1 } { 12 } } }
- }
- \__kernel_msg_new:nnn { kernel } { encoding-failure }
- { Unknown~UTF-8~char }
-% \end{macrocode}
-% All of the chars are lower case so give them the correct \tn{lccode}
-% values.
-% \begin{macrocode}
- \clist_map_inline:nn
- {
- 19 , 1A , 9E , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 ,
- AA , AB , AC , AD , AE , AF , B0 , B1 , B2 , B3 , B3 , B4 , B5 ,
- B6 , B7 , B8 , B9 , BA , BB , BC , E0 , E1 , E2 , E3 , E4 , E5 ,
- E6 , E7 , E8 , E9 , EA , EB , EC , ED , EE , EF , F0 , F1 , F2 ,
- F3 , F4 , F5 , F6 , F7 , F8 , F9 , FA , FB , FC , FD , FE , FF
- }
- { \char_set_lccode:nn { "#1 } { "#1 } }
- }
-% \end{macrocode}
-%
-% \subsection{Temporary hacks}
-%
-% \begin{macro}{\T1/lmr/m/n/10, \TU/lmr/m/n/10}
-% For \emph{testing only} provide some kind of output: for that we
-% need a font. At present, select Latin Modern Roman at 10\,pt:
-% entirely arbitrary but at least usable.
-% \begin{macrocode}
-\sys_if_engine_luatex:T
- {
- \tex_everyjob:D \exp_after:wN
- {
- \tex_the:D \tex_everyjob:D
- \lua_now:n { require("l3format.lua") }
- }
- }
-\use:x
- {
- \tex_everyjob:D
- {
- \tex_the:D \tex_everyjob:D
- \bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
- {
- \tex_font:D \exp_not:c { TU/lmr/m/n/10 }
- = "[lmroman10-regular.otf]/OT" \scan_stop:
- \exp_not:c { TU/lmr/m/n/10 }
- \tex_font:D \exp_not:c { TU/lmm/m/n/10 }
- = "[latinmodern-math.otf]/OT:mode=base;script=math;" \scan_stop:
- \tex_font:D \exp_not:c { TU/lmm/m/n/7 }
- = "[latinmodern-math.otf]/OT:mode=base;script=math;+ssty=0;"~at~7pt \scan_stop:
- \tex_font:D \exp_not:c { TU/lmm/m/n/5 }
- = "[latinmodern-math.otf]/OT:mode=base;script=math;+ssty=1;"~at~5pt \scan_stop:
- \exp_not:N \int_step_inline:nnn { 0 } { 3 }
- {
- \tex_textfont:D ##1 = \exp_not:c { TU/lmm/m/n/10 }
- \tex_scriptfont:D ##1 = \exp_not:c { TU/lmm/m/n/7 }
- \tex_scriptscriptfont:D ##1 = \exp_not:c { TU/lmm/m/n/5 }
- }
- }
- {
- \tex_font:D \exp_not:c { T1/lmr/m/n/10 }
- = ec-lmr10 \scan_stop:
- \exp_not:c { T1/lmr/m/n/10 }
- \tex_font:D \exp_not:c { OT1/lmr/m/n/10 }
- = rm-lmr10 \scan_stop:
- \tex_font:D \exp_not:c { OML/lmm/m/it/10 }
- = lmmi10 \scan_stop:
- \tex_font:D \exp_not:c { OMS/lmsy/m/n/10 }
- = lmsy10 \scan_stop:
- \tex_font:D \exp_not:c { OMX/lmex/m/n/10 }
- = lmex10 \scan_stop:
- \tex_font:D \exp_not:c { OT1/lmr/m/n/7 }
- = rm-lmr7 \scan_stop:
- \tex_font:D \exp_not:c { OML/lmm/m/it/7 }
- = lmmi7 \scan_stop:
- \tex_font:D \exp_not:c { OMS/lmsy/m/n/7 }
- = lmsy7 \scan_stop:
- \tex_font:D \exp_not:c { OMX/lmex/m/n/7 }
- = lmex10~at~7pt \scan_stop:
- \tex_font:D \exp_not:c { OT1/lmr/m/n/5 }
- = rm-lmr5 \scan_stop:
- \tex_font:D \exp_not:c { OML/lmm/m/it/5 }
- = lmmi5 \scan_stop:
- \tex_font:D \exp_not:c { OMS/lmsy/m/n/5 }
- = lmsy5 \scan_stop:
- \tex_font:D \exp_not:c { OMX/lmex/m/n/5 }
- = lmex10~at~5pt \scan_stop:
- \tex_textfont:D 0 = \exp_not:c { OT1/lmr/m/n/10 }
- \tex_textfont:D 1 = \exp_not:c { OML/lmm/m/it/10 }
- \tex_textfont:D 2 = \exp_not:c { OMS/lmsy/m/n/10 }
- \tex_textfont:D 3 = \exp_not:c { OMX/lmex/m/n/10 }
- \tex_scriptfont:D 0 = \exp_not:c { OT1/lmr/m/n/7 }
- \tex_scriptfont:D 1 = \exp_not:c { OML/lmm/m/it/7 }
- \tex_scriptfont:D 2 = \exp_not:c { OMS/lmsy/m/n/7 }
- \tex_scriptfont:D 3 = \exp_not:c { OMX/lmex/m/n/7 }
- \tex_scriptscriptfont:D 0 = \exp_not:c { OT1/lmr/m/n/5 }
- \tex_scriptscriptfont:D 1 = \exp_not:c { OML/lmm/m/it/5 }
- \tex_scriptscriptfont:D 2 = \exp_not:c { OMS/lmsy/m/n/5 }
- \tex_scriptscriptfont:D 3 = \exp_not:c { OMX/lmex/m/n/5 }
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% Produce PDF output if possible (easier testing) and set some kind of
-% horizontal width: the one here is the \LaTeXe{} default. A parfill is
-% also useful so we get some kind of sensible paragraphs.
-% \begin{macrocode}
-\dim_set:Nn \tex_hsize:D { 345pt }
-\skip_set:Nn \tex_parfillskip:D { 0pt plus 1fil }
-\cs_if_exist:NT \tex_pdfoutput:D
- { \int_set:Nn \tex_pdfoutput:D { 1 } }
-% \end{macrocode}
-%
-% \begin{macro}{\stop}
-% A way out of the run without needing to switch to the code environment.
-% \begin{macrocode}
-\cs_set_eq:NN \stop \tex_end:D
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Final tasks}
-%
-% \begin{macro}{\par}
-% \TeX{} has a nasty habit of inserting a command with the name \cs{par}
-% so we had better make sure that \cs{par} has a definition.
-% \begin{macrocode}
-\cs_set_eq:NN \par \tex_par:D
-% \end{macrocode}
-% \end{macro}
-%
-% The very last job is to dump the format, taking care to first leave
-% the code environment and set the appropriate flag.
-% \begin{macrocode}
-\use:n
- {
- \bool_set_false:N \l__kernel_expl_bool
- \char_set_catcode_space:n { 9 } % tab
- \char_set_catcode_space:n { 32 } % space
- \char_set_catcode_active:n { 34 } % double quote
- \char_set_catcode_active:n { 36 } % dollar
- \char_set_catcode_active:n { 38 } % ampersand
- \char_set_catcode_other:n { 58 } % colon
- \char_set_catcode_active:n { 94 } % circumflex
- \char_set_catcode_active:n { 95 } % underscore
- \char_set_catcode_other:n { 124 } % pipe
- \char_set_catcode_active:n { 126 } % tilde
- \tex_endlinechar:D = 13 \scan_stop:
- \tex_newlinechar:D = 10 \scan_stop:
- \tex_dump:D
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</initex>
-% \end{macrocode}
-%
-% \end{implementation}
-%
-%\PrintIndex
diff --git a/macros/latex/contrib/l3kernel/l3flag.dtx b/macros/latex/contrib/l3kernel/l3flag.dtx
index 0d68f05eee..9bc6f9de6f 100644
--- a/macros/latex/contrib/l3kernel/l3flag.dtx
+++ b/macros/latex/contrib/l3kernel/l3flag.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -159,7 +159,7 @@
% \section{\pkg{l3flag} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -300,7 +300,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3format.ins b/macros/latex/contrib/l3kernel/l3format.ins
deleted file mode 100644
index 0671ed9ee6..0000000000
--- a/macros/latex/contrib/l3kernel/l3format.ins
+++ /dev/null
@@ -1,164 +0,0 @@
-\iffalse meta-comment
-
-File l3format.ins
-
-Copyright (C) 2011,2012,2014-2020 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.
-
------------------------------------------------------------------------
-
-The development version of the bundle can be found at
-
- https://github.com/latex3/latex3
-
-for those people who are interested.
-
------------------------------------------------------------------------
-
-Any modification of this file should ensure that the copyright and
-license information is placed in the derived files.
-
-\fi
-
-\let\jobname\relax
-\input l3docstrip.dtx
-\askforoverwritefalse
-
-\preamble
-
-Copyright (C) 1990-2020 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.
-
-\endpreamble
-% stop docstrip adding \endinput
-\postamble
-\endpostamble
-
-\keepsilent
-
-\generate
- {
- \file{l3format.ltx}
- {
- \from{l3bootstrap.dtx} {initex}
- \from{l3names.dtx} {initex}
- \from{l3basics.dtx} {initex}
- \from{l3expan.dtx} {initex}
- \from{l3quark.dtx} {initex}
- \from{l3tl.dtx} {initex}
- \from{l3str.dtx} {initex}
- \from{l3seq.dtx} {initex}
- % ======== FORMAT ONLY =========
- \from{l3alloc.dtx} {initex}
- % ==============================
- \from{l3int.dtx} {initex}
- \from{l3flag.dtx} {initex}
- \from{l3prg.dtx} {initex}
- \from{l3sys.dtx} {initex}
- \from{l3clist.dtx} {initex}
- \from{l3token.dtx} {initex}
- \from{l3prop.dtx} {initex}
- \from{l3msg.dtx} {initex}
- \from{l3file.dtx} {initex}
- \from{l3skip.dtx} {initex}
- \from{l3keys.dtx} {initex}
- \from{l3intarray.dtx} {initex}
- \from{l3fp.dtx} {initex}
- \from{l3fp-aux.dtx} {initex}
- \from{l3fp-traps.dtx} {initex}
- \from{l3fp-round.dtx} {initex}
- \from{l3fp-parse.dtx} {initex}
- \from{l3fp-assign.dtx} {initex}
- \from{l3fp-logic.dtx} {initex}
- \from{l3fp-basics.dtx} {initex}
- \from{l3fp-extended.dtx}{initex}
- \from{l3fp-expo.dtx} {initex}
- \from{l3fp-trig.dtx} {initex}
- \from{l3fp-convert.dtx} {initex}
- \from{l3fp-random.dtx} {initex}
- \from{l3fparray.dtx} {initex}
- \from{l3cctab.dtx} {initex}
- \from{l3sort.dtx} {initex}
- \from{l3str-convert.dtx}{initex}
- \from{l3tl-analysis.dtx}{initex}
- \from{l3regex.dtx} {initex}
- \from{l3box.dtx} {initex}
- \from{l3color-base.dtx} {initex}
- \from{l3coffins.dtx} {initex}
- \from{l3luatex.dtx} {initex,tex}
- \from{l3unicode.dtx} {initex}
- \from{l3text.dtx} {initex}
- \from{l3text-case.dtx} {initex}
- \from{l3text-purify.dtx}{initex}
- \from{l3candidates.dtx} {initex}
- % ======== FORMAT ONLY =========
- \from{l3final.dtx} {initex}
- % ==============================
- }
- }
-
-% ISO-8859 encodings.
-\generate{%
- \file{l3str-enc-iso88591.def} {\from{l3str-convert.dtx}{iso88591}}%
- \file{l3str-enc-iso88592.def} {\from{l3str-convert.dtx}{iso88592}}%
- \file{l3str-enc-iso88593.def} {\from{l3str-convert.dtx}{iso88593}}%
- \file{l3str-enc-iso88594.def} {\from{l3str-convert.dtx}{iso88594}}%
- \file{l3str-enc-iso88595.def} {\from{l3str-convert.dtx}{iso88595}}%
- \file{l3str-enc-iso88596.def} {\from{l3str-convert.dtx}{iso88596}}%
- \file{l3str-enc-iso88597.def} {\from{l3str-convert.dtx}{iso88597}}%
- \file{l3str-enc-iso88598.def} {\from{l3str-convert.dtx}{iso88598}}%
- \file{l3str-enc-iso88599.def} {\from{l3str-convert.dtx}{iso88599}}%
- \file{l3str-enc-iso885910.def} {\from{l3str-convert.dtx}{iso885910}}%
- \file{l3str-enc-iso885911.def} {\from{l3str-convert.dtx}{iso885911}}%
- \file{l3str-enc-iso885913.def} {\from{l3str-convert.dtx}{iso885913}}%
- \file{l3str-enc-iso885914.def} {\from{l3str-convert.dtx}{iso885914}}%
- \file{l3str-enc-iso885915.def} {\from{l3str-convert.dtx}{iso885915}}%
- \file{l3str-enc-iso885916.def} {\from{l3str-convert.dtx}{iso885916}}%
-}
-
-\generate{\file{l3debug.def}{\from{l3debug.dtx}{initex}}}
-\generate{\file{l3deprecation.def}{\from{l3deprecation.dtx}{initex,patches}}}
-
-\generate{\file{l3docstrip.tex}{\from{l3docstrip.dtx}{program}}}
-
-% Lua code (currently identical to the package-mode version)
-
-\def\MetaPrefix{--}
-\preamble
-
-Copyright (C) 1990-2020 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.
-
-\endpreamble
-\nopostamble
-\generate{\file{expl3.lua} {\from{l3luatex.dtx}{lua,package}}}
-\generate{\file{l3format.lua}{\from{l3luatex.dtx}{lua,initex}}}
-
-\endbatchfile
diff --git a/macros/latex/contrib/l3kernel/l3fp-assign.dtx b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
index 73e28d4b3f..8f06b76ea4 100644
--- a/macros/latex/contrib/l3kernel/l3fp-assign.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
% \maketitle
%
% \begin{documentation}
@@ -52,7 +52,7 @@
% \section{\pkg{l3fp-assign} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -219,7 +219,7 @@
% \end{variable}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-aux.dtx b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
index 09a876ee8d..38fd8b1366 100644
--- a/macros/latex/contrib/l3kernel/l3fp-aux.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -56,7 +56,7 @@
% \section{\pkg{l3fp-aux} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -1296,7 +1296,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-basics.dtx b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
index 68cb42369d..ae77fc4be2 100644
--- a/macros/latex/contrib/l3kernel/l3fp-basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -53,7 +53,7 @@
% \section{\pkg{l3fp-basics} Implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -2168,7 +2168,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-convert.dtx b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
index a07e4fb982..e16a947e6c 100644
--- a/macros/latex/contrib/l3kernel/l3fp-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -56,7 +56,7 @@
% \section{\texttt{l3fp-convert} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -620,7 +620,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-expo.dtx b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
index aafc77e1a6..fc8789101d 100644
--- a/macros/latex/contrib/l3kernel/l3fp-expo.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -53,7 +53,7 @@
% \section{\pkg{l3fp-expo} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -1369,7 +1369,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-extended.dtx b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
index 498da7895c..f7566ff062 100644
--- a/macros/latex/contrib/l3kernel/l3fp-extended.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -53,7 +53,7 @@
% \section{\pkg{l3fp-extended} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -1263,7 +1263,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-logic.dtx b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
index 13457604be..d36cbb3003 100644
--- a/macros/latex/contrib/l3kernel/l3fp-logic.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -53,7 +53,7 @@
% \section{\pkg{l3fp-logic} Implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -727,7 +727,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-parse.dtx b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
index c3125a8478..e56abc6bb1 100644
--- a/macros/latex/contrib/l3kernel/l3fp-parse.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -53,7 +53,7 @@
% \section{\pkg{l3fp-parse} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -800,7 +800,6 @@
{#2}
\exp_after:wN \c_nan_fp \exp:w \exp_end_continue_f:w #1
}
-%<*package>
\cs_set_protected:Npn \@@_tmp:w #1
{
\cs_if_exist:NT #1
@@ -824,7 +823,6 @@
}
}
\exp_args:Nc \@@_tmp:w { @unexpandable@protect }
-%</package>
% \end{macrocode}
% \end{macro}
%
@@ -2889,17 +2887,15 @@
{ Arguments~in~#1#2~are~invalid. }
\__kernel_msg_new:nnn { kernel } { fp-infty-pi }
{ Math~command~#1 is~not~an~fp }
-%<*package>
\cs_if_exist:cT { @unexpandable@protect }
{
\__kernel_msg_new:nnn { kernel } { fp-robust-cmd }
{ Robust~command~#1 invalid~in~fp~expression! }
}
-%</package>
% \end{macrocode}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-random.dtx b/macros/latex/contrib/l3kernel/l3fp-random.dtx
index 062f0d59b4..6dd9a63d70 100644
--- a/macros/latex/contrib/l3kernel/l3fp-random.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-random.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -53,7 +53,7 @@
% \section{\pkg{l3fp-random} Implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -654,7 +654,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-round.dtx b/macros/latex/contrib/l3kernel/l3fp-round.dtx
index ef2092959b..487f48fa7c 100644
--- a/macros/latex/contrib/l3kernel/l3fp-round.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-round.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -56,7 +56,7 @@
% \section{\pkg{l3fp-round} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -582,7 +582,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-traps.dtx b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
index 40332fc340..8f7ef9afdc 100644
--- a/macros/latex/contrib/l3kernel/l3fp-traps.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
% \maketitle
%
% \begin{documentation}
@@ -52,7 +52,7 @@
% \section{\pkg{l3fp-traps} Implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -390,7 +390,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-trig.dtx b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
index a9c9600244..c5c85d20a3 100644
--- a/macros/latex/contrib/l3kernel/l3fp-trig.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -53,7 +53,7 @@
% \section{\pkg{l3fp-trig} Implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -1688,7 +1688,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3fp.dtx b/macros/latex/contrib/l3kernel/l3fp.dtx
index b76089b5c6..f1743be720 100644
--- a/macros/latex/contrib/l3kernel/l3fp.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fparray.dtx b/macros/latex/contrib/l3kernel/l3fparray.dtx
index be62eac38b..1a2775935b 100644
--- a/macros/latex/contrib/l3kernel/l3fparray.dtx
+++ b/macros/latex/contrib/l3kernel/l3fparray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -115,7 +115,7 @@
% \section{\pkg{l3fparray} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -388,7 +388,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3int.dtx b/macros/latex/contrib/l3kernel/l3int.dtx
index 7384a5f257..ac08971cd0 100644
--- a/macros/latex/contrib/l3kernel/l3int.dtx
+++ b/macros/latex/contrib/l3kernel/l3int.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -1010,7 +1010,7 @@
% \section{\pkg{l3int} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -1272,13 +1272,11 @@
% this is therefore accessed by name. (The same applies to \cs{newbox},
% \cs{newdimen} and so on.)
% \begin{macrocode}
-%<*package>
\cs_new_protected:Npn \int_new:N #1
{
\__kernel_chk_if_free_cs:N #1
\cs:w newcount \cs_end: #1
}
-%</package>
\cs_generate_variant:Nn \int_new:N { c }
% \end{macrocode}
% \end{macro}
@@ -2581,7 +2579,7 @@
% \end{variable}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3intarray.dtx b/macros/latex/contrib/l3kernel/l3intarray.dtx
index 7a96ed2873..208ec1cfe5 100644
--- a/macros/latex/contrib/l3kernel/l3intarray.dtx
+++ b/macros/latex/contrib/l3kernel/l3intarray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -166,7 +166,7 @@
% \section{\pkg{l3intarray} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -579,7 +579,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
index c73b661cfc..793ea28031 100644
--- a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
+++ b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -265,6 +265,27 @@
%
% \begin{function}
% {
+% \__kernel_msg_critical:nnnnnn ,
+% \__kernel_msg_critical:nnnnn ,
+% \__kernel_msg_critical:nnnn ,
+% \__kernel_msg_critical:nnn ,
+% \__kernel_msg_critical:nn ,
+% \__kernel_msg_critical:nnxxxx ,
+% \__kernel_msg_critical:nnxxx ,
+% \__kernel_msg_critical:nnxx ,
+% \__kernel_msg_critical:nnx
+% }
+% \begin{syntax}
+% \cs{__kernel_msg_critical:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four}
+% \end{syntax}
+% Issues kernel \meta{module} error \meta{message}, passing \meta{arg one}
+% to \meta{arg four} to the text-creating functions. After issuing a
+% critical error, \TeX{} stops reading the current input file.
+% Cannot be redirected.
+% \end{function}
+%
+% \begin{function}
+% {
% \__kernel_msg_error:nnnnnn ,
% \__kernel_msg_error:nnnnn ,
% \__kernel_msg_error:nnnn ,
diff --git a/macros/latex/contrib/l3kernel/l3keys.dtx b/macros/latex/contrib/l3kernel/l3keys.dtx
index 77fa7d1aff..9c5216ceb6 100644
--- a/macros/latex/contrib/l3kernel/l3keys.dtx
+++ b/macros/latex/contrib/l3kernel/l3keys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -934,7 +934,7 @@
% \section{\pkg{l3keys} Implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \subsection{Low-level interface}
@@ -1493,44 +1493,29 @@
%
% \subsubsection{Internal auxiliaries}
%
-% \begin{variable}{\s_@@_stop}
+% \begin{variable}{\s_@@_nil,\s_@@_mark,\s_@@_stop}
% Internal scan marks.
% \begin{macrocode}
+\scan_new:N \s_@@_nil
+\scan_new:N \s_@@_mark
\scan_new:N \s_@@_stop
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\q_@@_nil,\q_@@_no_value}
+% \begin{variable}{\q_@@_no_value}
% Internal quarks.
% \begin{macrocode}
-\quark_new:N \q_@@_nil
\quark_new:N \q_@@_no_value
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}[pTF]{\@@_quark_if_nil:n}
+% \begin{macro}[pTF]{\@@_quark_if_no_value:N}
% Branching quark conditional.
% \begin{macrocode}
-\__kernel_quark_new_conditional:Nn \@@_quark_if_nil:n { TF }
\__kernel_quark_new_conditional:Nn \@@_quark_if_no_value:N { TF }
% \end{macrocode}
% \end{macro}
%
-% \begin{variable}{\q_@@_recursion_tail,\q_@@_recursion_stop}
-% Internal recursion quarks.
-% \begin{macrocode}
-\quark_new:N \q_@@_recursion_tail
-\quark_new:N \q_@@_recursion_stop
-% \end{macrocode}
-% \end{variable}
-%
-% \begin{macro}[EXP]{\@@_if_recursion_tail_stop:n}
-% Functions to query recursion quarks.
-% \begin{macrocode}
-\__kernel_quark_new_test:N \@@_if_recursion_tail_stop:n
-% \end{macrocode}
-% \end{macro}
-%
% \subsection{The key defining mechanism}
%
% \begin{macro}{\keys_define:nn}
@@ -1580,7 +1565,7 @@
\str_if_empty:NF \l_@@_property_str
{
\__kernel_msg_error:nnxx { kernel } { key-property-unknown }
- { \l_@@_property_str } { \l_keys_path_str }
+ \l_@@_property_str \l_keys_path_str
}
}
}
@@ -1590,53 +1575,59 @@
% \end{macro}
%
% \begin{macro}{\@@_property_find:n}
-% \begin{macro}{\@@_property_find:w}
+% \begin{macro}
+% {
+% \@@_property_find_auxi:w ,
+% \@@_property_find_auxii:w ,
+% \@@_property_find_auxiii:w ,
+% \@@_property_find_auxiv:w
+% }
% Searching for a property means finding the last |.| in the input,
% and storing the text before and after it. Everything is turned into
-% strings, so there is no problem using an \texttt{x}-type expansion.
+% strings, so there is no problem using an \texttt{x}-type expansion. Since
+% |\__keys_trim_spaces:n| will turn its argument into a string anyway, this
+% function uses \cs{cs_set_nopar:Npx} instead of \cs{tl_set:Nx} to gain some
+% speed.
% \begin{macrocode}
\cs_new_protected:Npn \@@_property_find:n #1
{
- \str_set:Nx \l_@@_property_str { \@@_trim_spaces:n {#1} }
- \exp_after:wN \@@_property_find:w \l_@@_property_str . .
- \s_@@_stop {#1}
+ \cs_set_nopar:Npx \l__keys_property_str { \__keys_trim_spaces:n { #1 } }
+ \exp_after:wN \@@_property_find_auxi:w \l__keys_property_str
+ \s_@@_nil \@@_property_find_auxii:w
+ . \s_@@_nil \@@_property_find_err:w
}
-\cs_new_protected:Npn \@@_property_find:w #1 . #2 . #3 \s_@@_stop #4
+\cs_new_protected:Npn \@@_property_find_auxi:w #1 . #2 \s_@@_nil #3
{
- \tl_if_blank:nTF {#3}
- {
- \str_clear:N \l_@@_property_str
- \__kernel_msg_error:nnn { kernel } { key-no-property } {#4}
- }
- {
- \str_if_eq:nnTF {#3} { . }
- {
- \str_set:Nx \l_keys_path_str
- {
- \str_if_empty:NF \l_@@_module_str
- { \l_@@_module_str / }
- \tl_trim_spaces:n {#1}
- }
- \str_set:Nn \l_@@_property_str { . #2 }
- }
- {
- \str_set:Nx \l_keys_path_str { \l_@@_module_str / #1 . #2 }
- \@@_property_search:w #3 \s_@@_stop
- }
- \tl_set_eq:NN \l_keys_path_tl \l_keys_path_str
- }
+ #3 #1 \s_@@_mark #2 \s_@@_nil #3
}
-\cs_new_protected:Npn \@@_property_search:w #1 . #2 \s_@@_stop
+\cs_new_protected:Npn \@@_property_find_auxii:w
+ #1 \s_@@_mark #2 \s_@@_nil \@@_property_find_auxii:w . \s_@@_nil
+ \@@_property_find_err:w
{
- \str_if_eq:nnTF {#2} { . }
- {
- \str_set:Nx \l_keys_path_str { \l_keys_path_str }
- \str_set:Nn \l_@@_property_str { . #1 }
- }
- {
- \str_set:Nx \l_keys_path_str { \l_keys_path_str . #1 }
- \@@_property_search:w #2 \s_@@_stop
- }
+ \cs_set_nopar:Npx \l_keys_path_str
+ { \str_if_empty:NF \l__keys_module_str { \l__keys_module_str / } #1 }
+ \@@_property_find_auxi:w #2 \s_@@_nil \@@_property_find_auxiii:w . \s_@@_nil
+ \@@_property_find_auxiv:w
+ }
+\cs_new_protected:Npn \@@_property_find_auxiii:w #1 \s_@@_mark
+ {
+ \cs_set_nopar:Npx \l_keys_path_str { \l_keys_path_str . #1 }
+ \@@_property_find_auxi:w
+ }
+\cs_new_protected:Npn \@@_property_find_auxiv:w
+ #1 \s_@@_nil \@@_property_find_auxiii:w
+ \s_@@_mark \s_@@_nil \@@_property_find_auxiv:w
+ {
+ \cs_set_nopar:Npx \l__keys_property_str { . #1 }
+ \cs_set_nopar:Npx \l_keys_path_str
+ { \exp_after:wN \__keys_trim_spaces:n \exp_after:wN { \l_keys_path_str } }
+ \tl_set_eq:NN \l_keys_path_tl \l_keys_path_str
+ }
+\cs_new_protected:Npn \@@_property_find_err:w
+ #1 \s_@@_nil #2 \@@_property_find_err:w
+ {
+ \str_clear:N \l__keys_property_str
+ \__kernel_msg_error:nnn { kernel } { key-no-property } {#1}
}
% \end{macrocode}
% \end{macro}
@@ -1658,9 +1649,8 @@
\l_@@_property_str \s_@@_stop
{ \use:c { \c_@@_props_root_str \l_@@_property_str } }
{
- \__kernel_msg_error:nnxx { kernel }
- { key-property-requires-value } { \l_@@_property_str }
- { \l_keys_path_str }
+ \__kernel_msg_error:nnxx { kernel } { key-property-requires-value }
+ \l_@@_property_str \l_keys_path_str
}
}
{ \use:c { \c_@@_props_root_str \l_@@_property_str } {#1} }
@@ -1690,7 +1680,7 @@
\@@_cmd_set:nn { \l_keys_path_str / unknown }
{
\__kernel_msg_error:nnx { kernel } { boolean-values-only }
- { \l_keys_key_str }
+ \l_keys_key_str
}
\@@_default_set:n { true }
}
@@ -1712,7 +1702,7 @@
\@@_cmd_set:nn { \l_keys_path_str / unknown }
{
\__kernel_msg_error:nnx { kernel } { boolean-values-only }
- { \l_keys_key_str }
+ \l_keys_key_str
}
\@@_default_set:n { true }
}
@@ -1741,7 +1731,7 @@
{ choice }
{
\__kernel_msg_error:nnxx { kernel } { nested-choice-key }
- { \l_keys_path_tl } { \@@_parent:o \l_keys_path_str }
+ \l_keys_path_tl { \@@_parent:o \l_keys_path_str }
}
{ \@@_choice_make_aux:N #1 }
}
@@ -1751,11 +1741,11 @@
{
\cs_set_nopar:cpn { \c_@@_type_root_str \l_keys_path_str }
{ choice }
- \@@_cmd_set:nn { \l_keys_path_str } { #1 {##1} }
+ \@@_cmd_set:nn \l_keys_path_str { #1 {##1} }
\@@_cmd_set:nn { \l_keys_path_str / unknown }
{
\__kernel_msg_error:nnxx { kernel } { key-choice-unknown }
- { \l_keys_path_str } {##1}
+ \l_keys_path_str {##1}
}
}
% \end{macrocode}
@@ -1886,7 +1876,8 @@
{ \@@_execute_inherit: }
{
\str_clear:N \l_@@_inherit_str
- \cs_if_exist_use:cT { \c_@@_code_root_str \l_keys_path_str } { {#1} }
+ \cs_if_exist:cT { \c_@@_code_root_str \l_keys_path_str }
+ { \@@_execute:nn \l_keys_path_str {#1} }
}
}
% \end{macrocode}
@@ -1900,8 +1891,7 @@
{
\@@_cmd_set:Vo \l_keys_path_str
{
- \exp_after:wN \keys_set:nn
- \exp_after:wN { \l_@@_module_str } {#1}
+ \exp_after:wN \keys_set:nn \exp_after:wN { \l_@@_module_str } {#1}
}
}
\cs_new_protected:Npn \@@_meta_make:nn #1#2
@@ -1916,11 +1906,9 @@
\cs_new_protected:Npn \@@_prop_put:Nn #1#2
{
\prop_if_exist:NF #1 { \prop_new:N #1 }
- \exp_after:wN \@@_find_key_module:NNw
- \exp_after:wN \l_@@_tmpa_tl
- \exp_after:wN \l_@@_tmpb_tl
- \l_keys_path_str / \s_@@_stop
- \@@_cmd_set:nx { \l_keys_path_str }
+ \exp_after:wN \@@_find_key_module:wNN \l_keys_path_str \s_@@_stop
+ \l_@@_tmpa_tl \l_@@_tmpb_tl
+ \@@_cmd_set:nx \l_keys_path_str
{
\exp_not:c { prop_ #2 put:Nnn }
\exp_not:N #1
@@ -1951,7 +1939,6 @@
%
% \begin{macro}{\@@_value_requirement:nn}
% \begin{macro}{\@@_validate_forbidden:, \@@_validate_required:}
-% \begin{macro}{\@@_validate_cleanup:w}
% Validating key input is done using a second function which runs before
% the main key code. Setting that up means setting it equal to a generic
% stub which does the check. This approach makes the lookup very fast at
@@ -1991,8 +1978,8 @@
\bool_if:NF \l_@@_no_value_bool
{
\__kernel_msg_error:nnxx { kernel } { value-forbidden }
- { \l_keys_path_str } { \l_keys_value_tl }
- \@@_validate_cleanup:w
+ \l_keys_path_str \l_keys_value_tl
+ \use_none:nnn
}
}
\cs_new_protected:Npn \@@_validate_required:
@@ -2000,15 +1987,13 @@
\bool_if:NT \l_@@_no_value_bool
{
\__kernel_msg_error:nnx { kernel } { value-required }
- { \l_keys_path_str }
- \@@_validate_cleanup:w
+ \l_keys_path_str
+ \use_none:nnn
}
}
-\cs_new_protected:Npn \@@_validate_cleanup:w #1 \cs_end: #2#3 { }
% \end{macrocode}
% \end{macro}
% \end{macro}
-% \end{macro}
%
% \begin{macro}{\@@_variable_set:NnnN, \@@_variable_set:cnnN}
% \begin{macro}{\@@_variable_set_required:NnnN, \@@_variable_set_required:cnnN}
@@ -2018,7 +2003,7 @@
\cs_new_protected:Npn \@@_variable_set:NnnN #1#2#3#4
{
\use:c { #2_if_exist:NF } #1 { \use:c { #2 _new:N } #1 }
- \@@_cmd_set:nx { \l_keys_path_str }
+ \@@_cmd_set:nx \l_keys_path_str
{
\exp_not:c { #2 _ #3 set:N #4 }
\exp_not:N #1
@@ -2110,7 +2095,7 @@
% \texttt{set} function.
% \begin{macrocode}
\cs_new_protected:cpn { \c_@@_props_root_str .code:n } #1
- { \@@_cmd_set:nn { \l_keys_path_str } {#1} }
+ { \@@_cmd_set:nn \l_keys_path_str {#1} }
% \end{macrocode}
% \end{macro}
%
@@ -2447,7 +2432,7 @@
\cs_new_protected:Npn \keys_set_known:nnN #1#2#3
{
\exp_args:No \@@_set_known:nnnnN
- \l_@@_unused_clist { \q_@@_no_value } {#1} {#2} #3
+ \l_@@_unused_clist \q_@@_no_value {#1} {#2} #3
}
\cs_generate_variant:Nn \keys_set_known:nnN { nV , nv , no }
\cs_new_protected:Npn \keys_set_known:nnnN #1#2#3#4
@@ -2460,11 +2445,11 @@
{
\clist_clear:N \l_@@_unused_clist
\@@_set_known:nnn {#2} {#3} {#4}
- \tl_set:Nx #5 { \exp_not:o { \l_@@_unused_clist } }
+ \tl_set:Nx #5 { \exp_not:o \l_@@_unused_clist }
\tl_set:Nn \l_@@_unused_clist {#1}
}
\cs_new_protected:Npn \keys_set_known:nn #1#2
- { \@@_set_known:nnn { \q_@@_no_value } {#1} {#2} }
+ { \@@_set_known:nnn \q_@@_no_value {#1} {#2} }
\cs_generate_variant:Nn \keys_set_known:nn { nV , nv , no }
\cs_new_protected:Npn \@@_set_known:nnn #1#2#3
{
@@ -2525,7 +2510,7 @@
{
\exp_args:No \@@_set_filter:nnnnnN
\l_@@_unused_clist
- { \q_@@_no_value } {#1} {#2} {#3} #4
+ \q_@@_no_value {#1} {#2} {#3} #4
}
\cs_generate_variant:Nn \keys_set_filter:nnnN { nnV , nnv , nno }
\cs_new_protected:Npn \keys_set_filter:nnnnN #1#2#3#4#5
@@ -2538,11 +2523,11 @@
{
\clist_clear:N \l_@@_unused_clist
\@@_set_filter:nnnn {#2} {#3} {#4} {#5}
- \tl_set:Nx #6 { \exp_not:o { \l_@@_unused_clist } }
+ \tl_set:Nx #6 { \exp_not:o \l_@@_unused_clist }
\tl_set:Nn \l_@@_unused_clist {#1}
}
\cs_new_protected:Npn \keys_set_filter:nnn #1#2#3
- {\@@_set_filter:nnnn { \q_@@_no_value } {#1} {#2} {#3} }
+ {\@@_set_filter:nnnn \q_@@_no_value {#1} {#2} {#3} }
\cs_generate_variant:Nn \keys_set_filter:nnn { nnV , nnv , nno }
\cs_new_protected:Npn \@@_set_filter:nnnn #1#2#3#4
{
@@ -2604,7 +2589,14 @@
%
% \begin{macro}{\@@_set_keyval:n, \@@_set_keyval:nn}
% \begin{macro}{\@@_set_keyval:nnn, \@@_set_keyval:onn}
-% \begin{macro}{\@@_find_key_module:NNw}
+% \begin{macro}{\@@_find_key_module:wNN}
+% \begin{macro}
+% {
+% \@@_find_key_module_auxi:Nw ,
+% \@@_find_key_module_auxii:Nw ,
+% \@@_find_key_module_auxiii:Nn ,
+% \@@_find_key_module_auxiv:Nw
+% }
% \begin{macro}{\@@_set_selective:}
% A shared system once again. First, set the current path and add a
% default if needed. There are then checks to see if the a value is
@@ -2638,30 +2630,46 @@
}
\str_clear:N \l_@@_module_str
\str_clear:N \l_@@_inherit_str
- \exp_after:wN \@@_find_key_module:NNw
- \exp_after:wN \l_@@_module_str
- \exp_after:wN \l_keys_key_str
- \l_keys_path_str / \s_@@_stop
+ \exp_after:wN \@@_find_key_module:wNN \l_keys_path_str \s_@@_stop
+ \l_@@_module_str \l_keys_key_str
\tl_set_eq:NN \l_keys_key_tl \l_keys_key_str
\@@_value_or_default:n {#3}
\bool_if:NTF \l_@@_selective_bool
- { \@@_set_selective: }
- { \@@_execute: }
+ \@@_set_selective:
+ \@@_execute:
\str_set:Nn \l_@@_module_str {#1}
}
\cs_generate_variant:Nn \@@_set_keyval:nnn { o }
-\cs_new_protected:Npn \@@_find_key_module:NNw #1#2#3 / #4 \s_@@_stop
+% \end{macrocode}
+% This function uses \cs{cs_set_nopar:Npx} internally for performance reasons,
+% the argument |#1| is already a string in every usage, so turning it into a
+% string again seems unnecessary.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_find_key_module:wNN #1 \s_@@_stop #2 #3
{
- \tl_if_blank:nTF {#4}
- { \str_set:Nn #2 {#3} }
- {
- \str_put_right:Nx #1
- {
- \str_if_empty:NF #1 { / }
- #3
- }
- \@@_find_key_module:NNw #1#2 #4 \s_@@_stop
- }
+ \@@_find_key_module_auxi:Nw #2 #1 \s_@@_nil \@@_find_key_module_auxii:Nw
+ / \s_@@_nil \@@_find_key_module_auxiv:Nw #3
+ }
+\cs_new_protected:Npn \@@_find_key_module_auxi:Nw #1 #2 / #3 \s_@@_nil #4
+ {
+ #4 #1 #2 \s_@@_mark #3 \s_@@_nil #4
+ }
+\cs_new_protected:Npn \@@_find_key_module_auxii:Nw
+ #1 #2 \s_@@_mark #3 \s_@@_nil \@@_find_key_module_auxii:Nw
+ {
+ \cs_set_nopar:Npx #1 { \tl_if_empty:NF #1 { #1 / } #2 }
+ \@@_find_key_module_auxi:Nw #1 #3 \s_@@_nil \@@_find_key_module_auxiii:Nw
+ }
+\cs_new_protected:Npn \@@_find_key_module_auxiii:Nw #1 #2 \s_@@_mark
+ {
+ \cs_set_nopar:Npx #1 { \tl_if_empty:NF #1 { #1 / } #2 }
+ \@@_find_key_module_auxi:Nw #1
+ }
+\cs_new_protected:Npn \@@_find_key_module_auxiv:Nw
+ #1 #2 \s_@@_nil #3 \s_@@_mark
+ \s_@@_nil \@@_find_key_module_auxiv:Nw #4
+ {
+ \cs_set_nopar:Npn #4 { #2 }
}
% \end{macrocode}
% If selective setting is active, there are a number of possible sub-cases
@@ -2679,8 +2687,8 @@
}
{
\bool_if:NTF \l_@@_filtered_bool
- { \@@_execute: }
- { \@@_store_unused: }
+ \@@_execute:
+ \@@_store_unused:
}
}
% \end{macrocode}
@@ -2699,20 +2707,20 @@
\str_if_eq:nnT {##1} {####1}
{
\bool_set_true:N \l_@@_tmp_bool
- \clist_map_break:n { \seq_map_break: }
+ \clist_map_break:n \seq_map_break:
}
}
}
\bool_if:NTF \l_@@_tmp_bool
{
\bool_if:NTF \l_@@_filtered_bool
- { \@@_store_unused: }
- { \@@_execute: }
+ \@@_store_unused:
+ \@@_execute:
}
{
\bool_if:NTF \l_@@_filtered_bool
- { \@@_execute: }
- { \@@_store_unused: }
+ \@@_execute:
+ \@@_store_unused:
}
}
% \end{macrocode}
@@ -2720,6 +2728,7 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
%
% \begin{macro}{\@@_value_or_default:n}
% \begin{macro}{\@@_default_inherit:}
@@ -2765,7 +2774,7 @@
% \end{macro}
%
% \begin{macro}{\@@_execute:, \@@_execute_inherit:, \@@_execute_unknown:}
-% \begin{macro}[EXP]{\@@_execute:nn}
+% \begin{macro}[EXP]{\@@_execute:nn, \@@_execute:no}
% \begin{macro}{\@@_store_unused:,\@@_store_unused_aux:}
% Actually executing a key is done in two parts. First, look for the
% key itself, then look for the \texttt{unknown} key with the same
@@ -2778,8 +2787,7 @@
\cs_if_exist:cTF { \c_@@_code_root_str \l_keys_path_str }
{
\cs_if_exist_use:c { \c_@@_validate_root_str \l_keys_path_str }
- \cs:w \c_@@_code_root_str \l_keys_path_str \exp_after:wN \cs_end:
- \exp_after:wN { \l_keys_value_tl }
+ \@@_execute:no \l_keys_path_str \l_keys_value_tl
}
{
\cs_if_exist:cTF
@@ -2803,10 +2811,8 @@
{
\str_set:Nn \l_@@_inherit_str {##1}
\cs_if_exist_use:c { \c_@@_validate_root_str ##1 / \l_keys_key_str }
- \cs:w \c_@@_code_root_str ##1 / \l_keys_key_str
- \exp_after:wN \cs_end: \exp_after:wN
- { \l_keys_value_tl }
- \clist_map_break:n { \use_none:n }
+ \@@_execute:no { ##1 / \l_keys_key_str } \l_keys_value_tl
+ \clist_map_break:n \use_none:n
}
}
\@@_execute_unknown:
@@ -2818,24 +2824,35 @@
{
\cs_if_exist:cTF
{ \c_@@_code_root_str \l_@@_module_str / unknown }
- {
- \cs:w \c_@@_code_root_str \l_@@_module_str / unknown
- \exp_after:wN \cs_end: \exp_after:wN { \l_keys_value_tl }
- }
+ { \@@_execute:no { \l_@@_module_str / unknown } \l_keys_value_tl }
{
\__kernel_msg_error:nnxx { kernel } { key-unknown }
- { \l_keys_path_str } { \l_@@_module_str }
+ \l_keys_path_str \l_@@_module_str
}
}
}
+% \end{macrocode}
+% A key's code is in the control sequence with csname
+% \cs{c_@@_code_root_str} |#1|. We expand it once to get the
+% replacement text (with argument |#2|) and call \cs{use:n}
+% with this replacement as its argument. This ensures that any
+% undefined control sequence error in the key's code will lead to an
+% error message of the form |<argument>|\ldots{}\meta{control
+% sequence} in which one can read the (undefined) \meta{control
+% sequence} in full, rather than an error message that starts with the
+% potentially very long key name, which would make the (undefined)
+% \meta{control sequence} be truncated or sometimes completely hidden.
+% See \url{https://github.com/latex3/latex2e/issues/351}.
+% \begin{macrocode}
\cs_new:Npn \@@_execute:nn #1#2
+ { \@@_execute:no {#1} { \prg_do_nothing: #2 } }
+\cs_new:Npn \@@_execute:no #1#2
{
- \cs_if_exist:cTF { \c_@@_code_root_str #1 }
+ \exp_args:NNo \exp_args:No \use:n
{
\cs:w \c_@@_code_root_str #1 \exp_after:wN \cs_end:
- \exp_after:wN { \l_keys_value_tl }
+ \exp_after:wN {#2}
}
- {#2}
}
% \end{macrocode}
% When there is no relative path, things here are easy: just save the key
@@ -2850,7 +2867,7 @@
{
\clist_put_right:Nx \l_@@_unused_clist
{
- \exp_not:o \l_keys_key_str
+ \l_keys_key_str
\bool_if:NF \l_@@_no_value_bool
{ = { \exp_not:o \l_keys_value_tl } }
}
@@ -2860,7 +2877,7 @@
{
\clist_put_right:Nx \l_@@_unused_clist
{
- \exp_not:o \l_keys_path_str
+ \l_keys_path_str
\bool_if:NF \l_@@_no_value_bool
{ = { \exp_not:o \l_keys_value_tl } }
}
@@ -2917,7 +2934,7 @@
\cs_new:Npn \@@_choice_find:n #1
{
\str_if_empty:NTF \l_@@_inherit_str
- { \@@_choice_find:nn { \l_keys_path_str } {#1} }
+ { \@@_choice_find:nn \l_keys_path_str {#1} }
{
\@@_choice_find:nn
{ \l_@@_inherit_str / \l_keys_key_str } {#1}
@@ -2926,8 +2943,8 @@
\cs_new:Npn \@@_choice_find:nn #1#2
{
\cs_if_exist:cTF { \c_@@_code_root_str #1 / \@@_trim_spaces:n {#2} }
- { \use:c { \c_@@_code_root_str #1 / \@@_trim_spaces:n {#2} } {#2} }
- { \use:c { \c_@@_code_root_str #1 / unknown } {#2} }
+ { \@@_execute:nn { #1 / \@@_trim_spaces:n {#2} } {#2} }
+ { \@@_execute:nn { #1 / unknown } {#2} }
}
\cs_new:Npn \@@_multichoice_find:n #1
{ \clist_map_function:nN {#1} \@@_choice_find:n }
@@ -2938,23 +2955,35 @@
%
% \subsection{Utilities}
%
-% \begin{macro}[EXP]{\@@_parent:n, \@@_parent:o}
-% \begin{macro}[EXP]{\@@_parent:w}
+% \begin{macro}[EXP]{\@@_parent:o}
+% \begin{macro}[EXP]
+% {
+% \@@_parent_auxi:w ,
+% \@@_parent_auxii:w ,
+% \@@_parent_auxiii:n ,
+% \@@_parent_auxiv:w
+% }
% Used to strip off the ending part of the key path after the last~|/|.
% \begin{macrocode}
-\cs_new:Npn \@@_parent:n #1
- { \@@_parent:w #1 / / \s_@@_stop { } }
-\cs_generate_variant:Nn \@@_parent:n { o }
-\cs_new:Npn \@@_parent:w #1 / #2 / #3 \s_@@_stop #4
+\cs_new:Npn \@@_parent:o #1
+ {
+ \exp_after:wN \@@_parent_auxi:w #1 \q_nil \@@_parent_auxii:w
+ / \q_nil \@@_parent_auxiv:w
+ }
+\cs_new:Npn \@@_parent_auxi:w #1 / #2 \q_nil #3
+ {
+ #3 { #1 } #2 \q_nil #3
+ }
+\cs_new:Npn \@@_parent_auxii:w #1 #2 \q_nil \@@_parent_auxii:w
+ {
+ #1 \@@_parent_auxi:w #2 \q_nil \@@_parent_auxiii:n
+ }
+\cs_new:Npn \@@_parent_auxiii:n #1
+ {
+ / #1 \@@_parent_auxi:w
+ }
+\cs_new:Npn \@@_parent_auxiv:w #1 \q_nil \@@_parent_auxiv:w
{
- \tl_if_blank:nTF {#2}
- {
- \tl_if_blank:nF {#4}
- { \use_none:n #4 }
- }
- {
- \@@_parent:w #2 / #3 \s_@@_stop { #4 / #1 }
- }
}
% \end{macrocode}
% \end{macro}
@@ -2968,29 +2997,43 @@
% \@@_trim_spaces_auxiii:w
% }
% Space stripping has to allow for the fact that the key here might have
-% several parts, and spaces need to be stripped from each part.
+% several parts, and spaces need to be stripped from each part. Since the key
+% name is turned into a string groups can't be stripped accidentally and the
+% precautions of \cs{tl_trim_spaces:n} aren't necessary, in this case it is
+% much faster to just directly strip spaces around |/|.
% \begin{macrocode}
-\cs_new:Npn \@@_trim_spaces:n #1
- {
- \exp_after:wN \@@_trim_spaces_auxi:w \tl_to_str:n {#1}
- / \q_@@_nil \s_@@_stop
- }
-\cs_new:Npn \@@_trim_spaces_auxi:w #1 / #2 \s_@@_stop
+\group_begin:
+ \cs_set:Npn \@@_tmp:n #1
+ {
+ \cs_new:Npn \@@_trim_spaces:n ##1
+ {
+ \exp_after:wN \@@_trim_spaces_auxi:w \tl_to_str:n { / ##1 } /
+ \s_@@_nil \@@_trim_spaces_auxi:w
+ \s_@@_mark \@@_trim_spaces_auxii:w
+ #1 / #1
+ \s_@@_nil \@@_trim_spaces_auxii:w
+ \s_@@_mark \@@_trim_spaces_auxiii:w
+ }
+ }
+ \@@_tmp:n { ~ }
+\group_end:
+\cs_new:Npn \@@_trim_spaces_auxi:w #1 ~ / #2 \s_@@_nil #3
{
- \@@_quark_if_nil:nTF {#2}
- { \tl_trim_spaces:n {#1} }
- { \@@_trim_spaces_auxii:w #1 / #2 }
+ #3 #1 / #2 \s_@@_nil #3
}
-\cs_new:Npn \@@_trim_spaces_auxii:w #1 / #2 / \q_@@_nil
+\cs_new:Npn \@@_trim_spaces_auxii:w #1 / ~ #2 \s_@@_mark #3
{
- \tl_trim_spaces:n {#1}
- \@@_trim_spaces_auxiii:w #2 / \q_@@_recursion_tail / \q_@@_recursion_stop
+ #3 #1 / #2 \s_@@_mark #3
}
-\cs_set:Npn \@@_trim_spaces_auxiii:w #1 /
+\cs_new:Npn \@@_trim_spaces_auxiii:w
+ / #1 /
+ \s_@@_nil \@@_trim_spaces_auxi:w
+ \s_@@_mark \@@_trim_spaces_auxii:w
+ /
+ \s_@@_nil \@@_trim_spaces_auxii:w
+ \s_@@_mark \@@_trim_spaces_auxiii:w
{
- \@@_if_recursion_tail_stop:n {#1}
- / \tl_trim_spaces:n { #1 }
- \@@_trim_spaces_auxiii:w
+ #1
}
% \end{macrocode}
% \end{macro}
@@ -3102,7 +3145,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
%\end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3legacy.dtx b/macros/latex/contrib/l3kernel/l3legacy.dtx
index c0fbef3745..33d3749515 100644
--- a/macros/latex/contrib/l3kernel/l3legacy.dtx
+++ b/macros/latex/contrib/l3kernel/l3legacy.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3luatex.dtx b/macros/latex/contrib/l3kernel/l3luatex.dtx
index 298ecee05e..01686ced0d 100644
--- a/macros/latex/contrib/l3kernel/l3luatex.dtx
+++ b/macros/latex/contrib/l3kernel/l3luatex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -216,7 +216,7 @@
% \section{\pkg{l3luatex} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \subsection{Breaking out to \Lua{}}
@@ -556,43 +556,12 @@ l3kernel.shellescape = shellescape
% \end{macrocode}
% \end{macro}
%
-% \subsection{Generic \Lua{} and font support}
-%
-% \begin{macrocode}
-%<*initex>
-% \end{macrocode}
-%
-% \begin{macrocode}
-%<@@=alloc>
-% \end{macrocode}
-%
-% A small amount of generic code is used by almost all \LuaTeX{} material so
-% needs to be loaded by the format.
-% \begin{macrocode}
-attribute_count_name = "g_@@_attribute_int"
-bytecode_count_name = "g_@@_bytecode_int"
-chunkname_count_name = "g_@@_chunkname_int"
-whatsit_count_name = "g_@@_whatsit_int"
-require("ltluatex")
-% \end{macrocode}
-%
-% With the above available the font loader code used by plain \TeX{} and
-% \LaTeXe{} when used with \LuaTeX{} can be loaded here. This is thus being
-% treated more-or-less as part of the engine itself.
-% \begin{macrocode}
-require("luaotfload-main")
-local _void = luaotfload.main()
-% \end{macrocode}
-% \begin{macrocode}
-%</initex>
-% \end{macrocode}
-%
% \begin{macrocode}
%</lua>
% \end{macrocode}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
%\end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3msg.dtx b/macros/latex/contrib/l3kernel/l3msg.dtx
index 5cbc7e9b09..f95f4ddabd 100644
--- a/macros/latex/contrib/l3kernel/l3msg.dtx
+++ b/macros/latex/contrib/l3kernel/l3msg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -564,7 +564,7 @@
% \section{\pkg{l3msg} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -901,12 +901,8 @@
% \subsection{Displaying messages}
%
% \LaTeX{} is handling error messages and so the \TeX{} ones are disabled.
-% This is already done by the \LaTeXe{} kernel, so to avoid messing up any
-% deliberate change by a user this is only set in format mode.
% \begin{macrocode}
-%<*initex>
\int_gset:Nn \tex_errorcontextlines:D { -1 }
-%</initex>
% \end{macrocode}
%
% \begin{macro}[EXP]
@@ -974,12 +970,7 @@
{
\prop_if_in:NnTF \g_msg_module_type_prop {#1}
{ \prop_item:Nn \g_msg_module_type_prop {#1} }
-%<*initex>
- { Module }
-%</initex>
-%<*package>
{ Package }
-%</package>
}
% \end{macrocode}
% \end{macro}
@@ -1404,7 +1395,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_use:nnnnnnn #1#2#3#4#5#6#7
{
-%<package> \cs_if_exist_use:N \conditionally@traceoff
+ \cs_if_exist_use:N \conditionally@traceoff
\msg_if_exist:nnTF {#2} {#3}
{
\@@_class_chk_exist:nT {#1}
@@ -1422,7 +1413,7 @@
}
}
{ \__kernel_msg_error:nnxx { kernel } { message-unknown } {#2} {#3} }
-%<package> \cs_if_exist_use:N \conditionally@traceon
+ \cs_if_exist_use:N \conditionally@traceon
}
\cs_new_protected:Npn \@@_use_code: { }
% \end{macrocode}
@@ -1665,23 +1656,32 @@
%
% \begin{macro}
% {
-% \__kernel_msg_fatal:nnnnnn ,
-% \__kernel_msg_fatal:nnnnn ,
-% \__kernel_msg_fatal:nnnn ,
-% \__kernel_msg_fatal:nnn ,
-% \__kernel_msg_fatal:nn ,
-% \__kernel_msg_fatal:nnxxxx ,
-% \__kernel_msg_fatal:nnxxx ,
-% \__kernel_msg_fatal:nnxx ,
-% \__kernel_msg_fatal:nnx ,
-% \__kernel_msg_error:nnnnnn ,
-% \__kernel_msg_error:nnnnn ,
-% \__kernel_msg_error:nnnn ,
-% \__kernel_msg_error:nnn ,
-% \__kernel_msg_error:nn ,
-% \__kernel_msg_error:nnxxxx ,
-% \__kernel_msg_error:nnxxx ,
-% \__kernel_msg_error:nnxx ,
+% \__kernel_msg_fatal:nnnnnn ,
+% \__kernel_msg_fatal:nnnnn ,
+% \__kernel_msg_fatal:nnnn ,
+% \__kernel_msg_fatal:nnn ,
+% \__kernel_msg_fatal:nn ,
+% \__kernel_msg_fatal:nnxxxx ,
+% \__kernel_msg_fatal:nnxxx ,
+% \__kernel_msg_fatal:nnxx ,
+% \__kernel_msg_fatal:nnx ,
+% \__kernel_msg_critical:nnnnnn ,
+% \__kernel_msg_critical:nnnnn ,
+% \__kernel_msg_critical:nnnn ,
+% \__kernel_msg_critical:nnn ,
+% \__kernel_msg_critical:nn ,
+% \__kernel_msg_critical:nnxxxx ,
+% \__kernel_msg_critical:nnxxx ,
+% \__kernel_msg_critical:nnxx ,
+% \__kernel_msg_critical:nnx ,
+% \__kernel_msg_error:nnnnnn ,
+% \__kernel_msg_error:nnnnn ,
+% \__kernel_msg_error:nnnn ,
+% \__kernel_msg_error:nnn ,
+% \__kernel_msg_error:nn ,
+% \__kernel_msg_error:nnxxxx ,
+% \__kernel_msg_error:nnxxx ,
+% \__kernel_msg_error:nnxx ,
% \__kernel_msg_error:nnx
% }
% Neither fatal kernel errors nor kernel errors can be redirected. We
@@ -1691,6 +1691,7 @@
% errors.
% \begin{macrocode}
\@@_kernel_class_new:nN { fatal } \@@_fatal_code:nnnnnn
+ \@@_kernel_class_new:nN { critical } \@@_critical_code:nnnnnn
\cs_undefine:N \__kernel_msg_error:nnxx
\cs_undefine:N \__kernel_msg_error:nnx
\cs_undefine:N \__kernel_msg_error:nn
@@ -1977,28 +1978,15 @@
% \texttt{log-functions}, or on the contrary if debugging is turned off.
% In format mode the error is somewhat different.
% \begin{macrocode}
-%<*package>
-\__kernel_msg_new:nnnn { kernel } { enable-debug }
- { To~use~'#1'~load~expl3~with~the~'enable-debug'~option. }
- {
- The~function~'#1'~will~be~ignored~because~it~can~only~work~if~
- some~internal~functions~in~expl3~have~been~appropriately~
- defined.~This~only~happens~if~one~of~the~options~
- 'enable-debug',~'check-declarations'~or~'log-functions'~was~
- given~when~loading~expl3.
- }
-%</package>
-%<*initex>
\__kernel_msg_new:nnnn { kernel } { enable-debug }
- { '#1'~cannot~be~used~in~format~mode. }
+ { To~use~'#1'~set~the~'enable-debug'~option. }
{
The~function~'#1'~will~be~ignored~because~it~can~only~work~if~
some~internal~functions~in~expl3~have~been~appropriately~
- defined.~This~only~happens~in~package~mode~(and~only~if~one~of~
- the~options~'enable-debug',~'check-declarations'~or~'log-functions'~
- was~given~when~loading~expl3.
+ defined.~This~only~happens~if~one~of~the~options~
+ 'enable-debug',~'check-declarations'~or~'log-functions'~was~
+ given~as~an~option:~see~the~main~expl3~documentation.
}
-%</initex>
% \end{macrocode}
%
% Some errors only appear in expandable settings,
@@ -2235,7 +2223,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3names.dtx b/macros/latex/contrib/l3kernel/l3names.dtx
index 03a9f2ae2b..d070bb2952 100644
--- a/macros/latex/contrib/l3kernel/l3names.dtx
+++ b/macros/latex/contrib/l3kernel/l3names.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -56,7 +56,6 @@
% \begin{itemize}
% \item defines new names for all \TeX{} primitives;
% \item switches to the category code r{\'e}gime for programming;
-% \item provides support settings for building the code as a \TeX{} format.
% \end{itemize}
%
% This module is entirely dedicated to primitives, which should not be
@@ -76,7 +75,7 @@
% \section{\pkg{l3names} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% The prefix here is \texttt{kernel}. A few places need |@@| to be left
@@ -86,8 +85,7 @@
% \end{macrocode}
%
% The code here simply renames all of the primitives to new, internal,
-% names. In format mode, it also deletes all of the existing names (although
-% some do come back later).
+% names.
%
% The \tn{let} primitive is renamed by hand first as it is essential for
% the entire process to follow. This also uses \tn{global}, as that way
@@ -104,23 +102,17 @@
% \end{macrocode}
%
% \begin{macro}{\@@_primitive:NN}
-% A temporary function to actually do the renaming. This also allows the
-% original names to be removed in format mode.
+% A temporary function to actually do the renaming.
% \begin{macrocode}
\long \def \@@_primitive:NN #1#2
- {
- \tex_global:D \tex_let:D #2 #1
-%<*initex>
- \tex_global:D \tex_let:D #1 \tex_undefined:D
-%</initex>
- }
+ { \tex_global:D \tex_let:D #2 #1 }
% \end{macrocode}
%\end{macro}
%
% To allow extracting \enquote{just the names}, a bit of DocStrip fiddling.
% \begin{macrocode}
-%</initex|package>
-%<*initex|names|package>
+%</package>
+%<*names|package>
% \end{macrocode}
%
% In the current incarnation of this package, all \TeX{} primitives
@@ -675,8 +667,8 @@
% for \LuaTeX{} tracking all of that would be hard. Instead, we now check that
% we only save primitives if they actually exist.
% \begin{macrocode}
-%</initex|names|package>
-%<*initex|package>
+%</names|package>
+%<*package>
\tex_long:D \tex_def:D \use_ii:nn #1#2 {#2}
\tex_long:D \tex_def:D \use_none:n #1 { }
\tex_long:D \tex_def:D \@@_primitive:NN #1#2
@@ -685,12 +677,9 @@
\tex_expandafter:D \use_ii:nn
\tex_fi:D
\use_none:n { \tex_global:D \tex_let:D #2 #1 }
-%<*initex>
- \tex_global:D \tex_let:D #1 \tex_undefined:D
-%</initex>
}
-%</initex|package>
-%<*initex|names|package>
+%</package>
+%<*names|package>
% \end{macrocode}
% \XeTeX{}-specific primitives. Note that \XeTeX{}'s \tn{strcmp} is
% handled earlier and is \enquote{rolled up} into \tn{pdfstrcmp}.
@@ -1197,8 +1186,8 @@
% \end{macrocode}
% End of the \enquote{just the names} part of the source.
% \begin{macrocode}
-%</initex|names|package>
-%<*initex|package>
+%</names|package>
+%<*package>
% \end{macrocode}
%
% The job is done: close the group (using the primitive renamed!).
@@ -1212,7 +1201,6 @@
% At the beginning of the \LaTeXe{} format, the primitives \tn{end} and
% \tn{input} are renamed, and only later on the other ones.
% \begin{macrocode}
-%<*package>
\tex_ifdefined:D \@@@@end
\tex_let:D \tex_end:D \@@@@end
\tex_let:D \tex_input:D \@@@@input
@@ -1368,7 +1356,6 @@
\tex_let:D \tex_mapfile:D \tex_undefined:D
\tex_let:D \tex_mapline:D \tex_undefined:D
\tex_fi:D
-%</package>
% \end{macrocode}
% A few packages do unfortunate things to date-related primitives.
% \begin{macrocode}
@@ -1403,13 +1390,11 @@
% confusing. Removing them means that \cs{tex_pdftexversion:D} is
% a marker for \pdfTeX{} alone: useful in engine-dependent code later.
% \begin{macrocode}
-%<*initex|package>
\tex_ifdefined:D \tex_luatexversion:D
\tex_let:D \tex_pdftexbanner:D \tex_undefined:D
\tex_let:D \tex_pdftexrevision:D \tex_undefined:D
\tex_let:D \tex_pdftexversion:D \tex_undefined:D
\tex_fi:D
-%</initex|package>
% \end{macrocode}
%
% For \ConTeXt{}, two tests are needed. Both Mark~II and Mark~IV move several
@@ -1417,7 +1402,6 @@
% as a marker. For Mark~IV, a few more primitives are moved: they are
% implemented using some Lua code in the current \ConTeXt{}.
% \begin{macrocode}
-%<*package>
\tex_ifdefined:D \normalend
\tex_let:D \tex_end:D \normalend
\tex_let:D \tex_everyjob:D \normaleveryjob
@@ -1444,11 +1428,10 @@
\tex_let:D \tex_middle:D \normalmiddle
\tex_let:D \tex_right:D \normalright
\tex_fi:D
-%</package>
% \end{macrocode}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3news.pdf b/macros/latex/contrib/l3kernel/l3news.pdf
index 9463b85375..f37b45a703 100644
--- a/macros/latex/contrib/l3kernel/l3news.pdf
+++ b/macros/latex/contrib/l3kernel/l3news.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news01.pdf b/macros/latex/contrib/l3kernel/l3news01.pdf
index 5c3bb76914..03f8ad6669 100644
--- a/macros/latex/contrib/l3kernel/l3news01.pdf
+++ b/macros/latex/contrib/l3kernel/l3news01.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news02.pdf b/macros/latex/contrib/l3kernel/l3news02.pdf
index 0d80eae081..1495f21dcd 100644
--- a/macros/latex/contrib/l3kernel/l3news02.pdf
+++ b/macros/latex/contrib/l3kernel/l3news02.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news03.pdf b/macros/latex/contrib/l3kernel/l3news03.pdf
index 29264d3578..d18a6f04fb 100644
--- a/macros/latex/contrib/l3kernel/l3news03.pdf
+++ b/macros/latex/contrib/l3kernel/l3news03.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news04.pdf b/macros/latex/contrib/l3kernel/l3news04.pdf
index 1b990e3889..717b0aa96b 100644
--- a/macros/latex/contrib/l3kernel/l3news04.pdf
+++ b/macros/latex/contrib/l3kernel/l3news04.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news05.pdf b/macros/latex/contrib/l3kernel/l3news05.pdf
index ab75e4b939..fc12886e94 100644
--- a/macros/latex/contrib/l3kernel/l3news05.pdf
+++ b/macros/latex/contrib/l3kernel/l3news05.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news06.pdf b/macros/latex/contrib/l3kernel/l3news06.pdf
index 95606ad096..858b05d977 100644
--- a/macros/latex/contrib/l3kernel/l3news06.pdf
+++ b/macros/latex/contrib/l3kernel/l3news06.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news07.pdf b/macros/latex/contrib/l3kernel/l3news07.pdf
index a51e4512e4..58479d7dc1 100644
--- a/macros/latex/contrib/l3kernel/l3news07.pdf
+++ b/macros/latex/contrib/l3kernel/l3news07.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news08.pdf b/macros/latex/contrib/l3kernel/l3news08.pdf
index 45e221f9ba..3d8c621445 100644
--- a/macros/latex/contrib/l3kernel/l3news08.pdf
+++ b/macros/latex/contrib/l3kernel/l3news08.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news09.pdf b/macros/latex/contrib/l3kernel/l3news09.pdf
index c2a1cc1816..1ae9972b0e 100644
--- a/macros/latex/contrib/l3kernel/l3news09.pdf
+++ b/macros/latex/contrib/l3kernel/l3news09.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news10.pdf b/macros/latex/contrib/l3kernel/l3news10.pdf
index af9d89b61a..4b5e51d743 100644
--- a/macros/latex/contrib/l3kernel/l3news10.pdf
+++ b/macros/latex/contrib/l3kernel/l3news10.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news11.pdf b/macros/latex/contrib/l3kernel/l3news11.pdf
index c9a93fa975..7170e1db61 100644
--- a/macros/latex/contrib/l3kernel/l3news11.pdf
+++ b/macros/latex/contrib/l3kernel/l3news11.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news12.pdf b/macros/latex/contrib/l3kernel/l3news12.pdf
index cc045f3a19..a1f3d50fef 100644
--- a/macros/latex/contrib/l3kernel/l3news12.pdf
+++ b/macros/latex/contrib/l3kernel/l3news12.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3prefixes.csv b/macros/latex/contrib/l3kernel/l3prefixes.csv
index bcf02f23b6..1ec250856c 100644
--- a/macros/latex/contrib/l3kernel/l3prefixes.csv
+++ b/macros/latex/contrib/l3kernel/l3prefixes.csv
@@ -20,6 +20,7 @@ bearwear,bearwear,Ulrike Fischer,https://github.com/u-fischer/bearwear,https://g
bool,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
box,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
bxjh,BXjaholiday,Takuto Asakura,https://github.com/wtsnjp/BXjaholiday,https://github.com/wtsnjp/BXjaholiday.git,https://github.com/wtsnjp/BXjaholiday/issues,2018-02-02,2019-02-02,
+cascade,cascade,F. Pantigny,,,,2020-07-21,2020-07-21,
catcode,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12,
cctab,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-28,2012-09-28,
cellprops,cellprops,Julien Rivaud,,,,2018-06-13,2018-06-13,
diff --git a/macros/latex/contrib/l3kernel/l3prefixes.pdf b/macros/latex/contrib/l3kernel/l3prefixes.pdf
index 9b9fc68466..ed6fc27f00 100644
--- a/macros/latex/contrib/l3kernel/l3prefixes.pdf
+++ b/macros/latex/contrib/l3kernel/l3prefixes.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3prg.dtx b/macros/latex/contrib/l3kernel/l3prg.dtx
index c1f794e015..c993560bf7 100644
--- a/macros/latex/contrib/l3kernel/l3prg.dtx
+++ b/macros/latex/contrib/l3kernel/l3prg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -770,7 +770,7 @@
% \TestFiles{m3prg001.lvt,m3prg002.lvt,m3prg003.lvt}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \subsection{Primitive conditionals}
@@ -1648,13 +1648,12 @@
%
% \begin{macro}{\prg_break_point:}
% \begin{macro}{\prg_break:, \prg_break:n}
-% Also done in \pkg{l3basics} as in format mode these are needed within
-% \pkg{l3alloc}.
+% Also done in \pkg{l3basics}.
% \end{macro}
% \end{macro}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3prop.dtx b/macros/latex/contrib/l3kernel/l3prop.dtx
index 790f0e3b31..d8923d2177 100644
--- a/macros/latex/contrib/l3kernel/l3prop.dtx
+++ b/macros/latex/contrib/l3kernel/l3prop.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -525,7 +525,7 @@
% \TestFiles{m3prop001, m3prop002, m3prop003, m3prop004, m3show001}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -1369,7 +1369,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3quark.dtx b/macros/latex/contrib/l3kernel/l3quark.dtx
index 62474447ef..d0adf2a00c 100644
--- a/macros/latex/contrib/l3kernel/l3quark.dtx
+++ b/macros/latex/contrib/l3kernel/l3quark.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -354,7 +354,7 @@
% \TestFiles{m3quark001.lvt}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \subsection{Quarks}
@@ -1003,7 +1003,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3regex.dtx b/macros/latex/contrib/l3kernel/l3regex.dtx
index 3820ecdb67..dcc408e48b 100644
--- a/macros/latex/contrib/l3kernel/l3regex.dtx
+++ b/macros/latex/contrib/l3kernel/l3regex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -811,7 +811,7 @@
% \section{\pkg{l3regex} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -6716,7 +6716,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3seq.dtx b/macros/latex/contrib/l3kernel/l3seq.dtx
index bd935c6f60..b0a1638170 100644
--- a/macros/latex/contrib/l3kernel/l3seq.dtx
+++ b/macros/latex/contrib/l3kernel/l3seq.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -988,7 +988,7 @@
% \TestFiles{m3seq002,m3seq003}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -2357,7 +2357,7 @@
% \end{variable}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3skip.dtx b/macros/latex/contrib/l3kernel/l3skip.dtx
index a87f940938..9987d4f57c 100644
--- a/macros/latex/contrib/l3kernel/l3skip.dtx
+++ b/macros/latex/contrib/l3kernel/l3skip.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -1065,7 +1065,7 @@
% \section{\pkg{l3skip} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -1109,13 +1109,11 @@
% \begin{macro}{\dim_new:N, \dim_new:c}
% Allocating \meta{dim} registers \ldots
% \begin{macrocode}
-%<*package>
\cs_new_protected:Npn \dim_new:N #1
{
\__kernel_chk_if_free_cs:N #1
\cs:w newdimen \cs_end: #1
}
-%</package>
\cs_generate_variant:Nn \dim_new:N { c }
% \end{macrocode}
% \end{macro}
@@ -1793,13 +1791,11 @@
% \begin{macro}{\skip_new:N, \skip_new:c}
% Allocation of a new internal registers.
% \begin{macrocode}
-%<*package>
\cs_new_protected:Npn \skip_new:N #1
{
\__kernel_chk_if_free_cs:N #1
\cs:w newskip \cs_end: #1
}
-%</package>
\cs_generate_variant:Nn \skip_new:N { c }
% \end{macrocode}
% \end{macro}
@@ -2044,13 +2040,11 @@
% \begin{macro}{\muskip_new:N, \muskip_new:c}
% And then we add muskips.
% \begin{macrocode}
-%<*package>
\cs_new_protected:Npn \muskip_new:N #1
{
\__kernel_chk_if_free_cs:N #1
\cs:w newmuskip \cs_end: #1
}
-%</package>
\cs_generate_variant:Nn \muskip_new:N { c }
% \end{macrocode}
% \end{macro}
@@ -2242,7 +2236,7 @@
% \end{variable}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3sort.dtx b/macros/latex/contrib/l3kernel/l3sort.dtx
index b84c2e298a..808d6214d0 100644
--- a/macros/latex/contrib/l3kernel/l3sort.dtx
+++ b/macros/latex/contrib/l3kernel/l3sort.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -112,7 +112,7 @@
% \section{\pkg{l3sort} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -271,12 +271,8 @@
% In \ConTeXt{} MkIV the range is from
% $|\c_syst_last_allocated_toks|+1$ to \cs{c_max_register_int}, and in
% MkII it is from $|\lastallocatedtoks|+1$ to \cs{c_max_register_int}.
-% In all these cases, call \cs{@@_shrink_range:}. The \LaTeX3 format
-% mode is easiest: no \tn{toks} are ever allocated so available
-% \tn{toks} range from $0$ to \cs{c_max_register_int} and we
-% precompute the result of \cs{@@_shrink_range:}.
+% In all these cases, call \cs{@@_shrink_range:}.
% \begin{macrocode}
-%<*package>
\cs_new_protected:Npn \@@_compute_range:
{
\int_set:Nn \l_@@_min_int { \tex_count:D 15 + 1 }
@@ -322,17 +318,6 @@
}
}
}
-%</package>
-%<*initex>
-\int_const:Nn \c_@@_max_length_int
- { ( \c_max_register_int + 1 ) * 3 / 4 }
-\cs_new_protected:Npn \@@_compute_range:
- {
- \int_set:Nn \l_@@_min_int { 0 }
- \int_set:Nn \l_@@_true_max_int { \c_max_register_int + 1 }
- \int_set:Nn \l_@@_max_int { \c_@@_max_length_int }
- }
-%</initex>
% \end{macrocode}
% \end{variable}
% \end{macro}
@@ -352,7 +337,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_main:NNNn #1#2#3#4
{
-%<package> \@@_disable_toksdef:
+ \@@_disable_toksdef:
\@@_compute_range:
\int_set_eq:NN \l_@@_top_int \l_@@_min_int
#1 #3
@@ -1036,7 +1021,6 @@
% \pkg{l3sort}. In format mode, none of this is needed since there is
% no \tn{toks} allocator.
% \begin{macrocode}
-%<*package>
\cs_new_protected:Npn \@@_disable_toksdef:
{ \cs_set_eq:NN \toksdef \@@_disabled_toksdef:n }
\cs_new_protected:Npn \@@_disabled_toksdef:n #1
@@ -1054,7 +1038,6 @@
\iow_char:N\\newtoks~
or~a~similar~command.~The~list~will~not~be~sorted.
}
-%</package>
% \end{macrocode}
% \end{macro}
%
@@ -1103,7 +1086,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3str-convert.dtx b/macros/latex/contrib/l3kernel/l3str-convert.dtx
index e57c165f1b..324066cd41 100644
--- a/macros/latex/contrib/l3kernel/l3str-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3str-convert.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -249,7 +249,7 @@
% \section{\pkg{l3str-convert} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -2654,7 +2654,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \subsubsection{\textsc{iso 8859} support}
diff --git a/macros/latex/contrib/l3kernel/l3str.dtx b/macros/latex/contrib/l3kernel/l3str.dtx
index 539881e139..466519ac8c 100644
--- a/macros/latex/contrib/l3kernel/l3str.dtx
+++ b/macros/latex/contrib/l3kernel/l3str.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -857,7 +857,7 @@
% \section{\pkg{l3str} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -2022,7 +2022,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3styleguide.pdf b/macros/latex/contrib/l3kernel/l3styleguide.pdf
index 575770b6c8..271e8e5916 100644
--- a/macros/latex/contrib/l3kernel/l3styleguide.pdf
+++ b/macros/latex/contrib/l3kernel/l3styleguide.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3styleguide.tex b/macros/latex/contrib/l3kernel/l3styleguide.tex
index 0d2028f2c2..9124a30577 100644
--- a/macros/latex/contrib/l3kernel/l3styleguide.tex
+++ b/macros/latex/contrib/l3kernel/l3styleguide.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2020-07-17}
+\date{Released 2020-08-07}
\begin{document}
diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
index 76dc0f00c9..1c33b67b33 100644
--- a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
+++ b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.tex b/macros/latex/contrib/l3kernel/l3syntax-changes.tex
index 58824c3b4b..4c8fe53915 100644
--- a/macros/latex/contrib/l3kernel/l3syntax-changes.tex
+++ b/macros/latex/contrib/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 2020-07-17}
+\date{Released 2020-08-07}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3sys.dtx b/macros/latex/contrib/l3kernel/l3sys.dtx
index b15b61d521..16cdfe6f3d 100644
--- a/macros/latex/contrib/l3kernel/l3sys.dtx
+++ b/macros/latex/contrib/l3kernel/l3sys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -300,7 +300,7 @@
% \subsection{Kernel code}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \subsubsection{Detecting the engine}
@@ -874,7 +874,7 @@
% \end{variable}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
%\end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.pdf b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
index 5826dda253..3b214dcca7 100644
--- a/macros/latex/contrib/l3kernel/l3term-glossary.pdf
+++ b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.tex b/macros/latex/contrib/l3kernel/l3term-glossary.tex
index 90e2c3c768..3ac84ac64e 100644
--- a/macros/latex/contrib/l3kernel/l3term-glossary.tex
+++ b/macros/latex/contrib/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 2020-07-17}
+\date{Released 2020-08-07}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3text-case.dtx b/macros/latex/contrib/l3kernel/l3text-case.dtx
index a3dde63359..0f56576b23 100644
--- a/macros/latex/contrib/l3kernel/l3text-case.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-case.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -56,7 +56,7 @@
% \section{\pkg{l3text-case} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -1584,7 +1584,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3text-purify.dtx b/macros/latex/contrib/l3kernel/l3text-purify.dtx
index c48ac585a2..9978eb3cc0 100644
--- a/macros/latex/contrib/l3kernel/l3text-purify.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-purify.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -56,7 +56,7 @@
% \section{\pkg{l3text-purify} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -810,7 +810,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3text.dtx b/macros/latex/contrib/l3kernel/l3text.dtx
index 2946a48df3..b1246336da 100644
--- a/macros/latex/contrib/l3kernel/l3text.dtx
+++ b/macros/latex/contrib/l3kernel/l3text.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -270,7 +270,7 @@
% \section{\pkg{l3text} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -515,7 +515,6 @@
% Special cases for accents and letter-like symbols, which in some cases will
% need to be converted further.
% \begin{macrocode}
-%<*package>
\tl_new:N \l_text_accents_tl
\tl_set:Nn \l_text_accents_tl
{ \` \' \^ \~ \= \u \. \" \r \H \v \d \c \k \b \t }
@@ -534,7 +533,6 @@
\SS \ss
\TH \th
}
-%</package>
% \end{macrocode}
% \end{variable}
%
@@ -566,10 +564,8 @@
% Commands which need not to expand.
% \begin{macrocode}
\tl_new:N \l_text_expand_exclude_tl
-%<*package>
\tl_set:Nn \l_text_expand_exclude_tl
{ \begin \cite \end \label \ref }
-%</package>
% \end{macrocode}
% \end{variable}
%
@@ -862,13 +858,6 @@
% \begin{macrocode}
\cs_new:Npn \@@_expand_exclude:N #1
{
-%<*initex>
- \exp_after:wN \@@_expand_exclude:NN
- \l_text_math_arg_tl
- #1
- \q_@@_recursion_tail \q_@@_recursion_stop
-%</initex>
-%<*package>
\exp_args:Ne \@@_expand_exclude:nN
{
\exp_not:V \l_text_math_arg_tl
@@ -876,24 +865,16 @@
\exp_not:V \l_text_expand_exclude_tl
}
#1
-%</package>
}
-%<*package>
\cs_new:Npn \@@_expand_exclude:nN #1#2
{
\@@_expand_exclude:NN #2 #1
\q_@@_recursion_tail \q_@@_recursion_stop
}
-%</package>
\cs_new:Npn \@@_expand_exclude:NN #1#2
{
\@@_if_recursion_tail_stop_do:Nn #2
-%<*initex>
- { \@@_expand_cs:N #1 }
-%</initex>
-%<*package>
{ \@@_expand_letterlike:N #1 }
-%</package>
\cs_if_eq:NNTF #2 #1
{
\@@_use_i_delimit_by_q_recursion_stop:nw
@@ -910,7 +891,6 @@
% Another list of exceptions: these ones take no arguments so are
% easier to handle.
% \begin{macrocode}
-%<*package>
\cs_new:Npn \@@_expand_letterlike:N #1
{
\exp_after:wN \@@_expand_letterlike:NN \exp_after:wN
@@ -931,7 +911,6 @@
}
{ \@@_expand_letterlike:NN #1 }
}
-%</package>
% \end{macrocode}
% \LaTeXe{}'s \cs{protect} makes life interesting. Where possible, we
% simply remove it and replace with the \enquote{parent} command; of course,
@@ -1076,7 +1055,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
index 4944e42682..14af0c466e 100644
--- a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -165,7 +165,7 @@
% ^^A which does not add the <active char> in memory.
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \subsection{Variables and helper functions}
@@ -1098,7 +1098,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3tl.dtx b/macros/latex/contrib/l3kernel/l3tl.dtx
index c315612b43..5e088e4558 100644
--- a/macros/latex/contrib/l3kernel/l3tl.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -1256,7 +1256,7 @@
% \section{\pkg{l3tl} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -3460,7 +3460,7 @@
% \end{variable}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3token.dtx b/macros/latex/contrib/l3kernel/l3token.dtx
index cffbea2c97..11f4fc4bcd 100644
--- a/macros/latex/contrib/l3kernel/l3token.dtx
+++ b/macros/latex/contrib/l3kernel/l3token.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -1108,7 +1108,7 @@
% \section{\pkg{l3token} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -1448,10 +1448,8 @@
% auxiliaries reflects that.
% \begin{macrocode}
\group_begin:
-%<*package>
\char_set_catcode_active:N \^^L
\cs_set:Npn ^^L { }
-%</package>
\char_set_catcode_other:n { 0 }
\if_int_odd:w 0
\sys_if_engine_luatex:T { 1 }
@@ -1534,8 +1532,8 @@
% lists, one for each character code, using \tn{tex_lowercase:D} to
% convert |^^@| in each case. The \texttt{x}-type expansion ensures
% that \tn{tex_lowercase:D} receives the contents of the token list.
-% In package mode, |^^L| is awkward hence this is done in three parts.
-% Notice that at this stage |^^@| is active.
+% |^^L| is awkward hence this is done in three parts: up to |^^L|,
+% |^^L| itslef and above |^L|. Notice that at this stage |^^@| is active.
% \begin{macrocode}
\cs_set_protected:Npn \@@_tmp:n #1
{
@@ -1548,17 +1546,12 @@
{ \exp_not:o \l_@@_tmp_tl }
}
}
-%<*package>
\int_step_function:nnN { 0 } { 11 } \@@_tmp:n
\group_begin:
\tl_replace_once:Nnn \l_@@_tmp_tl { ^^@ } { \ERROR }
\@@_tmp:n { 12 }
\group_end:
\int_step_function:nnN { 13 } { 255 } \@@_tmp:n
-%</package>
-%<*initex>
- \int_step_function:nnN { 0 } { 255 } \@@_tmp:n
-%</initex>
% \end{macrocode}
% As \TeX{} is very unhappy if it finds an alignment character inside
% a primitive \tn{halign} even when skipping false branches, some
@@ -2876,7 +2869,7 @@
% \end{macro}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3unicode.dtx b/macros/latex/contrib/l3kernel/l3unicode.dtx
index 334e8b7086..3c55fdfc85 100644
--- a/macros/latex/contrib/l3kernel/l3unicode.dtx
+++ b/macros/latex/contrib/l3kernel/l3unicode.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-07-17}
+% \date{Released 2020-08-07}
%
% \maketitle
%
@@ -60,7 +60,7 @@
% \section{\pkg{l3unicode} implementation}
%
% \begin{macrocode}
-%<*initex|package>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
@@ -280,7 +280,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-%</initex|package>
+%</package>
% \end{macrocode}
%
% \end{implementation}
diff --git a/macros/latex/contrib/l3kernel/source3.pdf b/macros/latex/contrib/l3kernel/source3.pdf
index 01a6f88ddf..18b0ab1e9b 100644
--- a/macros/latex/contrib/l3kernel/source3.pdf
+++ b/macros/latex/contrib/l3kernel/source3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/source3.tex b/macros/latex/contrib/l3kernel/source3.tex
index e9381760fc..4bc27dfc38 100644
--- a/macros/latex/contrib/l3kernel/source3.tex
+++ b/macros/latex/contrib/l3kernel/source3.tex
@@ -53,7 +53,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2020-07-17}
+\date{Released 2020-08-07}
\pagenumbering{roman}
\maketitle