From 66a287e5250b0c0e61e58f8361dfeb00186869cf Mon Sep 17 00:00:00 2001 From: Joseph Wright Date: Wed, 23 Jan 2019 21:30:14 +0000 Subject: [PATCH] Fix scope treatment of \box_set_ht:Nn, etc. --- 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 5a990cc221..b32d41f1f8 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 5d13401e55..98d06d0548 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 36b137e774..309f201991 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 5a9a9ea0fe..55b06b0463 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 6026bc9c1b..4def151e30 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 e79ea93742..c58aefc34c 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 f0032b02e4..6b9e6cded5 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 36b137e774..309f201991 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 5a9a9ea0fe..55b06b0463 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 6026bc9c1b..4def151e30 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 e79ea93742..c58aefc34c 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 f0032b02e4..6b9e6cded5 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 ...