diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx index 981e642653b..92307fbacf7 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx @@ -35,8 +35,8 @@ %% % %<*driver> -\RequirePackage{l3names} -\GetIdInfo$Id: l3fp-assign.dtx 3986 2012-07-15 19:23:51Z joseph $ +\RequirePackage{l3bootstrap} +\GetIdInfo$Id: l3fp-assign.dtx 4082 2012-08-12 12:14:17Z bruno $ {L3 Floating-point assignments} \documentclass[full]{l3doc} \begin{document} @@ -156,16 +156,21 @@ % \fp_sub:Nn, \fp_sub:cn, \fp_gsub:Nn, \fp_gsub:cn, % } % \begin{macro}[aux]{\@@_add:NNNn} -% The auxiliary's arguments are 1: the assignment function, 2: the -% operation, 3: the fp variable, 4: the second operand. The -% parentheses around the second operand are needed because |+| and |-| -% are not the operations with the lowest priority. +% For the sake of error recovery we should not simply set |#1| to +% $|#1| \pm (|#2|)$: for instance, if |#2| is % ^^A( +% |0)+2|, the parsing error would be raised at the last closing +% parenthesis rather than at the closing parenthesis in the user +% argument. Thus we evaluate |#2| instead of just putting +% parentheses. As an optimization we use \cs{@@_parse:n} rather than +% \cs{fp_eval:n}, which would convert the result away from the +% internal representation and back. % \begin{macrocode} \cs_new_protected_nopar:Npn \fp_add:Nn { \@@_add:NNNn \fp_set:Nn + } \cs_new_protected_nopar:Npn \fp_gadd:Nn { \@@_add:NNNn \fp_gset:Nn + } \cs_new_protected_nopar:Npn \fp_sub:Nn { \@@_add:NNNn \fp_set:Nn - } \cs_new_protected_nopar:Npn \fp_gsub:Nn { \@@_add:NNNn \fp_gset:Nn - } -\cs_new_protected:Npn \@@_add:NNNn #1#2#3#4 { #1 #3 { #3 #2 (#4) } } +\cs_new_protected:Npn \@@_add:NNNn #1#2#3#4 + { #1 #3 { #3 #2 \@@_parse:n {#4} } } \cs_generate_variant:Nn \fp_add:Nn { c } \cs_generate_variant:Nn \fp_gadd:Nn { c } \cs_generate_variant:Nn \fp_sub:Nn { c } @@ -232,4 +237,4 @@ % % \PrintChanges % -% \PrintIndex
\ No newline at end of file +% \PrintIndex |