summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-05-28 21:24:36 +0000
committerKarl Berry <karl@freefriends.org>2019-05-28 21:24:36 +0000
commit0411921af7908fa9daf388b67db154e9fc51caca (patch)
treef5405f2fef2bc7b0ae9eb9c8809377b88d70c760 /Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
parentc55b67ba30f320ddfc93fbdca08cab7512704011 (diff)
l3 (28may19)
git-svn-id: svn://tug.org/texlive/trunk@51248 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.tex137
1 files changed, 118 insertions, 19 deletions
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
index cd2f1013847..dbdc37c17f5 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
@@ -64,7 +64,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2019-05-09}%
+\def\ExplFileDate{2019-05-28}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -14156,6 +14156,7 @@
\int_const:Nn \c__fp_prec_hatii_int { 14 }
\int_const:Nn \c__fp_prec_hat_int { 13 }
\int_const:Nn \c__fp_prec_not_int { 12 }
+\int_const:Nn \c__fp_prec_juxt_int { 11 }
\int_const:Nn \c__fp_prec_times_int { 10 }
\int_const:Nn \c__fp_prec_plus_int { 9 }
\int_const:Nn \c__fp_prec_comp_int { 7 }
@@ -14874,7 +14875,7 @@
{
\exp_not:N \__fp_exp_after_array_f:w #2 \s__fp_stop
\exp_not:N \exp_after:wN
- \exp_not:N \__fp_parse_infix:NN
+ \exp_not:N \__fp_parse_infix_after_paren:NN
\exp_not:N \exp_after:wN #1
\exp_not:N \exp:w
\exp_not:N \__fp_parse_expand:w
@@ -14900,7 +14901,7 @@
\fi:
\exp_end_continue_f:w
\fi:
- \__fp_parse_infix:NN #1 )
+ \__fp_parse_infix_after_paren:NN #1 )
}
\cs_set_protected:Npn \__fp_tmp:w #1 #2
{
@@ -15071,7 +15072,7 @@
\exp_after:wN \__fp_parse_infix_mark:NNN
\else:
\exp_after:wN \exp_after:wN
- \exp_after:wN \__fp_parse_infix_mul:N
+ \exp_after:wN \__fp_parse_infix_juxt:N
\fi:
\else:
\if_int_compare:w
@@ -15079,7 +15080,7 @@
( `#2 \if_int_compare:w `#2 > `Z - 32 \fi: ) / 26
= 3 \exp_stop_f:
\exp_after:wN \exp_after:wN
- \exp_after:wN \__fp_parse_infix_mul:N
+ \exp_after:wN \__fp_parse_infix_juxt:N
\else:
\exp_after:wN \__fp_parse_infix_check:NNN
\cs:w
@@ -15091,22 +15092,49 @@
#1
#2
}
-\cs_new:Npx \__fp_parse_infix_check:NNN #1#2#3
+\cs_new:Npn \__fp_parse_infix_check:NNN #1#2#3
{
- \exp_not:N \if_meaning:w \scan_stop: #1
- \exp_not:N \__kernel_msg_expandable_error:nnn
+ \if_meaning:w \scan_stop: #1
+ \__kernel_msg_expandable_error:nnn
{ kernel } { fp-missing } { * }
- \exp_not:N \exp_after:wN
- \exp_not:c { __fp_parse_infix_*:N }
- \exp_not:N \exp_after:wN #2
- \exp_not:N \exp_after:wN #3
- \exp_not:N \else:
- \exp_not:N \exp_after:wN #1
- \exp_not:N \exp_after:wN #2
- \exp_not:N \exp:w
- \exp_not:N \exp_after:wN
- \exp_not:N \__fp_parse_expand:w
- \exp_not:N \fi:
+ \exp_after:wN \__fp_parse_infix_mul:N
+ \exp_after:wN #2
+ \exp_after:wN #3
+ \else:
+ \exp_after:wN #1
+ \exp_after:wN #2
+ \exp:w \exp_after:wN \__fp_parse_expand:w
+ \fi:
+ }
+\cs_new:Npn \__fp_parse_infix_after_paren:NN #1 #2
+ {
+ \if_catcode:w \scan_stop: \exp_not:N #2
+ \if_int_compare:w
+ \__fp_str_if_eq:nn { \s__fp_mark } { \exp_not:N #2 }
+ = 0 \exp_stop_f:
+ \exp_after:wN \exp_after:wN
+ \exp_after:wN \__fp_parse_infix_mark:NNN
+ \else:
+ \exp_after:wN \exp_after:wN
+ \exp_after:wN \__fp_parse_infix_mul:N
+ \fi:
+ \else:
+ \if_int_compare:w
+ \__fp_int_eval:w
+ ( `#2 \if_int_compare:w `#2 > `Z - 32 \fi: ) / 26
+ = 3 \exp_stop_f:
+ \exp_after:wN \exp_after:wN
+ \exp_after:wN \__fp_parse_infix_mul:N
+ \else:
+ \exp_after:wN \__fp_parse_infix_check:NNN
+ \cs:w
+ __fp_parse_infix_ \token_to_str:N #2 :N
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \cs_end:
+ \fi:
+ \fi:
+ #1
+ #2
}
\cs_new:Npn \__fp_parse_infix_mark:NNN #1#2#3 { #3 #1 }
\cs_new:Npn \__fp_parse_infix_end:N #1
@@ -15183,6 +15211,8 @@
}
\exp_args:Nc \__fp_tmp:w { __fp_parse_infix_^:N } ^
\c__fp_prec_hatii_int \c__fp_prec_hat_int
+\exp_args:Nc \__fp_tmp:w { __fp_parse_infix_juxt:N } *
+ \c__fp_prec_juxt_int \c__fp_prec_juxt_int
\exp_args:Nc \__fp_tmp:w { __fp_parse_infix_/:N } /
\c__fp_prec_times_int \c__fp_prec_times_int
\exp_args:Nc \__fp_tmp:w { __fp_parse_infix_mul:N } *
@@ -26454,6 +26484,75 @@
{ \iow_shipout:Nn \c__sys_shell_stream_int {#1} }
}
\cs_generate_variant:Nn \sys_shell_shipout:n { x }
+\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} } }
+ }
+ }
+\tl_new:N \l__file_first_tl
+\tl_new:N \l__file_second_tl
+\prg_new_protected_conditional:Npnn \file_compare_timestamp:nNn #1#2#3
+ { T , F , TF }
+ {
+ \group_begin:
+ \file_get_full_name:nNTF {#1} \l__file_first_tl
+ {
+ \file_get_full_name:nNTF {#3} \l__file_second_tl
+ {
+ \if_int_compare:w
+ \__file_str_cmp:nn
+ { \__file_timestamp:n \exp_after:wN { \l__file_first_tl } }
+ { \__file_timestamp:n \exp_after:wN { \l__file_second_tl } }
+ #2 0 \exp_stop_f:
+ \group_end:
+ \prg_return_true:
+ \else:
+ \group_end:
+ \prg_return_false:
+ \fi:
+ }
+ {
+ \group_end:
+ \if_charcode:w #2 >
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+ }
+ {
+ \group_end:
+ \if_charcode:w #2 <
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+ }
+\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_protected:Npn \ior_shell_open:Nn #1#2
{
\sys_if_shell:TF