From 88b40fe28cf8ad53d15f707a0e4a3f99c953bb4b Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 29 Jan 2021 22:37:37 +0000 Subject: l3 (29jan21) git-svn-id: svn://tug.org/texlive/trunk@57554 c570f23f-e606-0410-a88d-b1316a301751 --- .../tex/latex/l3backend/l3backend-dvipdfmx.def | 284 ++++++++++++++++----- .../tex/latex/l3backend/l3backend-dvips.def | 110 +++++--- .../tex/latex/l3backend/l3backend-dvisvgm.def | 74 +++--- .../tex/latex/l3backend/l3backend-luatex.def | 145 ++++++++--- .../tex/latex/l3backend/l3backend-pdftex.def | 145 ++++++++--- .../tex/latex/l3backend/l3backend-xetex.def | 255 +++++++++++++----- .../l3experimental/l3benchmark/l3benchmark.sty | 4 +- .../tex/latex/l3experimental/l3bitset/l3bitset.sty | 234 +++++++++++++++++ .../tex/latex/l3experimental/l3color/l3color.sty | 4 +- .../tex/latex/l3experimental/l3draw/l3draw.sty | 4 +- .../latex/l3experimental/l3graphics/l3graphics.sty | 4 +- .../tex/latex/l3experimental/l3pdf/l3pdf.sty | 11 +- .../latex/l3experimental/l3str/l3str-format.sty | 4 +- .../l3experimental/l3sys-shell/l3sys-shell.sty | 4 +- .../tex/latex/l3experimental/xcoffins/xcoffins.sty | 4 +- .../tex/latex/l3experimental/xgalley/l3galley.sty | 4 +- .../tex/latex/l3experimental/xgalley/xgalley.sty | 4 +- 17 files changed, 1016 insertions(+), 278 deletions(-) create mode 100644 Master/texmf-dist/tex/latex/l3experimental/l3bitset/l3bitset.sty (limited to 'Master/texmf-dist/tex/latex') diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def index b64b2f1b028..9947b2830aa 100644 --- a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def +++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def @@ -10,8 +10,9 @@ %% l3backend-draw.dtx (with options: `package,dvipdfmx') %% l3backend-graphics.dtx (with options: `package,dvipdfmx') %% l3backend-pdf.dtx (with options: `package,dvipdfmx') +%% l3backend-opacity.dtx (with options: `package,dvipdfmx') %% -%% Copyright (C) 1990-2021 The LaTeX3 Project +%% Copyright (C) 1990-2021 The LaTeX Project %% %% It may be distributed and/or modified under the conditions of %% the LaTeX Project Public License (LPPL), either version 1.3c of @@ -25,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-dvipdfmx.def}{2021-01-09}{} + {l3backend-dvipdfmx.def}{2020-01-29}{} {L3 backend support: dvipdfmx} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -90,25 +91,44 @@ \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3 { \tl_set:Nn #3 { {#1} {#2} } } } -\int_compare:nNnF \c__kernel_sys_dvipdfmx_version_int < { 20201111 } +\int_new:N \l__color_backend_stack_int +\int_compare:nNnTF \c__kernel_sys_dvipdfmx_version_int < { 20201111 } + { \cs_new_protected:Npn \__kernel_color_backend_stack_init:Nnn #1#2#3 { } } { - \int_new:N \g__color_stack_int - \cs_new_protected:Npn \__kernel_color_stack_init:Nnn #1#2#3 + \int_new:N \g__color_backend_stack_int + \cs_new_protected:Npx \__kernel_color_backend_stack_init:Nnn #1#2#3 { - \int_gincr:N \g__color_stack_int - \int_const:Nn #1 { \g__color_stack_int } - \__kernel_backend_literal:x + \int_gincr:N \exp_not:N \g__color_backend_stack_int + \int_const:Nn #1 { \exp_not:N \g__color_backend_stack_int } + \cs_if_exist:NTF \AtBeginDvi + { \exp_not:N \AtBeginDvi } + { \exp_not:N \use:n } { - pdfcolorstackinit ~ - \int_use:N \g__color_stack_int \c_space_tl - \tl_if_blank:nF {#2} { #2 ~ } - (#3) + \__kernel_backend_literal:x + { + pdfcolorstackinit ~ + \exp_not:N \int_use:N \exp_not:N \g__color_backend_stack_int + \c_space_tl + \exp_not:N \tl_if_blank:nF {#2} { #2 ~ } + (#3) + } } } + \cs_if_exist:cTF { main@pdfcolorstack } + { + \int_set:Nn \l__color_backend_stack_int + { \int_use:c { main@pdfcolorstack } } + } + { + \__kernel_color_backend_stack_init:Nnn \c__color_backend_main_stack_int + { page ~ direct } { 0 ~ g ~ 0 ~ G } + \int_set_eq:NN \l__color_backend_stack_int + \c__color_backend_main_stack_int + } } \int_compare:nNnF \c__kernel_sys_dvipdfmx_version_int < { 20201111 } { - \cs_new_protected:Npn \__kernel_color_stack_push:nn #1#2 + \cs_new_protected:Npn \__color_backend_stack_push:nn #1#2 { \__kernel_backend_literal:x { @@ -117,7 +137,8 @@ push ~ (#2) } } - \cs_new_protected:Npn \__kernel_color_stack_pop:n #1 + \cs_generate_variant:Nn \__color_backend_stack_push:nn { nx } + \cs_new_protected:Npn \__color_backend_stack_pop:n #1 { \__kernel_backend_literal:x { @@ -127,20 +148,23 @@ } } } -\int_new:N \l__kernel_color_stack_int +\tl_new:N \l__color_backend_fill_tl +\tl_new:N \l__color_backend_stroke_tl \cs_new_protected:Npn \__color_backend_select_cmyk:n #1 - { \__color_backend_select:n { #1 ~ k ~ #1 ~ K } } + { \__color_backend_select:nn { #1 ~ k } { #1 ~ K } } \cs_new_protected:Npn \__color_backend_select_gray:n #1 - { \__color_backend_select:n { #1 ~ g ~ #1 ~ G } } + { \__color_backend_select:nn { #1 ~ g } { #1 ~ G } } \cs_new_protected:Npn \__color_backend_select_rgb:n #1 - { \__color_backend_select:n { #1 ~ rg ~ #1 ~ RG } } -\cs_new_protected:Npn \__color_backend_select:n #1 + { \__color_backend_select:nn { #1 ~ rg } { #1 ~ RG } } +\cs_new_protected:Npn \__color_backend_select:nn #1#2 { - \__kernel_color_stack_push:nn \l__kernel_color_stack_int {#1} + \tl_set:Nn \l__color_backend_fill_tl {#1} + \tl_set:Nn \l__color_backend_stroke_tl {#2} + \__color_backend_stack_push:nn \l__color_backend_stack_int { #1 ~ #2 } \group_insert_after:N \__color_backend_reset: } \cs_new_protected:Npn \__color_backend_reset: - { \__kernel_color_stack_pop:n \l__kernel_color_stack_int } + { \__color_backend_stack_pop:n \l__color_backend_stack_int } \int_compare:nNnT \c__kernel_sys_dvipdfmx_version_int < { 20201111 } { \cs_gset_protected:Npn \__color_backend_select_cmyk:n #1 @@ -154,7 +178,7 @@ { \__kernel_backend_literal:n { pdf: ec } } } \cs_new_protected:Npn \__color_backend_select_separation:nn #1#2 - { \__color_backend_select:n { /#1 ~ cs ~ /#1 ~ CS ~ #2 ~ scn ~ #2 ~ SCN } } + { \__color_backend_select:nn { /#1 ~ cs ~ #2 ~ scn } { /#1 ~ CS ~ #2 ~ SCN } } \cs_new_eq:NN \__color_backend_select_devicen:nn \__color_backend_select_separation:nn \cs_new_protected:Npn \__color_backend_separation_init:nnnnn #1#2#3#4#5 { @@ -261,24 +285,65 @@ { \__color_backend_devicen_init:w #2 \s__color_stop } } \cs_new_eq:NN \__color_backend_devicen_init:n \__color_backend_separation_init:n +\int_compare:nNnT \c__kernel_sys_dvipdfmx_version_int < { 20201111 } + { + \cs_gset_protected:Npn \__color_backend_select_separation:nn #1#2 { } + \cs_gset_eq:NN \__color_backend_select_devicen:nn + \__color_backend_select_separation:nn + } \cs_new_protected:Npn \__color_backend_fill_cmyk:n #1 - { \__kernel_backend_literal_pdf:n { #1 ~ k } } + { \__color_backend_fill:n { #1 ~ k } } \cs_new_protected:Npn \__color_backend_fill_gray:n #1 - { \__kernel_backend_literal_pdf:n { #1 ~ g } } + { \__color_backend_fill: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 } } + { \__color_backend_fill:n { #1 ~ rg } } +\cs_new_protected:Npn \__color_backend_fill:n #1 + { + \tl_set:Nn \l__color_backend_fill_tl {#1} + \__color_backend_stack_push:nn \l__color_backend_stack_int + { #1 ~ \l__color_backend_stroke_tl } + \group_insert_after:N \__color_backend_reset: + } +\cs_new_protected:Npn \__color_backend_stroke_cmyk:n #1 + { \__color_backend_stroke:n { #1 ~ K } } \cs_new_protected:Npn \__color_backend_stroke_gray:n #1 - { \__kernel_backend_literal_pdf:n { #1 ~ G } } + { \__color_backend_stroke:n { #1 ~ G } } \cs_new_protected:Npn \__color_backend_stroke_rgb:n #1 - { \__kernel_backend_literal_pdf:n { #1 ~ RG } } + { \__color_backend_stroke:n { #1 ~ RG } } +\cs_new_protected:Npn \__color_backend_stroke:n #1 + { + \tl_set:Nn \l__color_backend_stroke_tl {#1} + \__color_backend_stack_push:nn \l__color_backend_stack_int + { \l__color_backend_fill_tl \c_space_tl #1 } + \group_insert_after:N \__color_backend_reset: + } \cs_new_protected:Npn \__color_backend_fill_separation:nn #1#2 - { \__kernel_backend_literal_pdf:n { /#1 ~ cs ~ #2 ~ scn } } + { \__color_backend_fill: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 } } + { \__color_backend_stroke:n { /#1 ~ CS ~ #2 ~ SCN } } \cs_new_eq:NN \__color_backend_fill_devicen:nn \__color_backend_fill_separation:nn \cs_new_eq:NN \__color_backend_stroke_devicen:nn \__color_backend_stroke_separation:nn +\int_compare:nNnT \c__kernel_sys_dvipdfmx_version_int < { 20201111 } + { + \cs_gset_protected:Npn \__color_backend_fill_cmyk:n #1 + { + \__kernel_backend_literal:n { pdf: bc ~ [#1] } + \group_insert_after:N \__color_backend_reset: + } + \cs_gset_eq:NN \__color_backend_fill_gray:n \__color_backend_fill_cmyk:n + \cs_gset_eq:NN \__color_backend_fill_rgb:n \__color_backend_fill_cmyk:n + \cs_gset_protected:Npn \__color_backend_reset: + { \__kernel_backend_literal:n { pdf: ec } } + \cs_gset_protected:Npn \__color_backend_stroke:n #1 + { \__kernel_backend_literal:n {#1} } + \cs_gset_protected:Npn \__color_backend_fill_separation:nn #1#2 { } + \cs_gset_eq:NN \__color_backend_fill_devicen:nn + \__color_backend_fill_separation:nn + \cs_gset_eq:NN \__color_backend_stroke_separation:nn + \__color_backend_fill_separation:nn + \cs_gset_eq:NN \__color_backend_stroke_devicen:nn + \__color_backend_stroke_separation:nn + } %% File: l3backend-box.dtx \cs_new_protected:Npn \__box_backend_clip:N #1 { @@ -754,36 +819,43 @@ ] } } -\cs_new_protected:Npn \__pdf_backend_destination_box:nn #1#2 +\cs_new_protected:Npn \__pdf_backend_destination:nnnn #1#2#3#4 { - \group_begin: - \hbox_set:Nn \l__pdf_internal_box {#2} - \box_move_down:nn { \box_dp:N \l__pdf_internal_box } - { - \hbox:n - { - \__pdf_backend:n { obj ~ @pdf_ #1 _llx ~ @xpos } - \__pdf_backend:n { obj ~ @pdf_ #1 _lly ~ @ypos } - } - } - \box_use:N \l__pdf_internal_box - \box_move_up:nn { \box_ht:N \l__pdf_internal_box } - { - \hbox:n - { - \__pdf_backend:n - { - dest ~ (#1) - [ - @thispage - /FitR ~ - @pdf_ #1 _llx ~ @pdf_ #1 _lly ~ - @xpos ~ @ypos - ] - } - } - } - \group_end: + \exp_args:Ne \__pdf_backend_destination_aux:nnnn + { \dim_eval:n {#2} } {#1} {#3} {#4} + } +\cs_new_protected:Npn \__pdf_backend_destination_aux:nnnn #1#2#3#4 + { + \vbox_to_zero:n + { + \tex_kern:D \dim_eval:n {#4} \scan_stop: + \hbox:n + { + \__pdf_backend:n { obj ~ @pdf_ #2 _llx ~ @xpos } + \__pdf_backend:n { obj ~ @pdf_ #2 _lly ~ @ypos } + } + \tex_vss:D + } + \tex_kern:D #1 \scan_stop: + \vbox_to_zero:n + { + \tex_kern:D \dim_eval:n { -#3 } \scan_stop: + \hbox:n + { + \__pdf_backend:n + { + dest ~ (#2) + [ + @thispage + /FitR ~ + @pdf_ #2 _llx ~ @pdf_ #2 _lly ~ + @xpos ~ @ypos + ] + } + } + \tex_vss:D + } + \tex_kern:D -#1 \scan_stop: } \cs_new_protected:Npn \__pdf_backend_compresslevel:n #1 { \__kernel_backend_literal:x { dvipdfmx:config~z~ \int_eval:n {#1} } } @@ -808,6 +880,98 @@ { \__kernel_backend_literal_page:n { /#1 ~ #2 ~ BDC } } \cs_new_protected:Npn \__pdf_backend_emc: { \__kernel_backend_literal_page:n { EMC } } +%% File: l3backend-opacity.dtx +\cs_if_exist:NT \pdfmanagement_add:nnn + { + \__kernel_color_backend_stack_init:Nnn \c__opacity_backend_stack_int + { page ~ direct } { /opacity 1 ~ gs } + \pdfmanagement_add:nnn { Page / Resources / ExtGState } + { opacity 1 } { << /ca ~ 1 /CA ~ 1 >> } + } +\tl_new:N \l__opacity_backend_fill_tl +\tl_new:N \l__opacity_backend_stroke_tl +\cs_new_protected:Npn \__opacity_backend_select:n #1 + { + \exp_args:Nx \__opacity_backend_select_aux:n + { \fp_eval:n { min(max(0,#1),1) } } + } +\cs_new_protected:Npn \__opacity_backend_select_aux:n #1 + { + \tl_set:Nn \l__opacity_backend_fill_tl {#1} + \tl_set:Nn \l__opacity_backend_stroke_tl {#1} + \pdfmanagement_add:nnn { Page / Resources / ExtGState } + { opacity #1 } + { << /ca ~ #1 /CA ~ #1 >> } + \__opacity_backend_stack_push:nn \c__opacity_backend_stack_int + { /opacity #1 ~ gs } + \group_insert_after:N \__opacity_backend_reset: + } +\cs_if_exist:NF \pdfmanagement_add:nnn + { + \cs_gset_protected:Npn \__opacity_backend_select_aux:n #1 { } + } +\cs_new_protected:Npn \__opacity_backend_reset: + { \__opacity_backend_stack_pop:n \c__opacity_backend_stack_int } +\cs_new_protected:Npn \__opacity_backend_fill:n #1 + { + \__opacity_backend_fill_stroke:xx + { \fp_eval:n { min(max(0,#1),1) } } + \l__opacity_backend_stroke_tl + } +\cs_new_protected:Npn \__opacity_backend_stroke:n #1 + { + \__opacity_backend_fill_stroke:xx + \l__opacity_backend_fill_tl + { \fp_eval:n { min(max(0,#1),1) } } + } +\cs_new_protected:Npn \__opacity_backend_fill_stroke:nn #1#2 + { + \str_if_eq:nnTF {#1} {#2} + { \__opacity_backend_select_aux:n {#1} } + { + \tl_set:Nn \l__opacity_backend_fill_tl {#1} + \tl_set:Nn \l__opacity_backend_stroke_tl {#2} + \pdfmanagement_add:nnn { Page / Resources / ExtGState } + { opacity.fill #1 } + { << /ca ~ #1 >> } + \pdfmanagement_add:nnn { Page / Resources / ExtGState } + { opacity.stroke #1 } + { << /CA ~ #2 >> } + \__opacity_backend_stack_push:nn \c__opacity_backend_stack_int + { /opacity.fill #1 ~ gs /opacity.stroke #2 ~ gs } + \group_insert_after:N \__opacity_backend_reset: + } + } +\cs_generate_variant:Nn \__opacity_backend_fill_stroke:nn { xx } +\int_compare:nNnT \c__kernel_sys_dvipdfmx_version_int < { 20201111 } + { + \cs_gset_protected:Npn \__opacity_backend_select_aux:n #1 + { + \tl_set:Nn \l__opacity_backend_fill_tl {#1} + \tl_set:Nn \l__opacity_backend_stroke_tl {#1} + \pdfmanagement_add:nnn { Page / Resources / ExtGState } + { opacity #1 } + { << /ca ~ #1 /CA ~ #1 >> } + \__kernel_backend_literal_pdf:n { /opacity #1 ~ gs } + } + \cs_gset_protected:Npn \__opacity_backend_fill_stroke:nn #1#2 + { + \str_if_eq:nnTF {#1} {#2} + { \__opacity_backend_select_aux:n {#1} } + { + \tl_set:Nn \l__opacity_backend_fill_tl {#1} + \tl_set:Nn \l__opacity_backend_stroke_tl {#2} + \pdfmanagement_add:nnn { Page / Resources / ExtGState } + { opacity.fill #1 } + { << /ca ~ #1 >> } + \pdfmanagement_add:nnn { Page / Resources / ExtGState } + { opacity.stroke #1 } + { << /CA ~ #2 >> } + \__kernel_backend_literal_pdf:n + { /opacity.fill #1 ~ gs /opacity.stroke #2 ~ gs } + } + } + } %% %% %% End of file `l3backend-dvipdfmx.def'. diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def index 61f8f584ea8..ff4307c4acf 100644 --- a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def +++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def @@ -10,8 +10,9 @@ %% l3backend-draw.dtx (with options: `package,dvips') %% l3backend-graphics.dtx (with options: `package,dvips') %% l3backend-pdf.dtx (with options: `package,dvips') +%% l3backend-opacity.dtx (with options: `package,dvips') %% -%% Copyright (C) 1990-2021 The LaTeX3 Project +%% Copyright (C) 1990-2021 The LaTeX Project %% %% It may be distributed and/or modified under the conditions of %% the LaTeX Project Public License (LPPL), either version 1.3c of @@ -25,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-dvips.def}{2021-01-09}{} + {l3backend-dvips.def}{2020-01-29}{} {L3 backend support: dvips} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -104,8 +105,7 @@ \cs_new_protected:Npn \__color_backend_select:n #1 { \__kernel_backend_literal:n { color~push~ #1 } - \__kernel_backend_postscript:n { /color.sc~ { ~ } ~def } - \__kernel_backend_postscript:n { /color.fc~ { ~ } ~def } + \__kernel_backend_postscript:n { /color.sc ~ { } ~ def } \group_insert_after:N \__color_backend_reset: } \cs_new_protected:Npn \__color_backend_reset: @@ -282,21 +282,26 @@ } } \cs_new_protected:Npn \__color_backend_fill_cmyk:n #1 - { \__kernel_backend_postscript:n { /color.fc { #1 ~ setcmykcolor } def } } + { \__color_backend_fill:n { cmyk ~ #1 } } \cs_new_protected:Npn \__color_backend_fill_gray:n #1 - { \__kernel_backend_postscript:n { /color.fc { #1 ~ setgray } def } } + { \__color_backend_fill:n { gray ~ #1 } } \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 + { \__color_backend_fill:n { rgb ~ #1 } } +\cs_new_protected:Npn \__color_backend_fill:n #1 + { + \__kernel_backend_literal:n { color~push~ #1 } + \group_insert_after:N \__color_backend_reset: + } +\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 } } + { \__color_backend_fill:n { separation ~ #1 ~ #2 } } \cs_new_protected:Npn \__color_backend_stroke_separation:nn #1#2 - { \__kernel_backend_postscript:n { /color.sc { #1 } def } } + { \__kernel_backend_postscript:n { /color.sc { separation ~ #1 ~ #2 } def } } \cs_new_eq:NN \__color_backend_fill_devicen:nn \__color_backend_fill_separation:nn \cs_new_eq:NN \__color_backend_stroke_devicen:nn \__color_backend_stroke_separation:nn %% File: l3backend-box.dtx @@ -436,14 +441,11 @@ } \cs_new_protected:Npn \__draw_backend_fill: { - \__draw_backend_literal:n { gsave } - \__draw_backend_literal:n { color.fc } \__draw_backend_literal:x { \bool_if:NT \g__draw_draw_eor_bool { eo } fill } - \__draw_backend_literal:n { grestore } \bool_if:NT \g__draw_draw_clip_bool { \__draw_backend_literal:x @@ -457,16 +459,15 @@ } \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 { \bool_if:NT \g__draw_draw_eor_bool { eo } fill } - \__draw_backend_literal:n { grestore } + \__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 @@ -904,29 +905,38 @@ /DEST } } -\cs_new_protected:Npn \__pdf_backend_destination_box:nn #1#2 - { - \group_begin: - \hbox_set:Nn \l__pdf_internal_box {#2} - \box_move_down:nn - { \box_dp:N \l__pdf_internal_box } - { \hbox:n { \__kernel_backend_postscript:n { pdf.save.ll } } } - \box_use:N \l__pdf_internal_box - \box_move_up:nn - { \box_ht:N \l__pdf_internal_box } - { \hbox:n { \__kernel_backend_postscript:n { pdf.save.ur } } } - \__pdf_backend_pdfmark:n - { - /View - [ - /FitR ~ - pdf.llx ~ pdf.lly ~ pdf.dest2device ~ - pdf.urx ~ pdf.ury ~ pdf.dest2device - ] - /Dest ( #1 ) cvn - /DEST - } - \group_end: +\cs_new_protected:Npn \__pdf_backend_destination:nnnn #1#2#3#4 + { + \exp_args:Ne \__pdf_backend_destination_aux:nnnn + { \dim_eval:n {#2} } {#1} {#3} {#4} + } +\cs_new_protected:Npn \__pdf_backend_destination_aux:nnnn #1#2#3#4 + { + \vbox_to_zero:n + { + \tex_kern:D \dim_eval:n {#4} \scan_stop: + \hbox:n { \__kernel_backend_postscript:n { pdf.save.ll } } + \tex_vss:D + } + \tex_kern:D #1 \scan_stop: + \vbox_to_zero:n + { + \tex_kern:D \dim_eval:n { -#3 } \scan_stop: + \hbox:n { \__kernel_backend_postscript:n { pdf.save.ur } } + \tex_vss:D + } + \tex_kern:D -#1 \scan_stop: + \__pdf_backend_pdfmark:n + { + /View + [ + /FitR ~ + pdf.llx ~ pdf.lly ~ pdf.dest2device ~ + pdf.urx ~ pdf.ury ~ pdf.dest2device + ] + /Dest ( #2 ) cvn + /DEST + } } \cs_new_protected:Npn \__pdf_backend_compresslevel:n #1 { @@ -960,6 +970,26 @@ { \__pdf_backend_pdfmark:n { /#1 ~ #2 /BDC } } \cs_new_protected:Npn \__pdf_backend_emc: { \__pdf_backend_pdfmark:n { /EMC } } +%% File: l3backend-opacity.dtx +\cs_new_protected:Npn \__opacity_backend_select:n #1 + { + \exp_args:Nx \__opacity_backend_select_aux:n + { \fp_eval:n { min(max(0,#1),1) } } + } +\cs_new_protected:Npn \__opacity_backend_select_aux:n #1 + { + \__kernel_backend_postscript:n + { #1 ~ .setfillconstantalpha ~ #1 ~ .setstrokeconstantalpha } + } +\cs_new_protected:Npn \__opacity_backend_fill:n #1 + { \__opacity_backend:xn { \fp_eval:n { min(max(0,#1),1) } } { fill } } +\cs_new_protected:Npn \__opacity_backend_stroke:n #1 + { \__opacity_backend:xn { \fp_eval:n { min(max(0,#1),1) } } { stroke } } +\cs_new_protected:Npn \__opacity_backend:nn #1#2 + { + \__kernel_backend_postscript:n { #1 ~ .set #2 constantalpha } + } +\cs_generate_variant:Nn \__opacity_backend:nn { x } %% %% %% End of file `l3backend-dvips.def'. diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def index 28a6be023e0..1f8ebeb0408 100644 --- a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def +++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def @@ -10,8 +10,9 @@ %% l3backend-draw.dtx (with options: `package,dvisvgm') %% l3backend-graphics.dtx (with options: `package,dvisvgm') %% l3backend-pdf.dtx (with options: `package,dvisvgm') +%% l3backend-opacity.dtx (with options: `package,dvisvgm') %% -%% Copyright (C) 1990-2021 The LaTeX3 Project +%% Copyright (C) 1990-2021 The LaTeX Project %% %% It may be distributed and/or modified under the conditions of %% the LaTeX Project Public License (LPPL), either version 1.3c of @@ -25,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-dvisvgm.def}{2021-01-09}{} + {l3backend-dvisvgm.def}{2020-01-29}{} {L3 backend support: dvisvgm} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -125,63 +126,63 @@ \cs_new_protected:Npn \__color_backend_separation_init:nnnnn #1#2#3#4#5 { } \cs_new_protected:Npn \__color_backend_separation_init_CIELAB:nnnnnn #1#2#3 { } \cs_new_protected:Npn \__color_backend_fill_cmyk:n #1 - { \__color_backend_cmyk:nw { fill } #1 \s__color_stop } + { \__color_backend_fill:n { cmyk ~ #1 } } +\cs_new_protected:Npn \__color_backend_fill_gray:n #1 + { \__color_backend_fill:n { gray ~ #1 } } +\cs_new_protected:Npn \__color_backend_fill_rgb:n #1 + { \__color_backend_fill:n { rgb ~ #1 } } +\cs_new_protected:Npn \__color_backend_fill:n #1 + { + \__kernel_backend_literal:n { color~push~ #1 } + \group_insert_after:N \__color_backend_reset: + } \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 + { \__color_backend_cmyk:w #1 \s__color_stop } +\cs_new_protected:Npn \__color_backend_stroke_cmyk:w + #1 ~ #2 ~ #3 ~ #4 \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 ) ) } } + \__color_backend:nnn + { \fp_eval:n { -100 * ( 1 - min ( 1 , #1 + #4 ) ) } } + { \fp_eval:n { -100 * ( 1 - min ( 1 , #2 + #4 ) ) } } + { \fp_eval:n { -100 * ( 1 - min ( 1 , #3 + #4 ) ) } } } } -\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) } } + \__color_backend_stroke_gray_aux:n + { \fp_eval:n { 100 * (#1) } } } } -\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_gray_aux:n #1 + { \__color_backend:nnn {#1} {#1} {#1} } \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 + { \__color_backend_rgb:w #1 \s__color_stop } +\cs_new_protected:Npn \__color_backend_stroke_rgb:w + #1 ~ #2 ~ #3 \s__color_stop { \use:x { - \__color_backend:nnnn - { fill } + \__color_backend:nnn + { \fp_eval:n { 100 * (#1) } } { \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 +\cs_new_protected:Npx \__color_backend:nnn #1#2#3 { \__kernel_backend_scope:n { - #1 = + stroke = " rgb ( + #1 \c_percent_str , #2 \c_percent_str , - #3 \c_percent_str , - #4 \c_percent_str + #3 \c_percent_str ) " } @@ -524,6 +525,15 @@ \cs_new:Npn \__pdf_backend_version_minor: { -1 } \cs_new_protected:Npn \__pdf_backend_bdc:nn #1#2 { } \cs_new_protected:Npn \__pdf_backend_emc: { } +%% File: l3backend-opacity.dtx +\cs_new_protected:Npn \__opacity_backend_select:n #1 + { \__opacity_backend:nn {#1} { } } +\cs_new_protected:Npn \__opacity_backend_fill:n #1 + { \__opacity_backend:nn {#1} { fill- } } +\cs_new_protected:Npn \__opacity_backend_stroke:n #1 + { \__opacity_backend:nn { {#1} } { stroke- } } +\cs_new_protected:Npn \__opacity_backend:nn #1#2 + { \__kernel_backend_scope:x { #2 opacity = " \fp_eval:n { min(max(0,#1),1) } " } } %% %% %% End of file `l3backend-dvisvgm.def'. diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def index 69caa65acef..1a5b246fa6b 100644 --- a/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def +++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def @@ -10,8 +10,9 @@ %% l3backend-draw.dtx (with options: `package,luatex') %% l3backend-graphics.dtx (with options: `package,luatex') %% l3backend-pdf.dtx (with options: `package,luatex') +%% l3backend-opacity.dtx (with options: `package,luatex') %% -%% Copyright (C) 1990-2021 The LaTeX3 Project +%% Copyright (C) 1990-2021 The LaTeX Project %% %% It may be distributed and/or modified under the conditions of %% the LaTeX Project Public License (LPPL), either version 1.3c of @@ -25,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-luatex.def}{2021-01-09}{} + {l3backend-luatex.def}{2020-01-29}{} {L3 backend support: PDF output (LuaTeX)} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -103,7 +104,8 @@ } } } -\cs_new_protected:Npn \__kernel_color_stack_init:Nnn #1#2#3 +\int_new:N \l__color_backend_stack_int +\cs_new_protected:Npn \__kernel_color_backend_stack_init:Nnn #1#2#3 { \int_const:Nn #1 { @@ -112,32 +114,36 @@ {#3} } } -\cs_new_protected:Npn \__kernel_color_stack_push:nn #1#2 +\cs_new_protected:Npn \__color_backend_stack_push:nn #1#2 { \tex_pdfextension:D colorstack ~ \int_eval:n {#1} ~ push ~ {#2} } -\cs_new_protected:Npn \__kernel_color_stack_pop:n #1 +\cs_generate_variant:Nn \__color_backend_stack_push:nn { nx } +\cs_new_protected:Npn \__color_backend_stack_pop:n #1 { \tex_pdfextension:D colorstack ~ \int_eval:n {#1} ~ pop \scan_stop: } -\int_new:N \l__kernel_color_stack_int +\tl_new:N \l__color_backend_fill_tl +\tl_new:N \l__color_backend_stroke_tl \cs_new_protected:Npn \__color_backend_select_cmyk:n #1 - { \__color_backend_select:n { #1 ~ k ~ #1 ~ K } } + { \__color_backend_select:nn { #1 ~ k } { #1 ~ K } } \cs_new_protected:Npn \__color_backend_select_gray:n #1 - { \__color_backend_select:n { #1 ~ g ~ #1 ~ G } } + { \__color_backend_select:nn { #1 ~ g } { #1 ~ G } } \cs_new_protected:Npn \__color_backend_select_rgb:n #1 - { \__color_backend_select:n { #1 ~ rg ~ #1 ~ RG } } -\cs_new_protected:Npn \__color_backend_select:n #1 + { \__color_backend_select:nn { #1 ~ rg } { #1 ~ RG } } +\cs_new_protected:Npn \__color_backend_select:nn #1#2 { - \__kernel_color_stack_push:nn \l__kernel_color_stack_int {#1} + \tl_set:Nn \l__color_backend_fill_tl {#1} + \tl_set:Nn \l__color_backend_stroke_tl {#2} + \__color_backend_stack_push:nn \l__color_backend_stack_int { #1 ~ #2 } \group_insert_after:N \__color_backend_reset: } \cs_new_protected:Npn \__color_backend_reset: - { \__kernel_color_stack_pop:n \l__kernel_color_stack_int } + { \__color_backend_stack_pop:n \l__color_backend_stack_int } \cs_new_protected:Npn \__color_backend_select_separation:nn #1#2 - { \__color_backend_select:n { /#1 ~ cs ~ /#1 ~ CS ~ #2 ~ scn ~ #2 ~ SCN } } + { \__color_backend_select:nn { /#1 ~ cs ~ #2 ~ scn } { /#1 ~ CS ~ #2 ~ SCN } } \cs_new_eq:NN \__color_backend_select_devicen:nn \__color_backend_select_separation:nn \cs_new_protected:Npn \__color_backend_separation_init:nnnnn #1#2#3#4#5 { @@ -245,21 +251,35 @@ } \cs_new_eq:NN \__color_backend_devicen_init:n \__color_backend_separation_init:n \cs_new_protected:Npn \__color_backend_fill_cmyk:n #1 - { \__kernel_backend_literal_pdf:n { #1 ~ k } } + { \__color_backend_fill:n { #1 ~ k } } \cs_new_protected:Npn \__color_backend_fill_gray:n #1 - { \__kernel_backend_literal_pdf:n { #1 ~ g } } + { \__color_backend_fill: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 } } + { \__color_backend_fill:n { #1 ~ rg } } +\cs_new_protected:Npn \__color_backend_fill:n #1 + { + \tl_set:Nn \l__color_backend_fill_tl {#1} + \__color_backend_stack_push:nn \l__color_backend_stack_int + { #1 ~ \l__color_backend_stroke_tl } + \group_insert_after:N \__color_backend_reset: + } +\cs_new_protected:Npn \__color_backend_stroke_cmyk:n #1 + { \__color_backend_stroke:n { #1 ~ K } } \cs_new_protected:Npn \__color_backend_stroke_gray:n #1 - { \__kernel_backend_literal_pdf:n { #1 ~ G } } + { \__color_backend_stroke:n { #1 ~ G } } \cs_new_protected:Npn \__color_backend_stroke_rgb:n #1 - { \__kernel_backend_literal_pdf:n { #1 ~ RG } } + { \__color_backend_stroke:n { #1 ~ RG } } +\cs_new_protected:Npn \__color_backend_stroke:n #1 + { + \tl_set:Nn \l__color_backend_stroke_tl {#1} + \__color_backend_stack_push:nn \l__color_backend_stack_int + { \l__color_backend_fill_tl \c_space_tl #1 } + \group_insert_after:N \__color_backend_reset: + } \cs_new_protected:Npn \__color_backend_fill_separation:nn #1#2 - { \__kernel_backend_literal_pdf:n { /#1 ~ cs ~ #2 ~ scn } } + { \__color_backend_fill: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 } } + { \__color_backend_stroke:n { /#1 ~ CS ~ #2 ~ SCN } } \cs_new_eq:NN \__color_backend_fill_devicen:nn \__color_backend_fill_separation:nn \cs_new_eq:NN \__color_backend_stroke_devicen:nn \__color_backend_stroke_separation:nn %% File: l3backend-box.dtx @@ -594,18 +614,14 @@ { xyz ~ zoom \fp_eval:n { #2 * 10 } } \scan_stop: } -\cs_new_protected:Npn \__pdf_backend_destination_box:nn #1#2 +\cs_new_protected:Npn \__pdf_backend_destination:nnnn #1#2#3#4 { - \group_begin: - \hbox_set:Nn \l__pdf_internal_box {#2} - \tex_pdfextension:D dest ~ - name {#1} - fitr ~ - width \box_wd:N \l__pdf_internal_box - height \box_ht:N \l__pdf_internal_box - depth \box_dp:N \l__pdf_internal_box - \box_use:N \l__pdf_internal_box - \group_end: + \tex_pdfextension:D dest ~ + name {#1} + fitr ~ + width \dim_eval:n {#2} ~ + height \dim_eval:n {#3} ~ + depth \dim_eval:n {#4} \scan_stop: } \cs_new_protected:Npn \__pdf_backend_catalog_gput:nn #1#2 { @@ -735,6 +751,69 @@ { \__kernel_backend_literal_page:n { /#1 ~ #2 ~ BDC } } \cs_new_protected:Npn \__pdf_backend_emc: { \__kernel_backend_literal_page:n { EMC } } +%% File: l3backend-opacity.dtx +\cs_if_exist:NT \pdfmanagement_add:nnn + { + \__kernel_color_backend_stack_init:Nnn \c__opacity_backend_stack_int + { page ~ direct } { /opacity 1 ~ gs } + \pdfmanagement_add:nnn { Page / Resources / ExtGState } + { opacity 1 } { << /ca ~ 1 /CA ~ 1 >> } + } +\tl_new:N \l__opacity_backend_fill_tl +\tl_new:N \l__opacity_backend_stroke_tl +\cs_new_protected:Npn \__opacity_backend_select:n #1 + { + \exp_args:Nx \__opacity_backend_select_aux:n + { \fp_eval:n { min(max(0,#1),1) } } + } +\cs_new_protected:Npn \__opacity_backend_select_aux:n #1 + { + \tl_set:Nn \l__opacity_backend_fill_tl {#1} + \tl_set:Nn \l__opacity_backend_stroke_tl {#1} + \pdfmanagement_add:nnn { Page / Resources / ExtGState } + { opacity #1 } + { << /ca ~ #1 /CA ~ #1 >> } + \__opacity_backend_stack_push:nn \c__opacity_backend_stack_int + { /opacity #1 ~ gs } + \group_insert_after:N \__opacity_backend_reset: + } +\cs_if_exist:NF \pdfmanagement_add:nnn + { + \cs_gset_protected:Npn \__opacity_backend_select_aux:n #1 { } + } +\cs_new_protected:Npn \__opacity_backend_reset: + { \__opacity_backend_stack_pop:n \c__opacity_backend_stack_int } +\cs_new_protected:Npn \__opacity_backend_fill:n #1 + { + \__opacity_backend_fill_stroke:xx + { \fp_eval:n { min(max(0,#1),1) } } + \l__opacity_backend_stroke_tl + } +\cs_new_protected:Npn \__opacity_backend_stroke:n #1 + { + \__opacity_backend_fill_stroke:xx + \l__opacity_backend_fill_tl + { \fp_eval:n { min(max(0,#1),1) } } + } +\cs_new_protected:Npn \__opacity_backend_fill_stroke:nn #1#2 + { + \str_if_eq:nnTF {#1} {#2} + { \__opacity_backend_select_aux:n {#1} } + { + \tl_set:Nn \l__opacity_backend_fill_tl {#1} + \tl_set:Nn \l__opacity_backend_stroke_tl {#2} + \pdfmanagement_add:nnn { Page / Resources / ExtGState } + { opacity.fill #1 } + { << /ca ~ #1 >> } + \pdfmanagement_add:nnn { Page / Resources / ExtGState } + { opacity.stroke #1 } + { << /CA ~ #2 >> } + \__opacity_backend_stack_push:nn \c__opacity_backend_stack_int + { /opacity.fill #1 ~ gs /opacity.stroke #2 ~ gs } + \group_insert_after:N \__opacity_backend_reset: + } + } +\cs_generate_variant:Nn \__opacity_backend_fill_stroke:nn { xx } %% %% %% End of file `l3backend-luatex.def'. diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def index ec7b463b0a5..1c1e221a1f0 100644 --- a/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def @@ -10,8 +10,9 @@ %% l3backend-draw.dtx (with options: `package,pdftex') %% l3backend-graphics.dtx (with options: `package,pdftex') %% l3backend-pdf.dtx (with options: `package,pdftex') +%% l3backend-opacity.dtx (with options: `package,pdftex') %% -%% Copyright (C) 1990-2021 The LaTeX3 Project +%% Copyright (C) 1990-2021 The LaTeX Project %% %% It may be distributed and/or modified under the conditions of %% the LaTeX Project Public License (LPPL), either version 1.3c of @@ -25,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-pdftex.def}{2021-01-09}{} + {l3backend-pdftex.def}{2020-01-29}{} {L3 backend support: PDF output (pdfTeX)} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -103,7 +104,8 @@ } } } -\cs_new_protected:Npn \__kernel_color_stack_init:Nnn #1#2#3 +\int_new:N \l__color_backend_stack_int +\cs_new_protected:Npn \__kernel_color_backend_stack_init:Nnn #1#2#3 { \int_const:Nn #1 { @@ -112,32 +114,36 @@ {#3} } } -\cs_new_protected:Npn \__kernel_color_stack_push:nn #1#2 +\cs_new_protected:Npn \__color_backend_stack_push:nn #1#2 { \tex_pdfcolorstack:D \int_eval:n {#1} ~ push ~ {#2} } -\cs_new_protected:Npn \__kernel_color_stack_pop:n #1 +\cs_generate_variant:Nn \__color_backend_stack_push:nn { nx } +\cs_new_protected:Npn \__color_backend_stack_pop:n #1 { \tex_pdfcolorstack:D \int_eval:n {#1} ~ pop \scan_stop: } -\int_new:N \l__kernel_color_stack_int +\tl_new:N \l__color_backend_fill_tl +\tl_new:N \l__color_backend_stroke_tl \cs_new_protected:Npn \__color_backend_select_cmyk:n #1 - { \__color_backend_select:n { #1 ~ k ~ #1 ~ K } } + { \__color_backend_select:nn { #1 ~ k } { #1 ~ K } } \cs_new_protected:Npn \__color_backend_select_gray:n #1 - { \__color_backend_select:n { #1 ~ g ~ #1 ~ G } } + { \__color_backend_select:nn { #1 ~ g } { #1 ~ G } } \cs_new_protected:Npn \__color_backend_select_rgb:n #1 - { \__color_backend_select:n { #1 ~ rg ~ #1 ~ RG } } -\cs_new_protected:Npn \__color_backend_select:n #1 + { \__color_backend_select:nn { #1 ~ rg } { #1 ~ RG } } +\cs_new_protected:Npn \__color_backend_select:nn #1#2 { - \__kernel_color_stack_push:nn \l__kernel_color_stack_int {#1} + \tl_set:Nn \l__color_backend_fill_tl {#1} + \tl_set:Nn \l__color_backend_stroke_tl {#2} + \__color_backend_stack_push:nn \l__color_backend_stack_int { #1 ~ #2 } \group_insert_after:N \__color_backend_reset: } \cs_new_protected:Npn \__color_backend_reset: - { \__kernel_color_stack_pop:n \l__kernel_color_stack_int } + { \__color_backend_stack_pop:n \l__color_backend_stack_int } \cs_new_protected:Npn \__color_backend_select_separation:nn #1#2 - { \__color_backend_select:n { /#1 ~ cs ~ /#1 ~ CS ~ #2 ~ scn ~ #2 ~ SCN } } + { \__color_backend_select:nn { /#1 ~ cs ~ #2 ~ scn } { /#1 ~ CS ~ #2 ~ SCN } } \cs_new_eq:NN \__color_backend_select_devicen:nn \__color_backend_select_separation:nn \cs_new_protected:Npn \__color_backend_separation_init:nnnnn #1#2#3#4#5 { @@ -245,21 +251,35 @@ } \cs_new_eq:NN \__color_backend_devicen_init:n \__color_backend_separation_init:n \cs_new_protected:Npn \__color_backend_fill_cmyk:n #1 - { \__kernel_backend_literal_pdf:n { #1 ~ k } } + { \__color_backend_fill:n { #1 ~ k } } \cs_new_protected:Npn \__color_backend_fill_gray:n #1 - { \__kernel_backend_literal_pdf:n { #1 ~ g } } + { \__color_backend_fill: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 } } + { \__color_backend_fill:n { #1 ~ rg } } +\cs_new_protected:Npn \__color_backend_fill:n #1 + { + \tl_set:Nn \l__color_backend_fill_tl {#1} + \__color_backend_stack_push:nn \l__color_backend_stack_int + { #1 ~ \l__color_backend_stroke_tl } + \group_insert_after:N \__color_backend_reset: + } +\cs_new_protected:Npn \__color_backend_stroke_cmyk:n #1 + { \__color_backend_stroke:n { #1 ~ K } } \cs_new_protected:Npn \__color_backend_stroke_gray:n #1 - { \__kernel_backend_literal_pdf:n { #1 ~ G } } + { \__color_backend_stroke:n { #1 ~ G } } \cs_new_protected:Npn \__color_backend_stroke_rgb:n #1 - { \__kernel_backend_literal_pdf:n { #1 ~ RG } } + { \__color_backend_stroke:n { #1 ~ RG } } +\cs_new_protected:Npn \__color_backend_stroke:n #1 + { + \tl_set:Nn \l__color_backend_stroke_tl {#1} + \__color_backend_stack_push:nn \l__color_backend_stack_int + { \l__color_backend_fill_tl \c_space_tl #1 } + \group_insert_after:N \__color_backend_reset: + } \cs_new_protected:Npn \__color_backend_fill_separation:nn #1#2 - { \__kernel_backend_literal_pdf:n { /#1 ~ cs ~ #2 ~ scn } } + { \__color_backend_fill: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 } } + { \__color_backend_stroke:n { /#1 ~ CS ~ #2 ~ SCN } } \cs_new_eq:NN \__color_backend_fill_devicen:nn \__color_backend_fill_separation:nn \cs_new_eq:NN \__color_backend_stroke_devicen:nn \__color_backend_stroke_separation:nn %% File: l3backend-box.dtx @@ -594,18 +614,14 @@ { xyz ~ zoom \fp_eval:n { #2 * 10 } } \scan_stop: } -\cs_new_protected:Npn \__pdf_backend_destination_box:nn #1#2 +\cs_new_protected:Npn \__pdf_backend_destination:nnnn #1#2#3#4 { - \group_begin: - \hbox_set:Nn \l__pdf_internal_box {#2} - \tex_pdfdest:D - name {#1} - fitr ~ - width \box_wd:N \l__pdf_internal_box - height \box_ht:N \l__pdf_internal_box - depth \box_dp:N \l__pdf_internal_box - \box_use:N \l__pdf_internal_box - \group_end: + \tex_pdfdest:D + name {#1} + fitr ~ + width \dim_eval:n {#2} ~ + height \dim_eval:n {#3} ~ + depth \dim_eval:n {#4} \scan_stop: } \cs_new_protected:Npn \__pdf_backend_catalog_gput:nn #1#2 { @@ -735,6 +751,69 @@ { \__kernel_backend_literal_page:n { /#1 ~ #2 ~ BDC } } \cs_new_protected:Npn \__pdf_backend_emc: { \__kernel_backend_literal_page:n { EMC } } +%% File: l3backend-opacity.dtx +\cs_if_exist:NT \pdfmanagement_add:nnn + { + \__kernel_color_backend_stack_init:Nnn \c__opacity_backend_stack_int + { page ~ direct } { /opacity 1 ~ gs } + \pdfmanagement_add:nnn { Page / Resources / ExtGState } + { opacity 1 } { << /ca ~ 1 /CA ~ 1 >> } + } +\tl_new:N \l__opacity_backend_fill_tl +\tl_new:N \l__opacity_backend_stroke_tl +\cs_new_protected:Npn \__opacity_backend_select:n #1 + { + \exp_args:Nx \__opacity_backend_select_aux:n + { \fp_eval:n { min(max(0,#1),1) } } + } +\cs_new_protected:Npn \__opacity_backend_select_aux:n #1 + { + \tl_set:Nn \l__opacity_backend_fill_tl {#1} + \tl_set:Nn \l__opacity_backend_stroke_tl {#1} + \pdfmanagement_add:nnn { Page / Resources / ExtGState } + { opacity #1 } + { << /ca ~ #1 /CA ~ #1 >> } + \__opacity_backend_stack_push:nn \c__opacity_backend_stack_int + { /opacity #1 ~ gs } + \group_insert_after:N \__opacity_backend_reset: + } +\cs_if_exist:NF \pdfmanagement_add:nnn + { + \cs_gset_protected:Npn \__opacity_backend_select_aux:n #1 { } + } +\cs_new_protected:Npn \__opacity_backend_reset: + { \__opacity_backend_stack_pop:n \c__opacity_backend_stack_int } +\cs_new_protected:Npn \__opacity_backend_fill:n #1 + { + \__opacity_backend_fill_stroke:xx + { \fp_eval:n { min(max(0,#1),1) } } + \l__opacity_backend_stroke_tl + } +\cs_new_protected:Npn \__opacity_backend_stroke:n #1 + { + \__opacity_backend_fill_stroke:xx + \l__opacity_backend_fill_tl + { \fp_eval:n { min(max(0,#1),1) } } + } +\cs_new_protected:Npn \__opacity_backend_fill_stroke:nn #1#2 + { + \str_if_eq:nnTF {#1} {#2} + { \__opacity_backend_select_aux:n {#1} } + { + \tl_set:Nn \l__opacity_backend_fill_tl {#1} + \tl_set:Nn \l__opacity_backend_stroke_tl {#2} + \pdfmanagement_add:nnn { Page / Resources / ExtGState } + { opacity.fill #1 } + { << /ca ~ #1 >> } + \pdfmanagement_add:nnn { Page / Resources / ExtGState } + { opacity.stroke #1 } + { << /CA ~ #2 >> } + \__opacity_backend_stack_push:nn \c__opacity_backend_stack_int + { /opacity.fill #1 ~ gs /opacity.stroke #2 ~ gs } + \group_insert_after:N \__opacity_backend_reset: + } + } +\cs_generate_variant:Nn \__opacity_backend_fill_stroke:nn { xx } %% %% %% End of file `l3backend-pdftex.def'. diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def index 9c90ca0c6fc..d9bf8704302 100644 --- a/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def +++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def @@ -10,8 +10,9 @@ %% l3backend-draw.dtx (with options: `package,xetex') %% l3backend-graphics.dtx (with options: `package,xetex') %% l3backend-pdf.dtx (with options: `package,xetex') +%% l3backend-opacity.dtx (with options: `package,xetex') %% -%% Copyright (C) 1990-2021 The LaTeX3 Project +%% Copyright (C) 1990-2021 The LaTeX Project %% %% It may be distributed and/or modified under the conditions of %% the LaTeX Project Public License (LPPL), either version 1.3c of @@ -25,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-xetex.def}{2021-01-09}{} + {l3backend-xetex.def}{2020-01-29}{} {L3 backend support: XeTeX} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -90,25 +91,44 @@ \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3 { \tl_set:Nn #3 { {#1} {#2} } } } -\int_compare:nNnF \c__kernel_sys_dvipdfmx_version_int < { 20201111 } +\int_new:N \l__color_backend_stack_int +\int_compare:nNnTF \c__kernel_sys_dvipdfmx_version_int < { 20201111 } + { \cs_new_protected:Npn \__kernel_color_backend_stack_init:Nnn #1#2#3 { } } { - \int_new:N \g__color_stack_int - \cs_new_protected:Npn \__kernel_color_stack_init:Nnn #1#2#3 + \int_new:N \g__color_backend_stack_int + \cs_new_protected:Npx \__kernel_color_backend_stack_init:Nnn #1#2#3 { - \int_gincr:N \g__color_stack_int - \int_const:Nn #1 { \g__color_stack_int } - \__kernel_backend_literal:x + \int_gincr:N \exp_not:N \g__color_backend_stack_int + \int_const:Nn #1 { \exp_not:N \g__color_backend_stack_int } + \cs_if_exist:NTF \AtBeginDvi + { \exp_not:N \AtBeginDvi } + { \exp_not:N \use:n } { - pdfcolorstackinit ~ - \int_use:N \g__color_stack_int \c_space_tl - \tl_if_blank:nF {#2} { #2 ~ } - (#3) + \__kernel_backend_literal:x + { + pdfcolorstackinit ~ + \exp_not:N \int_use:N \exp_not:N \g__color_backend_stack_int + \c_space_tl + \exp_not:N \tl_if_blank:nF {#2} { #2 ~ } + (#3) + } } } + \cs_if_exist:cTF { main@pdfcolorstack } + { + \int_set:Nn \l__color_backend_stack_int + { \int_use:c { main@pdfcolorstack } } + } + { + \__kernel_color_backend_stack_init:Nnn \c__color_backend_main_stack_int + { page ~ direct } { 0 ~ g ~ 0 ~ G } + \int_set_eq:NN \l__color_backend_stack_int + \c__color_backend_main_stack_int + } } \int_compare:nNnF \c__kernel_sys_dvipdfmx_version_int < { 20201111 } { - \cs_new_protected:Npn \__kernel_color_stack_push:nn #1#2 + \cs_new_protected:Npn \__color_backend_stack_push:nn #1#2 { \__kernel_backend_literal:x { @@ -117,7 +137,8 @@ push ~ (#2) } } - \cs_new_protected:Npn \__kernel_color_stack_pop:n #1 + \cs_generate_variant:Nn \__color_backend_stack_push:nn { nx } + \cs_new_protected:Npn \__color_backend_stack_pop:n #1 { \__kernel_backend_literal:x { @@ -127,20 +148,23 @@ } } } -\int_new:N \l__kernel_color_stack_int +\tl_new:N \l__color_backend_fill_tl +\tl_new:N \l__color_backend_stroke_tl \cs_new_protected:Npn \__color_backend_select_cmyk:n #1 - { \__color_backend_select:n { #1 ~ k ~ #1 ~ K } } + { \__color_backend_select:nn { #1 ~ k } { #1 ~ K } } \cs_new_protected:Npn \__color_backend_select_gray:n #1 - { \__color_backend_select:n { #1 ~ g ~ #1 ~ G } } + { \__color_backend_select:nn { #1 ~ g } { #1 ~ G } } \cs_new_protected:Npn \__color_backend_select_rgb:n #1 - { \__color_backend_select:n { #1 ~ rg ~ #1 ~ RG } } -\cs_new_protected:Npn \__color_backend_select:n #1 + { \__color_backend_select:nn { #1 ~ rg } { #1 ~ RG } } +\cs_new_protected:Npn \__color_backend_select:nn #1#2 { - \__kernel_color_stack_push:nn \l__kernel_color_stack_int {#1} + \tl_set:Nn \l__color_backend_fill_tl {#1} + \tl_set:Nn \l__color_backend_stroke_tl {#2} + \__color_backend_stack_push:nn \l__color_backend_stack_int { #1 ~ #2 } \group_insert_after:N \__color_backend_reset: } \cs_new_protected:Npn \__color_backend_reset: - { \__kernel_color_stack_pop:n \l__kernel_color_stack_int } + { \__color_backend_stack_pop:n \l__color_backend_stack_int } \int_compare:nNnT \c__kernel_sys_dvipdfmx_version_int < { 20201111 } { \cs_gset_protected:Npn \__color_backend_select_cmyk:n #1 @@ -154,7 +178,7 @@ { \__kernel_backend_literal:n { pdf: ec } } } \cs_new_protected:Npn \__color_backend_select_separation:nn #1#2 - { \__color_backend_select:n { /#1 ~ cs ~ /#1 ~ CS ~ #2 ~ scn ~ #2 ~ SCN } } + { \__color_backend_select:nn { /#1 ~ cs ~ #2 ~ scn } { /#1 ~ CS ~ #2 ~ SCN } } \cs_new_eq:NN \__color_backend_select_devicen:nn \__color_backend_select_separation:nn \cs_new_protected:Npn \__color_backend_separation_init:nnnnn #1#2#3#4#5 { @@ -261,24 +285,65 @@ { \__color_backend_devicen_init:w #2 \s__color_stop } } \cs_new_eq:NN \__color_backend_devicen_init:n \__color_backend_separation_init:n +\int_compare:nNnT \c__kernel_sys_dvipdfmx_version_int < { 20201111 } + { + \cs_gset_protected:Npn \__color_backend_select_separation:nn #1#2 { } + \cs_gset_eq:NN \__color_backend_select_devicen:nn + \__color_backend_select_separation:nn + } \cs_new_protected:Npn \__color_backend_fill_cmyk:n #1 - { \__kernel_backend_literal_pdf:n { #1 ~ k } } + { \__color_backend_fill:n { #1 ~ k } } \cs_new_protected:Npn \__color_backend_fill_gray:n #1 - { \__kernel_backend_literal_pdf:n { #1 ~ g } } + { \__color_backend_fill: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 } } + { \__color_backend_fill:n { #1 ~ rg } } +\cs_new_protected:Npn \__color_backend_fill:n #1 + { + \tl_set:Nn \l__color_backend_fill_tl {#1} + \__color_backend_stack_push:nn \l__color_backend_stack_int + { #1 ~ \l__color_backend_stroke_tl } + \group_insert_after:N \__color_backend_reset: + } +\cs_new_protected:Npn \__color_backend_stroke_cmyk:n #1 + { \__color_backend_stroke:n { #1 ~ K } } \cs_new_protected:Npn \__color_backend_stroke_gray:n #1 - { \__kernel_backend_literal_pdf:n { #1 ~ G } } + { \__color_backend_stroke:n { #1 ~ G } } \cs_new_protected:Npn \__color_backend_stroke_rgb:n #1 - { \__kernel_backend_literal_pdf:n { #1 ~ RG } } + { \__color_backend_stroke:n { #1 ~ RG } } +\cs_new_protected:Npn \__color_backend_stroke:n #1 + { + \tl_set:Nn \l__color_backend_stroke_tl {#1} + \__color_backend_stack_push:nn \l__color_backend_stack_int + { \l__color_backend_fill_tl \c_space_tl #1 } + \group_insert_after:N \__color_backend_reset: + } \cs_new_protected:Npn \__color_backend_fill_separation:nn #1#2 - { \__kernel_backend_literal_pdf:n { /#1 ~ cs ~ #2 ~ scn } } + { \__color_backend_fill: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 } } + { \__color_backend_stroke:n { /#1 ~ CS ~ #2 ~ SCN } } \cs_new_eq:NN \__color_backend_fill_devicen:nn \__color_backend_fill_separation:nn \cs_new_eq:NN \__color_backend_stroke_devicen:nn \__color_backend_stroke_separation:nn +\int_compare:nNnT \c__kernel_sys_dvipdfmx_version_int < { 20201111 } + { + \cs_gset_protected:Npn \__color_backend_fill_cmyk:n #1 + { + \__kernel_backend_literal:n { pdf: bc ~ [#1] } + \group_insert_after:N \__color_backend_reset: + } + \cs_gset_eq:NN \__color_backend_fill_gray:n \__color_backend_fill_cmyk:n + \cs_gset_eq:NN \__color_backend_fill_rgb:n \__color_backend_fill_cmyk:n + \cs_gset_protected:Npn \__color_backend_reset: + { \__kernel_backend_literal:n { pdf: ec } } + \cs_gset_protected:Npn \__color_backend_stroke:n #1 + { \__kernel_backend_literal:n {#1} } + \cs_gset_protected:Npn \__color_backend_fill_separation:nn #1#2 { } + \cs_gset_eq:NN \__color_backend_fill_devicen:nn + \__color_backend_fill_separation:nn + \cs_gset_eq:NN \__color_backend_stroke_separation:nn + \__color_backend_fill_separation:nn + \cs_gset_eq:NN \__color_backend_stroke_devicen:nn + \__color_backend_stroke_separation:nn + } %% File: l3backend-box.dtx \cs_new_protected:Npn \__box_backend_clip:N #1 { @@ -800,36 +865,43 @@ ] } } -\cs_new_protected:Npn \__pdf_backend_destination_box:nn #1#2 +\cs_new_protected:Npn \__pdf_backend_destination:nnnn #1#2#3#4 { - \group_begin: - \hbox_set:Nn \l__pdf_internal_box {#2} - \box_move_down:nn { \box_dp:N \l__pdf_internal_box } - { - \hbox:n - { - \__pdf_backend:n { obj ~ @pdf_ #1 _llx ~ @xpos } - \__pdf_backend:n { obj ~ @pdf_ #1 _lly ~ @ypos } - } - } - \box_use:N \l__pdf_internal_box - \box_move_up:nn { \box_ht:N \l__pdf_internal_box } - { - \hbox:n - { - \__pdf_backend:n - { - dest ~ (#1) - [ - @thispage - /FitR ~ - @pdf_ #1 _llx ~ @pdf_ #1 _lly ~ - @xpos ~ @ypos - ] - } - } - } - \group_end: + \exp_args:Ne \__pdf_backend_destination_aux:nnnn + { \dim_eval:n {#2} } {#1} {#3} {#4} + } +\cs_new_protected:Npn \__pdf_backend_destination_aux:nnnn #1#2#3#4 + { + \vbox_to_zero:n + { + \tex_kern:D \dim_eval:n {#4} \scan_stop: + \hbox:n + { + \__pdf_backend:n { obj ~ @pdf_ #2 _llx ~ @xpos } + \__pdf_backend:n { obj ~ @pdf_ #2 _lly ~ @ypos } + } + \tex_vss:D + } + \tex_kern:D #1 \scan_stop: + \vbox_to_zero:n + { + \tex_kern:D \dim_eval:n { -#3 } \scan_stop: + \hbox:n + { + \__pdf_backend:n + { + dest ~ (#2) + [ + @thispage + /FitR ~ + @pdf_ #2 _llx ~ @pdf_ #2 _lly ~ + @xpos ~ @ypos + ] + } + } + \tex_vss:D + } + \tex_kern:D -#1 \scan_stop: } \cs_new_protected:Npn \__pdf_backend_compresslevel:n #1 { \__kernel_backend_literal:x { dvipdfmx:config~z~ \int_eval:n {#1} } } @@ -854,6 +926,69 @@ { \__kernel_backend_literal_page:n { /#1 ~ #2 ~ BDC } } \cs_new_protected:Npn \__pdf_backend_emc: { \__kernel_backend_literal_page:n { EMC } } +%% File: l3backend-opacity.dtx +\cs_if_exist:NT \pdfmanagement_add:nnn + { + \__kernel_color_backend_stack_init:Nnn \c__opacity_backend_stack_int + { page ~ direct } { /opacity 1 ~ gs } + \pdfmanagement_add:nnn { Page / Resources / ExtGState } + { opacity 1 } { << /ca ~ 1 /CA ~ 1 >> } + } +\tl_new:N \l__opacity_backend_fill_tl +\tl_new:N \l__opacity_backend_stroke_tl +\cs_new_protected:Npn \__opacity_backend_select:n #1 + { + \exp_args:Nx \__opacity_backend_select_aux:n + { \fp_eval:n { min(max(0,#1),1) } } + } +\cs_new_protected:Npn \__opacity_backend_select_aux:n #1 + { + \tl_set:Nn \l__opacity_backend_fill_tl {#1} + \tl_set:Nn \l__opacity_backend_stroke_tl {#1} + \pdfmanagement_add:nnn { Page / Resources / ExtGState } + { opacity #1 } + { << /ca ~ #1 /CA ~ #1 >> } + \__opacity_backend_stack_push:nn \c__opacity_backend_stack_int + { /opacity #1 ~ gs } + \group_insert_after:N \__opacity_backend_reset: + } +\cs_if_exist:NF \pdfmanagement_add:nnn + { + \cs_gset_protected:Npn \__opacity_backend_select_aux:n #1 { } + } +\cs_new_protected:Npn \__opacity_backend_reset: + { \__opacity_backend_stack_pop:n \c__opacity_backend_stack_int } +\cs_new_protected:Npn \__opacity_backend_fill:n #1 + { + \__opacity_backend_fill_stroke:xx + { \fp_eval:n { min(max(0,#1),1) } } + \l__opacity_backend_stroke_tl + } +\cs_new_protected:Npn \__opacity_backend_stroke:n #1 + { + \__opacity_backend_fill_stroke:xx + \l__opacity_backend_fill_tl + { \fp_eval:n { min(max(0,#1),1) } } + } +\cs_new_protected:Npn \__opacity_backend_fill_stroke:nn #1#2 + { + \str_if_eq:nnTF {#1} {#2} + { \__opacity_backend_select_aux:n {#1} } + { + \tl_set:Nn \l__opacity_backend_fill_tl {#1} + \tl_set:Nn \l__opacity_backend_stroke_tl {#2} + \pdfmanagement_add:nnn { Page / Resources / ExtGState } + { opacity.fill #1 } + { << /ca ~ #1 >> } + \pdfmanagement_add:nnn { Page / Resources / ExtGState } + { opacity.stroke #1 } + { << /CA ~ #2 >> } + \__opacity_backend_stack_push:nn \c__opacity_backend_stack_int + { /opacity.fill #1 ~ gs /opacity.stroke #2 ~ gs } + \group_insert_after:N \__opacity_backend_reset: + } + } +\cs_generate_variant:Nn \__opacity_backend_fill_stroke:nn { xx } %% %% %% End of file `l3backend-xetex.def'. diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty b/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty index f25673ab551..85981d16f38 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty @@ -6,7 +6,7 @@ %% %% l3benchmark.dtx (with options: `package') %% -%% Copyright (C) 2018-2020 The LaTeX3 Project +%% Copyright (C) 2018-2021 The LaTeX Project %% %% It may be distributed and/or modified under the conditions of %% the LaTeX Project Public License (LPPL), either version 1.3c of @@ -20,7 +20,7 @@ %% %% File: l3benchmark.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3benchmark}{2020-10-27}{} +\ProvidesExplPackage{l3benchmark}{2020-01-29}{} {L3 Experimental benchmarking} \sys_if_engine_luatex:TF { diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3bitset/l3bitset.sty b/Master/texmf-dist/tex/latex/l3experimental/l3bitset/l3bitset.sty new file mode 100644 index 00000000000..df0bdb61709 --- /dev/null +++ b/Master/texmf-dist/tex/latex/l3experimental/l3bitset/l3bitset.sty @@ -0,0 +1,234 @@ +%% +%% This is file `l3bitset.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% l3bitset.dtx (with options: `package') +%% +%% Copyright (C) 2020 The LaTeX3 Project +%% +%% It may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License (LPPL), either version 1.3c of +%% this license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% This file is part of the "l3experimental bundle" (The Work in LPPL) +%% and all files in that bundle must be distributed together. +%% +%% File: l3bitset.dtx +\ProvidesExplPackage{l3bitset}{2020-01-29}{} + {L3 Experimental bitset support} +\cs_new_protected:Npn \bitset_new:N #1 + { + \__kernel_chk_if_free_cs:N #1 + \cs_gset_eq:NN #1 \c_zero_str + \prop_new:c { g__bitset_ \cs_to_str:N #1 _name_prop } + } + +\cs_new_protected:Npn \bitset_new:Nn #1 #2 + { + \__kernel_chk_if_free_cs:N #1 + \cs_gset_eq:NN #1 \c_zero_str + \prop_new:c { g__bitset_ \cs_to_str:N #1 _name_prop } + \prop_gset_from_keyval:cn + { g__bitset_ \cs_to_str:N #1 _name_prop } + {#2} + } +\cs_generate_variant:Nn \bitset_new:N { c } +\prop_new:N \l__bitset_tmpa_prop +\cs_new_protected:Npn \bitset_addto_named_index:Nn #1#2 + { + \prop_set_from_keyval:Nn \l__bitset_tmpa_prop {#2} + \prop_map_inline:Nn \l__bitset_tmpa_prop + { + \prop_gput:cnn + { g__bitset_ \cs_to_str:N #1 _name_prop } + {##1} + {##2} + } + } +\prg_new_eq_conditional:NNn + \bitset_if_exist:N \str_if_exist:N { p , T , F , TF } +\prg_new_eq_conditional:NNn + \bitset_if_exist:c \str_if_exist:c + { p , T , F , TF } +\cs_new_protected:Npn \__bitset_set_true:Nn #1#2 + { \__bitset_set:NNnN \str_set:Nx #1 {#2} 1 } +\cs_new_protected:Npn \__bitset_gset_true:Nn #1#2 + { \__bitset_set:NNnN \str_gset:Nx #1 {#2} 1 } +\cs_new_protected:Npn \__bitset_set_false:Nn #1#2 + { \__bitset_set:NNnN \str_set:Nx #1 {#2} 0 } +\cs_new_protected:Npn \__bitset_gset_false:Nn #1#2 + { \__bitset_set:NNnN \str_gset:Nx #1 {#2} 0 } +\cs_new_protected:Npn \__bitset_set:NNnN #1#2#3#4 + { + \int_compare:nNnT {#3} > { 0 } + { + \int_compare:nNnTF { \str_count:N #2 } < {#3} + { + #1 #2 + { + #4 + \prg_replicate:nn { #3 - \str_count:N #2 - 1 } { 0 } + #2 + } + } + { + #1 #2 + { + \str_range:Nnn #2 { 1 } { -1 - (#3) } + #4 + \str_range:Nnn #2 { 1 - (#3) } { -1 } + } + } + } + } +\int_new:N \l__bitset_internal_int +\prg_new_protected_conditional:Npnn \__bitset_test_digits:n #1 { TF } + { + \tex_afterassignment:D \__bitset_test_digits:w + \l__bitset_internal_int = 0 \tl_trim_spaces_apply:nN {#1} \tl_to_str:n + \__bitset_test_digits_end: + \use_i:nnn \if_false: + \__bitset_test_digits_end: + \if_int_compare:w \c_zero_int < \l__bitset_internal_int + \prg_return_true: + \else: + \prg_return_false: + \fi: + } +\cs_new_eq:NN \__bitset_test_digits_end: \exp_stop_f: +\cs_new_protected:Npn \__bitset_test_digits:w #1 \__bitset_test_digits_end: { } +\cs_new_protected:Npn \bitset_set_true:Nn #1#2 + { \__bitset_set:NNn \__bitset_set_true:Nn #1 {#2} } +\cs_new_protected:Npn \bitset_gset_true:Nn #1#2 + { \__bitset_set:NNn \__bitset_gset_true:Nn #1 {#2} } +\cs_new_protected:Npn \bitset_set_false:Nn #1#2 + { \__bitset_set:NNn \__bitset_set_false:Nn #1 {#2} } +\cs_new_protected:Npn \bitset_gset_false:Nn #1#2 + { \__bitset_set:NNn \__bitset_gset_false:Nn #1 {#2} } +\cs_new_protected:Npn \__bitset_set:NNn #1#2#3 + { + \prop_if_in:cnTF { g__bitset_ \cs_to_str:N #2 _name_prop } {#3} + { + #1 #2 + { + \prop_item:cn { g__bitset_ \cs_to_str:N #2 _name_prop } {#3} + } + } + { + \__bitset_test_digits:nTF {#3} + { + #1 #2 {#3} + \prop_gput:cnn { g__bitset_ \cs_to_str:N #2 _name_prop } {#3} {#3} + } + { + \__kernel_msg_warning:nnxx { bitset } { bitset-unknown-name } + { \token_to_str:N #2 } + { \tl_to_str:n {#3} } + } + } + } +\cs_generate_variant:Nn \bitset_set_true:Nn { c } +\cs_generate_variant:Nn \bitset_gset_true:Nn { c } +\cs_generate_variant:Nn \bitset_set_false:Nn { c } +\cs_generate_variant:Nn \bitset_gset_false:Nn { c } +\cs_new_protected:Npn \bitset_clear:N #1 + { + \str_set_eq:NN #1 \c_zero_str + } +\cs_new_protected:Npn \bitset_gclear:N #1 + { + \str_gset_eq:NN #1 \c_zero_str + } +\cs_generate_variant:Nn \bitset_clear:N { c } +\cs_generate_variant:Nn \bitset_gclear:N { c } +\cs_new:Npn \bitset_to_arabic:N #1 + { + \int_compare:nNnTF { \str_count:N #1 } < { 32 } + { \exp_args:No \int_from_bin:n {#1} } + { + \exp_after:wN \__bitset_to_int:nN \exp_after:wN 0 + #1 \q_recursion_tail \q_recursion_stop + } + } + +\cs_new:Npn \__bitset_to_int:nN #1#2 + { + \quark_if_recursion_tail_stop_do:Nn #2 {#1} + \exp_args:Nf \__bitset_to_int:nN { \fp_eval:n { #1 * 2 + #2 } } + } + +\cs_new:Npn \bitset_to_bin:N #1 + { + #1 + } +\cs_generate_variant:Nn \bitset_to_arabic:N { c } +\cs_generate_variant:Nn \bitset_to_bin:N { c } +\cs_new:Npn \bitset_item:Nn #1#2 + { + \prop_if_in:cnTF { g__bitset_ \cs_to_str:N #1 _name_prop } {#2} + { + \int_eval:n + { + \str_item:Nn #1 + { 0 - ( \prop_item:cn { g__bitset_ \cs_to_str:N #1 _name_prop } {#2} ) } + +0 + } + } + { + 0 + } + } +\cs_generate_variant:Nn \bitset_item:Nn { c } + +\cs_new_protected:Npn \bitset_show:N { \__bitset_show:NN \msg_show:nnxxxx } +\cs_generate_variant:Nn \bitset_show:N { c } +\cs_new_protected:Npn \bitset_log:N { \__bitset_show:NN \msg_log:nnxxxx } +\cs_generate_variant:Nn \bitset_log:N { c } +\cs_new_protected:Npn \bitset_show_named_index:N { \__bitset_show_named_index:NN \msg_show:nnxxxx } +\cs_generate_variant:Nn \bitset_show_named_index:N { c } +\cs_new_protected:Npn \__bitset_show:NN #1#2 + { + \__kernel_chk_defined:NT #2 + { + #1 { LaTeX/bitset } { show-bitset } + { \token_to_str:N #2 } + { \bitset_to_bin:N #2 } + { \bitset_to_arabic:N #2 } + { } + } + } +\cs_new_protected:Npn \__bitset_show_named_index:NN #1#2 + { + \__kernel_chk_defined:NT #2 + { + #1 { LaTeX/bitset } { show-names } + { \token_to_str:N #2 } + { \prop_map_function:cN { g__bitset_ \cs_to_str:N #2 _name_prop } \msg_show_item:nn } + { } + { } + } + } + \__kernel_msg_new:nnn { bitset } { show-bitset } + { + The~bitset~#1~has~the~representation: \\ + >~binary:~#2 \\ + >~arabic:~#3 . + } +\__kernel_msg_new:nnn { bitset } { show-names } + { + The~bitset~#1~ + \tl_if_empty:nTF {#2} + { knows~no~names~yet \\>~ . } + { knows~the~name/index~pairs~(without~outer~braces): #2 . } + } +\__kernel_msg_new:nnn { bitset } { bitset-unknown-name } + { The~name~'#2'~is~unknown~for~bitset~\tl_to_str:n {#1} } + +%% +%% +%% End of file `l3bitset.sty'. diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty b/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty index 6eb28eca242..e4e2fde1c93 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty @@ -6,7 +6,7 @@ %% %% l3color.dtx (with options: `package') %% -%% Copyright (C) 2017-2020 The LaTeX3 Project +%% Copyright (C) 2017-2021 The LaTeX Project %% %% It may be distributed and/or modified under the conditions of %% the LaTeX Project Public License (LPPL), either version 1.3c of @@ -20,7 +20,7 @@ %% %% File: l3color.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3color}{2020-10-27}{} +\ProvidesExplPackage{l3color}{2020-01-29}{} {L3 Experimental color support} \int_new:N \l__color_internal_int \tl_new:N \l__color_internal_tl diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty b/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty index ecc7791c0da..fe13d4d5347 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty @@ -14,7 +14,7 @@ %% l3draw-state.dtx (with options: `package') %% l3draw-transforms.dtx (with options: `package') %% -%% Copyright (C) 2018-2020 The LaTeX3 Project +%% Copyright (C) 2018-2021 The LaTeX Project %% %% It may be distributed and/or modified under the conditions of %% the LaTeX Project Public License (LPPL), either version 1.3c of @@ -28,7 +28,7 @@ %% %% File: l3draw.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3draw}{2020-10-27}{} +\ProvidesExplPackage{l3draw}{2020-01-29}{} {L3 Experimental core drawing support} \RequirePackage { l3color } \scan_new:N \s__draw_mark diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty b/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty index 533b62e1b12..b8baaccfa7c 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty @@ -6,7 +6,7 @@ %% %% l3graphics.dtx (with options: `package') %% -%% Copyright (C) 2019,2020 The LaTeX3 Project +%% Copyright (C) 2019-2021 The LaTeX Project %% %% It may be distributed and/or modified under the conditions of %% the LaTeX Project Public License (LPPL), either version 1.3c of @@ -20,7 +20,7 @@ %% %% File: l3graphics.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3graphics}{2020-10-27}{} +\ProvidesExplPackage{l3graphics}{2020-01-29}{} {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 c7d232ad352..08b7db7f24f 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3pdf/l3pdf.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3pdf/l3pdf.sty @@ -6,7 +6,7 @@ %% %% l3pdf.dtx (with options: `package') %% -%% Copyright (C) 2019,2020 The LaTeX3 Project +%% Copyright (C) 2019-2021 The LaTeX Project %% %% It may be distributed and/or modified under the conditions of %% the LaTeX Project Public License (LPPL), either version 1.3c of @@ -20,7 +20,7 @@ %% %% File: l3pdf.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3pdf}{2020-10-27}{} +\ProvidesExplPackage{l3pdf}{2020-01-29}{} {L3 Experimental core PDF support} \scan_new:N \s__pdf_stop \bool_new:N \g__pdf_init_bool @@ -106,6 +106,13 @@ { \__pdf_backend_version_major: . \__pdf_backend_version_minor: } \cs_new:Npn \pdf_version_major: { \__pdf_backend_version_major: } \cs_new:Npn \pdf_version_minor: { \__pdf_backend_version_minor: } +\cs_new_protected:Npn \pdf_destination:nn #1 #2 + { \__pdf_backend_destination:nn {#1}{#2} } +\cs_new_protected:Npn \pdf_destination:nnnn #1 #2 #3 #4 + { + \hbox_to_zero:n + { \__pdf_backend_destination:nnnn {#1} {#2} {#3} {#4} } + } %% %% %% End of file `l3pdf.sty'. 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 3d392de62fc..bfad5070e53 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty @@ -6,7 +6,7 @@ %% %% l3str-format.dtx (with options: `package') %% -%% Copyright (C) 2011-2020 The LaTeX3 Project +%% Copyright (C) 2011-2021 The LaTeX Project %% %% It may be distributed and/or modified under the conditions of %% the LaTeX Project Public License (LPPL), either version 1.3c of @@ -20,7 +20,7 @@ %% %% File: l3str-format.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3str-format}{2020-10-27}{} +\ProvidesExplPackage{l3str-format}{2020-01-29}{} {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 6aaa332685f..77dacbd1104 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 @@ -6,7 +6,7 @@ %% %% l3sys-shell.dtx (with options: `package') %% -%% Copyright (C) 2018-2020 The LaTeX3 Project +%% Copyright (C) 2018-2021 The LaTeX Project %% %% It may be distributed and/or modified under the conditions of %% the LaTeX Project Public License (LPPL), either version 1.3c of @@ -20,7 +20,7 @@ %% %% File: l3sys-shell.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3sys-shell}{2020-10-27}{} +\ProvidesExplPackage{l3sys-shell}{2020-01-29}{} {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 84a58c3a145..43e8b940b96 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty @@ -6,7 +6,7 @@ %% %% xcoffins.dtx (with options: `package') %% -%% Copyright (C) 2010-2020 The LaTeX3 Project +%% Copyright (C) 2010-2021 The LaTeX Project %% %% It may be distributed and/or modified under the conditions of %% the LaTeX Project Public License (LPPL), either version 1.3c of @@ -20,7 +20,7 @@ %% %% File: xcoffins.dtx \RequirePackage{xparse} -\ProvidesExplPackage{xcoffins}{2020-10-27}{} +\ProvidesExplPackage{xcoffins}{2020-01-29}{} {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 8c1b8b6834a..5b613332f83 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty @@ -6,7 +6,7 @@ %% %% l3galley.dtx (with options: `package') %% -%% Copyright (C) 2010-2020 The LaTeX3 Project +%% Copyright (C) 2010-2021 The LaTeX Project %% %% It may be distributed and/or modified under the conditions of %% the LaTeX Project Public License (LPPL), either version 1.3c of @@ -32,7 +32,7 @@ }% \endinput } -\ProvidesExplPackage{l3galley}{2020-10-27}{} +\ProvidesExplPackage{l3galley}{2020-01-29}{} {L3 Experimental galley code} \int_new:N \l__galley_tmp_int \seq_new:N \g__galley_tmpa_seq diff --git a/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty b/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty index d040fcdbc45..77a5e039e4f 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty @@ -6,7 +6,7 @@ %% %% xgalley.dtx (with options: `package') %% -%% Copyright (C) 2010-2020 The LaTeX3 Project +%% Copyright (C) 2010-2021 The LaTeX Project %% %% It may be distributed and/or modified under the conditions of %% the LaTeX Project Public License (LPPL), either version 1.3c of @@ -20,7 +20,7 @@ %% %% File: xgalley.dtx \RequirePackage{xparse} -\ProvidesExplPackage{xgalley}{2020-10-27}{} +\ProvidesExplPackage{xgalley}{2020-01-29}{} {L3 Experimental galley} \RequirePackage{xparse,xtemplate,l3galley} \clist_new:N \l__galley_tmpa_clist -- cgit v1.2.3