[latex3-commits] [latex3/latex3] main: Use e-type expansion in l3draw (7ab3113ad)

github at latex-project.org github at latex-project.org
Fri Dec 15 21:18:55 CET 2023


Repository : https://github.com/latex3/latex3
On branch  : main
Link       : https://github.com/latex3/latex3/commit/7ab3113adee7b4676a53079a469a1a22eedd7bd8

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

commit 7ab3113adee7b4676a53079a469a1a22eedd7bd8
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date:   Fri Dec 15 20:12:43 2023 +0000

    Use e-type expansion in l3draw
    
    As we can now make this move 'safely', and it was always the plan.


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

7ab3113adee7b4676a53079a469a1a22eedd7bd8
 l3experimental/l3draw/l3draw-paths.dtx      |  28 ++---
 l3experimental/l3draw/l3draw-points.dtx     | 187 +++++++++++++++-------------
 l3experimental/l3draw/l3draw-softpath.dtx   |   6 +-
 l3experimental/l3draw/l3draw-transforms.dtx |  18 +--
 4 files changed, 123 insertions(+), 116 deletions(-)

diff --git a/l3experimental/l3draw/l3draw-paths.dtx b/l3experimental/l3draw/l3draw-paths.dtx
index 91a7b63ef..45f11ed9c 100644
--- a/l3experimental/l3draw/l3draw-paths.dtx
+++ b/l3experimental/l3draw/l3draw-paths.dtx
@@ -390,8 +390,8 @@
 % \begin{macro}
 %   {
 %     \@@_path_arc_auxi:nnnnNnn,
-%     \@@_path_arc_auxi:fnnnNnn,
-%     \@@_path_arc_auxi:fnfnNnn
+%     \@@_path_arc_auxi:enenNnn,
+%     \@@_path_arc_auxi:eennNnn
 %   }
 % \begin{macro}{\@@_path_arc_auxii:nnnNnnnn}
 % \begin{macro}{\@@_path_arc_auxiii:nn}
@@ -432,14 +432,14 @@
       {
         \fp_compare:nNnTF \l_@@_path_arc_delta_fp > { 115 }
           {
-            \@@_path_arc_auxi:ffnnNnn
+            \@@_path_arc_auxi:eennNnn
               { \fp_to_decimal:N \l_@@_path_arc_start_fp }
               { \fp_eval:n { \l_@@_path_arc_start_fp #3 90 } }
               { 90 } {#2}
               #3 {#4} {#5}
           }
           {
-            \@@_path_arc_auxi:ffnnNnn
+            \@@_path_arc_auxi:eennNnn
               { \fp_to_decimal:N \l_@@_path_arc_start_fp }
               { \fp_eval:n { \l_@@_path_arc_start_fp #3 60 } }
               { 60 } {#2}
@@ -447,7 +447,7 @@
           }
       }
     \@@_path_mark_corner:
-    \@@_path_arc_auxi:fnfnNnn
+    \@@_path_arc_auxi:enenNnn
       { \fp_to_decimal:N \l_@@_path_arc_start_fp }
       {#2}
       { \fp_eval:n { abs( \l_@@_path_arc_start_fp - #2 ) } }
@@ -488,10 +488,10 @@
           }
       }
   }
-\cs_generate_variant:Nn \@@_path_arc_auxi:nnnnNnn { fnf , ff }
+\cs_generate_variant:Nn \@@_path_arc_auxi:nnnnNnn { ene , ee }
 %    \end{macrocode}
 %   We can now calculate the required points. As everything here is
-%   non-expandable, that is best done by using \texttt{x}-type expansion
+%   non-expandable, that is best done by using \texttt{e}-type expansion
 %   to build up the tokens. The three points are calculated out-of-order,
 %   since finding the second control point needs the position of the end
 %   point. Once the points are found, fire-off the fundamental path
@@ -752,12 +752,12 @@
 % \begin{macro}{\draw_path_grid:nnnn}
 % \begin{macro}
 %   {
-%     \@@_path_grid_auxi:nnnnnn, \@@_path_grid_auxi:ffnnnn,
+%     \@@_path_grid_auxi:nnnnnn, \@@_path_grid_auxi:eennnn,
 %     \@@_path_grid_auxii:nnnnnn,
-%     \@@_path_grid_auxiii:nnnnnn, \@@_path_grid_auxiiii:ffnnnn
+%     \@@_path_grid_auxiii:nnnnnn, \@@_path_grid_auxiiii:eennnn
 %   }
 % \begin{macro}
-%   {\@@_path_grid_auxiv:nnnnnnnn, \@@_path_grid_auxiv:ffnnnnnn}
+%   {\@@_path_grid_auxiv:nnnnnnnn, \@@_path_grid_auxiv:eennnnnn}
 %   The main complexity here is lining up the grid correctly.
 %   To keep it simple, we tidy up the argument ordering first.
 %    \begin{macrocode}
@@ -765,7 +765,7 @@
   {
     \@@_point_process:nnn
       {
-        \@@_path_grid_auxi:ffnnnn
+        \@@_path_grid_auxi:eennnn
           { \dim_eval:n { \dim_abs:n {#1} } }
           { \dim_eval:n { \dim_abs:n {#2} } }
       }
@@ -777,7 +777,7 @@
       { \@@_path_grid_auxii:nnnnnn {#1} {#2} {#5} {#4} {#3} {#6} }
       { \@@_path_grid_auxii:nnnnnn {#1} {#2} {#3} {#4} {#5} {#6} }
   }
-\cs_generate_variant:Nn \@@_path_grid_auxi:nnnnnn { ff }
+\cs_generate_variant:Nn \@@_path_grid_auxi:nnnnnn { ee }
 \cs_new_protected:Npn \@@_path_grid_auxii:nnnnnn #1#2#3#4#5#6
   {
     \dim_compare:nNnTF {#4} > {#6}
@@ -786,7 +786,7 @@
   }
 \cs_new_protected:Npn \@@_path_grid_auxiii:nnnnnn #1#2#3#4#5#6
   {
-    \@@_path_grid_auxiv:ffnnnnnn
+    \@@_path_grid_auxiv:eennnnnn
       { \fp_to_dim:n { #1 * trunc(#3/(#1)) } }
       { \fp_to_dim:n { #2 * trunc(#4/(#2)) } }
       {#1} {#2} {#3} {#4} {#5} {#6}
@@ -810,7 +810,7 @@
         \draw_path_lineto:n { #7 , ##1 }
       }
   }
-\cs_generate_variant:Nn \@@_path_grid_auxiv:nnnnnnnn { ff }
+\cs_generate_variant:Nn \@@_path_grid_auxiv:nnnnnnnn { ee }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
diff --git a/l3experimental/l3draw/l3draw-points.dtx b/l3experimental/l3draw/l3draw-points.dtx
index f72287323..b16711332 100644
--- a/l3experimental/l3draw/l3draw-points.dtx
+++ b/l3experimental/l3draw/l3draw-points.dtx
@@ -70,10 +70,10 @@
 %   \item \cs{pgfpointadd}, \cs{pgfpointdiff},
 %     \cs{pgfpointscale}: Can be given explicitly.
 %   \item \cs{pgfextractx}, \cs{pgfextracty}: Available by applying
-%     \cs{use_i:nn}/\cs{use_ii:nn} or similar to the \texttt{x}-type
+%     \cs{use_i:nn}/\cs{use_ii:nn} or similar to the \texttt{e}-type
 %     expansion of a point expression.
 %    \item \cs{pgfgetlastxy}: Unused in the entire \pkg{pgf} core, may be
-%      emulated by \texttt{x}-type expansion of a point expression, then using
+%      emulated by \texttt{e}-type expansion of a point expression, then using
 %      the result.
 % \end{itemize}
 % In addition, equivalents of the following \emph{may} be added in future but
@@ -93,16 +93,18 @@
 % \subsection{Support functions}
 %
 % \begin{macro}[EXP]{\@@_point_process:nn}
-% \begin{macro}[EXP]{\@@_point_process_auxi:nn}
+% \begin{macro}[EXP]{\@@_point_process_auxi:nn, \@@_point_process_auxi:en}
 % \begin{macro}[EXP]{\@@_point_process_auxii:nw}
 % \begin{macro}[EXP]{\@@_point_process:nnn}
-% \begin{macro}[EXP]{\@@_point_process_auxiii:nnn}
+% \begin{macro}[EXP]{\@@_point_process_auxiii:nnn, \@@_point_process_auxiii:een}
 % \begin{macro}[EXP]{\@@_point_process_auxiv:nw}
 % \begin{macro}[EXP]{\@@_point_process:nnnn}
-% \begin{macro}[EXP]{\@@_point_process_auxv:nnnn}
+% \begin{macro}[EXP]
+%  {\@@_point_process_auxv:nnnn, \@@_point_process_auxv:eeen}
 % \begin{macro}[EXP]{\@@_point_process_auxvi:nw}
 % \begin{macro}[EXP]{\@@_point_process:nnnnn}
-% \begin{macro}[EXP]{\@@_point_process_auxvii:nnnnn}
+% \begin{macro}[EXP]
+%  {\@@_point_process_auxvii:nnnnn, \@@_point_process_auxvii:eeeen}
 % \begin{macro}[EXP]{\@@_point_process_auxviii:nw}
 %   Execute whatever code is passed to extract the $x$ and $y$ co-ordinates.
 %   The first argument here should itself absorb two arguments. There is
@@ -111,28 +113,30 @@
 %    \begin{macrocode}
 \cs_new:Npn \@@_point_process:nn #1#2
   {
-    \exp_args:Nf \@@_point_process_auxi:nn
+    \@@_point_process_auxi:en
       { \draw_point:n {#2} }
       {#1}
   }
 \cs_new:Npn \@@_point_process_auxi:nn #1#2
   { \@@_point_process_auxii:nw {#2} #1 \s_@@_stop }
+\cs_generate_variant:Nn \@@_point_process_auxi:nn { e }
 \cs_new:Npn \@@_point_process_auxii:nw #1 #2 , #3 \s_@@_stop
   { #1 {#2} {#3} }
 \cs_new:Npn \@@_point_process:nnn #1#2#3
   {
-    \exp_args:Nff \@@_point_process_auxiii:nnn
+    \@@_point_process_auxiii:een
       { \draw_point:n {#2} }
       { \draw_point:n {#3} }
       {#1}
   }
 \cs_new:Npn \@@_point_process_auxiii:nnn #1#2#3
   { \@@_point_process_auxiv:nw {#3} #1 \s_@@_mark #2 \s_@@_stop }
+\cs_generate_variant:Nn \@@_point_process_auxiii:nnn { ee }
 \cs_new:Npn \@@_point_process_auxiv:nw #1 #2 , #3 \s_@@_mark #4 , #5 \s_@@_stop
   { #1 {#2} {#3} {#4} {#5} }
 \cs_new:Npn \@@_point_process:nnnn #1#2#3#4
   {
-    \exp_args:Nfff \@@_point_process_auxv:nnnn
+    \@@_point_process_auxv:eeen
       { \draw_point:n {#2} }
       { \draw_point:n {#3} }
       { \draw_point:n {#4} }
@@ -140,12 +144,13 @@
   }
 \cs_new:Npn \@@_point_process_auxv:nnnn #1#2#3#4
   { \@@_point_process_auxvi:nw {#4} #1 \s_@@_mark #2 \s_@@_mark #3 \s_@@_stop }
+\cs_generate_variant:Nn \@@_point_process_auxv:nnnn { eee }
 \cs_new:Npn \@@_point_process_auxvi:nw
   #1 #2 , #3 \s_@@_mark #4 , #5 \s_@@_mark #6 , #7 \s_@@_stop
   { #1 {#2} {#3} {#4} {#5} {#6} {#7} }
 \cs_new:Npn \@@_point_process:nnnnn #1#2#3#4#5
   {
-    \exp_args:Nffff \@@_point_process_auxvii:nnnnn
+    \@@_point_process_auxvii:eeeen
       { \draw_point:n {#2} }
       { \draw_point:n {#3} }
       { \draw_point:n {#4} }
@@ -157,6 +162,7 @@
     \@@_point_process_auxviii:nw
       {#5} #1 \s_@@_mark #2 \s_@@_mark #3 \s_@@_mark #4 \s_@@_stop
   }
+\cs_generate_variant:Nn \@@_point_process_auxvii:nnnnn { eeee }
 \cs_new:Npn \@@_point_process_auxviii:nw
   #1 #2 , #3 \s_@@_mark #4 , #5 \s_@@_mark #6 , #7 \s_@@_mark #8 , #9 \s_@@_stop
   { #1 {#2} {#3} {#4} {#5} {#6} {#7} {#8} {#9} }
@@ -177,15 +183,15 @@
 % \subsection{Basic points}
 %
 % \begin{macro}[EXP]{\draw_point:n}
-% \begin{macro}[EXP]{\@@_point_to_dim:n, \@@_point_to_dim:f}
+% \begin{macro}[EXP]{\@@_point_to_dim:n, \@@_point_to_dim:e}
 % \begin{macro}[EXP]{\@@_point_to_dim:w} 
 %   Co-ordinates are always returned as two dimensions. 
 %    \begin{macrocode} 
 \cs_new:Npn \draw_point:n #1 
-  { \@@_point_to_dim:f { \fp_eval:n {#1} } }
+  { \@@_point_to_dim:e { \fp_eval:n {#1} } }
 \cs_new:Npn \@@_point_to_dim:n #1 
   { \@@_point_to_dim:w #1 }
-\cs_generate_variant:Nn \@@_point_to_dim:n { f }
+\cs_generate_variant:Nn \@@_point_to_dim:n { e }
 \cs_new:Npn \@@_point_to_dim:w ( #1 , ~ #2 ) { #1pt , #2pt }
 %    \end{macrocode}
 % \end{macro}
@@ -195,7 +201,7 @@
 %
 % \begin{macro}[EXP]{\draw_point_polar:nn}
 % \begin{macro}[EXP]{\draw_point_polar:nnn}
-% \begin{macro}[EXP]{\@@_draw_polar:nnn, \@@_draw_polar:fnn}
+% \begin{macro}[EXP]{\@@_draw_polar:nnn, \@@_draw_polar:enn}
 %   Polar co-ordinates may have either one or two lengths, so there is a need
 %   to do a simple split before the calculation. As the angle gets used twice,
 %   save on any expression evaluation there and force expansion.
@@ -203,10 +209,10 @@
 \cs_new:Npn \draw_point_polar:nn #1#2
   { \draw_point_polar:nnn {#1} {#1} {#2} }
 \cs_new:Npn \draw_point_polar:nnn #1#2#3
-  { \@@_draw_polar:fnn { \fp_eval:n {#3} } {#1} {#2} }
+  { \@@_draw_polar:enn { \fp_eval:n {#3} } {#1} {#2} }
 \cs_new:Npn \@@_draw_polar:nnn #1#2#3
   { \draw_point:n { cosd(#1) * (#2) , sind(#1) * (#3) } }
-\cs_generate_variant:Nn \@@_draw_polar:nnn { f }
+\cs_generate_variant:Nn \@@_draw_polar:nnn { e }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -218,7 +224,7 @@
 %
 % \begin{macro}[EXP]{\draw_point_unit_vector:n}
 % \begin{macro}[EXP]{\@@_point_unit_vector:nn}
-% \begin{macro}[EXP]{\@@_point_unit_vector:nnn}
+% \begin{macro}[EXP]{\@@_point_unit_vector:nnn, \@@_point_unit_vector:enn}
 %   The outcome is the normalised vector from $(0,0)$ in the direction of
 %   the point, \emph{i.e.}
 %   \[
@@ -232,7 +238,7 @@
   { \@@_point_process:nn { \@@_point_unit_vector:nn } {#1} }
 \cs_new:Npn \@@_point_unit_vector:nn #1#2
   {
-    \exp_args:Nf \@@_point_unit_vector:nnn
+    \@@_point_unit_vector:nnn
       { \fp_eval:n { (sqrt(#1 * #1 + #2 * #2)) } }
       {#1} {#2}
   }
@@ -245,6 +251,7 @@
           { ( #2 , #3 ) / #1 }
       }
   }
+\cs_generate_variant:Nn \@@_point_unit_vector:nnn { e }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -256,7 +263,7 @@
 % \begin{macro}[EXP]{\@@_point_intersect_lines:nnnnnn}
 % \begin{macro}[EXP]{\@@_point_intersect_lines:nnnnnnnn}
 % \begin{macro}[EXP]
-%   {\@@_point_intersect_lines_aux:nnnnnn, \@@_point_intersect_lines_aux:ffffff}
+%   {\@@_point_intersect_lines_aux:nnnnnn, \@@_point_intersect_lines_aux:eeeeee}
 %    The intersection point~$P$ between a line joining points $(x_{1}, y_{1})$
 %    and $(x_{2}, y_{2})$ with a second line joining points $(x_{3}, y_{3})$
 %    and $(x_{4}, y_{4})$ can be calculated using the formulae
@@ -300,7 +307,7 @@
 %    \begin{macrocode}
 \cs_new:Npn \@@_point_intersect_lines:nnnnnnnn #1#2#3#4#5#6#7#8
   {
-    \@@_point_intersect_lines_aux:ffffff
+    \@@_point_intersect_lines_aux:eeeeee
       { \fp_eval:n { #1 * #4 - #2 * #3 } }
       { \fp_eval:n { #5 * #8 - #6 * #7 } }
       { \fp_eval:n { #1 - #3 } }
@@ -316,7 +323,7 @@
           / ( #4 * #5 - #6 * #3 )
       }
   }
-\cs_generate_variant:Nn \@@_point_intersect_lines_aux:nnnnnn { ffffff }
+\cs_generate_variant:Nn \@@_point_intersect_lines_aux:nnnnnn { eeeeee }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -328,29 +335,29 @@
 % \begin{macro}[EXP]
 %   {
 %     \@@_point_intersect_circles_auxii:nnnnnnn,
-%     \@@_point_intersect_circles_auxii:ffnnnnn,
+%     \@@_point_intersect_circles_auxii:eennnnn,
 %     \@@_point_intersect_circles_auxiii:nnnnnnn,
-%     \@@_point_intersect_circles_auxiii:ffnnnnn
+%     \@@_point_intersect_circles_auxiii:eennnnn
 %   }
 %  \begin{macro}[EXP]
 %    {
 %      \@@_point_intersect_circles_auxiv:nnnnnnnn,
-%      \@@_point_intersect_circles_auxiv:fnnnnnnn
+%      \@@_point_intersect_circles_auxiv:ennnnnnn
 %    }
 %  \begin{macro}[EXP]
 %    {
 %      \@@_point_intersect_circles_auxv:nnnnnnnnn,
-%      \@@_point_intersect_circles_auxv:ffnnnnnnn
+%      \@@_point_intersect_circles_auxv:eennnnnnn
 %    }
 %  \begin{macro}[EXP]
 %    {
 %      \@@_point_intersect_circles_auxvi:nnnnnnnn,
-%      \@@_point_intersect_circles_auxvi:fnnnnnnn
+%      \@@_point_intersect_circles_auxvi:ennnnnnn
 %    }
 % \begin{macro}[EXP]
 %   {
 %     \@@_point_intersect_circles_auxvii:nnnnnnn,
-%     \@@_point_intersect_circles_auxvii:fffnnnn
+%     \@@_point_intersect_circles_auxvii:eeennnn
 %   }
 %   Another long expansion chain to get the values in the right places.
 %   We have two circles, the first with center $(a, b)$ and radius~$r$,
@@ -383,7 +390,7 @@
   }
 \cs_new:Npn \@@_point_intersect_circles_auxi:nnnnnnn #1#2#3#4#5#6#7
   {
-    \@@_point_intersect_circles_auxii:ffnnnnn
+    \@@_point_intersect_circles_auxii:eennnnn
       { \fp_eval:n {#1} } { \fp_eval:n {#2} } {#4} {#5} {#6} {#7} {#3}
   }
 %    \end{macrocode}
@@ -403,19 +410,19 @@
 %    \begin{macrocode}
 \cs_new:Npn \@@_point_intersect_circles_auxii:nnnnnnn #1#2#3#4#5#6#7
   {
-    \@@_point_intersect_circles_auxiii:ffnnnnn
+    \@@_point_intersect_circles_auxiii:eennnnn
       { \fp_eval:n { #5 - #3 } }
       { \fp_eval:n { #6 - #4 } }
       {#1} {#2} {#3} {#4} {#7}
   }
-\cs_generate_variant:Nn \@@_point_intersect_circles_auxii:nnnnnnn { ff }
+\cs_generate_variant:Nn \@@_point_intersect_circles_auxii:nnnnnnn { ee }
 \cs_new:Npn \@@_point_intersect_circles_auxiii:nnnnnnn #1#2#3#4#5#6#7
   {
-    \@@_point_intersect_circles_auxiv:fnnnnnnn
+    \@@_point_intersect_circles_auxiv:ennnnnnn
       { \fp_eval:n { sqrt( #1 * #1 + #2 * #2 ) } }
       {#1} {#2} {#3} {#4} {#5} {#6} {#7}
   }
-\cs_generate_variant:Nn \@@_point_intersect_circles_auxiii:nnnnnnn { ff }
+\cs_generate_variant:Nn \@@_point_intersect_circles_auxiii:nnnnnnn { ee }
 %    \end{macrocode}
 %   We now have $p$: we pre-calculate $1/p$ as it is needed a few times and
 %   is relatively expensive. We also need $r^{2}$ twice so deal with that
@@ -423,19 +430,19 @@
 %    \begin{macrocode}
 \cs_new:Npn \@@_point_intersect_circles_auxiv:nnnnnnnn #1#2#3#4#5#6#7#8
   {
-    \@@_point_intersect_circles_auxv:ffnnnnnnn
+    \@@_point_intersect_circles_auxv:eennnnnnn
       { \fp_eval:n { 1 / #1 } }
       { \fp_eval:n { #4 * #4 } }
       {#1} {#2} {#3} {#5} {#6} {#7} {#8}
   }
-\cs_generate_variant:Nn \@@_point_intersect_circles_auxiv:nnnnnnnn { f }
+\cs_generate_variant:Nn \@@_point_intersect_circles_auxiv:nnnnnnnn { e }
 \cs_new:Npn \@@_point_intersect_circles_auxv:nnnnnnnnn #1#2#3#4#5#6#7#8#9
   {
-    \@@_point_intersect_circles_auxvi:fnnnnnnn
+    \@@_point_intersect_circles_auxvi:ennnnnnn
       { \fp_eval:n { 0.5 * #1 * ( #2 + #3 * #3 - #6 * #6 ) } }
       {#1} {#2} {#4} {#5} {#7} {#8} {#9}
   }
-\cs_generate_variant:Nn \@@_point_intersect_circles_auxv:nnnnnnnnn { ff }
+\cs_generate_variant:Nn \@@_point_intersect_circles_auxv:nnnnnnnnn { ee }
 %    \end{macrocode}
 %   We now have all of the intermediate values we require, with one division
 %   carried out up-front to avoid doing this expensive step twice:
@@ -455,19 +462,19 @@
 %    \begin{macrocode}
 \cs_new:Npn \@@_point_intersect_circles_auxvi:nnnnnnnn #1#2#3#4#5#6#7#8
   {
-    \@@_point_intersect_circles_auxvii:fffnnnn
+    \@@_point_intersect_circles_auxvii:eeennnn
       { \fp_eval:n { #1 * #2 } }
       { \int_if_odd:nTF {#8} { 1 } { -1 } }
       { \fp_eval:n { sqrt ( #3 - #1 * #1 ) * #2 } }
       {#4} {#5} {#6} {#7}
   }
-\cs_generate_variant:Nn \@@_point_intersect_circles_auxvi:nnnnnnnn { f }
+\cs_generate_variant:Nn \@@_point_intersect_circles_auxvi:nnnnnnnn { e }
 \cs_new:Npn \@@_point_intersect_circles_auxvii:nnnnnnn #1#2#3#4#5#6#7
   {
     \draw_point:n
       { #6 + #4 * #1 + #2 * #3 * #5 , #7 + #5 * #1 + -1 * #2 * #3 * #4 }
   }
-\cs_generate_variant:Nn \@@_point_intersect_circles_auxvii:nnnnnnn { fff }
+\cs_generate_variant:Nn \@@_point_intersect_circles_auxvii:nnnnnnn { eee }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -482,19 +489,19 @@
 % \begin{macro}[EXP]
 %   {
 %     \@@_point_intersect_line_circle_auxii:nnnnnnnn,
-%     \@@_point_intersect_line_circle_auxii:fnnnnnnn,
+%     \@@_point_intersect_line_circle_auxii:ennnnnnn,
 %     \@@_point_intersect_line_circle_auxiii:nnnnnnnn,
-%     \@@_point_intersect_line_circle_auxiii:fffnnnnn
+%     \@@_point_intersect_line_circle_auxiii:eeennnnn
 %   }
 %  \begin{macro}[EXP]
 %    {
 %      \@@_point_intersect_line_circle_auxiv:nnnnnnnn,
-%      \@@_point_intersect_line_circle_auxiv:ffnnnnnn
+%      \@@_point_intersect_line_circle_auxiv:eennnnnn
 %    }
 %  \begin{macro}[EXP]
 %    {
 %      \@@_point_intersect_line_circle_auxv:nnnnn,
-%      \@@_point_intersect_line_circle_auxv:fnnnn
+%      \@@_point_intersect_line_circle_auxv:ennnn
 %    }
 %   The intersection points~$P_{1}$ and~$P_{2}$ between
 %   a line joining points $(x_{1}, y_{1})$ and $(x_{2}, y_{2})$
@@ -531,7 +538,7 @@
   }
 \cs_new:Npn \@@_point_intersect_line_circle_auxi:nnnnnnnn #1#2#3#4#5#6#7#8
   {
-    \@@_point_intersect_line_circle_auxii:fnnnnnnn
+    \@@_point_intersect_line_circle_auxii:ennnnnnn
       { \fp_eval:n {#1} } {#3} {#4} {#5} {#6} {#7} {#8} {#2}
   }
 %    \end{macrocode}
@@ -552,24 +559,24 @@
 %    \begin{macrocode}
 \cs_new:Npn \@@_point_intersect_line_circle_auxii:nnnnnnnn #1#2#3#4#5#6#7#8
   {
-    \@@_point_intersect_line_circle_auxiii:fffnnnnn
+    \@@_point_intersect_line_circle_auxiii:eeennnnn
       { \fp_eval:n { (#4-#2)*(#4-#2)+(#5-#3)*(#5-#3) } }
       { \fp_eval:n { 2*((#4-#2)*(#2-#6)+(#5-#3)*(#3-#7)) } }
       { \fp_eval:n { (#6*#6+#7*#7)+(#2*#2+#3*#3)-(2*(#6*#2+#7*#3))-(#1*#1) } }
       {#2} {#3} {#4} {#5} {#8}
   }
-\cs_generate_variant:Nn \@@_point_intersect_line_circle_auxii:nnnnnnnn { f }
+\cs_generate_variant:Nn \@@_point_intersect_line_circle_auxii:nnnnnnnn { e }
 %    \end{macrocode}
 % then we can get $d = b^{2} - 4\times a \times c$ and the usage of $n$.
 %    \begin{macrocode}
 \cs_new:Npn \@@_point_intersect_line_circle_auxiii:nnnnnnnn #1#2#3#4#5#6#7#8
   {
-    \@@_point_intersect_line_circle_auxiv:ffnnnnnn
+    \@@_point_intersect_line_circle_auxiv:eennnnnn
       { \fp_eval:n {  #2 * #2 - 4 * #1 * #3 } }
       { \int_if_odd:nTF {#8} { 1 } { -1 } }
       {#1} {#2} {#4} {#5} {#6} {#7}
   }
-\cs_generate_variant:Nn \@@_point_intersect_line_circle_auxiii:nnnnnnnn { fff }
+\cs_generate_variant:Nn \@@_point_intersect_line_circle_auxiii:nnnnnnnn { eee }
 %    \end{macrocode}
 %   We now have all of the intermediate values we require, with one division
 %   carried out up-front to avoid doing this expensive step twice:
@@ -590,17 +597,17 @@
 %    \begin{macrocode}
 \cs_new:Npn \@@_point_intersect_line_circle_auxiv:nnnnnnnn #1#2#3#4#5#6#7#8
   {
-    \@@_point_intersect_line_circle_auxv:fnnnn
+    \@@_point_intersect_line_circle_auxv:ennnn
       { \fp_eval:n { (-1 * #4 + #2 * sqrt(#1)) / (2 * #3) } }
       {#5} {#6} {#7} {#8}
   }
-\cs_generate_variant:Nn \@@_point_intersect_line_circle_auxiv:nnnnnnnn { ff }
+\cs_generate_variant:Nn \@@_point_intersect_line_circle_auxiv:nnnnnnnn { ee }
 \cs_new:Npn \@@_point_intersect_line_circle_auxv:nnnnn #1#2#3#4#5
   {
     \draw_point:n
       { #2 + #1 * (#4 - #2), #3 + #1 * (#5 - #3) }
   }
-\cs_generate_variant:Nn \@@_point_intersect_line_circle_auxv:nnnnn { f }
+\cs_generate_variant:Nn \@@_point_intersect_line_circle_auxv:nnnnn { e }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -614,30 +621,30 @@
 % \begin{macro}[EXP]
 %   {
 %     \@@_point_interpolate_line_aux:nnnnn,
-%     \@@_point_interpolate_line_aux:fnnnn,
+%     \@@_point_interpolate_line_aux:ennnn,
 %   }
 % \begin{macro}[EXP]
 %   {
 %     \@@_point_interpolate_line_aux:nnnnnn,
-%     \@@_point_interpolate_line_aux:fnnnnn,
+%     \@@_point_interpolate_line_aux:ennnnn,
 %   }
 %   Simple maths after expansion.
 %    \begin{macrocode}
 \cs_new:Npn \draw_point_interpolate_line:nnn #1#2#3
   {
     \@@_point_process:nnn
-      { \@@_point_interpolate_line_aux:fnnnn { \fp_eval:n {#1} } }
+      { \@@_point_interpolate_line_aux:ennnn { \fp_eval:n {#1} } }
       {#2} {#3}
   }
 \cs_new:Npn \@@_point_interpolate_line_aux:nnnnn #1#2#3#4#5
   {
-    \@@_point_interpolate_line_aux:fnnnnn { \fp_eval:n { 1 - #1 } }
+    \@@_point_interpolate_line_aux:ennnnn { \fp_eval:n { 1 - #1 } }
       {#1} {#2} {#3} {#4} {#5}
   }
-\cs_generate_variant:Nn \@@_point_interpolate_line_aux:nnnnn { f }
+\cs_generate_variant:Nn \@@_point_interpolate_line_aux:nnnnn { e }
 \cs_new:Npn \@@_point_interpolate_line_aux:nnnnnn #1#2#3#4#5#6
   { \draw_point:n { #2 * #3 + #1 * #5 , #2 * #4 + #1 * #6 } }
-\cs_generate_variant:Nn \@@_point_interpolate_line_aux:nnnnnn { f }
+\cs_generate_variant:Nn \@@_point_interpolate_line_aux:nnnnnn { e }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -648,7 +655,7 @@
 % \begin{macro}[EXP]
 %   {
 %     \@@_point_interpolate_distance:nnnnnn,
-%     \@@_point_interpolate_distance:fnnnnn,
+%     \@@_point_interpolate_distance:ennnnn,
 %   }
 %   Same idea but using the normalised length to obtain the scale factor.
 %   The start point is needed twice, so we force evaluation, but the end
@@ -664,14 +671,14 @@
   {
     \@@_point_process:nn
       {
-        \@@_point_interpolate_distance:fnnnn
+        \@@_point_interpolate_distance:ennnn
           { \fp_eval:n {#1} } {#3} {#4}
       }
       { \draw_point_unit_vector:n { ( #2 ) - ( #3 , #4 ) } }
   }
 \cs_new:Npn \@@_point_interpolate_distance:nnnnn #1#2#3#4#5
   { \draw_point:n { #2 + #1 * #4 , #3 + #1 * #5 } }
-\cs_generate_variant:Nn \@@_point_interpolate_distance:nnnnn { f }
+\cs_generate_variant:Nn \@@_point_interpolate_distance:nnnnn { e }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -683,17 +690,17 @@
 % \begin{macro}[EXP]
 %   {
 %     \@@_point_interpolate_arcaxes_auxii:nnnnnnnnn,
-%     \@@_point_interpolate_arcaxes_auxii:fnnnnnnnn
+%     \@@_point_interpolate_arcaxes_auxii:ennnnnnnn
 %   }
 % \begin{macro}[EXP]
 %   {
 %     \@@_point_interpolate_arcaxes_auxiii:nnnnnnn,
-%     \@@_point_interpolate_arcaxes_auxiii:fnnnnnn
+%     \@@_point_interpolate_arcaxes_auxiii:ennnnnn
 %   }
 % \begin{macro}[EXP]
 %   {
 %     \@@_point_interpolate_arcaxes_auxiv:nnnnnnnn,
-%     \@@_point_interpolate_arcaxes_auxiv:ffnnnnnn
+%     \@@_point_interpolate_arcaxes_auxiv:eennnnnn
 %   }
 %   Finding a point on an ellipse arc is relatively easy: find the correct
 %   angle between the two given, use the sine and cosine of that angle,
@@ -708,7 +715,7 @@
   }
 \cs_new:Npn \@@_point_interpolate_arcaxes_auxi:nnnnnnnnn #1#2#3#4#5#6#7#8#9
   {
-    \@@_point_interpolate_arcaxes_auxii:fnnnnnnnn
+    \@@_point_interpolate_arcaxes_auxii:ennnnnnnn
       { \fp_eval:n {#1} } {#2} {#3} {#4} {#5} {#6} {#7} {#8} {#9}
   }
 %    \end{macrocode}
@@ -730,25 +737,25 @@
 %    \begin{macrocode}
 \cs_new:Npn \@@_point_interpolate_arcaxes_auxii:nnnnnnnnn #1#2#3#4#5#6#7#8#9
   {
-    \@@_point_interpolate_arcaxes_auxiii:fnnnnnn
+    \@@_point_interpolate_arcaxes_auxiii:ennnnnn
       { \fp_eval:n { #1 * (#3) + ( 1 - #1 ) * (#2) } }
       {#4} {#5} {#6} {#7} {#8} {#9}
   }
-\cs_generate_variant:Nn \@@_point_interpolate_arcaxes_auxii:nnnnnnnnn { f }
+\cs_generate_variant:Nn \@@_point_interpolate_arcaxes_auxii:nnnnnnnnn { e }
 \cs_new:Npn \@@_point_interpolate_arcaxes_auxiii:nnnnnnn #1#2#3#4#5#6#7
   {
-    \@@_point_interpolate_arcaxes_auxiv:ffnnnnnn
+    \@@_point_interpolate_arcaxes_auxiv:eennnnnn
       { \fp_eval:n { cosd (#1) } }
       { \fp_eval:n { sind (#1) } }
       {#2} {#3} {#4} {#5} {#6} {#7}
   }
-\cs_generate_variant:Nn \@@_point_interpolate_arcaxes_auxiii:nnnnnnn { f }
+\cs_generate_variant:Nn \@@_point_interpolate_arcaxes_auxiii:nnnnnnn { e }
 \cs_new:Npn \@@_point_interpolate_arcaxes_auxiv:nnnnnnnn #1#2#3#4#5#6#7#8
   {
     \draw_point:n
       { #3 + #1 * #5 + #2 * #7 , #4 + #1 * #6 + #2 * #8 }
   }
-\cs_generate_variant:Nn \@@_point_interpolate_arcaxes_auxiv:nnnnnnnn { ff }
+\cs_generate_variant:Nn \@@_point_interpolate_arcaxes_auxiv:nnnnnnnn { ee }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -761,25 +768,25 @@
 % \begin{macro}[EXP]
 %   {
 %     \draw_point_interpolate_curve_auxii:nnnnnnnnn,
-%     \draw_point_interpolate_curve_auxii:fnnnnnnnn,
+%     \draw_point_interpolate_curve_auxii:ennnnnnnn,
 %   }
 % \begin{macro}[EXP]
 %   {
 %     \draw_point_interpolate_curve_auxiii:nnnnnn,
-%     \draw_point_interpolate_curve_auxiii:fnnnnn,
+%     \draw_point_interpolate_curve_auxiii:ennnnn,
 %   }
 % \begin{macro}[EXP]{\draw_point_interpolate_curve_auxiv:nnnnnn}
 % \begin{macro}[EXP]
 %   {
 %     \draw_point_interpolate_curve_auxv:nnw,
-%     \draw_point_interpolate_curve_auxv:ffw,
+%     \draw_point_interpolate_curve_auxv:eew,
 %   }
 % \begin{macro}[EXP]{\draw_point_interpolate_curve_auxvi:n}
 % \begin{macro}[EXP]{\draw_point_interpolate_curve_auxvii:nnnnnnnn}
 % \begin{macro}[EXP]
 %   {
 %     \draw_point_interpolate_curve_auxviii:nnnnnn,
-%     \draw_point_interpolate_curve_auxviii:ffnnnn,
+%     \draw_point_interpolate_curve_auxviii:eennnn,
 %   }
 %   Here we start with a proportion of the curve ($p$) and four points
 %   \begin{enumerate}
@@ -798,7 +805,7 @@
   }
 \cs_new:Npn \@@_point_interpolate_curve_auxi:nnnnnnnnn #1#2#3#4#5#6#7#8#9
   {
-    \@@_point_interpolate_curve_auxii:fnnnnnnnn
+    \@@_point_interpolate_curve_auxii:ennnnnnnn
       { \fp_eval:n {#1} }
       {#2} {#3} {#4} {#5} {#6} {#7} {#8} {#9}
   }
@@ -831,12 +838,12 @@
 \cs_new:Npn \@@_point_interpolate_curve_auxii:nnnnnnnnn
   #1#2#3#4#5#6#7#8#9
   {
-    \@@_point_interpolate_curve_auxiii:fnnnnn
+    \@@_point_interpolate_curve_auxiii:ennnnn
       { \fp_eval:n { 1 - #1 } }
       {#1}
       { {#2} {#3} } { {#4} {#5} } { {#6} {#7} } { {#8} {#9} }
   }
-\cs_generate_variant:Nn \@@_point_interpolate_curve_auxii:nnnnnnnnn { f }
+\cs_generate_variant:Nn \@@_point_interpolate_curve_auxii:nnnnnnnnn { e }
 %    \begin{macrocode}
 %   We need to do the first cycle, but haven't got enough arguments to keep
 %   everything in play at once. So her ewe use a but of argument re-ordering
@@ -850,10 +857,10 @@
     \prg_do_nothing:
     \@@_point_interpolate_curve_auxvi:n { {#1} {#2} }
   }
-\cs_generate_variant:Nn \@@_point_interpolate_curve_auxiii:nnnnnn { f }
+\cs_generate_variant:Nn \@@_point_interpolate_curve_auxiii:nnnnnn { e }
 \cs_new:Npn \@@_point_interpolate_curve_auxiv:nnnnnn #1#2#3#4#5#6
   {
-    \@@_point_interpolate_curve_auxv:ffw
+    \@@_point_interpolate_curve_auxv:eew
       { \fp_eval:n { #1 * #3 + #2 * #5 } }
       { \fp_eval:n { #1 * #4 + #2 * #6 } }
   }
@@ -864,7 +871,7 @@
     \prg_do_nothing:
     #4 { #5 {#1} {#2} }
   }
-\cs_generate_variant:Nn \@@_point_interpolate_curve_auxv:nnw { ff }
+\cs_generate_variant:Nn \@@_point_interpolate_curve_auxv:nnw { ee }
 %    \begin{macrocode}
 %   Get the arguments back into the right places and to the second and
 %   third cycles directly.
@@ -873,7 +880,7 @@
   { \@@_point_interpolate_curve_auxvii:nnnnnnnn #1 }
 \cs_new:Npn \@@_point_interpolate_curve_auxvii:nnnnnnnn #1#2#3#4#5#6#7#8
   {
-    \@@_point_interpolate_curve_auxviii:ffffnn
+    \@@_point_interpolate_curve_auxviii:eeeenn
       { \fp_eval:n { #1 * #5 + #2 * #3 } }
       { \fp_eval:n { #1 * #6 + #2 * #4 } }
       { \fp_eval:n { #1 * #7 + #2 * #5 } }
@@ -885,7 +892,7 @@
     \draw_point:n
       { #5 * #3 + #6 * #1 , #5 * #4 + #6 * #2 }
   }
-\cs_generate_variant:Nn \@@_point_interpolate_curve_auxviii:nnnnnn { ffff }
+\cs_generate_variant:Nn \@@_point_interpolate_curve_auxviii:nnnnnn { eeee }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -954,14 +961,14 @@
 %    \end{macrocode}
 %
 % \begin{macro}[EXP]{\draw_point_vec:nn}
-% \begin{macro}[EXP]{\@@_point_vec:nn, \@@_point_vec:ff}
+% \begin{macro}[EXP]{\@@_point_vec:nn, \@@_point_vec:ee}
 % \begin{macro}[EXP]{\draw_point_vec:nnn}
-% \begin{macro}[EXP]{\@@_point_vec:nnn, \@@_point_vec:fff}
+% \begin{macro}[EXP]{\@@_point_vec:nnn, \@@_point_vec:eee}
 %   Force a single evaluation of each factor, then use these to work out the
 %   underlying point.
 %    \begin{macrocode}
 \cs_new:Npn \draw_point_vec:nn #1#2
-  { \@@_point_vec:ff { \fp_eval:n {#1} } { \fp_eval:n {#2} } }
+  { \@@_point_vec:ee { \fp_eval:n {#1} } { \fp_eval:n {#2} } }
 \cs_new:Npn \@@_point_vec:nn #1#2
   {
     \draw_point:n
@@ -970,10 +977,10 @@
         #1 * \l_@@_xvec_y_dim + #2 * \l_@@_yvec_y_dim
       }
   }
-\cs_generate_variant:Nn \@@_point_vec:nn { ff }
+\cs_generate_variant:Nn \@@_point_vec:nn { ee }
 \cs_new:Npn \draw_point_vec:nnn #1#2#3
   {
-    \@@_point_vec:fff
+    \@@_point_vec:eee
       { \fp_eval:n {#1} } { \fp_eval:n {#2} } { \fp_eval:n {#3} }
   }
 \cs_new:Npn \@@_point_vec:nnn #1#2#3
@@ -989,7 +996,7 @@
           + #3 * \l_@@_zvec_y_dim
     }
   }
-\cs_generate_variant:Nn \@@_point_vec:nnn { fff }
+\cs_generate_variant:Nn \@@_point_vec:nnn { eee }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -998,13 +1005,13 @@
 %
 % \begin{macro}[EXP]{\draw_point_vec_polar:nn}
 % \begin{macro}[EXP]{\draw_point_vec_polar:nnn}
-% \begin{macro}[EXP]{\@@_point_vec_polar:nnn, \@@_point_vec_polar:fnn}
+% \begin{macro}[EXP]{\@@_point_vec_polar:nnn, \@@_point_vec_polar:enn}
 %   Much the same as the core polar approach.
 %    \begin{macrocode}
 \cs_new:Npn \draw_point_vec_polar:nn #1#2
   { \draw_point_vec_polar:nnn {#1} {#1} {#2} }
 \cs_new:Npn \draw_point_vec_polar:nnn #1#2#3
-  { \@@_draw_vec_polar:fnn { \fp_eval:n {#3} } {#1} {#2} }
+  { \@@_draw_vec_polar:enn { \fp_eval:n {#3} } {#1} {#2} }
 \cs_new:Npn \@@_draw_vec_polar:nnn #1#2#3
   {
     \draw_point:n
@@ -1013,7 +1020,7 @@
         sind(#1) * (#3) * \l_@@_yvec_y_dim
      }
   }
-\cs_generate_variant:Nn \@@_draw_vec_polar:nnn { f }
+\cs_generate_variant:Nn \@@_draw_vec_polar:nnn { e }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
diff --git a/l3experimental/l3draw/l3draw-softpath.dtx b/l3experimental/l3draw/l3draw-softpath.dtx
index 3a3137460..d188814e1 100644
--- a/l3experimental/l3draw/l3draw-softpath.dtx
+++ b/l3experimental/l3draw/l3draw-softpath.dtx
@@ -328,7 +328,7 @@
 % \begin{macro}{\@@_softpath_round_roundpoint:NnnNnnNnn}
 % \begin{macro}{\@@_softpath_round_calc:NnnNnn}
 % \begin{macro}[EXP]
-%   {\@@_softpath_round_calc:nnnnnn, \@@_softpath_round_calc:fVnnnn}
+%   {\@@_softpath_round_calc:nnnnnn, \@@_softpath_round_calc:eVnnnn}
 % \begin{macro}[EXP]{\@@_softpath_round_calc:nnnnw}
 % \begin{macro}{\@@_softpath_round_close:nn}
 % \begin{macro}[EXP]{\@@_softpath_round_close:w}
@@ -507,7 +507,7 @@
     \tl_put_right:Ne \l_@@_softpath_part_tl
       {
         \exp_not:N #4
-        \@@_softpath_round_calc:fVnnnn
+        \@@_softpath_round_calc:eVnnnn
           {
             \draw_point_interpolate_distance:nnn
               \l_@@_softpath_corneri_dim
@@ -533,7 +533,7 @@
     \@@_softpath_round_calc:nnnnw {#3} {#4} {#5} {#6}
       #1 \s_@@_mark #2 \s_@@_stop
   }
-\cs_generate_variant:Nn \@@_softpath_round_calc:nnnnnn { fV }
+\cs_generate_variant:Nn \@@_softpath_round_calc:nnnnnn { eV }
 %    \end{macrocode}
 %   The calculations themselves are relatively straight-forward, as we use a
 %   quadratic Bézier curve.
diff --git a/l3experimental/l3draw/l3draw-transforms.dtx b/l3experimental/l3draw/l3draw-transforms.dtx
index 733b9df14..ff192e599 100644
--- a/l3experimental/l3draw/l3draw-transforms.dtx
+++ b/l3experimental/l3draw/l3draw-transforms.dtx
@@ -235,7 +235,7 @@
 % \end{macro}
 %
 % \begin{macro}{\draw_transform_matrix_invert:}
-% \begin{macro}{\@@_transform_invert:n, \@@_transform_invert:f}
+% \begin{macro}{\@@_transform_invert:n, \@@_transform_invert:e}
 % \begin{macro}{\draw_transform_shift_invert:}
 %   Standard mathematics: calculate the inverse matrix and use that, then
 %   undo the shifts.
@@ -244,7 +244,7 @@
   {
     \bool_if:NT \l_@@_matrix_active_bool
       {
-        \@@_transform_invert:f
+        \@@_transform_invert:e
           {
             \fp_eval:n
               { 
@@ -268,7 +268,7 @@
     \fp_set:Nn \l_@@_matrix_d_fp
       { \l_@@_matrix_a_fp * #1 }
   }
-\cs_generate_variant:Nn \@@_transform_invert:n { f }
+\cs_generate_variant:Nn \@@_transform_invert:n { e }
 \cs_new_protected:Npn \draw_transform_shift_invert:
   {
     \dim_set:Nn \l_@@_xshift_dim { -\l_@@_xshift_dim }
@@ -338,24 +338,24 @@
 % \begin{macro}{\draw_transform_rotate:n}
 % \begin{macro}
 %   {
-%     \@@_transform_rotate:n, \@@_transform_rotate:f,
-%     \@@_transform_rotate:nn, \@@_transform_rotate:ff
+%     \@@_transform_rotate:n, \@@_transform_rotate:e,
+%     \@@_transform_rotate:nn, \@@_transform_rotate:ee
 %   } 
 %   Slightly more involved: evaluate the angle only once, and the sine and
 %   cosine only once.
 %    \begin{macrocode}
 \cs_new_protected:Npn \draw_transform_rotate:n #1
-  { \@@_transform_rotate:f { \fp_eval:n {#1} } }
+  { \@@_transform_rotate:e { \fp_eval:n {#1} } }
 \cs_new_protected:Npn \@@_transform_rotate:n #1
   {
-    \@@_transform_rotate:ff 
+    \@@_transform_rotate:ee
       { \fp_eval:n { cosd(#1) } }
       { \fp_eval:n { sind(#1) } }
   }
-\cs_generate_variant:Nn \@@_transform_rotate:n { f }
+\cs_generate_variant:Nn \@@_transform_rotate:n { e }
 \cs_new_protected:Npn \@@_transform_rotate:nn #1#2
   { \draw_transform_matrix:nnnn {#1} {#2} { -#2 } { #1 } }
-\cs_generate_variant:Nn \@@_transform_rotate:nn { ff }
+\cs_generate_variant:Nn \@@_transform_rotate:nn { ee }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}





More information about the latex3-commits mailing list.