summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/l3experimental
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-08-05 03:02:12 +0000
committerNorbert Preining <norbert@preining.info>2021-08-05 03:02:12 +0000
commitb7e54219e4294fa527035f0bd2819ca11c3c6964 (patch)
tree6809ec5fe48f0c77fd85957a212fb223c3c3ab10 /macros/latex/contrib/l3experimental
parentda02fd6ad1c5fb45c5ec641bf236d8de4745709f (diff)
CTAN sync 202108050302
Diffstat (limited to 'macros/latex/contrib/l3experimental')
-rw-r--r--macros/latex/contrib/l3experimental/CHANGELOG.md9
-rw-r--r--macros/latex/contrib/l3experimental/README.md15
-rw-r--r--macros/latex/contrib/l3experimental/l3benchmark.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3benchmark.pdfbin308192 -> 308452 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3bitset.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3bitset.pdfbin404027 -> 404269 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-boxes.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-code.pdfbin653480 -> 660545 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-layers.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-paths.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-points.dtx70
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-scopes.dtx106
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-softpath.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-state.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-transforms.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw.dtx60
-rw-r--r--macros/latex/contrib/l3experimental/l3draw.pdfbin516286 -> 516783 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3galley.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3galley.pdfbin408562 -> 408815 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3graphics.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3graphics.pdfbin383668 -> 383917 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3opacity.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3opacity.pdfbin334707 -> 334968 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3str-format.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3str-format.pdfbin367660 -> 367908 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3sys-shell.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3sys-shell.pdfbin347679 -> 347938 bytes
-rw-r--r--macros/latex/contrib/l3experimental/xcoffins.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/xcoffins.pdfbin394017 -> 394273 bytes
-rw-r--r--macros/latex/contrib/l3experimental/xgalley.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/xgalley.pdfbin299354 -> 299605 bytes
31 files changed, 219 insertions, 89 deletions
diff --git a/macros/latex/contrib/l3experimental/CHANGELOG.md b/macros/latex/contrib/l3experimental/CHANGELOG.md
index 5ad7f3d183..f9604428a3 100644
--- a/macros/latex/contrib/l3experimental/CHANGELOG.md
+++ b/macros/latex/contrib/l3experimental/CHANGELOG.md
@@ -7,6 +7,12 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2021-08-04]
+
+### Added
+- `\draw_baseline:n`
+- `\draw_point:n`
+
## [2021-07-12]
### Added
@@ -215,7 +221,8 @@ this project uses date-based 'snapshot' version identifiers.
- New `l3color` module using `xcolor`-like expression syntax
- New `l3draw` module, based on `pgf` layer of the TikZ system
-[Unreleased]: https://github.com/latex3/latex3/compare/2021-07-12...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2021-08-04...HEAD
+[2021-08-04]: https://github.com/latex3/latex3/compare/2021-07-12...2021-08-04
[2021-07-12]: https://github.com/latex3/latex3/compare/2021-05-27...2021-07-12
[2021-05-27]: https://github.com/latex3/latex3/compare/2021-02-18...2021-05-27
[2021-02-18]: https://github.com/latex3/latex3/compare/2021-02-06...2021-02-18
diff --git a/macros/latex/contrib/l3experimental/README.md b/macros/latex/contrib/l3experimental/README.md
index ebb812c17d..d08213bef5 100644
--- a/macros/latex/contrib/l3experimental/README.md
+++ b/macros/latex/contrib/l3experimental/README.md
@@ -1,7 +1,7 @@
Experimental LaTeX3 Concepts
============================
-Release 2021-07-12
+Release 2021-08-04
Overview
--------
@@ -16,12 +16,13 @@ are under active development and the interfaces may change.
All of the material in the collection requires the LaTeX3 base layer package
[`l3kernel`](http://ctan.org/pkg/l3kernel). The two packages must be installed
-in matching versions: if you update `l3experimental`, make sure that `l3kernel` is
-updated at the same time.
+in matching versions: if you update `l3experimental`, make sure that `l3kernel`
+is updated at the same time.
Currently included in the CTAN release of l3experimental are the following
bundles:
* `l3benchmark`
+* `l3bitset`
* `l3draw`
* `l3graphics`
* `l3opacity`
@@ -35,6 +36,14 @@ bundles:
This module provides support for benchmarking the performance of code.
+`l3bitset`
+-------------
+
+This module provides a `bitset` data type, a vector of bits, which can be set
+and unset using their individual index in the vector, or using names assigned to
+each position in the vector. The bitset can be returned as a string of bits or
+as a decimal integer.
+
`l3draw`
--------
diff --git a/macros/latex/contrib/l3experimental/l3benchmark.dtx b/macros/latex/contrib/l3experimental/l3benchmark.dtx
index 71c12d8920..d3c3fce57c 100644
--- a/macros/latex/contrib/l3experimental/l3benchmark.dtx
+++ b/macros/latex/contrib/l3experimental/l3benchmark.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-04}
%
% \maketitle
%
@@ -122,7 +122,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3benchmark}{2021-07-12}{}
+\ProvidesExplPackage{l3benchmark}{2021-08-04}{}
{L3 Experimental benchmarking}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3benchmark.pdf b/macros/latex/contrib/l3experimental/l3benchmark.pdf
index e7b04df65e..e7f7c794fa 100644
--- a/macros/latex/contrib/l3experimental/l3benchmark.pdf
+++ b/macros/latex/contrib/l3experimental/l3benchmark.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3bitset.dtx b/macros/latex/contrib/l3experimental/l3bitset.dtx
index 0021241628..4a6fba442e 100644
--- a/macros/latex/contrib/l3experimental/l3bitset.dtx
+++ b/macros/latex/contrib/l3experimental/l3bitset.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-04}
%
% \maketitle
% \begin{documentation}
@@ -264,7 +264,7 @@
%<@@=bitset>
% \end{macrocode}
% \begin{macrocode}
-\ProvidesExplPackage{l3bitset}{2021-07-12}{}
+\ProvidesExplPackage{l3bitset}{2021-08-04}{}
{L3 Experimental bitset support}
% \end{macrocode}
% A bitset is a string variable.
diff --git a/macros/latex/contrib/l3experimental/l3bitset.pdf b/macros/latex/contrib/l3experimental/l3bitset.pdf
index 04e300fe46..6fe6ea444a 100644
--- a/macros/latex/contrib/l3experimental/l3bitset.pdf
+++ b/macros/latex/contrib/l3experimental/l3bitset.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3draw-boxes.dtx b/macros/latex/contrib/l3experimental/l3draw-boxes.dtx
index 45c6b0a16a..fc1b607400 100644
--- a/macros/latex/contrib/l3experimental/l3draw-boxes.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-boxes.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-code.pdf b/macros/latex/contrib/l3experimental/l3draw-code.pdf
index 68c0490580..aabbe3ed24 100644
--- a/macros/latex/contrib/l3experimental/l3draw-code.pdf
+++ b/macros/latex/contrib/l3experimental/l3draw-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3draw-layers.dtx b/macros/latex/contrib/l3experimental/l3draw-layers.dtx
index 57238ab2f1..e31961dab9 100644
--- a/macros/latex/contrib/l3experimental/l3draw-layers.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-layers.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-paths.dtx b/macros/latex/contrib/l3experimental/l3draw-paths.dtx
index 043f9a5926..77fba0c5bb 100644
--- a/macros/latex/contrib/l3experimental/l3draw-paths.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-paths.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-points.dtx b/macros/latex/contrib/l3experimental/l3draw-points.dtx
index 527194b8ee..8672d77a78 100644
--- a/macros/latex/contrib/l3experimental/l3draw-points.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-points.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-04}
%
% \maketitle
%
@@ -112,7 +112,7 @@
\cs_new:Npn \@@_point_process:nn #1#2
{
\exp_args:Nf \@@_point_process_auxi:nn
- { \@@_point_to_dim:n {#2} }
+ { \draw_point:n {#2} }
{#1}
}
\cs_new:Npn \@@_point_process_auxi:nn #1#2
@@ -122,8 +122,8 @@
\cs_new:Npn \@@_point_process:nnn #1#2#3
{
\exp_args:Nff \@@_point_process_auxiii:nnn
- { \@@_point_to_dim:n {#2} }
- { \@@_point_to_dim:n {#3} }
+ { \draw_point:n {#2} }
+ { \draw_point:n {#3} }
{#1}
}
\cs_new:Npn \@@_point_process_auxiii:nnn #1#2#3
@@ -133,9 +133,9 @@
\cs_new:Npn \@@_point_process:nnnn #1#2#3#4
{
\exp_args:Nfff \@@_point_process_auxv:nnnn
- { \@@_point_to_dim:n {#2} }
- { \@@_point_to_dim:n {#3} }
- { \@@_point_to_dim:n {#4} }
+ { \draw_point:n {#2} }
+ { \draw_point:n {#3} }
+ { \draw_point:n {#4} }
{#1}
}
\cs_new:Npn \@@_point_process_auxv:nnnn #1#2#3#4
@@ -146,10 +146,10 @@
\cs_new:Npn \@@_point_process:nnnnn #1#2#3#4#5
{
\exp_args:Nffff \@@_point_process_auxvii:nnnnn
- { \@@_point_to_dim:n {#2} }
- { \@@_point_to_dim:n {#3} }
- { \@@_point_to_dim:n {#4} }
- { \@@_point_to_dim:n {#5} }
+ { \draw_point:n {#2} }
+ { \draw_point:n {#3} }
+ { \draw_point:n {#4} }
+ { \draw_point:n {#5} }
{#1}
}
\cs_new:Npn \@@_point_process_auxvii:nnnnn #1#2#3#4#5
@@ -174,17 +174,19 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}[EXP]{\@@_point_to_dim:n}
-% \begin{macro}[EXP]{\@@_point_to_dim_aux:n, \@@_point_to_dim_aux:f}
-% \begin{macro}[EXP]{\@@_point_to_dim_aux:w}
+% \subsection{Basic points}
+%
+% \begin{macro}[EXP]{\draw_point:n}
+% \begin{macro}[EXP]{\@@_point_to_dim:n, \@@_point_to_dim:f}
+% \begin{macro}[EXP]{\@@_point_to_dim:w}
% Co-ordinates are always returned as two dimensions.
% \begin{macrocode}
+\cs_new:Npn \draw_point:n #1
+ { \@@_point_to_dim:f { \fp_eval:n {#1} } }
\cs_new:Npn \@@_point_to_dim:n #1
- { \@@_point_to_dim_aux:f { \fp_eval:n {#1} } }
-\cs_new:Npn \@@_point_to_dim_aux:n #1
- { \@@_point_to_dim_aux:w #1 }
-\cs_generate_variant:Nn \@@_point_to_dim_aux:n { f }
-\cs_new:Npn \@@_point_to_dim_aux:w ( #1 , ~ #2 ) { #1pt , #2pt }
+ { \@@_point_to_dim:w #1 }
+\cs_generate_variant:Nn \@@_point_to_dim:n { f }
+\cs_new:Npn \@@_point_to_dim:w ( #1 , ~ #2 ) { #1pt , #2pt }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -203,7 +205,7 @@
\cs_new:Npn \draw_point_polar:nnn #1#2#3
{ \@@_draw_polar:fnn { \fp_eval:n {#3} } {#1} {#2} }
\cs_new:Npn \@@_draw_polar:nnn #1#2#3
- { \@@_point_to_dim:n { cosd(#1) * (#2) , sind(#1) * (#3) } }
+ { \draw_point:n { cosd(#1) * (#2) , sind(#1) * (#3) } }
\cs_generate_variant:Nn \@@_draw_polar:nnn { f }
% \end{macrocode}
% \end{macro}
@@ -239,7 +241,7 @@
\fp_compare:nNnTF {#1} = \c_zero_fp
{ 0pt, 1pt }
{
- \@@_point_to_dim:n
+ \draw_point:n
{ ( #2 , #3 ) / #1 }
}
}
@@ -308,7 +310,7 @@
}
\cs_new:Npn \@@_point_intersect_lines_aux:nnnnnn #1#2#3#4#5#6
{
- \@@_point_to_dim:n
+ \draw_point:n
{
( #2 * #3 - #1 * #4 , #2 * #5 - #1 * #6 )
/ ( #4 * #5 - #6 * #3 )
@@ -462,7 +464,7 @@
\cs_generate_variant:Nn \@@_point_intersect_circles_auxvi:nnnnnnnn { f }
\cs_new:Npn \@@_point_intersect_circles_auxvii:nnnnnnn #1#2#3#4#5#6#7
{
- \@@_point_to_dim:n
+ \draw_point:n
{ #6 + #4 * #1 + #2 * #3 * #5 , #7 + #5 * #1 + -1 * #2 * #3 * #4 }
}
\cs_generate_variant:Nn \@@_point_intersect_circles_auxvii:nnnnnnn { fff }
@@ -503,7 +505,7 @@
}
\cs_generate_variant:Nn \@@_point_interpolate_line_aux:nnnnn { f }
\cs_new:Npn \@@_point_interpolate_line_aux:nnnnnn #1#2#3#4#5#6
- { \@@_point_to_dim:n { #2 * #3 + #1 * #5 , #2 * #4 + #1 * #6 } }
+ { \draw_point:n { #2 * #3 + #1 * #5 , #2 * #4 + #1 * #6 } }
\cs_generate_variant:Nn \@@_point_interpolate_line_aux:nnnnnn { f }
% \end{macrocode}
% \end{macro}
@@ -537,7 +539,7 @@
{ \draw_point_unit_vector:n { ( #2 ) - ( #3 , #4 ) } }
}
\cs_new:Npn \@@_point_interpolate_distance:nnnnn #1#2#3#4#5
- { \@@_point_to_dim:n { #2 + #1 * #4 , #3 + #1 * #5 } }
+ { \draw_point:n { #2 + #1 * #4 , #3 + #1 * #5 } }
\cs_generate_variant:Nn \@@_point_interpolate_distance:nnnnn { f }
% \end{macrocode}
% \end{macro}
@@ -612,7 +614,7 @@
\cs_generate_variant:Nn \@@_point_interpolate_arcaxes_auxiii:nnnnnnn { f }
\cs_new:Npn \@@_point_interpolate_arcaxes_auxiv:nnnnnnnn #1#2#3#4#5#6#7#8
{
- \@@_point_to_dim:n
+ \draw_point:n
{ #3 + #1 * #5 + #2 * #7 , #4 + #1 * #6 + #2 * #8 }
}
\cs_generate_variant:Nn \@@_point_interpolate_arcaxes_auxiv:nnnnnnnn { ff }
@@ -749,7 +751,7 @@
}
\cs_new:Npn \@@_point_interpolate_curve_auxviii:nnnnnn #1#2#3#4#5#6
{
- \@@_point_to_dim:n
+ \draw_point:n
{ #5 * #3 + #6 * #1 , #5 * #4 + #6 * #2 }
}
\cs_generate_variant:Nn \@@_point_interpolate_curve_auxviii:nnnnnn { ffff }
@@ -831,7 +833,7 @@
{ \@@_point_vec:ff { \fp_eval:n {#1} } { \fp_eval:n {#2} } }
\cs_new:Npn \@@_point_vec:nn #1#2
{
- \@@_point_to_dim:n
+ \draw_point:n
{
#1 * \l_@@_xvec_x_dim + #2 * \l_@@_yvec_x_dim ,
#1 * \l_@@_xvec_y_dim + #2 * \l_@@_yvec_y_dim
@@ -845,7 +847,7 @@
}
\cs_new:Npn \@@_point_vec:nnn #1#2#3
{
- \@@_point_to_dim:n
+ \draw_point:n
{
#1 * \l_@@_xvec_x_dim
+ #2 * \l_@@_yvec_x_dim
@@ -874,7 +876,7 @@
{ \@@_draw_vec_polar:fnn { \fp_eval:n {#3} } {#1} {#2} }
\cs_new:Npn \@@_draw_vec_polar:nnn #1#2#3
{
- \@@_point_to_dim:n
+ \draw_point:n
{
cosd(#1) * (#2) * \l_@@_xvec_x_dim ,
sind(#1) * (#3) * \l_@@_yvec_y_dim
@@ -903,7 +905,7 @@
{
\bool_if:NTF \l_@@_matrix_active_bool
{
- \@@_point_to_dim:n
+ \draw_point:n
{
(
\l_@@_matrix_a_fp * #1
@@ -919,7 +921,7 @@
}
}
{
- \@@_point_to_dim:n
+ \draw_point:n
{
(#1, #2)
+ ( \l_@@_xshift_dim , \l_@@_yshift_dim )
@@ -943,7 +945,7 @@
{
\bool_if:NTF \l_@@_matrix_active_bool
{
- \@@_point_to_dim:n
+ \draw_point:n
{
(
\l_@@_matrix_a_fp * #1
@@ -956,7 +958,7 @@
)
}
}
- { \@@_point_to_dim:n { (#1, #2) } }
+ { \draw_point:n { (#1, #2) } }
}
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/l3experimental/l3draw-scopes.dtx b/macros/latex/contrib/l3experimental/l3draw-scopes.dtx
index 7065afd267..baa2239e9f 100644
--- a/macros/latex/contrib/l3experimental/l3draw-scopes.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-scopes.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-04}
%
% \maketitle
%
@@ -60,6 +60,14 @@
%<@@=draw>
% \end{macrocode}
%
+% This sub-module covers more-or-less the same ideas as
+% \texttt{pgfcorescopes.code.tex}. At present, equivalents of the
+% following are currently absent:
+% \begin{itemize}
+% \item \cs{pgftext}: This is covered at this level by the coffin-based
+% interface \cs{draw_coffin_use:Nnn}
+% \end{itemize}
+%
% \subsection{Drawing environment}
%
% \begin{variable}
@@ -142,6 +150,7 @@
}
\cs_new_protected:Npn \draw_end:
{
+ \@@_baseline_finalise:w
\exp_args:NNNV \hbox_set_end:
\clist_set:Nn \l_draw_layers_clist \l_draw_layers_clist
\@@_layers_insert:
@@ -154,15 +163,7 @@
\dim_gzero:N \g_@@_ymax_dim
\dim_gzero:N \g_@@_ymin_dim
}
- \hbox_set:Nn \l_@@_main_box
- {
- \skip_horizontal:n { -\g_@@_xmin_dim }
- \box_move_down:nn { \g_@@_ymin_dim }
- { \box_use_drop:N \l_@@_main_box }
- }
- \box_set_ht:Nn \l_@@_main_box
- { \g_@@_ymax_dim - \g_@@_ymin_dim }
- \box_set_dp:Nn \l_@@_main_box { 0pt }
+ \@@_finalise:
\box_set_wd:Nn \l_@@_main_box
{ \g_@@_xmax_dim - \g_@@_xmin_dim }
\mode_leave_vertical:
@@ -172,6 +173,91 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@@_finalise:}
+% \begin{macro}{\@@_finalise_baseline:n}
+% Finalising the (vertical) size of the output depends on whether we have
+% an explicit baseline or not. To allow for that, we have two functions, and
+% the one that's used depends on whether the user has set a baseline. Notice
+% that in contrast to \pkg{pgf} we \emph{do} allow for a non-zero depth if
+% the explicit baseline is above the lowest edge of the initial bounding box.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_finalise:
+ {
+ \hbox_set:Nn \l_@@_main_box
+ {
+ \skip_horizontal:n { -\g_@@_xmin_dim }
+ \box_move_down:nn
+ { \g_@@_ymin_dim }
+ { \box_use_drop:N \l_@@_main_box }
+ }
+ \box_set_dp:Nn \l_@@_main_box { 0pt }
+ \box_set_ht:Nn \l_@@_main_box
+ { \g_@@_ymax_dim - \g_@@_ymin_dim }
+ }
+\cs_new_protected:Npn \@@_finalise_baseline:n #1
+ {
+ \hbox_set:Nn \l_@@_main_box
+ {
+ \skip_horizontal:n { -\g_@@_xmin_dim }
+ \box_move_down:nn
+ {#1}
+ { \box_use_drop:N \l_@@_main_box }
+ }
+ \box_set_dp:Nn \l_@@_main_box
+ {
+ \dim_max:nn
+ { #1 - \g_@@_ymin_dim }
+ { 0pt }
+ }
+ \box_set_ht:Nn \l_@@_main_box
+ { \g_@@_ymax_dim + #1 }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Baseline position}
+%
+% \begin{variable}{\l_@@_baseline_bool, \l_@@_baseline_dim}
+% For tracking the explicit baseline and whether it is active.
+% \begin{macrocode}
+\bool_new:N \l_@@_baseline_bool
+\dim_new:N \l_@@_baseline_dim
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\draw_baseline:n}
+% A simple setting of the baseline along with the flag we need to know that
+% it is active.
+% \begin{macrocode}
+\cs_new_protected:Npn \draw_baseline:n #1
+ {
+ \bool_set_true:N \l_@@_baseline_bool
+ \dim_set:Nn \l_@@_baseline_dim { \fp_to_dim:n {#1} }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_baseline_finalise:w}
+% Rather than use a global data structure, we can arrange to put the baseline
+% value at the right group level with a small amount of shuffling. That happens
+% here.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_baseline_finalise:w #1 \@@_finalise:
+ {
+ \bool_if:NTF \l_@@_baseline_bool
+ {
+ \use:x
+ {
+ \exp_not:n {#1}
+ \@@_finalise_baseline:n { \dim_use:N \l_@@_baseline_dim }
+ }
+ }
+ { #1 \@@_finalise: }
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Scopes}
%
% \begin{variable}{\l_@@_linewidth_dim}
diff --git a/macros/latex/contrib/l3experimental/l3draw-softpath.dtx b/macros/latex/contrib/l3experimental/l3draw-softpath.dtx
index dd4104a689..4674d56aad 100644
--- a/macros/latex/contrib/l3experimental/l3draw-softpath.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-softpath.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-state.dtx b/macros/latex/contrib/l3experimental/l3draw-state.dtx
index 81f992f29d..2637907381 100644
--- a/macros/latex/contrib/l3experimental/l3draw-state.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-state.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-transforms.dtx b/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
index ff23ae4db0..a47fd3184d 100644
--- a/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw.dtx b/macros/latex/contrib/l3experimental/l3draw.dtx
index a713774f8c..cccade7044 100644
--- a/macros/latex/contrib/l3experimental/l3draw.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw.dtx
@@ -110,7 +110,7 @@
% }^^A
% }
%
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-04}
%
% \maketitle
%
@@ -185,6 +185,43 @@
% axes at the driver level: this is then \enquote{transparent} to the
% \pkg{draw} level, and so should be used only when strictly required.)
%
+% The bounding box of the drawing is determined by tracking the size of the
+% \pkg{draw} commands between the start and end. The bounding box is (roughly)
+% the smallest box that contains all of the co-ordinates mentioned within the
+% drawing. This can include those automatically generated, for example the
+% supporting points needed to construct an arc.
+%
+% \begin{function}{\draw_baseline:n}
+% \begin{syntax}
+% \cs{draw_baseline:n} \Arg{length}
+% \end{syntax}
+% As standard, the baseline of the bounding box of a drawing is calculated
+% automatically at the bottom of the drawing. It is possible to adjust this
+% using the \cs{draw_baseline:n} function. If the drawing co-ordinates lead
+% to lower $y$-axis values than the \meta{length}, then the drawing will have
+% a depth as well as a height.
+% \begin{demo}
+% text
+% \draw_begin:
+% \draw_path_rectangle:nn { 0 , 0 } { 2ex , 1ex }
+% \draw_path_use:n { stroke }
+% \draw_end:
+% text
+% \draw_begin:
+% \draw_path_rectangle:nn { 0 , 1ex } { 2ex , 1ex }
+% \draw_baseline:n { 0pt }
+% \draw_path_use:n { stroke }
+% \draw_end:
+% text
+% \draw_begin:
+% \draw_path_rectangle:nn { 0 , -1ex } { 2ex , 1ex }
+% \draw_baseline:n { -0.5ex }
+% \draw_path_use:n { stroke }
+% \draw_end:
+% text
+% \end{demo}
+% \end{function}
+%
% \begin{function}{\draw_suspend_begin:, \draw_suspend_end:}
% \begin{syntax}
% \cs{draw_suspend_begin:}
@@ -363,21 +400,10 @@
% \subsection{Points}
%
% Functions supporting the calculation of points (co-ordinates) are expandable
-% and may be used outside of the drawing environment. When used in this
-% way, they all yield a co-ordinate tuple, for example
-% \begin{verbatim}
-% \tl_set:Nx \l_tmpa_tl { \draw_point:nn { 1 } { 2 } }
-% \tl_show:N \l_tmpa_tl
-% \end{verbatim}
-% gives
-% \begin{verbatim}
-% > \l_tmpa_tl=1pt,2pt.
-% <recently read> }
-% \end{verbatim}
-%
-% This output form is then suitable as \emph{input} for subsequent point
-% calculations, \emph{i.e.}~where a \meta{point} is required it may be
-% given as a tuple. This \emph{may} include units and surrounding
+% and may be used outside of the drawing environment. The outputs of all of the
+% point functions are tuples. This output form is then suitable as \emph{input}
+% for subsequent point calculations, \emph{i.e.}~where a \meta{point} is required
+% it may be given as a tuple. This \emph{may} include units and surrounding
% parentheses, for example
% \begin{verbatim}
% 1,2
@@ -1136,7 +1162,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3draw}{2021-07-12}{}
+\ProvidesExplPackage{l3draw}{2021-08-04}{}
{L3 Experimental core drawing support}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3draw.pdf b/macros/latex/contrib/l3experimental/l3draw.pdf
index d63d703791..ce3f4c31f8 100644
--- a/macros/latex/contrib/l3experimental/l3draw.pdf
+++ b/macros/latex/contrib/l3experimental/l3draw.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3galley.dtx b/macros/latex/contrib/l3experimental/l3galley.dtx
index ba662b097f..d1da19f384 100644
--- a/macros/latex/contrib/l3experimental/l3galley.dtx
+++ b/macros/latex/contrib/l3experimental/l3galley.dtx
@@ -61,7 +61,7 @@
% }^^A
% }
%
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-04}
%
% \maketitle
%
@@ -686,7 +686,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3galley}{2021-07-12}{}
+\ProvidesExplPackage{l3galley}{2021-08-04}{}
{L3 Experimental galley code}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3galley.pdf b/macros/latex/contrib/l3experimental/l3galley.pdf
index 2b407e61d9..3d80c5565d 100644
--- a/macros/latex/contrib/l3experimental/l3galley.pdf
+++ b/macros/latex/contrib/l3experimental/l3galley.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3graphics.dtx b/macros/latex/contrib/l3experimental/l3graphics.dtx
index 5101c9ae71..85cc3f556b 100644
--- a/macros/latex/contrib/l3experimental/l3graphics.dtx
+++ b/macros/latex/contrib/l3experimental/l3graphics.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-04}
%
% \maketitle
%
@@ -240,7 +240,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3graphics}{2021-07-12}{}
+\ProvidesExplPackage{l3graphics}{2021-08-04}{}
{L3 Experimental graphics inclusion support}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3graphics.pdf b/macros/latex/contrib/l3experimental/l3graphics.pdf
index a59d1f86e3..6f50943ec4 100644
--- a/macros/latex/contrib/l3experimental/l3graphics.pdf
+++ b/macros/latex/contrib/l3experimental/l3graphics.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3opacity.dtx b/macros/latex/contrib/l3experimental/l3opacity.dtx
index 4b1e7ea64f..8c419c7a4c 100644
--- a/macros/latex/contrib/l3experimental/l3opacity.dtx
+++ b/macros/latex/contrib/l3experimental/l3opacity.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-04}
%
% \maketitle
%
@@ -97,7 +97,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3opacity}{2021-07-12}{}
+\ProvidesExplPackage{l3opacity}{2021-08-04}{}
{L3 Experimental opacity support}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3opacity.pdf b/macros/latex/contrib/l3experimental/l3opacity.pdf
index afde835c29..74fa174c31 100644
--- a/macros/latex/contrib/l3experimental/l3opacity.pdf
+++ b/macros/latex/contrib/l3experimental/l3opacity.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3str-format.dtx b/macros/latex/contrib/l3experimental/l3str-format.dtx
index 669d198790..2f11898e85 100644
--- a/macros/latex/contrib/l3experimental/l3str-format.dtx
+++ b/macros/latex/contrib/l3experimental/l3str-format.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-04}
%
% \maketitle
%
@@ -166,7 +166,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3str-format}{2021-07-12}{}
+\ProvidesExplPackage{l3str-format}{2021-08-04}{}
{L3 Experimental string formatting}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3str-format.pdf b/macros/latex/contrib/l3experimental/l3str-format.pdf
index d070a93856..991475502b 100644
--- a/macros/latex/contrib/l3experimental/l3str-format.pdf
+++ b/macros/latex/contrib/l3experimental/l3str-format.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3sys-shell.dtx b/macros/latex/contrib/l3experimental/l3sys-shell.dtx
index 56f5ccf610..c3198c0ee2 100644
--- a/macros/latex/contrib/l3experimental/l3sys-shell.dtx
+++ b/macros/latex/contrib/l3experimental/l3sys-shell.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-04}
%
% \maketitle
%
@@ -151,7 +151,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3sys-shell}{2021-07-12}{}
+\ProvidesExplPackage{l3sys-shell}{2021-08-04}{}
{L3 Experimental system shell functions}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3sys-shell.pdf b/macros/latex/contrib/l3experimental/l3sys-shell.pdf
index f7db627adf..cc1493963c 100644
--- a/macros/latex/contrib/l3experimental/l3sys-shell.pdf
+++ b/macros/latex/contrib/l3experimental/l3sys-shell.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/xcoffins.dtx b/macros/latex/contrib/l3experimental/xcoffins.dtx
index afd086567b..3fec592ee4 100644
--- a/macros/latex/contrib/l3experimental/xcoffins.dtx
+++ b/macros/latex/contrib/l3experimental/xcoffins.dtx
@@ -53,7 +53,7 @@
% }^^A
% }
%
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-04}
%
% \maketitle
%
@@ -672,7 +672,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2021-07-12}{}
+\ProvidesExplPackage{xcoffins}{2021-08-04}{}
{L3 Experimental design level coffins}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/xcoffins.pdf b/macros/latex/contrib/l3experimental/xcoffins.pdf
index 4847b73a25..f4d7fa4ea6 100644
--- a/macros/latex/contrib/l3experimental/xcoffins.pdf
+++ b/macros/latex/contrib/l3experimental/xcoffins.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/xgalley.dtx b/macros/latex/contrib/l3experimental/xgalley.dtx
index b75c45ee2d..bdbe9478a2 100644
--- a/macros/latex/contrib/l3experimental/xgalley.dtx
+++ b/macros/latex/contrib/l3experimental/xgalley.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-04}
%
% \maketitle
%
@@ -731,7 +731,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2021-07-12}{}
+\ProvidesExplPackage{xgalley}{2021-08-04}{}
{L3 Experimental galley}
\RequirePackage{xtemplate,l3galley}
% \end{macrocode}
diff --git a/macros/latex/contrib/l3experimental/xgalley.pdf b/macros/latex/contrib/l3experimental/xgalley.pdf
index 52cb016046..49a84225b1 100644
--- a/macros/latex/contrib/l3experimental/xgalley.pdf
+++ b/macros/latex/contrib/l3experimental/xgalley.pdf
Binary files differ