[latex3-commits] [git/LaTeX3-latex3-latex3] main: Define color 'pickup' in all cases (0b575cfe2)
Joseph Wright
joseph.wright at morningstar2.co.uk
Mon Aug 22 15:29:43 CEST 2022
Repository : https://github.com/latex3/latex3
On branch : main
Link : https://github.com/latex3/latex3/commit/0b575cfe2c4e6058e3a4e57ede99dd4de39af887
>---------------------------------------------------------------
commit 0b575cfe2c4e6058e3a4e57ede99dd4de39af887
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date: Thu Aug 11 14:11:25 2022 +0100
Define color 'pickup' in all cases
Formally this may need to be made public if
we decide against (re)defining \set at color ourselves.
>---------------------------------------------------------------
0b575cfe2c4e6058e3a4e57ede99dd4de39af887
l3backend/CHANGELOG.md | 3 ++
l3backend/l3backend-color.dtx | 80 +++++++++++++--------------------
l3kernel/CHANGELOG.md | 2 +
l3kernel/l3color.dtx | 12 ++---
l3kernel/testfiles/m3expl001.luatex.tlg | 1 +
l3kernel/testfiles/m3expl001.ptex.tlg | 1 +
l3kernel/testfiles/m3expl001.tlg | 1 +
l3kernel/testfiles/m3expl001.uptex.tlg | 1 +
l3kernel/testfiles/m3expl001.xetex.tlg | 1 +
l3kernel/testfiles/m3expl003.luatex.tlg | 1 +
l3kernel/testfiles/m3expl003.ptex.tlg | 1 +
l3kernel/testfiles/m3expl003.tlg | 1 +
l3kernel/testfiles/m3expl003.uptex.tlg | 1 +
l3kernel/testfiles/m3expl003.xetex.tlg | 1 +
14 files changed, 52 insertions(+), 55 deletions(-)
diff --git a/l3backend/CHANGELOG.md b/l3backend/CHANGELOG.md
index 3c8cb7d6d..ee5dca934 100644
--- a/l3backend/CHANGELOG.md
+++ b/l3backend/CHANGELOG.md
@@ -6,6 +6,9 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+### Changed
+- Approach to setting current color data from LaTeX2e
+
## [2022-08-05]
### Changed
diff --git a/l3backend/l3backend-color.dtx b/l3backend/l3backend-color.dtx
index 336ff4513..1f13f02f0 100644
--- a/l3backend/l3backend-color.dtx
+++ b/l3backend/l3backend-color.dtx
@@ -79,31 +79,24 @@
% \begin{macro}{\@@_backend_pickup:N}
% \begin{macro}{\@@_backend_pickup:w}
% Allow for \LaTeXe{} color. Here, the possible input values are limited:
-% \texttt{dvips}-style colors can mainly be taken as-is with the exception
-% spot ones (here we need a model and a tint). The \texttt{x}-type expansion
+% \texttt{dvips}-style colors can be taken as-is. The \texttt{x}-type expansion
% is there to cover the case where \pkg{xcolor} is in use.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_backend_pickup:N #1 { }
-\cs_if_exist:cT { ver at color.sty }
+\cs_new_protected:Npn \@@_backend_pickup:N #1
{
- \cs_set_protected:Npn \@@_backend_pickup:N #1
+ \exp_args:NV \tl_if_head_is_space:nTF \current at color
{
- \exp_args:NV \tl_if_head_is_space:nTF \current at color
- {
- \tl_set:Nx #1
- {
- { named }
- { \exp_after:wN \use:n \current at color }
- }
- }
- {
- \exp_last_unbraced:Nx \@@_backend_pickup:w
- { \current at color } \s_@@_stop #1
- }
+ \tl_set:Nn #1 { { gray } { 0 } }
+ \msg_warning:nnx { color } { unhandled }
+ { \current at color }
+ }
+ {
+ \exp_last_unbraced:Nx \@@_backend_pickup:w
+ { \current at color } \s_@@_stop #1
}
- \cs_new_protected:Npn \@@_backend_pickup:w #1 ~ #2 \s_@@_stop #3
- { \tl_set:Nn #3 { {#1} {#2} } }
}
+\cs_new_protected:Npn \@@_backend_pickup:w #1 ~ #2 \s_@@_stop #3
+ { \tl_set:Nn #3 { {#1} {#2} } }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -120,41 +113,28 @@
%
% \begin{macro}{\@@_backend_pickup:N}
% \begin{macro}{\@@_backend_pickup:w}
-% The current color in driver-dependent format: pick up the package-mode
-% data if available. We end up converting back and forward in this route as
-% we store our color data in \texttt{dvips} format.
-% The \tn{current at color} needs to be \texttt{x}-expanded before
-% \cs{@@_backend_pickup:w} breaks it apart, because for instance
-% \pkg{xcolor} sets it to be instructions to generate a color
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_backend_pickup:N #1 { }
-\cs_if_exist:cT { ver at color.sty }
+% Same ideas, but with a different backend-dependent format.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_backend_pickup:N #1
{
- \cs_set_protected:Npn \@@_backend_pickup:N #1
- {
- \exp_last_unbraced:Nx \@@_backend_pickup:w
- { \current at color } ~ 0 ~ 0 ~ 0 \s_@@_stop #1
- }
- \cs_new_protected:Npn \@@_backend_pickup:w
- #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 \s_@@_stop #7
+ \exp_last_unbraced:Nx \@@_backend_pickup:w
+ { \current at color } ~ 0 ~ 0 ~ 0 \s_@@_stop #1
+ }
+\cs_new_protected:Npn \@@_backend_pickup:w
+ #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 \s_@@_stop #7
+ {
+ \str_if_eq:nnTF {#2} { g }
+ { \tl_set:Nn #7 { { gray } {#1} } }
{
- \str_if_eq:nnTF {#2} { g }
- { \tl_set:Nn #7 { { gray } {#1} } }
+ \str_if_eq:nnTF {#4} { rg }
+ { \tl_set:Nn #7 { { rgb } { #1 ~ #2 ~ #3 } } }
{
- \str_if_eq:nnTF {#4} { rg }
- { \tl_set:Nn #7 { { rgb } { #1 ~ #2 ~ #3 } } }
+ \str_if_eq:nnTF {#5} { k }
+ { \tl_set:Nn #7 { { cmyk } { #1 ~ #2 ~ #3 ~ #4 } } }
{
- \str_if_eq:nnTF {#5} { k }
- { \tl_set:Nn #7 { { cmyk } { #1 ~ #2 ~ #3 ~ #4 } } }
- {
- \str_if_eq:nnTF {#2} { cs }
- {
- \tl_set:Nx #7 { { \use:n #1 } { #5 } }
- }
- {
- \tl_set:Nn #7 { { gray } { 0 } }
- }
- }
+ \tl_set:Nn #1 { { gray } { 0 } }
+ \msg_warning:nnx { color } { unhandled }
+ { \current at color }
}
}
}
diff --git a/l3kernel/CHANGELOG.md b/l3kernel/CHANGELOG.md
index 3684d6126..4434d84f1 100644
--- a/l3kernel/CHANGELOG.md
+++ b/l3kernel/CHANGELOG.md
@@ -18,6 +18,8 @@ this project uses date-based 'snapshot' version identifiers.
### Changed
- Replace `LaTeX3` in message text by `LaTeX`
+### Changed
+- Approach to setting current color data from LaTeX2e
## [2022-08-05]
### Added
diff --git a/l3kernel/l3color.dtx b/l3kernel/l3color.dtx
index cd25053e6..5fb0c6c6f 100644
--- a/l3kernel/l3color.dtx
+++ b/l3kernel/l3color.dtx
@@ -565,10 +565,7 @@
% current color \enquote{now}.
% \begin{macrocode}
\cs_new_protected:Npn \color_ensure_current:
- {
- \@@_backend_pickup:N \l_@@_current_tl
- \@@_select:N \l_@@_current_tl
- }
+ { \@@_select:N \l_@@_current_tl }
% \end{macrocode}
% \end{macro}
%
@@ -843,7 +840,6 @@
% \begin{macrocode}
\cs_new_protected:Npx \@@_parse:nN #1#2
{
- \exp_not:N \@@_backend_pickup:N \exp_not:N \l_@@_current_tl
\tl_set:Nx \exp_not:c { l_@@_named_ . _tl }
{ \exp_not:N \@@_model:N \exp_not:N \l_@@_current_tl }
\prop_put:NVx \exp_not:c { l_@@_named_ . _prop }
@@ -3100,6 +3096,12 @@
\\ \\
key~was~given~with~the~correct~information.
}
+\msg_new:nnn { color } { unhandled-model }
+ {
+ Unhandled~color~model~in~LaTeX2e~value~"#1":
+ \\ \\
+ falling~back~on~grayscale.
+ }
\msg_new:nnnn { color } { unknown-color }
{ Unknown~color~'#1'. }
{
diff --git a/l3kernel/testfiles/m3expl001.luatex.tlg b/l3kernel/testfiles/m3expl001.luatex.tlg
index b3418503f..36db396ad 100644
--- a/l3kernel/testfiles/m3expl001.luatex.tlg
+++ b/l3kernel/testfiles/m3expl001.luatex.tlg
@@ -29,6 +29,7 @@ Defining \__kernel_backend_scope_end: on line ...
Defining \__kernel_backend_matrix:n on line ...
Defining \__kernel_backend_matrix:x on line ...
Defining \__color_backend_pickup:N on line ...
+Defining \__color_backend_pickup:w on line ...
Defining \l__color_backend_stack_int on line ...
\l__color_backend_stack_int=\count...
Defining \__kernel_color_backend_stack_init:Nnn on line ...
diff --git a/l3kernel/testfiles/m3expl001.ptex.tlg b/l3kernel/testfiles/m3expl001.ptex.tlg
index 090808e0a..8785b8fe3 100644
--- a/l3kernel/testfiles/m3expl001.ptex.tlg
+++ b/l3kernel/testfiles/m3expl001.ptex.tlg
@@ -30,6 +30,7 @@ Defining \__kernel_backend_align_end: on line ...
Defining \__kernel_backend_scope_begin: on line ...
Defining \__kernel_backend_scope_end: on line ...
Defining \__color_backend_pickup:N on line ...
+Defining \__color_backend_pickup:w on line ...
Defining \__color_backend_select_cmyk:n on line ...
Defining \__color_backend_select_gray:n on line ...
Defining \__color_backend_select_named:n on line ...
diff --git a/l3kernel/testfiles/m3expl001.tlg b/l3kernel/testfiles/m3expl001.tlg
index ba24196eb..ba3648e6b 100644
--- a/l3kernel/testfiles/m3expl001.tlg
+++ b/l3kernel/testfiles/m3expl001.tlg
@@ -29,6 +29,7 @@ Defining \__kernel_backend_scope_end: on line ...
Defining \__kernel_backend_matrix:n on line ...
Defining \__kernel_backend_matrix:x on line ...
Defining \__color_backend_pickup:N on line ...
+Defining \__color_backend_pickup:w on line ...
Defining \l__color_backend_stack_int on line ...
\l__color_backend_stack_int=\count...
Defining \__kernel_color_backend_stack_init:Nnn on line ...
diff --git a/l3kernel/testfiles/m3expl001.uptex.tlg b/l3kernel/testfiles/m3expl001.uptex.tlg
index 090808e0a..8785b8fe3 100644
--- a/l3kernel/testfiles/m3expl001.uptex.tlg
+++ b/l3kernel/testfiles/m3expl001.uptex.tlg
@@ -30,6 +30,7 @@ Defining \__kernel_backend_align_end: on line ...
Defining \__kernel_backend_scope_begin: on line ...
Defining \__kernel_backend_scope_end: on line ...
Defining \__color_backend_pickup:N on line ...
+Defining \__color_backend_pickup:w on line ...
Defining \__color_backend_select_cmyk:n on line ...
Defining \__color_backend_select_gray:n on line ...
Defining \__color_backend_select_named:n on line ...
diff --git a/l3kernel/testfiles/m3expl001.xetex.tlg b/l3kernel/testfiles/m3expl001.xetex.tlg
index ce9e001bc..563d67c95 100644
--- a/l3kernel/testfiles/m3expl001.xetex.tlg
+++ b/l3kernel/testfiles/m3expl001.xetex.tlg
@@ -27,6 +27,7 @@ Defining \__kernel_backend_literal_page:n on line ...
Defining \__kernel_backend_scope_begin: on line ...
Defining \__kernel_backend_scope_end: on line ...
Defining \__color_backend_pickup:N on line ...
+Defining \__color_backend_pickup:w on line ...
Defining \__color_backend_select:n on line ...
Defining \__color_backend_select_cmyk:n on line ...
Defining \__color_backend_select_gray:n on line ...
diff --git a/l3kernel/testfiles/m3expl003.luatex.tlg b/l3kernel/testfiles/m3expl003.luatex.tlg
index b3418503f..36db396ad 100644
--- a/l3kernel/testfiles/m3expl003.luatex.tlg
+++ b/l3kernel/testfiles/m3expl003.luatex.tlg
@@ -29,6 +29,7 @@ Defining \__kernel_backend_scope_end: on line ...
Defining \__kernel_backend_matrix:n on line ...
Defining \__kernel_backend_matrix:x on line ...
Defining \__color_backend_pickup:N on line ...
+Defining \__color_backend_pickup:w on line ...
Defining \l__color_backend_stack_int on line ...
\l__color_backend_stack_int=\count...
Defining \__kernel_color_backend_stack_init:Nnn on line ...
diff --git a/l3kernel/testfiles/m3expl003.ptex.tlg b/l3kernel/testfiles/m3expl003.ptex.tlg
index 090808e0a..8785b8fe3 100644
--- a/l3kernel/testfiles/m3expl003.ptex.tlg
+++ b/l3kernel/testfiles/m3expl003.ptex.tlg
@@ -30,6 +30,7 @@ Defining \__kernel_backend_align_end: on line ...
Defining \__kernel_backend_scope_begin: on line ...
Defining \__kernel_backend_scope_end: on line ...
Defining \__color_backend_pickup:N on line ...
+Defining \__color_backend_pickup:w on line ...
Defining \__color_backend_select_cmyk:n on line ...
Defining \__color_backend_select_gray:n on line ...
Defining \__color_backend_select_named:n on line ...
diff --git a/l3kernel/testfiles/m3expl003.tlg b/l3kernel/testfiles/m3expl003.tlg
index ba24196eb..ba3648e6b 100644
--- a/l3kernel/testfiles/m3expl003.tlg
+++ b/l3kernel/testfiles/m3expl003.tlg
@@ -29,6 +29,7 @@ Defining \__kernel_backend_scope_end: on line ...
Defining \__kernel_backend_matrix:n on line ...
Defining \__kernel_backend_matrix:x on line ...
Defining \__color_backend_pickup:N on line ...
+Defining \__color_backend_pickup:w on line ...
Defining \l__color_backend_stack_int on line ...
\l__color_backend_stack_int=\count...
Defining \__kernel_color_backend_stack_init:Nnn on line ...
diff --git a/l3kernel/testfiles/m3expl003.uptex.tlg b/l3kernel/testfiles/m3expl003.uptex.tlg
index 090808e0a..8785b8fe3 100644
--- a/l3kernel/testfiles/m3expl003.uptex.tlg
+++ b/l3kernel/testfiles/m3expl003.uptex.tlg
@@ -30,6 +30,7 @@ Defining \__kernel_backend_align_end: on line ...
Defining \__kernel_backend_scope_begin: on line ...
Defining \__kernel_backend_scope_end: on line ...
Defining \__color_backend_pickup:N on line ...
+Defining \__color_backend_pickup:w on line ...
Defining \__color_backend_select_cmyk:n on line ...
Defining \__color_backend_select_gray:n on line ...
Defining \__color_backend_select_named:n on line ...
diff --git a/l3kernel/testfiles/m3expl003.xetex.tlg b/l3kernel/testfiles/m3expl003.xetex.tlg
index ce9e001bc..563d67c95 100644
--- a/l3kernel/testfiles/m3expl003.xetex.tlg
+++ b/l3kernel/testfiles/m3expl003.xetex.tlg
@@ -27,6 +27,7 @@ Defining \__kernel_backend_literal_page:n on line ...
Defining \__kernel_backend_scope_begin: on line ...
Defining \__kernel_backend_scope_end: on line ...
Defining \__color_backend_pickup:N on line ...
+Defining \__color_backend_pickup:w on line ...
Defining \__color_backend_select:n on line ...
Defining \__color_backend_select_cmyk:n on line ...
Defining \__color_backend_select_gray:n on line ...
More information about the latex3-commits
mailing list.