diff options
-rw-r--r-- | Master/texmf-dist/doc/latex/derivative/README.md | 6 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/derivative/derivative.pdf | bin | 204460 -> 207643 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/derivative/derivative.tex | 45 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/derivative/derivative.sty | 135 |
4 files changed, 92 insertions, 94 deletions
diff --git a/Master/texmf-dist/doc/latex/derivative/README.md b/Master/texmf-dist/doc/latex/derivative/README.md index 72a47a64cbd..c440e837c5e 100644 --- a/Master/texmf-dist/doc/latex/derivative/README.md +++ b/Master/texmf-dist/doc/latex/derivative/README.md @@ -1,16 +1,16 @@ -## README for derivative package v1.3 dated 2023-07-26 +## README for derivative package v1.31 dated 2023-11-04 The package provides a set of commands `\NewDerivative`, `\NewDifferential` etc. that can be used to define a derivative or a differential operator, respectively. The package have already defined several derivatives and differentials: - `\odv` Ordinary derivative - `\pdv` Partial derivative - - `\fdv` Functional derivtive + - `\fdv` Functional derivative - `\mdv` Material derivative - `\adv` Average rate of change - `\jdv` Jacobian - `\odif` Shorthand for ordinary derivative - `\pdif` Shorthand for partial derivative - - `\fdif` Shorthand for functonal derivative + - `\fdif` Shorthand for functional derivative - `\mdif` Shorthand for material derivative or general differential operator - `\adif` Difference diff --git a/Master/texmf-dist/doc/latex/derivative/derivative.pdf b/Master/texmf-dist/doc/latex/derivative/derivative.pdf Binary files differindex 49928695f7a..13fdeefa661 100644 --- a/Master/texmf-dist/doc/latex/derivative/derivative.pdf +++ b/Master/texmf-dist/doc/latex/derivative/derivative.pdf diff --git a/Master/texmf-dist/doc/latex/derivative/derivative.tex b/Master/texmf-dist/doc/latex/derivative/derivative.tex index 92ffdcb94ff..8e328377610 100644 --- a/Master/texmf-dist/doc/latex/derivative/derivative.tex +++ b/Master/texmf-dist/doc/latex/derivative/derivative.tex @@ -42,23 +42,23 @@ group_skip "\n\n\\par\\bigskip\n" \RequirePackage[style=english,english=british]{csquotes} \RequirePackage[final,babel,auto]{microtype} \RequirePackage{xcolor} - \definecolor{RoyalGray}{RGB}{127, 144, 158} - \definecolor{RoyalDarkGray}{RGB}{78, 93, 104} - \definecolor{RoyalLightGray}{RGB}{250, 250, 250} - \definecolor{RoyalRed}{RGB}{157, 16, 45} - \definecolor{RoyalBlue}{RGB}{0, 35, 102} - \definecolor{RoyalGreen}{RGB}{32, 77, 2} - -% \definecolor{RoyalGray}{RGB}{75, 75, 75} -% \definecolor{RoyalDarkGray}{RGB}{225, 225, 225} -% \definecolor{RoyalLightGray}{RGB}{30, 30, 30} -% \definecolor{RoyalRed}{RGB}{255, 177, 151} % 207, 102, 121 -% \definecolor{RoyalBlue}{RGB}{187, 134, 252} % 55, 185, 255 -% \definecolor{RoyalGreen}{RGB}{3, 218, 198} % 52, 177, 20 -% \definecolor{RoyalPageCoulor}{RGB}{18, 18, 18} % 30, 30, 30 -% \definecolor{RoyalTextCoulor}{RGB}{225, 225, 225} -% \pagecolor{RoyalPageCoulor} -% \color{RoyalTextCoulor} +% \definecolor{RoyalGray}{RGB}{127, 144, 158} +% \definecolor{RoyalDarkGray}{RGB}{78, 93, 104} +% \definecolor{RoyalLightGray}{RGB}{250, 250, 250} +% \definecolor{RoyalRed}{RGB}{157, 16, 45} +% \definecolor{RoyalBlue}{RGB}{0, 35, 102} +% \definecolor{RoyalGreen}{RGB}{32, 77, 2} + + \definecolor{RoyalGray}{RGB}{75, 75, 75} + \definecolor{RoyalDarkGray}{RGB}{225, 225, 225} + \definecolor{RoyalLightGray}{RGB}{30, 30, 30} + \definecolor{RoyalRed}{RGB}{255, 177, 151} % 207, 102, 121 + \definecolor{RoyalBlue}{RGB}{187, 134, 252} % 55, 185, 255 + \definecolor{RoyalGreen}{RGB}{3, 218, 198} % 52, 177, 20 + \definecolor{RoyalPageCoulor}{RGB}{18, 18, 18} % 30, 30, 30 + \definecolor{RoyalTextCoulor}{RGB}{225, 225, 225} + \pagecolor{RoyalPageCoulor} + \color{RoyalTextCoulor} \RequirePackage{amsmath, amsthm} \allowdisplaybreaks @@ -1369,8 +1369,8 @@ group_skip "\n\n\\par\\bigskip\n" \Titel{The \pakkenavn{} package} \Forfatter{Simon Jensen} \Email{sjelatex@gmail.com} -\Dato{2023/07/26} -\Version{1.3} +\Dato{2023/11/04} +\Version{1.31} \RequirePackage{derivative}[\dato] @@ -2822,7 +2822,7 @@ The default sorting method is \keyval*{sort-method}{sign,symbol,abs} which is us \low[1,2]{4c}{big} + \low[1,1]{3a}{low} }{short} - }{positve} - + }{positive} - \low{ \low{ \low[3,3]{5ee}{big} - @@ -3046,7 +3046,10 @@ Numbers in bold refer to the page where the entry is defined. \item Added new options \key{scale-var-!} and \key{delims-var-!} for variable delimiters in shorthand mode. \item Added new options \key{scale-eval-!} and \key{delims-eval-!} for evaluation delimiters in shorthand mode. \end{change} + \begin{change}[version=1.31, date=2023-11-04, beta=false] + \item Fixed issue relating to the order when nesting derivatives (issues \#14). + \end{change} \end{changelog} -\end{document}
\ No newline at end of file +\end{document} diff --git a/Master/texmf-dist/tex/latex/derivative/derivative.sty b/Master/texmf-dist/tex/latex/derivative/derivative.sty index 1b475c8eb35..6948795968b 100644 --- a/Master/texmf-dist/tex/latex/derivative/derivative.sty +++ b/Master/texmf-dist/tex/latex/derivative/derivative.sty @@ -1,6 +1,6 @@ % derivative.sty % Copyright 2019-2023 Simon Jensen -% +% % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 % of this license or (at your option) any later version. @@ -8,9 +8,9 @@ % http://www.latex-project.org/lppl.txt % and version 1.3 or later is part of all distributions of LaTeX % version 2005/12/01 or later. -% +% % This work has the LPPL maintenance status `maintained'. -% +% % The Current Maintainer of this work is Simon Jensen. % Contributors: Romain Noel @@ -19,7 +19,7 @@ \RequirePackage{expl3}[2021/11/07] \RequirePackage{xparse}[2021/11/07] \RequirePackage{l3keys2e} -\ProvidesExplPackage{derivative}{2023/07/26}{1.3}{Nice and easy derivatives and differentials for LaTeX} +\ProvidesExplPackage{derivative}{2023/11/04}{1.31}{Nice and easy derivatives and differentials for LaTeX} \bool_new:N \l__deriv_pkg_italic_bool \bool_new:N \l__deriv_pkg_upright_bool @@ -29,7 +29,7 @@ italic .choice:, italic .usage:n = { load }, italic .default:n = { true }, - italic / true .code:n = + italic / true .code:n = { \bool_set_true:N \l__deriv_pkg_italic_bool \bool_set_false:N \l__deriv_pkg_upright_bool @@ -40,11 +40,11 @@ \bool_set_true:N \l__deriv_pkg_upright_bool }, italic / unknown .code:n = { \msg_error:nnx { deriv } { boolean-values-only } \l_keys_key_str }, - + upright .choice:, upright .usage:n = { load }, upright .default:n = { true }, - upright / true .code:n = + upright / true .code:n = { \bool_set_true:N \l__deriv_pkg_upright_bool \bool_set_false:N \l__deriv_pkg_italic_bool @@ -280,7 +280,7 @@ style-var-/! .choices:nn = { single, multiple, mixed } { \__deriv_i_set_style_var:nnn {dv_#1} {##1} { _slash_compact } }, style-frac .cs_set:cp = { __deriv_dv_#1_style_frac:nn } {##1}, style-frac-/ .cs_set:cp = { __deriv_dv_#1_style_frac_slash:nn } {##1}, - + scale-eval .choices:nn = { auto, none, big, Big, bigg, Bigg } { \__deriv_set_scale:nnn {dv_#1} {##1} { eval } }, scale-eval-/ .choices:nn = { auto, none, big, Big, bigg, Bigg } { \__deriv_set_scale:nnn {dv_#1} {##1} { eval_slash } }, scale-eval-! .choices:nn = { auto, none, big, Big, bigg, Bigg } { \__deriv_set_scale:nnn {dv_#1} {##1} { eval_compact } }, @@ -289,7 +289,7 @@ scale-var-! .choices:nn = { auto, none, big, Big, bigg, Bigg } { \__deriv_set_scale:nnn {dv_#1} {##1} { var_compact } }, scale-frac .choices:nn = { auto, none, big, Big, bigg, Bigg } { \__deriv_set_scale:nnn {dv_#1} {##1} { frac } }, scale-frac-/ .choices:nn = { auto, none, big, Big, bigg, Bigg } { \__deriv_set_scale:nnn {dv_#1} {##1} { frac_slash } }, - + delims-eval .tl_set:c = { l__deriv_dv_#1_delims_eval_tl }, delims-eval-/ .tl_set:c = { l__deriv_dv_#1_delims_eval_slash_tl }, delims-eval-! .tl_set:c = { l__deriv_dv_#1_delims_eval_compact_tl }, @@ -298,7 +298,7 @@ delims-var-! .tl_set:c = { l__deriv_dv_#1_delims_var_compact_tl }, delims-frac .tl_set:c = { l__deriv_dv_#1_delims_frac_tl }, delims-frac-/ .tl_set:c = { l__deriv_dv_#1_delims_frac_slash_tl }, - + sep-inf-ord .code:n = { \__deriv_set_rubber_length:cn { l__deriv_dv_#1_sep_inf_ord_tl } {##1} }, sep-inf-fun .code:n = { \__deriv_set_rubber_length:cn { l__deriv_dv_#1_sep_inf_fun_tl } {##1} }, sep-ord-fun .code:n = { \__deriv_set_rubber_length:cn { l__deriv_dv_#1_sep_ord_fun_tl } {##1} }, @@ -312,12 +312,12 @@ sep-var-var .code:n = { \__deriv_set_rubber_length:cn { l__deriv_dv_#1_sep_var_var_tl } {##1} }, sep-eval-sb .code:n = { \__deriv_set_rubber_length:cn { l__deriv_dv_#1_sep_eval_sb_tl } {##1} }, sep-eval-sp .code:n = { \__deriv_set_rubber_length:cn { l__deriv_dv_#1_sep_eval_sp_tl } {##1} }, - + switch-* .bool_set:c = { l__deriv_dv_#1_switch_star_bool }, switch-/ .bool_set:c = { l__deriv_dv_#1_switch_slash_bool }, switch-! .bool_set:c = { l__deriv_dv_#1_switch_compact_bool }, switch-sort .bool_set:c = { l__deriv_dv_#1_switch_sort_bool }, - + sort-method .code:n = { \__deriv_set_sort_method:nn {#1} {##1} }, sort-numerical .choices:nn = { auto, first, last, symbolic } { \tl_set:cn { l__deriv_dv_#1_sort_numerical_tl } {##1} }, sort-abs-reverse .bool_set:c = { l__deriv_dv_#1_sort_abs_reverse_bool }, @@ -325,12 +325,12 @@ sort-number-reverse .bool_set:c = { l__deriv_dv_#1_sort_number_reverse_bool }, sort-sign-reverse .bool_set:c = { l__deriv_dv_#1_sort_sign_reverse_bool }, sort-symbol-reverse .bool_set:c = { l__deriv_dv_#1_sort_symbol_reverse_bool }, - + fun .bool_set:c = { l__deriv_dv_#1_misc_fun_bool }, frac .bool_set:c = { l__deriv_dv_#1_misc_frac_bool }, var .clist_set:c = { l__deriv_dv_#1_misc_var_clist }, var .default:n = {all}, - + order .clist_set:c = { l__deriv_dv_#1_misc_order_clist }, ord .meta:n = { order={##1} }, mixed-order .tl_set:c = { l__deriv_dv_#1_misc_mixed_order_tl }, @@ -348,13 +348,13 @@ style-inf .tl_set:c = { l__deriv_i_#1_style_inf_tl }, style-var .choices:nn = { single, multiple, mixed } { \__deriv_i_set_style_var:nnn {i_#1} {##1} { } }, style-var-* .choices:nn = { single, multiple, mixed } { \__deriv_i_set_style_var:nnn {i_#1} {##1} { _star } }, - + scale-var .choices:nn = { auto, none, big, Big, bigg, Bigg } { \__deriv_set_scale:nnn {i_#1} {##1} { var } }, scale-var-* .choices:nn = { auto, none, big, Big, bigg, Bigg } { \__deriv_set_scale:nnn {i_#1} {##1} { var_star } }, - + delims-var .tl_set:c = { l__deriv_i_#1_delims_var_tl }, delims-var-* .tl_set:c = { l__deriv_i_#1_delims_var_star_tl }, - + sep-begin .code:n = { \__deriv_set_rubber_length:cn { l__deriv_i_#1_sep_begin_tl } {##1} }, sep-inf-ord .code:n = { \__deriv_set_rubber_length:cn { l__deriv_i_#1_sep_inf_ord_tl } {##1} }, sep-inf-var .code:n = { \__deriv_set_rubber_length:cn { l__deriv_i_#1_sep_inf_var_tl } {##1} }, @@ -363,12 +363,12 @@ sep-var-var .code:n = { \__deriv_set_rubber_length:cn { l__deriv_i_#1_sep_var_var_tl } {##1} }, sep-ord-ord .code:n = { \__deriv_set_rubber_length:cn { l__deriv_i_#1_sep_ord_ord_tl } {##1} }, sep-end .code:n = { \__deriv_set_rubber_length:cn { l__deriv_i_#1_sep_end_tl } {##1} }, - + switch-* .bool_set:c = { l__deriv_i_#1_switch_star_bool }, - + var .clist_set:c = { l__deriv_i_#1_misc_var_clist }, var .default:n = {all}, - + order .clist_set:c = { l__deriv_i_#1_misc_order_clist }, ord .clist_set:c = { l__deriv_i_#1_misc_order_clist }, } @@ -379,7 +379,7 @@ { \seq_clear:c { l__deriv_dv_#1_sort_method_seq } \seq_set_from_clist:Nn \l__deriv_tmpa_seq {#2} - + \seq_map_indexed_inline:Nn \l__deriv_tmpa_seq { \str_case:nn {##2} @@ -483,7 +483,7 @@ \cs_new_protected:Npn \deriv_preamble:NNnnn #1 #2 #3 #4 #5 { \tl_set:Nx #1 { \cs_to_str:N #2 } - + \tl_if_novalue:nTF {#4} { \__deriv_preamble_aux:Vnn #1 { style-inf={#3} } {#5} } { \__deriv_preamble_aux:Vnn #1 { style-inf={#3}, #4} {#5} } @@ -544,7 +544,7 @@ \tl_if_novalue:nTF {#2} { \prop_set_eq:cc { l__deriv_#3_#1_user_keys_prop } { c__deriv_#3_pkg_keys_prop } } { \prop_put_from_keyval:cn { l__deriv_#3_#1_user_keys_prop } {#2} } - + \__deriv_set_default_auxi:cnn { l__deriv_#3_#1_user_keys_prop } {#1} {#3} \keys_set:nn { deriv/#3/#1 } { default } } @@ -561,7 +561,7 @@ { \group_begin: \deriv_local_keys:nnn {##2} { dv } {#2} - + \exp_args:Nnc \bool_xor:nnTF {##5} { l__deriv_dv_#2_switch_compact_bool } { \exp_args:Nnc \bool_xor:nnTF {##4} { l__deriv_dv_#2_switch_slash_bool } @@ -591,7 +591,7 @@ { \group_begin: \deriv_local_keys:nnn {##2} { i } {#2} - + \exp_args:Nnc \bool_xor:nnTF {##1} { l__deriv_i_#2_switch_star_bool } { \__deriv_inf_star:nn {i_#2} {##3} } { \__deriv_inf_none:nn {i_#2} {##3} } @@ -707,9 +707,9 @@ \tl_clear:N #1 \seq_set_from_clist:Nn \l__deriv_dv_var_seq {#3} \seq_set_from_clist:Nc \l__deriv_dv_order_seq { l__deriv_#2_misc_order_clist } - + \tl_use:c { l__deriv_#2_style_var#4_tl } \l__deriv_dv_var_seq \l__deriv_dv_order_seq #1 {#2} {#4} - + % Legacy development code from when `style-var-/` was not available %\tl_if_eq:nnTF {#4} { _slash } %TODO: Find a better solution %{ \tl_use:c { l__deriv_#2_style_var_tl } \l__deriv_dv_var_seq \l__deriv_dv_order_seq #1 {#2} {#4} } @@ -720,12 +720,12 @@ { \int_set:Nn \l__deriv_var_count_int { \seq_count:N #1 } \__deriv_adjust_ord_seq:NN \l__deriv_var_count_int #2 - - \str_if_eq:cNT { l__deriv_#4_misc_mixed_order_tl } 1 + + \str_if_eq:cNT { l__deriv_#4_misc_mixed_order_tl } 1 { \__deriv_mixed_order:cNn { l__deriv_#4_misc_mixed_order_tl } #2 {#4} } - + \__deriv_var_bool_seq:cNN { l__deriv_#4_misc_var_clist } \l__deriv_tmpa_seq \l__deriv_var_count_int - + \seq_map_indexed_inline:Nn #1 { \seq_pop_left:NN #2 \l__deriv_tmpa_tl @@ -753,19 +753,13 @@ { \int_set:Nn \l__deriv_var_count_int { \seq_count:N #1 } \tl_set:Nf \l__deriv_tmpa_tl { \seq_use:Nn #1 { \__deriv_insert_mskip:nn {#4} { var_var } } } - + \__deriv_var_bool_seq:cNN { l__deriv_#4_misc_var_clist } \l__deriv_tmpa_seq \l__deriv_var_count_int \int_set:Nn \l__deriv_tmpa_int { \seq_count:N #2 } + + % Temporary store the order argument + \tl_set:Nf \l__deriv_tmpb_tl { \seq_use:Nn #2 { \__deriv_insert_mskip:nn {#4} { ord_ord } } } - \seq_map_indexed_inline:Nn #2 - { - \tl_put_right:Nx \l__deriv_tmpb_tl - { - \exp_not:n {##2} - \int_compare:nNnF {##1} = { \l__deriv_tmpa_int } - { \__deriv_insert_mskip:nn {#4} { ord_ord } } - } - } \seq_pop_left:NN \l__deriv_tmpa_seq \l__deriv_tmpc_tl \tl_put_right:Nx #3 { @@ -775,6 +769,7 @@ \__deriv_show_order:NT \l__deriv_tmpb_tl { \__deriv_insert_ord:Nnn \l__deriv_tmpb_tl {#4} { var_ord } } } + \str_if_eq:cNT { l__deriv_#4_misc_mixed_order_tl } 1 { \tl_set_eq:cN { l__deriv_#4_misc_mixed_order_tl } \l__deriv_tmpb_tl } } @@ -812,13 +807,13 @@ \cs_new_protected:Npn \__deriv_adjust_trailing_ord:NN #1 #2 { \int_set:Nn \l__deriv_vmo_int { \seq_count:N #2 - \seq_count:N #1 } - + \int_compare:nNnT { \l__deriv_vmo_int } < { 0 } { \int_step_inline:nn { -1*\l__deriv_vmo_int } { \seq_pop_right:NN #1 \l__deriv_tmpa_tl } } - + \int_step_inline:nn { \seq_count:N #1 } { \seq_pop_right:NN #1 \l__deriv_tmpa_tl @@ -857,7 +852,7 @@ \tl_clear:N #1 \seq_set_from_clist:Nn \l__deriv_i_var_seq {#3} \seq_set_from_clist:Nc \l__deriv_i_order_seq { l__deriv_#2_misc_order_clist } - + \tl_if_eq:nnTF {#4} { _slash_compact } %TODO: Find a better solution { \tl_use:c { l__deriv_#2_style_var#4_tl } \l__deriv_i_var_seq \l__deriv_i_order_seq #1 {#2} { _compact } {#5} } { \tl_use:c { l__deriv_#2_style_var#4_tl } \l__deriv_i_var_seq \l__deriv_i_order_seq #1 {#2} {#4} {#5} } @@ -869,9 +864,9 @@ \int_set:Nn \l__deriv_var_count_int { \seq_count:N #1 } \__deriv_var_bool_seq:cNN { l__deriv_#4_misc_var_clist } \l__deriv_add_var_bool_seq \l__deriv_var_count_int \__deriv_adjust_trailing_ord:NN #2 #1 - + \int_set:Nn \l__deriv_tmpa_int { \seq_count:N #2 } - + \seq_map_indexed_inline:Nn #1 { \seq_pop_left:NN \l__deriv_add_var_bool_seq \l__deriv_tmpa_tl @@ -915,7 +910,7 @@ \int_set:Nn \l__deriv_var_count_int { \seq_count:N #1 } \__deriv_var_bool_seq:cNN { l__deriv_#4_misc_var_clist } \l__deriv_add_var_bool_seq \l__deriv_var_count_int \__deriv_adjust_ord_seq:NN \l__deriv_var_count_int #2 - + \seq_map_indexed_inline:Nn #1 { \seq_pop_left:NN #2 \l__deriv_tmpa_tl @@ -929,7 +924,7 @@ \__deriv_insert_mskip:nn {#4} { ord_var } } { \__deriv_insert_mskip:nn {#4} { inf_var } } - + \__deriv_insert_var:Nnnn \l__deriv_tmpb_tl {##2} {#4} {#5} \int_compare:nNnF {##1} = { \l__deriv_var_count_int } { \__deriv_insert_mskip:nn {#4} { var_inf } } @@ -942,7 +937,7 @@ \int_set:Nn \l__deriv_var_count_int { \seq_count:N #1 } \__deriv_var_bool_seq:cNN { l__deriv_#4_misc_var_clist } \l__deriv_add_var_bool_seq \l__deriv_var_count_int \__deriv_adjust_ord_seq:NN \l__deriv_var_count_int #2 - + \seq_map_indexed_inline:Nn #1 { \seq_pop_left:NN #2 \l__deriv_tmpa_tl @@ -1115,7 +1110,7 @@ % dv, name, code \cs_new:Npn \__deriv_scale_big:nnnn #1 #2 #3 #4 { \__deriv_scale_big_auxi:ncn {#1} { l__deriv_#2_delims_#3_tl } {#4} } -% scaling, delims, code +% scaling, delims, code \cs_new:Npn \__deriv_scale_big_auxi:nNn #1 #2 #3 { \tl_use:c { #1 l } { \tl_item:Nn #2 { 1 } } @@ -1140,7 +1135,7 @@ \tl_replace_all:Nnn \l__deriv_input_tl { -- } { , } \tl_replace_all:Nnn \l__deriv_input_tl { - } { ,- } \tl_replace_all:Nnn \l__deriv_input_tl { + } { , } - + \seq_set_split:NnV #1 { , } \l__deriv_input_tl \seq_remove_all:Nn #1 {} } @@ -1158,7 +1153,7 @@ \seq_clear:N #6 \seq_clear:N #7 \tl_clear:N \l__deriv_numerical_tl - + \seq_map_inline:Nn #3 { \str_if_in:nnTF {##1} / @@ -1168,7 +1163,7 @@ \tl_clear:N \l__deriv_sym_tmpb_tl \tl_set:Nn \l__deriv_num_tmpb_tl { 1 } } - + \__deriv_if_in_two_seq:NNNNTF #4 #5 \l__deriv_sym_tmpa_tl \l__deriv_sym_tmpb_tl { \__deriv_update_seq:NNNNV #6 #7 \l__deriv_num_tmpa_tl \l__deriv_num_tmpb_tl \l__deriv_seq_pos_int } { @@ -1188,11 +1183,11 @@ { \int_incr:N \l__deriv_tmpa_int } { \tl_map_break: } } - + \tl_set:Nx #2 { \tl_range:nnn {#3} { 1 } \l__deriv_tmpa_int } \int_incr:N \l__deriv_tmpa_int \tl_set:Nx #1 { \tl_range:nnn {#3} \l__deriv_tmpa_int { -1 } } - + \exp_args:NV \str_case:nn #2 { { } { \tl_set:Nn #2 { 1 } } @@ -1207,7 +1202,7 @@ % Currently '1/2m' is being interpreted as '1/(2m)' but technically 'm/2' is the correct way. And should ideally be changed - but not a must right now. %TODO: Make code to handle the case '(m+n)/xxx' as input correctly with a loop i.e. as 'm/xxx + m/xxx'. Likely has to be done in \deriv_input:nn \__deriv_extract:NNn #1 #3 {#5} - + %TODO: Temporary solution to: Strip pearentheses from denominator \str_if_in:nnTF {#6} ( { @@ -1216,7 +1211,7 @@ { \__deriv_extract:NNn #2 #4 {#6} } } { \__deriv_extract:NNn #2 #4 {#6} } - + \tl_if_eq:NNT #1 #2 { \tl_clear:N #1 @@ -1235,11 +1230,11 @@ \tl_set:Nx \l__deriv_tmpb_tl { \seq_item:Nn #4 {##1} } \int_set:Nn \l__deriv_tmpa_int { \seq_item:Nn #5 {##1} } \int_set:Nn \l__deriv_tmpb_int { \seq_item:Nn #6 {##1} } - + \int_compare:nNnF \l__deriv_tmpa_int = 0 { \__deriv_adjust_frac_integers:NN \l__deriv_tmpa_int \l__deriv_tmpb_int - + \__deriv_add_frac_to_seq:NNVVVVn #1 #2 \l__deriv_tmpa_tl \l__deriv_tmpb_tl \l__deriv_tmpa_int \l__deriv_tmpb_int {#7} } } @@ -1379,7 +1374,7 @@ \seq_clear:N #1 \int_step_inline:nn { \seq_count:N #2 } { \seq_put_right:Nn #1 {##1} } - + \bool_if:cT { l__deriv_#4_switch_sort_bool } { \int_set:Nn \l__deriv_sort_max_int { \seq_count:c { l__deriv_#4_sort_method_seq } } @@ -1389,7 +1384,7 @@ \tl_set:Nx \l__deriv_sym_tmpb_tl { \seq_item:Nn #2 {##2} } \tl_set:Nx \l__deriv_num_tmpa_tl { \seq_item:Nn #3 {##1} } \tl_set:Nx \l__deriv_num_tmpb_tl { \seq_item:Nn #3 {##2} } - + \__deriv_sort_method:cn { l__deriv_#4_sort_method_seq } {#4} } } @@ -1422,7 +1417,7 @@ { \int_set:Nn \l__deriv_tmpa_int { \tl_count:N \l__deriv_sym_tmpa_tl } \int_set:Nn \l__deriv_tmpb_int { \tl_count:N \l__deriv_sym_tmpb_tl } - + \int_compare:nNnTF \l__deriv_tmpa_int > \l__deriv_tmpb_int { \__deriv_sort_reverse:Nnn \c_false_bool {#1} { symbol } } { @@ -1448,7 +1443,7 @@ { \int_set:Nn \l__deriv_tmpa_int { \int_abs:n \l__deriv_num_tmpa_tl } \int_set:Nn \l__deriv_tmpb_int { \int_abs:n \l__deriv_num_tmpb_tl } - + \int_compare:nNnTF \l__deriv_tmpa_int > \l__deriv_tmpb_int { \__deriv_sort_reverse:Nnn \c_false_bool {#1} { abs } } { @@ -1478,7 +1473,7 @@ \cs_new_protected:Npn \__deriv_output:NNNn #1 #2 #3 #4 { \tl_set:Nf #1 { \seq_use:Nn #2 { + } } - + \tl_if_empty:NF #3 { \tl_if_empty:NTF #1 @@ -1531,9 +1526,9 @@ { \tl_set:Nx \l__deriv_gcd_result_tl { \int_to_bin:n { \int_abs:n #1 } } \tl_set:Nx \l__deriv_gcd_remain_tl { \int_to_bin:n { \int_abs:n #2 } } - + \__deriv_gcd:NN \l__deriv_gcd_result_tl \l__deriv_gcd_remain_tl - + \int_set:Nn #1 { #1 / \l__deriv_gcd_result_tl } \int_set:Nn #2 { #2 / \l__deriv_gcd_result_tl } } @@ -1549,15 +1544,15 @@ \deriv_binary_shift_right:N #2 \int_incr:N \l__deriv_gcd_counter_int } - + \bool_while_do:nn { \deriv_binary_if_even_p:N #1 } { \deriv_binary_shift_right:N #1 } - + \bool_until_do:nn { \int_compare_p:nNn #2 = 0 } { \bool_while_do:nn { \deriv_binary_if_even_p:N #2 } { \deriv_binary_shift_right:N #2 } - + \__deriv_gcd_swap_helper:NNff #1 #2 { \int_from_bin:V #1 } { \int_from_bin:V #2 } } \deriv_binary_shift_left:NV #1 \l__deriv_gcd_counter_int @@ -1691,7 +1686,7 @@ \cs_new_protected:Npn \__deriv_slashfrac_scale:nnn #1 #2 #3 { \use:c { #1 l } . - {#2} + {#2} \use:c {#1} / {#3} \use:c { #1 r } . |