diff options
author | Karl Berry <karl@freefriends.org> | 2021-12-28 22:49:47 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-12-28 22:49:47 +0000 |
commit | a76a5a98b10442234e0a271beedc8e4d87b8fa2c (patch) | |
tree | 2366adbe7ad509d91c27d68fb2f179f5819a7b6a /Master/texmf-dist/tex | |
parent | 56ac1365c7005140628d290b0e96841fa38f6730 (diff) |
diffcoeff (28dec21)
git-svn-id: svn://tug.org/texlive/trunk@61432 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/diffcoeff/diffcoeff-doc.def | 7 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/diffcoeff/diffcoeff.sty | 186 |
2 files changed, 122 insertions, 71 deletions
diff --git a/Master/texmf-dist/tex/latex/diffcoeff/diffcoeff-doc.def b/Master/texmf-dist/tex/latex/diffcoeff/diffcoeff-doc.def index 8b6b415acfa..884d41760bf 100644 --- a/Master/texmf-dist/tex/latex/diffcoeff/diffcoeff-doc.def +++ b/Master/texmf-dist/tex/latex/diffcoeff/diffcoeff-doc.def @@ -18,15 +18,13 @@ \diffdef { up } { op-symbol = \mathrm{d}, - op-order-sep = 0 mu , - /-op-order-sep = 0 mu + op-order-sep = 0 mu } \diffdef { Up } { op-symbol = \mathrm{D}, - op-order-sep = 0 mu , - /-op-order-sep = 0 mu + op-order-sep = 0 mu } % wrap long vars: (d longvar) @@ -80,7 +78,6 @@ { op-symbol = \Delta , op-order-sep = 0 mu , - /-op-order-sep = 0 mu , left-delim = \left ( , right-delim = \right ), subscr-nudge = -6 mu diff --git a/Master/texmf-dist/tex/latex/diffcoeff/diffcoeff.sty b/Master/texmf-dist/tex/latex/diffcoeff/diffcoeff.sty index 3d952355faf..8ecaf599508 100644 --- a/Master/texmf-dist/tex/latex/diffcoeff/diffcoeff.sty +++ b/Master/texmf-dist/tex/latex/diffcoeff/diffcoeff.sty @@ -9,22 +9,26 @@ % \RequirePackage{expl3} \RequirePackage{xparse,l3keys2e,xtemplate} -\ProvidesExplPackage {diffcoeff} {2019/12/28} {3.2} +\ProvidesExplPackage {diffcoeff} {2021/12/24} {4.0} {Write differential coefficients consistently and easily.} -% +% \keys_define:nn { diffcoeff } { - ISO .bool_gset:N = \g__diffcoeff_ISO_bool, - def-file .tl_gset:N = \g__diffcoeff_def_tl , - def-file .initial:n = diffcoeff , + ISO .bool_set:N = \l__diffcoeff_ISO_bool, + spaced .int_set:N = \l__diffcoeff_spaced_int, + spaced .default:n = 1, + spaced .initial:n = 0, + def-file .tl_gset:N = \g__diffcoeff_def_tl, + def-file .initial:n = diffcoeff, def-file .default:n = diffcoeff } \ProcessKeysPackageOptions { diffcoeff } -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \cs_generate_variant:Nn \tl_if_eq:nnTF { nV } \tl_new:N \l__diffcoeff_oporder_tl -\tl_new:N \l__diffcoeff_differentiand_tl +\tl_new:N \l__diffcoeff_derivand_tl \tl_new:N \l__diffcoeff_type_tl \tl_new:N \l__diffcoeff_tot_order_tl \tl_new:N \l__diffcoeff_curr_num_tl @@ -45,6 +49,8 @@ \bool_new:N \l__diffcoeff_single_var_bool \bool_new:N \l__diffcoeff_opwrap_bool \bool_new:N \l__diffcoeff_integ_bool +\bool_new:N \l__diffcoeff_spaced_bool +\bool_new:N \l__diffcoeff_altsep_bool \int_new:N \l__diffcoeff_vars_int \int_new:N \l__diffcoeff_format_int @@ -62,36 +68,36 @@ op-symbol : tokenlist = d , op-symbol-alt : tokenlist = \KeyValue { op-symbol }, op-order-sep : muskip = 1 mu , - /-op-order-sep : muskip = 1 mu , - *-op-left : boolean = false , - *-italic-nudge : muskip = 3 mu , - */-op-wrap : boolean = true , + derivand-sep : muskip = 3 mu plus 1 mu minus 2 mu, long-var-wrap : choice { dv, d(v), (dv) } = d(v) , denom-term-sep : muskip = 2 mu , - /-denom-term-sep : muskip = 1 mu , term-sep-adjust : muskip = -1 mu , left-delim : tokenlist = \left . , right-delim : tokenlist = \right |, elbowroom : muskip = 0 mu , subscr-nudge : muskip = 0 mu , + *-derivand-sep : muskip = \KeyValue { derivand-sep }, + *-op-left : boolean = false , + *-italic-nudge : muskip = 3 mu , + /-derivand-sep : muskip = \KeyValue { derivand-sep }, + /-denom-term-sep : muskip = 1 mu , /-left-delim : tokenlist = ( , /-right-delim : tokenlist = ) , /-elbowroom : muskip = 0 mu , - /-subscr-nudge : muskip = 0 mu + /-subscr-nudge : muskip = 0 mu , + */-derivand-sep : muskip = \KeyValue { /-derivand-sep }, + */-op-wrap : boolean = true } % #1 order spec(seqvar); #2 order override(tlvar) -% #3 differentiand(tlvar); #4 denominator(seqvar) +% #3 derivand(tlvar); #4 denominator(seqvar) % #5 subscript(tlvar) \DeclareTemplateCode { derivative } { DERIV } { 5 } { - op-symbol = \l__diffcoeff_op_tl , - op-symbol-alt = \l__diffcoeff_op_alt_tl , - op-order-sep = \l__diffcoeff_oporder_muskip , - /-op-order-sep = \l_tmpa_muskip , - *-op-left = \l__diffcoeff_op_left_bool , - *-italic-nudge = \l__diffcoeff_opnudge_muskip , - */-op-wrap = \l__diffcoeff_opwrap_bool , + 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} }, @@ -101,18 +107,24 @@ { (\l__diffcoeff_op_alt_tl {#2)}^{#1} }, unknown = \cs_set:Npn \__diffcoeff_wrap_longvars:nn #1#2 { \l__diffcoeff_op_alt_tl {(#2)}^{#1} } - } , - denom-term-sep = \l__diffcoeff_varsep_muskip , - /-denom-term-sep = \l_tmpb_muskip , - term-sep-adjust = \l__diffcoeff_sep_adj_muskip , - left-delim = \l__diffcoeff_ldelim_tl , - right-delim = \l__diffcoeff_rdelim_tl , + }, + denom-term-sep = \l__diffcoeff_varsep_muskip, + term-sep-adjust = \l__diffcoeff_sep_adj_muskip, + left-delim = \l__diffcoeff_ldelim_tl, + right-delim = \l__diffcoeff_rdelim_tl, elbowroom = \l__diffcoeff_elbowrm_muskip , subscr-nudge = \l__diffcoeff_subnudge_muskip, - /-left-delim = \l_tmpa_tl , - /-right-delim = \l_tmpb_tl , - /-elbowroom = \l_tmpc_muskip , - /-subscr-nudge = \l_tmpd_muskip + *-derivand-sep = \l__diffcoeff_derivsepi_muskip, + *-op-left = \l__diffcoeff_op_left_bool, + *-italic-nudge = \l__diffcoeff_opnudge_muskip, + /-derivand-sep = \l__diffcoeff_derivsepii_muskip, + /-denom-term-sep = \l_tmpb_muskip, + /-left-delim = \l__diffcoeff_ldelimi_tl, + /-right-delim = \l__diffcoeff_rdelimi_tl, + /-elbowroom = \l_tmpc_muskip, + /-subscr-nudge = \l_tmpd_muskip, + */-derivand-sep = \l__diffcoeff_derivsepiii_muskip, + */-op-wrap = \l__diffcoeff_opwrap_bool } { \AssignTemplateKeys @@ -127,32 +139,43 @@ %%%%%%%%%% \cs_new:Npn \__diffcoeff_slash_vals: { - \muskip_set:Nn \l__diffcoeff_oporder_muskip \l_tmpa_muskip - \muskip_set:Nn \l__diffcoeff_varsep_muskip \l_tmpb_muskip - \muskip_set:Nn \l__diffcoeff_elbowrm_muskip \l_tmpc_muskip + \muskip_set:Nn \l__diffcoeff_varsep_muskip \l_tmpb_muskip + \muskip_set:Nn \l__diffcoeff_elbowrm_muskip \l_tmpc_muskip \muskip_set:Nn \l__diffcoeff_subnudge_muskip \l_tmpd_muskip - \tl_set:NV \l__diffcoeff_ldelim_tl \l_tmpa_tl - \tl_set:NV \l__diffcoeff_rdelim_tl \l_tmpb_tl + \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 { - \bool_if:NF \l__diffcoeff_opwrap_bool + \bool_if:nT + { + !\l__diffcoeff_opwrap_bool && + \int_compare_p:nNn { \l__diffcoeff_format_int } > { 1 } + } { \int_set:Nn \l__diffcoeff_format_int { 4 } } + \__diffcoeff_spaced:n { \l__diffcoeff_spaced_int } + \bool_if:nTF + { + ( \l__diffcoeff_altsep_bool && !\l__diffcoeff_spaced_bool ) + || ( !\l__diffcoeff_altsep_bool && \l__diffcoeff_spaced_bool ) + } + { \__diffcoeff_derivsep: } + { \tl_put_left:Nn \l__diffcoeff_derivand_tl { \mskip 0 mu } } \exp_args:NV\tl_if_novalue:nF #5 - { \l__diffcoeff_ldelim_tl \mkern \l__diffcoeff_elbowrm_muskip } + { \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 } - { + { \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 } \exp_args:NV\tl_if_novalue:nF #5 { - \mkern \l__diffcoeff_elbowrm_muskip \l__diffcoeff_rdelim_tl + \mskip \l__diffcoeff_elbowrm_muskip \l__diffcoeff_rdelim_tl \exp_args:NV\tl_if_empty:nF #5 { \c_math_subscript_token @@ -161,6 +184,35 @@ } } %%%%%%%%%%%%%%%%%%%% +\cs_new_protected:Npn \__diffcoeff_spaced:n #1 + { + \int_case:nn { \int_sign:n { #1 } } + { + { 1 } { \bool_set_true:N \l__diffcoeff_spaced_bool } + { 0 } { \bool_set_false:N \l__diffcoeff_spaced_bool } + { -1 } + { + \int_compare:nNnTF { 1 } < + { \tl_count:N \l__diffcoeff_derivand_tl } + { \bool_set_true:N \l__diffcoeff_spaced_bool } + { \bool_set_false:N \l__diffcoeff_spaced_bool } + } + } + } +\cs_new_protected:Npn \__diffcoeff_derivsep: + { + \tl_put_left:Nx \l__diffcoeff_derivand_tl + { + \int_case:nn { \l__diffcoeff_format_int } + { + { 0 } { \mskip \l__diffcoeff_derivsep_muskip } + { 1 } { \mskip \l__diffcoeff_derivsepi_muskip } + { 2 } { \mskip \l__diffcoeff_derivsepii_muskip } + { 3 } { \mskip \l__diffcoeff_derivsepiii_muskip } + { 4 } { \mskip \l__diffcoeff_derivsepiii_muskip } + } + } + } % (ptl) form denom from #1 orders seq & #2 vars seq \cs_new_protected:Npn \__diffcoeff_map_orders:nn #1#2 { @@ -184,16 +236,16 @@ \__diffcoeff_numer:N { #1 } \__diffcoeff_form_deriv:NNn \l__diffcoeff_oporder_tl - \l__diffcoeff_differentiand_tl + \l__diffcoeff_derivand_tl { \__diffcoeff_denom_single:NN #1 #3 } } -% #1 total order; #2 differentiand; #3 denom seq +% #1 total order; #2 derivand; #3 denom seq \cs_new_protected:Npn \__diffcoeff_mixed:NNN #1#2#3 { \__diffcoeff_numer:N #1 \__diffcoeff_form_deriv:NNn \l__diffcoeff_oporder_tl - \l__diffcoeff_differentiand_tl + \l__diffcoeff_derivand_tl { \__diffcoeff_denom_sep:N #3 } } \cs_new:Npn \__diffcoeff_denom_sep:N #1 @@ -206,9 +258,9 @@ { \seq_pop:NN \l__diffcoeff_orders_seq \l_tmpa_tl \str_if_eq:VnTF \l_tmpa_tl { 1 } - { \mkern \l__diffcoeff_varsep_muskip } + { \mskip \l__diffcoeff_varsep_muskip } { - \mkern \muskip_eval:n { \l__diffcoeff_varsep_muskip + + \mskip \muskip_eval:n { \l__diffcoeff_varsep_muskip + \l__diffcoeff_sep_adj_muskip } } } @@ -244,16 +296,16 @@ } } % #1 op+order; #2 diff'iand; #3 denom -% 0 frac; 1 frac append; 2 slash ; 3 slash append +% 0 frac; 1 frac append; 2 slash ; 3 ( slash ) append; 4 slash append \cs_new:Npn \__diffcoeff_form_deriv:NNn #1#2#3 { \int_case:nn { \l__diffcoeff_format_int } { { 0 } { \frac { #1 #2 } { #3 } } - { 1 } { \frac { #1 } { #3 } { #2 } } + { 1 } { \frac { #1 } { #3 } #2 } { 2 } { #1 #2 / #3 } - { 3 } { ( #1 / #3 ) { #2 } } - { 4 } { #1 / #3 { #2 } } + { 3 } { ( #1 / #3 ) #2 } + { 4 } { #1 / #3 #2 } } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -274,25 +326,27 @@ \l__diffcoeff_orders_seq \l__diffcoeff_tot_order_tl \c_empty_tl \c_empty_seq \c_empty_tl \tl_if_in:NnTF \c__diffcoeff_digits_tl { #3 } - { \mkern \IfBooleanT #2 { - }#3 mu \l__diffcoeff_op_tl \group_end: } + { \mskip \IfBooleanT #2 { - }#3 mu \l__diffcoeff_op_tl \group_end: } { \l__diffcoeff_op_tl \group_end: {} #3 } } -\NewDocumentCommand \negmu {} { \mkern -1 mu } -\NewDocumentCommand \nilmu {} { \mkern 0 mu } -\NewDocumentCommand \onemu {} { \mkern 1 mu } -\NewDocumentCommand \twomu {} { \mkern 2 mu } +\NewDocumentCommand \negmu {} { \mskip -1 mu } +\NewDocumentCommand \nilmu {} { \mskip 0 mu } +\NewDocumentCommand \onemu {} { \mskip 1 mu } +\NewDocumentCommand \twomu {} { \mskip 2 mu } % derivative % #1(tl) = name of variant; #2(*)= append diff'iand boolean % #3(clist) = orders of diff. in each var.; #4(tl) = order override -% #5(tl) = diff'iand; #6( / ) = slash boolean -% #7(clist) = vars of diff.; #8(tl) = pt of eval./vars held const -% #9(tl) = as #8 (for backwards compat) -\NewDocumentCommand \diff { d.. s O{1} o m t/ m !O{#9} g } +% #5(bool) spacing switch; #6(tl) = diff'iand; #7( / ) = slash boolean +% #8(clist) = vars of diff.; #9(tl) = pt of eval./vars held const +\NewDocumentCommand \diff { d.. s O{1} o t! >{\TrimSpaces} m t/ m !o } { \group_begin: - \tl_set:Nn \l__diffcoeff_differentiand_tl { #5 } - \tl_set:Nn \l__diffcoeff_trailing_tl { #8 } - \seq_set_from_clist:Nn \l__diffcoeff_vars_seq { #7 } + \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 } @@ -330,12 +384,11 @@ % append? slash? \int_zero:N \l__diffcoeff_format_int \IfBooleanT #2 { \int_incr:N \l__diffcoeff_format_int } - \IfBooleanT #6 { \int_add:Nn \l__diffcoeff_format_int { 2 } } - + \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_differentiand_tl + \l__diffcoeff_derivand_tl \l__diffcoeff_vars_seq \l__diffcoeff_trailing_tl \group_end: @@ -616,7 +669,7 @@ % ordinary & D \DeclareInstance { derivative } { ord } { DERIV } { } -\bool_if:NTF \g__diffcoeff_ISO_bool +\bool_if:NTF \l__diffcoeff_ISO_bool { \diffdef { } { @@ -638,7 +691,8 @@ right-delim = \right ) , subscr-nudge = -6 mu } -\NewDocumentCommand \diffp { } { \diff.p. } +\NewDocumentCommand \diffp {} { \diff.p. } +\NewDocumentCommand \dlp {} { \dl.p. } % delta \diffdef { delta } |