summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/l3experimental
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-03-05 22:35:14 +0000
committerKarl Berry <karl@freefriends.org>2019-03-05 22:35:14 +0000
commit68872ff6a2a91fa0e84763fc9316493d82075c95 (patch)
tree0546ec4c414553802e31a423aec44f74d252f645 /Master/texmf-dist/source/latex/l3experimental
parent541c4ddf7c5b402b9cfe8af5ef4e49ffa15d3e83 (diff)
l3 (5mar19)
git-svn-id: svn://tug.org/texlive/trunk@50246 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.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx216
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx45
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx97
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx16
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx58
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx54
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.ins1
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx4
19 files changed, 403 insertions, 126 deletions
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx b/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
index f2b906f5c4b..5fa12ee7915 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2019-01-28}
+% \date{Released 2019-03-05}
%
% \maketitle
%
@@ -128,7 +128,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3benchmark}{2019-01-28}{}
+\ProvidesExplPackage{l3benchmark}{2019-03-05}{}
{L3 Experimental benchmarking}
%</package>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx b/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx
index 8770a2b7be6..adff2c4ead3 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2019-01-28}
+% \date{Released 2019-03-05}
%
% \maketitle
%
@@ -150,7 +150,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3cctab}{2019-01-28}{}
+\ProvidesExplPackage{l3cctab}{2019-03-05}{}
{L3 Experimental category code tables}
%</package>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx b/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx
index c2c783ad1b6..3f4e1c3f1a7 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2019-01-28}
+% \date{Released 2019-03-05}
%
% \maketitle
%
@@ -265,7 +265,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3color}{2019-01-28}{}
+\ProvidesExplPackage{l3color}{2019-03-05}{}
{L3 Experimental color support}
%</package>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
index 59bf5ac2ba5..7f23d1f4ab4 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-01-28}
+% \date{Released 2019-03-05}
%
% \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
new file mode 100644
index 00000000000..c59359fd02e
--- /dev/null
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx
@@ -0,0 +1,216 @@
+% \iffalse meta-comment
+%
+%% File: l3draw-layers.dtx
+%
+% Copyright (C) 2019 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>
+\RequirePackage{expl3}
+\documentclass[full]{l3doc}
+\begin{document}
+ \DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \title{^^A
+% The \pkg{l3draw-layers} package\\ Layers^^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 2019-03-05}
+%
+% \maketitle
+%
+% \begin{implementation}
+%
+% \section{\pkg{l3draw-layers} implementation}
+%
+% \begin{macrocode}
+%<*initex|package>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<@@=draw>
+% \end{macrocode}
+%
+% \subsection{User interface}
+%
+% \begin{macro}{\draw_layer_new:n}
+% \begin{macrocode}
+\cs_new_protected:Npn \draw_layer_new:n #1
+ {
+ \str_if_eq:nnTF {#1} { main }
+ { \msg_error:nnn { draw } { main-reserved } }
+ {
+ \box_new:c { g_@@_layer_ #1 _box }
+ \box_new:c { l_@@_layer_ #1 _box }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{variable}{\l_@@_layer_tl}
+% The name of the current layer: we start off with |main|.
+% \begin{macrocode}
+\tl_new:N \l_@@_layer_tl
+\tl_set:Nn \l_@@_layer_tl { main }
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_layer_close_bool}
+% Used to track if a layer needs to be closed.
+% \begin{macrocode}
+\bool_new:N \l_@@_layer_close_bool
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_draw_layers_clist, \g_@@_layers_clist}
+% The list of layers to use starts off with just the |main| one.
+% \begin{macrocode}
+\clist_new:N \l_draw_layers_clist
+\clist_set:Nn \l_draw_layers_clist { main }
+\clist_new:N \g_@@_layers_clist
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\draw_layer_begin:n}
+% \begin{macro}{\draw_layer_end:}
+% Layers may be called multiple times and have to work when nested. That
+% drives a bit of grouping to get everything in order. Layers have to be zero
+% width, so they get set as we go along.
+% \begin{macrocode}
+\cs_new_protected:Npn \draw_layer_begin:n #1
+ {
+ \group_begin:
+ \box_if_exist:cTF { g_@@_layer_ #1 _box }
+ {
+ \str_if_eq:VnTF \l_@@_layer_tl {#1}
+ { \bool_set_false:N \l_@@_layer_close_bool }
+ {
+ \bool_set_true:N \l_@@_layer_close_bool
+ \tl_set:Nn \l_@@_layer_tl {#1}
+ \box_gset_wd:cn { g_@@_layer_ #1 _box } { 0pt }
+ \hbox_gset:cw { g_@@_layer_ #1 _box }
+ \box_use_drop:c { g_@@_layer_ #1 _box }
+ \group_begin:
+ }
+ \draw_linewidth:n { \l_draw_default_linewidth_dim }
+ }
+ {
+ \str_if_eq:nnTF {#1} { main }
+ { \msg_error:nnn { draw } { unknown-layer } {#1} }
+ { \msg_error:nnn { draw } { main-layer } }
+ }
+ }
+\cs_new_protected:Npn \draw_layer_end:
+ {
+ \bool_if:NT \l_@@_layer_close_bool
+ {
+ \group_end:
+ \hbox_gset_end:
+ }
+ \group_end:
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Internal cross-links}
+%
+% \begin{macro}{\@@_layers_insert:}
+% The |main| layer is special, otherwise just dump the layer box inside
+% a scope.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_layers_insert:
+ {
+ \clist_map_inline:Nn \l_draw_layers_clist
+ {
+ \str_if_eq:nnTF {##1} { main }
+ {
+ \box_set_wd:Nn \l_@@_layer_main_box { 0pt }
+ \box_use_drop:N \l_@@_layer_main_box
+ }
+ {
+ \driver_draw_scope_begin:
+ \box_gset_wd:cn { g_@@_layer_ ##1 _box } { 0pt }
+ \box_use_drop:c { g_@@_layer_ ##1 _box }
+ \driver_draw_scope_end:
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_layers_save:, \@@_layers_restore:}
+% Simple save/restore functions.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_layers_save:
+ {
+ \clist_map_inline:Nn \l_draw_layers_clist
+ {
+ \str_if_eq:nnF {##1} { main }
+ {
+ \box_set_eq:cc { l_@@_layer_ ##1 _box }
+ { g_@@_layer_ ##1 _box }
+ }
+ }
+ }
+\cs_new_protected:Npn \@@_layers_restore:
+ {
+ \clist_map_inline:Nn \l_draw_layers_clist
+ {
+ \str_if_eq:nnF {##1} { main }
+ {
+ \box_gset_eq:cc { g_@@_layer_ ##1 _box }
+ { l_@@_layer_ ##1 _box }
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\msg_new:nnnn { draw } { main-layer }
+ { Material~cannot~be~added~to~'main'~layer. }
+ { The~main~layer~may~only~be~accessed~at~the~top~level. }
+\msg_new:nnn { draw } { main-reserved }
+ { The~'main'~layer~is~reserved. }
+\msg_new:nnnn { draw } { unknown-layer }
+ { Layer~'#1'~has~not~been~created. }
+ { You~have~tried~to~use~layer~'#1',~but~it~was~never~set~up. }
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</initex|package>
+% \end{macrocode}
+%
+% \end{implementation}
+%
+% \PrintIndex
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 cf40e9564d7..3cded354fe2 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-01-28}
+% \date{Released 2019-03-05}
%
% \maketitle
%
@@ -254,15 +254,12 @@
}
\cs_new_protected:Npn \draw_path_curveto:nnn #1#2#3
{
- \@@_point_process:nnn
+ \@@_point_process:nnnn
{
- \@@_point_process:nn
- {
- \@@_path_mark_corner:
- \@@_path_curveto:nnnnnn
- }
- { \draw_point_transform:n {#1} }
+ \@@_path_mark_corner:
+ \@@_path_curveto:nnnnnn
}
+ { \draw_point_transform:n {#1} }
{ \draw_point_transform:n {#2} }
{ \draw_point_transform:n {#3} }
}
@@ -303,16 +300,12 @@
{ \@@_point_process:nn { \@@_path_lineto:nn } {#1} }
\cs_new_protected:Npn \draw_path_canvas_curveto:nnn #1#2#3
{
- \@@_point_process:nnn
+ \@@_point_process:nnnn
{
- \@@_point_process:nn
- {
- \@@_path_mark_corner:
- \@@_path_curveto:nnnnnn
- }
- {#1}
+ \@@_path_mark_corner:
+ \@@_path_curveto:nnnnnn
}
- {#2} {#3}
+ {#1} {#2} {#3}
}
% \end{macrocode}
% \end{macro}
@@ -514,14 +507,11 @@
\@@_point_transform_noshift:n
{ \draw_point_polar:nnn { #1 #4 90 } {#7} {#8} }
}
- \@@_point_process:nn
+ \@@_point_process:nnn
+ { \@@_path_arc_auxiv:nnnn }
{
- \@@_point_process:nn
- { \@@_path_arc_auxiv:nnnn }
- {
- \draw_point_transform:n
- { \draw_point_polar:nnn {#1} {#5} {#6} }
- }
+ \draw_point_transform:n
+ { \draw_point_polar:nnn {#1} {#5} {#6} }
}
{
\draw_point_transform:n
@@ -624,12 +614,9 @@
% \begin{macrocode}
\cs_new_protected:Npn \draw_path_ellipse:nnn #1#2#3
{
- \@@_point_process:nnn
- {
- \@@_point_process:nn
- { \@@_path_ellipse:nnnnnn }
- { \draw_point_transform:n {#1} }
- }
+ \@@_point_process:nnnn
+ { \@@_path_ellipse:nnnnnn }
+ { \draw_point_transform:n {#1} }
{ \@@_point_transform_noshift:n {#2} }
{ \@@_point_transform_noshift:n {#3} }
}
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 5c81074a407..f8d729ca030 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-01-28}
+% \date{Released 2019-03-05}
%
% \maketitle
%
@@ -67,7 +67,7 @@
% Equivalents of following \pkg{pgf} functions are deliberately omitted:
% \begin{itemize}
% \item \cs{pgfpointorigin}: Can be given explicitly as |0pt,0pt|.
-% \item \cs{pgfpoint}, \cs{pgfpointadd}, \cs{pgfpointdiff},
+% \item \cs{pgfpointadd}, \cs{pgfpointdiff},
% \cs{pgfpointscale}: Can be given explicitly.
% \item \cs{pgfextractx}, \cs{pgfextracty}: Available by applying
% \cs{use_i:nn}/\cs{use_ii:nn} or similar to the \texttt{x}-type
@@ -93,11 +93,17 @@
% \subsection{Support functions}
%
% \begin{macro}[EXP]{\@@_point_process:nn}
-% \begin{macro}[EXP]{\@@_point_process_auxi:nn, \@@_point_process_auxi:fn}
+% \begin{macro}[EXP]{\@@_point_process_auxi:nn}
% \begin{macro}[EXP]{\@@_point_process_auxii:nw}
% \begin{macro}[EXP]{\@@_point_process:nnn}
-% \begin{macro}[EXP]{\@@_point_process_auxiii:nnn, \@@_point_process_auxiii:ffn}
+% \begin{macro}[EXP]{\@@_point_process_auxiii:nnn}
% \begin{macro}[EXP]{\@@_point_process_auxiv:nw}
+% \begin{macro}[EXP]{\@@_point_process:nnnn}
+% \begin{macro}[EXP]{\@@_point_process_auxv:nnnn}
+% \begin{macro}[EXP]{\@@_point_process_auxvi:nw}
+% \begin{macro}[EXP]{\@@_point_process:nnnnn}
+% \begin{macro}[EXP]{\@@_point_process_auxvii:nnnnn}
+% \begin{macro}[EXP]{\@@_point_process_auxviii:nw}
% Execute whatever code is passed to extract the $x$ and $y$ co-ordinates.
% The first argument here should itself absorb two arguments. There is
% also a version to deal with two co-ordinates: common enough to justify a
@@ -105,27 +111,55 @@
% \begin{macrocode}
\cs_new:Npn \@@_point_process:nn #1#2
{
- \@@_point_process_auxi:fn
+ \exp_args:Nf \@@_point_process_auxi:nn
{ \@@_point_to_dim:n {#2} }
{#1}
}
\cs_new:Npn \@@_point_process_auxi:nn #1#2
{ \@@_point_process_auxii:nw {#2} #1 \q_stop }
-\cs_generate_variant:Nn \@@_point_process_auxi:nn { f }
\cs_new:Npn \@@_point_process_auxii:nw #1 #2 , #3 \q_stop
{ #1 {#2} {#3} }
\cs_new:Npn \@@_point_process:nnn #1#2#3
{
- \@@_point_process_auxiii:ffn
+ \exp_args:Nff \@@_point_process_auxiii:nnn
{ \@@_point_to_dim:n {#2} }
{ \@@_point_to_dim:n {#3} }
{#1}
}
\cs_new:Npn \@@_point_process_auxiii:nnn #1#2#3
{ \@@_point_process_auxiv:nw {#3} #1 \q_mark #2 \q_stop }
-\cs_generate_variant:Nn \@@_point_process_auxiii:nnn { ff }
\cs_new:Npn \@@_point_process_auxiv:nw #1 #2 , #3 \q_mark #4 , #5 \q_stop
{ #1 {#2} {#3} {#4} {#5} }
+\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} }
+ {#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 }
+\cs_new:Npn \@@_point_process_auxvi:nw
+ #1 #2 , #3 \q_mark #4 , #5 \q_mark #6 , #7 \q_stop
+ { #1 {#2} {#3} {#4} {#5} {#6} {#7} }
+\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} }
+ {#1}
+ }
+\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
+ }
+\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} {#4} {#5} {#6} {#7} {#8} {#9} }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -133,6 +167,12 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \begin{macro}[EXP]{\@@_point_to_dim:n}
% \begin{macro}[EXP]{\@@_point_to_dim_aux:n, \@@_point_to_dim_aux:f}
@@ -225,24 +265,21 @@
% \begin{macrocode}
\cs_new:Npn \draw_point_intersect_lines:nnnn #1#2#3#4
{
- \@@_point_process:nnn
- {
- \@@_point_process:nnn
- { \@@_point_intersect_lines:nnnnnnnn } {#3} {#4}
- }
- {#1} {#2}
+ \@@_point_process:nnnnn
+ { \@@_point_intersect_lines:nnnnnnnn }
+ {#1} {#2} {#3} {#4}
}
% \end{macrocode}
% At this stage we have all of the information we need, fully expanded:
% \begin{enumerate}[label = \#\arabic*, font = \ttfamily]
-% \item $x_{3}$
-% \item $y_{3}$
-% \item $x_{4}$
-% \item $y_{4}$
% \item $x_{1}$
% \item $y_{1}$
% \item $x_{2}$
% \item $y_{2}$
+% \item $x_{3}$
+% \item $y_{3}$
+% \item $x_{4}$
+% \item $y_{4}$
% \end{enumerate}
% so now just have to do all of the calculation.
% \begin{macrocode}
@@ -519,18 +556,14 @@
% \begin{macrocode}
\cs_new:Npn \draw_point_interpolate_arcaxes:nnnnnn #1#2#3#4#5#6
{
- \@@_point_process:nnn
- {
- \@@_point_process:nn
- { \@@_point_interpolate_arcaxes_auxi:nnnnnnnnn {#1} {#5} {#6} }
- {#4}
- }
- {#2} {#3}
+ \@@_point_process:nnnn
+ { \@@_point_interpolate_arcaxes_auxi:nnnnnnnnn {#1} {#5} {#6} }
+ {#2} {#3} {#4}
}
\cs_new:Npn \@@_point_interpolate_arcaxes_auxi:nnnnnnnnn #1#2#3#4#5#6#7#8#9
{
\@@_point_interpolate_arcaxes_auxii:fnnnnnnnn
- { \fp_eval:n {#1} } {#2} {#3} {#6} {#7} {#8} {#9} {#4} {#5}
+ { \fp_eval:n {#1} } {#2} {#3} {#4} {#5} {#6} {#7} {#8} {#9}
}
% \end{macrocode}
% At this stage, the three co-ordinate pairs are fully expanded but somewhat
@@ -613,19 +646,15 @@
% \begin{macrocode}
\cs_new:Npn \draw_point_interpolate_curve:nnnnnn #1#2#3#4#5
{
- \@@_point_process:nnn
- {
- \@@_point_process:nnn
- { \@@_point_interpolate_curve_auxi:nnnnnnnnn {#1} }
- {#4} {#5}
- }
- {#2} {#3}
+ \@@_point_process:nnnnn
+ { \@@_point_interpolate_curve_auxi:nnnnnnnnn {#1} }
+ {#2} {#3} {#4} {#5}
}
\cs_new:Npn \@@_point_interpolate_curve_auxi:nnnnnnnnn #1#2#3#4#5#6#7#8#9
{
\@@_point_interpolate_curve_auxii:fnnnnnnnn
{ \fp_eval:n {#1} }
- {#6} {#7} {#8} {#9} {#2} {#3} {#4} {#5}
+ {#2} {#3} {#4} {#5} {#6} {#7} {#8} {#9}
}
% \end{macrocode}
% At this stage, everything is fully expanded and back in the input order.
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 c3d98b5d52b..5f28fc920d9 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-01-28}
+% \date{Released 2019-03-05}
%
% \maketitle
%
@@ -82,10 +82,11 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\l_@@_main_box}
-% Box for setting the drawing.
+% \begin{variable}{\l_@@_layer_main_box, \l_@@_layer_main_box}
+% Box for setting the drawing itself and the top-level layer.
% \begin{macrocode}
\box_new:N \l_@@_main_box
+\box_new:N \l_@@_layer_main_box
% \end{macrocode}
% \end{variable}
%
@@ -115,7 +116,8 @@
% mechanism largely as it then sets up the internal data structures. It may be
% that a coffin construct is better here in the longer term: that may become
% clearer as the code is completed. As we need to avoid any insertion of
-% baseline skips, the outer box here has to be an |hbox|.
+% baseline skips, the outer box here has to be an |hbox|. To allow for
+% layers, there is some box nesting: notice that we
% \begin{macrocode}
\cs_new_protected:Npn \draw_begin:
{
@@ -136,9 +138,13 @@
\draw_join_miter:
\draw_miterlimit:n { 10 }
\draw_dash_pattern:nn { } { 0cm }
+ \hbox_set:Nw \l_@@_layer_main_box
}
\cs_new_protected:Npn \draw_end:
{
+ \exp_args:NNNV \hbox_set_end:
+ \clist_set:Nn \l_draw_layers_clist \l_draw_layers_clist
+ \@@_layers_insert:
\driver_draw_end:
\hbox_set_end:
\dim_compare:nNnT \g_@@_xmin_dim = \c_max_dim
@@ -244,9 +250,11 @@
\draw_path_scope_begin:
\draw_transform_matrix_reset:
\draw_transform_shift_reset:
+ \@@_layers_save:
}
\cs_new_protected:Npn \draw_suspend_end:
{
+ \@@_layers_restore:
\draw_path_scope_end:
\@@_scope_bb_end:
}
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 7fe7a37bbd6..ef5f38d68c8 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-01-28}
+% \date{Released 2019-03-05}
%
% \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 fed90c69032..0e51979e19c 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-01-28}
+% \date{Released 2019-03-05}
%
% \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 e7b74452852..226d626030e 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-01-28}
+% \date{Released 2019-03-05}
%
% \maketitle
%
@@ -121,14 +121,14 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\draw_transform_matrix:nnnn}
-% \begin{macro}{\draw_transform_shift:n}
-% \begin{macro}{\@@_transform_shift:nn}
+% \begin{macro}{\draw_transform_matrix_absolute:nnnn}
+% \begin{macro}{\draw_transform_shift_absolute:n}
+% \begin{macro}{\@@_transform_shift_absolute:nn}
% Setting the transform matrix is straight-forward, with just a bit
% of expansion to sort out. With the mechanism active, the identity
% matrix is set.
% \begin{macrocode}
-\cs_new_protected:Npn \draw_transform_matrix:nnnn #1#2#3#4
+\cs_new_protected:Npn \draw_transform_matrix_absolute:nnnn #1#2#3#4
{
\fp_set:Nn \l_@@_matrix_a_fp {#1}
\fp_set:Nn \l_@@_matrix_b_fp {#2}
@@ -144,12 +144,12 @@
{ \bool_set_false:N \l_@@_matrix_active_bool }
{ \bool_set_true:N \l_@@_matrix_active_bool }
}
-\cs_new_protected:Npn \draw_transform_shift:n #1
+\cs_new_protected:Npn \draw_transform_shift_absolute:n #1
{
\@@_point_process:nn
- { \@@_transform_shift:nn } {#1}
+ { \@@_transform_shift_absolute:nn } {#1}
}
-\cs_new_protected:Npn \@@_transform_shift:nn #1#2
+\cs_new_protected:Npn \@@_transform_shift_absolute:nn #1#2
{
\dim_set:Nn \l_@@_xshift_dim {#1}
\dim_set:Nn \l_@@_yshift_dim {#2}
@@ -159,41 +159,41 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\draw_transform_matrix_concat:nnnn}
-% \begin{macro}{\@@_transform_concat:nnnn}
-% \begin{macro}{\draw_transform_shift_concat:n}
-% \begin{macro}{\@@_transform_shift_concat:nn}
+% \begin{macro}{\draw_transform_matrix:nnnn}
+% \begin{macro}{\@@_transform:nnnn}
+% \begin{macro}{\draw_transform_shift:n}
+% \begin{macro}{\@@_transform_shift:nn}
% Much the same story for adding to an existing matrix, with a bit of
% pre-expansion so that the calculation uses \enquote{frozen} values.
% \begin{macrocode}
-\cs_new_protected:Npn \draw_transform_matrix_concat:nnnn #1#2#3#4
+\cs_new_protected:Npn \draw_transform_matrix:nnnn #1#2#3#4
{
\use:x
{
- \@@_transform_concat:nnnn
+ \@@_transform:nnnn
{ \fp_eval:n {#1} }
{ \fp_eval:n {#2} }
{ \fp_eval:n {#3} }
{ \fp_eval:n {#4} }
}
}
-\cs_new_protected:Npn \@@_transform_concat:nnnn #1#2#3#4
+\cs_new_protected:Npn \@@_transform:nnnn #1#2#3#4
{
\use:x
{
- \draw_transform_matrix:nnnn
+ \draw_transform_matrix_absolute:nnnn
{ #1 * \l_@@_matrix_a_fp + #2 * \l_@@_matrix_c_fp }
{ #1 * \l_@@_matrix_b_fp + #2 * \l_@@_matrix_d_fp }
{ #3 * \l_@@_matrix_a_fp + #4 * \l_@@_matrix_c_fp }
{ #3 * \l_@@_matrix_b_fp + #4 * \l_@@_matrix_d_fp }
}
}
-\cs_new_protected:Npn \draw_transform_shift_concat:n #1
+\cs_new_protected:Npn \draw_transform_shift:n #1
{
\@@_point_process:nn
- { \@@_transform_shift_concat:nn } {#1}
+ { \@@_transform_shift:nn } {#1}
}
-\cs_new_protected:Npn \@@_transform_shift_concat:nn #1#2
+\cs_new_protected:Npn \@@_transform_shift:nn #1#2
{
\dim_set:Nn \l_@@_xshift_dim { \l_@@_xshift_dim + #1 }
\dim_set:Nn \l_@@_yshift_dim { \l_@@_yshift_dim + #2 }
@@ -267,12 +267,12 @@
{
\use:x
{
- \draw_transform_matrix:nnnn
+ \draw_transform_matrix_absolute:nnnn
{ #3 - #1 }
{ #4 - #2 }
{ #5 - #1 }
{ #6 - #2 }
- \draw_transform_shift:n { #1 , #2 }
+ \draw_transform_shift_absolute:n { #1 , #2 }
}
}
% \end{macrocode}
@@ -287,19 +287,19 @@
% Lots of shortcuts.
% \begin{macrocode}
\cs_new_protected:Npn \draw_transform_scale:n #1
- { \draw_transform_matrix_concat:nnnn { #1 } { 0 } { 0 } { #1 } }
+ { \draw_transform_matrix:nnnn { #1 } { 0 } { 0 } { #1 } }
\cs_new_protected:Npn \draw_transform_xscale:n #1
- { \draw_transform_matrix_concat:nnnn { #1 } { 0 } { 0 } { 1 } }
+ { \draw_transform_matrix:nnnn { #1 } { 0 } { 0 } { 1 } }
\cs_new_protected:Npn \draw_transform_yscale:n #1
- { \draw_transform_matrix_concat:nnnn { 1 } { 0 } { 0 } { #1 } }
+ { \draw_transform_matrix:nnnn { 1 } { 0 } { 0 } { #1 } }
\cs_new_protected:Npn \draw_transform_xshift:n #1
- { \draw_transform_shift_concat:n { #1 , 0 } }
+ { \draw_transform_shift:n { #1 , 0pt } }
\cs_new_protected:Npn \draw_transform_yshift:n #1
- { \draw_transform_shift_concat:n { 0 , #1 } }
+ { \draw_transform_shift:n { 0pt , #1 } }
\cs_new_protected:Npn \draw_transform_xslant:n #1
- { \draw_transform_matrix_concat:nnnn { 1 } { 0 } { #1 } { 1 } }
+ { \draw_transform_matrix:nnnn { 1 } { 0 } { #1 } { 1 } }
\cs_new_protected:Npn \draw_transform_yslant:n #1
- { \draw_transform_matrix_concat:nnnn { 1 } { #1 } { 0 } { 1 } }
+ { \draw_transform_matrix:nnnn { 1 } { #1 } { 0 } { 1 } }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -324,7 +324,7 @@
}
\cs_generate_variant:Nn \@@_transform_rotate:n { f }
\cs_new_protected:Npn \@@_transform_rotate:nn #1#2
- { \draw_transform_matrix_concat:nnnn {#1} {#2} { -#2 } { #1 } }
+ { \draw_transform_matrix:nnnn {#1} {#2} { -#2 } { #1 } }
\cs_generate_variant:Nn \@@_transform_rotate:nn { ff }
% \end{macrocode}
% \end{macro}
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
index 90e9b27e28b..73ed6390dcd 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
@@ -111,7 +111,7 @@
% }^^A
% }
%
-% \date{Released 2019-01-28}
+% \date{Released 2019-03-05}
%
% \maketitle
%
@@ -941,7 +941,7 @@
% \end{demo}
% \begin{demo}
% \draw_begin:
-% \draw_transform_matrix:nnnn { 2 } { 0 } { 1 } { 2 }
+% \draw_transform_matrix_absolute:nnnn { 2 } { 0 } { 1 } { 2 }
% \draw_path_moveto:n { 0cm , 0cm }
% \draw_path_lineto:n { 0cm , 1cm }
% \draw_path_use_clear:n { stroke }
@@ -991,23 +991,24 @@
% is transparent to the drawing code so is not tracked.
%
% \begin{function}
-% {\draw_transform_matrix:nnnn, \draw_transform_matrix_concat:nnnn}
+% {\draw_transform_matrix:nnnn, \draw_transform_matrix_absolute:nnnn}
% \begin{syntax}
% \cs{draw_transform_matrix:nnnn}
% \Arg{a} \Arg{b} \Arg{c} \Arg{d}
% \end{syntax}
% Applies the transformation matrix $[ \meta{a} \meta{b} \meta{c} \meta{d}]$.
-% The basic version over-writes the current matrix, the |concat| version
-% concatenates.
+% The basic applies the transformation in addition to those active; the
+% |absolute| version overwrites any active transformation.
% This assignment is local.
% \end{function}
%
-% \begin{function}{\draw_transform_shift:n, \draw_transform_shift_concat:n}
+% \begin{function}{\draw_transform_shift:n, \draw_transform_shift_absolute:n}
% \begin{syntax}
% \cs{draw_transform_shift:n} \Arg{vector}
% \end{syntax}
-% Applies the transformation \meta{vector} to points. The basic version
-% over-writes the current vector, the |concat| version concatenates.
+% Applies the transformation \meta{vector} to points.
+% The basic applies the vector in addition to those active; the
+% |absolute| version overwrites any active vector.
% This assignment is local.
% \end{function}
%
@@ -1091,6 +1092,41 @@
% This assignment is local.
% \end{function}
%
+% \subsection{Layers}
+%
+% Drawing layers may be used to alter the way in which elements are stacked
+% on top of one another. In particular, they are useful when the nature of
+% an element depends on another, but where it needs to be behind it's
+% \enquote{parent}. A classic example is a filled background: this needs to
+% know the size of the material it is behind.
+%
+% All drawings feature a layer called |main|. This layer should always be
+% present, and is the one which \enquote{non-layered} content is added to.
+%
+% \begin{function}{\draw_layer_new:n}
+% \begin{syntax}
+% \cs{draw_layer_new:n} \Arg{layer}
+% \end{syntax}
+% Creates a new \meta{layer} which can then be used in drawing. The layer
+% |main| is pre-defined.
+% \end{function}
+%
+% \begin{function}{\draw_layer_begin:n, \draw_layer_end:}
+% \begin{syntax}
+% \cs{draw_layer_begin:n} \Arg{layer}
+% ...
+% \cs{draw_layer_end:}
+% \end{syntax}
+% Begin and end collection of material for the \meta{layer}, which should
+% previously have been created (and which cannot be |main|). Material
+% collected for the layer is available globally within the current drawing.
+% \end{function}
+%
+% \begin{variable}{\l_draw_layers_clist}
+% The list of active layers: may be given anywhere before \cs{draw_end:}.
+% The |main| layer should always be included.
+% \end{variable}
+%
% \end{documentation}
%
% \begin{implementation}
@@ -1107,7 +1143,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3draw}{2019-01-28}{}
+\ProvidesExplPackage{l3draw}{2019-03-05}{}
{L3 Experimental core drawing support}
%</package>
% \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 855f033a8de..836d9a32d67 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.ins
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.ins
@@ -57,6 +57,7 @@ and all files in that bundle must be distributed together.
{
\from{l3draw.dtx} {package}
\from{l3draw-boxes.dtx} {package}
+ \from{l3draw-layers.dtx} {package}
\from{l3draw-paths.dtx} {package}
\from{l3draw-points.dtx} {package}
\from{l3draw-scopes.dtx} {package}
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx
index f3e757dba7a..240db74607d 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2019-01-28}
+% \date{Released 2019-03-05}
%
% \maketitle
%
@@ -234,7 +234,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3str-convert}{2019-01-28}{}
+\ProvidesExplPackage{l3str-convert}{2019-03-05}{}
{L3 Experimental string encoding conversions}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
index 8f8ad52bee4..a6a7646cd4e 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Released 2019-01-28}
+% \date{Released 2019-03-05}
%
% \maketitle
%
@@ -164,7 +164,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3str-format}{2019-01-28}{}
+\ProvidesExplPackage{l3str-format}{2019-03-05}{}
{L3 Experimental string formatting}
%</package>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx b/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
index 053a119358a..9cedffc79a9 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2019-01-28}
+% \date{Released 2019-03-05}
%
% \maketitle
%
@@ -136,7 +136,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3sys-shell}{2019-01-28}{}
+\ProvidesExplPackage{l3sys-shell}{2019-03-05}{}
{L3 Experimental system shell functions}
%</package>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
index 8ba2b02d0ce..f38466a5d51 100644
--- a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
@@ -56,7 +56,7 @@
% }^^A
% }
%
-% \date{Released 2019-01-28}
+% \date{Released 2019-03-05}
%
% \maketitle
%
@@ -675,7 +675,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2019-01-28}{}
+\ProvidesExplPackage{xcoffins}{2019-03-05}{}
{L3 Experimental design level coffins}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
index e4093ad833d..7e5f9c806b6 100644
--- a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
@@ -61,7 +61,7 @@
% }^^A
% }
%
-% \date{Released 2019-01-28}
+% \date{Released 2019-03-05}
%
% \maketitle
%
@@ -687,7 +687,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3galley}{2019-01-28}{}
+\ProvidesExplPackage{l3galley}{2019-03-05}{}
{L3 Experimental galley code}
%</package>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
index 5c1831a6800..21c9700de59 100644
--- a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Released 2019-01-28}
+% \date{Released 2019-03-05}
%
% \maketitle
%
@@ -734,7 +734,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2019-01-28}{}
+\ProvidesExplPackage{xgalley}{2019-03-05}{}
{L3 Experimental galley}
\RequirePackage{xparse,xtemplate,l3galley}
% \end{macrocode}