diff options
author | Karl Berry <karl@freefriends.org> | 2020-09-24 20:46:14 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-09-24 20:46:14 +0000 |
commit | 2e1f687d46764061ec8df089e40b9ac1aece2761 (patch) | |
tree | b633d8a205fd529be57878fc2502e2c07a4c5efc /Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex | |
parent | c0e73acce7eb5e03fceb4e011fa579a5706460c2 (diff) |
l3 (24sep20)
git-svn-id: svn://tug.org/texlive/trunk@56424 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex | 401 |
1 files changed, 143 insertions, 258 deletions
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex index 9553268383f..7807eb086be 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex @@ -6,7 +6,7 @@ %% %% expl3.dtx (with options: `package') %% l3bootstrap.dtx (with options: `package') -%% l3names.dtx (with options: `package') +%% l3names.dtx (with options: `package,tex') %% l3basics.dtx (with options: `package') %% l3expan.dtx (with options: `package') %% l3quark.dtx (with options: `package') @@ -16,9 +16,9 @@ %% l3int.dtx (with options: `package') %% l3flag.dtx (with options: `package') %% l3prg.dtx (with options: `package') -%% l3sys.dtx (with options: `package') +%% l3sys.dtx (with options: `package,tex') %% l3clist.dtx (with options: `package') -%% l3token.dtx (with options: `package') +%% l3token.dtx (with options: `package,tex') %% l3prop.dtx (with options: `package') %% l3msg.dtx (with options: `package') %% l3file.dtx (with options: `package') @@ -69,7 +69,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2020-09-06}% +\def\ExplFileDate{2020-09-24}% \begingroup \def\next{\endgroup}% \expandafter\ifx\csname PackageError\endcsname\relax @@ -151,12 +151,16 @@ \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname directlua\endcsname\relax \else - \ifnum\luatexversion<95 % + \ifnum\luatexversion<110 % \else \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname newcatcodetable\endcsname\relax \input{ltluatex}% \fi + \begingroup\edef\ignored{% + \expandafter\noexpand\csname prg_return_true:\endcsname + \expandafter\noexpand\csname prg_return_false:\endcsname + }\endgroup \directlua{require("expl3")}% \ifnum 0% \directlua{ @@ -182,7 +186,7 @@ These are available in the engines\LineBreak - pdfTeX v1.40\LineBreak - XeTeX v0.99992\LineBreak - - LuaTeX v0.95\LineBreak + - LuaTeX v1.10\LineBreak - e-(u)pTeX mid-2012\LineBreak or later.\LineBreak \LineBreak @@ -205,7 +209,7 @@ \fi \expandafter\ifx\csname directlua\endcsname\relax \else - \ifnum\luatexversion<76 \else 1\fi + \ifnum\luatexversion<110 \else 1\fi \fi =0 % \newlinechar`\^^J % @@ -775,9 +779,6 @@ \__kernel_primitive:NN \pdfeachlinedepth \tex_eachlinedepth:D \__kernel_primitive:NN \pdfeachlineheight \tex_eachlineheight:D \__kernel_primitive:NN \pdfelapsedtime \tex_elapsedtime:D - \__kernel_primitive:NN \pdffiledump \tex_filedump:D - \__kernel_primitive:NN \pdffilemoddate \tex_filemoddate:D - \__kernel_primitive:NN \pdffilesize \tex_filesize:D \__kernel_primitive:NN \pdffirstlineheight \tex_firstlineheight:D \__kernel_primitive:NN \pdffontexpand \tex_fontexpand:D \__kernel_primitive:NN \pdffontsize \tex_fontsize:D @@ -788,7 +789,6 @@ \__kernel_primitive:NN \pdflastypos \tex_lastypos:D \__kernel_primitive:NN \pdfmapfile \tex_mapfile:D \__kernel_primitive:NN \pdfmapline \tex_mapline:D - \__kernel_primitive:NN \pdfmdfivesum \tex_mdfivesum:D \__kernel_primitive:NN \pdfnoligatures \tex_noligatures:D \__kernel_primitive:NN \pdfnormaldeviate \tex_normaldeviate:D \__kernel_primitive:NN \pdfpageheight \tex_pageheight:D @@ -801,7 +801,6 @@ \__kernel_primitive:NN \pdfrandomseed \tex_randomseed:D \__kernel_primitive:NN \pdfresettimer \tex_resettimer:D \__kernel_primitive:NN \pdfsavepos \tex_savepos:D - \__kernel_primitive:NN \pdfstrcmp \tex_strcmp:D \__kernel_primitive:NN \pdfsetrandomseed \tex_setrandomseed:D \__kernel_primitive:NN \pdfshellescape \tex_shellescape:D \__kernel_primitive:NN \pdftracingfonts \tex_tracingfonts:D @@ -828,6 +827,11 @@ \tex_fi:D \use_none:n { \tex_global:D \tex_let:D #2 #1 } } + \__kernel_primitive:NN \pdfstrcmp \tex_strcmp:D + \__kernel_primitive:NN \pdffilesize \tex_filesize:D + \__kernel_primitive:NN \pdfmdfivesum \tex_mdfivesum:D + \__kernel_primitive:NN \pdffilemoddate \tex_filemoddate:D + \__kernel_primitive:NN \pdffiledump \tex_filedump:D \__kernel_primitive:NN \suppressfontnotfounderror \tex_suppressfontnotfounderror:D \__kernel_primitive:NN \XeTeXcharclass \tex_XeTeXcharclass:D @@ -4772,28 +4776,7 @@ { p , T , F , TF } \prg_new_eq_conditional:NNn \str_if_empty:c \tl_if_empty:c { p , T , F , TF } -\cs_new:Npn \__str_if_eq:nn #1#2 { \tex_strcmp:D {#1} {#2} } -\cs_if_exist:NT \tex_luatexversion:D - { - \cs_set_eq:NN \lua_escape:e \tex_luaescapestring:D - \cs_set_eq:NN \lua_now:e \tex_directlua:D - \cs_set:Npn \__str_if_eq:nn #1#2 - { - \lua_now:e - { - l3kernel.strcmp - ( - " \__str_escape:n {#1} " , - " \__str_escape:n {#2} " - ) - } - } - \cs_new:Npn \__str_escape:n #1 - { - \lua_escape:e - { \__kernel_tl_to_str:w \use:e { {#1} } } - } - } +\cs_new_eq:NN \__str_if_eq:nn \tex_strcmp:D \prg_new_conditional:Npnn \str_if_eq:nn #1#2 { p , T , F , TF } { \if_int_compare:w @@ -7173,23 +7156,26 @@ \__sys_const:nn { sys_if_engine_ #1 } { \str_if_eq_p:Vn \c_sys_engine_str {#1} } } -\str_const:Nx \c_sys_engine_exec_str - { - \sys_if_engine_pdftex:T { pdf } - \sys_if_engine_xetex:T { xe } - \sys_if_engine_ptex:T { ep } - \sys_if_engine_uptex:T { eup } - \sys_if_engine_luatex:T - { - lua \lua_now:e - { - if (pcall(require, 'luaharfbuzz')) then ~ - tex.print("hb") ~ - end - } - } - tex - } +\group_begin: + \cs_set_eq:NN \lua_now:e \tex_directlua:D + \str_const:Nx \c_sys_engine_exec_str + { + \sys_if_engine_pdftex:T { pdf } + \sys_if_engine_xetex:T { xe } + \sys_if_engine_ptex:T { ep } + \sys_if_engine_uptex:T { eup } + \sys_if_engine_luatex:T + { + lua \lua_now:e + { + if (pcall(require, 'luaharfbuzz')) then ~ + tex.print("hb") ~ + end + } + } + tex + } +\group_end: \str_const:Nx \c_sys_engine_format_str { \cs_if_exist:NTF \fmtname @@ -7355,10 +7341,7 @@ \sys_if_engine_luatex:TF { \cs_new_protected:Npn \sys_shell_now:n #1 - { - \lua_now:e - { l3kernel.shellescape(" \lua_escape:e { \tl_to_str:n {#1} } ") } - } + { \__sys_shell_now:e { \exp_not:n {#1} } } } { \cs_new_protected:Npn \sys_shell_now:n #1 @@ -7368,10 +7351,7 @@ \sys_if_engine_luatex:TF { \cs_new_protected:Npn \sys_shell_shipout:n #1 - { - \lua_shipout_e:n - { l3kernel.shellescape(" \lua_escape:e { \tl_to_str:n {#1} } ") } - } + { \__sys_shell_shipout:e { \exp_not:n {#1} } } } { \cs_new_protected:Npn \sys_shell_shipout:n #1 @@ -8300,37 +8280,26 @@ \if_int_odd:w 0 \sys_if_engine_luatex:T { 1 } \sys_if_engine_xetex:T { 1 } \exp_stop_f: - \sys_if_engine_luatex:TF - { - \cs_new:Npn \__char_generate_aux:nnw #1#2#3 \exp_end: - { - #3 - \exp_after:wN \exp_after:wN \exp_after:wN \exp_end: - \lua_now:e { l3kernel.charcat(#1, #2) } - } - } - { - \cs_new:Npn \__char_generate_aux:nnw #1#2#3 \exp_end: - { - #3 - \exp_after:wN \exp_end: - \tex_Ucharcat:D #1 \exp_stop_f: #2 \exp_stop_f: - } - \cs_if_exist:NF \tex_expanded:D - { - \cs_new_eq:NN \__char_generate_auxii:nnw \__char_generate_aux:nnw - \cs_gset:Npn \__char_generate_aux:nnw #1#2#3 \exp_end: - { - #3 - \if_int_compare:w #2 = 13 \exp_stop_f: - \__kernel_msg_expandable_error:nn { kernel } { char-active } - \else: - \__char_generate_auxii:nnw {#1} {#2} - \fi: - \exp_end: - } - } - } + \cs_new:Npn \__char_generate_aux:nnw #1#2#3 \exp_end: + { + #3 + \exp_after:wN \exp_end: + \tex_Ucharcat:D #1 \exp_stop_f: #2 \exp_stop_f: + } + \cs_if_exist:NF \tex_expanded:D + { + \cs_new_eq:NN \__char_generate_auxii:nnw \__char_generate_aux:nnw + \cs_gset:Npn \__char_generate_aux:nnw #1#2#3 \exp_end: + { + #3 + \if_int_compare:w #2 = 13 \exp_stop_f: + \__kernel_msg_expandable_error:nn { kernel } { char-active } + \else: + \__char_generate_auxii:nnw {#1} {#2} + \fi: + \exp_end: + } + } \else: \tl_set:Nn \l__char_tmp_tl { \exp_not:N \or: } \char_set_catcode_group_begin:n { 0 } % { @@ -8809,66 +8778,75 @@ \__token_tmp:w { skip_register } { skip } { \token_to_str:N \skip } \__token_tmp:w { toks_register } { toks } { \token_to_str:N \toks } \group_end: -\tex_chardef:D \c__token_A_int = `A ~ % -\use:x +\sys_if_engine_luatex:TF { - \prg_new_conditional:Npnn \exp_not:N \token_if_primitive:N ##1 - { p , T , F , TF } + \prg_new_conditional:Npnn \token_if_primitive:N #1 { p , T , F , TF } { - \exp_not:N \token_if_macro:NTF ##1 - \exp_not:N \prg_return_false: - { - \exp_not:N \exp_after:wN \exp_not:N \__token_if_primitive:NNw - \exp_not:N \token_to_meaning:N ##1 - \tl_to_str:n { : : : } \s__token_stop ##1 - } + \__token_if_primitive_lua:N #1 } - \cs_new:Npn \exp_not:N \__token_if_primitive:NNw - ##1##2 ##3 \c_colon_str ##4 \s__token_stop + } + { + \tex_chardef:D \c__token_A_int = `A ~ % + \use:x { - \exp_not:N \tl_if_empty:oTF - { \exp_not:N \__token_if_primitive_space:w ##3 ~ } + \prg_new_conditional:Npnn \exp_not:N \token_if_primitive:N ##1 + { p , T , F , TF } + { + \exp_not:N \token_if_macro:NTF ##1 + \exp_not:N \prg_return_false: + { + \exp_not:N \exp_after:wN \exp_not:N \__token_if_primitive:NNw + \exp_not:N \token_to_meaning:N ##1 + \tl_to_str:n { : : : } \s__token_stop ##1 + } + } + \cs_new:Npn \exp_not:N \__token_if_primitive:NNw + ##1##2 ##3 \c_colon_str ##4 \s__token_stop { - \exp_not:N \__token_if_primitive_loop:N ##3 - \c_colon_str \s__token_stop + \exp_not:N \tl_if_empty:oTF + { \exp_not:N \__token_if_primitive_space:w ##3 ~ } + { + \exp_not:N \__token_if_primitive_loop:N ##3 + \c_colon_str \s__token_stop + } + { \exp_not:N \__token_if_primitive_nullfont:N } } - { \exp_not:N \__token_if_primitive_nullfont:N } } - } -\cs_new:Npn \__token_if_primitive_space:w #1 ~ { } -\cs_new:Npn \__token_if_primitive_nullfont:N #1 - { - \if_meaning:w \tex_nullfont:D #1 - \prg_return_true: - \else: - \prg_return_false: - \fi: - } -\cs_new:Npn \__token_if_primitive_loop:N #1 - { - \if_int_compare:w `#1 < \c__token_A_int % - \exp_after:wN \__token_if_primitive:Nw - \exp_after:wN #1 - \else: - \exp_after:wN \__token_if_primitive_loop:N - \fi: - } -\cs_new:Npn \__token_if_primitive:Nw #1 #2 \s__token_stop - { - \if:w : #1 - \exp_after:wN \__token_if_primitive_undefined:N - \else: - \prg_return_false: - \exp_after:wN \use_none:n - \fi: - } -\cs_new:Npn \__token_if_primitive_undefined:N #1 - { - \if_cs_exist:N #1 - \prg_return_true: - \else: - \prg_return_false: - \fi: + \cs_new:Npn \__token_if_primitive_space:w #1 ~ { } + \cs_new:Npn \__token_if_primitive_nullfont:N #1 + { + \if_meaning:w \tex_nullfont:D #1 + \prg_return_true: + \else: + \prg_return_false: + \fi: + } + \cs_new:Npn \__token_if_primitive_loop:N #1 + { + \if_int_compare:w `#1 < \c__token_A_int % + \exp_after:wN \__token_if_primitive:Nw + \exp_after:wN #1 + \else: + \exp_after:wN \__token_if_primitive_loop:N + \fi: + } + \cs_new:Npn \__token_if_primitive:Nw #1 #2 \s__token_stop + { + \if:w : #1 + \exp_after:wN \__token_if_primitive_undefined:N + \else: + \prg_return_false: + \exp_after:wN \use_none:n + \fi: + } + \cs_new:Npn \__token_if_primitive_undefined:N #1 + { + \if_cs_exist:N #1 + \prg_return_true: + \else: + \prg_return_false: + \fi: + } } \cs_new_eq:NN \l_peek_token ? \cs_new_eq:NN \g_peek_token ? @@ -11198,14 +11176,6 @@ \tl_set:No #1 {#2} } \cs_new_eq:NN \__file_size:n \tex_filesize:D -\sys_if_engine_luatex:T - { - \cs_gset:Npn \__file_size:n #1 - { - \lua_now:e - { l3kernel.filesize ( " \lua_escape:e {#1} " ) } - } - } \cs_new:Npn \file_full_name:n #1 { \exp_args:Ne \__file_full_name:n @@ -11275,9 +11245,7 @@ {#1} } } -\bool_lazy_or:nnF - { \cs_if_exist_p:N \tex_filesize:D } - { \sys_if_engine_luatex_p: } +\cs_if_exist:NF \tex_filesize:D { \cs_gset:Npn \file_full_name:n #1 { @@ -11309,9 +11277,7 @@ \cs_generate_variant:Nn \file_get_full_name:nNT { V } \cs_generate_variant:Nn \file_get_full_name:nNF { V } \cs_generate_variant:Nn \file_get_full_name:nNTF { V } -\bool_lazy_or:nnF - { \cs_if_exist_p:N \tex_filesize:D } - { \sys_if_engine_luatex_p: } +\cs_if_exist:NF \tex_filesize:D { \prg_set_protected_conditional:Npnn \file_get_full_name:nN #1#2 { T , F , TF } { @@ -11356,8 +11322,6 @@ \ior_if_eof:NF \g__file_internal_ior { #2 { \prg_break: } } } \ior_new:N \g__file_internal_ior -\cs_new:Npn \file_mdfive_hash:n #1 - { \__file_details:nn {#1} { mdfivesum } } \cs_new:Npn \file_size:n #1 { \__file_details:nn {#1} { size } } \cs_new:Npn \file_timestamp:n #1 @@ -11372,20 +11336,10 @@ \tl_if_blank:nF {#1} { \use:c { tex_file #2 :D } {#1} } } -\sys_if_engine_luatex:TF - { - \cs_gset:Npn \__file_details_aux:nn #1#2 - { - \lua_now:e - { l3kernel.file#2 ( " \lua_escape:e { #1 } " ) } - } - } - { - \cs_gset:Npn \file_mdfive_hash:n #1 - { \exp_args:Ne \__file_mdfive_hash:n { \file_full_name:n {#1} } } - \cs_new:Npn \__file_mdfive_hash:n #1 - { \tex_mdfivesum:D file {#1} } - } +\cs_new:Npn \file_mdfive_hash:n #1 + { \exp_args:Ne \__file_mdfive_hash:n { \file_full_name:n {#1} } } +\cs_new:Npn \__file_mdfive_hash:n #1 + { \tex_mdfivesum:D file {#1} } \cs_new:Npn \file_hex_dump:nnn #1#2#3 { \exp_args:Neee \__file_hex_dump_auxi:nnn @@ -11434,34 +11388,21 @@ length ~ \int_eval:n { #1 - #2 + 1 } {#3} } -\sys_if_engine_luatex:T - { - \cs_gset:Npn \__file_hex_dump_auxiv:nnn #1#2#3 - { - \lua_now:e - { - l3kernel.filedump - ( - " \lua_escape:e {#3} " , - \int_eval:n { #2 - 1 } , - \int_eval:n { #1 - #2 + 1 } - ) - } - } - } \cs_new:Npn \file_hex_dump:n #1 { \exp_args:Ne \__file_hex_dump:n { \file_full_name:n {#1} } } -\cs_new:Npn \__file_hex_dump:n #1 +\sys_if_engine_luatex:TF { - \tl_if_blank:nF {#1} - { \tex_filedump:D length \tex_filesize:D {#1} {#1} } + \cs_new:Npn \__file_hex_dump:n #1 + { + \tl_if_blank:nF {#1} + { \tex_filedump:D whole {#1} {#1} } + } } -\sys_if_engine_luatex:T { - \cs_gset:Npn \__file_hex_dump:n #1 + \cs_new:Npn \__file_hex_dump:n #1 { - \lua_now:e - { l3kernel.filedump ( " \lua_escape:e { #1 } " ) } + \tl_if_blank:nF {#1} + { \tex_filedump:D length \tex_filesize:D {#1} {#1} } } } \cs_new_protected:Npn \file_get_hex_dump:nN #1#2 @@ -11488,9 +11429,7 @@ { \prg_return_false: } { \prg_return_true: } } -\bool_lazy_or:nnF - { \cs_if_exist_p:N \tex_filesize:D } - { \sys_if_engine_luatex_p: } +\cs_if_exist:NF \tex_filesize:D { \cs_set_protected:Npn \__file_get_details:nnN #1#2#3 { @@ -11524,26 +11463,7 @@ { \prg_return_false: } { \prg_return_true: } } -\cs_new:Npn \__file_str_cmp:nn #1#2 { \tex_strcmp:D {#1} {#2} } -\sys_if_engine_luatex:T - { - \cs_set:Npn \__file_str_cmp:nn #1#2 - { - \lua_now:e - { - l3kernel.strcmp - ( - " \__file_str_escape:n {#1}", - " \__file_str_escape:n {#2}" - ) - } - } - \cs_new:Npn \__file_str_escape:n #1 - { - \lua_escape:e - { \__kernel_tl_to_str:w \use:e { {#1} } } - } - } +\cs_new_eq:NN \__file_str_cmp:nn \tex_strcmp:D \prg_new_conditional:Npnn \file_compare_timestamp:nNn #1#2#3 { p , T , F , TF } { @@ -11584,15 +11504,7 @@ } } } -\sys_if_engine_luatex:TF - { - \cs_new:Npn \__file_timestamp:n #1 - { - \lua_now:e - { l3kernel.filemoddate ( " \lua_escape:e {#1} " ) } - } - } - { \cs_new_eq:NN \__file_timestamp:n \tex_filemoddate:D } +\cs_new_eq:NN \__file_timestamp:n \tex_filemoddate:D \cs_if_exist:NF \__file_timestamp:n { \prg_set_conditional:Npnn \file_compare_timestamp:nNn #1#2#3 @@ -14272,21 +14184,7 @@ \exp_after:wN \use_ii:nn \fi: } -\sys_if_engine_luatex:TF - { - \cs_new:Npn \__fp_str_if_eq:nn #1#2 - { - \tex_directlua:D - { - l3kernel.strcmp - ( - " \tex_luaescapestring:D {#1}", - " \tex_luaescapestring:D {#2}" - ) - } - } - } - { \cs_new_eq:NN \__fp_str_if_eq:nn \tex_strcmp:D } +\cs_new_eq:NN \__fp_str_if_eq:nn \tex_strcmp:D \cs_new:Npn \__fp_func_to_name:N #1 { \exp_last_unbraced:Nf @@ -28008,22 +27906,9 @@ { \exp_not:N \tex_unexpanded:D \exp_not:N \exp_after:wN { - \sys_if_engine_luatex:TF - { - \exp_not:N \tex_directlua:D - { - 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 - #1 ~ - \tex_catcode:D #1 ~ - } + \exp_not:N \tex_Ucharcat:D + #1 ~ + \tex_catcode:D #1 ~ } } \ior_open:Nn \g__char_data_ior { UnicodeData.txt } |