implement new define aux command to better generate variants with new, declare, provide and renew
This commit is contained in:
parent
0dd60e3447
commit
08323fdf48
3 changed files with 287 additions and 190 deletions
|
@ -1,4 +1,4 @@
|
||||||
sty:
|
sty: clean-sty
|
||||||
pdflatex groupthm.ins
|
pdflatex groupthm.ins
|
||||||
|
|
||||||
all: clean pdf sty
|
all: clean pdf sty
|
||||||
|
@ -7,7 +7,6 @@ pdf:
|
||||||
pdflatex groupthm.dtx
|
pdflatex groupthm.dtx
|
||||||
makeindex -s gind.ist groupthm.idx
|
makeindex -s gind.ist groupthm.idx
|
||||||
pdflatex groupthm.dtx
|
pdflatex groupthm.dtx
|
||||||
pdflatex groupthm.dtx
|
|
||||||
|
|
||||||
clean: clean-sty
|
clean: clean-sty
|
||||||
latexmk -c groupthm.dtx
|
latexmk -c groupthm.dtx
|
||||||
|
|
|
@ -46,6 +46,16 @@
|
||||||
% \emph{#1}%
|
% \emph{#1}%
|
||||||
% }
|
% }
|
||||||
%
|
%
|
||||||
|
% \ExplSyntaxOn
|
||||||
|
% \NewDocumentCommand { \mymeta } { O{} m }
|
||||||
|
% {
|
||||||
|
% \meta[#1]{#2}
|
||||||
|
% \__codedoc_special_index_module:nnnnN { #2 } { #2 } { meta } { usage } { \c_false_bool}
|
||||||
|
% }
|
||||||
|
% \ExplSyntaxOff
|
||||||
|
%
|
||||||
|
%
|
||||||
|
%
|
||||||
% \begin{documentation}
|
% \begin{documentation}
|
||||||
%
|
%
|
||||||
% \tableofcontents
|
% \tableofcontents
|
||||||
|
@ -74,14 +84,14 @@
|
||||||
% for almost all needs, it is pretty time-consuming to largely change
|
% for almost all needs, it is pretty time-consuming to largely change
|
||||||
% the behavior of environments, or have small variants of these.
|
% the behavior of environments, or have small variants of these.
|
||||||
%
|
%
|
||||||
% This package aims at both providing a versatile mechanism, \meta{theorem group}s,
|
% This package aims at both providing a versatile mechanism, \mymeta{theorem group}s,
|
||||||
% to structure theorems into groups that can subsequently easily altered,
|
% to structure theorems into groups that can subsequently easily altered,
|
||||||
% as well as a mechanism for easily generating \meta{theorem families}.
|
% as well as a mechanism for easily generating \mymeta{theorem families}.
|
||||||
%
|
%
|
||||||
% As the author is of the opinion that of the mentioned theorem controlling packages
|
% As the author is of the opinion that of the mentioned theorem controlling packages
|
||||||
% \pkg{thmtools} provides the most versatile interface, the \pkg{groupthm}
|
% \pkg{thmtools} provides the most versatile interface, the \pkg{groupthm}
|
||||||
% will be working on top of \pkg{thmtools} and use this as a backend for declaring
|
% will be working on top of \pkg{thmtools} and use this as a backend for declaring
|
||||||
% the \meta{theorem}s themselves.
|
% the \mymeta{theorem}s themselves.
|
||||||
%
|
%
|
||||||
% Thus, any styles supported by \pkg{thmtools} will be supported by \pkg{groupthm}
|
% Thus, any styles supported by \pkg{thmtools} will be supported by \pkg{groupthm}
|
||||||
% as well, by passing them to \pkg{thmtools}.
|
% as well, by passing them to \pkg{thmtools}.
|
||||||
|
@ -90,46 +100,46 @@
|
||||||
%
|
%
|
||||||
% \subsection{Theorem groups}
|
% \subsection{Theorem groups}
|
||||||
% \label{sec:theorem-groups}
|
% \label{sec:theorem-groups}
|
||||||
% A \meta{theorem group} is some named group holding some properties for
|
% A \mymeta{theorem group} is some named group holding some properties for
|
||||||
% the \meta{theorem}s that are contained in this group.
|
% the \mymeta{theorem}s that are contained in this group.
|
||||||
% Each \meta{theorem} can, when declared, be part of arbitrarily many \meta{theorem group}s,
|
% Each \mymeta{theorem} can, when declared, be part of arbitrarily many \mymeta{theorem group}s,
|
||||||
% and will be subject to the styles these groups defined.
|
% and will be subject to the styles these groups defined.
|
||||||
%
|
%
|
||||||
% This enables to group similar \meta{theorem}s and alter them at a late stage of
|
% This enables to group similar \mymeta{theorem}s and alter them at a late stage of
|
||||||
% document development in a unique manner, by only having to change the
|
% document development in a unique manner, by only having to change the
|
||||||
% definition of the \meta{theorem group}, and not all \meta{theorem}s separately.
|
% definition of the \mymeta{theorem group}, and not all \mymeta{theorem}s separately.
|
||||||
%
|
%
|
||||||
% The properties. such a \meta{theorem group} can hold are as follows
|
% The properties. such a \mymeta{theorem group} can hold are as follows
|
||||||
%
|
%
|
||||||
%
|
%
|
||||||
% \begin{description}
|
% \begin{description}
|
||||||
% \item[\kw{prefix}] A prefix (any \meta{token list}) that will be inserted
|
% \item[\kw{prefix}] A prefix (any \mymeta{token list}) that will be inserted
|
||||||
% before the theorem name of each member of this \meta{theorem group}.
|
% before the theorem name of each member of this \mymeta{theorem group}.
|
||||||
% \item[\kw{suffix}] A suffix (any \meta{token list}) that will be
|
% \item[\kw{suffix}] A suffix (any \mymeta{token list}) that will be
|
||||||
% inserted before the theorem name for each member of this \meta{theorem group}.
|
% inserted before the theorem name for each member of this \mymeta{theorem group}.
|
||||||
% This could be e.g.~some \enquote{$\star$} appended to the name to indicate
|
% This could be e.g.~some \enquote{$\star$} appended to the name to indicate
|
||||||
% variants of environments.
|
% variants of environments.
|
||||||
% \item[\kw{mapname}] A \meta{function} (some macro that takes exactly one argument)
|
% \item[\kw{mapname}] A \mymeta{function} (some macro that takes exactly one argument)
|
||||||
% that is applied to the \kw{name}.
|
% that is applied to the \kw{name}.
|
||||||
% \item[\kw{thmtools}] A \meta{clist} of key-value pairs that are passed to the underlying
|
% \item[\kw{thmtools}] A \mymeta{clist} of key-value pairs that are passed to the underlying
|
||||||
% \pkg{thmtools} backend of the \meta{theorem}.
|
% \pkg{thmtools} backend of the \mymeta{theorem}.
|
||||||
% This allows e.g.~to set the \kw{topskip} of a certain class of \meta{theorem}s.
|
% This allows e.g.~to set the \kw{topskip} of a certain class of \mymeta{theorem}s.
|
||||||
% \end{description}
|
% \end{description}
|
||||||
%
|
%
|
||||||
% The most versatile key here is certainly the \kw{thmtools} key,
|
% The most versatile key here is certainly the \kw{thmtools} key,
|
||||||
% providing the most customization to an end user (like you).
|
% providing the most customization to an end user (like you).
|
||||||
%
|
%
|
||||||
% As mentioned, each \meta{theorem} can be member of arbitrary many \meta{theorem group}s,
|
% As mentioned, each \mymeta{theorem} can be member of arbitrary many \mymeta{theorem group}s,
|
||||||
% and will posses their corresponding properties.
|
% and will posses their corresponding properties.
|
||||||
%
|
%
|
||||||
% To adjust finer controlling of these \meta{theorem group}s, \meta{theorem group}s can inherit from each other, and \meta{theorem group}s are subject to a hierarchy that controls precedence in case
|
% To adjust finer controlling of these \mymeta{theorem group}s, \mymeta{theorem group}s can inherit from each other, and \mymeta{theorem group}s are subject to a hierarchy that controls precedence in case
|
||||||
% of conflicting properties of different \meta{theorem group}s a \meta{theorem} may be part of.
|
% of conflicting properties of different \mymeta{theorem group}s a \mymeta{theorem} may be part of.
|
||||||
%
|
%
|
||||||
% This hierarchy can of course be controlled by the user.
|
% This hierarchy can of course be controlled by the user.
|
||||||
%
|
%
|
||||||
% \subsection{Grouped theorems}
|
% \subsection{Grouped theorems}
|
||||||
%
|
%
|
||||||
% A \meta{grouped theorem} is just a theorem that is a member of
|
% A \mymeta{grouped theorem} is just a theorem that is a member of
|
||||||
% a given set of groups (possibly empty).
|
% a given set of groups (possibly empty).
|
||||||
% It behaves just a regular theorem, except that by changing the definition of
|
% It behaves just a regular theorem, except that by changing the definition of
|
||||||
% its theorem groups, we can alter its behavior.
|
% its theorem groups, we can alter its behavior.
|
||||||
|
@ -140,8 +150,8 @@
|
||||||
% although in fact we mean \enquote{grouped theorems}.
|
% although in fact we mean \enquote{grouped theorems}.
|
||||||
%
|
%
|
||||||
% \subsection{Theorem families}
|
% \subsection{Theorem families}
|
||||||
% Often, one needs some small \meta{theorem variant}s of some \meta{theorem}, the most typical
|
% Often, one needs some small \mymeta{theorem variant}s of some \mymeta{theorem}, the most typical
|
||||||
% example being \vocab{starred} version of \meta{theorem}s that are not numbered
|
% example being \vocab{starred} version of \mymeta{theorem}s that are not numbered
|
||||||
% in contrast to their counterparts.
|
% in contrast to their counterparts.
|
||||||
%
|
%
|
||||||
% \begin{verbatim}
|
% \begin{verbatim}
|
||||||
|
@ -157,12 +167,12 @@
|
||||||
% \todo{insert code example output}
|
% \todo{insert code example output}
|
||||||
%
|
%
|
||||||
% \pkg{groupthm} extends this idea and provides a versatile mechanism to define a
|
% \pkg{groupthm} extends this idea and provides a versatile mechanism to define a
|
||||||
% \meta{theorem family}, which is based on some \meta{theorem name} and
|
% \mymeta{theorem family}, which is based on some \mymeta{theorem name} and
|
||||||
% parses additional arguments / syntax to control the \meta{theorem groups}
|
% parses additional arguments / syntax to control the \mymeta{theorem groups}
|
||||||
% that this environment is a part of.
|
% that this environment is a part of.
|
||||||
%
|
%
|
||||||
% So, in addition the name of a \meta{theorem}, the corresponding environment will
|
% So, in addition the name of a \mymeta{theorem}, the corresponding environment will
|
||||||
% accept some options and toggle the membership of certain \meta{theorem groups},
|
% accept some options and toggle the membership of certain \mymeta{theorem groups},
|
||||||
% thus further customizing its appearance.
|
% thus further customizing its appearance.
|
||||||
%
|
%
|
||||||
% This can lead e.g.~to usages like the following:
|
% This can lead e.g.~to usages like the following:
|
||||||
|
@ -175,10 +185,10 @@
|
||||||
% \todo{code}
|
% \todo{code}
|
||||||
%
|
%
|
||||||
% Providing this consists of two parts:
|
% Providing this consists of two parts:
|
||||||
% declaring the \meta{theorem family} by listing the groups that can be toggled
|
% declaring the \mymeta{theorem family} by listing the groups that can be toggled
|
||||||
% by this \meta{theorem family}, and declaring the actual option parsing
|
% by this \mymeta{theorem family}, and declaring the actual option parsing
|
||||||
% of the \meta{theorem family}, which then controls the membership in these groups
|
% of the \mymeta{theorem family}, which then controls the membership in these groups
|
||||||
% (and of course prior to this the definition of the desired \meta{theorem group}s).
|
% (and of course prior to this the definition of the desired \mymeta{theorem group}s).
|
||||||
%
|
%
|
||||||
%
|
%
|
||||||
%
|
%
|
||||||
|
@ -241,33 +251,33 @@
|
||||||
% \cs{NewTheoremGroup}\oarg{keys}\marg{theorem group}
|
% \cs{NewTheoremGroup}\oarg{keys}\marg{theorem group}
|
||||||
% \end{syntax}
|
% \end{syntax}
|
||||||
%
|
%
|
||||||
% This introduces a new \meta{theorem group} with the given name.
|
% This introduces a new \mymeta{theorem group} with the given name.
|
||||||
% The \meta{keys} available are the same as introduced in \autoref{sec:theorem-groups}:
|
% The \mymeta{keys} available are the same as introduced in \autoref{sec:theorem-groups}:
|
||||||
%
|
%
|
||||||
% \begin{description}
|
% \begin{description}
|
||||||
% \item
|
% \item
|
||||||
%
|
%
|
||||||
% \kw{prefix} = \meta{token list}.
|
% \kw{prefix} = \mymeta{token list}.
|
||||||
% Insert the \meta{token list} in front of the theorem name.
|
% Insert the \mymeta{token list} in front of the theorem name.
|
||||||
%
|
%
|
||||||
% \item
|
% \item
|
||||||
%
|
%
|
||||||
% \kw{suffix} = \meta{token list}.
|
% \kw{suffix} = \mymeta{token list}.
|
||||||
% Insert the \meta{token list} after the theorem name.
|
% Insert the \mymeta{token list} after the theorem name.
|
||||||
%
|
%
|
||||||
% \item
|
% \item
|
||||||
%
|
%
|
||||||
% \kw{mapname} = \meta{function}.
|
% \kw{mapname} = \mymeta{function}.
|
||||||
% Apply this \meta{function} to the theorem name.
|
% Apply this \mymeta{function} to the theorem name.
|
||||||
%
|
%
|
||||||
% \item
|
% \item
|
||||||
%
|
%
|
||||||
% \kw{thmtools} = $\{$\meta{clist}$\}$.
|
% \kw{thmtools} = $\{$\mymeta{clist}$\}$.
|
||||||
% Pass these options to \pkg{thmtools}.
|
% Pass these options to \pkg{thmtools}.
|
||||||
%
|
%
|
||||||
% \end{description}
|
% \end{description}
|
||||||
%
|
%
|
||||||
% For uniqueness of the given options, the \meta{clist} given to the \kw{thmtools} key
|
% For uniqueness of the given options, the \mymeta{clist} given to the \kw{thmtools} key
|
||||||
% has to be surrounded by a pair of braces.
|
% has to be surrounded by a pair of braces.
|
||||||
%
|
%
|
||||||
% \begin{texnote}
|
% \begin{texnote}
|
||||||
|
@ -289,15 +299,15 @@
|
||||||
% controlling their order of application in case a theorem is member
|
% controlling their order of application in case a theorem is member
|
||||||
% of both groups.
|
% of both groups.
|
||||||
%
|
%
|
||||||
% The \meta{keyname} can be one of \kw{prefix}, \kw{suffix}, \kw{mapname}, \kw{thmtools}.
|
% The \mymeta{keyname} can be one of \kw{prefix}, \kw{suffix}, \kw{mapname}, \kw{thmtools}.
|
||||||
% If present, it declares the corresponding relation only for this subkey.
|
% If present, it declares the corresponding relation only for this subkey.
|
||||||
% This can lead to \meta{theorem group 1} overwriting \meta{theorem group 2} when given
|
% This can lead to \mymeta{theorem group 1} overwriting \mymeta{theorem group 2} when given
|
||||||
% contradictory \pkg{thmtools} options, but the \kw{prefix} of \meta{theorem group 1}
|
% contradictory \pkg{thmtools} options, but the \kw{prefix} of \mymeta{theorem group 1}
|
||||||
% being applied after the one of \meta{theorem group 2}.
|
% being applied after the one of \mymeta{theorem group 2}.
|
||||||
% When the \meta{keyname} is not given, this applies to all keywords.
|
% When the \mymeta{keyname} is not given, this applies to all keywords.
|
||||||
%
|
%
|
||||||
% \begin{texnote}
|
% \begin{texnote}
|
||||||
% The \meta{keyname} is just passed to the corresponding argument
|
% The \mymeta{keyname} is just passed to the corresponding argument
|
||||||
% of the \kw{lthooks} package.
|
% of the \kw{lthooks} package.
|
||||||
% If the option argument is not present, \kw{??} is used, this has the described effect.
|
% If the option argument is not present, \kw{??} is used, this has the described effect.
|
||||||
% \end{texnote}
|
% \end{texnote}
|
||||||
|
@ -311,18 +321,18 @@
|
||||||
% \begin{description}
|
% \begin{description}
|
||||||
% \item[\kw{higher} or \kw{after} or \kw{\string>}]
|
% \item[\kw{higher} or \kw{after} or \kw{\string>}]
|
||||||
%
|
%
|
||||||
% \meta{theorem group 1} takes precedence over \meta{theorem group 2}.
|
% \mymeta{theorem group 1} takes precedence over \mymeta{theorem group 2}.
|
||||||
% Its \kw{prefix} is applied after the one of \meta{theorem group 2}.
|
% Its \kw{prefix} is applied after the one of \mymeta{theorem group 2}.
|
||||||
%
|
%
|
||||||
% \item[\kw{lower} or \kw{before} or \kw{\string<}]
|
% \item[\kw{lower} or \kw{before} or \kw{\string<}]
|
||||||
%
|
%
|
||||||
% \meta{theorem group 2} takes precedence over \meta{theorem group 1}.
|
% \mymeta{theorem group 2} takes precedence over \mymeta{theorem group 1}.
|
||||||
% Its \kw{prefix} is applied after the one of \meta{theorem group 1}.
|
% Its \kw{prefix} is applied after the one of \mymeta{theorem group 1}.
|
||||||
%
|
%
|
||||||
% \end{description}
|
% \end{description}
|
||||||
%
|
%
|
||||||
% \begin{texnote}
|
% \begin{texnote}
|
||||||
% The \meta{relation} is first stripped,
|
% The \mymeta{relation} is first stripped,
|
||||||
% then checked if it matches either \kw{higher} or \kw{lower}
|
% then checked if it matches either \kw{higher} or \kw{lower}
|
||||||
% and in this case replaced by the corresponding \pkg{lthooks} variant
|
% and in this case replaced by the corresponding \pkg{lthooks} variant
|
||||||
% of the relation.
|
% of the relation.
|
||||||
|
@ -338,22 +348,22 @@
|
||||||
% \begin{syntax}
|
% \begin{syntax}
|
||||||
% \cs{AddTheoremGroupParent}\marg{theorem group 1}\marg{theorem group 2}
|
% \cs{AddTheoremGroupParent}\marg{theorem group 1}\marg{theorem group 2}
|
||||||
% \end{syntax}
|
% \end{syntax}
|
||||||
% Declares \meta{theorem group 1} to \enquote{inherit} all properties
|
% Declares \mymeta{theorem group 1} to \enquote{inherit} all properties
|
||||||
% of \meta{theorem group 2}.
|
% of \mymeta{theorem group 2}.
|
||||||
% In other words, \meta{theorem group 2} is a parent of \meta{theorem group 1}
|
% In other words, \mymeta{theorem group 2} is a parent of \mymeta{theorem group 1}
|
||||||
% in a usual inheritance graph.
|
% in a usual inheritance graph.
|
||||||
%
|
%
|
||||||
% The definitions of the groups themselves are unchanged,
|
% The definitions of the groups themselves are unchanged,
|
||||||
% but each new theorem defined with \meta{theorem group 1} will also
|
% but each new theorem defined with \mymeta{theorem group 1} will also
|
||||||
% have the properties of \meta{theorem group 2}.
|
% have the properties of \mymeta{theorem group 2}.
|
||||||
%
|
%
|
||||||
% Inheritance is transitive, when defining a new theorem, we just flatten out the
|
% Inheritance is transitive, when defining a new theorem, we just flatten out the
|
||||||
% inheritance graph and apply all properties.
|
% inheritance graph and apply all properties.
|
||||||
%
|
%
|
||||||
% Inheritance is subject to the usual theorem group hierarchies as discussed in \todoref.
|
% Inheritance is subject to the usual theorem group hierarchies as discussed in \todoref.
|
||||||
% This can even yield to situations, where \meta{theorem group 1} inherits
|
% This can even yield to situations, where \mymeta{theorem group 1} inherits
|
||||||
% from \meta{theorem group 2}, but \meta{theorem group 2} overwrites
|
% from \mymeta{theorem group 2}, but \mymeta{theorem group 2} overwrites
|
||||||
% \meta{theorem group 1}.
|
% \mymeta{theorem group 1}.
|
||||||
% \end{function}
|
% \end{function}
|
||||||
%
|
%
|
||||||
% \subsection{Appending to theorem groups}
|
% \subsection{Appending to theorem groups}
|
||||||
|
@ -361,8 +371,8 @@
|
||||||
% \begin{syntax}
|
% \begin{syntax}
|
||||||
% \cs{AppendToTheoremGroup}\oarg{keys}\marg{theorem group}
|
% \cs{AppendToTheoremGroup}\oarg{keys}\marg{theorem group}
|
||||||
% \end{syntax}
|
% \end{syntax}
|
||||||
% Adds the properties given as \meta{keys} to the theorem group.
|
% Adds the properties given as \mymeta{keys} to the theorem group.
|
||||||
% The syntax for the \meta{keys} is the same as in \cs{NewTheoremGroup}.
|
% The syntax for the \mymeta{keys} is the same as in \cs{NewTheoremGroup}.
|
||||||
% \end{function}
|
% \end{function}
|
||||||
%
|
%
|
||||||
% \subsection{Default theorem groups}
|
% \subsection{Default theorem groups}
|
||||||
|
@ -442,16 +452,16 @@
|
||||||
% \begin{syntax}
|
% \begin{syntax}
|
||||||
% \cs{NewGroupedTheorem}\oarg{keys}\marg{theorem name}
|
% \cs{NewGroupedTheorem}\oarg{keys}\marg{theorem name}
|
||||||
% \end{syntax}
|
% \end{syntax}
|
||||||
% This defines \meta{theorem name} as a new theorem environment.
|
% This defines \mymeta{theorem name} as a new theorem environment.
|
||||||
% Its properties can be set by the following keys:
|
% Its properties can be set by the following keys:
|
||||||
%
|
%
|
||||||
% \begin{description}
|
% \begin{description}
|
||||||
%
|
%
|
||||||
% \item
|
% \item
|
||||||
%
|
%
|
||||||
% \kw{name} $=$ \meta{displayed name}.
|
% \kw{name} $=$ \mymeta{displayed name}.
|
||||||
% If given, this is the displayed name of the environment in the document.
|
% If given, this is the displayed name of the environment in the document.
|
||||||
% If not present, the \meta{theorem name} is also used as the \meta{displayed name}
|
% If not present, the \mymeta{theorem name} is also used as the \mymeta{displayed name}
|
||||||
% in capitalized form.
|
% in capitalized form.
|
||||||
%
|
%
|
||||||
% \item
|
% \item
|
||||||
|
@ -490,9 +500,9 @@
|
||||||
% \end{syntax}
|
% \end{syntax}
|
||||||
%
|
%
|
||||||
% This behaves essentially the same as \cs{NewGroupedTheorem},
|
% This behaves essentially the same as \cs{NewGroupedTheorem},
|
||||||
% but will define two grouped theorems, namely \meta{theorem name} and \meta{theorem name*}.
|
% but will define two grouped theorems, namely \mymeta{theorem name} and \mymeta{theorem name*}.
|
||||||
%
|
%
|
||||||
% The \meta{theorem name*} environment has the same properties as the \meta{theorem name},
|
% The \mymeta{theorem name*} environment has the same properties as the \mymeta{theorem name},
|
||||||
% but will be member of the \kw{starred} theorem group.
|
% but will be member of the \kw{starred} theorem group.
|
||||||
% It is thus not recommended to call \cs{NewTheorem}
|
% It is thus not recommended to call \cs{NewTheorem}
|
||||||
% with an actual \enquote{*} in the environment name, since both environments
|
% with an actual \enquote{*} in the environment name, since both environments
|
||||||
|
@ -504,8 +514,8 @@
|
||||||
% \cs{NewTheorem}\oarg{keys}\marg{theorem name}
|
% \cs{NewTheorem}\oarg{keys}\marg{theorem name}
|
||||||
% \end{syntax}
|
% \end{syntax}
|
||||||
% Combines the behavior of \cs{NewGroupedTheorem*} and \cs{NewTheorem}, thus
|
% Combines the behavior of \cs{NewGroupedTheorem*} and \cs{NewTheorem}, thus
|
||||||
% declaring \meta{theorem} to (additionally) be member of the \kw{unnumbered}
|
% declaring \mymeta{theorem} to (additionally) be member of the \kw{unnumbered}
|
||||||
% and \meta{theorem*} to (additionally) be member of the \kw{starred} group.
|
% and \mymeta{theorem*} to (additionally) be member of the \kw{starred} group.
|
||||||
%
|
%
|
||||||
% As mentioned in \todoref, by default both environments will behave the same.
|
% As mentioned in \todoref, by default both environments will behave the same.
|
||||||
% \end{function}
|
% \end{function}
|
||||||
|
@ -518,7 +528,7 @@
|
||||||
% \end{syntax}
|
% \end{syntax}
|
||||||
%
|
%
|
||||||
% Defines a family of grouped theorems.
|
% Defines a family of grouped theorems.
|
||||||
% The \meta{keys} accept the same arguments as the \cs{NewGroupedTheorem} macro.
|
% The \mymeta{keys} accept the same arguments as the \cs{NewGroupedTheorem} macro.
|
||||||
% However, for each \emph{subset} of the given groups,
|
% However, for each \emph{subset} of the given groups,
|
||||||
% a grouped theorem is defined.
|
% a grouped theorem is defined.
|
||||||
%
|
%
|
||||||
|
@ -577,11 +587,11 @@
|
||||||
% \marg{selection body}
|
% \marg{selection body}
|
||||||
% \end{syntax}
|
% \end{syntax}
|
||||||
%
|
%
|
||||||
% Defines a new environment with options, given by \meta{theorem name}.
|
% Defines a new environment with options, given by \mymeta{theorem name}.
|
||||||
% The \meta{argument specification} can be any valid \pkg{xparse} argument specification.
|
% The \mymeta{argument specification} can be any valid \pkg{xparse} argument specification.
|
||||||
%
|
%
|
||||||
% The \meta{selection body} is there to process the options of
|
% The \mymeta{selection body} is there to process the options of
|
||||||
% the \meta{argument specification} and select which variant of the \meta{theorem name}
|
% the \mymeta{argument specification} and select which variant of the \mymeta{theorem name}
|
||||||
% to enter.
|
% to enter.
|
||||||
% The arguments are available as usual with \pkg{xparse} by \kw{\#1}, \kw{\#2}, \ldots
|
% The arguments are available as usual with \pkg{xparse} by \kw{\#1}, \kw{\#2}, \ldots
|
||||||
%
|
%
|
||||||
|
@ -589,11 +599,11 @@
|
||||||
% which enables the corresponding groups.
|
% which enables the corresponding groups.
|
||||||
%
|
%
|
||||||
% When the environment is called within the document, the options are parsed
|
% When the environment is called within the document, the options are parsed
|
||||||
% as with \pkg{xparse} and the \meta{selection body} is executed.
|
% as with \pkg{xparse} and the \mymeta{selection body} is executed.
|
||||||
% Immediately after, the theorem variant of \meta{theorem name} with the specified groups
|
% Immediately after, the theorem variant of \mymeta{theorem name} with the specified groups
|
||||||
% by \cs{AddTheoremToGroup} is called.
|
% by \cs{AddTheoremToGroup} is called.
|
||||||
%
|
%
|
||||||
% At the end of the environment, the \meta{selection body} is executed again and the
|
% At the end of the environment, the \mymeta{selection body} is executed again and the
|
||||||
% called theorem variant is ended again.
|
% called theorem variant is ended again.
|
||||||
%
|
%
|
||||||
% The possible theorem variants that the newly declared environment will call
|
% The possible theorem variants that the newly declared environment will call
|
||||||
|
@ -631,7 +641,7 @@
|
||||||
% \end{syntax}
|
% \end{syntax}
|
||||||
%
|
%
|
||||||
% This behaves essentially the same as \cs{NewGroupedTheoremFamilyOptions},
|
% This behaves essentially the same as \cs{NewGroupedTheoremFamilyOptions},
|
||||||
% but also declares the environment \meta{theorem name*},
|
% but also declares the environment \mymeta{theorem name*},
|
||||||
% which behaves the same but calls the theorem variants with the additional \kw{starred}
|
% which behaves the same but calls the theorem variants with the additional \kw{starred}
|
||||||
% subgroup.
|
% subgroup.
|
||||||
%
|
%
|
||||||
|
@ -651,7 +661,7 @@
|
||||||
% \end{syntax}
|
% \end{syntax}
|
||||||
%
|
%
|
||||||
% Combines the behavior of \cs{NewGroupedTheoremFamilyOptions*} and \cs{NewTheoremFamilyOptions},
|
% Combines the behavior of \cs{NewGroupedTheoremFamilyOptions*} and \cs{NewTheoremFamilyOptions},
|
||||||
% thus declaring both \meta{theorem name} and \meta{theorem name*} environments,
|
% thus declaring both \mymeta{theorem name} and \mymeta{theorem name*} environments,
|
||||||
% the latter calling the \kw{starred} variants of the theorem family,
|
% the latter calling the \kw{starred} variants of the theorem family,
|
||||||
% and both of them calling \kw{unnumbered} variants of the family.
|
% and both of them calling \kw{unnumbered} variants of the family.
|
||||||
%
|
%
|
||||||
|
@ -686,14 +696,14 @@
|
||||||
% If the corresponding command would be something like \enquote{new foo},
|
% If the corresponding command would be something like \enquote{new foo},
|
||||||
% The syntax will typically be
|
% The syntax will typically be
|
||||||
% \begin{itemize}
|
% \begin{itemize}
|
||||||
% \item \cs{groupthm_new_foo:mmm}\meta{mandatory args}\meta{optional args},
|
% \item \cs{groupthm_new_foo:mmm}\mymeta{mandatory args}\mymeta{optional args},
|
||||||
% where the \meta{mandatory args} list the mandatory args of the \LaTeX2e
|
% where the \mymeta{mandatory args} list the mandatory args of the \LaTeX2e
|
||||||
% interface, and the \meta{optional args} list the optional args
|
% interface, and the \mymeta{optional args} list the optional args
|
||||||
% of the key-value interface, but requiring them mandatory as well.
|
% of the key-value interface, but requiring them mandatory as well.
|
||||||
% \item \cs{groupthm_new_foo_from_keys:mmm}\marg{keys}\meta{mandatory args}
|
% \item \cs{groupthm_new_foo_from_keys:mmm}\marg{keys}\mymeta{mandatory args}
|
||||||
% where we pass a \texttt{clist} as the first argument and all mandatory args
|
% where we pass a \texttt{clist} as the first argument and all mandatory args
|
||||||
% as further mandatory arguments.
|
% as further mandatory arguments.
|
||||||
% \item \cs{NewFoo}\oarg{keys}\meta{mandatory args},
|
% \item \cs{NewFoo}\oarg{keys}\mymeta{mandatory args},
|
||||||
% where the keys can be passed optionally.
|
% where the keys can be passed optionally.
|
||||||
% \end{itemize}
|
% \end{itemize}
|
||||||
%
|
%
|
||||||
|
@ -952,7 +962,7 @@
|
||||||
%
|
%
|
||||||
% \begin{macro}{\@@_thmtools_declare_theorem:nn, \@@_thmtools_declare_theorem:Vn}
|
% \begin{macro}{\@@_thmtools_declare_theorem:nn, \@@_thmtools_declare_theorem:Vn}
|
||||||
% \begin{syntax}
|
% \begin{syntax}
|
||||||
% \cs{@@_thmtools_declare_theorem:nn} \meta{theorem name}\meta{thmtools keyval args}
|
% \cs{@@_thmtools_declare_theorem:nn} \mymeta{theorem name}\mymeta{thmtools keyval args}
|
||||||
% \end{syntax}
|
% \end{syntax}
|
||||||
%
|
%
|
||||||
% This is just a private wrapper around \cs{declaretheorem} of the \pkg{thmtools} package.
|
% This is just a private wrapper around \cs{declaretheorem} of the \pkg{thmtools} package.
|
||||||
|
@ -973,7 +983,7 @@
|
||||||
% hook role setting mechanism:
|
% hook role setting mechanism:
|
||||||
% \begin{macro}{\@@_hook_gset_rule_foreach:nNnn}
|
% \begin{macro}{\@@_hook_gset_rule_foreach:nNnn}
|
||||||
% \begin{syntax}
|
% \begin{syntax}
|
||||||
% \cs{@@_hook_gset_rule_foreach:nNnn}\marg{hook}\meta{clist name}\meta{relation}\meta{label}
|
% \cs{@@_hook_gset_rule_foreach:nNnn}\marg{hook}\mymeta{clist name}\mymeta{relation}\mymeta{label}
|
||||||
% \end{syntax}
|
% \end{syntax}
|
||||||
%
|
%
|
||||||
% This is a wrapper around the \cs{hook_gset_rule:nnnn} macro
|
% This is a wrapper around the \cs{hook_gset_rule:nnnn} macro
|
||||||
|
@ -1209,7 +1219,7 @@
|
||||||
% Sets the packages keys and normalizes the retrieved values, that is,
|
% Sets the packages keys and normalizes the retrieved values, that is,
|
||||||
% clears old set keys, stores all keys in local variables,
|
% clears old set keys, stores all keys in local variables,
|
||||||
% and replaces the \cs{l_@@_name_tl} with the capitalized version of the
|
% and replaces the \cs{l_@@_name_tl} with the capitalized version of the
|
||||||
% \meta{fallback name}.
|
% \mymeta{fallback name}.
|
||||||
%
|
%
|
||||||
% \begin{macrocode}
|
% \begin{macrocode}
|
||||||
\cs_new:Npn \@@_set_normalized_keys:nnn #1 #2 #3
|
\cs_new:Npn \@@_set_normalized_keys:nnn #1 #2 #3
|
||||||
|
@ -1353,9 +1363,9 @@
|
||||||
% \end{macro}
|
% \end{macro}
|
||||||
%
|
%
|
||||||
%
|
%
|
||||||
% \begin{macro}{\@@_declare_theorem_group_aux:nnnnn}
|
% \begin{macro}{\@@_define_group_aux:nnnnn}
|
||||||
% \begin{syntax}
|
% \begin{syntax}
|
||||||
% \cs{@@_declare_theorem_group_aux:nnnnn}\marg{theorem group}\marg{prefix tl}
|
% \cs{@@_define_group_aux:nnnnn}\marg{theorem group}\marg{prefix tl}
|
||||||
% \marg{suffix tl}\marg{mapname clist}\marg{thmtools clist}
|
% \marg{suffix tl}\marg{mapname clist}\marg{thmtools clist}
|
||||||
% \end{syntax}
|
% \end{syntax}
|
||||||
%
|
%
|
||||||
|
@ -1368,11 +1378,11 @@
|
||||||
%
|
%
|
||||||
%
|
%
|
||||||
% \begin{macrocode}
|
% \begin{macrocode}
|
||||||
\cs_new:Npn \@@_declare_theorem_group_aux:nnnnn #1#2#3#4#5
|
\cs_new:Npn \@@_define_group_aux:nnnnn #1#2#3#4#5
|
||||||
{
|
{
|
||||||
% \end{macrocode}
|
% \end{macrocode}
|
||||||
%
|
%
|
||||||
% \begin{macro}{\@@_use_group_#:}
|
% \begin{macro}{\@@_use_group_\meta{theorem group}:}
|
||||||
%
|
%
|
||||||
% This is the internal macro that will be called when retrieving contents of a group.
|
% This is the internal macro that will be called when retrieving contents of a group.
|
||||||
% We define this here to store the properties of the group.
|
% We define this here to store the properties of the group.
|
||||||
|
@ -1415,9 +1425,9 @@
|
||||||
% \end{macro}
|
% \end{macro}
|
||||||
%
|
%
|
||||||
%
|
%
|
||||||
% \begin{macro}{\@@_undeclare_theorem_group_aux:n}
|
% \begin{macro}{\@@_undefine_group_aux:n}
|
||||||
% \begin{syntax}
|
% \begin{syntax}
|
||||||
% \cs{@@_undeclare_theorem_group_aux:n}\marg{theorem group}
|
% \cs{@@_undefine_group_aux:n}\marg{theorem group}
|
||||||
% \end{syntax}
|
% \end{syntax}
|
||||||
%
|
%
|
||||||
% Undeclares / undefines the given theorem group.
|
% Undeclares / undefines the given theorem group.
|
||||||
|
@ -1429,7 +1439,7 @@
|
||||||
% This macro assumes that the group was defined prior to calling.
|
% This macro assumes that the group was defined prior to calling.
|
||||||
%
|
%
|
||||||
% \begin{macrocode}
|
% \begin{macrocode}
|
||||||
\cs_new:Npn \@@_undeclare_theorem_group_aux:n #1
|
\cs_new:Npn \@@_undefine_group_aux:n #1
|
||||||
{
|
{
|
||||||
\cs_undefine:c { @@_use_group_#1: }
|
\cs_undefine:c { @@_use_group_#1: }
|
||||||
% \end{macrocode}
|
% \end{macrocode}
|
||||||
|
@ -1494,17 +1504,59 @@
|
||||||
% \begin{macro}{\groupthm_new_theorem_group:nnnnn, \groupthm_new_theorem_group:nVVVV}
|
% \begin{macro}{\groupthm_new_theorem_group:nnnnn, \groupthm_new_theorem_group:nVVVV}
|
||||||
%
|
%
|
||||||
% \begin{macrocode}
|
% \begin{macrocode}
|
||||||
|
\cs_new:Npn \@@_define_aux:nnnNNNn #1 #2 #3 #4 #5 #6 #7
|
||||||
|
{
|
||||||
|
\bool_if:nT
|
||||||
|
{
|
||||||
|
\str_if_eq_p:nn { #1 } { new }
|
||||||
|
&&
|
||||||
|
\cs_if_exist_p:N #4
|
||||||
|
}
|
||||||
|
{
|
||||||
|
\msg_error:nnnn { groupthm } { wrong ~ definition }
|
||||||
|
{ #2 } { #3 } { already }
|
||||||
|
}
|
||||||
|
|
||||||
|
\bool_if:nT
|
||||||
|
{
|
||||||
|
\str_if_eq_p:nn { #1 } { renew }
|
||||||
|
&&
|
||||||
|
! \cs_if_exist_p:N #4
|
||||||
|
}
|
||||||
|
{
|
||||||
|
\msg_error:nnnn { groupthm } { wrong ~ definition }
|
||||||
|
{ #2 } { #3 } { not }
|
||||||
|
}
|
||||||
|
|
||||||
|
\bool_if:nT
|
||||||
|
{
|
||||||
|
(
|
||||||
|
\str_if_eq_p:nn { #1 } { declare } ||
|
||||||
|
\str_if_eq_p:nn { #1 } { renew }
|
||||||
|
) &&
|
||||||
|
\cs_if_exist_p:N #4
|
||||||
|
}
|
||||||
|
{
|
||||||
|
#5 { #1 }
|
||||||
|
}
|
||||||
|
|
||||||
|
#6 #7
|
||||||
|
}
|
||||||
|
\cs_generate_variant:Nn \@@_define_aux:nnnNNNn { n n n c N N n }
|
||||||
|
|
||||||
\cs_new:Npn \groupthm_new_theorem_group:nnnnn #1 #2 #3 #4 #5
|
\cs_new:Npn \groupthm_new_theorem_group:nnnnn #1 #2 #3 #4 #5
|
||||||
|
{
|
||||||
|
\@@_define_aux:nnncNNn
|
||||||
|
{ new }
|
||||||
|
{ theorem group }
|
||||||
|
{ #1 }
|
||||||
|
{ @@_use_group_#1: }
|
||||||
|
\@@_undefine_group_aux:n
|
||||||
|
\@@_define_group_aux:nnnnn
|
||||||
{
|
{
|
||||||
\cs_if_exist:cTF { @@_use_group_#1: }
|
{ #1 } { #2 } { #3 } { #4 } { #5 }
|
||||||
{
|
|
||||||
\msg_error:nnnnn { groupthm } { wrong ~ definition }
|
|
||||||
{ theorem ~ group } { #1 } { already }
|
|
||||||
}
|
|
||||||
{
|
|
||||||
\@@_declare_theorem_group_aux:nnnnn { #1 } { #2 } { #3 } { #4 } { #5 }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
% \end{macrocode}
|
% \end{macrocode}
|
||||||
%
|
%
|
||||||
% Finally, generate some extra variant.
|
% Finally, generate some extra variant.
|
||||||
|
@ -1523,8 +1575,8 @@
|
||||||
{
|
{
|
||||||
\cs_if_exist:cTF { @@_use_group_#1: }
|
\cs_if_exist:cTF { @@_use_group_#1: }
|
||||||
{
|
{
|
||||||
\@@_undeclare_theorem_group_aux:n { #1 }
|
\@@_undefine_group_aux:n { #1 }
|
||||||
\@@_declare_theorem_group_aux:nnnnn { #1 } { #2 } { #3 } { #4 } { #5 }
|
\@@_define_group_aux:nnnnn { #1 } { #2 } { #3 } { #4 } { #5 }
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
\msg_error:nnnnn { groupthm } { wrong ~ definition }
|
\msg_error:nnnnn { groupthm } { wrong ~ definition }
|
||||||
|
@ -1549,7 +1601,7 @@
|
||||||
{
|
{
|
||||||
\cs_if_exist:cF { @@_use_group_#1: }
|
\cs_if_exist:cF { @@_use_group_#1: }
|
||||||
{
|
{
|
||||||
\@@_declare_theorem_group_aux:nnnnn { #1 } { #2 } { #3 } { #4 } { #5 }
|
\@@_define_group_aux:nnnnn { #1 } { #2 } { #3 } { #4 } { #5 }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
% \end{macrocode}
|
% \end{macrocode}
|
||||||
|
@ -1571,9 +1623,9 @@
|
||||||
{
|
{
|
||||||
\cs_if_exist:cT { @@_use_group_#1: }
|
\cs_if_exist:cT { @@_use_group_#1: }
|
||||||
{
|
{
|
||||||
\@@_undeclare_theorem_group_aux:n { #1 }
|
\@@_undefine_group_aux:n { #1 }
|
||||||
}
|
}
|
||||||
\@@_declare_theorem_group_aux:nnnnn { #1 } { #2 } { #3 } { #4 } { #5 }
|
\@@_define_group_aux:nnnnn { #1 } { #2 } { #3 } { #4 } { #5 }
|
||||||
}
|
}
|
||||||
% \end{macrocode}
|
% \end{macrocode}
|
||||||
%
|
%
|
||||||
|
@ -1727,7 +1779,7 @@
|
||||||
%
|
%
|
||||||
% We have to normalize the arguments a little bit, namely replacing \texttt{higher}
|
% We have to normalize the arguments a little bit, namely replacing \texttt{higher}
|
||||||
% and \texttt{lower} with \texttt{before} \texttt{after} respectively,
|
% and \texttt{lower} with \texttt{before} \texttt{after} respectively,
|
||||||
% and prefix the \meta{keyname} with \texttt{__groupthm}
|
% and prefix the \mymeta{keyname} with \texttt{__groupthm}
|
||||||
% in case it is not the general hook \enquote{\texttt{??}}.
|
% in case it is not the general hook \enquote{\texttt{??}}.
|
||||||
%
|
%
|
||||||
% \begin{macrocode}
|
% \begin{macrocode}
|
||||||
|
@ -1779,12 +1831,12 @@
|
||||||
%
|
%
|
||||||
% \begin{macro}{\@@_powerset_clist_foreach:Nn}
|
% \begin{macro}{\@@_powerset_clist_foreach:Nn}
|
||||||
% \begin{syntax}
|
% \begin{syntax}
|
||||||
% \cs{@@_powerset_clist_foreach:Nn}\meta{clist}\marg{code}
|
% \cs{@@_powerset_clist_foreach:Nn}\mymeta{clist}\marg{code}
|
||||||
% \end{syntax}
|
% \end{syntax}
|
||||||
%
|
%
|
||||||
% Executes \meta{code} for each subset of the given clist variable.
|
% Executes \mymeta{code} for each subset of the given clist variable.
|
||||||
% The value of the (local) variable is changes throughout the iteration,
|
% The value of the (local) variable is changes throughout the iteration,
|
||||||
% and is thus available regularly in \meta{code}.
|
% and is thus available regularly in \mymeta{code}.
|
||||||
% Its value is restored at the end of the iteration.
|
% Its value is restored at the end of the iteration.
|
||||||
%
|
%
|
||||||
% \begin{macrocode}
|
% \begin{macrocode}
|
||||||
|
@ -1834,7 +1886,7 @@
|
||||||
%
|
%
|
||||||
% \begin{macro}{\@@_use_theorem_group:n}
|
% \begin{macro}{\@@_use_theorem_group:n}
|
||||||
% \begin{syntax}
|
% \begin{syntax}
|
||||||
% \cs{@@_use_theorem_group:n}\meta{theorem group}
|
% \cs{@@_use_theorem_group:n}\mymeta{theorem group}
|
||||||
% \end{syntax}
|
% \end{syntax}
|
||||||
%
|
%
|
||||||
% Uses this theorem group, i.e.~applies its definition by writing
|
% Uses this theorem group, i.e.~applies its definition by writing
|
||||||
|
@ -1856,10 +1908,10 @@
|
||||||
%
|
%
|
||||||
% \begin{macro}{\@@_use_function_on_name:n}
|
% \begin{macro}{\@@_use_function_on_name:n}
|
||||||
% \begin{syntax}
|
% \begin{syntax}
|
||||||
% \cs{@@_use_function_on_name:n}\meta{function}
|
% \cs{@@_use_function_on_name:n}\mymeta{function}
|
||||||
% \end{syntax}
|
% \end{syntax}
|
||||||
%
|
%
|
||||||
% The \meta{function} is expected to be of type \texttt{:n},
|
% The \mymeta{function} is expected to be of type \texttt{:n},
|
||||||
% This applies the function to the \cs{l_@@_name_tl}
|
% This applies the function to the \cs{l_@@_name_tl}
|
||||||
%
|
%
|
||||||
% \begin{macrocode}
|
% \begin{macrocode}
|
||||||
|
@ -2364,20 +2416,20 @@
|
||||||
% \marg{name}\marg{name}\marg{thmtools clist}\marg{extra groups clist}\marg{generation type}
|
% \marg{name}\marg{name}\marg{thmtools clist}\marg{extra groups clist}\marg{generation type}
|
||||||
% \end{syntax}
|
% \end{syntax}
|
||||||
%
|
%
|
||||||
% This will generate a new grouped theorem for each union of a subset of \meta{groups clist}
|
% This will generate a new grouped theorem for each union of a subset of \mymeta{groups clist}
|
||||||
% and the extra set \meta{extra groups clist}, with the given properties, that is
|
% and the extra set \mymeta{extra groups clist}, with the given properties, that is
|
||||||
% the \meta{nam} and \meta{thmtools clist} will be passed to the grouped theorem.
|
% the \mymeta{nam} and \mymeta{thmtools clist} will be passed to the grouped theorem.
|
||||||
% The \meta{theorem name} of the grouped theorem will be an internal name that contains
|
% The \mymeta{theorem name} of the grouped theorem will be an internal name that contains
|
||||||
% the \meta{family name} and the list of groups of this variant, that will be generated
|
% the \mymeta{family name} and the list of groups of this variant, that will be generated
|
||||||
% in a unique manner to later retrieve the generated theorems when parsing theorem families.
|
% in a unique manner to later retrieve the generated theorems when parsing theorem families.
|
||||||
%
|
%
|
||||||
% The \meta{generation type} can be either \texttt{new} or \texttt{provide},
|
% The \mymeta{generation type} can be either \texttt{new} or \texttt{provide},
|
||||||
% depending on which backend for grouped theorem generation to use
|
% depending on which backend for grouped theorem generation to use
|
||||||
% \begin{macrocode}
|
% \begin{macrocode}
|
||||||
\cs_new:Npn \@@_declare_grouped_theorem_family_aux:nnnnnn #1 #2 #3 #4 #5 #6
|
\cs_new:Npn \@@_declare_grouped_theorem_family_aux:nnnnnn #1 #2 #3 #4 #5 #6
|
||||||
{
|
{
|
||||||
% \end{macrocode}
|
% \end{macrocode}
|
||||||
% Make a local copy of the \meta{groups clist} argument,
|
% Make a local copy of the \mymeta{groups clist} argument,
|
||||||
% and iterate over its powerset
|
% and iterate over its powerset
|
||||||
% \begin{macrocode}
|
% \begin{macrocode}
|
||||||
\clist_set:Nn \l_tmpa_clist { #2 }
|
\clist_set:Nn \l_tmpa_clist { #2 }
|
||||||
|
@ -2863,7 +2915,7 @@
|
||||||
{
|
{
|
||||||
% \end{macrocode}
|
% \end{macrocode}
|
||||||
% As mentioned earlier, this bool will indicate whether we are
|
% As mentioned earlier, this bool will indicate whether we are
|
||||||
% executing a \meta{selection body} from some family options.
|
% executing a \mymeta{selection body} from some family options.
|
||||||
% If used outside, we emit an error message.
|
% If used outside, we emit an error message.
|
||||||
% \begin{macrocode}
|
% \begin{macrocode}
|
||||||
\bool_if:NTF \l_@@_in_family_options_environment_bool
|
\bool_if:NTF \l_@@_in_family_options_environment_bool
|
||||||
|
@ -2902,12 +2954,12 @@
|
||||||
% \end{syntax}
|
% \end{syntax}
|
||||||
%
|
%
|
||||||
% This declares a new theorem variant option parser, i.e.~ introduces the environment
|
% This declares a new theorem variant option parser, i.e.~ introduces the environment
|
||||||
% \meta{theorem family} with signature \marg{argument specification}.
|
% \mymeta{theorem family} with signature \marg{argument specification}.
|
||||||
%
|
%
|
||||||
% The \meta{selection body} will be executed and selects some groups the environment shall have.
|
% The \mymeta{selection body} will be executed and selects some groups the environment shall have.
|
||||||
% The \meta{extra groups} will be added regardless of the arguments given
|
% The \mymeta{extra groups} will be added regardless of the arguments given
|
||||||
% to the \meta{theorem family}
|
% to the \mymeta{theorem family}
|
||||||
% The \meta{declaring backend} is one of \texttt{New}, \texttt{Renew}, \texttt{Provide}
|
% The \mymeta{declaring backend} is one of \texttt{New}, \texttt{Renew}, \texttt{Provide}
|
||||||
% and \texttt{Declare} and is given to the \texttt{DocumentEnvironment} command from \pkg{xpars}.
|
% and \texttt{Declare} and is given to the \texttt{DocumentEnvironment} command from \pkg{xpars}.
|
||||||
%
|
%
|
||||||
% \begin{macrocode}
|
% \begin{macrocode}
|
||||||
|
@ -2918,7 +2970,7 @@
|
||||||
{ #2 }
|
{ #2 }
|
||||||
{
|
{
|
||||||
% \end{macrocode}
|
% \end{macrocode}
|
||||||
% We can now clear the group list and execute the \meta{selection body}
|
% We can now clear the group list and execute the \mymeta{selection body}
|
||||||
% that populates this list again.
|
% that populates this list again.
|
||||||
% Additionally, we add the groups that should always be present and activate the
|
% Additionally, we add the groups that should always be present and activate the
|
||||||
% \cs{AddTheoremToGroup} macro by setting the bool.
|
% \cs{AddTheoremToGroup} macro by setting the bool.
|
||||||
|
@ -2965,7 +3017,7 @@
|
||||||
%
|
%
|
||||||
%
|
%
|
||||||
% All other macros are now essentially wrappers around this aux macro,
|
% All other macros are now essentially wrappers around this aux macro,
|
||||||
% passing different \meta{extra groups} to them
|
% passing different \mymeta{extra groups} to them
|
||||||
%
|
%
|
||||||
% \begin{macro}{\groupthm_new_grouped_theorem_family_options:nnn}
|
% \begin{macro}{\groupthm_new_grouped_theorem_family_options:nnn}
|
||||||
% \begin{syntax}
|
% \begin{syntax}
|
||||||
|
@ -3372,6 +3424,10 @@
|
||||||
%
|
%
|
||||||
%
|
%
|
||||||
%
|
%
|
||||||
%
|
% \ExplSyntaxOn
|
||||||
|
% \__codedoc_special_index_module:nnnnN { key } { macro } { module } { main } { \c_false_bool}
|
||||||
|
% \__codedoc_special_index_module:nnnnN { l } { bla } { module } { usage } { \c_false_bool}
|
||||||
|
% \ExplSyntaxOff
|
||||||
%
|
%
|
||||||
% \newpage
|
% \newpage
|
||||||
|
% \PrintIndex
|
||||||
|
|
|
@ -66,21 +66,21 @@
|
||||||
Probably ~ you ~ forgot ~ this. ~
|
Probably ~ you ~ forgot ~ this. ~
|
||||||
\msg_see_documentation_text:n { groupthm }
|
\msg_see_documentation_text:n { groupthm }
|
||||||
}
|
}
|
||||||
\hook_new:n { __groupthm/prename }
|
\hook_new:n { __groupthm/prefix }
|
||||||
\hook_new:n { __groupthm/postname }
|
\hook_new:n { __groupthm/suffix }
|
||||||
\hook_new:n { __groupthm/mapname }
|
\hook_new:n { __groupthm/mapname }
|
||||||
\hook_new:n { __groupthm/thmtools }
|
\hook_new:n { __groupthm/thmtools }
|
||||||
\hook_new:n { __groupthm/groupsort }
|
\hook_new:n { __groupthm/groupsort }
|
||||||
\cs_generate_variant:Nn \hook_gset_rule:nnnn { n n V n }
|
\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_prefix_tl
|
||||||
\tl_new:N \l__groupthm_key_name_tl
|
\tl_new:N \l__groupthm_key_name_tl
|
||||||
\tl_new:N \l__groupthm_key_postname_tl
|
\tl_new:N \l__groupthm_key_suffix_tl
|
||||||
\clist_new:N \l__groupthm_key_group_clist
|
\clist_new:N \l__groupthm_key_group_clist
|
||||||
\clist_new:N \l__groupthm_key_mapname_clist
|
\clist_new:N \l__groupthm_key_mapname_clist
|
||||||
\clist_new:N \l__groupthm_key_thmtools_clist
|
\clist_new:N \l__groupthm_key_thmtools_clist
|
||||||
\tl_new:N \l__groupthm_prename_tl
|
\tl_new:N \l__groupthm_prefix_tl
|
||||||
\tl_new:N \l__groupthm_name_tl
|
\tl_new:N \l__groupthm_name_tl
|
||||||
\tl_new:N \l__groupthm_postname_tl
|
\tl_new:N \l__groupthm_suffix_tl
|
||||||
\clist_new:N \l__groupthm_mapname_clist
|
\clist_new:N \l__groupthm_mapname_clist
|
||||||
\clist_new:N \l__groupthm_thmtools_clist
|
\clist_new:N \l__groupthm_thmtools_clist
|
||||||
\clist_new:N \l__groupthm_group_clist
|
\clist_new:N \l__groupthm_group_clist
|
||||||
|
@ -88,15 +88,15 @@
|
||||||
\bool_new:N \l__groupthm_in_family_options_environment_bool
|
\bool_new:N \l__groupthm_in_family_options_environment_bool
|
||||||
\keys_define:nn { groupthm }
|
\keys_define:nn { groupthm }
|
||||||
{
|
{
|
||||||
prename .tl_set:N = \l__groupthm_key_prename_tl,
|
prefix .tl_set:N = \l__groupthm_key_prefix_tl,
|
||||||
prename .default:n = \c_empty_tl,
|
prefix .default:n = \c_empty_tl,
|
||||||
prename .groups:n = { theoremgroup },
|
prefix .groups:n = { theoremgroup },
|
||||||
name .tl_set:N = \l__groupthm_key_name_tl,
|
name .tl_set:N = \l__groupthm_key_name_tl,
|
||||||
name .default:n = \c_novalue_tl,
|
name .default:n = \c_novalue_tl,
|
||||||
name .groups:n = { groupedtheorem, theoremvariants },
|
name .groups:n = { groupedtheorem, theoremvariants },
|
||||||
postname .tl_set:N = \l__groupthm_key_postname_tl,
|
suffix .tl_set:N = \l__groupthm_key_suffix_tl,
|
||||||
postname .default:n = \c_empty_tl,
|
suffix .default:n = \c_empty_tl,
|
||||||
postname .groups:n = { theoremgroup },
|
suffix .groups:n = { theoremgroup },
|
||||||
group .clist_set:N = \l__groupthm_key_group_clist,
|
group .clist_set:N = \l__groupthm_key_group_clist,
|
||||||
group .default:n = {},
|
group .default:n = {},
|
||||||
group .groups:n = { groupedtheorem, theoremvariants },
|
group .groups:n = { groupedtheorem, theoremvariants },
|
||||||
|
@ -112,7 +112,7 @@
|
||||||
}
|
}
|
||||||
\cs_new:Npn \__groupthm_set_normalized_keys:nnn #1 #2 #3
|
\cs_new:Npn \__groupthm_set_normalized_keys:nnn #1 #2 #3
|
||||||
{
|
{
|
||||||
\keys_set:nn { groupthm } { prename, name, postname, group, mapname, thmtools }
|
\keys_set:nn { groupthm } { prefix, name, suffix, group, mapname, thmtools }
|
||||||
\keys_set_groups:nnn { groupthm } { #2 } { #1 }
|
\keys_set_groups:nnn { groupthm } { #2 } { #1 }
|
||||||
\tl_if_eq:NnTF \l__groupthm_key_name_tl { \c_novalue_tl }
|
\tl_if_eq:NnTF \l__groupthm_key_name_tl { \c_novalue_tl }
|
||||||
{
|
{
|
||||||
|
@ -124,8 +124,8 @@
|
||||||
{
|
{
|
||||||
\tl_set_eq:NN \l__groupthm_name_tl \l__groupthm_key_name_tl
|
\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_prefix_tl \l__groupthm_key_prefix_tl
|
||||||
\tl_set_eq:NN \l__groupthm_postname_tl \l__groupthm_key_postname_tl
|
\tl_set_eq:NN \l__groupthm_suffix_tl \l__groupthm_key_suffix_tl
|
||||||
\clist_set_eq:NN \l__groupthm_group_clist \l__groupthm_key_group_clist
|
\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_mapname_clist \l__groupthm_key_mapname_clist
|
||||||
\clist_set_eq:NN \l__groupthm_thmtools_clist \l__groupthm_key_thmtools_clist
|
\clist_set_eq:NN \l__groupthm_thmtools_clist \l__groupthm_key_thmtools_clist
|
||||||
|
@ -161,17 +161,17 @@
|
||||||
\clist_clear:N \l__groupthm_group_clist
|
\clist_clear:N \l__groupthm_group_clist
|
||||||
\hook_use:n { __groupthm/groupsort }
|
\hook_use:n { __groupthm/groupsort }
|
||||||
}
|
}
|
||||||
\cs_new:Npn \__groupthm_declare_theorem_group_aux:nnnnn #1#2#3#4#5
|
\cs_new:Npn \__groupthm_define_group_aux:nnnnn #1#2#3#4#5
|
||||||
{
|
{
|
||||||
\cs_new:cpn { __groupthm_use_group_#1: }
|
\cs_new:cpn { __groupthm_use_group_#1: }
|
||||||
{
|
{
|
||||||
\hook_gput_code:nnn { __groupthm/prename } { #1 }
|
\hook_gput_code:nnn { __groupthm/prefix } { #1 }
|
||||||
{
|
{
|
||||||
\tl_put_left:Nx \l__groupthm_prename_tl { #2 }
|
\tl_put_left:Nx \l__groupthm_prefix_tl { #2 }
|
||||||
}
|
}
|
||||||
\hook_gput_code:nnn { __groupthm/postname } { #1 }
|
\hook_gput_code:nnn { __groupthm/suffix } { #1 }
|
||||||
{
|
{
|
||||||
\tl_put_right:Nx \l__groupthm_postname_tl { #3 }
|
\tl_put_right:Nx \l__groupthm_suffix_tl { #3 }
|
||||||
}
|
}
|
||||||
\hook_gput_code:nnn { __groupthm/mapname } { #1 }
|
\hook_gput_code:nnn { __groupthm/mapname } { #1 }
|
||||||
{
|
{
|
||||||
|
@ -185,11 +185,11 @@
|
||||||
\__groupthm_add_to_theorem_group_ordering:n { #1 }
|
\__groupthm_add_to_theorem_group_ordering:n { #1 }
|
||||||
\clist_gput_left:Nn \g__groupthm_defined_theorem_groups_clist { #1 }
|
\clist_gput_left:Nn \g__groupthm_defined_theorem_groups_clist { #1 }
|
||||||
}
|
}
|
||||||
\cs_new:Npn \__groupthm_undeclare_theorem_group_aux:n #1
|
\cs_new:Npn \__groupthm_undefine_group_aux:n #1
|
||||||
{
|
{
|
||||||
\cs_undefine:c { __groupthm_use_group_#1: }
|
\cs_undefine:c { __groupthm_use_group_#1: }
|
||||||
\hook_gremove_code:nn { __groupthm/prename } { #1 }
|
\hook_gremove_code:nn { __groupthm/prefix } { #1 }
|
||||||
\hook_gremove_code:nn { __groupthm/postname } { #1 }
|
\hook_gremove_code:nn { __groupthm/suffix } { #1 }
|
||||||
\hook_gremove_code:nn { __groupthm/mapname } { #1 }
|
\hook_gremove_code:nn { __groupthm/mapname } { #1 }
|
||||||
\hook_gremove_code:nn { __groupthm/thmtools } { #1 }
|
\hook_gremove_code:nn { __groupthm/thmtools } { #1 }
|
||||||
\clist_gremove_all:Nn \g__groupthm_defined_theorem_groups_clist { #1 }
|
\clist_gremove_all:Nn \g__groupthm_defined_theorem_groups_clist { #1 }
|
||||||
|
@ -199,12 +199,12 @@
|
||||||
{ unrelated }
|
{ unrelated }
|
||||||
{ #1 }
|
{ #1 }
|
||||||
\__groupthm_hook_gset_rule_foreach:nNnn
|
\__groupthm_hook_gset_rule_foreach:nNnn
|
||||||
{ __groupthm/prename }
|
{ __groupthm/prefix }
|
||||||
\g__groupthm_defined_theorem_groups_clist
|
\g__groupthm_defined_theorem_groups_clist
|
||||||
{ unrelated }
|
{ unrelated }
|
||||||
{ #1 }
|
{ #1 }
|
||||||
\__groupthm_hook_gset_rule_foreach:nNnn
|
\__groupthm_hook_gset_rule_foreach:nNnn
|
||||||
{ __groupthm/postname }
|
{ __groupthm/suffix }
|
||||||
\g__groupthm_defined_theorem_groups_clist
|
\g__groupthm_defined_theorem_groups_clist
|
||||||
{ unrelated }
|
{ unrelated }
|
||||||
{ #1 }
|
{ #1 }
|
||||||
|
@ -220,24 +220,66 @@
|
||||||
{ #1 }
|
{ #1 }
|
||||||
\__groupthm_remove_from_theorem_group_ordering:n { #1 }
|
\__groupthm_remove_from_theorem_group_ordering:n { #1 }
|
||||||
}
|
}
|
||||||
|
\cs_new:Npn \__groupthm_define_aux:nnnNNNn #1 #2 #3 #4 #5 #6 #7
|
||||||
|
{
|
||||||
|
\bool_if:nT
|
||||||
|
{
|
||||||
|
\str_if_eq_p:nn { #1 } { new }
|
||||||
|
&&
|
||||||
|
\cs_if_exist_p:N #4
|
||||||
|
}
|
||||||
|
{
|
||||||
|
\msg_error:nnnn { groupthm } { wrong ~ definition }
|
||||||
|
{ #2 } { #3 } { already }
|
||||||
|
}
|
||||||
|
|
||||||
|
\bool_if:nT
|
||||||
|
{
|
||||||
|
\str_if_eq_p:nn { #1 } { renew }
|
||||||
|
&&
|
||||||
|
! \cs_if_exist_p:N #4
|
||||||
|
}
|
||||||
|
{
|
||||||
|
\msg_error:nnnn { groupthm } { wrong ~ definition }
|
||||||
|
{ #2 } { #3 } { not }
|
||||||
|
}
|
||||||
|
|
||||||
|
\bool_if:nT
|
||||||
|
{
|
||||||
|
(
|
||||||
|
\str_if_eq_p:nn { #1 } { declare } ||
|
||||||
|
\str_if_eq_p:nn { #1 } { renew }
|
||||||
|
) &&
|
||||||
|
\cs_if_exist_p:N #4
|
||||||
|
}
|
||||||
|
{
|
||||||
|
#5 { #1 }
|
||||||
|
}
|
||||||
|
|
||||||
|
#6 #7
|
||||||
|
}
|
||||||
|
\cs_generate_variant:Nn \__groupthm_define_aux:nnnNNNn { n n n c N N n }
|
||||||
|
|
||||||
\cs_new:Npn \groupthm_new_theorem_group:nnnnn #1 #2 #3 #4 #5
|
\cs_new:Npn \groupthm_new_theorem_group:nnnnn #1 #2 #3 #4 #5
|
||||||
|
{
|
||||||
|
\__groupthm_define_aux:nnncNNn
|
||||||
|
{ new }
|
||||||
|
{ theorem group }
|
||||||
|
{ #1 }
|
||||||
|
{ __groupthm_use_group_#1: }
|
||||||
|
\__groupthm_undefine_group_aux:n
|
||||||
|
\__groupthm_define_group_aux:nnnnn
|
||||||
{
|
{
|
||||||
\cs_if_exist:cTF { __groupthm_use_group_#1: }
|
{ #1 } { #2 } { #3 } { #4 } { #5 }
|
||||||
{
|
|
||||||
\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_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_new:Npn \groupthm_renew_theorem_group:nnnnn #1 #2 #3 #4 #5
|
||||||
{
|
{
|
||||||
\cs_if_exist:cTF { __groupthm_use_group_#1: }
|
\cs_if_exist:cTF { __groupthm_use_group_#1: }
|
||||||
{
|
{
|
||||||
\__groupthm_undeclare_theorem_group_aux:n { #1 }
|
\__groupthm_undefine_group_aux:n { #1 }
|
||||||
\__groupthm_declare_theorem_group_aux:nnnnn { #1 } { #2 } { #3 } { #4 } { #5 }
|
\__groupthm_define_group_aux:nnnnn { #1 } { #2 } { #3 } { #4 } { #5 }
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
\msg_error:nnnnn { groupthm } { wrong ~ definition }
|
\msg_error:nnnnn { groupthm } { wrong ~ definition }
|
||||||
|
@ -249,7 +291,7 @@
|
||||||
{
|
{
|
||||||
\cs_if_exist:cF { __groupthm_use_group_#1: }
|
\cs_if_exist:cF { __groupthm_use_group_#1: }
|
||||||
{
|
{
|
||||||
\__groupthm_declare_theorem_group_aux:nnnnn { #1 } { #2 } { #3 } { #4 } { #5 }
|
\__groupthm_define_group_aux:nnnnn { #1 } { #2 } { #3 } { #4 } { #5 }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
\cs_generate_variant:Nn \groupthm_provide_theorem_group:nnnnn { n V V V V }
|
\cs_generate_variant:Nn \groupthm_provide_theorem_group:nnnnn { n V V V V }
|
||||||
|
@ -257,17 +299,17 @@
|
||||||
{
|
{
|
||||||
\cs_if_exist:cT { __groupthm_use_group_#1: }
|
\cs_if_exist:cT { __groupthm_use_group_#1: }
|
||||||
{
|
{
|
||||||
\__groupthm_undeclare_theorem_group_aux:n { #1 }
|
\__groupthm_undefine_group_aux:n { #1 }
|
||||||
}
|
}
|
||||||
\__groupthm_declare_theorem_group_aux:nnnnn { #1 } { #2 } { #3 } { #4 } { #5 }
|
\__groupthm_define_group_aux:nnnnn { #1 } { #2 } { #3 } { #4 } { #5 }
|
||||||
}
|
}
|
||||||
\cs_generate_variant:Nn \groupthm_declare_theorem_group:nnnnn { n V V V V }
|
\cs_generate_variant:Nn \groupthm_declare_theorem_group:nnnnn { n V V V V }
|
||||||
\cs_new:Npn \groupthm_new_theorem_group_from_keys:nn #1#2
|
\cs_new:Npn \groupthm_new_theorem_group_from_keys:nn #1#2
|
||||||
{
|
{
|
||||||
\__groupthm_set_normalized_keys:nnn { #1 } { theoremgroup } { #2 }
|
\__groupthm_set_normalized_keys:nnn { #1 } { theoremgroup } { #2 }
|
||||||
\groupthm_new_theorem_group:nVVVV { #2 }
|
\groupthm_new_theorem_group:nVVVV { #2 }
|
||||||
\l__groupthm_prename_tl
|
\l__groupthm_prefix_tl
|
||||||
\l__groupthm_postname_tl
|
\l__groupthm_suffix_tl
|
||||||
\l__groupthm_mapname_clist
|
\l__groupthm_mapname_clist
|
||||||
\l__groupthm_thmtools_clist
|
\l__groupthm_thmtools_clist
|
||||||
}
|
}
|
||||||
|
@ -275,8 +317,8 @@
|
||||||
{
|
{
|
||||||
\__groupthm_set_normalized_keys:nnn { #1 } { theoremgroup } { #2 }
|
\__groupthm_set_normalized_keys:nnn { #1 } { theoremgroup } { #2 }
|
||||||
\groupthm_renew_theorem_group:nVVVV { #2 }
|
\groupthm_renew_theorem_group:nVVVV { #2 }
|
||||||
\l__groupthm_prename_tl
|
\l__groupthm_prefix_tl
|
||||||
\l__groupthm_postname_tl
|
\l__groupthm_suffix_tl
|
||||||
\l__groupthm_mapname_clist
|
\l__groupthm_mapname_clist
|
||||||
\l__groupthm_thmtools_clist
|
\l__groupthm_thmtools_clist
|
||||||
}
|
}
|
||||||
|
@ -284,8 +326,8 @@
|
||||||
{
|
{
|
||||||
\__groupthm_set_normalized_keys:nnn { #1 } { theoremgroup } { #2 }
|
\__groupthm_set_normalized_keys:nnn { #1 } { theoremgroup } { #2 }
|
||||||
\groupthm_provide_theorem_group:nVVVV { #2 }
|
\groupthm_provide_theorem_group:nVVVV { #2 }
|
||||||
\l__groupthm_prename_tl
|
\l__groupthm_prefix_tl
|
||||||
\l__groupthm_postname_tl
|
\l__groupthm_suffix_tl
|
||||||
\l__groupthm_mapname_clist
|
\l__groupthm_mapname_clist
|
||||||
\l__groupthm_thmtools_clist
|
\l__groupthm_thmtools_clist
|
||||||
}
|
}
|
||||||
|
@ -293,8 +335,8 @@
|
||||||
{
|
{
|
||||||
\__groupthm_set_normalized_keys:nnn { #1 } { theoremgroup } { #2 }
|
\__groupthm_set_normalized_keys:nnn { #1 } { theoremgroup } { #2 }
|
||||||
\groupthm_declare_theorem_group:nVVVV { #2 }
|
\groupthm_declare_theorem_group:nVVVV { #2 }
|
||||||
\l__groupthm_prename_tl
|
\l__groupthm_prefix_tl
|
||||||
\l__groupthm_postname_tl
|
\l__groupthm_suffix_tl
|
||||||
\l__groupthm_mapname_clist
|
\l__groupthm_mapname_clist
|
||||||
\l__groupthm_thmtools_clist
|
\l__groupthm_thmtools_clist
|
||||||
}
|
}
|
||||||
|
@ -393,26 +435,26 @@
|
||||||
}
|
}
|
||||||
\cs_new:Npn \__groupthm_declare_grouped_theorem_aux:nnnn #1 #2 #3 #4
|
\cs_new:Npn \__groupthm_declare_grouped_theorem_aux:nnnn #1 #2 #3 #4
|
||||||
{
|
{
|
||||||
\tl_clear:N \l__groupthm_prename_tl
|
\tl_clear:N \l__groupthm_prefix_tl
|
||||||
\tl_set:Nn \l__groupthm_name_tl { #3 }
|
\tl_set:Nn \l__groupthm_name_tl { #3 }
|
||||||
\tl_clear:N \l__groupthm_postname_tl
|
\tl_clear:N \l__groupthm_suffix_tl
|
||||||
\clist_clear:N \l__groupthm_mapname_clist
|
\clist_clear:N \l__groupthm_mapname_clist
|
||||||
\clist_clear:N \l__groupthm_thmtools_clist
|
\clist_clear:N \l__groupthm_thmtools_clist
|
||||||
\hook_gremove_code:nn { __groupthm/prename }{*}
|
\hook_gremove_code:nn { __groupthm/prefix }{*}
|
||||||
\hook_gremove_code:nn { __groupthm/postname }{*}
|
\hook_gremove_code:nn { __groupthm/suffix }{*}
|
||||||
\hook_gremove_code:nn { __groupthm/mapname }{*}
|
\hook_gremove_code:nn { __groupthm/mapname }{*}
|
||||||
\hook_gremove_code:nn { __groupthm/thmtools }{*}
|
\hook_gremove_code:nn { __groupthm/thmtools }{*}
|
||||||
\clist_map_function:nN { #2 } \__groupthm_use_theorem_group:n
|
\clist_map_function:nN { #2 } \__groupthm_use_theorem_group:n
|
||||||
\hook_use:n { __groupthm/prename }
|
\hook_use:n { __groupthm/prefix }
|
||||||
\hook_use:n { __groupthm/postname }
|
\hook_use:n { __groupthm/suffix }
|
||||||
\hook_use:n { __groupthm/mapname }
|
\hook_use:n { __groupthm/mapname }
|
||||||
\hook_use:n { __groupthm/thmtools }
|
\hook_use:n { __groupthm/thmtools }
|
||||||
\clist_map_function:NN \l__groupthm_mapname_clist \map_use_on_name:n
|
\clist_map_function:NN \l__groupthm_mapname_clist \map_use_on_name:n
|
||||||
\clist_put_right:Nx \l__groupthm_thmtools_clist
|
\clist_put_right:Nx \l__groupthm_thmtools_clist
|
||||||
{
|
{
|
||||||
name = \tl_use:N \l__groupthm_prename_tl
|
name = \tl_use:N \l__groupthm_prefix_tl
|
||||||
\tl_use:N \l__groupthm_name_tl
|
\tl_use:N \l__groupthm_name_tl
|
||||||
\tl_use:N \l__groupthm_postname_tl
|
\tl_use:N \l__groupthm_suffix_tl
|
||||||
}
|
}
|
||||||
\clist_put_right:Nn \l__groupthm_thmtools_clist { #4 }
|
\clist_put_right:Nn \l__groupthm_thmtools_clist { #4 }
|
||||||
\__groupthm_thmtools_declare_theorem:Vn
|
\__groupthm_thmtools_declare_theorem:Vn
|
||||||
|
|
Loading…
Reference in a new issue