texlive[55205] Master/texmf-dist: l3experimental (18may20)

commits+karl at tug.org commits+karl at tug.org
Mon May 18 22:40:47 CEST 2020


Revision: 55205
          http://tug.org/svn/texlive?view=revision&revision=55205
Author:   karl
Date:     2020-05-18 22:40:47 +0200 (Mon, 18 May 2020)
Log Message:
-----------
l3experimental (18may20)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
    trunk/Master/texmf-dist/doc/latex/l3experimental/README.md
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3cctab/l3cctab.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3graphics/l3graphics.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3pdf/l3pdf-code.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3pdf/l3pdf.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
    trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3pdf/l3pdf.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md	2020-05-18 20:40:47 UTC (rev 55205)
@@ -7,6 +7,11 @@
 
 ## [Unreleased]
 
+## [2020-05-18]
+
+### Added
+- `\pdf_object_if_exist:n(TF)`
+
 ## [2020-01-12]
 
 ### Changed
@@ -122,7 +127,8 @@
 - New `l3color` module using `xcolor`-like expression syntax
 - New `l3draw` module, based on `pgf` layer of the TikZ system
 
-[Unreleased]: https://github.com/latex3/latex3/compare/2020-01-12...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2020-05-18...HEAD
+[2020-05-18]: https://github.com/latex3/latex3/compare/2020-01-12...2020-05-18
 [2020-01-12]: https://github.com/latex3/latex3/compare/2019-10-11...2020-01-12
 [2019-10-11]: https://github.com/latex3/latex3/compare/2019-09-28...2019-10-11
 [2019-09-28]: https://github.com/latex3/latex3/compare/2019-09-19...2019-09-28

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3experimental/README.md	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/doc/latex/l3experimental/README.md	2020-05-18 20:40:47 UTC (rev 55205)
@@ -1,7 +1,7 @@
 Experimental LaTeX3 Concepts
 ============================
 
-Release 2020-01-12
+Release 2020-05-18
 
 Overview
 --------
@@ -142,6 +142,6 @@
 
 -----
 
-<p>Copyright (C) 1998-2011,2015-2020 The LaTeX3 Project <br />
+<p>Copyright (C) 1998-2004,2008-2012,2014-2020 The LaTeX3 Project <br />
 <a href="http://latex-project.org/">http://latex-project.org/</a> <br />
 All rights reserved.</p>

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3cctab/l3cctab.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3graphics/l3graphics.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3pdf/l3pdf-code.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3pdf/l3pdf.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx	2020-05-18 20:40:47 UTC (rev 55205)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-01-12}
+% \date{Released 2020-05-18}
 %
 % \maketitle
 %
@@ -130,7 +130,7 @@
 %
 %    \begin{macrocode}
 %<*package>
-\ProvidesExplPackage{l3benchmark}{2020-01-12}{}
+\ProvidesExplPackage{l3benchmark}{2020-05-18}{}
   {L3 Experimental benchmarking}
 %</package>
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx	2020-05-18 20:40:47 UTC (rev 55205)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-01-12}
+% \date{Released 2020-05-18}
 %
 % \maketitle
 %
@@ -171,7 +171,7 @@
 %
 %    \begin{macrocode}
 %<*package>
-\ProvidesExplPackage{l3cctab}{2020-01-12}{}
+\ProvidesExplPackage{l3cctab}{2020-05-18}{}
   {L3 Experimental category code tables}
 %</package>
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx	2020-05-18 20:40:47 UTC (rev 55205)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-01-12}
+% \date{Released 2020-05-18}
 %
 % \maketitle
 %
@@ -243,7 +243,7 @@
 %     \cs{color_parse:nN} \Arg{color expression} \Arg{tl}
 %   \end{syntax}
 %   Parses the \meta{color expression} as described above, and sets the
-%   \meta{tl} the the equivalent \meta{core color representation}
+%   \meta{tl} to the equivalent \meta{core color representation}
 %   (used at the backend level and based on \texttt{dvips} color
 %   representation).
 % \end{function}
@@ -267,7 +267,7 @@
 %
 %    \begin{macrocode}
 %<*package>
-\ProvidesExplPackage{l3color}{2020-01-12}{}
+\ProvidesExplPackage{l3color}{2020-05-18}{}
   {L3 Experimental color support}
 %</package>
 %    \end{macrocode}
@@ -300,6 +300,13 @@
 %    \end{macrocode}
 % \end{variable}
 %
+% \begin{variable}{\s_@@_mark}
+%   Internal scan marks. \cs{s_@@_stop} is already defined in \pkg{l3color-base}.
+%    \begin{macrocode}
+\scan_new:N \s_@@_mark
+%    \end{macrocode}
+% \end{variable}
+%
 % \subsection{Utility functions}
 %
 % \begin{macro}[int, TF, EXP]{\@@_if_defined:n}
@@ -328,10 +335,10 @@
       \@@_extract:NNw
       \exp_after:wN \exp_after:wN \exp_after:wN #2
       \exp_after:wN \exp_after:wN \exp_after:wN #3
-        \cs:w l_@@_named_ #1 _tl \cs_end: \q_stop
+        \cs:w l_@@_named_ #1 _tl \cs_end: \s_@@_stop
   }
 \cs_generate_variant:Nn \@@_extract:nNN { V }
-\cs_new_protected:Npn \@@_extract:NNw #1#2 #3 ~ #4 \q_stop
+\cs_new_protected:Npn \@@_extract:NNw #1#2 #3 ~ #4 \s_@@_stop
   {
     \tl_set:Nn #1 {#3}
     \tl_set:Nn #2 {#4}
@@ -366,18 +373,18 @@
     \str_if_eq:nnT {#1} { spot } % TO DO!!!
       { }
     \tl_set:Nx #4
-      { \use:c { @@_convert_ #1 _ #2 :w } #3 ~ 0 ~ 0 ~ 0 \q_stop }
+      { \use:c { @@_convert_ #1 _ #2 :w } #3 ~ 0 ~ 0 ~ 0 \s_@@_stop }
   }
 \cs_generate_variant:Nn \@@_convert:nnnN { nnV }
-\cs_new:Npn \@@_convert_gray_rgb:w #1 ~ #2 \q_stop
+\cs_new:Npn \@@_convert_gray_rgb:w #1 ~ #2 \s_@@_stop
   { #1 ~ #1 ~ #1 }
-\cs_new:Npn \@@_convert_gray_cmyk:w #1 ~ #2 \q_stop
+\cs_new:Npn \@@_convert_gray_cmyk:w #1 ~ #2 \s_@@_stop
   { 0 ~ 0 ~ 0 ~ \fp_eval:n { 1 - #1 } }
 %    \end{macrocode}
 %   These rather odd values are based on \textsc{ntsc} television: the set are
 %   used for the |cmyk| conversion.
 %    \begin{macrocode}
-\cs_new:Npn \@@_convert_rgb_gray:w #1 ~ #2 ~ #3 ~ #4 \q_stop
+\cs_new:Npn \@@_convert_rgb_gray:w #1 ~ #2 ~ #3 ~ #4 \s_@@_stop
   { \fp_eval:n { 0.3 * #1 + 0.59 * #2 + 0.11 * #3 } }
 %    \end{macrocode}
 %   The conversion from |rgb| to |cmyk| is the most complex: a two-step
@@ -387,7 +394,7 @@
 %   Moreover, as the likelihood of anyone using a non-unitary matrix here is
 %   tiny, we simplify and treat those two concepts as no-ops.
 %    \begin{macrocode}
-\cs_new:Npn \@@_convert_rgb_cmyk:w #1 ~ #2 ~ #3 ~ #4 \q_stop
+\cs_new:Npn \@@_convert_rgb_cmyk:w #1 ~ #2 ~ #3 ~ #4 \s_@@_stop
   {
     \exp_args:Nf \@@_convert_rgb_cmyk:nnnn
       { \fp_eval:n { min ( 1 - #1 , 1 - #2 , 1 - #3 ) } } {#1} {#2} {#3}
@@ -399,9 +406,9 @@
     \fp_eval:n { min ( 1 , max ( 0 , 1 - #4 - #1 ) ) } \c_space_tl
     #1
   }
-\cs_new:Npn \@@_convert_cmyk_gray:w #1 ~ #2 ~ #3 ~ #4 ~ #5 \q_stop
+\cs_new:Npn \@@_convert_cmyk_gray:w #1 ~ #2 ~ #3 ~ #4 ~ #5 \s_@@_stop
   { \fp_eval:n { 1 - min ( 1 , 0.3 * #1 + 0.59 * #2 + 0.11 * #3 + #4 ) } }
-\cs_new:Npn \@@_convert_cmyk_rgb:w #1 ~ #2 ~ #3 ~ #4 ~ #5 \q_stop
+\cs_new:Npn \@@_convert_cmyk_rgb:w #1 ~ #2 ~ #3 ~ #4 ~ #5 \s_@@_stop
   {
     \fp_eval:n { 1 - min ( 1 , #1 + #4 ) } \c_space_tl
     \fp_eval:n { 1 - min ( 1 , #2 + #4 ) } \c_space_tl
@@ -464,10 +471,10 @@
   {
     \tl_if_exist:cTF { l_@@_named_ #1 _tl }
       { \tl_set_eq:Nc #2 { l_@@_named_ #1 _tl } }
-      { \@@_parse:Nw #2#1 ! \q_stop }
+      { \@@_parse:Nw #2#1 ! \s_@@_stop }
     \@@_check_model:N #2
   }
-\cs_new_protected:Npn \@@_parse:Nw #1#2 ! #3 \q_stop
+\cs_new_protected:Npn \@@_parse:Nw #1#2 ! #3 \s_@@_stop
   {
     \@@_if_defined:nTF {#2}
       {
@@ -489,7 +496,7 @@
   {
     \group_begin:
       \@@_extract:nNN {#2} \l_@@_model_tl \l_@@_value_tl
-      \@@_parse_loop:w #3 ! ! ! ! \q_stop
+      \@@_parse_loop:w #3 ! ! ! ! \s_@@_stop
       \tl_set:Nx \l_@@_internal_tl
         { \l_@@_model_tl \c_space_tl \l_@@_value_tl }
     \exp_args:NNNV \group_end:
@@ -507,7 +514,7 @@
 %   sorted out by checking if we have further data to process: in contrast
 %   to \pkg{xcolor}, we don't allow |!!| so the test can be simplified.
 %    \begin{macrocode}
-\cs_new_protected:Npn \@@_parse_loop:w #1 ! #2 ! #3 ! #4 ! #5 \q_stop
+\cs_new_protected:Npn \@@_parse_loop:w #1 ! #2 ! #3 ! #4 ! #5 \s_@@_stop
   {
     \bool_lazy_or:nnF
       { \tl_if_blank_p:n {#1} }
@@ -529,7 +536,7 @@
           }
       }
     \tl_if_blank:nF {#3}
-      { \@@_parse_loop:w #3 ! #4 ! #5 \q_stop }
+      { \@@_parse_loop:w #3 ! #4 ! #5 \s_@@_stop }
     \@@_parse_end:
   }
 %    \end{macrocode}
@@ -594,12 +601,12 @@
 \cs_new:Npn \@@_parse_mix:nNnn #1#2#3#4
   {
     \use:c { @@_parse_mix_ #2 :nw } {#1}
-      #3 \q_mark #4 \q_stop
+      #3 \s_@@_mark #4 \s_@@_stop
   }
-\cs_new:Npn \@@_parse_mix_gray:nw #1#2 \q_mark #3 \q_stop
+\cs_new:Npn \@@_parse_mix_gray:nw #1#2 \s_@@_mark #3 \s_@@_stop
   { \fp_eval:n { #2 * #1 + #3 * ( 1 - #1 ) } }
 \cs_new:Npn \@@_parse_mix_rgb:nw
-  #1#2 ~ #3 ~ #4 \q_mark #5 ~ #6 ~ #7 \q_stop
+  #1#2 ~ #3 ~ #4 \s_@@_mark #5 ~ #6 ~ #7 \s_@@_stop
   {
     \fp_eval:n { #2 * #1 + #5 * ( 1 - #1 ) } \c_space_tl
     \fp_eval:n { #3 * #1 + #6 * ( 1 - #1 ) } \c_space_tl
@@ -606,7 +613,7 @@
     \fp_eval:n { #4 * #1 + #7 * ( 1 - #1 ) }
   }
 \cs_new:Npn \@@_parse_mix_cmyk:nw
-  #1#2 ~ #3 ~ #4 ~ #5 \q_mark #6 ~ #7 ~ #8 ~ #9 \q_stop
+  #1#2 ~ #3 ~ #4 ~ #5 \s_@@_mark #6 ~ #7 ~ #8 ~ #9 \s_@@_stop
   {
     \fp_eval:n { #2 * #1 + #6 * ( 1 - #1 ) } \c_space_tl
     \fp_eval:n { #3 * #1 + #7 * ( 1 - #1 ) } \c_space_tl
@@ -636,27 +643,27 @@
 % \begin{macro}[EXP]{\@@_parse_spot_aux:w}
 %   Turn the input into internal form, also tidying up the number quickly.
 %    \begin{macrocode}
-\cs_new:Npn \@@_parse_model_gray:w #1 , #2 \q_stop { \@@_parse_number:n {#1} }
-\cs_new:Npn \@@_parse_model_rgb:w #1 , #2 , #3 , #4 \q_stop
+\cs_new:Npn \@@_parse_model_gray:w #1 , #2 \s_@@_stop { \@@_parse_number:n {#1} }
+\cs_new:Npn \@@_parse_model_rgb:w #1 , #2 , #3 , #4 \s_@@_stop
   {
-    \@@_parse_number:n {#1} ~ 
+    \@@_parse_number:n {#1} ~
     \@@_parse_number:n {#2} ~
     \@@_parse_number:n {#3}
   }
-\cs_new:Npn \@@_parse_model_cmyk:w #1 , #2 , #3 , #4 , #5 \q_stop
+\cs_new:Npn \@@_parse_model_cmyk:w #1 , #2 , #3 , #4 , #5 \s_@@_stop
   {
-    \@@_parse_number:n {#1} ~ 
+    \@@_parse_number:n {#1} ~
     \@@_parse_number:n {#2} ~
     \@@_parse_number:n {#3} ~
     \@@_parse_number:n {#4}
   }
-\cs_new:Npn \@@_parse_model_spot:w #1 , #2 \q_stop
-  { \@@_parse_spot_aux:w #1 ! 100 ! \q_stop }
-\cs_new:Npn \@@_parse_spot_aux:w #1 ! #2 ! #3 \q_stop
+\cs_new:Npn \@@_parse_model_spot:w #1 , #2 \s_@@_stop
+  { \@@_parse_spot_aux:w #1 ! 100 ! \s_@@_stop }
+\cs_new:Npn \@@_parse_spot_aux:w #1 ! #2 ! #3 \s_@@_stop
   { #1 ~ \fp_eval:n { #2 / 100 } }
 \cs_new:Npn \@@_parse_number:n #1
-  {  \@@_parse_number:w #1 . 0 . \q_stop }
-\cs_new:Npn \@@_parse_number:w #1 . #2 . #3 \q_stop
+  {  \@@_parse_number:w #1 . 0 . \s_@@_stop }
+\cs_new:Npn \@@_parse_number:w #1 . #2 . #3 \s_@@_stop
   { \tl_if_blank:nTF {#1} { 0 } {#1} . #2 }
 %    \end{macrocode}
 % \end{macro}
@@ -681,7 +688,7 @@
   {
     \tl_if_empty:NF \l_color_fixed_model_tl
       {
-        \exp_after:wN \@@_check_model:w #1 \q_stop
+        \exp_after:wN \@@_check_model:w #1 \s_@@_stop
         \tl_if_eq:NNF \l_@@_model_tl \l_color_fixed_model_tl
           {
             \@@_convert:VVN \l_@@_model_tl \l_color_fixed_model_tl
@@ -691,7 +698,7 @@
           { \l_color_fixed_model_tl \c_space_tl \l_@@_value_tl }
       }
   }
-\cs_new_protected:Npn \@@_check_model:w #1 ~ #2 \q_stop
+\cs_new_protected:Npn \@@_check_model:w #1 ~ #2 \s_@@_stop
   {
     \tl_set:Nn \l_@@_model_tl {#1}
     \tl_set:Nn \l_@@_value_tl {#2}
@@ -743,7 +750,7 @@
     \cs_if_exist:cTF { @@_parse_model_ #1 :w }
       {
         \tl_set:Nx #3
-          { #1 ~ \use:c {  @@_parse_model_ #1 :w } #2 , 0 , 0 , 0 , 0 \q_stop }
+          { #1 ~ \use:c {  @@_parse_model_ #1 :w } #2 , 0 , 0 , 0 , 0 \s_@@_stop }
         \@@_check_model:N #3
       }
       {
@@ -848,21 +855,21 @@
       {#1}
       {
         \@@_if_defined:nTF {#1}
-          { \exp_last_unbraced:Nv \@@_show:w { l_@@_named_ #1 _tl } \q_stop }
+          { \exp_last_unbraced:Nv \@@_show:w { l_@@_named_ #1 _tl } \s_@@_stop }
           { }
       }
       { }
       { }
   }
-\cs_new:Npn \@@_show:w #1 ~ #2 \q_stop
+\cs_new:Npn \@@_show:w #1 ~ #2 \s_@@_stop
   {
     \msg_show_item_unbraced:nn { model } {#1}
     \exp_args:Nnf \msg_show_item_unbraced:nn { value }
-      { \use:c { @@_show_ #1 :w } #2 \q_stop }
+      { \use:c { @@_show_ #1 :w } #2 \s_@@_stop }
   }
-\cs_new:Npn \@@_show_gray:w #1 \q_stop { #1 }
-\cs_new:Npn \@@_show_rgb:w #1 ~ #2 ~ #3 \q_stop { #1 ,~ #2 ,~ #3 }
-\cs_new:Npn \@@_show_cmyk:w #1 ~ #2 ~ #3 ~ #4 \q_stop { #1 ,~ #2 ,~ #3 ,~ #4 }
+\cs_new:Npn \@@_show_gray:w #1 \s_@@_stop { #1 }
+\cs_new:Npn \@@_show_rgb:w #1 ~ #2 ~ #3 \s_@@_stop { #1 ,~ #2 ,~ #3 }
+\cs_new:Npn \@@_show_cmyk:w #1 ~ #2 ~ #3 ~ #4 \s_@@_stop { #1 ,~ #2 ,~ #3 ,~ #4 }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx	2020-05-18 20:40:47 UTC (rev 55205)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-01-12}
+% \date{Released 2020-05-18}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx	2020-05-18 20:40:47 UTC (rev 55205)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-01-12}
+% \date{Released 2020-05-18}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx	2020-05-18 20:40:47 UTC (rev 55205)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-01-12}
+% \date{Released 2020-05-18}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx	2020-05-18 20:40:47 UTC (rev 55205)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-01-12}
+% \date{Released 2020-05-18}
 %
 % \maketitle
 %
@@ -116,8 +116,8 @@
       {#1}
   }
 \cs_new:Npn \@@_point_process_auxi:nn #1#2
-  { \@@_point_process_auxii:nw {#2} #1 \q_stop }
-\cs_new:Npn \@@_point_process_auxii:nw #1 #2 , #3 \q_stop
+  { \@@_point_process_auxii:nw {#2} #1 \s_@@_stop }
+\cs_new:Npn \@@_point_process_auxii:nw #1 #2 , #3 \s_@@_stop
   { #1 {#2} {#3} }
 \cs_new:Npn \@@_point_process:nnn #1#2#3
   {
@@ -127,8 +127,8 @@
       {#1}
   }
 \cs_new:Npn \@@_point_process_auxiii:nnn #1#2#3
-  { \@@_point_process_auxiv:nw {#3} #1 \q_mark #2 \q_stop }
-\cs_new:Npn \@@_point_process_auxiv:nw #1 #2 , #3 \q_mark #4 , #5 \q_stop
+  { \@@_point_process_auxiv:nw {#3} #1 \s_@@_mark #2 \s_@@_stop }
+\cs_new:Npn \@@_point_process_auxiv:nw #1 #2 , #3 \s_@@_mark #4 , #5 \s_@@_stop
   { #1 {#2} {#3} {#4} {#5} }
 \cs_new:Npn \@@_point_process:nnnn #1#2#3#4
   {
@@ -139,9 +139,9 @@
       {#1}
   }
 \cs_new:Npn \@@_point_process_auxv:nnnn #1#2#3#4
-  { \@@_point_process_auxvi:nw {#4} #1 \q_mark #2 \q_mark #3 \q_stop }
+  { \@@_point_process_auxvi:nw {#4} #1 \s_@@_mark #2 \s_@@_mark #3 \s_@@_stop }
 \cs_new:Npn \@@_point_process_auxvi:nw
-  #1 #2 , #3 \q_mark #4 , #5 \q_mark #6 , #7 \q_stop
+  #1 #2 , #3 \s_@@_mark #4 , #5 \s_@@_mark #6 , #7 \s_@@_stop
   { #1 {#2} {#3} {#4} {#5} {#6} {#7} }
 \cs_new:Npn \@@_point_process:nnnnn #1#2#3#4#5
   {
@@ -155,10 +155,10 @@
 \cs_new:Npn \@@_point_process_auxvii:nnnnn #1#2#3#4#5
   {
     \@@_point_process_auxviii:nw
-      {#5} #1 \q_mark #2 \q_mark #3 \q_mark #4 \q_stop
+      {#5} #1 \s_@@_mark #2 \s_@@_mark #3 \s_@@_mark #4 \s_@@_stop
   }
 \cs_new:Npn \@@_point_process_auxviii:nw
-  #1 #2 , #3 \q_mark #4 , #5 \q_mark #6 , #7 \q_mark #8 , #9 \q_stop
+  #1 #2 , #3 \s_@@_mark #4 , #5 \s_@@_mark #6 , #7 \s_@@_mark #8 , #9 \s_@@_stop
   { #1 {#2} {#3} {#4} {#5} {#6} {#7} {#8} {#9} }
 %    \end{macrocode}
 % \end{macro}

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx	2020-05-18 20:40:47 UTC (rev 55205)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-01-12}
+% \date{Released 2020-05-18}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx	2020-05-18 20:40:47 UTC (rev 55205)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-01-12}
+% \date{Released 2020-05-18}
 %
 % \maketitle
 %
@@ -326,8 +326,8 @@
           \tl_build_get:NN \g_@@_softpath_main_tl \l_@@_softpath_internal_tl
           \exp_after:wN \@@_softpath_round_loop:Nnn
             \l_@@_softpath_internal_tl
-            \q_recursion_tail ? ?
-            \q_recursion_stop
+            \q_@@_recursion_tail ? ?
+            \q_@@_recursion_stop
         \group_end:
       }
     \bool_gset_false:N \g_@@_softpath_corners_bool
@@ -342,7 +342,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_softpath_round_loop:Nnn #1#2#3
   {
-    \quark_if_recursion_tail_stop_do:Nn #1 { \@@_softpath_round_end: }
+    \@@_if_recursion_tail_stop_do:Nn #1 { \@@_softpath_round_end: }
     \token_if_eq_meaning:NNTF #1 \@@_softpath_roundpoint_op:nn
       { \@@_softpath_round_action:nn {#2} {#3} }
       {
@@ -505,7 +505,7 @@
 \cs_new:Npn \@@_softpath_round_calc:nnnnnn #1#2#3#4#5#6
   {
     \@@_softpath_round_calc:nnnnw {#3} {#4} {#5} {#6}
-      #1 \q_mark #2 \q_stop
+      #1 \s_@@_mark #2 \s_@@_stop
   }
 \cs_generate_variant:Nn \@@_softpath_round_calc:nnnnnn { fV }
 %    \end{macrocode}
@@ -513,7 +513,7 @@
 %   quadratic Bézier curve.
 %    \begin{macrocode}
 \cs_new:Npn \@@_softpath_round_calc:nnnnw
-  #1#2#3#4 #5 , #6 \q_mark #7 , #8 \q_stop
+  #1#2#3#4 #5 , #6 \s_@@_mark #7 , #8 \s_@@_stop
   {
     {#5} {#6}
     \exp_not:N \@@_softpath_curveto_opi:nn
@@ -556,7 +556,7 @@
                 \exp_not:N \exp_after:wN
                   \exp_not:N \@@_softpath_round_close:w
                   \exp_not:N \l_@@_softpath_curve_end_tl
-                    \exp_not:N \q_stop
+                    \s_@@_stop
               }
             \use:x
               {
@@ -567,7 +567,7 @@
                       \exp_not:N \exp_after:wN
                         \exp_not:N \@@_softpath_round_close:w
                         \exp_not:N \l_@@_softpath_curve_end_tl
-                          \exp_not:N \q_stop
+                          \s_@@_stop
                   }
               }
           }
@@ -576,7 +576,7 @@
           \exp_after:wN \use_none:n \l_@@_softpath_move_tl
       }
   }
-\cs_new:Npn \@@_softpath_round_close:w #1 , #2 \q_stop { {#1} {#2} }
+\cs_new:Npn \@@_softpath_round_close:w #1 , #2 \s_@@_stop { {#1} {#2} }
 %    \end{macrocode}
 %   Tidy up the parts of the path, complete the built token list and put
 %   it back into action. 

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx	2020-05-18 20:40:47 UTC (rev 55205)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-01-12}
+% \date{Released 2020-05-18}
 %
 % \maketitle
 %
@@ -177,17 +177,17 @@
     \@@_color_aux:Vn \l_@@_color_tmp_tl {#1}
   }
 \cs_new_protected:Npn \@@_color_aux:nn #1#2
-  { \@@_color:nw {#2} #1 \q_stop }
+  { \@@_color:nw {#2} #1 \s_@@_stop }
 \cs_generate_variant:Nn \@@_color_aux:nn { V }
-\cs_new_protected:Npn \@@_color:nw #1#2 ~ #3 \q_stop
-  { \use:c { @@_color_ #2 :nw } {#1} #3 \q_stop }
-\cs_new_protected:Npn \@@_color_cmyk:nw #1#2 ~ #3 ~ #4 ~ #5 \q_stop
+\cs_new_protected:Npn \@@_color:nw #1#2 ~ #3 \s_@@_stop
+  { \use:c { @@_color_ #2 :nw } {#1} #3 \s_@@_stop }
+\cs_new_protected:Npn \@@_color_cmyk:nw #1#2 ~ #3 ~ #4 ~ #5 \s_@@_stop
   { \use:c { @@_backend_color_ #1 _cmyk:nnnn } {#2} {#3} {#4} {#5} }
-\cs_new_protected:Npn \@@_color_gray:nw #1#2 \q_stop
+\cs_new_protected:Npn \@@_color_gray:nw #1#2 \s_@@_stop
   { \use:c { @@_backend_color_ #1 _gray:n } {#2} }
-\cs_new_protected:Npn \@@_color_rgb:nw #1#2 ~ #3 ~ #4 \q_stop
+\cs_new_protected:Npn \@@_color_rgb:nw #1#2 ~ #3 ~ #4 \s_@@_stop
   { \use:c { @@_backend_color_ #1 _rgb:nnn } {#2} {#3} {#4} }
-\cs_new_protected:Npn \@@_color_spot:nw #1#2 ~ #3 \q_stop
+\cs_new_protected:Npn \@@_color_spot:nw #1#2 ~ #3 \s_@@_stop
   { \use:c { @@_backend_color_ #1 _spot:nn } {#2} {#3} }
 %    \end{macrocode}
 % \end{macro}

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx	2020-05-18 20:40:47 UTC (rev 55205)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-01-12}
+% \date{Released 2020-05-18}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx	2020-05-18 20:40:47 UTC (rev 55205)
@@ -110,7 +110,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-01-12}
+% \date{Released 2020-05-18}
 %
 % \maketitle
 %
@@ -1146,7 +1146,7 @@
 %
 %    \begin{macrocode}
 %<*package>
-\ProvidesExplPackage{l3draw}{2020-01-12}{}
+\ProvidesExplPackage{l3draw}{2020-05-18}{}
   {L3 Experimental core drawing support}
 %</package>
 %    \end{macrocode}
@@ -1155,6 +1155,31 @@
 \RequirePackage { l3color }
 %    \end{macrocode}
 %
+% \subsection{Internal auxiliaries}
+%
+% \begin{variable}{\s_@@_mark,\s_@@_stop}
+%   Internal scan marks.
+%    \begin{macrocode}
+\scan_new:N \s_@@_mark
+\scan_new:N \s_@@_stop
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\q_@@_recursion_tail,\q_@@_recursion_stop}
+%   Internal recursion quarks.
+%    \begin{macrocode}
+\quark_new:N \q_@@_recursion_tail
+\quark_new:N \q_@@_recursion_stop
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}[EXP]{\@@_if_recursion_tail_stop_do:Nn}
+%   Functions to query recursion quarks.
+%    \begin{macrocode}
+\__kernel_quark_new_test:N \@@_if_recursion_tail_stop_do:Nn
+%    \end{macrocode}
+% \end{macro}
+%
 % Everything else is in the sub-files!
 %
 %    \begin{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx	2020-05-18 20:40:47 UTC (rev 55205)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-01-12}
+% \date{Released 2020-05-18}
 %
 % \maketitle
 %
@@ -241,7 +241,7 @@
 %
 %    \begin{macrocode}
 %<*package>
-\ProvidesExplPackage{l3graphics}{2020-01-12}{}
+\ProvidesExplPackage{l3graphics}{2020-05-18}{}
   {L3 Experimental graphics inclusion support}
 %</package>
 %    \end{macrocode}
@@ -254,6 +254,13 @@
 %    \end{macrocode}
 % \end{variable}
 %
+% \begin{variable}{\s_@@_stop}
+%   Internal scan marks.
+%    \begin{macrocode}
+\scan_new:N \s_@@_stop
+%    \end{macrocode}
+% \end{variable}
+%
 % \subsection{Image feature support}
 %
 % \begin{macro}
@@ -408,7 +415,7 @@
         \ior_str_map_inline:Nn \exp_not:N \l_@@_tmp_ior
           {
             \exp_not:N \@@_read_bb_auxiii:w
-              ##1 ~ \c_colon_str \exp_not:N \q_stop
+              ##1 ~ \c_colon_str \s_@@_stop
           }
       }
     \exp_not:n
@@ -425,12 +432,12 @@
 \use:x
   {
     \cs_new_protected:Npn \exp_not:N \@@_read_bb_auxiii:w
-      ##1 \c_colon_str ##2 \exp_not:N \q_stop
+      ##1 \c_colon_str ##2 \s_@@_stop
       {
         \exp_not:N \str_if_eq:nnT
           { \c_percent_str \c_percent_str BoundingBox }
           {##1}
-          { \exp_not:N \@@_read_bb_auxiv:w ##2 ( ) \exp_not:N \q_stop }
+          { \exp_not:N \@@_read_bb_auxiv:w ##2 ( ) \s_@@_stop }
       }
   }
 %    \end{macrocode}
@@ -441,7 +448,7 @@
 %   whitespace. \TeX{} will then tidy up for us, with just a leading space to
 %   worry about: that is taken out by the |\use:n| here.
 %    \begin{macrocode}
-\cs_new_protected:Npn \@@_read_bb_auxiv:w #1 ( #2 ) #3 \q_stop
+\cs_new_protected:Npn \@@_read_bb_auxiv:w #1 ( #2 ) #3 \s_@@_stop
   {
     \str_if_eq:nnF {#2} { atend }
       {
@@ -451,7 +458,7 @@
             \char_set_catcode_space:n { 32 }
           }
           { \use:n #1 }
-        \exp_after:wN \@@_read_bb_auxv:w \l_@@_tmp_tl \q_stop
+        \exp_after:wN \@@_read_bb_auxv:w \l_@@_tmp_tl \s_@@_stop
       }
   }
 %    \end{macrocode}
@@ -458,7 +465,7 @@
 %   A trailing space was deliberately added earlier so we know that the final
 %   data point is terminated by a space.
 %    \begin{macrocode}
-\cs_new_protected:Npn \@@_read_bb_auxv:w #1~#2~#3~#4~#5 \q_stop
+\cs_new_protected:Npn \@@_read_bb_auxv:w #1~#2~#3~#4~#5 \s_@@_stop
   {
     \dim_set:Nn \l_graphics_llx_dim { #1 bp }
     \dim_set:Nn \l_graphics_lly_dim { #2 bp }

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.dtx	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.dtx	2020-05-18 20:40:47 UTC (rev 55205)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-01-12}
+% \date{Released 2020-05-18}
 %
 % \maketitle
 %
@@ -71,7 +71,13 @@
 %   The object may be referenced from this point on, and written later
 %   using \cs{pdf_object_write:nn}.
 % \end{function}
-%
+% \begin{function}[EXP, pTF, added=2020-05-15]{\pdf_object_if_exist:n}
+%   \begin{syntax}
+%    \cs{pdf_object_if_exist_p:n} \Arg{object}
+%    \cs{pdf_object_if_exist:nTF} \Arg{object}
+%   \end{syntax}
+%   Tests whether an object with name \Arg{object} has been defined.
+% \end{function}
 % \begin{function}[added = 2019-06-02]
 %   {\pdf_object_write:nn, \pdf_object_write:nx}
 %   \begin{syntax}
@@ -185,11 +191,18 @@
 %
 %    \begin{macrocode}
 %<*package>
-\ProvidesExplPackage{l3pdf}{2020-01-12}{}
+\ProvidesExplPackage{l3pdf}{2020-05-18}{}
   {L3 Experimental core PDF support}
 %</package>
 %    \end{macrocode}
 %
+% \begin{variable}{\s_@@_stop}
+%   Internal scan marks.
+%    \begin{macrocode}
+\scan_new:N \s_@@_stop
+%    \end{macrocode}
+% \end{variable}
+%
 % \begin{variable}{\g_@@_init_bool}
 %   A flag so we have some chance of avoiding setting things we are not
 %   allowed to.
@@ -224,6 +237,7 @@
 % \subsection{Objects}
 %
 % \begin{macro}{\pdf_object_new:nn, \pdf_object_write:nn, \pdf_object_write:nx}
+% \begin{macro}[pTF]{\pdf_object_if_exist:n}
 % \begin{macro}{\pdf_object_ref:n}
 % \begin{macro}{\pdf_object_now:nn, \pdf_object_now:nx}
 % \begin{macro}{\pdf_object_last:}
@@ -231,6 +245,12 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \pdf_object_new:nn #1#2
   { \@@_backend_object_new:nn {#1} {#2} }
+\prg_new_conditional:Npnn \pdf_object_if_exist:n #1 { p , T , F , TF }
+  {
+    \int_if_exist:cTF { c__pdf_backend_object_ \tl_to_str:n {#1} _int }
+     { \prg_return_true: }
+     { \prg_return_false:}
+  }
 \cs_new_protected:Npn \pdf_object_write:nn #1#2
   { \@@_backend_object_write:nn {#1} {#2} }
 \cs_generate_variant:Nn \pdf_object_write:nn { nx }
@@ -244,6 +264,7 @@
 % \end{macro}
 % \end{macro}
 % \end{macro}
+% \end{macro}
 %
 % \subsection{Version}
 %
@@ -258,8 +279,8 @@
 %   To compare version, we need to split the given value then deal with both
 %   major and minor version
 \prg_new_conditional:Npnn \pdf_version_compare:Nn #1#2 { p , T , F , TF }
-  { \use:c { @@_version_compare_ #1 :w } #2 . . \q_stop }
-\cs_new:cpn { @@_version_compare_=:w } #1 . #2 . #3 \q_stop
+  { \use:c { @@_version_compare_ #1 :w } #2 . . \s_@@_stop }
+\cs_new:cpn { @@_version_compare_=:w } #1 . #2 . #3 \s_@@_stop
  {
    \bool_lazy_and:nnTF
     { \int_compare_p:nNn \@@_backend_version_major: = {#1} }
@@ -267,7 +288,7 @@
     { \prg_return_true: }
     { \prg_return_false: }
  }
-\cs_new:cpn { @@_version_compare_<:w } #1 . #2 . #3 \q_stop
+\cs_new:cpn { @@_version_compare_<:w } #1 . #2 . #3 \s_@@_stop
  {
    \bool_lazy_or:nnTF
     { \int_compare_p:nNn \@@_backend_version_major: < {#1} }
@@ -279,7 +300,7 @@
     { \prg_return_true: }
     { \prg_return_false: }
  }
-\cs_new:cpn { @@_version_compare_>:w } #1 . #2 . #3 \q_stop
+\cs_new:cpn { @@_version_compare_>:w } #1 . #2 . #3 \s_@@_stop
  {
    \bool_lazy_or:nnTF
     { \int_compare_p:nNn \@@_backend_version_major: > {#1} }
@@ -300,13 +321,13 @@
 %   Split the version and set.
 %    \begin{macrocode}
 \cs_new_protected:Npn \pdf_version_gset:n #1
-  { \@@_version_gset:w  #1 . . \q_stop }
+  { \@@_version_gset:w  #1 . . \s_@@_stop }
 \cs_new_protected:Npn \pdf_version_min_gset:n #1
   {
     \pdf_version_compare:NnT < {#1}
-      { \@@_version_gset:w  #1 . . \q_stop }
+      { \@@_version_gset:w  #1 . . \s_@@_stop }
   }
-\cs_new_protected:Npn \@@_version_gset:w  #1 . #2 . #3\q_stop
+\cs_new_protected:Npn \@@_version_gset:w  #1 . #2 . #3\s_@@_stop
   {
     \bool_if:NF \g_@@_init_bool
       {

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx	2020-05-18 20:40:47 UTC (rev 55205)
@@ -48,7 +48,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-01-12}
+% \date{Released 2020-05-18}
 %
 % \maketitle
 %
@@ -167,7 +167,7 @@
 %
 %    \begin{macrocode}
 %<*package>
-\ProvidesExplPackage{l3str-format}{2020-01-12}{}
+\ProvidesExplPackage{l3str-format}{2020-05-18}{}
   {L3 Experimental string formatting}
 %</package>
 %    \end{macrocode}
@@ -191,7 +191,7 @@
 %
 % \begin{macro}[EXP]{\@@_format_if_digit:NTF}
 %   Here we expect |#1| to be a character with category other, or
-%   \cs{s_stop}.
+%   \cs{s_@@_stop}.
 %    \begin{macrocode}
 \prg_new_conditional:Npnn \@@_format_if_digit:N #1 { TF }
   {
@@ -203,9 +203,9 @@
 %
 % \begin{macro}[EXP]
 %   {\@@_format_put:nw, \@@_format_put:ow, \@@_format_put:fw}
-%   Put |#1| after an \cs{s_stop} delimiter.
+%   Put |#1| after an \cs{s_@@_stop} delimiter.
 %    \begin{macrocode}
-\cs_new:Npn \@@_format_put:nw #1 #2 \s_stop { #2 \s_stop #1 }
+\cs_new:Npn \@@_format_put:nw #1 #2 \s_@@_stop { #2 \s_@@_stop #1 }
 \cs_generate_variant:Nn \@@_format_put:nw { o , f }
 %    \end{macrocode}
 % \end{macro}
@@ -256,7 +256,7 @@
 \cs_new:Npn \@@_format_parse:n #1
   {
     \exp_last_unbraced:Nf \@@_format_parse_auxi:NN
-      { \__kernel_str_to_other:n {#1} } \s_stop \s_stop {#1}
+      { \__kernel_str_to_other:n {#1} } \s_@@_stop \s_@@_stop {#1}
   }
 \cs_new:Npx \@@_format_parse_auxi:NN #1#2
   {
@@ -301,11 +301,11 @@
   }
 \cs_new:Npn \@@_format_parse_auxvii:nN #1#2
   {
-    \token_if_eq_meaning:NNTF \s_stop #2
+    \token_if_eq_meaning:NNTF \s_@@_stop #2
       { \@@_format_parse_end:nwn { #1 ? } #2 }
       { \@@_format_parse_end:nwn { #1 #2 } }
   }
-\cs_new:Npn \@@_format_parse_end:nwn #1 #2 \s_stop \s_stop #3
+\cs_new:Npn \@@_format_parse_end:nwn #1 #2 \s_@@_stop \s_@@_stop #3
   {
     \tl_if_empty:nF {#2}
       { \__kernel_msg_expandable_error:nnn { str } { invalid-format } {#3} }
@@ -455,9 +455,9 @@
 %   \end{quote}
 %   First check that the \meta{alignment} is not |=|, and set the
 %   default alignment |?| to |<|.  Place the modified information after
-%   a trailing \cs{s_stop} for later retrieval.  Then check that there
+%   a trailing \cs{s_@@_stop} for later retrieval.  Then check that there
 %   was no \meta{sign}.  The width will be useful later, store it after
-%   \cs{s_stop}.  Afterwards, store the precision, and the function
+%   \cs{s_@@_stop}.  Afterwards, store the precision, and the function
 %   \cs{@@_range:nnn} that will be used to extract the first
 %   |#5| characters of the string.
 %   There is a need to use the internal function, as otherwise
@@ -495,7 +495,7 @@
           }
       }
     \@@_format_tl_s:NNnnNNn
-    \s_stop
+    \s_@@_stop
   }
 %    \end{macrocode}
 % \end{macro}
@@ -502,7 +502,7 @@
 %
 % \begin{macro}[EXP]{\@@_format_tl_s:NNnnNNn}
 %   \begin{quote}
-%     \cs{@@_format_tl_s:NNnnNNn} \cs{s_stop} \meta{function}
+%     \cs{@@_format_tl_s:NNnnNNn} \cs{s_@@_stop} \meta{function}
 %     \Arg{arguments} \Arg{width} \meta{fill} \meta{alignment}
 %     \Arg{token list}
 %   \end{quote}
@@ -617,12 +617,12 @@
 %   \end{quote}
 %   First set the
 %   default alignment |?| to |>|.  Place the modified information after
-%   a trailing \cs{s_stop} for later retrieval.  Then check the
+%   a trailing \cs{s_@@_stop} for later retrieval.  Then check the
 %   \meta{sign}: if the integer is negative, always put~|-|.  Otherwise,
 %   if the format's \meta{sign} is |~|, put a space (with category
 %   \enquote{other}); if it is~|+| put |+|; if it is |-| (default), put
 %   nothing, represented as a brace group.  The width |#4| will be
-%   useful later, store it after \cs{s_stop}.  Afterwards, check that
+%   useful later, store it after \cs{s_@@_stop}.  Afterwards, check that
 %   the \meta{precision} was absent.  Finally, dispatch depending on the
 %   \meta{style}.
 %    \begin{macrocode}
@@ -660,7 +660,7 @@
           { str } { invalid-style-format } {#6} { int }
         \@@_format_int:NwnnNNn \use:n
       }
-    \s_stop {#7}
+    \s_@@_stop {#7}
   }
 %    \end{macrocode}
 % \end{macro}
@@ -667,7 +667,7 @@
 %
 % \begin{macro}[EXP]{\@@_format_int:NwnnNNn}
 %   \begin{quote}
-%     \cs{@@_format_int:NwnnNNn} \meta{function} \cs{s_stop}
+%     \cs{@@_format_int:NwnnNNn} \meta{function} \cs{s_@@_stop}
 %     \Arg{width} \Arg{sign} \meta{fill} \meta{alignment} \Arg{integer}
 %   \end{quote}
 %   Use the |format_align| function corresponding to the
@@ -680,7 +680,7 @@
 %     \item the \meta{fill} character.
 %   \end{itemize}
 %    \begin{macrocode}
-\cs_new:Npn \@@_format_int:NwnnNNn #1#2 \s_stop #3#4#5#6#7
+\cs_new:Npn \@@_format_int:NwnnNNn #1#2 \s_@@_stop #3#4#5#6#7
   {
     \exp_args:Nc \exp_args:Nf
       { @@_format_align_#6:nnnN }
@@ -728,13 +728,13 @@
 %     \Arg{floating point}
 %   \end{quote}
 %   First set the default alignment |?| to |>|.  Place the modified
-%   information after a trailing \cs{s_stop} for later retrieval.  Then
+%   information after a trailing \cs{s_@@_stop} for later retrieval.  Then
 %   check the \meta{format sign} and the \meta{fp sign}: if the floating
 %   point is negative, always put~|-|.  Otherwise (including
 %   \texttt{nan}), if the format's \meta{sign} is |~|, put a space (with
 %   category \enquote{other}); if it is~|+| put |+|; if it is |-|
 %   (default), put nothing, represented as a brace group.  The width
-%   |#4| will be useful later, store it after \cs{s_stop}.  Afterwards,
+%   |#4| will be useful later, store it after \cs{s_@@_stop}.  Afterwards,
 %   check the \meta{precision}: if it was not given, replace it by $6$
 %   (default precision) unless no \meta{style} was given: in that case
 %   we want to use whatever precision is needed to fully describe the
@@ -776,7 +776,7 @@
           { str } { invalid-style-format } {#6} { fp }
         \@@_format_fp:wnnnNNn \@@_format_fp_g:nn
       }
-    \s_stop {#7}
+    \s_@@_stop {#7}
   }
 %    \end{macrocode}
 % \end{macro}
@@ -783,13 +783,13 @@
 %
 % \begin{macro}[EXP]{\@@_format_fp:wnnnNNn}
 %   \begin{quote}
-%     \cs{@@_format_fp:wnnnNNn} \meta{formatting function} \cs{s_stop}
+%     \cs{@@_format_fp:wnnnNNn} \meta{formatting function} \cs{s_@@_stop}
 %     \Arg{precision} \Arg{width} \Arg{sign} \meta{fill}
 %     \meta{alignment} \Arg{floating point}
 %   \end{quote}
 %    \begin{macrocode}
 \cs_new:Npn \@@_format_fp:wnnnNNn
-    #1 \s_stop #2 #3 #4 #5#6 #7
+    #1 \s_@@_stop #2 #3 #4 #5#6 #7
   {
     \exp_args:Nc \exp_args:Nf
       { @@_format_align_#6:nnnN }
@@ -850,7 +850,7 @@
           { \prg_replicate:nn { #4 - \c__fp_prec_int + 1 } { 0 } }
         \@@_format_put:nw { #1 . #2 }
       }
-    \use_none:n \s_stop
+    \use_none:n \s_@@_stop
   }
 %    \end{macrocode}
 % \end{macro}
@@ -947,11 +947,11 @@
 \cs_new:Npn \@@_format_fp_trim:w #1 e
   {
     \@@_format_fp_trim_loop:w #1
-      ; \@@_format_fp_trim_loop:w 0; \@@_format_fp_trim_dot:w .; \s_stop e
+      ; \@@_format_fp_trim_loop:w 0; \@@_format_fp_trim_dot:w .; \s_@@_stop e
   }
 \cs_new:Npn \@@_format_fp_trim_loop:w #1 0; #2 { #2 #1 ; #2 }
 \cs_new:Npn \@@_format_fp_trim_dot:w #1 .; { \@@_format_fp_trim_end:w #1 ; }
-\cs_new:Npn \@@_format_fp_trim_end:w #1 ; #2 \s_stop { #1 }
+\cs_new:Npn \@@_format_fp_trim_end:w #1 ; #2 \s_@@_stop { #1 }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx	2020-05-18 20:40:47 UTC (rev 55205)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-01-12}
+% \date{Released 2020-05-18}
 %
 % \maketitle
 %
@@ -67,7 +67,7 @@
 %   \begin{syntax}
 %     \cs{sys_shell_mkdir:n} \Arg{directory}
 %   \end{syntax}
-%   Creates the \meta{directory}, which should should  be specified using |/| as
+%   Creates the \meta{directory}, which should be specified using |/| as
 %   a path separator.  If unrestricted shell escape is not enabled, no action is
 %   attempted.
 % \end{function}
@@ -95,7 +95,7 @@
 %   \begin{syntax}
 %     \cs{sys_shell_rmdir:n} \Arg{directory}
 %   \end{syntax}
-%   Removes the \meta{directory}, which should should  be specified using |/| as
+%   Removes the \meta{directory}, which should be specified using |/| as
 %   a path separator.  If unrestricted shell escape is not enabled, no action is
 %   attempted.
 % \end{function}
@@ -136,11 +136,32 @@
 %
 %    \begin{macrocode}
 %<*package>
-\ProvidesExplPackage{l3sys-shell}{2020-01-12}{}
+\ProvidesExplPackage{l3sys-shell}{2020-05-18}{}
   {L3 Experimental system shell functions}
 %</package>
 %    \end{macrocode}
 %
+% \begin{variable}{\s_@@_stop}
+%   Internal scan marks.
+%    \begin{macrocode}
+\scan_new:N \s_@@_stop
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\q_@@_nil}
+%   Internal quarks.
+%    \begin{macrocode}
+\quark_new:N \q_@@_nil
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}[pTF]{\@@_quark_if_nil:n}
+%   Branching quark conditional.
+%    \begin{macrocode}
+\__kernel_quark_new_conditional:Nn \@@_quark_if_nil:N { F }
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}[EXP]{\@@_path_to_win:n}
 % \begin{macro}[EXP]{\@@_path_to_win:w}
 % \begin{macro}[EXP]{\@@_path_to_win:N}
@@ -148,20 +169,20 @@
 %    \begin{macrocode}
 \cs_new:Npn \@@_path_to_win:n #1
   {
-    \exp_after:wN \@@_path_to_win:w \tl_to_str:n {#1} ~ \q_stop
+    \exp_after:wN \@@_path_to_win:w \tl_to_str:n {#1} ~ \s_@@_stop
   }
-\cs_new:Npn \@@_path_to_win:w #1 ~ #2 \q_stop
+\cs_new:Npn \@@_path_to_win:w #1 ~ #2 \s_@@_stop
   {
-    \@@_path_to_win:N #1 \q_nil
+    \@@_path_to_win:N #1 \q_@@_nil
     \tl_if_empty:nF {#2}
       {
         \c_space_tl
-        \@@_path_to_win:w #2 \q_stop
+        \@@_path_to_win:w #2 \s_@@_stop
       }
   }
 \cs_new:Npn \@@_path_to_win:N #1
   {
-    \quark_if_nil:NF #1
+    \@@_quark_if_nil:NF #1
       {
         \token_if_eq_meaning:NNTF #1 /
           { \c_backslash_str }

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx	2020-05-18 20:40:47 UTC (rev 55205)
@@ -56,7 +56,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-01-12}
+% \date{Released 2020-05-18}
 %
 % \maketitle
 %
@@ -675,7 +675,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2020-01-12}{}
+\ProvidesExplPackage{xcoffins}{2020-05-18}{}
   {L3 Experimental design level coffins}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx	2020-05-18 20:40:47 UTC (rev 55205)
@@ -61,7 +61,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-01-12}
+% \date{Released 2020-05-18}
 %
 % \maketitle
 %
@@ -687,7 +687,7 @@
 %
 %    \begin{macrocode}
 %<*package>
-\ProvidesExplPackage{l3galley}{2020-01-12}{}
+\ProvidesExplPackage{l3galley}{2020-05-18}{}
   {L3 Experimental galley code}
 %</package>
 %    \end{macrocode}
@@ -1751,7 +1751,7 @@
 \cs_new_protected:Npn \galley_cutout_right:nn
   { \@@_cutout:nnn { right } }
 %    \end{macrocode}
-%   The cutout information needs to be saved in in the appropriate sequence.
+%   The cutout information needs to be saved in the appropriate sequence.
 %   First, the input is converted to a (temporary) sequence. If there is
 %   no existing cutout defined, this is simply stored. On the other hand,
 %   if there is a cutout already active, the new one needs to be added to

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx	2020-05-18 20:40:47 UTC (rev 55205)
@@ -47,7 +47,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-01-12}
+% \date{Released 2020-05-18}
 %
 % \maketitle
 %
@@ -121,7 +121,7 @@
 % \subsection{Layer two: internal dimensions}
 %
 % \begin{TemplateInterfaceDescription}{measure}
-%   \TemplateArgument{}{} ^^A A hack
+%   \TemplateArgument{}{} ^^A Some hack
 %   \TemplateSemantics
 %   Sets the width available to typeset material within the galley.
 %   The \meta{left margin} and \meta{right margin} values are used in the
@@ -192,7 +192,7 @@
 % \subsection{Layer three: paragraph shape}
 %
 % \begin{TemplateInterfaceDescription}{parshape}
-%   \TemplateArgument{}{}^^A A hack
+%   \TemplateArgument{}{}^^A Some hack
 %   \TemplateSemantics
 %   Template of this type define any shaping of the paragraph within the
 %   current measure of the galley. Thus they are used to generate
@@ -734,7 +734,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2020-01-12}{}
+\ProvidesExplPackage{xgalley}{2020-05-18}{}
   {L3 Experimental galley}
 \RequirePackage{xparse,xtemplate,l3galley}
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty	2020-05-18 20:40:47 UTC (rev 55205)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3benchmark.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3benchmark}{2020-01-12}{}
+\ProvidesExplPackage{l3benchmark}{2020-05-18}{}
   {L3 Experimental benchmarking}
 \sys_if_engine_luatex:TF
   {

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty	2020-05-18 20:40:47 UTC (rev 55205)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3cctab.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3cctab}{2020-01-12}{}
+\ProvidesExplPackage{l3cctab}{2020-05-18}{}
   {L3 Experimental category code tables}
 \int_new:N  \g__cctab_allocate_int
 \int_gset:Nn \g__cctab_allocate_int { -1 }

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty	2020-05-18 20:40:47 UTC (rev 55205)
@@ -20,9 +20,10 @@
 %% 
 %% File: l3color.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3color}{2020-01-12}{}
+\ProvidesExplPackage{l3color}{2020-05-18}{}
   {L3 Experimental color support}
 \tl_new:N \l__color_internal_tl
+\scan_new:N \s__color_mark
 \prg_new_conditional:Npnn \__color_if_defined:n #1 { T, F, TF }
   {
     \tl_if_exist:cTF { l__color_named_ #1 _tl }
@@ -35,10 +36,10 @@
       \__color_extract:NNw
       \exp_after:wN \exp_after:wN \exp_after:wN #2
       \exp_after:wN \exp_after:wN \exp_after:wN #3
-        \cs:w l__color_named_ #1 _tl \cs_end: \q_stop
+        \cs:w l__color_named_ #1 _tl \cs_end: \s__color_stop
   }
 \cs_generate_variant:Nn \__color_extract:nNN { V }
-\cs_new_protected:Npn \__color_extract:NNw #1#2 #3 ~ #4 \q_stop
+\cs_new_protected:Npn \__color_extract:NNw #1#2 #3 ~ #4 \s__color_stop
   {
     \tl_set:Nn #1 {#3}
     \tl_set:Nn #2 {#4}
@@ -51,16 +52,16 @@
     \str_if_eq:nnT {#1} { spot } % TO DO!!!
       { }
     \tl_set:Nx #4
-      { \use:c { __color_convert_ #1 _ #2 :w } #3 ~ 0 ~ 0 ~ 0 \q_stop }
+      { \use:c { __color_convert_ #1 _ #2 :w } #3 ~ 0 ~ 0 ~ 0 \s__color_stop }
   }
 \cs_generate_variant:Nn \__color_convert:nnnN { nnV }
-\cs_new:Npn \__color_convert_gray_rgb:w #1 ~ #2 \q_stop
+\cs_new:Npn \__color_convert_gray_rgb:w #1 ~ #2 \s__color_stop
   { #1 ~ #1 ~ #1 }
-\cs_new:Npn \__color_convert_gray_cmyk:w #1 ~ #2 \q_stop
+\cs_new:Npn \__color_convert_gray_cmyk:w #1 ~ #2 \s__color_stop
   { 0 ~ 0 ~ 0 ~ \fp_eval:n { 1 - #1 } }
-\cs_new:Npn \__color_convert_rgb_gray:w #1 ~ #2 ~ #3 ~ #4 \q_stop
+\cs_new:Npn \__color_convert_rgb_gray:w #1 ~ #2 ~ #3 ~ #4 \s__color_stop
   { \fp_eval:n { 0.3 * #1 + 0.59 * #2 + 0.11 * #3 } }
-\cs_new:Npn \__color_convert_rgb_cmyk:w #1 ~ #2 ~ #3 ~ #4 \q_stop
+\cs_new:Npn \__color_convert_rgb_cmyk:w #1 ~ #2 ~ #3 ~ #4 \s__color_stop
   {
     \exp_args:Nf \__color_convert_rgb_cmyk:nnnn
       { \fp_eval:n { min ( 1 - #1 , 1 - #2 , 1 - #3 ) } } {#1} {#2} {#3}
@@ -72,9 +73,9 @@
     \fp_eval:n { min ( 1 , max ( 0 , 1 - #4 - #1 ) ) } \c_space_tl
     #1
   }
-\cs_new:Npn \__color_convert_cmyk_gray:w #1 ~ #2 ~ #3 ~ #4 ~ #5 \q_stop
+\cs_new:Npn \__color_convert_cmyk_gray:w #1 ~ #2 ~ #3 ~ #4 ~ #5 \s__color_stop
   { \fp_eval:n { 1 - min ( 1 , 0.3 * #1 + 0.59 * #2 + 0.11 * #3 + #4 ) } }
-\cs_new:Npn \__color_convert_cmyk_rgb:w #1 ~ #2 ~ #3 ~ #4 ~ #5 \q_stop
+\cs_new:Npn \__color_convert_cmyk_rgb:w #1 ~ #2 ~ #3 ~ #4 ~ #5 \s__color_stop
   {
     \fp_eval:n { 1 - min ( 1 , #1 + #4 ) } \c_space_tl
     \fp_eval:n { 1 - min ( 1 , #2 + #4 ) } \c_space_tl
@@ -94,10 +95,10 @@
   {
     \tl_if_exist:cTF { l__color_named_ #1 _tl }
       { \tl_set_eq:Nc #2 { l__color_named_ #1 _tl } }
-      { \__color_parse:Nw #2#1 ! \q_stop }
+      { \__color_parse:Nw #2#1 ! \s__color_stop }
     \__color_check_model:N #2
   }
-\cs_new_protected:Npn \__color_parse:Nw #1#2 ! #3 \q_stop
+\cs_new_protected:Npn \__color_parse:Nw #1#2 ! #3 \s__color_stop
   {
     \__color_if_defined:nTF {#2}
       {
@@ -114,13 +115,13 @@
   {
     \group_begin:
       \__color_extract:nNN {#2} \l__color_model_tl \l__color_value_tl
-      \__color_parse_loop:w #3 ! ! ! ! \q_stop
+      \__color_parse_loop:w #3 ! ! ! ! \s__color_stop
       \tl_set:Nx \l__color_internal_tl
         { \l__color_model_tl \c_space_tl \l__color_value_tl }
     \exp_args:NNNV \group_end:
     \tl_set:Nn #1 \l__color_internal_tl
   }
-\cs_new_protected:Npn \__color_parse_loop:w #1 ! #2 ! #3 ! #4 ! #5 \q_stop
+\cs_new_protected:Npn \__color_parse_loop:w #1 ! #2 ! #3 ! #4 ! #5 \s__color_stop
   {
     \bool_lazy_or:nnF
       { \tl_if_blank_p:n {#1} }
@@ -142,7 +143,7 @@
           }
       }
     \tl_if_blank:nF {#3}
-      { \__color_parse_loop:w #3 ! #4 ! #5 \q_stop }
+      { \__color_parse_loop:w #3 ! #4 ! #5 \s__color_stop }
     \__color_parse_end:
   }
 \cs_new_protected:Npn \__color_parse_loop:nn #1#2
@@ -195,12 +196,12 @@
 \cs_new:Npn \__color_parse_mix:nNnn #1#2#3#4
   {
     \use:c { __color_parse_mix_ #2 :nw } {#1}
-      #3 \q_mark #4 \q_stop
+      #3 \s__color_mark #4 \s__color_stop
   }
-\cs_new:Npn \__color_parse_mix_gray:nw #1#2 \q_mark #3 \q_stop
+\cs_new:Npn \__color_parse_mix_gray:nw #1#2 \s__color_mark #3 \s__color_stop
   { \fp_eval:n { #2 * #1 + #3 * ( 1 - #1 ) } }
 \cs_new:Npn \__color_parse_mix_rgb:nw
-  #1#2 ~ #3 ~ #4 \q_mark #5 ~ #6 ~ #7 \q_stop
+  #1#2 ~ #3 ~ #4 \s__color_mark #5 ~ #6 ~ #7 \s__color_stop
   {
     \fp_eval:n { #2 * #1 + #5 * ( 1 - #1 ) } \c_space_tl
     \fp_eval:n { #3 * #1 + #6 * ( 1 - #1 ) } \c_space_tl
@@ -207,7 +208,7 @@
     \fp_eval:n { #4 * #1 + #7 * ( 1 - #1 ) }
   }
 \cs_new:Npn \__color_parse_mix_cmyk:nw
-  #1#2 ~ #3 ~ #4 ~ #5 \q_mark #6 ~ #7 ~ #8 ~ #9 \q_stop
+  #1#2 ~ #3 ~ #4 ~ #5 \s__color_mark #6 ~ #7 ~ #8 ~ #9 \s__color_stop
   {
     \fp_eval:n { #2 * #1 + #6 * ( 1 - #1 ) } \c_space_tl
     \fp_eval:n { #3 * #1 + #7 * ( 1 - #1 ) } \c_space_tl
@@ -214,14 +215,14 @@
     \fp_eval:n { #4 * #1 + #8 * ( 1 - #1 ) } \c_space_tl
     \fp_eval:n { #5 * #1 + #9 * ( 1 - #1 ) }
   }
-\cs_new:Npn \__color_parse_model_gray:w #1 , #2 \q_stop { \__color_parse_number:n {#1} }
-\cs_new:Npn \__color_parse_model_rgb:w #1 , #2 , #3 , #4 \q_stop
+\cs_new:Npn \__color_parse_model_gray:w #1 , #2 \s__color_stop { \__color_parse_number:n {#1} }
+\cs_new:Npn \__color_parse_model_rgb:w #1 , #2 , #3 , #4 \s__color_stop
   {
     \__color_parse_number:n {#1} ~
     \__color_parse_number:n {#2} ~
     \__color_parse_number:n {#3}
   }
-\cs_new:Npn \__color_parse_model_cmyk:w #1 , #2 , #3 , #4 , #5 \q_stop
+\cs_new:Npn \__color_parse_model_cmyk:w #1 , #2 , #3 , #4 , #5 \s__color_stop
   {
     \__color_parse_number:n {#1} ~
     \__color_parse_number:n {#2} ~
@@ -228,13 +229,13 @@
     \__color_parse_number:n {#3} ~
     \__color_parse_number:n {#4}
   }
-\cs_new:Npn \__color_parse_model_spot:w #1 , #2 \q_stop
-  { \__color_parse_spot_aux:w #1 ! 100 ! \q_stop }
-\cs_new:Npn \__color_parse_spot_aux:w #1 ! #2 ! #3 \q_stop
+\cs_new:Npn \__color_parse_model_spot:w #1 , #2 \s__color_stop
+  { \__color_parse_spot_aux:w #1 ! 100 ! \s__color_stop }
+\cs_new:Npn \__color_parse_spot_aux:w #1 ! #2 ! #3 \s__color_stop
   { #1 ~ \fp_eval:n { #2 / 100 } }
 \cs_new:Npn \__color_parse_number:n #1
-  {  \__color_parse_number:w #1 . 0 . \q_stop }
-\cs_new:Npn \__color_parse_number:w #1 . #2 . #3 \q_stop
+  {  \__color_parse_number:w #1 . 0 . \s__color_stop }
+\cs_new:Npn \__color_parse_number:w #1 . #2 . #3 \s__color_stop
   { \tl_if_blank:nTF {#1} { 0 } {#1} . #2 }
 \tl_new:N \l_color_fixed_model_tl
 \cs_new_protected:Npn \__color_check_model:N #1
@@ -241,7 +242,7 @@
   {
     \tl_if_empty:NF \l_color_fixed_model_tl
       {
-        \exp_after:wN \__color_check_model:w #1 \q_stop
+        \exp_after:wN \__color_check_model:w #1 \s__color_stop
         \tl_if_eq:NNF \l__color_model_tl \l_color_fixed_model_tl
           {
             \__color_convert:VVN \l__color_model_tl \l_color_fixed_model_tl
@@ -251,7 +252,7 @@
           { \l_color_fixed_model_tl \c_space_tl \l__color_value_tl }
       }
   }
-\cs_new_protected:Npn \__color_check_model:w #1 ~ #2 \q_stop
+\cs_new_protected:Npn \__color_check_model:w #1 ~ #2 \s__color_stop
   {
     \tl_set:Nn \l__color_model_tl {#1}
     \tl_set:Nn \l__color_value_tl {#2}
@@ -276,7 +277,7 @@
     \cs_if_exist:cTF { __color_parse_model_ #1 :w }
       {
         \tl_set:Nx #3
-          { #1 ~ \use:c {  __color_parse_model_ #1 :w } #2 , 0 , 0 , 0 , 0 \q_stop }
+          { #1 ~ \use:c {  __color_parse_model_ #1 :w } #2 , 0 , 0 , 0 , 0 \s__color_stop }
         \__color_check_model:N #3
       }
       {
@@ -331,21 +332,21 @@
       {#1}
       {
         \__color_if_defined:nTF {#1}
-          { \exp_last_unbraced:Nv \__color_show:w { l__color_named_ #1 _tl } \q_stop }
+          { \exp_last_unbraced:Nv \__color_show:w { l__color_named_ #1 _tl } \s__color_stop }
           { }
       }
       { }
       { }
   }
-\cs_new:Npn \__color_show:w #1 ~ #2 \q_stop
+\cs_new:Npn \__color_show:w #1 ~ #2 \s__color_stop
   {
     \msg_show_item_unbraced:nn { model } {#1}
     \exp_args:Nnf \msg_show_item_unbraced:nn { value }
-      { \use:c { __color_show_ #1 :w } #2 \q_stop }
+      { \use:c { __color_show_ #1 :w } #2 \s__color_stop }
   }
-\cs_new:Npn \__color_show_gray:w #1 \q_stop { #1 }
-\cs_new:Npn \__color_show_rgb:w #1 ~ #2 ~ #3 \q_stop { #1 ,~ #2 ,~ #3 }
-\cs_new:Npn \__color_show_cmyk:w #1 ~ #2 ~ #3 ~ #4 \q_stop { #1 ,~ #2 ,~ #3 ,~ #4 }
+\cs_new:Npn \__color_show_gray:w #1 \s__color_stop { #1 }
+\cs_new:Npn \__color_show_rgb:w #1 ~ #2 ~ #3 \s__color_stop { #1 ,~ #2 ,~ #3 }
+\cs_new:Npn \__color_show_cmyk:w #1 ~ #2 ~ #3 ~ #4 \s__color_stop { #1 ,~ #2 ,~ #3 ,~ #4 }
 \__kernel_msg_new:nnnn { color } { invalid-model }
   { Invalid~color~model~'#1'. }
   {

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty	2020-05-18 20:40:47 UTC (rev 55205)
@@ -28,9 +28,14 @@
 %% 
 %% File: l3draw.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3draw}{2020-01-12}{}
+\ProvidesExplPackage{l3draw}{2020-05-18}{}
   {L3 Experimental core drawing support}
 \RequirePackage { l3color }
+\scan_new:N \s__draw_mark
+\scan_new:N \s__draw_stop
+\quark_new:N \q__draw_recursion_tail
+\quark_new:N \q__draw_recursion_stop
+\__kernel_quark_new_test:N \__draw_if_recursion_tail_stop_do:Nn
 %% File: l3draw-boxes.dtx
 \box_new:N \l__draw_tmp_box
 \cs_new_protected:Npn \draw_box_use:N #1
@@ -804,8 +809,8 @@
       {#1}
   }
 \cs_new:Npn \__draw_point_process_auxi:nn #1#2
-  { \__draw_point_process_auxii:nw {#2} #1 \q_stop }
-\cs_new:Npn \__draw_point_process_auxii:nw #1 #2 , #3 \q_stop
+  { \__draw_point_process_auxii:nw {#2} #1 \s__draw_stop }
+\cs_new:Npn \__draw_point_process_auxii:nw #1 #2 , #3 \s__draw_stop
   { #1 {#2} {#3} }
 \cs_new:Npn \__draw_point_process:nnn #1#2#3
   {
@@ -815,8 +820,8 @@
       {#1}
   }
 \cs_new:Npn \__draw_point_process_auxiii:nnn #1#2#3
-  { \__draw_point_process_auxiv:nw {#3} #1 \q_mark #2 \q_stop }
-\cs_new:Npn \__draw_point_process_auxiv:nw #1 #2 , #3 \q_mark #4 , #5 \q_stop
+  { \__draw_point_process_auxiv:nw {#3} #1 \s__draw_mark #2 \s__draw_stop }
+\cs_new:Npn \__draw_point_process_auxiv:nw #1 #2 , #3 \s__draw_mark #4 , #5 \s__draw_stop
   { #1 {#2} {#3} {#4} {#5} }
 \cs_new:Npn \__draw_point_process:nnnn #1#2#3#4
   {
@@ -827,9 +832,9 @@
       {#1}
   }
 \cs_new:Npn \__draw_point_process_auxv:nnnn #1#2#3#4
-  { \__draw_point_process_auxvi:nw {#4} #1 \q_mark #2 \q_mark #3 \q_stop }
+  { \__draw_point_process_auxvi:nw {#4} #1 \s__draw_mark #2 \s__draw_mark #3 \s__draw_stop }
 \cs_new:Npn \__draw_point_process_auxvi:nw
-  #1 #2 , #3 \q_mark #4 , #5 \q_mark #6 , #7 \q_stop
+  #1 #2 , #3 \s__draw_mark #4 , #5 \s__draw_mark #6 , #7 \s__draw_stop
   { #1 {#2} {#3} {#4} {#5} {#6} {#7} }
 \cs_new:Npn \__draw_point_process:nnnnn #1#2#3#4#5
   {
@@ -843,10 +848,10 @@
 \cs_new:Npn \__draw_point_process_auxvii:nnnnn #1#2#3#4#5
   {
     \__draw_point_process_auxviii:nw
-      {#5} #1 \q_mark #2 \q_mark #3 \q_mark #4 \q_stop
+      {#5} #1 \s__draw_mark #2 \s__draw_mark #3 \s__draw_mark #4 \s__draw_stop
   }
 \cs_new:Npn \__draw_point_process_auxviii:nw
-  #1 #2 , #3 \q_mark #4 , #5 \q_mark #6 , #7 \q_mark #8 , #9 \q_stop
+  #1 #2 , #3 \s__draw_mark #4 , #5 \s__draw_mark #6 , #7 \s__draw_mark #8 , #9 \s__draw_stop
   { #1 {#2} {#3} {#4} {#5} {#6} {#7} {#8} {#9} }
 \cs_new:Npn \__draw_point_to_dim:n #1
   { \__draw_point_to_dim_aux:f { \fp_eval:n {#1} } }
@@ -1439,8 +1444,8 @@
           \tl_build_get:NN \g__draw_softpath_main_tl \l__draw_softpath_internal_tl
           \exp_after:wN \__draw_softpath_round_loop:Nnn
             \l__draw_softpath_internal_tl
-            \q_recursion_tail ? ?
-            \q_recursion_stop
+            \q__draw_recursion_tail ? ?
+            \q__draw_recursion_stop
         \group_end:
       }
     \bool_gset_false:N \g__draw_softpath_corners_bool
@@ -1447,7 +1452,7 @@
   }
 \cs_new_protected:Npn \__draw_softpath_round_loop:Nnn #1#2#3
   {
-    \quark_if_recursion_tail_stop_do:Nn #1 { \__draw_softpath_round_end: }
+    \__draw_if_recursion_tail_stop_do:Nn #1 { \__draw_softpath_round_end: }
     \token_if_eq_meaning:NNTF #1 \__draw_softpath_roundpoint_op:nn
       { \__draw_softpath_round_action:nn {#2} {#3} }
       {
@@ -1577,11 +1582,11 @@
 \cs_new:Npn \__draw_softpath_round_calc:nnnnnn #1#2#3#4#5#6
   {
     \__draw_softpath_round_calc:nnnnw {#3} {#4} {#5} {#6}
-      #1 \q_mark #2 \q_stop
+      #1 \s__draw_mark #2 \s__draw_stop
   }
 \cs_generate_variant:Nn \__draw_softpath_round_calc:nnnnnn { fV }
 \cs_new:Npn \__draw_softpath_round_calc:nnnnw
-  #1#2#3#4 #5 , #6 \q_mark #7 , #8 \q_stop
+  #1#2#3#4 #5 , #6 \s__draw_mark #7 , #8 \s__draw_stop
   {
     {#5} {#6}
     \exp_not:N \__draw_softpath_curveto_opi:nn
@@ -1617,7 +1622,7 @@
                 \exp_not:N \exp_after:wN
                   \exp_not:N \__draw_softpath_round_close:w
                   \exp_not:N \l__draw_softpath_curve_end_tl
-                    \exp_not:N \q_stop
+                    \s__draw_stop
               }
             \use:x
               {
@@ -1628,7 +1633,7 @@
                       \exp_not:N \exp_after:wN
                         \exp_not:N \__draw_softpath_round_close:w
                         \exp_not:N \l__draw_softpath_curve_end_tl
-                          \exp_not:N \q_stop
+                          \s__draw_stop
                   }
               }
           }
@@ -1637,7 +1642,7 @@
           \exp_after:wN \use_none:n \l__draw_softpath_move_tl
       }
   }
-\cs_new:Npn \__draw_softpath_round_close:w #1 , #2 \q_stop { {#1} {#2} }
+\cs_new:Npn \__draw_softpath_round_close:w #1 , #2 \s__draw_stop { {#1} {#2} }
 \cs_new_protected:Npn \__draw_softpath_round_end:
   {
     \tl_put_right:No \l__draw_softpath_main_tl
@@ -1693,17 +1698,17 @@
     \__draw_color_aux:Vn \l__draw_color_tmp_tl {#1}
   }
 \cs_new_protected:Npn \__draw_color_aux:nn #1#2
-  { \__draw_color:nw {#2} #1 \q_stop }
+  { \__draw_color:nw {#2} #1 \s__draw_stop }
 \cs_generate_variant:Nn \__draw_color_aux:nn { V }
-\cs_new_protected:Npn \__draw_color:nw #1#2 ~ #3 \q_stop
-  { \use:c { __draw_color_ #2 :nw } {#1} #3 \q_stop }
-\cs_new_protected:Npn \__draw_color_cmyk:nw #1#2 ~ #3 ~ #4 ~ #5 \q_stop
+\cs_new_protected:Npn \__draw_color:nw #1#2 ~ #3 \s__draw_stop
+  { \use:c { __draw_color_ #2 :nw } {#1} #3 \s__draw_stop }
+\cs_new_protected:Npn \__draw_color_cmyk:nw #1#2 ~ #3 ~ #4 ~ #5 \s__draw_stop
   { \use:c { __draw_backend_color_ #1 _cmyk:nnnn } {#2} {#3} {#4} {#5} }
-\cs_new_protected:Npn \__draw_color_gray:nw #1#2 \q_stop
+\cs_new_protected:Npn \__draw_color_gray:nw #1#2 \s__draw_stop
   { \use:c { __draw_backend_color_ #1 _gray:n } {#2} }
-\cs_new_protected:Npn \__draw_color_rgb:nw #1#2 ~ #3 ~ #4 \q_stop
+\cs_new_protected:Npn \__draw_color_rgb:nw #1#2 ~ #3 ~ #4 \s__draw_stop
   { \use:c { __draw_backend_color_ #1 _rgb:nnn } {#2} {#3} {#4} }
-\cs_new_protected:Npn \__draw_color_spot:nw #1#2 ~ #3 \q_stop
+\cs_new_protected:Npn \__draw_color_spot:nw #1#2 ~ #3 \s__draw_stop
   { \use:c { __draw_backend_color_ #1 _spot:nn } {#2} {#3} }
 %% File: l3draw-transforms.dtx
 \bool_new:N \l__draw_matrix_active_bool

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty	2020-05-18 20:40:47 UTC (rev 55205)
@@ -20,10 +20,11 @@
 %% 
 %% File: l3graphics.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3graphics}{2020-01-12}{}
+\ProvidesExplPackage{l3graphics}{2020-05-18}{}
   {L3 Experimental graphics inclusion support}
 \ior_new:N \l__graphics_tmp_ior
 \tl_new:N  \l__graphics_tmp_tl
+\scan_new:N \s__graphics_stop
 \tl_new:N \l_graphics_decodearray_tl
 \tl_new:N \l_graphics_pagebox_tl
 \bool_new:N \l_graphics_interpolate_bool
@@ -108,7 +109,7 @@
         \ior_str_map_inline:Nn \exp_not:N \l__graphics_tmp_ior
           {
             \exp_not:N \__graphics_read_bb_auxiii:w
-              ##1 ~ \c_colon_str \exp_not:N \q_stop
+              ##1 ~ \c_colon_str \s__graphics_stop
           }
       }
     \exp_not:n
@@ -125,15 +126,15 @@
 \use:x
   {
     \cs_new_protected:Npn \exp_not:N \__graphics_read_bb_auxiii:w
-      ##1 \c_colon_str ##2 \exp_not:N \q_stop
+      ##1 \c_colon_str ##2 \s__graphics_stop
       {
         \exp_not:N \str_if_eq:nnT
           { \c_percent_str \c_percent_str BoundingBox }
           {##1}
-          { \exp_not:N \__graphics_read_bb_auxiv:w ##2 ( ) \exp_not:N \q_stop }
+          { \exp_not:N \__graphics_read_bb_auxiv:w ##2 ( ) \s__graphics_stop }
       }
   }
-\cs_new_protected:Npn \__graphics_read_bb_auxiv:w #1 ( #2 ) #3 \q_stop
+\cs_new_protected:Npn \__graphics_read_bb_auxiv:w #1 ( #2 ) #3 \s__graphics_stop
   {
     \str_if_eq:nnF {#2} { atend }
       {
@@ -143,10 +144,10 @@
             \char_set_catcode_space:n { 32 }
           }
           { \use:n #1 }
-        \exp_after:wN \__graphics_read_bb_auxv:w \l__graphics_tmp_tl \q_stop
+        \exp_after:wN \__graphics_read_bb_auxv:w \l__graphics_tmp_tl \s__graphics_stop
       }
   }
-\cs_new_protected:Npn \__graphics_read_bb_auxv:w #1~#2~#3~#4~#5 \q_stop
+\cs_new_protected:Npn \__graphics_read_bb_auxv:w #1~#2~#3~#4~#5 \s__graphics_stop
   {
     \dim_set:Nn \l_graphics_llx_dim { #1 bp }
     \dim_set:Nn \l_graphics_lly_dim { #2 bp }

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3pdf/l3pdf.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3pdf/l3pdf.sty	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3pdf/l3pdf.sty	2020-05-18 20:40:47 UTC (rev 55205)
@@ -20,8 +20,9 @@
 %% 
 %% File: l3pdf.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3pdf}{2020-01-12}{}
+\ProvidesExplPackage{l3pdf}{2020-05-18}{}
   {L3 Experimental core PDF support}
+\scan_new:N \s__pdf_stop
 \bool_new:N \g__pdf_init_bool
 \cs_if_exist:NT \documentclass
   {
@@ -38,6 +39,12 @@
   }
 \cs_new_protected:Npn \pdf_object_new:nn #1#2
   { \__pdf_backend_object_new:nn {#1} {#2} }
+\prg_new_conditional:Npnn \pdf_object_if_exist:n #1 { p , T , F , TF }
+  {
+    \int_if_exist:cTF { c__pdf_backend_object_ \tl_to_str:n {#1} _int }
+     { \prg_return_true: }
+     { \prg_return_false:}
+  }
 \cs_new_protected:Npn \pdf_object_write:nn #1#2
   { \__pdf_backend_object_write:nn {#1} {#2} }
 \cs_generate_variant:Nn \pdf_object_write:nn { nx }
@@ -47,8 +54,8 @@
 \cs_generate_variant:Nn \pdf_object_now:nn { nx }
 \cs_new:Npn \pdf_object_last: { \__pdf_backend_object_last: }
 \prg_new_conditional:Npnn \pdf_version_compare:Nn #1#2 { p , T , F , TF }
-  { \use:c { __pdf_version_compare_ #1 :w } #2 . . \q_stop }
-\cs_new:cpn { __pdf_version_compare_=:w } #1 . #2 . #3 \q_stop
+  { \use:c { __pdf_version_compare_ #1 :w } #2 . . \s__pdf_stop }
+\cs_new:cpn { __pdf_version_compare_=:w } #1 . #2 . #3 \s__pdf_stop
  {
    \bool_lazy_and:nnTF
     { \int_compare_p:nNn \__pdf_backend_version_major: = {#1} }
@@ -56,7 +63,7 @@
     { \prg_return_true: }
     { \prg_return_false: }
  }
-\cs_new:cpn { __pdf_version_compare_<:w } #1 . #2 . #3 \q_stop
+\cs_new:cpn { __pdf_version_compare_<:w } #1 . #2 . #3 \s__pdf_stop
  {
    \bool_lazy_or:nnTF
     { \int_compare_p:nNn \__pdf_backend_version_major: < {#1} }
@@ -68,7 +75,7 @@
     { \prg_return_true: }
     { \prg_return_false: }
  }
-\cs_new:cpn { __pdf_version_compare_>:w } #1 . #2 . #3 \q_stop
+\cs_new:cpn { __pdf_version_compare_>:w } #1 . #2 . #3 \s__pdf_stop
  {
    \bool_lazy_or:nnTF
     { \int_compare_p:nNn \__pdf_backend_version_major: > {#1} }
@@ -81,13 +88,13 @@
     { \prg_return_false: }
  }
 \cs_new_protected:Npn \pdf_version_gset:n #1
-  { \__pdf_version_gset:w  #1 . . \q_stop }
+  { \__pdf_version_gset:w  #1 . . \s__pdf_stop }
 \cs_new_protected:Npn \pdf_version_min_gset:n #1
   {
     \pdf_version_compare:NnT < {#1}
-      { \__pdf_version_gset:w  #1 . . \q_stop }
+      { \__pdf_version_gset:w  #1 . . \s__pdf_stop }
   }
-\cs_new_protected:Npn \__pdf_version_gset:w  #1 . #2 . #3\q_stop
+\cs_new_protected:Npn \__pdf_version_gset:w  #1 . #2 . #3\s__pdf_stop
   {
     \bool_if:NF \g__pdf_init_bool
       {

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty	2020-05-18 20:40:47 UTC (rev 55205)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3str-format.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3str-format}{2020-01-12}{}
+\ProvidesExplPackage{l3str-format}{2020-05-18}{}
   {L3 Experimental string formatting}
 \cs_generate_variant:Nn \use:nn { nf }
 \cs_generate_variant:Nn \use:nnn { fnf }
@@ -30,7 +30,7 @@
     \if_int_compare:w 9 < 1 #1 \exp_stop_f:
       \prg_return_true: \else: \prg_return_false: \fi:
   }
-\cs_new:Npn \__str_format_put:nw #1 #2 \s_stop { #2 \s_stop #1 }
+\cs_new:Npn \__str_format_put:nw #1 #2 \s__str_stop { #2 \s__str_stop #1 }
 \cs_generate_variant:Nn \__str_format_put:nw { o , f }
 \prg_new_conditional:Npnn \__str_format_if_in:nN #1#2 { TF }
   {
@@ -49,7 +49,7 @@
 \cs_new:Npn \__str_format_parse:n #1
   {
     \exp_last_unbraced:Nf \__str_format_parse_auxi:NN
-      { \__kernel_str_to_other:n {#1} } \s_stop \s_stop {#1}
+      { \__kernel_str_to_other:n {#1} } \s__str_stop \s__str_stop {#1}
   }
 \cs_new:Npx \__str_format_parse_auxi:NN #1#2
   {
@@ -94,11 +94,11 @@
   }
 \cs_new:Npn \__str_format_parse_auxvii:nN #1#2
   {
-    \token_if_eq_meaning:NNTF \s_stop #2
+    \token_if_eq_meaning:NNTF \s__str_stop #2
       { \__str_format_parse_end:nwn { #1 ? } #2 }
       { \__str_format_parse_end:nwn { #1 #2 } }
   }
-\cs_new:Npn \__str_format_parse_end:nwn #1 #2 \s_stop \s_stop #3
+\cs_new:Npn \__str_format_parse_end:nwn #1 #2 \s__str_stop \s__str_stop #3
   {
     \tl_if_empty:nF {#2}
       { \__kernel_msg_expandable_error:nnn { str } { invalid-format } {#3} }
@@ -195,7 +195,7 @@
           }
       }
     \__str_format_tl_s:NNnnNNn
-    \s_stop
+    \s__str_stop
   }
 \cs_new:Npn \__str_format_tl_s:NNnnNNn #1#2#3#4#5#6#7
   {
@@ -275,9 +275,9 @@
           { str } { invalid-style-format } {#6} { int }
         \__str_format_int:NwnnNNn \use:n
       }
-    \s_stop {#7}
+    \s__str_stop {#7}
   }
-\cs_new:Npn \__str_format_int:NwnnNNn #1#2 \s_stop #3#4#5#6#7
+\cs_new:Npn \__str_format_int:NwnnNNn #1#2 \s__str_stop #3#4#5#6#7
   {
     \exp_args:Nc \exp_args:Nf
       { __str_format_align_#6:nnnN }
@@ -332,10 +332,10 @@
           { str } { invalid-style-format } {#6} { fp }
         \__str_format_fp:wnnnNNn \__str_format_fp_g:nn
       }
-    \s_stop {#7}
+    \s__str_stop {#7}
   }
 \cs_new:Npn \__str_format_fp:wnnnNNn
-    #1 \s_stop #2 #3 #4 #5#6 #7
+    #1 \s__str_stop #2 #3 #4 #5#6 #7
   {
     \exp_args:Nc \exp_args:Nf
       { __str_format_align_#6:nnnN }
@@ -377,7 +377,7 @@
           { \prg_replicate:nn { #4 - \c__fp_prec_int + 1 } { 0 } }
         \__str_format_put:nw { #1 . #2 }
       }
-    \use_none:n \s_stop
+    \use_none:n \s__str_stop
   }
 \cs_new:Npn \__str_format_fp_f:nn #1#2
   {
@@ -431,11 +431,11 @@
 \cs_new:Npn \__str_format_fp_trim:w #1 e
   {
     \__str_format_fp_trim_loop:w #1
-      ; \__str_format_fp_trim_loop:w 0; \__str_format_fp_trim_dot:w .; \s_stop e
+      ; \__str_format_fp_trim_loop:w 0; \__str_format_fp_trim_dot:w .; \s__str_stop e
   }
 \cs_new:Npn \__str_format_fp_trim_loop:w #1 0; #2 { #2 #1 ; #2 }
 \cs_new:Npn \__str_format_fp_trim_dot:w #1 .; { \__str_format_fp_trim_end:w #1 ; }
-\cs_new:Npn \__str_format_fp_trim_end:w #1 ; #2 \s_stop { #1 }
+\cs_new:Npn \__str_format_fp_trim_end:w #1 ; #2 \s__str_stop { #1 }
 \__kernel_msg_new:nnn { str } { invalid-format }
   { Invalid~format~'#1'. }
 \__kernel_msg_new:nnn { str } { invalid-align-format }

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty	2020-05-18 20:40:47 UTC (rev 55205)
@@ -20,24 +20,27 @@
 %% 
 %% File: l3sys-shell.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3sys-shell}{2020-01-12}{}
+\ProvidesExplPackage{l3sys-shell}{2020-05-18}{}
   {L3 Experimental system shell functions}
+\scan_new:N \s__sys_stop
+\quark_new:N \q__sys_nil
+\__kernel_quark_new_conditional:Nn \__sys_quark_if_nil:N { F }
 \cs_new:Npn \__sys_path_to_win:n #1
   {
-    \exp_after:wN \__sys_path_to_win:w \tl_to_str:n {#1} ~ \q_stop
+    \exp_after:wN \__sys_path_to_win:w \tl_to_str:n {#1} ~ \s__sys_stop
   }
-\cs_new:Npn \__sys_path_to_win:w #1 ~ #2 \q_stop
+\cs_new:Npn \__sys_path_to_win:w #1 ~ #2 \s__sys_stop
   {
-    \__sys_path_to_win:N #1 \q_nil
+    \__sys_path_to_win:N #1 \q__sys_nil
     \tl_if_empty:nF {#2}
       {
         \c_space_tl
-        \__sys_path_to_win:w #2 \q_stop
+        \__sys_path_to_win:w #2 \s__sys_stop
       }
   }
 \cs_new:Npn \__sys_path_to_win:N #1
   {
-    \quark_if_nil:NF #1
+    \__sys_quark_if_nil:NF #1
       {
         \token_if_eq_meaning:NNTF #1 /
           { \c_backslash_str }

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty	2020-05-18 20:40:47 UTC (rev 55205)
@@ -20,7 +20,7 @@
 %% 
 %% File: xcoffins.dtx
 \RequirePackage{xparse}
-\ProvidesExplPackage{xcoffins}{2020-01-12}{}
+\ProvidesExplPackage{xcoffins}{2020-05-18}{}
   {L3 Experimental design level coffins}
 \keys_define:nn { coffin }
   {

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty	2020-05-18 20:40:47 UTC (rev 55205)
@@ -32,7 +32,7 @@
       }%
     \endinput
   }
-\ProvidesExplPackage{l3galley}{2020-01-12}{}
+\ProvidesExplPackage{l3galley}{2020-05-18}{}
   {L3 Experimental galley code}
 \int_new:N \l__galley_tmp_int
 \seq_new:N \g__galley_tmpa_seq

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty	2020-05-18 20:40:23 UTC (rev 55204)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty	2020-05-18 20:40:47 UTC (rev 55205)
@@ -20,7 +20,7 @@
 %% 
 %% File: xgalley.dtx
 \RequirePackage{xparse}
-\ProvidesExplPackage{xgalley}{2020-01-12}{}
+\ProvidesExplPackage{xgalley}{2020-05-18}{}
   {L3 Experimental galley}
 \RequirePackage{xparse,xtemplate,l3galley}
 \clist_new:N \l__galley_tmpa_clist



More information about the tex-live-commits mailing list.