summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-10-11 21:33:04 +0000
committerKarl Berry <karl@freefriends.org>2019-10-11 21:33:04 +0000
commit83b507f56f72909f7552936d229f1130c8fb05c5 (patch)
tree360f905351d9db1e1be9168840b76d7ba8c1e4ca /Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
parentaa2dbb8897371a36028d3ce667140365345dfbfe (diff)
l3 (11oct19)
git-svn-id: svn://tug.org/texlive/trunk@52343 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.tex388
1 files changed, 234 insertions, 154 deletions
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
index 672739004e7..8d8b7973ea9 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
@@ -65,7 +65,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2019-10-02}%
+\def\ExplFileDate{2019-10-11}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -147,18 +147,12 @@
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname directlua\endcsname\relax
\else
- \ifnum\luatexversion<70 %
+ \ifnum\luatexversion<95 %
\else
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname newcatcodetable\endcsname\relax
\input{ltluatex}%
\fi
- \newcatcodetable\ucharcat@table
- \directlua{
- l3kernel = l3kernel or { }
- local charcat_table = \number\ucharcat@table\space
- l3kernel.charcat_table = charcat_table
- }%
\directlua{require("expl3")}%
\ifnum 0%
\directlua{
@@ -184,7 +178,7 @@
These are available in the engines\LineBreak
- pdfTeX v1.40\LineBreak
- XeTeX v0.99992\LineBreak
- - LuaTeX v0.76\LineBreak
+ - LuaTeX v0.95\LineBreak
- e-(u)pTeX mid-2012\LineBreak
or later.\LineBreak
\LineBreak
@@ -3876,6 +3870,7 @@
\__cs_tmp:w { Vo }
\__cs_tmp:w { fo }
\__cs_tmp:w { ff }
+\__cs_tmp:w { ee }
\__cs_tmp:w { Nx }
\__cs_tmp:w { cx }
\__cs_tmp:w { nx }
@@ -7442,7 +7437,6 @@
{ \if_int_compare:w `{ = \c_zero_int } \fi: }
\int_new:N \g__kernel_prg_map_int
%% File: l3sys.dtx
-\str_const:Nx \c_sys_jobname_str { \tex_jobname:D }
\cs_new_protected:Npn \__sys_const:nn #1#2
{
\bool_if:nTF {#2}
@@ -7478,82 +7472,72 @@
\__sys_const:nn { sys_if_engine_ #1 }
{ \str_if_eq_p:Vn \c_sys_engine_str {#1} }
}
-\group_begin:
- \cs_set:Npn \__sys_tmp:w #1
- {
- \str_if_eq:eeTF { \cs_meaning:N #1 } { \token_to_str:N #1 }
- { #1 }
- {
- \cs_if_exist:NTF \tex_primitive:D
- {
- \bool_lazy_and:nnTF
- { \sys_if_engine_xetex_p: }
- {
- \int_compare_p:nNn
- { \exp_after:wN \use_none:n \tex_XeTeXrevision:D }
- < { 99999 }
- }
- { 0 }
- { \tex_primitive:D #1 }
- }
- { 0 }
- }
- }
- \int_const:Nn \c_sys_minute_int
- { \int_mod:nn { \__sys_tmp:w \time } { 60 } }
- \int_const:Nn \c_sys_hour_int
- { \int_div_truncate:nn { \__sys_tmp:w \time } { 60 } }
- \int_const:Nn \c_sys_day_int { \__sys_tmp:w \day }
- \int_const:Nn \c_sys_month_int { \__sys_tmp:w \month }
- \int_const:Nn \c_sys_year_int { \__sys_tmp:w \year }
-\group_end:
-\str_const:Nx \c_sys_output_str
- {
- \int_compare:nNnTF
- { \cs_if_exist_use:NF \tex_pdfoutput:D { 0 } } > { 0 }
- { pdf }
- { dvi }
- }
-\__sys_const:nn { sys_if_output_dvi }
- { \str_if_eq_p:Vn \c_sys_output_str { dvi } }
-\__sys_const:nn { sys_if_output_pdf }
- { \str_if_eq_p:Vn \c_sys_output_str { pdf } }
\__sys_const:nn { sys_if_rand_exist }
{ \cs_if_exist_p:N \tex_uniformdeviate:D }
-\sys_if_rand_exist:TF
- { \cs_new:Npn \sys_rand_seed: { \tex_the:D \tex_randomseed:D } }
- {
- \cs_new:Npn \sys_rand_seed:
- {
- \int_value:w
- \__kernel_msg_expandable_error:nnn { kernel } { fp-no-random }
- { \sys_rand_seed: }
- \c_zero_int
- }
- }
-\sys_if_rand_exist:TF
- {
- \cs_new_protected:Npn \sys_gset_rand_seed:n #1
- { \tex_setrandomseed:D \int_eval:n {#1} \exp_stop_f: }
- }
+\cs_new_protected:Npn \sys_load_backend:n #1
{
- \cs_new_protected:Npn \sys_gset_rand_seed:n #1
+ \sys_finalise:
+ \str_if_exist:NTF \c_sys_backend_str
+ { \__kernel_msg_error:nn { sys } { backend-set } }
{
- \__kernel_msg_error:nnn { kernel } { fp-no-random }
- { \sys_gset_rand_seed:n {#1} }
+ \tl_if_blank:nF {#1}
+ { \tl_set:Nn \g__sys_backend_tl {#1} }
+ \__sys_load_backend_check:N \g__sys_backend_tl
+ \str_const:Nx \c_sys_backend_str { \g__sys_backend_tl }
+ \__kernel_sys_configuration_load:n
+ { l3backend- \c_sys_backend_str }
}
}
-\int_const:Nn \c_sys_shell_escape_int
+\cs_new_protected:Npn \__sys_load_backend_check:N #1
{
- \sys_if_engine_luatex:TF
+ \sys_if_engine_xetex:TF
{
- \tex_directlua:D
- { tex.sprint(status.shell_escape~or~os.execute()) }
+ \str_if_eq:VnF #1 { xdvipdfmx }
+ {
+ \__kernel_msg_error:nnxx { sys } { wrong-backend }
+ #1 { xdvipdfmx }
+ \tl_gset:Nn #1 { xdvipdfmx }
+ }
}
{
- \tex_shellescape:D
+ \sys_if_output_pdf:TF
+ {
+ \str_if_eq:VnF #1 { pdfmode }
+ {
+ \__kernel_msg_error:nnxx { sys } { wrong-backend }
+ #1 { pdfmode }
+ \tl_gset:Nn #1 { pdfmode }
+ }
+ }
+ {
+ \str_case:VnF #1
+ {
+ { dvipdfmx } { }
+ { dvips } { }
+ { dvisvgm } { }
+ }
+ {
+ \__kernel_msg_error:nnxx { sys } { wrong-backend }
+ #1 { dvips }
+ \tl_gset:Nn #1 { dvips }
+ }
+ }
}
}
+\bool_new:N \g__sys_debug_bool
+\bool_new:N \g__sys_deprecation_bool
+\cs_new_protected:Npn \sys_load_debug:
+ {
+ \bool_if:NF \g__sys_debug_bool
+ { \__kernel_sys_configuration_load:n { l3debug } }
+ \bool_gset_true:N \g__sys_debug_bool
+ }
+\cs_new_protected:Npn \sys_load_deprecation:
+ {
+ \bool_if:NF \g__sys_deprecation_bool
+ { \__kernel_sys_configuration_load:n { l3deprecation } }
+ \bool_gset_true:N \g__sys_deprecation_bool
+ }
\tl_new:N \l__sys_internal_tl
\tl_const:Nx \c__sys_marker_tl { : \token_to_str:N : }
\cs_new_protected:Npn \sys_get_shell:nnN #1#2#3
@@ -7596,12 +7580,6 @@
\group_end:
\tl_set:No #1 {#2}
}
-\__sys_const:nn { sys_if_shell }
- { \int_compare_p:nNn \c_sys_shell_escape_int > 0 }
-\__sys_const:nn { sys_if_shell_unrestricted }
- { \int_compare_p:nNn \c_sys_shell_escape_int = 1 }
-\__sys_const:nn { sys_if_shell_restricted }
- { \int_compare_p:nNn \c_sys_shell_escape_int = 2 }
\sys_if_engine_luatex:F
{ \int_const:Nn \c__sys_shell_stream_int { 18 } }
\sys_if_engine_luatex:TF
@@ -7630,85 +7608,162 @@
{ \iow_shipout:Nn \c__sys_shell_stream_int {#1} }
}
\cs_generate_variant:Nn \sys_shell_shipout:n { x }
-\tl_new:N \g__sys_backend_tl
-\tl_gset:Nx \g__sys_backend_tl
+\cs_new_protected:Npn \sys_everyjob:
{
- \sys_if_engine_xetex:TF
- { xdvipdfmx }
- {
- \sys_if_output_pdf:TF
- { pdfmode }
- {
- \bool_lazy_or:nnTF
- { \sys_if_engine_ptex_p: }
- { \sys_if_engine_uptex_p: }
- { dvipdfmx }
- { dvips }
- }
- }
+ \tl_use:N \g__sys_everyjob_tl
+ \tl_gclear:N \g__sys_everyjob_tl
}
-\cs_new_protected:Npn \sys_load_backend:n #1
+\cs_new_protected:Npn \__sys_everyjob:n #1
+ { \tl_gput_right:Nn \g__sys_everyjob_tl {#1} }
+\tl_new:N \g__sys_everyjob_tl
+\__sys_everyjob:n
+ { \str_const:Nx \c_sys_jobname_str { \tex_jobname:D } }
+\__sys_everyjob:n
{
- \str_if_exist:NTF \c_sys_backend_str
- { \__kernel_msg_error:nnxx { sys } { backend-set } }
+ \group_begin:
+ \cs_set:Npn \__sys_tmp:w #1
+ {
+ \str_if_eq:eeTF { \cs_meaning:N #1 } { \token_to_str:N #1 }
+ { #1 }
+ {
+ \cs_if_exist:NTF \tex_primitive:D
+ {
+ \bool_lazy_and:nnTF
+ { \sys_if_engine_xetex_p: }
+ {
+ \int_compare_p:nNn
+ { \exp_after:wN \use_none:n \tex_XeTeXrevision:D }
+ < { 99999 }
+ }
+ { 0 }
+ { \tex_primitive:D #1 }
+ }
+ { 0 }
+ }
+ }
+ \int_const:Nn \c_sys_minute_int
+ { \int_mod:nn { \__sys_tmp:w \time } { 60 } }
+ \int_const:Nn \c_sys_hour_int
+ { \int_div_truncate:nn { \__sys_tmp:w \time } { 60 } }
+ \int_const:Nn \c_sys_day_int { \__sys_tmp:w \day }
+ \int_const:Nn \c_sys_month_int { \__sys_tmp:w \month }
+ \int_const:Nn \c_sys_year_int { \__sys_tmp:w \year }
+ \group_end:
+ }
+\__sys_everyjob:n
+ {
+ \sys_if_rand_exist:TF
+ { \cs_new:Npn \sys_rand_seed: { \tex_the:D \tex_randomseed:D } }
{
- \tl_if_blank:nF {#1}
- { \tl_set:Nn \g__sys_backend_tl {#1} }
- \__sys_load_backend_check:N \g__sys_backend_tl
- \str_const:Nx \c_sys_backend_str { \g__sys_backend_tl }
- \__kernel_sys_configuration_load:n
- { l3backend- \c_sys_backend_str }
+ \cs_new:Npn \sys_rand_seed:
+ {
+ \int_value:w
+ \__kernel_msg_expandable_error:nnn { kernel } { fp-no-random }
+ { \sys_rand_seed: }
+ \c_zero_int
+ }
}
}
-\cs_new_protected:Npn \__sys_load_backend_check:N #1
+\__sys_everyjob:n
{
- \sys_if_engine_xetex:TF
+ \sys_if_rand_exist:TF
{
- \str_if_eq:VnF #1 { xdvipdfmx }
+ \cs_new_protected:Npn \sys_gset_rand_seed:n #1
+ { \tex_setrandomseed:D \int_eval:n {#1} \exp_stop_f: }
+ }
+ {
+ \cs_new_protected:Npn \sys_gset_rand_seed:n #1
{
- \__kernel_msg_error:nnxx { sys } { wrong-backend }
- #1 { xdvipdfmx }
- \tl_gset:Nn #1 { xdvipdfmx }
+ \__kernel_msg_error:nnn { kernel } { fp-no-random }
+ { \sys_gset_rand_seed:n {#1} }
}
}
+ }
+\__sys_everyjob:n
+ {
+ \int_const:Nn \c_sys_shell_escape_int
{
- \sys_if_output_pdf:TF
+ \sys_if_engine_luatex:TF
{
- \str_if_eq:VnF #1 { pdfmode }
- {
- \__kernel_msg_error:nnxx { sys } { wrong-backend }
- #1 { pdfmode }
- \tl_gset:Nn #1 { pdfmode }
- }
+ \tex_directlua:D
+ { tex.sprint(status.shell_escape~or~os.execute()) }
}
+ { \tex_shellescape:D }
+ }
+ }
+\__sys_everyjob:n
+ {
+ \__sys_const:nn { sys_if_shell }
+ { \int_compare_p:nNn \c_sys_shell_escape_int > 0 }
+ \__sys_const:nn { sys_if_shell_unrestricted }
+ { \int_compare_p:nNn \c_sys_shell_escape_int = 1 }
+ \__sys_const:nn { sys_if_shell_restricted }
+ { \int_compare_p:nNn \c_sys_shell_escape_int = 2 }
+ }
+\__sys_everyjob:n
+ { \str_gset:Nx \g_file_curr_name_str { \tex_jobname:D } }
+\cs_new_protected:Npn \sys_finalise:
+ {
+ \sys_everyjob:
+ \tl_use:N \g__sys_finalise_tl
+ \tl_gclear:N \g__sys_finalise_tl
+ }
+\cs_new_protected:Npn \__sys_finalise:n #1
+ { \tl_gput_right:Nn \g__sys_finalise_tl {#1} }
+\tl_new:N \g__sys_finalise_tl
+\__sys_finalise:n
+ {
+ \str_const:Nx \c_sys_output_str
+ {
+ \int_compare:nNnTF
+ { \cs_if_exist_use:NF \tex_pdfoutput:D { 0 } } > { 0 }
+ { pdf }
+ { dvi }
+ }
+ \__sys_const:nn { sys_if_output_dvi }
+ { \str_if_eq_p:Vn \c_sys_output_str { dvi } }
+ \__sys_const:nn { sys_if_output_pdf }
+ { \str_if_eq_p:Vn \c_sys_output_str { pdf } }
+ }
+\__sys_finalise:n
+ {
+ \cs_if_exist:NT \@classoptionslist
+ {
+ \cs_if_eq:NNF \@classoptionslist \scan_stop:
{
- \str_case:VnF #1
+ \clist_map_inline:Nn \@classoptionslist
{
- { dvipdfmx } { }
- { dvips } { }
- { dvisvgm } { }
- }
- {
- \__kernel_msg_error:nnxx { sys } { wrong-backend }
- #1 { dvips }
- \tl_gset:Nn #1 { dvips }
+ \str_case:nnT {#1}
+ {
+ { dvipdfmx }
+ { \tl_gset:Nn \g__sys_backend_tl { dvipdfmx } }
+ { dvips }
+ { \tl_gset:Nn \g__sys_backend_tl { dvips } }
+ { dvisvgm }
+ { \tl_gset:Nn \g__sys_backend_tl { dvisvgm } }
+ { pdftex }
+ { \tl_gset:Nn \g__sys_backend_tl { pdfmode } }
+ { xetex }
+ { \tl_gset:Nn \g__sys_backend_tl { xdvipdfmx } }
+ }
+ { \clist_remove_all:Nn \@unusedoptionlist {#1} }
}
}
}
}
-\bool_new:N \g__sys_debug_bool
-\bool_new:N \g__sys_deprecation_bool
-\cs_new_protected:Npn \sys_load_debug:
- {
- \bool_if:NF \g__sys_debug_bool
- { \__kernel_sys_configuration_load:n { l3debug } }
- \bool_gset_true:N \g__sys_debug_bool
- }
-\cs_new_protected:Npn \sys_load_deprecation:
+\tl_new:N \g__sys_backend_tl
+\__sys_finalise:n
{
- \bool_if:NF \g__sys_deprecation_bool
- { \__kernel_sys_configuration_load:n { l3deprecation } }
- \bool_gset_true:N \g__sys_deprecation_bool
+ \tl_gset:Nx \g__sys_backend_tl
+ {
+ \sys_if_engine_xetex:TF
+ { xdvipdfmx }
+ {
+ \sys_if_output_pdf:TF
+ { pdfmode }
+ { dvips }
+ }
+ }
}
%% File: l3clist.dtx
\cs_new_eq:NN \c_empty_clist \c_empty_tl
@@ -10307,11 +10362,14 @@
}
}
\cs_generate_variant:Nn \__kernel_ior_open:Nn { No }
-\cs_new_protected:Npn \__ior_open_stream:Nn #1#2
+\cs_new_protected:Npx \__ior_open_stream:Nn #1#2
{
- \tex_global:D \tex_chardef:D #1 = \l__ior_stream_tl \scan_stop:
- \prop_gput:NVn \g__ior_streams_prop #1 {#2}
- \tex_openin:D #1 #2 \scan_stop:
+ \tex_global:D \tex_chardef:D #1 = \exp_not:N \l__ior_stream_tl \scan_stop:
+ \prop_gput:NVn \exp_not:N \g__ior_streams_prop #1 {#2}
+ \tex_openin:D #1
+ \sys_if_engine_luatex:TF
+ { {#2} }
+ { #2 \scan_stop: }
}
\cs_new_protected:Npn \ior_close:N #1
{
@@ -10890,8 +10948,6 @@
\str_new:N \g_file_curr_dir_str
\str_new:N \g_file_curr_ext_str
\str_new:N \g_file_curr_name_str
-\cs_if_exist:NT \@currname
- { \str_gset_eq:NN \g_file_curr_name_str \@currname }
\seq_new:N \g__file_stack_seq
\group_begin:
\cs_set_protected:Npn \__file_tmp:w #1#2#3
@@ -10912,7 +10968,10 @@
}
}
\cs_if_exist:NT \@currnamestack
- { \exp_after:wN \__file_tmp:w \@currnamestack }
+ {
+ \tl_if_empty:NF \@currnamestack
+ { \exp_after:wN \__file_tmp:w \@currnamestack }
+ }
\group_end:
\seq_new:N \g__file_record_seq
\tl_new:N \l__file_base_name_tl
@@ -11108,9 +11167,27 @@
\cs_new:Npx \__file_file_ext_check_auxiii:nw #1#2 . #3 . #4 \q_stop
{
\exp_not:N \quark_if_nil:nTF {#3}
- { \exp_not:N \__kernel_file_name_quote:n { #1 \tl_to_str:n { .tex } } }
+ {
+ \exp_not:N \exp_args:Nee \exp_not:N \__file_file_ext_check_auxiv:nn
+ { \exp_not:N \__kernel_file_name_quote:n {#1} }
+ {
+ \exp_not:N \__kernel_file_name_quote:n
+ { #1 \tl_to_str:n { .tex } }
+ }
+ }
{#1}
}
+\cs_new:Npn \__file_file_ext_check_auxiv:nn #1#2
+ {
+ \tl_if_blank:eTF { \__file_file_size:n {#2} }
+ {#1}
+ {
+ \int_compare:nNnTF
+ { \__file_file_size:n {#1} } = { \__file_file_size:n {#2} }
+ {#2}
+ {#1}
+ }
+ }
\bool_lazy_or:nnF
{ \cs_if_exist_p:N \tex_filesize:D }
{ \sys_if_engine_luatex_p: }
@@ -11470,14 +11547,17 @@
{ } { } { }
}
\cs_new:Npn \__file_list_aux:n #1 { \iow_newline: #1 }
-\AtBeginDocument
- {
- \exp_args:NNx \seq_set_from_clist:Nn \l__file_tmp_seq
- { \tl_to_str:N \@filelist }
- \seq_gconcat:NNN
- \g__file_record_seq
- \g__file_record_seq
- \l__file_tmp_seq
+\cs_if_exist:NT \@filelist
+ {
+ \AtBeginDocument
+ {
+ \exp_args:NNx \seq_set_from_clist:Nn \l__file_tmp_seq
+ { \tl_to_str:N \@filelist }
+ \seq_gconcat:NNN
+ \g__file_record_seq
+ \g__file_record_seq
+ \l__file_tmp_seq
+ }
}
\cs_new_protected:Npn \GetIdInfo
{