diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/l3experimental')
30 files changed, 842 insertions, 2211 deletions
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx b/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx index 5383ac46247..1771ac26668 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx @@ -2,7 +2,7 @@ % %% File: l3benchmark.dtx % -% Copyright (C) 2011,2012,2014-2020 The LaTeX3 Project +% Copyright (C) 2011,2012,2014-2021 The LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -38,7 +38,7 @@ % } % % \author{^^A -% The \LaTeX3 Project\thanks +% The \LaTeX{} Project\thanks % {^^A % E-mail: % \href{mailto:latex-team@latex-project.org} @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Released 2020-01-12} +% \date{Released 2021-02-18} % % \maketitle % @@ -125,14 +125,12 @@ % Our working unit is the scaled second, namely $2^{-16}$ seconds. % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} -%<*package> -\ProvidesExplPackage{l3benchmark}{2020-01-12}{} +\ProvidesExplPackage{l3benchmark}{2021-02-18}{} {L3 Experimental benchmarking} -%</package> % \end{macrocode} % % \subsection{Additions to \pkg{l3sys}: elapsed time} @@ -141,7 +139,7 @@ %<@@=sys> % \end{macrocode} % -% \begin{macro}[EXP]{\sys_timer:} +% \begin{macro}[EXP]{\sys_timer:, \@@_elapsedtime:, \@@_resettimer:} % \begin{macro}[EXP,pTF]{\sys_if_timer_exist:} % In \LuaTeX{}, use emulation (see \pkg{l3luatex}), % otherwise try to locate the primitive. The @@ -149,8 +147,27 @@ % \begin{macrocode} \sys_if_engine_luatex:TF { + \cs_new:Npn \@@_elapsedtime: { } + \cs_new:Npn \@@_resettimer: { } + \lua_now:n + { + local~gettimeofday = os.gettimeofday~ + local~epoch = gettimeofday() - os.clock()~ + local~write = tex.write~ + local~tointeger = math.tointeger~ + local~id = luatexbase.new_luafunction'@@_elapsedtime:' + lua.get_functions_table()[id] = function() + write(tointeger((gettimeofday() - epoch)*65536 // 1)) + end~ + token.set_lua('@@_elapsedtime:', id, 'global') + id = luatexbase.new_luafunction'@@_resettimer:' + lua.get_functions_table()[id] = function() + epoch = gettimeofday() + end~ + token.set_lua('@@_resettimer:', id, 'global', 'protected') + } \cs_new:Npn \sys_timer: - { \lua_now:n { l3kernel.elapsedtime() } } + { \@@_elapsedtime: } } { \cs_if_exist:NT \tex_elapsedtime:D @@ -165,8 +182,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\sys_gzero_timer:, \@@_timer_fp:} -% \begin{variable}{\g_@@_timer_base_fp} +% \begin{macro}{\sys_gzero_timer:} % Three case, and in each case we define \cs{sys_gzero_timer:}. % \begin{macrocode} \cs_if_exist:NTF \sys_timer: @@ -174,7 +190,7 @@ \sys_if_engine_luatex:TF { \cs_new_protected:Npn \sys_gzero_timer: - { \lua_now:n { l3kernel.resettimer() } } + { \@@_resettimer: } } { \cs_new_protected:Npn \sys_gzero_timer: { \tex_resettimer:D } } } @@ -200,7 +216,6 @@ } } % \end{macrocode} -% \end{variable} % \end{macro} % % \subsection{Benchmarking code} @@ -576,7 +591,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.ins b/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.ins index ca4c280f820..4b72b69db33 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.ins +++ b/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.ins @@ -2,7 +2,7 @@ File: l3benchmark.ins -Copyright (C) 2011,2018-2020 The LaTeX3 Project +Copyright (C) 2011,2018-2021 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -34,7 +34,7 @@ license information is placed in the derived files. \preamble -Copyright (C) 2018-2020 The LaTeX3 Project +Copyright (C) 2018-2021 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of diff --git a/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx b/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx new file mode 100644 index 00000000000..686df60ccd4 --- /dev/null +++ b/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx @@ -0,0 +1,591 @@ +% \iffalse meta-comment +% +%% File: l3bitset.dtx +% +% Copyright (C) 2020,2021 The LaTeX Project +% +% It may be distributed and/or modified under the conditions of the +% LaTeX Project Public License (LPPL), either version 1.3c of this +% license or (at your option) any later version. The latest version +% of this license is in the file +% +% http://www.latex-project.org/lppl.txt +% +% This file is part of the "l3bitset bundle" (The Work in LPPL) +% and all files in that bundle must be distributed together. +% +% ----------------------------------------------------------------------- +% +% The development version of the bundle can be found at +% +% https://github.com/latex3/latex3 +% +% for those people who are interested. +% +%<*driver> +\documentclass[full]{l3doc} +\begin{document} + \DocInput{\jobname.dtx} +\end{document} +%</driver> +% \fi +% \title{^^A +% The \pkg{l3bitset} package \\ Experimental bitsets ^^A +% } +% +% \author{^^A +% The \LaTeX{} Project\thanks +% {^^A +% E-mail: +% \href{mailto:latex-team@latex-project.org} +% {latex-team@latex-project.org}^^A +% }^^A +% } +% +% \date{Released 2021-02-18} +% +% \maketitle +% \begin{documentation} +% +% This package defines and implements the data type \texttt{bitset}, a vector of +% bits. The size of the vector may grow dynamically. +% Individual bits can be set and unset by names pointing to an index position. +% The names |1|, |2|, |3|, \ldots\ are predeclared and point to the +% index positions $1$, $2$, $3$,\ldots. More names can be added and existing names can +% be changed. +% The index is like all other indices in \pkg{expl3} modules \emph{1-based}. +% A \texttt{bitset} can be output as binary number or---as needed e.g. in a +% PDF dictionary---as decimal (arabic) number. +% Currently only a small subset of the functions provided by the \pkg{bitset} +% package are implemented here, mainly the functions needed to use bitsets in +% PDF dictionaries. +% +% The bitset is stored as a string (but one shouldn't rely on the internal +% representation) and so the vector size is theoretically +% unlimited, only restricted by \TeX-memory. But the functions to set and clear +% bits uses integer functions for the index so bitsets can't be longer +% than $2^{31} - 1$. +% The export function +% \cs{bitset_to_arabic:N} can use functions from the \texttt{int} module only if +% the largest index used for this bitset is smaller then $32$, for longer +% bitsets \texttt{fp} is used and this is slower. +% +% \section{Creating bitsets} +% \begin{function}[added = 2021-01-26,updated=2020-12-29] +% {\bitset_new:N,\bitset_new:c,\bitset_new:Nn, \bitset_new:cn} +% \begin{syntax} +% \cs{bitset_new:N} \meta{bitset var} \\ +% \cs{bitset_new:Nn} \meta{bitset var} +% \{ +% \meta{name1} |=| \meta{index1} |,| +% \meta{name2} |=| \meta{index2} |,| \ldots{} +% \} +% \end{syntax} +% Creates a new \meta{bitset var} or raises an error if the name is already taken. +% The declaration is global. The \meta{bitset var} is initially $0$. +% +% Bitsets are implemented as string variables consisting of +% \texttt{1}'s and \texttt{0}'s. +% The rightmost number is the index position $1$, so +% the string variable can be viewed directly as the binary number. +% But one shouldn't rely on the internal representation, but use the +% dedicated \cs{bitset_to_bin:N} instead to get the binary number. +% +% The name--index pairs given in the second +% argument of \cs{bitset_new:Nn} declares names for some indices, +% which can be used to set and unset bits. +% The names |1|, |2|, |3|, \ldots\ are predeclared and point to the +% index positions $1$, $2$, $3$, \ldots. +% +% \meta{index\ldots} should be a positive number or an +% \meta{integer expression} which evaluates to a positive number. +% The expression is evaluated when the index is used, not a declaration time. +% The names \meta{name\ldots} +% should be unique. Using a number as name, e.g.~|10=1|, is allowed, it +% then overwrites the predeclared name |10|, +% but the index position $10$ can then only be reached if some other +% name for it exists, e.g. |ten=10|. +% It is not necessary to give every index +% a name, and an index can have more than one name. The named index +% can be extended or changed with the next function. +% +% \end{function} +% \begin{function}[added = 2021-01-26] +% {\bitset_addto_named_index:Nn} +% \begin{syntax} +% \cs{bitset_addto_named_index:Nn} \meta{bitset var} +% \{ +% \meta{name1} |=| \meta{index1} |,| +% \meta{name2} |=| \meta{index2} |,| \ldots{} +% \} +% \end{syntax} +% This extends or changes the name--index pairs for \meta{bitset var} +% globally as described for \cs{bitset_new:Nn}. +% +% For example after these settings +% +% \begin{verbatim} +% \bitset_new:Nn \l_pdfannot_F_bitset +% { +% Invisible = 1, +% Hidden = 2, +% Print = 3, +% NoZoom = 4, +% NoRotate = 5, +% NoView = 6, +% ReadOnly = 7, +% Locked = 8, +% ToggleNoView = 9, +% LockedContents = 10 +% } +% \bitset_addto_named_index:Nn \l_pdfannot_F_bitset +% { +% print = 3 +% } +% \end{verbatim} +% it is possible to set bit $3$ by using any of this alternatives: +% \begin{verbatim} +% \bitset_set_true:Nn \l_pdfannot_F_bitset {Print} +% \bitset_set_true:Nn \l_pdfannot_F_bitset {print} +% \bitset_set_true:Nn \l_pdfannot_F_bitset {3} +% \end{verbatim} +% \end{function} +% +% \begin{function}[EXP, pTF,added = 2021-01-26] +% { \bitset_if_exist:N, \bitset_if_exist:c } +% \begin{syntax} +% \cs{bitset_if_exist_p:N} \meta{bitset var} +% \cs{bitset_if_exist:NTF} \meta{bitset var} \Arg{true code} \Arg{false code}% +% \end{syntax} +% Tests whether the \meta{bitset var} exist. +% \end{function} +% +% \section{Setting and unsetting bits} +% +% \begin{function}[added = 2021-01-26] +% { \bitset_set_true:Nn, \bitset_set_true:cn, \bitset_gset_true:Nn, \bitset_gset_true:cn } +% \begin{syntax} +% \cs{bitset_set_true:Nn} \meta{bitset var} \Arg{name}\\ +% \cs{bitset_gset_true:Nn} \meta{bitset var} \Arg{name} +% \end{syntax} +% This sets the bit of the index position represented by \Arg{name} to $1$. +% \Arg{name} should be either one of the predeclared names +% |1|, |2|, |3|, \ldots, or one of the names added manually. +% Index position are 1-based. +% If needed the length of the bit vector is enlarged. +% \end{function} +% +% \begin{function}[added = 2021-01-26] +% { \bitset_set_false:Nn, \bitset_set_false:cn, \bitset_gset_false:Nn, \bitset_set_false:cn } +% \begin{syntax} +% \cs{bitset_set_false:Nn} \meta{bitset var} \Arg{name}\\ +% \cs{bitset_gset_false:Nn} \meta{bitset var} \Arg{name} +% \end{syntax} +% This unsets the bit of the index position represented by \Arg{name} (sets +% it to $0$). +% \Arg{name} should be either one of the predeclared names +% |1|, |2|, |3|, \ldots, or one of the names added manually. +% The index is $1$-based. If the index position is larger +% than the current length of the bit vector +% nothing happens. If the leading (left most) bit is unset, +% zeros are not trimmed but stay in the bit vector and are still shown +% by \cs{bitset_show:N}. +% \end{function} +% +% \begin{function}[added = 2021-01-26] +% {\bitset_clear:N,\bitset_clear:c,\bitset_gclear:N,\bitset_gclear:c} +% \begin{syntax} +% \cs{bitset_clear:N} \meta{bitset var} \\ +% \cs{bitset_gclear:N} \meta{bitset var} +% \end{syntax} +% This resets the bitset to the initial state. The declared names are not changed. +% \end{function} +% +% \section{Using bitsets} +% +% \begin{function}[EXP,added = 2021-01-26] +% { \bitset_item:Nn, \bitset_item:cn } +% \begin{syntax} +% \cs{bitset_item:Nn} \meta{bitset var} \Arg{name} +% \end{syntax} +% \cs{bitset_item:Nn} outputs \texttt{1} if the bit with +% the index number represented by \Arg{name} is set and \texttt{0} otherwise. +% \Arg{name} is either one of the predeclared names +% |1|, |2|, |3|, \ldots, or one of the names added manually. +% \end{function} +% +% \begin{function}[EXP,added = 2021-01-26] +% {\bitset_to_bin:N, \bitset_to_bin:c} +% \begin{syntax} +% \cs{bitset_to_bin:N} \meta{bitset var} +% \end{syntax} +% This leaves the current value of the bitset expressed as +% a binary (string) number in the input stream. +% If no bit has been set yet, the output is zero. +% \end{function} +% \begin{function}[EXP,added = 2021-01-26] +% {\bitset_to_arabic:N, \bitset_to_arabic:c} +% \begin{syntax} +% \cs{bitset_to_arabic:N} \meta{bitset var} +% \end{syntax} +% This leaves the current value of the bitset expressed as +% a decimal number in the input stream. If no bit has been set yet, +% the output is zero. The function uses \cs{int_from_bin:n} if the largest +% index that have been set or unset is smaller then $32$, and a slower implementation +% based on \cs{fp_eval:n} otherwise. +% \end{function} +% +% \begin{function}[added = 2021-01-26] +% {\bitset_show:N, \bitset_show:c} +% \begin{syntax} +% \cs{bitset_show:N} \meta{bitset var} +% \end{syntax} +% Displays the binary and decimal value of the \meta{bitset var} on the terminal, +% \end{function} +% +% \begin{function}[added = 2021-01-26] +% {\bitset_log:N, \bitset_log:c} +% \begin{syntax} +% \cs{bitset_log:N} \meta{bitset var} +% \end{syntax} +% Writes the value of the \meta{bitset var} in the log file. +% \end{function} +% +% \end{documentation} +% +% \begin{implementation} +% \section{\pkg{l3bitset} implementation} +% \TestFiles{m3bitset001,m3bitset002} +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% \begin{macrocode} +%<@@=bitset> +% \end{macrocode} +% \begin{macrocode} +\ProvidesExplPackage{l3bitset}{2021-02-18}{} + {L3 Experimental bitset support} +% \end{macrocode} +% A bitset is a string variable. +% \begin{macro} +% { +% \bitset_new:N, \bitset_new:c +% } +% \begin{macrocode} +\cs_new_protected:Npn \bitset_new:N #1 + { + \__kernel_chk_if_free_cs:N #1 + \cs_gset_eq:NN #1 \c_zero_str + \prop_new:c { g__bitset_ \cs_to_str:N #1 _name_prop } + } + +\cs_new_protected:Npn \bitset_new:Nn #1 #2 + { + \__kernel_chk_if_free_cs:N #1 + \cs_gset_eq:NN #1 \c_zero_str + \prop_new:c { g__bitset_ \cs_to_str:N #1 _name_prop } + \prop_gset_from_keyval:cn + { g__bitset_ \cs_to_str:N #1 _name_prop } + {#2} + } +\cs_generate_variant:Nn \bitset_new:N { c } +% \end{macrocode} +% \end{macro} +% \begin{variable}{\l_@@_tmpa_prop} +% A scratch prop to be able to extend the names properties. +% \begin{macrocode} +\prop_new:N \l_@@_tmpa_prop +% \end{macrocode} +% \end{variable} +% \begin{macro} +% { +% \bitset_addto_named_index:Nn +% } +% \begin{macrocode} +\cs_new_protected:Npn \bitset_addto_named_index:Nn #1#2 + { + \prop_set_from_keyval:Nn \l_@@_tmpa_prop {#2} + \prop_map_inline:Nn \l_@@_tmpa_prop + { + \prop_gput:cnn + { g_@@_ \cs_to_str:N #1 _name_prop } + {##1} + {##2} + } + } +% \end{macrocode} +% \end{macro} +% \begin{macro}[EXP,pTF] +% { +% \bitset_if_exist:N, \bitset_if_exist:c +% } +% Existence tests. +% \begin{macrocode} +\prg_new_eq_conditional:NNn + \bitset_if_exist:N \str_if_exist:N { p , T , F , TF } +\prg_new_eq_conditional:NNn + \bitset_if_exist:c \str_if_exist:c + { p , T , F , TF } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@@_set_true:Nn, \@@_gset_true:Nn, \@@_set_false:Nn, \@@_gset_false:Nn} +% \begin{macro}{\@@_set:NNnN} +% The internal command uses only numbers (integer expressions) for the +% position. +% A bit is set by either extending the string or by splitting it and +% then inserting an $1$. It is not checked if the value was already $1$. +% \begin{macrocode} +\cs_new_protected:Npn \@@_set_true:Nn #1#2 + { \@@_set:NNnN \str_set:Nx #1 {#2} 1 } +\cs_new_protected:Npn \@@_gset_true:Nn #1#2 + { \@@_set:NNnN \str_gset:Nx #1 {#2} 1 } +\cs_new_protected:Npn \@@_set_false:Nn #1#2 + { \@@_set:NNnN \str_set:Nx #1 {#2} 0 } +\cs_new_protected:Npn \@@_gset_false:Nn #1#2 + { \@@_set:NNnN \str_gset:Nx #1 {#2} 0 } +\cs_new_protected:Npn \@@_set:NNnN #1#2#3#4 + { + \int_compare:nNnT {#3} > { 0 } + { + \int_compare:nNnTF { \str_count:N #2 } < {#3} + { + #1 #2 + { + #4 + \prg_replicate:nn { #3 - \str_count:N #2 - 1 } { 0 } + #2 + } + } + { + #1 #2 + { + \str_range:Nnn #2 { 1 } { -1 - (#3) } + #4 + \str_range:Nnn #2 { 1 - (#3) } { -1 } + } + } + } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{variable}{\l_@@_internal_int} +% \begin{macrocode} +\int_new:N \l_@@_internal_int +% \end{macrocode} +% \end{variable} +% +% \begin{macro}[TF]{\@@_test_digits:n} +% \begin{macro}{\@@_test_digits_end:n} +% \begin{macro}{\@@_test_digits:wn} +% \url{https://chat.stackexchange.com/transcript/message/56878159#56878159} +% \begin{macrocode} +\prg_new_protected_conditional:Npnn \@@_test_digits:n #1 { TF } + { + \tex_afterassignment:D \@@_test_digits:w + \l_@@_internal_int = 0 \tl_trim_spaces_apply:nN {#1} \tl_to_str:n + \@@_test_digits_end: + \use_i:nnn \if_false: + \@@_test_digits_end: + \if_int_compare:w \c_zero_int < \l_@@_internal_int + \prg_return_true: + \else: + \prg_return_false: + \fi: + } +\cs_new_eq:NN \@@_test_digits_end: \exp_stop_f: +\cs_new_protected:Npn \@@_test_digits:w #1 \@@_test_digits_end: { } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro} +% { +% \bitset_set_true:Nn, \bitset_set_true:cn, +% \bitset_gset_true:Nn, \bitset_gset_true:cn, +% } +% \begin{macro}{\@@_set_aux:NNn} +% The user commands must first translate the argument to an index number. +% \begin{macrocode} +\cs_new_protected:Npn \bitset_set_true:Nn #1#2 + { \@@_set:NNn \@@_set_true:Nn #1 {#2} } +\cs_new_protected:Npn \bitset_gset_true:Nn #1#2 + { \@@_set:NNn \@@_gset_true:Nn #1 {#2} } +\cs_new_protected:Npn \bitset_set_false:Nn #1#2 + { \@@_set:NNn \@@_set_false:Nn #1 {#2} } +\cs_new_protected:Npn \bitset_gset_false:Nn #1#2 + { \@@_set:NNn \@@_gset_false:Nn #1 {#2} } +\cs_new_protected:Npn \@@_set:NNn #1#2#3 + { + \prop_if_in:cnTF { g_@@_ \cs_to_str:N #2 _name_prop } {#3} + { + #1 #2 + { + \prop_item:cn { g_@@_ \cs_to_str:N #2 _name_prop } {#3} + } + } + { + \@@_test_digits:nTF {#3} + { + #1 #2 {#3} + \prop_gput:cnn { g_@@_ \cs_to_str:N #2 _name_prop } {#3} {#3} + } + { + \__kernel_msg_warning:nnxx { bitset } { bitset-unknown-name } + { \token_to_str:N #2 } + { \tl_to_str:n {#3} } + } + } + } +\cs_generate_variant:Nn \bitset_set_true:Nn { c } +\cs_generate_variant:Nn \bitset_gset_true:Nn { c } +\cs_generate_variant:Nn \bitset_set_false:Nn { c } +\cs_generate_variant:Nn \bitset_gset_false:Nn { c } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro} +% { +% \bitset_clear:N, \bitset_clear:c, +% \bitset_gclear:N, \bitset_gclear:c +% } +% \begin{macrocode} +\cs_new_protected:Npn \bitset_clear:N #1 + { + \str_set_eq:NN #1 \c_zero_str + } +\cs_new_protected:Npn \bitset_gclear:N #1 + { + \str_gset_eq:NN #1 \c_zero_str + } +\cs_generate_variant:Nn \bitset_clear:N { c } +\cs_generate_variant:Nn \bitset_gclear:N { c } +% \end{macrocode} +% \end{macro} +% \begin{macro} +% { +% \bitset_to_arabic:N, \bitset_to_arabic:c, +% \bitset_to_bin:N, \bitset_to_bin:c, +% } +% The naming of the commands follow the names in the \texttt{int} module. +% \cs{bitset_to_arabic:N} uses \cs{int_from_bin:n} if the string is shorter +% then $32$ and the slower \cs{fp_eval} for larger bitsets. +% \begin{macrocode} +\cs_new:Npn \bitset_to_arabic:N #1 + { + \int_compare:nNnTF { \str_count:N #1 } < { 32 } + { \exp_args:No \int_from_bin:n {#1} } + { + \exp_after:wN \@@_to_int:nN \exp_after:wN 0 + #1 \q_recursion_tail \q_recursion_stop + } + } + +\cs_new:Npn \@@_to_int:nN #1#2 + { + \quark_if_recursion_tail_stop_do:Nn #2 {#1} + \exp_args:Nf \@@_to_int:nN { \fp_eval:n { #1 * 2 + #2 } } + } + +\cs_new:Npn \bitset_to_bin:N #1 + { + #1 + } +\cs_generate_variant:Nn \bitset_to_arabic:N { c } +\cs_generate_variant:Nn \bitset_to_bin:N { c } +% \end{macrocode} +% \end{macro} +% \begin{macro} +% { +% \bitset_item:Nn, \bitset_item:cn +% } +% All bits that have been set at anytime have an entry in the prop, +% so we can take everything else as $0$. +% \begin{macrocode} +\cs_new:Npn \bitset_item:Nn #1#2 + { + \prop_if_in:cnTF { g_@@_ \cs_to_str:N #1 _name_prop } {#2} + { + \int_eval:n + { + \str_item:Nn #1 + { 0 - ( \prop_item:cn { g_@@_ \cs_to_str:N #1 _name_prop } {#2} ) } + +0 + } + } + { + 0 + } + } +\cs_generate_variant:Nn \bitset_item:Nn { c } +% \end{macrocode} +% \end{macro} + +% \begin{macro} +% { +% \bitset_show:N, \bitset_show:c, +% \bitset_log:N, \bitset_log:c +% } +% \begin{macrocode} +\cs_new_protected:Npn \bitset_show:N { \@@_show:NN \msg_show:nnxxxx } +\cs_generate_variant:Nn \bitset_show:N { c } +\cs_new_protected:Npn \bitset_log:N { \@@_show:NN \msg_log:nnxxxx } +\cs_generate_variant:Nn \bitset_log:N { c } +\cs_new_protected:Npn \bitset_show_named_index:N { \@@_show_named_index:NN \msg_show:nnxxxx } +\cs_generate_variant:Nn \bitset_show_named_index:N { c } +\cs_new_protected:Npn \@@_show:NN #1#2 + { + \__kernel_chk_defined:NT #2 + { + #1 { LaTeX/bitset } { show-bitset } + { \token_to_str:N #2 } + { \bitset_to_bin:N #2 } + { \bitset_to_arabic:N #2 } + { } + } + } +\cs_new_protected:Npn \@@_show_named_index:NN #1#2 + { + \__kernel_chk_defined:NT #2 + { + #1 { LaTeX/bitset } { show-names } + { \token_to_str:N #2 } + { \prop_map_function:cN { g_@@_ \cs_to_str:N #2 _name_prop } \msg_show_item:nn } + { } + { } + } + } +% \end{macrocode} +% \end{macro} +% +% \subsection{Messages} +% \begin{macrocode} + \__kernel_msg_new:nnn { bitset } { show-bitset } + { + The~bitset~#1~has~the~representation: \\ + >~binary:~#2 \\ + >~arabic:~#3 . + } +\__kernel_msg_new:nnn { bitset } { show-names } + { + The~bitset~#1~ + \tl_if_empty:nTF {#2} + { knows~no~names~yet \\>~ . } + { knows~the~name/index~pairs~(without~outer~braces): #2 . } + } +\__kernel_msg_new:nnn { bitset } { bitset-unknown-name } + { The~name~'#2'~is~unknown~for~bitset~\tl_to_str:n {#1} } + +% \end{macrocode} +% \begin{macrocode} +%</package> +% \end{macrocode} +% \end{macro} +% +% \end{implementation} +% +% \PrintIndex diff --git a/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.ins b/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.ins index e968f1bf838..1f693d29569 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.ins +++ b/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.ins @@ -1,8 +1,8 @@ \iffalse meta-comment -File: l3cctab.ins +File: l3bitset.ins -Copyright (C) 2018-2020 The LaTeX3 Project +Copyright (C) 2020 The LaTeX3 Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -34,7 +34,7 @@ license information is placed in the derived files. \preamble -Copyright (C) 2018-2020 The LaTeX3 Project +Copyright (C) 2020 The LaTeX3 Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of @@ -53,9 +53,9 @@ and all files in that bundle must be distributed together. \keepsilent -\generate{\file{l3cctab.sty} +\generate{\file{l3bitset.sty} { - \from{l3cctab.dtx}{package} + \from{l3bitset.dtx} {package} } } diff --git a/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx b/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx deleted file mode 100644 index f7418e117f6..00000000000 --- a/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx +++ /dev/null @@ -1,556 +0,0 @@ -% \iffalse meta-comment -% -%% File: l3cctab.dtx -% -% Copyright (C) 2018-2020 The LaTeX3 Project -% -% It may be distributed and/or modified under the conditions of the -% LaTeX Project Public License (LPPL), either version 1.3c of this -% license or (at your option) any later version. The latest version -% of this license is in the file -% -% http://www.latex-project.org/lppl.txt -% -% This file is part of the "l3experimental bundle" (The Work in LPPL) -% and all files in that bundle must be distributed together. -% -% ----------------------------------------------------------------------- -% -% The development version of the bundle can be found at -% -% https://github.com/latex3/latex3 -% -% for those people who are interested. -% -%<*driver|package> -\RequirePackage{expl3} -%</driver|package> -%<*driver> -\documentclass[full]{l3doc} -\begin{document} - \DocInput{\jobname.dtx} -\end{document} -%</driver> -% \fi -% -% \title{^^A -% The \pkg{l3cctab} package\\ Experimental category code tables^^A -% } -% -% \author{^^A -% The \LaTeX3 Project\thanks -% {^^A -% E-mail: -% \href{mailto:latex-team@latex-project.org} -% {latex-team@latex-project.org}^^A -% }^^A -% } -% -% \date{Released 2020-01-12} -% -% \maketitle -% -% \begin{documentation} -% -% \section{\pkg{l3cctab} documentation} -% -% A category code table enables rapid switching of all category codes in -% one operation. For \LuaTeX{}, this is possible over the entire Unicode -% range. For other engines, only the $8$-bit range ($0$-$255$) is covered by -% such tables. -% -% \subsection{Creating and initialising category code tables} -% -% \begin{function}{\cctab_new:N,\cctab_new:c} -% \begin{syntax} -% \cs{cctab_new:N} \meta{category code table} -% \end{syntax} -% Creates a new \meta{category code table} variable or raises an error if -% the name is already taken. The declaration is global. The -% \meta{category code table} is initialised with the codes -% as used by \IniTeX{}. -% \end{function} -% -% \begin{function}{\cctab_const:Nn,\cctab_const:cn} -% \begin{syntax} -% \cs{cctab_const:Nn} \meta{category code table} \Arg{category code set up} -% \end{syntax} -% Creates a new \meta{category code table} with the category code settings in -% force at the time the function is called, and applies the -% \meta{category code set up} on top of prevailing settings, then saves -% as a constant table. -% \end{function} -% -% \begin{function}{\cctab_gset:Nn,\cctab_gset:cn} -% \begin{syntax} -% \cs{cctab_gset:Nn} \meta{category code table} \Arg{category code set up} -% \end{syntax} -% Sets the \meta{category code table} to apply the category codes -% which apply when the prevailing régime is modified by the -% \meta{category code set up}. Thus within a standard code block -% the starting point will be the code applied by \cs{c_code_cctab}. -% The assignment of the table is global: the underlying primitive does -% not respect grouping. -% \end{function} -% -% \subsection{Using category code tables} -% -% \begin{function}{\cctab_begin:N,\cctab_begin:c} -% \begin{syntax} -% \cs{cctab_begin:N} \meta{category code table} -% \end{syntax} -% Switches the category codes in force to those stored in the -% \meta{category code table}. The prevailing codes before the -% function is called are added to a stack, for use with -% \cs{cctab_end:}. This function does not start a \TeX{} group. -% \end{function} -% -% \begin{function}{\cctab_end:} -% \begin{syntax} -% \cs{cctab_end:} -% \end{syntax} -% Ends the scope of a \meta{category code table} started using -% \cs{cctab_begin:N}, retuning the codes to those in force before -% the matching \cs{cctab_begin:N} was used. -% \end{function} -% -% \subsection{Category code table conditionals} -% -% \begin{function}[pTF]{\cctab_if_exist:N,\cctab_if_exist:c} -% \begin{syntax} -% \cs{cctab_if_exist_p:N} \meta{category code table} -% \cs{cctab_if_exist:NTF} \meta{category code table} \Arg{true code} \Arg{false code} -% \end{syntax} -% Tests whether the \meta{category code table} is currently defined. -% This does not check that the \meta{category code table} really is a -% category code table. -% \end{function} -% -% \subsection{Constant category code tables} -% -% \begin{variable}{\c_code_cctab} -% Category code table for the code environment. This does not include -% setting the behaviour of the line-end character, which is only -% altered by \cs{ExplSyntaxOn}. -% \end{variable} -% -% \begin{variable}{\c_document_cctab} -% Category code table for a standard \LaTeX{} document. This does not -% include setting the behaviour of the line-end character, which is -% only altered by \cs{ExplSyntaxOff}. -% \end{variable} -% -% \begin{variable}{\c_initex_cctab} -% Category code table as set up by \IniTeX{}. -% \end{variable} -% -% \begin{variable}{\c_other_cctab} -% Category code table where all characters have category code $12$ -% (other). -% \end{variable} -% -% \begin{variable}{\c_str_cctab} -% Category code table where all characters have category code $12$ -% (other) with the exception of spaces, which have category code -% $10$ (space). -% \end{variable} -% -% \end{documentation} -% -% \begin{implementation} -% -% \section{\pkg{l3cctab} implementation} -% -% \begin{macrocode} -%<*initex|package> -% \end{macrocode} -% -% \begin{macrocode} -%<@@=cctab> -% \end{macrocode} -% -% \begin{macrocode} -%<*package> -\ProvidesExplPackage{l3cctab}{2020-01-12}{} - {L3 Experimental category code tables} -%</package> -% \end{macrocode} -% -% \begin{variable}{\g_@@_allocate_int} -% \begin{variable}{\g_@@_stack_int} -% \begin{variable}{\g_@@_stack_seq} -% To allocate category code tables, both the read-only and stack -% tables need to be followed. There is also a sequence stack for the -% dynamic tables themselves. -% \begin{macrocode} -\int_new:N \g_@@_allocate_int -\int_gset:Nn \g_@@_allocate_int { -1 } -\int_new:N \g_@@_stack_int -\seq_new:N \g_@@_stack_seq -% \end{macrocode} -% \end{variable} -% \end{variable} -% \end{variable} -% -% \begin{variable}{\l_@@_tmp_tl} -% Scratch space. -% \begin{macrocode} -\tl_new:N \l_@@_tmp_tl -% \end{macrocode} -% \end{variable} -% -% \begin{macro}{\cctab_new:N,\cctab_new:c} -% \begin{macro}{\@@_begin:N,\@@_begin:c} -% \begin{macro}{\@@_end:} -% \begin{macro}{\cctab_gset:Nn,\cctab_gset:cn} -% As \LuaTeX{} offers engine support for category code tables, and this is -% entirely lacking from the other engines, we need two complementary -% approaches here. Rather than intermix them, we split the set up based on -% engine. (Some future \XeTeX{} may add support, at which point the -% conditional here would be subtly different.) -% -% First, the \LuaTeX{} case. -% \begin{macrocode} -\sys_if_engine_luatex:TF - { -% \end{macrocode} -% Creating a new category code table is done slightly differently -% from other registers. Low-numbered tables are more efficiently-stored -% than high-numbered ones. There is also a need to have a stack of -% flexible tables as well as the set of read-only ones. To satisfy both -% of these requirements, odd numbered tables are used for read-only -% tables, and even ones for the stack. Here, therefore, the odd numbers -% are allocated. -% \begin{macrocode} - \cs_new_protected:Npn \cctab_new:N #1 - { - \__kernel_chk_if_free_cs:N #1 -%<*initex> - \int_gadd:Nn \g_@@_allocate_int { 2 } - \int_compare:nNnTF - \g_@@_allocate_int < { \c_max_register_int + 1 } - { - \tex_global:D \tex_chardef:D #1 \g_@@_allocate_int - \tex_initcatcodetable:D #1 - } - { - \__kernel_msg_fatal:nnx - { kernel } { out-of-registers } { cctab } - } -%</initex> -%<*package> - \newcatcodetable #1 -%</package> - } -% \end{macrocode} -% The aim here is to ensure that the saved tables are read-only. This is -% done by using a stack of tables which are not read only, and actually -% having them as \enquote{in use} copies. -% \begin{macrocode} - \cs_new_protected:Npn \@@_begin:N #1 - { - \seq_gpush:Nx \g_@@_stack_seq { \tex_the:D \tex_catcodetable:D } - \tex_catcodetable:D #1 - \int_gadd:Nn \g_@@_stack_int { 2 } - \int_compare:nNnT \g_@@_stack_int > \c_max_register_int - { \__kernel_msg_fatal:nn { kernel } { cctab-stack-full } } - \tex_savecatcodetable:D \g_@@_stack_int - \tex_catcodetable:D \g_@@_stack_int - } - \cs_new_protected:Npn \@@_end: - { - \int_gsub:Nn \g_@@_stack_int { 2 } - \seq_if_empty:NTF \g_@@_stack_seq - { \tl_set:Nn \l_@@_tmp_tl { 0 } } - { \seq_gpop:NN \g_@@_stack_seq \l_@@_tmp_tl } - \tex_catcodetable:D \l_@@_tmp_tl \scan_stop: - } -% \end{macrocode} -% Category code tables are always global, so only one version is needed. -% The set up here is simple, and means that at the point of use there is -% no need to worry about escaping category codes. -% \begin{macrocode} - \cs_new_protected:Npn \cctab_gset:Nn #1#2 - { - \group_begin: - #2 \scan_stop: - \tex_savecatcodetable:D #1 - \group_end: - } - } -% \end{macrocode} -% Now the case for other engines. Here, we use an integer array for each -% table. The index base is out-by-one, so we have an internal function to -% handle that. The rest of the approach here is pretty simple: use a stack -% of tables, and save to them at each |begin|. Unlike the \LuaTeX{} case, -% we can't accidentally alter a saved table, which makes life a little -% easier. -% \begin{macrocode} - { - \cs_new_protected:Npn \@@_gstore:Nnn #1#2#3 - { - \intarray_gset:cnn - { g_@@_ \int_use:N #1 _cctab } { #2 + 1 } {#3} - } -% \end{macrocode} -% Following the \LuaTeX{} pattern, a new table starts with \IniTeX{} codes. -% \begin{macrocode} - \cs_new_protected:Npn \cctab_new:N #1 - { - \int_gadd:Nn \g_@@_allocate_int { 2 } - \int_const:Nn #1 { \g_@@_allocate_int } - \intarray_new:cn { g_@@_ \int_use:N #1 _cctab } { 256 } - \int_step_inline:nn { 256 } - { - \intarray_gset:cnn - { g_@@_ \int_use:N #1 _cctab } {##1} { 12 } - } - \@@_gstore:Nnn #1 { 0 } { 9 } - \@@_gstore:Nnn #1 { 13 } { 5 } - \@@_gstore:Nnn #1 { 32 } { 10 } - \@@_gstore:Nnn #1 { 37 } { 14 } - \int_step_inline:nnn { 65 } { 90 } - { \@@_gstore:Nnn #1 {##1} { 11 } } - \@@_gstore:Nnn #1 { 92 } { 0 } - \int_step_inline:nnn { 97 } { 122 } - { \@@_gstore:Nnn #1 {##1} { 11 } } - \@@_gstore:Nnn #1 { 127 } { 15 } - } - \cs_new_protected:Npn \@@_begin:N #1 - { - \int_gadd:Nn \g_@@_stack_int { 2 } - \int_compare:nNnT \g_@@_stack_int > \c_max_register_int - { \__kernel_msg_fatal:nn { kernel } { cctab-stack-full } } - \cs_if_exist:cF { g_@@_ \int_use:N \g_@@_stack_int _cctab } - { - \intarray_new:cn - { g_@@_ \int_use:N \g_@@_stack_int _cctab } - { 256 } - } - \int_step_inline:nn { 256 } - { - \intarray_gset:cnn - { g_@@_ \int_use:N \g_@@_stack_int _cctab } - {##1} - { \char_value_catcode:n { ##1 - 1 } } - } - \int_step_inline:nn { 256 } - { - \char_set_catcode:nn { ##1 - 1 } - { - \intarray_item:cn - { g_@@_ \int_use:N #1 _cctab } {##1} - } - } - } - \cs_generate_variant:Nn \intarray_new:Nn { c } - \cs_generate_variant:Nn \intarray_gset:Nnn { c } - \cs_new_protected:Npn \@@_end: - { - \int_step_inline:nn { 256 } - { - \char_set_catcode:nn { ##1 - 1 } - { - \intarray_item:cn - { g_@@_ \int_use:N \g_@@_stack_int _cctab } - {##1} - } - } - \int_gsub:Nn \g_@@_stack_int { 2 } - } - \cs_generate_variant:Nn \intarray_item:Nn { c } - \cs_new_protected:Npn \cctab_gset:Nn #1#2 - { - \group_begin: - #2 \scan_stop: - \int_step_inline:nn { 256 } - { - \intarray_gset:cnn { g_@@_ \int_use:N #1 _cctab } {##1} - { \char_value_catcode:n { ##1 - 1 } } - } - \group_end: - } - } -\cs_generate_variant:Nn \cctab_new:N { c } -\cs_generate_variant:Nn \cctab_gset:Nn { c } -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\cctab_begin:N,\cctab_end:} -% These functions perform a few sanity checks before calling the -% functions which will do the heavy-lifting. -% \cs{cctab_begin:N} checks if a \meta{cctab~var} exists before trying -% to use it. \cs{cctab_end:} checks if a \cs{cctab_begin:N} was used -% some time earlier. -% -% Skipping these checks would result in an \enquote{Undefined control -% sequence} error for \cs{cctab_begin:N} with an undefined -% \meta{cctab~var}, and a \enquote{Missing font identifier} for an extra -% \cs{cctab_end:}. -% \begin{macrocode} -\cs_new_protected:Npn \cctab_begin:N #1 - { \@@_chk_if_valid:NT #1 { \__cctab_begin:N #1 } } -\cs_generate_variant:Nn \cctab_begin:N { c } -\cs_new_protected:Npn \cctab_end: - { - \int_compare:nNnTF { \g_@@_stack_int } = { \c_zero_int } - { \__kernel_msg_error:nn { kernel } { cctab-extra-end } } - { \@@_end: } - } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\cctab_if_exist:N,\cctab_if_exist:c} -% Checks whether a \meta{cctab~var} is defined. -% \begin{macrocode} -\prg_new_eq_conditional:NNn \cctab_if_exist:N \cs_if_exist:N - { TF , T , F , p } -\prg_new_eq_conditional:NNn \cctab_if_exist:c \cs_if_exist:c - { TF , T , F , p } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@@_chk_if_valid:N} -% Checks whether the argument is defined and whether it is a valid -% \meta{cctab~var}. In \LuaTeX{} the validity of the \meta{cctab~var} -% is checked by the engine, which complains if the argument is not -% a \cs{chardef}'ed constant. In other engines, check if the -% underlying \cs[no-index]{g_@@_\meta{integer}_cctab} -% \meta{intarray~var} exists. -% \begin{macrocode} -\sys_if_engine_luatex:TF - { - \prg_new_protected_conditional:Npnn \@@_chk_if_valid:N #1 - { TF , T , F } - { - \cctab_if_exist:NTF #1 - { -%<*initex> - \bool_lazy_and:nnTF - { \int_if_odd_p:n {#1} } - { \int_compare_p:nNn {#1-1} < { \g_@@_allocate_int } } -%</initex> -%<*package> - \int_compare:nNnTF {#1-1} < { \e@alloc@ccodetable@count } -%</package> - { \prg_return_true: } - { - \__kernel_msg_error:nnx { kernel } { invalid-cctab } - { \token_to_str:N #1 } - \prg_return_false: - } - } - { - \__kernel_msg_error:nnx { kernel } { command-not-defined } - { \token_to_str:N #1 } - \prg_return_false: - } - } - } - { - \prg_new_protected_conditional:Npnn \@@_chk_if_valid:N #1 - { TF , T , F } - { - \cctab_if_exist:NTF #1 - { - \cs_if_exist:cTF { g_@@_ \int_use:N #1 _cctab } - { \prg_return_true: } - { - \__kernel_msg_error:nnx { kernel } { invalid-cctab } - { \token_to_str:N #1 } - \prg_return_false: - } - } - { - \__kernel_msg_error:nnx { kernel } { command-not-defined } - { \token_to_str:N #1 } - \prg_return_false: - } - } - } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\cctab_const:Nn,\cctab_const:cn} -% Creates a new \meta{cctab~var} then sets it with the current and -% user-supplied codes. -% \begin{macrocode} -\cs_new_protected:Npn \cctab_const:Nn #1#2 - { - \cctab_new:N #1 - \cctab_gset:Nn #1 {#2} - } -\cs_generate_variant:Nn \cctab_const:Nn { c } -% \end{macrocode} -% \end{macro} -% -% \begin{variable} -% { -% \c_initex_cctab , -% \c_code_cctab , -% \c_document_cctab , -% \c_other_cctab , -% \c_str_cctab -% } -% Creating category code tables is easy using the function above. -% The \texttt{other} and \texttt{string} ones are done by completely -% ignoring the existing codes as this makes life a lot less complex. -% \begin{macrocode} -\cctab_new:N \c_initex_cctab -\cctab_const:Nn \c_code_cctab { } -\cctab_const:Nn \c_document_cctab - { - \char_set_catcode_space:n { 9 } - \char_set_catcode_space:n { 32 } - \char_set_catcode_other:n { 58 } - \char_set_catcode_math_subscript:n { 95 } - \char_set_catcode_active:n { 126 } - } -\cctab_const:Nn \c_other_cctab - { - \int_step_inline:nnn { 0 } { 127 } - { \char_set_catcode_other:n {#1} } - } -\cctab_const:Nn \c_str_cctab - { - \int_step_inline:nnn { 0 } { 127 } - { \char_set_catcode_other:n {#1} } - \char_set_catcode_space:n { 32 } - } -% \end{macrocode} -% \end{variable} -% -% \subsection{Messages} -% -% \begin{macrocode} -\__kernel_msg_new:nnnn { kernel } { cctab-stack-full } - { The~category~code~table~stack~is~exhausted. } - { - LaTeX~has~been~asked~to~switch~to~a~new~category~code~table,~ - but~there~is~no~more~space~to~do~this! - } -\__kernel_msg_new:nnnn { kernel } { cctab-extra-end } - { Extra~\iow_char:N\\cctab_end:~ignored~\msg_line_context:. } - { - LaTeX~came~across~a~\iow_char:N\\cctab_end:~without~a~matching~ - \iow_char:N\\cctab_begin:N.~This~command~will~be~ignored. - } -\__kernel_msg_new:nnnn { kernel } { invalid-cctab } - { Invalid~\iow_char:N\\catcode~table. } - { - You~can~only~switch~to~a~\iow_char:N\\catcode~table~that~is~ - initialized~using~\iow_char:N\\cctab_new:N~or~ - \iow_char:N\\cctab_const:Nn. - } -% \end{macrocode} -% -% \begin{macrocode} -%</initex|package> -% \end{macrocode} -% -%\end{implementation} -% -%\PrintIndex diff --git a/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx b/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx deleted file mode 100644 index de6616acf3d..00000000000 --- a/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx +++ /dev/null @@ -1,904 +0,0 @@ -% \iffalse meta-comment -% -%% File: l3color.dtx -% -% Copyright (C) 2017-2020 The LaTeX3 Project -% -% It may be distributed and/or modified under the conditions of the -% LaTeX Project Public License (LPPL), either version 1.3c of this -% license or (at your option) any later version. The latest version -% of this license is in the file -% -% http://www.latex-project.org/lppl.txt -% -% This file is part of the "l3experimental bundle" (The Work in LPPL) -% and all files in that bundle must be distributed together. -% -% ----------------------------------------------------------------------- -% -% The development version of the bundle can be found at -% -% https://github.com/latex3/latex3 -% -% for those people who are interested. -% -%<*driver|package> -\RequirePackage{expl3} -%</driver|package> -%<*driver> -\documentclass[full]{l3doc} -\begin{document} - \DocInput{\jobname.dtx} -\end{document} -%</driver> -% \fi -% -% \title{^^A -% The \textsf{l3color} package\\ Experimental color support^^A -% } -% -% \author{^^A -% The \LaTeX3 Project\thanks -% {^^A -% E-mail: -% \href{mailto:latex-team@latex-project.org} -% {latex-team@latex-project.org}^^A -% }^^A -% } -% -% \date{Released 2020-01-12} -% -% \maketitle -% -% \begin{documentation} -% -% \section{Color models} -% -% A color \emph{model} is a way to represent sets of colors. Different models -% are particularly suitable for different output methods, \emph{e.g.}~screen -% or print. Parameter-based models can describe a very large number of unique -% colors, and have a varying number of \emph{axes} which define a color -% space. In contrast, various proprietary models are available which define -% \emph{spot} colors. -% -% The models supported here are -% \begin{itemize} -% \item \texttt{gray} Grayscale color, with a single axis running from -% $0$ (fully black) to $1$ (fully white) -% \item \texttt{rgb} Red-green-blue color, with three axes, one for each of -% the components -% \item \texttt{cmyk} Cyan-magenta-yellow-black color, with four axes, one for -% each of the components -% \item \texttt{spot} Spot color, with one value, the name of the color -% (see \url{https://helpx.adobe.com/indesign/using/spot-process-colors.html} -% for details of the use of spot colors in print) -% \end{itemize} -% -% 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. -% -% When color is selected by model, the \meta{values} given are specified as -% a comma-separated list. The length of the list will therefore be determined -% by the detail of the model involved. -% -% Color models (and interconversion) are complex, and more details are given -% in the manual to the \LaTeXe{} \pkg{xcolor} package and in the -% \emph{PostScript Language Reference Manual}, published by Addison--Wesley. -% -% \section{Color expressions} -% -% In addition to allowing specification of color by model and values, -% \pkg{l3color} also supports color expressions. These are created -% by combining one or more color names, with the amount of each specified -% as a percentage. The latter is given between |!| symbols in the expression. -% Thus for example -% \begin{verbatim} -% red!50!green -% \end{verbatim} -% is a mixture of $50\,\%$ red and $50\,\%$ green. A trailing percentage is -% interpreted as implicitly followed by |white|, and so -% \begin{verbatim} -% red!25 -% \end{verbatim} -% specifies $25\,\%$ red mixed with $75\,\%$ white. -% -% Where the models for the mixed colors are different, the model of the first -% color is used. Thus -% \begin{verbatim} -% red!50!cyan -% \end{verbatim} -% will result in a color specification using the |rgb| model, made up of -% $50\,\%$ red and $50\,\%$ of cyan \emph{expressed in \texttt{rgb}}. As color -% model interconversion is not exact. -% -% The one exception to the above is where the first model in an expression is -% |gray|. In this case, the order of mixing is \enquote{swapped} internally, so -% that for example -% \begin{verbatim} -% black!50!red -% \end{verbatim} -% has the same result as -% \begin{verbatim} -% red!50!black -% \end{verbatim} -% (the predefined colors |black| and |white| use the |gray| model). -% -% Where more than two colors are mixed in an expression, evaluation takes place -% in a stepwise fashion. Thus in -% \begin{verbatim} -% cyan!50!magenta!10!yellow -% \end{verbatim} -% the sub-expression -% \begin{verbatim} -% cyan!50!magenta -% \end{verbatim} -% is first evaluated to give an intermediate color specification, before -% the second step -% \begin{verbatim} -% <intermediate>!10!yellow -% \end{verbatim} -% where |<intermediate>| represents this transitory calculated value. -% -% Within a color expression, |.| may be used to represent the color active -% for typesetting (the current color). This allows for example -% \begin{verbatim} -% .!50 -% \end{verbatim} -% to mean a mixture of $50\,\%$ of current color with white. -% -% (Color expressions supported here are a subset of those provided by -% the \LaTeXe{} \pkg{xcolor} package. At present, only such features as are -% clearly useful have been added here.) -% -% \section{Named colors} -% -% Color names are stored in a single namespace, which makes them accessible -% as part of color expressions. Whilst they are not reserved in a technical -% sense, the names |black|, |white|, |red|, |green|, |blue|, |cyan|, |magenta| -% and |yellow| have special meaning and should not be redefined. Color names -% should be made up of letters, numbers and spaces only: other characters are -% reserved for use in color expressions. In particular, |.| represents the -% current color at the start of a color expression. -% -% \begin{function}{\color_set:nn} -% \begin{syntax} -% \cs{color_set:nn} \Arg{name} \Arg{color expression} -% \end{syntax} -% Evaluates the \meta{color expression} and stores the resulting -% color specification as the \meta{name}. -% \end{function} -% -% \begin{function}{\color_set:nnn} -% \begin{syntax} -% \cs{color_set:nnn} \Arg{name} \Arg{model} \Arg{value(s)} -% \end{syntax} -% Stores the color specification equivalent to the \meta{model} and -% \meta{values} as the \meta{name}. -% \end{function} -% -% \begin{function}{\color_set_eq:nn} -% \begin{syntax} -% \cs{color_set_eq:nn} \Arg{name1} \Arg{name2} -% \end{syntax} -% Copies the color specification in \meta{name2} to \meta{name1}. The -% special name |.| may be used to represent the current color, allowing -% it to be saved to a name. -% \end{function} -% -% \begin{function}{\color_show:n} -% \begin{syntax} -% \cs{color_show:n} \Arg{name} -% \end{syntax} -% Displays the color specification stored in the \meta{name} on the -% terminal. -% \end{function} -% -% \section{Selecting colors} -% -% \begin{function}{\color_select:n} -% \begin{syntax} -% \cs{color_select:n} \Arg{color expression} -% \end{syntax} -% Parses the \meta{color expression} and then activates the resulting -% color specification for typeset material. -% \end{function} -% -% \begin{function}{\color_select:nn} -% \begin{syntax} -% \cs{color_select:nn} \Arg{model} \Arg{value(s)} -% \end{syntax} -% Activates the color specification equivalent to the \meta{model} and -% \meta{value(s)} for typeset material. -% \end{function} -% -% \begin{variable}{\l_color_fixed_model_tl} -% When this is set to a non-empty value, colors will be converted to -% the specified model when they are selected. Note that included images -% and similar are not influenced by this setting. -% \end{variable} -% -% \section{Core color representation} -% -% To allow data to be handled internally, \pkg{l3color} uses a simple -% representation of color, based on that used by the \pkg{dvips} program. -% This is a token list made up of the model name followed by one or more -% data entries, each separated by a \emph{space}. The valid forms are thus -% \begin{itemize} -% \item \texttt{gray \meta{gray}} Grayscale color with the \meta{gray} -% value running from $0$ (fully black) to $1$ (fully white) -% \item \texttt{cmyk \meta{cyan} \meta{magenta} \meta{yellow} \meta{black}}, -% each of which falls in the range $[0,1]$ -% \item \texttt{rgb \meta{red} \meta{green} \meta{blue}}, -% each of which falls in the range $[0,1]$ -% \item \texttt{spot \meta{name} \meta{tint}} A pre-defined spot color, -% where the \meta{name} should be a pre-defined string color name and the -% \meta{tint} should be in the range $[0,1]$. -% \end{itemize} -% -% This core representation is produced when parsing color expressions. -% -% \begin{function}{\color_parse:nN} -% \begin{syntax} -% \cs{color_parse:nN} \Arg{color expression} \Arg{tl} -% \end{syntax} -% Parses the \meta{color expression} as described above, and sets the -% \meta{tl} the the equivalent \meta{core color representation} -% (used at the backend level and based on \texttt{dvips} color -% representation). -% \end{function} -% -% \section{Spot colors} -% \label{l3color:sec:spot} -% -% \end{documentation} -% -% \begin{implementation} -% -% \section{\pkg{l3color} Implementation} -% -% \begin{macrocode} -%<*initex|package> -% \end{macrocode} -% -% \begin{macrocode} -%<@@=color> -% \end{macrocode} -% -% \begin{macrocode} -%<*package> -\ProvidesExplPackage{l3color}{2020-01-12}{} - {L3 Experimental color support} -%</package> -% \end{macrocode} -% -% \subsection{Predefined color names} -% -% The ability to predefine colors with a name is a key part of this module and -% means there has to be a method for storing the results. At first sight, it -% seems natural to follow the usual \pkg{expl3} model and create a -% \texttt{color} variable type for the process. That would then allow both -% local and global colors, constant colors and the like. However, these names -% need to be accessible in some form at the user level, for selection of colors -% either simply by name or as part of a more complex expression. This does not -% require that the full name is exposed but does require that they can be -% looked up in a predictable way. As such, it is more useful to expose just the -% color names as part of the interface, with the result that only local color -% names can be created. (This is also seen for example in key creation in -% \pkg{l3keys}.) As a result, color names are declarative (no \texttt{new} -% functions). -% -% Since there is no need to manipulate colors \emph{en masse}, each is stored -% in a separate token list variable, rather than the alternative of using a -% single property list for all names. -% -% \subsection{Setup} -% -% \begin{variable}{\l_@@_internal_tl} -% \begin{macrocode} -\tl_new:N \l_@@_internal_tl -% \end{macrocode} -% \end{variable} -% -% \subsection{Utility functions} -% -% \begin{macro}[int, TF, EXP]{\@@_if_defined:n} -% A simple wrapper to avoid needing to have the lookup repeated in too many -% places. -% \begin{macrocode} -\prg_new_conditional:Npnn \@@_if_defined:n #1 { T, F, TF } - { - \tl_if_exist:cTF { l_@@_named_ #1 _tl } - \prg_return_true: - \prg_return_false: - } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@@_extract:nNN, \@@_extract:VNN} -% \begin{macro}{\@@_extract:NNw} -% Split the model and color from a named color, and store the two. No test -% for the existence of the color: that is assumed to be the case (this -% is internal only). Somewhat \enquote{old-fashioned} but should be quite -% fast. -% \begin{macrocode} -\cs_new_protected:Npn \@@_extract:nNN #1#2#3 - { - \exp_after:wN \exp_after:wN \exp_after:wN - \@@_extract:NNw - \exp_after:wN \exp_after:wN \exp_after:wN #2 - \exp_after:wN \exp_after:wN \exp_after:wN #3 - \cs:w l_@@_named_ #1 _tl \cs_end: \q_stop - } -\cs_generate_variant:Nn \@@_extract:nNN { V } -\cs_new_protected:Npn \@@_extract:NNw #1#2 #3 ~ #4 \q_stop - { - \tl_set:Nn #1 {#3} - \tl_set:Nn #2 {#4} - } -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \subsection{Model conversion} -% -% \begin{macro}{\@@_convert:nnN, \@@_convert:VVN} -% \begin{macro}{\@@_convert:nnnN} -% \begin{macro}[aux, EXP] -% { -% \@@_convert_gray_rgb:w -% \@@_convert_gray_cmyk:w -% \@@_convert_cmyk_gray:w -% \@@_convert_cmyk_rgb:w -% \@@_convert_rgb_gray:w -% \@@_convert_rgb_cmyk:w -% } -% \begin{macro}[aux, EXP]{\@@_convert_rgb_cmyk:nnnn} -% Model conversion is carried out using standard formulae, as described in -% the manual for \pkg{xcolor} (see also the \emph{PostScript Language -% Reference Manual}). -% \begin{macrocode} -\cs_new_protected:Npn \@@_convert:nnN #1#2#3 - { \@@_convert:nnVN {#1} {#2} #3 #3 } -\cs_generate_variant:Nn \@@_convert:nnN { VV } -\cs_new_protected:Npn \@@_convert:nnnN #1#2#3#4 - { - \str_if_eq:nnT {#1} { spot } % TO DO!!! - { } - \tl_set:Nx #4 - { \use:c { @@_convert_ #1 _ #2 :w } #3 ~ 0 ~ 0 ~ 0 \q_stop } - } -\cs_generate_variant:Nn \@@_convert:nnnN { nnV } -\cs_new:Npn \@@_convert_gray_rgb:w #1 ~ #2 \q_stop - { #1 ~ #1 ~ #1 } -\cs_new:Npn \@@_convert_gray_cmyk:w #1 ~ #2 \q_stop - { 0 ~ 0 ~ 0 ~ \fp_eval:n { 1 - #1 } } -% \end{macrocode} -% These rather odd values are based on \textsc{ntsc} television: the set are -% used for the |cmyk| conversion. -% \begin{macrocode} -\cs_new:Npn \@@_convert_rgb_gray:w #1 ~ #2 ~ #3 ~ #4 \q_stop - { \fp_eval:n { 0.3 * #1 + 0.59 * #2 + 0.11 * #3 } } -% \end{macrocode} -% The conversion from |rgb| to |cmyk| is the most complex: a two-step -% procedure which requires \emph{black generation} and \emph{undercolor -% removal} functions. The PostScript reference describes them as -% device-dependent, but following \pkg{xcolor} we assume they are linear. -% Moreover, as the likelihood of anyone using a non-unitary matrix here is -% tiny, we simplify and treat those two concepts as no-ops. -% \begin{macrocode} -\cs_new:Npn \@@_convert_rgb_cmyk:w #1 ~ #2 ~ #3 ~ #4 \q_stop - { - \exp_args:Nf \@@_convert_rgb_cmyk:nnnn - { \fp_eval:n { min ( 1 - #1 , 1 - #2 , 1 - #3 ) } } {#1} {#2} {#3} - } -\cs_new:Npn \@@_convert_rgb_cmyk:nnnn #1#2#3#4 - { - \fp_eval:n { min ( 1 , max ( 0 , 1 - #2 - #1 ) ) } \c_space_tl - \fp_eval:n { min ( 1 , max ( 0 , 1 - #3 - #1 ) ) } \c_space_tl - \fp_eval:n { min ( 1 , max ( 0 , 1 - #4 - #1 ) ) } \c_space_tl - #1 - } -\cs_new:Npn \@@_convert_cmyk_gray:w #1 ~ #2 ~ #3 ~ #4 ~ #5 \q_stop - { \fp_eval:n { 1 - min ( 1 , 0.3 * #1 + 0.59 * #2 + 0.11 * #3 + #4 ) } } -\cs_new:Npn \@@_convert_cmyk_rgb:w #1 ~ #2 ~ #3 ~ #4 ~ #5 \q_stop - { - \fp_eval:n { 1 - min ( 1 , #1 + #4 ) } \c_space_tl - \fp_eval:n { 1 - min ( 1 , #2 + #4 ) } \c_space_tl - \fp_eval:n { 1 - min ( 1 , #3 + #4 ) } - } -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \subsection{Color expressions} -% -% \begin{variable} -% {\l_@@_model_tl, \l_@@_value_tl, \l_@@_next_model_tl, \l_@@_next_value_tl} -% Working space to store the color data whilst doing calculations: keeping -% it on the stack is attractive but gets tricky (return is non-trivial). -% \begin{macrocode} -\tl_new:N \l_@@_model_tl -\tl_new:N \l_@@_value_tl -\tl_new:N \l_@@_next_model_tl -\tl_new:N \l_@@_next_value_tl -% \end{macrocode} -% \end{variable} -% -% \begin{macro}{\color_parse:nN} -% \begin{macro}{\@@_parse:nN} -% \begin{macro}{\@@_parse:Nw} -% \begin{macro}{\@@_parse_loop_init:Nnn} -% \begin{macro}{\@@_parse_loop:w} -% \begin{macro}{\@@_parse_loop:nn} -% \begin{macro}{\@@_parse_break:w} -% \begin{macro}{\@@_parse_end:} -% \begin{macro}[aux, EXP]{\@@_parse_mix:Nnnn, \@@_parse_mix:NVVn} -% \begin{macro}[aux, EXP]{\@@_parse_mix:nNnn} -% \begin{macro}[aux, EXP] -% { -% \@@_parse_mix_gray:nw , -% \@@_parse_mix_rgb:nw , -% \@@_parse_mix_cmyk:nw -% } -% The main function for parsing color expressions removes actives but -% otherwise expands, then starts working through the expression itself. -% At the end, we apply the payload. -% \begin{macrocode} -\cs_new_protected:Npn \color_parse:nN #1#2 - { -%<*package> - \@@_backend_pickup:N \l_@@_current_tl - \tl_set_eq:cN { l_@@_named_ . _tl } \l_@@_current_tl -%</package> - \exp_args:Ne \@@_parse:nN { \tl_to_str:n {#1} } #2 - } -% \end{macrocode} -% Before going to all of the effort of parsing an expression, these two -% precursor functions look for a pre-defined name, either on its own or -% with a trailing |!| (which is the same thing). -% \begin{macrocode} -\cs_new_protected:Npn \@@_parse:nN #1#2 - { - \tl_if_exist:cTF { l_@@_named_ #1 _tl } - { \tl_set_eq:Nc #2 { l_@@_named_ #1 _tl } } - { \@@_parse:Nw #2#1 ! \q_stop } - \@@_check_model:N #2 - } -\cs_new_protected:Npn \@@_parse:Nw #1#2 ! #3 \q_stop - { - \@@_if_defined:nTF {#2} - { - \tl_if_blank:nTF {#3} - { \tl_set_eq:Nc #1 { l_@@_named_ #2 _tl } } - { \@@_parse_loop_init:Nnn #1 {#2} {#3} } - } - { - \__kernel_msg_error:nnn { color } { unknown-color } {#2} - \tl_set_eq:NN \l_@@_current_tl \l_@@_named_black_tl - } - } -% \end{macrocode} -% Once we establish that a full parse is needed, the next job is to get the -% detail of the first color. That will determine the model we use for the -% calculation: splitting here makes checking that a bit easier. -% \begin{macrocode} -\cs_new_protected:Npn \@@_parse_loop_init:Nnn #1#2#3 - { - \group_begin: - \@@_extract:nNN {#2} \l_@@_model_tl \l_@@_value_tl - \@@_parse_loop:w #3 ! ! ! ! \q_stop - \tl_set:Nx \l_@@_internal_tl - { \l_@@_model_tl \c_space_tl \l_@@_value_tl } - \exp_args:NNNV \group_end: - \tl_set:Nn #1 \l_@@_internal_tl - } -% \end{macrocode} -% This is the loop proper: there can be an open-ended set of colors to parse, -% separated by |!| tokens. There are a few cases to look out for. At the end -% of the expression and with we find a mix of $100$ then we simply skip the -% next color entirely (we can't stop the loop as there might be a further -% valid color to mix in). On the other hand, if we get a mix of $0$ then -% drop everything so far and start again. There is also a trailing -% |white| to \enquote{read in} if the final explicit data is a mix. -% Those conditions are separate from actually looping, which is therefore -% sorted out by checking if we have further data to process: in contrast -% to \pkg{xcolor}, we don't allow |!!| so the test can be simplified. -% \begin{macrocode} -\cs_new_protected:Npn \@@_parse_loop:w #1 ! #2 ! #3 ! #4 ! #5 \q_stop - { - \bool_lazy_or:nnF - { \tl_if_blank_p:n {#1} } - { \int_compare_p:nNn {#1} = { 100 } } - { - \int_compare:nNnTF {#1} = { 0 } - { - \tl_if_blank:nTF {#2} - { \@@_extract:nNN { white } } - { \@@_extract:nNN {#2} } - \l_@@_model_tl \l_@@_value_tl - } - { - \use:x - { - \@@_parse_loop:nn {#1} - { \tl_if_blank:nTF {#2} { white } {#2} } - } - } - } - \tl_if_blank:nF {#3} - { \@@_parse_loop:w #3 ! #4 ! #5 \q_stop } - \@@_parse_end: - } -% \end{macrocode} -% The \enquote{payload} of calculation in the loop first. If the model for -% the upcoming color is different from that of the existing (partial) color, -% convert the model. For |gray| the two are flipped round so that the outcome -% is something with \enquote{real} color. We are then in a position to do the -% actual calculation itself. The two auxiliaries here give us a way to break -% the loop should an invalid name be found. -% \begin{macrocode} -\cs_new_protected:Npn \@@_parse_loop:nn #1#2 - { - \@@_if_defined:nTF {#2} - { - \@@_extract:nNN {#2} \l_@@_next_model_tl \l_@@_next_value_tl - \tl_if_eq:NNF \l_@@_model_tl \l_@@_next_model_tl - { - \str_if_eq:VnT \l_@@_model_tl { gray } - { - \use:x - { - \tl_set:Nn \exp_not:N \l_@@_model_tl - { \l_@@_next_model_tl } - \tl_set:Nn \exp_not:N \l_@@_value_tl - { \l_@@_next_value_tl } - \tl_set:Nn \exp_not:N \l_next_@@_model_tl - { \l_@@_model_tl } - \tl_set:Nn \exp_not:N \l_next_@@_value_tl - { \l_@@_value_tl } - } - } - \@@_convert:VVN - \l_@@_next_model_tl - \l_@@_model_tl - \l_@@_next_value_tl - } - \tl_set:Nx \l_@@_value_tl - { - \@@_parse_mix:NVVn - \l_@@_model_tl \l_@@_value_tl \l_@@_next_value_tl {#1} - } - } - { - \__kernel_msg_error:nnn { color } { unknown-color } {#2} - \@@_extract:nNN { black } \l_@@_model_tl \l_@@_value_tl - \@@_parse_break:w - } - } -\cs_new_protected:Npn \@@_parse_break:w #1 \@@_parse_end: { } -\cs_new_protected:Npn \@@_parse_end: { } -% \end{macrocode} -% Do the vector arithmetic: mainly a question of shuffling input, along -% with one pre-calculation to keep down the use of division. -% \begin{macrocode} -\cs_new:Npn \@@_parse_mix:Nnnn #1#2#3#4 - { - \exp_args:Nf \@@_parse_mix:nNnn - { \fp_eval:n { #4 / 100 } } - #1 {#2} {#3} - } -\cs_generate_variant:Nn \@@_parse_mix:Nnnn { NVV } -\cs_new:Npn \@@_parse_mix:nNnn #1#2#3#4 - { - \use:c { @@_parse_mix_ #2 :nw } {#1} - #3 \q_mark #4 \q_stop - } -\cs_new:Npn \@@_parse_mix_gray:nw #1#2 \q_mark #3 \q_stop - { \fp_eval:n { #2 * #1 + #3 * ( 1 - #1 ) } } -\cs_new:Npn \@@_parse_mix_rgb:nw - #1#2 ~ #3 ~ #4 \q_mark #5 ~ #6 ~ #7 \q_stop - { - \fp_eval:n { #2 * #1 + #5 * ( 1 - #1 ) } \c_space_tl - \fp_eval:n { #3 * #1 + #6 * ( 1 - #1 ) } \c_space_tl - \fp_eval:n { #4 * #1 + #7 * ( 1 - #1 ) } - } -\cs_new:Npn \@@_parse_mix_cmyk:nw - #1#2 ~ #3 ~ #4 ~ #5 \q_mark #6 ~ #7 ~ #8 ~ #9 \q_stop - { - \fp_eval:n { #2 * #1 + #6 * ( 1 - #1 ) } \c_space_tl - \fp_eval:n { #3 * #1 + #7 * ( 1 - #1 ) } \c_space_tl - \fp_eval:n { #4 * #1 + #8 * ( 1 - #1 ) } \c_space_tl - \fp_eval:n { #5 * #1 + #9 * ( 1 - #1 ) } - } -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \begin{macro}[EXP] -% { -% \@@_parse_model_gray:w, \@@_parse_model_rgb:w, -% \@@_parse_model_cmyk:w, \@@_parse_model_spot:w -% } -% \begin{macro}[EXP]{\@@_parse_number:n} -% \begin{macro}[EXP]{\@@_parse_number:w} -% \begin{macro}[EXP]{\@@_parse_spot_aux:w} -% Turn the input into internal form, also tidying up the number quickly. -% \begin{macrocode} -\cs_new:Npn \@@_parse_model_gray:w #1 , #2 \q_stop { \@@_parse_number:n {#1} } -\cs_new:Npn \@@_parse_model_rgb:w #1 , #2 , #3 , #4 \q_stop - { - \@@_parse_number:n {#1} ~ - \@@_parse_number:n {#2} ~ - \@@_parse_number:n {#3} - } -\cs_new:Npn \@@_parse_model_cmyk:w #1 , #2 , #3 , #4 , #5 \q_stop - { - \@@_parse_number:n {#1} ~ - \@@_parse_number:n {#2} ~ - \@@_parse_number:n {#3} ~ - \@@_parse_number:n {#4} - } -\cs_new:Npn \@@_parse_model_spot:w #1 , #2 \q_stop - { \@@_parse_spot_aux:w #1 ! 100 ! \q_stop } -\cs_new:Npn \@@_parse_spot_aux:w #1 ! #2 ! #3 \q_stop - { #1 ~ \fp_eval:n { #2 / 100 } } -\cs_new:Npn \@@_parse_number:n #1 - { \@@_parse_number:w #1 . 0 . \q_stop } -\cs_new:Npn \@@_parse_number:w #1 . #2 . #3 \q_stop - { \tl_if_blank:nTF {#1} { 0 } {#1} . #2 } -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \subsection{Selecting colors (and color models)} -% -% \begin{variable}{\l_color_fixed_model_tl} -% For selecting a single fixed model. -% \begin{macrocode} -\tl_new:N \l_color_fixed_model_tl -% \end{macrocode} -% \end{variable} -% -% \begin{macro}{\@@_check_model:N} -% \begin{macro}{\@@_check_model:w} -% Check that the model in use is the one required. -% \begin{macrocode} -\cs_new_protected:Npn \@@_check_model:N #1 - { - \tl_if_empty:NF \l_color_fixed_model_tl - { - \exp_after:wN \@@_check_model:w #1 \q_stop - \tl_if_eq:NNF \l_@@_model_tl \l_color_fixed_model_tl - { - \@@_convert:VVN \l_@@_model_tl \l_color_fixed_model_tl - \l_@@_value_tl - } - \tl_set:Nx #1 - { \l_color_fixed_model_tl \c_space_tl \l_@@_value_tl } - } - } -\cs_new_protected:Npn \@@_check_model:w #1 ~ #2 \q_stop - { - \tl_set:Nn \l_@@_model_tl {#1} - \tl_set:Nn \l_@@_value_tl {#2} - } -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\@@_select:} -% A backend-neutral location for \enquote{last minute} manipulations before -% handing off to the backend code. We set the special |.| syntax here: this -% will therefore always be available. The finalisation is separate from the -% main function so it can also be applied to \emph{e.g.}~page color. -% \begin{macrocode} -\cs_new_protected:Npn \@@_select: - { - \tl_set_eq:cN { l_@@_named_ . _tl } \l_@@_current_tl - \@@_select:V \l_@@_current_tl - } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\color_select:n} -% \begin{macro}{\color_select:nn} -% Parse the input expressions then get the backend to actually activate -% them. -% \begin{macrocode} -\cs_new_protected:Npn \color_select:n #1 - { - \color_parse:nN {#1} \l_@@_current_tl - \@@_select: - } -\cs_new_protected:Npn \color_select:nn #1#2 - { - \@@_direct:nnN {#1} {#2} \l_@@_current_tl - \@@_select: - } -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \subsection{Direct model use} -% -% \begin{macro}{\@@_direct:nnN} -% Directly set a color based on a model/value combination. -% \begin{macrocode} -\cs_new_protected:Npn \@@_direct:nnN #1#2#3 - { - \cs_if_exist:cTF { @@_parse_model_ #1 :w } - { - \tl_set:Nx #3 - { #1 ~ \use:c { @@_parse_model_ #1 :w } #2 , 0 , 0 , 0 , 0 \q_stop } - \@@_check_model:N #3 - } - { - \__kernel_msg_error:nnn { color } { invalid-model } {#1} - } - } -% \end{macrocode} -% \end{macro} -% -% \subsection{Defining named colors} -% -% \begin{variable}{\l_@@_named_tl} -% Space to store the detail of the named color. -% \begin{macrocode} -\tl_new:N \l_@@_named_tl -% \end{macrocode} -% \end{variable} -% -% \begin{macro}{\@@_store:Nn} -% Store the named color unless it has an invalid name. -% \begin{macrocode} -\cs_new_protected:Npn \@@_store:Nn #1#2 - { - \str_if_eq:nnF {#2} { . } - { - \tl_clear_new:c { l_@@_named_ #2 _tl } - \tl_set_eq:cN { l_@@_named_ #2 _tl } #1 - } - } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\color_set:nn} -% \begin{macro}{\color_set:nnn} -% \begin{macro}{\color_set_eq:nn} -% Defining named colors has to include a step to force creation of the -% underlying token list to avoid errors when checking is enabled. -% \begin{macrocode} -\cs_new_protected:Npn \color_set:nn #1#2 - { - \color_parse:nN {#2} \l_@@_named_tl - \@@_store:Nn \l_@@_named_tl {#1} - } -\cs_new_protected:Npn \color_set:nnn #1#2#3 - { - \@@_direct:nnN {#2} {#3} \l_@@_named_tl - \@@_store:Nn \l_@@_named_tl {#1} - } -\cs_new_protected:Npn \color_set_eq:nn #1#2 - { - \@@_if_defined:nTF {#2} - { - \tl_clear_new:c { l_@@_named_ #1 _tl } - \str_if_eq:nnTF {#2} { . } - { \tl_set_eq:cN { l_@@_named_ #1 _tl } \l_@@_current_tl } - { \tl_set_eq:cc { l_@@_named_ #1 _tl } { l_@@_named_ #2 _tl } } - } - { - \__kernel_msg_error:nnn { color } { unknown-color } {#2} - } - } -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% -% A small set of colors are always defined. -% \begin{macrocode} -\color_set:nnn { black } { gray } { 0 } -\color_set:nnn { white } { gray } { 1 } -\color_set:nnn { cyan } { cmyk } { 1 , 0 , 0 , 0 } -\color_set:nnn { magenta } { cmyk } { 0 , 1 , 0 , 0 } -\color_set:nnn { yellow } { cmyk } { 0 , 0 , 1 , 0 } -\color_set:nnn { red } { rgb } { 1 , 0 , 0 } -\color_set:nnn { green } { rgb } { 0 , 1 , 0 } -\color_set:nnn { blue } { rgb } { 0 , 0 , 1 } -% \end{macrocode} -% -% \begin{variable}{\l_@@_named_._tl} -% A special named color: this is always defined though not fixed in -% definition. -% \begin{macrocode} -\tl_new:c { l_@@_named_._tl } -\tl_set_eq:cN { l_@@_named_._tl } \l_@@_current_tl -% \end{macrocode} -% \end{variable} -% -% \subsection{Diagnostics} -% -% \begin{macro}{\color_show:n} -% \begin{macro}{\@@_show:w} -% \begin{macro}{\@@_show_gray:w, \@@_show_rgb:w, \@@_show_cmyk:w} -% Extract the information about a color and format for the user: the approach -% is similar to the keys module here. -% \begin{macrocode} -\cs_new_protected:Npn \color_show:n #1 - { - \msg_show:nnxxxx { LaTeX / color } { show } - {#1} - { - \@@_if_defined:nTF {#1} - { \exp_last_unbraced:Nv \@@_show:w { l_@@_named_ #1 _tl } \q_stop } - { } - } - { } - { } - } -\cs_new:Npn \@@_show:w #1 ~ #2 \q_stop - { - \msg_show_item_unbraced:nn { model } {#1} - \exp_args:Nnf \msg_show_item_unbraced:nn { value } - { \use:c { @@_show_ #1 :w } #2 \q_stop } - } -\cs_new:Npn \@@_show_gray:w #1 \q_stop { #1 } -\cs_new:Npn \@@_show_rgb:w #1 ~ #2 ~ #3 \q_stop { #1 ,~ #2 ,~ #3 } -\cs_new:Npn \@@_show_cmyk:w #1 ~ #2 ~ #3 ~ #4 \q_stop { #1 ,~ #2 ,~ #3 ,~ #4 } -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \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. - } -% \end{macrocode} -% -% \begin{macrocode} -\__kernel_msg_new:nnn { color } { show } - { - The~color~#1~ - \tl_if_empty:nTF {#2} - { is~undefined. } - { has~the~properties: #2 } - } -% \end{macrocode} -% -% \begin{macrocode} -%</initex|package> -% \end{macrocode} -% -% \end{implementation} -% -% \PrintIndex diff --git a/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.ins b/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.ins deleted file mode 100644 index a2601a4fde1..00000000000 --- a/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.ins +++ /dev/null @@ -1,58 +0,0 @@ -\iffalse meta-comment - -File: l3color.ins - -Copyright (C) 2017-2020 The LaTeX3 Project - -It may be distributed and/or modified under the conditions of the -LaTeX Project Public License (LPPL), either version 1.3c of this -license or (at your option) any later version. The latest version -of this license is in the file - - http://www.latex-project.org/lppl.txt - -This file is part of the "l3experimental bundle" (The Work in LPPL) -and all files in that bundle must be distributed together. - ------------------------------------------------------------------------ - -The development version of the bundle can be found at - - https://github.com/latex3/latex3 - -for those people who are interested. - ------------------------------------------------------------------------ - -Any modification of this file should ensure that the copyright and -license information is placed in the derived files. - -\fi - -\input l3docstrip.tex -\askforoverwritefalse - -\preamble - -Copyright (C) 2017-2020 The LaTeX3 Project - -It may be distributed and/or modified under the conditions of -the LaTeX Project Public License (LPPL), either version 1.3c of -this license or (at your option) any later version. The latest -version of this license is in the file: - - http://www.latex-project.org/lppl.txt - -This file is part of the "l3experimental bundle" (The Work in LPPL) -and all files in that bundle must be distributed together. - -\endpreamble -% stop docstrip adding \endinput -\postamble -\endpostamble - -\keepsilent - -\generate{\file{l3color.sty}{\from{l3color.dtx}{package}}} - -\endbatchfile 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 572b4f2192a..64bc0cfa646 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx @@ -2,7 +2,7 @@ % %% File: l3draw-boxes.dtx % -% Copyright (C) 2018-2020 The LaTeX3 Project +% Copyright (C) 2018-2021 The LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -36,7 +36,7 @@ % } % % \author{^^A -% The \LaTeX3 Project\thanks +% The \LaTeX{} Project\thanks % {^^A % E-mail: % \href{mailto:latex-team@latex-project.org} @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-01-12} +% \date{Released 2021-02-18} % % \maketitle % @@ -53,7 +53,7 @@ % \section{\pkg{l3draw-boxes} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -113,7 +113,7 @@ } \hbox_set:Nn \l_@@_tmp_box { - \tex_kern:D \l_@@_xshift_dim + \__kernel_kern:n { \l_@@_xshift_dim } \box_move_up:nn { \l_@@_yshift_dim } { \box_use_drop:N \l_@@_tmp_box } } @@ -147,7 +147,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} 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 53c221d69e2..f193ceb4d64 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx @@ -2,7 +2,7 @@ % %% File: l3draw-layers.dtx % -% Copyright (C) 2019,2020 The LaTeX3 Project +% Copyright (C) 2019-2021 The LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -36,7 +36,7 @@ % } % % \author{^^A -% The \LaTeX3 Project\thanks +% The \LaTeX{} Project\thanks % {^^A % E-mail: % \href{mailto:latex-team@latex-project.org} @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-01-12} +% \date{Released 2021-02-18} % % \maketitle % @@ -53,7 +53,7 @@ % \section{\pkg{l3draw-layers} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -208,7 +208,7 @@ % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} 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 846043faa45..a846d4046a2 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx @@ -2,7 +2,7 @@ % %% File: l3draw-paths.dtx % -% Copyright (C) 2018-2020 The LaTeX3 Project +% Copyright (C) 2018-2021 The LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -36,7 +36,7 @@ % } % % \author{^^A -% The \LaTeX3 Project\thanks +% The \LaTeX{} Project\thanks % {^^A % E-mail: % \href{mailto:latex-team@latex-project.org} @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-01-12} +% \date{Released 2021-02-18} % % \maketitle % @@ -53,7 +53,7 @@ % \section{\pkg{l3draw-paths} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -1030,7 +1030,7 @@ % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} 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 dccb1fb6772..70e088d0cf7 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx @@ -2,7 +2,7 @@ % %% File: l3draw-points.dtx % -% Copyright (C) 2018-2020 The LaTeX3 Project +% Copyright (C) 2018-2021 The LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -36,7 +36,7 @@ % } % % \author{^^A -% The \LaTeX3 Project\thanks +% The \LaTeX{} Project\thanks % {^^A % E-mail: % \href{mailto:latex-team@latex-project.org} @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-01-12} +% \date{Released 2021-02-18} % % \maketitle % @@ -53,7 +53,7 @@ % \section{\pkg{l3draw-points} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -116,8 +116,8 @@ {#1} } \cs_new:Npn \@@_point_process_auxi:nn #1#2 - { \@@_point_process_auxii:nw {#2} #1 \q_stop } -\cs_new:Npn \@@_point_process_auxii:nw #1 #2 , #3 \q_stop + { \@@_point_process_auxii:nw {#2} #1 \s_@@_stop } +\cs_new:Npn \@@_point_process_auxii:nw #1 #2 , #3 \s_@@_stop { #1 {#2} {#3} } \cs_new:Npn \@@_point_process:nnn #1#2#3 { @@ -127,8 +127,8 @@ {#1} } \cs_new:Npn \@@_point_process_auxiii:nnn #1#2#3 - { \@@_point_process_auxiv:nw {#3} #1 \q_mark #2 \q_stop } -\cs_new:Npn \@@_point_process_auxiv:nw #1 #2 , #3 \q_mark #4 , #5 \q_stop + { \@@_point_process_auxiv:nw {#3} #1 \s_@@_mark #2 \s_@@_stop } +\cs_new:Npn \@@_point_process_auxiv:nw #1 #2 , #3 \s_@@_mark #4 , #5 \s_@@_stop { #1 {#2} {#3} {#4} {#5} } \cs_new:Npn \@@_point_process:nnnn #1#2#3#4 { @@ -139,9 +139,9 @@ {#1} } \cs_new:Npn \@@_point_process_auxv:nnnn #1#2#3#4 - { \@@_point_process_auxvi:nw {#4} #1 \q_mark #2 \q_mark #3 \q_stop } + { \@@_point_process_auxvi:nw {#4} #1 \s_@@_mark #2 \s_@@_mark #3 \s_@@_stop } \cs_new:Npn \@@_point_process_auxvi:nw - #1 #2 , #3 \q_mark #4 , #5 \q_mark #6 , #7 \q_stop + #1 #2 , #3 \s_@@_mark #4 , #5 \s_@@_mark #6 , #7 \s_@@_stop { #1 {#2} {#3} {#4} {#5} {#6} {#7} } \cs_new:Npn \@@_point_process:nnnnn #1#2#3#4#5 { @@ -155,10 +155,10 @@ \cs_new:Npn \@@_point_process_auxvii:nnnnn #1#2#3#4#5 { \@@_point_process_auxviii:nw - {#5} #1 \q_mark #2 \q_mark #3 \q_mark #4 \q_stop + {#5} #1 \s_@@_mark #2 \s_@@_mark #3 \s_@@_mark #4 \s_@@_stop } \cs_new:Npn \@@_point_process_auxviii:nw - #1 #2 , #3 \q_mark #4 , #5 \q_mark #6 , #7 \q_mark #8 , #9 \q_stop + #1 #2 , #3 \s_@@_mark #4 , #5 \s_@@_mark #6 , #7 \s_@@_mark #8 , #9 \s_@@_stop { #1 {#2} {#3} {#4} {#5} {#6} {#7} {#8} {#9} } % \end{macrocode} % \end{macro} @@ -963,7 +963,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} 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 704d80652ff..60792f27ed0 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx @@ -2,7 +2,7 @@ % %% File: l3draw-scopes.dtx % -% Copyright (C) 2018-2020 The LaTeX3 Project +% Copyright (C) 2018-2021 The LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -36,7 +36,7 @@ % } % % \author{^^A -% The \LaTeX3 Project\thanks +% The \LaTeX{} Project\thanks % {^^A % E-mail: % \href{mailto:latex-team@latex-project.org} @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-01-12} +% \date{Released 2021-02-18} % % \maketitle % @@ -53,7 +53,7 @@ % \section{\pkg{l3draw-scopes} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -132,7 +132,7 @@ \draw_transform_shift_reset: \@@_softpath_clear: \draw_linewidth:n { \l_draw_default_linewidth_dim } - \draw_color:n { . } + \color_select:n { . } \draw_nonzero_rule: \draw_cap_butt: \draw_join_miter: @@ -262,7 +262,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} 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 ce3b8b1ac80..9d70d5d7e2c 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx @@ -2,7 +2,7 @@ % %% File: l3draw-softpath.dtx % -% Copyright (C) 2018-2020 The LaTeX3 Project +% Copyright (C) 2018-2021 The LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -36,7 +36,7 @@ % } % % \author{^^A -% The \LaTeX3 Project\thanks +% The \LaTeX{} Project\thanks % {^^A % E-mail: % \href{mailto:latex-team@latex-project.org} @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-01-12} +% \date{Released 2021-02-18} % % \maketitle % @@ -53,7 +53,7 @@ % \section{\pkg{l3draw-softpath} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -326,8 +326,8 @@ \tl_build_get:NN \g_@@_softpath_main_tl \l_@@_softpath_internal_tl \exp_after:wN \@@_softpath_round_loop:Nnn \l_@@_softpath_internal_tl - \q_recursion_tail ? ? - \q_recursion_stop + \q_@@_recursion_tail ? ? + \q_@@_recursion_stop \group_end: } \bool_gset_false:N \g_@@_softpath_corners_bool @@ -342,7 +342,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_softpath_round_loop:Nnn #1#2#3 { - \quark_if_recursion_tail_stop_do:Nn #1 { \@@_softpath_round_end: } + \@@_if_recursion_tail_stop_do:Nn #1 { \@@_softpath_round_end: } \token_if_eq_meaning:NNTF #1 \@@_softpath_roundpoint_op:nn { \@@_softpath_round_action:nn {#2} {#3} } { @@ -505,7 +505,7 @@ \cs_new:Npn \@@_softpath_round_calc:nnnnnn #1#2#3#4#5#6 { \@@_softpath_round_calc:nnnnw {#3} {#4} {#5} {#6} - #1 \q_mark #2 \q_stop + #1 \s_@@_mark #2 \s_@@_stop } \cs_generate_variant:Nn \@@_softpath_round_calc:nnnnnn { fV } % \end{macrocode} @@ -513,7 +513,7 @@ % quadratic Bézier curve. % \begin{macrocode} \cs_new:Npn \@@_softpath_round_calc:nnnnw - #1#2#3#4 #5 , #6 \q_mark #7 , #8 \q_stop + #1#2#3#4 #5 , #6 \s_@@_mark #7 , #8 \s_@@_stop { {#5} {#6} \exp_not:N \@@_softpath_curveto_opi:nn @@ -556,7 +556,7 @@ \exp_not:N \exp_after:wN \exp_not:N \@@_softpath_round_close:w \exp_not:N \l_@@_softpath_curve_end_tl - \exp_not:N \q_stop + \s_@@_stop } \use:x { @@ -567,7 +567,7 @@ \exp_not:N \exp_after:wN \exp_not:N \@@_softpath_round_close:w \exp_not:N \l_@@_softpath_curve_end_tl - \exp_not:N \q_stop + \s_@@_stop } } } @@ -576,7 +576,7 @@ \exp_after:wN \use_none:n \l_@@_softpath_move_tl } } -\cs_new:Npn \@@_softpath_round_close:w #1 , #2 \q_stop { {#1} {#2} } +\cs_new:Npn \@@_softpath_round_close:w #1 , #2 \s_@@_stop { {#1} {#2} } % \end{macrocode} % Tidy up the parts of the path, complete the built token list and put % it back into action. @@ -607,7 +607,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} 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 658982a49b9..105120a391d 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx @@ -2,7 +2,7 @@ % %% File: l3draw-state.dtx % -% Copyright (C) 2018-2020 The LaTeX3 Project +% Copyright (C) 2018-2021 The LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -36,7 +36,7 @@ % } % % \author{^^A -% The \LaTeX3 Project\thanks +% The \LaTeX{} Project\thanks % {^^A % E-mail: % \href{mailto:latex-team@latex-project.org} @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-01-12} +% \date{Released 2021-02-18} % % \maketitle % @@ -53,7 +53,7 @@ % \section{\pkg{l3draw-state} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -124,7 +124,7 @@ % Pass through to the driver layer. % \begin{macrocode} \cs_new_protected:Npn \draw_miterlimit:n #1 - { \@@_backend_miterlimit:n { \fp_eval:n {#1} } } + { \exp_args:Nx \@@_backend_miterlimit:n { \fp_eval:n {#1} } } % \end{macrocode} % \end{macro} % @@ -147,57 +147,8 @@ % \end{macrocode} % \end{macro} % -% \begin{variable}{\l_@@_color_tmp_tl} -% Scratch space. % \begin{macrocode} -\tl_new:N \l_@@_color_tmp_tl -% \end{macrocode} -% \end{variable} -% -% \begin{macro}{\draw_color:n, \draw_color_fill:n, \draw_color_stroke:n} -% \begin{macro}{\@@_color:nn} -% \begin{macro}{\@@_color_aux:nn, \@@_color_aux:Vn} -% \begin{macro}{\@@_color:nw} -% \begin{macro} -% { -% \@@_select_cmyk:nw, \@@_select_gray:nw, -% \@@_select_rgb:nw, \@@_split_select:nw -% } -% Much the same as for core color support but calling the relevant -% driver-level function. -% \begin{macrocode} -\cs_new_eq:NN \draw_color:n \color_select:n -\cs_new_protected:Npn \draw_color_fill:n #1 - { \@@_color:nn { fill } {#1} } -\cs_new_protected:Npn \draw_color_stroke:n #1 - { \@@_color:nn { stroke } {#1} } -\cs_new_protected:Npn \@@_color:nn #1#2 - { - \color_parse:nN {#2} \l_@@_color_tmp_tl - \@@_color_aux:Vn \l_@@_color_tmp_tl {#1} - } -\cs_new_protected:Npn \@@_color_aux:nn #1#2 - { \@@_color:nw {#2} #1 \q_stop } -\cs_generate_variant:Nn \@@_color_aux:nn { V } -\cs_new_protected:Npn \@@_color:nw #1#2 ~ #3 \q_stop - { \use:c { @@_color_ #2 :nw } {#1} #3 \q_stop } -\cs_new_protected:Npn \@@_color_cmyk:nw #1#2 ~ #3 ~ #4 ~ #5 \q_stop - { \use:c { @@_backend_color_ #1 _cmyk:nnnn } {#2} {#3} {#4} {#5} } -\cs_new_protected:Npn \@@_color_gray:nw #1#2 \q_stop - { \use:c { @@_backend_color_ #1 _gray:n } {#2} } -\cs_new_protected:Npn \@@_color_rgb:nw #1#2 ~ #3 ~ #4 \q_stop - { \use:c { @@_backend_color_ #1 _rgb:nnn } {#2} {#3} {#4} } -\cs_new_protected:Npn \@@_color_spot:nw #1#2 ~ #3 \q_stop - { \use:c { @@_backend_color_ #1 _spot:nn } {#2} {#3} } -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} 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 bcfed707879..839fce91a61 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx @@ -2,7 +2,7 @@ % %% File: l3draw-transforms.dtx % -% Copyright (C) 2018-2020 The LaTeX3 Project +% Copyright (C) 2018-2021 The LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -36,7 +36,7 @@ % } % % \author{^^A -% The \LaTeX3 Project\thanks +% The \LaTeX{} Project\thanks % {^^A % E-mail: % \href{mailto:latex-team@latex-project.org} @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-01-12} +% \date{Released 2021-02-18} % % \maketitle % @@ -53,7 +53,7 @@ % \section{\pkg{l3draw-transforms} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -70,8 +70,12 @@ % these to fully understand them. % \item \cs{pgftransformarrow}: Likely to be done when other arrow functions % are added. +% \item \cs{pgftransformationadjustments}: Used mainly by CircuiTi\textit{k}Z +% although also for shapes, likely needs more use cases before addressing. % \item \cs{pgflowlevelsynccm}, \cs{pgflowlevel}: Likely to be added when % use cases are encountered in other parts of the code. +% \item \cs{pgfviewboxscope}: Seems very speicalied, need to understand the +% requirements here. % \end{itemize} % % \begin{variable}{\l_@@_matrix_active_bool} @@ -331,7 +335,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx index 0ce74688f42..1b6cdd8ab9f 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx @@ -2,7 +2,7 @@ % %% File: l3draw.dtx % -% Copyright(C) 2018-2020 The LaTeX3 Project +% Copyright(C) 2018-2021 The LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -102,7 +102,7 @@ % } % % \author{^^A -% The \LaTeX3 Project\thanks +% The \LaTeX{} Project\thanks % {^^A % E-mail: % \href{mailto:latex-team@latex-project.org} @@ -110,7 +110,7 @@ % }^^A % } % -% \date{Released 2020-01-12} +% \date{Released 2021-02-18} % % \maketitle % @@ -231,7 +231,7 @@ % \begin{syntax} % \cs{draw_linewidth:n} \Arg{width} % \end{syntax} -% Sets the width to be used for stroking to the \meta{width} (an +% Sets the width to be used for stroking to the \meta{width} (an % \meta{fp expr}). % \end{function} % @@ -268,7 +268,7 @@ % \draw_end: % \end{demo} % Setting an empty pattern will produce a solid line. -% +% % Note the \meta{pattern} interface here is different from that in \pkg{pgf}: % the list is comma-separated not given in brace groups. % \end{function} @@ -410,7 +410,7 @@ % Gives the co-ordinates of the point at \meta{angle} (an \meta{fp expr} in % \emph{degrees}) and \meta{radius}. The three-argument version accepts % two radii of different lengths. -% +% % Note the interface here is somewhat different from that in \pkg{pgf}: % the one- and two-radii versions in \pkg{l3draw} use separate functions, % whilst in \pkg{pgf} they use the same function and a keyword. @@ -470,7 +470,7 @@ % \emph{degrees}) and \meta{radius}, relative to the prevailing % $x$- and $y$-vectors. The three-argument version accepts two radii of % different lengths. -% +% % Note the interface here is somewhat different from that in \pkg{pgf}: % the one- and two-radii versions in \pkg{l3draw} use separate functions, % whilst in \pkg{pgf} they use the same function and a keyword. @@ -650,7 +650,7 @@ % \draw_path_lineto:n { 2cm , 1cm } % \draw_path_lineto:n { 3cm , 0.5cm } % \draw_path_lineto:n { 3cm , 0cm } -% \draw_color_fill:n { yellow!80!black } +% \color_fill:n { yellow!80!black } % \draw_path_use_clear:n { fill , stroke } % \draw_end: % \end{demo} @@ -662,7 +662,7 @@ % \draw_path_moveto:n { 2cm , 1cm } % Begins a new part % \draw_path_lineto:n { 3cm , 0.5cm } % \draw_path_lineto:n { 3cm , 0cm } -% \draw_color_fill:n { yellow!80!black } +% \color_fill:n { yellow!80!black } % \draw_path_use_clear:n { fill , stroke } % \draw_end: % \end{demo} @@ -684,7 +684,7 @@ % { 1cm , 1cm } % First control % { 2cm , 1cm } % Second control % { 3cm , 0cm } % End -% \draw_color_fill:n { yellow!80!black } +% \color_fill:n { yellow!80!black } % \draw_path_use_clear:n { fill , stroke } % \draw_end: % \end{demo} @@ -705,7 +705,7 @@ % \draw_path_curveto:nn % { 1cm , 1cm } % { 2cm , 0cm } -% \draw_color_fill:n { yellow!80!black } +% \color_fill:n { yellow!80!black } % \draw_path_use_clear:n { fill , stroke } % \draw_end: % \end{demo} @@ -778,7 +778,7 @@ % { 1.5cm , 0cm } % { 0cm , 1cm } % \draw_path_use_clear:n { stroke } -% \draw_color:n { red } +% \color_select:n { red } % \draw_path_ellipse:nnn % { 1cm , 0cm } % { 1cm , 1cm } @@ -795,7 +795,7 @@ % \begin{syntax} % \cs{draw_path_circle:nn} \Arg{center} \Arg{radius} % \end{syntax} -% Appends a circle of \meta{radius} at \meta{center} to the current path. +% Appends a circle of \meta{radius} at \meta{center} to the current path. % This is a shortcut for \cs{draw_path_ellipse:nnn}. % \end{function} % @@ -977,15 +977,6 @@ % \end{demo} % \end{function} % -% \subsection{Color} -% -% \begin{function}{\draw_color:n, \draw_color_fill:n, \draw_color_stroke:n} -% \begin{syntax} -% \cs{draw_color:n} \Arg{color expression} -% \end{syntax} -% Evaluates the \meta{color expression} as described for \pkg{l3color}. -% \end{function} -% % \subsection{Transformations} % % Points are normally used unchanged relative to the canvas axes. This can @@ -1137,7 +1128,7 @@ % \section{\pkg{l3draw} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -1145,20 +1136,39 @@ % \end{macrocode} % % \begin{macrocode} -%<*package> -\ProvidesExplPackage{l3draw}{2020-01-12}{} +\ProvidesExplPackage{l3draw}{2021-02-18}{} {L3 Experimental core drawing support} -%</package> % \end{macrocode} % +% \subsection{Internal auxiliaries} +% +% \begin{variable}{\s_@@_mark,\s_@@_stop} +% Internal scan marks. +% \begin{macrocode} +\scan_new:N \s_@@_mark +\scan_new:N \s_@@_stop +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\q_@@_recursion_tail,\q_@@_recursion_stop} +% Internal recursion quarks. % \begin{macrocode} -\RequirePackage { l3color } +\quark_new:N \q_@@_recursion_tail +\quark_new:N \q_@@_recursion_stop % \end{macrocode} +% \end{variable} +% +% \begin{macro}[EXP]{\@@_if_recursion_tail_stop_do:Nn} +% Functions to query recursion quarks. +% \begin{macrocode} +\__kernel_quark_new_test:N \@@_if_recursion_tail_stop_do:Nn +% \end{macrocode} +% \end{macro} % % Everything else is in the sub-files! % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.ins b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.ins index 9b72ca17fd6..ba54fc41322 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.ins +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.ins @@ -2,7 +2,7 @@ File: l3draw.ins -Copyright (C) 2018-2020 The LaTeX3 Project +Copyright (C) 2018-2021 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -34,7 +34,7 @@ license information is placed in the derived files. \preamble -Copyright (C) 2018-2020 The LaTeX3 Project +Copyright (C) 2018-2021 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of diff --git a/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx b/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx index e877b69ca5f..5b4144c062e 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx @@ -2,7 +2,7 @@ % %% File: l3graphics.dtx % -% Copyright (C) 2017-2020 The LaTeX3 Project +% Copyright (C) 2017-2021 The LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -38,7 +38,7 @@ % } % % \author{^^A -% The \LaTeX3 Project\thanks +% The \LaTeX{} Project\thanks % {^^A % E-mail: % \href{mailto:latex-team@latex-project.org} @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Released 2020-01-12} +% \date{Released 2021-02-18} % % \maketitle % @@ -232,7 +232,7 @@ % \section{\pkg{l3graphics} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -240,10 +240,8 @@ % \end{macrocode} % % \begin{macrocode} -%<*package> -\ProvidesExplPackage{l3graphics}{2020-01-12}{} +\ProvidesExplPackage{l3graphics}{2021-02-18}{} {L3 Experimental graphics inclusion support} -%</package> % \end{macrocode} % % \begin{variable}{\l_@@_tmp_ior, \l_@@_tmp_tl} @@ -254,6 +252,13 @@ % \end{macrocode} % \end{variable} % +% \begin{variable}{\s_@@_stop} +% Internal scan marks. +% \begin{macrocode} +\scan_new:N \s_@@_stop +% \end{macrocode} +% \end{variable} +% % \subsection{Image feature support} % % \begin{macro} @@ -408,7 +413,7 @@ \ior_str_map_inline:Nn \exp_not:N \l_@@_tmp_ior { \exp_not:N \@@_read_bb_auxiii:w - ##1 ~ \c_colon_str \exp_not:N \q_stop + ##1 ~ \c_colon_str \s_@@_stop } } \exp_not:n @@ -425,12 +430,12 @@ \use:x { \cs_new_protected:Npn \exp_not:N \@@_read_bb_auxiii:w - ##1 \c_colon_str ##2 \exp_not:N \q_stop + ##1 \c_colon_str ##2 \s_@@_stop { \exp_not:N \str_if_eq:nnT { \c_percent_str \c_percent_str BoundingBox } {##1} - { \exp_not:N \@@_read_bb_auxiv:w ##2 ( ) \exp_not:N \q_stop } + { \exp_not:N \@@_read_bb_auxiv:w ##2 ( ) \s_@@_stop } } } % \end{macrocode} @@ -441,7 +446,7 @@ % whitespace. \TeX{} will then tidy up for us, with just a leading space to % worry about: that is taken out by the |\use:n| here. % \begin{macrocode} -\cs_new_protected:Npn \@@_read_bb_auxiv:w #1 ( #2 ) #3 \q_stop +\cs_new_protected:Npn \@@_read_bb_auxiv:w #1 ( #2 ) #3 \s_@@_stop { \str_if_eq:nnF {#2} { atend } { @@ -451,14 +456,14 @@ \char_set_catcode_space:n { 32 } } { \use:n #1 } - \exp_after:wN \@@_read_bb_auxv:w \l_@@_tmp_tl \q_stop + \exp_after:wN \@@_read_bb_auxv:w \l_@@_tmp_tl \s_@@_stop } } % \end{macrocode} % A trailing space was deliberately added earlier so we know that the final % data point is terminated by a space. % \begin{macrocode} -\cs_new_protected:Npn \@@_read_bb_auxv:w #1~#2~#3~#4~#5 \q_stop +\cs_new_protected:Npn \@@_read_bb_auxv:w #1~#2~#3~#4~#5 \s_@@_stop { \dim_set:Nn \l_graphics_llx_dim { #1 bp } \dim_set:Nn \l_graphics_lly_dim { #2 bp } @@ -708,7 +713,7 @@ % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.ins b/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.ins index ef345b5969d..92af3d8915a 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.ins +++ b/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.ins @@ -1,6 +1,6 @@ \iffalse meta-comment -File l3graphics.ins Copyright (C) 2017,2019,2020 The LaTeX3 Project +File l3graphics.ins Copyright (C) 2017,2019-2021 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -32,7 +32,7 @@ license information is placed in the derived files. \preamble -Copyright (C) 2019,2020 The LaTeX3 Project +Copyright (C) 2019-2021 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of diff --git a/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.dtx b/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.dtx deleted file mode 100644 index dc36f172faa..00000000000 --- a/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.dtx +++ /dev/null @@ -1,337 +0,0 @@ -% \iffalse meta-comment -% -%% File: l3pdf.dtx -% -% Copyright(C) 2019,2020 The LaTeX3 Project -% -% It may be distributed and/or modified under the conditions of the -% LaTeX Project Public License (LPPL), either version 1.3c of this -% license or (at your option) any later version. The latest version -% of this license is in the file -% -% http://www.latex-project.org/lppl.txt -% -% This file is part of the "l3experimental bundle" (The Work in LPPL) -% and all files in that bundle must be distributed together. -% -% ----------------------------------------------------------------------- -% -% The development version of the bundle can be found at -% -% https://github.com/latex3/latex3 -% -% for those people who are interested. -% -%<*driver|package> -\RequirePackage{expl3} -%</driver|package> -%<*driver> -\documentclass[full]{l3doc} -\begin{document} - \DocInput{\jobname.dtx} -\end{document} -%</driver> -% \fi -% -% \title{^^A -% The \pkg{l3pdf} package\\ Core PDF support^^A -% } -% -% \author{^^A -% The \LaTeX3 Project\thanks -% {^^A -% E-mail: -% \href{mailto:latex-team@latex-project.org} -% {latex-team@latex-project.org}^^A -% }^^A -% } -% -% \date{Released 2020-01-12} -% -% \maketitle -% -% \begin{documentation} -% -% \section{\pkg{l3pdf} documentation} -% -% \subsection{Objects} -% -% \begin{function}[added = 2019-06-02]{\pdf_object_new:nn} -% \begin{syntax} -% \cs{pdf_object_new:nn} \Arg{object} \Arg{type} -% \end{syntax} -% Declares \meta{object} as a PDF object of \meta{type}, which should be -% one of -% \begin{itemize} -% \item \texttt{array} -% \item \texttt{dict} -% \item \texttt{fstream} -% \item \texttt{stream} -% \end{itemize} -% The object may be referenced from this point on, and written later -% using \cs{pdf_object_write:nn}. -% \end{function} -% -% \begin{function}[added = 2019-06-02] -% {\pdf_object_write:nn, \pdf_object_write:nx} -% \begin{syntax} -% \cs{pdf_object_write:nn} \Arg{object} \Arg{content} -% \end{syntax} -% Writes the \meta{content} as content of the \meta{object}. Depending on the -% \meta{type} declared for the object, the format required for the -% \meta{data} will vary -% \begin{itemize} -% \item[\texttt{array}] A space-separated list of values -% \item[\texttt{dict}] Key--value pairs in the form -% \texttt{/\meta{key} \meta{value}} -% \item[\texttt{fstream}] Two brace groups: \meta{file name} and -% \meta{file content} -% \item[\texttt{stream}] Two brace groups: \meta{attributes (dictionary)} -% and \meta{stream contents} -% \end{itemize} -% \end{function} -% -% \begin{function}[EXP, added = 2019-06-02]{\pdf_object_ref:n} -% \begin{syntax} -% \cs{pdf_object_ref:n} \Arg{object} -% \end{syntax} -% Inserts the appropriate information to reference the \meta{object} -% in for example page resource allocation -% \end{function} -% -% \begin{function}[added = 2019-06-02] -% {\pdf_object_now:nn, \pdf_object_now:nx} -% \begin{syntax} -% \cs{pdf_object_now:nn} \Arg{type} \Arg{content} -% \end{syntax} -% Writes the \meta{content} as content of an anonymous object. Depending on the -% \meta{type}, the format required for the \meta{data} will vary -% \begin{itemize} -% \item[\texttt{array}] A space-separated list of values -% \item[\texttt{dict}] Key--value pairs in the form -% \texttt{/\meta{key} \meta{value}} -% \item[\texttt{fstream}] Two brace groups: \meta{file name} and -% \meta{file content} -% \item[\texttt{stream}] Two brace groups: \meta{attributes (dictionary)} -% and \meta{stream contents} -% \end{itemize} -% \end{function} -% -% \begin{function}[EXP, added = 2019-06-02]{\pdf_object_last:} -% \begin{syntax} -% \cs{pdf_object_last:} -% \end{syntax} -% Inserts the appropriate information to reference the last \meta{object} -% created. This is particularly useful for anonymous objects. -% \end{function} -% -% \subsection{Version} -% -% \begin{function}[pTF, EXP, added = 2019-06-02]{\pdf_version_compare:Nn} -% \begin{syntax} -% \cs{pdf_version_compare:NnTF} \meta{comparator} \Arg{version} \Arg{true code} \Arg{false code} -% \end{syntax} -% Compares the version of the PDF being created with the \meta{version} -% string specified, using the \meta{comparator}. Either the \meta{true code} -% or \meta{false code} will be left in the output stream. -% \end{function} -% -% \begin{function}[added = 2019-06-02] -% {\pdf_version_gset:n, \pdf_version_min_gset:n} -% \begin{syntax} -% \cs{pdf_version_gset:n} \Arg{version} -% \end{syntax} -% Sets the \meta{version} of the PDF being created. The |min| version will -% not alter the output version unless it is currently lower than the -% \meta{version} requested. -% -% This function may only be used up to the point where the PDF file is -% initialised. -% \end{function} -% -% \begin{function}[EXP, added = 2019-06-02] -% {\pdf_version:, \pdf_version_major:, \pdf_version_minor:} -% \begin{syntax} -% \cs{pdf_version:} -% \end{syntax} -% Expands to the currently-active PDF version. -% \end{function} -% -% \subsection{Compression} -% -% \begin{function}[added = 2019-06-02]{\pdf_uncompress:} -% \begin{syntax} -% \cs{pdf_uncompress:} -% \end{syntax} -% Disables any compression of the PDF, where possible. -% -% This function may only be used up to the point where the PDF file is -% initialised. -% \end{function} -% -% \end{documentation} -% -% \begin{implementation} -% -% \section{\pkg{l3pdf} implementation} -% -% \begin{macrocode} -%<*initex|package> -% \end{macrocode} -% -% \begin{macrocode} -%<@@=pdf> -% \end{macrocode} -% -% \begin{macrocode} -%<*package> -\ProvidesExplPackage{l3pdf}{2020-01-12}{} - {L3 Experimental core PDF support} -%</package> -% \end{macrocode} -% -% \begin{variable}{\g_@@_init_bool} -% A flag so we have some chance of avoiding setting things we are not -% allowed to. -% \begin{macrocode} -\bool_new:N \g_@@_init_bool -%<*package> -\cs_if_exist:NT \documentclass - { - \AtBeginDocument - { \bool_gset_true:N \g_@@_init_bool } - } -%</package> -% \end{macrocode} -% \end{variable} -% -% \subsection{Compression} -% -% \begin{macro}{\pdf_uncompress:} -% Simple to do. -% \begin{macrocode} -\cs_new_protected:Npn \pdf_uncompress: - { - \bool_if:NF \g_@@_init_bool - { - \@@_backend_compresslevel:n { 0 } - \@@_backend_compress_objects:n { \c_false_bool } - } - } -% \end{macrocode} -% \end{macro} -% -% \subsection{Objects} -% -% \begin{macro}{\pdf_object_new:nn, \pdf_object_write:nn, \pdf_object_write:nx} -% \begin{macro}{\pdf_object_ref:n} -% \begin{macro}{\pdf_object_now:nn, \pdf_object_now:nx} -% \begin{macro}{\pdf_object_last:} -% Simple to do. -% \begin{macrocode} -\cs_new_protected:Npn \pdf_object_new:nn #1#2 - { \@@_backend_object_new:nn {#1} {#2} } -\cs_new_protected:Npn \pdf_object_write:nn #1#2 - { \@@_backend_object_write:nn {#1} {#2} } -\cs_generate_variant:Nn \pdf_object_write:nn { nx } -\cs_new:Npn \pdf_object_ref:n #1 { \@@_backend_object_ref:n {#1} } -\cs_new_protected:Npn \pdf_object_now:nn #1#2 - { \@@_backend_object_now:nn {#1} {#2} } -\cs_generate_variant:Nn \pdf_object_now:nn { nx } -\cs_new:Npn \pdf_object_last: { \@@_backend_object_last: } -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \subsection{Version} -% -% \begin{macro}{\pdf_version_compare:Nn} -% \begin{macro} -% { -% @@_version_compare_=:w , -% @@_version_compare_<:w , -% @@_version_compare_>:w -% } -% \begin{macrocode} -% To compare version, we need to split the given value then deal with both -% major and minor version -\prg_new_conditional:Npnn \pdf_version_compare:Nn #1#2 { p , T , F , TF } - { \use:c { @@_version_compare_ #1 :w } #2 . . \q_stop } -\cs_new:cpn { @@_version_compare_=:w } #1 . #2 . #3 \q_stop - { - \bool_lazy_and:nnTF - { \int_compare_p:nNn \@@_backend_version_major: = {#1} } - { \int_compare_p:nNn \@@_backend_version_minor: = {#2} } - { \prg_return_true: } - { \prg_return_false: } - } -\cs_new:cpn { @@_version_compare_<:w } #1 . #2 . #3 \q_stop - { - \bool_lazy_or:nnTF - { \int_compare_p:nNn \@@_backend_version_major: < {#1} } - { - \bool_lazy_and_p:nn - { \int_compare_p:nNn \@@_backend_version_major: = {#1} } - { \int_compare_p:nNn \@@_backend_version_minor: < {#2} } - } - { \prg_return_true: } - { \prg_return_false: } - } -\cs_new:cpn { @@_version_compare_>:w } #1 . #2 . #3 \q_stop - { - \bool_lazy_or:nnTF - { \int_compare_p:nNn \@@_backend_version_major: > {#1} } - { - \bool_lazy_and_p:nn - { \int_compare_p:nNn \@@_backend_version_major: = {#1} } - { \int_compare_p:nNn \@@_backend_version_minor: > {#2} } - } - { \prg_return_true: } - { \prg_return_false: } - } -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\pdf_version_gset:n, \pdf_version_min_gset:n} -% \begin{macro}{\@@_version_gset:w} -% Split the version and set. -% \begin{macrocode} -\cs_new_protected:Npn \pdf_version_gset:n #1 - { \@@_version_gset:w #1 . . \q_stop } -\cs_new_protected:Npn \pdf_version_min_gset:n #1 - { - \pdf_version_compare:NnT < {#1} - { \@@_version_gset:w #1 . . \q_stop } - } -\cs_new_protected:Npn \@@_version_gset:w #1 . #2 . #3\q_stop - { - \bool_if:NF \g_@@_init_bool - { - \@@_backend_version_major_gset:n {#1} - \@@_backend_version_minor_gset:n {#2} - } - } -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}[EXP]{\pdf_version:, \pdf_version_major:, \pdf_version_minor:} -% Wrappers. -% \begin{macrocode} -\cs_new:Npn \pdf_version: - { \@@_backend_version_major: . \@@_backend_version_minor: } -\cs_new:Npn \pdf_version_major: { \@@_backend_version_major: } -\cs_new:Npn \pdf_version_minor: { \@@_backend_version_minor: } -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -%</initex|package> -% \end{macrocode} -% -% \end{implementation} -% -% \PrintIndex diff --git a/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.ins b/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.ins deleted file mode 100644 index e325be4520a..00000000000 --- a/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.ins +++ /dev/null @@ -1,60 +0,0 @@ -\iffalse meta-comment - -File: l3pdf.ins - -Copyright (C) 2019,2020 The LaTeX3 Project - -It may be distributed and/or modified under the conditions of the -LaTeX Project Public License (LPPL), either version 1.3c of this -license or (at your option) any later version. The latest version -of this license is in the file - - http://www.latex-project.org/lppl.txt - -This file is part of the "l3experimental bundle" (The Work in LPPL) -and all files in that bundle must be distributed together. - ------------------------------------------------------------------------ - -The development version of the bundle can be found at - - https://github.com/latex3/latex3 - -for those people who are interested. - ------------------------------------------------------------------------ - -Any modification of this file should ensure that the copyright and -license information is placed in the derived files. - -\fi - -\input l3docstrip.tex -\askforoverwritefalse - -\preamble - -Copyright (C) 2019,2020 The LaTeX3 Project - -It may be distributed and/or modified under the conditions of -the LaTeX Project Public License (LPPL), either version 1.3c of -this license or (at your option) any later version. The latest -version of this license is in the file: - - http://www.latex-project.org/lppl.txt - -This file is part of the "l3pdf bundle" (The Work in LPPL) -and all files in that bundle must be distributed together. - -\endpreamble -% stop docstrip adding \endinput -\postamble -\endpostamble - -\keepsilent - -\generate{\file{l3pdf.sty} - {\from{l3pdf.dtx}{package}} -} - -\endbatchfile 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 af34128e5b7..9b0cf4a5a4d 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx @@ -2,7 +2,7 @@ % %% File: l3str-format.dtx % -% Copyright (C) 2012-2020 The LaTeX3 Project +% Copyright (C) 2012-2021 The LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -40,7 +40,7 @@ % } % % \author{^^A -% The \LaTeX3 Project\thanks +% The \LaTeX{} Project\thanks % {^^A % E-mail: % \href{mailto:latex-team@latex-project.org} @@ -48,7 +48,7 @@ % }^^A % } % -% \date{Released 2020-01-12} +% \date{Released 2021-02-18} % % \maketitle % @@ -158,7 +158,7 @@ % \section{\pkg{l3str-format} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -166,10 +166,8 @@ % \end{macrocode} % % \begin{macrocode} -%<*package> -\ProvidesExplPackage{l3str-format}{2020-01-12}{} +\ProvidesExplPackage{l3str-format}{2021-02-18}{} {L3 Experimental string formatting} -%</package> % \end{macrocode} % % \subsection{Helpers} @@ -191,7 +189,7 @@ % % \begin{macro}[EXP]{\@@_format_if_digit:NTF} % Here we expect |#1| to be a character with category other, or -% \cs{s_stop}. +% \cs{s_@@_stop}. % \begin{macrocode} \prg_new_conditional:Npnn \@@_format_if_digit:N #1 { TF } { @@ -203,9 +201,9 @@ % % \begin{macro}[EXP] % {\@@_format_put:nw, \@@_format_put:ow, \@@_format_put:fw} -% Put |#1| after an \cs{s_stop} delimiter. +% Put |#1| after an \cs{s_@@_stop} delimiter. % \begin{macrocode} -\cs_new:Npn \@@_format_put:nw #1 #2 \s_stop { #2 \s_stop #1 } +\cs_new:Npn \@@_format_put:nw #1 #2 \s_@@_stop { #2 \s_@@_stop #1 } \cs_generate_variant:Nn \@@_format_put:nw { o , f } % \end{macrocode} % \end{macro} @@ -256,7 +254,7 @@ \cs_new:Npn \@@_format_parse:n #1 { \exp_last_unbraced:Nf \@@_format_parse_auxi:NN - { \__kernel_str_to_other:n {#1} } \s_stop \s_stop {#1} + { \__kernel_str_to_other:n {#1} } \s_@@_stop \s_@@_stop {#1} } \cs_new:Npx \@@_format_parse_auxi:NN #1#2 { @@ -301,11 +299,11 @@ } \cs_new:Npn \@@_format_parse_auxvii:nN #1#2 { - \token_if_eq_meaning:NNTF \s_stop #2 + \token_if_eq_meaning:NNTF \s_@@_stop #2 { \@@_format_parse_end:nwn { #1 ? } #2 } { \@@_format_parse_end:nwn { #1 #2 } } } -\cs_new:Npn \@@_format_parse_end:nwn #1 #2 \s_stop \s_stop #3 +\cs_new:Npn \@@_format_parse_end:nwn #1 #2 \s_@@_stop \s_@@_stop #3 { \tl_if_empty:nF {#2} { \__kernel_msg_expandable_error:nnn { str } { invalid-format } {#3} } @@ -455,9 +453,9 @@ % \end{quote} % First check that the \meta{alignment} is not |=|, and set the % default alignment |?| to |<|. Place the modified information after -% a trailing \cs{s_stop} for later retrieval. Then check that there +% a trailing \cs{s_@@_stop} for later retrieval. Then check that there % was no \meta{sign}. The width will be useful later, store it after -% \cs{s_stop}. Afterwards, store the precision, and the function +% \cs{s_@@_stop}. Afterwards, store the precision, and the function % \cs{@@_range:nnn} that will be used to extract the first % |#5| characters of the string. % There is a need to use the internal function, as otherwise @@ -495,14 +493,14 @@ } } \@@_format_tl_s:NNnnNNn - \s_stop + \s_@@_stop } % \end{macrocode} % \end{macro} % % \begin{macro}[EXP]{\@@_format_tl_s:NNnnNNn} % \begin{quote} -% \cs{@@_format_tl_s:NNnnNNn} \cs{s_stop} \meta{function} +% \cs{@@_format_tl_s:NNnnNNn} \cs{s_@@_stop} \meta{function} % \Arg{arguments} \Arg{width} \meta{fill} \meta{alignment} % \Arg{token list} % \end{quote} @@ -617,12 +615,12 @@ % \end{quote} % First set the % default alignment |?| to |>|. Place the modified information after -% a trailing \cs{s_stop} for later retrieval. Then check the +% a trailing \cs{s_@@_stop} for later retrieval. Then check the % \meta{sign}: if the integer is negative, always put~|-|. Otherwise, % if the format's \meta{sign} is |~|, put a space (with category % \enquote{other}); if it is~|+| put |+|; if it is |-| (default), put % nothing, represented as a brace group. The width |#4| will be -% useful later, store it after \cs{s_stop}. Afterwards, check that +% useful later, store it after \cs{s_@@_stop}. Afterwards, check that % the \meta{precision} was absent. Finally, dispatch depending on the % \meta{style}. % \begin{macrocode} @@ -660,14 +658,14 @@ { str } { invalid-style-format } {#6} { int } \@@_format_int:NwnnNNn \use:n } - \s_stop {#7} + \s_@@_stop {#7} } % \end{macrocode} % \end{macro} % % \begin{macro}[EXP]{\@@_format_int:NwnnNNn} % \begin{quote} -% \cs{@@_format_int:NwnnNNn} \meta{function} \cs{s_stop} +% \cs{@@_format_int:NwnnNNn} \meta{function} \cs{s_@@_stop} % \Arg{width} \Arg{sign} \meta{fill} \meta{alignment} \Arg{integer} % \end{quote} % Use the |format_align| function corresponding to the @@ -680,7 +678,7 @@ % \item the \meta{fill} character. % \end{itemize} % \begin{macrocode} -\cs_new:Npn \@@_format_int:NwnnNNn #1#2 \s_stop #3#4#5#6#7 +\cs_new:Npn \@@_format_int:NwnnNNn #1#2 \s_@@_stop #3#4#5#6#7 { \exp_args:Nc \exp_args:Nf { @@_format_align_#6:nnnN } @@ -728,13 +726,13 @@ % \Arg{floating point} % \end{quote} % First set the default alignment |?| to |>|. Place the modified -% information after a trailing \cs{s_stop} for later retrieval. Then +% information after a trailing \cs{s_@@_stop} for later retrieval. Then % check the \meta{format sign} and the \meta{fp sign}: if the floating % point is negative, always put~|-|. Otherwise (including % \texttt{nan}), if the format's \meta{sign} is |~|, put a space (with % category \enquote{other}); if it is~|+| put |+|; if it is |-| % (default), put nothing, represented as a brace group. The width -% |#4| will be useful later, store it after \cs{s_stop}. Afterwards, +% |#4| will be useful later, store it after \cs{s_@@_stop}. Afterwards, % check the \meta{precision}: if it was not given, replace it by $6$ % (default precision) unless no \meta{style} was given: in that case % we want to use whatever precision is needed to fully describe the @@ -776,20 +774,20 @@ { str } { invalid-style-format } {#6} { fp } \@@_format_fp:wnnnNNn \@@_format_fp_g:nn } - \s_stop {#7} + \s_@@_stop {#7} } % \end{macrocode} % \end{macro} % % \begin{macro}[EXP]{\@@_format_fp:wnnnNNn} % \begin{quote} -% \cs{@@_format_fp:wnnnNNn} \meta{formatting function} \cs{s_stop} +% \cs{@@_format_fp:wnnnNNn} \meta{formatting function} \cs{s_@@_stop} % \Arg{precision} \Arg{width} \Arg{sign} \meta{fill} % \meta{alignment} \Arg{floating point} % \end{quote} % \begin{macrocode} \cs_new:Npn \@@_format_fp:wnnnNNn - #1 \s_stop #2 #3 #4 #5#6 #7 + #1 \s_@@_stop #2 #3 #4 #5#6 #7 { \exp_args:Nc \exp_args:Nf { @@_format_align_#6:nnnN } @@ -850,7 +848,7 @@ { \prg_replicate:nn { #4 - \c__fp_prec_int + 1 } { 0 } } \@@_format_put:nw { #1 . #2 } } - \use_none:n \s_stop + \use_none:n \s_@@_stop } % \end{macrocode} % \end{macro} @@ -947,11 +945,11 @@ \cs_new:Npn \@@_format_fp_trim:w #1 e { \@@_format_fp_trim_loop:w #1 - ; \@@_format_fp_trim_loop:w 0; \@@_format_fp_trim_dot:w .; \s_stop e + ; \@@_format_fp_trim_loop:w 0; \@@_format_fp_trim_dot:w .; \s_@@_stop e } \cs_new:Npn \@@_format_fp_trim_loop:w #1 0; #2 { #2 #1 ; #2 } \cs_new:Npn \@@_format_fp_trim_dot:w #1 .; { \@@_format_fp_trim_end:w #1 ; } -\cs_new:Npn \@@_format_fp_trim_end:w #1 ; #2 \s_stop { #1 } +\cs_new:Npn \@@_format_fp_trim_end:w #1 ; #2 \s_@@_stop { #1 } % \end{macrocode} % \end{macro} % \end{macro} @@ -974,7 +972,7 @@ % \end{macrocode} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str.ins b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str.ins index 76fc36a116c..4c2b0df987c 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str.ins +++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str.ins @@ -2,7 +2,7 @@ File l3str.ins -Copyright (C) 2011-2017,2019,2020 The LaTeX3 Project +Copyright (C) 2011-2017,2019-2021 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -34,7 +34,7 @@ license information is placed in the derived files. \preamble -Copyright (C) 2011-2020 The LaTeX3 Project +Copyright (C) 2011-2021 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of 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 c166811e114..9a7920fe3f3 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 @@ -2,7 +2,7 @@ % %% File: l3sys-shell.dtx % -% Copyright (C) 2018-2020 The LaTeX3 Project +% Copyright (C) 2018-2021 The LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -38,7 +38,7 @@ % } % % \author{^^A -% The \LaTeX3 Project\thanks +% The \LaTeX{} Project\thanks % {^^A % E-mail: % \href{mailto:latex-team@latex-project.org} @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Released 2020-01-12} +% \date{Released 2021-02-18} % % \maketitle % @@ -67,7 +67,7 @@ % \begin{syntax} % \cs{sys_shell_mkdir:n} \Arg{directory} % \end{syntax} -% Creates the \meta{directory}, which should should be specified using |/| as +% Creates the \meta{directory}, which should be specified using |/| as % a path separator. If unrestricted shell escape is not enabled, no action is % attempted. % \end{function} @@ -95,7 +95,7 @@ % \begin{syntax} % \cs{sys_shell_rmdir:n} \Arg{directory} % \end{syntax} -% Removes the \meta{directory}, which should should be specified using |/| as +% Removes the \meta{directory}, which should be specified using |/| as % a path separator. If unrestricted shell escape is not enabled, no action is % attempted. % \end{function} @@ -127,7 +127,7 @@ % \section{\pkg{l3sys-shell} implementation} % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -135,12 +135,31 @@ % \end{macrocode} % % \begin{macrocode} -%<*package> -\ProvidesExplPackage{l3sys-shell}{2020-01-12}{} +\ProvidesExplPackage{l3sys-shell}{2021-02-18}{} {L3 Experimental system shell functions} -%</package> % \end{macrocode} % +% \begin{variable}{\s_@@_stop} +% Internal scan marks. +% \begin{macrocode} +\scan_new:N \s_@@_stop +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\q_@@_nil} +% Internal quarks. +% \begin{macrocode} +\quark_new:N \q_@@_nil +% \end{macrocode} +% \end{variable} +% +% \begin{macro}[pTF]{\@@_quark_if_nil:n} +% Branching quark conditional. +% \begin{macrocode} +\__kernel_quark_new_conditional:Nn \@@_quark_if_nil:N { F } +% \end{macrocode} +% \end{macro} +% % \begin{macro}[EXP]{\@@_path_to_win:n} % \begin{macro}[EXP]{\@@_path_to_win:w} % \begin{macro}[EXP]{\@@_path_to_win:N} @@ -148,20 +167,20 @@ % \begin{macrocode} \cs_new:Npn \@@_path_to_win:n #1 { - \exp_after:wN \@@_path_to_win:w \tl_to_str:n {#1} ~ \q_stop + \exp_after:wN \@@_path_to_win:w \tl_to_str:n {#1} ~ \s_@@_stop } -\cs_new:Npn \@@_path_to_win:w #1 ~ #2 \q_stop +\cs_new:Npn \@@_path_to_win:w #1 ~ #2 \s_@@_stop { - \@@_path_to_win:N #1 \q_nil + \@@_path_to_win:N #1 \q_@@_nil \tl_if_empty:nF {#2} { \c_space_tl - \@@_path_to_win:w #2 \q_stop + \@@_path_to_win:w #2 \s_@@_stop } } \cs_new:Npn \@@_path_to_win:N #1 { - \quark_if_nil:NF #1 + \@@_quark_if_nil:NF #1 { \token_if_eq_meaning:NNTF #1 / { \c_backslash_str } @@ -364,7 +383,7 @@ % \end{macro} % % \begin{macrocode} -%</initex|package> +%</package> % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.ins b/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.ins index 9ee35460cbd..025c282b726 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.ins +++ b/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.ins @@ -2,7 +2,7 @@ File: l3sys-shell.ins -Copyright (C) 2018-2020 The LaTeX3 Project +Copyright (C) 2018-2021 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -34,7 +34,7 @@ license information is placed in the derived files. \preamble -Copyright (C) 2018-2020 The LaTeX3 Project +Copyright (C) 2018-2021 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of diff --git a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx index 9f4aec0bcd9..86d3add8ae5 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx @@ -2,7 +2,7 @@ % %% File: xcoffins.dtx % -% Copyright (C) 2010-2012,2014,2016-2020 The LaTeX3 Project +% Copyright (C) 2010-2012,2014,2016-2021 The LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -22,9 +22,6 @@ % % for those people who are interested. % -%<*driver|package> -\RequirePackage{xparse} -%</driver|package> %<*driver> \documentclass[full]{l3doc} \usepackage{xcoffins} % Not yet part of expl3, so not in l3doc @@ -48,7 +45,7 @@ % } % % \author{^^A -% The \LaTeX3 Project\thanks +% The \LaTeX{} Project\thanks % {^^A % E-mail: % \href{mailto:latex-team@latex-project.org} @@ -56,7 +53,7 @@ % }^^A % } % -% \date{Released 2020-01-12} +% \date{Released 2021-02-18} % % \maketitle % @@ -675,7 +672,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xcoffins}{2020-01-12}{} +\ProvidesExplPackage{xcoffins}{2021-02-18}{} {L3 Experimental design level coffins} % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.ins b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.ins index 52d5c24a449..218e38dec37 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.ins +++ b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.ins @@ -2,7 +2,7 @@ File: xcoffins.ins -Copyright (C) 2010,2011,2012,2016,2017,2019,2020 The LaTeX3 Project +Copyright (C) 2010,2011,2012,2016,2017,2019-2021 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -34,7 +34,7 @@ license information is placed in the derived files. \preamble -Copyright (C) 2010-2020 The LaTeX3 Project +Copyright (C) 2010-2021 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx index 14d9fc9e099..1c7c9bd9418 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx @@ -3,7 +3,7 @@ %% File: l3galley.dtx % % Copyright (C) 1999-2001,2004-2009 Frank Mittelbach -% (C) 2010-2020 The LaTeX3 Project +% (C) 2010-2021 The LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -53,7 +53,7 @@ % } % % \author{^^A -% The \LaTeX3 Project\thanks +% The \LaTeX{} Project\thanks % {^^A % E-mail: % \href{mailto:latex-team@latex-project.org} @@ -61,7 +61,7 @@ % }^^A % } % -% \date{Released 2020-01-12} +% \date{Released 2021-02-18} % % \maketitle % @@ -678,7 +678,7 @@ % level both of these need to be correctly saved. % % \begin{macrocode} -%<*initex|package> +%<*package> % \end{macrocode} % % \begin{macrocode} @@ -686,23 +686,8 @@ % \end{macrocode} % % \begin{macrocode} -%<*package> -\ProvidesExplPackage{l3galley}{2020-01-12}{} +\ProvidesExplPackage{l3galley}{2021-02-18}{} {L3 Experimental galley code} -%</package> -% \end{macrocode} -% -% \subsection{Support items} -% -% Functions or settings which are needed by the galley but perhaps also -% elsewhere. -% -% The default hyphenation character should be set and hyphenation should be -% enabled. -% \begin{macrocode} -%<*initex> -\tex_defaulthyphenchar:D 45 \scan_stop: -%</initex> % \end{macrocode} % % \subsection{Scratch variables} @@ -767,12 +752,7 @@ % The width of the current measure: the \enquote{running} setting can be % inherited from \LaTeXe{}. % \begin{macrocode} -%<*initex> -\dim_new:N \l_galley_text_width_dim -%</initex> -%<*package> \cs_new_eq:NN \l_galley_text_width_dim \linewidth -%</package> % \end{macrocode} % \end{variable} % @@ -782,12 +762,7 @@ % width are one way to define the measure width. See also the text width, % which is an alternative view (and should be in sync with this one!). % \begin{macrocode} -%<*initex> -\dim_new:N \l_galley_total_left_margin_dim -%</initex> -%<*package> \cs_new_eq:NN \l_galley_total_left_margin_dim \@totalleftmargin -%</package> \dim_new:N \l_galley_total_right_margin_dim % \end{macrocode} % \end{variable} @@ -1453,18 +1428,11 @@ % \LaTeXe{} \cs{@nodocument} is never removed from the register. % This precaution is not be needed for a stand-alone format. % \begin{macrocode} -%<*initex> -\tex_everypar:D % TEMP - { - \bool_if:NTF \g_@@_begin_level_bool - { \@@_start_paragraph_first: } - { \@@_start_paragraph_std: } - } -%</initex> -%<*package> \cs_undefine:N \everypar \newtoks \everypar -\AtBeginDocument +\cs_if_exist:NTF \AtBeginDocument + { \AtBeginDocument } + { \use:n } { \tex_everypar:D { @@ -1474,7 +1442,6 @@ \tex_the:D \everypar } } -%</package> % \end{macrocode} % \end{macro} % @@ -1751,7 +1718,7 @@ \cs_new_protected:Npn \galley_cutout_right:nn { \@@_cutout:nnn { right } } % \end{macrocode} -% The cutout information needs to be saved in in the appropriate sequence. +% The cutout information needs to be saved in the appropriate sequence. % First, the input is converted to a (temporary) sequence. If there is % no existing cutout defined, this is simply stored. On the other hand, % if there is a cutout already active, the new one needs to be added to @@ -2497,10 +2464,6 @@ % % \subsection{\LaTeXe{} functions} % -% \begin{macrocode} -%<*package> -% \end{macrocode} -% % \begin{macro}{\clearpage} % The \tn{clearpage} macro needs to place material into the correct % structures rather than directly onto the main vertical list. Other @@ -2653,10 +2616,6 @@ %</package> % \end{macrocode} % -% \begin{macrocode} -%</initex|package> -% \end{macrocode} -% % \end{implementation} % % \PrintIndex diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx index 5cd043a5e61..680e288fe37 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx @@ -3,7 +3,7 @@ %% File: xgalley.dtx % % Copyright (C) 1999-2001,2004-2009 Frank Mittelbach -% (C) 2010-2012,2014,2016-2020 The LaTeX3 Project +% (C) 2010-2012,2014,2016-2021 The LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -23,9 +23,6 @@ % % for those people who are interested. % -%<*driver|package> -\RequirePackage{xparse} -%</driver|package> %<*driver> \documentclass[full]{l3doc} \begin{document} @@ -39,7 +36,7 @@ % } % % \author{^^A -% The \LaTeX3 Project\thanks +% The \LaTeX{} Project\thanks % {^^A % E-mail: % \href{mailto:latex-team@latex-project.org} @@ -47,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-01-12} +% \date{Released 2021-02-18} % % \maketitle % @@ -121,7 +118,7 @@ % \subsection{Layer two: internal dimensions} % % \begin{TemplateInterfaceDescription}{measure} -% \TemplateArgument{}{} ^^A A hack +% \TemplateArgument{}{} ^^A Some hack % \TemplateSemantics % Sets the width available to typeset material within the galley. % The \meta{left margin} and \meta{right margin} values are used in the @@ -192,7 +189,7 @@ % \subsection{Layer three: paragraph shape} % % \begin{TemplateInterfaceDescription}{parshape} -% \TemplateArgument{}{}^^A A hack +% \TemplateArgument{}{}^^A Some hack % \TemplateSemantics % Template of this type define any shaping of the paragraph within the % current measure of the galley. Thus they are used to generate @@ -734,9 +731,9 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xgalley}{2020-01-12}{} +\ProvidesExplPackage{xgalley}{2021-02-18}{} {L3 Experimental galley} -\RequirePackage{xparse,xtemplate,l3galley} +\RequirePackage{xtemplate,l3galley} % \end{macrocode} % % \subsection{Variables} diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.ins b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.ins index d0c89bcd2c9..8b5690d0799 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.ins +++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.ins @@ -2,7 +2,7 @@ File: xgalley.ins -Copyright (C) 2010-2012,2016,2017,2019,2020 The LaTeX3 Project +Copyright (C) 2010-2012,2016,2017,2019-2021 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -34,7 +34,7 @@ license information is placed in the derived files. \preamble -Copyright (C) 2010-2020 The LaTeX3 Project +Copyright (C) 2010-2021 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of |