texlive[56323] Master/texmf-dist: l3 (10sep20)

commits+karl at tug.org commits+karl at tug.org
Fri Sep 11 22:56:15 CEST 2020


Revision: 56323
          http://tug.org/svn/texlive?view=revision&revision=56323
Author:   karl
Date:     2020-09-11 22:56:15 +0200 (Fri, 11 Sep 2020)
Log Message:
-----------
l3 (10sep20)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md
    trunk/Master/texmf-dist/doc/latex/l3backend/README.md
    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/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/dvips/l3backend/l3backend-dvips.pro
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.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/l3backend/l3backend-dvipdfmx.def
    trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def
    trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def
    trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def
    trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
    trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.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/l3backend/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md	2020-09-11 20:56:15 UTC (rev 56323)
@@ -6,6 +6,16 @@
 
 ## [Unreleased]
 
+## [2020-09-11]
+
+### Added
+- Support for CIELAB separations with `dvips`
+
+### Fixed
+- Some PDF object functions
+- Separation color selection for `dvipdfmx`/XeTeX
+- Logic for some aspects of CIELAB Separation color
+
 ## [2020-09-01]
 
 ### Changed
@@ -110,7 +120,8 @@
 - Include `l3backend` in file names
 - Moved backend code to internal for each 'parent' module
 
-[Unreleased]: https://github.com/latex3/latex3/compare/2020-09-01...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2020-09-11...HEAD
+[2020-09-11]: https://github.com/latex3/latex3/compare/2020-09-01...2020-09-11
 [2020-09-01]: https://github.com/latex3/latex3/compare/2020-08-07...2020-09-01
 [2020-08-07]: https://github.com/latex3/latex3/compare/2020-06-29...2020-08-07
 [2020-06-29]: https://github.com/latex3/latex3/compare/2020-06-23...2020-06-29

Modified: trunk/Master/texmf-dist/doc/latex/l3backend/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3backend/README.md	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/doc/latex/l3backend/README.md	2020-09-11 20:56:15 UTC (rev 56323)
@@ -1,7 +1,7 @@
 LaTeX3 Backend Drivers
 ======================
 
-Release 2020-09-01
+Release 2020-09-11
 
 This package forms parts of `expl3`, and contains the code used to interface
 with backends (drivers) across the `expl3` codebase. The functions here are

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md	2020-09-11 20:56:15 UTC (rev 56323)
@@ -7,6 +7,11 @@
 
 ## [Unreleased]
 
+## [2020-09-11]
+
+### Fixed
+- Typos in CIELAB support
+
 ## [2020-09-01]
 
 ### Added
@@ -24,7 +29,8 @@
 
 ### Changed
 - Move drawing color functions to `l3color`, generalising the approach
-  with better `dvips` support
+  with better `dvips` support (viz. `\draw_color:n` becomes `\color_select:n`,
+  `\draw_color_[fill|stroke]:n` become `\color_[fill|stroke]:n`)
 
 ## [2020-07-17]
 
@@ -168,7 +174,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-09-01...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2020-09-11...HEAD
+[2020-09-11]: https://github.com/latex3/latex3/compare/2020-09-01...2020-09-11
 [2020-09-01]: https://github.com/latex3/latex3/compare/2020-08-07...2020-09-01
 [2020-08-07]: https://github.com/latex3/latex3/compare/2020-07-17...2020-08-07
 [2020-07-17]: https://github.com/latex3/latex3/compare/2020-06-18...2020-07-17

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3experimental/README.md	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/doc/latex/l3experimental/README.md	2020-09-11 20:56:15 UTC (rev 56323)
@@ -1,7 +1,7 @@
 Experimental LaTeX3 Concepts
 ============================
 
-Release 2020-09-01
+Release 2020-09-11
 
 Overview
 --------

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.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/dvips/l3backend/l3backend-dvips.pro
===================================================================
--- trunk/Master/texmf-dist/dvips/l3backend/l3backend-dvips.pro	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/dvips/l3backend/l3backend-dvips.pro	2020-09-11 20:56:15 UTC (rev 56323)
@@ -22,7 +22,7 @@
 /color.sc { } def
 /color.fc { } def
 TeXDict begin
-/TeXcolorsetspotcolor { setcustomcolor } def
+/TeXcolorseparation { setcolor } def
 end
 true setglobal
 /pdf.globaldict 4 dict def

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx	2020-09-11 20:56:15 UTC (rev 56323)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
 %
 % \maketitle
 %
@@ -70,27 +70,27 @@
 %    \begin{macrocode}
 \ProvidesExplFile
 %<*dvipdfmx>
-  {l3backend-dvipdfmx.def}{2020-09-01}{}
+  {l3backend-dvipdfmx.def}{2020-09-11}{}
   {L3 backend support: dvipdfmx}
 %</dvipdfmx>
 %<*dvips>
-  {l3backend-dvips.def}{2020-09-01}{}
+  {l3backend-dvips.def}{2020-09-11}{}
   {L3 backend support: dvips}
 %</dvips>
 %<*dvisvgm>
-  {l3backend-dvisvgm.def}{2020-09-01}{}
+  {l3backend-dvisvgm.def}{2020-09-11}{}
   {L3 backend support: dvisvgm}
 %</dvisvgm>
 %<*luatex>
-  {l3backend-luatex.def}{2020-09-01}{}
+  {l3backend-luatex.def}{2020-09-11}{}
   {L3 backend support: PDF output (LuaTeX)}
 %</luatex>
 %<*pdftex>
-  {l3backend-pdftex.def}{2020-09-01}{}
+  {l3backend-pdftex.def}{2020-09-11}{}
   {L3 backend support: PDF output (pdfTeX)}
 %</pdftex>
 %<*xetex>
-  {l3backend-xetex.def}{2020-09-01}{}
+  {l3backend-xetex.def}{2020-09-11}{}
   {L3 backend support: XeTeX}
 %</xetex>
 %    \end{macrocode}
@@ -367,7 +367,9 @@
 % \end{macro}
 %
 % \begin{macro}{\__kernel_backend_scope_begin:, \__kernel_backend_scope_end:}
-%   Scoping is done using the backend-specific specials.
+%   Scoping is done using the backend-specific specials. We use the versions
+%   originally from \texttt{xdvidfpmx} (\texttt{x:}) as these are well-tested
+%   \enquote{in the wild}.
 %    \begin{macrocode}
 \cs_new_protected:Npn \__kernel_backend_scope_begin:
   { \__kernel_backend_literal:n { x:gsave } }

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx	2020-09-11 20:56:15 UTC (rev 56323)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
 %
 % \maketitle
 %
@@ -250,7 +250,7 @@
 %</luatex|pdftex>
 %    \end{macrocode}
 %
-% \subsection{\texttt{dvipdfmx} backend}
+% \subsection{\texttt{dvipdfmx}/\XeTeX{} backend}
 %
 %    \begin{macrocode}
 %<*dvipdfmx|xetex>
@@ -280,7 +280,7 @@
 %
 % \begin{macro}{\@@_backend_rotate:Nn}
 % \begin{macro}{\@@_backend_rotate_aux:Nn}
-%   Rotating in \texttt{(x)}dvipdmfx can be implemented using either PDF or
+%   Rotating in \texttt{dvipdmfx}/\XeTeX{} can be implemented using either PDF or
 %   backend-specific code. The former approach however is not \enquote{aware}
 %   of the content of boxes: this means that any embedded links would not be
 %   adjusted by the rotation. As such, the backend-native approach is preferred:

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx	2020-09-11 20:56:15 UTC (rev 56323)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
 %
 % \maketitle
 %
@@ -311,20 +311,36 @@
 % \begin{macro}{\@@_backend_select_separation:nn}
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_select_separation:nn #1#2
-  { \@@_backend_select:n { setspotcolor ~ #1 ~ #2 } }
+  { \@@_backend_select:n { separation ~ #1 ~ #2 } }
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\@@_backend_separation_init:nnnnn}
-% \begin{macro}{\@@_backend_separation_init:nnn}
+% \begin{macro}
+%   {
+%     \@@_backend_separation_init:nnnnn,
+%     \@@_backend_separation_init:nxxnn,
+%     \@@_backend_separation_init_aux:nnnnn
+%   }
+% \begin{macro}[EXP]
+%   {
+%     \@@_backend_separation_init_/DeviceCMYK:nnn ,
+%     \@@_backend_separation_init_/DeviceGray:nnn ,
+%     \@@_backend_separation_init_/DeviceRGB:nnn
+%   }
+% \begin{macro}[EXP]{\@@_backend_separation_init_Device:Nn}
+% \begin{macro}[EXP]{\@@_backend_separation_init:nnn}
+% \begin{macro}[EXP]{\@@_backend_separation_init_count:n}
+% \begin{macro}[EXP]{\@@_backend_separation_init_count:w}
+% \begin{macro}[EXP]{\@@_backend_separation_init:nnnn}
+% \begin{macro}[EXP]{\@@_backend_separation_init:w}
 % \begin{macro}[EXP]{\@@_backend_separation_init:n}
-% \begin{macro}[EXP]{\@@_backend_separation_init:w}
-% \begin{macro}{\@@_backend_separation_init_cielab:nnnnn}
-% \begin{macro}{\@@_backend_separation_init_cielab:n}
+% \begin{macro}[EXP]{\@@_backend_separation_init:nw}
+% \begin{macro}{\@@_backend_separation_init_CIELAB:nnn}
 %   Initialising here means creating a small header set up plus massaging
 %   some data. This comes about as we have to deal with PDF-focussed data,
 %   which makes most sense \enquote{higher-up}. The approach is based on
-%   ideas from \url{https://tex.stackexchange.com/q/560093}.
+%   ideas from \url{https://tex.stackexchange.com/q/560093} plus using
+%   the PostScript manual for other aspects.
 %    \begin{macrocode}
 \cs_new_protected:Npx \@@_backend_separation_init:nnnnn #1#2#3#4#5
   {
@@ -331,37 +347,187 @@
     \bool_if:NT \g__kernel_backend_header_bool
       {
         \cs_if_exist:NTF \AtBeginDvi
-          { \AtBeginDvi }
+          { \exp_not:N \AtBeginDvi }
           { \use:n }
             {
-                \exp_not:N \@@_backend_separation_init:nnn
-                  {#1} {#2} {#5}
+              \exp_not:N \@@_backend_separation_init_aux:nnnnn
+                {#1} {#2} {#3} {#4} {#5}
             }
       }
   }
-\cs_new_protected:Npn \@@_backend_separation_init:nnn #1#2#3
+\cs_generate_variant:Nn \@@_backend_separation_init:nnnnn { nxx }
+\cs_new_protected:Npn \@@_backend_separation_init_aux:nnnnn #1#2#3#4#5
   {
     \__kernel_backend_literal:e
       {
         !
         TeXDict ~ begin ~
-        /color \int_use:N \g_@@_separation_int \c_space_tl
-        [#3] ~ aload ~ pop ~ ( \str_convert_pdfname:n {#1} ) ~ 
-        find \@@_backend_separation_init:n {#2} customcolor ~ def ~
+        /color \int_use:N \g_@@_separation_int
+          {
+            [ ~
+              /Separation ~ ( \str_convert_pdfname:n {#1} ) ~
+              [ ~ #2 ~ ] ~
+                {
+                  \cs_if_exist_use:cF { @@_backend_separation_init_ #2 :nnn }
+                    { \@@_backend_separation_init:nnn }
+                      {#3} {#4} {#5}
+                }
+            ] ~ setcolorspace
+          } ~ def ~
         end
       }
   }
+\cs_new:cpn { @@_backend_separation_init_ /DeviceCMYK :nnn } #1#2#3
+  { \@@_backend_separation_init_Device:Nn 4 {#3} }
+\cs_new:cpn { @@_backend_separation_init_ /DeviceGray :nnn } #1#2#3
+  { \@@_backend_separation_init_Device:Nn 1 {#3} }
+\cs_new:cpn { @@_backend_separation_init_ /DeviceRGB :nnn } #1#2#3
+  { \@@_backend_separation_init_Device:Nn 2 {#3} }
+\cs_new:Npn \@@_backend_separation_init_Device:Nn #1#2
+  {
+    #2 ~
+    \prg_replicate:nn {#1}
+      { #1 ~ index ~ mul ~ #1 ~ 1 ~ roll ~ }
+    \int_eval:n { #1 + 1 } ~ -1 ~ roll ~ pop
+  }
+%    \end{macrocode}
+%   For the generic case, we cannot use |/FunctionType 2| unfortunately, so
+%   we have to code that idea up in PostScript. Here, we will therefore assume
+%   that a range is \emph{always} given. First, we count values in each argument:
+%   at the backend level, we can assume there are always well-behaved with
+%   spaces present.
+%    \begin{macrocode}
+\cs_new:Npn \@@_backend_separation_init:nnn #1#2#3
+  {
+   \exp_args:Ne \@@_backend_separation_init:nnnn
+     { \@@_backend_separation_init_count:n {#2} }
+     {#1} {#2} {#3}
+  }
+\cs_new:Npn \@@_backend_separation_init_count:n #1
+  { \int_eval:n { 0 \@@_backend_separation_init_count:w #1 ~ \s_@@_stop } }
+\cs_new:Npn \@@_backend_separation_init_count:w #1 ~ #2 \s_@@_stop
+  {
+    +1
+    \tl_if_blank:nF {#2}
+      { \@@_backend_separation_init_count:w #2 \s_@@_stop }
+  }
+%    \end{macrocode}
+%   Now we implement the algorithm. In the terms in the PostScript manual,
+%   we have $\mathbf{N} = 1$ and $\mathbf{Domain} = [0~1]$, with
+%   $\mathbf{Range}$ as |#2|, $\mathbf{C0}$ as |#3| and $\mathbf{C1}$
+%   as |#4|, with the number of output components in |#1|. So all we have
+%   to do is implement $y_{i} = \mathbf{C0}_{i} + x(\mathbf{C1}_{i} -
+%   \mathbf{C0}_{i})$ with lots of stack manipulation, then check the
+%   ranges. That's done by adding everything to the stack first, then using
+%   the fact we know all of the offsets. As manipulating the stack is tricky,
+%   we start by re-formatting the $\mathbf{C0}$ and $\mathbf{C1}$ arrays to
+%   be interleaved, and add a \texttt{0} to each pair: this is used
+%   to keep the stack of constant length while we are doing the first pass of
+%   mathematics. We then working through that list, calculating from the
+%   last to the first value before tidying up by removing all of the input
+%   values. We do that by first copying all of the final $y$ values to the
+%   end of the stack, then rolling everything so we can pop the now-unneeded
+%   material.
+%    \begin{macrocode}
+\cs_new:Npn \@@_backend_separation_init:nnnn #1#2#3#4
+  {
+    \@@_backend_separation_init:w #3 ~ \s_@@_stop #4 ~ \s_@@_stop
+    \prg_replicate:nn {#1}
+      {
+        pop ~ 1 ~ index ~ neg ~ 1 ~ index ~ add ~
+        \int_eval:n { 3 * #1 } ~ index ~ mul ~
+        2 ~ index ~ add ~
+        \int_eval:n { 3 * #1 } ~ #1 ~ roll ~
+      }
+    \int_step_function:nnnN {#1} { -1 } { 1 }
+      \@@_backend_separation_init:n
+    \int_eval:n { 4 * #1 + 1 } ~ #1 ~ roll ~
+    \prg_replicate:nn { 3 * #1 + 1 } { pop ~ }
+    \tl_if_blank:nF {#2}
+      { \@@_backend_separation_init:nw {#1} #2 ~ \s_@@_stop }
+  }
+\cs_new:Npn \@@_backend_separation_init:w
+  #1 ~ #2 \s_@@_stop #3 ~ #4 \s_@@_stop
+  {
+    #1 ~ #3 ~ 0 ~
+    \tl_if_blank:nF {#2}
+      { \@@_backend_separation_init:w #2 \s_@@_stop #4 \s_@@_stop }
+  }
 \cs_new:Npn \@@_backend_separation_init:n #1
+  { \int_eval:n { #1 * 2 } ~ index ~ }
+%    \end{macrocode}
+%   Finally, we deal with the range limit if required. This is handled
+%   by splitting the range into pairs. It's then just a question of doing
+%   the comparisons, this time dropping everything except the desired
+%   result.
+%    \begin{macrocode}
+\cs_new:Npn \@@_backend_separation_init:nw #1#2 ~ #3 ~ #4 \s_@@_stop
   {
-    \@@_backend_separation_init:w #1 /Device #1 /Device \s_@@_stop
+     #2 ~ #3 ~
+     2 ~ index ~ 2 ~ index ~ lt ~
+       { ~ pop ~ exch ~ pop ~ } ~
+       { ~
+         2 ~ index ~ 1 ~ index ~ gt ~
+           { ~ exch ~ pop ~ exch ~ pop ~ } ~
+           { ~ pop ~ pop ~ } ~
+         ifelse ~
+       }
+    ifelse ~
+    #1 ~ 1 ~ roll ~
+    \tl_if_blank:nF {#4}
+      { \@@_backend_separation_init:nw {#1} #4 \s_@@_stop }
   }
-\cs_new:Npn \@@_backend_separation_init:w #1 /Device #2 /Device #3 \s_@@_stop
-  { \str_lowercase:n {#2} }
 %    \end{macrocode}
-%  Currently no CIELAB support.
+%  CIELAB support uses the detail from the PostScript reference, page 227;
+%  other than that block of PostScript, this is the same as for PDF-based
+%  routes.
 %    \begin{macrocode}
-\cs_new_protected:Npn \@@_backend_separation_init_cielab:nnnnn #1#2#3#4#5 { }
-\cs_new_protected:Npn \@@_backend_separation_init_cielab:n #1 { }
+\cs_new_protected:Npn \@@_backend_separation_init_CIELAB:nnn #1#2#3
+  {
+    \@@_backend_separation_init:nxxnn
+      {#2}
+      {
+        /CIEBasedABC ~
+            << ~
+              /RangeABC ~ [ ~ \c_@@_model_range_CIELAB_tl \c_space_tl ] ~
+              /DecodeABC ~
+                [ ~
+                  { ~ 16 ~ add ~ 116 ~ div ~ } ~ bind ~
+                  { ~ 500 ~ div ~ } ~ bind ~
+                  { ~ 200 ~ div ~ } ~ bind ~
+                ] ~
+              /MatrixABC ~ [ ~ 1 ~ 1 ~ 1 ~ 1 ~ 0 ~ 0 ~ 0 ~ 0 ~ -1 ~ ] ~
+              /DecodeLMN ~
+                [ ~
+                  { ~
+                    dup ~ 6 ~ 29 ~ div ~ ge ~
+                      { ~ dup ~ dup ~ mul ~ mul ~ ~ } ~
+                      { ~ 4 ~ 29 ~ div ~ sub ~ 108 ~ 841 ~ div ~ mul ~ } ~
+                    ifelse ~
+                    0.9505 ~ mul ~
+                  } ~ bind ~
+                  { ~
+                    dup ~ 6 ~ 29 ~ div ~ ge ~
+                      { ~ dup ~ dup ~ mul ~ mul ~ } ~
+                      { ~ 4 ~ 29 ~ div ~ sub ~ 108 ~ 841 ~ div ~ mul ~ } ~
+                    ifelse ~
+                  } ~ bind ~
+                  { ~
+                    dup ~ 6 ~ 29 ~ div ~ ge ~
+                      { ~ dup ~ dup ~ mul ~ mul ~ } ~
+                      { ~ 4 ~ 29 ~ div ~ sub ~ 108 ~ 841 ~ div ~ mul ~ } ~
+                    ifelse ~
+                    1.0890 ~ mul ~
+                  } ~ bind
+                ] ~
+              /WhitePoint ~
+                [ ~ \tl_use:c { c_@@_model_whitepoint_CIELAB_ #1 _tl } ~ ] ~
+            >>
+      }
+      { \c_@@_model_range_CIELAB_tl }
+      { 100 ~ 0 ~ 0 }
+      {#3}
+  }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -369,6 +535,11 @@
 % \end{macro}
 % \end{macro}
 % \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
 %
 %    \begin{macrocode}
 %</dvips>
@@ -386,16 +557,13 @@
 % \end{macro}
 %
 % \begin{macro}
-%   {\@@_backend_separation_init:nnnnn, \@@_backend_separation_init_cielab:nnnnn}
-% \begin{macro}{\@@_backend_separation_init_cielab:n}
+%   {\@@_backend_separation_init:nnnnn, \@@_backend_separation_init_CIELAB:nnn}
 %   No support at present.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_separation_init:nnnnn #1#2#3#4#5 { }
-\cs_new_protected:Npn \@@_backend_separation_init_cielab:nnnnn #1#2#3#4#5 { }
-\cs_new_protected:Npn \@@_backend_separation_init_cielab:n #1 { }
+\cs_new_protected:Npn \@@_backend_separation_init_CIELAB:nnnnnn #1#2#3 { }
 %    \end{macrocode}
 % \end{macro}
-% \end{macro}
 %
 %    \begin{macrocode}
 %</dvisvgm>
@@ -406,6 +574,7 @@
 %    \end{macrocode}
 %
 % \begin{macro}{\@@_backend_select_separation:nn}
+% \begin{macro}{\@@_backend_select:n}
 %   Different syntaxes here as the stacks are accessed very differently.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_select_separation:nn #1#2
@@ -415,32 +584,42 @@
 %<*luatex|pdftex>
   { \@@_backend_select:n { /#1 ~ cs ~ /#1 ~ CS ~ #2 ~ scn ~ #2 ~ SCN } }
 %</luatex|pdftex>
+%<*dvipdfmx|xetex>
+\cs_new_protected:Npn \@@_backend_select:n #1
+  {
+    \__kernel_backend_literal:n { pdf: bc ~ #1 }
+    \group_insert_after:N \@@_backend_reset:
+  }
+%</dvipdfmx|xetex>
 %    \end{macrocode}
 % \end{macro}
+% \end{macro}
 %
 % \begin{macro}{\@@_backend_separation_init:nnnnn}
 % \begin{macro}{\@@_backend_separation_init:n}
-% \begin{macro}{\@@_backend_separation_init_cielab:nnnnn}
-% \begin{macro}{\@@_backend_separation_init_cielab:n}
+% \begin{macro}{\@@_backend_separation_init_CIELAB:nnn}
 %   Initialising the PDF structures needs two parts: creating an object
 %   containing the \enquote{real} name of the Separation, then adding a reference
 %   to that to each page. The latter uses the internal name of the \texttt{cs}.
 %   For \texttt{dvipdfmx}/\XeTeX{}, the backend does most of the work so we need a
-%   simplified version.
+%   simplified version. We use a separate object for the tint transformation
+%   following the model in the PDF reference.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_separation_init:nnnnn #1#2#3#4#5
   {
+    \pdf_object_now:nx { dict }
+      {
+        /FunctionType ~ 2
+        /Domain ~ [0 ~ 1]
+        \tl_if_blank:nF {#3} { /Range ~ [#3] }
+        /C0 ~ [#4] ~
+        /C1 ~ [#5] /N ~ 1
+      }
     \@@_backend_separation_init:n
       {
         /Separation
         / \str_convert_pdfname:n {#1} ~ #2 ~
-        <<
-          /FunctionType ~ 2
-          /Domain ~ [0 ~ 1]
-          \tl_if_blank:nF {#3} { /Range ~ [#3] }
-          /C0 ~ [#4] ~
-          /C1 ~ [#5] /N ~ 1
-        >>
+        \pdf_object_last:
       }
 %<*luatex|pdftex>
     \use:x
@@ -459,7 +638,7 @@
 %<*dvipdfmx|xetex>
     \__kernel_backend_literal:x
       {
-        pdf:obj ~ @ color \int_use:N \g_@@_separation_int \c_space_tl
+        pdf:obj ~ @color \int_use:N \g_@@_separation_int \c_space_tl
           [#1]
       }
 %</dvipdfmx|xetex>
@@ -471,37 +650,37 @@
 %   For CIELAB colors, we need one object per document for the illuminant,
 %   plus initialisation of the color space referencing that object.
 %    \begin{macrocode}
-\cs_new_protected:Npn \@@_backend_separation_init_cielab:nnnnn #1#2#3#4#5
+\cs_new_protected:Npn \@@_backend_separation_init_CIELAB:nnn #1#2#3
   {
+    \pdf_object_if_exist:nF { @@_illuminant_CIELAB_ #1 }
+      {
+        \pdf_object_new:nn { @@_illuminant_CIELAB_ #1 } { array }
+        \pdf_object_write:nx { @@_illuminant_CIELAB_ #1 }
+          {
+            /Lab ~
+            <<
+             /WhitePoint ~
+               [ \tl_use:c { c_@@_model_whitepoint_CIELAB_ #1 _tl } ]
+             /Range ~ [ \c_@@_model_range_CIELAB_tl ]
+            >>
+          }
+      }
     \@@_backend_separation_init:nnnnn
       {#2}
-      { \pdf_object_ref:n { @@_illuminant_cielab_ #1 } }
-      { \c_@@_model_range_lab_tl }
+      { \pdf_object_ref:n { @@_illuminant_CIELAB_ #1 } }
+      { \c_@@_model_range_CIELAB_tl }
       { 100 ~ 0 ~ 0 }
-      { #3 ~ #4 ~ #5 }
+      {#3}
   }
 \cs_if_exist:NF \pdf_object_now:nn
-  { \cs_gset_protected:Npn \@@_backend_separation_init_cielab:nnnnn #1#2#3#4#5 { } }
-\cs_new_protected:Npn \@@_backend_separation_init_cielab:n #1
   {
-    \pdf_object_new:nn { @@_illuminant_cielab_ #1 } { array }
-    \pdf_object_write:nx { @@_illuminant_cielab_ #1 }
-      {
-        /Lab ~
-        <<
-         /WhitePoint ~
-           [ \tl_use:c { c_@@_model_whitepoint_cielab_ #1 _tl } ]
-         /Range ~ [ \c_@@_model_range_lab_tl ]
-        >>
-     }
+    \cs_gset_protected:Npn \@@_backend_separation_init_CIELAB:nnn #1#2#3
+      { }
   }
-\cs_if_exist:NF \pdf_object_new:nn
-  { \cs_gset_protected:Npn \@@_backend_separation_init_cielab:n #1 { } }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
 % \end{macro}
-% \end{macro}
 %
 %    \begin{macrocode}
 %</dvipdfmx|luatex|pdftex|xetex>

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx	2020-09-11 20:56:15 UTC (rev 56323)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
 %
 % \maketitle
 %
@@ -581,7 +581,9 @@
 %   matrix into rotations and a scaling, then use those operations as they
 %   are handled by the backend. (There is backend support for matrix operations in
 %   \texttt{dvipdfmx}/\XeTeX{}, but as a matched pair so not suitable for the
-%   \enquote{stand alone} transformation set up here.)
+%   \enquote{stand alone} transformation set up here.) The specials used here
+%   are from \texttt{xdvipdfmx} originally: they are well-tested, but probably
+%   equivalent to the \texttt{pdf:} versions!
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_cm:nnnn #1#2#3#4
   {

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx	2020-09-11 20:56:15 UTC (rev 56323)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx	2020-09-11 20:56:15 UTC (rev 56323)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
 %
 % \maketitle
 %
@@ -67,12 +67,12 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{TeXcolorsetspotcolor, setspotcolor}
+% \begin{macro}{TeXcolorseparation, separation}
 %   Support for separation/spot colors: this strange naming is so
 %   things work with the color stack.
 %    \begin{macrocode}	
 TeXDict begin
-/TeXcolorsetspotcolor { setcustomcolor } def 
+/TeXcolorseparation { setcolor } def 
 end
 %    \end{macrocode}
 % \end{macro}

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx	2020-09-11 20:56:15 UTC (rev 56323)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
 %
 % \maketitle
 %
@@ -773,16 +773,18 @@
 %
 % \begin{macro}[EXP]{\@@_backend_annotation_last:}
 %   A tiny amount of extra data gets added here; we use \texttt{x}-type
-%   expansion to get the space in the right place and form.
+%   expansion to get the space in the right place and form. The \enquote{extra}
+%   space in the \LuaTeX{} version is \emph{required} as it is consumed in
+%   finding the end of the keyword.
 %    \begin{macrocode}
 \cs_new:Npx \@@_backend_annotation_last:
   {
     \exp_not:N \int_value:w
 %<*luatex>
-      \exp_not:N \tex_pdffeedback:D lastannot
+      \exp_not:N \tex_pdffeedback:D lastannot ~
 %</luatex>
 %<*pdftex>
-      \exp_not:N \tex_pdfannot:D
+      \exp_not:N \tex_pdflastannot:D
 %</pdftex>
       \c_space_tl 0 ~ R
   }
@@ -831,7 +833,7 @@
   {
     \exp_not:N \int_value:w
 %<*luatex>
-      \exp_not:N \tex_pdffeedback:D lastlink
+      \exp_not:N \tex_pdffeedback:D lastlink ~
 %</luatex>
 %<*pdftex>
       \exp_not:N \tex_pdflastlink:D
@@ -964,7 +966,7 @@
 %<*pdftex>
         { \tex_pdflastobj:D }
 %</pdftex>
-    \prop_gput:Nnn \exp_not:N \g_@@_backend_object_prop {#1} {#2}
+    \prop_gput:Nnn \g_@@_backend_object_prop {#1} {#2}
   }
 \cs_new:Npn \@@_backend_object_ref:n #1
   { \int_use:c { c_@@_backend_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R }

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx	2020-09-11 20:56:15 UTC (rev 56323)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
 %
 % \maketitle
 %
@@ -129,7 +129,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3benchmark}{2020-09-01}{}
+\ProvidesExplPackage{l3benchmark}{2020-09-11}{}
   {L3 Experimental benchmarking}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx	2020-09-11 20:56:15 UTC (rev 56323)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
 %
 % \maketitle
 %
@@ -350,9 +350,10 @@
 % example those involving separations (see
 % \url{https://helpx.adobe.com/indesign/using/spot-process-colors.html}
 % for details of the use of separations in print). Color models may be split
-% into families; in the case of the basic \texttt{cmyk}, \texttt{gray}
-% and \texttt{rgb} models, the family and the model itself are synonymous. This
-% is not generally the case: see the PDF reference for more details. 
+% into families; for the standard device-based color models (\texttt{DeviceCMYK},
+% \texttt{DeviceRGB}, \texttt{DeviceGray}), these are synonymous. This
+% is not generally the case: see the PDF reference for more details. (Note that
+% \pkg{l3color} uses the shorter names \texttt{cmyk}, etc.)
 % 
 % \begin{function}{\color_model_new:nnn}
 %   \begin{syntax}
@@ -375,7 +376,7 @@
 %     name of a spot color ink. Such a \meta{name} may contain spaces, etc.,
 %     which are not permitted in the \meta{model}.
 %   \item \texttt{alternative-model} An alternative device colorspace, one of
-%     \texttt{cmyk}, \texttt{rgb}, \texttt{gray} or \texttt{cielab}. The three
+%     \texttt{cmyk}, \texttt{rgb}, \texttt{gray} or \texttt{CIELAB}. The three
 %     parameter-based models work as described above; see below for
 %     details of CIELAB colors.
 %   \item \texttt{alternative-values} A comma-separated list of values
@@ -384,7 +385,7 @@
 % \end{itemize}
 %
 % CIELAB color separations are created using the
-% \texttt{alternative-model = cielab} setting. These colors must also have an
+% \texttt{alternative-model = CIELAB} setting. These colors must also have an
 % \texttt{illuminant} key, one of \texttt{a}, \texttt{c}, \texttt{e},
 % \texttt{d50}, \texttt{d55}, \texttt{d65} or \texttt{d75}. The
 % \texttt{alternative-values} in this case are the three parameters $L*$, $a*$
@@ -412,7 +413,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3color}{2020-09-01}{}
+\ProvidesExplPackage{l3color}{2020-09-11}{}
   {L3 Experimental color support}
 %    \end{macrocode}
 %
@@ -1525,47 +1526,34 @@
 %
 % \begin{variable}
 %   {
-%     \c_@@_model_whitepoint_cielab_a_tl   ,
-%     \c_@@_model_whitepoint_cielab_b_tl   ,
-%     \c_@@_model_whitepoint_cielab_e_tl   ,
-%     \c_@@_model_whitepoint_cielab_d50_tl ,
-%     \c_@@_model_whitepoint_cielab_d55_tl ,
-%     \c_@@_model_whitepoint_cielab_d65_tl ,
-%     \c_@@_model_whitepoint_cielab_d75_tl
+%     \c_@@_model_whitepoint_CIELAB_a_tl   ,
+%     \c_@@_model_whitepoint_CIELAB_b_tl   ,
+%     \c_@@_model_whitepoint_CIELAB_e_tl   ,
+%     \c_@@_model_whitepoint_CIELAB_d50_tl ,
+%     \c_@@_model_whitepoint_CIELAB_d55_tl ,
+%     \c_@@_model_whitepoint_CIELAB_d65_tl ,
+%     \c_@@_model_whitepoint_CIELAB_d75_tl
 %   }
 %   Whitepoint data for the CIELAB profiles. 
 %    \begin{macrocode}
-\tl_const:Nn \c_@@_model_whitepoint_cielab_a_tl      { 1.0985 ~ 1 ~ 0.3558 }
-\tl_const:Nn \c_@@_model_whitepoint_cielab_b_tl      { 0.9807~ 1 ~ 1.1822 }
-\tl_const:Nn \c_@@_model_whitepoint_cielab_e_tl      { 1 ~ 1 ~ 1 }
-\tl_const:cn { c_@@_model_whitepoint_cielab_d50_tl } { 0.9642 ~, 1 ~ 0.8251 }
-\tl_const:cn { c_@@_model_whitepoint_cielab_d55_tl } { 0.9568 ~ 1 ~ 0.9214 }
-\tl_const:cn { c_@@_model_whitepoint_cielab_d65_tl } { 0.9504 ~ 1 ~ 1.0888 }
-\tl_const:cn { c_@@_model_whitepoint_cielab_d75_tl } { 0.9497 ~ 1 ~ 1.2261 }
+\tl_const:Nn \c_@@_model_whitepoint_CIELAB_a_tl      { 1.0985 ~ 1 ~ 0.3558 }
+\tl_const:Nn \c_@@_model_whitepoint_CIELAB_b_tl      { 0.9807 ~ 1 ~ 1.1822 }
+\tl_const:Nn \c_@@_model_whitepoint_CIELAB_e_tl      { 1 ~ 1 ~ 1 }
+\tl_const:cn { c_@@_model_whitepoint_CIELAB_d50_tl } { 0.9642 ~ 1 ~ 0.8251 }
+\tl_const:cn { c_@@_model_whitepoint_CIELAB_d55_tl } { 0.9568 ~ 1 ~ 0.9214 }
+\tl_const:cn { c_@@_model_whitepoint_CIELAB_d65_tl } { 0.9504 ~ 1 ~ 1.0888 }
+\tl_const:cn { c_@@_model_whitepoint_CIELAB_d75_tl } { 0.9497 ~ 1 ~ 1.2261 }
 %    \end{macrocode}
 % \end{variable}
 %
-% \begin{variable}{\c_@@_model_range_cielab_tl}
+% \begin{variable}{\c_@@_model_range_CIELAB_tl}
 %   The range for CIELAB color spaces.
 %    \begin{macrocode}
-\tl_const:Nn \c_@@_model_range_cielab_tl { -128 ~ 127 ~ -128 ~ 127 }
+\tl_const:Nn \c_@@_model_range_CIELAB_tl { 0 ~ 100 ~ -128 ~ 127 ~ -128 ~ 127 }
 %    \end{macrocode}
 % \end{variable}
 %
 % \begin{macro}{\color_model_new:nnn, \@@_model_new:nnn}
-% \begin{macro}{\@@_model_separation:n}
-% \begin{macro}{\@@_model_separation:nn}
-% \begin{macro}{\@@_model_separation:nnn}
-% \begin{macro}{\@@_model_separation:w}
-% \begin{macro}
-%   {
-%     \@@_model_separation_cmyk:nnnnnn ,
-%     \@@_model_separation_gray:nnnnnn ,
-%     \@@_model_separation_rgb:nnnnnn
-%   }
-% \begin{macro}{\@@_model_convert:nnn}
-% \begin{macro}{\@@_model_separation_cielab:nnnnnn}
-% \begin{macro}{\@@_model_separation_cielab:nnnnnnn}
 %   Set up a new model: in general this has to be handled by a family-dependent
 %   function. To avoid some \enquote{interesting} questions with casing, we
 %   fold the case of the family name. The key--value list should always be
@@ -1596,6 +1584,21 @@
       }
   }
 %    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_model_separation:n}
+% \begin{macro}{\@@_model_separation:nn}
+% \begin{macro}{\@@_model_separation:nnn}
+% \begin{macro}{\@@_model_separation:w}
+% \begin{macro}
+%   {
+%     \@@_model_separation_cmyk:nnnnnn ,
+%     \@@_model_separation_gray:nnnnnn ,
+%     \@@_model_separation_rgb:nnnnnn
+%   }
+% \begin{macro}{\@@_model_convert:nnn}
+% \begin{macro}{\@@_model_separation_CIELAB:nnnnnn}
+% \begin{macro}{\@@_model_separation_CIELAB:nnnnnnn}
 %   Separations must have a \enquote{real} name, which is pretty easy to find.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_model_separation:n #1
@@ -1748,16 +1751,16 @@
 %   Setting up for CIELAB needs a bit more work: there is the illuminant and
 %   the need for an appropriate object.
 %    \begin{macrocode}
-\cs_new_protected:Npn \@@_model_separation_cielab:nnnnnn #1#2#3#4#5#6
+\cs_new_protected:Npn \@@_model_separation_CIELAB:nnnnnn #1#2#3#4#5#6
   {
     \prop_get:NnNF \l_@@_internal_prop { illuminant }
       \l_@@_internal_tl
       {
         \__kernel_msg_error:nnn { color }
-          { cielab-requires-illuminant } {#1}
+          { CIELAB-requires-illuminant } {#1}
         \tl_set:Nn \l_@@_internal_tl { d50 }
       }
-    \exp_args:NV \@@_model_separation_cielab:nnnnnnn
+    \exp_args:NV \@@_model_separation_CIELAB:nnnnnnn
       \l_@@_internal_tl {#1} {#2} {#3} {#4} {#5} {#6}
   }
 %    \end{macrocode}
@@ -1767,12 +1770,11 @@
 %   cannot be converted to anything else, we fallback to producing black: the
 %   user should set up a second model for colors set up this way.
 %    \begin{macrocode}
-\cs_new_protected:Npn \@@_model_separation_cielab:nnnnnnn #1#2#3#4#5#6#7
+\cs_new_protected:Npn \@@_model_separation_CIELAB:nnnnnnn #1#2#3#4#5#6#7
   {
-    \tl_if_exist:cTF { c_@@_model_whitepoint_cielab_ #1 _tl }
+    \tl_if_exist:cTF { c_@@_model_whitepoint_CIELAB_ #1 _tl }
       {
-        \@@_backend_separation_init_cielab:n {#1}
-        \@@_backend_separation_init_cielab:nnnnn {#2} {#3} {#4} {#5} {#6}
+        \@@_backend_separation_init_CIELAB:nnn {#1} {#3} { #4 ~ #5 ~ #6 }
         \cs_new:cpn { @@_convert_ #2 _cmyk:w } ##1 ~ ##2 \s_@@_stop
           { 0 ~ 0 ~ 0 ~ 1 }
         \cs_new:cpn { @@_convert_ #2 _rgb:w } ##1 ~ ##2 \s_@@_stop
@@ -1782,7 +1784,7 @@
       }
       {
         \__kernel_msg_error:nnn { color }
-          { unknown-cielab-illuminant } {#1}
+          { unknown-CIELAB-illuminant } {#1}
       }
   }
 %    \end{macrocode}
@@ -1794,7 +1796,6 @@
 % \end{macro}
 % \end{macro}
 % \end{macro}
-% \end{macro}
 %
 % \subsection{Diagnostics}
 %
@@ -1830,12 +1831,12 @@
 % \subsection{Messages}
 %
 % \begin{macrocode}
-\__kernel_msg_new:nnnn { color } { cielab-requires-illuminant }
+\__kernel_msg_new:nnnn { color } { CIELAB-requires-illuminant }
   { CIELAB~color~space~'#1'~require~an~illuminant. }
   {
     LaTeX~has~been~asked~to~create~a~separation~color~space~using~
     CIELAB~specifications,~but~no~\\ \\
-    \iow_indent:n { illuminant = <basis> }
+    \iow_indent:n { illuminant~=~<basis> }
     \\ \\
     key~was~given~with~the~correct~information.~LaTeX~will~use~illuminant~
     'd50'~for~recovery.
@@ -1857,7 +1858,7 @@
   {
     LaTeX~has~been~asked~to~create~a~separation~color~space,~
     but~no~\\ \\
-    \iow_indent:n { alternative-model = <model> }
+    \iow_indent:n { alternative-model~=~<model> }
     \\ \\
     key~was~given~with~the~correct~information.
   }
@@ -1866,7 +1867,7 @@
   {
     LaTeX~has~been~asked~to~create~a~separation~color~space,~
     but~no~\\ \\
-    \iow_indent:n { alternative-values = <model> }
+    \iow_indent:n { alternative-values~=~<model> }
     \\ \\
     key~was~given~with~the~correct~information.
   }
@@ -1875,7 +1876,7 @@
   {
     LaTeX~has~been~asked~to~create~a~separation~color~space,~
     but~no~\\ \\
-    \iow_indent:n { name = <formal~name> }
+    \iow_indent:n { name~=~<formal~name> }
     \\ \\
     key~was~given~with~the~correct~information.
   }
@@ -1890,7 +1891,7 @@
   {
     LaTeX~has~been~asked~to~create~a~separation~color~space,~
     but~the~model~given~as\\ \\
-    \iow_indent:n { alternative-model = <model> }
+    \iow_indent:n { alternative-model~=~<model> }
     \\ \\
     is~unknown.
   }
@@ -1900,7 +1901,7 @@
     LaTeX~has~been~asked~to~export~a~color~in~format~'#1',~
     but~this~has~never~been~defined.
   }
-\__kernel_msg_new:nnnn { color } { unknown-cielab-illuminant }
+\__kernel_msg_new:nnnn { color } { unknown-CIELAB-illuminant }
   { Unknown~illuminant~model~'#1'. }
   {
     LaTeX~has~been~asked~to~use~create~a~color~space~using~CIELAB~

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx	2020-09-11 20:56:15 UTC (rev 56323)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
 %
 % \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-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx	2020-09-11 20:56:15 UTC (rev 56323)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
 %
 % \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-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx	2020-09-11 20:56:15 UTC (rev 56323)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
 %
 % \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-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx	2020-09-11 20:56:15 UTC (rev 56323)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx	2020-09-11 20:56:15 UTC (rev 56323)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
 %
 % \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-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx	2020-09-11 20:56:15 UTC (rev 56323)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx	2020-09-11 20:56:15 UTC (rev 56323)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx	2020-09-11 20:56:15 UTC (rev 56323)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx	2020-09-11 20:56:15 UTC (rev 56323)
@@ -110,7 +110,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
 %
 % \maketitle
 %
@@ -1136,7 +1136,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3draw}{2020-09-01}{}
+\ProvidesExplPackage{l3draw}{2020-09-11}{}
   {L3 Experimental core drawing support}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx	2020-09-11 20:56:15 UTC (rev 56323)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
 %
 % \maketitle
 %
@@ -240,7 +240,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3graphics}{2020-09-01}{}
+\ProvidesExplPackage{l3graphics}{2020-09-11}{}
   {L3 Experimental graphics inclusion support}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.dtx	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.dtx	2020-09-11 20:56:15 UTC (rev 56323)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
 %
 % \maketitle
 %
@@ -190,7 +190,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3pdf}{2020-09-01}{}
+\ProvidesExplPackage{l3pdf}{2020-09-11}{}
   {L3 Experimental core PDF support}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx	2020-09-11 20:56:15 UTC (rev 56323)
@@ -48,7 +48,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
 %
 % \maketitle
 %
@@ -166,7 +166,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3str-format}{2020-09-01}{}
+\ProvidesExplPackage{l3str-format}{2020-09-11}{}
   {L3 Experimental string formatting}
 %    \end{macrocode}
 %

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-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx	2020-09-11 20:56:15 UTC (rev 56323)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
 %
 % \maketitle
 %
@@ -135,7 +135,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3sys-shell}{2020-09-01}{}
+\ProvidesExplPackage{l3sys-shell}{2020-09-11}{}
   {L3 Experimental system shell functions}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx	2020-09-11 20:56:15 UTC (rev 56323)
@@ -56,7 +56,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
 %
 % \maketitle
 %
@@ -675,7 +675,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2020-09-01}{}
+\ProvidesExplPackage{xcoffins}{2020-09-11}{}
   {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-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx	2020-09-11 20:56:15 UTC (rev 56323)
@@ -61,7 +61,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
 %
 % \maketitle
 %
@@ -686,7 +686,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3galley}{2020-09-01}{}
+\ProvidesExplPackage{l3galley}{2020-09-11}{}
   {L3 Experimental galley code}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx	2020-09-11 20:56:15 UTC (rev 56323)
@@ -47,7 +47,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
 %
 % \maketitle
 %
@@ -734,7 +734,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2020-09-01}{}
+\ProvidesExplPackage{xgalley}{2020-09-11}{}
   {L3 Experimental galley}
 \RequirePackage{xparse,xtemplate,l3galley}
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def	2020-09-11 20:56:15 UTC (rev 56323)
@@ -25,7 +25,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-dvipdfmx.def}{2020-09-01}{}
+  {l3backend-dvipdfmx.def}{2020-09-11}{}
   {L3 backend support: dvipdfmx}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
@@ -87,19 +87,26 @@
   }
 \cs_new_protected:Npn \__color_backend_select_separation:nn #1#2
   { \__color_backend_select:n { @#1 ~ [#2] } }
+\cs_new_protected:Npn \__color_backend_select:n #1
+  {
+    \__kernel_backend_literal:n { pdf: bc ~ #1 }
+    \group_insert_after:N \__color_backend_reset:
+  }
 \cs_new_protected:Npn \__color_backend_separation_init:nnnnn #1#2#3#4#5
   {
+    \pdf_object_now:nx { dict }
+      {
+        /FunctionType ~ 2
+        /Domain ~ [0 ~ 1]
+        \tl_if_blank:nF {#3} { /Range ~ [#3] }
+        /C0 ~ [#4] ~
+        /C1 ~ [#5] /N ~ 1
+      }
     \__color_backend_separation_init:n
       {
         /Separation
         / \str_convert_pdfname:n {#1} ~ #2 ~
-        <<
-          /FunctionType ~ 2
-          /Domain ~ [0 ~ 1]
-          \tl_if_blank:nF {#3} { /Range ~ [#3] }
-          /C0 ~ [#4] ~
-          /C1 ~ [#5] /N ~ 1
-        >>
+        \pdf_object_last:
       }
   }
 \cs_if_exist:NF \pdf_object_now:nn
@@ -108,36 +115,37 @@
   {
     \__kernel_backend_literal:x
       {
-        pdf:obj ~ @ color \int_use:N \g__color_separation_int \c_space_tl
+        pdf:obj ~ @color \int_use:N \g__color_separation_int \c_space_tl
           [#1]
       }
   }
-\cs_new_protected:Npn \__color_backend_separation_init_cielab:nnnnn #1#2#3#4#5
+\cs_new_protected:Npn \__color_backend_separation_init_CIELAB:nnn #1#2#3
   {
+    \pdf_object_if_exist:nF { __color_illuminant_CIELAB_ #1 }
+      {
+        \pdf_object_new:nn { __color_illuminant_CIELAB_ #1 } { array }
+        \pdf_object_write:nx { __color_illuminant_CIELAB_ #1 }
+          {
+            /Lab ~
+            <<
+             /WhitePoint ~
+               [ \tl_use:c { c__color_model_whitepoint_CIELAB_ #1 _tl } ]
+             /Range ~ [ \c__color_model_range_CIELAB_tl ]
+            >>
+          }
+      }
     \__color_backend_separation_init:nnnnn
       {#2}
-      { \pdf_object_ref:n { __color_illuminant_cielab_ #1 } }
-      { \c__color_model_range_lab_tl }
+      { \pdf_object_ref:n { __color_illuminant_CIELAB_ #1 } }
+      { \c__color_model_range_CIELAB_tl }
       { 100 ~ 0 ~ 0 }
-      { #3 ~ #4 ~ #5 }
+      {#3}
   }
 \cs_if_exist:NF \pdf_object_now:nn
-  { \cs_gset_protected:Npn \__color_backend_separation_init_cielab:nnnnn #1#2#3#4#5 { } }
-\cs_new_protected:Npn \__color_backend_separation_init_cielab:n #1
   {
-    \pdf_object_new:nn { __color_illuminant_cielab_ #1 } { array }
-    \pdf_object_write:nx { __color_illuminant_cielab_ #1 }
-      {
-        /Lab ~
-        <<
-         /WhitePoint ~
-           [ \tl_use:c { c__color_model_whitepoint_cielab_ #1 _tl } ]
-         /Range ~ [ \c__color_model_range_lab_tl ]
-        >>
-     }
+    \cs_gset_protected:Npn \__color_backend_separation_init_CIELAB:nnn #1#2#3
+      { }
   }
-\cs_if_exist:NF \pdf_object_new:nn
-  { \cs_gset_protected:Npn \__color_backend_separation_init_cielab:n #1 { } }
 \cs_new_protected:Npn \__color_backend_fill_cmyk:n #1
   { \__kernel_backend_literal_pdf:n { #1 ~ k } }
 \cs_new_protected:Npn \__color_backend_fill_gray:n #1

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def	2020-09-11 20:56:15 UTC (rev 56323)
@@ -25,7 +25,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-dvips.def}{2020-09-01}{}
+  {l3backend-dvips.def}{2020-09-11}{}
   {L3 backend support: dvips}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
@@ -111,40 +111,157 @@
 \cs_new_protected:Npn \__color_backend_reset:
   { \__kernel_backend_literal:n { color~pop } }
 \cs_new_protected:Npn \__color_backend_select_separation:nn #1#2
-  { \__color_backend_select:n { setspotcolor ~ #1 ~ #2 } }
+  { \__color_backend_select:n { separation ~ #1 ~ #2 } }
 \cs_new_protected:Npx \__color_backend_separation_init:nnnnn #1#2#3#4#5
   {
     \bool_if:NT \g__kernel_backend_header_bool
       {
         \cs_if_exist:NTF \AtBeginDvi
-          { \AtBeginDvi }
+          { \exp_not:N \AtBeginDvi }
           { \use:n }
             {
-                \exp_not:N \__color_backend_separation_init:nnn
-                  {#1} {#2} {#5}
+              \exp_not:N \__color_backend_separation_init_aux:nnnnn
+                {#1} {#2} {#3} {#4} {#5}
             }
       }
   }
-\cs_new_protected:Npn \__color_backend_separation_init:nnn #1#2#3
+\cs_generate_variant:Nn \__color_backend_separation_init:nnnnn { nxx }
+\cs_new_protected:Npn \__color_backend_separation_init_aux:nnnnn #1#2#3#4#5
   {
     \__kernel_backend_literal:e
       {
         !
         TeXDict ~ begin ~
-        /color \int_use:N \g__color_separation_int \c_space_tl
-        [#3] ~ aload ~ pop ~ ( \str_convert_pdfname:n {#1} ) ~
-        find \__color_backend_separation_init:n {#2} customcolor ~ def ~
+        /color \int_use:N \g__color_separation_int
+          {
+            [ ~
+              /Separation ~ ( \str_convert_pdfname:n {#1} ) ~
+              [ ~ #2 ~ ] ~
+                {
+                  \cs_if_exist_use:cF { __color_backend_separation_init_ #2 :nnn }
+                    { \__color_backend_separation_init:nnn }
+                      {#3} {#4} {#5}
+                }
+            ] ~ setcolorspace
+          } ~ def ~
         end
       }
   }
+\cs_new:cpn { __color_backend_separation_init_ /DeviceCMYK :nnn } #1#2#3
+  { \__color_backend_separation_init_Device:Nn 4 {#3} }
+\cs_new:cpn { __color_backend_separation_init_ /DeviceGray :nnn } #1#2#3
+  { \__color_backend_separation_init_Device:Nn 1 {#3} }
+\cs_new:cpn { __color_backend_separation_init_ /DeviceRGB :nnn } #1#2#3
+  { \__color_backend_separation_init_Device:Nn 2 {#3} }
+\cs_new:Npn \__color_backend_separation_init_Device:Nn #1#2
+  {
+    #2 ~
+    \prg_replicate:nn {#1}
+      { #1 ~ index ~ mul ~ #1 ~ 1 ~ roll ~ }
+    \int_eval:n { #1 + 1 } ~ -1 ~ roll ~ pop
+  }
+\cs_new:Npn \__color_backend_separation_init:nnn #1#2#3
+  {
+   \exp_args:Ne \__color_backend_separation_init:nnnn
+     { \__color_backend_separation_init_count:n {#2} }
+     {#1} {#2} {#3}
+  }
+\cs_new:Npn \__color_backend_separation_init_count:n #1
+  { \int_eval:n { 0 \__color_backend_separation_init_count:w #1 ~ \s__color_stop } }
+\cs_new:Npn \__color_backend_separation_init_count:w #1 ~ #2 \s__color_stop
+  {
+    +1
+    \tl_if_blank:nF {#2}
+      { \__color_backend_separation_init_count:w #2 \s__color_stop }
+  }
+\cs_new:Npn \__color_backend_separation_init:nnnn #1#2#3#4
+  {
+    \__color_backend_separation_init:w #3 ~ \s__color_stop #4 ~ \s__color_stop
+    \prg_replicate:nn {#1}
+      {
+        pop ~ 1 ~ index ~ neg ~ 1 ~ index ~ add ~
+        \int_eval:n { 3 * #1 } ~ index ~ mul ~
+        2 ~ index ~ add ~
+        \int_eval:n { 3 * #1 } ~ #1 ~ roll ~
+      }
+    \int_step_function:nnnN {#1} { -1 } { 1 }
+      \__color_backend_separation_init:n
+    \int_eval:n { 4 * #1 + 1 } ~ #1 ~ roll ~
+    \prg_replicate:nn { 3 * #1 + 1 } { pop ~ }
+    \tl_if_blank:nF {#2}
+      { \__color_backend_separation_init:nw {#1} #2 ~ \s__color_stop }
+  }
+\cs_new:Npn \__color_backend_separation_init:w
+  #1 ~ #2 \s__color_stop #3 ~ #4 \s__color_stop
+  {
+    #1 ~ #3 ~ 0 ~
+    \tl_if_blank:nF {#2}
+      { \__color_backend_separation_init:w #2 \s__color_stop #4 \s__color_stop }
+  }
 \cs_new:Npn \__color_backend_separation_init:n #1
+  { \int_eval:n { #1 * 2 } ~ index ~ }
+\cs_new:Npn \__color_backend_separation_init:nw #1#2 ~ #3 ~ #4 \s__color_stop
   {
-    \__color_backend_separation_init:w #1 /Device #1 /Device \s__color_stop
+     #2 ~ #3 ~
+     2 ~ index ~ 2 ~ index ~ lt ~
+       { ~ pop ~ exch ~ pop ~ } ~
+       { ~
+         2 ~ index ~ 1 ~ index ~ gt ~
+           { ~ exch ~ pop ~ exch ~ pop ~ } ~
+           { ~ pop ~ pop ~ } ~
+         ifelse ~
+       }
+    ifelse ~
+    #1 ~ 1 ~ roll ~
+    \tl_if_blank:nF {#4}
+      { \__color_backend_separation_init:nw {#1} #4 \s__color_stop }
   }
-\cs_new:Npn \__color_backend_separation_init:w #1 /Device #2 /Device #3 \s__color_stop
-  { \str_lowercase:n {#2} }
-\cs_new_protected:Npn \__color_backend_separation_init_cielab:nnnnn #1#2#3#4#5 { }
-\cs_new_protected:Npn \__color_backend_separation_init_cielab:n #1 { }
+\cs_new_protected:Npn \__color_backend_separation_init_CIELAB:nnn #1#2#3
+  {
+    \__color_backend_separation_init:nxxnn
+      {#2}
+      {
+        /CIEBasedABC ~
+            << ~
+              /RangeABC ~ [ ~ \c__color_model_range_CIELAB_tl \c_space_tl ] ~
+              /DecodeABC ~
+                [ ~
+                  { ~ 16 ~ add ~ 116 ~ div ~ } ~ bind ~
+                  { ~ 500 ~ div ~ } ~ bind ~
+                  { ~ 200 ~ div ~ } ~ bind ~
+                ] ~
+              /MatrixABC ~ [ ~ 1 ~ 1 ~ 1 ~ 1 ~ 0 ~ 0 ~ 0 ~ 0 ~ -1 ~ ] ~
+              /DecodeLMN ~
+                [ ~
+                  { ~
+                    dup ~ 6 ~ 29 ~ div ~ ge ~
+                      { ~ dup ~ dup ~ mul ~ mul ~ ~ } ~
+                      { ~ 4 ~ 29 ~ div ~ sub ~ 108 ~ 841 ~ div ~ mul ~ } ~
+                    ifelse ~
+                    0.9505 ~ mul ~
+                  } ~ bind ~
+                  { ~
+                    dup ~ 6 ~ 29 ~ div ~ ge ~
+                      { ~ dup ~ dup ~ mul ~ mul ~ } ~
+                      { ~ 4 ~ 29 ~ div ~ sub ~ 108 ~ 841 ~ div ~ mul ~ } ~
+                    ifelse ~
+                  } ~ bind ~
+                  { ~
+                    dup ~ 6 ~ 29 ~ div ~ ge ~
+                      { ~ dup ~ dup ~ mul ~ mul ~ } ~
+                      { ~ 4 ~ 29 ~ div ~ sub ~ 108 ~ 841 ~ div ~ mul ~ } ~
+                    ifelse ~
+                    1.0890 ~ mul ~
+                  } ~ bind
+                ] ~
+              /WhitePoint ~
+                [ ~ \tl_use:c { c__color_model_whitepoint_CIELAB_ #1 _tl } ~ ] ~
+            >>
+      }
+      { \c__color_model_range_CIELAB_tl }
+      { 100 ~ 0 ~ 0 }
+      {#3}
+  }
 \cs_new_protected:Npn \__color_backend_fill_cmyk:n #1
   { \__kernel_backend_postscript:n { /color.fc { #1 ~ setcmykcolor } def } }
 \cs_new_protected:Npn \__color_backend_fill_gray:n #1

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def	2020-09-11 20:56:15 UTC (rev 56323)
@@ -25,7 +25,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-dvisvgm.def}{2020-09-01}{}
+  {l3backend-dvisvgm.def}{2020-09-11}{}
   {L3 backend support: dvisvgm}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
@@ -122,8 +122,7 @@
   { \__kernel_backend_literal:n { color~pop } }
 \cs_new_protected:Npn \__color_backend_select_separation:nn #1#2 { }
 \cs_new_protected:Npn \__color_backend_separation_init:nnnnn #1#2#3#4#5 { }
-\cs_new_protected:Npn \__color_backend_separation_init_cielab:nnnnn #1#2#3#4#5 { }
-\cs_new_protected:Npn \__color_backend_separation_init_cielab:n #1 { }
+\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 }
 \cs_new_protected:Npn \__color_backend_stroke_cmyk:n #1

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def	2020-09-11 20:56:15 UTC (rev 56323)
@@ -25,7 +25,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-luatex.def}{2020-09-01}{}
+  {l3backend-luatex.def}{2020-09-11}{}
   {L3 backend support: PDF output (LuaTeX)}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
@@ -125,17 +125,19 @@
   { \__color_backend_select:n { /#1 ~ cs ~ /#1 ~ CS ~ #2 ~ scn ~ #2 ~ SCN } }
 \cs_new_protected:Npn \__color_backend_separation_init:nnnnn #1#2#3#4#5
   {
+    \pdf_object_now:nx { dict }
+      {
+        /FunctionType ~ 2
+        /Domain ~ [0 ~ 1]
+        \tl_if_blank:nF {#3} { /Range ~ [#3] }
+        /C0 ~ [#4] ~
+        /C1 ~ [#5] /N ~ 1
+      }
     \__color_backend_separation_init:n
       {
         /Separation
         / \str_convert_pdfname:n {#1} ~ #2 ~
-        <<
-          /FunctionType ~ 2
-          /Domain ~ [0 ~ 1]
-          \tl_if_blank:nF {#3} { /Range ~ [#3] }
-          /C0 ~ [#4] ~
-          /C1 ~ [#5] /N ~ 1
-        >>
+        \pdf_object_last:
       }
     \use:x
       {
@@ -151,32 +153,33 @@
   {
     \pdf_object_now:nx { array } {#1}
   }
-\cs_new_protected:Npn \__color_backend_separation_init_cielab:nnnnn #1#2#3#4#5
+\cs_new_protected:Npn \__color_backend_separation_init_CIELAB:nnn #1#2#3
   {
+    \pdf_object_if_exist:nF { __color_illuminant_CIELAB_ #1 }
+      {
+        \pdf_object_new:nn { __color_illuminant_CIELAB_ #1 } { array }
+        \pdf_object_write:nx { __color_illuminant_CIELAB_ #1 }
+          {
+            /Lab ~
+            <<
+             /WhitePoint ~
+               [ \tl_use:c { c__color_model_whitepoint_CIELAB_ #1 _tl } ]
+             /Range ~ [ \c__color_model_range_CIELAB_tl ]
+            >>
+          }
+      }
     \__color_backend_separation_init:nnnnn
       {#2}
-      { \pdf_object_ref:n { __color_illuminant_cielab_ #1 } }
-      { \c__color_model_range_lab_tl }
+      { \pdf_object_ref:n { __color_illuminant_CIELAB_ #1 } }
+      { \c__color_model_range_CIELAB_tl }
       { 100 ~ 0 ~ 0 }
-      { #3 ~ #4 ~ #5 }
+      {#3}
   }
 \cs_if_exist:NF \pdf_object_now:nn
-  { \cs_gset_protected:Npn \__color_backend_separation_init_cielab:nnnnn #1#2#3#4#5 { } }
-\cs_new_protected:Npn \__color_backend_separation_init_cielab:n #1
   {
-    \pdf_object_new:nn { __color_illuminant_cielab_ #1 } { array }
-    \pdf_object_write:nx { __color_illuminant_cielab_ #1 }
-      {
-        /Lab ~
-        <<
-         /WhitePoint ~
-           [ \tl_use:c { c__color_model_whitepoint_cielab_ #1 _tl } ]
-         /Range ~ [ \c__color_model_range_lab_tl ]
-        >>
-     }
+    \cs_gset_protected:Npn \__color_backend_separation_init_CIELAB:nnn #1#2#3
+      { }
   }
-\cs_if_exist:NF \pdf_object_new:nn
-  { \cs_gset_protected:Npn \__color_backend_separation_init_cielab:n #1 { } }
 \cs_new_protected:Npn \__color_backend_fill_cmyk:n #1
   { \__kernel_backend_literal_pdf:n { #1 ~ k } }
 \cs_new_protected:Npn \__color_backend_fill_gray:n #1
@@ -479,7 +482,7 @@
 \cs_new:Npx \__pdf_backend_annotation_last:
   {
     \exp_not:N \int_value:w
-      \exp_not:N \tex_pdffeedback:D lastannot
+      \exp_not:N \tex_pdffeedback:D lastannot ~
       \c_space_tl 0 ~ R
   }
 \cs_new_protected:Npn \__pdf_backend_link_begin_goto:nnw #1#2
@@ -499,7 +502,7 @@
 \cs_new:Npx \__pdf_backend_link_last:
   {
     \exp_not:N \int_value:w
-      \exp_not:N \tex_pdffeedback:D lastlink
+      \exp_not:N \tex_pdffeedback:D lastlink ~
       \c_space_tl 0 ~ R
   }
 \cs_new_protected:Npn \__pdf_backend_link_margin:n #1
@@ -555,7 +558,7 @@
       \int_const:cn
         { c__pdf_backend_object_ \tl_to_str:n {#1} _int }
         { \tex_pdffeedback:D lastobj }
-    \prop_gput:Nnn \exp_not:N \g__pdf_backend_object_prop {#1} {#2}
+    \prop_gput:Nnn \g__pdf_backend_object_prop {#1} {#2}
   }
 \cs_new:Npn \__pdf_backend_object_ref:n #1
   { \int_use:c { c__pdf_backend_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R }

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def	2020-09-11 20:56:15 UTC (rev 56323)
@@ -25,7 +25,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-pdftex.def}{2020-09-01}{}
+  {l3backend-pdftex.def}{2020-09-11}{}
   {L3 backend support: PDF output (pdfTeX)}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
@@ -125,17 +125,19 @@
   { \__color_backend_select:n { /#1 ~ cs ~ /#1 ~ CS ~ #2 ~ scn ~ #2 ~ SCN } }
 \cs_new_protected:Npn \__color_backend_separation_init:nnnnn #1#2#3#4#5
   {
+    \pdf_object_now:nx { dict }
+      {
+        /FunctionType ~ 2
+        /Domain ~ [0 ~ 1]
+        \tl_if_blank:nF {#3} { /Range ~ [#3] }
+        /C0 ~ [#4] ~
+        /C1 ~ [#5] /N ~ 1
+      }
     \__color_backend_separation_init:n
       {
         /Separation
         / \str_convert_pdfname:n {#1} ~ #2 ~
-        <<
-          /FunctionType ~ 2
-          /Domain ~ [0 ~ 1]
-          \tl_if_blank:nF {#3} { /Range ~ [#3] }
-          /C0 ~ [#4] ~
-          /C1 ~ [#5] /N ~ 1
-        >>
+        \pdf_object_last:
       }
     \use:x
       {
@@ -151,32 +153,33 @@
   {
     \pdf_object_now:nx { array } {#1}
   }
-\cs_new_protected:Npn \__color_backend_separation_init_cielab:nnnnn #1#2#3#4#5
+\cs_new_protected:Npn \__color_backend_separation_init_CIELAB:nnn #1#2#3
   {
+    \pdf_object_if_exist:nF { __color_illuminant_CIELAB_ #1 }
+      {
+        \pdf_object_new:nn { __color_illuminant_CIELAB_ #1 } { array }
+        \pdf_object_write:nx { __color_illuminant_CIELAB_ #1 }
+          {
+            /Lab ~
+            <<
+             /WhitePoint ~
+               [ \tl_use:c { c__color_model_whitepoint_CIELAB_ #1 _tl } ]
+             /Range ~ [ \c__color_model_range_CIELAB_tl ]
+            >>
+          }
+      }
     \__color_backend_separation_init:nnnnn
       {#2}
-      { \pdf_object_ref:n { __color_illuminant_cielab_ #1 } }
-      { \c__color_model_range_lab_tl }
+      { \pdf_object_ref:n { __color_illuminant_CIELAB_ #1 } }
+      { \c__color_model_range_CIELAB_tl }
       { 100 ~ 0 ~ 0 }
-      { #3 ~ #4 ~ #5 }
+      {#3}
   }
 \cs_if_exist:NF \pdf_object_now:nn
-  { \cs_gset_protected:Npn \__color_backend_separation_init_cielab:nnnnn #1#2#3#4#5 { } }
-\cs_new_protected:Npn \__color_backend_separation_init_cielab:n #1
   {
-    \pdf_object_new:nn { __color_illuminant_cielab_ #1 } { array }
-    \pdf_object_write:nx { __color_illuminant_cielab_ #1 }
-      {
-        /Lab ~
-        <<
-         /WhitePoint ~
-           [ \tl_use:c { c__color_model_whitepoint_cielab_ #1 _tl } ]
-         /Range ~ [ \c__color_model_range_lab_tl ]
-        >>
-     }
+    \cs_gset_protected:Npn \__color_backend_separation_init_CIELAB:nnn #1#2#3
+      { }
   }
-\cs_if_exist:NF \pdf_object_new:nn
-  { \cs_gset_protected:Npn \__color_backend_separation_init_cielab:n #1 { } }
 \cs_new_protected:Npn \__color_backend_fill_cmyk:n #1
   { \__kernel_backend_literal_pdf:n { #1 ~ k } }
 \cs_new_protected:Npn \__color_backend_fill_gray:n #1
@@ -479,7 +482,7 @@
 \cs_new:Npx \__pdf_backend_annotation_last:
   {
     \exp_not:N \int_value:w
-      \exp_not:N \tex_pdfannot:D
+      \exp_not:N \tex_pdflastannot:D
       \c_space_tl 0 ~ R
   }
 \cs_new_protected:Npn \__pdf_backend_link_begin_goto:nnw #1#2
@@ -555,7 +558,7 @@
       \int_const:cn
         { c__pdf_backend_object_ \tl_to_str:n {#1} _int }
         { \tex_pdflastobj:D }
-    \prop_gput:Nnn \exp_not:N \g__pdf_backend_object_prop {#1} {#2}
+    \prop_gput:Nnn \g__pdf_backend_object_prop {#1} {#2}
   }
 \cs_new:Npn \__pdf_backend_object_ref:n #1
   { \int_use:c { c__pdf_backend_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R }

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def	2020-09-11 20:56:15 UTC (rev 56323)
@@ -25,7 +25,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-xetex.def}{2020-09-01}{}
+  {l3backend-xetex.def}{2020-09-11}{}
   {L3 backend support: XeTeX}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
@@ -87,19 +87,26 @@
   }
 \cs_new_protected:Npn \__color_backend_select_separation:nn #1#2
   { \__color_backend_select:n { @#1 ~ [#2] } }
+\cs_new_protected:Npn \__color_backend_select:n #1
+  {
+    \__kernel_backend_literal:n { pdf: bc ~ #1 }
+    \group_insert_after:N \__color_backend_reset:
+  }
 \cs_new_protected:Npn \__color_backend_separation_init:nnnnn #1#2#3#4#5
   {
+    \pdf_object_now:nx { dict }
+      {
+        /FunctionType ~ 2
+        /Domain ~ [0 ~ 1]
+        \tl_if_blank:nF {#3} { /Range ~ [#3] }
+        /C0 ~ [#4] ~
+        /C1 ~ [#5] /N ~ 1
+      }
     \__color_backend_separation_init:n
       {
         /Separation
         / \str_convert_pdfname:n {#1} ~ #2 ~
-        <<
-          /FunctionType ~ 2
-          /Domain ~ [0 ~ 1]
-          \tl_if_blank:nF {#3} { /Range ~ [#3] }
-          /C0 ~ [#4] ~
-          /C1 ~ [#5] /N ~ 1
-        >>
+        \pdf_object_last:
       }
   }
 \cs_if_exist:NF \pdf_object_now:nn
@@ -108,36 +115,37 @@
   {
     \__kernel_backend_literal:x
       {
-        pdf:obj ~ @ color \int_use:N \g__color_separation_int \c_space_tl
+        pdf:obj ~ @color \int_use:N \g__color_separation_int \c_space_tl
           [#1]
       }
   }
-\cs_new_protected:Npn \__color_backend_separation_init_cielab:nnnnn #1#2#3#4#5
+\cs_new_protected:Npn \__color_backend_separation_init_CIELAB:nnn #1#2#3
   {
+    \pdf_object_if_exist:nF { __color_illuminant_CIELAB_ #1 }
+      {
+        \pdf_object_new:nn { __color_illuminant_CIELAB_ #1 } { array }
+        \pdf_object_write:nx { __color_illuminant_CIELAB_ #1 }
+          {
+            /Lab ~
+            <<
+             /WhitePoint ~
+               [ \tl_use:c { c__color_model_whitepoint_CIELAB_ #1 _tl } ]
+             /Range ~ [ \c__color_model_range_CIELAB_tl ]
+            >>
+          }
+      }
     \__color_backend_separation_init:nnnnn
       {#2}
-      { \pdf_object_ref:n { __color_illuminant_cielab_ #1 } }
-      { \c__color_model_range_lab_tl }
+      { \pdf_object_ref:n { __color_illuminant_CIELAB_ #1 } }
+      { \c__color_model_range_CIELAB_tl }
       { 100 ~ 0 ~ 0 }
-      { #3 ~ #4 ~ #5 }
+      {#3}
   }
 \cs_if_exist:NF \pdf_object_now:nn
-  { \cs_gset_protected:Npn \__color_backend_separation_init_cielab:nnnnn #1#2#3#4#5 { } }
-\cs_new_protected:Npn \__color_backend_separation_init_cielab:n #1
   {
-    \pdf_object_new:nn { __color_illuminant_cielab_ #1 } { array }
-    \pdf_object_write:nx { __color_illuminant_cielab_ #1 }
-      {
-        /Lab ~
-        <<
-         /WhitePoint ~
-           [ \tl_use:c { c__color_model_whitepoint_cielab_ #1 _tl } ]
-         /Range ~ [ \c__color_model_range_lab_tl ]
-        >>
-     }
+    \cs_gset_protected:Npn \__color_backend_separation_init_CIELAB:nnn #1#2#3
+      { }
   }
-\cs_if_exist:NF \pdf_object_new:nn
-  { \cs_gset_protected:Npn \__color_backend_separation_init_cielab:n #1 { } }
 \cs_new_protected:Npn \__color_backend_fill_cmyk:n #1
   { \__kernel_backend_literal_pdf:n { #1 ~ k } }
 \cs_new_protected:Npn \__color_backend_fill_gray:n #1

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty	2020-09-11 20:56:15 UTC (rev 56323)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3benchmark.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3benchmark}{2020-09-01}{}
+\ProvidesExplPackage{l3benchmark}{2020-09-11}{}
   {L3 Experimental benchmarking}
 \sys_if_engine_luatex:TF
   {

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty	2020-09-11 20:56:15 UTC (rev 56323)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3color.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3color}{2020-09-01}{}
+\ProvidesExplPackage{l3color}{2020-09-11}{}
   {L3 Experimental color support}
 \tl_new:N \l__color_internal_tl
 \scan_new:N \s__color_mark
@@ -699,14 +699,14 @@
   { \tl_set:Nx #1 {#2} }
 \prop_new:N \l__color_internal_prop
 \int_new:N \g__color_separation_int
-\tl_const:Nn \c__color_model_whitepoint_cielab_a_tl      { 1.0985 ~ 1 ~ 0.3558 }
-\tl_const:Nn \c__color_model_whitepoint_cielab_b_tl      { 0.9807~ 1 ~ 1.1822 }
-\tl_const:Nn \c__color_model_whitepoint_cielab_e_tl      { 1 ~ 1 ~ 1 }
-\tl_const:cn { c__color_model_whitepoint_cielab_d50_tl } { 0.9642 ~, 1 ~ 0.8251 }
-\tl_const:cn { c__color_model_whitepoint_cielab_d55_tl } { 0.9568 ~ 1 ~ 0.9214 }
-\tl_const:cn { c__color_model_whitepoint_cielab_d65_tl } { 0.9504 ~ 1 ~ 1.0888 }
-\tl_const:cn { c__color_model_whitepoint_cielab_d75_tl } { 0.9497 ~ 1 ~ 1.2261 }
-\tl_const:Nn \c__color_model_range_cielab_tl { -128 ~ 127 ~ -128 ~ 127 }
+\tl_const:Nn \c__color_model_whitepoint_CIELAB_a_tl      { 1.0985 ~ 1 ~ 0.3558 }
+\tl_const:Nn \c__color_model_whitepoint_CIELAB_b_tl      { 0.9807 ~ 1 ~ 1.1822 }
+\tl_const:Nn \c__color_model_whitepoint_CIELAB_e_tl      { 1 ~ 1 ~ 1 }
+\tl_const:cn { c__color_model_whitepoint_CIELAB_d50_tl } { 0.9642 ~ 1 ~ 0.8251 }
+\tl_const:cn { c__color_model_whitepoint_CIELAB_d55_tl } { 0.9568 ~ 1 ~ 0.9214 }
+\tl_const:cn { c__color_model_whitepoint_CIELAB_d65_tl } { 0.9504 ~ 1 ~ 1.0888 }
+\tl_const:cn { c__color_model_whitepoint_CIELAB_d75_tl } { 0.9497 ~ 1 ~ 1.2261 }
+\tl_const:Nn \c__color_model_range_CIELAB_tl { 0 ~ 100 ~ -128 ~ 127 ~ -128 ~ 127 }
 \cs_new_protected:Npn \color_model_new:nnn #1#2#3
   {
     \exp_args:Nee \__color_model_new:nnn
@@ -858,24 +858,23 @@
           \c_space_tl \exp_not:N \s__color_stop
       }
   }
-\cs_new_protected:Npn \__color_model_separation_cielab:nnnnnn #1#2#3#4#5#6
+\cs_new_protected:Npn \__color_model_separation_CIELAB:nnnnnn #1#2#3#4#5#6
   {
     \prop_get:NnNF \l__color_internal_prop { illuminant }
       \l__color_internal_tl
       {
         \__kernel_msg_error:nnn { color }
-          { cielab-requires-illuminant } {#1}
+          { CIELAB-requires-illuminant } {#1}
         \tl_set:Nn \l__color_internal_tl { d50 }
       }
-    \exp_args:NV \__color_model_separation_cielab:nnnnnnn
+    \exp_args:NV \__color_model_separation_CIELAB:nnnnnnn
       \l__color_internal_tl {#1} {#2} {#3} {#4} {#5} {#6}
   }
-\cs_new_protected:Npn \__color_model_separation_cielab:nnnnnnn #1#2#3#4#5#6#7
+\cs_new_protected:Npn \__color_model_separation_CIELAB:nnnnnnn #1#2#3#4#5#6#7
   {
-    \tl_if_exist:cTF { c__color_model_whitepoint_cielab_ #1 _tl }
+    \tl_if_exist:cTF { c__color_model_whitepoint_CIELAB_ #1 _tl }
       {
-        \__color_backend_separation_init_cielab:n {#1}
-        \__color_backend_separation_init_cielab:nnnnn {#2} {#3} {#4} {#5} {#6}
+        \__color_backend_separation_init_CIELAB:nnn {#1} {#3} { #4 ~ #5 ~ #6 }
         \cs_new:cpn { __color_convert_ #2 _cmyk:w } ##1 ~ ##2 \s__color_stop
           { 0 ~ 0 ~ 0 ~ 1 }
         \cs_new:cpn { __color_convert_ #2 _rgb:w } ##1 ~ ##2 \s__color_stop
@@ -885,7 +884,7 @@
       }
       {
         \__kernel_msg_error:nnn { color }
-          { unknown-cielab-illuminant } {#1}
+          { unknown-CIELAB-illuminant } {#1}
       }
   }
 \cs_new_protected:Npn \color_show:n #1
@@ -908,12 +907,12 @@
   {
     \msg_show_item_unbraced:nn { model } {#1}
   }
-\__kernel_msg_new:nnnn { color } { cielab-requires-illuminant }
+\__kernel_msg_new:nnnn { color } { CIELAB-requires-illuminant }
   { CIELAB~color~space~'#1'~require~an~illuminant. }
   {
     LaTeX~has~been~asked~to~create~a~separation~color~space~using~
     CIELAB~specifications,~but~no~\\ \\
-    \iow_indent:n { illuminant = <basis> }
+    \iow_indent:n { illuminant~=~<basis> }
     \\ \\
     key~was~given~with~the~correct~information.~LaTeX~will~use~illuminant~
     'd50'~for~recovery.
@@ -935,7 +934,7 @@
   {
     LaTeX~has~been~asked~to~create~a~separation~color~space,~
     but~no~\\ \\
-    \iow_indent:n { alternative-model = <model> }
+    \iow_indent:n { alternative-model~=~<model> }
     \\ \\
     key~was~given~with~the~correct~information.
   }
@@ -944,7 +943,7 @@
   {
     LaTeX~has~been~asked~to~create~a~separation~color~space,~
     but~no~\\ \\
-    \iow_indent:n { alternative-values = <model> }
+    \iow_indent:n { alternative-values~=~<model> }
     \\ \\
     key~was~given~with~the~correct~information.
   }
@@ -953,7 +952,7 @@
   {
     LaTeX~has~been~asked~to~create~a~separation~color~space,~
     but~no~\\ \\
-    \iow_indent:n { name = <formal~name> }
+    \iow_indent:n { name~=~<formal~name> }
     \\ \\
     key~was~given~with~the~correct~information.
   }
@@ -968,7 +967,7 @@
   {
     LaTeX~has~been~asked~to~create~a~separation~color~space,~
     but~the~model~given~as\\ \\
-    \iow_indent:n { alternative-model = <model> }
+    \iow_indent:n { alternative-model~=~<model> }
     \\ \\
     is~unknown.
   }
@@ -978,7 +977,7 @@
     LaTeX~has~been~asked~to~export~a~color~in~format~'#1',~
     but~this~has~never~been~defined.
   }
-\__kernel_msg_new:nnnn { color } { unknown-cielab-illuminant }
+\__kernel_msg_new:nnnn { color } { unknown-CIELAB-illuminant }
   { Unknown~illuminant~model~'#1'. }
   {
     LaTeX~has~been~asked~to~use~create~a~color~space~using~CIELAB~

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty	2020-09-11 20:56:15 UTC (rev 56323)
@@ -28,7 +28,7 @@
 %% 
 %% File: l3draw.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3draw}{2020-09-01}{}
+\ProvidesExplPackage{l3draw}{2020-09-11}{}
   {L3 Experimental core drawing support}
 \RequirePackage { l3color }
 \scan_new:N \s__draw_mark

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty	2020-09-11 20:56:15 UTC (rev 56323)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3graphics.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3graphics}{2020-09-01}{}
+\ProvidesExplPackage{l3graphics}{2020-09-11}{}
   {L3 Experimental graphics inclusion support}
 \ior_new:N \l__graphics_tmp_ior
 \tl_new:N  \l__graphics_tmp_tl

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3pdf/l3pdf.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3pdf/l3pdf.sty	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3pdf/l3pdf.sty	2020-09-11 20:56:15 UTC (rev 56323)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3pdf.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3pdf}{2020-09-01}{}
+\ProvidesExplPackage{l3pdf}{2020-09-11}{}
   {L3 Experimental core PDF support}
 \scan_new:N \s__pdf_stop
 \bool_new:N \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-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty	2020-09-11 20:56:15 UTC (rev 56323)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3str-format.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3str-format}{2020-09-01}{}
+\ProvidesExplPackage{l3str-format}{2020-09-11}{}
   {L3 Experimental string formatting}
 \cs_generate_variant:Nn \use:nn { nf }
 \cs_generate_variant:Nn \use:nnn { fnf }

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-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty	2020-09-11 20:56:15 UTC (rev 56323)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3sys-shell.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3sys-shell}{2020-09-01}{}
+\ProvidesExplPackage{l3sys-shell}{2020-09-11}{}
   {L3 Experimental system shell functions}
 \scan_new:N \s__sys_stop
 \quark_new:N \q__sys_nil

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty	2020-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty	2020-09-11 20:56:15 UTC (rev 56323)
@@ -20,7 +20,7 @@
 %% 
 %% File: xcoffins.dtx
 \RequirePackage{xparse}
-\ProvidesExplPackage{xcoffins}{2020-09-01}{}
+\ProvidesExplPackage{xcoffins}{2020-09-11}{}
   {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-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty	2020-09-11 20:56:15 UTC (rev 56323)
@@ -32,7 +32,7 @@
       }%
     \endinput
   }
-\ProvidesExplPackage{l3galley}{2020-09-01}{}
+\ProvidesExplPackage{l3galley}{2020-09-11}{}
   {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-09-11 20:52:13 UTC (rev 56322)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty	2020-09-11 20:56:15 UTC (rev 56323)
@@ -20,7 +20,7 @@
 %% 
 %% File: xgalley.dtx
 \RequirePackage{xparse}
-\ProvidesExplPackage{xgalley}{2020-09-01}{}
+\ProvidesExplPackage{xgalley}{2020-09-11}{}
   {L3 Experimental galley}
 \RequirePackage{xparse,xtemplate,l3galley}
 \clist_new:N \l__galley_tmpa_clist



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