From d6a7e0e5536b4924edec286797ed38021b94509d Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 7 Aug 2020 21:37:39 +0000 Subject: l3 (7aug20) git-svn-id: svn://tug.org/texlive/trunk@56067 c570f23f-e606-0410-a88d-b1316a301751 --- .../tex/latex/l3backend/l3backend-dvipdfmx.def | 89 +++-- .../tex/latex/l3backend/l3backend-dvips.def | 92 +++-- .../tex/latex/l3backend/l3backend-dvisvgm.def | 249 ++++++------- .../tex/latex/l3backend/l3backend-pdfmode.def | 103 +++--- .../tex/latex/l3backend/l3backend-xdvipdfmx.def | 89 +++-- .../l3experimental/l3benchmark/l3benchmark.sty | 2 +- .../tex/latex/l3experimental/l3color/l3color.sty | 343 +++++++++++++++++- .../tex/latex/l3experimental/l3draw/l3draw.sty | 17 +- .../latex/l3experimental/l3graphics/l3graphics.sty | 2 +- .../tex/latex/l3experimental/l3pdf/l3pdf.sty | 2 +- .../latex/l3experimental/l3str/l3str-format.sty | 2 +- .../l3experimental/l3sys-shell/l3sys-shell.sty | 2 +- .../tex/latex/l3experimental/xcoffins/xcoffins.sty | 2 +- .../tex/latex/l3experimental/xgalley/l3galley.sty | 6 +- .../tex/latex/l3experimental/xgalley/xgalley.sty | 2 +- .../texmf-dist/tex/latex/l3kernel/expl3-code.tex | 391 ++++++++++++--------- .../tex/latex/l3kernel/expl3-generic.tex | 2 +- Master/texmf-dist/tex/latex/l3kernel/expl3.ltx | 34 +- Master/texmf-dist/tex/latex/l3kernel/expl3.sty | 32 +- 19 files changed, 928 insertions(+), 533 deletions(-) (limited to 'Master/texmf-dist/tex') 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 { } } + { + \__kernel_backend_literal_svg:n { } + \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 { } } + { + \prg_replicate:nn + { \g__kernel_backend_scope_int } + { \__kernel_backend_literal_svg:n { } } + \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 { } } + { + \__kernel_backend_literal_svg:n { } + \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 { } + \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 { } } - \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 { } - \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 = } + \\ \\ + 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 = } + \\ \\ + 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 = } + \\ \\ + 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 = } + \\ \\ + 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 = } + \\ \\ + 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 -- cgit v1.2.3