summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-10-28 03:01:22 +0000
committerNorbert Preining <norbert@preining.info>2022-10-28 03:01:22 +0000
commit577cb5a42c6f06b209011b90703e7809ea47d43f (patch)
tree7244eb3e1cbf04e31d65467fcf27e05fdfa4c2f9 /macros
parent876d640726265ada7e067f22dda368dd49ed9ad1 (diff)
CTAN sync 202210280301
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/eolang/DEPENDS.txt6
-rw-r--r--macros/latex/contrib/eolang/README.md6
-rw-r--r--macros/latex/contrib/eolang/eolang.bib (renamed from macros/latex/contrib/eolang/main.bib)0
-rw-r--r--macros/latex/contrib/eolang/eolang.dtx474
-rw-r--r--macros/latex/contrib/eolang/eolang.pdfbin591918 -> 957255 bytes
-rw-r--r--macros/latex/contrib/fixdif/fixdif-zh-cn.pdfbin163097 -> 163034 bytes
-rw-r--r--macros/latex/contrib/fixdif/fixdif-zh-cn.tex2
-rw-r--r--macros/latex/contrib/fixdif/fixdif.dtx12
-rw-r--r--macros/latex/contrib/fixdif/fixdif.pdfbin97323 -> 97443 bytes
-rw-r--r--macros/latex/contrib/l3backend/CHANGELOG.md7
-rw-r--r--macros/latex/contrib/l3backend/README.md2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-basics.dtx14
-rw-r--r--macros/latex/contrib/l3backend/l3backend-box.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-code.pdfbin934249 -> 933282 bytes
-rw-r--r--macros/latex/contrib/l3backend/l3backend-color.dtx2
-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-header.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-opacity.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-pdf.dtx17
-rw-r--r--macros/latex/contrib/l3kernel/CHANGELOG.md16
-rw-r--r--macros/latex/contrib/l3kernel/README.md2
-rw-r--r--macros/latex/contrib/l3kernel/expl3.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/expl3.pdfbin626085 -> 626101 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.pdfbin1776784 -> 1776975 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3basics.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3bootstrap.dtx42
-rw-r--r--macros/latex/contrib/l3kernel/l3box.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3candidates.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3cctab.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3clist.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3coffins.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3color.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/l3doc.pdfbin557973 -> 557987 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.pdfbin151709 -> 151736 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3expan.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3file.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.dtx2
-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.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3msg.dtx8
-rw-r--r--macros/latex/contrib/l3kernel/l3names.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3news.pdfbin395879 -> 395879 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news01.pdfbin122710 -> 122710 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news02.pdfbin150676 -> 150676 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news03.pdfbin148702 -> 148702 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news04.pdfbin114588 -> 114588 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news05.pdfbin112487 -> 112487 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news06.pdfbin151573 -> 151573 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news07.pdfbin128309 -> 128309 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news08.pdfbin163454 -> 163454 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news09.pdfbin250139 -> 250139 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news10.pdfbin150279 -> 150279 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news11.pdfbin170063 -> 170063 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news12.pdfbin204990 -> 204990 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3pdf.dtx5
-rw-r--r--macros/latex/contrib/l3kernel/l3prefixes.csv1
-rw-r--r--macros/latex/contrib/l3kernel/l3prefixes.pdfbin81567 -> 81626 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.dtx22
-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.pdfbin296174 -> 296165 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.pdfbin242826 -> 242838 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3sys.dtx5
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.pdfbin231237 -> 231239 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3text-case.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3text-map.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3text-purify.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3text.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3tl-analysis.dtx242
-rw-r--r--macros/latex/contrib/l3kernel/l3tl.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3token.dtx5
-rw-r--r--macros/latex/contrib/l3kernel/l3unicode.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/source3.pdfbin7326452 -> 7334407 bytes
-rw-r--r--macros/latex/contrib/l3kernel/source3.tex2
107 files changed, 707 insertions, 305 deletions
diff --git a/macros/latex/contrib/eolang/DEPENDS.txt b/macros/latex/contrib/eolang/DEPENDS.txt
index ae6ed34e0b..11d8637225 100644
--- a/macros/latex/contrib/eolang/DEPENDS.txt
+++ b/macros/latex/contrib/eolang/DEPENDS.txt
@@ -4,4 +4,8 @@ hard amsfonts
hard iexec
hard pgf
hard fancyvrb
-hard pgfopts \ No newline at end of file
+hard pgfopts
+hard pdftexcmds
+hard ifluatex
+hard ifxetex
+hard adjustbox
diff --git a/macros/latex/contrib/eolang/README.md b/macros/latex/contrib/eolang/README.md
index 257b0c163e..86809ceb26 100644
--- a/macros/latex/contrib/eolang/README.md
+++ b/macros/latex/contrib/eolang/README.md
@@ -1,5 +1,5 @@
[![l3build](https://github.com/objectionary/eolang.sty/actions/workflows/l3build.yml/badge.svg)](https://github.com/objectionary/eolang.sty/actions/workflows/l3build.yml)
-[![CTAN](https://img.shields.io/ctan/v/eolang.sty)](https://ctan.org/pkg/eolang.sty)
+[![CTAN](https://img.shields.io/ctan/v/eolang)](https://ctan.org/pkg/eolang)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/objectionary/eolang.sty/blob/master/LICENSE.txt)
This LaTeX package helps you write 𝜑-calculus formulas and
@@ -16,12 +16,14 @@ and then use in the preamble:
\begin{document}
\begin{phiquation}
x -> [
- \varphi -> |foo|(5),
+ @ -> |foo|(5),
y -> [ \lambda -> M_1 ]].
\end{phiquation}
\end{document}
```
+Otherwise, you can download [`eolang.sty`](https://raw.githubusercontent.com/objectionary/eolang.sty/gh-pages/eolang/eolang.sty) and add to your project.
+
If you want to contribute yourself, make a fork, then create a branch,
then run `l3build ctan` in the root directory.
It should compile everything without errors. If not, submit an issue and wait.
diff --git a/macros/latex/contrib/eolang/main.bib b/macros/latex/contrib/eolang/eolang.bib
index 34ca47a8f2..34ca47a8f2 100644
--- a/macros/latex/contrib/eolang/main.bib
+++ b/macros/latex/contrib/eolang/eolang.bib
diff --git a/macros/latex/contrib/eolang/eolang.dtx b/macros/latex/contrib/eolang/eolang.dtx
index 1fabdd6282..c277d02c14 100644
--- a/macros/latex/contrib/eolang/eolang.dtx
+++ b/macros/latex/contrib/eolang/eolang.dtx
@@ -50,15 +50,17 @@
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{eolang}
%<*package>
-[2022-10-25 0.0.2 Formulas and Graphs for EO Programming Language]
+[2022-10-27 0.1.0 Formulas and Graphs for EO Programming Language]
%</package>
%<*driver>
\documentclass{ltxdoc}
\usepackage[maxnames=1,minnames=1,maxbibnames=1,natbib=true,citestyle=authoryear,bibstyle=authoryear,doi=false,url=false,isbn=false,isbn=false]{biblatex}
-\addbibresource{main.bib}
+\addbibresource{eolang.bib}
\usepackage[tt=false, type1=true]{libertine}
\usepackage{microtype}
+\AddToHook{env/verbatim/begin}{\microtypesetup{protrusion=false}}
\usepackage{graphicx}
+\usepackage{xcolor}
\usepackage[runs=1,dtx]{docshots}
\usepackage{eolang}
\usepackage{href-ul}
@@ -80,9 +82,10 @@
%
% \maketitle
%
-% \textbf{NB!}
+% \textbf{\color{red}NB!}
% You must run \TeX{} processor with |--shell-escape| option
% and you must have \href{https://www.perl.org}{Perl} installed.
+% This package doesn't work on Windows.
% \section{Introduction}
%
@@ -101,9 +104,8 @@
% ^ !-> $.b,
% b -> [[ c -> |fn|(56),
% @ -> |hello|($),
-% \Delta ~> |01-FE-C3| ]]]],
-
-% x -> [[ \alpha_0 -> ? ]]
+% \Delta ..> |01-FE-C3| ]]]],\\
+% x -> [[ \alpha_0 -> ? ]].
% \end{phiquation*}
% \end{document}
% \end{docshot}
@@ -124,10 +126,10 @@
% (|\varnothing|),
% \item ``|->|'' maps to ``$\mapsto$''
% (|\mapsto|),
-% \item ``|!->|'' maps to ``$\mapstochar\relbar\mathrel{\mkern-12mu}\mapsto$''
-% (|\mapstochar\relbar\mathrel{\mkern-12mu}\mapsto|),
-% \item ``|~>|'' maps to ``$\mapstochar\dashrightarrow$''
-% (|\mapstochar\dashrightarrow|),
+% \item ``|!->|'' maps to ``$\phiConst$''
+% (|\phiConst|),
+% \item ``|..>|'' maps to ``$\phiDotted$''
+% (|\phiDotted|),
% \item ``|[[|'' maps to ``$\llbracket$''
% (|\llbracket|),
% \item ``|]]|'' maps to ``$\rrbracket$''
@@ -148,15 +150,14 @@
% using the same simple plain-text notation:
% \begin{docshot}
% \documentclass{article}
-% \usepackage[paperwidth=2in]{geometry}
% \pagestyle{empty}
% \usepackage{eolang}
% \begin{document}
-% A simple object
-% \phiq{x -> [[@ -> y]]}
-% is a decorator of
-% the data object
-% \phiq{y -> [[\Delta ~> 42]]}.
+% A simple object \\
+% \phiq{x -> [[@ -> y]]} \\
+% is a decorator of \\
+% the data object \\
+% \phiq{y -> [[\Delta ..> 42]]}.
% \end{document}
% \end{docshot}
@@ -198,72 +199,259 @@
% \item ``|pi|'' makes it dotted, with $\pi$ label.
% \end{itemize}
+% \DescribeMacro{\eolang}
+% \DescribeMacro{\phic}
+% There is also a no-argument command |\eolang| to help you print the name of
+% \eolang{} language. It understands |anonymous| mode of \href{https://ctan.org/pkg/acmart}{acmart} and prints itself
+% differently, to double-blind your paper. There is also |\phic| command to print
+% the name of \phic{}, also sensitive to |anonymous| mode.
+% \begin{docshot}
+% \documentclass[anonymous]{acmart}
+% \thispagestyle{empty}
+% \usepackage{eolang}
+% \begin{document}
+% In our research we use \eolang{}, \\
+% an experimental object-oriented \\
+% dataflow language, and \phic{}, \\
+% its formal foundation.
+% \end{document}
+% \end{docshot}
+
+% \DescribeMacro{\phiConst}
+% A simple commands is defined to help you render an arrow for a constant attribute.
+% It is recommende not to use it directly, but use |!->| instead. However, if you
+% want to use |\phiConst|, wrap it in |\mathrel| for better display:
+% \begin{docshot}
+% \documentclass{article}
+% \pagestyle{empty}
+% \usepackage{eolang}
+% \begin{document}
+% \phiq{[[ x \mathrel{\phiConst} y ]]}
+% \end{document}
+% \end{docshot}
+
+% \section{Package Options}
+
+% \DescribeMacro{tmpdir}
+% The default location of temp files is |_eolang|. You can change this using |tmpdir| option:
+%\iffalse
+%<*verb>
+%\fi
+\begin{verbatim}
+\usepackage[tmpdir=/tmp/foo]{eolang}
+\end{verbatim}
+%\iffalse
+%</verb>
+%\fi
+
+% \section{More Examples}
+
+% The |phiquation| environment treats ends of line as signals to start
+% new lines in the formula. If you don't want this to happen and want to parse
+% the next line as the a continuation of the current line, you can use a single
+% backslash as it's done here:
+% \begin{docshot}
+% \documentclass{article}
+% \usepackage{amsmath}
+% \usepackage{eolang}
+% \pagestyle{empty}
+% \begin{document}
+% \begin{phiquation*}
+% \dfrac \
+% {x->[[@->y]] \quad y->[[z->|42|]]} \
+% {x.z -> |42|} \
+% \text{\sffamily R1}
+% \end{phiquation*}
+% \end{document}
+% \end{docshot}
+
+% The |phiquation| environment may be used together with \href{https://ctan.org/pkg/acmart}{acmart}:
+% \begin{docshot}
+% \documentclass{acmart}
+% \usepackage{eolang}
+% \thispagestyle{empty}
+% \begin{document}
+% \begin{phiquation*}
+% x -> [[
+% y -> [[
+% z !-> $, f ..> ? ]]]],\\
+% \beta_1 := [ \psi -wait> ? ].
+% \end{phiquation*}
+% \end{document}
+% \end{docshot}
+
+% The |phiquation| environment will automatically align formulas by the first
+% arrow, if there are only left-aligned formulas:
+% \begin{docshot}
+% \documentclass{acmart}
+% \usepackage{eolang}
+% \thispagestyle{empty}
+% \begin{document}
+% \begin{phiquation*}
+% x(\pi) -> [[\lambda ..> f_1]], \\
+% x(a,b,c) -> [[ \alpha_0 -> ?, \
+% @ -> |hello|($) ]], \\
+% \Delta = |43-09|.
+% \end{phiquation*}
+% \end{document}
+% \end{docshot}
+
% \StopEventually{}
% \section{Implementation}
+% \changes{0.0.1}{2022/10/15}{First draft.}
-% First, we include a few packages:
+% First, we include a few packages.
+% We need \href{https://ctan.org/pkg/stmaryrd}{stmaryrd} for |\llbracket| and |\rrbracket| commands:
% \begin{macrocode}
\RequirePackage{stmaryrd}
+% \end{macrocode}
+% We need \href{https://ctan.org/pkg/amsmath}{amsmath} for |equation*| environment:
+% \begin{macrocode}
\RequirePackage{amsmath}
-\RequirePackage{amssymb}
-\RequirePackage{amsfonts}
-\RequirePackage{iexec}
+% \end{macrocode}
+% We need \href{https://ctan.org/pkg/amssymb}{amssymb} for |\varnothing| command. We disable |\Bbbk|
+% because it may conflict with some packages from \href{https://ctan.org/pkg/acmart}{acmart}:
+% \begin{macrocode}
+\let\Bbbk\relax\RequirePackage{amssymb}
+% \end{macrocode}
+% We need \href{https://ctan.org/pkg/fancyvrb}{fancyvrb} for |\VerbatimEnvironment| command:
+% \begin{macrocode}
\RequirePackage{fancyvrb}
% \end{macrocode}
+% We need \href{https://ctan.org/pkg/iexec}{iexec} for executing Perl scripts:
+% \begin{macrocode}
+\RequirePackage{iexec}
+% \end{macrocode}
-% \begin{macro}{\eolang@env}
+% Then, we process package options:
+% \changes{0.1.0}{2022/10/26}{Parsing of package options introduced.}
+% \begin{macrocode}
+\RequirePackage{pgfopts}
+\RequirePackage{ifluatex}
+\RequirePackage{ifxetex}
+\pgfkeys{
+ /eolang/.cd,
+ tmpdir/.store in=\eolang@tmpdir,
+ tmpdir/.default=_eolang\ifxetex-xe\else\ifluatex-lua\fi\fi,
+ tmpdir
+}
+\ProcessPgfOptions{/eolang}
+% \end{macrocode}
+
+% Then, we make a directory where all temporary files will be kept:
+% \begin{macrocode}
+\iexec[null]{mkdir -p "\eolang@tmpdir/\jobname"}%
+% \end{macrocode}
+
+% \begin{macro}{\eolang@mdfive}
+% \changes{0.1.0}{2022/10/26}{New supplementary command added to calculate MD5 sum of a file.}
+% Then, we define a command for MD5 hash calculating of a file:
+% \begin{macrocode}
+\RequirePackage{pdftexcmds}
+\makeatletter\newcommand\eolang@mdfive[1]{\pdf@filemdfivesum{#1}}\makeatother
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{eolang-phi.pl}
% \changes{0.0.2}{2022/10/21}{The symbols ``['' and ``]'' replaced with ``[['' and ``]]'' for abstract object brackets, because they conflicted with normal square brackets}
% \changes{0.0.2}{2022/10/21}{New symbol added for basket slots}
% \changes{0.0.2}{2022/10/21}{Parsing of symbols ``@,'' ``\^{},'' and ``\&'' enabled (varphi, rho, and sigma)}
-% Then, we define |\eolang@env| supplementary command.
-% It is implemented with the help of |\iexec| from
-% \href{https://github.com/yegor256/iexec}{iexec} package:
+% \changes{0.1.0}{2022/10/26}{A new Perl script "eolang-phi.pl" added for parsing of phi expressions.}
+% Then, we create a Perl script for |phiquation| processing:
% \begin{macrocode}
-\makeatletter\newcommand\eolang@env[2]{
- \iexec[trace]{
- /bin/echo -n '\\begin{#1}\\begin{split} &'
- &&
- /bin/echo -n '\detokenize{#2}'
- | perl -pe 's/^\\r\\+//g'
- | perl -pe 's/\\r\\+$//g'
- | perl -pe 's/\\?/\\\\varnothing/g'
- | perl -pe 's/@/\\\\varphi/g'
- | perl -pe 's/&/\\\\sigma/g'
- | perl -pe 's/\\^/\\\\rho/g'
- | perl -pe 's/\\$/\\\\xi/g'
- | perl -pe 's/-([a-z]+)>/\\\\xrightarrow{\\\\text{\\\\sffamily\\\\scshape \\1}}/g'
- | perl -pe 's/!->/\\\\mapstochar\\\\relbar\\\\mathrel{\\\\mkern-12mu}\\\\mapsto/g'
- | perl -pe 's/->/\\\\mapsto/g'
- | perl -pe 's/:=/\\\\vDash/g'
- | perl -pe 's/\unexpanded{~}>/\\\\mapstochar\\\\dashrightarrow/g'
- | perl -pe 's/\\|([^\\|]+)\\|/\\\\texttt{\\1}/g'
- | perl -pe 's/\\[\\[/\\\\llbracket/g'
- | perl -pe 's/\\]\\]/\\\\rrbracket/g'
- | perl -pe 's/\\r\\r/\\\\\\\\ \&/g'
- | perl -pe 's/\\r/\\\\\\\\[-4pt] \&/g'
- | perl -pe 's/([^& ]) {2}([^ ])/\\1 \\2/g'
- | perl -pe 's/ {2}/\\\\quad{}/g'
- &&
- /bin/echo -n '\\end{split}\\end{#1}\\endinput'
- }%
-}\makeatother
+\makeatletter
+\begin{VerbatimOut}{\eolang@tmpdir/eolang-phi.pl}
+$env = $ARGV[0];
+open(my $fh, '<', $ARGV[1]);
+my $tex; { local $/; $tex = <$fh>; }
+print '% This file is auto-generated', "\n";
+print '% There are ', length($tex),
+ ' chars in the input: ', $ARGV[1], "\n";
+print '% ---', "\n";
+if (index($tex, "\t") > 0) {
+ print "TABS are prohibited!";
+ exit 1;
+}
+my @lines = split (/\n/g, $tex);
+foreach my $t (@lines) {
+ print '% ', $t, "\n";
+}
+print '% ---', "\n";
+if ($env eq 'phiq') {
+ print '$';
+} else {
+ print '\begin{', $env, '}\begin{split}';
+}
+$tex =~ s/^\s+|\s+$//g;
+if ($env ne 'phiq') {
+ $tex =~ s/\s+\\\n\s*//g;
+ $tex =~ s/\\\\\n/\n\n/g;
+}
+$tex =~ s/\?/\\varnothing{}/g;
+$tex =~ s/@/\\varphi{}/g;
+$tex =~ s/&/\\sigma{}/g;
+$tex =~ s/\^/\\rho{}/g;
+$tex =~ s/\$/\\xi{}/g;
+$tex =~ s/-([a-z]+)>/\\mathrel{\\xrightarrow{\\text{\\sffamily\\scshape \1}}}/g;
+$tex =~ s/!->/\\mathrel{\\phiConst}/g;
+$tex =~ s/->/\\mathrel{\\mapsto}/g;
+$tex =~ s/:=/\\mathrel{\\vDash}/g;
+$tex =~ s/..>/\\mathrel{\\phiDotted}/g;
+$tex =~ s/\|([^\|]+)\|/\\texttt{\1}{}/g;
+$tex =~ s/\[\[/\\llbracket\\mathrel{}/g;
+$tex =~ s/\]\]/\\mathrel{}\\rrbracket{}/g;
+if ($env ne 'phiq') {
+ $tex =~ s/\n\n/\\\\&/g;
+ $tex =~ s/\n/\\\\[-4pt]&/g;
+ $tex =~ s/([^&\s])\s{2}([^\s])/\1 \2/g;
+ $tex =~ s/\s{2}/ \\quad{}/g;
+ my @leads = $tex =~ /&[^\s]+\s/g;
+ my @eols = $tex =~ /&/g;
+ $tex = '&' . $tex;
+ if (0+@leads == 0+@eols && 0+@eols > 0) {
+ $tex =~ s/&([^\s]+)\s/\1&/g;
+ }
+}
+print $tex;
+if ($env eq 'phiq') {
+ print '$';
+} else {
+ print '\end{split}\end{', $env, '}';
+}
+print '\endinput', "\n";
+\end{VerbatimOut}
+\message{eolang: File with Perl script
+ '\eolang@tmpdir/eolang-phi.pl' saved^^J}%
+\iexec[trace,null]{perl -pi -e 's/(\\\\[a-zA-Z])\\s+/\\1/g'
+ "\eolang@tmpdir/eolang-phi.pl"}
+\makeatother
% \end{macrocode}
% \end{macro}
% \begin{macro}{phiquation}
-% Then, we define |phiquation| and |phiquation*| environments:
+% Then, we define |phiquation| and |phiquation*| environments through a supplementary
+% |\eolang@process| command:
% \begin{macrocode}
-\makeatletter
-\NewDocumentEnvironment{phiquation*}{b}{%
- \eolang@env{equation*}{#1}
-}{}
-\NewDocumentEnvironment{phiquation}{b}{%
- \eolang@env{equation}{#1}
-}{}
+\makeatletter\newcommand\eolang@process[1]{
+ \def\hash{\eolang@mdfive
+ {\eolang@tmpdir/\jobname/phiquation.tex}}%
+ \iexec[null]{cp "\eolang@tmpdir/\jobname/phiquation.tex"
+ "\eolang@tmpdir/\jobname/\hash.tex"}%
+ \iexec[trace,stdout=\eolang@tmpdir/\jobname/\hash-post.tex]{
+ perl "\eolang@tmpdir/eolang-phi.pl"
+ '#1'
+ "\eolang@tmpdir/\jobname/\hash.tex"}%
+}
+\newenvironment{phiquation*}%
+{\VerbatimEnvironment\begin{VerbatimOut}
+ {\eolang@tmpdir/\jobname/phiquation.tex}}
+{\end{VerbatimOut}\eolang@process{equation*}}
+\newenvironment{phiquation}%
+{\VerbatimEnvironment\begin{VerbatimOut}
+ {\eolang@tmpdir/\jobname/phiquation.tex}}
+{\end{VerbatimOut}\eolang@process{equation}}
\makeatother
-\AddToHook{env/phiquation*/begin}{\obeylines\obeyspaces}
-\AddToHook{env/phiquation/begin}{\obeylines\obeyspaces}
% \end{macrocode}
% \end{macro}
@@ -271,42 +459,47 @@
% \changes{0.0.2}{2022/10/21}{Parsing of additional symbols enabled}
% Then, we define |\phiq| command:
% \begin{macrocode}
-\newcommand\phiq[1]{
- \iexec[trace]{
- /bin/echo -n '$'
- &&
- /bin/echo -n '\detokenize{#1}'
- | perl -pe 's/\\^/\\\\rho/g'
- | perl -pe 's/\\$/\\\\xi/g'
- | perl -pe 's/&/\\\\sigma/g'
- | perl -pe 's/\\?/\\\\varnothing/g'
- | perl -pe 's/@/\\\\varphi/g'
- | perl -pe 's/!->/\\\\mapstochar\\\\relbar\\\\mathrel{\\\\mkern-12mu}\\\\mapsto/g'
- | perl -pe 's/->/\\\\mapsto/g'
- | perl -pe 's/-([a-z]+)>/\\\\xrightarrow{\\\\text{\\\\sffamily\\\\scshape \\1}}/g'
- | perl -pe 's/\unexpanded{~}>/\\\\mapstochar\\\\dashrightarrow/g'
- | perl -pe 's/:=/\\\\vDash/g'
- | perl -pe 's/\\[\\[/\\\\llbracket/g'
- | perl -pe 's/\\]\\]/\\\\rrbracket/g'
- &&
- /bin/echo -n '$\\endinput'
- }%
-}
+\makeatletter\newcommand\phiq[1]{
+ \iexec[trace,quiet,stdout=\eolang@tmpdir/\jobname/phiq.tex]{
+ /bin/echo '\detokenize{#1}'}
+ \def\hash{\eolang@mdfive
+ {\eolang@tmpdir/\jobname/phiq.tex}}%
+ \iexec[null]{cp "\eolang@tmpdir/\jobname/phiq.tex"
+ "\eolang@tmpdir/\jobname/\hash.tex"}%
+ \iexec[trace,stdout=\eolang@tmpdir/\jobname/\hash-post.tex]{
+ perl \eolang@tmpdir/eolang-phi.pl 'phiq'
+ "\eolang@tmpdir/\jobname/\hash.tex"}%
+}\makeatother
% \end{macrocode}
% \end{macro}
-% \begin{macro}{Perl}
+% \begin{macro}{eolang-sodg.pl}
% \changes{0.0.2}{2022/10/24}{The Perl file now has a fixed name, which doesn't depend on the name of the TeX job. This file may be shared among jobs, no need to make it uniquely named.}
-% Then, create a Perl script:
+% \changes{0.1.0}{2022/10/26}{There are two Perl scripts now: one for phiquation, another one for sodg.}
+% Then, we create a Perl script for |sodg| graphs processing:
% \begin{macrocode}
-\begin{VerbatimOut}{eolang.pl}
-$tex = $ARGV[0];
+\makeatletter
+\begin{VerbatimOut}{\eolang@tmpdir/eolang-sodg.pl}
+open(my $fh, '<', $ARGV[0]);
+my $tex; { local $/; $tex = <$fh>; }
+print '% This file is auto-generated', "\n";
+print '% There are ', length($tex),
+ ' chars in the input: ', $ARGV[0], "\n";
+print '% ---', "\n";
+if (index($tex, "\t") > 0) {
+ print "TABS are prohibited!";
+ exit 1;
+}
$tex =~ s/^\s+|\s+$//g;
$tex =~ s/(\\[a-zA-Z]+)\s+/\1/g;
-$tex =~ s/\r\s+/\r/g;
+$tex =~ s/\n\s+/\n/g;
$tex =~ s/\|([^\|]+)\|/\\texttt{\1}/g;
-my @cmds = split (/\r/g, $tex);
-print '\begin{phig}', "\n";
+my @cmds = split (/\n/g, $tex);
+foreach my $t (@cmds) {
+ print '% ', $t, "\n";
+}
+print '% ---', "\n";
+print '\begin{phicture}', "\n";
foreach my $c (@cmds) {
my ($head, $tail) = split (/ /, $c, 2);
my %opts = {};
@@ -380,10 +573,13 @@ foreach my $c (@cmds) {
}
print ";\n";
}
-print '\end{phig}', "\n", '\endinput';
+print '\end{phicture}', "\n", '\endinput';
\end{VerbatimOut}
-\message{^^Jeolang: File with Perl script (eolang.pl) saved^^J}%
-\iexec[trace,null]{perl -pi -e 's/(\\\\[a-zA-Z])\\s+/\\1/g' eolang.pl}
+\message{eolang: File with Perl script
+ '\eolang@tmpdir/eolang-sodg.pl' saved^^J}%
+\iexec[trace,null]{perl -pi -e 's/(\\\\[a-zA-Z])\\s+/\\1/g'
+ "\eolang@tmpdir/eolang-sodg.pl"}
+\makeatother
% \end{macrocode}
% \end{macro}
@@ -402,10 +598,10 @@ print '\end{phig}', "\n", '\endinput';
% \end{macrocode}
% \end{macro}
-% \begin{macro}{phig}
-% Then, we define internal environment |phig|:
+% \begin{macro}{phicture}
+% Then, we define internal environment |phicture|:
% \begin{macrocode}
-\newenvironment{phig}%
+\newenvironment{phicture}%
{\noindent\begin{tikzpicture}[
->,>=stealth',node distance=0,thick,
pics/parallel arrow/.style={
@@ -438,14 +634,84 @@ print '\end{phig}', "\n", '\endinput';
% Then, create a new environment |sodg|, as suggested
% \href{https://tex.stackexchange.com/questions/661056}{here}:
% \begin{macrocode}
-\NewDocumentEnvironment{sodg}{b}{%
- \catcode`\ =10 %
- \catcode`\^^M=5 %
- \iexec[trace,stdout=\jobname.tex.eolang]{
- perl eolang.pl '\detokenize{#1}'}%
-}{}
-\AddToHook{env/sodg/before}{\bgroup\obeylines\obeyspaces}
-\AddToHook{env/sodg/after}{\egroup}
+\makeatletter\newenvironment{sodg}%
+{\VerbatimEnvironment\begin{VerbatimOut}
+ {\eolang@tmpdir/\jobname/sodg.tex}}
+{\end{VerbatimOut}%
+ \def\hash{\eolang@mdfive
+ {\eolang@tmpdir/\jobname/sodg.tex}}%
+ \iexec[null]{cp "\eolang@tmpdir/\jobname/sodg.tex"
+ "\eolang@tmpdir/\jobname/\hash.tex"}%
+ \iexec[trace,stdout=\eolang@tmpdir/\jobname/\hash-post.tex]{
+ perl "\eolang@tmpdir/eolang-sodg.pl"
+ "\eolang@tmpdir/\jobname/\hash.tex"}%
+}\makeatother
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\eolang}
+% \changes{0.1.0}{2022/10/25}{New command "eolang" added to print the name of the language in both
+% normal and anonymous mode of "acmart"}
+% \begin{macrocode}
+\makeatletter\newcommand\eolang{%
+ \ifdefined\anon%
+ \anon[XYZ]{{\sffamily EO}}%
+ \else%
+ {\sffamily EO}%
+ \fi%
+}\makeatother
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\phic}
+% \changes{0.1.0}{2022/10/25}{New command "phic" prints the name of $\varphi$-calculus in both
+% normal and anonymous mode of "acmart"}
+% \begin{macrocode}
+\makeatletter\newcommand\phic{%
+ \ifdefined\anon%
+ \anon[$\alpha$-calculus]{$\varphi$-calculus}%
+ \else%
+ $\varphi$-calculus%
+ \fi%
+}\makeatother
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\phiConst}
+% \changes{0.1.0}{2022/10/26}{New command "phiConst" added to denote a link to a constant attribute.}
+% Then, we define a command to render an arrow for a constant attribute,
+% as suggested \href{https://tex.stackexchange.com/questions/663121}{here}:
+% \begin{macrocode}
+\newcommand\phiConst{%
+ \mathrel{\hspace{.15em}}\mapstochar\mathrel{\hspace{-.15em}}\mapsto}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\phiDotted}
+% \changes{0.1.0}{2022/10/27}{New command "phiDotted" added to denote a link to a special attribute.}
+% Then, we define a command to render an arrow for a special attribute,
+% as suggested \href{https://tex.stackexchange.com/questions/663176}{here}:
+% \begin{macrocode}
+\RequirePackage{trimclip}
+\RequirePackage{amsfonts}
+\makeatletter
+\newcommand{\phiDotted}{\mapstochar\mathrel{\mathpalette\phiDotted@\relax}}
+\newcommand{\phiDotted@}[2]{%
+ \begingroup
+ \settowidth{\dimen\z@}{$\m@th#1\rightarrow$}%
+ \settoheight{\dimen\tw@}{$\m@th#1\rightarrow$}%
+ \sbox\z@{%
+ \makebox[\dimen\z@][s]{%
+ \clipbox{0 0 {0.4\width} 0}%
+ {\resizebox{\dimen\z@}{\height}%
+ {$\m@th#1\dashrightarrow$}}%
+ \hss%
+ \clipbox{{0.69\width} {-0.1\height} 0 {-\height}}{$\m@th#1\rightarrow$}%
+ }%
+ }%
+ \ht\z@=\dimen\tw@ \dp\z@=\z@%
+ \box\z@%
+ \endgroup}\makeatother
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/eolang/eolang.pdf b/macros/latex/contrib/eolang/eolang.pdf
index 9d25d90981..7bc0280478 100644
--- a/macros/latex/contrib/eolang/eolang.pdf
+++ b/macros/latex/contrib/eolang/eolang.pdf
Binary files differ
diff --git a/macros/latex/contrib/fixdif/fixdif-zh-cn.pdf b/macros/latex/contrib/fixdif/fixdif-zh-cn.pdf
index 8b18290433..09902e25b1 100644
--- a/macros/latex/contrib/fixdif/fixdif-zh-cn.pdf
+++ b/macros/latex/contrib/fixdif/fixdif-zh-cn.pdf
Binary files differ
diff --git a/macros/latex/contrib/fixdif/fixdif-zh-cn.tex b/macros/latex/contrib/fixdif/fixdif-zh-cn.tex
index d99e8933a6..075b57610e 100644
--- a/macros/latex/contrib/fixdif/fixdif-zh-cn.tex
+++ b/macros/latex/contrib/fixdif/fixdif-zh-cn.tex
@@ -1,5 +1,5 @@
\documentclass[letterpaper,11pt]{article}
-\date{2022/09/14\quad Version 1.4a%
+\date{2022/10/27\quad Version 1.4b%
\thanks{源代码见~\hyperref{https://github.com/AlphaZTX/fixdif}{}{}{GitHub}
或~\hyperref{https://www.ctan.org/pkg/fixdif}{}{}{CTAN}。}
}
diff --git a/macros/latex/contrib/fixdif/fixdif.dtx b/macros/latex/contrib/fixdif/fixdif.dtx
index bc6b3bfce5..7b525cc67f 100644
--- a/macros/latex/contrib/fixdif/fixdif.dtx
+++ b/macros/latex/contrib/fixdif/fixdif.dtx
@@ -131,7 +131,7 @@ Copyright (C) 2022 by Zhang Tingxuan <alphaztx@163.com>.
%</internal>
%
%<*driver>
-\ProvidesFile{fixdif.dtx}[2022/9/14 (c) Copyright 2022 by Zhang Tingxuan]
+\ProvidesFile{fixdif.dtx}[2022/10/27 (c) Copyright 2022 by Zhang Tingxuan]
\documentclass{ltxdoc}
\usepackage{xcolor}
@@ -150,7 +150,7 @@ Copyright (C) 2022 by Zhang Tingxuan <alphaztx@163.com>.
\title{The \pkg{fixdif} Package}
\author{Zhang Tingxuan}
-\date{2022/9/14\quad Version 1.4a\thanks{\url{https://github.com/AlphaZTX/fixdif}}}
+\date{2022/10/27\quad Version 1.4b\thanks{\url{https://github.com/AlphaZTX/fixdif}}}
\usepackage{hyperref}
\hypersetup{
@@ -473,7 +473,7 @@ Copyright (C) 2022 by Zhang Tingxuan <alphaztx@163.com>.
% Check the \TeX{} format and provides the package name.
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{fixdif}[2022/9/14 Interface for defining differential operators.]
+\ProvidesPackage{fixdif}[2022/10/27 Interface for defining differential operators.]
% \end{macrocode}
%
% \subsection{Control the skip between slashes and differential operator}
@@ -522,14 +522,14 @@ Copyright (C) 2022 by Zhang Tingxuan <alphaztx@163.com>.
\DeclareOption{rm}{\@ifpackageloaded{unicode-math}
{\def\@@dif{\symrm{d}}}{\def\@@dif{\mathrm{d}}}}
\DeclareOption{normal}{\def\@@dif{d}}
-\DeclareOption{partial}{\def\fixdif@partial@bool{1}}
-\DeclareOption{nopartial}{\def\fixdif@partial@bool{0}}
+\DeclareOption{partial}{\@tempswatrue}
+\DeclareOption{nopartial}{\@tempswafalse}
\ExecuteOptions{rm,partial}
\ProcessOptions\relax
% \end{macrocode}
% Control the behavior of \cs{partial}.
% \begin{macrocode}
-\ifnum\fixdif@partial@bool=1
+\if@tempswa
\AtEndOfPackage{\letdif{\partial}{partial}}
\fi
% \end{macrocode}
diff --git a/macros/latex/contrib/fixdif/fixdif.pdf b/macros/latex/contrib/fixdif/fixdif.pdf
index e0422d40fc..55f49058db 100644
--- a/macros/latex/contrib/fixdif/fixdif.pdf
+++ b/macros/latex/contrib/fixdif/fixdif.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3backend/CHANGELOG.md b/macros/latex/contrib/l3backend/CHANGELOG.md
index 448e3d3325..3131e83a6a 100644
--- a/macros/latex/contrib/l3backend/CHANGELOG.md
+++ b/macros/latex/contrib/l3backend/CHANGELOG.md
@@ -6,6 +6,10 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2022-10-26]
+
+- Avoid setting media box is `\mag` is non-standard
+
## [2022-09-28]
### Changed
@@ -272,7 +276,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/2022-09-28...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2022-10-26...HEAD
+[2022-10-26]: https://github.com/latex3/latex3/compare/2022-09-28...2022-10-26
[2022-09-28]: https://github.com/latex3/latex3/compare/2022-08-30...2022-09-28
[2022-08-30]: https://github.com/latex3/latex3/compare/2022-08-23...2022-08-30
[2022-08-23]: https://github.com/latex3/latex3/compare/2022-08-05...2022-08-23
diff --git a/macros/latex/contrib/l3backend/README.md b/macros/latex/contrib/l3backend/README.md
index 321c754bcd..3a063ec6e4 100644
--- a/macros/latex/contrib/l3backend/README.md
+++ b/macros/latex/contrib/l3backend/README.md
@@ -1,7 +1,7 @@
LaTeX3 Backend Drivers
======================
-Release 2022-09-28
+Release 2022-10-26
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 99abfca034..6389adb5ba 100644
--- a/macros/latex/contrib/l3backend/l3backend-basics.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
@@ -70,27 +70,27 @@
% \begin{macrocode}
\ProvidesExplFile
%<*dvipdfmx>
- {l3backend-dvipdfmx.def}{2022-09-28}{}
+ {l3backend-dvipdfmx.def}{2022-10-26}{}
{L3 backend support: dvipdfmx}
%</dvipdfmx>
%<*dvips>
- {l3backend-dvips.def}{2022-09-28}{}
+ {l3backend-dvips.def}{2022-10-26}{}
{L3 backend support: dvips}
%</dvips>
%<*dvisvgm>
- {l3backend-dvisvgm.def}{2022-09-28}{}
+ {l3backend-dvisvgm.def}{2022-10-26}{}
{L3 backend support: dvisvgm}
%</dvisvgm>
%<*luatex>
- {l3backend-luatex.def}{2022-09-28}{}
+ {l3backend-luatex.def}{2022-10-26}{}
{L3 backend support: PDF output (LuaTeX)}
%</luatex>
%<*pdftex>
- {l3backend-pdftex.def}{2022-09-28}{}
+ {l3backend-pdftex.def}{2022-10-26}{}
{L3 backend support: PDF output (pdfTeX)}
%</pdftex>
%<*xetex>
- {l3backend-xetex.def}{2022-09-28}{}
+ {l3backend-xetex.def}{2022-10-26}{}
{L3 backend support: XeTeX}
%</xetex>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3backend/l3backend-box.dtx b/macros/latex/contrib/l3backend/l3backend-box.dtx
index b7748ef640..530094ce2f 100644
--- a/macros/latex/contrib/l3backend/l3backend-box.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-code.pdf b/macros/latex/contrib/l3backend/l3backend-code.pdf
index 8ccb437311..1c4d8e1c6e 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 8f8ca477d1..2d2ccb7c9f 100644
--- a/macros/latex/contrib/l3backend/l3backend-color.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-color.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-draw.dtx b/macros/latex/contrib/l3backend/l3backend-draw.dtx
index 66fc78975c..386beec812 100644
--- a/macros/latex/contrib/l3backend/l3backend-draw.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-draw.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-graphics.dtx b/macros/latex/contrib/l3backend/l3backend-graphics.dtx
index 424c274044..f75cdc377a 100644
--- a/macros/latex/contrib/l3backend/l3backend-graphics.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-graphics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-header.dtx b/macros/latex/contrib/l3backend/l3backend-header.dtx
index 04ef8f63a6..8115fe1ae0 100644
--- a/macros/latex/contrib/l3backend/l3backend-header.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-header.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-opacity.dtx b/macros/latex/contrib/l3backend/l3backend-opacity.dtx
index d9726f5d9b..d5adeef938 100644
--- a/macros/latex/contrib/l3backend/l3backend-opacity.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-opacity.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-pdf.dtx b/macros/latex/contrib/l3backend/l3backend-pdf.dtx
index ed2339cb00..ebe374b28e 100644
--- a/macros/latex/contrib/l3backend/l3backend-pdf.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
@@ -1710,10 +1710,8 @@
% \end{macrocode}
%
% \begin{macro}{\@@_backend_pagesize_set:nn}
-% \begin{macro}[EXP]{\@@_backend_pagesize_set:n}
% This is done as a backend literal, so we deal with it using the shipout
-% hook. The inclusion of \cs{tex_mag:D} here is essentially to work with
-% (u)p\LaTeX{}, where this is used to adjust apparent font size.
+% hook.
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_pagesize_set:nn #1#2
{
@@ -1723,22 +1721,17 @@
{
%<*dvipdfmx>
pdf:pagesize ~
- width ~ \@@_backend_pagesize_set:n {#1} ~
- height ~ \@@_backend_pagesize_set:n {#2}
+ width ~ \dim_eval:n {#1} ~
+ height ~ \dim_eval:n {#2}
%</dvipdfmx>
%<*dvips>
- papersize =
- \@@_backend_pagesize_set:n {#1} ,
- \@@_backend_pagesize_set:n {#2}
+ papersize = \dim_eval:n {#1} , \dim_eval:n {#2}
%</dvips>
}
}
}
-\cs_new:Npn \@@_backend_pagesize_set:n #1
- { \fp_to_dim:n { \tex_mag:D / 1000 * (#1) } }
% \end{macrocode}
% \end{macro}
-% \end{macro}
%
% \begin{macrocode}
%</dvipdfmx|dvips>
diff --git a/macros/latex/contrib/l3kernel/CHANGELOG.md b/macros/latex/contrib/l3kernel/CHANGELOG.md
index 33b9759edd..9ee6d0516b 100644
--- a/macros/latex/contrib/l3kernel/CHANGELOG.md
+++ b/macros/latex/contrib/l3kernel/CHANGELOG.md
@@ -7,6 +7,19 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2022-10-26]
+
+### Changed
+- Usage of `\exp_not:n`/`\exp_not:N` in `\peek_analysis_map_inline:n` output
+
+### Fixed
+- `\peek_analysis_map_inline:n` support for macro parameter characters (issue
+ [\#1109](https://github.com/latex3/latex3/issues/1109)), for many expandable
+ tokens (issue [\#1110](https://github.com/latex3/latex3/issues/1110)), and an
+ esoteric case (issue [\#1113](https://github.com/latex3/latex3/issues/1113))
+- Creation of a message with some engines (issue
+ [\#1139](https://github.com/latex3/latex3/issues/1139))
+
## [2022-09-28]
### Added
@@ -1208,7 +1221,8 @@ this project uses date-based 'snapshot' version identifiers.
- Step functions have been added for dim variables,
e.g. `\dim_step_inline:nnnn`
-[Unreleased]: https://github.com/latex3/latex3/compare/2022-09-28...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2022-10-26...HEAD
+[2022-10-26]: https://github.com/latex3/latex3/compare/2022-09-28...2022-10-26
[2022-09-28]: https://github.com/latex3/latex3/compare/2022-08-30...2022-09-28
[2022-08-30]: https://github.com/latex3/latex3/compare/2022-08-23...2022-08-30
[2022-08-23]: https://github.com/latex3/latex3/compare/2022-08-05...2022-08-23
diff --git a/macros/latex/contrib/l3kernel/README.md b/macros/latex/contrib/l3kernel/README.md
index 3553676388..bb0a574831 100644
--- a/macros/latex/contrib/l3kernel/README.md
+++ b/macros/latex/contrib/l3kernel/README.md
@@ -1,7 +1,7 @@
LaTeX3 Programming Conventions
==============================
-Release 2022-09-28
+Release 2022-10-26
Overview
--------
diff --git a/macros/latex/contrib/l3kernel/expl3.dtx b/macros/latex/contrib/l3kernel/expl3.dtx
index b38c98239a..defefaa3e2 100644
--- a/macros/latex/contrib/l3kernel/expl3.dtx
+++ b/macros/latex/contrib/l3kernel/expl3.dtx
@@ -24,7 +24,7 @@
%
%<*driver|generic|package|2ekernel>
%</driver|generic|package|2ekernel>
-\def\ExplFileDate{2022-09-28}%
+\def\ExplFileDate{2022-10-26}%
%<*driver>
\documentclass[full]{l3doc}
\usepackage{graphicx}
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/expl3.pdf b/macros/latex/contrib/l3kernel/expl3.pdf
index df634990ec..38cd427a5f 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 138489c04d..346b670e7f 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 443c656a7b..54cc9a46cf 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 2022-09-28}
+\date{Released 2022-10-26}
\pagenumbering{roman}
\maketitle
diff --git a/macros/latex/contrib/l3kernel/l3basics.dtx b/macros/latex/contrib/l3kernel/l3basics.dtx
index b971bdcc60..bf1b580d8f 100644
--- a/macros/latex/contrib/l3kernel/l3basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3bootstrap.dtx b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
index 2c7ee330b8..cc920a7ec9 100644
--- a/macros/latex/contrib/l3kernel/l3bootstrap.dtx
+++ b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
@@ -335,12 +335,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\protected\def\noexpand\ExplSyntaxOff{}%
\catcode 9 = \the\catcode 9\relax
\catcode 32 = \the\catcode 32\relax
- \catcode 34 = \the\catcode 34\relax
- \catcode 38 = \the\catcode 38\relax
\catcode 58 = \the\catcode 58\relax
- \catcode 94 = \the\catcode 94\relax
\catcode 95 = \the\catcode 95\relax
- \catcode 124 = \the\catcode 124\relax
\catcode 126 = \the\catcode 126\relax
\endlinechar = \the\endlinechar\relax
\chardef\csname\detokenize{l_@@_expl_bool}\endcsname = 0\relax
@@ -350,14 +346,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
%
% The code environment is now set up.
% \begin{macrocode}
-\catcode 9 = 9\relax
-\catcode 32 = 9\relax
-\catcode 34 = 12\relax
-\catcode 38 = 4\relax
-\catcode 58 = 11\relax
-\catcode 94 = 7\relax
-\catcode 95 = 11\relax
-\catcode 124 = 12\relax
+\catcode 9 = 9\relax
+\catcode 32 = 9\relax
+\catcode 58 = 11\relax
+\catcode 95 = 11\relax
\catcode 126 = 10\relax
\endlinechar = 32\relax
% \end{macrocode}
@@ -383,14 +375,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\cs_set_protected:Npx \ExplSyntaxOff
{
- \char_set_catcode:nn { 9 } { \char_value_catcode:n { 9 } }
- \char_set_catcode:nn { 32 } { \char_value_catcode:n { 32 } }
- \char_set_catcode:nn { 34 } { \char_value_catcode:n { 34 } }
- \char_set_catcode:nn { 38 } { \char_value_catcode:n { 38 } }
- \char_set_catcode:nn { 58 } { \char_value_catcode:n { 58 } }
- \char_set_catcode:nn { 94 } { \char_value_catcode:n { 94 } }
- \char_set_catcode:nn { 95 } { \char_value_catcode:n { 95 } }
- \char_set_catcode:nn { 124 } { \char_value_catcode:n { 124 } }
+ \char_set_catcode:nn { 9 } { \char_value_catcode:n { 9 } }
+ \char_set_catcode:nn { 32 } { \char_value_catcode:n { 32 } }
+ \char_set_catcode:nn { 58 } { \char_value_catcode:n { 58 } }
+ \char_set_catcode:nn { 95 } { \char_value_catcode:n { 95 } }
\char_set_catcode:nn { 126 } { \char_value_catcode:n { 126 } }
\tex_endlinechar:D =
\tex_the:D \tex_endlinechar:D \scan_stop:
@@ -398,14 +386,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_set_protected:Npn \ExplSyntaxOff { }
}
}
- \char_set_catcode_ignore:n { 9 } % tab
- \char_set_catcode_ignore:n { 32 } % space
- \char_set_catcode_other:n { 34 } % double quote
- \char_set_catcode_alignment:n { 38 } % ampersand
- \char_set_catcode_letter:n { 58 } % colon
- \char_set_catcode_math_superscript:n { 94 } % circumflex
- \char_set_catcode_letter:n { 95 } % underscore
- \char_set_catcode_other:n { 124 } % pipe
+ \char_set_catcode_ignore:n { 9 } % tab
+ \char_set_catcode_ignore:n { 32 } % space
+ \char_set_catcode_letter:n { 58 } % colon
+ \char_set_catcode_letter:n { 95 } % underscore
\char_set_catcode_space:n { 126 } % tilde
\tex_endlinechar:D = 32 \scan_stop:
\bool_set_true:N \l_@@_expl_bool
diff --git a/macros/latex/contrib/l3kernel/l3box.dtx b/macros/latex/contrib/l3kernel/l3box.dtx
index cc21049baf..0226abf4b1 100644
--- a/macros/latex/contrib/l3kernel/l3box.dtx
+++ b/macros/latex/contrib/l3kernel/l3box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3candidates.dtx b/macros/latex/contrib/l3kernel/l3candidates.dtx
index 1bcbfc4ece..81afd86ad6 100644
--- a/macros/latex/contrib/l3kernel/l3candidates.dtx
+++ b/macros/latex/contrib/l3kernel/l3candidates.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3cctab.dtx b/macros/latex/contrib/l3kernel/l3cctab.dtx
index f7c26612b8..3c047ab7f0 100644
--- a/macros/latex/contrib/l3kernel/l3cctab.dtx
+++ b/macros/latex/contrib/l3kernel/l3cctab.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3clist.dtx b/macros/latex/contrib/l3kernel/l3clist.dtx
index 643e98223e..84c1a1a795 100644
--- a/macros/latex/contrib/l3kernel/l3clist.dtx
+++ b/macros/latex/contrib/l3kernel/l3clist.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3coffins.dtx b/macros/latex/contrib/l3kernel/l3coffins.dtx
index 1552a03c34..cd22444a32 100644
--- a/macros/latex/contrib/l3kernel/l3coffins.dtx
+++ b/macros/latex/contrib/l3kernel/l3coffins.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3color.dtx b/macros/latex/contrib/l3kernel/l3color.dtx
index a40f5fd381..027737ea6f 100644
--- a/macros/latex/contrib/l3kernel/l3color.dtx
+++ b/macros/latex/contrib/l3kernel/l3color.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3debug.dtx b/macros/latex/contrib/l3kernel/l3debug.dtx
index 767041cbb1..161e2d1483 100644
--- a/macros/latex/contrib/l3kernel/l3debug.dtx
+++ b/macros/latex/contrib/l3kernel/l3debug.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3deprecation.dtx b/macros/latex/contrib/l3kernel/l3deprecation.dtx
index 02f353516f..c0f0feeffd 100644
--- a/macros/latex/contrib/l3kernel/l3deprecation.dtx
+++ b/macros/latex/contrib/l3kernel/l3deprecation.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3doc.dtx b/macros/latex/contrib/l3kernel/l3doc.dtx
index f3182d54fb..823423f013 100644
--- a/macros/latex/contrib/l3kernel/l3doc.dtx
+++ b/macros/latex/contrib/l3kernel/l3doc.dtx
@@ -85,7 +85,7 @@ and all files in that bundle must be distributed together.
% require you to do updates, if the class changes.}}
%
% \author{\Team}
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
% \maketitle
% \tableofcontents
%
diff --git a/macros/latex/contrib/l3kernel/l3doc.pdf b/macros/latex/contrib/l3kernel/l3doc.pdf
index d2cfc22fed..87982a35fc 100644
--- a/macros/latex/contrib/l3kernel/l3doc.pdf
+++ b/macros/latex/contrib/l3kernel/l3doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.dtx b/macros/latex/contrib/l3kernel/l3docstrip.dtx
index 4d918812bb..a73d717a89 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.dtx
+++ b/macros/latex/contrib/l3kernel/l3docstrip.dtx
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.pdf b/macros/latex/contrib/l3kernel/l3docstrip.pdf
index 6c75d44a1a..276706f931 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 6543b82274..163c4d97d6 100644
--- a/macros/latex/contrib/l3kernel/l3expan.dtx
+++ b/macros/latex/contrib/l3kernel/l3expan.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3file.dtx b/macros/latex/contrib/l3kernel/l3file.dtx
index 5927ee425d..bf15b1f7bc 100644
--- a/macros/latex/contrib/l3kernel/l3file.dtx
+++ b/macros/latex/contrib/l3kernel/l3file.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3flag.dtx b/macros/latex/contrib/l3kernel/l3flag.dtx
index c22d20e881..5d34f19004 100644
--- a/macros/latex/contrib/l3kernel/l3flag.dtx
+++ b/macros/latex/contrib/l3kernel/l3flag.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-assign.dtx b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
index 90ab28c215..943dbf96f9 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 2022-09-28}
+% \date{Released 2022-10-26}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-aux.dtx b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
index e5d18a8d85..744911e3d4 100644
--- a/macros/latex/contrib/l3kernel/l3fp-aux.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-basics.dtx b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
index be408dda0a..dd3816c244 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 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-convert.dtx b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
index 4ec2f5ec5e..1b11113672 100644
--- a/macros/latex/contrib/l3kernel/l3fp-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-expo.dtx b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
index 920993a13a..9340e74ce4 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 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-extended.dtx b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
index fef1d48c59..611547c830 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 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-logic.dtx b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
index abd24f7219..938aa9a075 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 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-parse.dtx b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
index 75e61a6f2f..a8fd37a0c8 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 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-random.dtx b/macros/latex/contrib/l3kernel/l3fp-random.dtx
index 5f6ebaa316..cd42aa5c44 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 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-round.dtx b/macros/latex/contrib/l3kernel/l3fp-round.dtx
index cb76873a8a..ed1c40f45b 100644
--- a/macros/latex/contrib/l3kernel/l3fp-round.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-round.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-traps.dtx b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
index 2845a9801f..757eb42005 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 2022-09-28}
+% \date{Released 2022-10-26}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-trig.dtx b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
index ce7c423ca8..59060899fd 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 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp.dtx b/macros/latex/contrib/l3kernel/l3fp.dtx
index bce8ddb14b..10b8c6b102 100644
--- a/macros/latex/contrib/l3kernel/l3fp.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fparray.dtx b/macros/latex/contrib/l3kernel/l3fparray.dtx
index ee47549dac..b5cddb7f83 100644
--- a/macros/latex/contrib/l3kernel/l3fparray.dtx
+++ b/macros/latex/contrib/l3kernel/l3fparray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3int.dtx b/macros/latex/contrib/l3kernel/l3int.dtx
index 359b0671b5..47fb9606da 100644
--- a/macros/latex/contrib/l3kernel/l3int.dtx
+++ b/macros/latex/contrib/l3kernel/l3int.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3intarray.dtx b/macros/latex/contrib/l3kernel/l3intarray.dtx
index ae476fb771..69abc52616 100644
--- a/macros/latex/contrib/l3kernel/l3intarray.dtx
+++ b/macros/latex/contrib/l3kernel/l3intarray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
index d7c0879fc2..4de59cf073 100644
--- a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
+++ b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3keys.dtx b/macros/latex/contrib/l3kernel/l3keys.dtx
index f7ed4e7fbd..d79fe7264a 100644
--- a/macros/latex/contrib/l3kernel/l3keys.dtx
+++ b/macros/latex/contrib/l3kernel/l3keys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3legacy.dtx b/macros/latex/contrib/l3kernel/l3legacy.dtx
index 8cf6620f80..66bc7274cf 100644
--- a/macros/latex/contrib/l3kernel/l3legacy.dtx
+++ b/macros/latex/contrib/l3kernel/l3legacy.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3luatex.dtx b/macros/latex/contrib/l3kernel/l3luatex.dtx
index 175fa42d86..7539ef2647 100644
--- a/macros/latex/contrib/l3kernel/l3luatex.dtx
+++ b/macros/latex/contrib/l3kernel/l3luatex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3msg.dtx b/macros/latex/contrib/l3kernel/l3msg.dtx
index b369bb560d..7182ebb5e9 100644
--- a/macros/latex/contrib/l3kernel/l3msg.dtx
+++ b/macros/latex/contrib/l3kernel/l3msg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
@@ -1761,6 +1761,12 @@
LaTeX~has~been~asked~to~replace~an~empty~pattern~by~'#1':~that~
would~lead~to~an~infinite~loop!
}
+\cs_if_exist:NF \tex_elapsedtime:D
+ {
+ \msg_new:nnnn { kernel } { no-elapsed-time }
+ { No~clock~detected~for~#1. }
+ { The~current~engine~provides~no~way~to~access~the~system~time. }
+ }
\msg_new:nnnn { kernel } { non-base-function }
{ Function~'#1'~is~not~a~base~function }
{
diff --git a/macros/latex/contrib/l3kernel/l3names.dtx b/macros/latex/contrib/l3kernel/l3names.dtx
index f5ab42eade..dbda606578 100644
--- a/macros/latex/contrib/l3kernel/l3names.dtx
+++ b/macros/latex/contrib/l3kernel/l3names.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3news.pdf b/macros/latex/contrib/l3kernel/l3news.pdf
index 9bb99485aa..f66f0802d2 100644
--- a/macros/latex/contrib/l3kernel/l3news.pdf
+++ b/macros/latex/contrib/l3kernel/l3news.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news01.pdf b/macros/latex/contrib/l3kernel/l3news01.pdf
index 4ee70dc6ee..aff17ed51c 100644
--- a/macros/latex/contrib/l3kernel/l3news01.pdf
+++ b/macros/latex/contrib/l3kernel/l3news01.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news02.pdf b/macros/latex/contrib/l3kernel/l3news02.pdf
index 2a0fa6436a..de14d7cad8 100644
--- a/macros/latex/contrib/l3kernel/l3news02.pdf
+++ b/macros/latex/contrib/l3kernel/l3news02.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news03.pdf b/macros/latex/contrib/l3kernel/l3news03.pdf
index 08404d7013..c13c9d8afe 100644
--- a/macros/latex/contrib/l3kernel/l3news03.pdf
+++ b/macros/latex/contrib/l3kernel/l3news03.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news04.pdf b/macros/latex/contrib/l3kernel/l3news04.pdf
index 4b2ae23422..9ace65ebc9 100644
--- a/macros/latex/contrib/l3kernel/l3news04.pdf
+++ b/macros/latex/contrib/l3kernel/l3news04.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news05.pdf b/macros/latex/contrib/l3kernel/l3news05.pdf
index e8fefe11ee..eaff40a1f7 100644
--- a/macros/latex/contrib/l3kernel/l3news05.pdf
+++ b/macros/latex/contrib/l3kernel/l3news05.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news06.pdf b/macros/latex/contrib/l3kernel/l3news06.pdf
index c0c4a9506f..56df1d9052 100644
--- a/macros/latex/contrib/l3kernel/l3news06.pdf
+++ b/macros/latex/contrib/l3kernel/l3news06.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news07.pdf b/macros/latex/contrib/l3kernel/l3news07.pdf
index 7dd8191920..0a0b2aaf96 100644
--- a/macros/latex/contrib/l3kernel/l3news07.pdf
+++ b/macros/latex/contrib/l3kernel/l3news07.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news08.pdf b/macros/latex/contrib/l3kernel/l3news08.pdf
index 4181681985..202fa45077 100644
--- a/macros/latex/contrib/l3kernel/l3news08.pdf
+++ b/macros/latex/contrib/l3kernel/l3news08.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news09.pdf b/macros/latex/contrib/l3kernel/l3news09.pdf
index 0f8e475609..fd3b1e0136 100644
--- a/macros/latex/contrib/l3kernel/l3news09.pdf
+++ b/macros/latex/contrib/l3kernel/l3news09.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news10.pdf b/macros/latex/contrib/l3kernel/l3news10.pdf
index a04326f21e..b5a449ebef 100644
--- a/macros/latex/contrib/l3kernel/l3news10.pdf
+++ b/macros/latex/contrib/l3kernel/l3news10.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news11.pdf b/macros/latex/contrib/l3kernel/l3news11.pdf
index 17e1d46497..b7cec21f17 100644
--- a/macros/latex/contrib/l3kernel/l3news11.pdf
+++ b/macros/latex/contrib/l3kernel/l3news11.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news12.pdf b/macros/latex/contrib/l3kernel/l3news12.pdf
index 5ea38f32af..a3bac623b0 100644
--- a/macros/latex/contrib/l3kernel/l3news12.pdf
+++ b/macros/latex/contrib/l3kernel/l3news12.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3pdf.dtx b/macros/latex/contrib/l3kernel/l3pdf.dtx
index 091ece8b43..b6132f51f2 100644
--- a/macros/latex/contrib/l3kernel/l3pdf.dtx
+++ b/macros/latex/contrib/l3kernel/l3pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
@@ -508,6 +508,7 @@
{ \cs_if_exist_p:N \stockwidth }
{ \cs_if_exist_p:N \IfDocumentMetadataTF }
{ \IfDocumentMetadataTF { \c_true_bool } { \c_false_bool } }
+ { \int_compare_p:nNn \tex_mag:D = { 1000 } }
}
{
\bool_lazy_and:nnTF
@@ -538,7 +539,7 @@
%
% \subsection{Deprecated functions}
%
-% \begin{variable}{\g_@@_obejct_prop}
+% \begin{variable}{\g_@@_object_prop}
% For tracking objects.
% \begin{macrocode}
\prop_new:N \g_@@_object_prop
diff --git a/macros/latex/contrib/l3kernel/l3prefixes.csv b/macros/latex/contrib/l3kernel/l3prefixes.csv
index 9b4a1d638e..31d77835d4 100644
--- a/macros/latex/contrib/l3kernel/l3prefixes.csv
+++ b/macros/latex/contrib/l3kernel/l3prefixes.csv
@@ -183,6 +183,7 @@ pgf,pgf,The PGF/TikZ Team,https://pgf-tikz.github.io,https://github.com/pgf-tikz
pgfmxfp,pgfmath-xfp,Jonathan P. Spratte,https://github.com/Skillmon/ltx_pgfmath-xfp,https://github.com/Skillmon/ltx_pgfmath-xfp,https://github.com/Skillmon/ltx_pgfmath-xfp/issues,2021-05-20,2021-05-20,
phone,phonenumbers,Keno Wehr,https://ctan.org/pkg/phonenumbers,https://github.com/wehro/phonenumbers,https://github.com/wehro/phonenumbers/issues,2021-08-23,2021-08-23,
pi,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12,
+piton,piton,François Pantigny,,,,29/09/2022,29/09/2022,
pkgploader,pkgploader,Michiel Helvensteijn,,,,2014-02-05,2014-02-05,
platex,platex,Japanese TeX Development Community,https://github.com/texjporg/platex,https://github.com/texjporg/platex.git,https://github.com/texjporg/platex/issues,2020-09-30,2020-09-30,
polyglossia,polyglossia,Arthur Reutenauer,https://www.polyglossia.org/,https://github.com/reutenauer/polyglossia,https://github.com/reutenauer/polyglossia/issues,2019-09-03,,
diff --git a/macros/latex/contrib/l3kernel/l3prefixes.pdf b/macros/latex/contrib/l3kernel/l3prefixes.pdf
index 40c5daf8f9..112961635f 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 b1e789bba9..625cd9449f 100644
--- a/macros/latex/contrib/l3kernel/l3prg.dtx
+++ b/macros/latex/contrib/l3kernel/l3prg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3prop.dtx b/macros/latex/contrib/l3kernel/l3prop.dtx
index 6c97ea7ea7..3d4a5f65ac 100644
--- a/macros/latex/contrib/l3kernel/l3prop.dtx
+++ b/macros/latex/contrib/l3kernel/l3prop.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3quark.dtx b/macros/latex/contrib/l3kernel/l3quark.dtx
index a2d23c521b..1b7574b411 100644
--- a/macros/latex/contrib/l3kernel/l3quark.dtx
+++ b/macros/latex/contrib/l3kernel/l3quark.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3regex.dtx b/macros/latex/contrib/l3kernel/l3regex.dtx
index c1f668f21b..9d4e219293 100644
--- a/macros/latex/contrib/l3kernel/l3regex.dtx
+++ b/macros/latex/contrib/l3kernel/l3regex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
@@ -198,7 +198,7 @@
%
% \subsection{Characters classes}
%
-% Character types.
+% Character properties.
% \begin{l3regex-syntax}
% \item[.] A single period matches any token.
% \item[\\d] Any decimal digit.
@@ -413,17 +413,19 @@
% value $1$.
% \end{l3regex-syntax}
%
-% The option |(?i)| makes the match case insensitive (identifying
-% \texttt{A}--\texttt{Z} with \texttt{a}--\texttt{z}; no Unicode support
-% yet). This applies until the end of the group in which it appears, and
+% The option |(?i)| makes the match case insensitive (treating
+% \texttt{A}--\texttt{Z} and \texttt{a}--\texttt{z} as equivalent, with
+% no support yet for Unicode case changing). This
+% applies until the end of the group in which it appears, and
% can be reverted using |(?-i)|. For instance, in
% \verb"(?i)(a(?-i)b|c)d", the letters |a| and |d| are affected by the
% |i| option. Characters within ranges and classes are affected
-% individually: |(?i)[Y-\\]| is equivalent to |[YZ\[\\yz]|, and
-% |(?i)[^aeiou]| matches any character which is not a vowel. Neither
-% character properties, nor |\c{...}| nor |\u{...}| are affected by the
-% |i| option.
-% ^^A \]
+% individually: |(?i)[\?-B]| is equivalent to |[\?@ABab]|
+% (and differs from the much larger class |[\?-b]|), and
+% |(?i)[^aeiou]| matches any character which is not a vowel.
+% The |i|~option has no effect on |\c{...}|, on |\u{...}|, on character
+% properties, or on character classes, for instance it has no effect at
+% all in |(?i)\u{l_foo_tl}\d\d[[:lower:]]|.
%
% \section{Syntax of the replacement text}
%
diff --git a/macros/latex/contrib/l3kernel/l3seq.dtx b/macros/latex/contrib/l3kernel/l3seq.dtx
index d8d696d104..178034caba 100644
--- a/macros/latex/contrib/l3kernel/l3seq.dtx
+++ b/macros/latex/contrib/l3kernel/l3seq.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3skip.dtx b/macros/latex/contrib/l3kernel/l3skip.dtx
index 08e5504b2f..2c52fd9ba9 100644
--- a/macros/latex/contrib/l3kernel/l3skip.dtx
+++ b/macros/latex/contrib/l3kernel/l3skip.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3sort.dtx b/macros/latex/contrib/l3kernel/l3sort.dtx
index 75574e3251..dec31092cb 100644
--- a/macros/latex/contrib/l3kernel/l3sort.dtx
+++ b/macros/latex/contrib/l3kernel/l3sort.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str-convert.dtx b/macros/latex/contrib/l3kernel/l3str-convert.dtx
index f2d3793461..24b1300a53 100644
--- a/macros/latex/contrib/l3kernel/l3str-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3str-convert.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str.dtx b/macros/latex/contrib/l3kernel/l3str.dtx
index ea62c4946d..85482a7d0b 100644
--- a/macros/latex/contrib/l3kernel/l3str.dtx
+++ b/macros/latex/contrib/l3kernel/l3str.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3styleguide.pdf b/macros/latex/contrib/l3kernel/l3styleguide.pdf
index 6a572e6ba7..c9fba1756f 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 bba7fc00b9..c59c54db03 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 2022-09-28}
+\date{Released 2022-10-26}
\begin{document}
diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
index 3df33c43d9..f4b32d45c6 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 ce7d578d7b..7fee61e9ec 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 2022-09-28}
+\date{Released 2022-10-26}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3sys.dtx b/macros/latex/contrib/l3kernel/l3sys.dtx
index 28e4f0b83c..1ee1bce8ff 100644
--- a/macros/latex/contrib/l3kernel/l3sys.dtx
+++ b/macros/latex/contrib/l3kernel/l3sys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
@@ -927,9 +927,6 @@ end
{ \int_value:w \tex_elapsedtime:D }
}
{
- \msg_new:nnnn { kernel } { no-elapsed-time }
- { No~clock~detected~for~#1. }
- { The~current~engine~provides~no~way~to~access~the~system~time. }
\cs_new:Npn \sys_timer:
{
\int_value:w
diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.pdf b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
index 26aadf38b0..39c69d8b43 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 8fcf1fd489..38f6f3e9ad 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 2022-09-28}
+\date{Released 2022-10-26}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3text-case.dtx b/macros/latex/contrib/l3kernel/l3text-case.dtx
index cad0ed2954..7e218e709b 100644
--- a/macros/latex/contrib/l3kernel/l3text-case.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-case.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3text-map.dtx b/macros/latex/contrib/l3kernel/l3text-map.dtx
index 3373f7508c..f98ce2d3f3 100644
--- a/macros/latex/contrib/l3kernel/l3text-map.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-map.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3text-purify.dtx b/macros/latex/contrib/l3kernel/l3text-purify.dtx
index 7caaeb0b5e..8ea14baa55 100644
--- a/macros/latex/contrib/l3kernel/l3text-purify.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-purify.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3text.dtx b/macros/latex/contrib/l3kernel/l3text.dtx
index d4b841adfe..37a21b19a0 100644
--- a/macros/latex/contrib/l3kernel/l3text.dtx
+++ b/macros/latex/contrib/l3kernel/l3text.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
index 612ab5e724..9679a13c5e 100644
--- a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
@@ -169,6 +169,13 @@
% \cs{exp_not:n} \Arg{character} \cs{s_@@} \meta{hex catcode}
% \meta{char code} \cs{s_@@}.
% \end{itemize}
+% In contrast, for \cs{peek_analysis_map_inline:n} we must allow for an
+% input stream containing \tn{outer} macros, so that wrapping all
+% control sequences in \cs{exp_not:n} is unsafe. Instead, we write the
+% more elaborate \cs{__kernel_exp_not:w} \cs{exp_after:wN} |{|
+% \cs{exp_not:N} |\cs| |}|. (On the other hand we make a better effort
+% by avoiding \cs{exp_not:n} for characters other than active and macro
+% parameters.)
%
% ^^A todo: ask LuaTeX list for an \ifx\undefined <active char>
% ^^A which does not add the <active char> in memory.
@@ -219,9 +226,10 @@
% A token list containing the character number~$32$ (space) with all
% possible category codes except $1$ and $2$ (begin-group and
% end-group). Why $32$? Because some \LuaTeX{} versions only allow
-% creation of catcode~$10$ (space) tokens with this character code,
-% and because even in other engines it is much easier to produce since
-% \cs{char_generate:nn} refuses to produce spaces.
+% creation of catcode~$10$ (space) tokens with this character code, so
+% that we decided to make \cs{char_generate:nn} refuse to create such
+% weird spaces as well. We do not include the macro parameter case
+% (catcode~$6$) because it cannot be used as a macro delimiter.
% \begin{macrocode}
\group_begin:
\char_set_active_eq:NN \ \scan_stop:
@@ -229,7 +237,6 @@
{
\char_generate:nn { 32 } { 3 } 3
\char_generate:nn { 32 } { 4 } 4
- # \char_generate:nn { 32 } { 6 } 6
\char_generate:nn { 32 } { 7 } 7
\char_generate:nn { 32 } { 8 } 8
\c_space_tl \token_to_str:N A
@@ -809,7 +816,8 @@
\scan_stop:
\exp_after:wN \use_none:n \token_to_str:N #3 \prg_do_nothing:
\scan_stop:
- \exp_after:wN \@@_analysis_b_char:Nww
+ \exp_after:wN \@@_analysis_b_char:Nn
+ \exp_after:wN \@@_analysis_b_char_aux:nww
\else:
\exp_after:wN \@@_analysis_b_cs:Nww
\fi:
@@ -819,35 +827,43 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}[EXP]{\@@_analysis_b_char:Nww}
+% \begin{macro}[EXP]{\@@_analysis_b_char:Nn, \@@_analysis_b_char_aux:nww}
+% This function is called here with arguments
+% \cs{@@_analysis_b_char_aux:nww} and a normal character, while in the
+% peek analysis code it is called with \cs{use_none:n} and possibly a
+% space character, which is why the function has signature |Nn|.
% If the normal token we grab is a character, leave
% \meta{catcode} \meta{charcode} followed by \cs{s_@@}
% in the input stream, and call \cs{@@_analysis_b_normals:ww}
% with its first argument decremented.
% \begin{macrocode}
-\cs_new:Npx \@@_analysis_b_char:Nww #1
+\cs_new:Npx \@@_analysis_b_char:Nn #1#2
{
- \exp_not:N \if_meaning:w #1 \exp_not:N \tex_undefined:D
+ \exp_not:N \if_meaning:w #2 \exp_not:N \tex_undefined:D
\token_to_str:N D \exp_not:N \else:
- \exp_not:N \if_catcode:w #1 \c_catcode_other_token
+ \exp_not:N \if_catcode:w #2 \c_catcode_other_token
\token_to_str:N C \exp_not:N \else:
- \exp_not:N \if_catcode:w #1 \c_catcode_letter_token
+ \exp_not:N \if_catcode:w #2 \c_catcode_letter_token
\token_to_str:N B \exp_not:N \else:
- \exp_not:N \if_catcode:w #1 \c_math_toggle_token 3
+ \exp_not:N \if_catcode:w #2 \c_math_toggle_token 3
\exp_not:N \else:
- \exp_not:N \if_catcode:w #1 \c_alignment_token 4
+ \exp_not:N \if_catcode:w #2 \c_alignment_token 4
\exp_not:N \else:
- \exp_not:N \if_catcode:w #1 \c_math_superscript_token 7
+ \exp_not:N \if_catcode:w #2 \c_math_superscript_token 7
\exp_not:N \else:
- \exp_not:N \if_catcode:w #1 \c_math_subscript_token 8
+ \exp_not:N \if_catcode:w #2 \c_math_subscript_token 8
\exp_not:N \else:
- \exp_not:N \if_catcode:w #1 \c_space_token
+ \exp_not:N \if_catcode:w #2 \c_space_token
\token_to_str:N A \exp_not:N \else:
6
\exp_not:n { \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: }
- \exp_not:N \int_value:w `#1 \s_@@
- \exp_not:N \exp_after:wN \exp_not:N \@@_analysis_b_normals:ww
- \exp_not:N \int_value:w \exp_not:N \int_eval:w - 1 +
+ #1 {#2}
+ }
+\cs_new:Npn \@@_analysis_b_char_aux:nww #1
+ {
+ \int_value:w `#1 \s_@@
+ \exp_after:wN \@@_analysis_b_normals:ww
+ \int_value:w \int_eval:w - 1 +
}
% \end{macrocode}
% \end{macro}
@@ -1170,10 +1186,12 @@
% {
% \peek_analysis_map_inline:n,
% \@@_peek_analysis_loop:NNn, \@@_peek_analysis_test:,
-% \@@_peek_analysis_normal:N, \@@_peek_analysis_cs:,
-% \@@_peek_analysis_char:N, \@@_peek_analysis_char:nN,
+% \@@_peek_analysis_exp:N, \@@_peek_analysis_exp_active:N,
+% \@@_peek_analysis_nonexp:N, \@@_peek_analysis_cs:N,
+% \@@_peek_analysis_char:N, \@@_peek_analysis_char:w,
% \@@_peek_analysis_special:, \@@_peek_analysis_retest:,
-% \@@_peek_analysis_next:, \@@_peek_analysis_str:,
+% \@@_peek_analysis_next:, \@@_peek_analysis_nextii:,
+% \@@_peek_analysis_str:,
% \@@_peek_analysis_str:w, \@@_peek_analysis_str:n,
% \@@_peek_analysis_active_str:n, \@@_peek_analysis_explicit:n,
% \@@_peek_analysis_escape:, \@@_peek_analysis_collect:w,
@@ -1184,7 +1202,8 @@
% nested maps. We may wish to pass to this function an \tn{outer}
% control sequence or active character; for this we will undefine
% potentially-\tn{outer} tokens within a group, closed after the
-% function receives its arguments. This user's code function also
+% function reads its arguments (for an \tn{outer} active character
+% there is no good alternative). This user's code function also
% calls the loop auxiliary, and includes the trailing
% \cs{prg_break_point:Nn} for when the user wants to stop the loop.
% The loop auxiliary must remove that break point because it must look
@@ -1209,7 +1228,8 @@
% \end{macrocode}
% The loop starts a group (closed by the user-code function defined
% above) with a normalized escape character, and checks if the next
-% token is special or \texttt{N}-type.
+% token is special or \texttt{N}-type (distinguishing expandable from
+% non-expandable tokens).
% \begin{macrocode}
\cs_new_protected:Npn \@@_peek_analysis_loop:NNn #1#2#3
{
@@ -1224,60 +1244,159 @@
}
\cs_new_protected:Npn \@@_peek_analysis_test:
{
- \if_int_odd:w
- \if_catcode:w \exp_not:N \l_peek_token { \c_zero_int \fi:
- \if_catcode:w \exp_not:N \l_peek_token } \c_zero_int \fi:
- \if_meaning:w \l_peek_token \c_space_token \c_zero_int \fi:
- \c_one_int
+ \if_case:w
+ \if_catcode:w \exp_not:N \l_peek_token { \c_max_int \fi:
+ \if_catcode:w \exp_not:N \l_peek_token } \c_max_int \fi:
+ \if_meaning:w \l_peek_token \c_space_token \c_max_int \fi:
+ \exp_after:wN \if_meaning:w \exp_not:N \l_peek_token \l_peek_token
+ \c_one_int
+ \fi:
+ \c_zero_int
\exp_after:wN \exp_after:wN
- \exp_after:wN \@@_peek_analysis_normal:N
+ \exp_after:wN \@@_peek_analysis_exp:N
\exp_after:wN \exp_not:N
+ \or:
+ \exp_after:wN \@@_peek_analysis_nonexp:N
\else:
\exp_after:wN \@@_peek_analysis_special:
\fi:
}
% \end{macrocode}
-% Normal tokens are not too hard, but can be \tn{outer}, hence the
-% \cs{exp_not:N} in the code above. If the token is expandable then
-% it might be an \tn{outer} or a \TeX{} conditional, so to be safe we
-% set it to \cs{scan_stop:} (the assignment is local and stopped by
-% the \cs{group_end:} upon calling the user's code). Then distinguish
-% characters (including active ones and macro parameter characters)
-% from control sequences (whose string representation is more than one
-% character because the escape character is printable). For a control
-% sequence call the user code with suitable arguments.
+% Expandable tokens (which are automatically |N|-type) can be
+% \tn{outer} macros, hence the need for \cs{exp_after:wN} and
+% \cs{exp_not:N} in the code above, which allows the next function to
+% safely grab the token as an argument. We run some code that is
+% expanded using the primitive \cs{cs_set_nopar:Npx} rather than
+% \cs{tl_set:Nx} to avoid grabbing it as an argument as |#1| may be
+% \tn{outer}. To allow~|#1| as an argument of the user's function
+% (stored in \cs{l_@@_peek_code_tl}), we set it equal to
+% \cs{scan_stop:}, but we do it at the last minute because |#1|
+% may be some pretty important function such as \cs{exp_after:wN}.
+% Then we put the user's function and the elaborate first argument
+% \cs{__kernel_exp_not:w} \cs{exp_after:wN} |{| \cs{exp_not:N} |#1| |}|:
+% indeed we cannot use \cs{exp_not:n} |{#1}| as this breaks for an
+% \tn{outer} macro and we cannot use \cs{exp_not:N} |#1|, as
+% \texttt{o}-expanding this yields a \enquote{notexpanded} token equal
+% to (a weird) \tn{relax}, which would have the wrong value for
+% primitive \TeX{} conditionals such as \cs{if_meaning:w}.
+%
+% Then we must add |{-1}0| if the token is a
+% control sequence and \Arg{charcode}|D| otherwise. Distinguishing
+% the two cases is easy: since we have made the escape character
+% printable, \cs{token_to_str:N} gives at least two characters for a
+% control sequence versus a single one for an active character
+% (possibly being a space). Producing the right outcome is trickier,
+% as |#1| cannot appear in either branch of the conditional (it could
+% be \tn{outer}, or simply a \TeX{} conditional), and can only be
+% safely discarded by \cs{use_none:n} if it is first hit with
+% \cs{exp_not:N}.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_peek_analysis_normal:N #1
+\cs_new_protected:Npn \@@_peek_analysis_exp:N #1
+ {
+ \cs_set_nopar:Npx \l_@@_peek_code_tl
+ {
+ \tex_let:D \exp_not:N #1 \scan_stop:
+ \exp_not:o \l_@@_peek_code_tl
+ {
+ \exp_not:n { \__kernel_exp_not:w \exp_after:wN }
+ { \exp_not:N \exp_not:N \exp_not:N #1 }
+ }
+ \if:w \scan_stop:
+ \exp_after:wN \use_none:n \token_to_str:N #1 \prg_do_nothing:
+ \scan_stop:
+ \exp_after:wN \exp_after:wN
+ \exp_after:wN \@@_peek_analysis_exp_active:N
+ \else:
+ { -1 } 0
+ \exp_after:wN \exp_after:wN
+ \exp_after:wN \use_none:n
+ \fi:
+ \exp_not:N #1
+ }
+ \l_@@_peek_code_tl
+ }
+\cs_new:Npx \@@_peek_analysis_exp_active:N #1
+ { { \exp_not:N \int_value:w `#1 } \token_to_str:N D }
+% \end{macrocode}
+% For normal non-expandable tokens we must distinguish characters
+% (including active ones and macro parameter characters) from control
+% sequences (whose string representation is more than one character
+% because we made the escape character printable). For a control
+% sequence call the user code with suitable arguments, wrapping |#1|
+% within \cs{exp_not:n} just in case it happens to be equal to a macro
+% parameter character. We do not skip \cs{exp_not:n} when
+% unnecessary, because there might be situations where the argument
+% could be used by the user after further redefinitions of the token,
+% and it seems more convenient to know that \cs{exp_not:n} is always
+% used.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_peek_analysis_nonexp:N #1
{
- \exp_after:wN \reverse_if:N \exp_after:wN \if_meaning:w
- \exp_not:N #1 #1
- \tex_let:D #1 \scan_stop:
- \tl_put_right:Nn \l_@@_peek_code_tl { { \exp_not:N #1 } }
- \else:
- \tl_put_right:Nn \l_@@_peek_code_tl { { \exp_not:n {#1} } }
- \fi:
\if_charcode:w
\scan_stop:
\exp_after:wN \use_none:n \token_to_str:N #1 \prg_do_nothing:
\scan_stop:
\exp_after:wN \@@_peek_analysis_char:N
- \exp_after:wN #1
\else:
- \exp_after:wN \@@_peek_analysis_cs:
+ \exp_after:wN \@@_peek_analysis_cs:N
\fi:
+ #1
}
-\cs_new_protected:Npn \@@_peek_analysis_cs:
- { \l_@@_peek_code_tl { -1 } 0 }
-\cs_new_protected:Npn \@@_peek_analysis_char:N #1
+\cs_new_protected:Npn \@@_peek_analysis_cs:N #1
+ { \l_@@_peek_code_tl { \exp_not:n {#1} } { -1 } 0 }
+% \end{macrocode}
+% For normal characters we must determine their catcode. The main
+% difficulty is that the character may be an active character
+% masquerading as (i.e., set equal to) itself with a different
+% catcode. Two approaches based on \tn{lowercase} can detect this.
+% One could make an active character with the same catcode as~|#1| and
+% change its definition before testing the catcode of~|#1|, but in
+% some Unicode engine this fills up the hash table uselessly.
+% Instead, we lowercase~|#1| itself, changing its character code
+% to~$32$, namely space (because \LuaTeX{} cannot turn catcode~$10$
+% characters to anything else than character code~$32$), then we apply
+% \cs{@@_analysis_b_char:Nn}, which detects active characters by
+% comparing them to \cs{tex_undefined:D}, and we must have undefined
+% the active space for this test to work ---we use an |x|-expanding
+% assignment to get the active space in the right place. Finally
+% \cs{@@_peek_analysis_char:w} puts the arguments in the correct
+% order, including \cs{exp_not:n} for macro parameter characters and
+% active characters (the latter could be macro parameter characters,
+% and it seems more uniform to always put \cs{exp_not:n}).
+% \begin{macrocode}
+\group_begin:
+\char_set_active_eq:NN \ \scan_stop:
+\cs_new_protected:Npx \@@_peek_analysis_char:N #1
{
- \char_set_lccode:nn { `#1 } { 32 }
- \tex_lowercase:D { \@@_peek_analysis_char:nN {#1} } #1
+ \cs_set_eq:NN
+ \char_generate:nn { 32 } { 13 }
+ \exp_not:N \tex_undefined:D
+ \tex_lccode:D `#1 = 32 \exp_stop_f:
+ \tex_lowercase:D
+ {
+ \tl_put_right:Nx \exp_not:N \l_@@_peek_code_tl
+ { \exp_not:n { \@@_analysis_b_char:Nn \use_none:n } {#1} }
+ }
+ \exp_not:n
+ {
+ \exp_after:wN \@@_peek_analysis_char:w
+ \int_value:w
+ }
+ `#1
+ \exp_not:n { \exp_after:wN \s_@@ \l_@@_peek_code_tl }
+ #1
}
-\cs_new_protected:Npn \@@_peek_analysis_char:nN #1#2
+\group_end:
+\cs_new_protected:Npn \@@_peek_analysis_char:w #1 \s_@@ #2#3#4
{
- \cs_set_protected:Npn \@@_tmp:w ##1 #1 ##2 ##3 \scan_stop:
- { \exp_args:No \l_@@_peek_code_tl { \int_value:w `#2 } ##2 }
- \exp_after:wN \@@_tmp:w \c_@@_peek_catcodes_tl \scan_stop:
+ \if_charcode:w 6 #3
+ \else:
+ \if_charcode:w D #3
+ \else:
+ \exp_args:NNNo
+ \fi:
+ \fi:
+ #2 { \exp_not:n {#4} } {#1} #3
}
% \end{macrocode}
% For special characters the idea is to eventually act with
@@ -1319,6 +1438,8 @@
% active character with the same character code as its meaning or as
% the escape character). Now look at the \meta{next token} following
% it using a combination of \tn{afterassignment} and \tn{futurelet}.
+% (In fact look twice to reset an internal \TeX{} flag in case the
+% \meta{next token} had been hit with \cs{exp_not:N}.)
% The syntax of this primitive is \tn{futurelet} \meta{peek token}
% \meta{first token} \meta{next token}, and it sets \meta{peek token}
% equal to \meta{next token}. Traditionally, one takes \meta{first
@@ -1335,6 +1456,11 @@
{
\tl_if_empty:oT { \tex_the:D \tex_everyeof:D }
{ \tex_everyeof:D { \scan_stop: } }
+ \tex_afterassignment:D \@@_peek_analysis_nextii:
+ \tex_futurelet:D \l_@@_analysis_next_token
+ }
+\cs_new_protected:Npn \@@_peek_analysis_nextii:
+ {
\tex_afterassignment:D \@@_peek_analysis_str:
\tex_futurelet:D \l_@@_analysis_next_token
}
diff --git a/macros/latex/contrib/l3kernel/l3tl.dtx b/macros/latex/contrib/l3kernel/l3tl.dtx
index bf9708a153..9b26c3f165 100644
--- a/macros/latex/contrib/l3kernel/l3tl.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3token.dtx b/macros/latex/contrib/l3kernel/l3token.dtx
index 0312bf9874..10869db922 100644
--- a/macros/latex/contrib/l3kernel/l3token.dtx
+++ b/macros/latex/contrib/l3kernel/l3token.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
@@ -960,7 +960,8 @@
% (as appropriate to the result of the test).
% \end{function}
%
-% \begin{function}[added = 2020-12-03]{\peek_analysis_map_inline:n}
+% \begin{function}[added = 2020-12-03, updated = 2022-10-03]
+% {\peek_analysis_map_inline:n}
% \begin{syntax}
% \cs{peek_analysis_map_inline:n} \Arg{inline function}
% \end{syntax}
diff --git a/macros/latex/contrib/l3kernel/l3unicode.dtx b/macros/latex/contrib/l3kernel/l3unicode.dtx
index 069301057d..b46688c843 100644
--- a/macros/latex/contrib/l3kernel/l3unicode.dtx
+++ b/macros/latex/contrib/l3kernel/l3unicode.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2022-09-28}
+% \date{Released 2022-10-26}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/source3.pdf b/macros/latex/contrib/l3kernel/source3.pdf
index 2baa614c2a..e23e5a6fc3 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 51e9ca106d..04d819c2ae 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 2022-09-28}
+\date{Released 2022-10-26}
\pagenumbering{roman}
\maketitle