fix many typos

This commit is contained in:
Maximilian Keßler 2022-01-23 01:08:38 +01:00
parent 7baf1a01a1
commit 39b1aa88b3
2 changed files with 201 additions and 201 deletions

View file

@ -35,27 +35,6 @@
% %
% \maketitle % \maketitle
% %
%
% \NewDocumentCommand{\kw}{m}
% {%
% \texttt{#1}%
% }
%
% \NewDocumentCommand{\vocab}{m}
% {%
% \emph{#1}%
% }
%
% \ExplSyntaxOn
% \NewDocumentCommand { \mymeta } { O{} m }
% {
% \meta{#2}
% \__codedoc_special_index_module:nnnnN { #2 } { #2 } { meta } { usage } { \c_false_bool}
% }
% \ExplSyntaxOff
%
%
%
% \begin{documentation} % \begin{documentation}
% %
% \tableofcontents % \tableofcontents
@ -78,14 +57,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, \mymeta{theorem group}s, % This package aims at both providing a versatile mechanism, \meta{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 \mymeta{theorem families}. % as well as a mechanism for easily generating \meta{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 \mymeta{theorem}s themselves. % the \meta{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}.
@ -94,46 +73,46 @@
% %
% \subsection{Theorem groups} % \subsection{Theorem groups}
% \label{sec:theorem-groups} % \label{sec:theorem-groups}
% A \mymeta{theorem group} is some named group holding some properties for % A \meta{theorem group} is some named group holding some properties for
% the \mymeta{theorem}s that are contained in this group. % the \meta{theorem}s that are contained in this group.
% Each \mymeta{theorem} can, when declared, be part of arbitrarily many \mymeta{theorem group}s, % Each \meta{theorem} can, when declared, be part of arbitrarily many \meta{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 \mymeta{theorem}s and alter them at a late stage of % This enables to group similar \meta{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 \mymeta{theorem group}, and not all \mymeta{theorem}s separately. % definition of the \meta{theorem group}, and not all \meta{theorem}s separately.
% %
% The properties. Such a \mymeta{theorem group} can hold are as follows % The properties. Such a \meta{theorem group} can hold are as follows
% %
% %
% \begin{description} % \begin{description}
% \item[\kw{prefix}] A prefix (any \mymeta{token list}) that will be inserted % \item[\texttt{prefix}] A prefix (any \meta{token list}) that will be inserted
% before the theorem name of each member of this \mymeta{theorem group}. % before the theorem name of each member of this \meta{theorem group}.
% \item[\kw{suffix}] A suffix (any \mymeta{token list}) that will be % \item[\texttt{suffix}] A suffix (any \meta{token list}) that will be
% inserted before the theorem name for each member of this \mymeta{theorem group}. % inserted before the theorem name for each member of this \meta{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 \mymeta{function} (some macro that takes exactly one argument) % \item[\texttt{mapname}] A \meta{function} (some macro that takes exactly one argument)
% that is applied to the \kw{name}. % that is applied to the \texttt{name}.
% \item[\kw{thmtools}] A \mymeta{clist} of key-value pairs that are passed to the underlying % \item[\texttt{thmtools}] A \meta{clist} of key-value pairs that are passed to the underlying
% \pkg{thmtools} backend of the \mymeta{theorem}. % \pkg{thmtools} backend of the \meta{theorem}.
% This allows e.g.~to set the \kw{topskip} of a certain class of \mymeta{theorem}s. % This allows e.g.~to set the \texttt{topskip} of a certain class of \meta{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 \texttt{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 \mymeta{theorem} can be member of arbitrary many \mymeta{theorem group}s, % As mentioned, each \meta{theorem} can be member of arbitrary many \meta{theorem group}s,
% and will posses their corresponding properties. % and will posses their corresponding properties.
% %
% 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 % 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
% of conflicting properties of different \mymeta{theorem group}s a \mymeta{theorem} may be part of. % of conflicting properties of different \meta{theorem group}s a \meta{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 \mymeta{grouped theorem} is just a theorem that is a member of % A \meta{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.
@ -144,8 +123,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 \mymeta{theorem variant}s of some \mymeta{theorem}, the most typical % Often, one needs some small \meta{theorem variant}s of some \meta{theorem}, the most typical
% example being \vocab{starred} version of \mymeta{theorem}s that are not numbered % example being \texttt{starred} version of \meta{theorem}s that are not numbered
% in contrast to their counterparts. % in contrast to their counterparts.
% %
% \begin{verbatim} % \begin{verbatim}
@ -161,12 +140,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
% \mymeta{theorem family}, which is based on some \mymeta{theorem name} and % \meta{theorem family}, which is based on some \meta{theorem name} and
% parses additional arguments / syntax to control the \mymeta{theorem groups} % parses additional arguments / syntax to control the \meta{theorem groups}
% that this environment is a part of. % that this environment is a part of.
% %
% So, in addition the name of a \mymeta{theorem}, the corresponding environment will % So, in addition the name of a \meta{theorem}, the corresponding environment will
% accept some options and toggle the membership of certain \mymeta{theorem groups}, % accept some options and toggle the membership of certain \meta{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:
@ -179,10 +158,10 @@
% \todo{code} % \todo{code}
% %
% Providing this consists of two parts: % Providing this consists of two parts:
% declaring the \mymeta{theorem family} by listing the groups that can be toggled % declaring the \meta{theorem family} by listing the groups that can be toggled
% by this \mymeta{theorem family}, and declaring the actual option parsing % by this \meta{theorem family}, and declaring the actual option parsing
% of the \mymeta{theorem family}, which then controls the membership in these groups % of the \meta{theorem family}, which then controls the membership in these groups
% (and of course prior to this the definition of the desired \mymeta{theorem group}s). % (and of course prior to this the definition of the desired \meta{theorem group}s).
% %
% %
% %
@ -193,7 +172,7 @@
% Then the documentation will look like % Then the documentation will look like
% % % %
% \begin{function}{\NewFoo, \RenewFoo, \ProvideFoo, \DeclareFoo} % \begin{function}{\NewFoo, \RenewFoo, \ProvideFoo, \DeclareFoo}
% Defines some \kw{foo} \ldots % Defines some \texttt{foo} \ldots
% \end{function} % \end{function}
% % % %
% and will not mention anything about the variants. % and will not mention anything about the variants.
@ -203,23 +182,23 @@
% \begin{description} % \begin{description}
% \item[\cs{NewFoo}] % \item[\cs{NewFoo}]
% %
% Defines \kw{foo} if not defined already. % Defines \texttt{foo} if not defined already.
% This emits an error in case it has been defined yet. % This emits an error in case it has been defined yet.
% %
% \item[\cs{RenewFoo}] % \item[\cs{RenewFoo}]
% %
% Redefines \kw{foo} if defined already. % Redefines \texttt{foo} if defined already.
% This emits an error in case it has \emph{not} been defined yet. % This emits an error in case it has \emph{not} been defined yet.
% %
% \item[\cs{ProvideFoo}] % \item[\cs{ProvideFoo}]
% %
% Defines \kw{foo} if it is not defined already. % Defines \texttt{foo} if it is not defined already.
% This does not emit an error if \kw{foo} is already defined % This does not emit an error if \texttt{foo} is already defined
% (and has no effect in this case). % (and has no effect in this case).
% %
% \item[\cs{DeclareFoo}] % \item[\cs{DeclareFoo}]
% %
% Defines \kw{foo} in disregard of any % Defines \texttt{foo} in disregard of any
% existing definitions. Any old definition will be overwritten (if present). % existing definitions. Any old definition will be overwritten (if present).
% \end{description} % \end{description}
% % % %
@ -245,38 +224,38 @@
% \cs{NewTheoremGroup}\oarg{key=value list}\marg{theorem group} % \cs{NewTheoremGroup}\oarg{key=value list}\marg{theorem group}
% \end{syntax} % \end{syntax}
% %
% This introduces a new \mymeta{theorem group} with the given name. % This introduces a new \meta{theorem group} with the given name.
% The \mymeta{key=value list} available are the same as introduced in \autoref{sec:theorem-groups}: % The \meta{key=value list} available are the same as introduced in \autoref{sec:theorem-groups}:
% %
% \begin{description} % \begin{description}
% \item % \item
% %
% \kw{prefix} = \mymeta{token list}. % \texttt{prefix} = \meta{token list}.
% Insert the \mymeta{token list} in front of the theorem name. % Insert the \meta{token list} in front of the theorem name.
% %
% \item % \item
% %
% \kw{suffix} = \mymeta{token list}. % \texttt{suffix} = \meta{token list}.
% Insert the \mymeta{token list} after the theorem name. % Insert the \meta{token list} after the theorem name.
% %
% \item % \item
% %
% \kw{mapname} = \mymeta{function}. % \texttt{mapname} = \meta{function}.
% Apply this \mymeta{function} to the theorem name. % Apply this \meta{function} to the theorem name.
% %
% \item % \item
% %
% \kw{thmtools} = $\{$\mymeta{clist}$\}$. % \texttt{thmtools} = $\{$\meta{clist}$\}$.
% Pass these options to \pkg{thmtools}. % Pass these options to \pkg{thmtools}.
% %
% \end{description} % \end{description}
% %
% For uniqueness of the given options, the \mymeta{clist} given to the \kw{thmtools} key % For uniqueness of the given options, the \meta{clist} given to the \texttt{thmtools} key
% has to be surrounded by a pair of braces. % has to be surrounded by a pair of braces.
% %
% \begin{texnote} % \begin{texnote}
% The \kw{mapname} is expected to be a function of \cs{fun:n}. % The \texttt{mapname} is expected to be a function of \cs{fun:n}.
% The function call is subject to an \kw{x}-type expansion prior % The function call is subject to an \texttt{x}-type expansion prior
% to being passed further to \pkg{thmtools}. % to being passed further to \pkg{thmtools}.
% \end{texnote} % \end{texnote}
% %
@ -295,17 +274,17 @@
% 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 \mymeta{keyname} can be one of \kw{prefix}, \kw{suffix}, \kw{mapname}, \kw{thmtools}. % The \meta{keyname} can be one of \texttt{prefix}, \texttt{suffix}, \texttt{mapname}, \texttt{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 \mymeta{theorem group_} overwriting \mymeta{theorem group_2} when given % This can lead to \meta{theorem group_} overwriting \meta{theorem group_2} when given
% contradictory \pkg{thmtools} options, but the \kw{prefix} of \mymeta{theorem group_} % contradictory \pkg{thmtools} options, but the \texttt{prefix} of \meta{theorem group_}
% being applied after the one of \mymeta{theorem group_2}. % being applied after the one of \meta{theorem group_2}.
% When the \mymeta{keyname} is not given, this applies to all keywords. % When the \meta{keyname} is not given, this applies to all keywords.
% %
% \begin{texnote} % \begin{texnote}
% The \mymeta{keyname} is just passed to the corresponding argument % The \meta{keyname} is just passed to the corresponding argument
% of the \kw{lthooks} package. % of the \texttt{lthooks} package.
% If the option argument is not present, \kw{??} is used, this has the described effect. % If the option argument is not present, \texttt{??} is used, this has the described effect.
% \end{texnote} % \end{texnote}
% %
% The behavior of the relations is based on the \cs{DeclareHookRule} command % The behavior of the relations is based on the \cs{DeclareHookRule} command
@ -315,21 +294,21 @@
% For us, the following list will suffice: % For us, the following list will suffice:
% %
% \begin{description} % \begin{description}
% \item[\kw{higher} or \kw{after} or \kw{\string>}] % \item[\texttt{higher} or \texttt{after} or \texttt{\string>}]
% %
% \mymeta{theorem group_1} takes precedence over \mymeta{theorem group_2}. % \meta{theorem group_1} takes precedence over \meta{theorem group_2}.
% Its \kw{prefix} is applied after the one of \mymeta{theorem group_2}. % Its \texttt{prefix} is applied after the one of \meta{theorem group_2}.
% %
% \item[\kw{lower} or \kw{before} or \kw{\string<}] % \item[\texttt{lower} or \texttt{before} or \texttt{\string<}]
% %
% \mymeta{theorem group_2} takes precedence over \mymeta{theorem group_1}. % \meta{theorem group_2} takes precedence over \meta{theorem group_1}.
% Its \kw{prefix} is applied after the one of \mymeta{theorem group_1}. % Its \texttt{prefix} is applied after the one of \meta{theorem group_1}.
% %
% \end{description} % \end{description}
% %
% \begin{texnote} % \begin{texnote}
% The \mymeta{relation} is first stripped, % The \meta{relation} is first stripped,
% then checked if it matches either \kw{higher} or \kw{lower} % then checked if it matches either \texttt{higher} or \texttt{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.
% The rest is passed as is to \pkg{lthooks} and thus subject to the usual % The rest is passed as is to \pkg{lthooks} and thus subject to the usual
@ -344,23 +323,23 @@
% \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 \mymeta{theorem group_1} to \enquote{inherit} all properties % Declares \meta{theorem group_1} to \enquote{inherit} all properties
% of \mymeta{theorem group_2}. % of \meta{theorem group_2}.
% In other words, \mymeta{theorem group_2} is a parent of \mymeta{theorem group_1} % In other words, \meta{theorem group_2} is a parent of \meta{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 \mymeta{theorem group_1} will also % but each new theorem defined with \meta{theorem group_1} will also
% have the properties of \mymeta{theorem group_2}. % have the properties of \meta{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 % Inheritance is subject to the usual theorem group hierarchies as discussed in
% \autoref{subsec:theorem-group-precedence}. % \autoref{subsec:theorem-group-precedence}.
% This can even yield situations, where \mymeta{theorem group_1} inherits % This can even yield situations, where \meta{theorem group_1} inherits
% from \mymeta{theorem group_2}, but \mymeta{theorem group_2} overwrites % from \meta{theorem group_2}, but \meta{theorem group_2} overwrites
% \mymeta{theorem group_1}. % \meta{theorem group_1}.
% \end{function} % \end{function}
% %
% \subsection{Appending to theorem groups} % \subsection{Appending to theorem groups}
@ -368,8 +347,8 @@
% \begin{syntax} % \begin{syntax}
% \cs{AppendToTheoremGroup}\oarg{key=value list}\marg{theorem group} % \cs{AppendToTheoremGroup}\oarg{key=value list}\marg{theorem group}
% \end{syntax} % \end{syntax}
% Adds the properties given as \mymeta{key=value list} to the theorem group. % Adds the properties given as \meta{key=value list} to the theorem group.
% The syntax for the \mymeta{key=value list} is the same as in \cs{NewTheoremGroup}. % The syntax for the \meta{key=value list} is the same as in \cs{NewTheoremGroup}.
% \end{function} % \end{function}
% %
% \subsection{Default theorem groups} % \subsection{Default theorem groups}
@ -411,8 +390,8 @@
% with which it has no relation. % with which it has no relation.
% \end{function} % \end{function}
% %
% The reason for the two groups \kw{starred} and \kw{unnumbered} % The reason for the two groups \texttt{starred} and \texttt{unnumbered}
% to both exist is that the \kw{starred} group is \emph{meant} to be applied % to both exist is that the \texttt{starred} group is \emph{meant} to be applied
% to theorems that were called with a \enquote{*} in their name (thus the name), % to theorems that were called with a \enquote{*} in their name (thus the name),
% whereas the \enquote{unnumbered} group \emph{means} that the environment % whereas the \enquote{unnumbered} group \emph{means} that the environment
% is 'just unnumbered'. % is 'just unnumbered'.
@ -421,9 +400,9 @@
% First, this enables more fine-tuning of the behavior of the theorems in post-processing % First, this enables more fine-tuning of the behavior of the theorems in post-processing
% of a document. % of a document.
% Second, more importantly, this distinguishes semantically between the environments % Second, more importantly, this distinguishes semantically between the environments
% \kw{theorem} and \kw{theorem*}, even if \kw{theorem} is in the \kw{unnumbered} group. % \texttt{theorem} and \texttt{theorem*}, even if \texttt{theorem} is in the \texttt{unnumbered} group.
% %
% So assuming that \kw{theorem} is member of the \kw{unnumbered} group, both calls % So assuming that \texttt{theorem} is member of the \texttt{unnumbered} group, both calls
% %
% \begin{verbatim} % \begin{verbatim}
% \begin{theorem} % \begin{theorem}
@ -435,7 +414,7 @@
% \end{verbatim} % \end{verbatim}
% %
% are defined and will produce the same result by default, but we could still % are defined and will produce the same result by default, but we could still
% change the definition of the \kw{starred} group later to do anything we want. % change the definition of the \texttt{starred} group later to do anything we want.
% %
% \begin{texnote} % \begin{texnote}
% The mentioned hierarchies are kept intact for newly defined theorem groups, % The mentioned hierarchies are kept intact for newly defined theorem groups,
@ -450,21 +429,21 @@
% \begin{syntax} % \begin{syntax}
% \cs{NewGroupedTheorem}\oarg{key=value list}\marg{grouped theorem} % \cs{NewGroupedTheorem}\oarg{key=value list}\marg{grouped theorem}
% \end{syntax} % \end{syntax}
% This defines \mymeta{grouped theorem} and \meta{grouped theorem*} as new theorem environments. % This defines \meta{grouped theorem} and \meta{grouped theorem*} as new theorem environments.
% 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} $=$ \mymeta{displayed name}. % \texttt{name} $=$ \meta{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 \mymeta{grouped theorem} is also used as the \mymeta{displayed name} % If not present, the \meta{grouped theorem} is also used as the \meta{displayed name}
% in capitalized form. % in capitalized form.
% %
% \item % \item
% %
% \kw{group} $=$ \marg{clist} % \texttt{group} $=$ \marg{clist}
% %
% Makes this theorem a member of the listed groups. % Makes this theorem a member of the listed groups.
% It will inherit all respective properties of these groups. % It will inherit all respective properties of these groups.
@ -473,7 +452,7 @@
% %
% \item % \item
% %
% \kw{thmtools} = \marg{clist} % \texttt{thmtools} = \marg{clist}
% %
% Passes these option to the \pkg{thmtools} environment that is declared internally. % Passes these option to the \pkg{thmtools} environment that is declared internally.
% %
@ -497,11 +476,11 @@
% \cs{NewGroupedTheorem*}\oarg{key=value list}\marg{grouped theorem} % \cs{NewGroupedTheorem*}\oarg{key=value list}\marg{grouped theorem}
% \end{syntax} % \end{syntax}
% Behaves the same as \cs{NewGroupedTheorem}, % Behaves the same as \cs{NewGroupedTheorem},
% but also adds the theorem(s) to the default \kw{unnumbered} group, % but also adds the theorem(s) to the default \texttt{unnumbered} group,
% thus resulting in the environment not being numbered. % thus resulting in the environment not being numbered.
% %
% This is thus equivalent to using \cs{NewGroupedTheorem} and adding the % This is thus equivalent to using \cs{NewGroupedTheorem} and adding the
% \kw{unnumbered} group. % \texttt{unnumbered} group.
% \end{function} % \end{function}
% %
% %
@ -510,17 +489,17 @@
% %
% \begin{function}{\NewGroupedTheoremFamily, \ProvideGroupedTheoremFamily} % \begin{function}{\NewGroupedTheoremFamily, \ProvideGroupedTheoremFamily}
% \begin{syntax} % \begin{syntax}
% \cs{NewTheoremFamily}\oarg{key=value list}\marg{theorem family} % \cs{NewGroupedTheoremFamily}\oarg{key=value list}\marg{theorem family}
% \end{syntax} % \end{syntax}
% %
% Defines a family of grouped theorems. % Defines a family of grouped theorems.
% The \mymeta{key=value list} accept the same arguments as the \cs{NewGroupedTheorem} macro. % The \meta{key=value list} 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.
% %
% These grouped theorems are not meant to be accessed directly (but could), % These grouped theorems are not meant to be accessed directly (but could),
% so we omit their actual (internal) names here. % so we omit their actual (internal) names here.
% To call these, some \kw{GroupedTheoremFamilyOptions} have to specified, % To call these, some \texttt{GroupedTheoremFamilyOptions} have to specified,
% see \cs{NewGroupedTheoremFamilyOptions}. % see \cs{NewGroupedTheoremFamilyOptions}.
% %
% Also, to the given groups, the \texttt{starred} group is added automatically. % Also, to the given groups, the \texttt{starred} group is added automatically.
@ -534,12 +513,12 @@
% %
% \begin{function}{\NewGroupedTheoremFamily*, \ProvideGroupedTheoremFamily*} % \begin{function}{\NewGroupedTheoremFamily*, \ProvideGroupedTheoremFamily*}
% Behaves the same as \cs{NewGroupedTheoremFamily}, but also adds each variant % Behaves the same as \cs{NewGroupedTheoremFamily}, but also adds each variant
% to the default \kw{unnumbered} group, thus resulting in the environments not being % to the default \texttt{unnumbered} group, thus resulting in the environments not being
% numbered. % numbered.
% %
% This is \emph{almost} equivalent to calling \cs{NewGroupedTheoremFamily} % This is \emph{almost} equivalent to calling \cs{NewGroupedTheoremFamily}
% with the \kw{unnumbered} group being present, as it does not generate the variants % with the \texttt{unnumbered} group being present, as it does not generate the variants
% where the \kw{unnumbered} group is not present. % where the \texttt{unnumbered} group is not present.
% \end{function} % \end{function}
% %
% %
@ -564,33 +543,33 @@
% \marg{selection body} % \marg{selection body}
% \end{syntax} % \end{syntax}
% %
% Defines two new environment with options, given by \mymeta{theorem family} % Defines two new environment with options, given by \meta{theorem family}
% and \meta{theorem family*}. % and \meta{theorem family*}.
% The \mymeta{argument specification} can be any valid \pkg{xparse} argument specification. % The \meta{argument specification} can be any valid \pkg{xparse} argument specification.
% %
% The \mymeta{selection body} is there to process the options of % The \meta{selection body} is there to process the options of
% the \mymeta{argument specification} and select which variant of the \mymeta{theorem family} % the \meta{argument specification} and select which variant of the \meta{theorem family}
% 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 \texttt{\#1}, \texttt{\#2}, \ldots
% %
% The body may also call any number of \cs{AddTheoremToGroup} calls, % The body may also call any number of \cs{AddTheoremToGroup} calls,
% which the enables the corresponding groups to be toggled. % which the enables the corresponding groups to be toggled.
% %
% 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 \mymeta{selection body} is executed. % as with \pkg{xparse} and the \meta{selection body} is executed.
% Immediately after, the theorem variant of \mymeta{theorem family} with the specified groups % Immediately after, the theorem variant of \meta{theorem family} with the specified groups
% by \cs{AddTheoremToGroup} is called. % by \cs{AddTheoremToGroup} is called.
% %
% At the end of the environment, the \mymeta{selection body} is executed again and the % At the end of the environment, the \meta{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
% \emph{have to be generated subsequently} by a call to the \cs{NewGroupedTheoremFamily} % \emph{have to be generated subsequently} by a call to the \cs{NewGroupedTheoremFamily}
% function. % function.
\begin{danger} % \begin{danger}
As always, if you do not wish the \meta{theorem family*} version to be generated, % As always, if you do not wish the \meta{theorem family*} version to be generated,
you can pass \texttt{starred version = false} as an additional key. % you can pass \texttt{starred version = false} as an additional key.
\end{danger} % \end{danger}
% %
% \end{function} % \end{function}
% %
@ -605,7 +584,7 @@
% \end{syntax} % \end{syntax}
% %
% Does the same as \cs{NewGroupedTheoremFamilyOptions}, % Does the same as \cs{NewGroupedTheoremFamilyOptions},
% but calls the variants with the additional \kw{unnumbered} group. % but calls the variants with the additional \texttt{unnumbered} group.
% %
% The possible theorem variants have to be generated % The possible theorem variants have to be generated
% with the \cs{NewGroupedTheoremFamily*} command before. % with the \cs{NewGroupedTheoremFamily*} command before.
@ -620,7 +599,12 @@
% internal programming interface. % internal programming interface.
% %
% When building on top of this package, you can also use this interface, % When building on top of this package, you can also use this interface,
% which is possibly easier to use. % which is possibly easier to use in some cases.
%
% Most of the time, however, the document level commands will provide
% a better interface that just accepts more options than the
% underlying \LaTeX3 interface does.
% Feel free to just use these directly.
% %
% In general, for functions that use key-value syntax, there are typically % In general, for functions that use key-value syntax, there are typically
% three (public) versions of the command, namely % three (public) versions of the command, namely
@ -636,23 +620,10 @@
% \item A \LaTeX2e document command. These were documented before, % \item A \LaTeX2e document command. These were documented before,
% and these just wrap the second type of command. % and these just wrap the second type of command.
% \end{itemize} % \end{itemize}
% If the corresponding command would be something like \enquote{new foo},
% The syntax will typically be
% \begin{itemize}
% \item \cs{groupthm_new_foo:mmm}\mymeta{mandatory args}\mymeta{optional args},
% where the \mymeta{mandatory args} list the mandatory args of the \LaTeX2e
% interface, and the \mymeta{optional args} list the optional args
% of the key-value interface, but requiring them mandatory as well.
% \item \cs{groupthm_new_foo_from_keys:mmm}\marg{key=value list}\mymeta{mandatory args}
% where we pass a \texttt{clist} as the first argument and all mandatory args
% as further mandatory arguments.
% \item \cs{NewFoo}\oarg{key=value list}\mymeta{mandatory args},
% where the keys can be passed optionally.
% \end{itemize}
%
% \subsection{Theorem groups}
% %
% %
% \subsection{Theorem groups}
%
% \begin{function} % \begin{function}
% { % {
% \groupthm_new_group:nn, % \groupthm_new_group:nn,
@ -806,7 +777,7 @@
% \groupthm_declare_family_options:nnnn, % \groupthm_declare_family_options:nnnn,
% } % }
% \begin{syntax} % \begin{syntax}
% \cs{groupthm_new_family_options}\marg{theorem family}\marg{arg spec} % \cs{groupthm_new_family_options:nnnn}\marg{theorem family}\marg{arg spec}
% \marg{selection body}\marg{groups} % \marg{selection body}\marg{groups}
% \end{syntax} % \end{syntax}
% %
@ -849,7 +820,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} \mymeta{theorem name}\mymeta{thmtools keyval args} % \cs{@@_thmtools_declare_theorem:nn} \meta{theorem name}\meta{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.
@ -870,7 +841,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}\mymeta{clist name}\mymeta{relation}\mymeta{label} % \cs{@@_hook_gset_rule_foreach:nNnn}\marg{hook}\meta{clist name}\meta{relation}\meta{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
@ -993,7 +964,7 @@
% %
% \begin{variable} % \begin{variable}
% { % {
% \l_@@_starred_version_bool, % \l_@@_key_starred_version_bool,
% \l_@@_key_prefix_tl, \l_@@_key_name_tl, \l_@@_key_suffix_tl, % \l_@@_key_prefix_tl, \l_@@_key_name_tl, \l_@@_key_suffix_tl,
% \l_@@_key_group_clist, \l_@@_key_mapname_clist, \l_@@_key_thmtools_clist % \l_@@_key_group_clist, \l_@@_key_mapname_clist, \l_@@_key_thmtools_clist
% } % }
@ -1012,7 +983,7 @@
% %
% \begin{variable} % \begin{variable}
% { % {
% \l_@@_starred_version_bool % \l_@@_starred_version_bool,
% \l_@@_prefix_tl, % \l_@@_prefix_tl,
% \l_@@_name_tl, % \l_@@_name_tl,
% \l_@@_suffix_tl, % \l_@@_suffix_tl,
@ -1141,7 +1112,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
% \mymeta{fallback name}. % \meta{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
@ -1555,11 +1526,13 @@
% %
% This is a wrapper around the \cs{@@_define:nnnNNNn} macro. % This is a wrapper around the \cs{@@_define:nnnNNNn} macro.
% It is intended to wrap the multiple variants of it into a family of macros indicating % It is intended to wrap the multiple variants of it into a family of macros indicating
% the variant in their name, e.g.~to define \cs{groupthm_new_group}, \cs{groupthm_renew_group}, % the variant in their name, e.g.~to define \cs{groupthm_new_group:nnnnn},
% \cs{groupthm_provide_group} and \cs{groupthm_declare_group} in the same way except for their % \cs{groupthm_renew_group:nnnnn},
% \cs{groupthm_provide_group:nnnnn} and \cs{groupthm_declare_group:nnnnn}
% in the same way except for their
% indicated declaration behavior, to avoid repetition when defining these. % indicated declaration behavior, to avoid repetition when defining these.
% %
% The first five arguments work the same way as in \cs{@@_define:nnnNNn}, % The first five arguments work the same way as in \cs{@@_define:nnnnNNn},
% except that \meta{declarator list} is now a comma separated list. % except that \meta{declarator list} is now a comma separated list.
% In \meta{existence cs}, \texttt{\#\#1} is used to denote the \meta{instance} % In \meta{existence cs}, \texttt{\#\#1} is used to denote the \meta{instance}
% that has currently been called to define. % that has currently been called to define.
@ -1691,6 +1664,22 @@
% %
% Finally, we provide \LaTeX2e wrappers as document commands for these. % Finally, we provide \LaTeX2e wrappers as document commands for these.
% %
% \begin{macro}{\@@_new_document_command:Nnn, \@@_new_document_command:cnn}
%
% Private wrappers around \cs{NewDocumentCommand}.
%
% \begin{macrocode}
\cs_new:Npn \@@_new_document_command:Nnn #1 #2 #3
{
\NewDocumentCommand { #1 } { #2 } { #3 }
}
\cs_generate_variant:Nn \@@_new_document_command:Nnn { c n n }
% \end{macrocode}
% \end{macro}
%
%
%
%
% \begin{macro}{\@@_wrap_multiple_document:nnnn} % \begin{macro}{\@@_wrap_multiple_document:nnnn}
% \begin{syntax} % \begin{syntax}
% \cs{@@_wrap_multiple_document:nnnn}\marg{declarator list}\marg{function name}\marg{arg spec}\marg{code} % \cs{@@_wrap_multiple_document:nnnn}\marg{declarator list}\marg{function name}\marg{arg spec}\marg{code}
@ -1701,16 +1690,11 @@
% and upper-case versions of the current declarator. % and upper-case versions of the current declarator.
% %
% \begin{macrocode} % \begin{macrocode}
\cs_new:Npn \@@_new_document_command:Nnn #1 #2 #3
{
\NewDocumentCommand { #1 } { #2 } { #3 }
}
\cs_generate_variant:Nn \@@_new_document_command:Nnn { c n n }
\cs_new:Npn \@@_wrap_multiple_document:nnnn #1 #2 #3 #4 \cs_new:Npn \@@_wrap_multiple_document:nnnn #1 #2 #3 #4
{ {
\cs_set:Npn \@@_map_aux:n ##1 \cs_set:Npn \@@_map_aux:n ##1
{ {
\def \Declarator { \text_titlecase_first:n { ##1 } } \cs_set_eq:Nn \@@_Declarator: { \text_titlecase_first:n { ##1 } }
\@@_new_document_command:cnn { #2 } { #3 } { #4 } \@@_new_document_command:cnn { #2 } { #3 } { #4 }
} }
\clist_map_function:nN { #1 } \@@_map_aux:n \clist_map_function:nN { #1 } \@@_map_aux:n
@ -1725,7 +1709,7 @@
% \begin{macrocode} % \begin{macrocode}
\@@_wrap_multiple_document:nnnn \@@_wrap_multiple_document:nnnn
{ new, renew, provide, declare } { new, renew, provide, declare }
{ \Declarator TheoremGroup } { \@@_Declarator: TheoremGroup }
{ O{} m } { O{} m }
{ {
\use:c { groupthm_#1 _group:nn } { ##1 } { ##2 } \use:c { groupthm_#1 _group:nn } { ##1 } { ##2 }
@ -1745,7 +1729,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 \mymeta{keyname} with \texttt{__groupthm} % and prefix the \meta{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}
@ -1837,7 +1821,7 @@
% %
% \begin{macro}{\@@_flatten_groups_hierarchy:nN} % \begin{macro}{\@@_flatten_groups_hierarchy:nN}
% \begin{syntax} % \begin{syntax}
% \cs{@@_flatten_groups_hierarchy:n}\marg{theorem groups}\marg{clist} % \cs{@@_flatten_groups_hierarchy:nN}\marg{theorem groups}\marg{clist}
% \end{syntax} % \end{syntax}
% %
% Expects a comma separated list of \meta{theorem group}s. % Expects a comma separated list of \meta{theorem group}s.
@ -1926,12 +1910,12 @@
% %
% \begin{macro}{\@@_powerset_clist_foreach:Nn} % \begin{macro}{\@@_powerset_clist_foreach:Nn}
% \begin{syntax} % \begin{syntax}
% \cs{@@_powerset_clist_foreach:Nn}\mymeta{clist}\marg{code} % \cs{@@_powerset_clist_foreach:Nn}\meta{clist}\marg{code}
% \end{syntax} % \end{syntax}
% %
% Executes \mymeta{code} for each subset of the given clist variable. % Executes \meta{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 \mymeta{code}. % and is thus available regularly in \meta{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}
@ -2001,7 +1985,7 @@
% %
% \begin{macro}{\@@_use_group:n} % \begin{macro}{\@@_use_group:n}
% \begin{syntax} % \begin{syntax}
% \cs{@@_use_group:n}\mymeta{theorem group} % \cs{@@_use_group:n}\meta{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
@ -2021,10 +2005,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}\mymeta{function} % \cs{@@_use_function_on_name:n}\meta{function}
% \end{syntax} % \end{syntax}
% %
% The \mymeta{function} is expected to be of type \texttt{:n}, % The \meta{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}
@ -2210,7 +2194,7 @@
% \begin{macrocode} % \begin{macrocode}
\@@_wrap_multiple_document:nnnn \@@_wrap_multiple_document:nnnn
{ new, provide } { new, provide }
{ \Declarator GroupedTheorem } { \@@_Declarator: GroupedTheorem }
{ s O{} m } { s O{} m }
{ {
\use:c { groupthm_#1_theorem:nnn } \use:c { groupthm_#1_theorem:nnn }
@ -2231,24 +2215,24 @@
% As a backend, we use the following auxiliary function % As a backend, we use the following auxiliary function
% %
% %
% \begin{macro}{\@@_define_family:nnnnnn} % \begin{macro}{\@@_define_family:nnnnn}
% \begin{syntax} % \begin{syntax}
% \cs{@@_define_family:nnnnnn}\marg{family name}\marg{groups clist} % \cs{@@_define_family:nnnnn}\marg{family name}\marg{groups clist}
% \marg{name}\marg{thmtools clist}\marg{extra groups clist} % \marg{name}\marg{thmtools clist}\marg{extra groups clist}
% \end{syntax} % \end{syntax}
% %
% This will generate a new grouped theorem for each union of a subset of \mymeta{groups clist} % This will generate a new grouped theorem for each union of a subset of \meta{groups clist}
% and the extra set \mymeta{extra groups clist}, with the given properties, that is % and the extra set \meta{extra groups clist}, with the given properties, that is
% the \mymeta{nam} and \mymeta{thmtools clist} will be passed to the grouped theorem. % the \meta{nam} and \meta{thmtools clist} will be passed to the grouped theorem.
% The \mymeta{theorem name} of the grouped theorem will be an internal name that contains % The \meta{theorem name} of the grouped theorem will be an internal name that contains
% the \mymeta{family name} and the list of groups of this variant, that will be generated % the \meta{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.
% %
% \begin{macrocode} % \begin{macrocode}
\cs_new:Npn \@@_define_family:nnnnn #1 #2 #3 #4 #5 \cs_new:Npn \@@_define_family:nnnnn #1 #2 #3 #4 #5
{ {
% \end{macrocode} % \end{macrocode}
% Make a local copy of the \mymeta{groups clist} argument, % Make a local copy of the \meta{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 }
@ -2288,7 +2272,7 @@
% %
% \begin{macro}{\groupthm_new_family:nnnnn,\groupthm_new_family:nVVVV} % \begin{macro}{\groupthm_new_family:nnnnn,\groupthm_new_family:nVVVV}
% \begin{syntax} % \begin{syntax}
% \cs{groupthm_new_theorem_family:nnnnn}\marg{theorem family} % \cs{groupthm_new_family:nnnnn}\marg{theorem family}
% \marg{groups_1}\marg{name}\marg{thmtools clist}\marg{groups_2} % \marg{groups_1}\marg{name}\marg{thmtools clist}\marg{groups_2}
% \end{syntax} % \end{syntax}
% %
@ -2308,7 +2292,7 @@
% \end{macro} % \end{macro}
% %
% %
% \begin{macro}{\groupthm_new_family:nnn} % \begin{macro}{\groupthm_new_family:nnn, \groupthm_provide_family:nnn}
% \begin{syntax} % \begin{syntax}
% \cs{groupthm_new_family:nnn}\marg{key=value list}\marg{theorem family}\marg{bool} % \cs{groupthm_new_family:nnn}\marg{key=value list}\marg{theorem family}\marg{bool}
% \end{syntax} % \end{syntax}
@ -2360,7 +2344,7 @@
% \begin{macrocode} % \begin{macrocode}
\@@_wrap_multiple_document:nnnn \@@_wrap_multiple_document:nnnn
{ new, provide } { new, provide }
{ \Declarator GroupedTheoremFamily } { \@@_Declarator: GroupedTheoremFamily }
{ s O{} m } { s O{} m }
{ {
\use:c { groupthm_#1_family:nnn } \use:c { groupthm_#1_family:nnn }
@ -2388,7 +2372,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 \mymeta{selection body} from some family options. % executing a \meta{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
@ -2420,19 +2404,19 @@
% %
% %
% %
% \begin{macro}{\@@_define_family_options::nnnn} % \begin{macro}{\@@_define_family_options:nnnn}
% \begin{syntax} % \begin{syntax}
% \cs{@@_define_family_options::nnnn}\marg{theorem family} % \cs{@@_define_family_options:nnnn}\marg{theorem family}
% \marg{argument specification}\marg{selection body}\marg{extra groups} % \marg{argument specification}\marg{selection body}\marg{extra groups}
% \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
% \mymeta{theorem family} with signature \marg{argument specification}. % \meta{theorem family} with signature \marg{argument specification}.
% %
% The \mymeta{selection body} will be executed and selects some groups the environment shall have. % The \meta{selection body} will be executed and selects some groups the environment shall have.
% The \mymeta{extra groups} will be added regardless of the arguments given % The \meta{extra groups} will be added regardless of the arguments given
% to the \mymeta{theorem family} % to the \meta{theorem family}
% The \mymeta{declaring backend} is one of \texttt{New}, \texttt{Renew}, \texttt{Provide} % The \meta{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}
@ -2443,7 +2427,7 @@
{ #2 } { #2 }
{ {
% \end{macrocode} % \end{macrocode}
% We can now clear the group list and execute the \mymeta{selection body} % We can now clear the group list and execute the \meta{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.
@ -2490,7 +2474,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 \mymeta{extra groups} to them % passing different \meta{extra groups} to them
% %
% \begin{macro} % \begin{macro}
% { % {
@ -2524,7 +2508,17 @@
% It remains to wrap these into document commands % It remains to wrap these into document commands
% %
% %
% \begin{macro}{\NewGroupedTheoremFamilyOptions, \NewGroupedTheoremFamilyOptions*} % \begin{macro}
% {
% \NewGroupedTheoremFamilyOptions,
% \NewGroupedTheoremFamilyOptions*,
% \RenewGroupedTheoremFamilyOptions,
% \RenewGroupedTheoremFamilyOptions*,
% \ProvideGroupedTheoremFamilyOptions,
% \ProvideGroupedTheoremFamilyOptions*,
% \DeclareGroupedTheoremFamilyOptions,
% \DeclareGroupedTheoremFamilyOptions*,
% }
% \begin{syntax} % \begin{syntax}
% \cs{NewGroupedTheoremFamilyOptions}\marg{family name}\marg{signature} % \cs{NewGroupedTheoremFamilyOptions}\marg{family name}\marg{signature}
% \marg{selection body} % \marg{selection body}
@ -2533,7 +2527,7 @@
% \begin{macrocode} % \begin{macrocode}
\@@_wrap_multiple_document:nnnn \@@_wrap_multiple_document:nnnn
{ new, renew, provide, declare } { new, renew, provide, declare }
{ \Declarator GroupedTheoremFamilyOptions } { \@@_Declarator: GroupedTheoremFamilyOptions }
{ s O{} m m m } { s O{} m m m }
{ {
\keys_set:nn { groupthm / theorem ~ family ~ options } { starred ~ version } \keys_set:nn { groupthm / theorem ~ family ~ options } { starred ~ version }
@ -2584,3 +2578,4 @@
% \ExplSyntaxOff % \ExplSyntaxOff
% %
% \newpage % \newpage
% \PrintIndex

View file

@ -22,6 +22,11 @@
%% in the same archive or directory.) %% in the same archive or directory.)
%% File: groupthm.dtx %% File: groupthm.dtx
\ProvidesExplPackage{groupthm}{2022/01/17}{0.0.1}{Grouped theorems.} \ProvidesExplPackage{groupthm}{2022/01/17}{0.0.1}{Grouped theorems.}
{
\groupthm_new_family:nnnnn, \groupthm_provide_family:nnnnn,
\groupthm_new_family:nVVVV, \groupthm_provide_family:nVVVV
}
\RequirePackage{amsthm} \RequirePackage{amsthm}
\RequirePackage{thmtools} \RequirePackage{thmtools}
\cs_new:Npn \__groupthm_thmtools_declare_theorem:nn #1 #2 \cs_new:Npn \__groupthm_thmtools_declare_theorem:nn #1 #2
@ -367,22 +372,22 @@
} }
\cs_generate_variant:Nn \groupthm_new_group:nn { n x } \cs_generate_variant:Nn \groupthm_new_group:nn { n x }
\cs_new:Npn \__groupthm_new_document_command:Nnn #1 #2 #3 \cs_new:Npn \__groupthm_new_document_command:Nnn #1 #2 #3
{ {
\NewDocumentCommand { #1 } { #2 } { #3 } \NewDocumentCommand { #1 } { #2 } { #3 }
} }
\cs_generate_variant:Nn \__groupthm_new_document_command:Nnn { c n n } \cs_generate_variant:Nn \__groupthm_new_document_command:Nnn { c n n }
\cs_new:Npn \__groupthm_wrap_multiple_document:nnnn #1 #2 #3 #4 \cs_new:Npn \__groupthm_wrap_multiple_document:nnnn #1 #2 #3 #4
{ {
\cs_set:Npn \__groupthm_map_aux:n ##1 \cs_set:Npn \__groupthm_map_aux:n ##1
{ {
\def \Declarator { \text_titlecase_first:n { ##1 } } \cs_set_eq:Nn \__groupthm_Declarator: { \text_titlecase_first:n { ##1 } }
\__groupthm_new_document_command:cnn { #2 } { #3 } { #4 } \__groupthm_new_document_command:cnn { #2 } { #3 } { #4 }
} }
\clist_map_function:nN { #1 } \__groupthm_map_aux:n \clist_map_function:nN { #1 } \__groupthm_map_aux:n
} }
\__groupthm_wrap_multiple_document:nnnn \__groupthm_wrap_multiple_document:nnnn
{ new, renew, provide, declare } { new, renew, provide, declare }
{ \Declarator TheoremGroup } { \__groupthm_Declarator: TheoremGroup }
{ O{} m } { O{} m }
{ {
\use:c { groupthm_#1 _group:nn } { ##1 } { ##2 } \use:c { groupthm_#1 _group:nn } { ##1 } { ##2 }
@ -587,7 +592,7 @@
} }
\__groupthm_wrap_multiple_document:nnnn \__groupthm_wrap_multiple_document:nnnn
{ new, provide } { new, provide }
{ \Declarator GroupedTheorem } { \__groupthm_Declarator: GroupedTheorem }
{ s O{} m } { s O{} m }
{ {
\use:c { groupthm_#1_theorem:nnn } \use:c { groupthm_#1_theorem:nnn }
@ -649,7 +654,7 @@
} }
\__groupthm_wrap_multiple_document:nnnn \__groupthm_wrap_multiple_document:nnnn
{ new, provide } { new, provide }
{ \Declarator GroupedTheoremFamily } { \__groupthm_Declarator: GroupedTheoremFamily }
{ s O{} m } { s O{} m }
{ {
\use:c { groupthm_#1_family:nnn } \use:c { groupthm_#1_family:nnn }
@ -717,7 +722,7 @@
\cs_generate_variant:Nn \groupthm_declare_family_options:nnnn { n n n V } \cs_generate_variant:Nn \groupthm_declare_family_options:nnnn { n n n V }
\__groupthm_wrap_multiple_document:nnnn \__groupthm_wrap_multiple_document:nnnn
{ new, renew, provide, declare } { new, renew, provide, declare }
{ \Declarator GroupedTheoremFamilyOptions } { \__groupthm_Declarator: GroupedTheoremFamilyOptions }
{ s O{} m m m } { s O{} m m m }
{ {
\keys_set:nn { groupthm / theorem ~ family ~ options } { starred ~ version } \keys_set:nn { groupthm / theorem ~ family ~ options } { starred ~ version }