add macro to flatten inheritance relation
This commit is contained in:
parent
7f1132b898
commit
0e78a52b61
2 changed files with 59 additions and 2 deletions
|
@ -1878,8 +1878,42 @@
|
||||||
% \end{macro}
|
% \end{macro}
|
||||||
%
|
%
|
||||||
%
|
%
|
||||||
%
|
%
|
||||||
%
|
% \begin{macro}{\@@_flatten_groups_hierarchy:nN}
|
||||||
|
% \begin{syntax}
|
||||||
|
% \cs{@@_flatten_groups_hierarchy:n}\marg{theorem groups}\marg{clist}
|
||||||
|
% \end{syntax}
|
||||||
|
%
|
||||||
|
% Expects a comma separated list of \meta{theorem group}s.
|
||||||
|
% The inheritance relation is flattened, and the set of
|
||||||
|
% obtained theorem groups is stored in \meta{clist}
|
||||||
|
%
|
||||||
|
% \begin{macrocode}
|
||||||
|
\cs_new:Npn \@@_push_tmpa_seq:n #1
|
||||||
|
{
|
||||||
|
\seq_push:Nn \l_tmpa_seq { #1 }
|
||||||
|
}
|
||||||
|
\cs_new:Npn \@@_flatten_groups_hierarchy:nN #1 #2
|
||||||
|
{
|
||||||
|
\clist_clear:N #2
|
||||||
|
\seq_set_from_clist:Nn \l_tmpa_seq { #1 }
|
||||||
|
\bool_until_do:nn
|
||||||
|
{
|
||||||
|
\seq_if_empty_p:N \l_tmpa_seq
|
||||||
|
}
|
||||||
|
{
|
||||||
|
\seq_pop:NN \l_tmpa_seq \l_tmpa_tl
|
||||||
|
\clist_if_in:NVF #2 \l_tmpa_tl
|
||||||
|
{
|
||||||
|
\clist_put_left:NV #2 \l_tmpa_tl
|
||||||
|
\clist_map_function:cN
|
||||||
|
{ g_@@_parents_group__ \l_tmpa_tl __clist }
|
||||||
|
\@@_push_tmpa_seq:n
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
% \end{macrocode}
|
||||||
|
% \end{macro}
|
||||||
%
|
%
|
||||||
%
|
%
|
||||||
% \subsection{Iterating over powersets}
|
% \subsection{Iterating over powersets}
|
||||||
|
|
|
@ -379,6 +379,29 @@
|
||||||
{
|
{
|
||||||
\groupthm_add_parent:nn { #1 } { #2 }
|
\groupthm_add_parent:nn { #1 } { #2 }
|
||||||
}
|
}
|
||||||
|
\cs_new:Npn \__groupthm_push_tmpa_seq:n #1
|
||||||
|
{
|
||||||
|
\seq_push:Nn \l_tmpa_seq { #1 }
|
||||||
|
}
|
||||||
|
\cs_new:Npn \__groupthm_flatten_groups_hierarchy:nN #1 #2
|
||||||
|
{
|
||||||
|
\clist_clear:N #2
|
||||||
|
\seq_set_from_clist:Nn \l_tmpa_seq { #1 }
|
||||||
|
\bool_until_do:nn
|
||||||
|
{
|
||||||
|
\seq_if_empty_p:N \l_tmpa_seq
|
||||||
|
}
|
||||||
|
{
|
||||||
|
\seq_pop:NN \l_tmpa_seq \l_tmpa_tl
|
||||||
|
\clist_if_in:NVF #2 \l_tmpa_tl
|
||||||
|
{
|
||||||
|
\clist_put_left:NV #2 \l_tmpa_tl
|
||||||
|
\clist_map_function:cN
|
||||||
|
{ g__groupthm_parents_group__ \l_tmpa_tl __clist }
|
||||||
|
\__groupthm_push_tmpa_seq:n
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
\clist_new:N \l__powerset_copied_clist
|
\clist_new:N \l__powerset_copied_clist
|
||||||
\seq_new:N \l__powerset_saved_seq
|
\seq_new:N \l__powerset_saved_seq
|
||||||
\cs_generate_variant:Nn \clist_remove_all:Nn { N V }
|
\cs_generate_variant:Nn \clist_remove_all:Nn { N V }
|
||||||
|
|
Loading…
Reference in a new issue