summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex')
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex401
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 }