summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-01-28 22:07:57 +0000
committerKarl Berry <karl@freefriends.org>2019-01-28 22:07:57 +0000
commit58716ee4be6eb8b578e9e7097971079d0e9d0b6a (patch)
tree04ad920aed8f772a75bad93e9ec399c067f44001 /Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
parent0e9654fedc389811d7b81b1d05f8a4a986caec1c (diff)
l3 (28jan19)
git-svn-id: svn://tug.org/texlive/trunk@49853 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.tex1033
1 files changed, 659 insertions, 374 deletions
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
index 2345b6effe0..736147cc2ef 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
@@ -50,7 +50,7 @@
%% l3candidates.dtx (with options: `package')
%% l3deprecation.dtx (with options: `package')
%%
-%% Copyright (C) 1990-2018 The LaTeX3 Project
+%% Copyright (C) 1990-2019 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
@@ -62,8 +62,8 @@
%% This file is part of the "l3kernel bundle" (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
-%% File: expl3.dtx Copyright (C) 1990-2019 The LaTeX3 Project
-\def\ExplFileDate{2019-01-13}%
+%% File: expl3.dtx
+\def\ExplFileDate{2019-01-28}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -120,7 +120,7 @@
\ExplFileDate\space
L3 programming layer (code)%
}%
-%% File: l3bootstrap.dtx Copyright (C) 2011-2019 The LaTeX3 project
+%% File: l3bootstrap.dtx
\begingroup
\csname protected\endcsname\gdef\GetIdInfo
{%
@@ -360,7 +360,7 @@
\tex_endlinechar:D = 32 \scan_stop:
\bool_set_true:N \l__kernel_expl_bool
}
-%% File: l3names.dtx Copyright (C) 1990-2019 The LaTeX3 project
+%% File: l3names.dtx
\let \tex_global:D \global
\let \tex_let:D \let
\begingroup
@@ -2108,7 +2108,7 @@
}
\__kernel_primitives:
\tex_endgroup:D
-%% File: l3basics.dtx Copyright (C) 1990-2019 The LaTeX3 project
+%% File: l3basics.dtx
\tex_let:D \if_true: \tex_iftrue:D
\tex_let:D \if_false: \tex_iffalse:D
\tex_let:D \or: \tex_or:D
@@ -3195,7 +3195,7 @@
\cs_new_eq:NN \prg_break_point: \prg_do_nothing:
\cs_new:Npn \prg_break: #1 \prg_break_point: { }
\cs_new:Npn \prg_break:n #1#2 \prg_break_point: {#1}
-%% File: l3expan.dtx Copyright (C) 1990-2019 The LaTeX3 project
+%% File: l3expan.dtx
\cs_new:Npn \__exp_arg_next:nnn #1#2#3 { #2 \::: { #3 {#1} } }
\cs_new:Npn \__exp_arg_next:Nnn #1#2#3 { #2 \::: { #3 #1 } }
\cs_new:Npn \::: #1 {#1}
@@ -4094,7 +4094,7 @@
}
}
\cs_new:Npn \__cs_args_generate:n #1 { \exp_not:c { :: #1 } }
-%% File: l3tl.dtx Copyright (C) 1990-2019 The LaTeX3 Project
+%% File: l3tl.dtx
\cs_new_protected:Npn \tl_new:N #1
{
\__kernel_chk_if_free_cs:N #1
@@ -4269,109 +4269,92 @@
\cs_generate_variant:Nn \tl_gput_right:Nx { c }
\tl_const:Nx \c__tl_rescan_marker_tl { : \token_to_str:N : }
\cs_new_protected:Npn \tl_set_rescan:Nnn
- { \__tl_set_rescan:NNnn \tl_set:Nn }
+ { \__tl_set_rescan:NNnn \tl_set:No }
\cs_new_protected:Npn \tl_gset_rescan:Nnn
- { \__tl_set_rescan:NNnn \tl_gset:Nn }
-\cs_new_protected:Npn \tl_rescan:nn
- { \__tl_set_rescan:NNnn \prg_do_nothing: \use:n }
+ { \__tl_set_rescan:NNnn \tl_gset:No }
+\cs_new_protected:Npn \tl_rescan:nn #1#2
+ {
+ \tl_set_rescan:Nnn \l__tl_internal_a_tl {#1} {#2}
+ \exp_after:wN \tl_clear:N \exp_after:wN \l__tl_internal_a_tl
+ \l__tl_internal_a_tl
+ }
\cs_new_protected:Npn \__tl_set_rescan:NNnn #1#2#3#4
{
- \tl_if_empty:nTF {#4}
- {
- \group_begin:
- #3
- \group_end:
- #1 #2 { }
- }
- {
- \group_begin:
- \exp_args:No \tex_everyeof:D
- { \c__tl_rescan_marker_tl \exp_not:N }
- \int_compare:nNnT \tex_endlinechar:D = { 32 }
- { \int_set:Nn \tex_endlinechar:D { -1 } }
- \tex_newlinechar:D \tex_endlinechar:D
- #3 \scan_stop:
- \exp_args:No \__tl_set_rescan:n { \tl_to_str:n {#4} }
- \exp_args:NNNo
- \group_end:
- #1 #2 \l__tl_internal_a_tl
- }
+ \if_false: { \fi:
+ \group_begin:
+ \int_set_eq:NN \tex_tracingnesting:D \c_zero_int
+ \exp_args:No \tex_everyeof:D { \c__tl_rescan_marker_tl }
+ \int_compare:nNnT \tex_endlinechar:D = { 32 }
+ { \int_set:Nn \tex_endlinechar:D { -1 } }
+ \int_set_eq:NN \tex_newlinechar:D \tex_endlinechar:D
+ #3 \scan_stop:
+ \exp_args:No \__tl_set_rescan:nNN { \tl_to_str:n {#4} } #1 #2
+ \if_false: } \fi:
}
-\cs_new_protected:Npn \__tl_set_rescan_multi:n #1
+\cs_new_protected:Npn \__tl_set_rescan_multi:nNN #1#2#3
{
- \tl_set:Nx \l__tl_internal_a_tl
- {
- \exp_after:wN \__tl_rescan:w
- \exp_after:wN \prg_do_nothing:
- \tex_scantokens:D {#1}
- }
+ \exp_after:wN \__tl_rescan:NNw
+ \exp_after:wN #2
+ \exp_after:wN #3
+ \exp_after:wN \prg_do_nothing:
+ \tex_scantokens:D {#1}
}
\exp_args:Nno \use:nn
- { \cs_new:Npn \__tl_rescan:w #1 } \c__tl_rescan_marker_tl
- { \exp_not:o {#1} }
+ { \cs_new:Npn \__tl_rescan:NNw #1#2#3 } \c__tl_rescan_marker_tl
+ {
+ \group_end:
+ #1 #2 {#3}
+ }
\cs_generate_variant:Nn \tl_set_rescan:Nnn { Nno , Nnx }
\cs_generate_variant:Nn \tl_set_rescan:Nnn { c , cno , cnx }
\cs_generate_variant:Nn \tl_gset_rescan:Nnn { Nno , Nnx }
\cs_generate_variant:Nn \tl_gset_rescan:Nnn { c , cno }
-\group_begin:
- \tex_catcode:D `\^^@ = 12 \scan_stop:
- \cs_new_protected:Npn \__tl_set_rescan:n #1
- {
- \int_compare:nNnTF \tex_newlinechar:D < 0
- { \use_ii:nn }
- {
- \char_set_lccode:nn { 0 } { \tex_newlinechar:D }
- \tex_lowercase:D { \__tl_set_rescan:NnTF ^^@ } {#1}
- }
- { \__tl_set_rescan_multi:n }
- { \__tl_set_rescan_single:nn { ' } }
- {#1}
- }
- \cs_new_protected:Npn \__tl_set_rescan:NnTF #1#2
- { \tl_if_in:nnTF {#2} {#1} }
- \cs_new_protected:Npn \__tl_set_rescan_single:nn #1
- {
- \int_compare:nNnTF
- { \char_value_catcode:n { `#1 } / 3 } = 4
- { \__tl_set_rescan_single_aux:nn {#1} }
- {
- \int_compare:nNnTF { `#1 } < { `\~ }
- {
- \char_set_lccode:nn { 0 } { `#1 + 1 }
- \tex_lowercase:D { \__tl_set_rescan_single:nn { ^^@ } }
- }
- { \__tl_set_rescan_single_aux:nn { } }
- }
- }
- \cs_new_protected:Npn \__tl_set_rescan_single_aux:nn #1#2
- {
- \int_set:Nn \tex_endlinechar:D { -1 }
- \use:x
- {
- \exp_not:N \use:n
- {
- \exp_not:n { \cs_set:Npn \__tl_rescan:w ##1 }
- \exp_after:wN \__tl_rescan:w
- \exp_after:wN \prg_do_nothing:
- \tex_scantokens:D {#1}
- }
- \c__tl_rescan_marker_tl
- }
- { \exp_not:o {##1} }
- \tl_set:Nx \l__tl_internal_a_tl
+\cs_new_protected:Npn \__tl_set_rescan:nNN #1
+ {
+ \int_compare:nNnTF \tex_newlinechar:D < 0
+ { \use_ii:nn }
+ {
+ \exp_args:Nnf \tl_if_in:nnTF {#1}
+ { \char_generate:nn { \tex_newlinechar:D } { 12 } }
+ }
+ { \__tl_set_rescan_multi:nNN }
{
- \int_compare:nNnT
- {
- \char_value_catcode:n
- { \exp_last_unbraced:Nf ` { \str_head:n {#2} } ~ }
- }
- = { 10 } { ~ }
- \exp_after:wN \__tl_rescan:w
- \exp_after:wN \prg_do_nothing:
- \tex_scantokens:D { #2 #1 }
+ \int_set:Nn \tex_endlinechar:D { -1 }
+ \__tl_set_rescan_single:nnNN { `' }
}
- }
-\group_end:
+ {#1}
+ }
+\cs_new_protected:Npn \__tl_set_rescan_single:nnNN #1
+ {
+ \int_compare:nNnTF
+ { \char_value_catcode:n {#1} / 2 } = 6
+ {
+ \exp_args:Nf \__tl_set_rescan_single_aux:nnNN
+ { \char_generate:nn {#1} { \char_value_catcode:n {#1} } }
+ }
+ {
+ \int_compare:nNnTF {#1} < { `\~ }
+ {
+ \exp_args:Nf \__tl_set_rescan_single:nnNN
+ { \int_eval:n { #1 + 1 } }
+ }
+ { \__tl_set_rescan_multi:nNN }
+ }
+ }
+\cs_new_protected:Npn \__tl_set_rescan_single_aux:nnNN #1#2#3#4
+ {
+ \exp_args:Nno \use:nn
+ { \cs_set:Npn \__tl_rescan:NNw ##1##2##3 #1 }
+ \c__tl_rescan_marker_tl
+ {
+ \group_end:
+ ##1 ##2 { \use_none:n ##3 }
+ }
+ \exp_after:wN \__tl_rescan:NNw
+ \exp_after:wN #3
+ \exp_after:wN #4
+ \tex_scantokens:D { #1 #2 #1 }
+ }
\cs_new_protected:Npn \tl_replace_once:Nnn
{ \__tl_replace:NnNNNnn \q_mark ? \__tl_replace_wrap:w \tl_set:Nx }
\cs_new_protected:Npn \tl_greplace_once:Nnn
@@ -5114,7 +5097,7 @@
\tl_new:N \g_tmpb_tl
\tl_new:N \l_tmpa_tl
\tl_new:N \l_tmpb_tl
-%% File: l3str.dtx Copyright (C) 2011-2019 The LaTeX3 Project
+%% File: l3str.dtx
\group_begin:
\cs_set_protected:Npn \__str_tmp:n #1
{
@@ -5761,7 +5744,7 @@
\cs_new:Npn \str_if_eq_x:nnF { \str_if_eq:eeF }
\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_if_eq:eeTF }
\cs_new:Npn \str_if_eq_x:nnTF { \str_if_eq:eeTF }
-%% File: l3quark.dtx Copyright (C) 1990-2019 The LaTeX3 Project
+%% File: l3quark.dtx
\__kernel_patch:nnNNpn { \__kernel_chk_var_scope:NN q #1 } { }
\cs_new_protected:Npn \quark_new:N #1
{
@@ -5879,7 +5862,7 @@
}
\scan_new:N \s_stop
\cs_new:Npn \use_none_delimit_by_s_stop:w #1 \s_stop { }
-%% File: l3seq.dtx Copyright (C) 1990-2019 The LaTeX3 Project
+%% File: l3seq.dtx
\scan_new:N \s__seq
\cs_new:Npn \__seq_item:n
{
@@ -6429,7 +6412,7 @@
\seq_new:N \l_tmpb_seq
\seq_new:N \g_tmpa_seq
\seq_new:N \g_tmpb_seq
-%% File: l3int.dtx Copyright (C) 1990-2019 The LaTeX3 Project
+%% File: l3int.dtx
\cs_new_eq:NN \int_value:w \tex_number:D
\cs_new_eq:NN \__int_eval:w \tex_numexpr:D
\cs_new_eq:NN \__int_eval_end: \tex_relax:D
@@ -7343,7 +7326,7 @@
{ \exp_stop_f: }
}
\cs_new_eq:NN \__int_value:w \int_value:w
-%% File: l3flag.dtx Copyright (C) 2011-2019 The LaTeX3 Project
+%% File: l3flag.dtx
\cs_new_protected:Npn \flag_new:n #1
{
\cs_new:cpn { flag~#1 } ##1 ;
@@ -7418,7 +7401,7 @@
\cs:w flag~#1 \exp_after:wN \cs_end:
\int_value:w \flag_height:n {#1} ;
}
-%% File: l3prg.dtx Copyright (C) 2005-2019 The LaTeX3 Project
+%% File: l3prg.dtx
\cs_new_eq:NN \if_bool:N \tex_ifodd:D
\cs_new_eq:NN \if_predicate:w \tex_ifodd:D
\cs_new_protected:Npn \bool_new:N #1 { \cs_new_eq:NN #1 \c_false_bool }
@@ -7719,7 +7702,7 @@
\cs_new:Npn \__prg_break: #1 \__prg_break_point: { }
\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \prg_break:n }
\cs_new:Npn \__prg_break:n #1#2 \__prg_break_point: {#1}
-%% File: l3sys.dtx Copyright (C) 2015-2019 The LaTeX3 Project
+%% File: l3sys.dtx
\str_const:Nx \c_sys_jobname_str { \tex_jobname:D }
\int_const:Nn \c_sys_minute_int
{ \int_mod:nn { \tex_time:D } { 60 } }
@@ -7776,9 +7759,7 @@
{ \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 }
-%% File: l3clist.dtx Copyright (C) 2004-2011,2019 Frank Mittelbach,
-%% The LaTeX3 project
-%% (C) 2012-2019 The LaTeX3 Project
+%% File: l3clist.dtx
\cs_new_eq:NN \c_empty_clist \c_empty_tl
\tl_new:N \l__clist_internal_clist
\cs_new_protected:Npn \__clist_tmp:w { }
@@ -8366,7 +8347,7 @@
\clist_new:N \l_tmpb_clist
\clist_new:N \g_tmpa_clist
\clist_new:N \g_tmpb_clist
-%% File: l3token.dtx Copyright (C) 2005-2019 The LaTeX3 Project
+%% File: l3token.dtx
\cs_new_protected:Npn \char_set_catcode:nn #1#2
{ \tex_catcode:D \int_eval:n {#1} = \int_eval:n {#2} \exp_stop_f: }
\cs_new:Npn \char_value_catcode:n #1
@@ -8572,12 +8553,7 @@
\char_set_catcode_math_toggle:n { 0 }
\tl_put_right:Nn \l__char_tmp_tl { \or: ^^@ }
\char_set_catcode_alignment:n { 0 }
- \tl_put_right:Nn \l__char_tmp_tl
- {
- \or:
- \__kernel_exp_not:w \exp_after:wN
- { \exp_after:wN ^^@ \exp_after:wN }
- }
+ \tl_put_right:Nn \l__char_tmp_tl { \or: ^^@ }
\tl_put_right:Nn \l__char_tmp_tl { \or: }
\char_set_catcode_parameter:n { 0 }
\tl_put_right:Nn \l__char_tmp_tl { \or: ^^@ }
@@ -8614,12 +8590,14 @@
\cs_new:Npn \__char_generate_aux:nnw #1#2#3 \exp_end:
{
#3
+ \if_false: { \fi:
\exp_after:wN \exp_after:wN
\exp_after:wN \exp_end:
\exp_after:wN \exp_after:wN
\if_case:w #2
\exp_last_unbraced:Nv \exp_stop_f:
{ c__char_ \__char_int_to_roman:w #1 _tl }
+ \or: }
\fi:
}
\fi:
@@ -9054,7 +9032,7 @@
}
{ \scan_stop: }
}
-%% File: l3prop.dtx Copyright (C) 1990-2019 The LaTeX3 Project
+%% File: l3prop.dtx
\scan_new:N \s__prop
\cs_new:Npn \__prop_pair:wn #1 \s__prop #2
{ \__kernel_msg_expandable_error:nn { kernel } { misused-prop } }
@@ -9367,7 +9345,7 @@
{ } { }
}
}
-%% File: l3msg.dtx Copyright (C) 2009-2019 The LaTeX3 Project
+%% File: l3msg.dtx
\tl_new:N \l__msg_tmp_tl
\str_new:N \l__msg_name_str
\str_new:N \l__msg_text_str
@@ -10371,7 +10349,7 @@
}
}
}
-%% File: l3file.dtx Copyright (C) 1990-2019 The LaTeX3 Project
+%% File: l3file.dtx
\tl_new:N \l__ior_internal_tl
\int_const:Nn \c_term_ior { 16 }
\seq_new:N \g__ior_streams_seq
@@ -11035,6 +11013,44 @@
}
\cs_new:Npn \__file_name_quote_aux:n #1
{ \token_if_eq_charcode:NNT #1 " { + 1 } }
+\tl_const:Nx \c__file_marker_tl { : \token_to_str:N : }
+\cs_new_protected:Npn \file_get:nnN #1#2#3
+ {
+ \file_get:nnNF {#1} {#2} #3
+ { \__kernel_file_missing:n {#1} }
+ }
+\prg_new_protected_conditional:Npnn \file_get:nnN #1#2#3 { T , F , TF }
+ {
+ \file_get_full_name:nN {#1} \l__file_full_name_str
+ \str_if_empty:NTF \l__file_full_name_str
+ { \prg_return_false: }
+ {
+ \exp_args:NV \__file_get_aux:nnN
+ \l__file_full_name_str
+ {#2} #3
+ \prg_return_true:
+ }
+ }
+\cs_new_protected:Npn \__file_get_aux:nnN #1#2#3
+ {
+ \if_false: { \fi:
+ \group_begin:
+ \int_set_eq:NN \tex_tracingnesting:D \c_zero_int
+ \exp_args:No \tex_everyeof:D { \c__file_marker_tl }
+ #2 \scan_stop:
+ \exp_after:wN \__file_get_do:Nw
+ \exp_after:wN #3
+ \exp_after:wN \prg_do_nothing:
+ \tex_input:D #1 \scan_stop:
+ \if_false: } \fi:
+ }
+\exp_args:Nno \use:nn
+ { \cs_new_protected:Npn \__file_get_do:Nw #1#2 }
+ { \c__file_marker_tl }
+ {
+ \group_end:
+ \tl_set:No #1 {#2}
+ }
\cs_new_protected:Npn \file_get_full_name:nN #1#2
{
\__kernel_file_name_sanitize:nN {#1} \l__file_base_name_str
@@ -11232,8 +11248,7 @@
which~will~be~wrapped~using~#1.
\tl_if_empty:nF {#3} { ~ It~was~called~with~argument~'#3'. }
}
-%% File: l3skip.dtx Copyright (C) 2004-2011,2019 Frank Mittelbach, The LaTeX3 Project
-%% (C) 2012-2019 The LaTeX3 Project
+%% File: l3skip.dtx
\cs_new_eq:NN \if_dim:w \tex_ifdim:D
\cs_new_eq:NN \__dim_eval:w \tex_dimexpr:D
\cs_new_eq:NN \__dim_eval_end: \tex_relax:D
@@ -11854,7 +11869,7 @@
\muskip_new:N \l_tmpb_muskip
\muskip_new:N \g_tmpa_muskip
\muskip_new:N \g_tmpb_muskip
-%% File: l3keys.dtx Copyright (C) 2006-2019 The LaTeX3 Project
+%% File: l3keys.dtx
\tl_new:N \l__keyval_key_tl
\tl_new:N \l__keyval_value_tl
\tl_new:N \l__keyval_sanitise_tl
@@ -12803,7 +12818,7 @@
{ is~undefined. }
{ has~the~properties: #2 . }
}
-%% File: l3intarray.dtx Copyright (C) 2017-2019 The LaTeX3 Project
+%% File: l3intarray.dtx
\cs_new_eq:NN \__intarray_entry:w \tex_fontdimen:D
\cs_new_eq:NN \__intarray_count:w \tex_hyphenchar:D
\int_new:N \l__intarray_loop_int
@@ -13034,8 +13049,8 @@
{ \intarray_gset_rand:Nnn #1 {#2} {#3} }
}
}
-%% File: l3fp.dtx Copyright (C) 2011-2019 The LaTeX3 Project
-%% File: l3fp-aux.dtx Copyright (C) 2011-2019 The LaTeX3 Project
+%% File: l3fp.dtx
+%% File: l3fp-aux.dtx
\cs_new_eq:NN \__fp_int_eval:w \tex_numexpr:D
\cs_new_eq:NN \__fp_int_eval_end: \scan_stop:
\cs_new_eq:NN \__fp_int_to_roman:w \tex_romannumeral:D
@@ -13444,7 +13459,7 @@
'\token_to_str:N \fp_to_tl:N',~or~other~
conversion~functions.
}
-%% File: l3fp-traps.dtx Copyright (C) 2011-2014,2016-2019 The LaTeX3 Project
+%% File: l3fp-traps.dtx
\flag_new:n { fp_invalid_operation }
\flag_new:n { fp_division_by_zero }
\flag_new:n { fp_overflow }
@@ -13614,7 +13629,7 @@
{ Invalid~operation~ (#1) #3 (#2) }
\__kernel_msg_new:nnn { kernel } { fp-unknown-type }
{ Unknown~type~for~'#1' }
-%% File: l3fp-round.dtx Copyright (C) 2011-2019 The LaTeX3 Project
+%% File: l3fp-round.dtx
\cs_new:Npn \__fp_parse_word_trunc:N
{ \__fp_parse_function:NNN \__fp_round_o:Nw \__fp_round_to_zero:NNN }
\cs_new:Npn \__fp_parse_word_floor:N
@@ -13893,7 +13908,7 @@
\exp_after:wN \__fp_exp_after_o:w \exp:w \exp_end_continue_f:w
\__fp_sanitize:Nw #1#2; {1000}{0000}{0000}{0000};
}
-%% File: l3fp-parse.dtx Copyright (C) 2011-2019 The LaTeX3 Project
+%% File: l3fp-parse.dtx
\int_const:Nn \c__fp_prec_func_int { 16 }
\int_const:Nn \c__fp_prec_hatii_int { 14 }
\int_const:Nn \c__fp_prec_hat_int { 13 }
@@ -15225,7 +15240,7 @@
\__kernel_msg_new:nnn { kernel } { fp-robust-cmd }
{ Robust~command~#1 invalid~in~fp~expression! }
}
-%% File: l3fp-assign.dtx Copyright (C) 2011-2019 The LaTeX3 project
+%% File: l3fp-assign.dtx
\cs_new_protected:Npn \fp_new:N #1
{ \cs_new_eq:NN #1 \c_zero_fp }
\cs_generate_variant:Nn \fp_new:N {c}
@@ -15283,7 +15298,7 @@
\fp_new:N \l_tmpb_fp
\fp_new:N \g_tmpa_fp
\fp_new:N \g_tmpb_fp
-%% File: l3fp-logic.dtx Copyright (C) 2011-2019 The LaTeX3 Project
+%% File: l3fp-logic.dtx
\cs_new:Npn \__fp_parse_word_max:N
{ \__fp_parse_function:NNN \__fp_minmax_o:Nw 2 }
\cs_new:Npn \__fp_parse_word_min:N
@@ -15691,7 +15706,7 @@
\__fp_exp_after_array_f:w #3 \s__fp_stop
#4 #1
}
-%% File: l3fp-basics.dtx Copyright (C) 2011-2014,2016-2019 The LaTeX3 Project
+%% File: l3fp-basics.dtx
\cs_new:Npn \__fp_parse_word_abs:N
{ \__fp_parse_unary_function:NNN \__fp_set_sign_o:w 0 }
\cs_new:Npn \__fp_parse_word_logb:N
@@ -16512,7 +16527,7 @@
}
\__fp_tmp:w +
\__fp_tmp:w -
-%% File: l3fp-extended.dtx Copyright (C) 2011-2019 The LaTeX3 Project
+%% File: l3fp-extended.dtx
\tl_const:Nn \c__fp_one_fixed_tl
{ {10000} {0000} {0000} {0000} {0000} {0000} ; }
\cs_new:Npn \__fp_fixed_continue:wn #1; #2 { #2 #1; }
@@ -16951,7 +16966,7 @@
\exp_after:wN \__fp_basics_pack_low:NNNNNw
\int_value:w \__fp_int_eval:w 1 #3#4 + 1 ;
}
-%% File: l3fp-expo.dtx Copyright (C) 2011-2019 The LaTeX3 Project
+%% File: l3fp-expo.dtx
\cs_new:Npn \__fp_parse_word_exp:N
{ \__fp_parse_unary_function:NNN \__fp_exp_o:w ? }
\cs_new:Npn \__fp_parse_word_ln:N
@@ -17624,7 +17639,7 @@
1
\fi:
}
-%% File: l3fp-trig.dtx Copyright (C) 2011-2019 The LaTeX3 Project
+%% File: l3fp-trig.dtx
\tl_map_inline:nn
{
{acos} {acsc} {asec} {asin}
@@ -18500,7 +18515,7 @@
{ \__fp_asin_auxi_o:NnNww #1 {#3} #4 }
}
}
-%% File: l3fp-convert.dtx Copyright (C) 2011-2019 The LaTeX3 Project
+%% File: l3fp-convert.dtx
\cs_new:Npn \__fp_tuple_convert:Nw #1 \s__fp_tuple \__fp_tuple_chk:w #2 ;
{
\int_case:nnF { \__fp_array_count:n {#2} }
@@ -18812,7 +18827,7 @@
}
\exp_not:N \__fp_array_to_clist_loop:Nw
}
-%% File: l3fp-random.dtx Copyright (C) 2016-2019 The LaTeX3 Project
+%% File: l3fp-random.dtx
\cs_new:Npn \__fp_parse_word_rand:N
{ \__fp_parse_function:NNN \__fp_rand_o:Nw ? }
\cs_new:Npn \__fp_parse_word_randint:N
@@ -19104,7 +19119,7 @@
\fi:
}
}
-%% File: l3fparray.dtx Copyright (C) 2018-2019 The LaTeX3 Project
+%% File: l3fparray.dtx
\int_new:N \g__fp_array_int
\int_new:N \l__fp_array_loop_int
\cs_new_protected:Npn \fparray_new:Nn #1#2
@@ -19271,7 +19286,7 @@
}
\cs_new:Npn \__fp_array_item_normal:w #1 #2#3#4#5 #6 ; #7 ; #8 ; #9
{ #9 \s__fp \__fp_chk:w 1 #1 {#8} #7 {#2#3#4#5} {#6} ; }
-%% File l3sort.dtx (C) Copyright 2012-2019 The LaTeX3 Project
+%% File l3sort.dtx
\seq_new:N \g__sort_internal_seq
\tl_new:N \g__sort_internal_tl
\int_new:N \l__sort_length_int
@@ -19687,7 +19702,7 @@
\iow_char:N\\sort_return_swapped: ~multiple~times.~
Exactly~one~of~these~should~be~called.
}
-%% File: l3tl-analysis.dtx Copyright (C) 2011-2019 The LaTeX3 Project
+%% File: l3tl-analysis.dtx
\scan_new:N \s__tl
\cs_new_eq:NN \l__tl_analysis_token ?
\cs_new_eq:NN \l__tl_analysis_char_token ?
@@ -20126,7 +20141,7 @@
{ \tl_analysis_show:n }
\cs_new_protected:Npn \tl_show_analysis:n #1
{ \tl_analysis_show:n {#1} }
-%% File: l3regex.dtx Copyright (C) 2011-2019 The LaTeX3 Project
+%% File: l3regex.dtx
\cs_new_eq:NN \__regex_int_eval:w \tex_numexpr:D
\cs_new_protected:Npn \__regex_standard_escapechar:
{ \int_set:Nn \tex_escapechar:D { `\\ } }
@@ -23397,7 +23412,7 @@
}
}
{ }
-%% File: l3box.dtx Copyright (C) 2005-2019 The LaTeX3 Project
+%% File: l3box.dtx
\cs_new_eq:NN \__box_dim_eval:w \tex_dimexpr:D
\__kernel_patch_args:nNNpn
{
@@ -23435,13 +23450,13 @@
\cs_generate_variant:Nn \box_set_eq:NN { c , Nc , cc }
\cs_generate_variant:Nn \box_gset_eq:NN { c , Nc , cc }
\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
-\cs_new_protected:Npn \box_set_eq_clear:NN #1#2
+\cs_new_protected:Npn \box_set_eq_drop:NN #1#2
{ \tex_setbox:D #1 \tex_box:D #2 }
\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
-\cs_new_protected:Npn \box_gset_eq_clear:NN #1#2
+\cs_new_protected:Npn \box_gset_eq_drop:NN #1#2
{ \tex_global:D \tex_setbox:D #1 \tex_box:D #2 }
-\cs_generate_variant:Nn \box_set_eq_clear:NN { c , Nc , cc }
-\cs_generate_variant:Nn \box_gset_eq_clear:NN { c , Nc , cc }
+\cs_generate_variant:Nn \box_set_eq_drop:NN { c , Nc , cc }
+\cs_generate_variant:Nn \box_gset_eq_drop:NN { c , Nc , cc }
\prg_new_eq_conditional:NNn \box_if_exist:N \cs_if_exist:N
{ TF , T , F , p }
\prg_new_eq_conditional:NNn \box_if_exist:c \cs_if_exist:c
@@ -23453,14 +23468,32 @@
\cs_generate_variant:Nn \box_dp:N { c }
\cs_generate_variant:Nn \box_wd:N { c }
\cs_new_protected:Npn \box_set_dp:Nn #1#2
+ {
+ \tex_setbox:D #1 = \tex_copy:D #1
+ \box_dp:N #1 \__box_dim_eval:n {#2}
+ }
+\cs_generate_variant:Nn \box_set_dp:Nn { c }
+\cs_new_protected:Npn \box_gset_dp:Nn #1#2
{ \box_dp:N #1 \__box_dim_eval:n {#2} }
+\cs_generate_variant:Nn \box_gset_dp:Nn { c }
\cs_new_protected:Npn \box_set_ht:Nn #1#2
+ {
+ \tex_setbox:D #1 = \tex_copy:D #1
+ \box_ht:N #1 \__box_dim_eval:n {#2}
+ }
+\cs_generate_variant:Nn \box_set_ht:Nn { c }
+\cs_new_protected:Npn \box_gset_ht:Nn #1#2
{ \box_ht:N #1 \__box_dim_eval:n {#2} }
+\cs_generate_variant:Nn \box_gset_ht:Nn { c }
\cs_new_protected:Npn \box_set_wd:Nn #1#2
- { \box_wd:N #1 \__box_dim_eval:n {#2} }
-\cs_generate_variant:Nn \box_set_ht:Nn { c }
-\cs_generate_variant:Nn \box_set_dp:Nn { c }
+ {
+ \tex_setbox:D #1 = \tex_copy:D #1
+ \box_wd:N #1 \__box_dim_eval:n {#2}
+ }
\cs_generate_variant:Nn \box_set_wd:Nn { c }
+\cs_new_protected:Npn \box_gset_wd:Nn #1#2
+ { \box_wd:N #1 \__box_dim_eval:n {#2} }
+\cs_generate_variant:Nn \box_gset_wd:Nn { c }
\cs_new_eq:NN \box_use_drop:N \tex_box:D
\cs_new_eq:NN \box_use:N \tex_copy:D
\cs_generate_variant:Nn \box_use_drop:N { c }
@@ -23620,9 +23653,9 @@
\cs_new_protected:Npn \hbox_overlap_right:n #1
{ \hbox_to_zero:n { #1 \tex_hss:D } }
\cs_new_eq:NN \hbox_unpack:N \tex_unhcopy:D
-\cs_new_eq:NN \hbox_unpack_clear:N \tex_unhbox:D
+\cs_new_eq:NN \hbox_unpack_drop:N \tex_unhbox:D
\cs_generate_variant:Nn \hbox_unpack:N { c }
-\cs_generate_variant:Nn \hbox_unpack_clear:N { c }
+\cs_generate_variant:Nn \hbox_unpack_drop:N { c }
\cs_new_protected:Npn \vbox:n #1
{ \tex_vbox:D { \color_group_begin: #1 \par \color_group_end: } }
\cs_new_protected:Npn \vbox_top:n #1
@@ -23719,9 +23752,9 @@
\cs_generate_variant:Nn \vbox_set_to_ht:Nnw { c }
\cs_generate_variant:Nn \vbox_gset_to_ht:Nnw { c }
\cs_new_eq:NN \vbox_unpack:N \tex_unvcopy:D
-\cs_new_eq:NN \vbox_unpack_clear:N \tex_unvbox:D
+\cs_new_eq:NN \vbox_unpack_drop:N \tex_unvbox:D
\cs_generate_variant:Nn \vbox_unpack:N { c }
-\cs_generate_variant:Nn \vbox_unpack_clear:N { c }
+\cs_generate_variant:Nn \vbox_unpack_drop:N { c }
\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
\cs_new_protected:Npn \vbox_set_split_to_ht:NNn #1#2#3
{ \tex_setbox:D #1 \tex_vsplit:D #2 to \__box_dim_eval:n {#3} }
@@ -23746,8 +23779,14 @@
\dim_new:N \l__box_right_new_dim
\box_new:N \l__box_internal_box
\cs_new_protected:Npn \box_rotate:Nn #1#2
+ { \__box_rotate:NnN #1 {#2} \hbox_set:Nn }
+\cs_generate_variant:Nn \box_rotate:Nn { c }
+\cs_new_protected:Npn \box_grotate:Nn #1#2
+ { \__box_rotate:NnN #1 {#2} \hbox_gset:Nn }
+\cs_generate_variant:Nn \box_grotate:Nn { c }
+\cs_new_protected:Npn \__box_rotate:NnN #1#2#3
{
- \hbox_set:Nn #1
+ #3 #1
{
\fp_set:Nn \l__box_angle_fp {#2}
\fp_set:Nn \l__box_sin_fp { sind ( \l__box_angle_fp ) }
@@ -23859,7 +23898,19 @@
\fp_new:N \l__box_scale_y_fp
\cs_new_protected:Npn \box_resize_to_wd_and_ht_plus_dp:Nnn #1#2#3
{
- \hbox_set:Nn #1
+ \__box_resize_to_wd_and_ht_plus_dp:NnnN #1 {#2} {#3}
+ \hbox_set:Nn
+ }
+\cs_generate_variant:Nn \box_resize_to_wd_and_ht_plus_dp:Nnn { c }
+\cs_new_protected:Npn \box_gresize_to_wd_and_ht_plus_dp:Nnn #1#2#3
+ {
+ \__box_resize_to_wd_and_ht_plus_dp:NnnN #1 {#2} {#3}
+ \hbox_gset:Nn
+ }
+\cs_generate_variant:Nn \box_gresize_to_wd_and_ht_plus_dp:Nnn { c }
+\cs_new_protected:Npn \__box_resize_to_wd_and_ht_plus_dp:NnnN #1#2#3#4
+ {
+ #4 #1
{
\__box_resize_set_corners:N #1
\fp_set:Nn \l__box_scale_x_fp
@@ -23872,7 +23923,6 @@
\__box_resize:N #1
}
}
-\cs_generate_variant:Nn \box_resize_to_wd_and_ht_plus_dp:Nnn { c }
\cs_new_protected:Npn \__box_resize_set_corners:N #1
{
\dim_set:Nn \l__box_top_dim { \box_ht:N #1 }
@@ -23896,8 +23946,14 @@
{ \fp_to_dim:n { \fp_abs:n { #2 } * \dim_to_fp:n { #3 } } }
}
\cs_new_protected:Npn \box_resize_to_ht:Nn #1#2
+ { \__box_resize_to_ht:NnN #1 {#2} \hbox_set:Nn }
+\cs_generate_variant:Nn \box_resize_to_ht:Nn { c }
+\cs_new_protected:Npn \box_gresize_to_ht:Nn #1#2
+ { \__box_resize_to_ht:NnN #1 {#2} \hbox_gset:Nn }
+\cs_generate_variant:Nn \box_gresize_to_ht:Nn { c }
+\cs_new_protected:Npn \__box_resize_to_ht:NnN #1#2#3
{
- \hbox_set:Nn #1
+ #3 #1
{
\__box_resize_set_corners:N #1
\fp_set:Nn \l__box_scale_y_fp
@@ -23909,8 +23965,13 @@
\__box_resize:N #1
}
}
-\cs_generate_variant:Nn \box_resize_to_ht:Nn { c }
\cs_new_protected:Npn \box_resize_to_ht_plus_dp:Nn #1#2
+ { \__box_resize_to_ht_plus_dp:NnN #1 {#2} \hbox_set:Nn }
+\cs_generate_variant:Nn \box_resize_to_ht_plus_dp:Nn { c }
+\cs_new_protected:Npn \box_gresize_to_ht_plus_dp:Nn #1#2
+ { \__box_resize_to_ht_plus_dp:NnN #1 {#2} \hbox_gset:Nn }
+\cs_generate_variant:Nn \box_gresize_to_ht_plus_dp:Nn { c }
+\cs_new_protected:Npn \__box_resize_to_ht_plus_dp:NnN #1#2#3
{
\hbox_set:Nn #1
{
@@ -23924,10 +23985,15 @@
\__box_resize:N #1
}
}
-\cs_generate_variant:Nn \box_resize_to_ht_plus_dp:Nn { c }
\cs_new_protected:Npn \box_resize_to_wd:Nn #1#2
+ { \__box_resize_to_wd:NnN #1 {#2} \hbox_set:Nn }
+\cs_generate_variant:Nn \box_resize_to_wd:Nn { c }
+\cs_new_protected:Npn \box_gresize_to_wd:Nn #1#2
+ { \__box_resize_to_wd:NnN #1 {#2} \hbox_gset:Nn }
+\cs_generate_variant:Nn \box_gresize_to_wd:Nn { c }
+\cs_new_protected:Npn \__box_resize_to_wd:NnN #1#2#3
{
- \hbox_set:Nn #1
+ #3 #1
{
\__box_resize_set_corners:N #1
\fp_set:Nn \l__box_scale_x_fp
@@ -23936,10 +24002,15 @@
\__box_resize:N #1
}
}
-\cs_generate_variant:Nn \box_resize_to_wd:Nn { c }
\cs_new_protected:Npn \box_resize_to_wd_and_ht:Nnn #1#2#3
+ { \__box_resize_to_wd_and_ht:NnnN #1 {#2} {#3} \hbox_set:Nn }
+\cs_generate_variant:Nn \box_resize_to_wd_and_ht:Nnn { c }
+\cs_new_protected:Npn \box_gresize_to_wd_and_ht:Nnn #1#2#3
+ { \__box_resize_to_wd_and_ht:NnnN #1 {#2} {#3} \hbox_gset:Nn }
+\cs_generate_variant:Nn \box_gresize_to_wd_and_ht:Nnn { c }
+\cs_new_protected:Npn \__box_resize_to_wd_and_ht:NnnN #1#2#3#4
{
- \hbox_set:Nn #1
+ #4 #1
{
\__box_resize_set_corners:N #1
\fp_set:Nn \l__box_scale_x_fp
@@ -23952,18 +24023,22 @@
\__box_resize:N #1
}
}
-\cs_generate_variant:Nn \box_resize_to_wd_and_ht:Nnn { c }
\cs_new_protected:Npn \box_scale:Nnn #1#2#3
+ { \__box_scale:NnnN #1 {#2} {#3} \hbox_set:Nn }
+\cs_generate_variant:Nn \box_scale:Nnn { c }
+\cs_new_protected:Npn \box_gscale:Nnn #1#2#3
+ { \__box_scale:NnnN #1 {#2} {#3} \hbox_gset:Nn }
+\cs_generate_variant:Nn \box_gscale:Nnn { c }
+\cs_new_protected:Npn \__box_scale:NnnN #1#2#3#4
{
- \hbox_set:Nn #1
+ #4 #1
{
\fp_set:Nn \l__box_scale_x_fp {#2}
\fp_set:Nn \l__box_scale_y_fp {#3}
- \__box_scale_aux:N #1
+ \__box_scale:N #1
}
}
-\cs_generate_variant:Nn \box_scale:Nnn { c }
-\cs_new_protected:Npn \__box_scale_aux:N #1
+\cs_new_protected:Npn \__box_scale:N #1
{
\dim_set:Nn \l__box_top_dim { \box_ht:N #1 }
\dim_set:Nn \l__box_bottom_dim { -\box_dp:N #1 }
@@ -23978,21 +24053,33 @@
\__box_resize_common:N #1
}
\cs_new_protected:Npn \box_autosize_to_wd_and_ht:Nnn #1#2#3
- { \__box_autosize:Nnnn #1 {#2} {#3} { \box_ht:N #1 } }
+ { \__box_autosize:NnnnN #1 {#2} {#3} { \box_ht:N #1 } \hbox_set:Nn }
+\cs_generate_variant:Nn \box_autosize_to_wd_and_ht:Nnn { c }
+\cs_new_protected:Npn \box_gautosize_to_wd_and_ht:Nnn #1#2#3
+ { \__box_autosize:NnnnN #1 {#2} {#3} { \box_ht:N #1 } \hbox_gset:Nn }
\cs_generate_variant:Nn \box_autosize_to_wd_and_ht:Nnn { c }
\cs_new_protected:Npn \box_autosize_to_wd_and_ht_plus_dp:Nnn #1#2#3
- { \__box_autosize:Nnnn #1 {#2} {#3} { \box_ht:N #1 + \box_dp:N #1 } }
+ {
+ \__box_autosize:NnnnN #1 {#2} {#3} { \box_ht:N #1 + \box_dp:N #1 }
+ \hbox_set:Nn
+ }
\cs_generate_variant:Nn \box_autosize_to_wd_and_ht_plus_dp:Nnn { c }
-\cs_new_protected:Npn \__box_autosize:Nnnn #1#2#3#4
+\cs_new_protected:Npn \box_gautosize_to_wd_and_ht_plus_dp:Nnn #1#2#3
{
- \hbox_set:Nn #1
+ \__box_autosize:NnnnN #1 {#2} {#3} { \box_ht:N #1 + \box_dp:N #1 }
+ \hbox_gset:Nn
+ }
+\cs_generate_variant:Nn \box_gautosize_to_wd_and_ht_plus_dp:Nnn { c }
+\cs_new_protected:Npn \__box_autosize:NnnnN #1#2#3#4#5
+ {
+ #5 #1
{
\fp_set:Nn \l__box_scale_x_fp { ( #2 ) / \box_wd:N #1 }
\fp_set:Nn \l__box_scale_y_fp { ( #3 ) / ( #4 ) }
\fp_compare:nNnTF \l__box_scale_x_fp > \l__box_scale_y_fp
{ \fp_set_eq:NN \l__box_scale_x_fp \l__box_scale_y_fp }
{ \fp_set_eq:NN \l__box_scale_y_fp \l__box_scale_x_fp }
- \__box_scale_aux:N #1
+ \__box_scale:N #1
}
}
\cs_new_protected:Npn \__box_resize_common:N #1
@@ -24032,7 +24119,23 @@
}
}
}
-%% File: l3color-base.dtx Copyright (C) 2011,2012,2014,2016-2019 The LaTeX3 Project
+\__kernel_patch_deprecation:nnNNpn { 2020-12-31 } { \box_set_eq_drop:N }
+\cs_new_protected:Npn \box_set_eq_clear:NN #1#2
+ { \tex_setbox:D #1 \tex_box:D #2 }
+\__kernel_patch_deprecation:nnNNpn { 2020-12-31 } { \box_gset_eq_drop:N }
+\cs_new_protected:Npn \box_gset_eq_clear:NN #1#2
+ { \tex_global:D \tex_setbox:D #1 \tex_box:D #2 }
+\cs_generate_variant:Nn \box_set_eq_clear:NN { c , Nc , cc }
+\cs_generate_variant:Nn \box_gset_eq_clear:NN { c , Nc , cc }
+\__kernel_patch_deprecation:nnNNpn { 2020-12-31 } { \hbox_unpack_drop:N }
+\cs_new_protected:Npn \hbox_unpack_clear:N
+ { \hbox_unpack_drop:N }
+\cs_generate_variant:Nn \hbox_unpack_clear:N { c }
+\__kernel_patch_deprecation:nnNNpn { 2020-12-31 } { \vbox_unpack_drop:N }
+\cs_new_protected:Npn \vbox_unpack_clear:N
+ { \vbox_unpack_drop:N }
+\cs_generate_variant:Nn \vbox_unpack_clear:N { c }
+%% File: l3color-base.dtx
\cs_new_eq:NN \color_group_begin: \group_begin:
\cs_new_eq:NN \color_group_end: \group_end:
\cs_new_protected:Npn \color_ensure_current:
@@ -24055,7 +24158,7 @@
{ \driver_color_spot:nn {#1} {#2} }
\tl_new:N \l__color_current_tl
\tl_set:Nn \l__color_current_tl { gray~0 }
-%% File: l3coffins.dtx Copyright (C) 2010-2019 The LaTeX3 Project
+%% File: l3coffins.dtx
\box_new:N \l__coffin_internal_box
\dim_new:N \l__coffin_internal_dim
\tl_new:N \l__coffin_internal_tl
@@ -24094,7 +24197,7 @@
{
\cs_if_exist:NTF #1
{
- \cs_if_exist:cTF { l__coffin_poles_ \__coffin_to_value:N #1 _prop }
+ \cs_if_exist:cTF { coffin ~ \__coffin_to_value:N #1 ~ poles }
{ \prg_return_true: }
{ \prg_return_false: }
}
@@ -24120,15 +24223,24 @@
}
}
\cs_generate_variant:Nn \coffin_clear:N { c }
+\cs_new_protected:Npn \coffin_gclear:N #1
+ {
+ \__coffin_if_exist:NT #1
+ {
+ \box_gclear:N #1
+ \__coffin_greset_structure:N #1
+ }
+ }
+\cs_generate_variant:Nn \coffin_gclear:N { c }
\cs_new_protected:Npn \coffin_new:N #1
{
\box_new:N #1
\debug_suspend:
- \prop_clear_new:c { l__coffin_corners_ \__coffin_to_value:N #1 _prop }
- \prop_clear_new:c { l__coffin_poles_ \__coffin_to_value:N #1 _prop }
- \prop_gset_eq:cN { l__coffin_corners_ \__coffin_to_value:N #1 _prop }
+ \prop_gclear_new:c { coffin ~ \__coffin_to_value:N #1 ~ corners }
+ \prop_gclear_new:c { coffin ~ \__coffin_to_value:N #1 ~ poles }
+ \prop_gset_eq:cN { coffin ~ \__coffin_to_value:N #1 ~ corners }
\c__coffin_corners_prop
- \prop_gset_eq:cN { l__coffin_poles_ \__coffin_to_value:N #1 _prop }
+ \prop_gset_eq:cN { coffin ~ \__coffin_to_value:N #1 ~ poles }
\c__coffin_poles_prop
\debug_resume:
}
@@ -24142,26 +24254,47 @@
\color_ensure_current:
#2
}
- \__coffin_reset_structure:N #1
- \__coffin_update_poles:N #1
- \__coffin_update_corners:N #1
+ \__coffin_update:N #1
}
}
\cs_generate_variant:Nn \hcoffin_set:Nn { c }
+\cs_new_protected:Npn \hcoffin_gset:Nn #1#2
+ {
+ \__coffin_if_exist:NT #1
+ {
+ \hbox_gset:Nn #1
+ {
+ \color_ensure_current:
+ #2
+ }
+ \__coffin_gupdate:N #1
+ }
+ }
+\cs_generate_variant:Nn \hcoffin_gset:Nn { c }
\cs_new_protected:Npn \vcoffin_set:Nnn #1#2#3
{
+ \__coffin_set_vertical:NnnNN #1 {#2} {#3}
+ \vbox_set:Nn \__coffin_update:N
+ }
+\cs_generate_variant:Nn \vcoffin_set:Nnn { c }
+\cs_new_protected:Npn \vcoffin_gset:Nnn #1#2#3
+ {
+ \__coffin_set_vertical:NnnNN #1 {#2} {#3}
+ \vbox_gset:Nn \__coffin_gupdate:N
+ }
+\cs_generate_variant:Nn \vcoffin_gset:Nnn { c }
+\cs_new_protected:Npn \__coffin_set_vertical:NnnNN #1#2#3#4#5
+ {
\__coffin_if_exist:NT #1
{
- \vbox_set:Nn #1
+ #4 #1
{
\dim_set:Nn \tex_hsize:D {#2}
\dim_set_eq:NN \linewidth \tex_hsize:D
\dim_set_eq:NN \columnwidth \tex_hsize:D
#3
}
- \__coffin_reset_structure:N #1
- \__coffin_update_poles:N #1
- \__coffin_update_corners:N #1
+ #5 #1
\vbox_set_top:Nn \l__coffin_internal_box { \vbox_unpack:N #1 }
\__coffin_set_pole:Nnx #1 { T }
{
@@ -24176,7 +24309,6 @@
\box_clear:N \l__coffin_internal_box
}
}
-\cs_generate_variant:Nn \vcoffin_set:Nnn { c }
\cs_new_protected:Npn \hcoffin_set:Nw #1
{
\__coffin_if_exist:NT #1
@@ -24185,28 +24317,52 @@
\cs_set_protected:Npn \hcoffin_set_end:
{
\hbox_set_end:
- \__coffin_reset_structure:N #1
- \__coffin_update_poles:N #1
- \__coffin_update_corners:N #1
+ \__coffin_update:N #1
}
}
}
-\cs_new_protected:Npn \hcoffin_set_end: { }
\cs_generate_variant:Nn \hcoffin_set:Nw { c }
+\cs_new_protected:Npn \hcoffin_gset:Nw #1
+ {
+ \__coffin_if_exist:NT #1
+ {
+ \hbox_gset:Nw #1 \color_ensure_current:
+ \cs_set_protected:Npn \hcoffin_gset_end:
+ {
+ \hbox_gset_end:
+ \__coffin_gupdate:N #1
+ }
+ }
+ }
+\cs_generate_variant:Nn \hcoffin_gset:Nw { c }
+\cs_new_protected:Npn \hcoffin_set_end: { }
+\cs_new_protected:Npn \hcoffin_gset_end: { }
\cs_new_protected:Npn \vcoffin_set:Nnw #1#2
{
+ \__coffin_set_vertical:NnNNNNw #1 {#2} \vbox_set:Nw
+ \vcoffin_set_end:
+ \vbox_set_end: \__coffin_update:N
+ }
+\cs_generate_variant:Nn \vcoffin_set:Nnw { c }
+\cs_new_protected:Npn \vcoffin_gset:Nnw #1#2
+ {
+ \__coffin_set_vertical:NnNNNNw #1 {#2} \vbox_gset:Nw
+ \vcoffin_gset_end:
+ \vbox_gset_end: \__coffin_gupdate:N
+ }
+\cs_generate_variant:Nn \vcoffin_gset:Nnw { c }
+\cs_new_protected:Npn \__coffin_set_vertical:NnNNNNw #1#2#3#4#5#6
+ {
\__coffin_if_exist:NT #1
{
- \vbox_set:Nw #1
+ #3 #1
\dim_set:Nn \tex_hsize:D {#2}
\dim_set_eq:NN \linewidth \tex_hsize:D
\dim_set_eq:NN \columnwidth \tex_hsize:D
- \cs_set_protected:Npn \vcoffin_set_end:
+ \cs_set_protected:Npn #4
{
- \vbox_set_end:
- \__coffin_reset_structure:N #1
- \__coffin_update_poles:N #1
- \__coffin_update_corners:N #1
+ #5
+ #6 #1
\vbox_set_top:Nn \l__coffin_internal_box { \vbox_unpack:N #1 }
\__coffin_set_pole:Nnx #1 { T }
{
@@ -24223,22 +24379,38 @@
}
}
\cs_new_protected:Npn \vcoffin_set_end: { }
-\cs_generate_variant:Nn \vcoffin_set:Nnw { c }
+\cs_new_protected:Npn \vcoffin_gset_end: { }
\cs_new_protected:Npn \coffin_set_eq:NN #1#2
{
\__coffin_if_exist:NT #1
{
\box_set_eq:NN #1 #2
- \__coffin_set_eq_structure:NN #1 #2
+ \prop_set_eq:cc { coffin ~ \__coffin_to_value:N #1 ~ corners }
+ { coffin ~ \__coffin_to_value:N #2 ~ corners }
+ \prop_set_eq:cc { coffin ~ \__coffin_to_value:N #1 ~ poles }
+ { coffin ~ \__coffin_to_value:N #2 ~ poles }
}
}
\cs_generate_variant:Nn \coffin_set_eq:NN { c , Nc , cc }
+\cs_new_protected:Npn \coffin_gset_eq:NN #1#2
+ {
+ \__coffin_if_exist:NT #1
+ {
+ \box_gset_eq:NN #1 #2
+ \prop_gset_eq:cc { coffin ~ \__coffin_to_value:N #1 ~ corners }
+ { coffin ~ \__coffin_to_value:N #2 ~ corners }
+ \prop_gset_eq:cc { coffin ~ \__coffin_to_value:N #1 ~ poles }
+ { coffin ~ \__coffin_to_value:N #2 ~ poles }
+ }
+ }
+\cs_generate_variant:Nn \coffin_gset_eq:NN { c , Nc , cc }
\coffin_new:N \c_empty_coffin
-\tex_setbox:D \c_empty_coffin = \tex_hbox:D { }
\coffin_new:N \l__coffin_aligned_coffin
\coffin_new:N \l__coffin_aligned_internal_coffin
\coffin_new:N \l_tmpa_coffin
\coffin_new:N \l_tmpb_coffin
+\coffin_new:N \g_tmpa_coffin
+\coffin_new:N \g_tmpb_coffin
\cs_new_eq:NN \coffin_dp:N \box_dp:N
\cs_new_eq:NN \coffin_dp:c \box_dp:c
\cs_new_eq:NN \coffin_ht:N \box_ht:N
@@ -24248,7 +24420,7 @@
\cs_new_protected:Npn \__coffin_get_pole:NnN #1#2#3
{
\prop_get:cnNF
- { l__coffin_poles_ \__coffin_to_value:N #1 _prop } {#2} #3
+ { coffin ~ \__coffin_to_value:N #1 ~ poles } {#2} #3
{
\__kernel_msg_error:nnxx { kernel } { unknown-coffin-pole }
{ \exp_not:n {#2} } { \token_to_str:N #1 }
@@ -24257,30 +24429,30 @@
}
\cs_new_protected:Npn \__coffin_reset_structure:N #1
{
- \prop_set_eq:cN { l__coffin_corners_ \__coffin_to_value:N #1 _prop }
+ \prop_set_eq:cN { coffin ~ \__coffin_to_value:N #1 ~ corners }
\c__coffin_corners_prop
- \prop_set_eq:cN { l__coffin_poles_ \__coffin_to_value:N #1 _prop }
+ \prop_set_eq:cN { coffin ~ \__coffin_to_value:N #1 ~ poles }
\c__coffin_poles_prop
}
-\cs_new_protected:Npn \__coffin_set_eq_structure:NN #1#2
+\cs_new_protected:Npn \__coffin_greset_structure:N #1
{
- \prop_set_eq:cc { l__coffin_corners_ \__coffin_to_value:N #1 _prop }
- { l__coffin_corners_ \__coffin_to_value:N #2 _prop }
- \prop_set_eq:cc { l__coffin_poles_ \__coffin_to_value:N #1 _prop }
- { l__coffin_poles_ \__coffin_to_value:N #2 _prop }
- }
-\cs_new_protected:Npn \__coffin_gset_eq_structure:NN #1#2
- {
- \prop_gset_eq:cc { l__coffin_corners_ \__coffin_to_value:N #1 _prop }
- { l__coffin_corners_ \__coffin_to_value:N #2 _prop }
- \prop_gset_eq:cc { l__coffin_poles_ \__coffin_to_value:N #1 _prop }
- { l__coffin_poles_ \__coffin_to_value:N #2 _prop }
+ \prop_gset_eq:cN { coffin ~ \__coffin_to_value:N #1 ~ corners }
+ \c__coffin_corners_prop
+ \prop_gset_eq:cN { coffin ~ \__coffin_to_value:N #1 ~ poles }
+ \c__coffin_poles_prop
}
\cs_new_protected:Npn \coffin_set_horizontal_pole:Nnn #1#2#3
+ { \__coffin_set_horizontal_pole:NnnN #1 {#2} {#3} \prop_put:cnx }
+\cs_generate_variant:Nn \coffin_set_horizontal_pole:Nnn { c }
+\cs_new_protected:Npn \coffin_gset_horizontal_pole:Nnn #1#2#3
+ { \__coffin_set_horizontal_pole:NnnN #1 {#2} {#3} \prop_gput:cnx }
+\cs_generate_variant:Nn \coffin_gset_horizontal_pole:Nnn { c }
+\cs_new_protected:Npn \__coffin_set_horizontal_pole:NnnN #1#2#3#4
{
\__coffin_if_exist:NT #1
{
- \__coffin_set_pole:Nnx #1 {#2}
+ #4 { coffin ~ \__coffin_to_value:N #1 ~ poles }
+ {#2}
{
{ 0pt } { \dim_eval:n {#3} }
{ 1000pt } { 0pt }
@@ -24288,10 +24460,17 @@
}
}
\cs_new_protected:Npn \coffin_set_vertical_pole:Nnn #1#2#3
+ { \__coffin_set_vertical_pole:NnnN #1 {#2} {#3} \prop_put:cnx }
+\cs_generate_variant:Nn \coffin_set_vertical_pole:Nnn { c }
+\cs_new_protected:Npn \coffin_gset_vertical_pole:Nnn #1#2#3
+ { \__coffin_set_vertical_pole:NnnN #1 {#2} {#3} \prop_gput:cnx }
+ \cs_generate_variant:Nn \coffin_gset_vertical_pole:Nnn { c }
+\cs_new_protected:Npn \__coffin_set_vertical_pole:NnnN #1#2#3#4
{
\__coffin_if_exist:NT #1
{
- \__coffin_set_pole:Nnx #1 {#2}
+ #4 { coffin ~ \__coffin_to_value:N #1 ~ poles }
+ {#2}
{
{ \dim_eval:n {#3} } { 0pt }
{ 0pt } { 1000pt }
@@ -24300,63 +24479,93 @@
}
\cs_new_protected:Npn \__coffin_set_pole:Nnn #1#2#3
{
- \prop_put:cnn { l__coffin_poles_ \__coffin_to_value:N #1 _prop }
+ \prop_put:cnn { coffin ~ \__coffin_to_value:N #1 ~ poles }
{#2} {#3}
}
-\cs_generate_variant:Nn \coffin_set_horizontal_pole:Nnn { c }
-\cs_generate_variant:Nn \coffin_set_vertical_pole:Nnn { c }
\cs_generate_variant:Nn \__coffin_set_pole:Nnn { Nnx }
+\cs_new_protected:Npn \__coffin_update:N #1
+ {
+ \__coffin_reset_structure:N #1
+ \__coffin_update_corners:N #1
+ \__coffin_update_poles:N #1
+ }
+\cs_new_protected:Npn \__coffin_gupdate:N #1
+ {
+ \__coffin_greset_structure:N #1
+ \__coffin_gupdate_corners:N #1
+ \__coffin_gupdate_poles:N #1
+ }
\cs_new_protected:Npn \__coffin_update_corners:N #1
+ { \__coffin_update_corners:NN #1 \prop_put:Nnx }
+\cs_new_protected:Npn \__coffin_gupdate_corners:N #1
+ { \__coffin_update_corners:NN #1 \prop_gput:Nnx }
+\cs_new_protected:Npn \__coffin_update_corners:NN #1#2
+ {
+ \exp_args:Nc \__coffin_update_corners:NNN
+ { coffin ~ \__coffin_to_value:N #1 ~ corners }
+ #1 #2
+ }
+\cs_new_protected:Npn \__coffin_update_corners:NNN #1#2#3
{
- \prop_put:cnx { l__coffin_corners_ \__coffin_to_value:N #1 _prop }
+ #3 #1
{ tl }
- { { 0pt } { \dim_eval:n { \box_ht:N #1 } } }
- \prop_put:cnx { l__coffin_corners_ \__coffin_to_value:N #1 _prop }
+ { { 0pt } { \dim_eval:n { \box_ht:N #2 } } }
+ #3 #1
{ tr }
{
- { \dim_eval:n { \box_wd:N #1 } }
- { \dim_eval:n { \box_ht:N #1 } }
+ { \dim_eval:n { \box_wd:N #2 } }
+ { \dim_eval:n { \box_ht:N #2 } }
}
- \prop_put:cnx { l__coffin_corners_ \__coffin_to_value:N #1 _prop }
+ #3 #1
{ bl }
- { { 0pt } { \dim_eval:n { -\box_dp:N #1 } } }
- \prop_put:cnx { l__coffin_corners_ \__coffin_to_value:N #1 _prop }
+ { { 0pt } { \dim_eval:n { -\box_dp:N #2 } } }
+ #3 #1
{ br }
{
- { \dim_eval:n { \box_wd:N #1 } }
- { \dim_eval:n { -\box_dp:N #1 } }
+ { \dim_eval:n { \box_wd:N #2 } }
+ { \dim_eval:n { -\box_dp:N #2 } }
}
}
\cs_new_protected:Npn \__coffin_update_poles:N #1
+ { \__coffin_update_poles:NN #1 \prop_put:Nnx }
+\cs_new_protected:Npn \__coffin_gupdate_poles:N #1
+ { \__coffin_update_poles:NN #1 \prop_gput:Nnx }
+\cs_new_protected:Npn \__coffin_update_poles:NN #1#2
{
- \prop_put:cnx { l__coffin_poles_ \__coffin_to_value:N #1 _prop } { hc }
+ \exp_args:Nc \__coffin_update_poles:NNN
+ { coffin ~ \__coffin_to_value:N #1 ~ poles }
+ #1 #2
+ }
+\cs_new_protected:Npn \__coffin_update_poles:NNN #1#2#3
+ {
+ #3 #1 { hc }
{
- { \dim_eval:n { 0.5 \box_wd:N #1 } }
+ { \dim_eval:n { 0.5 \box_wd:N #2 } }
{ 0pt } { 0pt } { 1000pt }
}
- \prop_put:cnx { l__coffin_poles_ \__coffin_to_value:N #1 _prop } { r }
+ #3 #1 { r }
{
- { \dim_eval:n { \box_wd:N #1 } }
+ { \dim_eval:n { \box_wd:N #2 } }
{ 0pt } { 0pt } { 1000pt }
}
- \prop_put:cnx { l__coffin_poles_ \__coffin_to_value:N #1 _prop } { vc }
+ #3 #1 { vc }
{
{ 0pt }
- { \dim_eval:n { ( \box_ht:N #1 - \box_dp:N #1 ) / 2 } }
+ { \dim_eval:n { ( \box_ht:N #2 - \box_dp:N #2 ) / 2 } }
{ 1000pt }
{ 0pt }
}
- \prop_put:cnx { l__coffin_poles_ \__coffin_to_value:N #1 _prop } { t }
+ #3 #1 { t }
{
{ 0pt }
- { \dim_eval:n { \box_ht:N #1 } }
+ { \dim_eval:n { \box_ht:N #2 } }
{ 1000pt }
{ 0pt }
}
- \prop_put:cnx { l__coffin_poles_ \__coffin_to_value:N #1 _prop } { b }
+ #3 #1 { b }
{
{ 0pt }
- { \dim_eval:n { -\box_dp:N #1 } }
+ { \dim_eval:n { -\box_dp:N #2 } }
{ 1000pt }
{ 0pt }
}
@@ -24475,6 +24684,18 @@
}
\cs_new_protected:Npn \coffin_join:NnnNnnnn #1#2#3#4#5#6#7#8
{
+ \__coffin_join:NnnNnnnnN #1 {#2} {#3} #4 {#5} {#6} {#7} {#8}
+ \coffin_set_eq:NN
+ }
+\cs_generate_variant:Nn \coffin_join:NnnNnnnn { c , Nnnc , cnnc }
+\cs_new_protected:Npn \coffin_gjoin:NnnNnnnn #1#2#3#4#5#6#7#8
+ {
+ \__coffin_join:NnnNnnnnN #1 {#2} {#3} #4 {#5} {#6} {#7} {#8}
+ \coffin_gset_eq:NN
+ }
+\cs_generate_variant:Nn \coffin_gjoin:NnnNnnnn { c , Nnnc , cnnc }
+\cs_new_protected:Npn \__coffin_join:NnnNnnnnN #1#2#3#4#5#6#7#8#9
+ {
\__coffin_align:NnnNnnnnN
#1 {#2} {#3} #4 {#5} {#6} {#7} {#8} \l__coffin_aligned_coffin
\hbox_set:Nn \l__coffin_aligned_coffin
@@ -24490,9 +24711,8 @@
\__coffin_reset_structure:N \l__coffin_aligned_coffin
\prop_clear:c
{
- l__coffin_corners_
- \__coffin_to_value:N \l__coffin_aligned_coffin
- _prop
+ coffin ~ \__coffin_to_value:N \l__coffin_aligned_coffin
+ \c_space_tl corners
}
\__coffin_update_poles:N \l__coffin_aligned_coffin
\dim_compare:nNnTF \l__coffin_offset_x_dim < \c_zero_dim
@@ -24511,11 +24731,22 @@
{ \l__coffin_offset_x_dim } { \l__coffin_offset_y_dim }
}
\__coffin_update_vertical_poles:NNN #1 #4 \l__coffin_aligned_coffin
- \coffin_set_eq:NN #1 \l__coffin_aligned_coffin
+ #9 #1 \l__coffin_aligned_coffin
}
-\cs_generate_variant:Nn \coffin_join:NnnNnnnn { c , Nnnc , cnnc }
\cs_new_protected:Npn \coffin_attach:NnnNnnnn #1#2#3#4#5#6#7#8
{
+ \__coffin_attach:NnnNnnnnN #1 {#2} {#3} #4 {#5} {#6} {#7} {#8}
+ \coffin_set_eq:NN
+ }
+\cs_generate_variant:Nn \coffin_attach:NnnNnnnn { c , Nnnc , cnnc }
+\cs_new_protected:Npn \coffin_gattach:NnnNnnnn #1#2#3#4#5#6#7#8
+ {
+ \__coffin_gattach:NnnNnnnnN #1 {#2} {#3} #4 {#5} {#6} {#7} {#8}
+ \coffin_gset_eq:NN
+ }
+\cs_generate_variant:Nn \coffin_gattach:NnnNnnnn { c , Nnnc , cnnc }
+\cs_new_protected:Npn \__coffin_attach:NnnNnnnnN #1#2#3#4#5#6#7#8#9
+ {
\__coffin_align:NnnNnnnnN
#1 {#2} {#3} #4 {#5} {#6} {#7} {#8} \l__coffin_aligned_coffin
\box_set_ht:Nn \l__coffin_aligned_coffin { \box_ht:N #1 }
@@ -24524,10 +24755,10 @@
\__coffin_reset_structure:N \l__coffin_aligned_coffin
\prop_set_eq:cc
{
- l__coffin_corners_
- \__coffin_to_value:N \l__coffin_aligned_coffin _prop
+ coffin ~ \__coffin_to_value:N \l__coffin_aligned_coffin
+ \c_space_tl corners
}
- { l__coffin_corners_ \__coffin_to_value:N #1 _prop }
+ { coffin ~ \__coffin_to_value:N #1 ~ corners }
\__coffin_update_poles:N \l__coffin_aligned_coffin
\__coffin_offset_poles:Nnn #1 { 0pt } { 0pt }
\__coffin_offset_poles:Nnn #4
@@ -24535,7 +24766,7 @@
\__coffin_update_vertical_poles:NNN #1 #4 \l__coffin_aligned_coffin
\coffin_set_eq:NN #1 \l__coffin_aligned_coffin
}
-\cs_new_protected:Npn \coffin_attach_mark:NnnNnnnn #1#2#3#4#5#6#7#8
+\cs_new_protected:Npn \__coffin_attach_mark:NnnNnnnn #1#2#3#4#5#6#7#8
{
\__coffin_align:NnnNnnnnN
#1 {#2} {#3} #4 {#5} {#6} {#7} {#8} \l__coffin_aligned_coffin
@@ -24544,7 +24775,6 @@
\box_set_wd:Nn \l__coffin_aligned_coffin { \box_wd:N #1 }
\box_set_eq:NN #1 \l__coffin_aligned_coffin
}
-\cs_generate_variant:Nn \coffin_attach:NnnNnnnn { c , Nnnc , cnnc }
\cs_new_protected:Npn \__coffin_align:NnnNnnnnN #1#2#3#4#5#6#7#8#9
{
\__coffin_calculate_intersection:Nnn #4 {#5} {#6}
@@ -24566,7 +24796,7 @@
}
\cs_new_protected:Npn \__coffin_offset_poles:Nnn #1#2#3
{
- \prop_map_inline:cn { l__coffin_poles_ \__coffin_to_value:N #1 _prop }
+ \prop_map_inline:cn { coffin ~ \__coffin_to_value:N #1 ~ poles }
{ \__coffin_offset_pole:Nnnnnnn #1 {##1} ##2 {#2} {#3} }
}
\cs_new_protected:Npn \__coffin_offset_pole:Nnnnnnn #1#2#3#4#5#6#7#8
@@ -24585,15 +24815,15 @@
}
\cs_new_protected:Npn \__coffin_offset_corners:Nnn #1#2#3
{
- \prop_map_inline:cn { l__coffin_corners_ \__coffin_to_value:N #1 _prop }
+ \prop_map_inline:cn { coffin ~ \__coffin_to_value:N #1 ~ corners }
{ \__coffin_offset_corner:Nnnnn #1 {##1} ##2 {#2} {#3} }
}
\cs_new_protected:Npn \__coffin_offset_corner:Nnnnn #1#2#3#4#5#6
{
\prop_put:cnx
{
- l__coffin_corners_
- \__coffin_to_value:N \l__coffin_aligned_coffin _prop
+ coffin ~ \__coffin_to_value:N \l__coffin_aligned_coffin
+ \c_space_tl corners
}
{ #1 - #2 }
{
@@ -24636,10 +24866,12 @@
{ { 0pt } {#6} { 1000pt } { 0pt } }
}
}
+\coffin_new:N \c__coffin_empty_coffin
+\tex_setbox:D \c__coffin_empty_coffin = \tex_hbox:D { }
\cs_new_protected:Npn \coffin_typeset:Nnnnn #1#2#3#4#5
{
\mode_leave_vertical:
- \__coffin_align:NnnNnnnnN \c_empty_coffin { H } { l }
+ \__coffin_align:NnnNnnnnN \c__coffin_empty_coffin { H } { l }
#1 {#2} {#3} {#4} {#5} \l__coffin_aligned_coffin
\box_use_drop:N \l__coffin_aligned_coffin
}
@@ -24698,7 +24930,7 @@
\color {#4}
\rule { 1pt } { 1pt }
}
- \coffin_attach_mark:NnnNnnnn #1 {#2} {#3}
+ \__coffin_attach_mark:NnnNnnnn #1 {#2} {#3}
\l__coffin_display_pole_coffin { hc } { vc } { 0pt } { 0pt }
\hcoffin_set:Nn \l__coffin_display_coord_coffin
{
@@ -24714,7 +24946,7 @@
{ #3 #2 } \l__coffin_internal_tl
\quark_if_no_value:NTF \l__coffin_internal_tl
{
- \coffin_attach_mark:NnnNnnnn #1 {#2} {#3}
+ \__coffin_attach_mark:NnnNnnnn #1 {#2} {#3}
\l__coffin_display_coord_coffin { l } { vc }
{ 1pt } { 0pt }
}
@@ -24730,7 +24962,7 @@
}
\cs_new_protected:Npn \__coffin_mark_handle_aux:nnnnNnn #1#2#3#4#5#6#7
{
- \coffin_attach_mark:NnnNnnnn #5 {#6} {#7}
+ \__coffin_attach_mark:NnnNnnnn #5 {#6} {#7}
\l__coffin_display_coord_coffin {#1} {#2}
{ #3 \l__coffin_display_offset_dim }
{ #4 \l__coffin_display_offset_dim }
@@ -24744,7 +24976,7 @@
\rule { 1pt } { 1pt }
}
\prop_set_eq:Nc \l__coffin_display_poles_prop
- { l__coffin_poles_ \__coffin_to_value:N #1 _prop }
+ { coffin ~ \__coffin_to_value:N #1 ~ poles }
\__coffin_get_pole:NnN #1 { H } \l__coffin_pole_a_tl
\__coffin_get_pole:NnN #1 { T } \l__coffin_pole_b_tl
\tl_if_eq:NNT \l__coffin_pole_a_tl \l__coffin_pole_b_tl
@@ -24855,7 +25087,7 @@
}
{
\prop_map_function:cN
- { l__coffin_poles_ \__coffin_to_value:N #2 _prop }
+ { coffin ~ \__coffin_to_value:N #2 ~ poles }
\msg_show_item_unbraced:nn
}
{ }
@@ -24882,7 +25114,7 @@
Size~of~coffin~#1 : #2 \\
Poles~of~coffin~#1 : #3 .
}
-%% File: l3luatex.dtx Copyright (C) 2010-2019 The LaTeX3 Project
+%% File: l3luatex.dtx
\cs_new_eq:NN \__lua_escape:n \tex_luaescapestring:D
\cs_new_eq:NN \__lua_now:n \tex_directlua:D
\cs_new_eq:NN \__lua_shipout:n \tex_latelua:D
@@ -24931,7 +25163,7 @@
\cs_new:Npn \lua_escape_x:n #1 { \__lua_escape:n {#1} }
\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \lua_shipout_e:n }
\cs_new_protected:Npn \lua_shipout_x:n #1 { \__lua_shipout:n {#1} }
-%% File: l3unicode.dtx Copyright (C) 2018-2019 The LaTeX3 Project
+%% File: l3unicode.dtx
\ior_new:N \g__char_data_ior
\bool_lazy_or:nnTF { \sys_if_engine_luatex_p: } { \sys_if_engine_xetex_p: }
{
@@ -25070,7 +25302,7 @@
\ior_close:N \g__char_data_ior
\group_end:
}
-%% File: l3candidates.dtx Copyright (C) 2012-2019 The LaTeX3 Project
+%% File: l3candidates.dtx
\cs_new_protected:Npn \mode_leave_vertical:
{
\if_mode_vertical:
@@ -25080,7 +25312,16 @@
\cs_new_protected:Npn \box_clip:N #1
{ \hbox_set:Nn #1 { \driver_box_use_clip:N #1 } }
\cs_generate_variant:Nn \box_clip:N { c }
-\cs_new_protected:Npn \box_trim:Nnnnn #1#2#3#4#5
+\cs_new_protected:Npn \box_gclip:N #1
+ { \hbox_gset:Nn #1 { \driver_box_use_clip:N #1 } }
+\cs_generate_variant:Nn \box_gclip:N { c }
+\cs_new_protected:Npn \box_set_trim:Nnnnn #1#2#3#4#5
+ { \__box_set_trim:NnnnnN #1 {#2} {#3} {#4} {#5} \box_set_eq:NN }
+\cs_generate_variant:Nn \box_set_trim:Nnnnn { c }
+\cs_new_protected:Npn \box_gset_trim:Nnnnn #1#2#3#4#5
+ { \__box_set_trim:NnnnnN #1 {#2} {#3} {#4} {#5} \box_gset_eq:NN }
+\cs_generate_variant:Nn \box_gset_trim:Nnnnn { c }
+\cs_new_protected:Npn \__box_set_trim:NnnnnN #1#2#3#4#5#6
{
\hbox_set:Nn \l__box_internal_box
{
@@ -25093,7 +25334,7 @@
\hbox_set:Nn \l__box_internal_box
{
\box_move_down:nn \c_zero_dim
- { \box_use:N \l__box_internal_box }
+ { \box_use_drop:N \l__box_internal_box }
}
\box_set_dp:Nn \l__box_internal_box { \box_dp:N #1 - (#3) }
}
@@ -25101,7 +25342,7 @@
\hbox_set:Nn \l__box_internal_box
{
\box_move_down:nn { (#3) - \box_dp:N #1 }
- { \box_use:N \l__box_internal_box }
+ { \box_use_drop:N \l__box_internal_box }
}
\box_set_dp:Nn \l__box_internal_box \c_zero_dim
}
@@ -25110,7 +25351,7 @@
\hbox_set:Nn \l__box_internal_box
{
\box_move_up:nn \c_zero_dim
- { \box_use:N \l__box_internal_box }
+ { \box_use_drop:N \l__box_internal_box }
}
\box_set_ht:Nn \l__box_internal_box
{ \box_ht:N \l__box_internal_box - (#5) }
@@ -25119,14 +25360,19 @@
\hbox_set:Nn \l__box_internal_box
{
\box_move_up:nn { (#5) - \box_ht:N \l__box_internal_box }
- { \box_use:N \l__box_internal_box }
+ { \box_use_drop:N \l__box_internal_box }
}
\box_set_ht:Nn \l__box_internal_box \c_zero_dim
}
- \box_set_eq:NN #1 \l__box_internal_box
+ #6 #1 \l__box_internal_box
}
-\cs_generate_variant:Nn \box_trim:Nnnnn { c }
-\cs_new_protected:Npn \box_viewport:Nnnnn #1#2#3#4#5
+\cs_new_protected:Npn \box_set_viewport:Nnnnn #1#2#3#4#5
+ { \__box_set_viewport:NnnnnN #1 {#2} {#3} {#4} {#5} \box_set_eq:NN }
+\cs_generate_variant:Nn \box_set_viewport:Nnnnn { c }
+\cs_new_protected:Npn \box_gset_viewport:Nnnnn #1#2#3#4#5
+ { \__box_set_viewport:NnnnnN #1 {#2} {#3} {#4} {#5} \box_gset_eq:NN }
+\cs_generate_variant:Nn \box_gset_viewport:Nnnnn { c }
+\cs_new_protected:Npn \__box_set_viewport:NnnnnN #1#2#3#4#5#6
{
\hbox_set:Nn \l__box_internal_box
{
@@ -25139,13 +25385,13 @@
\hbox_set:Nn \l__box_internal_box
{
\box_move_down:nn \c_zero_dim
- { \box_use:N \l__box_internal_box }
+ { \box_use_drop:N \l__box_internal_box }
}
\box_set_dp:Nn \l__box_internal_box { - \__box_dim_eval:n {#3} }
}
{
\hbox_set:Nn \l__box_internal_box
- { \box_move_down:nn {#3} { \box_use:N \l__box_internal_box } }
+ { \box_move_down:nn {#3} { \box_use_drop:N \l__box_internal_box } }
\box_set_dp:Nn \l__box_internal_box \c_zero_dim
}
\dim_compare:nNnTF {#5} > \c_zero_dim
@@ -25153,7 +25399,7 @@
\hbox_set:Nn \l__box_internal_box
{
\box_move_up:nn \c_zero_dim
- { \box_use:N \l__box_internal_box }
+ { \box_use_drop:N \l__box_internal_box }
}
\box_set_ht:Nn \l__box_internal_box
{
@@ -25166,35 +25412,44 @@
\hbox_set:Nn \l__box_internal_box
{
\box_move_up:nn { - \__box_dim_eval:n {#5} }
- { \box_use:N \l__box_internal_box }
+ { \box_use_drop:N \l__box_internal_box }
}
\box_set_ht:Nn \l__box_internal_box \c_zero_dim
}
- \box_set_eq:NN #1 \l__box_internal_box
+ #6 #1 \l__box_internal_box
}
-\cs_generate_variant:Nn \box_viewport:Nnnnn { c }
\fp_new:N \l__coffin_sin_fp
\fp_new:N \l__coffin_cos_fp
\prop_new:N \l__coffin_bounding_prop
+\prop_new:N \l__coffin_corners_prop
+\prop_new:N \l__coffin_poles_prop
\dim_new:N \l__coffin_bounding_shift_dim
\dim_new:N \l__coffin_left_corner_dim
\dim_new:N \l__coffin_right_corner_dim
\dim_new:N \l__coffin_bottom_corner_dim
\dim_new:N \l__coffin_top_corner_dim
\cs_new_protected:Npn \coffin_rotate:Nn #1#2
+ { \__coffin_rotate:NnNN #1 {#2} \box_rotate:Nn \prop_set_eq:cN }
+\cs_new_protected:Npn \coffin_grotate:Nn #1#2
+ { \__coffin_rotate:NnNN #1 {#2} \box_grotate:Nn \prop_gset_eq:cN }
+\cs_new_protected:Npn \__coffin_rotate:NnNN #1#2#3#4
{
\fp_set:Nn \l__coffin_sin_fp { sind ( #2 ) }
\fp_set:Nn \l__coffin_cos_fp { cosd ( #2 ) }
- \prop_map_inline:cn { l__coffin_corners_ \__coffin_to_value:N #1 _prop }
+ \prop_set_eq:Nc \l__coffin_corners_prop
+ { coffin ~ \__coffin_to_value:N #1 ~ corners }
+ \prop_set_eq:Nc \l__coffin_poles_prop
+ { coffin ~ \__coffin_to_value:N #1 ~ poles }
+ \prop_map_inline:Nn \l__coffin_corners_prop
{ \__coffin_rotate_corner:Nnnn #1 {##1} ##2 }
- \prop_map_inline:cn { l__coffin_poles_ \__coffin_to_value:N #1 _prop }
+ \prop_map_inline:Nn \l__coffin_poles_prop
{ \__coffin_rotate_pole:Nnnnnn #1 {##1} ##2 }
\__coffin_set_bounding:N #1
\prop_map_inline:Nn \l__coffin_bounding_prop
{ \__coffin_rotate_bounding:nnn {##1} ##2 }
\__coffin_find_corner_maxima:N #1
\__coffin_find_bounding_shift:
- \box_rotate:Nn #1 {#2}
+ #3 #1 {#2}
\hbox_set:Nn \l__coffin_internal_box
{
\tex_kern:D
@@ -25209,11 +25464,15 @@
\box_set_dp:Nn \l__coffin_internal_box { 0 pt }
\box_set_wd:Nn \l__coffin_internal_box
{ \l__coffin_right_corner_dim - \l__coffin_left_corner_dim }
- \hbox_set:Nn #1 { \box_use:N \l__coffin_internal_box }
- \prop_map_inline:cn { l__coffin_corners_ \__coffin_to_value:N #1 _prop }
+ \hbox_set:Nn #1 { \box_use_drop:N \l__coffin_internal_box }
+ \prop_map_inline:Nn \l__coffin_corners_prop
{ \__coffin_shift_corner:Nnnn #1 {##1} ##2 }
- \prop_map_inline:cn { l__coffin_poles_ \__coffin_to_value:N #1 _prop }
+ \prop_map_inline:Nn \l__coffin_poles_prop
{ \__coffin_shift_pole:Nnnnnn #1 {##1} ##2 }
+ #4 { coffin ~ \__coffin_to_value:N #1 ~ corners }
+ \l__coffin_corners_prop
+ #4 { coffin ~ \__coffin_to_value:N #1 ~ poles }
+ \l__coffin_poles_prop
}
\cs_generate_variant:Nn \coffin_rotate:Nn { c }
\cs_new_protected:Npn \__coffin_set_bounding:N #1
@@ -25243,7 +25502,7 @@
\cs_new_protected:Npn \__coffin_rotate_corner:Nnnn #1#2#3#4
{
\__coffin_rotate_vector:nnNN {#3} {#4} \l__coffin_x_dim \l__coffin_y_dim
- \prop_put:cnx { l__coffin_corners_ \__coffin_to_value:N #1 _prop } {#2}
+ \prop_put:Nnx \l__coffin_corners_prop {#2}
{ { \dim_use:N \l__coffin_x_dim } { \dim_use:N \l__coffin_y_dim } }
}
\cs_new_protected:Npn \__coffin_rotate_pole:Nnnnnn #1#2#3#4#5#6
@@ -25251,7 +25510,7 @@
\__coffin_rotate_vector:nnNN {#3} {#4} \l__coffin_x_dim \l__coffin_y_dim
\__coffin_rotate_vector:nnNN {#5} {#6}
\l__coffin_x_prime_dim \l__coffin_y_prime_dim
- \__coffin_set_pole:Nnx #1 {#2}
+ \prop_put:Nnx \l__coffin_poles_prop {#2}
{
{ \dim_use:N \l__coffin_x_dim } { \dim_use:N \l__coffin_y_dim }
{ \dim_use:N \l__coffin_x_prime_dim }
@@ -25283,7 +25542,7 @@
\dim_set:Nn \l__coffin_right_corner_dim { -\c_max_dim }
\dim_set:Nn \l__coffin_bottom_corner_dim { \c_max_dim }
\dim_set:Nn \l__coffin_left_corner_dim { \c_max_dim }
- \prop_map_inline:cn { l__coffin_corners_ \__coffin_to_value:N #1 _prop }
+ \prop_map_inline:Nn \l__coffin_corners_prop
{ \__coffin_find_corner_maxima_aux:nn ##2 }
}
\cs_new_protected:Npn \__coffin_find_corner_maxima_aux:nn #1#2
@@ -25310,7 +25569,7 @@
}
\cs_new_protected:Npn \__coffin_shift_corner:Nnnn #1#2#3#4
{
- \prop_put:cnx { l__coffin_corners_ \__coffin_to_value:N #1 _ prop } {#2}
+ \prop_put:Nnx \l__coffin_corners_prop {#2}
{
{ \dim_eval:n { #3 - \l__coffin_left_corner_dim } }
{ \dim_eval:n { #4 - \l__coffin_bottom_corner_dim } }
@@ -25318,7 +25577,7 @@
}
\cs_new_protected:Npn \__coffin_shift_pole:Nnnnnn #1#2#3#4#5#6
{
- \prop_put:cnx { l__coffin_poles_ \__coffin_to_value:N #1 _ prop } {#2}
+ \prop_put:Nnx \l__coffin_poles_prop {#2}
{
{ \dim_eval:n { #3 - \l__coffin_left_corner_dim } }
{ \dim_eval:n { #4 - \l__coffin_bottom_corner_dim } }
@@ -25331,6 +25590,20 @@
\dim_new:N \l__coffin_scaled_width_dim
\cs_new_protected:Npn \coffin_resize:Nnn #1#2#3
{
+ \__coffin_resize:NnnNN #1 {#2} {#3}
+ \box_resize_to_wd_and_ht_plus_dp:Nnn
+ \prop_set_eq:cN
+ }
+\cs_generate_variant:Nn \coffin_resize:Nnn { c }
+\cs_new_protected:Npn \coffin_gresize:Nnn #1#2#3
+ {
+ \__coffin_resize:NnnNN #1 {#2} {#3}
+ \box_gresize_to_wd_and_ht_plus_dp:Nnn
+ \prop_gset_eq:cN
+ }
+\cs_generate_variant:Nn \coffin_gresize:Nnn { c }
+\cs_new_protected:Npn \__coffin_resize:NnnNN #1#2#3#4#5
+ {
\fp_set:Nn \l__coffin_scale_x_fp
{ \dim_to_fp:n {#2} / \dim_to_fp:n { \coffin_wd:N #1 } }
\fp_set:Nn \l__coffin_scale_y_fp
@@ -25338,41 +25611,52 @@
\dim_to_fp:n {#3}
/ \dim_to_fp:n { \coffin_ht:N #1 + \coffin_dp:N #1 }
}
- \box_resize_to_wd_and_ht_plus_dp:Nnn #1 {#2} {#3}
- \__coffin_resize_common:Nnn #1 {#2} {#3}
+ #4 #1 {#2} {#3}
+ \__coffin_resize_common:NnnN #1 {#2} {#3} #5
}
-\cs_generate_variant:Nn \coffin_resize:Nnn { c }
-\cs_new_protected:Npn \__coffin_resize_common:Nnn #1#2#3
+\cs_new_protected:Npn \__coffin_resize_common:NnnN #1#2#3#4
{
- \prop_map_inline:cn { l__coffin_corners_ \__coffin_to_value:N #1 _prop }
+ \prop_set_eq:Nc \l__coffin_corners_prop
+ { coffin ~ \__coffin_to_value:N #1 ~ corners }
+ \prop_set_eq:Nc \l__coffin_poles_prop
+ { coffin ~ \__coffin_to_value:N #1 ~ poles }
+ \prop_map_inline:Nn \l__coffin_corners_prop
{ \__coffin_scale_corner:Nnnn #1 {##1} ##2 }
- \prop_map_inline:cn { l__coffin_poles_ \__coffin_to_value:N #1 _prop }
+ \prop_map_inline:Nn \l__coffin_poles_prop
{ \__coffin_scale_pole:Nnnnnn #1 {##1} ##2 }
\fp_compare:nNnT \l__coffin_scale_x_fp < \c_zero_fp
{
- \prop_map_inline:cn
- { l__coffin_corners_ \__coffin_to_value:N #1 _prop }
+ \prop_map_inline:Nn \l__coffin_corners_prop
{ \__coffin_x_shift_corner:Nnnn #1 {##1} ##2 }
- \prop_map_inline:cn
- { l__coffin_poles_ \__coffin_to_value:N #1 _prop }
+ \prop_map_inline:Nn \l__coffin_poles_prop
{ \__coffin_x_shift_pole:Nnnnnn #1 {##1} ##2 }
}
+ #4 { coffin ~ \__coffin_to_value:N #1 ~ corners }
+ \l__coffin_corners_prop
+ #4 { coffin ~ \__coffin_to_value:N #1 ~ poles }
+ \l__coffin_poles_prop
}
\cs_new_protected:Npn \coffin_scale:Nnn #1#2#3
+ { \__coffin_scale:NnnNN #1 {#2} {#3} \box_scale:Nnn \prop_set_eq:cN }
+\cs_generate_variant:Nn \coffin_scale:Nnn { c }
+\cs_new_protected:Npn \coffin_gscale:Nnn #1#2#3
+ { \__coffin_scale:NnnNN #1 {#2} {#3} \box_gscale:Nnn \prop_gset_eq:cN }
+\cs_generate_variant:Nn \coffin_gscale:Nnn { c }
+\cs_new_protected:Npn \__coffin_scale:NnnNN #1#2#3#4#5
{
\fp_set:Nn \l__coffin_scale_x_fp {#2}
\fp_set:Nn \l__coffin_scale_y_fp {#3}
- \box_scale:Nnn #1 { \l__coffin_scale_x_fp } { \l__coffin_scale_y_fp }
+ #4 #1 { \l__coffin_scale_x_fp } { \l__coffin_scale_y_fp }
\dim_set:Nn \l__coffin_internal_dim
{ \coffin_ht:N #1 + \coffin_dp:N #1 }
\dim_set:Nn \l__coffin_scaled_total_height_dim
{ \fp_abs:n { \l__coffin_scale_y_fp } \l__coffin_internal_dim }
\dim_set:Nn \l__coffin_scaled_width_dim
{ -\fp_abs:n { \l__coffin_scale_x_fp } \coffin_wd:N #1 }
- \__coffin_resize_common:Nnn #1
+ \__coffin_resize_common:NnnN #1
{ \l__coffin_scaled_width_dim } { \l__coffin_scaled_total_height_dim }
+ #5
}
-\cs_generate_variant:Nn \coffin_scale:Nnn { c }
\cs_new_protected:Npn \__coffin_scale_vector:nnNN #1#2#3#4
{
\dim_set:Nn #3
@@ -25383,13 +25667,13 @@
\cs_new_protected:Npn \__coffin_scale_corner:Nnnn #1#2#3#4
{
\__coffin_scale_vector:nnNN {#3} {#4} \l__coffin_x_dim \l__coffin_y_dim
- \prop_put:cnx { l__coffin_corners_ \__coffin_to_value:N #1 _prop } {#2}
+ \prop_put:Nnx \l__coffin_corners_prop {#2}
{ { \dim_use:N \l__coffin_x_dim } { \dim_use:N \l__coffin_y_dim } }
}
\cs_new_protected:Npn \__coffin_scale_pole:Nnnnnn #1#2#3#4#5#6
{
\__coffin_scale_vector:nnNN {#3} {#4} \l__coffin_x_dim \l__coffin_y_dim
- \__coffin_set_pole:Nnx #1 {#2}
+ \prop_put:Nnx \l__coffin_poles_prop {#2}
{
{ \dim_use:N \l__coffin_x_dim } { \dim_use:N \l__coffin_y_dim }
{#5} {#6}
@@ -25397,14 +25681,14 @@
}
\cs_new_protected:Npn \__coffin_x_shift_corner:Nnnn #1#2#3#4
{
- \prop_put:cnx { l__coffin_corners_ \__coffin_to_value:N #1 _prop } {#2}
+ \prop_put:Nnx \l__coffin_corners_prop {#2}
{
{ \dim_eval:n { #3 + \box_wd:N #1 } } {#4}
}
}
\cs_new_protected:Npn \__coffin_x_shift_pole:Nnnnnn #1#2#3#4#5#6
{
- \prop_put:cnx { l__coffin_poles_ \__coffin_to_value:N #1 _prop } {#2}
+ \prop_put:Nnx \l__coffin_poles_prop {#2}
{
{ \dim_eval:n { #3 + \box_wd:N #1 } } {#4}
{#5} {#6}
@@ -25877,6 +26161,51 @@
\tex_shellescape:D
}
}
+\tl_new:N \l__sys_internal_tl
+\tl_const:Nx \c__sys_marker_tl { : \token_to_str:N : }
+\cs_new_protected:Npn \sys_shell_get:nnN #1#2#3
+ {
+ \sys_shell_get:nnNF {#1} {#2} #3
+ { \tl_clear:N #3 }
+ }
+\prg_new_protected_conditional:Npnn \sys_shell_get:nnN #1#2#3 { T , F , TF }
+ {
+ \sys_if_shell:TF
+ { \exp_args:No \__sys_get:nnN { \tl_to_str:n {#1} } {#2} #3 }
+ { \prg_return_false: }
+ }
+\cs_new_protected:Npn \__sys_get:nnN #1#2#3
+ {
+ \tl_if_in:nnTF {#1} { " }
+ {
+ \__kernel_msg_error:nnx
+ { kernel } { quote-in-shell } {#1}
+ \prg_return_false:
+ }
+ {
+ \if_false: { \fi:
+ \group_begin:
+ \int_set_eq:NN \tex_tracingnesting:D \c_zero_int
+ \exp_args:No \tex_everyeof:D { \c__sys_marker_tl }
+ #2 \scan_stop:
+ \exp_after:wN \__sys_get_do:Nw
+ \exp_after:wN #3
+ \exp_after:wN \prg_do_nothing:
+ \tex_input:D | "#1" \scan_stop:
+ \if_false: } \fi:
+ \prg_return_true:
+ }
+ }
+\exp_args:Nno \use:nn
+ { \cs_new_protected:Npn \__sys_get_do:Nw #1#2 }
+ { \c__sys_marker_tl }
+ {
+ \group_end:
+ \tl_set:No #1 {#2}
+ }
+\__kernel_msg_new:nnnn { kernel } { quote-in-shell }
+ { Quotes~in~shell~command~'#1'. }
+ { Shell~commands~cannot~contain~quotes~("). }
\sys_if_engine_luatex:TF
{
\str_const:Nx \c_sys_platform_str
@@ -25988,84 +26317,40 @@
\cs_new:Npn \__tl_act_count_space:n #1 { 1 + }
\cs_new:Npn \__tl_act_count_group:nn #1 #2
{ 2 + \tl_count_tokens:n {#2} + }
-\cs_new_protected:Npn \tl_set_from_file:Nnn
- { \__tl_set_from_file:NNnn \tl_set:Nn }
-\cs_new_protected:Npn \tl_gset_from_file:Nnn
- { \__tl_set_from_file:NNnn \tl_gset:Nn }
-\cs_generate_variant:Nn \tl_set_from_file:Nnn { c }
-\cs_generate_variant:Nn \tl_gset_from_file:Nnn { c }
-\cs_new_protected:Npn \__tl_set_from_file:NNnn #1#2#3#4
+\__kernel_patch_deprecation:nnNNpn { 2020-12-31 } { \file_get:nnN }
+\cs_new_protected:Npn \tl_set_from_file:Nnn #1#2#3
+ { \file_get:nnN {#2} {#3} #1 }
+\cs_generate_variant:Nn \tl_set_from_file:Nnn { c }
+\__kernel_patch_deprecation:nnNNpn { 2020-12-31 } { \file_get:nnN }
+\cs_new_protected:Npn \tl_gset_from_file:Nnn #1#2#3
{
- \file_get_full_name:nN {#4} \l__tl_file_name_str
- \str_if_empty:NTF \l__tl_file_name_str
- { \__kernel_file_missing:n {#4} }
- {
- \exp_args:NV \__tl_set_from:nNNn
- \l__tl_file_name_str
- #1 #2 {#3}
- }
+ \group_begin:
+ \file_get:nnN {#3} {#2} \l__tl_internal_a_tl
+ \tl_gset_eq:NN #1 \l__tl_internal_a_tl
+ \group_end:
}
-\exp_args:Nno \use:nn
- { \cs_new_protected:Npn \__tl_from_file_do:w #1 }
- { \c__tl_rescan_marker_tl }
- { \tl_set:No \l__tl_internal_a_tl {#1} }
-\cs_new_protected:Npn \__tl_set_from:nNNn #1#2#3#4
+\cs_generate_variant:Nn \tl_gset_from_file:Nnn { c }
+\__kernel_patch_deprecation:nnNNpn { 2020-12-31 } { \file_get:nnN }
+\cs_new_protected:Npn \tl_set_from_file_x:Nnn #1#2#3
{
\group_begin:
- \exp_args:No \tex_everyeof:D
- { \c__tl_rescan_marker_tl \exp_not:N }
- #4 \scan_stop:
- \exp_after:wN \__tl_from_file_do:w
- \exp_after:wN \prg_do_nothing:
- \tex_input:D #1 \scan_stop:
+ \file_get:nnN {#3} {#2} \l__tl_internal_a_tl
+ #2 \scan_stop:
+ \tl_set:Nx \l__tl_internal_a_tl { \l__tl_internal_a_tl }
\exp_args:NNNo \group_end:
- #2 #3 \l__tl_internal_a_tl
+ \tl_set:Nn #1 \l__tl_internal_a_tl
}
-\cs_new_protected:Npn \tl_set_from_file_x:Nnn
- { \__tl_set_from_file_x:NNnn \tl_set:Nn }
-\cs_new_protected:Npn \tl_gset_from_file_x:Nnn
- { \__tl_set_from_file_x:NNnn \tl_gset:Nn }
-\cs_generate_variant:Nn \tl_set_from_file_x:Nnn { c }
-\cs_generate_variant:Nn \tl_gset_from_file_x:Nnn { c }
-\cs_new_protected:Npn \__tl_set_from_file_x:NNnn #1#2#3#4
+\cs_generate_variant:Nn \tl_set_from_file_x:Nnn { c }
+\__kernel_patch_deprecation:nnNNpn { 2020-12-31 } { \file_get:nnN }
+\cs_new_protected:Npn \tl_gset_from_file_x:Nnn #1#2#3
{
- \file_get_full_name:nN {#4} \l__tl_file_name_str
- \str_if_empty:NTF \l__tl_file_name_str
- { \__kernel_file_missing:n {#4} }
- {
- \group_begin:
- \tex_everyeof:D { \exp_not:N }
- #3 \scan_stop:
- \tl_set:Nx \l__tl_internal_a_tl
- { \tex_input:D \l__tl_file_name_str \c_space_token }
- \exp_args:NNNo \group_end:
- #1 #2 \l__tl_internal_a_tl
- }
- }
-\str_new:N \l__tl_file_name_str
-\cs_new_protected:Npn \tl_set_from_shell:Nnn
- { \__tl_set_from_shell:NNnn \tl_set:Nn }
-\cs_generate_variant:Nn \tl_set_from_shell:Nnn { c }
-\cs_new_protected:Npn \tl_gset_from_shell:Nnn
- { \__tl_set_from_shell:NNnn \tl_gset:Nn }
-\cs_generate_variant:Nn \tl_gset_from_shell:Nnn { c }
-\cs_new_protected:Npn \__tl_set_from_shell:NNnn #1#2#3#4
- {
- \sys_if_shell:TF
- {
- \tl_set:Nn \l__tl_internal_a_tl {#4}
- \tl_if_in:NnTF \l__tl_internal_a_tl { " }
- {
- \__kernel_msg_error:nnx
- { kernel } { quote-in-shell } {#4}
- }
- { \__tl_set_from:nNNn { | " #4 " } #1 #2 {#3} }
- }
- { #1 #2 { } }
+ \group_begin:
+ \file_get:nnN {#3} {#2} \l__tl_internal_a_tl
+ #2 \scan_stop:
+ \tl_gset:Nx #1 { \l__tl_internal_a_tl }
+ \group_end:
}
-\__kernel_msg_new:nnnn { kernel } { quote-in-shell }
- { Quotes~in~shell~command~'#1'. }
- { Shell~commands~cannot~contain~quotes~("). }
+\cs_generate_variant:Nn \tl_gset_from_file_x:Nnn { c }
\cs_new:Npn \char_lower_case:N #1
{ \__char_change_case:nNN { lower } \char_value_lccode:n #1 }
\cs_new:Npn \char_upper_case:N #1
@@ -27307,7 +27592,7 @@
\tl_put_right:Nn \l__peek_collect_tl {#1}
\exp_after:wN \__peek_true_remove:w
}
-%% File: l3deprecation.dtx (C) Copyright 2017-2019 The LaTeX3 Project
+%% File: l3deprecation.dtx
\cs_new_protected:Npn \__kernel_deprecation_error:Nnn #1#2#3
{
\tex_protected:D \tex_outer:D \tex_edef:D #1