prename, postname and thmtools keys for groups and grouped theorems working

This commit is contained in:
Maximilian Keßler 2022-01-16 14:35:24 +01:00
parent e92f1da165
commit 386f07a6d6

View file

@ -8,30 +8,46 @@ __HEADER__(Grouping theorems for easier customization.)
\NewHook { groupthm / prename } \NewHook { groupthm / prename }
\NewHook { groupthm / postname } \NewHook { groupthm / postname }
\NewHook { groupthm / mapname }
\NewHook { groupthm / thmtools }
\newcounter{indocument}
\newcounter{insection}[section]
\newcounter{insubsection}[subsection]
\tl_new:N \__name_tl
\str_new:N \__name_str
\cs_new:Nn \declaretheorem:nn \cs_new:Nn \declaretheorem:nn
{ {
\tl_show:n { #1 }
\declaretheorem [ #1 ] { #2 } \declaretheorem [ #1 ] { #2 }
} }
\cs_generate_variant:Nn \declaretheorem:nn {V V, V n} \cs_generate_variant:Nn \declaretheorem:nn {V V, V n}
% groupname, prename, postname, mapname, thmtools
\cs_new:Npn \store_group:nnnnn #1#2#3#4#5 \cs_new:Npn \store_group:nnnnn #1#2#3#4#5
{ {
\cs_new:cpn { retrieve_group_#1: } \cs_new:cpn { retrieve_group_#1: }
{ {
\AddToHook { groupthm / prename } [ #1 ] \AddToHook { groupthm / prename } [ #1 ]
{ {
\tl_put_right:Nx \__name_str { #2 } \tl_put_left:Nx \__name_tl { #2 }
} }
\AddToHook { groupthm / postname } [ #1 ] \AddToHook { groupthm / postname } [ #1 ]
{ {
\tl_put_right:Nx \__name_str { #3 } \tl_put_right:Nx \__name_tl { #3 }
} }
% TODO: handle thmtools and mapname \AddToHook { groupthm / mapname } [ #1 ]
{
\clist_put_right:Nn \l_groupthm_mapname_clist { #4 }
}
\AddToHook { groupthm / thmtools } [ #1 ]
{
\clist_put_right:Nn __PACKAGE_MACRO__(thmtools_args_clist) { #5 }
}
} }
} }
@ -89,7 +105,6 @@ __HEADER__(Grouping theorems for easier customization.)
} }
% Construct name % Construct name
\str_new:N \__name_str
\tl_if_eq:NnTF __PACKAGE_MACRO__(theorem_name_tl) { \c_novalue_tl } \tl_if_eq:NnTF __PACKAGE_MACRO__(theorem_name_tl) { \c_novalue_tl }
{ {
\str_set:Nx \__name_str \str_set:Nx \__name_str
@ -104,22 +119,25 @@ __HEADER__(Grouping theorems for easier customization.)
} }
} }
\tl_new:N \__name_tl
\tl_set:NV \__name_tl \__name_str \tl_set:NV \__name_tl \__name_str
% Process groups here, adding to the hooks for prename, postname, mapname, thmtools % Process groups here, adding to the hooks for prename, postname, mapname, thmtools
% mapname currently not implemented % mapname currently not implemented
\RemoveFromHook { groupthm / prename }[ * ]
\RemoveFromHook { groupthm / postname }[*]
\RemoveFromHook { groupthm / mapname }[*]
\RemoveFromHook { groupthm / thmtools }[*]
\clist_map_function:NN __PACKAGE_MACRO__(groups_clist) \retrieve_group:n \clist_map_function:NN __PACKAGE_MACRO__(groups_clist) \retrieve_group:n
%\clist_show:N __PACKAGE_MACRO__(groups_clist)
% \clist_new:N __PACKAGE_MACRO__(mapname_clist)
% \clist_set:N
\hook_use:n { groupthm / prename } \hook_use:n { groupthm / prename }
\hook_use:n { groupthm / postname } \hook_use:n { groupthm / postname }
\hook_use:n { groupthm / mapname }
\hook_use:n { groupthm / thmtools }
\clist_put_right:Nx __PACKAGE_MACRO__(thmtools_args_clist) \clist_put_right:Nx __PACKAGE_MACRO__(thmtools_args_clist)
{ {
name = \str_use:N \__name_str name = \str_use:N \__name_tl
} }
\declaretheorem:Vn \declaretheorem:Vn
{ {
@ -127,3 +145,37 @@ __HEADER__(Grouping theorems for easier customization.)
} }
{ #2 } { #2 }
} }
%%% Default groups available
\NewTheoremGroup { all }
[
]
\NewTheoremGroup { big }
[
thmtools = { sibling = insection }
]
\NewTheoremGroup { dagger }
[
postname = { $\dagger$ },
thmtools = { sibling = insubsection }
]
\NewTheoremGroup { small }
[
thmtools = { sibling = insubsection }
]
\NewTheoremGroup { star }
[
thmtools = { sibling = insubsection },
postname = { * }
]
\NewTheoremGroup { starred }
[
thmtools = { numbered = no }
]