diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/stex/statements/statements.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/stex/statements/statements.dtx | 433 |
1 files changed, 282 insertions, 151 deletions
diff --git a/Master/texmf-dist/source/latex/stex/statements/statements.dtx b/Master/texmf-dist/source/latex/stex/statements/statements.dtx index 77966fa356c..3d839be5fbf 100644 --- a/Master/texmf-dist/source/latex/stex/statements/statements.dtx +++ b/Master/texmf-dist/source/latex/stex/statements/statements.dtx @@ -10,10 +10,12 @@ % % \iffalse %<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01] -%<package>\ProvidesPackage{statements}[2016/04/07 v1.2 Semantic Markup for Statements] +%<package>\ProvidesPackage{statements}[2019/03/20 v1.4 Semantic Markup for Statements] % %<*driver> \documentclass{ltxdoc} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} \usepackage{url,array,float,amsfonts} \usepackage{statements,presentation} \usepackage{paralist} @@ -30,8 +32,11 @@ \floatstyle{boxed} \newfloat{exfig}{thp}{lop} \floatname{exfig}{Example} -\def\tracissue#1{\cite{sTeX:online}, \hyperlink{http://trac.kwarc.info/sTeX/ticket/#1}{issue #1}} -\begin{document}\DocInput{statements.dtx}\end{document} +\def\githubissue#1{\cite{sTeX:github:on}, \hyperlink{https://github.com/KWARC/sTeX/issues/#1}{issue #1}} +\begin{document} +\RecordChanges +\DocInput{statements.dtx} +\end{document} %</driver> % \fi % @@ -60,6 +65,9 @@ % \changes{v1.2}{2015/04/03}{adding optional last arg to \texttt{\textbackslash \*defi*}} % \changes{v1.2}{2015/04/17}{adding \texttt{\textbackslash inlineass}} % \changes{v1.2}{2015/09/05}{adding \texttt{\textbackslash defis} and friends} +% \changes{v1.3}{2017/07/31}{adding \texttt{\textbackslash Defi}, \texttt{\textbackslash Trefi} and friends} +% \changes{v1.4}{2017/10/15}{changing the optional argument of \texttt{\textbackslash +% defi} and friends to a keyval argument} % % \GetFileInfo{statements.sty} % @@ -75,7 +83,7 @@ % \title{Semantic Markup for Mathematical Statements\thanks{Version {\fileversion} (last revised % {\filedate})}} % \author{Michael Kohlhase\\ -% Jacobs University, Bremen\\ +% FAU Erlangen-N\"urnberg\\ % \url{http://kwarc.info/kohlhase}} % \maketitle % @@ -122,11 +130,15 @@ % % \subsection{Package Options}\label{sec:user:options} % -% The |statements| package provides the |defindex| option to \sTeX. If this is set, then -% definienda are automatically passed into the index of the document. Furthermore, the -% |statements| package passes the \DescribeMacro{showmeta}|showmeta| to the |metakeys| -% package. If this is set, then the metadata keys are shown -% (see~\cite{Kohlhase:metakeys:ctan} for details and customization options). +% The |statements| package provides the \DescribeMacro{defindex}|defindex| option to +% \sTeX. If this is set, then definienda are automatically passed into the index of the +% document. Furthermore, the |statements| package passes the +% \DescribeMacro{showmeta}|showmeta| to the |metakeys| package. If this is set, then the +% metadata keys are shown (see~\cite{Kohlhase:metakeys:ctan} for details and customization +% options). The |nontheorem| option tells statements not to load the |ntheorem| package -- +% in case some other theorem package is already loaded; e.g. by the |beamer| package and +% we prefer that. Note that using the |nontheorem| option in a case where no theorem +% package is loaded will lead to errors. % % \subsection{Statements}\label{sec:statements} % @@ -354,58 +366,76 @@ % mathematical definitions. Its peculiarity is that it defines (i.e. gives a meaning to) % new mathematical concepts or objects. These\DescribeMacro{\definiendum} are identified % by the |\definiendum| macro, which is used as -% |\definiendum[|\meta{sysname}|]{|\meta{text}|}|. Here, \meta{text} is the text that is -% to be emphasized in the presentation and the optional \meta{sysname} is a system name of -% the symbol defined (for reference via |\termref|, see -% Section~\ref{sec:user:crossref}). If \meta{sysname} is not given, then \meta{text} is -% used as a system name instead, which is usually sufficient for most situations. +% |\definiendum[|\meta{keys}|]{|\meta{text}|}|. Here, \meta{text} is the text that is to +% be emphasized in the presentation. |\definiendum| takes the key +% \DescribeMacro{name}|name| for the optional system name of the symbol defined (for +% reference via |\termref|, see Section~\ref{sec:user:crossref}). If the |name| key is not +% given, then \meta{text} is used as a system name instead, which is usually sufficient +% for most situations. The set of keys is extensible to add additional metadata for the +% definiendum. Currently only the \DescribeMacro{lemma}|lemma| key is supported, which +% allows to specify the base form of the name of the concept involved -- e.g. for +% referencing in a glossary or index. % %\begin{exfig} +% \def\succ#1{s(#1)} % \begin{verbatim} % \symdef{one}{1} % \begin{definition}[id=one.def,for=one] % $\notatiendum[one]{\one}$ is the successor of $\zero$ -% (formally: $\one\colon=\succ\zero$) +% (formally: $\one :=\succ\zero$) % \end{definition} % \end{verbatim} -% \vspace{-1em}will lead to the result\medskip\par\noindent -% \begin{module} +% \vspace{-1em}will lead to the result\medskip\par\noindent\vspace*{-1em} +% \begin{module}[id=onedef] % \importmodule{peano} % \symdef{one}{1} % \begin{definition}[id=one.def,for=one] % $\notatiendum[one]{\one}$ is the successor of $\zero$ -% (formally: $\one\colon=\succ\zero$) +% (formally: $\one :=\succ\zero$) % \end{definition} % \end{module} % \caption{A Definition based on Figure {\ref{fig:axioms}}}\label{fig:definition} % \end{exfig} % The \DescribeMacro{defi}|\defi{|\meta{word}|}| macro combines the functionality of the % |\definiendum| macro with index markup from the |omdoc| -% package~\ctancite{Kohlhase:smomdl}: use +% package~\ctancite{Kohlhase:smomdl}: For definienda where the lemma and \meta{text} +% coincide use % \begin{center} -% |\defi[|\meta{name}|]{|\meta{word}|}[|\meta{indexkeys}|]| +% |\defi[|\meta{name}|]{|\meta{lemma}|}[|\meta{indexkeys}|]| % \end{center} -% to markup a definiendum \meta{word} with system name \meta{name} that appear in the +% to markup a definiendum \meta{lemma} with system name \meta{name} that appear in the % index (where \meta{indexkeys} are passed to the |\omdoc@index*| macros from the |omtext| % package) --- in other words in almost all definitions of single-word concepts. We also -% have the variants \DescribeMacro{\defii}|\defii| and \DescribeMacro{\defiii}|\defiii| -% for (adjectivized) two-word compounds. Note that if the definiendum contains sematnic -% macros, then we need to specify the |loadmodules| key and also protect the semantic -% macro. For instance if |\eset| is the semantic macro for $\emptyset$, then we would use +% have the variants \DescribeMacro{\defii}|\defii|, \DescribeMacro{\defiii}|\defiii|, and +% \DescribeMacro{\defiv}|\defiv| for (adjectivized) multi-word compounds. Note that if +% the definiendum contains semantic macros, then we need to specify the |loadmodules| key +% and also protect the semantic macro. For instance if |\eset| is the semantic macro for +% $\emptyset$, then we would use % \begin{verbatim} % \defii[eset-comp]{$\protect\eset$}{compatible}[loadmodules] % \end{verbatim} -% for the definiendum markup. Finally, the variants \DescribeMacro{\adefi}|\adefi|, -% \DescribeMacro{\adefii}|\adefii|,and \DescribeMacro{\adefiii}|\adefiii| have an -% additional first argument that allows to specify an alternative text; see -% Figure~\ref{fig:defin}. The main use of these is to mark up inflected forms as in +% for the definiendum markup. +% +% \begin{exfig} % \begin{verbatim} -% we speak of \adefi{lemmata}{lemma} in this case. +% A \defi{graph} consists of \adefi{vertices}{vertex} and \defis{edge}. % \end{verbatim} +% \caption{Definienda where Lemma and Text Form differ}\label{fig:lemma} +% \end{exfig} +% +% For the cases where the lemma and \meta{text} are different we can use the variants +% \DescribeMacro{\adefi}|\adefi|, \DescribeMacro{\adefii}|\adefii|, +% \DescribeMacro{\adefiii}|\adefiii|, and \DescribeMacro{\adefiv}|\adefiv| that have +% an additional first argument that allows to specify an alternative \meta{text}; see +% Figure~\ref{fig:defin}. The main use of these is to mark up inflected forms as in +% Figure~\ref{fig:lemma}. +% % As the greatest number of these are plurals, which tends to be regular (e.g. adding a % trailing ``s'' in English), we provide the variants \DescribeMacro{\defis}|\defis|, -% \DescribeMacro{\defiis}|\defiis|, and \DescribeMacro{\defiiis}|\defiiis| for that case: -% |\defiis{simple}{group}| is equivalent to much longer |\adefii{simple groups}{simple}{group}|. +% \DescribeMacro{\defiis}|\defiis|, \DescribeMacro{\defiiis}|\defiiis|, and +% \DescribeMacro{\defivs}|\defivs| for that case: |\defiis{simple}{group}| is +% equivalent to much longer |\adefii{simple groups}{simple}{group}| (but also see +% Figure~\ref{fig:lemma}). % % \begin{exfig} % \begin{tabular}{l|l|l} @@ -427,7 +457,7 @@ % \caption{Some definienda with Index}\label{fig:defin} % \end{exfig} % -% Note that the |\definiendum|, |\defi|, |\defii|, and |\defiii| macros can only be +% Note that the |\definiendum|, |\defi*|, |\adefi*|, and |\defi*s|, macros can only be % used inside the definitional situation, i.e. in a |definition| or |symboldec| % environment or a |\inlinedef| macro. If you find yourself in a situation where you want % to use it outside, you will most likely want to wrap the appropriate text fragment in a @@ -487,18 +517,18 @@ % definition in module \meta{cd} that defines the concept \meta{name}, e.g. that contains % |\defi[|\meta{name}|]{|\meta{text}|}|. % -% Just as the |\definiendum| macro has the convenience variants |\defi|, |\defii| and -% |\defiii|, the |\termref| has variants |\trefi|, |\trefii|, and |\trefiii| that take two -% and three arguments for the parts of the compositum. In the same module, concepts that -% are marked up by |\defi{|\meta{name}|}| in the definition can be referenced by +% Just as the |\definiendum| macro has the convenience variants |\defi| and |\?defi*|, the +% |\termref| has variants |\trefi|, |\trefii|, |\trefiii|, and |\trefiv| that take two and +% three arguments for the parts of the compositum. In the same module, concepts that are +% marked up by |\defi{|\meta{name}|}| in the definition can be referenced by % \DescribeMacro{\trefi}|\trefi{|\meta{name}|}|. Here the link text is just % \meta{name}. Concepts defined via |\defii{|\meta{first}|}{|\meta{second}|}| can be % referenced by \DescribeMacro{\trefii}|\trefii{|\meta{first}|}{|\meta{second}|}| (with -% link text ``\meta{first} \meta{second}'') and analogously for |\defiii| and -% \DescribeMacro{\trefiii}|\trefiii|. +% link text ``\meta{first} \meta{second}'') and analogously for +% |\defiii|/\DescribeMacro{\trefiii}|\trefiii| and % |\defiv|/\DescribeMacro{\trefiv}|\trefiv|. % -% We have variants \DescribeMacro{\atref*}|\atrefi|, |\atrefii|, and |\atrefiii| with -% alternative link text. For instance +% We have variants \DescribeMacro{\atref*}|\atrefi|, |\atrefii|, |\atrefiii|, and +% |\atrefiv| with alternative link text. For instance % |\atrefii{|\meta{text}|{|\meta{first}|}{|\meta{second}|}| references a concept % introduced by |\defii{|\meta{first}|}{|\meta{second}|}| but with link text \meta{text}. % Of course, if the system identifier is given explicitly in the optional argument of the @@ -531,7 +561,7 @@ % support the |\term| macro like a wiki-like dangling link: a click on % |\term{|\meta{phrase}|}| could generate a new editor buffer with a stub definition (an % |definition| environment with |\definiendum| macro and appropriate metadata).\ednote{MK: -% we probably need multi-part variants for |*tref*|} +% we probably need multi-part variants for |?tref*|} % % \section{Configuration of the Presentation}\label{sec:conf} % @@ -593,9 +623,9 @@ % In this section we document known limitations. If you want to help alleviate them, % please feel free to contact the package author. Some of them are currently discussed in % the \sTeX GitHub repository~\cite{sTeX:github:on}. -% \begin{compactenum} +% \begin{enumerate} % \item none reported yet -% \end{compactenum} +% \end{enumerate} % % \StopEventually{\newpage\PrintIndex\newpage\PrintChanges\printbibliography} % @@ -605,25 +635,34 @@ % % We declare some switches which will modify the behavior according to the package % options. Generally, an option |xxx| will just set the appropriate switches to true -% (otherwise they stay false). First we have the general options +% (otherwise they stay false). First we have the general options: |msection| specifies +% that theorems should be numbered in the |msection| counter provided by the |mikoslides| +% package/class. % \begin{macrocode} %<*package> -\newif\ifdef@index\def@indexfalse +\newif\ifdef@index\def@indexfalse \DeclareOption{defindex}{\def@indextrue} +\newif\if@nthm\@nthmtrue +\DeclareOption{nontheorem}{\@nthmfalse} +\newif\if@msection\@msectionfalse +\DeclareOption{msection}{\@msectiontrue} \DeclareOption*{\PassOptionsToPackage{\CurrentOption}{omtext}} \ProcessOptions % \end{macrocode} % % The next measure is to ensure that some {\sTeX} packages are loaded: |omdoc| for the % statement keys, |modules| since we need module identifiers for referencing. Furthermore, -% we need the |ntheorem| package for presenting statements. For {\latexml}, we also -% initialize the package inclusions, there we do not need |ntheorem|, since the XML does -% not do the presentation. +% we need the |ntheorem| package for presenting statements. % \begin{macrocode} \RequirePackage{omtext} \RequirePackage[base]{babel} +\ifcsdef{proof}{\cslet{proof}{\relax}\cslet{endproof}{\relax}}{}% to redefine if necessary +\if@nthm \RequirePackage[hyperref]{ntheorem} \theoremstyle{plain} +\else +\RequirePackage{amsthm} +\fi % \end{macrocode} % Now, we define an auxiliary function that lowercases strings % \begin{macrocode} @@ -642,6 +681,7 @@ % For the other languages, we set up triggers % \begin{macrocode} \AfterBabelLanguage{ngerman}{\input{statements-ngerman.ldf}} +\AfterBabelLanguage{arabic}{\input{statements-arabic.ldf}} % \end{macrocode} % % \subsection{Statements}\label{sec:impl:statements} @@ -661,6 +701,7 @@ % we just run the respective termination macro. % \begin{macrocode} \def\define@statement@env#1{% +\ifcsdef{#1}{\cslet{#1}{\relax}\cslet{end#1}{\relax}}{}% to redefine if necessary \newenvironment{#1}[1][]{\metasetkeys{omtext}{##1}\sref@target% \@in@omtexttrue% \ifx\omtext@display\st@flow\else% @@ -668,8 +709,8 @@ \ifx\sref@id\@empty\else\label{#1.\sref@id}\fi \csname st@#1@initialize\endcsname\fi% display \ifx\sref@id\@empty\sref@label@id{here}\else% -\sref@label@id{\STpresent{\csname ST#1EnvKeyword\endcsname}~\@currentlabel}\fi% -\ignorespaces} +\sref@label@id{\STpresent{\csname st@#1@kw\endcsname}~\@currentlabel}\fi% +\strut\ignorespaces} {\csname st@#1@terminate\endcsname\ifx\omtext@display\st@flow\else\end{ST#1Env}\fi% \omtext@post@skip\@in@omtextfalse}} % \end{macrocode} @@ -679,14 +720,18 @@ % \begin{macrocode} \newenvironment{assertion}[1][]{\metasetkeys{omtext}{#1}\sref@target% \@in@omtexttrue% -\ifx\omtext@display\st@flow\itshape\noindent\ignorespaces% +\ifx\omtext@display\st@flow + \itshape\noindent\ignorespaces% \else% display!=flow -\ifx\omtext@title\@empty\begin{ST\omtext@type AssEnv}% -\else\begin{ST\omtext@type AssEnv}[\omtext@title]\fi\fi% -\ifx\omtext@type\@empty\sref@label@id{here}\else% -\sref@label@id{\STpresent{\csname ST\omtext@type AssEnvKeyword\endcsname}~\@currentlabel} -\fi}%display=flow -{\ifx\omtext@display\st@flow\else\end{ST\omtext@type AssEnv}\@in@omtextfalse\fi} + \xdef\@@@type{\omtext@type}% to keep it safe from \inlinedef + \ifx\omtext@title\@empty\begin{ST\@@@type AssEnv}% + \else\begin{ST\@@@type AssEnv}[\omtext@title]% + \fi% +\fi %display=flow +\ifx\omtext@type\@empty\else% +\sref@label@id{\STpresent{\csname st@\@@@type @kw\endcsname}~\@currentlabel} +\fi} +{\ifx\omtext@display\st@flow\else\end{ST\@@@type AssEnv}\@in@omtextfalse\fi} % \end{macrocode} % \end{environment} % @@ -710,14 +755,25 @@ % \end{macro} % Then we configure the presentation of the theorem environments % \begin{macrocode} +\if@nthm \theorembodyfont{\itshape} \theoremheaderfont{\normalfont\bfseries} +\else +\theoremstyle{plain} +\fi % \end{macrocode} -% and then we finally define the theorem environments in terms of the statement keywords -% defined above. They are all numbered together with the section counter. +% % \begin{environment}{ST*AssEnv} +% We define a number of internal assertion environments according to the values of its +% |type| key. % \begin{macrocode} -\newtheorem{STtheoremAssEnv}{\st@theorem@kw}[section] +\if@msection +\newtheorem{STtheoremAssEnv}{\st@theorem@kw}[msection] +\else +\ifdef{\thesection} +{\newtheorem{STtheoremAssEnv}{\st@theorem@kw}[section]} +{\newtheorem{STtheoremAssEnv}{\st@theorem@kw}} +\fi \newtheorem{STlemmaAssEnv}[STtheoremAssEnv]{\st@lemma@kw} \newtheorem{STpropositionAssEnv}[STtheoremAssEnv]{\st@proposition@kw} \newtheorem{STcorollaryAssEnv}[STtheoremAssEnv]{\st@corollary@kw} @@ -727,20 +783,17 @@ \newtheorem{STobligationAssEnv}[STtheoremAssEnv]{\st@obligation@kw} \newtheorem{STassumptionAssEnv}[STtheoremAssEnv]{\st@assumption@kw} \newtheorem{STobservationAssEnv}[STtheoremAssEnv]{\st@observation@kw} -\theorembodyfont{\rm} +\if@nthm\theorembodyfont{\rmfamily}\else\theoremstyle{definition}\fi \newtheorem{STremarkAssEnv}[STtheoremAssEnv]{\st@remark@kw} \newtheorem{STruleAssEnv}[STtheoremAssEnv]{\st@rule@kw} % \end{macrocode} % \end{environment} % % \begin{environment}{example} -% \ednote{need to do something clever for the OMDoc representation of examples, in -% particular, the usevocab should only be defined in example} % \begin{macrocode} \def\st@example@initialize{}\def\st@example@terminate{} \define@statement@env{example} \def\st@example@kw{Example} -\theorembodyfont{\upshape} \newtheorem{STexampleEnv}[STtheoremAssEnv]{\st@example@kw} % \end{macrocode} % \end{environment} @@ -750,7 +803,6 @@ \def\st@axiom@initialize{}\def\st@axiom@terminate{} \define@statement@env{axiom} \def\st@axiom@kw{Axiom} -\theorembodyfont{\upshape} \newtheorem{STaxiomEnv}[STtheoremAssEnv]{\st@axiom@kw} % \end{macrocode} % \end{environment} @@ -794,7 +846,6 @@ % We first define a theorem environment % \begin{macrocode} \def\st@typedec@kw{Type Declaration} -\theorembodyfont{\upshape} \newtheorem{STtypedecEnv}[STtheoremAssEnv]{\st@typedec@kw} % \end{macrocode} % and then the environment itself. @@ -805,7 +856,7 @@ \ifx\omtext@title\@empty\begin{STtypedecEnv}\else\begin{STtypedecEnv}[\omtext@title]\fi% \ifx\sref@id\@empty\else\label{typedec.\sref@id}\fi \ifx\sref@id\@empty\sref@label@id{here}\else% -\sref@label@id{\STpresent{\csname STtypedecEnvKeyword\endcsname}~\@currentlabel}\fi% +\sref@label@id{\STpresent{\csname st@typedec@kw\endcsname}~\@currentlabel}\fi% \ignorespaces} {\ifx\omtext@display\st@flow\else\end{STtypedecEnv}\fi\omtext@post@skip} % \end{macrocode} @@ -816,15 +867,15 @@ % the |\st@indef| switch to suppress warnings from |\st@def@target|. % \begin{macrocode} \newif\ifst@indef\st@indeffalse +\ifcsdef{definition}{\cslet{definition}{\relax}\cslet{enddefinition}{\relax}}{}% to redefine if necessary \newenvironment{definition}[1][]{\metasetkeys{omtext}{#1}\sref@target\st@indeftrue% \ifx\omtext@display\st@flow\else% \ifx\omtext@title\@empty\begin{STdefinitionEnv}\else\begin{STdefinitionEnv}[\omtext@title]\fi\fi% \ifx\sref@id\@empty\sref@label@id{here}\else% -\sref@label@id{\STpresent{\csname STdefinitionEnvKeyword\endcsname}~\@currentlabel}\fi% +\sref@label@id{\STpresent{\csname st@definition@kw\endcsname}~\@currentlabel}\fi% \ignorespaces} {\ifx\omtext@display\st@flow\else\end{STdefinitionEnv}\fi} \def\st@definition@kw{Definition} -\theorembodyfont{\upshape} \newtheorem{STdefinitionEnv}[STtheoremAssEnv]{\st@definition@kw} % \end{macrocode} % \end{environment} @@ -838,27 +889,26 @@ \def\st@notation@initialize{} \define@statement@env{notation} \def\st@notation@kw{Notation} -\theorembodyfont{\upshape} \newtheorem{STnotationEnv}[STtheoremAssEnv]{\st@notation@kw} % \end{macrocode} % \end{environment} % % \begin{macro}{\st@def@target} % the next macro is a variant of the |\sref@target| macro provided by the |sref| package -% specialized for the use in the |\definiendum|, |\defi|, |\defii|, and |\defiii| -% macros. |\st@def@target{|\meta{opt}|}{|\meta{name}|}| makes a target with label -% |sref@|\meta{opt}|@|\meta{modulename}|@target|, if \meta{opt} is non-empty, else with -% the label |sref@|\meta{name}|@|\meta{modulename}|@target| (the first time it +% specialized for the use in the |\definiendum|, |\defi*|, |\Defi*|, |\defi*s|, and |\Defi*s| +% macros. |\st@def@target{|\meta{opt}|}{|\meta{name}|}{|\meta{text}|}| makes a target +% with label |sref@|\meta{opt}|@|\meta{modulename}|@target|, if \meta{opt} is non-empty, +% else with the label |sref@|\meta{name}|@|\meta{modulename}|@target| (the first time it % encounters this symbol; i.e. if |\sref@|\meta{name}|@|\meta{modulename}|@defined| is -% undefined). Also it generates the necessary warnings for a definiendum-like -% macro. +% undefined). And it formats the |\defemph|-emphasized \meta{text}. Also it generates +% the necessary warnings for a definiendum-like macro. % \begin{macrocode} -\newcommand\st@def@target[3]{\def\@symname{#1}\def\@verbname{#2}% +\newcommand\st@def@target[3]{\edef\@symname{#1}\def\@verbname{#2}% \ifst@indef% if we are in a definition or such \@ifundefined{mod@id}% if we are not in a module {\PackageWarning{statements}{definiendum in unidentified module\MessageBreak -\protect\definiendum, \protect\defi, -\protect\defii, \protect\defiii\MessageBreak +\protect\definiendum, \protect\defi*, +\protect\Defi*, \protect\defi*s, \protect\Defi*s\MessageBreak can only be referenced when called in a module with id key}}% {% now we are in a module \edef\@@cd{\ifx\omtext@theory\@empty\mod@id\else\omtext@theory\fi}% @@ -866,15 +916,16 @@ can only be referenced when called in a module with id key}}% \defemph{\@ifundefined{sref@\@@name @\@@cd @defined}% {\expandafter\sref@target@ifh{sref@\@@name @\@@cd @target}{#3}}% {#3}}% +%\footnote{sTeX: target sref@\@@name @\@@cd @target}% for testing targets \expandafter\gdef\csname sref@\@@name @\@@cd @defined\endcsname{yes}% \ifmetakeys@showmeta\metakeys@show@keys{\@@cd}{name:\@@name}\fi}% -\else% st@indef +\else% st@indef: we are not in a definition or such \PackageError{statements}% {definiendum outside definition context\MessageBreak \protect\definiendum, \protect\defi, -\protect\defii, \protect\defiii\MessageBreak -do not make sense semantically outside a definition.\MessageBreak -Consider wrapping the defining phrase in a \protect\inlinedef}% +\protect\Defi, \protect\defi*s, \protect\Defi*s\MessageBreak +do not make sense semantically outside a definition.} +{Consider wrapping the defining phrase in a \protect\inlinedef}% \fi}% st@indef % \end{macrocode} % \end{macro} @@ -897,8 +948,10 @@ Consider wrapping the defining phrase in a \protect\inlinedef}% % % \begin{macro}{\definiendum} % \begin{macrocode} -%\newcommand\definiendum[2][]{\st@def@target{#1}{#2}\@termdef[#1]{#2}{#2}} -\newcommand\definiendum[2][]{\st@def@target{#1}{#2}{#2}} +\addmetakey{definiendum}{name} +\addmetakey{definiendum}{lemma} +\newcommand\definiendum[2][]{\setkeys{definiendum}{#1}% +\st@def@target{\definiendum@name}{\definiendum@name}{#2}} % \end{macrocode} % \end{macro} % @@ -910,7 +963,7 @@ Consider wrapping the defining phrase in a \protect\inlinedef}% % \end{macrocode} % \end{macro} % -% We expand the {\latexml} bindings for |\defi|, |\defii| and |\defiii| into two +% We expand the {\latexml} bindings for |\defi|, |\defii|, |\defiii| and |\defiv| into two % instances one will be used for the definition and the other for indexing. % % \begin{macro}{\defi} @@ -918,9 +971,15 @@ Consider wrapping the defining phrase in a \protect\inlinedef}% % handles the last optional argument and does the indexing. The information flow between % them goes via the local |\@phrase| macro. % \begin{macrocode} -\newcommand\defi[2][]{\st@def@target{#1}{#2}{#2}\def\@phrase{#2}\@defi} \newcommand\@defi[1][]{\ifdef@index\omdoc@indexi[#1]{\@phrase}\fi\xspace} -\newcommand\defis[2][]{\st@def@target{#1}{#2}{#2s}\def\@phrase{#2}\@defi} +\newcommand\defi[2][]{\metasetkeys{definiendum}{#1}% +\st@def@target{\definiendum@name}{#2}{#2}\def\@phrase{#2}\@defi} +\newcommand\defis[2][]{\metasetkeys{definiendum}{#1}% +\st@def@target{\definiendum@name}{#2}{#2s}\def\@phrase{#2}\@defi} +\newcommand\Defi[2][]{\metasetkeys{definiendum}{#1}% +\st@def@target{\definiendum@name}{#2}{\capitalize{#2}}\def\@phrase{#2}\@defi} +\newcommand\Defis[2][]{\metasetkeys{definiendum}{#1}% +\st@def@target{\definiendum@name}{#2}{\capitalize{#2s}}\def\@phrase{#2}\@defi} % \end{macrocode} % \end{macro} % @@ -928,35 +987,43 @@ Consider wrapping the defining phrase in a \protect\inlinedef}% % Again we split the |\adefi| macro into two parts: |\adef| does the definiendum bit and % |\@adefi| handles the last optional argument and does the indexing. % \begin{macrocode} -\newcommand\adefi[3][]{\def\@name{#1}\def\@verb{#3}% -\st@def@target{#1}{#3}{#2}\@adefi} +\newcommand\adefi[3][]{\metasetkeys{definiendum}{#1}\def\@verb{#3}% +\st@def@target{\definiendum@name}{#3}{#2}\@adefi} \newcommand\@adefi[1][]{% \ifdef@index% -\ifx\@name\@empty\omdoc@indexi[#1]{\@verb}% -\else\omdoc@indexi[at=\@name,#1]{\@verb}\fi% +\ifx\definiendum@name\@empty\omdoc@indexi[#1]{\@verb}% +\else\omdoc@indexi[at=\definiendum@name,#1]{\@verb}\fi% \fi\xspace} % \end{macrocode} % \end{macro} % % \begin{macro}{\defii} % \begin{macrocode} -\newcommand\@defii[1][]{\ifdef@index\@twin[#1]{\@pone}{\@ptwo}\fi\xspace} -\newcommand\defii[3][]{\def\@pone{#2}\def\@ptwo{#3}% -\st@def@target{#1}{#2-#3}{#2 #3}\@defii} -\newcommand\defiis[3][]{\def\@pone{#2}\def\@ptwo{#3}% -\st@def@target{#1}{#2-#3}{#2 #3s}\@defii} +\newcommand\@defii[1][]{\ifdef@index\omdoc@indexii[#1]{\@pone}{\@ptwo}\fi\xspace} +\newcommand\defii[3][]{\metasetkeys{definiendum}{#1}% +\def\@pone{#2}\def\@ptwo{#3}% +\st@def@target{\definiendum@name}{#2-#3}{#2 #3}\@defii} +\newcommand\defiis[3][]{\metasetkeys{definiendum}{#1}% +\def\@pone{#2}\def\@ptwo{#3}% +\st@def@target{\definiendum@name}{#2-#3}{#2 #3s}\@defii} +\newcommand\Defii[3][]{\metasetkeys{definiendum}{#1}% +\def\@pone{#2}\def\@ptwo{#3}% +\st@def@target{\definiendum@name}{#2-#3}{\capitalize{#2 #3}}\@defii} +\newcommand\Defiis[3][]{\metasetkeys{definiendum}{#1}% +\def\@pone{#2}\def\@ptwo{#3}% +\st@def@target{\definiendum@name}{#2-#3}{\capitalize{#2 #3s}}\@defii} % \end{macrocode} % \end{macro} % % \begin{macro}{\adefii} % analogous to |\adefi| % \begin{macrocode} -\newcommand\adefii[4][]{\def\@name{#1}\def\@pone{#3}\def\@ptwo{#4}% -\st@def@target{#1}{#3-#4}{#2}\@adefii} +\newcommand\adefii[4][]{\metasetkeys{definiendum}{#1}\def\@pone{#3}\def\@ptwo{#4}% +\st@def@target{\definiendum@name}{#3-#4}{#2}\@adefii} \newcommand\@adefii[1][]{% \ifdef@index% -\ifx\@name\@empty\@twin[#1]{\@pone}{\@ptwo}% -\else\@twin[at=\@name,#1]{\@pone}{\@ptwo}\fi% +\ifx\definiendum@name\@empty\omdoc@indexii[#1]{\@pone}{\@ptwo}% +\else\omdoc@indexii[at=\definiendum@name,#1]{\@pone}{\@ptwo}\fi% \fi\xspace} % \end{macrocode} % \end{macro} @@ -964,22 +1031,62 @@ Consider wrapping the defining phrase in a \protect\inlinedef}% % \begin{macro}{\defiii} % similar to |\defii| % \begin{macrocode} -\newcommand\defiii[4][]{\def\@pone{#2}\def\@ptwo{#3}\def\@pthree{#4}% -\st@def@target{#1}{#2-#3-#4}{#2 #3 #4}\@defiii} -\newcommand\@defiii[1][]{\ifdef@index\@atwin[#1]{\@pone}{\@ptwo}{\@pthree}\fi\xspace} -\newcommand\defiiis[4][]{\def\@pone{#2}\def\@ptwo{#3}\def\@pthree{#4}% -\st@def@target{#1}{#2-#3-#4}{#2 #3 #4s}\@defiii} +\newcommand\@defiii[1][]{\ifdef@index\omdoc@indexiii[#1]{\@pone}{\@ptwo}{\@pthree}\fi\xspace} +\newcommand\defiii[4][]{\metasetkeys{definiendum}{#1}% +\def\@pone{#2}\def\@ptwo{#3}\def\@pthree{#4}% +\st@def@target{\definiendum@name}{#2-#3-#4}{#2 #3 #4}\@defiii} +\newcommand\defiiis[4][]{\metasetkeys{definiendum}{#1}% +\def\@pone{#2}\def\@ptwo{#3}\def\@pthree{#4}% +\st@def@target{\definiendum@name}{#2-#3-#4}{#2 #3 #4s}\@defiii} +\newcommand\Defiii[4][]{\metasetkeys{definiendum}{#1}% +\def\@pone{#2}\def\@ptwo{#3}\def\@pthree{#4}% +\st@def@target{\definiendum@name}{#2-#3-#4}{\capitalize{#2 #3 #4}}\@defiii} +\newcommand\Defiiis[4][]{\metasetkeys{definiendum}{#1}% +\def\@pone{#2}\def\@ptwo{#3}\def\@pthree{#4}% +\st@def@target{\definiendum@name}{#2-#3-#4}{\capitalize{#2 #3 #4s}}\@defiii} % \end{macrocode} % \end{macro} % % \begin{macro}{\adefiii} % \begin{macrocode} -\newcommand\adefiii[5][]{\def\@name{#1}\def\@pone{#3}\def\@ptwo{#4}\def\@pthree{#3}% -\st@def@target{#1}{#3-#4-#5}{#2}\@adefiii} +\newcommand\adefiii[5][]{\metasetkeys{definiendum}{#1}\def\@pone{#3}\def\@ptwo{#4}\def\@pthree{#5}% +\st@def@target{\definiendum@name}{#3-#4-#5}{#2}\@adefiii} \newcommand\@adefiii[1][]{% \ifdef@index% -\ifx\@name\@empty\@atwin[#1]{\@pone}{\@ptwo}{\@pthree}% -\else\@atwin[at=\@name,#1]{\@pone}{\@ptwo}{\@pthree}\fi% +\ifx\definiendum@name\@empty\omdoc@indexiii[#1]{\@pone}{\@ptwo}{\@pthree}% +\else\omdoc@indexiii[at=\definiendum@name,#1]{\@pone}{\@ptwo}{\@pthree}\fi% +\fi\xspace} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\defiv} +% similar to |\defiii| +% \begin{macrocode} +\newcommand\@defiv[1][]{\ifdef@index\omdoc@indexiv[#1]{\@pone}{\@ptwo}{\@pthree}{\@ptfour}\fi\xspace} +\newcommand\defiv[5][]{\metasetkeys{definiendum}{#1}% +\def\@pone{#2}\def\@ptwo{#3}\def\@pthree{#4}\def\@ptfour{#5}% +\st@def@target{\definiendum@name}{#2-#3-#4-#5}{#2 #3 #4 #5}\@defiv} +\newcommand\defivs[5][]{\metasetkeys{definiendum}{#1}% +\def\@pone{#2}\def\@ptwo{#3}\def\@pthree{#4}\def\@ptfour{#5}% +\st@def@target{\definiendum@name}{#2-#3-#4-#5}{#2 #3 #4 #5s}\@defiv} +\newcommand\Defiv[5][]{\metasetkeys{definiendum}{#1}% +\def\@pone{#2}\def\@ptwo{#3}\def\@pthree{#4}\def\@ptfour{#5}% +\st@def@target{\definiendum@name}{#2-#3-#4-#5}{\capitalize{#2 #3 #4 #5}}\@defiv} +\newcommand\Defivs[5][]{\metasetkeys{definiendum}{#1}% +\def\@pone{#2}\def\@ptwo{#3}\def\@pthree{#4}\def\@ptfour{#5}% +\st@def@target{\definiendum@name}{#2-#3-#4-#5}{\capitalize{#2 #3 #4 #5s}}\@defiv} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\adefiv} +% \begin{macrocode} +\newcommand\adefiv[6][]{\metasetkeys{definiendum}{#1}% +\def\@pone{#3}\def\@ptwo{#4}\def\@pthree{#5}\def\@ptfour{#6}% +\st@def@target{\definiendum@name}{#3-#4-#5-#6}{#2}\@adefiv} +\newcommand\@adefiv[1][]{% +\ifdef@index% +\ifx\definiendum@name\@empty\@indiv[#1]{\@pone}{\@ptwo}{\@pthree}{\@ptfour}% +\else\@indiv[at=\definiendum@name,#1]{\@pone}{\@ptwo}{\@pthree}{\@ptfour}\fi% \fi\xspace} % \end{macrocode} % \end{macro} @@ -1003,7 +1110,7 @@ Consider wrapping the defining phrase in a \protect\inlinedef}% \newcommand\inlinedef[2][]{\metasetkeys{omtext}{#1}% \if@in@omtext\else% we are not in an omtext or statement \PackageError{modules}{\protect\inlinedef\space outside a statement!}% -{Try wrapping the paragraph in a\MessageBreak +{Try wrapping the paragraph in a\MessageBreak \protect\begin{omtext}, \protect\begin{assertion}, \protect\begin{axiom}, ... \MessageBreak whatever is suitable semantically}\fi% \sref@target\sref@label@id{here}\st@indeftrue #2} @@ -1025,15 +1132,16 @@ whatever is suitable semantically}\fi% \addmetakey*{termref}{name} \addmetakey*{termref}{role} \newcommand\termref[2][]{\metasetkeys{termref}{#1}% - \ifx\termref@cd\@empty\def\termref@cd{\mod@id}\fi% - \ifx\termref@name\@empty\def\termref@name{#2}\fi% - \@ifundefined{sref@\termref@name @\termref@cd @defined} - {\ifx\termref@cdbase\@empty% external reference - \mod@termref\termref@cd\termref@name{#2}% - \else\sref@href@ifh\termref@cdbase{#2}% - \fi}% - {\sref@hlink@ifh{sref@\termref@name @\termref@cd @target}{#2}}% -} +\ifx\termref@cd\@empty\def\termref@cd{\mod@id}\fi% +\ifx\termref@name\@empty\def\termref@name{#2}\fi% +\@ifundefined{sref@\termref@name @\termref@cd @defined}% +{\ifx\termref@cdbase\@empty% external reference +\mod@termref\termref@cd\termref@name{#2}% +\else\sref@href@ifh\termref@cdbase{#2}% +\fi}% +{\def\@label{sref@\termref@name @\termref@cd @target}% +\sref@hlink@ifh\@label{#2}%\footnote{termref: internal reference to \@label} +}} % \end{macrocode} % \end{macro} % @@ -1043,6 +1151,7 @@ whatever is suitable semantically}\fi% \ifx\@test\@empty\termref[name=#3]{#2}\else\termref[cd=#1,name=#3]{#2}\fi} \newcommand\atrefii[4][]{\atrefi[#1]{#2}{#3-#4}} \newcommand\atrefiii[5][]{\atrefi[#1]{#2}{#3-#4-#5}} +\newcommand\atrefiv[6][]{\atrefi[#1]{#2}{#3-#4-#5-#6}} % \end{macrocode} % \end{macro} % @@ -1051,9 +1160,24 @@ whatever is suitable semantically}\fi% \newcommand\trefi[2][]{\atrefi[#1]{#2}{#2}} \newcommand\trefii[3][]{\atrefi[#1]{#2 #3}{#2-#3}} \newcommand\trefiii[4][]{\atrefi[#1]{#2 #3 #4}{#2-#3-#4}} +\newcommand\trefiv[5][]{\atrefi[#1]{#2 #3 #4 #5}{#2-#3-#4-#5}} \newcommand\trefis[2][]{\atrefi[#1]{#2s}{#2}} \newcommand\trefiis[3][]{\atrefi[#1]{#2 #3s}{#2-#3}} \newcommand\trefiiis[4][]{\atrefi[#1]{#2 #3 #4s}{#2-#3-#4}} +\newcommand\trefivs[5][]{\atrefi[#1]{#2 #3 #4 #5s}{#2-#3-#4-#5}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Tref*} +% \begin{macrocode} +\newcommand\Trefi[2][]{\atrefi[#1]{\capitalize{#2}}{#2}} +\newcommand\Trefii[3][]{\atrefi[#1]{\capitalize{#2 #3}}{#2-#3}} +\newcommand\Trefiii[4][]{\atrefi[#1]{\capitalize{#2 #3 #4}}{#2-#3-#4}} +\newcommand\Trefiv[5][]{\atrefi[#1]{\capitalize{#2 #3 #4 #5}}{#2-#3-#4-#5}} +\newcommand\Trefis[2][]{\atrefi[#1]{\capitalize{#2s}}{#2}} +\newcommand\Trefiis[3][]{\atrefi[#1]{\capitalize{#2 #3s}}{#2-#3}} +\newcommand\Trefiiis[4][]{\atrefi[#1]{\capitalize{#2 #3 #4s}}{#2-#3-#4}} +\newcommand\Trefivs[5][]{\atrefi[#1]{\capitalize{#2 #3 #4 #5s}}{#2-#3-#4-#5}} % \end{macrocode} % \end{macro} % @@ -1125,49 +1249,56 @@ whatever is suitable semantically}\fi% % \endinput % \iffalse +%%% Local Variables: +%%% mode: doctex +%%% TeX-master: t +%%% End: +% \fi % LocalWords: GPL structuresharing STR dtx keyval env envfalse idfalse idtrue typedec st % LocalWords: displayfalse envtrue displaytrue forfalse typefalse titlefalse filedate eg % LocalWords: continuesfalse fortrue fromtrue typetrue titletrue CPERL omdoc thedectype % LocalWords: continuestrue symboldec omtext RequirePackage lowcase lc ToString termin % LocalWords: foreach hyperref href hlink DefStatement OptionalKeyVals ne NeedsTeXFormat % LocalWords: KeyVal xml CMP simpleDef PatternDef DefStatement PatternRule thedectype -% LocalWords: requation PatternCMP RecDef DefConstructor keyvals defs psymbols tref +% LocalWords: requation PatternCMP RecDef DefConstructor keyvals defs psymbols tref eset % LocalWords: openElement symb closeElement ffor getValue attrs metadata undef rangle % LocalWords: afterDigestBegin setProperty AssignValue afterDigest definiendum rangle % LocalWords: cd addr LookupValue getArg toString idx idt definiendum ide idp st@flow % LocalWords: DefMacro args unlist inlinedef uri pdf afterOpen numberIt texttt XMath % LocalWords: iffalse consymb ntheorem textbackslash symref def scsys sc sc kw endinput % LocalWords: mathml openmath latexml activemath fileversion maketitle stex importmodule -% LocalWords: setcounter tocdepth tableofcontents newpage sproofs ulsmf08 sref +% LocalWords: setcounter tocdepth tableofcontents newpage sproofs ulsmf08 sref usevocab % LocalWords: MaySch eltte09 twintoo sref subsubsection exfig vspace vspace usemhvocab -% LocalWords: noindent renewtheorem hline textbf textbf footnotesize ple peano +% LocalWords: noindent renewtheorem hline textbf textbf footnotesize ple peano inlineass % LocalWords: STaxiomEnv symdef medskip succ mathbb ldots stepcounter ednote usemhmodule % LocalWords: STtheoremAssEnv stepcounter STtheoremAssEnv stepcounter defin STtypedecEnv -% LocalWords: STtheoremAssEnv notatiendum defin smomdl biblatex twindef cdbase -% LocalWords: twindef atwindef atwindef adjectivized varaiants twindefalt cseq -% LocalWords: twindefalt atwindefalt atwindefalt csymbol definalt termref emph -% LocalWords: termref compactdesc KohAmb smmssl twinref atwinref newpart impl -% LocalWords: termdef defemph defemph renewcommand termemph termenph stDMemph -% LocalWords: stDMemph STpresent STpresent makeatletter STlemmaAssEnv textsf -% LocalWords: STpropositionAssEnv STcorollaryAssEnv STconjectureAssEnv langle -% LocalWords: STfalseconjectureAssEnv STpostulateAssEnv STobligationAssEnv foo -% LocalWords: STassumptionAssEnv STobservationAssEnv STexampleEnv textsf ltxml -% LocalWords: STdefinitionEnv STnotationEnv printbibliography langle ncname -% LocalWords: theoremstyle sym newenvironment ifx csname endcsname inlineex -% LocalWords: currentlabel theorembodyfont itshape theoremheaderfont bfseries -% LocalWords: normalfont newtheorem upshape srefaddidkey definendum -% LocalWords: newcommand indef newif ifst indeffalse indeftrue attr whatsit -% LocalWords: STdefinitionEnvKeyword notemph modulename ifundefined atwin defi -% LocalWords: expandafter providecommand nameuse doctex ctancite funval defii +% LocalWords: STtheoremAssEnv notatiendum defin smomdl biblatex twindef cdbase defis +% LocalWords: twindef atwindef atwindef adjectivized varaiants twindefalt cseq defindex +% LocalWords: twindefalt atwindefalt atwindefalt csymbol definalt termref emph emptyset +% LocalWords: termref compactdesc KohAmb smmssl twinref atwinref newpart impl customized +% LocalWords: termdef defemph defemph renewcommand termemph termenph stDMemph formalized +% LocalWords: stDMemph STpresent STpresent makeatletter STlemmaAssEnv textsf emphasized +% LocalWords: STpropositionAssEnv STcorollaryAssEnv STconjectureAssEnv langle defiis +% LocalWords: STfalseconjectureAssEnv STpostulateAssEnv STobligationAssEnv foo defiis +% LocalWords: STassumptionAssEnv STobservationAssEnv STexampleEnv textsf ltxml defiiis +% LocalWords: STdefinitionEnv STnotationEnv printbibliography langle ncname localization +% LocalWords: theoremstyle sym newenvironment ifx csname endcsname inlineex loadmodules +% LocalWords: currentlabel theorembodyfont itshape theoremheaderfont bfseries defiiis +% LocalWords: normalfont newtheorem upshape srefaddidkey definendum customization gdef +% LocalWords: newcommand indef newif ifst indeffalse indeftrue attr whatsit automatized +% LocalWords: STdefinitionEnvKeyword notemph modulename ifundefined atwin defi behavior +% LocalWords: expandafter providecommand nameuse doctex ctancite funval defii initialize +% LocalWords: funsymbs findnodes symbolnode defsref showmeta showmeta sysname ngerman +% LocalWords: defii defiii defiii adefi adefi adefii adefii adefiii adefiii STruleAssEnv +% LocalWords: trefi trefii trefiii atref atrefi atrefii atrefiii conf metakeys setkeys +% LocalWords: compactenum Deref metasetkeys addmetakey symtype ltx ltx sts specialized +% LocalWords: ifmetakeys fntype rightarrow inlinetypedec inlinetypedec STremarkAssEnv +% LocalWords: ignorespaces usemodule textcolor STtypedecEnvKeyword flexiformalization +% LocalWords: statements-ngerman.ldf omdoc@indexi xspace trefis trefiis trefiiis +% LocalWords: importmhmodule -%%% Local Variables: -%%% mode: doctex -%%% TeX-master: t -%%% End: -% \fi -% LocalWords: funsymbs findnodes symbolnode defsref showmeta showmeta sysname -% LocalWords: defii defiii defiii adefi adefi adefii adefii adefiii adefiii -% LocalWords: trefi trefii trefiii atref atrefi atrefii atrefiii conf metakeys -% LocalWords: compactenum Deref metasetkeys addmetakey symtype ltx ltx sts -% LocalWords: ifmetakeys fntype rightarrow inlinetypedec inlinetypedec -% LocalWords: ignorespaces usemodule textcolor STtypedecEnvKeyword +% \endinput +% Local Variables: +% mode: doctex +% TeX-master: t +% End: |