summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/diffcoeff/diffcoeff.sty
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/diffcoeff/diffcoeff.sty')
-rw-r--r--macros/latex/contrib/diffcoeff/diffcoeff.sty81
1 files changed, 41 insertions, 40 deletions
diff --git a/macros/latex/contrib/diffcoeff/diffcoeff.sty b/macros/latex/contrib/diffcoeff/diffcoeff.sty
index 8ecaf59950..4d2015a6b0 100644
--- a/macros/latex/contrib/diffcoeff/diffcoeff.sty
+++ b/macros/latex/contrib/diffcoeff/diffcoeff.sty
@@ -9,7 +9,7 @@
%
\RequirePackage{expl3}
\RequirePackage{xparse,l3keys2e,xtemplate}
-\ProvidesExplPackage {diffcoeff} {2021/12/24} {4.0}
+\ProvidesExplPackage {diffcoeff} {2022/06/14} {4.1}
{Write differential coefficients consistently and easily.}
%
\keys_define:nn { diffcoeff }
@@ -34,7 +34,6 @@
\tl_new:N \l__diffcoeff_curr_num_tl
\tl_new:N \l__diffcoeff_curr_var_tl
\tl_new:N \l__diffcoeff_paren_tl
-\tl_new:N \l__diffcoeff_trailing_tl
\tl_const:Nn \c__diffcoeff_digits_tl { 1234567890 }
@@ -60,10 +59,10 @@
\int_new:N \l__diffcoeff_parenvar_int
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\DeclareObjectType { derivative } { 5 }
+\DeclareObjectType { derivative } { 3 }
% defaults: ordinary deriv. values
-\DeclareTemplateInterface { derivative } { DERIV } { 5 }
+\DeclareTemplateInterface { derivative } { DERIV } { 3 }
{
op-symbol : tokenlist = d ,
op-symbol-alt : tokenlist = \KeyValue { op-symbol },
@@ -92,21 +91,21 @@
% #1 order spec(seqvar); #2 order override(tlvar)
% #3 derivand(tlvar); #4 denominator(seqvar)
% #5 subscript(tlvar)
-\DeclareTemplateCode { derivative } { DERIV } { 5 }
+\DeclareTemplateCode { derivative } { DERIV } { 3 }
{
op-symbol = \l__diffcoeff_op_tl,
op-symbol-alt = \l__diffcoeff_op_alt_tl,
op-order-sep = \l__diffcoeff_oporder_muskip,
derivand-sep = \l__diffcoeff_derivsep_muskip,
long-var-wrap = {
- dv = \cs_set:Npn \__diffcoeff_wrap_longvars:nn #1#2
- { \l__diffcoeff_op_alt_tl {#2}^{#1} },
- d(v) = \cs_set:Npn \__diffcoeff_wrap_longvars:nn #1#2
- { \l__diffcoeff_op_alt_tl {(#2)}^{#1} },
- (dv) = \cs_set:Npn \__diffcoeff_wrap_longvars:nn #1#2
- { (\l__diffcoeff_op_alt_tl {#2)}^{#1} },
- unknown = \cs_set:Npn \__diffcoeff_wrap_longvars:nn #1#2
- { \l__diffcoeff_op_alt_tl {(#2)}^{#1} }
+ dv = \cs_set_eq:NN \__diffcoeff_wrap_longvars:nn
+ \__diffcoeff_wrap_longvars_dv:nn,
+ d(v) = \cs_set_eq:NN \__diffcoeff_wrap_longvars:nn
+ \__diffcoeff_wrap_longvars_dvi:nn,
+ (dv) = \cs_set_eq:NN \__diffcoeff_wrap_longvars:nn
+ \__diffcoeff_wrap_longvars_dvii:nn,
+ unknown = \cs_set_eq:NN \__diffcoeff_wrap_longvars:nn
+ \__diffcoeff_wrap_longvars_dvi:nn
},
denom-term-sep = \l__diffcoeff_varsep_muskip,
term-sep-adjust = \l__diffcoeff_sep_adj_muskip,
@@ -133,7 +132,7 @@
{
\int_compare:nNnT { \l__diffcoeff_format_int } > { 1 }
{ \__diffcoeff_slash_vals: }
- \__diffcoeff_build:NNNNN #1#2#3#4#5
+ \__diffcoeff_build:nnn { #1 } { #2 } { #3 }
}
}
%%%%%%%%%%
@@ -145,8 +144,11 @@
\tl_set:NV \l__diffcoeff_ldelim_tl \l__diffcoeff_ldelimi_tl
\tl_set:NV \l__diffcoeff_rdelim_tl \l__diffcoeff_rdelimi_tl
}
-\cs_new:Npn \__diffcoeff_build:NNNNN #1#2#3#4#5
+% #1 diff'and; #2 vars clist; #3 trailing arg
+\cs_new:Npn \__diffcoeff_build:nnn #1#2#3
{
+ \tl_set:Nn \l__diffcoeff_derivand_tl { #1 }
+ \seq_set_from_clist:Nn \l__diffcoeff_vars_seq { #2 }
\bool_if:nT
{
!\l__diffcoeff_opwrap_bool &&
@@ -161,25 +163,27 @@
}
{ \__diffcoeff_derivsep: }
{ \tl_put_left:Nn \l__diffcoeff_derivand_tl { \mskip 0 mu } }
- \exp_args:NV\tl_if_novalue:nF #5
+ \tl_if_novalue:nF { #3 }
{ \l__diffcoeff_ldelim_tl \mskip \l__diffcoeff_elbowrm_muskip }
\bool_if:NTF \l__diffcoeff_single_var_bool
{
- \tl_set:Nx \l_tmpa_tl { \seq_use:Nn #4 { , } }
- \__diffcoeff_single:NNN #2 #3 \l_tmpa_tl
+ \tl_set:Nx \l_tmpa_tl { \seq_use:Nn \l__diffcoeff_vars_seq { , } }
+ \__diffcoeff_single:NNN \l__diffcoeff_tot_order_tl \l__diffcoeff_derivand_tl \l_tmpa_tl
}
{
\int_zero:N \l_tmpa_int
- \seq_mapthread_function:NNN #1 #4 \__diffcoeff_map_orders:nn
- \__diffcoeff_mixed:NNN #2 #3 \l__diffcoeff_denom_seq
+ \seq_mapthread_function:NNN \l__diffcoeff_orders_seq
+ \l__diffcoeff_vars_seq \__diffcoeff_map_orders:nn
+ \__diffcoeff_mixed:NNN \l__diffcoeff_tot_order_tl
+ \l__diffcoeff_derivand_tl \l__diffcoeff_denom_seq
}
- \exp_args:NV\tl_if_novalue:nF #5
+ \tl_if_novalue:nF { #3 }
{
\mskip \l__diffcoeff_elbowrm_muskip \l__diffcoeff_rdelim_tl
- \exp_args:NV\tl_if_empty:nF #5
+ \tl_if_empty:nF { #3 }
{
\c_math_subscript_token
- { \mskip \l__diffcoeff_subnudge_muskip #5 }
+ { \mskip \l__diffcoeff_subnudge_muskip { #3 } }
}
}
}
@@ -213,16 +217,22 @@
}
}
}
-% (ptl) form denom from #1 orders seq & #2 vars seq
+\cs_new:Npn \__diffcoeff_wrap_longvars_dv:nn #1#2
+ { \l__diffcoeff_op_alt_tl { {}#2 }^{ #1 } }
+\cs_new:Npn \__diffcoeff_wrap_longvars_dvi:nn #1#2
+ { \l__diffcoeff_op_alt_tl { {}(#2) }^{ #1 } }
+\cs_new:Npn \__diffcoeff_wrap_longvars_dvii:nn #1#2
+ { (\l__diffcoeff_op_alt_tl { {}#2) }^{ #1 } }
+% (ptl) form denom #1 from orders seq & #2 from vars seq
\cs_new_protected:Npn \__diffcoeff_map_orders:nn #1#2
{
\tl_if_eq:nnTF { #1 } { 1 }
- { \seq_put_right:Nn \l__diffcoeff_denom_seq { \l__diffcoeff_op_alt_tl #2 } }
+ { \seq_put_right:Nn \l__diffcoeff_denom_seq { \l__diffcoeff_op_alt_tl { #2 } } }
{
\int_compare:nNnTF { \tl_count:n { #2 } } = { 1 }
{
\seq_put_right:Nn \l__diffcoeff_denom_seq
- { \l__diffcoeff_op_alt_tl #2^{ #1 } }
+ { \l__diffcoeff_op_alt_tl { #2 }^{ #1 } }
}
{
\seq_put_right:Nn \l__diffcoeff_denom_seq
@@ -288,10 +298,10 @@
\cs_new_protected:Npn \__diffcoeff_denom_single:NN #1#2
{
\tl_if_eq:nVTF { 1 } #1
- { \l__diffcoeff_op_alt_tl #2 }
+ { \l__diffcoeff_op_alt_tl {}#2 }
{
\int_compare:nNnTF { \tl_count:N #2 } = { 1 }
- { \l__diffcoeff_op_alt_tl #2^{ #1 } }
+ { \l__diffcoeff_op_alt_tl {}#2^{ #1 } }
{ \__diffcoeff_wrap_longvars:nn { #1\vphantom) } { #2 } }
}
}
@@ -344,13 +354,9 @@
\IfBooleanTF #5
{ \bool_set_true:N \l__diffcoeff_altsep_bool }
{ \bool_set_false:N \l__diffcoeff_altsep_bool }
- \tl_set:Nn \l__diffcoeff_derivand_tl { #6 }
- \tl_set:Nn \l__diffcoeff_trailing_tl { #9 }
- \seq_set_from_clist:Nn \l__diffcoeff_vars_seq { #8 }
\seq_set_from_clist:Nn \l__diffcoeff_orders_seq { #3 }
- \int_set:Nn \l__diffcoeff_vars_int
- { \seq_count:N \l__diffcoeff_vars_seq }
\int_set:Nn \l_tmpb_int { \seq_count:N \l__diffcoeff_orders_seq }
+ \int_set:Nn \l__diffcoeff_vars_int { \clist_count:n { #8 } }
\int_compare:nNnTF { \l__diffcoeff_vars_int } = { 1 }
{ \bool_set_true:N \l__diffcoeff_single_var_bool }
{
@@ -359,7 +365,7 @@
\msg_error:nnxxxx { diffcoeff } { numbers-conflict }
{ \int_use:N \l__diffcoeff_vars_int } { \int_use:N \l_tmpb_int }
{ \seq_use:Nn \l__diffcoeff_orders_seq { , } }
- { \seq_use:Nn \l__diffcoeff_vars_seq { , } }
+ { \clist_use:nn { #8 } { , } }
}
{ % pad orders seq if nec.
\int_step_inline:nnnn
@@ -385,12 +391,7 @@
\int_zero:N \l__diffcoeff_format_int
\IfBooleanT #2 { \int_incr:N \l__diffcoeff_format_int }
\IfBooleanT #7 { \int_add:Nn \l__diffcoeff_format_int { 2 } }
- \UseInstance { derivative } { ord\l__diffcoeff_type_tl }
- \l__diffcoeff_orders_seq
- \l__diffcoeff_tot_order_tl
- \l__diffcoeff_derivand_tl
- \l__diffcoeff_vars_seq
- \l__diffcoeff_trailing_tl
+ \UseInstance { derivative } { ord\l__diffcoeff_type_tl } {#6}{#8}{#9}
\group_end:
} % end of \diff
%%%%%%%%%%%%%%%%%%%