summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-10-12 03:00:57 +0000
committerNorbert Preining <norbert@preining.info>2019-10-12 03:00:57 +0000
commit2e4672ed6f7b49c9d1c44b6ca850cfe7024fc639 (patch)
tree8cc5672ceb359cb652306244d63afc5f7d939008 /macros/latex
parentd51deaad31c304a71b51411feaf44acceb8aeb1b (diff)
CTAN sync 201910120300
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/esindex/README.md5
-rw-r--r--macros/latex/contrib/esindex/esindex.pdfbin61713 -> 62539 bytes
-rw-r--r--macros/latex/contrib/esindex/esindex.sty57
-rw-r--r--macros/latex/contrib/esindex/esindex.tex21
-rw-r--r--macros/latex/contrib/l3backend/CHANGELOG.md9
-rw-r--r--macros/latex/contrib/l3backend/README.md2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-basics.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-box.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-code.pdfbin725631 -> 740224 bytes
-rw-r--r--macros/latex/contrib/l3backend/l3backend-color.dtx10
-rw-r--r--macros/latex/contrib/l3backend/l3backend-draw.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-graphics.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-pdf.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/CHANGELOG.md20
-rw-r--r--macros/latex/contrib/l3kernel/README.md2
-rw-r--r--macros/latex/contrib/l3kernel/expl3.dtx155
-rw-r--r--macros/latex/contrib/l3kernel/expl3.pdfbin584852 -> 584850 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.pdfbin1534303 -> 1534196 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3.ins1
-rw-r--r--macros/latex/contrib/l3kernel/l3alloc.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3basics.dtx41
-rw-r--r--macros/latex/contrib/l3kernel/l3bootstrap.dtx17
-rw-r--r--macros/latex/contrib/l3kernel/l3box.dtx8
-rw-r--r--macros/latex/contrib/l3kernel/l3candidates.dtx41
-rw-r--r--macros/latex/contrib/l3kernel/l3clist.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3coffins.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3color-base.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3debug.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3deprecation.dtx2
-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.pdfbin263278 -> 263278 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3expan.dtx8
-rw-r--r--macros/latex/contrib/l3kernel/l3file.dtx87
-rw-r--r--macros/latex/contrib/l3kernel/l3final.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3flag.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-assign.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-aux.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-basics.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-convert.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-expo.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-extended.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-logic.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-parse.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-random.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-round.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-traps.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-trig.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fparray.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3int.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3intarray.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3kernel-functions.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3keys.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3legacy.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3luatex.dtx15
-rw-r--r--macros/latex/contrib/l3kernel/l3msg.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3names.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3prefixes.pdfbin59064 -> 59064 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3prg.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3prop.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3quark.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3regex.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3seq.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3skip.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3sort.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3str-convert.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3str.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.pdfbin279983 -> 279983 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.pdfbin227703 -> 227703 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3sys.dtx561
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.pdfbin186491 -> 186491 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3tl-analysis.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3tl.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3token.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3unicode.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/source3.pdfbin5681604 -> 5686452 bytes
-rw-r--r--macros/latex/contrib/l3kernel/source3.tex2
-rw-r--r--macros/latex/contrib/l3packages/CHANGELOG.md9
-rw-r--r--macros/latex/contrib/l3packages/README.md24
-rw-r--r--macros/latex/contrib/l3packages/l3keys2e.dtx4
-rw-r--r--macros/latex/contrib/l3packages/l3keys2e.pdfbin327677 -> 327046 bytes
-rw-r--r--macros/latex/contrib/l3packages/xfp.dtx4
-rw-r--r--macros/latex/contrib/l3packages/xfp.pdfbin310471 -> 309901 bytes
-rw-r--r--macros/latex/contrib/l3packages/xfrac.dtx4
-rw-r--r--macros/latex/contrib/l3packages/xfrac.pdfbin481873 -> 454315 bytes
-rw-r--r--macros/latex/contrib/l3packages/xparse.dtx39
-rw-r--r--macros/latex/contrib/l3packages/xparse.pdfbin501765 -> 501992 bytes
-rw-r--r--macros/latex/contrib/l3packages/xtemplate.dtx4
-rw-r--r--macros/latex/contrib/l3packages/xtemplate.pdfbin416969 -> 416401 bytes
-rw-r--r--macros/latex/contrib/microtype/README.md4
-rw-r--r--macros/latex/contrib/microtype/microtype-utf.dtx16
-rw-r--r--macros/latex/contrib/microtype/microtype.dtx132
-rw-r--r--macros/latex/contrib/microtype/microtype.ins2
-rw-r--r--macros/latex/contrib/microtype/microtype.pdfbin1674734 -> 1689839 bytes
99 files changed, 885 insertions, 531 deletions
diff --git a/macros/latex/contrib/esindex/README.md b/macros/latex/contrib/esindex/README.md
index a2b357cd57..6ebd7e4c79 100644
--- a/macros/latex/contrib/esindex/README.md
+++ b/macros/latex/contrib/esindex/README.md
@@ -18,6 +18,11 @@ in the document.
### Recent changes
```
+1.7 2019-10-10
+ - Fix - because of a change in a macro name, it stopped
+ working with xe/lua
+ - Multi-level comparisons (up to 3), to better sort the items.
+
1.6 2019-09-30
- Package option 'babel', which wraps each entry not in the main
language with \foreignlanguage (or other macro).
diff --git a/macros/latex/contrib/esindex/esindex.pdf b/macros/latex/contrib/esindex/esindex.pdf
index d1e0de5e5f..bc78b36c15 100644
--- a/macros/latex/contrib/esindex/esindex.pdf
+++ b/macros/latex/contrib/esindex/esindex.pdf
Binary files differ
diff --git a/macros/latex/contrib/esindex/esindex.sty b/macros/latex/contrib/esindex/esindex.sty
index 4594874db4..a63bdba6eb 100644
--- a/macros/latex/contrib/esindex/esindex.sty
+++ b/macros/latex/contrib/esindex/esindex.sty
@@ -7,7 +7,7 @@
% Repository: https://github.com/jbezos/esindex
%
-\ProvidesPackage{esindex}[2019/09/30 v1.6 Spanish indexes (and more)]
+\ProvidesPackage{esindex}[2019/10/10 v1.7 Spanish indexes (and more)]
\def\esx@level{`\!}
\def\esx@actual{`\@}
@@ -68,6 +68,8 @@
\catcode`\"=13
\catcode`\~=13
+\catcode`\^^A=12
+
\gdef\esindex#1#{\esx@index{#1}}
\lowercase{
@@ -90,7 +92,21 @@
\gdef\esx@bar@eat#1|{\def\esx@a{|#1}}
}
-\gdef\esindexexpandkey{\protected@edef\esindexkey{\esindexkey}}
+\gdef\esindexexpandkey{%
+ \protected@edef\esindexkey{\esindexkey}}
+\gdef\esindexexpandsubkey{%
+ \ifx\esindexsubkey\relax\else
+ \protected@edef\esindexsubkey{\esindexsubkey}%
+ \fi}
+\gdef\esindexexpandsubsubkey{%
+ \ifx\esindexsubsubkey\relax\else
+ \protected@edef\esindexsubsubkey{\esindexsubsubkey}%
+ \fi}
+
+\gdef\esindexexpandkeys{%
+ \esindexexpandkey
+ \esindexexpandsubkey
+ \esindexexpandsubsubkey}
% The following is called for every ! level, much like a loop. #1 is
% the current level.
@@ -111,8 +127,16 @@
% Execute \everyesindex and apply accents, so that \'a becomes a, and
% redefinitions in \everyesindex are also "applied"
\the\everyesindex
- \esindexexpandkey
+ \esindexexpandkeys
\esx@spanishreplacements
+ \protected@edef\esindexkey{%
+ \esindexkey
+ \ifx\esindexsubkey\relax\else
+ ^^A\esindexsubkey
+ \fi
+ \ifx\esindexsubsubkey\relax\else
+ ^^A\esindexsubsubkey
+ \fi}%
\@temptokena\expandafter{\esindexkey}%
% Key now in \@temptokena
% Particles, with \ignorewords. \esx@remwords works on \@temptokena
@@ -235,11 +259,28 @@
\expandafter\esx@replace@aux#1#2\esx@nil#2%
\edef#1{\the\toks@}}
-\def\esindexreplace#1#2{\esx@replace\esindexkey{#1}{#2}}
+\let\esindexsubkey\relax
+\let\esindexsubsubkey\relax
+
+\newcommand\esindexreplace[2]{%
+ \esx@replace\esindexkey{#1}{#2}}
+\newcommand\esindexreplacesub[3]{%
+ \ifx\esindexsubkey\relax
+ \let\esindexsubkey\esindexkey
+ \fi
+ \esindexreplace{#1}{#2}%
+ \esx@replace\esindexsubkey{#1}{#3}}
+\newcommand\esindexreplacesubsub[4]{%
+ \ifx\esindexsubsubkey\relax
+ \let\esindexsubsubkey\esindexkey
+ \fi
+ \esindexreplacesub{#1}{#2}{#3}%
+ \esx@replace\esindexsubsubkey{#1}{#4}}
%-------------------------
\let\esx@spanishreplacements\relax
+\let\esx@@spanishreplacements\relax
\ifesx@spanish
@@ -280,14 +321,14 @@
\ifx\XeTeXinterchartoks\@undefined
\catcode`\^^ff=12
\xdef\esindexlastchar{^^ff}
- \else
+ \else % Hats in xetex seem buggy. Limit to 4.
\catcode`\^^^^ffff=12
\xdef\esindexlastchar{^^^^ffff}
\global\let\esx@spanishreplacements\esx@@spanishreplacements
\fi
- \else
- \catcode`\^^^^ffff=12
- \xdef\esindexlastchar{^^^^ffff}
+ \else
+ \catcode`\^^^^^^10ffff=12
+ \xdef\esindexlastchar{^^^^^^10ffff}
\global\let\esx@spanishreplacements\esx@@spanishreplacements
\fi
\endgroup
diff --git a/macros/latex/contrib/esindex/esindex.tex b/macros/latex/contrib/esindex/esindex.tex
index a654b2aa8d..03d0b24386 100644
--- a/macros/latex/contrib/esindex/esindex.tex
+++ b/macros/latex/contrib/esindex/esindex.tex
@@ -14,7 +14,7 @@
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
-\title{\textsf{esindex}\\\large 1.6\quad 2019-09-30}
+\title{\textsf{esindex}\\\large 1.7\quad 2019-10-10}
\author{Javier Bezos}
@@ -46,7 +46,8 @@
{\LARGE Generating automatically sort keys for \textit{MakeIndex}
with \LaTeX\par}
\vspace*{1ex}
-Version 1.6 (2019-09-30)\par
+Version 1.7 (2019-10-10)\par
+\texttt{https://github.com/jbezos/esindex}\par
Javier Bezos (\texttt{http://www.texnia.com})
\vspace*{6ex}
@@ -86,6 +87,19 @@ Version 1.6 adds a package option -- with \verb|babel| the `actual' value
macro is \verb|\esindexlanguage|, which by default is `let' to the
\textsf{babel} macro.
+Version 1.7 (besides fixing a bug with xe/lua) adds multilevel
+comparisons (up to three levels, ie, primary, secondary and tertiary).
+For example:
+\begin{verbatim}
+\esindexreplacesub{å}{a}{2}%
+\esindexreplacesub{à}{a}{1}%
+\end{verbatim}
+creates a two-level key sorting \verb|à| before \verb|å|. For a
+three-level key use \verb|\esindexreplacesubsub| (with 4 arguments). With
+\verb|\esindexexpandkeys| the three levels are expanded. (Internally,
+with the definitions above the key for \verb|ràpid| is
+\verb|rapid^^Ar1pid|.)
+
\section{Spanish}
Este paquete ha sido diseñado para facilitar la escritura de índices
@@ -282,7 +296,8 @@ made language dependent with the appropriate test (eg, with
\textsf{iflang}).
As a convenience tool, \verb|\esindexlastchar| is \verb|^^ff| or
-\verb|^^^^ffff|, depending on the engine.
+\verb|^^^^ffff| (\verb|^^^^^^10ffff| in \textsf{luatex}), depending on
+the engine.
You can play with \textsf{lua} inside \verb|\everyesindex|, too. For
example, to convert at once things like \textit{2,3-dimetilfenol} to
diff --git a/macros/latex/contrib/l3backend/CHANGELOG.md b/macros/latex/contrib/l3backend/CHANGELOG.md
index 77ad3215ea..36f2fe987e 100644
--- a/macros/latex/contrib/l3backend/CHANGELOG.md
+++ b/macros/latex/contrib/l3backend/CHANGELOG.md
@@ -6,6 +6,12 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2019-10-11]
+
+### Changed
+
+- Improved functionality in generic mode
+
## [2019-09-05]
### Added
@@ -35,7 +41,8 @@ this project uses date-based 'snapshot' version identifiers.
- Include `l3backend` in file names
- Moved backend code to internal for each 'parent' module
-[Unreleased]: https://github.com/latex3/latex3/compare/2019-09-05...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2019-10-11...HEAD
+[2019-10-11]: https://github.com/latex3/latex3/compare/2019-09-05...2019-10-11
[2019-09-05]: https://github.com/latex3/latex3/compare/2019-08-25...2019-09-05
[2019-08-25]: https://github.com/latex3/latex3/compare/2019-07-01...2019-08-25
[2019-07-01]: https://github.com/latex3/latex3/compare/2019-05-28...2019-07-01
diff --git a/macros/latex/contrib/l3backend/README.md b/macros/latex/contrib/l3backend/README.md
index d9d9d4b8d2..fb3c01febd 100644
--- a/macros/latex/contrib/l3backend/README.md
+++ b/macros/latex/contrib/l3backend/README.md
@@ -1,7 +1,7 @@
LaTeX3 Backend Drivers
======================
-Release 2019-09-05
+Release 2019-10-11
This package forms parts of `expl3`, and contains the code used to interface
with backends (drivers) across the `expl3` codebase. The functions here are
diff --git a/macros/latex/contrib/l3backend/l3backend-basics.dtx b/macros/latex/contrib/l3backend/l3backend-basics.dtx
index b80972ffc5..3bb240f1e6 100644
--- a/macros/latex/contrib/l3backend/l3backend-basics.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-05}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-box.dtx b/macros/latex/contrib/l3backend/l3backend-box.dtx
index 630bc99140..651537398d 100644
--- a/macros/latex/contrib/l3backend/l3backend-box.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-05}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-code.pdf b/macros/latex/contrib/l3backend/l3backend-code.pdf
index be9d752b51..218d64d794 100644
--- a/macros/latex/contrib/l3backend/l3backend-code.pdf
+++ b/macros/latex/contrib/l3backend/l3backend-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3backend/l3backend-color.dtx b/macros/latex/contrib/l3backend/l3backend-color.dtx
index e11e68a5d2..4bf4b1a0d9 100644
--- a/macros/latex/contrib/l3backend/l3backend-color.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-color.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-05}
+% \date{Released 2019-10-11}
%
% \maketitle
%
@@ -84,7 +84,7 @@
\cs_new_protected:Npn \@@_backend_pickup:N #1 { }
\AtBeginDocument
{
- \@ifpackageloaded { color }
+ \cs_if_exist:cT { ver@color.sty }
{
\cs_set_protected:Npn \@@_backend_pickup:N #1
{
@@ -104,7 +104,6 @@
\cs_new_protected:Npn \@@_backend_pickup:w #1 ~ #2 \q_stop #3
{ \tl_set:Nn #3 { #1 ~ #2 } }
}
- { }
}
%</package>
% \end{macrocode}
@@ -176,13 +175,13 @@
% we store our color data in \texttt{dvips} format.
% The \tn{current@color} needs to be \texttt{x}-expanded before
% \cs{@@_backend_pickup:w} breaks it apart, because for instance
-% \pkg{xcolor} sets it to be instructions to generate a colour
+% \pkg{xcolor} sets it to be instructions to generate a color
% \begin{macrocode}
%<*package>
\cs_new_protected:Npn \@@_backend_pickup:N #1 { }
\AtBeginDocument
{
- \@ifpackageloaded { color }
+ \cs_if_exist:cT { ver@color.sty }
{
\cs_set_protected:Npn \@@_backend_pickup:N #1
{
@@ -213,7 +212,6 @@
}
}
}
- { }
}
%</package>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3backend/l3backend-draw.dtx b/macros/latex/contrib/l3backend/l3backend-draw.dtx
index 28e7f90d1c..fcbf889d5f 100644
--- a/macros/latex/contrib/l3backend/l3backend-draw.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-draw.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-05}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-graphics.dtx b/macros/latex/contrib/l3backend/l3backend-graphics.dtx
index 4993de4e56..5ed22d54fa 100644
--- a/macros/latex/contrib/l3backend/l3backend-graphics.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-graphics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-05}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-pdf.dtx b/macros/latex/contrib/l3backend/l3backend-pdf.dtx
index 1f8f3591fb..832b835c10 100644
--- a/macros/latex/contrib/l3backend/l3backend-pdf.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-05}
+% \date{Released 2019-10-11}
%
% \maketitle
%
@@ -71,7 +71,7 @@
% A very small number of items that belong at the backend level but which
% are common to all backends.
%
-% \begin{variable}{\l_@@_internal_boxf}
+% \begin{variable}{\l_@@_internal_box}
% \begin{macrocode}
\box_new:N \l_@@_internal_box
% \end{macrocode}
diff --git a/macros/latex/contrib/l3kernel/CHANGELOG.md b/macros/latex/contrib/l3kernel/CHANGELOG.md
index ba11c32453..0c6dd7e225 100644
--- a/macros/latex/contrib/l3kernel/CHANGELOG.md
+++ b/macros/latex/contrib/l3kernel/CHANGELOG.md
@@ -7,6 +7,23 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2019-10-11]
+
+### Changed
+
+- Standard backend for (u)pTeX is now `dvips`
+- Minimum LuaTeX version now v0.95
+- Moved `\debug_on:`, `\debug_off:`, `\debug_suspend:` and `\debug_resume:`
+ to stable
+- Accept 'traditional' class options for backend (`dvipdfmx`, `dvips`, etc.)
+- Performance enhancements when loading `expl3`
+
+### Fixed
+
+- Handling of files with no extension
+- Behaviour of Lua function `l3kernel.charcat` in some circumstances
+- Loading under ConTeXt
+
## [2019-10-02]
### Fixed
@@ -539,7 +556,8 @@ this project uses date-based 'snapshot' version identifiers.
- Step func­tions have been added for dim vari­ables,
e.g. `\dim_step_in­line:nnnn`
-[Unreleased]: https://github.com/latex3/latex3/compare/2019-10-02...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2019-10-11...HEAD
+[2019-10-11]: https://github.com/latex3/latex3/compare/2019-10-02...2019-10-11
[2019-10-02]: https://github.com/latex3/latex3/compare/2019-09-30...2019-10-02
[2019-09-30]: https://github.com/latex3/latex3/compare/2019-09-28...2019-09-30
[2019-09-28]: https://github.com/latex3/latex3/compare/2019-09-19...2019-09-28
diff --git a/macros/latex/contrib/l3kernel/README.md b/macros/latex/contrib/l3kernel/README.md
index 1d0566362a..fe2dbe9cd2 100644
--- a/macros/latex/contrib/l3kernel/README.md
+++ b/macros/latex/contrib/l3kernel/README.md
@@ -1,7 +1,7 @@
LaTeX3 Programming Conventions
==============================
-Release 2019-10-02
+Release 2019-10-11
Overview
--------
diff --git a/macros/latex/contrib/l3kernel/expl3.dtx b/macros/latex/contrib/l3kernel/expl3.dtx
index 7dfc70847b..dbbf69a773 100644
--- a/macros/latex/contrib/l3kernel/expl3.dtx
+++ b/macros/latex/contrib/l3kernel/expl3.dtx
@@ -22,9 +22,9 @@
%
% for those people who are interested.
%
-%<*driver|generic|package>
-\def\ExplFileDate{2019-10-02}%
-%</driver|generic|package>
+%<*driver|generic|package|2ekernel>
+%</driver|generic|package|2ekernel>
+\def\ExplFileDate{2019-10-11}%
%<*driver>
\documentclass[full]{l3doc}
\usepackage{graphicx}
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
@@ -1007,7 +1007,7 @@
% \begin{itemize}
% \item \pdfTeX{} v1.40 or later.
% \item \XeTeX{} v0.99992 or later.
-% \item \LuaTeX{} v0.76 or later.
+% \item \LuaTeX{} v0.95 or later.
% \item e-(u)\pTeX{} mid-2012 or later.
% \end{itemize}
%
@@ -1156,19 +1156,31 @@
%</!loader>
% \end{macrocode}
%
-% \subsection{\LaTeXe{} loader}
+% \subsection{\LaTeXe{} loaders}
+%
+% Loading with \LaTeXe{} may be as part of the format (pre-loading)
+% or as a package. We have to allow for both possible paths, and of
+% course the package being loaded on to of the pre-load. That means
+% the the code here must be safe against re-loading.
%
% \begin{macrocode}
-%<*package&loader>
+%<*package&loader|2ekernel>
% \end{macrocode}
%
-% Identify the package.
+% Identify the package or add to the format message.
% \begin{macrocode}
+%<*2ekernel>
+\everyjob\expandafter{\the\everyjob
+ \message{^^J\ExplFileDate\space L3 programming layer}%
+}
+%</2ekernel>
+%<*!2ekernel>
\ProvidesPackage{expl3}
[%
\ExplFileDate\space
L3 programming layer (loader)
]%
+%</!2ekernel>
% \end{macrocode}
%
% \begin{macro}{\ProvidesExplPackage, \ProvidesExplClass, \ProvidesExplFile}
@@ -1194,8 +1206,16 @@
% \end{macro}
%
% Load the business end: this leaves \cs{expl3} syntax on.
+% The test ensures we only load once without needing to know if
+% there was a preloading step.
% \begin{macrocode}
-\input{expl3-code.tex}%
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname tex\string _let:D\endcsname\relax
+ \expandafter\@firstofone
+\else
+ \expandafter\@gobble
+\fi
+ {\input{expl3-code.tex}}%
% \end{macrocode}
%
% A check that the bootstrap code did not abort loading: if it did,
@@ -1207,34 +1227,55 @@
\fi
% \end{macrocode}
%
+% If \pkg{expl3} was pre-loaded, we now have to deal with the fact that
+% the syntax will not be activated for the package mode version:
+% simply turn it on. We use \tn{@pushfilenameaux} as a marker: it's defined
+% a little later.
+% \begin{macrocode}
+%<*!2ekernel>
+\ifdefined\@pushfilenameaux
+ \ExplSyntaxOn
+\fi
+%</!2ekernel>
+% \end{macrocode}
+%
% \begin{macrocode}
%<@@=expl>
% \end{macrocode}
%
% \begin{variable}{\c_@@_def_ext_tl}
-% Needed by \LaTeXe{}.
+% Needed by \LaTeXe{}, and avoiding a re-load issue.
% \begin{macrocode}
-\tl_const:Nn \c_@@_def_ext_tl { def }
+\cs_if_exist:NF \c_@@_def_ext_tl
+ { \tl_const:Nn \c_@@_def_ext_tl { def } }
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}{\__kernel_sys_configuration_load:n}
-% For \LaTeXe{}, option loading uses the built-in functionality: as this
-% may be a reload we have to force the issue.
+% \begin{macro}
+% {\__kernel_sys_configuration_load:n,\__kernel_sys_configuration_load_std:n}
+% To load configurations, we have the following cases
+% \begin{itemize}
+% \item \pkg{expl3} is pre-loaded: by the time any configuration loads,
+% we have the full file loading stack, and only need the standard
+% version of the code here.
+% \item The package is loaded with pre-loading: we again use the standard
+% version, but we don't test just yet.
+% \item The package is used without pre-loaded code: we need to manually
+% manage \pkg{expl3} syntax.
+% \end{itemize}
% \begin{macrocode}
-\cs_new_protected:Npn \__kernel_sys_configuration_load:n #1
+\cs_gset_protected:Npn \__kernel_sys_configuration_load:n #1
+%<*!2ekernel>
+ {
+ \ExplSyntaxOff
+ \cs_undefine:c { ver@ #1 .def }
+ \@onefilewithoptions {#1} [ ] [ ]
+ \c_@@_def_ext_tl
+ \ExplSyntaxOn
+ }
+\cs_gset_protected:Npn \__kernel_sys_configuration_load_std:n #1
+%</!2ekernel>
{
- \group_begin:
- \cs_set_protected:Npn \ProvidesExplFile
- {
- \char_set_catcode_space:n { `\ }
- \ProvidesExplFileAux
- }
- \cs_set_protected:Npn \ProvidesExplFileAux ##1##2##3##4
- {
- \group_end:
- \ProvidesFile {##1} [ ##2~v##3~##4 ]
- }
\cs_undefine:c { ver@ #1 .def }
\@onefilewithoptions {#1} [ ] [ ]
\c_@@_def_ext_tl
@@ -1244,10 +1285,12 @@
%
% \begin{variable}{\l_@@_options_clist}
% \begin{macrocode}
+%<*!2ekernel>
\clist_new:N \l_@@_options_clist
\DeclareOption*
{ \clist_put_right:NV \l_@@_options_clist \CurrentOption }
\ProcessOptions \relax
+%</!2ekernel>
% \end{macrocode}
% \end{variable}
%
@@ -1279,10 +1322,46 @@
}
% \end{macrocode}
%
+% A backend has to be in place by the start of the document.
% \begin{macrocode}
+%<*2ekernel>
+\AtBeginDocument
+ {
+ \str_if_exist:NF \c_sys_backend_str
+ { \sys_load_backend:n { } }
+ }
+%</2ekernel>
+%<*!2ekernel>
\keys_set:nV { sys } \l_@@_options_clist
\str_if_exist:NF \c_sys_backend_str
{ \sys_load_backend:n { } }
+%</!2ekernel>
+% \end{macrocode}
+%
+% A test for pre-loading: does \tn{@pushfilenameaux} already exist.
+% The alrady-loaded mechanism will handle everything now.
+% \begin{macrocode}
+%<*!2ekernel>
+\cs_if_exist:NT \@pushfilenameaux
+ {
+ \cs_gset_eq:NN \__kernel_sys_configuration_load:n
+ \__kernel_sys_configuration_load_std:n
+ \endinput
+ }
+%</!2ekernel>
+% \end{macrocode}
+%
+% Load the dynamic part of the code, either now or during the next run.
+% \begin{macrocode}
+\cs_if_free:cTF { ver@expl3.sty }
+ {
+ \tex_everyjob:D \exp_after:wN
+ {
+ \tex_the:D \tex_everyjob:D
+ \sys_everyjob:
+ }
+ }
+ { \sys_everyjob: }
% \end{macrocode}
%
% \begin{macro}{\@pushfilename, \@popfilename}
@@ -1351,8 +1430,23 @@
% \end{macrocode}
% \end{variable}
%
+% Tidy up configuration loading, as promised.
+% \begin{macrocode}
+%<*!2ekernel>
+\cs_gset_eq:NN \__kernel_sys_configuration_load:n
+ \__kernel_sys_configuration_load_std:n
+%</!2ekernel>
+% \end{macrocode}
+%
+% For pre-loading, we have to manually disable the syntax.
+% \begin{macrocode}
+%<*2ekernel>
+\ExplSyntaxOff
+%</2ekernel>
+% \end{macrocode}
+%
% \begin{macrocode}
-%</package&loader>
+%</package&loader|2ekernel>
% \end{macrocode}
%
% \subsection{Generic loader}
@@ -1424,12 +1518,12 @@
% \begin{macro}{\AtBeginDocument}
% \begin{macro}[int]{\expl@AtBeginDocument}
% There are a few uses of \cs{AtBeginDocument} in the package code: the
-% easiest way around that is to simply do nothing for these. As
+% easiest way around that is to simply do the code \enquote{now}. As
% bundles such as \pkg{miniltx} may have defined \cs{AtBeginDocument}
% any existing definition is saved for restoration after the payload.
% \begin{macrocode}
\let\expl@AtBeginDocument\AtBeginDocument
-\def\AtBeginDocument#1{}%
+\def\AtBeginDocument#1{#1}%
\expandafter\def\expandafter\l@expl@tidy@tl\expandafter
{%
\l@expl@tidy@tl
@@ -1475,8 +1569,9 @@
% \end{macrocode}
% \end{macro}
%
-% Load the standard back-end.
+% Load the dynamic code and standard back-end.
% \begin{macrocode}
+\sys_everyjob:
\sys_load_backend:n { }
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3kernel/expl3.pdf b/macros/latex/contrib/l3kernel/expl3.pdf
index f3575a7c4e..50ee043f39 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 b76f488d91..ae12881d89 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 bfbfc02047..54d0a7c538 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 2019-10-02}
+\date{Released 2019-10-11}
\pagenumbering{roman}
\maketitle
diff --git a/macros/latex/contrib/l3kernel/l3.ins b/macros/latex/contrib/l3kernel/l3.ins
index 343d8d7f18..d9c7f2e6cf 100644
--- a/macros/latex/contrib/l3kernel/l3.ins
+++ b/macros/latex/contrib/l3kernel/l3.ins
@@ -111,6 +111,7 @@ and all files in that bundle must be distributed together.
}
\generate{\file{expl3.sty} {\from{expl3.dtx} {package,loader}}}
+\generate{\file{expl3.ltx} {\from{expl3.dtx} {2ekernel,loader}}}
\generate{\file{expl3-generic.tex}{\from{expl3.dtx} {generic,loader}}}
\generate{\file{l3doc.cls} {\from{l3doc.dtx} {class}}}
diff --git a/macros/latex/contrib/l3kernel/l3alloc.dtx b/macros/latex/contrib/l3kernel/l3alloc.dtx
index 7288e1b72a..ce75d1f448 100644
--- a/macros/latex/contrib/l3kernel/l3alloc.dtx
+++ b/macros/latex/contrib/l3kernel/l3alloc.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3basics.dtx b/macros/latex/contrib/l3kernel/l3basics.dtx
index a6b92aff81..bfe28e3788 100644
--- a/macros/latex/contrib/l3kernel/l3basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
@@ -1293,6 +1293,45 @@
% \end{texnote}
% \end{function}
%
+% \subsection{Debugging support}
+%
+% \begin{function}[added = 2017-07-16, updated = 2017-08-02]{\debug_on:n, \debug_off:n}
+% \begin{syntax}
+% \cs{debug_on:n} |{| \meta{comma-separated list} |}|
+% \cs{debug_off:n} |{| \meta{comma-separated list} |}|
+% \end{syntax}
+% Turn on and off within a group various debugging code, some of which
+% is also available as \pkg{expl3} load-time options. The items that
+% can be used in the \meta{list} are
+% \begin{itemize}
+% \item \texttt{check-declarations} that checks all \pkg{expl3}
+% variables used were previously declared and that local/global
+% variables (based on their name or on their first assignment) are
+% only locally/globally assigned;
+% \item \texttt{check-expressions} that checks integer, dimension,
+% skip, and muskip expressions are not terminated prematurely;
+% \item \texttt{deprecation} that makes soon-to-be-deprecated commands produce errors;
+% \item \texttt{log-functions} that logs function definitions;
+% \item \texttt{all} that does all of the above.
+% \end{itemize}
+% Providing these as switches rather than options allows testing code
+% even if it relies on other packages: load all other packages, call
+% \cs{debug_on:n}, and load the code that one is interested in
+% testing. These functions can only be used in \LaTeXe{} package mode
+% loaded with \texttt{enable-debug} or another option implying it.
+% \end{function}
+%
+% \begin{function}[added = 2017-11-28]{\debug_suspend:, \debug_resume:}
+% \begin{syntax}
+% \cs{debug_suspend:} \ldots{} \cs{debug_resume:}
+% \end{syntax}
+% Suppress (locally) errors and logging from \texttt{debug} commands,
+% except for the \texttt{deprecation} errors or warnings. These pairs
+% of commands can be nested. This can be used around pieces of code
+% that are known to fail checks, if such failures should be ignored.
+% See for instance \pkg{l3coffins}.
+% \end{function}
+%
% \end{documentation}
%
% \begin{implementation}
diff --git a/macros/latex/contrib/l3kernel/l3bootstrap.dtx b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
index 7f8da0b60b..f780908fa0 100644
--- a/macros/latex/contrib/l3kernel/l3bootstrap.dtx
+++ b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
@@ -212,24 +212,17 @@
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname directlua\endcsname\relax
\else
- \ifnum\luatexversion<70 %
+ \ifnum\luatexversion<95 %
\else
% \end{macrocode}
-% In package mode a category code table is needed: either use a pre-loaded
-% allocator or provide one using the \LaTeXe{}-based generic code. In format
-% mode the table used here can be hard-coded into the \Lua{}.
+% In package mode for \LuaTeX{} we make sure the basic support is loaded:
+% this is only necessary in plain.
% \begin{macrocode}
%<*package>
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname newcatcodetable\endcsname\relax
\input{ltluatex}%
\fi
- \newcatcodetable\ucharcat@table
- \directlua{
- l3kernel = l3kernel or { }
- local charcat_table = \number\ucharcat@table\space
- l3kernel.charcat_table = charcat_table
- }%
%</package>
\directlua{require("expl3")}%
% \end{macrocode}
@@ -269,7 +262,7 @@
These are available in the engines\LineBreak
- pdfTeX v1.40\LineBreak
- XeTeX v0.99992\LineBreak
- - LuaTeX v0.76\LineBreak
+ - LuaTeX v0.95\LineBreak
- e-(u)pTeX mid-2012\LineBreak
or later.\LineBreak
\LineBreak
diff --git a/macros/latex/contrib/l3kernel/l3box.dtx b/macros/latex/contrib/l3kernel/l3box.dtx
index f44b622fcd..21a038538f 100644
--- a/macros/latex/contrib/l3kernel/l3box.dtx
+++ b/macros/latex/contrib/l3kernel/l3box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
@@ -1027,9 +1027,9 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\box_set_ht:Nn, \box_set_ht:cn}
-% \begin{macro}{\box_set_dp:Nn, \box_set_dp:cn}
-% \begin{macro}{\box_set_wd:Nn, \box_set_wd:cn}
+% \begin{macro}{\box_set_ht:Nn, \box_set_ht:cn, \box_gset_ht:Nn, \box_gset_ht:cn}
+% \begin{macro}{\box_set_dp:Nn, \box_set_dp:cn, \box_gset_dp:Nn, \box_gset_dp:cn}
+% \begin{macro}{\box_set_wd:Nn, \box_set_wd:cn, \box_gset_wd:Nn, \box_gset_wd:cn}
% Setting the size whilst respecting local scope requires copying;
% the same issue does not come up when working globally.
% When debugging, the dimension expression |#2| is surrounded by
diff --git a/macros/latex/contrib/l3kernel/l3candidates.dtx b/macros/latex/contrib/l3kernel/l3candidates.dtx
index 6f50651ed8..980975dd5f 100644
--- a/macros/latex/contrib/l3kernel/l3candidates.dtx
+++ b/macros/latex/contrib/l3kernel/l3candidates.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
@@ -84,45 +84,6 @@
% into the kernel. However, real use sometimes leads to better ideas, so functions from this module are
% \textbf{not necessarily stable} and we may have to adjust them!
%
-% \section{Additions to \pkg{l3basics}}
-%
-% \begin{function}[added = 2017-07-16, updated = 2017-08-02]{\debug_on:n, \debug_off:n}
-% \begin{syntax}
-% \cs{debug_on:n} |{| \meta{comma-separated list} |}|
-% \cs{debug_off:n} |{| \meta{comma-separated list} |}|
-% \end{syntax}
-% Turn on and off within a group various debugging code, some of which
-% is also available as \pkg{expl3} load-time options. The items that
-% can be used in the \meta{list} are
-% \begin{itemize}
-% \item \texttt{check-declarations} that checks all \pkg{expl3}
-% variables used were previously declared and that local/global
-% variables (based on their name or on their first assignment) are
-% only locally/globally assigned;
-% \item \texttt{check-expressions} that checks integer, dimension,
-% skip, and muskip expressions are not terminated prematurely;
-% \item \texttt{deprecation} that makes soon-to-be-deprecated commands produce errors;
-% \item \texttt{log-functions} that logs function definitions;
-% \item \texttt{all} that does all of the above.
-% \end{itemize}
-% Providing these as switches rather than options allows testing code
-% even if it relies on other packages: load all other packages, call
-% \cs{debug_on:n}, and load the code that one is interested in
-% testing. These functions can only be used in \LaTeXe{} package mode
-% loaded with \texttt{enable-debug} or another option implying it.
-% \end{function}
-%
-% \begin{function}[added = 2017-11-28]{\debug_suspend:, \debug_resume:}
-% \begin{syntax}
-% \cs{debug_suspend:} \ldots{} \cs{debug_resume:}
-% \end{syntax}
-% Suppress (locally) errors and logging from \texttt{debug} commands,
-% except for the \texttt{deprecation} errors or warnings. These pairs
-% of commands can be nested. This can be used around pieces of code
-% that are known to fail checks, if such failures should be ignored.
-% See for instance \pkg{l3coffins}.
-% \end{function}
-%
% \section{Additions to \pkg{l3box}}
%
% \subsection{Viewing part of a box}
diff --git a/macros/latex/contrib/l3kernel/l3clist.dtx b/macros/latex/contrib/l3kernel/l3clist.dtx
index 69e2fe6729..baf31892bc 100644
--- a/macros/latex/contrib/l3kernel/l3clist.dtx
+++ b/macros/latex/contrib/l3kernel/l3clist.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3coffins.dtx b/macros/latex/contrib/l3kernel/l3coffins.dtx
index 916953285d..8f4d5aad78 100644
--- a/macros/latex/contrib/l3kernel/l3coffins.dtx
+++ b/macros/latex/contrib/l3kernel/l3coffins.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
@@ -816,6 +816,8 @@
% \begin{macro}
% {
% \coffin_set_eq:NN, \coffin_set_eq:Nc,
+% \coffin_set_eq:cN, \coffin_set_eq:cc,
+% \coffin_gset_eq:NN, \coffin_gset_eq:Nc,
% \coffin_gset_eq:cN, \coffin_gset_eq:cc
% }
% Setting two coffins equal is just a wrapper around other functions.
diff --git a/macros/latex/contrib/l3kernel/l3color-base.dtx b/macros/latex/contrib/l3kernel/l3color-base.dtx
index d1ac9bdad4..be5a23efaa 100644
--- a/macros/latex/contrib/l3kernel/l3color-base.dtx
+++ b/macros/latex/contrib/l3kernel/l3color-base.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3debug.dtx b/macros/latex/contrib/l3kernel/l3debug.dtx
index ab64345a3f..944fc060bf 100644
--- a/macros/latex/contrib/l3kernel/l3debug.dtx
+++ b/macros/latex/contrib/l3kernel/l3debug.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3deprecation.dtx b/macros/latex/contrib/l3kernel/l3deprecation.dtx
index c00c7f33cb..416af9ab8e 100644
--- a/macros/latex/contrib/l3kernel/l3deprecation.dtx
+++ b/macros/latex/contrib/l3kernel/l3deprecation.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3doc.dtx b/macros/latex/contrib/l3kernel/l3doc.dtx
index c5df660008..ba0eff183a 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 2019-10-02}
+% \date{Released 2019-10-11}
% \maketitle
% \tableofcontents
%
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.dtx b/macros/latex/contrib/l3kernel/l3docstrip.dtx
index b9c13c4ef8..1ae1afc9ad 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.dtx
+++ b/macros/latex/contrib/l3kernel/l3docstrip.dtx
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.pdf b/macros/latex/contrib/l3kernel/l3docstrip.pdf
index 9d18617c80..30188d59d0 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 fe85c98bd5..487b32ccaf 100644
--- a/macros/latex/contrib/l3kernel/l3expan.dtx
+++ b/macros/latex/contrib/l3kernel/l3expan.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
@@ -467,6 +467,7 @@
% \exp_args:NVo,
% \exp_args:Nfo,
% \exp_args:Nff,
+% \exp_args:Nee,
% }
% \begin{syntax}
% \cs{exp_args:Noo} \meta{token} \Arg{tokens_1} \Arg{tokens_2}
@@ -503,7 +504,6 @@
% {
% \exp_args:NNNo,
% \exp_args:NNNV,
-% \exp_args:NNNv,
% \exp_args:Nccc,
% \exp_args:NcNc,
% \exp_args:NcNo,
@@ -1465,6 +1465,7 @@
% \exp_last_unbraced:No,
% \exp_last_unbraced:NV,
% \exp_last_unbraced:Nv,
+% \exp_last_unbraced:Ne,
% \exp_last_unbraced:Nf,
% \exp_last_unbraced:NNo,
% \exp_last_unbraced:NNV,
@@ -2793,7 +2794,7 @@
% {
% \exp_args:Nnc, \exp_args:Nno, \exp_args:NnV, \exp_args:Nnv, \exp_args:Nne, \exp_args:Nnf,
% \exp_args:Noc, \exp_args:Noo, \exp_args:Nof,
-% \exp_args:NVo, \exp_args:Nfo, \exp_args:Nff,
+% \exp_args:NVo, \exp_args:Nfo, \exp_args:Nff, \exp_args:Nee
% }
% \begin{macro}
% {
@@ -2823,6 +2824,7 @@
\@@_tmp:w { Vo }
\@@_tmp:w { fo }
\@@_tmp:w { ff }
+\@@_tmp:w { ee }
\@@_tmp:w { Nx }
\@@_tmp:w { cx }
\@@_tmp:w { nx }
diff --git a/macros/latex/contrib/l3kernel/l3file.dtx b/macros/latex/contrib/l3kernel/l3file.dtx
index 5dd15d0e3d..c9c1fd72ee 100644
--- a/macros/latex/contrib/l3kernel/l3file.dtx
+++ b/macros/latex/contrib/l3kernel/l3file.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
@@ -1043,11 +1043,18 @@
%</package>
}
\cs_generate_variant:Nn \__kernel_ior_open:Nn { No }
-\cs_new_protected:Npn \@@_open_stream:Nn #1#2
+% \end{macrocode}
+% Here, we act defensively in case \LuaTeX{} is in use with an
+% extensionless file name.
+% \begin{macrocode}
+\cs_new_protected:Npx \@@_open_stream:Nn #1#2
{
- \tex_global:D \tex_chardef:D #1 = \l_@@_stream_tl \scan_stop:
- \prop_gput:NVn \g_@@_streams_prop #1 {#2}
- \tex_openin:D #1 #2 \scan_stop:
+ \tex_global:D \tex_chardef:D #1 = \exp_not:N \l_@@_stream_tl \scan_stop:
+ \prop_gput:NVn \exp_not:N \g_@@_streams_prop #1 {#2}
+ \tex_openin:D #1
+ \sys_if_engine_luatex:TF
+ { {#2} }
+ { #2 \scan_stop: }
}
% \end{macrocode}
% \end{macro}
@@ -2251,25 +2258,12 @@
% \g_file_curr_ext_str ,
% \g_file_curr_name_str
% }
-% The name of the current file should be available at all times.
-% For the format the file name needs to be picked up at the start of the
-% run. In \LaTeXe{} package mode the current file name is collected from
-% \tn{@currname}.
+% The name of the current file should be available at all times:
+% the name itself is set dynamically.
% \begin{macrocode}
\str_new:N \g_file_curr_dir_str
\str_new:N \g_file_curr_ext_str
\str_new:N \g_file_curr_name_str
-%<*initex>
-\tex_everyjob:D \exp_after:wN
- {
- \tex_the:D \tex_everyjob:D
- \str_gset:Nx \g_file_curr_name_str { \tex_jobname:D }
- }
-%</initex>
-%<*package>
-\cs_if_exist:NT \@currname
- { \str_gset_eq:NN \g_file_curr_name_str \@currname }
-%</package>
% \end{macrocode}
% \end{variable}
%
@@ -2278,7 +2272,8 @@
% mode we can recover the information from the details held by
% \LaTeXe{} (we must be in the preamble and loaded using \tn{usepackage}
% or \tn{RequirePackage}). As \LaTeXe{} doesn't store directory and
-% name separately, we stick to the same convention here.
+% name separately, we stick to the same convention here. In pre-loading,
+% \tn{@currnamestack} is empty so is skipped.
% \begin{macrocode}
\seq_new:N \g_@@_stack_seq
%<*package>
@@ -2301,7 +2296,10 @@
}
}
\cs_if_exist:NT \@currnamestack
- { \exp_after:wN \@@_tmp:w \@currnamestack }
+ {
+ \tl_if_empty:NF \@currnamestack
+ { \exp_after:wN \@@_tmp:w \@currnamestack }
+ }
\group_end:
%</package>
% \end{macrocode}
@@ -2642,9 +2640,27 @@
\cs_new:Npx \@@_file_ext_check_auxiii:nw #1#2 . #3 . #4 \q_stop
{
\exp_not:N \quark_if_nil:nTF {#3}
- { \exp_not:N \__kernel_file_name_quote:n { #1 \tl_to_str:n { .tex } } }
+ {
+ \exp_not:N \exp_args:Nee \exp_not:N \@@_file_ext_check_auxiv:nn
+ { \exp_not:N \__kernel_file_name_quote:n {#1} }
+ {
+ \exp_not:N \__kernel_file_name_quote:n
+ { #1 \tl_to_str:n { .tex } }
+ }
+ }
{#1}
}
+\cs_new:Npn \@@_file_ext_check_auxiv:nn #1#2
+ {
+ \tl_if_blank:eTF { \@@_file_size:n {#2} }
+ {#1}
+ {
+ \int_compare:nNnTF
+ { \@@_file_size:n {#1} } = { \@@_file_size:n {#2} }
+ {#2}
+ {#1}
+ }
+ }
% \end{macrocode}
% Deal with the fact that the primitive might not be available.
% \begin{macrocode}
@@ -2816,7 +2832,7 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}
+% \begin{macro}[noTF]
% {\file_get_mdfive_hash:nN, \file_get_size:nN, \file_get_timestamp:nN}
% \begin{macro}{\@@_get_details:nnN}
% Non-expandable wrappers around the above in the case where appropriate
@@ -3073,7 +3089,7 @@
\str_gset_eq:NN \g_file_curr_ext_str \l_@@_ext_str
}
%<*package>
-\cs_new_eq:NN \__kernel_file_input_push:n \__file_input_push:n
+\cs_new_eq:NN \__kernel_file_input_push:n \@@_input_push:n
%</package>
\cs_new_protected:Npn \@@_input_pop:
{
@@ -3081,7 +3097,7 @@
\exp_after:wN \@@_input_pop:nnn \l_@@_internal_tl
}
%<*package>
-\cs_new_eq:NN \__kernel_file_input_pop: \__file_input_pop:
+\cs_new_eq:NN \__kernel_file_input_pop: \@@_input_pop:
%</package>
\cs_new_protected:Npn \@@_input_pop:nnn #1#2#3
{
@@ -3191,14 +3207,17 @@
% \cs{g_@@_record_seq}.
% \begin{macrocode}
%<*package>
-\AtBeginDocument
- {
- \exp_args:NNx \seq_set_from_clist:Nn \l_@@_tmp_seq
- { \tl_to_str:N \@filelist }
- \seq_gconcat:NNN
- \g_@@_record_seq
- \g_@@_record_seq
- \l_@@_tmp_seq
+\cs_if_exist:NT \@filelist
+ {
+ \AtBeginDocument
+ {
+ \exp_args:NNx \seq_set_from_clist:Nn \l_@@_tmp_seq
+ { \tl_to_str:N \@filelist }
+ \seq_gconcat:NNN
+ \g_@@_record_seq
+ \g_@@_record_seq
+ \l_@@_tmp_seq
+ }
}
%</package>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3kernel/l3final.dtx b/macros/latex/contrib/l3kernel/l3final.dtx
index 520a329e0d..ebf24ce777 100644
--- a/macros/latex/contrib/l3kernel/l3final.dtx
+++ b/macros/latex/contrib/l3kernel/l3final.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3flag.dtx b/macros/latex/contrib/l3kernel/l3flag.dtx
index 62f903934b..f94b5d7c5b 100644
--- a/macros/latex/contrib/l3kernel/l3flag.dtx
+++ b/macros/latex/contrib/l3kernel/l3flag.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-assign.dtx b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
index 5262f680b8..270b492c52 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 2019-10-02}
+% \date{Released 2019-10-11}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-aux.dtx b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
index 63aafee928..63d21202bd 100644
--- a/macros/latex/contrib/l3kernel/l3fp-aux.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-basics.dtx b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
index 8764f0212b..842f2ec8bd 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 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-convert.dtx b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
index a99f3215a9..158b16b618 100644
--- a/macros/latex/contrib/l3kernel/l3fp-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-expo.dtx b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
index a19698934a..20cdce74c3 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 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-extended.dtx b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
index 1f267a7479..f3530ccef7 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 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-logic.dtx b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
index 3db19b3cfb..23b758fa8a 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 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-parse.dtx b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
index 11ff1e4f27..b14d045a2d 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 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-random.dtx b/macros/latex/contrib/l3kernel/l3fp-random.dtx
index 7975aa651c..ccb2791cab 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 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-round.dtx b/macros/latex/contrib/l3kernel/l3fp-round.dtx
index eb68ec0baf..e8483b0346 100644
--- a/macros/latex/contrib/l3kernel/l3fp-round.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-round.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-traps.dtx b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
index f76616eef3..8b0a173532 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 2019-10-02}
+% \date{Released 2019-10-11}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-trig.dtx b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
index 77af2e71ac..2354328e8a 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 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp.dtx b/macros/latex/contrib/l3kernel/l3fp.dtx
index d4e5b7c31d..6a6b580384 100644
--- a/macros/latex/contrib/l3kernel/l3fp.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fparray.dtx b/macros/latex/contrib/l3kernel/l3fparray.dtx
index 8ca49335b4..983a0815fb 100644
--- a/macros/latex/contrib/l3kernel/l3fparray.dtx
+++ b/macros/latex/contrib/l3kernel/l3fparray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3int.dtx b/macros/latex/contrib/l3kernel/l3int.dtx
index 67c3542e55..280c06652d 100644
--- a/macros/latex/contrib/l3kernel/l3int.dtx
+++ b/macros/latex/contrib/l3kernel/l3int.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3intarray.dtx b/macros/latex/contrib/l3kernel/l3intarray.dtx
index b8a33eb677..883e5ae401 100644
--- a/macros/latex/contrib/l3kernel/l3intarray.dtx
+++ b/macros/latex/contrib/l3kernel/l3intarray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
@@ -462,7 +462,7 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\intarray_show:N, \intarray_show:c, \intarray_log:c, \intarray_log:N}
+% \begin{macro}{\intarray_show:N, \intarray_show:c, \intarray_log:N, \intarray_log:c}
% Convert the list to a comma list (with spaces after each comma)
% \begin{macrocode}
\cs_new_protected:Npn \intarray_show:N { \@@_show:NN \msg_show:nnxxxx }
diff --git a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
index 66b763ed7b..2abd9b2819 100644
--- a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
+++ b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3keys.dtx b/macros/latex/contrib/l3kernel/l3keys.dtx
index aa2b4df82c..6cadb62955 100644
--- a/macros/latex/contrib/l3kernel/l3keys.dtx
+++ b/macros/latex/contrib/l3kernel/l3keys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3legacy.dtx b/macros/latex/contrib/l3kernel/l3legacy.dtx
index ca3c96d85d..a11c5385bc 100644
--- a/macros/latex/contrib/l3kernel/l3legacy.dtx
+++ b/macros/latex/contrib/l3kernel/l3legacy.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3luatex.dtx b/macros/latex/contrib/l3kernel/l3luatex.dtx
index cbc3d7a4e2..7a59765ed5 100644
--- a/macros/latex/contrib/l3kernel/l3luatex.dtx
+++ b/macros/latex/contrib/l3kernel/l3luatex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
@@ -328,6 +328,7 @@ local os_clock = os.clock
local os_date = os.date
local setcatcode = tex.setcatcode
local sprint = tex.sprint
+local cprint = tex.cprint
local write = tex.write
% \end{macrocode}
%
@@ -354,15 +355,11 @@ end
% \end{macro}
%
% \begin{macro}{l3kernel.charcat}
-% Creating arbitrary chars needs a category code table. As set up here,
-% one may have been assigned earlier (see \pkg{l3bootstrap}) or a hard-coded
-% one is used. The latter is intended for format mode and should be adjusted
-% to match an eventual allocator.
+% Creating arbitrary chars using |tex.cprint|.
% \begin{macrocode}
-local charcat_table = l3kernel.charcat_table or 1
-local function charcat(charcode, catcode)
- setcatcode(charcat_table, charcode, catcode)
- sprint(charcat_table, utf8_char(charcode))
+local charcat
+function charcat(charcode, catcode)
+ cprint(catcode, utf8_char(charcode))
end
l3kernel.charcat = charcat
% \end{macrocode}
diff --git a/macros/latex/contrib/l3kernel/l3msg.dtx b/macros/latex/contrib/l3kernel/l3msg.dtx
index 79a2ecc5ff..729e5ca7c4 100644
--- a/macros/latex/contrib/l3kernel/l3msg.dtx
+++ b/macros/latex/contrib/l3kernel/l3msg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3names.dtx b/macros/latex/contrib/l3kernel/l3names.dtx
index c11c837c6a..a9b587f9e1 100644
--- a/macros/latex/contrib/l3kernel/l3names.dtx
+++ b/macros/latex/contrib/l3kernel/l3names.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3prefixes.pdf b/macros/latex/contrib/l3kernel/l3prefixes.pdf
index 3a7065aa91..29ed4bff7c 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 f984c3aa76..bddc05a7e3 100644
--- a/macros/latex/contrib/l3kernel/l3prg.dtx
+++ b/macros/latex/contrib/l3kernel/l3prg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3prop.dtx b/macros/latex/contrib/l3kernel/l3prop.dtx
index 2ab8ea46df..9bdc4403c6 100644
--- a/macros/latex/contrib/l3kernel/l3prop.dtx
+++ b/macros/latex/contrib/l3kernel/l3prop.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3quark.dtx b/macros/latex/contrib/l3kernel/l3quark.dtx
index c828aa1d49..6dac83802c 100644
--- a/macros/latex/contrib/l3kernel/l3quark.dtx
+++ b/macros/latex/contrib/l3kernel/l3quark.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3regex.dtx b/macros/latex/contrib/l3kernel/l3regex.dtx
index 8d409b2dc5..cbc6b1b05b 100644
--- a/macros/latex/contrib/l3kernel/l3regex.dtx
+++ b/macros/latex/contrib/l3kernel/l3regex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3seq.dtx b/macros/latex/contrib/l3kernel/l3seq.dtx
index 0e66adfd81..e5c5126963 100644
--- a/macros/latex/contrib/l3kernel/l3seq.dtx
+++ b/macros/latex/contrib/l3kernel/l3seq.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3skip.dtx b/macros/latex/contrib/l3kernel/l3skip.dtx
index 1e3962b393..f9689fb155 100644
--- a/macros/latex/contrib/l3kernel/l3skip.dtx
+++ b/macros/latex/contrib/l3kernel/l3skip.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3sort.dtx b/macros/latex/contrib/l3kernel/l3sort.dtx
index 129bcef456..3f7ad1f5b9 100644
--- a/macros/latex/contrib/l3kernel/l3sort.dtx
+++ b/macros/latex/contrib/l3kernel/l3sort.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str-convert.dtx b/macros/latex/contrib/l3kernel/l3str-convert.dtx
index 86cf7db469..9f5dd3ab47 100644
--- a/macros/latex/contrib/l3kernel/l3str-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3str-convert.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str.dtx b/macros/latex/contrib/l3kernel/l3str.dtx
index b961e89df8..f09bbb4418 100644
--- a/macros/latex/contrib/l3kernel/l3str.dtx
+++ b/macros/latex/contrib/l3kernel/l3str.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3styleguide.pdf b/macros/latex/contrib/l3kernel/l3styleguide.pdf
index f7c3292758..2218680d19 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 0c30614d76..c41498211e 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 2019-10-02}
+\date{Released 2019-10-11}
\begin{document}
diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
index 3f02f94e44..b52aa8507f 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 f3fa98dbcd..7a83497d7d 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 2019-10-02}
+\date{Released 2019-10-11}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3sys.dtx b/macros/latex/contrib/l3kernel/l3sys.dtx
index 172d9507eb..c476e67e23 100644
--- a/macros/latex/contrib/l3kernel/l3sys.dtx
+++ b/macros/latex/contrib/l3kernel/l3sys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
@@ -276,6 +276,16 @@
% back deprecations, respectively.
% \end{function}
%
+% \subsection{Final settins}
+%
+% \begin{function}[added = 2019-10-06]{\sys_finalise:}
+% \begin{syntax}
+% \cs{sys_finalise:}
+% \end{syntax}
+% Finalises all system-dependent functionality: required before loading
+% a backend.
+% \end{function}
+%
% \end{documentation}
%
% \begin{implementation}
@@ -283,34 +293,16 @@
% \section{\pkg{l3sys} implementation}
%
% \begin{macrocode}
-%<*initex|package>
-% \end{macrocode}
-%
-% \begin{macrocode}
%<@@=sys>
% \end{macrocode}
%
-% \subsection{The name of the job}
+% \subsection{Kernel code}
%
-% \begin{variable}{\c_sys_jobname_str}
-% Inherited from the \LaTeX3 name for the primitive: this needs to
-% actually contain the text of the job name rather than the name of
-% the primitive, of course.
% \begin{macrocode}
-%<*initex>
-\tex_everyjob:D \exp_after:wN
- {
- \tex_the:D \tex_everyjob:D
- \str_const:Nx \c_sys_jobname_str { \tex_jobname:D }
- }
-%</initex>
-%<*package>
-\str_const:Nx \c_sys_jobname_str { \tex_jobname:D }
-%</package>
+%<*initex|package>
% \end{macrocode}
-% \end{variable}
%
-% \subsection{Detecting the engine}
+% \subsubsection{Detecting the engine}
%
% \begin{macro}{\@@_const:nn}
% Set the |T|, |F|, |TF|, |p| forms of |#1| to be constants equal to
@@ -373,89 +365,7 @@
% \end{variable}
% \end{macro}
%
-% \subsection{Time and date}
-%
-% \begin{variable}
-% {
-% \c_sys_minute_int,
-% \c_sys_hour_int,
-% \c_sys_day_int,
-% \c_sys_month_int,
-% \c_sys_year_int,
-% }
-% Copies of the information provided by \TeX{}. There is a lot of defensive
-% code in package mode: someone may have moved the primitives, and they can
-% only be recovered if we have \tn{primitive} and it is working correctly.
-% \begin{macrocode}
-%<*initex>
-\int_const:Nn \c_sys_minute_int
- { \int_mod:nn { \tex_time:D } { 60 } }
-\int_const:Nn \c_sys_hour_int
- { \int_div_truncate:nn { \tex_time:D } { 60 } }
-\int_const:Nn \c_sys_day_int { \tex_day:D }
-\int_const:Nn \c_sys_month_int { \tex_month:D }
-\int_const:Nn \c_sys_year_int { \tex_year:D }
-%</initex>
-%<*package>
-\group_begin:
- \cs_set:Npn \@@_tmp:w #1
- {
- \str_if_eq:eeTF { \cs_meaning:N #1 } { \token_to_str:N #1 }
- { #1 }
- {
- \cs_if_exist:NTF \tex_primitive:D
- {
- \bool_lazy_and:nnTF
- { \sys_if_engine_xetex_p: }
- {
- \int_compare_p:nNn
- { \exp_after:wN \use_none:n \tex_XeTeXrevision:D }
- < { 99999 }
- }
- { 0 }
- { \tex_primitive:D #1 }
- }
- { 0 }
- }
- }
- \int_const:Nn \c_sys_minute_int
- { \int_mod:nn { \@@_tmp:w \time } { 60 } }
- \int_const:Nn \c_sys_hour_int
- { \int_div_truncate:nn { \@@_tmp:w \time } { 60 } }
- \int_const:Nn \c_sys_day_int { \@@_tmp:w \day }
- \int_const:Nn \c_sys_month_int { \@@_tmp:w \month }
- \int_const:Nn \c_sys_year_int { \@@_tmp:w \year }
-\group_end:
-%</package>
-% \end{macrocode}
-% \end{variable}
-%
-% \subsection{Detecting the output}
-%
-% \begin{macro}[pTF, EXP]
-% {
-% \sys_if_output_dvi:,
-% \sys_if_output_pdf:
-% }
-% \begin{variable}{\c_sys_output_str}
-% This is a simple enough concept: the two views here are complementary.
-% \begin{macrocode}
-\str_const:Nx \c_sys_output_str
- {
- \int_compare:nNnTF
- { \cs_if_exist_use:NF \tex_pdfoutput:D { 0 } } > { 0 }
- { pdf }
- { dvi }
- }
-\@@_const:nn { sys_if_output_dvi }
- { \str_if_eq_p:Vn \c_sys_output_str { dvi } }
-\@@_const:nn { sys_if_output_pdf }
- { \str_if_eq_p:Vn \c_sys_output_str { pdf } }
-% \end{macrocode}
-% \end{variable}
-% \end{macro}
-%
-% \subsection{Randomness}
+% \subsubsection{Randomness}
%
% This candidate function is placed there because
% \cs{sys_if_rand_exist:TF} is used in \pkg{l3fp-rand}.
@@ -468,7 +378,7 @@
% \end{macrocode}
% \end{macro}
%
-% \subsection{Platform}
+% \subsubsection{Platform}
%
% \begin{macro}[pTF]{\sys_if_platform_unix:, \sys_if_platform_windows:}
% \begin{variable}{\c_sys_platform_str}
@@ -477,63 +387,95 @@
% \end{variable}
% \end{macro}
%
-% \subsection{Random numbers}
+% \subsubsection{Configurations}
%
-% \begin{macro}[EXP]{\sys_rand_seed:}
-% Unpack the primitive. When random numbers are not available, we
-% return zero after an error (and incidentally make sure the number of
-% expansions needed is the same as with random numbers available).
+% \begin{macro}{\sys_load_backend:n}
+% \begin{macro}{\@@_load_backend_check:N}
+% \begin{variable}{\c_sys_backend_str}
+% Loading the backend code is pretty simply: check that the backend is valid,
+% then load it up.
% \begin{macrocode}
-\sys_if_rand_exist:TF
- { \cs_new:Npn \sys_rand_seed: { \tex_the:D \tex_randomseed:D } }
+\cs_new_protected:Npn \sys_load_backend:n #1
{
- \cs_new:Npn \sys_rand_seed:
+ \sys_finalise:
+ \str_if_exist:NTF \c_sys_backend_str
+ { \__kernel_msg_error:nn { sys } { backend-set } }
{
- \int_value:w
- \__kernel_msg_expandable_error:nnn { kernel } { fp-no-random }
- { \sys_rand_seed: }
- \c_zero_int
+ \tl_if_blank:nF {#1}
+ { \tl_set:Nn \g_@@_backend_tl {#1} }
+ \@@_load_backend_check:N \g_@@_backend_tl
+ \str_const:Nx \c_sys_backend_str { \g_@@_backend_tl }
+ \__kernel_sys_configuration_load:n
+ { l3backend- \c_sys_backend_str }
}
}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\sys_gset_rand_seed:n}
-% The primitive always assigns the seed globally.
-% \begin{macrocode}
-\sys_if_rand_exist:TF
- {
- \cs_new_protected:Npn \sys_gset_rand_seed:n #1
- { \tex_setrandomseed:D \int_eval:n {#1} \exp_stop_f: }
- }
+\cs_new_protected:Npn \@@_load_backend_check:N #1
{
- \cs_new_protected:Npn \sys_gset_rand_seed:n #1
+ \sys_if_engine_xetex:TF
{
- \__kernel_msg_error:nnn { kernel } { fp-no-random }
- { \sys_gset_rand_seed:n {#1} }
+ \str_if_eq:VnF #1 { xdvipdfmx }
+ {
+ \__kernel_msg_error:nnxx { sys } { wrong-backend }
+ #1 { xdvipdfmx }
+ \tl_gset:Nn #1 { xdvipdfmx }
+ }
+ }
+ {
+ \sys_if_output_pdf:TF
+ {
+ \str_if_eq:VnF #1 { pdfmode }
+ {
+ \__kernel_msg_error:nnxx { sys } { wrong-backend }
+ #1 { pdfmode }
+ \tl_gset:Nn #1 { pdfmode }
+ }
+ }
+ {
+ \str_case:VnF #1
+ {
+ { dvipdfmx } { }
+ { dvips } { }
+ { dvisvgm } { }
+ }
+ {
+ \__kernel_msg_error:nnxx { sys } { wrong-backend }
+ #1 { dvips }
+ \tl_gset:Nn #1 { dvips }
+ }
+ }
}
}
% \end{macrocode}
+% \end{variable}
+% \end{macro}
% \end{macro}
%
-% \subsection{Access to the shell}
+% \begin{variable}{\g_@@_debug_bool, \g_@@_deprecation_bool}
+% \begin{macrocode}
+\bool_new:N \g_@@_debug_bool
+\bool_new:N \g_@@_deprecation_bool
+% \end{macrocode}
+% \end{variable}
%
-% \begin{variable}{\c_sys_shell_escape_int}
-% Expose the engine's shell escape status to the user.
+% \begin{macro}{\sys_load_debug:, \sys_load_deprecation:}
+% Simple.
% \begin{macrocode}
-\int_const:Nn \c_sys_shell_escape_int
+\cs_new_protected:Npn \sys_load_debug:
{
- \sys_if_engine_luatex:TF
- {
- \tex_directlua:D
- { tex.sprint(status.shell_escape~or~os.execute()) }
- }
- {
- \tex_shellescape:D
- }
+ \bool_if:NF \g_@@_debug_bool
+ { \__kernel_sys_configuration_load:n { l3debug } }
+ \bool_gset_true:N \g_@@_debug_bool
+ }
+\cs_new_protected:Npn \sys_load_deprecation:
+ {
+ \bool_if:NF \g_@@_deprecation_bool
+ { \__kernel_sys_configuration_load:n { l3deprecation } }
+ \bool_gset_true:N \g_@@_deprecation_bool
}
% \end{macrocode}
-% \end{variable}
+% \end{macro}
+%
+% \subsubsection{Access to the shell}
%
% \begin{variable}{\l_@@_internal_tl}
% \begin{macrocode}
@@ -597,21 +539,6 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}[EXP, pTF]{\sys_if_shell:, \sys_if_shell_unrestricted:, \sys_if_shell_restricted:}
-% Performs a check for whether shell escape is enabled. The first set
-% of functions returns true if either of restricted or unrestricted
-% shell escape is enabled, while the other two sets of functions
-% return true in only one of these two cases.
-% \begin{macrocode}
-\@@_const:nn { sys_if_shell }
- { \int_compare_p:nNn \c_sys_shell_escape_int > 0 }
-\@@_const:nn { sys_if_shell_unrestricted }
- { \int_compare_p:nNn \c_sys_shell_escape_int = 1 }
-\@@_const:nn { sys_if_shell_restricted }
- { \int_compare_p:nNn \c_sys_shell_escape_int = 2 }
-% \end{macrocode}
-% \end{macro}
-%
% \begin{variable}{\c_@@_shell_stream_int}
% This is not needed for \LuaTeX{}: shell escape there isn't done using
% a \TeX{} interface.
@@ -659,117 +586,285 @@
% \end{macrocode}
% \end{macro}
%
-% \subsection{Configurations}
+% \subsection{Dynamic (every job) code}
%
-% \begin{variable}{\g_@@_backend_tl}
-% As the backend has to be checked and possibly adjusted, the approach here
-% is to create a variable and use that in a one-shot to set a constant.
+% \begin{macro}{\sys_everyjob:}
+% \begin{macro}{\@@_everyjob:n}
+% \begin{variable}{\g_@@_everyjob_tl}
% \begin{macrocode}
-\tl_new:N \g_@@_backend_tl
-\tl_gset:Nx \g_@@_backend_tl
+\cs_new_protected:Npn \sys_everyjob:
{
- \sys_if_engine_xetex:TF
- { xdvipdfmx }
- {
- \sys_if_output_pdf:TF
- { pdfmode }
- {
- \bool_lazy_or:nnTF
- { \sys_if_engine_ptex_p: }
- { \sys_if_engine_uptex_p: }
- { dvipdfmx }
- { dvips }
- }
- }
+ \tl_use:N \g_@@_everyjob_tl
+ \tl_gclear:N \g_@@_everyjob_tl
}
+\cs_new_protected:Npn \@@_everyjob:n #1
+ { \tl_gput_right:Nn \g_@@_everyjob_tl {#1} }
+\tl_new:N \g_@@_everyjob_tl
% \end{macrocode}
% \end{variable}
+% \end{macro}
+% \end{macro}
%
-% \begin{macro}{\sys_load_backend:n}
-% \begin{macro}{\@@_load_backend_check:N}
-% \begin{variable}{\c_sys_backend_str}
-% Loading the backend code is pretty simply: check that the backend is valid,
-% then load it up.
+% \subsubsection{The name of the job}
+%
+% \begin{variable}{\c_sys_jobname_str}
+% Inherited from the \LaTeX3 name for the primitive: this needs to
+% actually contain the text of the job name rather than the name of
+% the primitive, of course.
% \begin{macrocode}
-\cs_new_protected:Npn \sys_load_backend:n #1
+\@@_everyjob:n
+ { \str_const:Nx \c_sys_jobname_str { \tex_jobname:D } }
+% \end{macrocode}
+% \end{variable}
+%
+% \subsubsection{Time and date}
+%
+% \begin{variable}
+% {
+% \c_sys_minute_int,
+% \c_sys_hour_int,
+% \c_sys_day_int,
+% \c_sys_month_int,
+% \c_sys_year_int,
+% }
+% Copies of the information provided by \TeX{}. There is a lot of defensive
+% code in package mode: someone may have moved the primitives, and they can
+% only be recovered if we have \tn{primitive} and it is working correctly.
+% For Ini\TeX{} of course that is all redundant but does no harm.
+% \begin{macrocode}
+\@@_everyjob:n
{
- \str_if_exist:NTF \c_sys_backend_str
- { \__kernel_msg_error:nnxx { sys } { backend-set } }
- {
- \tl_if_blank:nF {#1}
- { \tl_set:Nn \g_@@_backend_tl {#1} }
- \@@_load_backend_check:N \g_@@_backend_tl
- \str_const:Nx \c_sys_backend_str { \g_@@_backend_tl }
- \__kernel_sys_configuration_load:n
- { l3backend- \c_sys_backend_str }
- }
+ \group_begin:
+ \cs_set:Npn \@@_tmp:w #1
+ {
+ \str_if_eq:eeTF { \cs_meaning:N #1 } { \token_to_str:N #1 }
+ { #1 }
+ {
+ \cs_if_exist:NTF \tex_primitive:D
+ {
+ \bool_lazy_and:nnTF
+ { \sys_if_engine_xetex_p: }
+ {
+ \int_compare_p:nNn
+ { \exp_after:wN \use_none:n \tex_XeTeXrevision:D }
+ < { 99999 }
+ }
+ { 0 }
+ { \tex_primitive:D #1 }
+ }
+ { 0 }
+ }
+ }
+ \int_const:Nn \c_sys_minute_int
+ { \int_mod:nn { \@@_tmp:w \time } { 60 } }
+ \int_const:Nn \c_sys_hour_int
+ { \int_div_truncate:nn { \@@_tmp:w \time } { 60 } }
+ \int_const:Nn \c_sys_day_int { \@@_tmp:w \day }
+ \int_const:Nn \c_sys_month_int { \@@_tmp:w \month }
+ \int_const:Nn \c_sys_year_int { \@@_tmp:w \year }
+ \group_end:
}
-\cs_new_protected:Npn \@@_load_backend_check:N #1
+% \end{macrocode}
+% \end{variable}
+%
+% \subsubsection{Random numbers}
+%
+% \begin{macro}[EXP]{\sys_rand_seed:}
+% Unpack the primitive. When random numbers are not available, we
+% return zero after an error (and incidentally make sure the number of
+% expansions needed is the same as with random numbers available).
+% \begin{macrocode}
+\@@_everyjob:n
{
- \sys_if_engine_xetex:TF
+ \sys_if_rand_exist:TF
+ { \cs_new:Npn \sys_rand_seed: { \tex_the:D \tex_randomseed:D } }
{
- \str_if_eq:VnF #1 { xdvipdfmx }
+ \cs_new:Npn \sys_rand_seed:
{
- \__kernel_msg_error:nnxx { sys } { wrong-backend }
- #1 { xdvipdfmx }
- \tl_gset:Nn #1 { xdvipdfmx }
+ \int_value:w
+ \__kernel_msg_expandable_error:nnn { kernel } { fp-no-random }
+ { \sys_rand_seed: }
+ \c_zero_int
}
}
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sys_gset_rand_seed:n}
+% The primitive always assigns the seed globally.
+% \begin{macrocode}
+\@@_everyjob:n
+ {
+ \sys_if_rand_exist:TF
{
- \sys_if_output_pdf:TF
+ \cs_new_protected:Npn \sys_gset_rand_seed:n #1
+ { \tex_setrandomseed:D \int_eval:n {#1} \exp_stop_f: }
+ }
+ {
+ \cs_new_protected:Npn \sys_gset_rand_seed:n #1
{
- \str_if_eq:VnF #1 { pdfmode }
- {
- \__kernel_msg_error:nnxx { sys } { wrong-backend }
- #1 { pdfmode }
- \tl_gset:Nn #1 { pdfmode }
- }
+ \__kernel_msg_error:nnn { kernel } { fp-no-random }
+ { \sys_gset_rand_seed:n {#1} }
}
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Access to the shell}
+%
+% \begin{variable}{\c_sys_shell_escape_int}
+% Expose the engine's shell escape status to the user.
+% \begin{macrocode}
+\@@_everyjob:n
+ {
+ \int_const:Nn \c_sys_shell_escape_int
+ {
+ \sys_if_engine_luatex:TF
{
- \str_case:VnF #1
- {
- { dvipdfmx } { }
- { dvips } { }
- { dvisvgm } { }
- }
- {
- \__kernel_msg_error:nnxx { sys } { wrong-backend }
- #1 { dvips }
- \tl_gset:Nn #1 { dvips }
- }
+ \tex_directlua:D
+ { tex.sprint(status.shell_escape~or~os.execute()) }
}
+ { \tex_shellescape:D }
}
}
% \end{macrocode}
% \end{variable}
-% \end{macro}
+%
+% \begin{macro}[EXP, pTF]{\sys_if_shell:, \sys_if_shell_unrestricted:, \sys_if_shell_restricted:}
+% Performs a check for whether shell escape is enabled. The first set
+% of functions returns true if either of restricted or unrestricted
+% shell escape is enabled, while the other two sets of functions
+% return true in only one of these two cases.
+% \begin{macrocode}
+\@@_everyjob:n
+ {
+ \@@_const:nn { sys_if_shell }
+ { \int_compare_p:nNn \c_sys_shell_escape_int > 0 }
+ \@@_const:nn { sys_if_shell_unrestricted }
+ { \int_compare_p:nNn \c_sys_shell_escape_int = 1 }
+ \@@_const:nn { sys_if_shell_restricted }
+ { \int_compare_p:nNn \c_sys_shell_escape_int = 2 }
+ }
+% \end{macrocode}
% \end{macro}
%
-% \begin{variable}{\g_@@_debug_bool, \g_@@_deprecation_bool}
+% \subsubsection{Held over from \pkg{l3file}}
+%
+% \begin{variable}{\g_file_curr_name_str}
% \begin{macrocode}
-\bool_new:N \g_@@_debug_bool
-\bool_new:N \g_@@_deprecation_bool
+\@@_everyjob:n
+ { \str_gset:Nx \g_file_curr_name_str { \tex_jobname:D } }
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}{\sys_load_debug:, \sys_load_deprecation:}
-% Simple.
+% \subsection{Last-minute code}
+%
+% \begin{macro}{\sys_finalise:}
+% \begin{macro}{\@@_finalise:n}
+% \begin{variable}{\g_@@_finalise_tl}
+% A simple hook to finalise the system-dependent layer. This is forced by
+% the backend loader, which is forced by the main loader, so we do not need
+% to include that here.
% \begin{macrocode}
-\cs_new_protected:Npn \sys_load_debug:
+\cs_new_protected:Npn \sys_finalise:
{
- \bool_if:NF \g_@@_debug_bool
- { \__kernel_sys_configuration_load:n { l3debug } }
- \bool_gset_true:N \g_@@_debug_bool
+ \sys_everyjob:
+ \tl_use:N \g_@@_finalise_tl
+ \tl_gclear:N \g_@@_finalise_tl
}
-\cs_new_protected:Npn \sys_load_deprecation:
+\cs_new_protected:Npn \@@_finalise:n #1
+ { \tl_gput_right:Nn \g_@@_finalise_tl {#1} }
+\tl_new:N \g_@@_finalise_tl
+% \end{macrocode}
+% \end{variable}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Detecting the output}
+%
+% \begin{macro}[pTF, EXP]
+% {
+% \sys_if_output_dvi:,
+% \sys_if_output_pdf:
+% }
+% \begin{variable}{\c_sys_output_str}
+% This is a simple enough concept: the two views here are complementary.
+% \begin{macrocode}
+\@@_finalise:n
{
- \bool_if:NF \g_@@_deprecation_bool
- { \__kernel_sys_configuration_load:n { l3deprecation } }
- \bool_gset_true:N \g_@@_deprecation_bool
+ \str_const:Nx \c_sys_output_str
+ {
+ \int_compare:nNnTF
+ { \cs_if_exist_use:NF \tex_pdfoutput:D { 0 } } > { 0 }
+ { pdf }
+ { dvi }
+ }
+ \@@_const:nn { sys_if_output_dvi }
+ { \str_if_eq_p:Vn \c_sys_output_str { dvi } }
+ \@@_const:nn { sys_if_output_pdf }
+ { \str_if_eq_p:Vn \c_sys_output_str { pdf } }
}
% \end{macrocode}
+% \end{variable}
% \end{macro}
%
+% \subsubsection{Configurations}
+%
+% If there is a class option set, and recognised, we pick it up: these
+% will over-ride anything set automatically but will themsevles be
+% over-written if there is a package option.
+% \begin{macrocode}
+\@@_finalise:n
+ {
+ \cs_if_exist:NT \@classoptionslist
+ {
+ \cs_if_eq:NNF \@classoptionslist \scan_stop:
+ {
+ \clist_map_inline:Nn \@classoptionslist
+ {
+ \str_case:nnT {#1}
+ {
+ { dvipdfmx }
+ { \tl_gset:Nn \g_@@_backend_tl { dvipdfmx } }
+ { dvips }
+ { \tl_gset:Nn \g_@@_backend_tl { dvips } }
+ { dvisvgm }
+ { \tl_gset:Nn \g_@@_backend_tl { dvisvgm } }
+ { pdftex }
+ { \tl_gset:Nn \g_@@_backend_tl { pdfmode } }
+ { xetex }
+ { \tl_gset:Nn \g_@@_backend_tl { xdvipdfmx } }
+ }
+ { \clist_remove_all:Nn \@unusedoptionlist {#1} }
+ }
+ }
+ }
+ }
+% \end{macrocode}
+%
+% \begin{variable}{\g_@@_backend_tl}
+% As the backend has to be checked and possibly adjusted, the approach here
+% is to create a variable and use that in a one-shot to set a constant.
+% \begin{macrocode}
+\tl_new:N \g_@@_backend_tl
+\@@_finalise:n
+ {
+ \tl_gset:Nx \g_@@_backend_tl
+ {
+ \sys_if_engine_xetex:TF
+ { xdvipdfmx }
+ {
+ \sys_if_output_pdf:TF
+ { pdfmode }
+ { dvips }
+ }
+ }
+ }
+% \end{macrocode}
+% \end{variable}
+%
% \begin{macrocode}
%</initex|package>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.pdf b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
index e816fc719d..e5f77693c5 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 4a2fd2aeb1..a051a44009 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 2019-10-02}
+\date{Released 2019-10-11}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
index 3e34bfd8f9..2cd9279973 100644
--- a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3tl.dtx b/macros/latex/contrib/l3kernel/l3tl.dtx
index c6eb6aa3f2..adec7596ff 100644
--- a/macros/latex/contrib/l3kernel/l3tl.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3token.dtx b/macros/latex/contrib/l3kernel/l3token.dtx
index 51c7b597f0..b8759fbce4 100644
--- a/macros/latex/contrib/l3kernel/l3token.dtx
+++ b/macros/latex/contrib/l3kernel/l3token.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3unicode.dtx b/macros/latex/contrib/l3kernel/l3unicode.dtx
index 78d3f1bdb9..8452f2df6f 100644
--- a/macros/latex/contrib/l3kernel/l3unicode.dtx
+++ b/macros/latex/contrib/l3kernel/l3unicode.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/source3.pdf b/macros/latex/contrib/l3kernel/source3.pdf
index 9e90af917a..3315fd861c 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 f73c5b1798..5f2f2e44ce 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 2019-10-02}
+\date{Released 2019-10-11}
\pagenumbering{roman}
\maketitle
diff --git a/macros/latex/contrib/l3packages/CHANGELOG.md b/macros/latex/contrib/l3packages/CHANGELOG.md
index 9f4f537301..cf63a73ebf 100644
--- a/macros/latex/contrib/l3packages/CHANGELOG.md
+++ b/macros/latex/contrib/l3packages/CHANGELOG.md
@@ -7,9 +7,13 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2019-10-11]
+
+- `xparse`: Allow processors to depend on other arguments (fixes #629)
+
## [2019-05-28]
-- Remove stray spaces in processor information
+- `xparse`: Remove stray spaces in processor information
## [2019-05-03]
@@ -50,7 +54,8 @@ this project uses date-based 'snapshot' version identifiers.
- Switch to ISO date format
- Improve cross-module use of internal functions
-[Unreleased]: https://github.com/latex3/latex3/compare/2019-05-28...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2019-10-11...HEAD
+[2019-10-11]: https://github.com/latex3/latex3/compare/2019-05-28...2019-10-11
[2019-05-28]: https://github.com/latex3/latex3/compare/2019-05-03...2019-05-28
[2019-05-03]: https://github.com/latex3/latex3/compare/2019-03-05...2019-05-03
[2019-03-05]: https://github.com/latex3/latex3/compare/2019-09-24...2019-03-05
diff --git a/macros/latex/contrib/l3packages/README.md b/macros/latex/contrib/l3packages/README.md
index 413bc2a8a6..cfe6b5f904 100644
--- a/macros/latex/contrib/l3packages/README.md
+++ b/macros/latex/contrib/l3packages/README.md
@@ -1,7 +1,7 @@
LaTeX3 High-Level Concepts
==========================
-Release 2019-05-28
+Release 2019-10-11
Overview
--------
@@ -94,27 +94,7 @@ The LaTeX3 Project
------------------
Development of LaTeX3 is carried out by
-[The LaTeX3 Project](http://www.latex-project.org/latex3.html). Currently,
-the team members are
-
-* Johannes Braams
-* David Carlisle
-* Robin Fairbairns
-* Morten Høgholm
-* Bruno Le Floch
-* Thomas Lotze
-* Frank Mittelbach
-* Will Robertson
-* Chris Rowley
-* Rainer Schöpf
-* Joseph Wright
-
-Former members of The LaTeX3 Project team were
-
-* Michael Downes
-* Denys Duchier
-* Alan Jeffrey
-* Martin Schröder
+[The LaTeX3 Project](https://www.latex-project.org/latex3/).
The development team can be contacted
by e-mail: <latex-team@latex-project.org>; for general LaTeX3 discussion
diff --git a/macros/latex/contrib/l3packages/l3keys2e.dtx b/macros/latex/contrib/l3packages/l3keys2e.dtx
index 92f3e82a37..9a10f7ef79 100644
--- a/macros/latex/contrib/l3packages/l3keys2e.dtx
+++ b/macros/latex/contrib/l3packages/l3keys2e.dtx
@@ -62,7 +62,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-28}
+% \date{Released 2019-10-11}
%
% \maketitle
%
@@ -133,7 +133,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3keys2e}{2019-05-28}{}
+\ProvidesExplPackage{l3keys2e}{2019-10-11}{}
{LaTeX2e option processing using LaTeX3 keys}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3packages/l3keys2e.pdf b/macros/latex/contrib/l3packages/l3keys2e.pdf
index aee2995d1f..661b4171c7 100644
--- a/macros/latex/contrib/l3packages/l3keys2e.pdf
+++ b/macros/latex/contrib/l3packages/l3keys2e.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3packages/xfp.dtx b/macros/latex/contrib/l3packages/xfp.dtx
index 1b6cbd3680..33f66c6589 100644
--- a/macros/latex/contrib/l3packages/xfp.dtx
+++ b/macros/latex/contrib/l3packages/xfp.dtx
@@ -64,7 +64,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-28}
+% \date{Released 2019-10-11}
%
% \maketitle
%
@@ -167,7 +167,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xfp}{2019-05-28}{}
+\ProvidesExplPackage{xfp}{2019-10-11}{}
{L3 Floating point unit}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3packages/xfp.pdf b/macros/latex/contrib/l3packages/xfp.pdf
index 3f595b37c9..35921ed162 100644
--- a/macros/latex/contrib/l3packages/xfp.pdf
+++ b/macros/latex/contrib/l3packages/xfp.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3packages/xfrac.dtx b/macros/latex/contrib/l3packages/xfrac.dtx
index fa1739eee5..62600c37be 100644
--- a/macros/latex/contrib/l3packages/xfrac.dtx
+++ b/macros/latex/contrib/l3packages/xfrac.dtx
@@ -65,7 +65,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-28}
+% \date{Released 2019-10-11}
%
% \maketitle
%
@@ -535,7 +535,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xfrac}{2019-05-28}{}
+\ProvidesExplPackage{xfrac}{2019-10-11}{}
{L3 Experimental split-level fractions}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3packages/xfrac.pdf b/macros/latex/contrib/l3packages/xfrac.pdf
index 9a4da3d7b3..06f7ea363a 100644
--- a/macros/latex/contrib/l3packages/xfrac.pdf
+++ b/macros/latex/contrib/l3packages/xfrac.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3packages/xparse.dtx b/macros/latex/contrib/l3packages/xparse.dtx
index 6aee5f22f6..2a0b842fbb 100644
--- a/macros/latex/contrib/l3packages/xparse.dtx
+++ b/macros/latex/contrib/l3packages/xparse.dtx
@@ -67,7 +67,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-28}
+% \date{Released 2019-10-11}
%
% \maketitle
%
@@ -340,6 +340,7 @@
% mailing list.
%
% \subsection{Default values of arguments}
+% \label{sec:defaultvaluesofarguments}
%
% Uppercase argument types (\texttt{O}, \texttt{D}, \ldots{}) allow to
% specify a default value to be used when the argument is missing; their
@@ -676,6 +677,23 @@
% followed by \cs{ProcessorB} to the tokens grabbed by the \texttt{m}
% argument.
%
+% It might sometimes be useful to use the value of another argument as
+% one of the arguments of a processor. For example, using the
+% \cs{SplitList} processor defined below,
+% \begin{verbatim}
+% \NewDocumentCommand \foo { O{,} >{\SplitList{#1}} m } { \foobar{#2} }
+% \foo{a,b;c,d}
+% \end{verbatim}
+% results in |\foobar| receiving the argument |{a}{b;c}{d}| because
+% \cs{SplitList} receives as its two arguments the optional one (whose
+% value here is the default, a comma) and the mandatory one. To
+% summarize, first the arguments are searched for in the input, then any
+% default argument is determined as explained in
+% Section~\ref{sec:defaultvaluesofarguments}, then these default
+% arguments are passed to any processor. When referring to arguments
+% (through |#1|, |#2| and so on) in a processor, the arguments used are
+% always those before applying any processor.
+%
% \begin{variable}{\ProcessedArgument}
% \pkg{xparse} defines a very small set of processor functions. In the
% main, it is anticipated that code writers will want to create their
@@ -898,7 +916,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xparse}{2019-05-28}{}
+\ProvidesExplPackage{xparse}{2019-10-11}{}
{L3 Experimental document command parser}
% \end{macrocode}
%
@@ -1552,11 +1570,13 @@
% \end{macro}
%
% \begin{macro}{\@@_args_process:}
-% \begin{macro}{\@@_args_process_loop:nn, \@@_args_process_aux:n, \@@_args_process_aux:nn}
+% \begin{macro}{\@@_args_process_loop:nn, \@@_args_process_aux:n}
% Loop through arguments (stored in \cs{l_@@_args_tl}) and the
% corresponding processors (in \cs{l_@@_process_all_tl})
% simultaneously, apply all processors for each argument and store the
-% result back into \cs{l_@@_args_tl}.
+% result back into \cs{l_@@_args_tl}. To allow processors to depend
+% on other arguments, for every processor define a temporary auxiliary
+% that receives all arguments \cs{l_@@_args_tl}.
% \begin{macrocode}
\cs_new_protected:Npn \@@_args_process:
{
@@ -1575,9 +1595,13 @@
\tl_put_right:No \l_@@_args_ii_tl
{ \exp_after:wN { \ProcessedArgument } }
}
-\cs_new_protected:Npn \@@_args_process_aux:n
- { \exp_args:No \@@_args_process_aux:nn { \ProcessedArgument } }
-\cs_new_protected:Npn \@@_args_process_aux:nn #1#2 { #2 {#1} }
+\cs_new_protected:Npn \@@_args_process_aux:n #1
+ {
+ \cs_generate_from_arg_count:NNnn \@@_tmp:w \cs_set:Npn
+ { \tl_count:N \l_@@_args_tl } {#1}
+ \exp_args:NNNo \exp_after:wN \@@_tmp:w \l_@@_args_tl
+ { \ProcessedArgument }
+ }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -4336,6 +4360,7 @@
{ \@@_peek_nonspace_aux:nNNTF { #1 ~ } #2 #3 {#4} {#5} }
{ #2 #3 { #4 } { #5 #1 } }
}
+% \end{macrocode}
% \end{macro}
%
% \subsection{Messages}
diff --git a/macros/latex/contrib/l3packages/xparse.pdf b/macros/latex/contrib/l3packages/xparse.pdf
index 4fb161e35e..b6822014f4 100644
--- a/macros/latex/contrib/l3packages/xparse.pdf
+++ b/macros/latex/contrib/l3packages/xparse.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3packages/xtemplate.dtx b/macros/latex/contrib/l3packages/xtemplate.dtx
index 04aa51be36..c12297b4ed 100644
--- a/macros/latex/contrib/l3packages/xtemplate.dtx
+++ b/macros/latex/contrib/l3packages/xtemplate.dtx
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-28}
+% \date{Released 2019-10-11}
%
% \maketitle
%
@@ -682,7 +682,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xtemplate}{2019-05-28}{}
+\ProvidesExplPackage{xtemplate}{2019-10-11}{}
{L3 Experimental prototype document functions}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3packages/xtemplate.pdf b/macros/latex/contrib/l3packages/xtemplate.pdf
index 0b716f7d70..4d4258f8d0 100644
--- a/macros/latex/contrib/l3packages/xtemplate.pdf
+++ b/macros/latex/contrib/l3packages/xtemplate.pdf
Binary files differ
diff --git a/macros/latex/contrib/microtype/README.md b/macros/latex/contrib/microtype/README.md
index 8a41cadef5..211ed32576 100644
--- a/macros/latex/contrib/microtype/README.md
+++ b/macros/latex/contrib/microtype/README.md
@@ -4,7 +4,7 @@ The `microtype` package
**Subliminal refinements towards typographical perfection**
- (v2.7b -- 2019/02/28)
+ (v2.7c -- 2019/10/10)
Overview
@@ -76,5 +76,5 @@ provided that: (1) the original copyright statement is not removed, and
(2) the identification string is changed.
------------------------------------------------------
-Copyright (c) 2004--2018 R Schlicht `<w.m.l@gmx.net>`
+Copyright (c) 2004--2019 R Schlicht `<w.m.l@gmx.net>`
------------------------------------------------------
diff --git a/macros/latex/contrib/microtype/microtype-utf.dtx b/macros/latex/contrib/microtype/microtype-utf.dtx
index bcac8618c8..c72fca3f54 100644
--- a/macros/latex/contrib/microtype/microtype-utf.dtx
+++ b/macros/latex/contrib/microtype/microtype-utf.dtx
@@ -1,11 +1,11 @@
%\iffalse meta-comment
% !Mode:: "TeX:DTX:UK"
% !smartQuote:: "English"
-% !DTXversion:: "2.7b"
+% !DTXversion:: "2.7c"
% ------------------------------------------------------------------------
% The `microtype' package
% Subliminal refinements towards typographical perfection
-% Copyright (c) 2004--2018 R Schlicht <w.m.l@gmx.net>
+% Copyright (c) 2004--2019 R Schlicht <w.m.l@gmx.net>
%
% This work may be distributed and/or modified under the conditions of the
% LaTeX Project Public License, either version 1.3c of this license or (at
@@ -26,7 +26,7 @@
%
\ProvidesFile
%<*driver>
- {\jobname.dtx}[2019/02/28 v2.7b]
+ {\jobname.dtx}[2019/10/10 v2.7c]
%</driver>
%<CharisSIL> {mt-CharisSIL.cfg}[2017/07/07 v1.1 microtype config. file: Charis SIL (RS)]
%<LatinModernRoman> {mt-LatinModernRoman.cfg}[2013/03/13 v1.0 microtype config. file: Latin Modern Roman (RS)]
@@ -49,12 +49,10 @@
\luatexbase@directlua{luatexbase.add_to_callback('process_input_buffer', luainputenc.fake_utf_read, 'luainputenc.fake_utf_read')}
\usepackage{microtype-doc}
\luatexbase@directlua{luatexbase.remove_from_callback('process_input_buffer', 'luainputenc.fake_utf_read')}
-\let\lsstyle\relax % !!!!!!! ATTENTION, PLEASE !!!!!!!!! (letterspacing is broken in luatex 1.07)
\def\setmacrofont#1{\par\def\macro@font{#1}\footnotesize}
\newfontface\LMR{Latin Modern Roman}
\newfontface\CharisSIL{Charis SIL}
\newfontface\PalatinoLinotype{TeX Gyre Pagella}
-\textheight=626pt % this isn't set correctly for some reason
\usepackage{luacode}
\tracinglostchars2
% we replace any missing characters (in Palatino) with CharisSIL
@@ -72,6 +70,7 @@ color_push.stack, color_pop.stack = 0,0
color_push.command,color_pop.command = 1,2
color_push.data = "0.97 0.04 0.07 rg" -- red
local fallbackfont = font.id("fallbackfont")
+local fallbackchar = 0xFFFD -- Unicode replacement character
table.setmetatableindex(fontcharacters, function (t, k)
if k == true then
return fontcharacters[currentfont()]
@@ -100,10 +99,11 @@ local nodeprocessor = function (head)
lastfont = currfont
if not characters[char] then
head = node.insert_before(head,n,node.copy(color_push))
+ node.remove(head,node.next(n)) -- remove .notdef char (new in luaotfload 2.98)
node.insert_after(head,n,node.copy(color_pop))
n.font = fallbackfont
if not fontcharacters[fallbackfont][char] then -- not even in Charis SIL
- n.char = 0xFFFD
+ n.char = fallbackchar
end
end
end
@@ -370,7 +370,7 @@ luatexbase.add_to_callback("pre_linebreak_filter", nodeprocessor, "replace missi
% Unfortunately, I don't have a Palatino variant containing all of the following
% glyphs. The settings are typeset in \TeX\ Gyre Pagella;
% missing glyphs, printed in red, are taken from Charis <SIL>;
-% glyphs missing even in Charis <SIL> appear as `\char"FFFD'.
+% glyphs missing even in Charis <SIL> appear as `\char"FFFD@'.
% To see the real settings, consult \file{mt-PalatinoLinotype.cfg}.
%{\setmacrofont\PalatinoLinotype
% \begin{macrocode}
@@ -1291,7 +1291,7 @@ luatexbase.add_to_callback("pre_linebreak_filter", nodeprocessor, "replace missi
fl = { 0,50},
ffl = { 0,50},
ſt = { 0,50},
- st = { 0,50}
+ st = { 0,50}
% \end{macrocode}
%}
% \begin{macrocode}
diff --git a/macros/latex/contrib/microtype/microtype.dtx b/macros/latex/contrib/microtype/microtype.dtx
index cc267648a3..3871ffedc3 100644
--- a/macros/latex/contrib/microtype/microtype.dtx
+++ b/macros/latex/contrib/microtype/microtype.dtx
@@ -1,11 +1,11 @@
%\iffalse meta-comment
% !Mode:: "TeX:DTX:UK"
% !smartQuote:: "English"
-% !DTXversion:: "2.7b"
+% !DTXversion:: "2.7c"
% ------------------------------------------------------------------------
% The `microtype' package
% Subliminal refinements towards typographical perfection
-% Copyright (c) 2004--2018 R Schlicht <w.m.l@gmx.net>
+% Copyright (c) 2004--2019 R Schlicht <w.m.l@gmx.net>
%
% This work may be distributed and/or modified under the conditions of the
% LaTeX Project Public License, either version 1.3c of this license or (at
@@ -37,7 +37,7 @@
%<luatex-def> {microtype-luatex.def}
%<xetex-def> {microtype-xetex.def}
%<*package|letterspace|m-t|pdftex-def|luatex-def|xetex-def>
- [2019/02/28 v2.7b
+ [2019/10/10 v2.7c
%<package> Micro-typographical refinements
%<letterspace> Robust letterspacing
%<m-t> microtype main configuration file
@@ -51,8 +51,8 @@
%<luafile>local microtype = microtype
%<luafile>microtype.module = {
%<luafile> name = "microtype",
-%<luafile> version = "2.7b",
-%<luafile> date = "2019/02/28",
+%<luafile> version = "2.7c",
+%<luafile> date = "2019/10/10",
%<luafile> description = "microtype module.",
%<luafile> author = "E. Roux, R. Schlicht and P. Gesang",
%<luafile> copyright = "E. Roux, R. Schlicht and P. Gesang",
@@ -141,6 +141,15 @@
\ifluatex % microtype.dtx finally compiles with 0.35!
\microtypesetup{kerning=false}
\def\pdftexversion{200} % in TeX Live 2015, they let this to \luatexversion
+ \let\pdfxform \saveboxresource
+ \let\pdflastxform \lastsavedboxresourceindex
+ \protected\edef\pdfminorversion {\pdfvariable minorversion}
+ \protected\def\pdfobj {\pdfextension obj }
+ \protected\def\pdfannot {\pdfextension annot }
+ \protected\def\pdfoutline {\pdfextension outline }
+ \protected\def\pdfmapline {\pdfextension mapline }
+ \protected\def\pdfglyphtounicode {\pdfextension glyphtounicode }
+ \protected\def\pdflastobj {\numexpr\pdffeedback lastobj\relax}
\fi
\ifnum\pdftexversion<140 \else % pdftex 1.40, including textmatrix patch,
\microtypesetup{expansion=alltext,step=1} % hence we can activate expansion ...
@@ -558,7 +567,7 @@
pdfkeywords={TeX, LaTeX, pdfTeX, LuaTeX, XeTeX, typography, micro-typography,
character protrusion, margin kerning, optical alignment, font expansion,
font scaling, hz, kerning, spacing, glue, letterspacing, tracking, ligatures},
- pdfcopyright={\textcopyright\ 2004--2018 R Schlicht\012%
+ pdfcopyright={\textcopyright\ 2004--2019 R Schlicht\012%
This work may be distributed and/or modified under the conditions
of the LaTeX Project Public License, either version 1.3c of this
license or (at your option) any later version.\012%
@@ -801,7 +810,7 @@
% other extensions (see section~\ref{sec:lettersp}).
%
%\bigskip\noindent
-% This package is copyright \textcopyright\ 2004\kern.09em--2018 R Schlicht.
+% This package is copyright \textcopyright\ 2004\kern.09em--2019 R Schlicht.
% It may be distributed and/or modified under the conditions of the
% \IfFileExists{lppl.tex}{\hyperref[LPPL:LPPL]}{\href{http://www.latex-project.org/lppl/}}
% {\LaTeX\ Project Public License},
@@ -2854,9 +2863,12 @@
% \contributor Nils Anders Danielsson <nad\at cse.gu.se>,
% \contributor Paolo Ney <@\at @>, ^^A https://tex.stackexchange.com/users/29161/paulo-ney
% \contributor Frank Mittelbach <frank.mittelbach\at latex-project.org>,
-% \contributor Franz Wexler <@\at @> ^^A https://tex.stackexchange.com/users/182307/franz-wexler
+% \contributor Franz Wexler <@\at @>, ^^A https://tex.stackexchange.com/users/182307/franz-wexler
+% \contributor Moritz Wemheuer <moritz.wemheuer\at gmail.com>,
+% `\contributor Andy N <@\at @>', ^^A https://tex.stackexchange.com/users/182462/andy-n
+% \contributor Phelype Oleinik <phe.h.o1\at gmail.com>
% and
-% \contributor Moritz Wemheuer <moritz.wemheuer\at gmail.com>.
+% \contributor Falk Hanisch <falk.hanisch\at tu-dresden.de>.
%
%
%\iffalse
@@ -2942,19 +2954,19 @@
%
% \bibitem[\LaTeXe\ font selection]{fntguide}
% \LaTeX3 Project Team, \emph{\LaTeXe\ font selection},
-% \newblock 27 November 2005.
-% \newblock (\ctanurl{macros/latex/doc/fntguide.pdf})
+% \newblock July 2019.
+% \newblock (\ctanurl{macros/latex/base/fntguide.pdf})
%
% \bibitem[\pkg{fontspec}]{fontspec}
% Will Robertson,
% \emph{The \pkg{fontspec} package: Font selection for \xe\LaTeX\ and Lua\LaTeX},
-% \newblock 12~February 2019.
+% \newblock 15~March 2019.
% \newblock (\ctanpkgurl{fontspec})
%
% \bibitem[\pkg{luaotfload}]{luaotfload}
% \'Elie Roux, Khaled Hosny, Philipp Gesang, Ulrike Fischer,
% \emph{The \pkg{luaotfload} package},
-% \newblock 14~February 2019.
+% \newblock 13~September 2019.
% \newblock (\ctanpkgurl{luaotfload})
%
% \bibitem[\pkg{pdfcprot}]{pdfcprot}
@@ -3007,6 +3019,8 @@
%
%\VersionDate{\expandafter\@gobble\fileversion}{\filedate}
%
+%\VersionDate{2.7b}{2019/02/28}
+%
%\VersionDate{2.7a}{2018/01/14}
%
%\Version{2.7}{2017/07/07}
@@ -3349,10 +3363,10 @@
% \@xobeysp,\check@icr,\color@begingroup,\color@endgroup,\g@addto@macro,
% \hmode@bgroup,\m@ne,\maybe@ic,\maybe@ic@,\nfss@text,\not@math@alphabet,
% \on@line,\p@,\set@display@protect,\strip@prefix,\strip@pt,\tw@,\z@,\z@skip,
-% \zap@space,\active,\documentclass,\leavevmode,\makeatletter,\mbox,\newcommand,
-% \newcount,\newdimen,\newif,\newskip,\newtoks,\nobreak,\nonfrenchspacing,
-% \normalsize,\renewcommand,\space,\AtBeginDocument,\AtEndOfPackage,
-% \CheckCommand,\CurrentOption,\DeclareRobustCommand,\IfFileExists,
+% \zap@space,\active,\documentclass,\fmtversion,\leavevmode,\makeatletter,
+% \mbox,\newcommand,\newcount,\newdimen,\newif,\newskip,\newtoks,\nobreak,
+% \nonfrenchspacing,\normalsize,\renewcommand,\space,\AtBeginDocument,
+% \AtEndOfPackage,\CheckCommand,\CurrentOption,\DeclareRobustCommand,\IfFileExists,
% \InputIfFileExists,\MessageBreak,\PackageError,\PackageInfo,\PackageWarning,
% \RequirePackage,\@@enc@update,\cf@encoding,\f@encoding}
%^^A\DoNotIndex{\add@accent,\curr@fontshape,\define@newfont,\do@subst@correction,
@@ -4233,7 +4247,7 @@
% Here it begins. The module was contributed by \'Elie Roux.
%\changes{v2.4}{2009/11/12}{new file \file{microtype.lua} containing the \texttt{lua} functions
% (contributed by \contributor \'Elie Roux <elie.roux\at telecom-bretagne.eu>)}
-%\changes{v2.7b}{2019/02/28}{update lua function \texttt{microtype.warning} after changes in \pkg{luaotfload}
+%\changes{v2.7b}{2019/02/28}{update lua function \texttt{microtype.info} after changes in \pkg{luaotfload}
% (reported by \contributor Moritz Wemheuer <moritz.wemheuer\at gmail.com> and
% \contributor Ulrike Fischer <news3\at nililand.de>)}
% ^^A private mail, 2019/02/19
@@ -4241,8 +4255,8 @@
% \begin{macrocode}
%<*luafile>
-function microtype.warning(...)
- luatexbase.module_warning("microtype",...)
+function microtype.info(...)
+ luatexbase.module_info("microtype",...)
end
local find = string.find
@@ -8026,6 +8040,9 @@ time will almost certainly lead to undesired results. Have your choice!}%
% to check whether they should be kept or inhibited.
% Here's our concoction of this function. The table |microtype.ligs| will
% be populated in \cmd\MT@noligatures@.
+%\changes{v2.7c}{2019/03/08}{turn warning into info when overwriting the \texttt{keepligature} function
+% (reported by \contributor Andy N <@\at @>)}
+% ^^A https://tex.stackexchange.com/questions/478344/
% \begin{macrocode}
%<*luafile>
microtype.ligs = microtype.ligs or { }
@@ -8064,7 +8081,7 @@ end
if luaotfload and luaotfload.letterspace then
if luaotfload.letterspace.keepligature then
- microtype.warning("overwriting function `keepligature'")
+ microtype.info("overwriting function `keepligature'")
end
luaotfload.letterspace.keepligature = keepligature
end
@@ -8852,6 +8869,13 @@ end
\let\IeC\@firstofone
\let\@inpenc@undefined@\MT@undefined@char
% \end{macrocode}
+% Unicode handling has changed again with \LaTeX\ 2019/10/01.
+%\changes{v2.7c}{2019/10/10}{compatibility with \LaTeX\ 2019/10/01} ^^A https://github.com/latex3/latex2e/commit/2edd9339ed9a710d45b435ba91545240d0cc9528#diff-d138747c4604d436824f8cb7cedd7d46
+% \begin{macrocode}
+ \let\UTF@two@octets@noexpand\@empty
+ \let\UTF@three@octets@noexpand\@empty
+ \let\UTF@four@octets@noexpand\@empty
+% \end{macrocode}
% We refrain from checking whether there is a sufficient number of octets.
% \begin{macrocode}
\def\UTFviii@defined##1{\ifx ##1\relax
@@ -8902,12 +8926,21 @@ end
\meaning\expandafter\MT@char\MT@charstring\relax\relax\relax
\ifnum\MT@char@ < \z@
% \end{macrocode}
+%\changes{v2.7c}{2019/08/13}{take care of \cs{remove@tlig}}
+% For <TU> encoding, the commands \cmd\textquotesingle, \cmd\textasciigrave\
+% and \cmd\textquotedbl\ are defined by means of the auxiliary macro
+% \cmd\remove@tlig, which we take care of here.
+% \begin{macrocode}
+ \expandafter\expandafter\expandafter\MT@is@tlig\MT@char\relax\relax
+ \ifnum\MT@char@ < \z@
+% \end{macrocode}
%\changes{v2.2}{2007/03/07}{expand once more (for \pkg{frenchpro})}
-% \dots~or, if it hasn't been defined by \cs{DeclareTextSymbol}, a letter
+% Finally, if it hasn't been defined by \cs{DeclareTextSymbol}, it could be a letter
% (\eg, \cmd\i, when using \pkg{frenchpro}). ^^A as noted by Bernard Gaulle
% ^^A private mail, 2005/01/28
% \begin{macrocode}
- \expandafter\expandafter\expandafter\MT@is@letter\MT@char\relax\relax
+ \expandafter\expandafter\expandafter\MT@is@letter\MT@char\relax\relax
+ \fi
\fi
}
% \end{macrocode}
@@ -8984,6 +9017,16 @@ end
%\end{macro}
%\end{macro}
%\end{macro}
+%\begin{macro}{\MT@is@tlig}
+% This might have to change again with the next \LaTeX\ release. ^^A see https://github.com/latex3/latex2e/issues/165
+% \begin{macrocode}
+\def\MT@is@tlig#1#2{%
+ \ifx#1\remove@tlig
+ \MT@is@number #2\relax\relax
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
%\begin{macro}{\MT@is@composite}
% Here, we are dealing with accented characters, specified as two tokens.
%\changes{v1.7}{2005/03/10}{new macro: construct command for composite character;
@@ -9033,7 +9076,7 @@ end
}
% \end{macrocode}
%\end{macro}
-%\begin{macro}{MT@is@uni@comp}
+%\begin{macro}{\MT@is@uni@comp}
% Helper for \cs{DeclareUnicodeComposite}.
% \begin{macrocode}
\def\MT@is@uni@comp#1\iffontchar#2\else#3\fi\relax{%
@@ -12317,24 +12360,37 @@ end
\MT@check@active@set{ex}%
% \end{macrocode}
%\end{macro}
+%\begin{macro}{\showhyphens}
%\changes{v1.7}{2005/03/02}{modify \cmd\showhyphens}
% Inside \cmd\showhyphens, font expansion should be disabled.
% (Since 2017/01/10, the \LaTeX\ format contains a different version
% for \xetex, but since expansion doesn't work with \xetex, we don't
% have to bother.)
-% \begin{macrocode}
- \CheckCommand*\showhyphens[1]{\setbox0\vbox{%
- \color@begingroup\everypar{}\parfillskip\z@skip
- \hsize\maxdimen\normalfont\pretolerance\m@ne\tolerance\m@ne
- \hbadness\z@\showboxdepth\z@\ ##1\color@endgroup}}%
-% \end{macrocode}
-%\begin{macro}{\showhyphens}
-% I wonder why it's defined globally (in \file{ltfssbas.dtx})?
-% \begin{macrocode}
- \gdef\showhyphens##1{\setbox0\vbox{%
- \color@begingroup\pdfadjustspacing\z@\everypar{}\parfillskip\z@skip
- \hsize\maxdimen\normalfont\pretolerance\m@ne\tolerance\m@ne
- \hbadness\z@\showboxdepth\z@\ ##1\color@endgroup}}%
+%\changes{v2.7c}{2019/10/02}{compatibility with \LaTeX\ 2019/10/01
+% (reported by \contributor Phelype Oleinik <phe.h.o1\at gmail.com>
+% and \contributor Falk Hanisch <falk.hanisch\at tu-dresden.de>)}
+% ^^A private mail, 2019/09/26
+% ^^A private mail, 2019/10/08
+% Since 2019/10/01, the command is robust.
+% \begin{macrocode}
+ \MT@ifdefined@n@TF{showhyphens }{%
+ \def\MT@temp##1##2{%
+ \expandafter\CheckCommand\csname showhyphens \endcsname[1]{##1}%
+ \DeclareRobustCommand\showhyphens[1]{##2}}%
+ }{%
+ \def\MT@temp##1##2{%
+ \CheckCommand*\showhyphens[1]{##1}%
+ \gdef\showhyphens####1{##2}}%
+ }%
+ \MT@temp
+ {\setbox0\vbox{\color@begingroup
+ \everypar{}\parfillskip\z@skip
+ \hsize\maxdimen\normalfont\pretolerance\m@ne\tolerance\m@ne
+ \hbadness\z@\showboxdepth\z@\ ##1\color@endgroup}}
+ {\setbox0\vbox{\color@begingroup\pdfadjustspacing\z@
+ \everypar{}\parfillskip\z@skip
+ \hsize\maxdimen\normalfont\pretolerance\m@ne\tolerance\m@ne
+ \hbadness\z@\showboxdepth\z@\ ##1\color@endgroup}}%
% \end{macrocode}
%\end{macro}
% \begin{macrocode}
@@ -17015,7 +17071,7 @@ normal, and shrunk by 5\%:
% Grave accent \` Left brace \{ Vertical bar \|
% Right brace \} Tilde \~}
%
-% \CheckSum{10590}
+% \CheckSum{10630}
%
% \Finale
%
diff --git a/macros/latex/contrib/microtype/microtype.ins b/macros/latex/contrib/microtype/microtype.ins
index a3e78ea1e5..7fa515b865 100644
--- a/macros/latex/contrib/microtype/microtype.ins
+++ b/macros/latex/contrib/microtype/microtype.ins
@@ -10,7 +10,7 @@
The `microtype' package
Subliminal refinements towards typographical perfection
- Copyright (c) 2004--2018 R Schlicht <w.m.l@gmx.net>
+ Copyright (c) 2004--2019 R Schlicht <w.m.l@gmx.net>
This work may be distributed and/or modified under the conditions of the
LaTeX Project Public License, either version 1.3c of this license or (at
diff --git a/macros/latex/contrib/microtype/microtype.pdf b/macros/latex/contrib/microtype/microtype.pdf
index 0cd1804f64..95bd060f8a 100644
--- a/macros/latex/contrib/microtype/microtype.pdf
+++ b/macros/latex/contrib/microtype/microtype.pdf
Binary files differ