[latex3-commits] [git/LaTeX3-latex3-latex3] coffins: Support for global coffin setting (5d3e833)

Joseph Wright joseph.wright at morningstar2.co.uk
Sun Jan 20 21:50:52 CET 2019


Repository : https://github.com/latex3/latex3
On branch  : coffins
Link       : https://github.com/latex3/latex3/commit/5d3e83389596bd1a14b31a544530c1f1bddd9ed0

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

commit 5d3e83389596bd1a14b31a544530c1f1bddd9ed0
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date:   Fri Jan 18 22:11:54 2019 +0000

    Support for global coffin setting
    
    No pole updates, etc., yet.


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

5d3e83389596bd1a14b31a544530c1f1bddd9ed0
 l3kernel/l3coffins.dtx                  |  250 ++++++++++++++++++++++++-------
 l3kernel/testfiles/m3expl001.luatex.tlg |   27 +++-
 l3kernel/testfiles/m3expl001.ptex.tlg   |   27 +++-
 l3kernel/testfiles/m3expl001.tlg        |   27 +++-
 l3kernel/testfiles/m3expl001.uptex.tlg  |   27 +++-
 l3kernel/testfiles/m3expl001.xetex.tlg  |   27 +++-
 l3kernel/testfiles/m3expl003.luatex.tlg |   27 +++-
 l3kernel/testfiles/m3expl003.ptex.tlg   |   27 +++-
 l3kernel/testfiles/m3expl003.tlg        |   27 +++-
 l3kernel/testfiles/m3expl003.uptex.tlg  |   27 +++-
 l3kernel/testfiles/m3expl003.xetex.tlg  |   27 +++-
 11 files changed, 447 insertions(+), 73 deletions(-)

diff --git a/l3kernel/l3coffins.dtx b/l3kernel/l3coffins.dtx
index 67fd9ff..cd998d4 100644
--- a/l3kernel/l3coffins.dtx
+++ b/l3kernel/l3coffins.dtx
@@ -64,12 +64,16 @@
 %   initially empty.
 % \end{function}
 %
-% \begin{function}[added = 2011-08-17]{\coffin_clear:N, \coffin_clear:c}
+% \begin{function}[added = 2011-08-17, updated = 2019-01-18]
+%   {
+%     \coffin_clear:N, \coffin_clear:c,
+%     \coffin_gclear:N, \coffin_gclear:c
+%   }
 %   \begin{syntax}
 %     \cs{coffin_clear:N} \meta{coffin}
 %   \end{syntax}
-%   Clears the content of the \meta{coffin} within the current \TeX{}
-%   group level.
+%   Clears the content of the \meta{coffin} by setting it equal to an empty
+%   coffin.
 % \end{function}
 %
 % \begin{function}[added = 2011-08-17]
@@ -95,8 +99,11 @@
 % All coffin functions create and manipulate coffins locally within the
 % current \TeX\ group level.
 %
-% \begin{function}[added = 2011-08-17, updated = 2011-09-03]
-%   {\hcoffin_set:Nn, \hcoffin_set:cn}
+% \begin{function}[added = 2011-08-17, updated = 2019-01-18]
+%   {
+%     \hcoffin_set:Nn, \hcoffin_set:cn,
+%     \hcoffin_gset:Nn, \hcoffin_gset:cn
+%   }
 %   \begin{syntax}
 %     \cs{hcoffin_set:Nn} \meta{coffin} \Arg{material}
 %   \end{syntax}
@@ -117,8 +124,11 @@
 %   environment in a coffin.
 % \end{function}
 %
-% \begin{function}[added = 2011-08-17, updated = 2012-05-22]
-%   {\vcoffin_set:Nnn, \vcoffin_set:cnn}
+% \begin{function}[added = 2011-08-17, updated = 2019-01-18]
+%   {
+%     \vcoffin_set:Nnn, \vcoffin_set:cnn,
+%     \vcoffin_gset:Nnn, \vcoffin_gset:cnn
+%   }
 %   \begin{syntax}
 %     \cs{vcoffin_set:Nnn} \meta{coffin} \Arg{width} \Arg{material}
 %   \end{syntax}
@@ -522,7 +532,11 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\coffin_clear:N, \coffin_clear:c}
+% \begin{macro}
+%   {
+%     \coffin_clear:N, \coffin_clear:c,
+%     \coffin_gclear:N, \coffin_gclear:c
+%   }
 %   Clearing coffins means emptying the box and resetting all of the
 %   structures.
 %    \begin{macrocode}
@@ -530,11 +544,22 @@
   {
     \@@_if_exist:NT #1
       {
+        \@@_check_scope:NN #1 l
         \box_clear:N #1
         \@@_reset_structure:N #1
       }
   }
 \cs_generate_variant:Nn \coffin_clear:N { c }
+\cs_new_protected:Npn \coffin_gclear:N #1
+  {
+    \@@_if_exist:NT #1
+      {
+        \@@_check_scope:NN #1 g
+        \box_gclear:N #1
+        \@@_greset_structure:N #1
+      }
+  }
+\cs_generate_variant:Nn \coffin_gclear:N { c }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -565,29 +590,50 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\hcoffin_set:Nn, \hcoffin_set:cn}
+% \begin{macro}
+%   {
+%     \hcoffin_set:Nn, \hcoffin_set:cn,
+%     \hcoffin_gset:Nn, \hcoffin_gset:cn
+%   }
+% \begin{macro}{\@@_set_horizontal:NnNNN}
 %   Horizontal coffins are relatively easy: set the appropriate box,
 %   reset the structures then update the handle positions.
 %    \begin{macrocode}
 \cs_new_protected:Npn \hcoffin_set:Nn #1#2
   {
+    \@@_set_horizontal:NnNNN
+      #1 {#2} \hbox_set:Nn \@@_update:N l
+  }
+\cs_generate_variant:Nn \hcoffin_set:Nn { c }
+\cs_new_protected:Npn \hcoffin_gset:Nn #1#2
+  {
+    \@@_set_horizontal:NnNNN
+      #1 {#2} \hbox_gset:Nn \@@_gupdate:N g
+  }
+\cs_generate_variant:Nn \hcoffin_gset:Nn { c }
+\cs_new_protected:Npn \@@_set_horizontal:NnNNN #1#2#3#4#5
+  {
     \@@_if_exist:NT #1
       {
-        \hbox_set:Nn #1
+        \@@_check_scope:NN #1 #5
+        #3 #1
           {
             \color_ensure_current:
             #2
           }
-        \@@_reset_structure:N #1
-        \@@_update_poles:N #1
-        \@@_update_corners:N #1
+        #4 #1
       }
   }
-\cs_generate_variant:Nn \hcoffin_set:Nn { c }
 %    \end{macrocode}
 % \end{macro}
+% \end{macro}
 %
-% \begin{macro}{\vcoffin_set:Nnn, \vcoffin_set:cnn}
+% \begin{macro}
+%   {
+%     \vcoffin_set:Nnn, \vcoffin_set:cnn,
+%     \vcoffin_gset:Nnn, \vcoffin_gset:cnn
+%   }
+% \begin{macro}{\@@_set_vertical:NnnNNN}
 %   Setting vertical coffins is more complex. First, the material is
 %   typeset with a given width. The default handles and poles are set as
 %   for a horizontal coffin, before finding the top baseline using a
@@ -598,9 +644,22 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \vcoffin_set:Nnn #1#2#3
   {
+    \@@_set_vertical:NnnNNN
+      #1 {#2} {#3} \vbox_set:Nn \@@_update:N l
+  }
+\cs_generate_variant:Nn \vcoffin_set:Nnn { c }
+\cs_new_protected:Npn \vcoffin_gset:Nnn #1#2#3
+  {
+    \@@_set_vertical:NnnNNN
+      #1 {#2} {#3} \vbox_gset:Nn \@@_gupdate:N g
+  }
+\cs_generate_variant:Nn \vcoffin_set:Nnn { c }
+\cs_new_protected:Npn \@@_set_vertical:NnnNNN #1#2#3#4#5#6
+  {
     \@@_if_exist:NT #1
       {
-        \vbox_set:Nn #1
+        \@@_check_scope:NN #1 #6
+        #4 #1
           {
             \dim_set:Nn \tex_hsize:D {#2}
 %<*package>
@@ -609,9 +668,7 @@
 %</package>
             #3
           }
-        \@@_reset_structure:N #1
-        \@@_update_poles:N #1
-        \@@_update_corners:N #1
+        #5 #1
         \vbox_set_top:Nn \l_@@_internal_box { \vbox_unpack:N #1 }
         \@@_set_pole:Nnx #1 { T }
           {
@@ -626,55 +683,87 @@
         \box_clear:N \l_@@_internal_box
       }
   }
-\cs_generate_variant:Nn \vcoffin_set:Nnn { c }
 %    \end{macrocode}
 % \end{macro}
+% \end{macro}
 %
-% \begin{macro}{\hcoffin_set:Nw, \hcoffin_set:cw}
-% \begin{macro}{\hcoffin_set_end:}
+% \begin{macro}
+%   {
+%     \hcoffin_set:Nw, \hcoffin_set:cw,
+%     \hcoffin_gset:Nw, \hcoffin_gset:cw
+%   }
+% \begin{macro}{\hcoffin_set_end:, \hcoffin_gset_end:}
+% \begin{macro}{\@@_set_horizontal:NNNNw}
 % These are the \enquote{begin}/\enquote{end} versions of the above:
 % watch the grouping!
 %    \begin{macrocode}
 \cs_new_protected:Npn \hcoffin_set:Nw #1
   {
+    \@@_set_horizontal:NNNNw
+      #1 \hbox_set:Nw \@@_update:N l
+  }
+\cs_generate_variant:Nn \hcoffin_set:Nw { c }
+\cs_new_protected:Npn \hcoffin_gset:Nw #1
+  {
+    \@@_set_horizontal:NNNNw
+      #1 \hbox_gset:Nw \@@_gupdate:NN g
+  }
+\cs_generate_variant:Nn \hcoffin_gset:Nw { c }
+\cs_new_protected:Npn \@@_set_horizontal:NNNNw #1#2#3#4
+  {
     \@@_if_exist:NT #1
       {
-        \hbox_set:Nw #1 \color_ensure_current:
+        \@@_check_scope:NN #1 #4
+        #2 #1 \color_ensure_current:
           \cs_set_protected:Npn \hcoffin_set_end:
             {
               \hbox_set_end:
-              \@@_reset_structure:N #1
-              \@@_update_poles:N #1
-              \@@_update_corners:N #1
+              #3 #1
             }
       }
   }
 \cs_new_protected:Npn \hcoffin_set_end: { }
-\cs_generate_variant:Nn \hcoffin_set:Nw { c }
+\cs_new_protected:Npn \hcoffin_gset_end: { }
 %    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
 %
-% \end{macro}\end{macro}
-%
-% \begin{macro}{\vcoffin_set:Nnw, \vcoffin_set:cnw}
-% \begin{macro}{\vcoffin_set_end:}
+% \begin{macro}
+%   {
+%     \vcoffin_set:Nnw, \vcoffin_set:cnw,
+%     \vcoffin_gset:Nnw, \vcoffin_gset:cnw
+%   }
+% \begin{macro}{\vcoffin_set_end:, \vcoffin_gset_end:}
+% \begin{macro}{\@@_set_vertical:NnNNNNNw}
 %   The same for vertical coffins.
 %    \begin{macrocode}
 \cs_new_protected:Npn \vcoffin_set:Nnw #1#2
   {
+    \@@_set_vertical:NnNNNNNw #1 {#2} \vbox_set:Nw
+      \vcoffin_set_end: \vbox_gset_end: \@@_update:N l
+  }
+\cs_new_protected:Npn \vcoffin_gset:Nnw #1#2
+  {
+    \@@_set_vertical:NnNNNNNw #1 {#2} \vbox_gset:Nw
+      \vcoffin_gset_end: \vbox_gset_end: \@@_gupdate:N g
+  }
+\cs_generate_variant:Nn \vcoffin_set:Nnw { c }
+\cs_new_protected:Npn \@@_set_vertical:NnNNNNNw #1#2#3#4#5#6#7
+  {
     \@@_if_exist:NT #1
       {
-        \vbox_set:Nw #1
+        \@@_check_scope:Nn #1 #7
+        #3 #1
           \dim_set:Nn \tex_hsize:D {#2}
 %<*package>
             \dim_set_eq:NN \linewidth   \tex_hsize:D
             \dim_set_eq:NN \columnwidth \tex_hsize:D
 %</package>
-          \cs_set_protected:Npn \vcoffin_set_end:
+          \cs_set_protected:Npn #4
             {
-              \vbox_set_end:
-              \@@_reset_structure:N #1
-              \@@_update_poles:N #1
-              \@@_update_corners:N #1
+              #5
+              #6 #1
               \vbox_set_top:Nn \l_@@_internal_box { \vbox_unpack:N #1 }
               \@@_set_pole:Nnx #1 { T }
                 {
@@ -691,10 +780,11 @@
       }
   }
 \cs_new_protected:Npn \vcoffin_set_end: { }
-\cs_generate_variant:Nn \vcoffin_set:Nnw { c }
+\cs_new_protected:Npn \vcoffin_gset_end: { }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
+% \end{macro}
 %
 % \begin{macro}
 %   {
@@ -783,18 +873,42 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\@@_reset_structure:N}
-%   Resetting the structure is a simple copy job.
+% \begin{macro}{\@@_reset_structure:N, \@@_greset_structure:N}
+% \begin{macro}{\@@_reset_structure:NNN}
+%   Resetting structure needs to cover the case where the structures have not
+%   been created. These are created globally, as there is a need to
+%   avoid any strange effects if the coffin is created inside a group.
+%   This means that the usual rule about \cs[no-index]{l_\ldots}
+%   variables has to be broken.  The \cs{debug_suspend:} and
+%   \cs{debug_resume:} functions prevent these checks.  They also
+%   prevent \cs{prop_clear_new:c} from writing useless information to
+%   the log file.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_reset_structure:N #1
+  { \@@_reset_structure:NNN #1 l \prop_set_eq:cN }
+\cs_new_protected:Npn \@@_greset_structure:N #1
+  { \@@_reset_structure:NNN #1 g \prop_gset_eq:cN }
+\cs_new_protected:Npn \@@_reset_structure:NNN #1#2#3
   {
-    \prop_set_eq:cN { l_@@_corners_ \@@_to_value:N #1 _prop }
+    \debug_suspend:
+    \prop_if_exist:cF { #2 _@@_corners_ \@@_to_value:N #1 _prop }
+      {
+        \prop_new:c { #2 _@@_corners_ \@@_to_value:N #1 _prop }
+        \prop_new:c { #2 _@@_poles_ \@@_to_value:N #1 _prop }
+        \prop_gset_eq:cN { #2 _@@_corners_ \@@_to_value:N #1 _prop }
+          \c_@@_corners_prop
+        \prop_gset_eq:cN { #2 _@@_poles_ \@@_to_value:N #1 _prop }
+          \c_@@_poles_prop
+      }
+    \debug_resume:
+    #3 { #2 _@@_corners_ \@@_to_value:N #1 _prop }
       \c_@@_corners_prop
-    \prop_set_eq:cN { l_@@_poles_ \@@_to_value:N #1 _prop }
+    #3 { #2 _@@_poles_ \@@_to_value:N #1 _prop }
       \c_@@_poles_prop
   }
 %    \end{macrocode}
 % \end{macro}
+% \end{macro}
 %
 % \begin{macro}{\@@_set_eq_structure:NN, \@@_gset_eq_structure:NN}
 % Setting coffin structures equal simply means copying the property
@@ -861,26 +975,49 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\@@_update_corners:N}
+% \begin{macro}{\@@_update:N, \@@_gupdate:N}
+%   Simple shortcuts.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_update:N #1
+  {
+    \@@_reset_structure:N #1
+    \@@_update_poles:N #1
+    \@@_update_corners:N #1
+  }
+\cs_new_protected:Npn \@@_gupdate:N #1
+  {
+    \@@_greset_structure:N #1
+    \@@_gupdate_poles:N #1
+    \@@_gupdate_corners:N #1
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_update_corners:N, \@@_gupdate_corners:N}
+% \begin{macro}{\@@_update_corners:NN}
 %   Updating the corners of a coffin is straight-forward as at this stage
 %   there can be no rotation. So the corners of the content are just those
 %   of the underlying \TeX{} box.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_update_corners:N #1
+  { \@@_update_corners:NNN #1 l \prop_put:cnx }
+\cs_new_protected:Npn \@@_gupdate_corners:N #1
+  { \@@_update_corners:NNN #1 g \prop_gput:cnx }
+\cs_new_protected:Npn \@@_update_corners:NNN #1#2#3
   {
-    \prop_put:cnx { l_@@_corners_ \@@_to_value:N #1 _prop }
+    #3 { #2 _@@_corners_ \@@_to_value:N #1 _prop }
       { tl }
       { { 0pt } { \dim_eval:n { \box_ht:N #1 } } }
-    \prop_put:cnx { l_@@_corners_ \@@_to_value:N #1 _prop }
+    #3 { #2 _@@_corners_ \@@_to_value:N #1 _prop }
       { tr }
       {
         { \dim_eval:n { \box_wd:N #1 } }
         { \dim_eval:n { \box_ht:N #1 } }
       }
-    \prop_put:cnx { l_@@_corners_ \@@_to_value:N #1 _prop }
+    #3 { #2 _@@_corners_ \@@_to_value:N #1 _prop }
       { bl }
       { { 0pt } { \dim_eval:n { -\box_dp:N #1 } } }
-    \prop_put:cnx { l_@@_corners_ \@@_to_value:N #1 _prop }
+    #3 { #2 _@@_corners_ \@@_to_value:N #1 _prop }
       { br }
       {
         { \dim_eval:n { \box_wd:N #1 } }
@@ -889,8 +1026,10 @@
   }
 %    \end{macrocode}
 % \end{macro}
+% \end{macro}
 %
-% \begin{macro}{\@@_update_poles:N}
+% \begin{macro}{\@@_update_poles:N, \@@_gupdate_poles:N}
+% \begin{macro}{\@@_update_poles:NNN}
 %   This function is called when a coffin is set, and updates the poles to
 %   reflect the nature of size of the box. Thus this function only alters
 %   poles where the default position is dependent on the size of the box.
@@ -898,32 +1037,36 @@
 %   coffins.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_update_poles:N #1
+  { \@@_update_poles:NNN #1 l \prop_put:cnx }
+ \cs_new_protected:Npn \@@_gupdate_poles:N #1
+  { \@@_update_poles:NNN #1 g \prop_gput:cnx }
+ \cs_new_protected:Npn \@@_update_poles:NNN #1#2#3
   { 
-    \prop_put:cnx { l_@@_poles_ \@@_to_value:N #1 _prop } { hc }
+    #3 { #2 _@@_poles_ \@@_to_value:N #1 _prop } { hc }
       {
         { \dim_eval:n { 0.5 \box_wd:N #1 } }
         { 0pt } { 0pt } { 1000pt }
       }
-    \prop_put:cnx { l_@@_poles_ \@@_to_value:N #1 _prop } { r }
+    #3 { #2 _@@_poles_ \@@_to_value:N #1 _prop } { r }
       {
         { \dim_eval:n { \box_wd:N #1 } }
         { 0pt } { 0pt } { 1000pt }
       }
-    \prop_put:cnx { l_@@_poles_ \@@_to_value:N #1 _prop } { vc }
+    #3 { #2 _@@_poles_ \@@_to_value:N #1 _prop } { vc }
       {
         { 0pt }
         { \dim_eval:n { ( \box_ht:N #1 - \box_dp:N #1 ) / 2 } }
         { 1000pt }
         { 0pt }
       }
-    \prop_put:cnx { l_@@_poles_ \@@_to_value:N #1 _prop } { t }
+    #3 { #2 _@@_poles_ \@@_to_value:N #1 _prop } { t }
       {
         { 0pt }
         { \dim_eval:n { \box_ht:N #1 } }
         { 1000pt }
         { 0pt }
       }
-    \prop_put:cnx { l_@@_poles_ \@@_to_value:N #1 _prop } { b }
+    #3 { #2 _@@_poles_ \@@_to_value:N #1 _prop } { b }
       {
         { 0pt }
         { \dim_eval:n { -\box_dp:N #1 } }
@@ -933,6 +1076,7 @@
   }
 %    \end{macrocode}
 % \end{macro}
+% \end{macro}
 %
 % \subsection{Coffins: calculation of pole intersections}
 %
diff --git a/l3kernel/testfiles/m3expl001.luatex.tlg b/l3kernel/testfiles/m3expl001.luatex.tlg
index 00e99c0..bee2f44 100644
--- a/l3kernel/testfiles/m3expl001.luatex.tlg
+++ b/l3kernel/testfiles/m3expl001.luatex.tlg
@@ -5302,18 +5302,33 @@ Defining \__coffin_if_exist:NT on line ...
 Defining \__coffin_check_scope:NN on line ...
 Defining \coffin_clear:N on line ...
 Defining \coffin_clear:c on line ...
+Defining \coffin_gclear:N on line ...
+Defining \coffin_gclear:c on line ...
 Defining \coffin_new:N on line ...
 Defining \coffin_new:c on line ...
 Defining \hcoffin_set:Nn on line ...
 Defining \hcoffin_set:cn on line ...
+Defining \hcoffin_gset:Nn on line ...
+Defining \hcoffin_gset:cn on line ...
+Defining \__coffin_set_horizontal:NnNNN on line ...
 Defining \vcoffin_set:Nnn on line ...
 Defining \vcoffin_set:cnn on line ...
+Defining \vcoffin_gset:Nnn on line ...
+Variant \vcoffin_set:cnn already defined; not changing it on line ...
+Defining \__coffin_set_vertical:NnnNNN on line ...
 Defining \hcoffin_set:Nw on line ...
-Defining \hcoffin_set_end: on line ...
 Defining \hcoffin_set:cw on line ...
+Defining \hcoffin_gset:Nw on line ...
+Defining \hcoffin_gset:cw on line ...
+Defining \__coffin_set_horizontal:NNNNw on line ...
+Defining \hcoffin_set_end: on line ...
+Defining \hcoffin_gset_end: on line ...
 Defining \vcoffin_set:Nnw on line ...
-Defining \vcoffin_set_end: on line ...
+Defining \vcoffin_gset:Nnw on line ...
 Defining \vcoffin_set:cnw on line ...
+Defining \__coffin_set_vertical:NnNNNNNw on line ...
+Defining \vcoffin_set_end: on line ...
+Defining \vcoffin_gset_end: on line ...
 Defining \coffin_set_eq:NN on line ...
 Defining \coffin_set_eq:cN on line ...
 Defining \coffin_set_eq:Nc on line ...
@@ -5336,6 +5351,8 @@ Defining \coffin_wd:N on line ...
 Defining \coffin_wd:c on line ...
 Defining \__coffin_get_pole:NnN on line ...
 Defining \__coffin_reset_structure:N on line ...
+Defining \__coffin_greset_structure:N on line ...
+Defining \__coffin_reset_structure:NNN on line ...
 Defining \__coffin_set_eq_structure:NN on line ...
 Defining \__coffin_gset_eq_structure:NN on line ...
 Defining \coffin_set_horizontal_pole:Nnn on line ...
@@ -5344,8 +5361,14 @@ Defining \__coffin_set_pole:Nnn on line ...
 Defining \coffin_set_horizontal_pole:cnn on line ...
 Defining \coffin_set_vertical_pole:cnn on line ...
 Defining \__coffin_set_pole:Nnx on line ...
+Defining \__coffin_update:N on line ...
+Defining \__coffin_gupdate:N on line ...
 Defining \__coffin_update_corners:N on line ...
+Defining \__coffin_gupdate_corners:N on line ...
+Defining \__coffin_update_corners:NNN on line ...
 Defining \__coffin_update_poles:N on line ...
+Defining \__coffin_gupdate_poles:N on line ...
+Defining \__coffin_update_poles:NNN on line ...
 Defining \__coffin_calculate_intersection:Nnn on line ...
 Defining \__coffin_calculate_intersection:nnnnnnnn on line ...
 Defining \__coffin_calculate_intersection_aux:nnnnnN on line ...
diff --git a/l3kernel/testfiles/m3expl001.ptex.tlg b/l3kernel/testfiles/m3expl001.ptex.tlg
index afae9db..e087e0a 100644
--- a/l3kernel/testfiles/m3expl001.ptex.tlg
+++ b/l3kernel/testfiles/m3expl001.ptex.tlg
@@ -5598,18 +5598,33 @@ Defining \__coffin_if_exist:NT on line ...
 Defining \__coffin_check_scope:NN on line ...
 Defining \coffin_clear:N on line ...
 Defining \coffin_clear:c on line ...
+Defining \coffin_gclear:N on line ...
+Defining \coffin_gclear:c on line ...
 Defining \coffin_new:N on line ...
 Defining \coffin_new:c on line ...
 Defining \hcoffin_set:Nn on line ...
 Defining \hcoffin_set:cn on line ...
+Defining \hcoffin_gset:Nn on line ...
+Defining \hcoffin_gset:cn on line ...
+Defining \__coffin_set_horizontal:NnNNN on line ...
 Defining \vcoffin_set:Nnn on line ...
 Defining \vcoffin_set:cnn on line ...
+Defining \vcoffin_gset:Nnn on line ...
+Variant \vcoffin_set:cnn already defined; not changing it on line ...
+Defining \__coffin_set_vertical:NnnNNN on line ...
 Defining \hcoffin_set:Nw on line ...
-Defining \hcoffin_set_end: on line ...
 Defining \hcoffin_set:cw on line ...
+Defining \hcoffin_gset:Nw on line ...
+Defining \hcoffin_gset:cw on line ...
+Defining \__coffin_set_horizontal:NNNNw on line ...
+Defining \hcoffin_set_end: on line ...
+Defining \hcoffin_gset_end: on line ...
 Defining \vcoffin_set:Nnw on line ...
-Defining \vcoffin_set_end: on line ...
+Defining \vcoffin_gset:Nnw on line ...
 Defining \vcoffin_set:cnw on line ...
+Defining \__coffin_set_vertical:NnNNNNNw on line ...
+Defining \vcoffin_set_end: on line ...
+Defining \vcoffin_gset_end: on line ...
 Defining \coffin_set_eq:NN on line ...
 Defining \coffin_set_eq:cN on line ...
 Defining \coffin_set_eq:Nc on line ...
@@ -5632,6 +5647,8 @@ Defining \coffin_wd:N on line ...
 Defining \coffin_wd:c on line ...
 Defining \__coffin_get_pole:NnN on line ...
 Defining \__coffin_reset_structure:N on line ...
+Defining \__coffin_greset_structure:N on line ...
+Defining \__coffin_reset_structure:NNN on line ...
 Defining \__coffin_set_eq_structure:NN on line ...
 Defining \__coffin_gset_eq_structure:NN on line ...
 Defining \coffin_set_horizontal_pole:Nnn on line ...
@@ -5640,8 +5657,14 @@ Defining \__coffin_set_pole:Nnn on line ...
 Defining \coffin_set_horizontal_pole:cnn on line ...
 Defining \coffin_set_vertical_pole:cnn on line ...
 Defining \__coffin_set_pole:Nnx on line ...
+Defining \__coffin_update:N on line ...
+Defining \__coffin_gupdate:N on line ...
 Defining \__coffin_update_corners:N on line ...
+Defining \__coffin_gupdate_corners:N on line ...
+Defining \__coffin_update_corners:NNN on line ...
 Defining \__coffin_update_poles:N on line ...
+Defining \__coffin_gupdate_poles:N on line ...
+Defining \__coffin_update_poles:NNN on line ...
 Defining \__coffin_calculate_intersection:Nnn on line ...
 Defining \__coffin_calculate_intersection:nnnnnnnn on line ...
 Defining \__coffin_calculate_intersection_aux:nnnnnN on line ...
diff --git a/l3kernel/testfiles/m3expl001.tlg b/l3kernel/testfiles/m3expl001.tlg
index 3764f74..b118f2a 100644
--- a/l3kernel/testfiles/m3expl001.tlg
+++ b/l3kernel/testfiles/m3expl001.tlg
@@ -5598,18 +5598,33 @@ Defining \__coffin_if_exist:NT on line ...
 Defining \__coffin_check_scope:NN on line ...
 Defining \coffin_clear:N on line ...
 Defining \coffin_clear:c on line ...
+Defining \coffin_gclear:N on line ...
+Defining \coffin_gclear:c on line ...
 Defining \coffin_new:N on line ...
 Defining \coffin_new:c on line ...
 Defining \hcoffin_set:Nn on line ...
 Defining \hcoffin_set:cn on line ...
+Defining \hcoffin_gset:Nn on line ...
+Defining \hcoffin_gset:cn on line ...
+Defining \__coffin_set_horizontal:NnNNN on line ...
 Defining \vcoffin_set:Nnn on line ...
 Defining \vcoffin_set:cnn on line ...
+Defining \vcoffin_gset:Nnn on line ...
+Variant \vcoffin_set:cnn already defined; not changing it on line ...
+Defining \__coffin_set_vertical:NnnNNN on line ...
 Defining \hcoffin_set:Nw on line ...
-Defining \hcoffin_set_end: on line ...
 Defining \hcoffin_set:cw on line ...
+Defining \hcoffin_gset:Nw on line ...
+Defining \hcoffin_gset:cw on line ...
+Defining \__coffin_set_horizontal:NNNNw on line ...
+Defining \hcoffin_set_end: on line ...
+Defining \hcoffin_gset_end: on line ...
 Defining \vcoffin_set:Nnw on line ...
-Defining \vcoffin_set_end: on line ...
+Defining \vcoffin_gset:Nnw on line ...
 Defining \vcoffin_set:cnw on line ...
+Defining \__coffin_set_vertical:NnNNNNNw on line ...
+Defining \vcoffin_set_end: on line ...
+Defining \vcoffin_gset_end: on line ...
 Defining \coffin_set_eq:NN on line ...
 Defining \coffin_set_eq:cN on line ...
 Defining \coffin_set_eq:Nc on line ...
@@ -5632,6 +5647,8 @@ Defining \coffin_wd:N on line ...
 Defining \coffin_wd:c on line ...
 Defining \__coffin_get_pole:NnN on line ...
 Defining \__coffin_reset_structure:N on line ...
+Defining \__coffin_greset_structure:N on line ...
+Defining \__coffin_reset_structure:NNN on line ...
 Defining \__coffin_set_eq_structure:NN on line ...
 Defining \__coffin_gset_eq_structure:NN on line ...
 Defining \coffin_set_horizontal_pole:Nnn on line ...
@@ -5640,8 +5657,14 @@ Defining \__coffin_set_pole:Nnn on line ...
 Defining \coffin_set_horizontal_pole:cnn on line ...
 Defining \coffin_set_vertical_pole:cnn on line ...
 Defining \__coffin_set_pole:Nnx on line ...
+Defining \__coffin_update:N on line ...
+Defining \__coffin_gupdate:N on line ...
 Defining \__coffin_update_corners:N on line ...
+Defining \__coffin_gupdate_corners:N on line ...
+Defining \__coffin_update_corners:NNN on line ...
 Defining \__coffin_update_poles:N on line ...
+Defining \__coffin_gupdate_poles:N on line ...
+Defining \__coffin_update_poles:NNN on line ...
 Defining \__coffin_calculate_intersection:Nnn on line ...
 Defining \__coffin_calculate_intersection:nnnnnnnn on line ...
 Defining \__coffin_calculate_intersection_aux:nnnnnN on line ...
diff --git a/l3kernel/testfiles/m3expl001.uptex.tlg b/l3kernel/testfiles/m3expl001.uptex.tlg
index 4140187..f1fcd17 100644
--- a/l3kernel/testfiles/m3expl001.uptex.tlg
+++ b/l3kernel/testfiles/m3expl001.uptex.tlg
@@ -5595,18 +5595,33 @@ Defining \__coffin_if_exist:NT on line ...
 Defining \__coffin_check_scope:NN on line ...
 Defining \coffin_clear:N on line ...
 Defining \coffin_clear:c on line ...
+Defining \coffin_gclear:N on line ...
+Defining \coffin_gclear:c on line ...
 Defining \coffin_new:N on line ...
 Defining \coffin_new:c on line ...
 Defining \hcoffin_set:Nn on line ...
 Defining \hcoffin_set:cn on line ...
+Defining \hcoffin_gset:Nn on line ...
+Defining \hcoffin_gset:cn on line ...
+Defining \__coffin_set_horizontal:NnNNN on line ...
 Defining \vcoffin_set:Nnn on line ...
 Defining \vcoffin_set:cnn on line ...
+Defining \vcoffin_gset:Nnn on line ...
+Variant \vcoffin_set:cnn already defined; not changing it on line ...
+Defining \__coffin_set_vertical:NnnNNN on line ...
 Defining \hcoffin_set:Nw on line ...
-Defining \hcoffin_set_end: on line ...
 Defining \hcoffin_set:cw on line ...
+Defining \hcoffin_gset:Nw on line ...
+Defining \hcoffin_gset:cw on line ...
+Defining \__coffin_set_horizontal:NNNNw on line ...
+Defining \hcoffin_set_end: on line ...
+Defining \hcoffin_gset_end: on line ...
 Defining \vcoffin_set:Nnw on line ...
-Defining \vcoffin_set_end: on line ...
+Defining \vcoffin_gset:Nnw on line ...
 Defining \vcoffin_set:cnw on line ...
+Defining \__coffin_set_vertical:NnNNNNNw on line ...
+Defining \vcoffin_set_end: on line ...
+Defining \vcoffin_gset_end: on line ...
 Defining \coffin_set_eq:NN on line ...
 Defining \coffin_set_eq:cN on line ...
 Defining \coffin_set_eq:Nc on line ...
@@ -5629,6 +5644,8 @@ Defining \coffin_wd:N on line ...
 Defining \coffin_wd:c on line ...
 Defining \__coffin_get_pole:NnN on line ...
 Defining \__coffin_reset_structure:N on line ...
+Defining \__coffin_greset_structure:N on line ...
+Defining \__coffin_reset_structure:NNN on line ...
 Defining \__coffin_set_eq_structure:NN on line ...
 Defining \__coffin_gset_eq_structure:NN on line ...
 Defining \coffin_set_horizontal_pole:Nnn on line ...
@@ -5637,8 +5654,14 @@ Defining \__coffin_set_pole:Nnn on line ...
 Defining \coffin_set_horizontal_pole:cnn on line ...
 Defining \coffin_set_vertical_pole:cnn on line ...
 Defining \__coffin_set_pole:Nnx on line ...
+Defining \__coffin_update:N on line ...
+Defining \__coffin_gupdate:N on line ...
 Defining \__coffin_update_corners:N on line ...
+Defining \__coffin_gupdate_corners:N on line ...
+Defining \__coffin_update_corners:NNN on line ...
 Defining \__coffin_update_poles:N on line ...
+Defining \__coffin_gupdate_poles:N on line ...
+Defining \__coffin_update_poles:NNN on line ...
 Defining \__coffin_calculate_intersection:Nnn on line ...
 Defining \__coffin_calculate_intersection:nnnnnnnn on line ...
 Defining \__coffin_calculate_intersection_aux:nnnnnN on line ...
diff --git a/l3kernel/testfiles/m3expl001.xetex.tlg b/l3kernel/testfiles/m3expl001.xetex.tlg
index 18f07f8..edab7f7 100644
--- a/l3kernel/testfiles/m3expl001.xetex.tlg
+++ b/l3kernel/testfiles/m3expl001.xetex.tlg
@@ -5313,18 +5313,33 @@ Defining \__coffin_if_exist:NT on line ...
 Defining \__coffin_check_scope:NN on line ...
 Defining \coffin_clear:N on line ...
 Defining \coffin_clear:c on line ...
+Defining \coffin_gclear:N on line ...
+Defining \coffin_gclear:c on line ...
 Defining \coffin_new:N on line ...
 Defining \coffin_new:c on line ...
 Defining \hcoffin_set:Nn on line ...
 Defining \hcoffin_set:cn on line ...
+Defining \hcoffin_gset:Nn on line ...
+Defining \hcoffin_gset:cn on line ...
+Defining \__coffin_set_horizontal:NnNNN on line ...
 Defining \vcoffin_set:Nnn on line ...
 Defining \vcoffin_set:cnn on line ...
+Defining \vcoffin_gset:Nnn on line ...
+Variant \vcoffin_set:cnn already defined; not changing it on line ...
+Defining \__coffin_set_vertical:NnnNNN on line ...
 Defining \hcoffin_set:Nw on line ...
-Defining \hcoffin_set_end: on line ...
 Defining \hcoffin_set:cw on line ...
+Defining \hcoffin_gset:Nw on line ...
+Defining \hcoffin_gset:cw on line ...
+Defining \__coffin_set_horizontal:NNNNw on line ...
+Defining \hcoffin_set_end: on line ...
+Defining \hcoffin_gset_end: on line ...
 Defining \vcoffin_set:Nnw on line ...
-Defining \vcoffin_set_end: on line ...
+Defining \vcoffin_gset:Nnw on line ...
 Defining \vcoffin_set:cnw on line ...
+Defining \__coffin_set_vertical:NnNNNNNw on line ...
+Defining \vcoffin_set_end: on line ...
+Defining \vcoffin_gset_end: on line ...
 Defining \coffin_set_eq:NN on line ...
 Defining \coffin_set_eq:cN on line ...
 Defining \coffin_set_eq:Nc on line ...
@@ -5347,6 +5362,8 @@ Defining \coffin_wd:N on line ...
 Defining \coffin_wd:c on line ...
 Defining \__coffin_get_pole:NnN on line ...
 Defining \__coffin_reset_structure:N on line ...
+Defining \__coffin_greset_structure:N on line ...
+Defining \__coffin_reset_structure:NNN on line ...
 Defining \__coffin_set_eq_structure:NN on line ...
 Defining \__coffin_gset_eq_structure:NN on line ...
 Defining \coffin_set_horizontal_pole:Nnn on line ...
@@ -5355,8 +5372,14 @@ Defining \__coffin_set_pole:Nnn on line ...
 Defining \coffin_set_horizontal_pole:cnn on line ...
 Defining \coffin_set_vertical_pole:cnn on line ...
 Defining \__coffin_set_pole:Nnx on line ...
+Defining \__coffin_update:N on line ...
+Defining \__coffin_gupdate:N on line ...
 Defining \__coffin_update_corners:N on line ...
+Defining \__coffin_gupdate_corners:N on line ...
+Defining \__coffin_update_corners:NNN on line ...
 Defining \__coffin_update_poles:N on line ...
+Defining \__coffin_gupdate_poles:N on line ...
+Defining \__coffin_update_poles:NNN on line ...
 Defining \__coffin_calculate_intersection:Nnn on line ...
 Defining \__coffin_calculate_intersection:nnnnnnnn on line ...
 Defining \__coffin_calculate_intersection_aux:nnnnnN on line ...
diff --git a/l3kernel/testfiles/m3expl003.luatex.tlg b/l3kernel/testfiles/m3expl003.luatex.tlg
index 00e99c0..bee2f44 100644
--- a/l3kernel/testfiles/m3expl003.luatex.tlg
+++ b/l3kernel/testfiles/m3expl003.luatex.tlg
@@ -5302,18 +5302,33 @@ Defining \__coffin_if_exist:NT on line ...
 Defining \__coffin_check_scope:NN on line ...
 Defining \coffin_clear:N on line ...
 Defining \coffin_clear:c on line ...
+Defining \coffin_gclear:N on line ...
+Defining \coffin_gclear:c on line ...
 Defining \coffin_new:N on line ...
 Defining \coffin_new:c on line ...
 Defining \hcoffin_set:Nn on line ...
 Defining \hcoffin_set:cn on line ...
+Defining \hcoffin_gset:Nn on line ...
+Defining \hcoffin_gset:cn on line ...
+Defining \__coffin_set_horizontal:NnNNN on line ...
 Defining \vcoffin_set:Nnn on line ...
 Defining \vcoffin_set:cnn on line ...
+Defining \vcoffin_gset:Nnn on line ...
+Variant \vcoffin_set:cnn already defined; not changing it on line ...
+Defining \__coffin_set_vertical:NnnNNN on line ...
 Defining \hcoffin_set:Nw on line ...
-Defining \hcoffin_set_end: on line ...
 Defining \hcoffin_set:cw on line ...
+Defining \hcoffin_gset:Nw on line ...
+Defining \hcoffin_gset:cw on line ...
+Defining \__coffin_set_horizontal:NNNNw on line ...
+Defining \hcoffin_set_end: on line ...
+Defining \hcoffin_gset_end: on line ...
 Defining \vcoffin_set:Nnw on line ...
-Defining \vcoffin_set_end: on line ...
+Defining \vcoffin_gset:Nnw on line ...
 Defining \vcoffin_set:cnw on line ...
+Defining \__coffin_set_vertical:NnNNNNNw on line ...
+Defining \vcoffin_set_end: on line ...
+Defining \vcoffin_gset_end: on line ...
 Defining \coffin_set_eq:NN on line ...
 Defining \coffin_set_eq:cN on line ...
 Defining \coffin_set_eq:Nc on line ...
@@ -5336,6 +5351,8 @@ Defining \coffin_wd:N on line ...
 Defining \coffin_wd:c on line ...
 Defining \__coffin_get_pole:NnN on line ...
 Defining \__coffin_reset_structure:N on line ...
+Defining \__coffin_greset_structure:N on line ...
+Defining \__coffin_reset_structure:NNN on line ...
 Defining \__coffin_set_eq_structure:NN on line ...
 Defining \__coffin_gset_eq_structure:NN on line ...
 Defining \coffin_set_horizontal_pole:Nnn on line ...
@@ -5344,8 +5361,14 @@ Defining \__coffin_set_pole:Nnn on line ...
 Defining \coffin_set_horizontal_pole:cnn on line ...
 Defining \coffin_set_vertical_pole:cnn on line ...
 Defining \__coffin_set_pole:Nnx on line ...
+Defining \__coffin_update:N on line ...
+Defining \__coffin_gupdate:N on line ...
 Defining \__coffin_update_corners:N on line ...
+Defining \__coffin_gupdate_corners:N on line ...
+Defining \__coffin_update_corners:NNN on line ...
 Defining \__coffin_update_poles:N on line ...
+Defining \__coffin_gupdate_poles:N on line ...
+Defining \__coffin_update_poles:NNN on line ...
 Defining \__coffin_calculate_intersection:Nnn on line ...
 Defining \__coffin_calculate_intersection:nnnnnnnn on line ...
 Defining \__coffin_calculate_intersection_aux:nnnnnN on line ...
diff --git a/l3kernel/testfiles/m3expl003.ptex.tlg b/l3kernel/testfiles/m3expl003.ptex.tlg
index afae9db..e087e0a 100644
--- a/l3kernel/testfiles/m3expl003.ptex.tlg
+++ b/l3kernel/testfiles/m3expl003.ptex.tlg
@@ -5598,18 +5598,33 @@ Defining \__coffin_if_exist:NT on line ...
 Defining \__coffin_check_scope:NN on line ...
 Defining \coffin_clear:N on line ...
 Defining \coffin_clear:c on line ...
+Defining \coffin_gclear:N on line ...
+Defining \coffin_gclear:c on line ...
 Defining \coffin_new:N on line ...
 Defining \coffin_new:c on line ...
 Defining \hcoffin_set:Nn on line ...
 Defining \hcoffin_set:cn on line ...
+Defining \hcoffin_gset:Nn on line ...
+Defining \hcoffin_gset:cn on line ...
+Defining \__coffin_set_horizontal:NnNNN on line ...
 Defining \vcoffin_set:Nnn on line ...
 Defining \vcoffin_set:cnn on line ...
+Defining \vcoffin_gset:Nnn on line ...
+Variant \vcoffin_set:cnn already defined; not changing it on line ...
+Defining \__coffin_set_vertical:NnnNNN on line ...
 Defining \hcoffin_set:Nw on line ...
-Defining \hcoffin_set_end: on line ...
 Defining \hcoffin_set:cw on line ...
+Defining \hcoffin_gset:Nw on line ...
+Defining \hcoffin_gset:cw on line ...
+Defining \__coffin_set_horizontal:NNNNw on line ...
+Defining \hcoffin_set_end: on line ...
+Defining \hcoffin_gset_end: on line ...
 Defining \vcoffin_set:Nnw on line ...
-Defining \vcoffin_set_end: on line ...
+Defining \vcoffin_gset:Nnw on line ...
 Defining \vcoffin_set:cnw on line ...
+Defining \__coffin_set_vertical:NnNNNNNw on line ...
+Defining \vcoffin_set_end: on line ...
+Defining \vcoffin_gset_end: on line ...
 Defining \coffin_set_eq:NN on line ...
 Defining \coffin_set_eq:cN on line ...
 Defining \coffin_set_eq:Nc on line ...
@@ -5632,6 +5647,8 @@ Defining \coffin_wd:N on line ...
 Defining \coffin_wd:c on line ...
 Defining \__coffin_get_pole:NnN on line ...
 Defining \__coffin_reset_structure:N on line ...
+Defining \__coffin_greset_structure:N on line ...
+Defining \__coffin_reset_structure:NNN on line ...
 Defining \__coffin_set_eq_structure:NN on line ...
 Defining \__coffin_gset_eq_structure:NN on line ...
 Defining \coffin_set_horizontal_pole:Nnn on line ...
@@ -5640,8 +5657,14 @@ Defining \__coffin_set_pole:Nnn on line ...
 Defining \coffin_set_horizontal_pole:cnn on line ...
 Defining \coffin_set_vertical_pole:cnn on line ...
 Defining \__coffin_set_pole:Nnx on line ...
+Defining \__coffin_update:N on line ...
+Defining \__coffin_gupdate:N on line ...
 Defining \__coffin_update_corners:N on line ...
+Defining \__coffin_gupdate_corners:N on line ...
+Defining \__coffin_update_corners:NNN on line ...
 Defining \__coffin_update_poles:N on line ...
+Defining \__coffin_gupdate_poles:N on line ...
+Defining \__coffin_update_poles:NNN on line ...
 Defining \__coffin_calculate_intersection:Nnn on line ...
 Defining \__coffin_calculate_intersection:nnnnnnnn on line ...
 Defining \__coffin_calculate_intersection_aux:nnnnnN on line ...
diff --git a/l3kernel/testfiles/m3expl003.tlg b/l3kernel/testfiles/m3expl003.tlg
index 3764f74..b118f2a 100644
--- a/l3kernel/testfiles/m3expl003.tlg
+++ b/l3kernel/testfiles/m3expl003.tlg
@@ -5598,18 +5598,33 @@ Defining \__coffin_if_exist:NT on line ...
 Defining \__coffin_check_scope:NN on line ...
 Defining \coffin_clear:N on line ...
 Defining \coffin_clear:c on line ...
+Defining \coffin_gclear:N on line ...
+Defining \coffin_gclear:c on line ...
 Defining \coffin_new:N on line ...
 Defining \coffin_new:c on line ...
 Defining \hcoffin_set:Nn on line ...
 Defining \hcoffin_set:cn on line ...
+Defining \hcoffin_gset:Nn on line ...
+Defining \hcoffin_gset:cn on line ...
+Defining \__coffin_set_horizontal:NnNNN on line ...
 Defining \vcoffin_set:Nnn on line ...
 Defining \vcoffin_set:cnn on line ...
+Defining \vcoffin_gset:Nnn on line ...
+Variant \vcoffin_set:cnn already defined; not changing it on line ...
+Defining \__coffin_set_vertical:NnnNNN on line ...
 Defining \hcoffin_set:Nw on line ...
-Defining \hcoffin_set_end: on line ...
 Defining \hcoffin_set:cw on line ...
+Defining \hcoffin_gset:Nw on line ...
+Defining \hcoffin_gset:cw on line ...
+Defining \__coffin_set_horizontal:NNNNw on line ...
+Defining \hcoffin_set_end: on line ...
+Defining \hcoffin_gset_end: on line ...
 Defining \vcoffin_set:Nnw on line ...
-Defining \vcoffin_set_end: on line ...
+Defining \vcoffin_gset:Nnw on line ...
 Defining \vcoffin_set:cnw on line ...
+Defining \__coffin_set_vertical:NnNNNNNw on line ...
+Defining \vcoffin_set_end: on line ...
+Defining \vcoffin_gset_end: on line ...
 Defining \coffin_set_eq:NN on line ...
 Defining \coffin_set_eq:cN on line ...
 Defining \coffin_set_eq:Nc on line ...
@@ -5632,6 +5647,8 @@ Defining \coffin_wd:N on line ...
 Defining \coffin_wd:c on line ...
 Defining \__coffin_get_pole:NnN on line ...
 Defining \__coffin_reset_structure:N on line ...
+Defining \__coffin_greset_structure:N on line ...
+Defining \__coffin_reset_structure:NNN on line ...
 Defining \__coffin_set_eq_structure:NN on line ...
 Defining \__coffin_gset_eq_structure:NN on line ...
 Defining \coffin_set_horizontal_pole:Nnn on line ...
@@ -5640,8 +5657,14 @@ Defining \__coffin_set_pole:Nnn on line ...
 Defining \coffin_set_horizontal_pole:cnn on line ...
 Defining \coffin_set_vertical_pole:cnn on line ...
 Defining \__coffin_set_pole:Nnx on line ...
+Defining \__coffin_update:N on line ...
+Defining \__coffin_gupdate:N on line ...
 Defining \__coffin_update_corners:N on line ...
+Defining \__coffin_gupdate_corners:N on line ...
+Defining \__coffin_update_corners:NNN on line ...
 Defining \__coffin_update_poles:N on line ...
+Defining \__coffin_gupdate_poles:N on line ...
+Defining \__coffin_update_poles:NNN on line ...
 Defining \__coffin_calculate_intersection:Nnn on line ...
 Defining \__coffin_calculate_intersection:nnnnnnnn on line ...
 Defining \__coffin_calculate_intersection_aux:nnnnnN on line ...
diff --git a/l3kernel/testfiles/m3expl003.uptex.tlg b/l3kernel/testfiles/m3expl003.uptex.tlg
index 4140187..f1fcd17 100644
--- a/l3kernel/testfiles/m3expl003.uptex.tlg
+++ b/l3kernel/testfiles/m3expl003.uptex.tlg
@@ -5595,18 +5595,33 @@ Defining \__coffin_if_exist:NT on line ...
 Defining \__coffin_check_scope:NN on line ...
 Defining \coffin_clear:N on line ...
 Defining \coffin_clear:c on line ...
+Defining \coffin_gclear:N on line ...
+Defining \coffin_gclear:c on line ...
 Defining \coffin_new:N on line ...
 Defining \coffin_new:c on line ...
 Defining \hcoffin_set:Nn on line ...
 Defining \hcoffin_set:cn on line ...
+Defining \hcoffin_gset:Nn on line ...
+Defining \hcoffin_gset:cn on line ...
+Defining \__coffin_set_horizontal:NnNNN on line ...
 Defining \vcoffin_set:Nnn on line ...
 Defining \vcoffin_set:cnn on line ...
+Defining \vcoffin_gset:Nnn on line ...
+Variant \vcoffin_set:cnn already defined; not changing it on line ...
+Defining \__coffin_set_vertical:NnnNNN on line ...
 Defining \hcoffin_set:Nw on line ...
-Defining \hcoffin_set_end: on line ...
 Defining \hcoffin_set:cw on line ...
+Defining \hcoffin_gset:Nw on line ...
+Defining \hcoffin_gset:cw on line ...
+Defining \__coffin_set_horizontal:NNNNw on line ...
+Defining \hcoffin_set_end: on line ...
+Defining \hcoffin_gset_end: on line ...
 Defining \vcoffin_set:Nnw on line ...
-Defining \vcoffin_set_end: on line ...
+Defining \vcoffin_gset:Nnw on line ...
 Defining \vcoffin_set:cnw on line ...
+Defining \__coffin_set_vertical:NnNNNNNw on line ...
+Defining \vcoffin_set_end: on line ...
+Defining \vcoffin_gset_end: on line ...
 Defining \coffin_set_eq:NN on line ...
 Defining \coffin_set_eq:cN on line ...
 Defining \coffin_set_eq:Nc on line ...
@@ -5629,6 +5644,8 @@ Defining \coffin_wd:N on line ...
 Defining \coffin_wd:c on line ...
 Defining \__coffin_get_pole:NnN on line ...
 Defining \__coffin_reset_structure:N on line ...
+Defining \__coffin_greset_structure:N on line ...
+Defining \__coffin_reset_structure:NNN on line ...
 Defining \__coffin_set_eq_structure:NN on line ...
 Defining \__coffin_gset_eq_structure:NN on line ...
 Defining \coffin_set_horizontal_pole:Nnn on line ...
@@ -5637,8 +5654,14 @@ Defining \__coffin_set_pole:Nnn on line ...
 Defining \coffin_set_horizontal_pole:cnn on line ...
 Defining \coffin_set_vertical_pole:cnn on line ...
 Defining \__coffin_set_pole:Nnx on line ...
+Defining \__coffin_update:N on line ...
+Defining \__coffin_gupdate:N on line ...
 Defining \__coffin_update_corners:N on line ...
+Defining \__coffin_gupdate_corners:N on line ...
+Defining \__coffin_update_corners:NNN on line ...
 Defining \__coffin_update_poles:N on line ...
+Defining \__coffin_gupdate_poles:N on line ...
+Defining \__coffin_update_poles:NNN on line ...
 Defining \__coffin_calculate_intersection:Nnn on line ...
 Defining \__coffin_calculate_intersection:nnnnnnnn on line ...
 Defining \__coffin_calculate_intersection_aux:nnnnnN on line ...
diff --git a/l3kernel/testfiles/m3expl003.xetex.tlg b/l3kernel/testfiles/m3expl003.xetex.tlg
index 18f07f8..edab7f7 100644
--- a/l3kernel/testfiles/m3expl003.xetex.tlg
+++ b/l3kernel/testfiles/m3expl003.xetex.tlg
@@ -5313,18 +5313,33 @@ Defining \__coffin_if_exist:NT on line ...
 Defining \__coffin_check_scope:NN on line ...
 Defining \coffin_clear:N on line ...
 Defining \coffin_clear:c on line ...
+Defining \coffin_gclear:N on line ...
+Defining \coffin_gclear:c on line ...
 Defining \coffin_new:N on line ...
 Defining \coffin_new:c on line ...
 Defining \hcoffin_set:Nn on line ...
 Defining \hcoffin_set:cn on line ...
+Defining \hcoffin_gset:Nn on line ...
+Defining \hcoffin_gset:cn on line ...
+Defining \__coffin_set_horizontal:NnNNN on line ...
 Defining \vcoffin_set:Nnn on line ...
 Defining \vcoffin_set:cnn on line ...
+Defining \vcoffin_gset:Nnn on line ...
+Variant \vcoffin_set:cnn already defined; not changing it on line ...
+Defining \__coffin_set_vertical:NnnNNN on line ...
 Defining \hcoffin_set:Nw on line ...
-Defining \hcoffin_set_end: on line ...
 Defining \hcoffin_set:cw on line ...
+Defining \hcoffin_gset:Nw on line ...
+Defining \hcoffin_gset:cw on line ...
+Defining \__coffin_set_horizontal:NNNNw on line ...
+Defining \hcoffin_set_end: on line ...
+Defining \hcoffin_gset_end: on line ...
 Defining \vcoffin_set:Nnw on line ...
-Defining \vcoffin_set_end: on line ...
+Defining \vcoffin_gset:Nnw on line ...
 Defining \vcoffin_set:cnw on line ...
+Defining \__coffin_set_vertical:NnNNNNNw on line ...
+Defining \vcoffin_set_end: on line ...
+Defining \vcoffin_gset_end: on line ...
 Defining \coffin_set_eq:NN on line ...
 Defining \coffin_set_eq:cN on line ...
 Defining \coffin_set_eq:Nc on line ...
@@ -5347,6 +5362,8 @@ Defining \coffin_wd:N on line ...
 Defining \coffin_wd:c on line ...
 Defining \__coffin_get_pole:NnN on line ...
 Defining \__coffin_reset_structure:N on line ...
+Defining \__coffin_greset_structure:N on line ...
+Defining \__coffin_reset_structure:NNN on line ...
 Defining \__coffin_set_eq_structure:NN on line ...
 Defining \__coffin_gset_eq_structure:NN on line ...
 Defining \coffin_set_horizontal_pole:Nnn on line ...
@@ -5355,8 +5372,14 @@ Defining \__coffin_set_pole:Nnn on line ...
 Defining \coffin_set_horizontal_pole:cnn on line ...
 Defining \coffin_set_vertical_pole:cnn on line ...
 Defining \__coffin_set_pole:Nnx on line ...
+Defining \__coffin_update:N on line ...
+Defining \__coffin_gupdate:N on line ...
 Defining \__coffin_update_corners:N on line ...
+Defining \__coffin_gupdate_corners:N on line ...
+Defining \__coffin_update_corners:NNN on line ...
 Defining \__coffin_update_poles:N on line ...
+Defining \__coffin_gupdate_poles:N on line ...
+Defining \__coffin_update_poles:NNN on line ...
 Defining \__coffin_calculate_intersection:Nnn on line ...
 Defining \__coffin_calculate_intersection:nnnnnnnn on line ...
 Defining \__coffin_calculate_intersection_aux:nnnnnN on line ...





More information about the latex3-commits mailing list