[latex3-commits] [git/LaTeX3-latex3-latex3] master: Fix scope treatment of \box_set_ht:Nn, etc. (66a287e)

Joseph Wright joseph.wright at morningstar2.co.uk
Wed Jan 23 22:30:14 CET 2019


Repository : https://github.com/latex3/latex3
On branch  : master
Link       : https://github.com/latex3/latex3/commit/66a287e5250b0c0e61e58f8361dfeb00186869cf

>---------------------------------------------------------------

commit 66a287e5250b0c0e61e58f8361dfeb00186869cf
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date:   Wed Jan 23 21:30:14 2019 +0000

    Fix scope treatment of \box_set_ht:Nn, etc.


>---------------------------------------------------------------

66a287e5250b0c0e61e58f8361dfeb00186869cf
 l3kernel/CHANGELOG.md                   |    2 ++
 l3kernel/l3box.dtx                      |   46 +++++++++++++++++++++++++------
 l3kernel/testfiles/m3expl001.luatex.tlg |   10 +++++--
 l3kernel/testfiles/m3expl001.ptex.tlg   |   10 +++++--
 l3kernel/testfiles/m3expl001.tlg        |   10 +++++--
 l3kernel/testfiles/m3expl001.uptex.tlg  |   10 +++++--
 l3kernel/testfiles/m3expl001.xetex.tlg  |   10 +++++--
 l3kernel/testfiles/m3expl003.luatex.tlg |   10 +++++--
 l3kernel/testfiles/m3expl003.ptex.tlg   |   10 +++++--
 l3kernel/testfiles/m3expl003.tlg        |   10 +++++--
 l3kernel/testfiles/m3expl003.uptex.tlg  |   10 +++++--
 l3kernel/testfiles/m3expl003.xetex.tlg  |   10 +++++--
 12 files changed, 120 insertions(+), 28 deletions(-)

diff --git a/l3kernel/CHANGELOG.md b/l3kernel/CHANGELOG.md
index 5a990cc..b32d41f 100644
--- a/l3kernel/CHANGELOG.md
+++ b/l3kernel/CHANGELOG.md
@@ -10,6 +10,7 @@ this project uses date-based 'snapshot' version identifiers.
 ### Added
 
 - Global versions of box affine functions, e.g. `\box_grotate:Nn`
+- Global versions of box size adjustment functions
 - `\box_(g)set_eq_drop:NN`, `\(h|v)box_unpack_drop:N`
 - `\file_get:nnN` and `\file_get:nnNTF`
 - Experimental functions `\sys_shell_get:nnN` and `\sys_shell_get:nnNTF`
@@ -27,6 +28,7 @@ this project uses date-based 'snapshot' version identifiers.
 
 ### Fixed
 
+- Scope treatment of `\box_set_dp:N`, _etc._
 - In (u)platex: detection of spaces in `\tl_rescan:nn` and related functions
 
 ### Removed
diff --git a/l3kernel/l3box.dtx b/l3kernel/l3box.dtx
index 5d13401..98d06d0 100644
--- a/l3kernel/l3box.dtx
+++ b/l3kernel/l3box.dtx
@@ -179,7 +179,11 @@
 %   \end{texnote}
 % \end{function}
 %
-% \begin{function}[updated = 2011-10-22]{\box_set_dp:Nn, \box_set_dp:cn}
+% \begin{function}[updated = 2019-01-22]
+%   {
+%     \box_set_dp:Nn, \box_set_dp:cn,
+%     \box_gset_dp:Nn, \box_gset_dp:cn
+%   }
 %   \begin{syntax}
 %     \cs{box_set_dp:Nn} \meta{box} \Arg{dimension expression}
 %   \end{syntax}
@@ -187,7 +191,11 @@
 %   the \Arg{dimension expression}.
 % \end{function}
 %
-% \begin{function}[updated = 2011-10-22]{\box_set_ht:Nn, \box_set_ht:cn}
+% \begin{function}[updated = 2019-01-22]
+%   {
+%     \box_set_ht:Nn, \box_set_ht:cn,
+%     \box_gset_ht:Nn, \box_gset_ht:cn
+%   }
 %   \begin{syntax}
 %     \cs{box_set_ht:Nn} \meta{box} \Arg{dimension expression}
 %   \end{syntax}
@@ -195,7 +203,11 @@
 %   the \Arg{dimension expression}.
 % \end{function}
 %
-% \begin{function}[updated = 2011-10-22]{\box_set_wd:Nn, \box_set_wd:cn}
+% \begin{function}[updated = 2019-01-22]
+%   {
+%     \box_set_wd:Nn, \box_set_wd:cn,
+%     \box_gset_wd:Nn, \box_gset_wd:cn
+%   }
 %   \begin{syntax}
 %     \cs{box_set_wd:Nn} \meta{box} \Arg{dimension expression}
 %   \end{syntax}
@@ -1029,20 +1041,38 @@
 % \begin{macro}{\box_set_ht:Nn, \box_set_ht:cn}
 % \begin{macro}{\box_set_dp:Nn, \box_set_dp:cn}
 % \begin{macro}{\box_set_wd:Nn, \box_set_wd:cn}
-%   Setting the size is easy: all primitive work. These primitives are not
-%   expandable, so the derived functions are not either.
+%   Setting the size whilst respecting local scope requires copying;
+%   the same issue does not come up when working globally.
 %   When debugging, the dimension expression |#2| is surrounded by
 %   parentheses to catch early termination.
 %    \begin{macrocode}
 \cs_new_protected:Npn \box_set_dp:Nn #1#2
+  {
+    \tex_setbox:D #1 = \tex_copy:D #1
+    \box_dp:N #1 \@@_dim_eval:n {#2}
+  }
+\cs_generate_variant:Nn \box_set_dp:Nn { c }
+\cs_new_protected:Npn \box_gset_dp:Nn #1#2
   { \box_dp:N #1 \@@_dim_eval:n {#2} }
+\cs_generate_variant:Nn \box_gset_dp:Nn { c }
 \cs_new_protected:Npn \box_set_ht:Nn #1#2
+  {
+    \tex_setbox:D #1 = \tex_copy:D #1
+    \box_ht:N #1 \@@_dim_eval:n {#2}
+  }
+\cs_generate_variant:Nn \box_set_ht:Nn { c }
+\cs_new_protected:Npn \box_gset_ht:Nn #1#2
   { \box_ht:N #1 \@@_dim_eval:n {#2} }
+\cs_generate_variant:Nn \box_gset_ht:Nn { c }
 \cs_new_protected:Npn \box_set_wd:Nn #1#2
-  { \box_wd:N #1 \@@_dim_eval:n {#2} }
-\cs_generate_variant:Nn \box_set_ht:Nn { c }
-\cs_generate_variant:Nn \box_set_dp:Nn { c }
+  {
+    \tex_setbox:D #1 = \tex_copy:D #1
+    \box_wd:N #1 \@@_dim_eval:n {#2}
+  }
 \cs_generate_variant:Nn \box_set_wd:Nn { c }
+\cs_new_protected:Npn \box_gset_wd:Nn #1#2
+  { \box_wd:N #1 \@@_dim_eval:n {#2} }
+\cs_generate_variant:Nn \box_gset_wd:Nn { c }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
diff --git a/l3kernel/testfiles/m3expl001.luatex.tlg b/l3kernel/testfiles/m3expl001.luatex.tlg
index 36b137e..309f201 100644
--- a/l3kernel/testfiles/m3expl001.luatex.tlg
+++ b/l3kernel/testfiles/m3expl001.luatex.tlg
@@ -5070,11 +5070,17 @@ Defining \box_ht:c on line ...
 Defining \box_dp:c on line ...
 Defining \box_wd:c on line ...
 Defining \box_set_dp:Nn on line ...
+Defining \box_set_dp:cn on line ...
+Defining \box_gset_dp:Nn on line ...
+Defining \box_gset_dp:cn on line ...
 Defining \box_set_ht:Nn on line ...
-Defining \box_set_wd:Nn on line ...
 Defining \box_set_ht:cn on line ...
-Defining \box_set_dp:cn on line ...
+Defining \box_gset_ht:Nn on line ...
+Defining \box_gset_ht:cn on line ...
+Defining \box_set_wd:Nn on line ...
 Defining \box_set_wd:cn on line ...
+Defining \box_gset_wd:Nn on line ...
+Defining \box_gset_wd:cn on line ...
 Defining \box_use_drop:N on line ...
 Defining \box_use:N on line ...
 Defining \box_use_drop:c on line ...
diff --git a/l3kernel/testfiles/m3expl001.ptex.tlg b/l3kernel/testfiles/m3expl001.ptex.tlg
index 5a9a9ea..55b06b0 100644
--- a/l3kernel/testfiles/m3expl001.ptex.tlg
+++ b/l3kernel/testfiles/m3expl001.ptex.tlg
@@ -5366,11 +5366,17 @@ Defining \box_ht:c on line ...
 Defining \box_dp:c on line ...
 Defining \box_wd:c on line ...
 Defining \box_set_dp:Nn on line ...
+Defining \box_set_dp:cn on line ...
+Defining \box_gset_dp:Nn on line ...
+Defining \box_gset_dp:cn on line ...
 Defining \box_set_ht:Nn on line ...
-Defining \box_set_wd:Nn on line ...
 Defining \box_set_ht:cn on line ...
-Defining \box_set_dp:cn on line ...
+Defining \box_gset_ht:Nn on line ...
+Defining \box_gset_ht:cn on line ...
+Defining \box_set_wd:Nn on line ...
 Defining \box_set_wd:cn on line ...
+Defining \box_gset_wd:Nn on line ...
+Defining \box_gset_wd:cn on line ...
 Defining \box_use_drop:N on line ...
 Defining \box_use:N on line ...
 Defining \box_use_drop:c on line ...
diff --git a/l3kernel/testfiles/m3expl001.tlg b/l3kernel/testfiles/m3expl001.tlg
index 6026bc9..4def151 100644
--- a/l3kernel/testfiles/m3expl001.tlg
+++ b/l3kernel/testfiles/m3expl001.tlg
@@ -5366,11 +5366,17 @@ Defining \box_ht:c on line ...
 Defining \box_dp:c on line ...
 Defining \box_wd:c on line ...
 Defining \box_set_dp:Nn on line ...
+Defining \box_set_dp:cn on line ...
+Defining \box_gset_dp:Nn on line ...
+Defining \box_gset_dp:cn on line ...
 Defining \box_set_ht:Nn on line ...
-Defining \box_set_wd:Nn on line ...
 Defining \box_set_ht:cn on line ...
-Defining \box_set_dp:cn on line ...
+Defining \box_gset_ht:Nn on line ...
+Defining \box_gset_ht:cn on line ...
+Defining \box_set_wd:Nn on line ...
 Defining \box_set_wd:cn on line ...
+Defining \box_gset_wd:Nn on line ...
+Defining \box_gset_wd:cn on line ...
 Defining \box_use_drop:N on line ...
 Defining \box_use:N on line ...
 Defining \box_use_drop:c on line ...
diff --git a/l3kernel/testfiles/m3expl001.uptex.tlg b/l3kernel/testfiles/m3expl001.uptex.tlg
index e79ea93..c58aefc 100644
--- a/l3kernel/testfiles/m3expl001.uptex.tlg
+++ b/l3kernel/testfiles/m3expl001.uptex.tlg
@@ -5363,11 +5363,17 @@ Defining \box_ht:c on line ...
 Defining \box_dp:c on line ...
 Defining \box_wd:c on line ...
 Defining \box_set_dp:Nn on line ...
+Defining \box_set_dp:cn on line ...
+Defining \box_gset_dp:Nn on line ...
+Defining \box_gset_dp:cn on line ...
 Defining \box_set_ht:Nn on line ...
-Defining \box_set_wd:Nn on line ...
 Defining \box_set_ht:cn on line ...
-Defining \box_set_dp:cn on line ...
+Defining \box_gset_ht:Nn on line ...
+Defining \box_gset_ht:cn on line ...
+Defining \box_set_wd:Nn on line ...
 Defining \box_set_wd:cn on line ...
+Defining \box_gset_wd:Nn on line ...
+Defining \box_gset_wd:cn on line ...
 Defining \box_use_drop:N on line ...
 Defining \box_use:N on line ...
 Defining \box_use_drop:c on line ...
diff --git a/l3kernel/testfiles/m3expl001.xetex.tlg b/l3kernel/testfiles/m3expl001.xetex.tlg
index f0032b0..6b9e6cd 100644
--- a/l3kernel/testfiles/m3expl001.xetex.tlg
+++ b/l3kernel/testfiles/m3expl001.xetex.tlg
@@ -5081,11 +5081,17 @@ Defining \box_ht:c on line ...
 Defining \box_dp:c on line ...
 Defining \box_wd:c on line ...
 Defining \box_set_dp:Nn on line ...
+Defining \box_set_dp:cn on line ...
+Defining \box_gset_dp:Nn on line ...
+Defining \box_gset_dp:cn on line ...
 Defining \box_set_ht:Nn on line ...
-Defining \box_set_wd:Nn on line ...
 Defining \box_set_ht:cn on line ...
-Defining \box_set_dp:cn on line ...
+Defining \box_gset_ht:Nn on line ...
+Defining \box_gset_ht:cn on line ...
+Defining \box_set_wd:Nn on line ...
 Defining \box_set_wd:cn on line ...
+Defining \box_gset_wd:Nn on line ...
+Defining \box_gset_wd:cn on line ...
 Defining \box_use_drop:N on line ...
 Defining \box_use:N on line ...
 Defining \box_use_drop:c on line ...
diff --git a/l3kernel/testfiles/m3expl003.luatex.tlg b/l3kernel/testfiles/m3expl003.luatex.tlg
index 36b137e..309f201 100644
--- a/l3kernel/testfiles/m3expl003.luatex.tlg
+++ b/l3kernel/testfiles/m3expl003.luatex.tlg
@@ -5070,11 +5070,17 @@ Defining \box_ht:c on line ...
 Defining \box_dp:c on line ...
 Defining \box_wd:c on line ...
 Defining \box_set_dp:Nn on line ...
+Defining \box_set_dp:cn on line ...
+Defining \box_gset_dp:Nn on line ...
+Defining \box_gset_dp:cn on line ...
 Defining \box_set_ht:Nn on line ...
-Defining \box_set_wd:Nn on line ...
 Defining \box_set_ht:cn on line ...
-Defining \box_set_dp:cn on line ...
+Defining \box_gset_ht:Nn on line ...
+Defining \box_gset_ht:cn on line ...
+Defining \box_set_wd:Nn on line ...
 Defining \box_set_wd:cn on line ...
+Defining \box_gset_wd:Nn on line ...
+Defining \box_gset_wd:cn on line ...
 Defining \box_use_drop:N on line ...
 Defining \box_use:N on line ...
 Defining \box_use_drop:c on line ...
diff --git a/l3kernel/testfiles/m3expl003.ptex.tlg b/l3kernel/testfiles/m3expl003.ptex.tlg
index 5a9a9ea..55b06b0 100644
--- a/l3kernel/testfiles/m3expl003.ptex.tlg
+++ b/l3kernel/testfiles/m3expl003.ptex.tlg
@@ -5366,11 +5366,17 @@ Defining \box_ht:c on line ...
 Defining \box_dp:c on line ...
 Defining \box_wd:c on line ...
 Defining \box_set_dp:Nn on line ...
+Defining \box_set_dp:cn on line ...
+Defining \box_gset_dp:Nn on line ...
+Defining \box_gset_dp:cn on line ...
 Defining \box_set_ht:Nn on line ...
-Defining \box_set_wd:Nn on line ...
 Defining \box_set_ht:cn on line ...
-Defining \box_set_dp:cn on line ...
+Defining \box_gset_ht:Nn on line ...
+Defining \box_gset_ht:cn on line ...
+Defining \box_set_wd:Nn on line ...
 Defining \box_set_wd:cn on line ...
+Defining \box_gset_wd:Nn on line ...
+Defining \box_gset_wd:cn on line ...
 Defining \box_use_drop:N on line ...
 Defining \box_use:N on line ...
 Defining \box_use_drop:c on line ...
diff --git a/l3kernel/testfiles/m3expl003.tlg b/l3kernel/testfiles/m3expl003.tlg
index 6026bc9..4def151 100644
--- a/l3kernel/testfiles/m3expl003.tlg
+++ b/l3kernel/testfiles/m3expl003.tlg
@@ -5366,11 +5366,17 @@ Defining \box_ht:c on line ...
 Defining \box_dp:c on line ...
 Defining \box_wd:c on line ...
 Defining \box_set_dp:Nn on line ...
+Defining \box_set_dp:cn on line ...
+Defining \box_gset_dp:Nn on line ...
+Defining \box_gset_dp:cn on line ...
 Defining \box_set_ht:Nn on line ...
-Defining \box_set_wd:Nn on line ...
 Defining \box_set_ht:cn on line ...
-Defining \box_set_dp:cn on line ...
+Defining \box_gset_ht:Nn on line ...
+Defining \box_gset_ht:cn on line ...
+Defining \box_set_wd:Nn on line ...
 Defining \box_set_wd:cn on line ...
+Defining \box_gset_wd:Nn on line ...
+Defining \box_gset_wd:cn on line ...
 Defining \box_use_drop:N on line ...
 Defining \box_use:N on line ...
 Defining \box_use_drop:c on line ...
diff --git a/l3kernel/testfiles/m3expl003.uptex.tlg b/l3kernel/testfiles/m3expl003.uptex.tlg
index e79ea93..c58aefc 100644
--- a/l3kernel/testfiles/m3expl003.uptex.tlg
+++ b/l3kernel/testfiles/m3expl003.uptex.tlg
@@ -5363,11 +5363,17 @@ Defining \box_ht:c on line ...
 Defining \box_dp:c on line ...
 Defining \box_wd:c on line ...
 Defining \box_set_dp:Nn on line ...
+Defining \box_set_dp:cn on line ...
+Defining \box_gset_dp:Nn on line ...
+Defining \box_gset_dp:cn on line ...
 Defining \box_set_ht:Nn on line ...
-Defining \box_set_wd:Nn on line ...
 Defining \box_set_ht:cn on line ...
-Defining \box_set_dp:cn on line ...
+Defining \box_gset_ht:Nn on line ...
+Defining \box_gset_ht:cn on line ...
+Defining \box_set_wd:Nn on line ...
 Defining \box_set_wd:cn on line ...
+Defining \box_gset_wd:Nn on line ...
+Defining \box_gset_wd:cn on line ...
 Defining \box_use_drop:N on line ...
 Defining \box_use:N on line ...
 Defining \box_use_drop:c on line ...
diff --git a/l3kernel/testfiles/m3expl003.xetex.tlg b/l3kernel/testfiles/m3expl003.xetex.tlg
index f0032b0..6b9e6cd 100644
--- a/l3kernel/testfiles/m3expl003.xetex.tlg
+++ b/l3kernel/testfiles/m3expl003.xetex.tlg
@@ -5081,11 +5081,17 @@ Defining \box_ht:c on line ...
 Defining \box_dp:c on line ...
 Defining \box_wd:c on line ...
 Defining \box_set_dp:Nn on line ...
+Defining \box_set_dp:cn on line ...
+Defining \box_gset_dp:Nn on line ...
+Defining \box_gset_dp:cn on line ...
 Defining \box_set_ht:Nn on line ...
-Defining \box_set_wd:Nn on line ...
 Defining \box_set_ht:cn on line ...
-Defining \box_set_dp:cn on line ...
+Defining \box_gset_ht:Nn on line ...
+Defining \box_gset_ht:cn on line ...
+Defining \box_set_wd:Nn on line ...
 Defining \box_set_wd:cn on line ...
+Defining \box_gset_wd:Nn on line ...
+Defining \box_gset_wd:cn on line ...
 Defining \box_use_drop:N on line ...
 Defining \box_use:N on line ...
 Defining \box_use_drop:c on line ...





More information about the latex3-commits mailing list