summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/derivative/derivative.sty
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/derivative/derivative.sty')
-rw-r--r--macros/latex/contrib/derivative/derivative.sty68
1 files changed, 43 insertions, 25 deletions
diff --git a/macros/latex/contrib/derivative/derivative.sty b/macros/latex/contrib/derivative/derivative.sty
index 6948795968..48f0401210 100644
--- a/macros/latex/contrib/derivative/derivative.sty
+++ b/macros/latex/contrib/derivative/derivative.sty
@@ -1,5 +1,5 @@
% derivative.sty
-% Copyright 2019-2023 Simon Jensen
+% Copyright 2019-2024 Simon Jensen
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -16,10 +16,9 @@
\NeedsTeXFormat{LaTeX2e}
-\RequirePackage{expl3}[2021/11/07]
-\RequirePackage{xparse}[2021/11/07]
+\RequirePackage{expl3}[2023/12/08]
\RequirePackage{l3keys2e}
-\ProvidesExplPackage{derivative}{2023/11/04}{1.31}{Nice and easy derivatives and differentials for LaTeX}
+\ProvidesExplPackage{derivative}{2024/02/08}{1.4}{Nice and easy derivatives and differentials for LaTeX}
\bool_new:N \l__deriv_pkg_italic_bool
\bool_new:N \l__deriv_pkg_upright_bool
@@ -118,6 +117,7 @@
\tl_new:N \l__deriv_cs_name_tl
\tl_new:N \l__deriv_derivset_tl
+\bool_new:N \l__deriv_first_unknown_key_bool
\tl_new:N \l__deriv_gcd_result_tl
\tl_new:N \l__deriv_gcd_remain_tl
@@ -290,14 +290,14 @@
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 },
- delims-fun .tl_set:c = { l__deriv_dv_#1_delims_fun_tl },
- delims-var .tl_set:c = { l__deriv_dv_#1_delims_var_tl },
- 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 },
+ 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 },
+ delims-fun .tl_set:c = { l__deriv_dv_#1_delims_fun_tl },
+ delims-var .tl_set:c = { l__deriv_dv_#1_delims_var_tl },
+ 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} },
@@ -329,12 +329,23 @@
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},
+ 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 },
mixord .meta:n = { mixed-order={##1} },
+
+ unknown .code:n =
+ {
+ \bool_if:NT \l__deriv_first_unknown_key_bool
+ {
+ \clist_clear:c { l__deriv_dv_#1_misc_order_clist }
+ \bool_set_false:N \l__deriv_first_unknown_key_bool
+ }
+ \exp_args:NnnV \tl_set_rescan:Nnn \l__deriv_tmpa_tl { } \l_keys_key_str
+ \clist_put_right:cV { l__deriv_dv_#1_misc_order_clist } \l__deriv_tmpa_tl
+ }
}
}
@@ -345,7 +356,7 @@
{
\keys_define:nn { deriv/i/#1 }
{
- style-inf .tl_set:c = { l__deriv_i_#1_style_inf_tl },
+ 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 } },
@@ -370,7 +381,18 @@
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 },
+ ord .meta:n = { order={##1} },
+
+ unknown .code:n =
+ {
+ \bool_if:NT \l__deriv_first_unknown_key_bool
+ {
+ \clist_clear:c { l__deriv_i_#1_misc_order_clist }
+ \bool_set_false:N \l__deriv_first_unknown_key_bool
+ }
+ \exp_args:NnnV \tl_set_rescan:Nnn \l__deriv_tmpa_tl { } \l_keys_key_str
+ \clist_put_right:cV { l__deriv_i_#1_misc_order_clist } \l__deriv_tmpa_tl
+ }
}
}
@@ -462,6 +484,7 @@
% keyval, dv/i, variant
\cs_new_protected:Npn \deriv_local_keys:nnn #1 #2 #3
{
+ \bool_set_true:N \l__deriv_first_unknown_key_bool
\tl_if_novalue:nTF {#1}
{
\bool_if:cT { l__deriv_#2_#3_local_keys_bool }
@@ -759,7 +782,7 @@
% Temporary store the order argument
\tl_set:Nf \l__deriv_tmpb_tl { \seq_use:Nn #2 { \__deriv_insert_mskip:nn {#4} { ord_ord } } }
-
+
\seq_pop_left:NN \l__deriv_tmpa_seq \l__deriv_tmpc_tl
\tl_put_right:Nx #3
{
@@ -769,7 +792,6 @@
\__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 }
}
@@ -1553,10 +1575,10 @@
\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_gcd_swap_helper:NNff #1 #2 { \exp_args:NV \int_from_bin:n {#1} } { \exp_args:NV \int_from_bin:n {#2} }
}
\deriv_binary_shift_left:NV #1 \l__deriv_gcd_counter_int
- \tl_set:Nx #1 { \int_from_bin:V #1 }
+ \tl_set:Nx #1 { \exp_args:NV \int_from_bin:n {#1} }
}
\cs_new:Npn \__deriv_gcd_swap_helper:NNnn #1 #2 #3 #4
{
@@ -1659,7 +1681,7 @@
\DeclareDocumentCommand{\slashfrac}{ o m m }
{
- \group_begin:
+\group_begin:
\tl_if_novalue:nTF {#1}
{ \__deriv_slashfrac_auto:nn {#2} {#3} }
{
@@ -1670,7 +1692,7 @@
}
{ \__deriv_slashfrac_scale:nnn {#1} {#2} {#3} }
}
- \group_end:
+\group_end:
}
% numerator, denominator
\cs_new_protected:Npn \__deriv_slashfrac_auto:nn #1 #2
@@ -1695,7 +1717,6 @@
%%%%% Generate variants %%%%%
\prg_generate_conditional_variant:Nnn \__deriv_show_order:N { c } { T, TF }
-\prg_generate_conditional_variant:Nnn \tl_if_head_eq_charcode:nN { V } { T, F, TF }
\cs_generate_variant:Nn \__deriv_set_rubber_length:Nn { c }
\cs_generate_variant:Nn \deriv_dv_define:Nnn { NV }
@@ -1726,9 +1747,6 @@
\cs_generate_variant:Nn \__deriv_update_seq:NNNNn { NNNNV }
\cs_generate_variant:Nn \__deriv_addfrac:NNnnnnn { NNVVxx }
-\cs_generate_variant:Nn \int_to_bin:n { V }
-\cs_generate_variant:Nn \int_from_bin:n { V }
-
%%%%% Messages %%%%%
\msg_new:nnnn { deriv } { command-already-defined }