summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r--Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def89
-rw-r--r--Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def92
-rw-r--r--Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def249
-rw-r--r--Master/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def103
-rw-r--r--Master/texmf-dist/tex/latex/l3backend/l3backend-xdvipdfmx.def89
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty343
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty17
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3pdf/l3pdf.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty6
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex391
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.ltx34
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.sty32
19 files changed, 928 insertions, 533 deletions
diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def
index dcffe9a1511..f03b3c7b345 100644
--- a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def
+++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def
@@ -25,7 +25,7 @@
%%
%% File: l3backend-basics.dtx
\ProvidesExplFile
- {l3backend-dvipdfmx.def}{2020-06-29}{}
+ {l3backend-dvipdfmx.def}{2020-08-07}{}
{L3 backend support: dvipdfmx}
\cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D
\cs_new_protected:Npn \__kernel_backend_literal:n #1
@@ -42,37 +42,32 @@
{ \__kernel_backend_literal:n { x:grestore } }
%% File: l3backend-color.dtx
\cs_new_protected:Npn \__color_backend_pickup:N #1 { }
-\AtBeginDocument
+\cs_if_exist:cT { ver@color.sty }
{
- \cs_if_exist:cT { ver@color.sty }
+ \cs_set_protected:Npn \__color_backend_pickup:N #1
{
- \cs_set_protected:Npn \__color_backend_pickup:N #1
+ \exp_args:NV \tl_if_head_is_space:nTF \current@color
{
- \exp_args:NV \tl_if_head_is_space:nTF \current@color
- {
- \tl_set:Nx #1
- {
- { spot }
- { \exp_after:wN \use:n \current@color \c_space_tl 1 }
- }
- }
- {
- \exp_last_unbraced:Nx \__color_backend_pickup:w
- { \current@color } \s__color_stop #1
- }
+ \tl_set:Nx #1
+ {
+ { \exp_after:wN \use:n \current@color }
+ { 1 }
+ }
+ }
+ {
+ \exp_last_unbraced:Nx \__color_backend_pickup:w
+ { \current@color } \s__color_stop #1
}
- \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3
- { \tl_set:Nn #3 { {#1} {#2} } }
}
+ \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3
+ { \tl_set:Nn #3 { {#1} {#2} } }
}
-\cs_new_protected:Npn \__color_backend_cmyk:n #1
+\cs_new_protected:Npn \__color_backend_select_cmyk:n #1
{ \__color_backend_select:n { cmyk ~ #1 } }
-\cs_new_protected:Npn \__color_backend_gray:n #1
+\cs_new_protected:Npn \__color_backend_select_gray:n #1
{ \__color_backend_select:n { gray ~ #1 } }
-\cs_new_protected:Npn \__color_backend_rgb:n #1
+\cs_new_protected:Npn \__color_backend_select_rgb:n #1
{ \__color_backend_select:n { rgb ~ #1 } }
-\cs_new_protected:Npn \__color_backend_spot:n #1
- { \__color_backend_select:n {#1} }
\cs_new_protected:Npn \__color_backend_select:n #1
{
\__kernel_backend_literal:n { color~push~ #1 }
@@ -80,6 +75,24 @@
}
\cs_new_protected:Npn \__color_backend_reset:
{ \__kernel_backend_literal:n { color~pop } }
+\cs_new_protected:Npn \__color_backend_select_separation:nn #1#2
+ { \__color_backend_select:n {#1} }
+\cs_new_protected:Npn \__color_backend_fill_cmyk:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ k } }
+\cs_new_protected:Npn \__color_backend_fill_gray:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ g } }
+\cs_new_protected:Npn \__color_backend_fill_rgb:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ rg } }
+ \cs_new_protected:Npn \__color_backend_stroke_cmyk:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ K } }
+\cs_new_protected:Npn \__color_backend_stroke_gray:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ G } }
+\cs_new_protected:Npn \__color_backend_stroke_rgb:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ RG } }
+\cs_new_protected:Npn \__color_backend_fill_separation:nn #1#2
+ { \__kernel_backend_literal_pdf:n { /#1 ~ cs ~ #2 ~ scn } }
+\cs_new_protected:Npn \__color_backend_stroke_separation:nn #1#2
+ { \__kernel_backend_literal_pdf:n { /#1 ~ CS ~ #2 ~ SCN } }
%% File: l3backend-box.dtx
\cs_new_protected:Npn \__box_backend_clip:N #1
{
@@ -221,20 +234,6 @@
{ \__draw_backend_literal:n { 1 ~ j } }
\cs_new_protected:Npn \__draw_backend_join_bevel:
{ \__draw_backend_literal:n { 2 ~ j } }
-\cs_new_protected:Npn \__draw_backend_color_fill_cmyk:n #1
- { \__draw_backend_color_select:n { #1 ~ k } }
-\cs_new_protected:Npn \__draw_backend_color_stroke_cmyk:n #1
- { \__draw_backend_color_select:n { #1 ~ K } }
-\cs_new_protected:Npn \__draw_backend_color_fill_gray:n #1
- { \__draw_backend_color_select:n { #1 ~ g } }
-\cs_new_protected:Npn \__draw_backend_color_stroke_gray:n #1
- { \__draw_backend_color_select:n { #1 ~ G } }
-\cs_new_protected:Npn \__draw_backend_color_fill_rgb:n #1
- { \__draw_backend_color_select:n { #1 ~ rg } }
-\cs_new_protected:Npn \__draw_backend_color_stroke_rgb:n #1
- { \__draw_backend_color_select:n { #1 ~ RG } }
-\cs_new_eq:NN \__draw_backend_color_select:n \__kernel_backend_literal_pdf:n
-\cs_generate_variant:Nn \__draw_backend_color_select:n { x }
\cs_new_protected:Npn \__draw_backend_cm:nnnn #1#2#3#4
{
\__draw_backend_cm_decompose:nnnnN {#1} {#2} {#3} {#4}
@@ -315,8 +314,7 @@
\__kernel_backend_scope_end:
}
%% File: l3backend-graphics.dtx
-\AtBeginDocument
- { \cs_new_eq:NN \__graphics_backend_getbb_eps:n \graphics_read_bb:n }
+\cs_new_eq:NN \__graphics_backend_getbb_eps:n \graphics_read_bb:n
\cs_new_protected:Npn \__graphics_backend_getbb_jpg:n #1
{
\int_zero:N \l_graphics_page_int
@@ -472,15 +470,12 @@
\cs_new:Npn \__pdf_backend_pageobject_ref:n #1
{ @page #1 }
\bool_new:N \g__pdf_landscape_bool
-\AtBeginDocument
+\cs_if_exist:NT \landscape
{
- \cs_if_exist:NT \landscape
- {
- \tl_put_right:Nn \landscape
- { \bool_gset_true:N \g__pdf_landscape_bool }
- \tl_put_left:Nn \endlandscape
- { \bool_gset_false:N \g__pdf_landscape_bool }
- }
+ \tl_put_right:Nn \landscape
+ { \bool_gset_true:N \g__pdf_landscape_bool }
+ \tl_put_left:Nn \endlandscape
+ { \bool_gset_false:N \g__pdf_landscape_bool }
}
\int_new:N \g__pdf_backend_annotation_int
\cs_new_protected:Npn \__pdf_backend_annotation:nnnn #1#2#3#4
diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def
index 5a9a50aa57e..1a638ce9abb 100644
--- a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def
+++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def
@@ -25,7 +25,7 @@
%%
%% File: l3backend-basics.dtx
\ProvidesExplFile
- {l3backend-dvips.def}{2020-06-29}{}
+ {l3backend-dvips.def}{2020-08-07}{}
{L3 backend support: dvips}
\cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D
\cs_new_protected:Npn \__kernel_backend_literal:n #1
@@ -63,45 +63,59 @@
{ \__kernel_backend_literal:n { ps:grestore } }
%% File: l3backend-color.dtx
\cs_new_protected:Npn \__color_backend_pickup:N #1 { }
-\AtBeginDocument
+\cs_if_exist:cT { ver@color.sty }
{
- \cs_if_exist:cT { ver@color.sty }
+ \cs_set_protected:Npn \__color_backend_pickup:N #1
{
- \cs_set_protected:Npn \__color_backend_pickup:N #1
+ \exp_args:NV \tl_if_head_is_space:nTF \current@color
{
- \exp_args:NV \tl_if_head_is_space:nTF \current@color
- {
- \tl_set:Nx #1
- {
- { spot }
- { \exp_after:wN \use:n \current@color \c_space_tl 1 }
- }
- }
- {
- \exp_last_unbraced:Nx \__color_backend_pickup:w
- { \current@color } \s__color_stop #1
- }
+ \tl_set:Nx #1
+ {
+ { \exp_after:wN \use:n \current@color }
+ { 1 }
+ }
+ }
+ {
+ \exp_last_unbraced:Nx \__color_backend_pickup:w
+ { \current@color } \s__color_stop #1
}
- \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3
- { \tl_set:Nn #3 { {#1} {#2} } }
}
+ \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3
+ { \tl_set:Nn #3 { {#1} {#2} } }
}
-\cs_new_protected:Npn \__color_backend_cmyk:n #1
+\cs_new_protected:Npn \__color_backend_select_cmyk:n #1
{ \__color_backend_select:n { cmyk ~ #1 } }
-\cs_new_protected:Npn \__color_backend_gray:n #1
+\cs_new_protected:Npn \__color_backend_select_gray:n #1
{ \__color_backend_select:n { gray ~ #1 } }
-\cs_new_protected:Npn \__color_backend_rgb:n #1
+\cs_new_protected:Npn \__color_backend_select_rgb:n #1
{ \__color_backend_select:n { rgb ~ #1 } }
-\cs_new_protected:Npn \__color_backend_spot:n #1
- { \__color_backend_select:n {#1} }
\cs_new_protected:Npn \__color_backend_select:n #1
{
\__kernel_backend_literal:n { color~push~ #1 }
- \__kernel_backend_postscript:n { /color.fc~{ }~def }
+ \__kernel_backend_postscript:n { /color.sc~ { ~ } ~def }
+ \__kernel_backend_postscript:n { /color.fc~ { ~ } ~def }
\group_insert_after:N \__color_backend_reset:
}
\cs_new_protected:Npn \__color_backend_reset:
{ \__kernel_backend_literal:n { color~pop } }
+\cs_new_protected:Npn \__color_backend_select_separation:nn #1#2
+ { \__color_backend_select:n {#1} }
+\cs_new_protected:Npn \__color_backend_fill_cmyk:n #1
+ { \__kernel_backend_postscript:n { /color.fc { #1 ~ setcmykcolor } def } }
+\cs_new_protected:Npn \__color_backend_fill_gray:n #1
+ { \__kernel_backend_postscript:n { /color.fc { #1 ~ setgray } def } }
+\cs_new_protected:Npn \__color_backend_fill_rgb:n #1
+ { \__kernel_backend_postscript:n { /color.fc { #1 ~ setrgbcolor } def } }
+ \cs_new_protected:Npn \__color_backend_stroke_cmyk:n #1
+ { \__kernel_backend_postscript:n { /color.sc { #1 ~ setcmykcolor } def } }
+\cs_new_protected:Npn \__color_backend_stroke_gray:n #1
+ { \__kernel_backend_postscript:n { /color.sc { #1 ~ setgray } def } }
+\cs_new_protected:Npn \__color_backend_stroke_rgb:n #1
+ { \__kernel_backend_postscript:n { /color.sc { #1 ~ setrgbcolor } def } }
+\cs_new_protected:Npn \__color_backend_fill_separation:nn #1#2
+ { \__kernel_backend_postscript:n { /color.fc { #1 } def } }
+\cs_new_protected:Npn \__color_backend_stroke_separation:nn #1#2
+ { \__kernel_backend_postscript:n { /color.sc { #1 } def } }
%% File: l3backend-box.dtx
\cs_new_protected:Npn \__box_backend_clip:N #1
{
@@ -163,7 +177,6 @@
{
\__kernel_backend_literal:n { ps::[begin] }
\__draw_backend_literal:n { @beginspecial }
- \__draw_backend_literal:n { SDict ~ begin ~ /color.fc ~ { } ~ def ~ end }
}
\cs_new_protected:Npn \__draw_backend_end:
{
@@ -218,7 +231,10 @@
{ \__draw_backend_literal:n { closepath } }
\cs_new_protected:Npn \__draw_backend_stroke:
{
+ \__draw_backend_literal:n { gsave }
+ \__draw_backend_literal:n { color.sc }
\__draw_backend_literal:n { stroke }
+ \__draw_backend_literal:n { grestore }
\bool_if:NT \g__draw_draw_clip_bool
{
\__draw_backend_literal:x
@@ -259,6 +275,7 @@
\cs_new_protected:Npn \__draw_backend_fillstroke:
{
\__draw_backend_literal:n { gsave }
+ \__draw_backend_literal:n { color.sc }
\__draw_backend_literal:n { color.fc }
\__draw_backend_literal:x
{
@@ -326,28 +343,6 @@
{ \__draw_backend_literal:n { 1 ~ setlinejoin } }
\cs_new_protected:Npn \__draw_backend_join_bevel:
{ \__draw_backend_literal:n { 2 ~ setlinejoin } }
-\cs_new_protected:Npn \__draw_backend_color_fill_cmyk:n #1
- { \__draw_backend_color_fill:n { #1 ~ setcmykcolor } }
-\cs_new_protected:Npn \__draw_backend_color_stroke_cmyk:n #1
- { \__draw_backend_color_stroke:n { cmyk ~ #1 } }
-\cs_new_protected:Npn \__draw_backend_color_stroke_gray:n #1
- { \__draw_backend_color_fill:n { #1 ~ setgray } }
-\cs_new_protected:Npn \__draw_backend_color_fill_gray:n #1
- { \__draw_backend_color_stroke:n { gray ~ #1 } }
-\cs_new_protected:Npn \__draw_backend_color_fill_rgb:n #1
- { \__draw_backend_color_fill:n { #1 ~ setrgbcolor } }
-\cs_new_protected:Npn \__draw_backend_color_stroke_rgb:n #1
- { \__draw_backend_color_stroke:n { rgb ~ #1 } }
-\cs_new_protected:Npn \__draw_backend_color_fill:n #1
- {
- \__kernel_backend_postscript:n
- { /color.fc ~ { #1 } ~ def }
- }
-\cs_new_protected:Npn \__draw_backend_color_stroke:n #1
- {
- \__kernel_backend_literal:n { color~push~#1 }
- \group_insert_after:N \__draw_color_reset:
- }
\cs_new_protected:Npn \__draw_backend_cm:nnnn #1#2#3#4
{
\__draw_backend_literal:n
@@ -374,8 +369,7 @@
\__draw_backend_literal:n { @beginspecial }
}
%% File: l3backend-graphics.dtx
-\AtBeginDocument
- { \cs_new_eq:NN \__graphics_backend_getbb_eps:n \graphics_read_bb:n }
+\cs_new_eq:NN \__graphics_backend_getbb_eps:n \graphics_read_bb:n
\cs_new_protected:Npn \__graphics_backend_include_eps:n #1
{
\__kernel_backend_literal:x
diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def
index 3461b4a3ce2..007c597b7ab 100644
--- a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def
+++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def
@@ -25,7 +25,7 @@
%%
%% File: l3backend-basics.dtx
\ProvidesExplFile
- {l3backend-dvisvgm.def}{2020-06-29}{}
+ {l3backend-dvisvgm.def}{2020-08-07}{}
{L3 backend support: dvisvgm}
\cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D
\cs_new_protected:Npn \__kernel_backend_literal:n #1
@@ -34,46 +34,71 @@
\cs_new_protected:Npn \__kernel_backend_literal_svg:n #1
{ \__kernel_backend_literal:n { dvisvgm:raw~ #1 { ?nl } } }
\cs_generate_variant:Nn \__kernel_backend_literal_svg:n { x }
+\int_new:N \g__kernel_backend_scope_int
+\int_new:N \l__kernel_backend_scope_int
\cs_new_protected:Npn \__kernel_backend_scope_begin:
- { \__kernel_backend_literal_svg:n { <g> } }
+ {
+ \__kernel_backend_literal_svg:n { <g> }
+ \int_set_eq:NN
+ \l__kernel_backend_scope_int
+ \g__kernel_backend_scope_int
+ \group_begin:
+ \int_gset:Nn \g__kernel_backend_scope_int { 1 }
+ }
\cs_new_protected:Npn \__kernel_backend_scope_end:
- { \__kernel_backend_literal_svg:n { </g> } }
+ {
+ \prg_replicate:nn
+ { \g__kernel_backend_scope_int }
+ { \__kernel_backend_literal_svg:n { </g> } }
+ \group_end:
+ \int_gset_eq:NN
+ \g__kernel_backend_scope_int
+ \l__kernel_backend_scope_int
+ }
\cs_new_protected:Npn \__kernel_backend_scope_begin:n #1
- { \__kernel_backend_literal_svg:n { <g~ #1 > } }
+ {
+ \__kernel_backend_literal_svg:n { <g ~ #1 > }
+ \int_set_eq:NN
+ \l__kernel_backend_scope_int
+ \g__kernel_backend_scope_int
+ \group_begin:
+ \int_gset:Nn \g__kernel_backend_scope_int { 1 }
+ }
\cs_generate_variant:Nn \__kernel_backend_scope_begin:n { x }
+\cs_new_protected:Npn \__kernel_backend_scope:n #1
+ {
+ \__kernel_backend_literal_svg:n { <g ~ #1 > }
+ \int_gincr:N \g__kernel_backend_scope_int
+ }
+\cs_generate_variant:Nn \__kernel_backend_scope:n { x }
%% File: l3backend-color.dtx
\cs_new_protected:Npn \__color_backend_pickup:N #1 { }
-\AtBeginDocument
+\cs_if_exist:cT { ver@color.sty }
{
- \cs_if_exist:cT { ver@color.sty }
+ \cs_set_protected:Npn \__color_backend_pickup:N #1
{
- \cs_set_protected:Npn \__color_backend_pickup:N #1
+ \exp_args:NV \tl_if_head_is_space:nTF \current@color
+ {
+ \tl_set:Nx #1
+ {
+ { \exp_after:wN \use:n \current@color }
+ { 1 }
+ }
+ }
{
- \exp_args:NV \tl_if_head_is_space:nTF \current@color
- {
- \tl_set:Nx #1
- {
- { spot }
- { \exp_after:wN \use:n \current@color \c_space_tl 1 }
- }
- }
- {
- \exp_last_unbraced:Nx \__color_backend_pickup:w
- { \current@color } \s__color_stop #1
- }
+ \exp_last_unbraced:Nx \__color_backend_pickup:w
+ { \current@color } \s__color_stop #1
}
- \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3
- { \tl_set:Nn #3 { {#1} {#2} } }
}
+ \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3
+ { \tl_set:Nn #3 { {#1} {#2} } }
}
-\cs_new_protected:Npn \__color_backend_cmyk:n #1
+\cs_new_protected:Npn \__color_backend_select_cmyk:n #1
{ \__color_backend_select:n { cmyk ~ #1 } }
-\cs_new_protected:Npn \__color_backend_gray:n #1
+\cs_new_protected:Npn \__color_backend_select_gray:n #1
{ \__color_backend_select:n { gray ~ #1 } }
-\cs_new_protected:Npn \__color_backend_rgb:n #1
+\cs_new_protected:Npn \__color_backend_select_rgb:n #1
{ \__color_backend_select:n { rgb ~ #1 } }
-\cs_new_protected:Npn \__color_backend_spot:n #1
- { \__color_backend_select:n {#1} }
\cs_new_protected:Npn \__color_backend_select:n #1
{
\__kernel_backend_literal:n { color~push~ #1 }
@@ -81,6 +106,74 @@
}
\cs_new_protected:Npn \__color_backend_reset:
{ \__kernel_backend_literal:n { color~pop } }
+\cs_new_protected:Npn \__color_backend_select_separation:nn #1#2
+ { \__color_backend_select:n {#1} }
+\cs_new_protected:Npn \__color_backend_fill_cmyk:n #1
+ { \__color_backend_cmyk:nw { fill } #1 \s__color_stop }
+\cs_new_protected:Npn \__color_backend_stroke_cmyk:n #1
+ { \__color_backend_cmyk:nw { stroke } #1 \s__color_stop }
+\cs_new_protected:Npn \__color_backend_cmyk:nw
+ #1#2 ~ #3 ~ #4 ~ #5 \s__color_stop
+ {
+ \use:x
+ {
+ \__color_backend:nnnn
+ {#1}
+ { \fp_eval:n { -100 * ( 1 - min ( 1 , #2 + #5 ) ) } }
+ { \fp_eval:n { -100 * ( 1 - min ( 1 , #3 + #5 ) ) } }
+ { \fp_eval:n { -100 * ( 1 - min ( 1 , #4 + #5 ) ) } }
+ }
+ }
+\cs_new_protected:Npn \__color_backend_fill_gray:n #1
+ { \__color_backend_grab:nn { fill } {#1} }
+\cs_new_protected:Npn \__color_backend_stroke_gray:n #1
+ { \__color_backend_grab:nn { stroke } {#1} }
+\cs_new_protected:Npn \__color_backend_gray:nn #1#2
+ {
+ \use:x
+ {
+ \__color_backend_gray_aux:nn
+ {#1}
+ { \fp_eval:n { 100 * (#2) } }
+ }
+ }
+\cs_new_protected:Npn \__color_backend_gray_aux:nn #1#2
+ { \__color_backend:nnn {#1} {#2} {#2} {#2} }
+\cs_new_protected:Npn \__color_backend_fill_rgb:n #1
+ { \__color_backend_rgb:nw { fill } #1 \s__color_stop }
+\cs_new_protected:Npn \__color_backend_stroke_rgb:n #1
+ { \__color_backend_rgb:nw { stroke } #1 \s__color_stop }
+\cs_new_protected:Npn \__color_backend_rgb:nw
+ #1#2 ~ #3 ~ #4\s__color_stop
+ {
+ \use:x
+ {
+ \__color_backend:nnnn
+ { fill }
+ { \fp_eval:n { 100 * (#2) } }
+ { \fp_eval:n { 100 * (#3) } }
+ { \fp_eval:n { 100 * (#4) } }
+ }
+ }
+\cs_new_protected:Npx \__color_backend:nnnn #1#2#3#4
+ {
+ \__kernel_backend_scope:n
+ {
+ #1 =
+ "
+ rgb
+ (
+ #2 \c_percent_str ,
+ #3 \c_percent_str ,
+ #4 \c_percent_str
+ )
+ "
+ }
+ }
+\cs_new_protected:Npn \__color_backend_fill_separation:nn #1#2
+ { }
+\cs_new_protected:Npn \__color_backend_stroke_separation:nn #1#2
+ { }
%% File: l3backend-box.dtx
\cs_new_protected:Npn \__box_backend_clip:N #1
{
@@ -114,12 +207,12 @@
scale ( 1 , -1 )
"
}
- \__kernel_backend_scope_begin:x
+ \__kernel_backend_scope:x
{
clip-path =
"url ( \c_hash_str l3cp \int_use:N \g__box_clip_path_int ) "
}
- \__kernel_backend_scope_begin:n
+ \__kernel_backend_scope:n
{
transform =
"
@@ -130,8 +223,6 @@
}
\box_use:N #1
\__kernel_backend_scope_end:
- \__kernel_backend_scope_end:
- \__kernel_backend_scope_end:
}
\int_new:N \g__box_clip_path_int
\cs_new_protected:Npn \__box_backend_rotate:Nn #1#2
@@ -171,37 +262,10 @@
\cs_generate_variant:Nn \__draw_backend_literal:n { x }
\cs_new_protected:Npn \__draw_backend_begin:
{
- \__draw_backend_scope_begin:
- \__draw_backend_scope:n { transform="translate({?x},{?y})~scale(1,-1)" }
- }
-\cs_new_protected:Npn \__draw_backend_end:
- { \__draw_backend_scope_end: }
-\cs_new_protected:Npn \__draw_backend_scope_begin:
- {
- \int_set_eq:NN
- \l__draw_draw_scope_int
- \g__draw_draw_scope_int
- \group_begin:
- \int_gzero:N \g__draw_draw_scope_int
- }
-\cs_new_protected:Npn \__draw_backend_scope_end:
- {
- \prg_replicate:nn
- { \g__draw_draw_scope_int }
- { \__draw_backend_literal:n { </g> } }
- \group_end:
- \int_gset_eq:NN
- \g__draw_draw_scope_int
- \l__draw_draw_scope_int
- }
-\cs_new_protected:Npn \__draw_backend_scope:n #1
- {
- \__draw_backend_literal:n { <g~ #1 > }
- \int_gincr:N \g__draw_draw_scope_int
+ \__kernel_backend_scope_begin:
+ \__kernel_backend_scope:n { transform="translate({?x},{?y})~scale(1,-1)" }
}
-\cs_generate_variant:Nn \__draw_backend_scope:n { x }
-\int_new:N \g__draw_draw_scope_int
-\int_new:N \l__draw_draw_scope_int
+\cs_new_eq:NN \__draw_backend_end: \__kernel_backend_scope_end:
\cs_new_protected:Npn \__draw_backend_moveto:nn #1#2
{
\__draw_backend_add_to_path:n
@@ -355,68 +419,6 @@
{ \__draw_backend_scope:n { stroke-linejoin="round" } }
\cs_new_protected:Npn \__draw_backend_join_bevel:
{ \__draw_backend_scope:n { stroke-linejoin="bevel" } }
-\cs_new_protected:Npn \__draw_backend_color_fill_cmyk:n #1
- { \__draw_backend_color_cmyk:nw { fill } #1 \s__draw_stop }
-\cs_new_protected:Npn \__draw_backend_color_stroke_cmyk:n #1
- { \__draw_backend_color_cmyk:nw { stroke } #1 \s__draw_stop }
-\cs_new_protected:Npn \__draw_backend_color_cmyk:nw
- #1#2 ~ #3 ~ #4 ~ #5 \s__draw_stop
- {
- \use:x
- {
- \__draw_backend_color:nnnn
- {#1}
- { \fp_eval:n { -100 * ( 1 - min ( 1 , #2 + #5 ) ) } }
- { \fp_eval:n { -100 * ( 1 - min ( 1 , #3 + #5 ) ) } }
- { \fp_eval:n { -100 * ( 1 - min ( 1 , #4 + #5 ) ) } }
- }
- }
-\cs_new_protected:Npn \__draw_backend_color_fill_gray:n #1
- { \__draw_backend_color_grab:nn { fill } {#1} }
-\cs_new_protected:Npn \__draw_backend_color_stroke_gray:n #1
- { \__draw_backend_color_grab:nn { stroke } {#1} }
-\cs_new_protected:Npn \__draw_backend_color_gray:nn #1#2
- {
- \use:x
- {
- \__draw_backend_color_gray_aux:nn
- {#1}
- { \fp_eval:n { 100 * (#2) } }
- }
- }
-\cs_new_protected:Npn \__draw_backend_color_gray_aux:nn #1#2
- { \__draw_backend_color:nnn {#1} {#2} {#2} {#2} }
-\cs_new_protected:Npn \__draw_backend_color_fill_rgb:n #1
- { \__draw_backend_color_rgb:nw { fill } #1 \s__draw_stop }
-\cs_new_protected:Npn \__draw_backend_color_stroke_rgb:n #1
- { \__draw_backend_color_rgb:nw { stroke } #1 \s__draw_stop }
-\cs_new_protected:Npn \__draw_backend_color_rgb:nw
- #1#2 ~ #3 ~ #4\s__draw_stop
- {
- \use:x
- {
- \__draw_backend_color:nnnn
- { fill }
- { \fp_eval:n { 100 * (#2) } }
- { \fp_eval:n { 100 * (#3) } }
- { \fp_eval:n { 100 * (#4) } }
- }
- }
-\cs_new_protected:Npx \__draw_backend_color:nnnn #1#2#3#4
- {
- \__draw_backend_scope:n
- {
- #1 =
- "
- rgb
- (
- #2 \c_percent_str ,
- #3 \c_percent_str ,
- #4 \c_percent_str
- )
- "
- }
- }
\cs_new_protected:Npn \__draw_backend_cm:nnnn #1#2#3#4
{
\__draw_backend_scope:n
@@ -444,8 +446,7 @@
\__kernel_backend_scope_end:
}
%% File: l3backend-graphics.dtx
-\AtBeginDocument
- { \cs_new_eq:NN \__graphics_backend_getbb_eps:n \graphics_read_bb:n }
+\cs_new_eq:NN \__graphics_backend_getbb_eps:n \graphics_read_bb:n
\cs_new_protected:Npn \__graphics_backend_getbb_jpg:n #1
{
\int_zero:N \l_graphics_page_int
diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def
index 6d90ccf514e..b811d5f7301 100644
--- a/Master/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def
+++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def
@@ -25,7 +25,7 @@
%%
%% File: l3backend-basics.dtx
\ProvidesExplFile
- {l3backend-pdfmode.def}{2020-06-29}{}
+ {l3backend-pdfmode.def}{2020-08-07}{}
{L3 backend support: PDF mode}
\cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D
\cs_new_protected:Npn \__kernel_backend_literal:n #1
@@ -69,51 +69,44 @@
\cs_generate_variant:Nn \__kernel_backend_matrix:n { x }
%% File: l3backend-color.dtx
\cs_new_protected:Npn \__color_backend_pickup:N #1 { }
-\AtBeginDocument
+\cs_if_exist:cT { ver@color.sty }
{
- \cs_if_exist:cT { ver@color.sty }
+ \cs_set_protected:Npn \__color_backend_pickup:N #1
{
- \cs_set_protected:Npn \__color_backend_pickup:N #1
- {
- \exp_last_unbraced:Nx \__color_backend_pickup:w
- { \current@color } ~ 0 ~ 0 ~ 0 \s__color_stop #1
- }
- \cs_new_protected:Npn \__color_backend_pickup:w
- #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 \s__color_stop #7
+ \exp_last_unbraced:Nx \__color_backend_pickup:w
+ { \current@color } ~ 0 ~ 0 ~ 0 \s__color_stop #1
+ }
+ \cs_new_protected:Npn \__color_backend_pickup:w
+ #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 \s__color_stop #7
+ {
+ \str_if_eq:nnTF {#2} { g }
+ { \tl_set:Nn #7 { { gray } {#1} } }
{
- \str_if_eq:nnTF {#2} { g }
- { \tl_set:Nn #7 { { gray } {#1} } }
+ \str_if_eq:nnTF {#4} { rg }
+ { \tl_set:Nn #7 { { rgb } { #1 ~ #2 ~ #3 } } }
{
- \str_if_eq:nnTF {#4} { rg }
- { \tl_set:Nn #7 { { rgb } { #1 ~ #2 ~ #3 } } }
- {
- \str_if_eq:nnTF {#5} { k }
- { \tl_set:Nn #7 { { cmyk } { #1 ~ #2 ~ #3 ~ #4 } } }
+ \str_if_eq:nnTF {#5} { k }
+ { \tl_set:Nn #7 { { cmyk } { #1 ~ #2 ~ #3 ~ #4 } } }
+ {
+ \str_if_eq:nnTF {#2} { cs }
{
- \str_if_eq:nnTF {#2} { cs }
- {
- \tl_set:Nx #7 { { spot } { \use_none:n #1 ~ #5 } }
- }
- {
- \tl_set:Nn #7 { { gray } { 0 } }
- }
+ \tl_set:Nx #7 { { \use:n #1 } { #5 } }
}
- }
+ {
+ \tl_set:Nn #7 { { gray } { 0 } }
+ }
+ }
}
}
}
}
\int_new:N \l__kernel_color_stack_int
-\cs_new_protected:Npn \__color_backend_cmyk:n #1
+\cs_new_protected:Npn \__color_backend_select_cmyk:n #1
{ \__color_backend_select:n { #1 ~ k ~ #1 ~ K } }
-\cs_new_protected:Npn \__color_backend_gray:n #1
+\cs_new_protected:Npn \__color_backend_select_gray:n #1
{ \__color_backend_select:n { #1 ~ g ~ #1 ~ G } }
-\cs_new_protected:Npn \__color_backend_rgb:n #1
+\cs_new_protected:Npn \__color_backend_select_rgb:n #1
{ \__color_backend_select:n { #1 ~ rg ~ #1 ~ RG } }
-\cs_new_protected:Npn \__color_backend_spot:n #1
- { \__color_backend_spot:w #1 \s__color_stop }
-\cs_new_protected:Npn \__color_backend_spot:w #1 ~ #2 \s__color_stop
- { \__color_backend_select:n { /#1 ~ cs ~ /#1 ~ CS ~ #2 ~ scn ~ #2 ~ SCN } }
\cs_new_protected:Npx \__color_backend_select:n #1
{
\cs_if_exist:NTF \tex_pdfextension:D
@@ -129,6 +122,24 @@
{ \tex_pdfcolorstack:D }
\exp_not:N \l__kernel_color_stack_int pop \scan_stop:
}
+\cs_new_protected:Npn \__color_backend_select_separation:nn #1#2
+ { \__color_backend_select:n { /#1 ~ cs ~ /#1 ~ CS ~ #2 ~ scn ~ #2 ~ SCN } }
+\cs_new_protected:Npn \__color_backend_fill_cmyk:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ k } }
+\cs_new_protected:Npn \__color_backend_fill_gray:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ g } }
+\cs_new_protected:Npn \__color_backend_fill_rgb:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ rg } }
+ \cs_new_protected:Npn \__color_backend_stroke_cmyk:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ K } }
+\cs_new_protected:Npn \__color_backend_stroke_gray:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ G } }
+\cs_new_protected:Npn \__color_backend_stroke_rgb:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ RG } }
+\cs_new_protected:Npn \__color_backend_fill_separation:nn #1#2
+ { \__kernel_backend_literal_pdf:n { /#1 ~ cs ~ #2 ~ scn } }
+\cs_new_protected:Npn \__color_backend_stroke_separation:nn #1#2
+ { \__kernel_backend_literal_pdf:n { /#1 ~ CS ~ #2 ~ SCN } }
%% File: l3backend-box.dtx
\cs_new_protected:Npn \__box_backend_clip:N #1
{
@@ -283,34 +294,6 @@
{ \__draw_backend_literal:n { 1 ~ j } }
\cs_new_protected:Npn \__draw_backend_join_bevel:
{ \__draw_backend_literal:n { 2 ~ j } }
-\cs_new_protected:Npn \__draw_backend_color_fill_cmyk:n #1
- { \__draw_backend_color_select:n { #1 ~ k } }
-\cs_new_protected:Npn \__draw_backend_color_stroke_cmyk:n #1
- { \__draw_backend_color_select:n { #1 ~ K } }
-\cs_new_protected:Npn \__draw_backend_color_fill_gray:n #1
- { \__draw_backend_color_select:n { #1 ~ g } }
-\cs_new_protected:Npn \__draw_backend_color_stroke_gray:n #1
- { \__draw_backend_color_select:n { #1 ~ G } }
-\cs_new_protected:Npn \__draw_backend_color_fill_rgb:n #1
- { \__draw_backend_color_select:n { #1 ~ rg } }
-\cs_new_protected:Npn \__draw_backend_color_stroke_rgb:n #1
- { \__draw_backend_color_select:n { #1 ~ RG } }
-\cs_new_protected:Npx \__draw_backend_color_select:n #1
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D colorstack }
- { \tex_pdfcolorstack:D }
- \exp_not:N \l__kernel_color_stack_int push {#1}
- \group_insert_after:N \exp_not:N \__draw_backend_color_reset:
- }
-\cs_new_protected:Npx \__draw_backend_color_reset:
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D colorstack }
- { \tex_pdfcolorstack:D }
- \exp_not:N \l__kernel_color_stack_int pop \scan_stop:
- }
-\cs_generate_variant:Nn \__draw_backend_color_select:n { x }
\cs_new_protected:Npn \__draw_backend_cm:nnnn #1#2#3#4
{
\__kernel_backend_matrix:n { #1 ~ #2 ~ #3 ~ #4 }
diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-xdvipdfmx.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-xdvipdfmx.def
index e2557ea7d3f..983dc39b90c 100644
--- a/Master/texmf-dist/tex/latex/l3backend/l3backend-xdvipdfmx.def
+++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-xdvipdfmx.def
@@ -25,7 +25,7 @@
%%
%% File: l3backend-basics.dtx
\ProvidesExplFile
- {l3backend-xdvipdfmx.def}{2020-06-29}{}
+ {l3backend-xdvipdfmx.def}{2020-08-07}{}
{L3 backend support: xdvipdfmx}
\cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D
\cs_new_protected:Npn \__kernel_backend_literal:n #1
@@ -42,37 +42,32 @@
{ \__kernel_backend_literal:n { x:grestore } }
%% File: l3backend-color.dtx
\cs_new_protected:Npn \__color_backend_pickup:N #1 { }
-\AtBeginDocument
+\cs_if_exist:cT { ver@color.sty }
{
- \cs_if_exist:cT { ver@color.sty }
+ \cs_set_protected:Npn \__color_backend_pickup:N #1
{
- \cs_set_protected:Npn \__color_backend_pickup:N #1
+ \exp_args:NV \tl_if_head_is_space:nTF \current@color
{
- \exp_args:NV \tl_if_head_is_space:nTF \current@color
- {
- \tl_set:Nx #1
- {
- { spot }
- { \exp_after:wN \use:n \current@color \c_space_tl 1 }
- }
- }
- {
- \exp_last_unbraced:Nx \__color_backend_pickup:w
- { \current@color } \s__color_stop #1
- }
+ \tl_set:Nx #1
+ {
+ { \exp_after:wN \use:n \current@color }
+ { 1 }
+ }
+ }
+ {
+ \exp_last_unbraced:Nx \__color_backend_pickup:w
+ { \current@color } \s__color_stop #1
}
- \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3
- { \tl_set:Nn #3 { {#1} {#2} } }
}
+ \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3
+ { \tl_set:Nn #3 { {#1} {#2} } }
}
-\cs_new_protected:Npn \__color_backend_cmyk:n #1
+\cs_new_protected:Npn \__color_backend_select_cmyk:n #1
{ \__color_backend_select:n { cmyk ~ #1 } }
-\cs_new_protected:Npn \__color_backend_gray:n #1
+\cs_new_protected:Npn \__color_backend_select_gray:n #1
{ \__color_backend_select:n { gray ~ #1 } }
-\cs_new_protected:Npn \__color_backend_rgb:n #1
+\cs_new_protected:Npn \__color_backend_select_rgb:n #1
{ \__color_backend_select:n { rgb ~ #1 } }
-\cs_new_protected:Npn \__color_backend_spot:n #1
- { \__color_backend_select:n {#1} }
\cs_new_protected:Npn \__color_backend_select:n #1
{
\__kernel_backend_literal:n { color~push~ #1 }
@@ -80,6 +75,24 @@
}
\cs_new_protected:Npn \__color_backend_reset:
{ \__kernel_backend_literal:n { color~pop } }
+\cs_new_protected:Npn \__color_backend_select_separation:nn #1#2
+ { \__color_backend_select:n {#1} }
+\cs_new_protected:Npn \__color_backend_fill_cmyk:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ k } }
+\cs_new_protected:Npn \__color_backend_fill_gray:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ g } }
+\cs_new_protected:Npn \__color_backend_fill_rgb:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ rg } }
+ \cs_new_protected:Npn \__color_backend_stroke_cmyk:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ K } }
+\cs_new_protected:Npn \__color_backend_stroke_gray:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ G } }
+\cs_new_protected:Npn \__color_backend_stroke_rgb:n #1
+ { \__kernel_backend_literal_pdf:n { #1 ~ RG } }
+\cs_new_protected:Npn \__color_backend_fill_separation:nn #1#2
+ { \__kernel_backend_literal_pdf:n { /#1 ~ cs ~ #2 ~ scn } }
+\cs_new_protected:Npn \__color_backend_stroke_separation:nn #1#2
+ { \__kernel_backend_literal_pdf:n { /#1 ~ CS ~ #2 ~ SCN } }
%% File: l3backend-box.dtx
\cs_new_protected:Npn \__box_backend_clip:N #1
{
@@ -221,20 +234,6 @@
{ \__draw_backend_literal:n { 1 ~ j } }
\cs_new_protected:Npn \__draw_backend_join_bevel:
{ \__draw_backend_literal:n { 2 ~ j } }
-\cs_new_protected:Npn \__draw_backend_color_fill_cmyk:n #1
- { \__draw_backend_color_select:n { #1 ~ k } }
-\cs_new_protected:Npn \__draw_backend_color_stroke_cmyk:n #1
- { \__draw_backend_color_select:n { #1 ~ K } }
-\cs_new_protected:Npn \__draw_backend_color_fill_gray:n #1
- { \__draw_backend_color_select:n { #1 ~ g } }
-\cs_new_protected:Npn \__draw_backend_color_stroke_gray:n #1
- { \__draw_backend_color_select:n { #1 ~ G } }
-\cs_new_protected:Npn \__draw_backend_color_fill_rgb:n #1
- { \__draw_backend_color_select:n { #1 ~ rg } }
-\cs_new_protected:Npn \__draw_backend_color_stroke_rgb:n #1
- { \__draw_backend_color_select:n { #1 ~ RG } }
-\cs_new_eq:NN \__draw_backend_color_select:n \__kernel_backend_literal_pdf:n
-\cs_generate_variant:Nn \__draw_backend_color_select:n { x }
\cs_new_protected:Npn \__draw_backend_cm:nnnn #1#2#3#4
{
\__draw_backend_cm_decompose:nnnnN {#1} {#2} {#3} {#4}
@@ -315,8 +314,7 @@
\__kernel_backend_scope_end:
}
%% File: l3backend-graphics.dtx
-\AtBeginDocument
- { \cs_new_eq:NN \__graphics_backend_getbb_eps:n \graphics_read_bb:n }
+\cs_new_eq:NN \__graphics_backend_getbb_eps:n \graphics_read_bb:n
\int_new:N \g__graphics_track_int
\cs_new_protected:Npn \__graphics_backend_include_eps:n #1
{
@@ -518,15 +516,12 @@
\cs_new:Npn \__pdf_backend_pageobject_ref:n #1
{ @page #1 }
\bool_new:N \g__pdf_landscape_bool
-\AtBeginDocument
+\cs_if_exist:NT \landscape
{
- \cs_if_exist:NT \landscape
- {
- \tl_put_right:Nn \landscape
- { \bool_gset_true:N \g__pdf_landscape_bool }
- \tl_put_left:Nn \endlandscape
- { \bool_gset_false:N \g__pdf_landscape_bool }
- }
+ \tl_put_right:Nn \landscape
+ { \bool_gset_true:N \g__pdf_landscape_bool }
+ \tl_put_left:Nn \endlandscape
+ { \bool_gset_false:N \g__pdf_landscape_bool }
}
\int_new:N \g__pdf_backend_annotation_int
\cs_new_protected:Npn \__pdf_backend_annotation:nnnn #1#2#3#4
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty b/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
index 7c9d604ad24..bcdecda9b78 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
@@ -20,7 +20,7 @@
%%
%% File: l3benchmark.dtx
\RequirePackage{expl3}
-\ProvidesExplPackage{l3benchmark}{2020-07-17}{}
+\ProvidesExplPackage{l3benchmark}{2020-08-07}{}
{L3 Experimental benchmarking}
\sys_if_engine_luatex:TF
{
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty b/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty
index 3a81714bff8..e57c0db800d 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty
@@ -20,7 +20,7 @@
%%
%% File: l3color.dtx
\RequirePackage{expl3}
-\ProvidesExplPackage{l3color}{2020-07-17}{}
+\ProvidesExplPackage{l3color}{2020-08-07}{}
{L3 Experimental color support}
\tl_new:N \l__color_internal_tl
\scan_new:N \s__color_mark
@@ -43,10 +43,12 @@
\cs_generate_variant:Nn \__color_convert:nnN { VV }
\cs_new_protected:Npn \__color_convert:nnnN #1#2#3#4
{
- \str_if_eq:nnT {#1} { spot } % TO DO!!!
- { }
\tl_set:Nx #4
- { \use:c { __color_convert_ #1 _ #2 :w } #3 ~ 0 ~ 0 ~ 0 \s__color_stop }
+ {
+ \cs_if_exist:cTF { __color_convert_ #1 _ #2 :w }
+ { \use:c { __color_convert_ #1 _ #2 :w } #3 ~ 0 ~ 0 ~ 0 \s__color_stop }
+ { \use:c { c__color_fallback_ #2 _tl } }
+ }
}
\cs_generate_variant:Nn \__color_convert:nnnN { nV , nnV }
\cs_new:Npn \__color_convert_gray_rgb:w #1 ~ #2 \s__color_stop
@@ -421,6 +423,30 @@
\tl_set:Nx #1
{ { \l_color_fixed_model_tl } { \l__color_value_tl } }
}
+\cs_new_protected:Npn \color_fill:n #1
+ {
+ \__color_parse:nN {#1} \l__color_current_tl
+ \exp_after:wN \__color_draw:nnn \l__color_current_tl { fill }
+ }
+\cs_new_protected:Npn \color_stroke:n #1
+ {
+ \__color_parse:nN {#1} \l__color_current_tl
+ \exp_after:wN \__color_draw:nnn \l__color_current_tl { stroke }
+ }
+\cs_new_protected:Npn \color_fill:nn #1#2
+ {
+ \__color_select_main:Nw \l__color_current_tl
+ #1 / / \s__color_mark #2 / / \s__color_stop
+ \exp_after:wN \__color_draw:nnn \l__color_current_tl { fill }
+ }
+\cs_new_protected:Npn \color_stroke:nn #1#2
+ {
+ \__color_select_main:Nw \l__color_current_tl
+ #1 / / \s__color_mark #2 / / \s__color_stop
+ \exp_after:wN \__color_draw:nnn \l__color_current_tl { stroke }
+ }
+\cs_new_protected:Npn \__color_draw:nnn #1#2#3
+ { \use:c { __color_backend_ #3 _ #1 :n } {#2} }
\tl_new:N \l__color_named_tl
\cs_new_protected:Npn \color_set:nn #1#2
{
@@ -596,6 +622,245 @@
}
\cs_new_protected:cpn { __color_export_space-sep-rgb:Nw } #1#2 \s__color_stop
{ \tl_set:Nx #1 {#2} }
+\prop_new:N \l__color_internal_prop
+\int_new:N \g__color_separation_int
+\tl_const:Nn \c__color_model_whitepoint_cielab_a_tl { 1.0985 ~ 1 ~ 0.3558 }
+\tl_const:Nn \c__color_model_whitepoint_cielab_b_tl { 0.9807~ 1 ~ 1.1822 }
+\tl_const:Nn \c__color_model_whitepoint_cielab_e_tl { 1 ~ 1 ~ 1 }
+\tl_const:cn { c__color_model_whitepoint_cielab_d50_tl } { 0.9642 ~, 1 ~ 0.8251 }
+\tl_const:cn { c__color_model_whitepoint_cielab_d55_tl } { 0.9568 ~ 1 ~ 0.9214 }
+\tl_const:cn { c__color_model_whitepoint_cielab_d65_tl } { 0.9504 ~ 1 ~ 1.0888 }
+\tl_const:cn { c__color_model_whitepoint_cielab_d75_tl } { 0.9497 ~ 1 ~ 1.2261 }
+\tl_const:Nn \c__color_model_range_cielab_tl { -128 ~ 127 ~ -128 ~ 127 }
+\cs_new_protected:Npn \color_model_new:nnn #1#2#3
+ {
+ \exp_args:Nee \__color_model_new:nnn
+ { \tl_to_str:n {#1} }
+ { \str_foldcase:n {#2} } {#3}
+ }
+\cs_new_protected:Npn \__color_model_new:nnn #1#2#3
+ {
+ \cs_if_exist:cTF { __color_parse_model_ #1 :w }
+ {
+ \__kernel_msg_error:nnn { color } { model-already-defined } {#1}
+ }
+ {
+ \cs_if_exist:cTF { __color_model_ #2 :n }
+ {
+ \prop_set_from_keyval:Nn \l__color_internal_prop {#3}
+ \use:c { __color_model_ #2 :n } {#1}
+ }
+ {
+ \__kernel_msg_error:nnn { color } { unknown-model-type } {#2}
+ }
+ }
+ }
+\cs_new_protected:Npn \__color_model_separation:n #1
+ {
+ \prop_get:NnNTF \l__color_internal_prop { name }
+ \l__color_internal_tl
+ {
+ \exp_args:NV \__color_model_separation:nn
+ \l__color_internal_tl {#1}
+ }
+ {
+ \__kernel_msg_error:nnn { color }
+ { separation-requires-name } {#1}
+ }
+ }
+\cs_new_protected:Npn \__color_model_separation:nn #1#2
+ {
+ \prop_get:NnNTF \l__color_internal_prop { alternative-model }
+ \l__color_internal_tl
+ {
+ \exp_args:NV \__color_model_separation:nnn
+ \l__color_internal_tl {#2} {#1}
+ }
+ {
+ \__kernel_msg_error:nnn { color }
+ { separation-alternative-model } {#2}
+ }
+ }
+\cs_new_protected:Npn \__color_model_separation:nnn #1#2#3
+ {
+ \cs_if_exist:cTF { __color_model_separation_ #1 :nnnnnn }
+ {
+ \prop_get:NnNTF \l__color_internal_prop { alternative-values }
+ \l__color_internal_tl
+ {
+ \exp_after:wN \__color_model_separation:w \l__color_internal_tl
+ , 0 , 0 , 0 , 0 \s__color_stop {#2} {#3} {#1}
+ }
+ {
+ \__kernel_msg_error:nnn { color }
+ { separation-alternative-values } {#2}
+ }
+ }
+ {
+ \__kernel_msg_error:nnn { color }
+ { unknown-alternative-model } {#1}
+ }
+ }
+\cs_new_protected:Npn \__color_model_separation:w
+ #1 , #2 , #3 , #4 , #5 \s__color_stop #6#7#8
+ {
+ \int_gincr:N \g__color_separation_int
+ \tl_const:cn { c__color_fallback_ #6 _tl } { 1 }
+ \cs_new_eq:cN { __color_parse_mix_ #6 :nw } \__color_parse_mix_gray:nw
+ \cs_new:cpn { __color_parse_model_ #6 :w } ##1 , ##2 \s__color_stop
+ { {#6} { \__color_parse_number:n {##1} } }
+ \clist_map_inline:nn { fill , stroke , select }
+ {
+ \cs_new_protected:cpx { __color_backend_ ##1 _ #6 :n } ####1
+ {
+ \exp_not:c { __color_backend_ ##1 _ separation:nn }
+ { color \int_use:N \g__color_separation_int } {####1}
+ }
+ }
+ \use:c { __color_model_separation_ #8 :nnnnnn }
+ {#6} {#7} {#1} {#2} {#3} {#4}
+ \cs_new_protected:cpx { __color_model_ #6 _white: }
+ {
+ \prop_put:Nnn \exp_not:N \l__color_named_white_prop {#6} { 0 }
+ \exp_not:N \int_compare:nNnF { \tex_currentgrouplevel:D } = 0
+ { \group_insert_after:N \exp_not:c { __color_model_ #6 _ white: } }
+ }
+ \use:c { __color_model_ #6 _white: }
+ }
+\cs_new_protected:Npn \__color_model_separation_cmyk:nnnnnn #1#2#3#4#5#6
+ {
+ \cs_new:cpn { __color_convert_ #1 _cmyk:w } ##1 ~ ##2 \s__color_stop
+ {
+ \fp_eval:n {##1 * #3} ~
+ \fp_eval:n {##1 * #4} ~
+ \fp_eval:n {##1 * #5} ~
+ \fp_eval:n {##1 * #6}
+ }
+ \__color_model_convert:nnn {#1} { cmyk } { rgb }
+ \__color_model_convert:nnn {#1} { cmyk } { gray }
+ \__color_model_separation_init:nnnnn {#2} { /DeviceCMYK } { }
+ { 0 ~ 0 ~ 0 ~ 0 } { #3 ~ #4 ~ #5 ~ #6 }
+ }
+\cs_new_protected:Npn \__color_model_separation_rgb:nnnnnn #1#2#3#4#5#6
+ {
+ \cs_new:cpn { __color_convert_ #1 _rgb:w } ##1 ~ ##2 \s__color_stop
+ {
+ \fp_eval:n {##1 * #3} ~
+ \fp_eval:n {##1 * #4} ~
+ \fp_eval:n {##1 * #5}
+ }
+ \__color_model_convert:nnn {#1} { rgb } { cmyk }
+ \__color_model_convert:nnn {#1} { rgb } { gray }
+ \__color_model_separation_init:nnnnn {#2} { /DeviceRGB } { }
+ { 0 ~ 0 ~ 0 } { #3 ~ #4 ~ #5 }
+ }
+\cs_new_protected:Npn \__color_model_separation_gray:nnnnnn #1#2#3#4#5#6
+ {
+ \cs_new:cpn { __color_convert_ #1 _cmyk:w } ##1 ~ ##2 \s__color_stop
+ {
+ \fp_eval:n {##1 * #3} ~
+ \fp_eval:n {##1 * #3} ~
+ \fp_eval:n {##1 * #3} ~
+ \fp_eval:n {##1 * #3}
+ }
+ \cs_new:cpn { __color_convert_ #1 _gray:w } ##1 ~ ##2 \s__color_stop
+ { \fp_eval:n {##1 * #3} }
+ \cs_new:cpn { __color_convert_ #1 _rgb:w } ##1 ~ ##2 \s__color_stop
+ {
+ \fp_eval:n {##1 * #3} ~
+ \fp_eval:n {##1 * #3} ~
+ \fp_eval:n {##1 * #3}
+ }
+ \__color_model_separation_init:nnnnn {#2} { /DeviceGray } { } { 0 } {#3}
+ }
+\cs_new_protected:Npn \__color_model_convert:nnn #1#2#3
+ {
+ \cs_new:cpx { __color_convert_ #1 _ #3 :w } ##1 ~ ##2 \s__color_stop
+ {
+ \exp_not:N \exp_args:NNe \exp_not:N \use:nn
+ \exp_not:c { __color_convert_ #2 _ #3 :w }
+ { \exp_not:c { __color_convert_ #1 _ #2 :w } ##1 ~ ##2 \s__color_stop }
+ \c_space_tl \exp_not:N \s__color_stop
+ }
+ }
+\cs_new_protected:Npn \__color_model_separation_cielab:nnnnnn #1#2#3#4#5#6
+ {
+ \prop_get:NnNF \l__color_internal_prop { illuminant }
+ \l__color_internal_tl
+ {
+ \__kernel_msg_error:nnn { color }
+ { cielab-requires-illuminant } {#1}
+ \tl_set:Nn \l__color_internal_tl { d50 }
+ }
+ \exp_args:NV \__color_model_separation_cielab:nnnnnnn
+ \l__color_internal_tl {#1} {#2} {#3} {#4} {#5} {#6}
+ }
+\cs_new_protected:Npn \__color_model_separation_cielab:nnnnnnn #1#2#3#4#5#6#7
+ {
+ \tl_if_exist:cTF { c__color_model_whitepoint_cielab_ #1 _tl }
+ {
+ \__color_model_separation_init_cielab:n {#1}
+ \__color_model_separation_init_cielab:nnnnn {#2} {#3} {#4} {#5} {#6}
+ \cs_new:cpn { __color_convert_ #2 _cmyk:w } ##1 ~ ##2 \s__color_stop
+ { 0 ~ 0 ~ 0 ~ 1 }
+ \cs_new:cpn { __color_convert_ #2 _rgb:w } ##1 ~ ##2 \s__color_stop
+ { 1 ~ 1 ~ 1 }
+ \cs_new:cpn { __color_convert_ #2 _gray:w } ##1 ~ ##2 \s__color_stop
+ { 1 }
+ }
+ {
+ \__kernel_msg_error:nnn { color }
+ { unknown-cielab-illuminant } {#1}
+ }
+ }
+\cs_new_protected:Npn \__color_model_separation_init:nnnnn #1#2#3#4#5
+ {
+ \pdf_object_now:nx { array }
+ {
+ /Separation
+ / \str_convert_pdfname:n {#1} ~ #2 ~
+ <<
+ /FunctionType ~ 2
+ /Domain ~ [0 ~ 1]
+ \tl_if_blank:nF {#3} { /Range ~ [#3] }
+ /C0 ~ [#4] ~
+ /C1 ~ [#5] /N ~ 1
+ >>
+ }
+ \use:x
+ {
+ \pdfcoredict_gput:nnn
+ { Page / Resources / ColorSpace }
+ { color \int_use:N \g__color_separation_int }
+ { \pdf_object_last: }
+ }
+ }
+\cs_if_exist:NF \pdf_object_now:nn
+ { \cs_gset_protected:Npn \__color_model_separation_init:nnnnn #1#2#3#4#5 { } }
+\cs_new_protected:Npn \__color_model_separation_init_cielab:n #1
+ {
+ \pdf_object_new:nn { __color_illuminant_cielab_ #1 } { array }
+ \pdf_object_write:nx { __color_illuminant_cielab_ #1 }
+ {
+ /Lab ~
+ <<
+ /WhitePoint ~
+ [ \tl_use:c { c__color_model_whitepoint_cielab_ #1 _tl } ]
+ /Range ~ [ \c__color_model_range_lab_tl ]
+ >>
+ }
+ }
+\cs_if_exist:NF \pdf_object_new:nn
+ { \cs_gset_protected:Npn \__color_model_separation_init_cielab:n #1 { } }
+\cs_new_protected:Npn \__color_model_separation_init_cielab:nnnnn #1#2#3#4#5
+ {
+ \__color_model_separation_init:nnnnn
+ {#2}
+ { \pdf_object_ref:n { __color_illuminant_cielab_ #1 } }
+ { \c__color_model_range_lab_tl }
+ { 100 ~ 0 ~ 0 }
+ { #3 ~ #4 ~ #5 }
+ }
\cs_new_protected:Npn \color_show:n #1
{
\msg_show:nnxxxx { LaTeX / color } { show }
@@ -616,24 +881,94 @@
{
\msg_show_item_unbraced:nn { model } {#1}
}
+\__kernel_msg_new:nnnn { color } { cielab-requires-illuminant }
+ { CIELAB~color~space~'#1'~require~an~illuminant. }
+ {
+ LaTeX~has~been~asked~to~create~a~separation~color~space~using~
+ CIELAB~specifications,~but~no~\\ \\
+ \iow_indent:n { illuminant = <basis> }
+ \\ \\
+ key~was~given~with~the~correct~information.~LaTeX~will~use~illuminant~
+ 'd50'~for~recovery.
+ }
+\__kernel_msg_new:nnnn { color } { conversion-not-available }
+ { No~model~conversion~available~from~'#1'~to~'#2'. }
+ {
+ LaTeX~has~been~asked~to~convert~a~color~from~model~'#1'~
+ to~model'#2',~but~there~is~no~method~available~to~do~that.
+ }
+\__kernel_msg_new:nnnn { color } { model-already-defined }
+ { Color~model~'#1'~already~defined. }
+ {
+ LaTeX~was~asked~to~define~a~new~color~model~called~'#1',~but~
+ this~color~model~already~exists.
+ }
+\__kernel_msg_new:nnnn { color } { separation-alternative-model }
+ { Separation~color~space~'#1'~require~an~alternative~model. }
+ {
+ LaTeX~has~been~asked~to~create~a~separation~color~space,~
+ but~no~\\ \\
+ \iow_indent:n { alternative-model = <model> }
+ \\ \\
+ key~was~given~with~the~correct~information.
+ }
+\__kernel_msg_new:nnnn { color } { separation-alternative-values }
+ { Separation~color~space~'#1'~require~values~for~the~alternative~space. }
+ {
+ LaTeX~has~been~asked~to~create~a~separation~color~space,~
+ but~no~\\ \\
+ \iow_indent:n { alternative-values = <model> }
+ \\ \\
+ key~was~given~with~the~correct~information.
+ }
+\__kernel_msg_new:nnnn { color } { separation-requires-name }
+ { Separation~color~space~'#1'~require~a~formal~name. }
+ {
+ LaTeX~has~been~asked~to~create~a~separation~color~space,~
+ but~no~\\ \\
+ \iow_indent:n { name = <formal~name> }
+ \\ \\
+ key~was~given~with~the~correct~information.
+ }
\__kernel_msg_new:nnnn { color } { unknown-color }
{ Unknown~color~'#1'. }
{
LaTeX~has~been~asked~to~use~a~color~named~'#1',~
but~this~has~never~been~defined.
}
+\__kernel_msg_new:nnnn { color } { unknown-alternative-model }
+ { Separation~color~space~'#1'~require~an~valid~alternative~space. }
+ {
+ LaTeX~has~been~asked~to~create~a~separation~color~space,~
+ but~the~model~given~as\\ \\
+ \iow_indent:n { alternative-model = <model> }
+ \\ \\
+ is~unknown.
+ }
\__kernel_msg_new:nnnn { color } { unknown-export-format }
{ Unknown~export~format~'#1'. }
{
LaTeX~has~been~asked~to~export~a~color~in~format~'#1',~
but~this~has~never~been~defined.
}
+\__kernel_msg_new:nnnn { color } { unknown-cielab-illuminant }
+ { Unknown~illuminant~model~'#1'. }
+ {
+ LaTeX~has~been~asked~to~use~create~a~color~space~using~CIELAB~
+ illuminant~'#1',~but~this~does~not~exist.
+ }
\__kernel_msg_new:nnnn { color } { unknown-model }
{ Unknown~color~model~'#1'. }
{
LaTeX~has~been~asked~to~use~a~color~model~called~'#1',~
but~this~model~is~not~set~up.
}
+\__kernel_msg_new:nnnn { color } { unknown-model-type }
+ { Unknown~color~model~type~'#1'. }
+ {
+ LaTeX~has~been~asked~to~create~a~new~color~model~called~'#1',~
+ but~this~type~of~model~was~never~set~up.
+ }
\__kernel_msg_new:nnn { color } { show }
{
The~color~#1~
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty b/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
index 44b5e3b83c9..442ef0d914d 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
@@ -28,7 +28,7 @@
%%
%% File: l3draw.dtx
\RequirePackage{expl3}
-\ProvidesExplPackage{l3draw}{2020-07-17}{}
+\ProvidesExplPackage{l3draw}{2020-08-07}{}
{L3 Experimental core drawing support}
\RequirePackage { l3color }
\scan_new:N \s__draw_mark
@@ -1242,7 +1242,7 @@
\draw_transform_shift_reset:
\__draw_softpath_clear:
\draw_linewidth:n { \l_draw_default_linewidth_dim }
- \draw_color:n { . }
+ \color_select:n { . }
\draw_nonzero_rule:
\draw_cap_butt:
\draw_join_miter:
@@ -1686,19 +1686,6 @@
\cs_new_protected:Npn \draw_join_bevel: { \__draw_backend_join_bevel: }
\cs_new_protected:Npn \draw_join_miter: { \__draw_backend_join_miter: }
\cs_new_protected:Npn \draw_join_round: { \__draw_backend_join_round: }
-\tl_new:N \l__draw_color_tmp_tl
-\cs_new_eq:NN \draw_color:n \color_select:n
-\cs_new_protected:Npn \draw_color_fill:n #1
- { \__draw_color:nn { fill } {#1} }
-\cs_new_protected:Npn \draw_color_stroke:n #1
- { \__draw_color:nn { stroke } {#1} }
-\cs_new_protected:Npn \__draw_color:nn #1#2
- {
- \color_export:nnN {#2} { backend } \l__draw_color_tmp_tl
- \exp_after:wN \__draw_color:nnn \l__draw_color_tmp_tl {#1}
- }
-\cs_new_protected:Npn \__draw_color:nnn #1#2#3
- { \use:c { __draw_backend_color_ #3 _ #1 :n } {#2} }
%% File: l3draw-transforms.dtx
\bool_new:N \l__draw_matrix_active_bool
\fp_new:N \l__draw_matrix_a_fp
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty b/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty
index 159aa00c175..ce0665a29ce 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty
@@ -20,7 +20,7 @@
%%
%% File: l3graphics.dtx
\RequirePackage{expl3}
-\ProvidesExplPackage{l3graphics}{2020-07-17}{}
+\ProvidesExplPackage{l3graphics}{2020-08-07}{}
{L3 Experimental graphics inclusion support}
\ior_new:N \l__graphics_tmp_ior
\tl_new:N \l__graphics_tmp_tl
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3pdf/l3pdf.sty b/Master/texmf-dist/tex/latex/l3experimental/l3pdf/l3pdf.sty
index d73a05c7a17..bb5772c97e8 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3pdf/l3pdf.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3pdf/l3pdf.sty
@@ -20,7 +20,7 @@
%%
%% File: l3pdf.dtx
\RequirePackage{expl3}
-\ProvidesExplPackage{l3pdf}{2020-07-17}{}
+\ProvidesExplPackage{l3pdf}{2020-08-07}{}
{L3 Experimental core PDF support}
\scan_new:N \s__pdf_stop
\bool_new:N \g__pdf_init_bool
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
index 3137cb8f981..bd5c500e1aa 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
@@ -20,7 +20,7 @@
%%
%% File: l3str-format.dtx
\RequirePackage{expl3}
-\ProvidesExplPackage{l3str-format}{2020-07-17}{}
+\ProvidesExplPackage{l3str-format}{2020-08-07}{}
{L3 Experimental string formatting}
\cs_generate_variant:Nn \use:nn { nf }
\cs_generate_variant:Nn \use:nnn { fnf }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty b/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty
index 6270bb99cf8..419d1734ce1 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty
@@ -20,7 +20,7 @@
%%
%% File: l3sys-shell.dtx
\RequirePackage{expl3}
-\ProvidesExplPackage{l3sys-shell}{2020-07-17}{}
+\ProvidesExplPackage{l3sys-shell}{2020-08-07}{}
{L3 Experimental system shell functions}
\scan_new:N \s__sys_stop
\quark_new:N \q__sys_nil
diff --git a/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty b/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
index bdcbd292634..435b6ddf396 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
@@ -20,7 +20,7 @@
%%
%% File: xcoffins.dtx
\RequirePackage{xparse}
-\ProvidesExplPackage{xcoffins}{2020-07-17}{}
+\ProvidesExplPackage{xcoffins}{2020-08-07}{}
{L3 Experimental design level coffins}
\keys_define:nn { coffin }
{
diff --git a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
index 007cd6febd6..3377bcd000d 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
@@ -32,7 +32,7 @@
}%
\endinput
}
-\ProvidesExplPackage{l3galley}{2020-07-17}{}
+\ProvidesExplPackage{l3galley}{2020-08-07}{}
{L3 Experimental galley code}
\int_new:N \l__galley_tmp_int
\seq_new:N \g__galley_tmpa_seq
@@ -356,7 +356,9 @@
}
\cs_undefine:N \everypar
\newtoks \everypar
-\AtBeginDocument
+\cs_if_exist:NTF \AtBeginDocument
+ { \AtBeginDocument }
+ { \use:n }
{
\tex_everypar:D
{
diff --git a/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty b/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
index cfdab78c975..e4cd26aaa37 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
@@ -20,7 +20,7 @@
%%
%% File: xgalley.dtx
\RequirePackage{xparse}
-\ProvidesExplPackage{xgalley}{2020-07-17}{}
+\ProvidesExplPackage{xgalley}{2020-08-07}{}
{L3 Experimental galley}
\RequirePackage{xparse,xtemplate,l3galley}
\clist_new:N \l__galley_tmpa_clist
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
index 6779946f1f0..007e6bbfaad 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
@@ -69,7 +69,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2020-07-17}%
+\def\ExplFileDate{2020-08-07}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -241,10 +241,9 @@
\fi
\expandafter\endgroup
\next
-\protected\def\ExplSyntaxOff{}%
\protected\edef\ExplSyntaxOff
{%
- \protected\def\ExplSyntaxOff{}%
+ \protected\def\noexpand\ExplSyntaxOff{}%
\catcode 9 = \the\catcode 9\relax
\catcode 32 = \the\catcode 32\relax
\catcode 34 = \the\catcode 34\relax
@@ -306,9 +305,7 @@
\let \tex_let:D \let
\begingroup
\long \def \__kernel_primitive:NN #1#2
- {
- \tex_global:D \tex_let:D #2 #1
- }
+ { \tex_global:D \tex_let:D #2 #1 }
\__kernel_primitive:NN \ \tex_space:D
\__kernel_primitive:NN \/ \tex_italiccorrection:D
\__kernel_primitive:NN \- \tex_hyphen:D
@@ -9509,6 +9506,7 @@
}
}
}
+\int_gset:Nn \tex_errorcontextlines:D { -1 }
\cs_new:Npn \msg_fatal_text:n #1
{
Fatal ~
@@ -9897,6 +9895,7 @@
{ \exp_not:c { #1 :nnxxxx } {##1} {##2} {##3} { } { } { } }
}
\__msg_kernel_class_new:nN { fatal } \__msg_fatal_code:nnnnnn
+ \__msg_kernel_class_new:nN { critical } \__msg_critical_code:nnnnnn
\cs_undefine:N \__kernel_msg_error:nnxx
\cs_undefine:N \__kernel_msg_error:nnx
\cs_undefine:N \__kernel_msg_error:nn
@@ -10135,13 +10134,13 @@
} { . }
}
\__kernel_msg_new:nnnn { kernel } { enable-debug }
- { To~use~'#1'~load~expl3~with~the~'enable-debug'~option. }
+ { To~use~'#1'~set~the~'enable-debug'~option. }
{
- The~function~'#1'~will~be~ignored~because~it~can~only~work~if~
+ The~function~'#1'~will~be~ignored~because~it~can~only~work~if~
some~internal~functions~in~expl3~have~been~appropriately~
defined.~This~only~happens~if~one~of~the~options~
- 'enable-debug',~'check-declarations'~or~'log-functions'~was~
- given~when~loading~expl3.
+ 'enable-debug',~'check-declarations'~or~'log-functions'~was~
+ given~as~an~option:~see~the~main~expl3~documentation.
}
\__kernel_msg_new:nnn { kernel } { bad-exp-end-f }
{ Misused~\exp_end_continue_f:w or~:nw }
@@ -11737,20 +11736,6 @@
#1 \\
.............
}
-\__kernel_msg_new:nnnn { kernel } { input-streams-exhausted }
- { Input~streams~exhausted }
- {
- TeX~can~only~open~up~to~16~input~streams~at~one~time.\\
- All~16~are~currently~in~use,~and~something~wanted~to~open~
- another~one.
- }
-\__kernel_msg_new:nnnn { kernel } { output-streams-exhausted }
- { Output~streams~exhausted }
- {
- TeX~can~only~open~up~to~16~output~streams~at~one~time.\\
- All~16~are~currently~in~use,~and~something~wanted~to~open~
- another~one.
- }
\__kernel_msg_new:nnnn { kernel } { unbalanced-quote-in-filename }
{ Unbalanced~quotes~in~file~name~'#1'. }
{
@@ -12513,14 +12498,11 @@
\bool_new:N \l__keys_tmp_bool
\tl_new:N \l__keys_tmpa_tl
\tl_new:N \l__keys_tmpb_tl
+\scan_new:N \s__keys_nil
+\scan_new:N \s__keys_mark
\scan_new:N \s__keys_stop
-\quark_new:N \q__keys_nil
\quark_new:N \q__keys_no_value
-\__kernel_quark_new_conditional:Nn \__keys_quark_if_nil:n { TF }
\__kernel_quark_new_conditional:Nn \__keys_quark_if_no_value:N { TF }
-\quark_new:N \q__keys_recursion_tail
-\quark_new:N \q__keys_recursion_stop
-\__kernel_quark_new_test:N \__keys_if_recursion_tail_stop:n
\cs_new_protected:Npn \keys_define:nn
{ \__keys_define:onn \l__keys_module_str }
\cs_new_protected:Npn \__keys_define:nnn #1#2#3
@@ -12549,52 +12531,49 @@
\str_if_empty:NF \l__keys_property_str
{
\__kernel_msg_error:nnxx { kernel } { key-property-unknown }
- { \l__keys_property_str } { \l_keys_path_str }
+ \l__keys_property_str \l_keys_path_str
}
}
}
\cs_new_protected:Npn \__keys_property_find:n #1
{
- \str_set:Nx \l__keys_property_str { \__keys_trim_spaces:n {#1} }
- \exp_after:wN \__keys_property_find:w \l__keys_property_str . .
- \s__keys_stop {#1}
+ \cs_set_nopar:Npx \l__keys_property_str { \__keys_trim_spaces:n { #1 } }
+ \exp_after:wN \__keys_property_find_auxi:w \l__keys_property_str
+ \s__keys_nil \__keys_property_find_auxii:w
+ . \s__keys_nil \__keys_property_find_err:w
}
-\cs_new_protected:Npn \__keys_property_find:w #1 . #2 . #3 \s__keys_stop #4
+\cs_new_protected:Npn \__keys_property_find_auxi:w #1 . #2 \s__keys_nil #3
{
- \tl_if_blank:nTF {#3}
- {
- \str_clear:N \l__keys_property_str
- \__kernel_msg_error:nnn { kernel } { key-no-property } {#4}
- }
- {
- \str_if_eq:nnTF {#3} { . }
- {
- \str_set:Nx \l_keys_path_str
- {
- \str_if_empty:NF \l__keys_module_str
- { \l__keys_module_str / }
- \tl_trim_spaces:n {#1}
- }
- \str_set:Nn \l__keys_property_str { . #2 }
- }
- {
- \str_set:Nx \l_keys_path_str { \l__keys_module_str / #1 . #2 }
- \__keys_property_search:w #3 \s__keys_stop
- }
- \tl_set_eq:NN \l_keys_path_tl \l_keys_path_str
- }
+ #3 #1 \s__keys_mark #2 \s__keys_nil #3
}
-\cs_new_protected:Npn \__keys_property_search:w #1 . #2 \s__keys_stop
+\cs_new_protected:Npn \__keys_property_find_auxii:w
+ #1 \s__keys_mark #2 \s__keys_nil \__keys_property_find_auxii:w . \s__keys_nil
+ \__keys_property_find_err:w
{
- \str_if_eq:nnTF {#2} { . }
- {
- \str_set:Nx \l_keys_path_str { \l_keys_path_str }
- \str_set:Nn \l__keys_property_str { . #1 }
- }
- {
- \str_set:Nx \l_keys_path_str { \l_keys_path_str . #1 }
- \__keys_property_search:w #2 \s__keys_stop
- }
+ \cs_set_nopar:Npx \l_keys_path_str
+ { \str_if_empty:NF \l__keys_module_str { \l__keys_module_str / } #1 }
+ \__keys_property_find_auxi:w #2 \s__keys_nil \__keys_property_find_auxiii:w . \s__keys_nil
+ \__keys_property_find_auxiv:w
+ }
+\cs_new_protected:Npn \__keys_property_find_auxiii:w #1 \s__keys_mark
+ {
+ \cs_set_nopar:Npx \l_keys_path_str { \l_keys_path_str . #1 }
+ \__keys_property_find_auxi:w
+ }
+\cs_new_protected:Npn \__keys_property_find_auxiv:w
+ #1 \s__keys_nil \__keys_property_find_auxiii:w
+ \s__keys_mark \s__keys_nil \__keys_property_find_auxiv:w
+ {
+ \cs_set_nopar:Npx \l__keys_property_str { . #1 }
+ \cs_set_nopar:Npx \l_keys_path_str
+ { \exp_after:wN \__keys_trim_spaces:n \exp_after:wN { \l_keys_path_str } }
+ \tl_set_eq:NN \l_keys_path_tl \l_keys_path_str
+ }
+\cs_new_protected:Npn \__keys_property_find_err:w
+ #1 \s__keys_nil #2 \__keys_property_find_err:w
+ {
+ \str_clear:N \l__keys_property_str
+ \__kernel_msg_error:nnn { kernel } { key-no-property } {#1}
}
\cs_new_protected:Npn \__keys_define_code:n #1
{
@@ -12604,9 +12583,8 @@
\l__keys_property_str \s__keys_stop
{ \use:c { \c__keys_props_root_str \l__keys_property_str } }
{
- \__kernel_msg_error:nnxx { kernel }
- { key-property-requires-value } { \l__keys_property_str }
- { \l_keys_path_str }
+ \__kernel_msg_error:nnxx { kernel } { key-property-requires-value }
+ \l__keys_property_str \l_keys_path_str
}
}
{ \use:c { \c__keys_props_root_str \l__keys_property_str } {#1} }
@@ -12625,7 +12603,7 @@
\__keys_cmd_set:nn { \l_keys_path_str / unknown }
{
\__kernel_msg_error:nnx { kernel } { boolean-values-only }
- { \l_keys_key_str }
+ \l_keys_key_str
}
\__keys_default_set:n { true }
}
@@ -12641,7 +12619,7 @@
\__keys_cmd_set:nn { \l_keys_path_str / unknown }
{
\__kernel_msg_error:nnx { kernel } { boolean-values-only }
- { \l_keys_key_str }
+ \l_keys_key_str
}
\__keys_default_set:n { true }
}
@@ -12660,7 +12638,7 @@
{ choice }
{
\__kernel_msg_error:nnxx { kernel } { nested-choice-key }
- { \l_keys_path_tl } { \__keys_parent:o \l_keys_path_str }
+ \l_keys_path_tl { \__keys_parent:o \l_keys_path_str }
}
{ \__keys_choice_make_aux:N #1 }
}
@@ -12670,11 +12648,11 @@
{
\cs_set_nopar:cpn { \c__keys_type_root_str \l_keys_path_str }
{ choice }
- \__keys_cmd_set:nn { \l_keys_path_str } { #1 {##1} }
+ \__keys_cmd_set:nn \l_keys_path_str { #1 {##1} }
\__keys_cmd_set:nn { \l_keys_path_str / unknown }
{
\__kernel_msg_error:nnxx { kernel } { key-choice-unknown }
- { \l_keys_path_str } {##1}
+ \l_keys_path_str {##1}
}
}
\cs_new_protected:Npn \__keys_choices_make:nn
@@ -12748,15 +12726,15 @@
{ \__keys_execute_inherit: }
{
\str_clear:N \l__keys_inherit_str
- \cs_if_exist_use:cT { \c__keys_code_root_str \l_keys_path_str } { {#1} }
+ \cs_if_exist:cT { \c__keys_code_root_str \l_keys_path_str }
+ { \__keys_execute:nn \l_keys_path_str {#1} }
}
}
\cs_new_protected:Npn \__keys_meta_make:n #1
{
\__keys_cmd_set:Vo \l_keys_path_str
{
- \exp_after:wN \keys_set:nn
- \exp_after:wN { \l__keys_module_str } {#1}
+ \exp_after:wN \keys_set:nn \exp_after:wN { \l__keys_module_str } {#1}
}
}
\cs_new_protected:Npn \__keys_meta_make:nn #1#2
@@ -12764,11 +12742,9 @@
\cs_new_protected:Npn \__keys_prop_put:Nn #1#2
{
\prop_if_exist:NF #1 { \prop_new:N #1 }
- \exp_after:wN \__keys_find_key_module:NNw
- \exp_after:wN \l__keys_tmpa_tl
- \exp_after:wN \l__keys_tmpb_tl
- \l_keys_path_str / \s__keys_stop
- \__keys_cmd_set:nx { \l_keys_path_str }
+ \exp_after:wN \__keys_find_key_module:wNN \l_keys_path_str \s__keys_stop
+ \l__keys_tmpa_tl \l__keys_tmpb_tl
+ \__keys_cmd_set:nx \l_keys_path_str
{
\exp_not:c { prop_ #2 put:Nnn }
\exp_not:N #1
@@ -12820,8 +12796,8 @@
\bool_if:NF \l__keys_no_value_bool
{
\__kernel_msg_error:nnxx { kernel } { value-forbidden }
- { \l_keys_path_str } { \l_keys_value_tl }
- \__keys_validate_cleanup:w
+ \l_keys_path_str \l_keys_value_tl
+ \use_none:nnn
}
}
\cs_new_protected:Npn \__keys_validate_required:
@@ -12829,15 +12805,14 @@
\bool_if:NT \l__keys_no_value_bool
{
\__kernel_msg_error:nnx { kernel } { value-required }
- { \l_keys_path_str }
- \__keys_validate_cleanup:w
+ \l_keys_path_str
+ \use_none:nnn
}
}
-\cs_new_protected:Npn \__keys_validate_cleanup:w #1 \cs_end: #2#3 { }
\cs_new_protected:Npn \__keys_variable_set:NnnN #1#2#3#4
{
\use:c { #2_if_exist:NF } #1 { \use:c { #2 _new:N } #1 }
- \__keys_cmd_set:nx { \l_keys_path_str }
+ \__keys_cmd_set:nx \l_keys_path_str
{
\exp_not:c { #2 _ #3 set:N #4 }
\exp_not:N #1
@@ -12878,7 +12853,7 @@
\cs_new_protected:cpn { \c__keys_props_root_str .choices:xn } #1
{ \exp_args:Nx \__keys_choices_make:nn #1 }
\cs_new_protected:cpn { \c__keys_props_root_str .code:n } #1
- { \__keys_cmd_set:nn { \l_keys_path_str } {#1} }
+ { \__keys_cmd_set:nn \l_keys_path_str {#1} }
\cs_new_protected:cpn { \c__keys_props_root_str .clist_set:N } #1
{ \__keys_variable_set:NnnN #1 { clist } { } n }
\cs_new_protected:cpn { \c__keys_props_root_str .clist_set:c } #1
@@ -13039,7 +13014,7 @@
\cs_new_protected:Npn \keys_set_known:nnN #1#2#3
{
\exp_args:No \__keys_set_known:nnnnN
- \l__keys_unused_clist { \q__keys_no_value } {#1} {#2} #3
+ \l__keys_unused_clist \q__keys_no_value {#1} {#2} #3
}
\cs_generate_variant:Nn \keys_set_known:nnN { nV , nv , no }
\cs_new_protected:Npn \keys_set_known:nnnN #1#2#3#4
@@ -13052,11 +13027,11 @@
{
\clist_clear:N \l__keys_unused_clist
\__keys_set_known:nnn {#2} {#3} {#4}
- \tl_set:Nx #5 { \exp_not:o { \l__keys_unused_clist } }
+ \tl_set:Nx #5 { \exp_not:o \l__keys_unused_clist }
\tl_set:Nn \l__keys_unused_clist {#1}
}
\cs_new_protected:Npn \keys_set_known:nn #1#2
- { \__keys_set_known:nnn { \q__keys_no_value } {#1} {#2} }
+ { \__keys_set_known:nnn \q__keys_no_value {#1} {#2} }
\cs_generate_variant:Nn \keys_set_known:nn { nV , nv , no }
\cs_new_protected:Npn \__keys_set_known:nnn #1#2#3
{
@@ -13081,7 +13056,7 @@
{
\exp_args:No \__keys_set_filter:nnnnnN
\l__keys_unused_clist
- { \q__keys_no_value } {#1} {#2} {#3} #4
+ \q__keys_no_value {#1} {#2} {#3} #4
}
\cs_generate_variant:Nn \keys_set_filter:nnnN { nnV , nnv , nno }
\cs_new_protected:Npn \keys_set_filter:nnnnN #1#2#3#4#5
@@ -13094,11 +13069,11 @@
{
\clist_clear:N \l__keys_unused_clist
\__keys_set_filter:nnnn {#2} {#3} {#4} {#5}
- \tl_set:Nx #6 { \exp_not:o { \l__keys_unused_clist } }
+ \tl_set:Nx #6 { \exp_not:o \l__keys_unused_clist }
\tl_set:Nn \l__keys_unused_clist {#1}
}
\cs_new_protected:Npn \keys_set_filter:nnn #1#2#3
- {\__keys_set_filter:nnnn { \q__keys_no_value } {#1} {#2} {#3} }
+ {\__keys_set_filter:nnnn \q__keys_no_value {#1} {#2} {#3} }
\cs_generate_variant:Nn \keys_set_filter:nnn { nnV , nnv , nno }
\cs_new_protected:Npn \__keys_set_filter:nnnn #1#2#3#4
{
@@ -13168,30 +13143,41 @@
}
\str_clear:N \l__keys_module_str
\str_clear:N \l__keys_inherit_str
- \exp_after:wN \__keys_find_key_module:NNw
- \exp_after:wN \l__keys_module_str
- \exp_after:wN \l_keys_key_str
- \l_keys_path_str / \s__keys_stop
+ \exp_after:wN \__keys_find_key_module:wNN \l_keys_path_str \s__keys_stop
+ \l__keys_module_str \l_keys_key_str
\tl_set_eq:NN \l_keys_key_tl \l_keys_key_str
\__keys_value_or_default:n {#3}
\bool_if:NTF \l__keys_selective_bool
- { \__keys_set_selective: }
- { \__keys_execute: }
+ \__keys_set_selective:
+ \__keys_execute:
\str_set:Nn \l__keys_module_str {#1}
}
\cs_generate_variant:Nn \__keys_set_keyval:nnn { o }
-\cs_new_protected:Npn \__keys_find_key_module:NNw #1#2#3 / #4 \s__keys_stop
+\cs_new_protected:Npn \__keys_find_key_module:wNN #1 \s__keys_stop #2 #3
{
- \tl_if_blank:nTF {#4}
- { \str_set:Nn #2 {#3} }
- {
- \str_put_right:Nx #1
- {
- \str_if_empty:NF #1 { / }
- #3
- }
- \__keys_find_key_module:NNw #1#2 #4 \s__keys_stop
- }
+ \__keys_find_key_module_auxi:Nw #2 #1 \s__keys_nil \__keys_find_key_module_auxii:Nw
+ / \s__keys_nil \__keys_find_key_module_auxiv:Nw #3
+ }
+\cs_new_protected:Npn \__keys_find_key_module_auxi:Nw #1 #2 / #3 \s__keys_nil #4
+ {
+ #4 #1 #2 \s__keys_mark #3 \s__keys_nil #4
+ }
+\cs_new_protected:Npn \__keys_find_key_module_auxii:Nw
+ #1 #2 \s__keys_mark #3 \s__keys_nil \__keys_find_key_module_auxii:Nw
+ {
+ \cs_set_nopar:Npx #1 { \tl_if_empty:NF #1 { #1 / } #2 }
+ \__keys_find_key_module_auxi:Nw #1 #3 \s__keys_nil \__keys_find_key_module_auxiii:Nw
+ }
+\cs_new_protected:Npn \__keys_find_key_module_auxiii:Nw #1 #2 \s__keys_mark
+ {
+ \cs_set_nopar:Npx #1 { \tl_if_empty:NF #1 { #1 / } #2 }
+ \__keys_find_key_module_auxi:Nw #1
+ }
+\cs_new_protected:Npn \__keys_find_key_module_auxiv:Nw
+ #1 #2 \s__keys_nil #3 \s__keys_mark
+ \s__keys_nil \__keys_find_key_module_auxiv:Nw #4
+ {
+ \cs_set_nopar:Npn #4 { #2 }
}
\cs_new_protected:Npn \__keys_set_selective:
{
@@ -13203,8 +13189,8 @@
}
{
\bool_if:NTF \l__keys_filtered_bool
- { \__keys_execute: }
- { \__keys_store_unused: }
+ \__keys_execute:
+ \__keys_store_unused:
}
}
\cs_new_protected:Npn \__keys_check_groups:
@@ -13217,20 +13203,20 @@
\str_if_eq:nnT {##1} {####1}
{
\bool_set_true:N \l__keys_tmp_bool
- \clist_map_break:n { \seq_map_break: }
+ \clist_map_break:n \seq_map_break:
}
}
}
\bool_if:NTF \l__keys_tmp_bool
{
\bool_if:NTF \l__keys_filtered_bool
- { \__keys_store_unused: }
- { \__keys_execute: }
+ \__keys_store_unused:
+ \__keys_execute:
}
{
\bool_if:NTF \l__keys_filtered_bool
- { \__keys_execute: }
- { \__keys_store_unused: }
+ \__keys_execute:
+ \__keys_store_unused:
}
}
\cs_new_protected:Npn \__keys_value_or_default:n #1
@@ -13272,8 +13258,7 @@
\cs_if_exist:cTF { \c__keys_code_root_str \l_keys_path_str }
{
\cs_if_exist_use:c { \c__keys_validate_root_str \l_keys_path_str }
- \cs:w \c__keys_code_root_str \l_keys_path_str \exp_after:wN \cs_end:
- \exp_after:wN { \l_keys_value_tl }
+ \__keys_execute:no \l_keys_path_str \l_keys_value_tl
}
{
\cs_if_exist:cTF
@@ -13292,10 +13277,8 @@
{
\str_set:Nn \l__keys_inherit_str {##1}
\cs_if_exist_use:c { \c__keys_validate_root_str ##1 / \l_keys_key_str }
- \cs:w \c__keys_code_root_str ##1 / \l_keys_key_str
- \exp_after:wN \cs_end: \exp_after:wN
- { \l_keys_value_tl }
- \clist_map_break:n { \use_none:n }
+ \__keys_execute:no { ##1 / \l_keys_key_str } \l_keys_value_tl
+ \clist_map_break:n \use_none:n
}
}
\__keys_execute_unknown:
@@ -13307,24 +13290,22 @@
{
\cs_if_exist:cTF
{ \c__keys_code_root_str \l__keys_module_str / unknown }
- {
- \cs:w \c__keys_code_root_str \l__keys_module_str / unknown
- \exp_after:wN \cs_end: \exp_after:wN { \l_keys_value_tl }
- }
+ { \__keys_execute:no { \l__keys_module_str / unknown } \l_keys_value_tl }
{
\__kernel_msg_error:nnxx { kernel } { key-unknown }
- { \l_keys_path_str } { \l__keys_module_str }
+ \l_keys_path_str \l__keys_module_str
}
}
}
\cs_new:Npn \__keys_execute:nn #1#2
+ { \__keys_execute:no {#1} { \prg_do_nothing: #2 } }
+\cs_new:Npn \__keys_execute:no #1#2
{
- \cs_if_exist:cTF { \c__keys_code_root_str #1 }
+ \exp_args:NNo \exp_args:No \use:n
{
\cs:w \c__keys_code_root_str #1 \exp_after:wN \cs_end:
- \exp_after:wN { \l_keys_value_tl }
+ \exp_after:wN {#2}
}
- {#2}
}
\cs_new_protected:Npn \__keys_store_unused:
{
@@ -13332,7 +13313,7 @@
{
\clist_put_right:Nx \l__keys_unused_clist
{
- \exp_not:o \l_keys_key_str
+ \l_keys_key_str
\bool_if:NF \l__keys_no_value_bool
{ = { \exp_not:o \l_keys_value_tl } }
}
@@ -13342,7 +13323,7 @@
{
\clist_put_right:Nx \l__keys_unused_clist
{
- \exp_not:o \l_keys_path_str
+ \l_keys_path_str
\bool_if:NF \l__keys_no_value_bool
{ = { \exp_not:o \l_keys_value_tl } }
}
@@ -13386,7 +13367,7 @@
\cs_new:Npn \__keys_choice_find:n #1
{
\str_if_empty:NTF \l__keys_inherit_str
- { \__keys_choice_find:nn { \l_keys_path_str } {#1} }
+ { \__keys_choice_find:nn \l_keys_path_str {#1} }
{
\__keys_choice_find:nn
{ \l__keys_inherit_str / \l_keys_key_str } {#1}
@@ -13395,46 +13376,63 @@
\cs_new:Npn \__keys_choice_find:nn #1#2
{
\cs_if_exist:cTF { \c__keys_code_root_str #1 / \__keys_trim_spaces:n {#2} }
- { \use:c { \c__keys_code_root_str #1 / \__keys_trim_spaces:n {#2} } {#2} }
- { \use:c { \c__keys_code_root_str #1 / unknown } {#2} }
+ { \__keys_execute:nn { #1 / \__keys_trim_spaces:n {#2} } {#2} }
+ { \__keys_execute:nn { #1 / unknown } {#2} }
}
\cs_new:Npn \__keys_multichoice_find:n #1
{ \clist_map_function:nN {#1} \__keys_choice_find:n }
-\cs_new:Npn \__keys_parent:n #1
- { \__keys_parent:w #1 / / \s__keys_stop { } }
-\cs_generate_variant:Nn \__keys_parent:n { o }
-\cs_new:Npn \__keys_parent:w #1 / #2 / #3 \s__keys_stop #4
+\cs_new:Npn \__keys_parent:o #1
{
- \tl_if_blank:nTF {#2}
- {
- \tl_if_blank:nF {#4}
- { \use_none:n #4 }
- }
- {
- \__keys_parent:w #2 / #3 \s__keys_stop { #4 / #1 }
- }
+ \exp_after:wN \__keys_parent_auxi:w #1 \q_nil \__keys_parent_auxii:w
+ / \q_nil \__keys_parent_auxiv:w
}
-\cs_new:Npn \__keys_trim_spaces:n #1
+\cs_new:Npn \__keys_parent_auxi:w #1 / #2 \q_nil #3
{
- \exp_after:wN \__keys_trim_spaces_auxi:w \tl_to_str:n {#1}
- / \q__keys_nil \s__keys_stop
+ #3 { #1 } #2 \q_nil #3
}
-\cs_new:Npn \__keys_trim_spaces_auxi:w #1 / #2 \s__keys_stop
+\cs_new:Npn \__keys_parent_auxii:w #1 #2 \q_nil \__keys_parent_auxii:w
+ {
+ #1 \__keys_parent_auxi:w #2 \q_nil \__keys_parent_auxiii:n
+ }
+\cs_new:Npn \__keys_parent_auxiii:n #1
+ {
+ / #1 \__keys_parent_auxi:w
+ }
+\cs_new:Npn \__keys_parent_auxiv:w #1 \q_nil \__keys_parent_auxiv:w
{
- \__keys_quark_if_nil:nTF {#2}
- { \tl_trim_spaces:n {#1} }
- { \__keys_trim_spaces_auxii:w #1 / #2 }
}
-\cs_new:Npn \__keys_trim_spaces_auxii:w #1 / #2 / \q__keys_nil
+\group_begin:
+ \cs_set:Npn \__keys_tmp:n #1
+ {
+ \cs_new:Npn \__keys_trim_spaces:n ##1
+ {
+ \exp_after:wN \__keys_trim_spaces_auxi:w \tl_to_str:n { / ##1 } /
+ \s__keys_nil \__keys_trim_spaces_auxi:w
+ \s__keys_mark \__keys_trim_spaces_auxii:w
+ #1 / #1
+ \s__keys_nil \__keys_trim_spaces_auxii:w
+ \s__keys_mark \__keys_trim_spaces_auxiii:w
+ }
+ }
+ \__keys_tmp:n { ~ }
+\group_end:
+\cs_new:Npn \__keys_trim_spaces_auxi:w #1 ~ / #2 \s__keys_nil #3
{
- \tl_trim_spaces:n {#1}
- \__keys_trim_spaces_auxiii:w #2 / \q__keys_recursion_tail / \q__keys_recursion_stop
+ #3 #1 / #2 \s__keys_nil #3
}
-\cs_set:Npn \__keys_trim_spaces_auxiii:w #1 /
+\cs_new:Npn \__keys_trim_spaces_auxii:w #1 / ~ #2 \s__keys_mark #3
{
- \__keys_if_recursion_tail_stop:n {#1}
- / \tl_trim_spaces:n { #1 }
- \__keys_trim_spaces_auxiii:w
+ #3 #1 / #2 \s__keys_mark #3
+ }
+\cs_new:Npn \__keys_trim_spaces_auxiii:w
+ / #1 /
+ \s__keys_nil \__keys_trim_spaces_auxi:w
+ \s__keys_mark \__keys_trim_spaces_auxii:w
+ /
+ \s__keys_nil \__keys_trim_spaces_auxii:w
+ \s__keys_mark \__keys_trim_spaces_auxiii:w
+ {
+ #1
}
\prg_new_conditional:Npnn \keys_if_exist:nn #1#2 { p , T , F , TF }
{
@@ -20124,7 +20122,11 @@
\__kernel_chk_if_free_cs:N #1
\__cctab_new:N #1
}
- \cs_new_eq:NN \__cctab_new:N \newcatcodetable
+ \cs_new_protected:Npn \__cctab_new:N #1
+ {
+ \newcatcodetable #1
+ \tex_initcatcodetable:D #1
+ }
}
{
\cs_new_protected:Npn \__cctab_new:N #1
@@ -20348,6 +20350,13 @@
{
\int_compare:nNnTF {#1-1} < { \e@alloc@ccodetable@count }
}
+ \cs_if_exist:NT \c_syst_catcodes_n
+ {
+ \cs_gset_protected:Npn \__cctab_chk_if_valid_aux:NTF #1
+ {
+ \int_compare:nTF { #1 <= \c_syst_catcodes_n }
+ }
+ }
}
{
\cs_new_protected:Npn \__cctab_chk_if_valid_aux:NTF #1
@@ -26538,7 +26547,7 @@
\cs_new_protected:Npn \__color_select:N #1
{ \exp_after:wN \__color_select:nn #1 }
\cs_new_protected:Npn \__color_select:nn #1#2
- { \use:c { __color_backend_ #1 :n } {#2} }
+ { \use:c { __color_backend_select_ #1 :n } {#2} }
\tl_new:N \l__color_current_tl
\tl_set:Nn \l__color_current_tl { { gray } { 0 } }
%% File: l3coffins.dtx
@@ -26673,8 +26682,7 @@
#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
+ \__coffin_set_vertical_aux:
#3
}
#5 #1
@@ -26692,6 +26700,13 @@
\box_clear:N \l__coffin_internal_box
}
}
+\cs_new_protected:Npx \__coffin_set_vertical_aux:
+ {
+ \cs_if_exist:NT \linewidth
+ { \dim_set_eq:NN \linewidth \tex_hsize:D }
+ \cs_if_exist:NT \columnwidth
+ { \dim_set_eq:NN \columnwidth \tex_hsize:D }
+ }
\cs_new_protected:Npn \hcoffin_set:Nw #1
{
\__coffin_if_exist:NT #1
@@ -26740,8 +26755,7 @@
{
#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
+ \__coffin_set_vertical_aux:
\cs_set_protected:Npn #4
{
#5
@@ -27571,15 +27585,42 @@
\dim_new:N \l__coffin_display_y_dim
\prop_new:N \l__coffin_display_poles_prop
\tl_new:N \l__coffin_display_font_tl
-\tl_set:Nn \l__coffin_display_font_tl { \sffamily \tiny }
-\cs_new_protected:Npn \__coffin_color:n #1
- { \cs_if_exist:NT \color { \color {#1} } }
+\cs_if_exist:NTF \AtBeginDocument
+ { \AtBeginDocument }
+ { \use:n }
+ {
+ \tl_set:Nx \l__coffin_display_font_tl
+ {
+ \cs_if_exist:NT \sffamily { \exp_not:N \sffamily }
+ \cs_if_exist:NT \tiny { \exp_not:N \tiny }
+ }
+ }
+\cs_if_exist:NTF \AtBeginDocument
+ { \AtBeginDocument }
+ { \use:n }
+ {
+ \cs_new_protected:Npx \__coffin_color:n #1
+ {
+ \cs_if_exist:NTF \color_select:n
+ { \color_select:n {#1} }
+ {
+ \cs_if_exist:NT \color
+ { \exp_not:N \color {#1} }
+ }
+ }
+ }
+\cs_new_protected:Npx \__coffin_rule:nn #1#2
+ {
+ \cs_if_exist:NTF \rule
+ { \exp_not:N \rule {#1} {#2} }
+ { \hbox:n { \tex_vrule:D width #1 height #2 \scan_stop: } }
+ }
\cs_new_protected:Npn \coffin_mark_handle:Nnnn #1#2#3#4
{
\hcoffin_set:Nn \l__coffin_display_pole_coffin
{
\__coffin_color:n {#4}
- \rule { 1pt } { 1pt }
+ \__coffin_rule:nn { 1pt } { 1pt }
}
\__coffin_attach_mark:NnnNnnnn #1 {#2} {#3}
\l__coffin_display_pole_coffin { hc } { vc } { 0pt } { 0pt }
@@ -27624,7 +27665,7 @@
\hcoffin_set:Nn \l__coffin_display_pole_coffin
{
\__coffin_color:n {#2}
- \rule { 1pt } { 1pt }
+ \__coffin_rule:nn { 1pt } { 1pt }
}
\prop_set_eq:Nc \l__coffin_display_poles_prop
{ coffin ~ \__coffin_to_value:N #1 ~ poles }
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
index fd282142ce5..45e33b3c026 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2020-07-17}%
+\def\ExplFileDate{2020-08-07}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\def\tempa{LaTeX2e}%
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx b/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
index e9c2f3e0dd2..a17e63e2bfe 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
@@ -19,8 +19,10 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2020-07-17}%
+\def\ExplFileDate{2020-08-07}%
\let\ExplLoaderFileDate\ExplFileDate
+\global\expandafter\let\csname\detokenize
+ {c__kernel_expl_date_tl}\endcsname\ExplFileDate
\everyjob\expandafter{\the\everyjob
\message{L3 programming layer <\ExplFileDate>}%
}
@@ -58,6 +60,36 @@
\expandafter\ifx\csname tex\string _let:D\endcsname\relax
\expandafter\endinput
\fi
+\ifcsname\detokenize{c__kernel_expl_date_tl}\endcsname
+ \expandafter\ifx\csname\detokenize
+ {c__kernel_expl_date_tl}\endcsname\ExplLoaderFileDate
+ \else
+ \ExplSyntaxOn
+ \__kernel_msg_set:nnn { kernel } { mismatched-expl3 }
+ {
+ Mismatched~expl3~detected!~Loading~expl3~will~abort.
+ \\ \\
+ The~version~of~expl3~preloaded~in~LaTeX~is~
+ \c__kernel_expl_date_tl,~but~the~version~of~expl3~you~are~
+ trying~to~load~is~dated~\ExplLoaderFileDate.~This~is~most~
+ likely~due~to~a~stray~format~file~in~the~user~tree.~Please~
+ make~sure~that~your~LaTeX~format~is~updated.
+ }
+ \exp_after:wN \ExplSyntaxOff \use:n
+ {
+ \__kernel_msg_critical:nn { kernel } { mismatched-expl3 }
+ \use:c { fi: } \use:c { fi: }
+ }
+ \fi
+\else
+ \ifodd\csname\detokenize{l__kernel_expl_bool}\endcsname
+ \else
+ \ExplSyntaxOn
+ \bool_if_exist:NF \g__expl_reload_bool
+ { \bool_new:N \g__expl_reload_bool }
+ \ExplSyntaxOff
+ \fi
+\fi
\ifcsname\detokenize{g__expl_reload_bool}\endcsname
\ExplSyntaxOn
\bool_gset_true:N \g__expl_reload_bool
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
index d42516b6d24..25ce52d3916 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2020-07-17}%
+\def\ExplFileDate{2020-08-07}%
\let\ExplLoaderFileDate\ExplFileDate
\ProvidesPackage{expl3}
[%
@@ -60,6 +60,36 @@
\expandafter\ifx\csname tex\string _let:D\endcsname\relax
\expandafter\endinput
\fi
+\ifcsname\detokenize{c__kernel_expl_date_tl}\endcsname
+ \expandafter\ifx\csname\detokenize
+ {c__kernel_expl_date_tl}\endcsname\ExplLoaderFileDate
+ \else
+ \ExplSyntaxOn
+ \__kernel_msg_set:nnn { kernel } { mismatched-expl3 }
+ {
+ Mismatched~expl3~detected!~Loading~expl3~will~abort.
+ \\ \\
+ The~version~of~expl3~preloaded~in~LaTeX~is~
+ \c__kernel_expl_date_tl,~but~the~version~of~expl3~you~are~
+ trying~to~load~is~dated~\ExplLoaderFileDate.~This~is~most~
+ likely~due~to~a~stray~format~file~in~the~user~tree.~Please~
+ make~sure~that~your~LaTeX~format~is~updated.
+ }
+ \exp_after:wN \ExplSyntaxOff \use:n
+ {
+ \__kernel_msg_critical:nn { kernel } { mismatched-expl3 }
+ \use:c { fi: } \use:c { fi: }
+ }
+ \fi
+\else
+ \ifodd\csname\detokenize{l__kernel_expl_bool}\endcsname
+ \else
+ \ExplSyntaxOn
+ \bool_if_exist:NF \g__expl_reload_bool
+ { \bool_new:N \g__expl_reload_bool }
+ \ExplSyntaxOff
+ \fi
+\fi
\ifcsname\detokenize{g__expl_reload_bool}\endcsname
\ExplSyntaxOn
\bool_gset_true:N \g__expl_reload_bool