From bb24aab36b14425d5408e5c0c889c83a70cc7a5a Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Tue, 19 May 2020 03:03:34 +0000
Subject: CTAN sync 202005190303

---
 macros/latex/contrib/l3experimental/l3color.dtx | 87 +++++++++++++------------
 1 file changed, 47 insertions(+), 40 deletions(-)

(limited to 'macros/latex/contrib/l3experimental/l3color.dtx')

diff --git a/macros/latex/contrib/l3experimental/l3color.dtx b/macros/latex/contrib/l3experimental/l3color.dtx
index de6616acf3..9438e8110f 100644
--- a/macros/latex/contrib/l3experimental/l3color.dtx
+++ b/macros/latex/contrib/l3experimental/l3color.dtx
@@ -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,19 +601,19 @@
 \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
     \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}
-- 
cgit v1.2.3

