diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex | 110 |
1 files changed, 65 insertions, 45 deletions
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex index 73bfa9ffd80..1a33daae9a2 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex @@ -56,7 +56,7 @@ %% l3legacy.dtx (with options: `package') %% l3deprecation.dtx (with options: `package,kernel') %% -%% Copyright (C) 1990-2020 The LaTeX3 Project +%% Copyright (C) 1990-2021 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 @@ -69,7 +69,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2020-12-07}% +\def\ExplFileDate{2021-01-09}% \begingroup \def\next{\endgroup}% \expandafter\ifx\csname PackageError\endcsname\relax @@ -7582,10 +7582,14 @@ \__kernel_tl_gset:Nx \g__sys_backend_tl { \sys_if_engine_xetex:TF - { xdvipdfmx } + { xetex } { \sys_if_output_pdf:TF - { pdfmode } + { + \sys_if_engine_pdftex:TF + { pdftex } + { luatex } + } { dvips } } } @@ -12486,48 +12490,46 @@ \group_begin: \cs_set_protected:Npn \__keyval_tmp:NN #1#2 { - \cs_new:Npn \keyval_parse:NNn ##1 ##2 ##3 - { \__keyval_loop_active:NNw ##1 ##2 \s__keyval_mark ##3 #1 \s__keyval_tail #1 } - \cs_new:Npn \__keyval_loop_active:NNw ##1 ##2 ##3 #1 + \cs_new:Npn \keyval_parse:nnn ##1 ##2 ##3 + { \__keyval_loop_active:nnw {##1} {##2} \s__keyval_mark ##3 #1 \s__keyval_tail #1 } + \cs_new_eq:NN \keyval_parse:NNn \keyval_parse:nnn + \cs_new:Npn \__keyval_loop_active:nnw ##1 ##2 ##3 #1 { \__keyval_if_recursion_tail:w ##3 \__keyval_end_loop_active:w \s__keyval_tail - \__keyval_loop_other:NNw ##1 ##2 ##3 , \s__keyval_tail , - \__keyval_loop_active:NNw ##1 ##2 \s__keyval_mark + \__keyval_loop_other:nnw {##1} {##2} ##3 , \s__keyval_tail , } - \cs_new:Npn \__keyval_split_other:w ##1 = ##2 \s__keyval_mark ##3 ##4 \s__keyval_stop + \cs_new:Npn \__keyval_split_other:w ##1 = ##2 \s__keyval_mark ##3 { ##3 ##1 \s__keyval_stop \s__keyval_mark ##2 } - \cs_new:Npn \__keyval_split_active:w ##1 #2 ##2 \s__keyval_mark ##3 ##4 \s__keyval_stop + \cs_new:Npn \__keyval_split_active:w ##1 #2 ##2 \s__keyval_mark ##3 { ##3 ##1 \s__keyval_stop \s__keyval_mark ##2 } - \cs_new:Npn \__keyval_loop_other:NNw ##1 ##2 ##3 , + \cs_new:Npn \__keyval_loop_other:nnw ##1 ##2 ##3 , { \__keyval_if_recursion_tail:w ##3 \__keyval_end_loop_other:w \s__keyval_tail \__keyval_split_active:w ##3 \s__keyval_nil \s__keyval_mark \__keyval_split_active_auxi:w #2 \s__keyval_mark \__keyval_clean_up_active:w - \s__keyval_stop - ##1 ##2 - \__keyval_loop_other:NNw ##1 ##2 \s__keyval_mark + {##1} {##2} + \s__keyval_mark } \cs_new:Npn \__keyval_split_active_auxi:w ##1 \s__keyval_stop { \__keyval_split_other:w ##1 \s__keyval_nil \s__keyval_mark \__keyval_misplaced_equal_after_active_error:w = \s__keyval_mark \__keyval_split_active_auxii:w - \s__keyval_stop } \cs_new:Npn \__keyval_split_active_auxii:w ##1 \s__keyval_nil \s__keyval_mark \__keyval_misplaced_equal_after_active_error:w \s__keyval_stop \s__keyval_mark - { \__keyval_trim:nN { ##1 } \__keyval_split_active_auxiii:w } + ##2 \s__keyval_nil #2 \s__keyval_mark \__keyval_clean_up_active:w + { \__keyval_trim:nN {##1} \__keyval_split_active_auxiii:w ##2 \s__keyval_nil } \cs_new:Npn \__keyval_split_active_auxiii:w ##1 ##2 \s__keyval_nil { \__keyval_split_active:w ##2 \s__keyval_nil \s__keyval_mark \__keyval_misplaced_equal_in_split_error:w #2 \s__keyval_mark \__keyval_split_active_auxiv:w - \s__keyval_stop - { ##1 } + {##1} } \cs_new:Npn \__keyval_split_active_auxiv:w ##1 \s__keyval_nil \s__keyval_mark \__keyval_misplaced_equal_in_split_error:w @@ -12536,90 +12538,93 @@ \__keyval_split_other:w ##1 \s__keyval_nil \s__keyval_mark \__keyval_misplaced_equal_in_split_error:w = \s__keyval_mark \__keyval_split_active_auxv:w - \s__keyval_stop } \cs_new:Npn \__keyval_split_active_auxv:w ##1 \s__keyval_nil \s__keyval_mark \__keyval_misplaced_equal_in_split_error:w \s__keyval_stop \s__keyval_mark - { \__keyval_trim:nN { ##1 } \__keyval_pair:nnNN } + { \__keyval_trim:nN { ##1 } \__keyval_pair:nnnn } \cs_new:Npn \__keyval_clean_up_active:w ##1 \s__keyval_nil \s__keyval_mark \__keyval_split_active_auxi:w \s__keyval_stop \s__keyval_mark { \__keyval_split_other:w ##1 \s__keyval_nil \s__keyval_mark \__keyval_split_other_auxi:w = \s__keyval_mark \__keyval_clean_up_other:w - \s__keyval_stop } \cs_new:Npn \__keyval_split_other_auxi:w ##1 \s__keyval_stop { \__keyval_trim:nN { ##1 } \__keyval_split_other_auxii:w } - \cs_new:Npn \__keyval_split_other_auxii:w ##1 ##2 \s__keyval_nil + \cs_new:Npn \__keyval_split_other_auxii:w + ##1 ##2 \s__keyval_nil = \s__keyval_mark \__keyval_clean_up_other:w { \__keyval_split_other:w ##2 \s__keyval_nil \s__keyval_mark \__keyval_misplaced_equal_in_split_error:w = \s__keyval_mark \__keyval_split_other_auxiii:w - \s__keyval_stop { ##1 } } \cs_new:Npn \__keyval_split_other_auxiii:w ##1 \s__keyval_nil \s__keyval_mark \__keyval_misplaced_equal_in_split_error:w \s__keyval_stop \s__keyval_mark - { \__keyval_trim:nN { ##1 } \__keyval_pair:nnNN } + { \__keyval_trim:nN { ##1 } \__keyval_pair:nnnn } \cs_new:Npn \__keyval_clean_up_other:w ##1 \s__keyval_nil \s__keyval_mark \__keyval_split_other_auxi:w \s__keyval_stop \s__keyval_mark { \__keyval_if_blank:w ##1 \s__keyval_nil \s__keyval_stop \__keyval_blank_true:w - \s__keyval_mark \s__keyval_stop \use:n - { \__keyval_trim:nN { ##1 } \__keyval_key:nNN } + \s__keyval_mark \s__keyval_stop + \__keyval_trim:nN { ##1 } \__keyval_key:nn } \cs_new:Npn \__keyval_misplaced_equal_after_active_error:w \s__keyval_mark ##1 \s__keyval_stop \s__keyval_mark ##2 \s__keyval_nil - \s__keyval_mark ##3 \s__keyval_nil ##4 ##5 + = \s__keyval_mark \__keyval_split_active_auxii:w + \s__keyval_mark ##3 \s__keyval_nil + #2 \s__keyval_mark \__keyval_clean_up_active:w { \__kernel_msg_expandable_error:nn { kernel } { misplaced-equals-sign } + \__keyval_loop_other:nnw } \cs_new:Npn \__keyval_misplaced_equal_in_split_error:w \s__keyval_mark ##1 \s__keyval_stop \s__keyval_mark ##2 \s__keyval_nil - ##3 ##4 ##5 + ##3 \s__keyval_mark ##4 ##5 { \__kernel_msg_expandable_error:nn { kernel } { misplaced-equals-sign } + \__keyval_loop_other:nnw } \cs_new:Npn \__keyval_end_loop_other:w \s__keyval_tail - \__keyval_split_active:w ##1 \s__keyval_nil - \s__keyval_mark \__keyval_split_active_auxi:w + \__keyval_split_active:w + \s__keyval_mark \s__keyval_tail + \s__keyval_nil \s__keyval_mark + \__keyval_split_active_auxi:w #2 \s__keyval_mark \__keyval_clean_up_active:w - \s__keyval_stop - ##2 ##3 - \__keyval_loop_other:NNw ##4 \s__keyval_mark - { } + { \__keyval_loop_active:nnw } \cs_new:Npn \__keyval_end_loop_active:w \s__keyval_tail - \__keyval_loop_other:NNw ##1 , \s__keyval_tail , - \__keyval_loop_active:NNw ##2 \s__keyval_mark + \__keyval_loop_other:nnw ##1 \s__keyval_mark \s__keyval_tail , \s__keyval_tail , { } } \char_set_catcode_active:n { `\, } \char_set_catcode_active:n { `\= } \__keyval_tmp:NN , = \group_end: -\cs_new:Npn \__keyval_pair:nnNN #1 #2 #3 #4 +\cs_new:Npn \__keyval_pair:nnnn #1 #2 #3 #4 { \__keyval_if_blank:w \s__keyval_mark #2 \s__keyval_nil \s__keyval_stop \__keyval_blank_key_error:w \s__keyval_mark \s__keyval_stop \exp_not:n { #4 { #2 } { #1 } } + \__keyval_loop_other:nnw {#3} {#4} } -\cs_new:Npn \__keyval_key:nNN #1 #2 #3 +\cs_new:Npn \__keyval_key:nn #1 #2 { \__keyval_if_blank:w \s__keyval_mark #1 \s__keyval_nil \s__keyval_stop \__keyval_blank_key_error:w \s__keyval_mark \s__keyval_stop \exp_not:n { #2 { #1 } } + \__keyval_loop_other:nnw {#2} } \cs_new:Npn \__keyval_if_empty:w #1 \s__keyval_mark \s__keyval_stop { } \cs_new:Npn \__keyval_if_blank:w \s__keyval_mark #1 { \__keyval_if_empty:w \s__keyval_mark } \cs_new:Npn \__keyval_if_recursion_tail:w \s__keyval_mark #1 \s__keyval_tail { } -\cs_new:Npn \__keyval_blank_true:w \s__keyval_mark \s__keyval_stop \use:n #1 #2 #3 { } +\cs_new:Npn \__keyval_blank_true:w \s__keyval_mark \s__keyval_stop \__keyval_trim:nN #1 \__keyval_key:nn + { \__keyval_loop_other:nnw } \cs_new:Npn \__keyval_blank_key_error:w \s__keyval_mark \s__keyval_stop \exp_not:n #1 { \__kernel_msg_expandable_error:nn @@ -12642,7 +12647,6 @@ \__keyval_trim_auxiii:w #1 \s__keyval_nil \__keyval_trim_auxiv:w - \s__keyval_stop } \cs_new:Npn \__keyval_trim_auxi:w ##1 \s__keyval_mark #1 ##2 \s__keyval_mark ##3 { @@ -12663,8 +12667,11 @@ ##1 \s__keyval_nil \__keyval_trim_auxiii:w } - \cs_new:Npn \__keyval_trim_auxiv:w \s__keyval_mark ##1 \s__keyval_nil ##2 \s__keyval_stop ##3 - { ##3 { ##1 } } + \cs_new:Npn \__keyval_trim_auxiv:w + \s__keyval_mark ##1 \s__keyval_nil + \__keyval_trim_auxiii:w \s__keyval_nil \__keyval_trim_auxiii:w + ##2 + { ##2 { ##1 } } } \__keyval_tmp:n { ~ } \group_end: @@ -30879,15 +30886,28 @@ { \str_if_eq:nnTF {#1} { \protect } { \__text_purify_protect:N } + { \__text_purify_encoding:N #1 } + } +\cs_new:Npn \__text_purify_protect:N #1 + { + \__text_if_recursion_tail_stop_do:Nn #1 { \__text_purify_end:w } + \__text_purify_loop:w + } +\cs_new:Npn \__text_purify_encoding:N #1 + { + \bool_lazy_or:nnTF + { \cs_if_eq_p:NN #1 \@current@cmd } + { \cs_if_eq_p:NN #1 \@changed@cmd } + { \__text_purify_encoding_escape:NN } { \__text_if_expandable:NTF #1 { \exp_after:wN \__text_purify_loop:w #1 } { \__text_purify_loop:w } } } -\cs_new:Npn \__text_purify_protect:N #1 +\cs_new:Npn \__text_purify_encoding_escape:NN #1#2 { - \__text_if_recursion_tail_stop_do:Nn #1 { \__text_purify_end:w } + \__text_purify_store:n {#1} \__text_purify_loop:w } \cs_new_protected:Npn \text_declare_purify_equivalent:Nn #1#2 |