[latex3-commits] [git/LaTeX3-latex3-latex3] master: Only decompose CTM for (x)dvipdfmx (97d40b5)

Joseph Wright joseph.wright at morningstar2.co.uk
Sun Mar 4 21:43:45 CET 2018


Repository : https://github.com/latex3/latex3
On branch  : master
Link       : https://github.com/latex3/latex3/commit/97d40b55a9ca6c70a4ac82947197d4a7db3f1e84

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

commit 97d40b55a9ca6c70a4ac82947197d4a7db3f1e84
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date:   Sun Mar 4 20:40:51 2018 +0000

    Only decompose CTM for (x)dvipdfmx
    
    The approach doesn't really offer anything for dvips:
    rotation/scaling there is still raw PostScript.


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

97d40b55a9ca6c70a4ac82947197d4a7db3f1e84
 l3kernel/l3drivers.dtx                  |  253 ++++++++++++++-----------------
 l3kernel/testfiles/m3expl001.luatex.tlg |    4 -
 l3kernel/testfiles/m3expl001.ptex.tlg   |    2 +-
 l3kernel/testfiles/m3expl001.tlg        |    4 -
 l3kernel/testfiles/m3expl001.uptex.tlg  |    2 +-
 l3kernel/testfiles/m3expl001.xetex.tlg  |    2 +-
 l3kernel/testfiles/m3expl003.luatex.tlg |    4 -
 l3kernel/testfiles/m3expl003.ptex.tlg   |    2 +-
 l3kernel/testfiles/m3expl003.tlg        |    4 -
 l3kernel/testfiles/m3expl003.uptex.tlg  |    2 +-
 l3kernel/testfiles/m3expl003.xetex.tlg  |    2 +-
 11 files changed, 117 insertions(+), 164 deletions(-)

diff --git a/l3kernel/l3drivers.dtx b/l3kernel/l3drivers.dtx
index dd3ae88..9a6d7a5 100644
--- a/l3kernel/l3drivers.dtx
+++ b/l3kernel/l3drivers.dtx
@@ -1162,43 +1162,16 @@
 % \end{macro}
 %
 % \begin{macro}{\driver_draw_cm:nnnn}
-% \begin{macro}{\@@_draw_cm:nnnn}
 %   In \texttt{dvips}, keeping the transformations in line with the engine
-%   requires that we use rotations and scalings. This is done by decomposing
-%   the matrix: see the comments for \cs{@@_draw_cm_decompose:nnnnN} (which
-%   is also needed by \texttt{(x)dvipdfmx}).
+%   is unfortunately not possible for scaling and rotations: even if we
+%   decompose the matrix into those operations, there is still no driver
+%   tracking (\emph{cf.}~\texttt{(x)dvipdfmx}). Thus we take the shortest
+%   path available and simply dump the matrix as given.
 %    \begin{macrocode}
 \cs_new_protected:Npn \driver_draw_cm:nnnn #1#2#3#4
-  {
-    \@@_draw_cm_decompose:nnnnN {#1} {#2} {#3} {#4}
-      \@@_draw_cm:nnnn
-  }
-\cs_new_protected:Npn \@@_draw_cm:nnnn #1#2#3#4
-  {
-    \@@_draw_literal:n
-      {
-        \fp_compare:nNnTF {#1} = \c_zero_fp
-          { 0 }
-          { \fp_eval:n { round ( -#1, 5 ) } } ~
-          rotate
-      }
-    \@@_draw_literal:n
-      {
-        \fp_eval:n { round ( #2 , 5 ) } ~
-        \fp_eval:n { round ( #3 , 5 ) } ~
-        scale
-      }
-    \@@_draw_literal:n
-      {
-        \fp_compare:nNnTF {#4} = \c_zero_fp
-          { 0 }
-          { \fp_eval:n { round ( -#4 , 5 ) } } ~
-          rotate
-      }
-  }
+  { \@@_draw_literal:n { [#1 ~ #2 ~ #3 ~ #4 ~ 0 ~ 0 ] ~ concat } }
 %    \end{macrocode}
 % \end{macro}
-% \end{macro}
 %
 % \begin{macro}{\driver_draw_box_use:Nnnnn}
 %   Inside a picture |@beginspecial|/|@endspecial| are active, which is
@@ -2071,9 +2044,9 @@
 % \begin{macro}{\@@_draw_cm:nnnn}
 %   Another split here between \texttt{pdfmode} and \texttt{(x)dvipdfmx}.
 %   In the former, we have a direct method to maintain alignment: the driver
-%   can use a matrix itself. For \texttt{(x)dvipdfmx}, as for \texttt{dvips},
-%   we need to decompose the matrix into rotations and a scaling, then use
-%   that.
+%   can use a matrix itself. For \texttt{(x)dvipdfmx} we can to decompose the
+%   matrix into rotations and a scaling, then use those operations as they
+%   are handled by the driver..
 %    \begin{macrocode}
 \cs_new_protected:Npn \driver_draw_cm:nnnn #1#2#3#4
   {
@@ -2114,6 +2087,109 @@
 % \end{macro}
 % \end{macro}
 %
+% \begin{macro}{\@@_draw_cm_decompose:nnnnN}
+% \begin{macro}
+%   {
+%     \@@_draw_cm_decompose_auxi:nnnnN,
+%     \@@_draw_cm_decompose_auxii:nnnnN,
+%     \@@_draw_cm_decompose_auxiii:nnnnN,
+%   }
+%   Internally, transformations for drawing are tracked as a matrix. Not all
+%   engines provide a way of dealing with this: if we use a raw matrix, the
+%   engine looses track of positions (for example for hyperlinks), and this is
+%   not desirable. They do, however, allow us to track rotations and scalings.
+%   Luckily, we can decompose any (two-dimensional) matrix into two rotations
+%   and a single scaling:
+%   \[
+%     \begin{bmatrix}
+%         A & B \\ C & D
+%     \end{bmatrix}
+%     =
+%     \begin{bmatrix}
+%       \cos\beta & \sin\beta \\ -\sin\beta & \cos\beta
+%     \end{bmatrix}
+%     \begin{bmatrix}
+%       w_{1} & 0 \\ 0 & w_{2}
+%     \end{bmatrix}
+%     \begin{bmatrix}
+%       \cos\gamma & \sin\gamma \\ -\sin\gamma & \cos\gamma
+%     \end{bmatrix} 
+%   \]
+%   The parent matrix can be converted to
+%   \[
+%     \begin{bmatrix}
+%       A & B \\ C & D
+%     \end{bmatrix}
+%      =
+%     \begin{bmatrix}
+%       E & H \\-H & E
+%     \end{bmatrix}
+%     +
+%     \begin{bmatrix}
+%       F & G \\ G & -F
+%     \end{bmatrix}
+%   \]
+%   From these, we can find that
+%   \begin{align*}
+%     \frac{w_{1} + w_{2}}{2} &= \sqrt{E^{2} + H^{2}} \\
+%     \frac{w_{1} - w_{2}}{2} &= \sqrt{F^{2} + G^{2}} \\
+%     \gamma - \beta &= \tan^{-1}(G/F) \\
+%     \gamma + \beta &= \tan^{-1}(H/E)
+%   \end{align*}
+%   at which point we just have to do various pieces of re-arrangement to
+%   get all of the values. (See J.~Blinn, \emph{IEEE Comput.\ Graph.\ Appl.},
+%   1996, \textbf{16}, 82--88.) There is one wrinkle: the PostScript (and PDF)
+%   way of specifying a transformation matrix exchanges where one would
+%   normally expect $B$ and $C$ to be.
+%    \begin{macrocode}
+%<*dvipdfmx|xdvipdfmx>
+\cs_new_protected:Npn \@@_draw_cm_decompose:nnnnN #1#2#3#4#5
+  {
+    \use:x
+      {
+        \@@_draw_cm_decompose_auxi:nnnnN
+          { \fp_eval:n { (#1 + #4) / 2 } }
+          { \fp_eval:n { (#1 - #4) / 2 } }
+          { \fp_eval:n { (#3 + #2) / 2 } }
+          { \fp_eval:n { (#3 - #2) / 2 } }
+      }
+        #5
+  }
+\cs_new_protected:Npn \@@_draw_cm_decompose_auxi:nnnnN #1#2#3#4#5
+  {
+    \use:x
+      {
+        \@@_draw_cm_decompose_auxii:nnnnN
+          { \fp_eval:n { 2 * sqrt ( #1 * #1 + #4 * #4 ) } }
+          { \fp_eval:n { 2 * sqrt ( #2 * #2 + #3 * #3 ) } }
+          { \fp_eval:n { atand ( #3 , #2 ) } }
+          { \fp_eval:n { atand ( #4 , #1 ) } }
+      }
+         #5
+  }
+\cs_new_protected:Npn \@@_draw_cm_decompose_auxii:nnnnN #1#2#3#4#5
+  {
+    \use:x
+      {
+        \@@_draw_cm_decompose_auxiii:nnnnN
+          { \fp_eval:n { ( #4 - #3 ) / 2 } }
+          { \fp_eval:n { ( #1 + #2 ) / 2 } }
+          { \fp_eval:n { ( #1 - #2 ) / 2 } }
+          { \fp_eval:n { ( #4 + #3 ) / 2 } }
+      }
+        #5
+  }
+\cs_new_protected:Npn \@@_draw_cm_decompose_auxiii:nnnnN #1#2#3#4#5
+  {
+    \fp_compare:nNnTF { abs( #2 ) } > { abs ( #3 ) }
+      { #5 {#1} {#2} {#3} {#4} }
+      { #5 {#1} {#3} {#2} {#4} }
+  }
+%</dvipdfmx|xdvipdfmx>
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
 % \begin{macro}{\driver_draw_box_use:Nnnnn}
 %   Inserting a \TeX{} box transformed to the requested position and using
 %   the current matrix is done using a mixture of \TeX{} and low-level
@@ -2757,113 +2833,6 @@
 %</dvisvgm>
 %    \end{macrocode}
 %
-% \subsection{Support code for drawing}
-%
-% A small number of functions are needed by different parts of the drawing code
-% in a way that doesn't follow the general split. This material is collected up
-% here.
-%
-% \begin{macro}{\@@_draw_cm_decompose:nnnnN}
-% \begin{macro}
-%   {
-%     \@@_draw_cm_decompose_auxi:nnnnN,
-%     \@@_draw_cm_decompose_auxii:nnnnN,
-%     \@@_draw_cm_decompose_auxiii:nnnnN,
-%   }
-%   Internally, transformations for drawing are tracked as a matrix. Not all
-%   engines provide a way of dealing with this: if we use a raw matrix, the
-%   engine looses track of positions (for example for hyperlinks), and this is
-%   not desirable. They do, however, allow us to track rotations and scalings.
-%   Luckily, we can decompose any (two-dimensional) matrix into two rotations
-%   and a single scaling:
-%   \[
-%     \begin{bmatrix}
-%         A & B \\ C & D
-%     \end{bmatrix}
-%     =
-%     \begin{bmatrix}
-%       \cos\beta & \sin\beta \\ -\sin\beta & \cos\beta
-%     \end{bmatrix}
-%     \begin{bmatrix}
-%       w_{1} & 0 \\ 0 & w_{2}
-%     \end{bmatrix}
-%     \begin{bmatrix}
-%       \cos\gamma & \sin\gamma \\ -\sin\gamma & \cos\gamma
-%     \end{bmatrix} 
-%   \]
-%   The parent matrix can be converted to
-%   \[
-%     \begin{bmatrix}
-%       A & B \\ C & D
-%     \end{bmatrix}
-%      =
-%     \begin{bmatrix}
-%       E & H \\-H & E
-%     \end{bmatrix}
-%     +
-%     \begin{bmatrix}
-%       F & G \\ G & -F
-%     \end{bmatrix}
-%   \]
-%   From these, we can find that
-%   \begin{align*}
-%     \frac{w_{1} + w_{2}}{2} &= \sqrt{E^{2} + H^{2}} \\
-%     \frac{w_{1} - w_{2}}{2} &= \sqrt{F^{2} + G^{2}} \\
-%     \gamma - \beta &= \tan^{-1}(G/F) \\
-%     \gamma + \beta &= \tan^{-1}(H/E)
-%   \end{align*}
-%   at which point we just have to do various pieces of re-arrangement to
-%   get all of the values. (See J.~Blinn, \emph{IEEE Comput.\ Graph.\ Appl.},
-%   1996, \textbf{16}, 82--88.) There is one wrinkle: the PostScript (and PDF)
-%   way of specifying a transformation matrix exchanges where one would
-%   normally expect $B$ and $C$ to be.
-%    \begin{macrocode}
-\cs_new_protected:Npn \@@_draw_cm_decompose:nnnnN #1#2#3#4#5
-  {
-    \use:x
-      {
-        \@@_draw_cm_decompose_auxi:nnnnN
-          { \fp_eval:n { (#1 + #4) / 2 } }
-          { \fp_eval:n { (#1 - #4) / 2 } }
-          { \fp_eval:n { (#3 + #2) / 2 } }
-          { \fp_eval:n { (#3 - #2) / 2 } }
-      }
-        #5
-  }
-\cs_new_protected:Npn \@@_draw_cm_decompose_auxi:nnnnN #1#2#3#4#5
-  {
-    \use:x
-      {
-        \@@_draw_cm_decompose_auxii:nnnnN
-          { \fp_eval:n { 2 * sqrt ( #1 * #1 + #4 * #4 ) } }
-          { \fp_eval:n { 2 * sqrt ( #2 * #2 + #3 * #3 ) } }
-          { \fp_eval:n { atand ( #3 , #2 ) } }
-          { \fp_eval:n { atand ( #4 , #1 ) } }
-      }
-         #5
-  }
-\cs_new_protected:Npn \@@_draw_cm_decompose_auxii:nnnnN #1#2#3#4#5
-  {
-    \use:x
-      {
-        \@@_draw_cm_decompose_auxiii:nnnnN
-          { \fp_eval:n { ( #4 - #3 ) / 2 } }
-          { \fp_eval:n { ( #1 + #2 ) / 2 } }
-          { \fp_eval:n { ( #1 - #2 ) / 2 } }
-          { \fp_eval:n { ( #4 + #3 ) / 2 } }
-      }
-        #5
-  }
-\cs_new_protected:Npn \@@_draw_cm_decompose_auxiii:nnnnN #1#2#3#4#5
-  {
-    \fp_compare:nNnTF { abs( #2 ) } > { abs ( #3 ) }
-      { #5 {#1} {#2} {#3} {#4} }
-      { #5 {#1} {#3} {#2} {#4} }
-  }
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
 %    \begin{macrocode}
 %</initex|package>
 %    \end{macrocode}
diff --git a/l3kernel/testfiles/m3expl001.luatex.tlg b/l3kernel/testfiles/m3expl001.luatex.tlg
index 343cba0..3a653d0 100644
--- a/l3kernel/testfiles/m3expl001.luatex.tlg
+++ b/l3kernel/testfiles/m3expl001.luatex.tlg
@@ -5977,10 +5977,6 @@ Defining \driver_draw_color_stroke_rgb:nnn on line ..
 Defining \__driver_color_fill_select:n on line ...
 Defining \driver_draw_cm:nnnn on line ...
 Defining \driver_draw_box_use:Nnnnn on line ...
-Defining \__driver_draw_cm_decompose:nnnnN on line ...
-Defining \__driver_draw_cm_decompose_auxi:nnnnN on line ...
-Defining \__driver_draw_cm_decompose_auxii:nnnnN on line ...
-Defining \__driver_draw_cm_decompose_auxiii:nnnnN on line ...
 )
 Defining \__expl_status_pop:w on line ...
 Defining \l__expl_status_stack_tl on line ...
diff --git a/l3kernel/testfiles/m3expl001.ptex.tlg b/l3kernel/testfiles/m3expl001.ptex.tlg
index cd7c2ef..2d95bdb 100644
--- a/l3kernel/testfiles/m3expl001.ptex.tlg
+++ b/l3kernel/testfiles/m3expl001.ptex.tlg
@@ -5968,11 +5968,11 @@ Defining \driver_draw_color_stroke_rgb:nnn on line ..
 Defining \__driver_color_fill_select:n on line ...
 Defining \driver_draw_cm:nnnn on line ...
 Defining \__driver_draw_cm:nnnn on line ...
-Defining \driver_draw_box_use:Nnnnn on line ...
 Defining \__driver_draw_cm_decompose:nnnnN on line ...
 Defining \__driver_draw_cm_decompose_auxi:nnnnN on line ...
 Defining \__driver_draw_cm_decompose_auxii:nnnnN on line ...
 Defining \__driver_draw_cm_decompose_auxiii:nnnnN on line ...
+Defining \driver_draw_box_use:Nnnnn on line ...
 )
 Defining \__expl_status_pop:w on line ...
 Defining \l__expl_status_stack_tl on line ...
diff --git a/l3kernel/testfiles/m3expl001.tlg b/l3kernel/testfiles/m3expl001.tlg
index 2891870..5aae4a6 100644
--- a/l3kernel/testfiles/m3expl001.tlg
+++ b/l3kernel/testfiles/m3expl001.tlg
@@ -6169,10 +6169,6 @@ Defining \driver_draw_color_stroke_rgb:nnn on line ..
 Defining \__driver_color_fill_select:n on line ...
 Defining \driver_draw_cm:nnnn on line ...
 Defining \driver_draw_box_use:Nnnnn on line ...
-Defining \__driver_draw_cm_decompose:nnnnN on line ...
-Defining \__driver_draw_cm_decompose_auxi:nnnnN on line ...
-Defining \__driver_draw_cm_decompose_auxii:nnnnN on line ...
-Defining \__driver_draw_cm_decompose_auxiii:nnnnN on line ...
 )
 Defining \__expl_status_pop:w on line ...
 Defining \l__expl_status_stack_tl on line ...
diff --git a/l3kernel/testfiles/m3expl001.uptex.tlg b/l3kernel/testfiles/m3expl001.uptex.tlg
index 551a7be..bb53bff 100644
--- a/l3kernel/testfiles/m3expl001.uptex.tlg
+++ b/l3kernel/testfiles/m3expl001.uptex.tlg
@@ -6167,11 +6167,11 @@ Defining \driver_draw_color_stroke_rgb:nnn on line ..
 Defining \__driver_color_fill_select:n on line ...
 Defining \driver_draw_cm:nnnn on line ...
 Defining \__driver_draw_cm:nnnn on line ...
-Defining \driver_draw_box_use:Nnnnn on line ...
 Defining \__driver_draw_cm_decompose:nnnnN on line ...
 Defining \__driver_draw_cm_decompose_auxi:nnnnN on line ...
 Defining \__driver_draw_cm_decompose_auxii:nnnnN on line ...
 Defining \__driver_draw_cm_decompose_auxiii:nnnnN on line ...
+Defining \driver_draw_box_use:Nnnnn on line ...
 )
 Defining \__expl_status_pop:w on line ...
 Defining \l__expl_status_stack_tl on line ...
diff --git a/l3kernel/testfiles/m3expl001.xetex.tlg b/l3kernel/testfiles/m3expl001.xetex.tlg
index e31798d..355841e 100644
--- a/l3kernel/testfiles/m3expl001.xetex.tlg
+++ b/l3kernel/testfiles/m3expl001.xetex.tlg
@@ -5959,11 +5959,11 @@ Defining \driver_draw_color_stroke_rgb:nnn on line ..
 Defining \__driver_color_fill_select:n on line ...
 Defining \driver_draw_cm:nnnn on line ...
 Defining \__driver_draw_cm:nnnn on line ...
-Defining \driver_draw_box_use:Nnnnn on line ...
 Defining \__driver_draw_cm_decompose:nnnnN on line ...
 Defining \__driver_draw_cm_decompose_auxi:nnnnN on line ...
 Defining \__driver_draw_cm_decompose_auxii:nnnnN on line ...
 Defining \__driver_draw_cm_decompose_auxiii:nnnnN on line ...
+Defining \driver_draw_box_use:Nnnnn on line ...
 )
 Defining \__expl_status_pop:w on line ...
 Defining \l__expl_status_stack_tl on line ...
diff --git a/l3kernel/testfiles/m3expl003.luatex.tlg b/l3kernel/testfiles/m3expl003.luatex.tlg
index 343cba0..3a653d0 100644
--- a/l3kernel/testfiles/m3expl003.luatex.tlg
+++ b/l3kernel/testfiles/m3expl003.luatex.tlg
@@ -5977,10 +5977,6 @@ Defining \driver_draw_color_stroke_rgb:nnn on line ..
 Defining \__driver_color_fill_select:n on line ...
 Defining \driver_draw_cm:nnnn on line ...
 Defining \driver_draw_box_use:Nnnnn on line ...
-Defining \__driver_draw_cm_decompose:nnnnN on line ...
-Defining \__driver_draw_cm_decompose_auxi:nnnnN on line ...
-Defining \__driver_draw_cm_decompose_auxii:nnnnN on line ...
-Defining \__driver_draw_cm_decompose_auxiii:nnnnN on line ...
 )
 Defining \__expl_status_pop:w on line ...
 Defining \l__expl_status_stack_tl on line ...
diff --git a/l3kernel/testfiles/m3expl003.ptex.tlg b/l3kernel/testfiles/m3expl003.ptex.tlg
index cd7c2ef..2d95bdb 100644
--- a/l3kernel/testfiles/m3expl003.ptex.tlg
+++ b/l3kernel/testfiles/m3expl003.ptex.tlg
@@ -5968,11 +5968,11 @@ Defining \driver_draw_color_stroke_rgb:nnn on line ..
 Defining \__driver_color_fill_select:n on line ...
 Defining \driver_draw_cm:nnnn on line ...
 Defining \__driver_draw_cm:nnnn on line ...
-Defining \driver_draw_box_use:Nnnnn on line ...
 Defining \__driver_draw_cm_decompose:nnnnN on line ...
 Defining \__driver_draw_cm_decompose_auxi:nnnnN on line ...
 Defining \__driver_draw_cm_decompose_auxii:nnnnN on line ...
 Defining \__driver_draw_cm_decompose_auxiii:nnnnN on line ...
+Defining \driver_draw_box_use:Nnnnn on line ...
 )
 Defining \__expl_status_pop:w on line ...
 Defining \l__expl_status_stack_tl on line ...
diff --git a/l3kernel/testfiles/m3expl003.tlg b/l3kernel/testfiles/m3expl003.tlg
index 2891870..5aae4a6 100644
--- a/l3kernel/testfiles/m3expl003.tlg
+++ b/l3kernel/testfiles/m3expl003.tlg
@@ -6169,10 +6169,6 @@ Defining \driver_draw_color_stroke_rgb:nnn on line ..
 Defining \__driver_color_fill_select:n on line ...
 Defining \driver_draw_cm:nnnn on line ...
 Defining \driver_draw_box_use:Nnnnn on line ...
-Defining \__driver_draw_cm_decompose:nnnnN on line ...
-Defining \__driver_draw_cm_decompose_auxi:nnnnN on line ...
-Defining \__driver_draw_cm_decompose_auxii:nnnnN on line ...
-Defining \__driver_draw_cm_decompose_auxiii:nnnnN on line ...
 )
 Defining \__expl_status_pop:w on line ...
 Defining \l__expl_status_stack_tl on line ...
diff --git a/l3kernel/testfiles/m3expl003.uptex.tlg b/l3kernel/testfiles/m3expl003.uptex.tlg
index 551a7be..bb53bff 100644
--- a/l3kernel/testfiles/m3expl003.uptex.tlg
+++ b/l3kernel/testfiles/m3expl003.uptex.tlg
@@ -6167,11 +6167,11 @@ Defining \driver_draw_color_stroke_rgb:nnn on line ..
 Defining \__driver_color_fill_select:n on line ...
 Defining \driver_draw_cm:nnnn on line ...
 Defining \__driver_draw_cm:nnnn on line ...
-Defining \driver_draw_box_use:Nnnnn on line ...
 Defining \__driver_draw_cm_decompose:nnnnN on line ...
 Defining \__driver_draw_cm_decompose_auxi:nnnnN on line ...
 Defining \__driver_draw_cm_decompose_auxii:nnnnN on line ...
 Defining \__driver_draw_cm_decompose_auxiii:nnnnN on line ...
+Defining \driver_draw_box_use:Nnnnn on line ...
 )
 Defining \__expl_status_pop:w on line ...
 Defining \l__expl_status_stack_tl on line ...
diff --git a/l3kernel/testfiles/m3expl003.xetex.tlg b/l3kernel/testfiles/m3expl003.xetex.tlg
index e31798d..355841e 100644
--- a/l3kernel/testfiles/m3expl003.xetex.tlg
+++ b/l3kernel/testfiles/m3expl003.xetex.tlg
@@ -5959,11 +5959,11 @@ Defining \driver_draw_color_stroke_rgb:nnn on line ..
 Defining \__driver_color_fill_select:n on line ...
 Defining \driver_draw_cm:nnnn on line ...
 Defining \__driver_draw_cm:nnnn on line ...
-Defining \driver_draw_box_use:Nnnnn on line ...
 Defining \__driver_draw_cm_decompose:nnnnN on line ...
 Defining \__driver_draw_cm_decompose_auxi:nnnnN on line ...
 Defining \__driver_draw_cm_decompose_auxii:nnnnN on line ...
 Defining \__driver_draw_cm_decompose_auxiii:nnnnN on line ...
+Defining \driver_draw_box_use:Nnnnn on line ...
 )
 Defining \__expl_status_pop:w on line ...
 Defining \l__expl_status_stack_tl on line ...





More information about the latex3-commits mailing list