diff options
author | Karl Berry <karl@freefriends.org> | 2019-01-13 23:32:04 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2019-01-13 23:32:04 +0000 |
commit | bb1d5d5bb3f0deddd2c473b3881cd785b002d768 (patch) | |
tree | b1b301d655decafc1e8a237917debf6f040a8f1c /Master/texmf-dist/source/latex/l3kernel | |
parent | 231f2bfbc6deb5f053659c5062e9b5be2ed8e5c8 (diff) |
l3kernel (13jan19)
git-svn-id: svn://tug.org/texlive/trunk@49692 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/l3kernel')
51 files changed, 214 insertions, 180 deletions
diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx index 010acc2ef42..615f179bb16 100644 --- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx @@ -21,7 +21,7 @@ % for those people who are interested. % %<*driver|generic|package> -\def\ExplFileDate{2019-01-01}% +\def\ExplFileDate{2019-01-12}% %</driver|generic|package> %<*driver> \documentclass[full]{l3doc} @@ -49,7 +49,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx index 46d67b00d5e..94e523ea661 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx index 44e0968f05b..03bd6180794 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx index 5b6c4aa23eb..2ce2f3b2e11 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx @@ -138,7 +138,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx index 39a4ab8c754..ef4a9b2d763 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % @@ -583,7 +583,7 @@ % \vbox_gset_to_ht:Nnw, \vbox_gset_to_ht:cnw % } % \begin{syntax} -% \cs{vbox_set_to_wd:Nnw} \meta{box} \Arg{dimexpr} \meta{contents} \cs{vbox_set_end:} +% \cs{vbox_set_to_ht:Nnw} \meta{box} \Arg{dimexpr} \meta{contents} \cs{vbox_set_end:} % \end{syntax} % Typesets the \meta{contents} to the height given by the \meta{dimexpr} % and then stores the result inside the \meta{box}. In contrast diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx index 780b8ac6b03..c23a8825320 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % @@ -353,9 +353,7 @@ % path and the additional paths controlled by \cs{file_path_include:n}. % If found, sets the \meta{str var} to the size of the file in bytes. % Where the file is not found, the \meta{str var} will be empty. -% \begin{texnote} -% Currently this is not available with \XeTeX{}. -% \end{texnote} +% This is not available in older versions of \XeTeX{}. % \end{function} % % \begin{function}[added = 2017-07-09]{\file_get_timestamp:nN} @@ -369,9 +367,7 @@ % \meta{minute}\meta{second}\meta{offset}, where the latter may be |Z| % (UTC) or \meta{plus-minus}\meta{hours}|'|\meta{minutes}|'|. % Where the file is not found, the \meta{str var} will be empty. -% \begin{texnote} -% Currently this is not available with \XeTeX{}. -% \end{texnote} +% This is not available in older versions of \XeTeX{}. % \end{function} % % \begin{function}[added = 2014-07-02]{\file_if_exist_input:n, \file_if_exist_input:nF} @@ -451,8 +447,9 @@ % $2^{30}-1$, an error occurs. Entries are generated in the same way % as repeated calls to \cs{int_rand:nn} or \cs{int_rand:n} % respectively, in particular for the second function the -% \meta{minimum} is $1$. This is not yet available in \XeTeX{}. +% \meta{minimum} is $1$. % Assignments are always global. +% This is not available in older versions of \XeTeX{}. % \end{function} % % \subsection{Working with contents of integer arrays} @@ -632,7 +629,8 @@ % \end{syntax} % Selects a pseudo-random key--value pair from the \meta{property list} % and returns \Arg{key} and \Arg{value}. If the \meta{property list} is -% empty the result is empty. This is not yet available in \XeTeX{}. +% empty the result is empty. +% This is not available in older versions of \XeTeX{}. % \begin{texnote} % The result is returned within the \tn{unexpanded} % primitive (\cs{exp_not:n}), which means that the \meta{value} @@ -4443,34 +4441,39 @@ \exp_after:wN \@@_tmp:w \l_@@_internal_a_tl \@@_loop:nn } - \cs_set_protected:Npn \@@_tmp:w #1#2#3#4#5#6#7#8 + \cs_set_protected:Npn \@@_tmp:nnnn #1#2#3#4#5 { \tl_const:cx { - c_@@_lower_case_ - \char_generate:nn {#1} { 12 } + c_@@_ #1 _case_ \char_generate:nn {#2} { 12 } + \char_generate:nn {#3} { 12 } _tl } { \exp_after:wN \exp_after:wN \exp_after:wN - \exp_not:N \char_generate:nn {#5} { 13 } + \exp_not:N \char_generate:nn {#4} { 13 } \exp_after:wN \exp_after:wN \exp_after:wN - \exp_not:N \char_generate:nn {#6} { 13 } + \exp_not:N \char_generate:nn {#5} { 13 } } + } + \cs_set_protected:Npn \@@_tmp:w #1#2#3#4#5#6#7#8 + { \tl_const:cx { - c_@@_upper_case_ - \char_generate:nn {#5} { 12 } - \char_generate:nn {#6} { 12 } + c_@@_lower_case_ + \char_generate:nn {#1} { 12 } + \char_generate:nn {#2} { 12 } _tl } { \exp_after:wN \exp_after:wN \exp_after:wN - \exp_not:N \char_generate:nn {#1} { 13 } + \exp_not:N \char_generate:nn {#5} { 13 } \exp_after:wN \exp_after:wN \exp_after:wN - \exp_not:N \char_generate:nn {#2} { 13 } + \exp_not:N \char_generate:nn {#6} { 13 } } + \@@_tmp:nnnn { upper } {#5} {#6} {#1} {#2} + \@@_tmp:nnnn { mixed } {#5} {#6} {#1} {#2} } \@@_loop:nn { 00C0 } { 00E0 } diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx index 3ed242d1809..2972346e50b 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx index 2f9429c6d12..59cf147c27b 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3coffins.dtx Copyright(C) 2010-2019 The LaTeX3 Project +%% File: l3coffins.dtx Copyright (C) 2010-2019 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx index aa5b6a1d2ec..1946a9a269e 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3color-base.dtx Copyright(C) 2011,2012,2014,2016-2019 The LaTeX3 Project +%% File: l3color-base.dtx Copyright (C) 2011,2012,2014,2016-2019 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx index 37860cf2cb3..5015598e4d6 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx index 43a05058002..01bc02e5e31 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx @@ -29,7 +29,7 @@ \askforoverwritefalse \preamble -Copyright (C) 1990-2017 The LaTeX3 Project +Copyright (C) 1990-2017,2019 The LaTeX3 Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of @@ -77,7 +77,7 @@ and all files in that bundle must be distributed together. % % \title{The \cls{l3doc} class} % \author{\Team} -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % \maketitle % \tableofcontents % @@ -1351,6 +1351,8 @@ and all files in that bundle must be distributed together. { The~deprecated~function(s)~'#1'~should~have~been~removed~on~#2. } \msg_new:nnn { l3doc } { date-format } { The~date~'#1'~should~be~given~in~YYYY-MM-DD~format. } +\msg_new:nnn { l3doc } { future-date } + { The~added/updated~date~'#2'~of~'#1'~is~in~the~future. } \msg_new:nnn { l3doc } { syntax-nested-function } { The~'syntax'~environment~should~be~used~in~the~ @@ -2370,8 +2372,8 @@ and all files in that bundle must be distributed together. \bool_set_true:N \l_@@_macro_noTF_bool \bool_set_true:N \l_@@_macro_TF_bool } , - added .code:n = { \@@_date_set:Nn \l_@@_date_added_tl {#1} }, - updated .code:n = { \@@_date_set:Nn \l_@@_date_updated_tl {#1} } , + added .code:n = { \@@_date_set_past:Nn \l_@@_date_added_tl {#1} }, + updated .code:n = { \@@_date_set_past:Nn \l_@@_date_updated_tl {#1} } , deprecated .code:n = { \@@_deprecated_on:n {#1} } , tested .code:n = { } , label .code:n = @@ -2385,9 +2387,11 @@ and all files in that bundle must be distributed together. } % \end{macrocode} % -% \begin{macro}{\@@_date_set:Nn} +% \begin{macro}{\@@_date_set:Nn,\@@_date_set_past:Nn} % Normalize the date into the format \texttt{YYYY-MM-DD}; more -% precisely month and day are allowed to be single digits. +% precisely month and day are allowed to be single digits. The +% \cs{@@_date_set_past:Nn} function only allows dates in the past (or +% same day). % \begin{macrocode} \cs_new_protected:Npn \@@_date_set:Nn #1#2 { @@ -2399,6 +2403,17 @@ and all files in that bundle must be distributed together. \tl_set:Nn #1 { 1970-01-01 } } } +\cs_new_protected:Npn \@@_date_set_past:Nn #1#2 + { + \@@_date_set:Nn #1 {#2} + \exp_args:No \@@_date_compare:nNnT + {#1} > { \tex_year:D - \tex_month:D - \tex_day:D } + { + \msg_error:nnxx { l3doc } { future-date } + { \tl_to_str:N \l_@@_macro_argument_tl } + {#1} + } + } % \end{macrocode} % \end{macro} % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx index 96633a2f925..175b865f832 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx @@ -61,7 +61,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx index 340af23602f..4028ef36d1c 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3drivers.dtx Copyright(C) 2011-2019 The LaTeX3 Project +%% File: l3drivers.dtx Copyright (C) 2011-2019 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % @@ -554,23 +554,23 @@ %<*package> \ProvidesExplFile %<*dvipdfmx> - {l3dvidpfmx.def}{2019-01-01}{} + {l3dvidpfmx.def}{2019-01-12}{} {L3 Experimental driver: dvipdfmx} %</dvipdfmx> %<*dvips> - {l3dvips.def}{2019-01-01}{} + {l3dvips.def}{2019-01-12}{} {L3 Experimental driver: dvips} %</dvips> %<*dvisvgm> - {l3dvisvgm.def}{2019-01-01}{} + {l3dvisvgm.def}{2019-01-12}{} {L3 Experimental driver: dvisvgm} %</dvisvgm> %<*pdfmode> - {l3pdfmode.def}{2019-01-01}{} + {l3pdfmode.def}{2019-01-12}{} {L3 Experimental driver: PDF mode} %</pdfmode> %<*xdvipdfmx> - {l3xdvidpfmx.def}{2019-01-01}{} + {l3xdvidpfmx.def}{2019-01-12}{} {L3 Experimental driver: xdvipdfmx} %</xdvipdfmx> %</package> diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx index 7d5d2bf5d22..e6794c011d3 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx index 1b1248f2484..c6edd31bf4e 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % @@ -1002,11 +1002,11 @@ \cs_new_protected:Npn \@@_map_inline_loop:NNN #1#2#3 { #2 #3 \l_@@_internal_tl - \ior_if_eof:NF #3 - { - \exp_args:No #1 \l_@@_internal_tl - \@@_map_inline_loop:NNN #1#2#3 - } + \if_eof:w #3 + \exp_after:wN \use_none:nnnnnnn + \fi: + \exp_args:No #1 \l_@@_internal_tl + \@@_map_inline_loop:NNN #1#2#3 } % \end{macrocode} % \end{macro} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx index 36809a81885..3909edc9159 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx index 2a5e284ecd8..f8c2d33457d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx index d5527679b62..32c94b8f302 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % \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 785c6693069..fc59a450269 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3fp-aux.dtx Copyright(C) 2011-2019 The LaTeX3 Project +%% File: l3fp-aux.dtx Copyright (C) 2011-2019 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx index 1cb866748b6..7c2ee489d77 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx index 2eaf34da4ca..c1de61c7a8a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3fp-convert.dtx Copyright(C) 2011-2019 The LaTeX3 Project +%% File: l3fp-convert.dtx Copyright (C) 2011-2019 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx index d1c3adfdbab..31e59bd0fef 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx index d6c897f4ce2..13e93ca1ea8 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx index d28685e956e..60d6921182f 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx index a35c9ed97bb..1e7f9f81b96 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx index c38d03b584a..2167fbaf477 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx index 2c612568e5b..9ab4fb5c80d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3fp-round.dtx Copyright(C) 2011-2019 The LaTeX3 Project +%% File: l3fp-round.dtx Copyright (C) 2011-2019 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx index efeaeaf1b56..74bce8be725 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % \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 af79954fe77..5e49a6eca0f 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx index b3f9a5801ea..8de76e43c29 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx @@ -47,7 +47,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % @@ -91,18 +91,21 @@ % $\operatorname{asinh} x$, $\operatorname{acosh} x$, % $\operatorname{atanh} x$, $\operatorname{acoth} x$, % $\operatorname{asech} x$, $\operatorname{acsch} x$. -% \item Extrema: $\max(x,y,\ldots)$, $\min(x,y,\ldots)$, +% \item Extrema: $\max(x_{1},x_{2},\ldots)$, $\min(x_{1},x_{2},\ldots)$, % $\operatorname{abs}(x)$. -% \item Rounding functions ($n=0$ by default, $t=\nan$ by default): -% $\operatorname{trunc}(x,n)$ rounds towards zero, -% $\operatorname{floor}(x,n)$ rounds towards~$-\infty$, -% $\operatorname{ceil}(x,n)$ rounds towards~$+\infty$, -% $\operatorname{round}(x,n,t)$ rounds to the closest value, with +% \item Rouning functions, controlled by two optional +% values, $n$ (number of places, $0$ by default) and +% $t$ (behavior on a tie, $\nan$ by default): +% \begin{itemize} +% \item $\operatorname{trunc}(x,n)$ rounds towards zero, +% \item $\operatorname{floor}(x,n)$ rounds towards~$-\infty$, +% \item $\operatorname{ceil}(x,n)$ rounds towards~$+\infty$, +% \item $\operatorname{round}(x,n,t)$ rounds to the closest value, with % ties rounded to an even value by default, towards zero if $t=0$, -% towards $+\infty$ if $t>0$ and towards $-\infty$ if $t<0$. And -% \emph{(not yet)} modulo, and \enquote{quantize}. -% \item Random numbers: $\mathop{rand}()$, $\mathop{randint}(m,n)$ in -% all engines except \XeTeX{}. +% towards $+\infty$ if $t>0$ and towards $-\infty$ if $t<0$. +% \end{itemize} +% And \emph{(not yet)} modulo, and \enquote{quantize}. +% \item Random numbers: $\mathop{rand}()$, $\mathop{randint}(m,n)$. % \item Constants: \texttt{pi}, \texttt{deg} (one degree in radians). % \item Dimensions, automatically expressed in points, \emph{e.g.}, % \texttt{pc} is~$12$. @@ -1263,13 +1266,13 @@ % \cs{fp_eval:n} \{ |rand()| \} % \end{syntax} % Produces a pseudo-random floating-point number (multiple of -% $10^{-16}$) between $0$~included and $1$~excluded. This is not yet -% available in \XeTeX{}. The random seed can be queried using +% $10^{-16}$) between $0$~included and $1$~excluded. This is not available +% in older versions of \XeTeX{}. The random seed can be queried using % \cs{sys_rand_seed:} and set using \cs{sys_gset_rand_seed:n}. % \begin{texnote} % This is based on pseudo-random numbers provided by the engine's % primitive \tn{pdfuniformdeviate} in \pdfTeX{}, \pTeX{}, \upTeX{} -% and \tn{uniformdeviate} in \LuaTeX{}. The underlying code is +% and \tn{uniformdeviate} in \LuaTeX{} and \XeTeX{}. The underlying code is % based on Metapost, which follows an additive scheme recommended in % Section 3.6 of \enquote{The Art of Computer Programming, % Volume~2}. diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx index 645c9106276..29f4f0c18fc 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx index 30e5841cc26..7e187b3317f 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % @@ -791,8 +791,8 @@ % \cs{int_rand:nn} \Arg{intexpr_1} \Arg{intexpr_2} % \end{syntax} % Evaluates the two \meta{integer expressions} and produces a -% pseudo-random number between the two (with bounds included). This -% is not yet available in \XeTeX{}. +% pseudo-random number between the two (with bounds included). +% This is not available in older versions of \XeTeX{}. % \end{function} % % \begin{function}[EXP, added = 2018-05-05]{\int_rand:n} @@ -801,7 +801,7 @@ % \end{syntax} % Evaluates the \meta{integer expression} then produces a % pseudo-random number between $1$ and the \meta{intexpr} (included). -% This is not yet available in \XeTeX{}. +% This is not available in older versions of \XeTeX{}. % \end{function} % % \section{Viewing integers} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx index df0086a304b..19cc4701f72 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx index bfa72d34198..d44e2b3f7d6 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx index 99872d40ada..131d1a2ebab 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx index 6c37f960f78..22c09709aac 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx index 504419ac23d..5ee6fdf4a06 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % @@ -213,7 +213,7 @@ % |Package| is the standard outcome: see \cs{msg_module_type:n}. % \end{function} % -% \begin{function}[EXP, added = 2019-10-10]{\msg_module_name:n} +% \begin{function}[EXP, added = 2018-10-10]{\msg_module_name:n} % \begin{syntax} % \cs{msg_module_name:n} \Arg{module} % \end{syntax} @@ -222,7 +222,7 @@ % unchanged). % \end{function} % -% \begin{function}[EXP, added = 2019-10-10]{\msg_module_type:n} +% \begin{function}[EXP, added = 2018-10-10]{\msg_module_type:n} % \begin{syntax} % \cs{msg_module_type:n} \Arg{module} % \end{syntax} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx index bc8ebd43ed2..a3a72edd0d8 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx index e2d840e61bd..2fec4a8a024 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx index dabb81ef207..286596b432c 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx index a14c8a2a0d1..eb3a7e1ea61 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx index a7c8f1db9e8..d4a4a296ced 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx index 5cf035feca5..7bf9b87c8b1 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % @@ -294,8 +294,8 @@ % \cs{seq_rand_item:N} \meta{seq~var} % \end{syntax} % Selects a pseudo-random item of the \meta{sequence}. If the -% \meta{sequence} is empty the result is empty. This is not yet -% available in \XeTeX{}. +% \meta{sequence} is empty the result is empty. +% This is not available in older versions of \XeTeX{}. % \begin{texnote} % The result is returned within the \tn{unexpanded} % primitive (\cs{exp_not:n}), which means that the \meta{item} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx index 4b74e4e4e0c..7139235e963 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx index a3e71fbdf6f..a69607a88e5 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx index 4b8ea892e4c..c9e4f4ed138 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % @@ -731,9 +731,7 @@ % \emph{only} the Latin alphabet characters A--Z are case-folded % (\emph{i.e.}~the \textsc{ascii} range which coincides with % \textsc{utf-8}). Full \textsc{utf-8} support is available with both -% \XeTeX{} and \LuaTeX{}, subject only to the fact that \XeTeX{} in -% particular has issues with characters of code above hexadecimal -% $0\mathrm{xFFFF}$ when interacting with \cs{tl_to_str:n}. +% \XeTeX{} and \LuaTeX{}. % \end{texnote} % \end{function} % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx index 557739569f1..c188ce7fc7a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx index 1d2527dc041..f3025067d07 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx index 1d44094605b..6bd75f94949 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % @@ -1016,8 +1016,8 @@ % \cs{tl_rand_item:n} \Arg{token list} % \end{syntax} % Selects a pseudo-random item of the \meta{token list}. If the -% \meta{token list} is blank, the result is empty. This is not yet -% available in \XeTeX{}. +% \meta{token list} is blank, the result is empty. +% This is not available in older versions of \XeTeX{}. % \begin{texnote} % The result is returned within the \tn{unexpanded} % primitive (\cs{exp_not:n}), which means that the \meta{item} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx index e2046695e6f..7a84c08c24d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % @@ -139,10 +139,11 @@ % \item $8$ (math subscript) % \item $11$ (letter) % \item $12$ (other) -% \item $13$ (active) (not \XeTeX{}) +% \item $13$ (active) % \end{itemize} % and other values raise an error. The \meta{charcode} may be any one valid % for the engine in use. +% Active characters cannot be generated in older versions of \XeTeX{}. % \end{function} % % \begin{variable}[added = 2011-09-05]{\c_catcode_other_space_tl} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx index ef39b6e3dc1..23a471d1a48 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2019-01-01} +% \date{Released 2019-01-12} % % \maketitle % @@ -73,7 +73,9 @@ % As only the data needs to remain at the end of this process, everything % is set up inside a group. The only thing that is outside is creating a % stream: they are global anyway and it is best to force a stream for -% all engines. +% all engines. For performance reasons, some of the code here is very +% low-level: the material is read during loading \pkg{expl3} in package +% mode. % \begin{macrocode} \ior_new:N \g_@@_data_ior \bool_lazy_or:nnTF { \sys_if_engine_luatex_p: } { \sys_if_engine_xetex_p: } @@ -84,6 +86,29 @@ % \begin{macrocode} \cs_set_eq:NN \@@_generate:w \tex_Uchar:D % \end{macrocode} +% A fast local implementation for generating characters. +% \begin{macrocode} + \cs_set:Npx \@@_generate:n #1 + { + \sys_if_engine_luatex:TF + { + \exp_not:N \lua_now:e + { + l3kernel.charcat + ( + \exp_not:N \tex_number:D #1 , + \exp_not:N \tex_the:D \tex_catcode:D #1 + ) + } + } + { + \exp_not:N \tex_Ucharcat:D + \exp_not:N \tex_number:D #1 ~ + \c_space_tl + \exp_not:N \tex_the:D \tex_catcode:D #1 ~ + } + } +% \end{macrocode} % Parse the main Unicode data file for title case exceptions (the one-to-one % lower and upper case mappings it contains are all be covered by the \TeX{} % data). There are no comments in the main data file so this can be done using @@ -96,23 +121,22 @@ \cs_set_protected:Npn \@@_data_auxii:w #1 ; #2 ; #3 ; #4 ; #5 ; #6 ; #7 \q_stop { - \tl_if_blank:nF {#7} - { - \str_if_eq:nnF {#5} {#7} - { - \tl_const:cx - { c_@@_mixed_case_ \@@_generate:w "#1 _tl } - { - \char_generate:nn { "#7 } - { \char_value_catcode:n { "#7 } } - } - } - } + \cs_set_nopar:Npn \l_@@_tmpa_tl {#7} + \reverse_if:N \if_meaning:w \l_@@_tmpa_tl \c_empty_tl + \cs_set_nopar:Npn \l_@@_tmpb_tl {#5} + \reverse_if:N \if_meaning:w \l_@@_tmpa_tl \l_@@_tmpb_tl + \tl_const:cx + { c_@@_mixed_case_ \@@_generate:w "#1 _tl } + { \@@_generate:n { "#7 } } + \fi: + \fi: } \ior_map_inline:Nn \g_@@_data_ior { - \tl_if_blank:nF {#1} - { \@@_data_auxi:w #1 \q_stop } + \cs_set_nopar:Npn \l_@@_tmpa_tl {#1} + \reverse_if:N \if_meaning:w \l_@@_tmpa_tl \c_space_tl + \@@_data_auxi:w #1 \q_stop + \fi: } \ior_close:N \g_@@_data_ior % \end{macrocode} @@ -126,46 +150,37 @@ \ior_open:Nn \g_@@_data_ior { CaseFolding.txt } \cs_set_protected:Npn \@@_data_auxi:w #1 ;~ #2 ;~ #3 ; #4 \q_stop { - \str_if_eq:nnTF {#2} { C } - { - \int_compare:nNnF - { \char_value_lccode:n {"#1} } = {"#3} - { - \tl_const:cx - { c_@@_fold_case_ \@@_generate:w "#1 _tl } - { - \char_generate:nn { "#3 } - { \char_value_catcode:n { "#3 } } - } - } - } - { - \str_if_eq:nnT {#2} { F } - { \@@_data_auxii:w #1 ~ #3 ~ \q_stop } - } + \if:w \tl_head:n { #2 ? } C + \reverse_if:N \if_int_compare:w + \char_value_lccode:n {"#1} = "#3 ~ + \tl_const:cx + { c_@@_fold_case_ \@@_generate:w "#1 _tl } + { \@@_generate:n { "#3 } } + \fi: + \else: + \if:w \tl_head:n { #2 ? } F + \@@_data_auxii:w #1 ~ #3 ~ \q_stop + \fi: + \fi: } \cs_set_protected:Npn \@@_data_auxii:w #1 ~ #2 ~ #3 ~ #4 \q_stop { \tl_const:cx { c_@@_fold_case_ \@@_generate:w "#1 _tl } { - \char_generate:nn { "#2 } - { \char_value_catcode:n { "#2 } } - \char_generate:nn { "#3 } - { \char_value_catcode:n { "#3 } } + \@@_generate:n { "#2 } + \@@_generate:n { "#3 } \tl_if_blank:nF {#4} - { - \char_generate:nn { "#4 } - { \char_value_catcode:n { "#4 } } - } + { \@@_generate:n { "#4 } } } } \ior_str_map_inline:Nn \g_@@_data_ior { - \tl_if_blank:nF {#1} - { - \str_if_eq:eeF { \tl_head:n {#1} } { \c_hash_str } - { \@@_data_auxi:w #1 \q_stop } - } + \cs_set_nopar:Npn \l_@@_tmpa_tl {#1} + \reverse_if:N \if_meaning:w \l_@@_tmpa_tl \c_empty_tl + \reverse_if:N \if:w \tl_head:n { #1 ? } \c_hash_str + \@@_data_auxi:w #1 \q_stop + \fi: + \fi: } \ior_close:N \g_@@_data_ior % \end{macrocode} @@ -189,31 +204,30 @@ { \tl_const:cx { c_@@_ #2 _case_ \@@_generate:w "#1 _tl } { - \char_generate:nn { "#3 } - { \char_value_catcode:n { "#3 } } - \char_generate:nn { "#4 } - { \char_value_catcode:n { "#4 } } + \@@_generate:n { "#3 } + \@@_generate:n { "#4 } \tl_if_blank:nF {#5} - { - \char_generate:nn { "#5 } - { \char_value_catcode:n { "#5 } } - } + { \@@_generate:n { "#5 } } } } } \ior_str_map_inline:Nn \g_@@_data_ior { - \tl_if_blank:nF {#1} - { - \str_if_eq:eeTF { \tl_head:n {#1} } { \c_hash_str } + \cs_set_nopar:Npn \l_@@_tmpa_tl {#1} + \reverse_if:N \if_meaning:w \l_@@_tmpa_tl \c_empty_tl + \if:w \tl_head:n { #1 ? } \c_hash_str + \cs_set_nopar:Npx \l_@@_tmpb_tl { - \str_if_eq:eeT - {#1} - { \c_hash_str \c_space_tl Conditional~Mappings } - { \ior_map_break: } + \c_hash_str \c_space_tl + \tl_to_str:n { Conditional~Mappings } } - { \@@_data_auxi:w #1 \q_stop } - } + \if_meaning:w \l_@@_tmpa_tl \l_@@_tmpb_tl + \exp_after:wN \exp_after:wN \exp_after:wN \ior_map_break: + \fi: + \else: + \@@_data_auxi:w #1 \q_stop + \fi: + \fi: } \ior_close:N \g_@@_data_ior \group_end: |