diff --git a/doc/environments/groupthm/groupthm.dtx b/doc/environments/groupthm/groupthm.dtx index c6962b6..3c39495 100644 --- a/doc/environments/groupthm/groupthm.dtx +++ b/doc/environments/groupthm/groupthm.dtx @@ -794,10 +794,8 @@ % \cs{groupthm_new_theorem_star_from_keys:nn}\ma{keys}\ma{environment name} % \end{syntax} % -% % \LaTeX3 version of \cs{NewTheorem*}, \cs{ProvideTheorem*} % -% % \end{function} % % @@ -1644,40 +1642,40 @@ % Its value is restored at the end of the iteration. % % \begin{macrocode} -\clist_new:N \l_powerset_copied_clist -\seq_new:N \l_powerset_saved_seq +\clist_new:N \l__powerset_copied_clist +\seq_new:N \l__powerset_saved_seq \cs_generate_variant:Nn \clist_remove_all:Nn { N V } \cs_new:Npn \__powerset_clist_foreach_aux:Nn #1 #2 { - \clist_if_empty:NTF \l_powerset_copied_clist + \clist_if_empty:NTF \l__powerset_copied_clist { #2 } { - \clist_get:NN \l_powerset_copied_clist \l_tmpa_tl - \seq_push:NV \l_powerset_saved_seq \l_tmpa_tl - \clist_pop:NN \l_powerset_copied_clist { \l_tmpa_tl } + \clist_get:NN \l__powerset_copied_clist \l_tmpa_tl + \seq_push:NV \l__powerset_saved_seq \l_tmpa_tl + \clist_pop:NN \l__powerset_copied_clist { \l_tmpa_tl } \__powerset_clist_foreach_aux:Nn #1 {#2} - \seq_get:NN \l_powerset_saved_seq \l_tmpa_tl + \seq_get:NN \l__powerset_saved_seq \l_tmpa_tl \clist_put_left:NV #1 \l_tmpa_tl \__powerset_clist_foreach_aux:Nn #1 {#2} - \seq_get:NN \l_powerset_saved_seq \l_tmpa_tl + \seq_get:NN \l__powerset_saved_seq \l_tmpa_tl \clist_remove_all:NV #1 \l_tmpa_tl - \clist_push:NV \l_powerset_copied_clist \l_tmpa_tl - \seq_pop:NN \l_powerset_saved_seq \l_tmpa_tl + \clist_push:NV \l__powerset_copied_clist \l_tmpa_tl + \seq_pop:NN \l__powerset_saved_seq \l_tmpa_tl } } \cs_new:Npn \powerset_clist_foreach:Nn #1 #2 { - \clist_set_eq:NN \l_powerset_copied_clist #1 + \clist_set_eq:NN \l__powerset_copied_clist #1 \clist_clear:N #1 - \clist_remove_duplicates:N \l_powerset_copied_clist + \clist_remove_duplicates:N \l__powerset_copied_clist \__powerset_clist_foreach_aux:Nn #1 {#2} - \clist_set_eq:NN #1 \l_powerset_copied_clist + \clist_set_eq:NN #1 \l__powerset_copied_clist } % \end{macrocode} % \end{macro} @@ -1762,7 +1760,7 @@ % \end{macrocode} % Now, retrieve the group properties, by writing these into the hooks % \begin{macrocode} - \clist_map_function:nN { #2 } \group_use:n + \clist_map_function:nN { #2 } \@@_use_theorem_group:n % \end{macrocode} % Execute the hooks, so that local variables will get modified according to the groups % and in the order that were specified for the hooks. @@ -2104,16 +2102,91 @@ } % \end{macrocode} % \end{macro} +% +% +% +% Now, we can wrap these into document commands +% +% +% \begin{macro}{\NewGroupedTheorem} +% \begin{syntax} +% \cs{NewGroupedTheorem}[\meta{keys}]\ma{theorem name} +% \end{syntax} +% +% \begin{macrocode} +\NewDocumentCommand{\NewGroupedTheorem}{s O{} m} + { + \IfBooleanTF{#1} + { + \groupthm_new_grouped_theorem_star_from_keys:nn { #2 } { #3 } + } + { + \groupthm_new_grouped_theorem_from_keys:nn { #2 } { #3 } + } + } +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\ProvideGroupedTheorem} +% \begin{syntax} +% \cs{ProvideGroupedTheorem}[\meta{keys}]\ma{theorem name} +% \end{syntax} +% +% \begin{macrocode} +\ProvideDocumentCommand{\NewGroupedTheorem}{s O{} m} + { + \IfBooleanTF{#1} + { + \groupthm_provide_grouped_theorem_star_from_keys:nn { #2 } { #3 } + } + { + \groupthm_provide_grouped_theorem_from_keys:nn { #2 } { #3 } + } + } +% \end{macrocode} +% \end{macro} % % % +% \begin{macro}{\NewTheorem} +% \begin{syntax} +% \cs{NewTheorem}[\meta{keys}]\ma{theorem name} +% \end{syntax} +% +% \begin{macrocode} +\NewDocumentCommand{\NewTheorem}{s O{} m} + { + \IfBooleanTF{#1} + { + \groupthm_new_theorem_star_from_keys:nn { #2 } { #3 } + } + { + \groupthm_new_theorem_from_keys:nn { #2 } { #3 } + } + } +% \end{macrocode} +% \end{macro} % % -% -% -% -% -% +% \begin{macro}{\ProvideTheorem} +% \begin{syntax} +% \cs{ProvideTheorem}[\meta{keys}]\ma{theorem name} +% \end{syntax} +% +% \begin{macrocode} +\ProvideDocumentCommand{\NewTheorem}{s O{} m} + { + \IfBooleanTF{#1} + { + \groupthm_provide_theorem_star_from_keys:nn { #2 } { #3 } + } + { + \groupthm_provide_theorem_from_keys:nn { #2 } { #3 } + } + } +% \end{macrocode} +% \end{macro} % % % @@ -2125,3 +2198,4 @@ % \end{implementation} % \end{documentation} % \newpage +% \PrintIndex diff --git a/doc/environments/groupthm/groupthm.sty b/doc/environments/groupthm/groupthm.sty deleted file mode 100644 index e60fcf0..0000000 --- a/doc/environments/groupthm/groupthm.sty +++ /dev/null @@ -1,329 +0,0 @@ -%% -%% This is file `groupthm.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% groupthm.dtx (with options: `package') -%% -%% IMPORTANT NOTICE: -%% -%% For the copyright see the source file. -%% -%% Any modified versions of this file must be renamed -%% with new filenames distinct from groupthm.sty. -%% -%% For distribution of the original source see the terms -%% for copying and modification in the file groupthm.dtx. -%% -%% This generated file may be distributed as long as the -%% original source files, as listed above, are part of the -%% same distribution. (The sources need not necessarily be -%% in the same archive or directory.) -%% File: groupthm.dtx -\ProvidesExplPackage{groupthm}{2022/01/17}{0.0.1}{Grouped theorems.} -\RequirePackage{amsthm} -\RequirePackage{thmtools} -\RequirePackage{mkessler-powerset} -\cs_new:Npn \__groupthm_declare_theorem_group:nn #1 #2 -{ - \declaretheorem [ #2 ] { #1 } -} -\cs_generate_variant:Nn \__groupthm_declare_theorem_group:nn { n V } -\cs_new:Npn \__groupthm_hook_gset_rule_foreach:nNnn #1 #2 #3 #4 - { - \cs_set:Npn \__groupthm_map_aux:n ##1 - { - \hook_gset_rule:nnnn { #1 } { ##1 } { #3 } { #4 } - } - \clist_map_function:NN #2 \__groupthm_map_aux:n - } -\msg_new:nnn { groupthm } { unknown ~ group } -{ - Unknown ~ group ~ '#1' ~ supplied ~ \msg_line_context: -} -\msg_new:nnn { groupthm } { unknown ~ key } -{ - Unknown ~ key ~ '#1' ~ supplied ~ \msg_line_context: -} -\msg_new:nnn { groupthm } { wrong ~ definition } -{ - Bad ~ definition ~ of ~ #1 ~ '#2' ~ \msg_line_context:, ~ #1 ~ is ~ #3 ~ defined. -} -\hook_new:n { __groupthm/prename } -\hook_new:n { __groupthm/postname } -\hook_new:n { __groupthm/mapname } -\hook_new:n { __groupthm/thmtools } -\hook_new:n { __groupthm/groupsort } -\cs_generate_variant:Nn \hook_gset_rule:nnnn { n n V n } -\tl_new:N \l__groupthm_key_prename_tl -\tl_new:N \l__groupthm_key_name_tl -\tl_new:N \l__groupthm_key_postname_tl -\clist_new:N \l__groupthm_key_group_clist -\clist_new:N \l__groupthm_key_mapname_clist -\clist_new:N \l__groupthm_key_thmtools_clist -\tl_new:N \l__groupthm_prename_tl -\tl_new:N \l__groupthm_name_tl -\tl_new:N \l__groupthm_postname_tl -\clist_new:N \l__groupthm_mapname_clist -\clist_new:N \l__groupthm_thmtools_clist -\clist_new:N \l__groupthm_group_clist -\clist_new:N \g__groupthm_defined_theorem_groups_clist -\keys_define:nn { groupthm } - { - prename .tl_set:N = \l__groupthm_key_prename_tl, - prename .default:n = \c_empty_tl, - prename .groups:n = { theoremgroup }, - name .tl_set:N = \l__groupthm_key_name_tl, - name .default:n = \c_novalue_tl, - name .groups:n = { groupedtheorem, theoremvariants }, - postname .tl_set:N = \l__groupthm_key_postname_tl, - postname .default:n = \c_empty_tl, - postname .groups:n = { theoremgroup }, - group .clist_set:N = \l__groupthm_key_group_clist, - group .default:n = {}, - group .groups:n = { groupedtheorem, theoremvariants }, - mapname .clist_set:N = \l__groupthm_mapname_clist, - mapname .default:n = {}, - mapname .groups:n = { theoremgroup }, - thmtools .clist_set:N = \l__groupthm_key_thmtools_clist, - thmtools .default:n = {}, - thmtools .groups:n = - { theoremgroup, groupedtheorem, theoremvariants }, - unknown .code:n = - \msg_error:nnn { groupthm } { unknown ~ group } { \l_keys_key_str } - } -\cs_new:Npn \__groupthm_set_normalized_keys:nnn #1 #2 #3 - { - \keys_set:nn { groupthm } { prename, name, postname, group, mapname, thmtools } - \keys_set_groups:nnn { groupthm } { #2 } { #1 } - \tl_if_eq:NnTF \l__groupthm_key_name_tl { \c_novalue_tl } - { - \tl_set:Nx \l__groupthm_name_tl - { - \text_titlecase_first:n {#3} - } - } - { - \tl_set_eq:NN \l__groupthm_name_tl \l__groupthm_key_name_tl - } - \tl_set_eq:NN \l__groupthm_prename_tl \l__groupthm_key_prename_tl - \tl_set_eq:NN \l__groupthm_postname_tl \l__groupthm_key_postname_tl - \clist_set_eq:NN \l__groupthm_group_clist \l__groupthm_key_group_clist - \clist_set_eq:NN \l__groupthm_mapname_clist \l__groupthm_key_mapname_clist - \clist_set_eq:NN \l__groupthm_thmtools_clist \l__groupthm_key_thmtools_clist - } -\cs_new:Npn \__groupthm_add_to_theorem_group_ordering:n #1 - { - \__groupthm_hook_gset_rule_foreach:nNnn - { __groupthm/groupsort } - \g__groupthm_defined_theorem_groups_clist - { before } - { #1 } - } -\cs_new:Npn \__groupthm_remove_from_theorem_group_ordering:n #1 - { - \__groupthm_hook_gset_rule_foreach:nNnn - { __groupthm/groupsort } - \g__groupthm_defined_theorem_groups_clist - { unrelated } - { #1 } - } -\cs_new:Npn \__groupthm_add_to_sort_hook:n #1 -{ - \hook_gput_code:nnn { __groupthm/groupsort } - { #1 } - { - \clist_put_left:Nn \l__groupthm_group_clist { #1 } - } -} -\cs_new:Npn \__groupthm_sort_theorem_group_names: - { - \hook_gremove_code:nn { __groupthm/groupsort }{*} - \clist_map_function:NN \l__groupthm_group_clist \__add_to_sort_hook:n - \clist_clear:N \l__groupthm_group_clist - \hook_use:n { __groupthm/groupsort } - } -\cs_new:Npn \__groupthm_declare_theorem_group_aux:nnnnn #1#2#3#4#5 - { - \cs_new:cpn { __groupthm_use_group_#1: } - { - \hook_gput_code:nnn { __groupthm/prename } { #1 } - { - \tl_put_left:Nx \l__groupthm_prename_tl { #2 } - } - \hook_gput_code:nnn { __groupthm/postname } { #1 } - { - \tl_put_right:Nx \l__groupthm_postname_tl { #3 } - } - \hook_gput_code:nnn { __groupthm/mapname } { #1 } - { - \clist_put_right:Nn \l__groupthm_mapname_clist { #4 } - } - \hook_gput_code:nnn { __groupthm/thmtools } { #1 } - { - \clist_put_right:Nn \l__groupthm_thmtools_clist { #5 } - } - } - \__groupthm_add_to_theorem_group_ordering:n { #1 } - \clist_gput_left:Nn \g__groupthm_defined_theorem_groups_clist { #1 } - } -\cs_new:Npn \__groupthm_undeclare_theorem_group_aux:n #1 - { - \cs_undefine:c { __groupthm_use_group_#1: } - \hook_gremove_code:nn { __groupthm/prename } { #1 } - \hook_gremove_code:nn { __groupthm/postname } { #1 } - \hook_gremove_code:nn { __groupthm/mapname } { #1 } - \hook_gremove_code:nn { __groupthm/thmtools } { #1 } - \clist_gremove_all:Nn \g__groupthm_defined_theorem_groups_clist { #1 } - \__groupthm_hook_gset_rule_foreach:nNnn - { ?? } - \g__groupthm_defined_theorem_groups_clist - { unrelated } - { #1 } - \__groupthm_hook_gset_rule_foreach:nNnn - { __groupthm/prename } - \g__groupthm_defined_theorem_groups_clist - { unrelated } - { #1 } - \__groupthm_hook_gset_rule_foreach:nNnn - { __groupthm/postname } - \g__groupthm_defined_theorem_groups_clist - { unrelated } - { #1 } - \__groupthm_hook_gset_rule_foreach:nNnn - { __groupthm/mapname } - \g__groupthm_defined_theorem_groups_clist - { unrelated } - { #1 } - \__groupthm_hook_gset_rule_foreach:nNnn - { __groupthm/thmtools } - \g__groupthm_defined_theorem_groups_clist - { unrelated } - { #1 } - \__groupthm_remove_from_theorem_group_ordering:n { #1 } - } -\cs_new:Npn \groupthm_new_theorem_group:nnnnn #1 #2 #3 #4 #5 - { - \cs_if_exist:cTF { __groupthm_use_group_#1: } - { - \msg_error:nnnnn { groupthm } { wrong ~ definition } - { theorem ~ group } { #1 } { already } - } - { - \__groupthm_declare_theorem_group_aux:nnnnn { #1 } { #2 } { #3 } { #4 } { #5 } - } - } -\cs_generate_variant:Nn \groupthm_new_theorem_group:nnnnn { n V V V V } -\cs_new:Npn \groupthm_renew_theorem_group:nnnnn #1 #2 #3 #4 #5 - { - \cs_if_exist:cTF { __groupthm_use_group_#1: } - { - \__groupthm_undeclare_theorem_group_aux:n { #1 } - \__groupthm_declare_theorem_group_aux:nnnnn { #1 } { #2 } { #3 } { #4 } { #5 } - } - { - \msg_error:nnnnn { groupthm } { wrong ~ definition } - { theorem ~ group } { #1 } { not } - } - } -\cs_generate_variant:Nn \groupthm_renew_theorem_group:nnnnn { n V V V V } -\cs_new:Npn \groupthm_provide_theorem_group:nnnnn #1 #2 #3 #4 #5 - { - \cs_if_exist:cF { __groupthm_use_group_#1: } - { - \__groupthm_declare_theorem_group_aux:nnnnn { #1 } { #2 } { #3 } { #4 } { #5 } - } - } -\cs_generate_variant:Nn \groupthm_provide_theorem_group:nnnnn { n V V V V } -\cs_new:Npn \groupthm_declare_theorem_group:nnnnn #1 #2 #3 #4 #5 - { - \cs_if_exist:cT { __groupthm_use_group_#1: } - { - \__groupthm_undeclare_theorem_group_aux:n { #1 } - } - \__groupthm_declare_theorem_group_aux:nnnnn { #1 } { #2 } { #3 } { #4 } { #5 } - } -\cs_generate_variant:Nn \groupthm_declare_theorem_group:nnnnn { n V V V V } -\cs_new:Npn \groupthm_new_theorem_group_by_keys:nn #1#2 -{ - \__groupthm_set_normalized_keys:nnn { #1 } { theoremgroup } { #2 } - \groupthm_new_theorem_group:nVVVV { #2 } - \l__groupthm_prename_tl - \l__groupthm_postname_tl - \l__groupthm_mapname_clist - \l__groupthm_thmtools_clist -} -\cs_new:Npn \groupthm_renew_theorem_group_by_keys:nn #1#2 -{ - \__groupthm_set_normalized_keys:nnn { #1 } { theoremgroup } { #2 } - \groupthm_renew_theorem_group:nVVVV { #2 } - \l__groupthm_prename_tl - \l__groupthm_postname_tl - \l__groupthm_mapname_clist - \l__groupthm_thmtools_clist -} -\cs_new:Npn \groupthm_provide_theorem_group_by_keys:nn #1#2 -{ - \__groupthm_set_normalized_keys:nnn { #1 } { theoremgroup } { #2 } - \groupthm_provide_theorem_group:nVVVV { #2 } - \l__groupthm_prename_tl - \l__groupthm_postname_tl - \l__groupthm_mapname_clist - \l__groupthm_thmtools_clist -} -\cs_new:Npn \groupthm_declare_theorem_group_by_keys:nn #1#2 -{ - \__groupthm_set_normalized_keys:nnn { #1 } { theoremgroup } { #2 } - \groupthm_declare_theorem_group:nVVVV { #2 } - \l__groupthm_prename_tl - \l__groupthm_postname_tl - \l__groupthm_mapname_clist - \l__groupthm_thmtools_clist -} -\NewDocumentCommand{\NewTheoremGroup}{ O{} m } - { - \groupthm_new_theorem_group_by_keys:nn { #1 } { #2 } - } -\NewDocumentCommand{\RenewTheoremGroup}{ O{} m } - { - \groupthm_renew_theorem_group_by_keys:nn { #1 } { #2 } - } -\NewDocumentCommand{\ProvideTheoremGroup}{ O{} m } - { - \groupthm_provide_theorem_group_by_keys:nn { #1 } { #2 } - } -\NewDocumentCommand{\DeclareTheoremGroup}{ O{} m } - { - \groupthm_declare_theorem_group_by_keys:nn { #1 } { #2 } - } -\cs_new:Npn \groupthm_declare_theorem_group_rule:nnnn #1 #2 #3 #4 - { - \str_set:Nx \l_tmpa_str { \tl_trim_spaces:n { #3 } } - - \str_if_eq:VnT \l_tmpa_str { higher } - { - \str_set:Nn \l_tmpa_tl { after } - } - - \str_if_eq:VnT \l_tmpa_str { lower } - { - \str_set:Nn \l_tmpa_tl { before } - } - - \str_if_eq:nnTF { #1 } { ?? } - { - \hook_gset_rule:nnVn {??} {#2} \l_tmpa_tl {#4} - } - { - \hook_gset_rule:nnVn { __groupthm / #1 } {#2} \l_tmpa_tl {#4} - } - } - -\NewDocumentCommand { \DeclareTheoremGroupRule } { O{??} m m m } - { - \groupthm_declare_theorem_group_rule:nnnn {#1} {#2} {#3} {#4} - } -\endinput -%% -%% End of file `groupthm.sty'. diff --git a/doc/environments/groupthm/groupthm.synctex(busy) b/doc/environments/groupthm/groupthm.synctex(busy) deleted file mode 100644 index 3da7090..0000000 Binary files a/doc/environments/groupthm/groupthm.synctex(busy) and /dev/null differ