diff options
author | Norbert Preining <norbert@preining.info> | 2022-10-28 03:01:22 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2022-10-28 03:01:22 +0000 |
commit | 577cb5a42c6f06b209011b90703e7809ea47d43f (patch) | |
tree | 7244eb3e1cbf04e31d65467fcf27e05fdfa4c2f9 /macros | |
parent | 876d640726265ada7e067f22dda368dd49ed9ad1 (diff) |
CTAN sync 202210280301
Diffstat (limited to 'macros')
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 Binary files differindex 9d25d90981..7bc0280478 100644 --- a/macros/latex/contrib/eolang/eolang.pdf +++ b/macros/latex/contrib/eolang/eolang.pdf diff --git a/macros/latex/contrib/fixdif/fixdif-zh-cn.pdf b/macros/latex/contrib/fixdif/fixdif-zh-cn.pdf Binary files differindex 8b18290433..09902e25b1 100644 --- a/macros/latex/contrib/fixdif/fixdif-zh-cn.pdf +++ b/macros/latex/contrib/fixdif/fixdif-zh-cn.pdf 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 Binary files differindex e0422d40fc..55f49058db 100644 --- a/macros/latex/contrib/fixdif/fixdif.pdf +++ b/macros/latex/contrib/fixdif/fixdif.pdf 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 Binary files differindex 8ccb437311..1c4d8e1c6e 100644 --- a/macros/latex/contrib/l3backend/l3backend-code.pdf +++ b/macros/latex/contrib/l3backend/l3backend-code.pdf 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 Binary files differindex df634990ec..38cd427a5f 100644 --- a/macros/latex/contrib/l3kernel/expl3.pdf +++ b/macros/latex/contrib/l3kernel/expl3.pdf diff --git a/macros/latex/contrib/l3kernel/interface3.pdf b/macros/latex/contrib/l3kernel/interface3.pdf Binary files differindex 138489c04d..346b670e7f 100644 --- a/macros/latex/contrib/l3kernel/interface3.pdf +++ b/macros/latex/contrib/l3kernel/interface3.pdf 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 Binary files differindex d2cfc22fed..87982a35fc 100644 --- a/macros/latex/contrib/l3kernel/l3doc.pdf +++ b/macros/latex/contrib/l3kernel/l3doc.pdf 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 Binary files differindex 6c75d44a1a..276706f931 100644 --- a/macros/latex/contrib/l3kernel/l3docstrip.pdf +++ b/macros/latex/contrib/l3kernel/l3docstrip.pdf 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 Binary files differindex 9bb99485aa..f66f0802d2 100644 --- a/macros/latex/contrib/l3kernel/l3news.pdf +++ b/macros/latex/contrib/l3kernel/l3news.pdf diff --git a/macros/latex/contrib/l3kernel/l3news01.pdf b/macros/latex/contrib/l3kernel/l3news01.pdf Binary files differindex 4ee70dc6ee..aff17ed51c 100644 --- a/macros/latex/contrib/l3kernel/l3news01.pdf +++ b/macros/latex/contrib/l3kernel/l3news01.pdf diff --git a/macros/latex/contrib/l3kernel/l3news02.pdf b/macros/latex/contrib/l3kernel/l3news02.pdf Binary files differindex 2a0fa6436a..de14d7cad8 100644 --- a/macros/latex/contrib/l3kernel/l3news02.pdf +++ b/macros/latex/contrib/l3kernel/l3news02.pdf diff --git a/macros/latex/contrib/l3kernel/l3news03.pdf b/macros/latex/contrib/l3kernel/l3news03.pdf Binary files differindex 08404d7013..c13c9d8afe 100644 --- a/macros/latex/contrib/l3kernel/l3news03.pdf +++ b/macros/latex/contrib/l3kernel/l3news03.pdf diff --git a/macros/latex/contrib/l3kernel/l3news04.pdf b/macros/latex/contrib/l3kernel/l3news04.pdf Binary files differindex 4b2ae23422..9ace65ebc9 100644 --- a/macros/latex/contrib/l3kernel/l3news04.pdf +++ b/macros/latex/contrib/l3kernel/l3news04.pdf diff --git a/macros/latex/contrib/l3kernel/l3news05.pdf b/macros/latex/contrib/l3kernel/l3news05.pdf Binary files differindex e8fefe11ee..eaff40a1f7 100644 --- a/macros/latex/contrib/l3kernel/l3news05.pdf +++ b/macros/latex/contrib/l3kernel/l3news05.pdf diff --git a/macros/latex/contrib/l3kernel/l3news06.pdf b/macros/latex/contrib/l3kernel/l3news06.pdf Binary files differindex c0c4a9506f..56df1d9052 100644 --- a/macros/latex/contrib/l3kernel/l3news06.pdf +++ b/macros/latex/contrib/l3kernel/l3news06.pdf diff --git a/macros/latex/contrib/l3kernel/l3news07.pdf b/macros/latex/contrib/l3kernel/l3news07.pdf Binary files differindex 7dd8191920..0a0b2aaf96 100644 --- a/macros/latex/contrib/l3kernel/l3news07.pdf +++ b/macros/latex/contrib/l3kernel/l3news07.pdf diff --git a/macros/latex/contrib/l3kernel/l3news08.pdf b/macros/latex/contrib/l3kernel/l3news08.pdf Binary files differindex 4181681985..202fa45077 100644 --- a/macros/latex/contrib/l3kernel/l3news08.pdf +++ b/macros/latex/contrib/l3kernel/l3news08.pdf diff --git a/macros/latex/contrib/l3kernel/l3news09.pdf b/macros/latex/contrib/l3kernel/l3news09.pdf Binary files differindex 0f8e475609..fd3b1e0136 100644 --- a/macros/latex/contrib/l3kernel/l3news09.pdf +++ b/macros/latex/contrib/l3kernel/l3news09.pdf diff --git a/macros/latex/contrib/l3kernel/l3news10.pdf b/macros/latex/contrib/l3kernel/l3news10.pdf Binary files differindex a04326f21e..b5a449ebef 100644 --- a/macros/latex/contrib/l3kernel/l3news10.pdf +++ b/macros/latex/contrib/l3kernel/l3news10.pdf diff --git a/macros/latex/contrib/l3kernel/l3news11.pdf b/macros/latex/contrib/l3kernel/l3news11.pdf Binary files differindex 17e1d46497..b7cec21f17 100644 --- a/macros/latex/contrib/l3kernel/l3news11.pdf +++ b/macros/latex/contrib/l3kernel/l3news11.pdf diff --git a/macros/latex/contrib/l3kernel/l3news12.pdf b/macros/latex/contrib/l3kernel/l3news12.pdf Binary files differindex 5ea38f32af..a3bac623b0 100644 --- a/macros/latex/contrib/l3kernel/l3news12.pdf +++ b/macros/latex/contrib/l3kernel/l3news12.pdf 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 Binary files differindex 40c5daf8f9..112961635f 100644 --- a/macros/latex/contrib/l3kernel/l3prefixes.pdf +++ b/macros/latex/contrib/l3kernel/l3prefixes.pdf 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 Binary files differindex 6a572e6ba7..c9fba1756f 100644 --- a/macros/latex/contrib/l3kernel/l3styleguide.pdf +++ b/macros/latex/contrib/l3kernel/l3styleguide.pdf 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 Binary files differindex 3df33c43d9..f4b32d45c6 100644 --- a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf +++ b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf 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 Binary files differindex 26aadf38b0..39c69d8b43 100644 --- a/macros/latex/contrib/l3kernel/l3term-glossary.pdf +++ b/macros/latex/contrib/l3kernel/l3term-glossary.pdf 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 Binary files differindex 2baa614c2a..e23e5a6fc3 100644 --- a/macros/latex/contrib/l3kernel/source3.pdf +++ b/macros/latex/contrib/l3kernel/source3.pdf 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 |