summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/l3experimental
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2021-01-29 22:37:37 +0000
committerKarl Berry <karl@freefriends.org>2021-01-29 22:37:37 +0000
commit88b40fe28cf8ad53d15f707a0e4a3f99c953bb4b (patch)
treebc34852e40c7d6417600fca15591bdb58acbaf5c /Master/texmf-dist/source/latex/l3experimental
parent7ae58a3bf77274814f2c766b55c3713cab428aea (diff)
l3 (29jan21)
git-svn-id: svn://tug.org/texlive/trunk@57554 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/l3experimental')
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.ins4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx591
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.ins62
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx30
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3color/l3color.ins4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.ins4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.ins4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.dtx94
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.ins4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3str.ins4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.ins4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.ins4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.ins4
29 files changed, 833 insertions, 92 deletions
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx b/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
index 6842fff3c7e..b7d0c8963f2 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-10-27}
+% \date{Released 2020-01-29}
%
% \maketitle
%
@@ -129,7 +129,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3benchmark}{2020-10-27}{}
+\ProvidesExplPackage{l3benchmark}{2020-01-29}{}
{L3 Experimental benchmarking}
% \end{macrocode}
%
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..c7c3e43c06d
--- /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 2020-01-29}
+%
+% \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}{2020-01-29}{}
+ {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/l3bitset/l3bitset.ins b/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.ins
new file mode 100644
index 00000000000..1f693d29569
--- /dev/null
+++ b/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.ins
@@ -0,0 +1,62 @@
+\iffalse meta-comment
+
+File: l3bitset.ins
+
+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
+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) 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{l3bitset.sty}
+ {
+ \from{l3bitset.dtx} {package}
+ }
+}
+
+\endbatchfile
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx b/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx
index 9b81f5403c7..703815a96f1 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx
@@ -2,7 +2,7 @@
%
%% File: l3color.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-10-27}
+% \date{Released 2020-01-29}
%
% \maketitle
%
@@ -247,15 +247,18 @@
% and similar are not influenced by this setting.
% \end{variable}
%
-% \section{Colors for drawing: fills and strokes}
+% \section{Colors for fills and strokes}
%
% Colors for drawing operations and so forth are split into strokes and fills
-% (the latter may also be referred to as non-stroke color). These operations
-% \emph{may} apply to text, but this is backend-depended and the general
-% \cs{color_select:n(n)} should be used for typeset text. In contrast to
-% general color, these operations are \emph{not} stacked and thus must
-% \emph{not} split across pages. Also, an appropriate scope must be applied
-% to the color change, for example \cs{draw_begin:}/\cs{draw_end:}.
+% (the latter may also be referred to as non-stroke color). The fill color is
+% used for text under normal circumstances. Depending on the backend, stroke
+% color may use a \emph{stack}, in which case it exhibits the same page breaking
+% behavior as general color. However, \texttt{dvips}/\texttt{dvisvgm} do not
+% support this, and so color will need to be contained within a scope, such
+% as \cs{draw_begin:}/\cs{draw_end:}.
+%
+% Note that the \emph{current color} is the fill color, as this is used for
+% running text.
%
% \begin{function}{\color_fill:n, \color_stroke:n}
% \begin{syntax}
@@ -273,9 +276,8 @@
% \meta{value(s)} for filling or stroking.
% \end{function}
%
-% \begin{variable}{color.fc, color.sc}
-% When using \texttt{dvips}, these PostScript variables hold the fill and
-% stroke color, respectively.
+% \begin{variable}{color.sc}
+% When using \texttt{dvips}, this PostScript variables hold the stroke color.
% \end{variable}
%
% \section{Multiple color models}
@@ -421,7 +423,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3color}{2020-10-27}{}
+\ProvidesExplPackage{l3color}{2020-01-29}{}
{L3 Experimental color support}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.ins b/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.ins
index a2601a4fde1..e1704a9715b 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.ins
+++ b/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.ins
@@ -2,7 +2,7 @@
File: l3color.ins
-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
@@ -34,7 +34,7 @@ license information is placed in the derived files.
\preamble
-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
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 fc0e64eae04..3b251b33055 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-10-27}
+% \date{Released 2020-01-29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx
index 4b676ece844..c17e0eea672 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-10-27}
+% \date{Released 2020-01-29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
index b43f3b93b5f..82f5588a933 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-10-27}
+% \date{Released 2020-01-29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
index 3900b98f4d9..791b2f20343 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-10-27}
+% \date{Released 2020-01-29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
index 6a828302e81..34258562674 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-10-27}
+% \date{Released 2020-01-29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
index 626a45736ad..bd228009021 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-10-27}
+% \date{Released 2020-01-29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
index c74d9ecbb0d..e93266913b4 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-10-27}
+% \date{Released 2020-01-29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
index 82f31a9e600..7a242150a48 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-10-27}
+% \date{Released 2020-01-29}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
index eef0412c736..a42e75b75a2 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-10-27}
+% \date{Released 2020-01-29}
%
% \maketitle
%
@@ -1136,7 +1136,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3draw}{2020-10-27}{}
+\ProvidesExplPackage{l3draw}{2020-01-29}{}
{L3 Experimental core drawing support}
% \end{macrocode}
%
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 0f8a52c0097..280c3683865 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-10-27}
+% \date{Released 2020-01-29}
%
% \maketitle
%
@@ -240,7 +240,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3graphics}{2020-10-27}{}
+\ProvidesExplPackage{l3graphics}{2020-01-29}{}
{L3 Experimental graphics inclusion support}
% \end{macrocode}
%
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
index e51606a1301..218f4bd5d55 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.dtx
@@ -2,7 +2,7 @@
%
%% File: l3pdf.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
@@ -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-10-27}
+% \date{Released 2020-01-29}
%
% \maketitle
%
@@ -175,6 +175,74 @@
% initialised.
% \end{function}
%
+% \subsection{Destinations}
+%
+% Destinations are the places a link jumped too.
+% Unlike the name may suggest they don't described
+% an exact location in the PDF. Instead a destination contains a reference to
+% a page along with an instruction how to display this page.
+% The normally used \enquote{XYZ \textit{top left zoom}} for example instructs
+% the viewer to show the page with the given \textit{zoom} and
+% the top left corner at the \textit{top left} coordinates---which then gives
+% the impression that there is an anchor at this position.
+%
+% If an instruction takes a coordinate, it is calculated by the following
+% commands relative to the location the command is issued.
+% So to get a specific coordinate one has to move the command to the right place.
+%
+% \begin{function}[added = 2021-01-03]
+% {\pdf_destination:nn}
+% \begin{syntax}
+% \cs{pdf_destination:nn} \Arg{name} \Arg{type or integer}
+% \end{syntax}
+% This creates a destination. \Arg{type or integer} can be one of |fit|, |fith|,
+% |fitv|, |fitb|, |fitbh|, |fitbv|, |fitr|, |xyz|
+% or an integer representing a scale factor in percent.
+% |fitr| here gives only a lightweight version of |/FitR|:
+% The backend code defines |fitr| so that it will with pdf\LaTeX{} and
+% Lua\LaTeX{} use the coordinates of the surrounding box,
+% with \texttt{dvips} and \texttt{dvipdfmx} it falls back to |fit|.
+% For full control use \cs{pdf_destination:nnnn}.
+%
+% The keywords match to the PDF names as described in the following tabular.
+%
+% \medskip
+% \noindent\begin{tabular}{ll>{\raggedright\arraybackslash}p{6cm}}
+% \toprule
+% Keyword & PDF & Remarks \\ \midrule
+% |fit| & |/Fit|
+% & Fits the page to the window\\
+% |fith| & |/FitH| \textit{top}
+% & Fits the width of the page to the window \\
+% |fitv| & |/FitV| \textit{left}
+% & Fits the height of the page to the window \\
+% |fitb| & |/FitB|
+% & Fits the page bounding box to the window \\
+% |fitbh|& |/FitBH| \textit{top}
+% & Fits the width of the page bounding box to the window. \\
+% |fitbv|& |/FitBV| \textit{left}
+% & Fits the height of the page bounding box to the window. \\
+% |fitr| & |/FitR| \textit{left bottom right top}
+% & Fits the rectangle specified by the four coordinates to the window
+% (see above for the restrictions)\\
+% |xyz| & |/XYZ| \textit{left top} null
+% & Sets a coordinate but doesn't change the zoom.\\
+% \Arg{integer} & |/XYZ| \textit{left top zoom}
+% & Sets a coordinate and a zoom meaning \Arg{integer}\%.
+% \\\bottomrule
+% \end{tabular}
+%
+% \end{function}
+%
+% \begin{function}[added = 2021-01-17]
+% {\pdf_destination:nnnn}
+% \begin{syntax}
+% \cs{pdf_destination:nnnn} \Arg{name} \Arg{width} \Arg{height} \Arg{depth}
+% \end{syntax}
+% This creates a destination with |/FitR| type with the given dimensions relative
+% to the current location. The destination is in a box of size zero, but it doesn't
+% switch to horizontal mode.
+% \end{function}
% \end{documentation}
%
% \begin{implementation}
@@ -190,7 +258,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3pdf}{2020-10-27}{}
+\ProvidesExplPackage{l3pdf}{2020-01-29}{}
{L3 Experimental core PDF support}
% \end{macrocode}
%
@@ -347,6 +415,24 @@
% \end{macrocode}
% \end{macro}
%
+% \subsection{Destinations}
+%
+% \begin{macro}{\pdf_destination:nn}
+% \begin{macrocode}
+\cs_new_protected:Npn \pdf_destination:nn #1 #2
+ { \@@_backend_destination:nn {#1}{#2} }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pdf_destination:nnnn}
+% \begin{macrocode}
+\cs_new_protected:Npn \pdf_destination:nnnn #1 #2 #3 #4
+ {
+ \hbox_to_zero:n
+ { \@@_backend_destination:nnnn {#1} {#2} {#3} {#4} }
+ }
+% \end{macrocode}
+% \end{macro}
% \begin{macrocode}
%</package>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.ins b/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.ins
index e325be4520a..e422ceb995e 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.ins
+++ b/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.ins
@@ -2,7 +2,7 @@
File: l3pdf.ins
-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
@@ -34,7 +34,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/l3str/l3str-format.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
index a3171be0b65..0751244b40d 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-10-27}
+% \date{Released 2020-01-29}
%
% \maketitle
%
@@ -166,7 +166,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3str-format}{2020-10-27}{}
+\ProvidesExplPackage{l3str-format}{2020-01-29}{}
{L3 Experimental string formatting}
% \end{macrocode}
%
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 bf3ba7b058d..1126f56257b 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-10-27}
+% \date{Released 2020-01-29}
%
% \maketitle
%
@@ -135,7 +135,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3sys-shell}{2020-10-27}{}
+\ProvidesExplPackage{l3sys-shell}{2020-01-29}{}
{L3 Experimental system shell functions}
% \end{macrocode}
%
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 ec5ffab7e4a..8106487df75 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
@@ -48,7 +48,7 @@
% }
%
% \author{^^A
-% The \LaTeX3 Project\thanks
+% The \LaTeX{} Project\thanks
% {^^A
% E-mail:
% \href{mailto:latex-team@latex-project.org}
@@ -56,7 +56,7 @@
% }^^A
% }
%
-% \date{Released 2020-10-27}
+% \date{Released 2020-01-29}
%
% \maketitle
%
@@ -675,7 +675,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2020-10-27}{}
+\ProvidesExplPackage{xcoffins}{2020-01-29}{}
{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 5f1fa260303..10a359f0036 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-10-27}
+% \date{Released 2020-01-29}
%
% \maketitle
%
@@ -686,7 +686,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3galley}{2020-10-27}{}
+\ProvidesExplPackage{l3galley}{2020-01-29}{}
{L3 Experimental galley code}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
index 936b2a37bb4..a12bc47e200 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
@@ -39,7 +39,7 @@
% }
%
% \author{^^A
-% The \LaTeX3 Project\thanks
+% The \LaTeX{} Project\thanks
% {^^A
% E-mail:
% \href{mailto:latex-team@latex-project.org}
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Released 2020-10-27}
+% \date{Released 2020-01-29}
%
% \maketitle
%
@@ -734,7 +734,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2020-10-27}{}
+\ProvidesExplPackage{xgalley}{2020-01-29}{}
{L3 Experimental galley}
\RequirePackage{xparse,xtemplate,l3galley}
% \end{macrocode}
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