From 3569abb47f6a23e9969d9f14f285bdc9ad52c018 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 30 Jun 2023 20:51:06 +0000 Subject: l3kernel (30jun23) git-svn-id: svn://tug.org/texlive/trunk@67514 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/source/latex/l3kernel/expl3.dtx | 36 +++---- .../texmf-dist/source/latex/l3kernel/l3basics.dtx | 14 ++- .../source/latex/l3kernel/l3bootstrap.dtx | 4 +- Master/texmf-dist/source/latex/l3kernel/l3box.dtx | 2 +- .../source/latex/l3kernel/l3candidates.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3cctab.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3clist.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3coffins.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3color.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3debug.dtx | 2 +- .../source/latex/l3kernel/l3deprecation.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3doc.dtx | 2 +- .../source/latex/l3kernel/l3docstrip.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3expan.dtx | 23 +---- Master/texmf-dist/source/latex/l3kernel/l3file.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3flag.dtx | 2 +- .../source/latex/l3kernel/l3fp-assign.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3fp-aux.dtx | 2 +- .../source/latex/l3kernel/l3fp-basics.dtx | 9 +- .../source/latex/l3kernel/l3fp-convert.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3fp-expo.dtx | 2 +- .../source/latex/l3kernel/l3fp-extended.dtx | 2 +- .../source/latex/l3kernel/l3fp-logic.dtx | 2 +- .../source/latex/l3kernel/l3fp-parse.dtx | 2 +- .../source/latex/l3kernel/l3fp-random.dtx | 2 +- .../source/latex/l3kernel/l3fp-round.dtx | 2 +- .../source/latex/l3kernel/l3fp-traps.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3fp-trig.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3fp.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3fparray.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3int.dtx | 2 +- .../source/latex/l3kernel/l3intarray.dtx | 2 +- .../source/latex/l3kernel/l3kernel-functions.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3keys.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3legacy.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3luatex.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3msg.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3names.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3prg.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3prop.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3quark.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3regex.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3seq.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3skip.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3sort.dtx | 2 +- .../source/latex/l3kernel/l3str-convert.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3str.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3sys.dtx | 2 +- .../source/latex/l3kernel/l3text-case.dtx | 9 +- .../source/latex/l3kernel/l3text-map.dtx | 2 +- .../source/latex/l3kernel/l3text-purify.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3text.dtx | 2 +- .../source/latex/l3kernel/l3tl-analysis.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3tl.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3token.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3unicode.dtx | 105 +++++++++++++++++---- 57 files changed, 169 insertions(+), 131 deletions(-) (limited to 'Master/texmf-dist/source/latex/l3kernel') diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx index d95bda9fa94..31a89461037 100644 --- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx @@ -24,7 +24,7 @@ % %<*driver|generic|package|2ekernel> % -\def\ExplFileDate{2023-06-16}% +\def\ExplFileDate{2023-06-30}% %<*driver> \documentclass[full]{l3doc} \usepackage{graphicx} @@ -51,7 +51,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % @@ -658,10 +658,9 @@ % text of an~\tn{edef}, and the expansion is passed to the function as % a braced token list. Expansion takes place until only unexpandable % tokens are left. |x|-type arguments cannot be nested. -% \item[e] Fully-expanded token or braced token list which does -% not require doubled |#| tokens. This expansions is very similar -% to |x|-type but may be nested and does not require that |#| -% tokens are doubled. +% \item[e] Fully-expanded token or braced token list.\\ +% This expansion is very similar to |x|-type but may be nested and does +% not require that |#| tokens are doubled. It uses \tn{expanded} primitive. % \item[f] Expanding the first token recursively in a braced token % list.\\ Almost the same as the |x| type except here the token list % is expanded fully until the first unexpandable token is found and @@ -965,27 +964,16 @@ % \section{Engine/primitive requirements} % % To use \pkg{expl3} and the higher level packages provided by the -% team, the minimal set of primitive requirements is currently -% \begin{itemize} -% \item All of those from \TeX90. -% \item All of those from \eTeX{} \emph{excluding} |\TeXXeTstate|, -% |\beginL|, |\beginR|, |\endL| and |\endR| (\emph{i.e.}~excluding -% \TeX{}-\kern0pt-\reflectbox{\TeX{}}). -% \item Functionality equivalent to the \pdfTeX{} primitive -% |\pdfstrcmp|. -% \end{itemize} -% Any engine which defines |\pdfoutput| (\emph{i.e.}~allows direct production -% of a PDF file without a DVI intermediate) must also provide |\pdfcolorstack|, -% |\pdfliteral|, |\pdfmatrix|, |\pdfrestore| and |\pdfsave| or equivalent -% functionality. Fully Unicode engines must provide a method for producing -% character tokens in an expandable manner. +% team, the minimal set of primitive requirements is currently described +% in \href{README.md}{README.md}. % % Practically, these requirements are met by the engines % \begin{itemize} -% \item \pdfTeX{} v1.40 or later. -% \item \XeTeX{} v0.99992 or later. -% \item \LuaTeX{} v0.95 or later. -% \item e-(u)\pTeX{} mid-2012 or later. +% \item \pdfTeX{} v1.40.20 or later. +% \item \XeTeX{} v0.999991 or later. +% \item \LuaTeX{} v1.10 or later. +% \item e-(u)\pTeX{} v3.8.2 or later. +% \item Prote (2021) or later. % \end{itemize} % % Additional modules beyond the core of \pkg{expl3} may require additional diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx index 309f26d5991..e87c039363c 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % @@ -1025,14 +1025,12 @@ % \begin{syntax} % \cs{use:e} \Arg{expandable tokens} % \end{syntax} -% Fully expands the \meta{token list} in an \texttt{x}-type manner, -% \emph{but} the function remains fully expandable, and parameter -% character (usually~|#|) need not be doubled. +% Fully expands the \meta{token list} in an \texttt{e}-type manner, +% in which parameter character (usually~|#|) need not be doubled, \emph{and} +% the function remains fully expandable. % \begin{texnote} -% \cs{use:e} is a wrapper around the primitive \tn{expanded} -% where it is available: -% it requires two expansions to complete its action. -% When \tn{expanded} is not available this function is very slow. +% \cs{use:e} is a wrapper around the primitive \tn{expanded}. +% It requires two expansions to complete its action. % \end{texnote} % \end{function} % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx index e1b8e779ee6..c82fccb0a94 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % @@ -211,7 +211,7 @@ \def\LongText% {% The L3 programming layer requires the e-TeX primitives and the - \LineBreak 'pdfTeX extensions' as described in the README file. + \LineBreak 'pdfTeX utilities' as described in the README file. \LineBreak These are available in the engines\LineBreak - pdfTeX v1.40.20\LineBreak diff --git a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx index 966e1b29e3e..c236ea8282b 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx index 272f93e92cf..000779e5a1e 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx b/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx index da533ae3097..dba24d5c7b9 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx index 42825a59f5b..d69256ef419 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx index 737538a75e0..8f1856198ce 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3color.dtx b/Master/texmf-dist/source/latex/l3kernel/l3color.dtx index ec2010b1323..0d4f1c6baa0 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3color.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3color.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx b/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx index ca462b79d8d..31e7bf22ac3 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx index 7fb8e5c631c..66785fe4aef 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx index 938715c87aa..6a38db6634b 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx +++ b/Master/texmf-dist/source/latex/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 2023-06-16} +% \date{Released 2023-06-30} % \maketitle % \tableofcontents % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx index f2a689c3d96..527c9dcab71 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx index 76bb8b0605d..6629ac4c99f 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % @@ -222,12 +222,8 @@ % % The |e| type expands all tokens fully, starting from the first. More % precisely the expansion is identical to that of \TeX{}'s \tn{message} -% (in particular |#| needs not be doubled). It was added in May 2018. -% In recent enough engines (starting around 2019) it relies on the -% primitive \tn{expanded} hence is fast. In older engines it is very -% much slower. As a result it should only be used in performance -% critical code if typical users will have a recent installation of the -% \TeX{} ecosystem. +% (in particular |#| needs not be doubled). It relies on the +% primitive \tn{expanded} hence is fast. % % The |x| type expands all tokens fully, starting from the first. In % contrast to |e|, all macro parameter characters |#| must be doubled, @@ -306,11 +302,7 @@ % \item % In contrast, |e|~expansion (full expansion, almost like~|x| except % for the treatment of~|#|) does not prevent variants from being -% expandable (if the base function is). The drawback is that -% |e|~expansion is very much slower in old engines (before 2019). -% Consider using |f|~expansion if that type of expansion is -% sufficient to perform the required expansion, or |x|~expansion if -% the variant will not itself need to be expandable. +% expandable (if the base function is). % \item % Finally |f|~expansion only expands the front of the token list, % stopping at the first non-expandable token. This may fail to @@ -404,13 +396,6 @@ % \emph{after} reinsertion of the \meta{function}. % Thus the \meta{function} may take more % than one argument: all others are left unchanged. -% \begin{texnote} -% This relies on the \tn{expanded} primitive when available (in -% \LuaTeX{} and starting around 2019 in other engines). Otherwise -% it uses some fall-back code that is very much slower. As a result -% it should only be used in performance-critical code if typical -% users have a recent installation of the \TeX{} ecosystem. -% \end{texnote} % \end{function} % % \begin{function}[EXP]{\exp_args:Nf} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx index 0fce245ddaf..03487c71039 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx index 02543c36e5a..43c6d4156e6 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx index abcfead9949..1ad1248cf29 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % \maketitle % % \begin{documentation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx index 99aa9279baf..5c6e0630782 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx index dc6a92e10cc..3b370f678e3 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % @@ -2108,15 +2108,16 @@ % map over all items in the tuple an auxiliary that dispatches to the % type-appropriate sign-flipping function. % \begin{macrocode} -\cs_new:Npn \@@_tuple_set_sign_o:w #1 +\cs_new:Npn \@@_tuple_set_sign_o:w #1#2 @ { \if_meaning:w 2 #1 \exp_after:wN \@@_tuple_set_sign_aux_o:Nnw \fi: \@@_invalid_operation_o:nw { abs } + #2 } -\cs_new:Npn \@@_tuple_set_sign_aux_o:Nnw #1#2#3 @ - { \@@_tuple_map_o:nw \@@_tuple_set_sign_aux_o:w #3 } +\cs_new:Npn \@@_tuple_set_sign_aux_o:Nnw #1#2 + { \@@_tuple_map_o:nw \@@_tuple_set_sign_aux_o:w } \cs_new:Npn \@@_tuple_set_sign_aux_o:w #1#2 ; { \@@_change_func_type:NNN #1 \@@_set_sign_o:w diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx index 4cf841cf235..9168af101db 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx index df680daaff1..0882cba89ab 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx index 39f16674c9d..5cfa2b73a01 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx index 09d901bd195..4a549bdba9a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx index afaa7a6218b..0306a25adda 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx index e8a5274cfb0..348b582dab9 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx index 65f7d3e99a3..4e72114d260 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx index 8273fa4ef4d..97243134c07 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % \maketitle % % \begin{documentation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx index 6bfab36b219..b1638acc752 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx index 9a2069c11d8..0e587e842c0 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx @@ -49,7 +49,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx index bba4b879be4..fc94eca3af8 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx index 9be9793d931..e6d430c1928 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx index bfe8307d049..111e889fc9a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx index 765ed7fd957..a1121dd0ced 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx index 086ee85b9c7..e89ebb176df 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx index 62e88766bbb..6838bf11c62 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx index 19e2adde955..afc0605a617 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx index 311f82e58eb..0898334f51f 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx index 31e4154a38e..2235524d7bc 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx b/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx index 9f21d2a4105..a8f7ed8a01f 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx index d82d8a4eed9..1c96879388f 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx index 96c629fcbf5..10167f4baf7 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx index a0a27fa857a..f8d94d4c0fd 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx index c3642680123..6d9cc425c07 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx index 718d14fd5ee..4789fff3ce3 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx index 875acbcc279..1d92789b5b0 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx index 774bdb0ab47..d23f9e366ca 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx index 43116a29e41..f82cd50ac99 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx index 98839638462..c05afad0540 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx index b27cc1d8235..4d7bad10826 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx index f761831a6b7..8b55915aec0 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % @@ -1285,7 +1285,7 @@ % We choose to retain stress diacritics, but we also need to recombine % them for pdf\TeX{}. That is handled here. % \begin{macrocode} -\cs_new:Npn \_@@_change_case_upper_el_stress:nn #1#2 +\cs_new:Npn \@@_change_case_upper_el_stress:nn #1#2 { \exp_args:Ne \@@_change_case_generate:n { @@ -1717,8 +1717,9 @@ {#1} {#2} {#3} {#4} {#5} } { - \@@_change_case_breathing_aux:nnnnn - {#1} {#2} {#3} {#4} {#6} + \@@_codepoint_process:nN + { \@@_change_case_breathing:nnnnnw {#1} {#2} {#3} {#4} } + #6 \q_mark } } \cs_new:Npn \@@_change_case_breathing_aux:nnnnn #1#2#3#4#5 diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx index 787c3f9dfc3..a2d6d48c101 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx index e2bac1b756b..a8b84eb10cc 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text.dtx index 47341eeea41..eb97fca1fd8 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3text.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3text.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx index 116be7de53a..9c80c0fb9ab 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx index 58d4276197d..af9ed91866a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx index bedbb2e2a53..8af32dff066 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx index b44b307bbf1..e4dba1753ff 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-06-16} +% \date{Released 2023-06-30} % % \maketitle % @@ -106,6 +106,22 @@ % category code $10$. % \end{function} % +% \begin{function}[added = 2023-06-19, EXP]{\codepoint_to_category:n} +% \begin{syntax} +% \cs{codepoint_to_category:n} \Arg{codepoint} +% \end{syntax} +% Expands to the Unicode general category identifier of the \meta{codepoint}. +% The general category identifier is a string made up of two letter +% characters, the first uppercase and the second lowercase. The uppercase +% letters divide codepoints into broader groups, which are then refined +% by the lowercase letter. For example, codepoints representing letters +% all have identifiers starting \texttt{L}, for example \texttt{Lu} +% (uppercase letter), \texttt{Lt} (titlecase letter), \emph{etc.} +% Full details are available in the documentation provided by the Unicode +% Consortium: see +% \url{https://www.unicode.org/reports/tr44/#General_Category_Values} +% \end{function} +% % \begin{function}[added = 2022-10-09, EXP]{\codepoint_to_nfd:n} % \begin{syntax} % \cs{codepoint_to_nfd:n} \Arg{codepoint} @@ -347,6 +363,21 @@ % \end{macro} % \end{macro} % +% \begin{macro}[EXP]{\codepoint_to_category:n} +% Get the value and convert back to the string. +% \begin{macrocode} +\cs_new:Npn \codepoint_to_category:n #1 + { + \cs:w + c_@@_category_ + \tex_romannumeral:D + \__kernel_codepoint_data:nn { category } {#1} + _str + \cs_end: + } +% \end{macrocode} +% \end{macro} +% % \begin{macro}[EXP]{\codepoint_to_nfd:n, \@@_to_nfd:n} % \begin{macro}[EXP]{\@@_to_nfd:nn} % \begin{macro}[EXP]{\@@_to_nfd:nnn} @@ -461,7 +492,7 @@ % \begin{macrocode} \group_begin: \clist_map_inline:nn - { uppercase , lowercase } + { category , uppercase , lowercase } { \cs_set_nopar:cpn { l_@@_ #1 _block_clist } { } \cs_set_nopar:cpn { l_@@_ #1 _block_tl } { 1 } @@ -477,6 +508,29 @@ \cs_set_nopar:Npn \l_@@_next_codepoint_fint_tl { 0 } \cs_set_nopar:Npn \l_@@_matched_block_tl { 0 } % \end{macrocode} +% For Unicode general category, there needs to be numerical representation of +% each possible value. As we need to go from string to number here, but the +% other way elsewhere, we set up fast mappings both ways, but one set local +% and the other as constants. +% \begin{macrocode} + \cs_set_protected:Npn \@@_data_auxi:w #1#2 + { + \quark_if_recursion_tail_stop:n {#2} + \cs_set_nopar:cpn { l_@@_category_ #2 _tl } {#1} + \str_const:cn { c_@@_category_ \tex_romannumeral:D #1 _str } {#2} + \exp_args:Ne \@@_data_auxi:w { \int_eval:n { #1 + 1 } } + } + \@@_data_auxi:w { 1 } + { Lu } { Ll } { Lt } { Lm } { Lo } + { Mn } { Me } { Mc } + { Nd } { Nl } { No } + { Zs } { Zl } { Zp } + { Cc } { Cf } { Co } { Cs } { Cn } + { Pd } { Ps } { Pe } { Pc } { Po } { Pi } { Pf } + { Sm } { Sc } { Sk } { So } + \q_recursion_tail + \q_recursion_stop +% \end{macrocode} % Parse the main Unicode data file and pull out the NFD and case changing % data. The NFD data is stored on using the hash table approach and can yield % a predictable number of codepoints: one or two. We also need the case data, @@ -491,7 +545,7 @@ \tl_if_head_eq_charcode:nNF {#6} < % > { \@@_data_auxii:w #1 ; #6 ~ \q_stop } } - \@@_data_auxiii:w #1 ; #2 ; + \@@_data_auxiii:w #1 ; #2 ; #3 ; } \cs_set_protected:Npn \@@_data_auxii:w #1 ; #2 ~ #3 \q_stop { @@ -503,22 +557,27 @@ } } % \end{macrocode} +% The category data needs to be converted from a string to the numerical +% equivalent: a simple operation. % The case data is going to be stored as an offset from the parent character, % rather than an absolute value. We therefore deal with that plus the situation -% where a codepoint has no mapping data in oen shot. +% where a codepoint has no mapping data in one shot. % \begin{macrocode} \cs_set_protected:Npn \@@_data_auxiii:w - #1 ; #2 ; #3 ; #4 ; #5 ; #6 ; #7 ; #8 ~ \q_stop + #1 ; #2 ; #3 ; #4 ; #5 ; #6 ; #7 ; #8 ; #9 ~ \q_stop { \use:e { \@@_data_auxiv:w #1 ; #2 ; - \@@_data_offset:nn {#1} {#6} ; + \@@_data_category:n {#3} ; \@@_data_offset:nn {#1} {#7} ; - #8; + \@@_data_offset:nn {#1} {#8} ; + #9; } } + \cs_set:Npn \@@_data_category:n #1 + { \use:c { l_@@_category_ #1 _tl } } \cs_set:Npn \@@_data_offset:nn #1#2 { \tl_if_blank:nTF {#2} @@ -536,20 +595,21 @@ % case exceptions are all stored as codepoints, with a fixed number of % balanced text as we know that there are never more than three. % \begin{macrocode} - \cs_set_protected:Npn \@@_data_auxiv:w #1 ; #2 ; #3 ; #4 ; #5 ; + \cs_set_protected:Npn \@@_data_auxiv:w #1 ; #2 ; #3 ; #4 ; #5 ; #6 ; { \int_compare:nNnT {"#1} > \l_@@_next_codepoint_fint_tl { - \@@_data_auxvi:nnnw {#1} {#3} {#4} + \@@_data_auxv:nnnnw {#1} {#3} {#4} {#5} #2 Last> \q_stop } - \@@_add:nn { uppercase } {#3} - \@@_add:nn { lowercase } {#4} - \int_compare:nNnF {#3} = { \@@_data_offset:nn {#1} {#5} } + \@@_add:nn { category } {#3} + \@@_add:nn { uppercase } {#4} + \@@_add:nn { lowercase } {#5} + \int_compare:nNnF {#4} = { \@@_data_offset:nn {#1} {#6} } { \tl_const:cx { c_@@_titlecase_ \codepoint_str_generate:n {"#1} _tl } - { {"#5} { } { } } + { {"#6} { } { } } } \tl_set:Nx \l_@@_next_codepoint_fint_tl { \int_eval:n { "#1 + 1 } } @@ -563,17 +623,22 @@ } % \end{macrocode} % Distinguish between a range and a gap, and pass on the appropriate value(s). +% The general category for unassigned characters is \texttt{Cn}, so we +% find the correct value once and then use that. % \begin{macrocode} - \cs_set_protected:Npn \@@_data_auxvi:nnnw #1#2#3#4 Last> #5 \q_stop + \cs_set_protected:Npx \@@_data_auxv:nnnnw #1#2#3#4#5 Last> #6 \q_stop { - \tl_if_blank:nTF {#5} + \exp_not:N \tl_if_blank:nTF {#6} { - \@@_range:nnn {#1} { uppercase } { 0 } - \@@_range:nnn {#1} { lowercase } { 0 } + \exp_not:N \@@_range:nnn {#1} { category } + { \exp_not:V \l_@@_category_Cn_tl } + \exp_not:N \@@_range:nnn {#1} { uppercase } { 0 } + \exp_not:N \@@_range:nnn {#1} { lowercase } { 0 } } { - \@@_range:nnn {#1} { uppercase } {#2} - \@@_range:nnn {#1} { lowercase } {#3} + \exp_not:N \@@_range:nnn {#1} { category } {#2} + \exp_not:N \@@_range:nnn {#1} { uppercase } {#3} + \exp_not:N \@@_range:nnn {#1} { lowercase } {#4} } } % \end{macrocode} @@ -672,7 +737,7 @@ % \begin{macrocode} \cs_set_protected:Npn \@@_finalise_blocks: { - \clist_map_inline:nn { uppercase , lowercase } + \clist_map_inline:nn { category , uppercase , lowercase } { \@@_range:nnn { 110000 } {##1} { 0 } \@@_finalise_blocks:n {##1} -- cgit v1.2.3