[latex3-commits] [git/LaTeX3-latex3-latex3] master: Remove \__dim_eval:n (2f2420f)

Joseph Wright joseph.wright at morningstar2.co.uk
Sat Mar 31 20:54:42 CEST 2018


Repository : https://github.com/latex3/latex3
On branch  : master
Link       : https://github.com/latex3/latex3/commit/2f2420fb0943e817c3b998ca2c84a735831fab85

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

commit 2f2420fb0943e817c3b998ca2c84a735831fab85
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date:   Fri Mar 30 22:14:16 2018 +0100

    Remove \__dim_eval:n
    
    There were a couple of tricky cases here, at least in part due to the
    lack of a set of interfaces for \kern.


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

2f2420fb0943e817c3b998ca2c84a735831fab85
 l3experimental/xcoffins/xcoffins.dtx        |   10 ++---
 l3experimental/xgalley/l3galley.dtx         |    4 +-
 l3kernel/expl3.dtx                          |    8 ++--
 l3kernel/l3box.dtx                          |   54 +++++++++++++++++----------
 l3kernel/l3candidates.dtx                   |   29 ++++++++++----
 l3kernel/l3fp-aux.dtx                       |    3 +-
 l3kernel/l3fp-parse.dtx                     |    8 ++--
 l3kernel/l3skip.dtx                         |   41 +-------------------
 l3kernel/testfiles/m3expl001.luatex.tlg     |    6 ++-
 l3kernel/testfiles/m3expl001.ptex.tlg       |    6 ++-
 l3kernel/testfiles/m3expl001.tlg            |    6 ++-
 l3kernel/testfiles/m3expl001.uptex.tlg      |    6 ++-
 l3kernel/testfiles/m3expl001.xetex.tlg      |    6 ++-
 l3kernel/testfiles/m3expl003.luatex.tlg     |    6 ++-
 l3kernel/testfiles/m3expl003.ptex.tlg       |    6 ++-
 l3kernel/testfiles/m3expl003.tlg            |    6 ++-
 l3kernel/testfiles/m3expl003.uptex.tlg      |    6 ++-
 l3kernel/testfiles/m3expl003.xetex.tlg      |    6 ++-
 l3packages/xfrac/xfrac.dtx                  |   10 ++---
 l3trial/l3kernel-extras/l3kernel-extras.dtx |    8 +++-
 l3trial/xbox/xbox.dtx                       |   18 ++++-----
 l3trial/xfont/xfss.dtx                      |    8 ++--
 22 files changed, 148 insertions(+), 113 deletions(-)

diff --git a/l3experimental/xcoffins/xcoffins.dtx b/l3experimental/xcoffins/xcoffins.dtx
index e4a7b5b..9ab331c 100644
--- a/l3experimental/xcoffins/xcoffins.dtx
+++ b/l3experimental/xcoffins/xcoffins.dtx
@@ -1,6 +1,6 @@
 % \iffalse meta-comment
 %
-%% File: xcoffins.dtx Copyright(C) 2010-2012,2014,2016,2017 The LaTeX3 Project
+%% File: xcoffins.dtx Copyright(C) 2010-2012,2014,2016-2018 The LaTeX3 Project
 %
 % It may be distributed and/or modified under the conditions of the
 % LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -890,13 +890,13 @@
 %   sign, \emph{etc.}
 %    \begin{macrocode}
 \NewDocumentCommand \CoffinDepth { m }
-  { \coffin_dp:N #1 }
+  { \dim_eval:n { \coffin_dp:N #1 } }
 \NewDocumentCommand \CoffinHeight { m }
-  { \coffin_ht:N #1 }
+  { \dim_eval:n { \coffin_ht:N #1 } }
 \NewDocumentCommand \CoffinTotalHeight { m }
-  { \__dim_eval:n { \coffin_ht:N #1 + \coffin_dp:N #1 } }
+  { \dim_eval:n { \coffin_ht:N #1 + \coffin_dp:N #1 } }
 \NewDocumentCommand \CoffinWidth { m }
-  { \coffin_wd:N #1 }
+  { \dim_eval:n { \coffin_wd:N #1 } }
 %    \end{macrocode}
 % \end{macro}
 %
diff --git a/l3experimental/xgalley/l3galley.dtx b/l3experimental/xgalley/l3galley.dtx
index 699fc11..f3bfb38 100644
--- a/l3experimental/xgalley/l3galley.dtx
+++ b/l3experimental/xgalley/l3galley.dtx
@@ -1870,8 +1870,8 @@
   }
 \cs_new:Npn \@@_parshape_set_indents:nn #1#2
   {
-    \__dim_eval:n { \l_galley_total_left_margin_dim + #1 }
-    \__dim_eval:n { \l_galley_text_width_dim - ( #1 + #2 ) }
+    \dim_eval:n { \l_galley_total_left_margin_dim + #1 } \exp_stop_f:
+    \dim_eval:n { \l_galley_text_width_dim - ( #1 + #2 ) } \exp_stop_f:
   }
 %    \end{macrocode}
 %   Calculating cutouts is by far the most complex operation here. The
diff --git a/l3kernel/expl3.dtx b/l3kernel/expl3.dtx
index a3435b5..1a8c0ad 100644
--- a/l3kernel/expl3.dtx
+++ b/l3kernel/expl3.dtx
@@ -1473,8 +1473,8 @@
         \hbox_set:Nn #1
           {
             \resizebox *
-              { \__dim_eval:n {#2} }
-              { \__dim_eval:n {#3} }
+              { \dim_eval:n {#2} }
+              { \dim_eval:n {#3} }
               { \box_use:N #1 }
           }
       }
@@ -1482,7 +1482,7 @@
       {
         \hbox_set:Nn #1
           {
-            \resizebox * { ! } { \__dim_eval:n {#2} }
+            \resizebox * { ! } { \dim_eval:n {#2} }
               { \box_use:N #1 }
           }
       }
@@ -1490,7 +1490,7 @@
       {
         \hbox_set:Nn #1
           {
-            \resizebox * { \__dim_eval:n {#2} } { ! }
+            \resizebox * { \dim_eval:n {#2} } { ! }
               { \box_use:N #1 }
           }
       }
diff --git a/l3kernel/l3box.dtx b/l3kernel/l3box.dtx
index 5eec1bc..6e879c1 100644
--- a/l3kernel/l3box.dtx
+++ b/l3kernel/l3box.dtx
@@ -842,8 +842,22 @@
 %<@@=box>
 %    \end{macrocode}
 %
-%  The code in this module is very straight forward so I'm not going to
-%  comment it very extensively.
+% \subsection{Support code}
+%
+% \begin{macro}{\@@_dim_eval:w}
+% \begin{macro}{\@@_dim_eval:n}
+%   Evaluating a dimension expression expandably. The only
+%   difference with \cs{dim_eval:n} is the lack of \cs{dim_use:N}, to
+%   produce an internal dimension rather than expand it into characters.
+%    \begin{macrocode}
+\cs_new_eq:NN \@@_dim_eval:w \etex_dimexpr:D
+\__kernel_patch_args:nNNpn
+  { { \__kernel_chk_expr:nNnN {#1} \@@_dim_eval:w { } \@@_dim_eval:n } }
+\cs_new:Npn \@@_dim_eval:n #1
+  { \@@_dim_eval:w #1 \scan_stop: }
+%   \end{macrocode}
+% \end{macro}
+% \end{macro}
 %
 % \subsection{Creating and initialising boxes}
 %
@@ -978,11 +992,11 @@
 %   parentheses to catch early termination.
 %    \begin{macrocode}
 \cs_new_protected:Npn \box_set_dp:Nn #1#2
-  { \box_dp:N #1 \__dim_eval:n {#2} }
+  { \box_dp:N #1 \@@_dim_eval:n {#2} }
 \cs_new_protected:Npn \box_set_ht:Nn #1#2
-  { \box_ht:N #1 \__dim_eval:n {#2} }
+  { \box_ht:N #1 \@@_dim_eval:n {#2} }
 \cs_new_protected:Npn \box_set_wd:Nn #1#2
-  { \box_wd:N #1 \__dim_eval:n {#2} }
+  { \box_wd:N #1 \@@_dim_eval:n {#2} }
 \cs_generate_variant:Nn \box_set_ht:Nn { c }
 \cs_generate_variant:Nn \box_set_dp:Nn { c }
 \cs_generate_variant:Nn \box_set_wd:Nn { c }
@@ -1014,13 +1028,13 @@
 %   parentheses to catch early termination.
 %    \begin{macrocode}
 \cs_new_protected:Npn \box_move_left:nn #1#2
-  { \tex_moveleft:D \__dim_eval:n {#1} #2 }
+  { \tex_moveleft:D \@@_dim_eval:n {#1} #2 }
 \cs_new_protected:Npn \box_move_right:nn #1#2
-  { \tex_moveright:D \__dim_eval:n {#1} #2 }
+  { \tex_moveright:D \@@_dim_eval:n {#1} #2 }
 \cs_new_protected:Npn \box_move_up:nn #1#2
-  { \tex_raise:D \__dim_eval:n {#1} #2 }
+  { \tex_raise:D \@@_dim_eval:n {#1} #2 }
 \cs_new_protected:Npn \box_move_down:nn #1#2
-  { \tex_lower:D \__dim_eval:n {#1} #2 }
+  { \tex_lower:D \@@_dim_eval:n {#1} #2 }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1222,13 +1236,13 @@
 \__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \hbox_set_to_wd:Nnn #1#2#3
   {
-    \tex_setbox:D #1 \tex_hbox:D to \__dim_eval:n {#2}
+    \tex_setbox:D #1 \tex_hbox:D to \@@_dim_eval:n {#2}
       { \color_group_begin: #3 \color_group_end: }
   }
 \__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \hbox_gset_to_wd:Nnn #1#2#3
   {
-    \tex_global:D \tex_setbox:D #1 \tex_hbox:D to \__dim_eval:n {#2}
+    \tex_global:D \tex_setbox:D #1 \tex_hbox:D to \@@_dim_eval:n {#2}
       { \color_group_begin: #3 \color_group_end: }
   }
 \cs_generate_variant:Nn \hbox_set_to_wd:Nnn { c }
@@ -1278,14 +1292,14 @@
 \__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \hbox_set_to_wd:Nnw #1#2
   {
-    \tex_setbox:D #1 \tex_hbox:D to \__dim_eval:n {#2}
+    \tex_setbox:D #1 \tex_hbox:D to \@@_dim_eval:n {#2}
       \c_group_begin_token
         \color_group_begin:
   }
 \__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \hbox_gset_to_wd:Nnw #1#2
   {
-    \tex_global:D \tex_setbox:D #1 \tex_hbox:D to \__dim_eval:n {#2}
+    \tex_global:D \tex_setbox:D #1 \tex_hbox:D to \@@_dim_eval:n {#2}
       \c_group_begin_token
         \color_group_begin:
   }
@@ -1302,7 +1316,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \hbox_to_wd:nn #1#2
    {
-     \tex_hbox:D to \__dim_eval:n {#1}
+     \tex_hbox:D to \@@_dim_eval:n {#1}
        { \color_group_begin: #2 \color_group_end: }
    }
 \cs_new_protected:Npn \hbox_to_zero:n #1
@@ -1362,7 +1376,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \vbox_to_ht:nn #1#2
   {
-    \tex_vbox:D to \__dim_eval:n {#1}
+    \tex_vbox:D to \@@_dim_eval:n {#1}
       { \color_group_begin: #2 \color_group_end: }
   }
 \cs_new_protected:Npn \vbox_to_zero:n #1
@@ -1429,13 +1443,13 @@
 \__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \vbox_set_to_ht:Nnn #1#2#3
   {
-    \tex_setbox:D #1 \tex_vbox:D to \__dim_eval:n {#2}
+    \tex_setbox:D #1 \tex_vbox:D to \@@_dim_eval:n {#2}
       { \color_group_begin: #3 \color_group_end: }
   }
 \__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \vbox_gset_to_ht:Nnn #1#2#3
   {
-    \tex_global:D \tex_setbox:D #1 \tex_vbox:D to \__dim_eval:n {#2}
+    \tex_global:D \tex_setbox:D #1 \tex_vbox:D to \@@_dim_eval:n {#2}
       { \color_group_begin: #3 \color_group_end: }
   }
 \cs_generate_variant:Nn \vbox_set_to_ht:Nnn  { c }
@@ -1485,14 +1499,14 @@
 \__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \vbox_set_to_ht:Nnw #1#2
   {
-    \tex_setbox:D #1 \tex_vbox:D to \__dim_eval:n {#2}
+    \tex_setbox:D #1 \tex_vbox:D to \@@_dim_eval:n {#2}
       \c_group_begin_token
         \color_group_begin:
   }
 \__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \vbox_gset_to_ht:Nnw #1#2
   {
-    \tex_global:D \tex_setbox:D #1 \tex_vbox:D to \__dim_eval:n {#2}
+    \tex_global:D \tex_setbox:D #1 \tex_vbox:D to \@@_dim_eval:n {#2}
       \c_group_begin_token
         \color_group_begin:
   }
@@ -1521,7 +1535,7 @@
 %    \begin{macrocode}
 \__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \vbox_set_split_to_ht:NNn #1#2#3
-  { \tex_setbox:D #1 \tex_vsplit:D #2 to \__dim_eval:n {#3} }
+  { \tex_setbox:D #1 \tex_vsplit:D #2 to \@@_dim_eval:n {#3} }
 %    \end{macrocode}
 % \end{macro}
 %
diff --git a/l3kernel/l3candidates.dtx b/l3kernel/l3candidates.dtx
index 8673bff..7921bc0 100644
--- a/l3kernel/l3candidates.dtx
+++ b/l3kernel/l3candidates.dtx
@@ -1159,9 +1159,9 @@
   {
     \hbox_set:Nn \l_@@_internal_box
       {
-        \tex_kern:D - \__dim_eval:n {#2}
+        \tex_kern:D - \@@_dim_eval:n {#2}
         \box_use:N #1
-        \tex_kern:D - \__dim_eval:n {#4}
+        \tex_kern:D - \@@_dim_eval:n {#4}
       }
 %    \end{macrocode}
 %   For the height and depth, there is a need to watch the baseline is
@@ -1225,9 +1225,9 @@
   {
     \hbox_set:Nn \l_@@_internal_box
       {
-        \tex_kern:D - \__dim_eval:n {#2}
+        \tex_kern:D - \@@_dim_eval:n {#2}
         \box_use:N #1
-        \tex_kern:D \__dim_eval:n { #4 - \box_wd:N #1 }
+        \tex_kern:D \@@_dim_eval:n { #4 - \box_wd:N #1 }
       }
     \dim_compare:nNnTF {#3} < \c_zero_dim
       {
@@ -1236,7 +1236,7 @@
             \box_move_down:nn \c_zero_dim
               { \box_use:N \l_@@_internal_box }
           }
-        \box_set_dp:Nn \l_@@_internal_box { - \__dim_eval:n {#3} }
+        \box_set_dp:Nn \l_@@_internal_box { - \@@_dim_eval:n {#3} }
       }
       {
         \hbox_set:Nn \l_@@_internal_box
@@ -1260,7 +1260,7 @@
       {
         \hbox_set:Nn \l_@@_internal_box
           {
-            \box_move_up:nn { - \__dim_eval:n {#5} }
+            \box_move_up:nn { - \@@_dim_eval:n {#5} }
               { \box_use:N \l_@@_internal_box }
           }
         \box_set_ht:Nn \l_@@_internal_box \c_zero_dim
@@ -1310,6 +1310,21 @@
 %<@@=coffin>
 %    \end{macrocode}
 %
+% \begin{macro}{\@@_dim_eval:w}
+% \begin{macro}{\@@_dim_eval:n}
+%   Evaluating a dimension expression expandably. The only
+%   difference with \cs{dim_eval:n} is the lack of \cs{dim_use:N}, to
+%   produce an internal dimension rather than expand it into characters.
+%    \begin{macrocode}
+\cs_new_eq:NN \@@_dim_eval:w \etex_dimexpr:D
+\__kernel_patch_args:nNNpn
+  { { \__kernel_chk_expr:nNnN {#1} \@@_dim_eval:w { } \@@_dim_eval:n } }
+\cs_new:Npn \@@_dim_eval:n #1
+  { \@@_dim_eval:w #1 \scan_stop: }
+%   \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
 % \subsubsection{Rotating coffins}
 %
 % \begin{variable}{\l_@@_sin_fp}
@@ -1400,7 +1415,7 @@
     \hbox_set:Nn \l_@@_internal_box
       {
         \tex_kern:D
-          \__dim_eval:n
+          \@@_dim_eval:n
             { \l_@@_bounding_shift_dim - \l_@@_left_corner_dim }
         \box_move_down:nn { \l_@@_bottom_corner_dim }
           { \box_use:N #1 }
diff --git a/l3kernel/l3fp-aux.dtx b/l3kernel/l3fp-aux.dtx
index 296fc81..316eb7f 100644
--- a/l3kernel/l3fp-aux.dtx
+++ b/l3kernel/l3fp-aux.dtx
@@ -66,12 +66,13 @@
 % \subsection{Access to primitives}
 %
 % \begin{macro}
-%   {\@@_int_eval:w,\@@_int_eval_end:, \@@_int_to_roman:w}
+%   {\@@_dim_eval:w, \@@_int_eval:w, \@@_int_eval_end:, \@@_int_to_roman:w}
 %   Largely for performance reasons, we need to directly access primitives
 %   rather than use \cs{int_eval:n}. This happens \emph{a lot}, so we
 %   use private names. The same is true for \tn{romannumeral}, although it
 %   is used much less widely.
 %    \begin{macrocode}
+\cs_new_eq:NN \@@_dim_eval:w \etex_dimexpr:D
 \cs_new_eq:NN \@@_int_eval:w \etex_numexpr:D
 \cs_new_eq:NN \@@_int_eval_end: \scan_stop:
 \cs_new_eq:NN \@@_int_to_roman:w \tex_romannumeral:D
diff --git a/l3kernel/l3fp-parse.dtx b/l3kernel/l3fp-parse.dtx
index ac07716..a58103f 100644
--- a/l3kernel/l3fp-parse.dtx
+++ b/l3kernel/l3fp-parse.dtx
@@ -840,7 +840,7 @@
 %   registers, the decimal rounding provided by \TeX{} does not
 %   accurately represent the binary value that it manipulates, so we
 %   extract this binary value as a number of scaled points with
-%   \cs{int_value:w} \cs{__dim_eval:w} \meta{decimal value} |pt|, and
+%   \cs{int_value:w} \cs{@@_dim_eval:w} \meta{decimal value} |pt|, and
 %   use an auxiliary of \cs{dim_to_fp:n}, which performs the
 %   multiplication by $2^{-16}$, correctly rounded.
 %    \begin{macrocode}
@@ -885,7 +885,7 @@
   {
     \exp_after:wN \@@_from_dim_test:ww
     \int_value:w #2 \exp_after:wN ,
-    \int_value:w \__dim_eval:w #1 pt ;
+    \int_value:w \@@_dim_eval:w #1 pt ;
   }
 %    \end{macrocode}
 %   The \tn{wd}, \tn{dp}, \tn{ht} primitives expect an integer argument.
@@ -905,7 +905,7 @@
   {
     \exp_after:wN \@@_from_dim_test:ww
     \exp_after:wN 0 \exp_after:wN ,
-    \int_value:w \__dim_eval:w
+    \int_value:w \@@_dim_eval:w
       \exp_after:wN \use:n \exp_after:wN { \tex_the:D #1 #2 } ;
   }
 %    \end{macrocode}
@@ -2032,7 +2032,7 @@
       {
         \exp_after:wN \@@_from_dim_test:ww
         \exp_after:wN 0 \exp_after:wN ,
-        \int_value:w \__dim_eval:w 1 #1 \exp_after:wN ;
+        \int_value:w \@@_dim_eval:w 1 #1 \exp_after:wN ;
         \exp:w \exp_end_continue_f:w \@@_parse_infix:NN
       }
   }
diff --git a/l3kernel/l3skip.dtx b/l3kernel/l3skip.dtx
index 28e1e3d..79e812c 100644
--- a/l3kernel/l3skip.dtx
+++ b/l3kernel/l3skip.dtx
@@ -1042,33 +1042,6 @@
 %   \end{texnote}
 % \end{function}
 %
-% \section{Internal functions}
-%
-% \begin{function}[EXP]{\__dim_eval:w, \__dim_eval_end:}
-%   \begin{syntax}
-%     \cs{__dim_eval:w} \meta{dimexpr} \cs{__dim_eval_end:}
-%   \end{syntax}
-%   Evaluates \meta{dimension expression} as described for \cs{dim_eval:n}.
-%   The evaluation stops when an unexpandable token which is not a valid
-%   part of a dimension is read or when \cs{__dim_eval_end:} is
-%   reached. The latter is gobbled by the scanner mechanism:
-%   \cs{__dim_eval_end:} itself is unexpandable but used correctly
-%   the entire construct is expandable.
-%   \begin{texnote}
-%     This is the \eTeX{} primitive \tn{dimexpr}.
-%   \end{texnote}
-% \end{function}
-%
-% \begin{function}[EXP]{\__dim_eval:n}
-%   \begin{syntax}
-%     \cs{__dim_eval:n} \Arg{dimexpr}
-%   \end{syntax}
-%   By default this expands to \cs{__dim_eval:w} \meta{dimexpr}
-%   \cs{__dim_eval_end:} but when debugging is enabled this expands to a
-%   more complicated construction that evaluates \meta{dimexpr} with
-%   parentheses and within a brace group to detect early termination.
-% \end{function}
-%
 % \end{documentation}
 %
 % \begin{implementation}
@@ -1656,18 +1629,6 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\@@_eval:n}
-%   Evaluating a dimension expression expandably.  This is for use in
-%   other modules, to avoid having to patch many commands.  The only
-%   difference with \cs{dim_eval:n} is the lack of \cs{dim_use:N}, to
-%   produce an internal dimension rather than expand it into characters.
-%    \begin{macrocode}
-\__kernel_patch_args:nNNpn
-  { { \__kernel_chk_expr:nNnN {#1} \@@_eval:w { } \@@_eval:n } }
-\cs_new:Npn \@@_eval:n #1 { \@@_eval:w #1 \@@_eval_end: }
-%    \end{macrocode}
-% \end{macro}
-%
 % \begin{macro}{\dim_use:N, \dim_use:c}
 %   Accessing a \meta{dim}.
 %    \begin{macrocode}
@@ -1711,7 +1672,7 @@
 % \end{macro}
 %
 % \begin{macro}[EXP]{\dim_to_decimal_in_bp:n}
-%   Conversion to big points is done using a scaling inside \cs{__dim_eval:w}
+%   Conversion to big points is done using a scaling inside \cs{@@_eval:w}
 %   as \eTeX{} does that using $64$-bit precision. Here, $800/803$ is the
 %   integer fraction for $72/72.27$. This is a common case so is hand-coded
 %   for accuracy (and speed).
diff --git a/l3kernel/testfiles/m3expl001.luatex.tlg b/l3kernel/testfiles/m3expl001.luatex.tlg
index fff96a0..6d16ae1 100644
--- a/l3kernel/testfiles/m3expl001.luatex.tlg
+++ b/l3kernel/testfiles/m3expl001.luatex.tlg
@@ -3309,7 +3309,6 @@ Defining \dim_step_inline:nnnn on line ...
 Defining \dim_step_variable:nnnNn on line ...
 Defining \__dim_step:NNnnnn on line ...
 Defining \dim_eval:n on line ...
-Defining \__dim_eval:n on line ...
 Defining \dim_use:N on line ...
 Defining \dim_use:c on line ...
 Defining \dim_to_decimal:n on line ...
@@ -3692,6 +3691,7 @@ Defining message LaTeX/kernel/nested-choice-key on line ...
 Defining message LaTeX/kernel/value-forbidden on line ...
 Defining message LaTeX/kernel/value-required on line ...
 Defining message LaTeX/kernel/show-key on line ...
+Defining \__fp_dim_eval:w on line ...
 Defining \__fp_int_eval:w on line ...
 Defining \__fp_int_eval_end: on line ...
 Defining \__fp_int_to_roman:w on line ...
@@ -5276,6 +5276,8 @@ Defining \__regex_trace:nnx on line ...
 Defining \g__regex_trace_regex_int on line ...
 \g__regex_trace_regex_int=\count...
 Defining \__regex_trace_states:n on line ...
+Defining \__box_dim_eval:w on line ...
+Defining \__box_dim_eval:n on line ...
 Defining \box_new:N on line ...
 Defining \box_new:c on line ...
 Defining \box_clear:N on line ...
@@ -5693,6 +5695,8 @@ Defining \clist_rand_item:n on line ...
 Defining \__clist_rand_item:nn on line ...
 Defining \clist_rand_item:N on line ...
 Defining \clist_rand_item:c on line ...
+Defining \__coffin_dim_eval:w on line ...
+Defining \__coffin_dim_eval:n on line ...
 Defining \l__coffin_sin_fp on line ...
 Defining \l__coffin_cos_fp on line ...
 Defining \l__coffin_bounding_prop on line ...
diff --git a/l3kernel/testfiles/m3expl001.ptex.tlg b/l3kernel/testfiles/m3expl001.ptex.tlg
index dc91916..95f0422 100644
--- a/l3kernel/testfiles/m3expl001.ptex.tlg
+++ b/l3kernel/testfiles/m3expl001.ptex.tlg
@@ -3246,7 +3246,6 @@ Defining \dim_step_inline:nnnn on line ...
 Defining \dim_step_variable:nnnNn on line ...
 Defining \__dim_step:NNnnnn on line ...
 Defining \dim_eval:n on line ...
-Defining \__dim_eval:n on line ...
 Defining \dim_use:N on line ...
 Defining \dim_use:c on line ...
 Defining \dim_to_decimal:n on line ...
@@ -3629,6 +3628,7 @@ Defining message LaTeX/kernel/nested-choice-key on line ...
 Defining message LaTeX/kernel/value-forbidden on line ...
 Defining message LaTeX/kernel/value-required on line ...
 Defining message LaTeX/kernel/show-key on line ...
+Defining \__fp_dim_eval:w on line ...
 Defining \__fp_int_eval:w on line ...
 Defining \__fp_int_eval_end: on line ...
 Defining \__fp_int_to_roman:w on line ...
@@ -5215,6 +5215,8 @@ Defining \__regex_trace:nnx on line ...
 Defining \g__regex_trace_regex_int on line ...
 \g__regex_trace_regex_int=\count...
 Defining \__regex_trace_states:n on line ...
+Defining \__box_dim_eval:w on line ...
+Defining \__box_dim_eval:n on line ...
 Defining \box_new:N on line ...
 Defining \box_new:c on line ...
 Defining \box_clear:N on line ...
@@ -5632,6 +5634,8 @@ Defining \clist_rand_item:n on line ...
 Defining \__clist_rand_item:nn on line ...
 Defining \clist_rand_item:N on line ...
 Defining \clist_rand_item:c on line ...
+Defining \__coffin_dim_eval:w on line ...
+Defining \__coffin_dim_eval:n on line ...
 Defining \l__coffin_sin_fp on line ...
 Defining \l__coffin_cos_fp on line ...
 Defining \l__coffin_bounding_prop on line ...
diff --git a/l3kernel/testfiles/m3expl001.tlg b/l3kernel/testfiles/m3expl001.tlg
index 1a0591d..1f597f2 100644
--- a/l3kernel/testfiles/m3expl001.tlg
+++ b/l3kernel/testfiles/m3expl001.tlg
@@ -3246,7 +3246,6 @@ Defining \dim_step_inline:nnnn on line ...
 Defining \dim_step_variable:nnnNn on line ...
 Defining \__dim_step:NNnnnn on line ...
 Defining \dim_eval:n on line ...
-Defining \__dim_eval:n on line ...
 Defining \dim_use:N on line ...
 Defining \dim_use:c on line ...
 Defining \dim_to_decimal:n on line ...
@@ -3629,6 +3628,7 @@ Defining message LaTeX/kernel/nested-choice-key on line ...
 Defining message LaTeX/kernel/value-forbidden on line ...
 Defining message LaTeX/kernel/value-required on line ...
 Defining message LaTeX/kernel/show-key on line ...
+Defining \__fp_dim_eval:w on line ...
 Defining \__fp_int_eval:w on line ...
 Defining \__fp_int_eval_end: on line ...
 Defining \__fp_int_to_roman:w on line ...
@@ -5215,6 +5215,8 @@ Defining \__regex_trace:nnx on line ...
 Defining \g__regex_trace_regex_int on line ...
 \g__regex_trace_regex_int=\count...
 Defining \__regex_trace_states:n on line ...
+Defining \__box_dim_eval:w on line ...
+Defining \__box_dim_eval:n on line ...
 Defining \box_new:N on line ...
 Defining \box_new:c on line ...
 Defining \box_clear:N on line ...
@@ -5632,6 +5634,8 @@ Defining \clist_rand_item:n on line ...
 Defining \__clist_rand_item:nn on line ...
 Defining \clist_rand_item:N on line ...
 Defining \clist_rand_item:c on line ...
+Defining \__coffin_dim_eval:w on line ...
+Defining \__coffin_dim_eval:n on line ...
 Defining \l__coffin_sin_fp on line ...
 Defining \l__coffin_cos_fp on line ...
 Defining \l__coffin_bounding_prop on line ...
diff --git a/l3kernel/testfiles/m3expl001.uptex.tlg b/l3kernel/testfiles/m3expl001.uptex.tlg
index 9d1a831..f7a8537 100644
--- a/l3kernel/testfiles/m3expl001.uptex.tlg
+++ b/l3kernel/testfiles/m3expl001.uptex.tlg
@@ -3246,7 +3246,6 @@ Defining \dim_step_inline:nnnn on line ...
 Defining \dim_step_variable:nnnNn on line ...
 Defining \__dim_step:NNnnnn on line ...
 Defining \dim_eval:n on line ...
-Defining \__dim_eval:n on line ...
 Defining \dim_use:N on line ...
 Defining \dim_use:c on line ...
 Defining \dim_to_decimal:n on line ...
@@ -3629,6 +3628,7 @@ Defining message LaTeX/kernel/nested-choice-key on line ...
 Defining message LaTeX/kernel/value-forbidden on line ...
 Defining message LaTeX/kernel/value-required on line ...
 Defining message LaTeX/kernel/show-key on line ...
+Defining \__fp_dim_eval:w on line ...
 Defining \__fp_int_eval:w on line ...
 Defining \__fp_int_eval_end: on line ...
 Defining \__fp_int_to_roman:w on line ...
@@ -5213,6 +5213,8 @@ Defining \__regex_trace:nnx on line ...
 Defining \g__regex_trace_regex_int on line ...
 \g__regex_trace_regex_int=\count...
 Defining \__regex_trace_states:n on line ...
+Defining \__box_dim_eval:w on line ...
+Defining \__box_dim_eval:n on line ...
 Defining \box_new:N on line ...
 Defining \box_new:c on line ...
 Defining \box_clear:N on line ...
@@ -5630,6 +5632,8 @@ Defining \clist_rand_item:n on line ...
 Defining \__clist_rand_item:nn on line ...
 Defining \clist_rand_item:N on line ...
 Defining \clist_rand_item:c on line ...
+Defining \__coffin_dim_eval:w on line ...
+Defining \__coffin_dim_eval:n on line ...
 Defining \l__coffin_sin_fp on line ...
 Defining \l__coffin_cos_fp on line ...
 Defining \l__coffin_bounding_prop on line ...
diff --git a/l3kernel/testfiles/m3expl001.xetex.tlg b/l3kernel/testfiles/m3expl001.xetex.tlg
index 061e27c..9dffc78 100644
--- a/l3kernel/testfiles/m3expl001.xetex.tlg
+++ b/l3kernel/testfiles/m3expl001.xetex.tlg
@@ -3307,7 +3307,6 @@ Defining \dim_step_inline:nnnn on line ...
 Defining \dim_step_variable:nnnNn on line ...
 Defining \__dim_step:NNnnnn on line ...
 Defining \dim_eval:n on line ...
-Defining \__dim_eval:n on line ...
 Defining \dim_use:N on line ...
 Defining \dim_use:c on line ...
 Defining \dim_to_decimal:n on line ...
@@ -3690,6 +3689,7 @@ Defining message LaTeX/kernel/nested-choice-key on line ...
 Defining message LaTeX/kernel/value-forbidden on line ...
 Defining message LaTeX/kernel/value-required on line ...
 Defining message LaTeX/kernel/show-key on line ...
+Defining \__fp_dim_eval:w on line ...
 Defining \__fp_int_eval:w on line ...
 Defining \__fp_int_eval_end: on line ...
 Defining \__fp_int_to_roman:w on line ...
@@ -5253,6 +5253,8 @@ Defining \__regex_trace:nnx on line ...
 Defining \g__regex_trace_regex_int on line ...
 \g__regex_trace_regex_int=\count...
 Defining \__regex_trace_states:n on line ...
+Defining \__box_dim_eval:w on line ...
+Defining \__box_dim_eval:n on line ...
 Defining \box_new:N on line ...
 Defining \box_new:c on line ...
 Defining \box_clear:N on line ...
@@ -5670,6 +5672,8 @@ Defining \clist_rand_item:n on line ...
 Defining \__clist_rand_item:nn on line ...
 Defining \clist_rand_item:N on line ...
 Defining \clist_rand_item:c on line ...
+Defining \__coffin_dim_eval:w on line ...
+Defining \__coffin_dim_eval:n on line ...
 Defining \l__coffin_sin_fp on line ...
 Defining \l__coffin_cos_fp on line ...
 Defining \l__coffin_bounding_prop on line ...
diff --git a/l3kernel/testfiles/m3expl003.luatex.tlg b/l3kernel/testfiles/m3expl003.luatex.tlg
index fff96a0..6d16ae1 100644
--- a/l3kernel/testfiles/m3expl003.luatex.tlg
+++ b/l3kernel/testfiles/m3expl003.luatex.tlg
@@ -3309,7 +3309,6 @@ Defining \dim_step_inline:nnnn on line ...
 Defining \dim_step_variable:nnnNn on line ...
 Defining \__dim_step:NNnnnn on line ...
 Defining \dim_eval:n on line ...
-Defining \__dim_eval:n on line ...
 Defining \dim_use:N on line ...
 Defining \dim_use:c on line ...
 Defining \dim_to_decimal:n on line ...
@@ -3692,6 +3691,7 @@ Defining message LaTeX/kernel/nested-choice-key on line ...
 Defining message LaTeX/kernel/value-forbidden on line ...
 Defining message LaTeX/kernel/value-required on line ...
 Defining message LaTeX/kernel/show-key on line ...
+Defining \__fp_dim_eval:w on line ...
 Defining \__fp_int_eval:w on line ...
 Defining \__fp_int_eval_end: on line ...
 Defining \__fp_int_to_roman:w on line ...
@@ -5276,6 +5276,8 @@ Defining \__regex_trace:nnx on line ...
 Defining \g__regex_trace_regex_int on line ...
 \g__regex_trace_regex_int=\count...
 Defining \__regex_trace_states:n on line ...
+Defining \__box_dim_eval:w on line ...
+Defining \__box_dim_eval:n on line ...
 Defining \box_new:N on line ...
 Defining \box_new:c on line ...
 Defining \box_clear:N on line ...
@@ -5693,6 +5695,8 @@ Defining \clist_rand_item:n on line ...
 Defining \__clist_rand_item:nn on line ...
 Defining \clist_rand_item:N on line ...
 Defining \clist_rand_item:c on line ...
+Defining \__coffin_dim_eval:w on line ...
+Defining \__coffin_dim_eval:n on line ...
 Defining \l__coffin_sin_fp on line ...
 Defining \l__coffin_cos_fp on line ...
 Defining \l__coffin_bounding_prop on line ...
diff --git a/l3kernel/testfiles/m3expl003.ptex.tlg b/l3kernel/testfiles/m3expl003.ptex.tlg
index dc91916..95f0422 100644
--- a/l3kernel/testfiles/m3expl003.ptex.tlg
+++ b/l3kernel/testfiles/m3expl003.ptex.tlg
@@ -3246,7 +3246,6 @@ Defining \dim_step_inline:nnnn on line ...
 Defining \dim_step_variable:nnnNn on line ...
 Defining \__dim_step:NNnnnn on line ...
 Defining \dim_eval:n on line ...
-Defining \__dim_eval:n on line ...
 Defining \dim_use:N on line ...
 Defining \dim_use:c on line ...
 Defining \dim_to_decimal:n on line ...
@@ -3629,6 +3628,7 @@ Defining message LaTeX/kernel/nested-choice-key on line ...
 Defining message LaTeX/kernel/value-forbidden on line ...
 Defining message LaTeX/kernel/value-required on line ...
 Defining message LaTeX/kernel/show-key on line ...
+Defining \__fp_dim_eval:w on line ...
 Defining \__fp_int_eval:w on line ...
 Defining \__fp_int_eval_end: on line ...
 Defining \__fp_int_to_roman:w on line ...
@@ -5215,6 +5215,8 @@ Defining \__regex_trace:nnx on line ...
 Defining \g__regex_trace_regex_int on line ...
 \g__regex_trace_regex_int=\count...
 Defining \__regex_trace_states:n on line ...
+Defining \__box_dim_eval:w on line ...
+Defining \__box_dim_eval:n on line ...
 Defining \box_new:N on line ...
 Defining \box_new:c on line ...
 Defining \box_clear:N on line ...
@@ -5632,6 +5634,8 @@ Defining \clist_rand_item:n on line ...
 Defining \__clist_rand_item:nn on line ...
 Defining \clist_rand_item:N on line ...
 Defining \clist_rand_item:c on line ...
+Defining \__coffin_dim_eval:w on line ...
+Defining \__coffin_dim_eval:n on line ...
 Defining \l__coffin_sin_fp on line ...
 Defining \l__coffin_cos_fp on line ...
 Defining \l__coffin_bounding_prop on line ...
diff --git a/l3kernel/testfiles/m3expl003.tlg b/l3kernel/testfiles/m3expl003.tlg
index 1a0591d..1f597f2 100644
--- a/l3kernel/testfiles/m3expl003.tlg
+++ b/l3kernel/testfiles/m3expl003.tlg
@@ -3246,7 +3246,6 @@ Defining \dim_step_inline:nnnn on line ...
 Defining \dim_step_variable:nnnNn on line ...
 Defining \__dim_step:NNnnnn on line ...
 Defining \dim_eval:n on line ...
-Defining \__dim_eval:n on line ...
 Defining \dim_use:N on line ...
 Defining \dim_use:c on line ...
 Defining \dim_to_decimal:n on line ...
@@ -3629,6 +3628,7 @@ Defining message LaTeX/kernel/nested-choice-key on line ...
 Defining message LaTeX/kernel/value-forbidden on line ...
 Defining message LaTeX/kernel/value-required on line ...
 Defining message LaTeX/kernel/show-key on line ...
+Defining \__fp_dim_eval:w on line ...
 Defining \__fp_int_eval:w on line ...
 Defining \__fp_int_eval_end: on line ...
 Defining \__fp_int_to_roman:w on line ...
@@ -5215,6 +5215,8 @@ Defining \__regex_trace:nnx on line ...
 Defining \g__regex_trace_regex_int on line ...
 \g__regex_trace_regex_int=\count...
 Defining \__regex_trace_states:n on line ...
+Defining \__box_dim_eval:w on line ...
+Defining \__box_dim_eval:n on line ...
 Defining \box_new:N on line ...
 Defining \box_new:c on line ...
 Defining \box_clear:N on line ...
@@ -5632,6 +5634,8 @@ Defining \clist_rand_item:n on line ...
 Defining \__clist_rand_item:nn on line ...
 Defining \clist_rand_item:N on line ...
 Defining \clist_rand_item:c on line ...
+Defining \__coffin_dim_eval:w on line ...
+Defining \__coffin_dim_eval:n on line ...
 Defining \l__coffin_sin_fp on line ...
 Defining \l__coffin_cos_fp on line ...
 Defining \l__coffin_bounding_prop on line ...
diff --git a/l3kernel/testfiles/m3expl003.uptex.tlg b/l3kernel/testfiles/m3expl003.uptex.tlg
index 9d1a831..f7a8537 100644
--- a/l3kernel/testfiles/m3expl003.uptex.tlg
+++ b/l3kernel/testfiles/m3expl003.uptex.tlg
@@ -3246,7 +3246,6 @@ Defining \dim_step_inline:nnnn on line ...
 Defining \dim_step_variable:nnnNn on line ...
 Defining \__dim_step:NNnnnn on line ...
 Defining \dim_eval:n on line ...
-Defining \__dim_eval:n on line ...
 Defining \dim_use:N on line ...
 Defining \dim_use:c on line ...
 Defining \dim_to_decimal:n on line ...
@@ -3629,6 +3628,7 @@ Defining message LaTeX/kernel/nested-choice-key on line ...
 Defining message LaTeX/kernel/value-forbidden on line ...
 Defining message LaTeX/kernel/value-required on line ...
 Defining message LaTeX/kernel/show-key on line ...
+Defining \__fp_dim_eval:w on line ...
 Defining \__fp_int_eval:w on line ...
 Defining \__fp_int_eval_end: on line ...
 Defining \__fp_int_to_roman:w on line ...
@@ -5213,6 +5213,8 @@ Defining \__regex_trace:nnx on line ...
 Defining \g__regex_trace_regex_int on line ...
 \g__regex_trace_regex_int=\count...
 Defining \__regex_trace_states:n on line ...
+Defining \__box_dim_eval:w on line ...
+Defining \__box_dim_eval:n on line ...
 Defining \box_new:N on line ...
 Defining \box_new:c on line ...
 Defining \box_clear:N on line ...
@@ -5630,6 +5632,8 @@ Defining \clist_rand_item:n on line ...
 Defining \__clist_rand_item:nn on line ...
 Defining \clist_rand_item:N on line ...
 Defining \clist_rand_item:c on line ...
+Defining \__coffin_dim_eval:w on line ...
+Defining \__coffin_dim_eval:n on line ...
 Defining \l__coffin_sin_fp on line ...
 Defining \l__coffin_cos_fp on line ...
 Defining \l__coffin_bounding_prop on line ...
diff --git a/l3kernel/testfiles/m3expl003.xetex.tlg b/l3kernel/testfiles/m3expl003.xetex.tlg
index 061e27c..9dffc78 100644
--- a/l3kernel/testfiles/m3expl003.xetex.tlg
+++ b/l3kernel/testfiles/m3expl003.xetex.tlg
@@ -3307,7 +3307,6 @@ Defining \dim_step_inline:nnnn on line ...
 Defining \dim_step_variable:nnnNn on line ...
 Defining \__dim_step:NNnnnn on line ...
 Defining \dim_eval:n on line ...
-Defining \__dim_eval:n on line ...
 Defining \dim_use:N on line ...
 Defining \dim_use:c on line ...
 Defining \dim_to_decimal:n on line ...
@@ -3690,6 +3689,7 @@ Defining message LaTeX/kernel/nested-choice-key on line ...
 Defining message LaTeX/kernel/value-forbidden on line ...
 Defining message LaTeX/kernel/value-required on line ...
 Defining message LaTeX/kernel/show-key on line ...
+Defining \__fp_dim_eval:w on line ...
 Defining \__fp_int_eval:w on line ...
 Defining \__fp_int_eval_end: on line ...
 Defining \__fp_int_to_roman:w on line ...
@@ -5253,6 +5253,8 @@ Defining \__regex_trace:nnx on line ...
 Defining \g__regex_trace_regex_int on line ...
 \g__regex_trace_regex_int=\count...
 Defining \__regex_trace_states:n on line ...
+Defining \__box_dim_eval:w on line ...
+Defining \__box_dim_eval:n on line ...
 Defining \box_new:N on line ...
 Defining \box_new:c on line ...
 Defining \box_clear:N on line ...
@@ -5670,6 +5672,8 @@ Defining \clist_rand_item:n on line ...
 Defining \__clist_rand_item:nn on line ...
 Defining \clist_rand_item:N on line ...
 Defining \clist_rand_item:c on line ...
+Defining \__coffin_dim_eval:w on line ...
+Defining \__coffin_dim_eval:n on line ...
 Defining \l__coffin_sin_fp on line ...
 Defining \l__coffin_cos_fp on line ...
 Defining \l__coffin_bounding_prop on line ...
diff --git a/l3packages/xfrac/xfrac.dtx b/l3packages/xfrac/xfrac.dtx
index 7aa052d..a9aefd8 100644
--- a/l3packages/xfrac/xfrac.dtx
+++ b/l3packages/xfrac/xfrac.dtx
@@ -745,12 +745,12 @@
         false =
           \cs_set:Npn \@@_relscale:
             {
-              \__dim_eval:n
+              \dim_eval:n
                 { \box_ht:N \l_@@_tmp_box + \box_dp:N \l_@@_tmp_box }
             },
         true  =
           \cs_set:Npn \@@_relscale:
-            { \box_ht:N \l_@@_slash_box }
+            { \dim_eval:n { \box_ht:N \l_@@_slash_box } }
       },
     scaling             =
       {
@@ -759,7 +759,7 @@
           \cs_set:Npn \@@_fontscale:
             {
               \fontsize
-                { \fp_use:N \l_@@_scale_factor_fp \@@_relscale: }
+                { \fp_to_dim:n { \l_@@_scale_factor_fp * \@@_relscale: } }
                 { \c_zero_dim }
               \selectfont
             }
@@ -842,7 +842,7 @@
           {
             \raisebox
               {
-                \__dim_eval:n
+                \dim_eval:n
                   {
                     \box_ht:N \l_@@_slash_box
                     - \box_dp:N \l_@@_slash_box
@@ -871,7 +871,7 @@
                     {
                       \raisebox
                         {
-                          \__dim_eval:n
+                          \dim_eval:n
                             {
                               \box_ht:N \l_@@_slash_box
                               - \dim_use:N \l_@@_numerator_top_sep_dim
diff --git a/l3trial/l3kernel-extras/l3kernel-extras.dtx b/l3trial/l3kernel-extras/l3kernel-extras.dtx
index 15453ce..7a00187 100644
--- a/l3trial/l3kernel-extras/l3kernel-extras.dtx
+++ b/l3trial/l3kernel-extras/l3kernel-extras.dtx
@@ -926,6 +926,7 @@
 % \subsection{\pkg{l3int}}
 %
 % \begin{macro}{\int_mul_truncate:nn}
+% \begin{macro}{\__int_dim_eval:w}
 %   Analogous to and more useful than \cs{int_div_truncate:nn}.  Uses
 %   the integer representation of lengths in \texttt{sp} for the
 %   calculation.  Since we cannot have fractional amounts of an
@@ -935,11 +936,14 @@
 \cs_new:Npn \int_mul_truncate:nn #1 #2
   {
     \int_value:w
-      \__dim_eval:n
-        { #2 \__dim_eval:n { \int_eval:n {#1} sp } }
+      \__int_dim_eval:w
+        #2 \__int_dim_eval:w \int_eval:n {#1} sp \scan_stop:
+        \__int_dim_eval:w
   }
+\cs_new_eq:NN \__int_dim_eval:w \etex_dimexpr:D
 %    \end{macrocode}
 % \end{macro}
+% \end{macro}
 %
 % \subsection{\pkg{l3token}}
 %
diff --git a/l3trial/xbox/xbox.dtx b/l3trial/xbox/xbox.dtx
index 0623f2d..6e0854b 100644
--- a/l3trial/xbox/xbox.dtx
+++ b/l3trial/xbox/xbox.dtx
@@ -1,6 +1,6 @@
 % \iffalse meta-comment
 %
-%% File: xbox.dtx Copyright(C) 2012-2017 The LaTeX3 Project
+%% File: xbox.dtx Copyright(C) 2012-2018 The LaTeX3 Project
 %%
 %% It may be distributed and/or modified under the conditions of the
 %% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -731,13 +731,13 @@
 \cs_new_protected:Npn \kern_horizontal:n #1
   {
     \mode_leave_vertical:
-    \tex_kern:D \__dim_eval:n {#1}
+    \tex_kern:D \dim_eval:n {#1} \exp_stop_f:
   }
 \cs_new_protected:Npn \kern_vertical:n #1
   {
     \mode_if_vertical:F
       { \par }
-    \tex_kern:D \__dim_eval:n {#1}
+    \tex_kern:D \dim_eval:n {#1}  \exp_stop_f:
   }
 %    \end{macrocode}
 % \end{macro}
@@ -754,19 +754,19 @@
     \hbox:n
       {
         \tex_vrule:D
-          height \__dim_eval:n {#1}
-          depth  \__dim_eval:n {#2}
-          width  \__dim_eval:n {#3}
+          height \dim_eval:n {#1} \exp_stop_f:
+          depth  \dim_eval:n {#2} \exp_stop_f:
+          width  \dim_eval:n {#3} \exp_stop_f:
       }
   }
 \cs_new_protected:Npn \rule_horizontal:nn #1#2
   {
     \tex_hrule:D
-      height \__dim_eval:n {#1}
-      depth  \__dim_eval:n {#2}
+      height \dim_eval:n {#1} \exp_stop_f:
+      depth  \dim_eval:n {#2} \exp_stop_f:
   }
 \cs_new_protected:Npn \rule_vertical:n #1
-  { \tex_vrule:D width \__dim_eval:n {#1} }
+  { \tex_vrule:D width \dim_eval:n {#1} \exp_stop_f: }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
diff --git a/l3trial/xfont/xfss.dtx b/l3trial/xfont/xfss.dtx
index 031bf8f..b977b9e 100644
--- a/l3trial/xfont/xfss.dtx
+++ b/l3trial/xfont/xfss.dtx
@@ -504,8 +504,8 @@
 %    \begin{macrocode}
 \cs_new:Npn \xfss_dim_strip_pt:n #1
   {
-    \exp_after:wN \xfss_dim_strip_pt:w
-    \dim_use:N \__dim_eval:n { #1 pt } \q_stop
+    \exp_after:wN \exp_after:wN \exp_after:wN \xfss_dim_strip_pt:w
+    \dim_eval:n { #1 pt } \q_stop
   }
 \use:x
   {
@@ -1989,9 +1989,9 @@
       {
         \tl_gset:Nn \exp_not:N \g_xfss_tf_size_tl  { \l_xfss_size_tl }
         \tl_gset:Nn \exp_not:N \g_xfss_sf_size_tl
-          { \__dim_strip_pt:n { \defaultscriptratio \l_xfss_tmpa_dim } }
+          { \dim_to_decimal:n { \defaultscriptratio \l_xfss_tmpa_dim } }
         \tl_gset:Nn \exp_not:N \g_xfss_ssf_size_tl
-          { \__dim_strip_pt:n { \defaultscriptscriptratio \l_xfss_tmpa_dim } }
+          { \dim_to_decimal:n { \defaultscriptscriptratio \l_xfss_tmpa_dim } }
         \bool_set_true:N \l_xfss_math_fonts_bool
       }
   }





More information about the latex3-commits mailing list