diff options
author | Karl Berry <karl@freefriends.org> | 2020-06-03 21:26:23 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-06-03 21:26:23 +0000 |
commit | 810785e2302cd260eb73f01e897c5e5978963cb8 (patch) | |
tree | a832daf8f6a5bc8c0d1dc54758abb5561e93cdb9 /Master/texmf-dist/source | |
parent | 27b8d6a6263cb4e808d7f6ad452462f9f455e97c (diff) |
l3 (3jun20)
git-svn-id: svn://tug.org/texlive/trunk@55406 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source')
82 files changed, 403 insertions, 187 deletions
diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx index 71085fb1bac..26c516150af 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-05} +% \date{Released 2020-06-03} % % \maketitle % @@ -71,23 +71,23 @@ %<*package> \ProvidesExplFile %<*dvipdfmx> - {l3backend-dvipdfmx.def}{2020-05-05}{} + {l3backend-dvipdfmx.def}{2020-06-03}{} {L3 backend support: dvipdfmx} %</dvipdfmx> %<*dvips> - {l3backend-dvips.def}{2020-05-05}{} + {l3backend-dvips.def}{2020-06-03}{} {L3 backend support: dvips} %</dvips> %<*dvisvgm> - {l3backend-dvisvgm.def}{2020-05-05}{} + {l3backend-dvisvgm.def}{2020-06-03}{} {L3 backend support: dvisvgm} %</dvisvgm> %<*pdfmode> - {l3backend-pdfmode.def}{2020-05-05}{} + {l3backend-pdfmode.def}{2020-06-03}{} {L3 backend support: PDF mode} %</pdfmode> %<*xdvipdfmx> - {l3backend-xdvipdfmx.def}{2020-05-05}{} + {l3backend-xdvipdfmx.def}{2020-06-03}{} {L3 backend support: xdvipdfmx} %</xdvipdfmx> %</package> diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx index 5544192ea60..323756837e4 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-05} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx index faadeb83add..2b3e4d37084 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-05} +% \date{Released 2020-06-03} % % \maketitle % @@ -98,10 +98,10 @@ } { \exp_last_unbraced:Nx \@@_backend_pickup:w - { \current@color } \q_stop #1 + { \current@color } \s_@@_stop #1 } } - \cs_new_protected:Npn \@@_backend_pickup:w #1 ~ #2 \q_stop #3 + \cs_new_protected:Npn \@@_backend_pickup:w #1 ~ #2 \s_@@_stop #3 { \tl_set:Nn #3 { #1 ~ #2 } } } } @@ -110,17 +110,17 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\@@_backend_cmyk:nnnn} -% \begin{macro}{\@@_backend_gray:n} -% \begin{macro}{\@@_backend_rgb:nnn} -% \begin{macro}{\@@_backend_spot:nn} +% \begin{macro}{\@@_backend_cmyk:w} +% \begin{macro}{\@@_backend_gray:w} +% \begin{macro}{\@@_backend_rgb:w} +% \begin{macro}{\@@_backend_spot:w} % \begin{macro}{\@@_backend_select:n, \@@_backend_select:x} % \begin{macro}{\@@_backend_reset:} % \begin{macro}{color.fc} % Push the data to the stack. In the case of \texttt{dvips} also reset the % drawing fill color in raw PostScript. % \begin{macrocode} -\cs_new_protected:Npn \@@_backend_cmyk:nnnn #1#2#3#4 +\cs_new_protected:Npn \@@_backend_cmyk:w #1 ~ #2 ~ #3 ~ #4 \s_@@_stop { \@@_backend_select:x { @@ -129,14 +129,14 @@ \fp_eval:n {#3} ~ \fp_eval:n {#4} } } -\cs_new_protected:Npn \@@_backend_gray:n #1 +\cs_new_protected:Npn \@@_backend_gray:w #1 \s_@@_stop { \@@_backend_select:x { gray~ \fp_eval:n {#1} } } -\cs_new_protected:Npn \@@_backend_rgb:nnn #1#2#3 +\cs_new_protected:Npn \@@_backend_rgb:w #1 ~ #2 ~ #3 \s_@@_stop { \@@_backend_select:x { rgb~ \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} } } -\cs_new_protected:Npn \@@_backend_spot:nn #1#2 +\cs_new_protected:Npn \@@_backend_spot:w #1 ~ #2 \s_@@_stop { \@@_backend_select:n { #1 } } \cs_new_protected:Npn \@@_backend_select:n #1 { @@ -186,10 +186,10 @@ \cs_set_protected:Npn \@@_backend_pickup:N #1 { \exp_last_unbraced:Nx \@@_backend_pickup:w - { \current@color } ~ 0 ~ 0 ~ 0 \q_stop #1 + { \current@color } ~ 0 ~ 0 ~ 0 \s_@@_stop #1 } \cs_new_protected:Npn \@@_backend_pickup:w - #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 \q_stop #7 + #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 \s_@@_stop #7 { \str_if_eq:nnTF {#2} { g } { \tl_set:Nn #7 { gray ~ #1 } } @@ -226,47 +226,47 @@ % \end{macrocode} % \end{variable} % -% \begin{macro}{\@@_backend_cmyk:nnnn, \@@_backend_cmyk_aux:nnnn} -% \begin{macro}{\@@_backend_gray:n, \@@_backend_gray_aux:n} -% \begin{macro}{\@@_backend_rgb:nnn, \@@_backend_rgb_aux:nnn} -% \begin{macro}{\@@_backend_spot:nn} +% \begin{macro}{\@@_backend_cmyk:w, \@@_backend_cmyk:nnnn} +% \begin{macro}{\@@_backend_gray:w, \@@_backend_gray:n} +% \begin{macro}{\@@_backend_rgb:w, \@@_backend_rgb:nnn} +% \begin{macro}{\@@_backend_spot:w} % \begin{macro}{\@@_backend_select:n, \@@_backend_select:x} % \begin{macro}{\@@_backend_reset:} % Simply dump the data, but allowing for \LuaTeX{}. % \begin{macrocode} -\cs_new_protected:Npn \@@_backend_cmyk:nnnn #1#2#3#4 +\cs_new_protected:Npn \@@_backend_cmyk:w #1 ~ #2 ~ #3 ~ #4 \s_@@_stop { \use:x { - \@@_backend_cmyk_aux:nnnn + \@@_backend_cmyk:nnnn { \fp_eval:n {#1} } { \fp_eval:n {#2} } { \fp_eval:n {#3} } { \fp_eval:n {#4} } } } -\cs_new_protected:Npn \@@_backend_cmyk_aux:nnnn #1#2#3#4 +\cs_new_protected:Npn \@@_backend_cmyk:nnnn #1#2#3#4 { \@@_backend_select:n { #1 ~ #2 ~ #3 ~ #4 ~ k ~ #1 ~ #2 ~ #3 ~ #4 ~ K } } +\cs_new_protected:Npn \@@_backend_gray:w #1 \s_@@_stop + { \exp_args:Nx \@@_backend_gray:n { \fp_eval:n {#1} } } \cs_new_protected:Npn \@@_backend_gray:n #1 - { \exp_args:Nx \@@_backend_gray_aux:n { \fp_eval:n {#1} } } -\cs_new_protected:Npn \@@_backend_gray_aux:n #1 { \@@_backend_select:n { #1 ~ g ~ #1 ~ G } } -\cs_new_protected:Npn \@@_backend_rgb:nnn #1#2#3 +\cs_new_protected:Npn \@@_backend_rgb:w #1~ #2 ~ #3 \s_@@_stop { \use:x { - \@@_backend_rgb_aux:nnn + \@@_backend_rgb:nnn { \fp_eval:n {#1} } { \fp_eval:n {#2} } { \fp_eval:n {#3} } } } -\cs_new_protected:Npn \@@_backend_rgb_aux:nnn #1#2#3 +\cs_new_protected:Npn \@@_backend_rgb:nnn #1#2#3 { \@@_backend_select:n { #1 ~ #2 ~ #3 ~ rg ~ #1 ~ #2 ~ #3 ~ RG } } -\cs_new_protected:Npn \@@_backend_spot:nn #1#2 +\cs_new_protected:Npn \@@_backend_spot:w #1 ~ #2 \s_@@_stop { \@@_backend_select:n { /#1 ~ cs ~ /#1 ~ CS ~ #2 ~ sc ~ #2 ~ SC } } \cs_new_protected:Npx \@@_backend_select:n #1 { diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx index f1d83363db8..6b235e4faae 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-05} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx index f986a2d1a7b..dd19bba9a10 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-05} +% \date{Released 2020-06-03} % % \maketitle % @@ -536,12 +536,12 @@ \cs_new_protected:Npn \@@_backend_include_pdf:n #1 { \tex_XeTeXpdffile:D - \@@_backend_include_pdf_quote:w #1 "#1" \q_stop \c_space_tl + \@@_backend_include_pdf_quote:w #1 "#1" \s_@@_stop \c_space_tl \int_compare:nNnT \l_graphics_page_int > 0 { page ~ \int_use:N \l_graphics_page_int \c_space_tl } \exp_after:wN \@@_backend_getbb_pagebox:w \l_graphics_pagebox_tl } -\cs_new:Npn \@@_backend_include_pdf_quote:w #1 " #2 " #3 \q_stop +\cs_new:Npn \@@_backend_include_pdf_quote:w #1 " #2 " #3 \s_@@_stop { " #2 " } % \end{macrocode} % \end{macro} @@ -635,11 +635,11 @@ dvisvgm:img~ \dim_to_decimal:n { \l_graphics_ury_dim } ~ \dim_to_decimal:n { \l_graphics_ury_dim } ~ - \@@_backend_include_bitmap_quote:w #1 " #1 " \q_stop + \@@_backend_include_bitmap_quote:w #1 " #1 " \s_@@_stop } } \cs_new_eq:NN \@@_backend_include_jpg:n \@@_backend_include_png:n -\cs_new:Npn \@@_backend_include_bitmap_quote:w #1 " #2 " #3 \q_stop +\cs_new:Npn \@@_backend_include_bitmap_quote:w #1 " #2 " #3 \s_@@_stop { " #2 " } % \end{macrocode} % \end{macro} diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx index b3c7f0527ea..955f8a3b144 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-05} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx index 95d1cc6530b..5382b4a92c3 100644 --- a/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx +++ b/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-05} +% \date{Released 2020-06-03} % % \maketitle % @@ -134,8 +134,9 @@ % \begin{macro}{\@@_backend_object_write:nn, \@@_backend_object_write:nx} % \begin{macro} % { -% \@@_backend_object_write_array:nn , -% \@@_backend_object_write_dict:nn , +% \@@_backend_object_write_array:nn , +% \@@_backend_object_write_dict:nn , +% \@@_backend_object_write_fstream:nn , % \@@_backend_object_write_stream:nn % } % \begin{macro}{\@@_backend_object_write_stream:nnn} @@ -166,13 +167,28 @@ \cs_new_protected:Npn \@@_backend_object_write_array:nn #1#2 { \@@_backend_pdfmark:x - { #1 [ ~ \exp_not:n {#2} ~ ] ~ /PUTINTERVAL } + { #1 ~0~ [ ~ \exp_not:n {#2} ~ ] ~ /PUTINTERVAL } } \cs_new_protected:Npn \@@_backend_object_write_dict:nn #1#2 { \@@_backend_pdfmark:x { #1 << \exp_not:n {#2} >> /PUT } } +\cs_new_protected:Npn \@@_backend_object_write_fstream:nn #1#2 + { + \exp_args:Nx + \@@_backend_object_write_fstream:nnn {#1} #2 + } +\cs_new_protected:Npn \@@_backend_object_write_fstream:nnn #1#2#3 + { + \__kernel_backend_postscript:n + { + SDict ~ begin ~ + mark ~ #1 ~ << #2 >> /PUT ~ pdfmark ~ + mark ~ #1 ~ ( #3 )~ ( r )~ file ~ /PUT ~ pdfmark ~ + end + } + } \cs_new_protected:Npn \@@_backend_object_write_stream:nn #1#2 { \exp_args:Nx @@ -182,7 +198,6 @@ { \__kernel_backend_postscript:n { - [nobreak] mark ~ #1 ~ ( #3 ) /PUT ~ pdfmark ~ mark ~ #1 ~ << #2 >> /PUT ~ pdfmark } diff --git a/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx b/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx index 9794e24e5f7..2589bb9c6c1 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Released 2020-05-18} +% \date{Released 2020-06-03} % % \maketitle % @@ -130,7 +130,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3benchmark}{2020-05-18}{} +\ProvidesExplPackage{l3benchmark}{2020-06-03}{} {L3 Experimental benchmarking} %</package> % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx b/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx index 51bbf90bf03..4d758c1ad4f 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Released 2020-05-18} +% \date{Released 2020-06-03} % % \maketitle % @@ -114,6 +114,14 @@ % the matching \cs{cctab_begin:N} was used. % \end{function} % +% \begin{function}[added = 2020-05-19]{\cctab_select:N} +% \begin{syntax} +% \cs{cctab_select:N}\meta{category code table} +% \end{syntax} +% Selects the \meta{category code table} for the scope of the current +% group. +% \end{function} +% % \subsection{Category code table conditionals} % % \begin{function}[pTF]{\cctab_if_exist:N,\cctab_if_exist:c} @@ -171,7 +179,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3cctab}{2020-05-18}{} +\ProvidesExplPackage{l3cctab}{2020-06-03}{} {L3 Experimental category code tables} %</package> % \end{macrocode} @@ -392,7 +400,7 @@ % \cs{cctab_end:}. % \begin{macrocode} \cs_new_protected:Npn \cctab_begin:N #1 - { \@@_chk_if_valid:NT #1 { \__cctab_begin:N #1 } } + { \@@_chk_if_valid:NT #1 { \@@_begin:N #1 } } \cs_generate_variant:Nn \cctab_begin:N { c } \cs_new_protected:Npn \cctab_end: { @@ -403,6 +411,29 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\cctab_select:N} +% \begin{macro}{\@@_end_fast:} +% Select a catcode table within a group. +% \begin{macrocode} +\cs_new_protected:Npn \cctab_select:N #1 + { + \@@_chk_if_valid:NT #1 + { + \@@_begin:N #1 + \group_insert_after:N \@@_end_fast: + } + } +\cs_generate_variant:Nn \cctab_select:N { c } +\cs_new_protected:Npx \@@_end_fast: + { + \int_gsub:Nn \exp_not:N \g_@@_stack_int { 2 } + \sys_if_engine_luatex:T + { \seq_gpop:NN \exp_not:N \g_@@_stack_seq \exp_not:N \l_@@_tmp_tl } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% % \begin{macro}{\cctab_if_exist:N,\cctab_if_exist:c} % Checks whether a \meta{cctab~var} is defined. % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx b/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx index 9438e8110f3..c7addda60be 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Released 2020-05-18} +% \date{Released 2020-06-03} % % \maketitle % @@ -61,7 +61,9 @@ % space. In contrast, various proprietary models are available which define % \emph{spot} colors. % -% The models supported here are +% Core models are used to pass color information to output; these are +% \enquote{native} to \pkg{l3color}. Core models use real numbers in the range +% $[0,1]$ to represent values. The core models supported here are % \begin{itemize} % \item \texttt{gray} Grayscale color, with a single axis running from % $0$ (fully black) to $1$ (fully white) @@ -73,7 +75,24 @@ % (see \url{https://helpx.adobe.com/indesign/using/spot-process-colors.html} % for details of the use of spot colors in print) % \end{itemize} -% +% There are also interface models: these are convenient for users but have +% to be manipulated before storing/passing to the backend. Interface models +% are primarily integer-based: see below for more detail. The supported +% interface models are +% \begin{itemize} +% \item \texttt{Hsb} Hue-saturation-brightness color, with three axes, integer +% in the range $[0,360]$ for hue, real values in the range $[0,1]$ for +% saturation and brightness +% \item \texttt{HSB} Hue-saturation-brightness color, with three axes, integer +% in the range $[0,360]$ for hue, integer values in the range $[0,255]$ for +% saturation and brightness +% \item \texttt{HTML} HTML format representation of RGB color given as a +% single six-digit hexadecimal number +% \item \texttt{RGB} Red-green-blue color, with three axes, one for each of +% the components, values as integers from $0$ to $255$ +% \end{itemize} +% All interface models are internally stored as |rgb|. +% % Additional models may be created to allow mixing of spot colors % with each other or with those from other models. See % Section~\ref{l3color:sec:spot} for more detail of spot color support. @@ -267,7 +286,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3color}{2020-05-18}{} +\ProvidesExplPackage{l3color}{2020-06-03}{} {L3 Experimental color support} %</package> % \end{macrocode} @@ -643,22 +662,28 @@ % \begin{macro}[EXP]{\@@_parse_spot_aux:w} % Turn the input into internal form, also tidying up the number quickly. % \begin{macrocode} -\cs_new:Npn \@@_parse_model_gray:w #1 , #2 \s_@@_stop { \@@_parse_number:n {#1} } +\cs_new:Npn \@@_parse_model_gray:w #1 , #2 \s_@@_stop + { gray ~ \@@_parse_number:n {#1} } \cs_new:Npn \@@_parse_model_rgb:w #1 , #2 , #3 , #4 \s_@@_stop { + rgb ~ \@@_parse_number:n {#1} ~ \@@_parse_number:n {#2} ~ \@@_parse_number:n {#3} } \cs_new:Npn \@@_parse_model_cmyk:w #1 , #2 , #3 , #4 , #5 \s_@@_stop { + cmyk ~ \@@_parse_number:n {#1} ~ \@@_parse_number:n {#2} ~ \@@_parse_number:n {#3} ~ \@@_parse_number:n {#4} } \cs_new:Npn \@@_parse_model_spot:w #1 , #2 \s_@@_stop - { \@@_parse_spot_aux:w #1 ! 100 ! \s_@@_stop } + { + spot ~ + \@@_parse_spot_aux:w #1 ! 100 ! \s_@@_stop + } \cs_new:Npn \@@_parse_spot_aux:w #1 ! #2 ! #3 \s_@@_stop { #1 ~ \fp_eval:n { #2 / 100 } } \cs_new:Npn \@@_parse_number:n #1 @@ -671,6 +696,83 @@ % \end{macro} % \end{macro} % +% \begin{macro}[EXP] +% { +% \@@_parse_model_Hsb:w, \@@_parse_model_HSB:w, +% \@@_parse_model_HTML:w, \@@_parse_model_RGB:w +% } +% \begin{macrocode} +\cs_new:Npn \@@_parse_model_Hsb:w #1 , #2 , #3 , #4 \s_@@_stop + { + \exp_args:Ne \@@_parse_model_hsb:nnn { \fp_eval:n { #1 / 360 } } + {#2} {#3} + } +% \end{macrocode} +% The conversion here is non-trivial but is described at length +% in the \pkg{xcolor} manual. For ease, we calculate the integer +% and fractional parts of the hue first, then use them to work out the +% possible values for $r$, $g$ and $b$ before putting them in the correct +% places. +% \begin{macrocode} +\cs_new:Npn \@@_parse_model_hsb:nnn #1#2#3 + { + rgb ~ + \exp_args:Ne \@@_parse_model_hsb_aux:nnn + { \fp_eval:n { 6 * #1 } } {#2} {#3} + } +\cs_new:Npn \@@_parse_model_hsb_aux:nnn #1#2#3 + { + \exp_args:Nee \@@_parse_model_hsb_aux:nnnn + { \fp_eval:n { floor(#1) } } { \fp_eval:n { #1 - floor(#1) } } + {#2} {#3} + } +\cs_new:Npn \@@_parse_model_hsb_aux:nnnn #1#2#3#4 + { + \use:e + { + \exp_not:N \@@_parse_model_hsb_aux:nnnnn + { \@@_parse_number:n {#4} } + { \fp_eval:n { round(#4 * (1 - #3) ,5) } } + { \fp_eval:n { round(#4 * ( 1 - #3 * #2 ) ,5) } } + { \fp_eval:n { round(#4 * ( 1 - #3 * (1 - #2) ) ,5) } } + {#1} + } + } +\cs_new:Npn \@@_parse_model_hsb_aux:nnnnn #1#2#3#4#5 + { \use:c { @@_parse_model_hsb_ #5 :nnnn } {#1} {#2} {#3} {#4} } +\cs_new:cpn { @@_parse_model_hsb_0:nnnn } #1#2#3#4 { #1 ~ #4 ~ #2 } +\cs_new:cpn { @@_parse_model_hsb_1:nnnn } #1#2#3#4 { #3 ~ #1 ~ #2 } +\cs_new:cpn { @@_parse_model_hsb_2:nnnn } #1#2#3#4 { #2 ~ #1 ~ #4 } +\cs_new:cpn { @@_parse_model_hsb_3:nnnn } #1#2#3#4 { #2 ~ #3 ~ #1 } +\cs_new:cpn { @@_parse_model_hsb_4:nnnn } #1#2#3#4 { #4 ~ #2 ~ #1 } +\cs_new:cpn { @@_parse_model_hsb_5:nnnn } #1#2#3#4 { #1 ~ #2 ~ #3 } +\cs_new:cpn { @@_parse_model_hsb_6:nnnn } #1#2#3#4 { #1 ~ #2 ~ #2 } +\cs_new:Npn \@@_parse_model_HSB:w #1 , #2 , #3 , #4 \s_@@_stop + { + \exp_args:Neee \@@_parse_model_hsb:nnn + { \fp_eval:n {#1 / 360} } + { \fp_eval:n {#2 / 255} } + { \fp_eval:n {#3 / 255} } + } +\cs_new:Npn \@@_parse_model_HTML:w #1 , #2 \s_@@_stop + { \@@_parse_model_HTML_aux:w #1 0 0 0 0 0 0 \s_@@_stop } +\cs_new:Npn \@@_parse_model_HTML_aux:w #1#2#3#4#5#6#7 \s_@@_stop + { + rgb ~ + \fp_eval:n { round(\int_from_hex:n {#1#2} / 255,5) } ~ + \fp_eval:n { round(\int_from_hex:n {#3#4} / 255,5) } ~ + \fp_eval:n { round(\int_from_hex:n {#5#6} / 255,5) } + } +\cs_new:Npn \@@_parse_model_RGB:w #1 , #2 , #3 , #4 \s_@@_stop + { + rgb ~ + \fp_eval:n { round(#1 / 255,5) } ~ + \fp_eval:n { round(#2 / 255,5) } ~ + \fp_eval:n { round(#3 / 255,5) } + } +% \end{macrocode} +% \end{macro} +% % \subsection{Selecting colors (and color models)} % % \begin{variable}{\l_color_fixed_model_tl} @@ -750,11 +852,11 @@ \cs_if_exist:cTF { @@_parse_model_ #1 :w } { \tl_set:Nx #3 - { #1 ~ \use:c { @@_parse_model_ #1 :w } #2 , 0 , 0 , 0 , 0 \s_@@_stop } + { \use:c { @@_parse_model_ #1 :w } #2 , 0 , 0 , 0 , 0 \s_@@_stop } \@@_check_model:N #3 } { - \__kernel_msg_error:nnn { color } { invalid-model } {#1} + \__kernel_msg_error:nnn { color } { unknown-model } {#1} } } % \end{macrocode} @@ -878,18 +980,18 @@ % \subsection{Messages} % % \begin{macrocode} -\__kernel_msg_new:nnnn { color } { invalid-model } - { Invalid~color~model~'#1'. } - { - LaTeX~has~been~asked~to~use~a~color~model~called~'#1',~ - but~this~model~is~not~set~up. - } \__kernel_msg_new:nnnn { color } { unknown-color } { Unknown~color~'#1'. } { LaTeX~has~been~asked~to~use~a~color~named~'#1',~ but~this~has~never~been~defined. } +\__kernel_msg_new:nnnn { color } { unknown-model } + { Unknown~color~model~'#1'. } + { + LaTeX~has~been~asked~to~use~a~color~model~called~'#1',~ + but~this~model~is~not~set~up. + } % \end{macrocode} % % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx index b1c1b8f9bba..bca71310a17 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-05-18} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx index 1711561dc72..690d02578f4 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-05-18} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx index 1d79852ddc1..a90ccb85d86 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-05-18} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx index 6874d149ae1..5e54f11a70a 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-05-18} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx index 13592541066..a33447016ec 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-05-18} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx index ca1f161df56..40823c2cf31 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-05-18} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx index 74f4f6a0720..42adda47ce0 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-05-18} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx index beb6582e0e7..2b0ac7a84c1 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-05-18} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx index f485aa69a25..66b0074a872 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx @@ -110,7 +110,7 @@ % }^^A % } % -% \date{Released 2020-05-18} +% \date{Released 2020-06-03} % % \maketitle % @@ -1146,7 +1146,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3draw}{2020-05-18}{} +\ProvidesExplPackage{l3draw}{2020-06-03}{} {L3 Experimental core drawing support} %</package> % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx b/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx index 36a63818c15..92d93a4c979 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Released 2020-05-18} +% \date{Released 2020-06-03} % % \maketitle % @@ -241,7 +241,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3graphics}{2020-05-18}{} +\ProvidesExplPackage{l3graphics}{2020-06-03}{} {L3 Experimental graphics inclusion support} %</package> % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.dtx b/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.dtx index 2b9f2564e74..b444b49524c 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Released 2020-05-18} +% \date{Released 2020-06-03} % % \maketitle % @@ -191,7 +191,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3pdf}{2020-05-18}{} +\ProvidesExplPackage{l3pdf}{2020-06-03}{} {L3 Experimental core PDF support} %</package> % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx index 5cc7827af5f..5bdde511913 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx @@ -48,7 +48,7 @@ % }^^A % } % -% \date{Released 2020-05-18} +% \date{Released 2020-06-03} % % \maketitle % @@ -167,7 +167,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3str-format}{2020-05-18}{} +\ProvidesExplPackage{l3str-format}{2020-06-03}{} {L3 Experimental string formatting} %</package> % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx b/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx index 52cfcd634ad..6ed71eb1bae 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Released 2020-05-18} +% \date{Released 2020-06-03} % % \maketitle % @@ -136,7 +136,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3sys-shell}{2020-05-18}{} +\ProvidesExplPackage{l3sys-shell}{2020-06-03}{} {L3 Experimental system shell functions} %</package> % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx index 6b1686b6cfd..9b4f9a1250e 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx @@ -56,7 +56,7 @@ % }^^A % } % -% \date{Released 2020-05-18} +% \date{Released 2020-06-03} % % \maketitle % @@ -675,7 +675,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xcoffins}{2020-05-18}{} +\ProvidesExplPackage{xcoffins}{2020-06-03}{} {L3 Experimental design level coffins} % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx index e8a59c07709..2ba61cdf1cf 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx @@ -61,7 +61,7 @@ % }^^A % } % -% \date{Released 2020-05-18} +% \date{Released 2020-06-03} % % \maketitle % @@ -687,7 +687,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3galley}{2020-05-18}{} +\ProvidesExplPackage{l3galley}{2020-06-03}{} {L3 Experimental galley code} %</package> % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx index 577ed6b90b7..ce329cf3603 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx @@ -47,7 +47,7 @@ % }^^A % } % -% \date{Released 2020-05-18} +% \date{Released 2020-06-03} % % \maketitle % @@ -734,7 +734,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xgalley}{2020-05-18}{} +\ProvidesExplPackage{xgalley}{2020-06-03}{} {L3 Experimental galley} \RequirePackage{xparse,xtemplate,l3galley} % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx index 1abb69d728f..e1502692225 100644 --- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx @@ -24,7 +24,7 @@ % %<*driver|generic|package|2ekernel> %</driver|generic|package|2ekernel> -\def\ExplFileDate{2020-05-15}% +\def\ExplFileDate{2020-06-03}% %<*driver> \documentclass[full]{l3doc} \usepackage{graphicx} @@ -51,7 +51,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % @@ -365,6 +365,13 @@ % distinguish variables from functions in the source when the |@@| % convention is used. % +% Please note that you have to use the \pkg{l3docstrip} and +% \textbf{not} the \pkg{docstrip} program in your \texttt{.ins} files +% to make this work---the original \LaTeXe{} \pkg{docstrip} doesn't +% understand the \texttt{@@} and will just copy it into your code +% unmodified! +% +% % \subsubsection{Variables: declaration} % % In well-formed \pkg{expl3} code, variables should always be declared before diff --git a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx index 7d54407af64..9784c0abc80 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx index 44085b9b536..3e56c6d86ff 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx index 6efb99a6cc6..fe25ffaf7fe 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx index 8576615d6e3..90c12659420 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx index e5995e626c2..5b9533868c9 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx index f05a10aa2b4..1a71aaf93fe 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx index eda6dcbd217..5051cd7fd34 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx index d44274517d3..a042985a33a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % @@ -156,8 +156,6 @@ % % \begin{macro}{\@@_select:n, \@@_select:V} % \begin{macro}{\@@_select:w} -% \begin{macro} -% {\@@_select_cmyk:w, \@@_select_gray:w, \@@_select_rgb:w, \@@_select_spot:w} % Take an internal color specification and pass it to the driver. This code % is needed to ensure the current color but will also be used by the % higher-level experimental material. @@ -166,19 +164,10 @@ { \@@_select:w #1 \s_@@_stop } \cs_generate_variant:Nn \@@_select:n { V } \cs_new_protected:Npn \@@_select:w #1 ~ #2 \s_@@_stop - { \use:c { @@_select_ #1 :w } #2 \s_@@_stop } -\cs_new_protected:Npn \@@_select_cmyk:w #1 ~ #2 ~ #3 ~ #4 \s_@@_stop - { \@@_backend_cmyk:nnnn {#1} {#2} {#3} {#4} } -\cs_new_protected:Npn \@@_select_gray:w #1 \s_@@_stop - { \@@_backend_gray:n {#1} } -\cs_new_protected:Npn \@@_select_rgb:w #1 ~ #2 ~ #3 \s_@@_stop - { \@@_backend_rgb:nnn {#1} {#2} {#3} } -\cs_new_protected:Npn \@@_select_spot:w #1 ~ #2 \s_@@_stop - { \@@_backend_spot:nn {#1} {#2} } + { \use:c { @@_backend_ #1 :w } #2 \s_@@_stop } % \end{macrocode} % \end{macro} % \end{macro} -% \end{macro} % % \begin{variable}{\l_@@_current_tl} % As the setting data is used only diff --git a/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx b/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx index 9c7bb162eba..f52b59a86ef 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx index eaa3b19256e..647c6ac1f79 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx index 9c8e7be645f..5a5a8714a96 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx @@ -79,7 +79,7 @@ and all files in that bundle must be distributed together. % % \title{The \cls{l3doc} class} % \author{\Team} -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % \maketitle % \tableofcontents % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx index 54e806acd0a..1651afd3e22 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx index 839b255623b..bb8218281b7 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx index 6e2af806599..e93d117612b 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx index e51ee444416..85926053240 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx index d09d1bb5966..281ef1a9b7f 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx index 00bdfef0696..c0dff407321 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % \maketitle % % \begin{documentation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx index f251d60c4f7..46d089b2c66 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx index c97cd6c83d6..7d01b20929c 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx index cd317883bc0..15150ba29d2 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx index 70ad1c58f3d..42597305e65 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx index c5377c74dda..445f206b511 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx index 9371abf9ef2..9f08120f3b0 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx index 17eac4a16b1..442d10c798d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx index d5e52059b96..2815ad46706 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx index 6dfd891faed..15cdb3b3cd2 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx index 96083857d18..123c376a679 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % \maketitle % % \begin{documentation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx index b8c7aa16575..28d41e3d065 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx index 287c60c8ffd..ff90a196264 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx @@ -49,7 +49,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx index 455dcaf33e6..0338cc9e764 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx index 73043231ef3..9e05786b9ae 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx index 1c5ff9c6e6c..3e4f8659c32 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx index b042b96d3f5..c15b4c7b9e6 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx index 2433d161623..4032b445815 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx index 344e7997e51..0ff70d14655 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx index fc654e2b17d..6fe7da633c0 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx index f8b68f8c23d..af1e78d3ed2 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx index a400eaf1aa0..23472c21411 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx index a7ddadeef66..e699596a5bf 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx index f5076b9ffb8..7158f5e8480 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx index d0ed90c4e7d..c8e466b3cb4 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx index 39f97fd1c1b..e20a6ca6ec0 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx index 0f6c9dbfbef..7b2121719de 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx index fcc18befca6..d8a1466c2fb 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx index 4c781cd471d..f614da1a7ef 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx index 5836bea27ba..4000a2d1f70 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % @@ -186,6 +186,19 @@ % encoding. Instead, the \meta{false code} is performed. % \end{function} % +% \section{Conversion by expansion (for PDF contexts)} +% +% A small number of expandable functions are provided for use in PDF string/name +% contexts. These \emph{assume UTF-8} and \emph{no escaping} in the input. +% +% \begin{function}[EXP]{\str_convert_pdfname:n} +% \begin{syntax} +% \cs{str_convert_pdfname:n} \meta{string} +% \end{syntax} +% As \cs{str_set_convert:Nnnn}, converts the \meta{string} on a byte-by-byte +% basis with non-ASCII codepoints escaped using hashes. +% \end{function} +% % \section[Creating 8-bit mappings]{Creating $8$-bit mappings} % % \begin{function}{\str_declare_eight_bit_encoding:nnn} @@ -345,39 +358,41 @@ % % \subsection{String conditionals} % -% \begin{macro}[EXP]{\@@_if_contains_char:NNT, \@@_if_contains_char:NNTF} -% \begin{macro}[EXP]{\@@_if_contains_char:nNTF} -% \begin{macro}[EXP]{\@@_if_contains_char_aux:NN} +% \begin{macro}[EXP]{\@@_if_contains_char:NnT, \@@_if_contains_char:NnTF} +% \begin{macro}[EXP]{\@@_if_contains_char:nnTF} +% \begin{macro}[EXP]{\@@_if_contains_char_aux:nn,\@@_if_contains_char_auxi:nN} % \begin{macro}[EXP]{\@@_if_contains_char_true:} % \begin{syntax} -% \cs{@@_if_contains_char:nNTF} \Arg{token list} \meta{char} +% \cs{@@_if_contains_char:nnTF} \Arg{token list} \meta{char} % \end{syntax} % Expects the \meta{token list} to be an \meta{other string}: the % caller is responsible for ensuring that no (too-)special catcodes -% remain. Spaces with catcode $10$ are ignored. +% remain. % Loop over the characters of the string, comparing character codes. % The loop is broken if character codes match. Otherwise we return % \enquote{false}. % \begin{macrocode} -\prg_new_conditional:Npnn \@@_if_contains_char:NN #1#2 { T , TF } +\prg_new_conditional:Npnn \@@_if_contains_char:Nn #1#2 { T , TF } { - \exp_after:wN \@@_if_contains_char_aux:NN \exp_after:wN #2 - #1 { \prg_break:n { ? \fi: } } + \exp_after:wN \@@_if_contains_char_aux:nn \exp_after:wN {#1} {#2} + { \prg_break:n { ? \fi: } } \prg_break_point: \prg_return_false: } -\prg_new_conditional:Npnn \@@_if_contains_char:nN #1#2 { TF } +\cs_new:Npn \@@_if_contains_char_aux:nn #1#2 + { \@@_if_contains_char_auxi:nN {#2} #1 } +\prg_new_conditional:Npnn \@@_if_contains_char:nn #1#2 { TF } { - \@@_if_contains_char_aux:NN #2 #1 { \prg_break:n { ? \fi: } } + \@@_if_contains_char_auxi:nN {#2} #1 { \prg_break:n { ? \fi: } } \prg_break_point: \prg_return_false: } -\cs_new:Npn \@@_if_contains_char_aux:NN #1#2 +\cs_new:Npn \@@_if_contains_char_auxi:nN #1#2 { \if_charcode:w #1 #2 \exp_after:wN \@@_if_contains_char_true: \fi: - \@@_if_contains_char_aux:NN #1 + \@@_if_contains_char_auxi:nN {#1} } \cs_new:Npn \@@_if_contains_char_true: { \prg_break:n { \prg_return_true: \use_none:n } } @@ -1595,8 +1610,8 @@ % \end{macro} % % \begin{macro}{\@@_convert_escape_name:} -% \begin{macro}[rEXP]{\@@_escape_name_char:N} -% \begin{macro}[rEXP]{\@@_if_escape_name:NTF} +% \begin{macro}[rEXP]{\@@_escape_name_char:n} +% \begin{macro}[rEXP]{\@@_if_escape_name:nTF} % \begin{variable}{\c_@@_escape_name_str} % \begin{variable}{\c_@@_escape_name_not_str} % For each byte, test whether it should be output as is, or be @@ -1609,22 +1624,22 @@ \str_const:Nn \c_@@_escape_name_not_str { ! " $ & ' } %$ \str_const:Nn \c_@@_escape_name_str { {}/<>[] } \cs_new_protected:Npn \@@_convert_escape_name: - { \@@_convert_gmap:N \@@_escape_name_char:N } -\cs_new:Npn \@@_escape_name_char:N #1 + { \@@_convert_gmap:N \@@_escape_name_char:n } +\cs_new:Npn \@@_escape_name_char:n #1 { - \@@_if_escape_name:NTF #1 {#1} + \@@_if_escape_name:nTF {#1} {#1} { \c_hash_str \@@_output_hexadecimal:n {`#1} } } -\prg_new_conditional:Npnn \@@_if_escape_name:N #1 { TF } +\prg_new_conditional:Npnn \@@_if_escape_name:n #1 { TF } { \if_int_compare:w `#1 < "2A \exp_stop_f: - \@@_if_contains_char:NNTF \c_@@_escape_name_not_str #1 + \@@_if_contains_char:NnTF \c_@@_escape_name_not_str {#1} \prg_return_true: \prg_return_false: \else: \if_int_compare:w `#1 > "7E \exp_stop_f: \prg_return_false: \else: - \@@_if_contains_char:NNTF \c_@@_escape_name_str #1 + \@@_if_contains_char:NnTF \c_@@_escape_name_str {#1} \prg_return_false: \prg_return_true: \fi: \fi: @@ -1652,8 +1667,8 @@ { \@@_if_escape_string:NTF #1 { - \@@_if_contains_char:NNT - \c_@@_escape_string_str #1 + \@@_if_contains_char:NnT + \c_@@_escape_string_str {#1} { \c_backslash_str } #1 } @@ -1683,28 +1698,28 @@ % \end{macro} % % \begin{macro}{\@@_convert_escape_url:} -% \begin{macro}[rEXP]{\@@_escape_url_char:N} -% \begin{macro}[rEXP]{\@@_if_escape_url:NTF} +% \begin{macro}[rEXP]{\@@_escape_url_char:n} +% \begin{macro}[rEXP]{\@@_if_escape_url:nTF} % This function is similar to \cs{@@_convert_escape_name:}, escaping % different characters. % \begin{macrocode} \cs_new_protected:Npn \@@_convert_escape_url: - { \@@_convert_gmap:N \@@_escape_url_char:N } -\cs_new:Npn \@@_escape_url_char:N #1 + { \@@_convert_gmap:N \@@_escape_url_char:n } +\cs_new:Npn \@@_escape_url_char:n #1 { - \@@_if_escape_url:NTF #1 {#1} + \@@_if_escape_url:nTF {#1} {#1} { \c_percent_str \@@_output_hexadecimal:n { `#1 } } } -\prg_new_conditional:Npnn \@@_if_escape_url:N #1 { TF } +\prg_new_conditional:Npnn \@@_if_escape_url:n #1 { TF } { \if_int_compare:w `#1 < "41 \exp_stop_f: - \@@_if_contains_char:nNTF { "-.<> } #1 + \@@_if_contains_char:nnTF { "-.<> } {#1} \prg_return_true: \prg_return_false: \else: \if_int_compare:w `#1 > "7E \exp_stop_f: \prg_return_false: \else: - \@@_if_contains_char:nNTF { [ ] } #1 + \@@_if_contains_char:nnTF { [ ] } {#1} \prg_return_false: \prg_return_true: \fi: \fi: @@ -2581,6 +2596,63 @@ \group_end: % \end{macrocode} % +% \subsection{PDF names and strings by expansion} +% +% \begin{macro}[EXP]{\str_convert_pdfname:n} +% \begin{macro}[EXP]{\@@_convert_pdfname:n} +% \begin{macro}[EXP] +% {\@@_convert_pdfname_bytes:n, \@@_convert_pdfname_bytes_aux:n} +% \begin{macro}[EXP]{\@@_convert_pdfname_bytes_aux:nnn} +% To convert to PDF names by expansion, we work purely on UTF-8 input. The +% first step is to make a string with \enquote{other} spaces, +% after which we use a simple token-by-token approach. In Unicode +% engines, we break down everything before one-byte codepoints, but for +% $8$-bit engines there is no need to worry. Actual escaping is covered +% by the same code as used in the non-expandable route. +% \begin{macrocode} +\cs_new:Npn \str_convert_pdfname:n #1 + { + \exp_args:Ne \tl_to_str:n + { \str_map_function:nN {#1} \@@_convert_pdfname:n } + } +\bool_lazy_or:nnTF + { \sys_if_engine_luatex_p: } + { \sys_if_engine_xetex_p: } + { + \cs_new:Npn \@@_convert_pdfname:n #1 + { + \int_compare:nNnTF { `#1 } > { "7F } + { \@@_convert_pdfname_bytes:n {#1} } + { \@@_escape_name_char:n {#1} } + } + \cs_new:Npn \@@_convert_pdfname_bytes:n #1 + { + \exp_args:Ne \@@_convert_pdfname_bytes_aux:n + { \char_to_utfviii_bytes:n {`#1} } + } + \cs_new:Npn \@@_convert_pdfname_bytes_aux:n #1 + { \@@_convert_pdfname_bytes_aux:nnnn #1 } + \cs_new:Npx \@@_convert_pdfname_bytes_aux:nnnn #1#2#3#4 + { + \c_hash_str \exp_not:N \@@_output_hexadecimal:n {#1} + \c_hash_str \exp_not:N \@@_output_hexadecimal:n {#2} + \exp_not:N \tl_if_blank:nF {#3} + { + \c_hash_str \exp_not:N \@@_output_hexadecimal:n {#3} + \exp_not:N \tl_if_blank:nF {#4} + { + \c_hash_str \exp_not:N \@@_output_hexadecimal:n {#4} + } + } + } + } + { \cs_new_eq:NN \@@_convert_pdfname:n \@@_escape_name_char:n } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% % \begin{macrocode} %</initex|package> % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx index efd5d4f6f80..97d8fa5b436 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx index 15b06c49262..911986e5d8c 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx index ed23d7204ad..d2b228bb80d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx index 312d7e180dc..9509997cfde 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text.dtx index 35f1cbb9818..65032dbe3b9 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3text.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3text.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx index 297bceb6820..23bac066573 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx index 3aa06887054..d265802b0f4 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx index fbdbd04bd9b..b3780ba69ed 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx index 03cdf2f0f15..109d860637b 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-05-15} +% \date{Released 2020-06-03} % % \maketitle % |