summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/stex/omtext/omtext.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/stex/omtext/omtext.dtx')
-rw-r--r--Master/texmf-dist/source/latex/stex/omtext/omtext.dtx785
1 files changed, 290 insertions, 495 deletions
diff --git a/Master/texmf-dist/source/latex/stex/omtext/omtext.dtx b/Master/texmf-dist/source/latex/stex/omtext/omtext.dtx
index 032d8190a8c..15fef2612a2 100644
--- a/Master/texmf-dist/source/latex/stex/omtext/omtext.dtx
+++ b/Master/texmf-dist/source/latex/stex/omtext/omtext.dtx
@@ -4,26 +4,26 @@
% this file is released under the
% LaTeX Project Public License (LPPL)
%
-% The development version of this file can be found at
-% $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/omtext/omtext.dtx $
+% The original of this file is in the public repository at
+% http://github.com/KWARC/sTeX/
% \fi
%
% \iffalse
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
-%<package>\ProvidesPackage{omtext}[2012/01/28 v1.0 OMDoc Text Fragments]
+%<package>\ProvidesPackage{omtext}[2016/04/07 v1.1 OMDoc Text Fragments]
%
%<*driver>
\documentclass{ltxdoc}
-\usepackage{url,array,omdoc,float}
-\usepackage{omtext}
+\usepackage{url,array,float,amsfonts}
+\usepackage{omtext,omdoc}
\usepackage[show]{ed}
\usepackage[hyperref=auto,style=alphabetic]{biblatex}
-\bibliography{kwarc}
-\usepackage[eso-foot,today]{svninfo}
-\svnInfo $Id: omtext.dtx 1999 2012-01-28 07:32:11Z kohlhase $
-\svnKeyword $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/omtext/omtext.dtx $
+\addbibresource{kwarcpubs.bib}
+\addbibresource{extpubs.bib}
+\addbibresource{kwarccrossrefs.bib}
+\addbibresource{extcrossrefs.bib}
\usepackage{stex-logo}
-\usepackage{../ctansvn}
+\usepackage{ctangit}
\usepackage{hyperref}
\makeindex
\floatstyle{boxed}
@@ -34,7 +34,7 @@
%</driver>
% \fi
%
-%\CheckSum{375}
+%\CheckSum{411}
%
% \changes{v0.4}{2008/07/22}{added index markup}
% \changes{v0.4}{2008/09/29}{augmenting the index macros with optional values}
@@ -46,6 +46,9 @@
% \changes{v0.7}{2010/02/11}{changing blockquote to sblockquote and inlinequote similarly}
% \changes{v0.9}{2010/05/25}{separated out from \texttt{omdoc.dtx}}
% \changes{v1.0}{2010/06/18}{fixing typos}
+% \changes{v1.1}{2015/10/13}{changing \texttt{\textbackslash textleadsto} to
+% \texttt{\textbackslash ergo} and defining inverse \texttt{\textbackslash ogre}}
+% \changes{v1.1}{2015/11/04}{moving MathHub support out to separate package}
%
% \GetFileInfo{omtext.sty}
%
@@ -53,7 +56,7 @@
%
% \def\omdoc{OMDoc}
% \def\latexml{{\LaTeX}ML}
-% \title{{\texttt{omtext}}: Semantic Markup for Mathematical Text Fragments in {\LaTeX}\thanks{Version {\fileversion} (last revised
+% \title{\texttt{omtext}: Semantic Markup for Mathematical Text Fragments in {\LaTeX}\thanks{Version {\fileversion} (last revised
% {\filedate})}}
% \author{Michael Kohlhase\\
% Jacobs University, Bremen\\
@@ -78,7 +81,7 @@
% texts in {\sTeX}, a version of {\TeX/\LaTeX} that allows to markup {\TeX/\LaTeX}
% documents semantically without leaving the document format, essentially turning
% {\TeX/\LaTeX} into a document format for mathematical knowledge management (MKM). The
-% package supports direct translation to the {\omdoc} format~\cite{Kohlhase:omdoc1.2}
+% package supports direct translation to the {\omdoc} format~\cite{Kohlhase:OMDoc1.2}
% \end{omgroup}
%
% \begin{omgroup}[id=sec:user]{The User Interface}
@@ -116,30 +119,71 @@
% markup. The \DescribeMacro{theory=}|theory| specifies a module
% (see~\cite{KohAmb:smmssl:svn}) that is to be pre-loaded in this one\ednote{this is not
% implemented yet.} Finally, \DescribeMacro{verbalizes=}|verbalizes| specifies a (more)
-% formal statement (see~\cite{Kohlhase:smms:svn}) that this text verbalizes.
+% formal statement (see~\cite{Kohlhase:smms:svn}) that this text verbalizes or
+% paraphrases.\ednote{MK:specify the form of the reference.}
% \end{omgroup}
%
% \begin{omgroup}[id=sec:user:phrase]{Phrase-Level Markup}
%
-% \DescribeEnv{phrase} The |phrase| environment allows to mark up phrases with semantic
+% \DescribeMacro{\phrase} The |phrase| macro allows to mark up phrases with semantic
% information. It takes an optional |KeyVal| argument with the keys
% \DescribeMacro{verbalizes=}|verbalizes| and \DescribeMacro{type=}|type| as above and
% \DescribeMacro{style}|style,| \DescribeMacro{class}|class|,
% \DescribeMacro{index}|index| that are disregarded in the {\LaTeX}, but copied into the
% generated content markup.
-%
-% \DescribeMacro{\sinlinequote} The |sinlinequote| macro allows to mark up quotes inline and
-% attribute them. The quote itself is given as the argument, possibly preceded by the a
-% specification of the source in a an optional argument. For instance, we would quote
-% Hamlet with
+%
+% We use the \DescribeMacro{\nlex}|\nlex{|\meta{phrase}|}| for marking up phrases that
+% serve as natural language examples and \DescribeMacro{\nlcex}|\nlcex{|\meta{phrase}|}|
+% for counter-examples (utterances that are not acceptable for some reason). In natural
+% language examples, we sometimes use ``co-reference markers'' to specify the
+% resolution of anaphora and the like. We use the
+% \DescribeMacro{\coreft}|\coreft{|\meta{phrase}|}{|\meta{mark}|}| to mark up the
+% ``target'' of a co-reference and analogously \DescribeMacro{\corefs}|\corefs| for
+% coreference source -- e.g. for an anaphoric reference. The usage is the following:
+% \begin{verbatim}
+% \nlex{If \coreft{a farmer}1 owns \coreft{a donkey}2,
+% \corefs{he}2 beats \corefs{it}2.}
+% \end{verbatim}
+% is formatted to
+% \begin{quote}
+% \nlex{If \coreft{a farmer}1 owns \coreft{a donkey}2, \corefs{he}2 beats \corefs{it}2.}
+% \end{quote}
+%
+% \DescribeMacro{\sinlinequote} The |sinlinequote| macro allows to mark up quotes inline
+% and attribute them. The quote itself is given as the argument, possibly preceded by
+% the a specification of the source in a an optional argument. For instance, we would
+% quote Hamlet with
% \begin{verbatim}
% \sinlinequote[Hamlet, \cite{Shak:1603:Hamlet}]{To be or not to be}
% \end{verbatim}
-% which would appear as \sinlinequote[Hamlet, (Shakespeare 1603)]{To be or not to be} in
-% the text. The style in which inline quotations appear in the text can be adapted by
-% specializing the macros \DescribeMacro{\@sinlinequote}|\@sinlinequote| --- for quotations
-% without source and \DescribeMacro{\@@sinlinequote}|\@@sinlinequote| --- for quotations with
-% source.
+% which would appear as \sinlinequote[Hamlet, (Shakespeare 1603)]{To be or not to be} in
+% the text. The style in which inline quotations appear in the text can be adapted by
+% specializing the macros \DescribeMacro{\@sinlinequote}|\@sinlinequote| --- for
+% quotations without source and \DescribeMacro{\@@sinlinequote}|\@@sinlinequote| --- for
+% quotations with source.
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:user:decl]{Declarations (under development)}
+%
+% Declarations are special phrases that carry a lot of meaning in mathematics: they
+% introduce and further specify the indentifiers available in formulae. They are marked
+% up via the \DescribeMacro{\vdec}|\vdec| macro. Inside a declaration we can use the
+% \DescribeMacro{\vids}|\vids| macro to mark up the variable names and
+% \DescribeMacro{\vrest}|\vrest| to mark up the restrictions. In the simplest case we
+% have a single variable as in ``\ldots for all $u$'', which we mark up as.
+% \begin{verbatim}
+% ... for all \vdec{\vids[u]{$u$}}.
+% \end{verbatim}
+% A more complex example has multiple identifiers embedded in a restriction, as in ``Let
+% $x,y,z\in\mathbb{R}$, such that $x+2y=z$, then \ldots'', which we mark up as
+% \begin{verbatim}
+% Let \vdec{\vids[x,y,z]{$\minset{x,y,z}\Reals$},
+% such that \vrest{$x+2y=z$}}, then \ldots''
+% \end{verbatim}
+% \ednote{explain and make better examples}\ednote{unify this with the vardef macros
+% from (currently) the modules package.}\ednote{talk with Frederic about this see what
+% other examples there are.}\ednote{how do we identify the variables in complex
+% restriction patterns. maybe with LMXref, which we should reinstate for this.}
% \end{omgroup}
%
% \begin{omgroup}[id=sec:user:block]{Block-Level Markup}
@@ -213,140 +257,60 @@
% All index macros take an optional first argument that is used for ordering the
% respective entries in the index.
% \end{omgroup}
-% \end{omgroup}
-%
%
-% \section{Limitations}\label{sec:limitations}
+% \end{omgroup}
+%
+% \begin{omgroup}{Limitations}\label{sec:limitations}
%
% 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 TRAC~\cite{sTeX:online}.
+% the \sTeX GitHub repository~\cite{sTeX:github:on}.
% \begin{compactenum}
% \item none reported yet
% \end{compactenum}
+% \end{omgroup}
%
% \StopEventually{\newpage\PrintIndex\newpage\PrintChanges\printbibliography}\newpage
%
% \begin{omgroup}[id=sec:impl]{Implementation}
%
-% The |omtext| package generates two files: the {\LaTeX} package (all the code between
-% {\textsf{$\langle$*package$\rangle$}} and {\textsf{$\langle$/package$\rangle$}}) and the
-% {\latexml} bindings (between {\textsf{$\langle$*ltxml$\rangle$ and
-% $\langle$/ltxml$\rangle$}}). We keep the corresponding code fragments together,
-% since the documentation applies to both of them and to prevent them from getting out of
-% sync.
-%
% \begin{omgroup}[id=sec:impl:options]{Package Options}
%
-% The initial setup for {\latexml}:
-%
-% \begin{macrocode}
-%<*ltxml>
-package LaTeXML::Package::Pool;
-use strict;
-use LaTeXML::Package;
-use Cwd qw(cwd abs_path);
-%</ltxml>
-% \end{macrocode}
-%
% 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).\ednote{need an implementation for {\latexml}}
%
% \begin{macrocode}
%<*package>
-\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}}
+\newif\if@omtext@mh@\@omtext@mh@false
+\DeclareOption{mh}{\@omtext@mh@true
+\PassOptionsToPackage{\CurrentOption}{modules}}
\newif\ifindex\indextrue
\DeclareOption{noindex}{\indexfalse}
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{modules}}
\ProcessOptions
\ifindex\makeindex\fi
-%</package>
-%<*ltxml>
-DeclareOption('noindex','');
-%</ltxml>
% \end{macrocode}
%
-% Then we need to set up the packages by requiring the |sref| package to be loaded.
-%
% \begin{macrocode}
-%<*package>
-\RequirePackage{sref}
+\if@omtext@mh@\RequirePackage{omtext-mh}\fi
+\RequirePackage{xspace}
+\RequirePackage{modules}
\RequirePackage{comment}
-%</package>
-%<*ltxml>
-RequirePackage('sref');
-%</ltxml>
-% \end{macrocode}
-% \end{omgroup}
-%
-% \begin{omgroup}[id=sec:impl:metadata]{Metadata}
-%
-% All the {\omdoc} elements allow to specify metadata in them, which is modeled by the
-% |omdoc:metadata| element. Since the content of this element is precisely controlled
-% by the Schema, we can afford to auto-open and auto-close it. Thus metadata elements
-% from various sources will just be included into one |omdoc:metadata| element, even if
-% they are supplied by different {\sTeX} bindings. Also we add numbering and location
-% facilities.
-%
-% \begin{macrocode}
-%<*ltxml>
-Tag('omdoc:metadata',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1,autoOpen=>1);
-%</ltxml>
-% \end{macrocode}
-%
-% the |itemize|, |description|, and |enumerate| environments generate |omdoc:li|,
-% |omdoc:di| with |autoclose| inside a CMP. This behavior will be overwritten later, so we
-% remember that we are in a |CMP| by assigning |_LastSeenCMP|.
-%
-% \begin{macrocode}
-%<*ltxml>
-sub declareFunctions{
- my ($stomach,$whatsit) = @_;
- my $keyval = $whatsit->getArg(1);
- my $funval = KeyVal($keyval,'functions') if KeyVal($keyval,'functions');
- my @funsymbs = ParseKeyValList($funval);
- #Unread the function declarations at the Gullet
- foreach (@funsymbs) {
- $stomach->getGullet->unread(Tokenize('\lxDeclare[role=FUNCTION]{$'.$_.'$}')->unlist);
- }
- return;
-}
-Tag('omdoc:CMP', afterOpen => sub {AssignValue('_LastSeenCMP', $_[1], 'global');return;});#$
-%</ltxml>
-% \end{macrocode}
-%
-% the |itemize|, |description|, and |enumerate| environments originally introduced in the
-% |omtext| package do double duty in OMDoc, outside a |CMP| they are transformed into a
-% |<omgroup layout='itemize|description|enumerate'>|, where the text after the macros
-% |\item| come to be the children. If that is only text, then it is enclosed in an
-% |<omtext><CMP>|, otherwise it is left as it is. The optional argument of the |\item|
-% is transformed into the |<metadata><dc:title>| of the generated |\item| element.
-% \begin{macrocode}
-%<*ltxml>
-DefParameterType('IfBeginFollows', sub {
- my ($gullet) = @_;
- $gullet->skipSpaces;
- my $next = $gullet->readToken;
- $gullet->unread($next);
- $next = ToString($next);
- #Hm, falling back to regexp handling, the $gullet->ifNext approach didn't work properly
- return 1 unless ($next=~/^\\begin/);
- return;
- },
- reversion=>'', optional=>1);
-%</ltxml>
+\RequirePackage{mdframed}
+\RequirePackage{latexsym}
% \end{macrocode}
% \end{omgroup}
%
% \begin{omgroup}[id=sec:impl:mtxt]{Mathematical Text}
%
-% We define the actions that are undertaken, when the keys are encountered. Here this is
-% very simple, we just define an internal macro with the value, so that we can use it
-% later. Note that we allow math in the |title| field, so we do not declare it to be
-% |Semiverbatim| (indeed not at all, which allows it by default).
+% We define the actions that are undertaken, when the keys are encountered. The first
+% set just records metadata; this is very simple via the |\addmetakey|
+% infrastructure~\ctancite{Kohlhase:metakeys}. Note that we allow math in the |title|
+% field, so we do not declare it to be |Semiverbatim| (indeed not at all, which allows
+% it by default).
%
% \begin{macrocode}
-%<*package>
\srefaddidkey{omtext}
\addmetakey[]{omtext}{functions}
\addmetakey*{omtext}{display}
@@ -359,154 +323,112 @@ DefParameterType('IfBeginFollows', sub {
\addmetakey{omtext}{continues}
\addmetakey{omtext}{verbalizes}
\addmetakey{omtext}{subject}
-%</package>
-%<*ltxml>
-DefKeyVal('omtext','functions','Undigested');
-DefKeyVal('omtext','display','Semiverbatim');
-DefKeyVal('omtext','for','Semiverbatim');
-DefKeyVal('omtext','from','Semiverbatim');
-DefKeyVal('omtext','type','Semiverbatim');
-DefKeyVal('omtext','title','Plain'); #Math mode in titles.
-DefKeyVal('omtext','start','Plain'); #Math mode in start phrases
-DefKeyVal('omtext','theory','Semiverbatim');
-DefKeyVal('omtext','continues','Semiverbatim');
-DefKeyVal('omtext','verbalizes','Semiverbatim');
-%</ltxml>
+% \end{macrocode}
+% The next keys handle module loading (see~\ctancite{KohAmb:smmssl}).
+% \begin{macrocode}
+% \ednote{MK: need to implement these in LaTeXML, I wonder whether there is a general
+% mechanism like numberit.}\ednote{MK: this needs to be rethought in the light of
+% |\usemodule|. It is probably obsolete. Is this used? Is this documented?}
+\define@key{omtext}{require}{\requiremodules{#1}{sms}}
+\define@key{omtext}{module}{\message{module: #1}\importmodule{#1}\def\omtext@theory{#1}}
% \end{macrocode}
%
% \begin{macro}{\st@flow}
% We define this macro, so that we can test whether the |display| key has the value |flow|
% \begin{macrocode}
-%<*package>
\def\st@flow{flow}
-%</package>
% \end{macrocode}
% \end{macro}
%
+% We define a switch that allows us to see whether we are inside an |omtext| environment
+% or a statement. It will be used to give better error messages for inline statements.
+%
+% \begin{macrocode}
+\newif\if@in@omtext\@in@omtextfalse
+% \end{macrocode}
+%
% \begin{environment}{omtext}
% The |omtext| environment is different, it does not have a keyword that marks
% it. Instead, it can have a title, which is used in a similar way. We redefine the
% |\lec| macro so the trailing |\par| does not get into the way.
% \begin{macrocode}
-%<*package>
\def\omtext@pre@skip{\smallskip}
\def\omtext@post@skip{}
\providecommand{\stDMemph}[1]{\textbf{#1}}
-\newenvironment{omtext}[1][]{\bgroup\metasetkeys{omtext}{#1}\sref@label@id{this paragraph}%
-\def\lec##1{\@lec{##1}}
+\newenvironment{omtext}[1][]{\@in@omtexttrue%
+\bgroup\metasetkeys{omtext}{#1}\sref@label@id{this paragraph}%
+\def\lec##1{\@lec{##1}}%
\ifx\omtext@display\st@flow\else\omtext@pre@skip\par\noindent%
-\ifx\omtext@title\@empty\else\stDMemph{\omtext@title}: \fi\fi\ignorespaces}
-{\egroup\omtext@post@skip}
-%</package>
-%<*ltxml>
-DefEnvironment('{omtext} OptionalKeyVals:omtext',
- "<omdoc:omtext "
- . "?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id')')() "
- . "?&KeyVal(#1,'type')(type='&KeyVal(#1,'type')')() "
- . "?&KeyVal(#1,'for')(for='&KeyVal(#1,'for')')() "
- . "?&KeyVal(#1,'from')(from='&KeyVal(#1,'from')')()>"
- . "?&KeyVal(#1,'title')(<dc:title>&KeyVal(#1,'title')</dc:title>)()"
- . "<omdoc:CMP>"
- . "?&KeyVal(#1,'start')(<ltx:text class='startemph'>&KeyVal(#1,'start')</ltx:text>)()"
- . "#body"
- ."</omdoc:omtext>");
-%</ltxml>
+\ifx\omtext@title\@empty%
+\ifx\omtext@start\@empty\else\stDMemph{\omtext@start}\xspace\fi%
+\else\stDMemph{\omtext@title}:\xspace%
+\ifx\omtext@start\@empty\else\omtext@start\xspace\fi%
+\fi% omtext@title empty
+\fi% omtext@display=flow
+\ignorespaces}
+{\egroup\omtext@post@skip\@in@omtextfalse}
% \end{macrocode}
% \end{environment}
-%
-% We also make our life easier If defining an environment that is
-% turned into something that contains |<CMP>|\meta{body}|</CMP>|, use this method instead
-% \begin{macrocode}
-%<*ltxml>
-sub DefCMPEnvironment {
- my ($proto, $replacement, %options) = @_;
- my @before = $options{beforeDigest} ? ($options{beforeDigest}) : ();
- push(@before, \&useCMPItemizations);
- $options{beforeDigest} = \@before;
- my @after = $options{afterDigestBegin} ? ($options{afterDigestBegin}) : ();
- push(@after, \&declareFunctions);
- $options{afterDigestBegin} = \@after;
- DefEnvironment($proto, $replacement, %options);
-}
-sub DefCMPConstructor {
- my ($proto, $replacement, %options) = @_;
- my @before = $options{beforeDigest} ? ($options{beforeDigest}) : ();
- push(@before, \&useCMPItemizations);
- $options{beforeDigest} = \@before;
- DefConstructor($proto, $replacement, %options);
-}#$
-%</ltxml>
-% \end{macrocode}
% \end{omgroup}
%
% \begin{omgroup}[id=sec:impl:phrase]{Phrase-level Markup}
%
-% \begin{environment}{phrase}
+% \begin{macro}{\phrase}
% For the moment, we do disregard the most of the keys
% \begin{macrocode}
-%<*package>
\srefaddidkey{phrase}
\addmetakey{phrase}{style}
\addmetakey{phrase}{class}
\addmetakey{phrase}{index}
\addmetakey{phrase}{verbalizes}
\addmetakey{phrase}{type}
-\newenvironment{phrase}[1][]{\metasetkeys{phrase}{#1}}{}
-%</package>
-%<*ltxml>
-DefKeyVal('phrase','id','Semiverbatim');
-DefKeyVal('phrase','style','Semiverbatim');
-DefKeyVal('phrase','class','Semiverbatim');
-DefKeyVal('phrase','index','Semiverbatim');
-DefKeyVal('phrase','verbalizes','Semiverbatim');
-DefKeyVal('phrase','type','Semiverbatim');
-DefConstructor('\phrase OptionalKeyVals:phrase {}',
- "<ltx:text %&KeyVals(#1)>#2</ltx:text>");
-%</ltxml>
+\addmetakey{phrase}{only}
+\newcommand\phrase[2][]{\metasetkeys{phrase}{#1}%
+\ifx\prhase@only\@empty\only<\phrase@only>{#2}\else #2\fi}
% \end{macrocode}
-% \end{environment}
+% \end{macro}
%
-% \begin{environment}{nlex}
-% For the moment, we do disregard the most of the keys
+% \begin{macro}{\coref*}
% \begin{macrocode}
-%<*package>
-\def\nlex#1{\green{\sl{#1}}}
-\def\nlcex#1{*\green{\sl{#1}}}
-%</package>
-%<*ltxml>
-DefConstructor('\nlex{}',
- "<ltx:text class='nlex'>#1</ltx:text>");
-DefConstructor('\nlcex{}',
- "<ltx:text type='nlcex'>#1</ltx:text>");
-%</ltxml>
+\providecommand\textsubscript[1]{\ensuremath{_{#1}}}
+\newcommand\corefs[2]{#1\textsubscript{#2}}
+\newcommand\coreft[2]{#1\textsuperscript{#2}}
% \end{macrocode}
-% \end{environment}
+% \end{macro}
%
+% \begin{macro}{\n*lex}
+% \begin{macrocode}
+\newcommand\nlex[1]{\green{\sl{#1}}}
+\newcommand\nlcex[1]{*\green{\sl{#1}}}
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{sinlinequote}
% \begin{macrocode}
-%<*package>
\def\@sinlinequote#1{``{\sl{#1}}''}
\def\@@sinlinequote#1#2{\@sinlinequote{#2}~#1}
-\newcommand{\sinlinequote}[2][]
+\newcommand\sinlinequote[2][]
{\def\@opt{#1}\ifx\@opt\@empty\@sinlinequote{#2}\else\@@sinlinequote\@opt{#2}\fi}
-%</package>
-%<*ltxml>
-DefConstructor('\sinlinequote [] {}',
- "<ltx:quote type='inlinequote'>"
- . "?#1(<dc:source>#1</dc:source>\n)()"
- . "#2"
- . "</ltx:quote>");
-%</ltxml>
% \end{macrocode}
% \end{macro}
% \end{omgroup}
%
+% \begin{omgroup}[id=sec:user:decl]{Declarations (under development)}
+%
+% The declaration macros are still under development (i.e. the macros) are still under
+% development and may change at any time. Currently they are completely empty.
+%
+% \begin{macrocode}
+\newcommand\vdec[1]{#1}
+\newcommand\vids[2][]{#2}
+\newcommand\vrest[2][]{#2}
+% \end{macrocode}
+% \end{omgroup}
+%
% \begin{omgroup}[id=sec:impl:block]{Block-Level Markup}
%
% \begin{environment}{sblockquote}
-% \ednote{describe above}
% \begin{macrocode}
-%<*package>
\def\begin@sblockquote{\begin{quote}\sl}
\def\end@sblockquote{\end{quote}}
\def\begin@@sblockquote#1{\begin@sblockquote}
@@ -514,18 +436,17 @@ DefConstructor('\sinlinequote [] {}',
\newenvironment{sblockquote}[1][]
{\def\@opt{#1}\ifx\@opt\@empty\begin@sblockquote\else\begin@@sblockquote\@opt\fi}
{\ifx\@opt\@empty\end@sblockquote\else\end@@sblockquote\@opt\fi}
-%</package>
-%<*ltxml>
-DefEnvironment('{sblockquote} []',
- "?#1(<omdoc:omtext type='quote'>"
- . "<dc:source>#1</dc:source>"
- . "#body"
- . " </omdoc:omtext>)"
- . "(<ltx:quote>#body</ltx:quote>)");
-%</ltxml>
% \end{macrocode}
% \end{environment}
%
+% \begin{environment}{sboxquote}
+% \begin{macrocode}
+\newenvironment{sboxquote}[1][]
+{\def\@@src{#1}\begin{mdframed}[leftmargin=.5cm,rightmargin=.5cm]}
+{\@lec{\rm\@@src}\end{mdframed}}
+% \end{macrocode}
+% \end{environment}
+%
% The line end comment macro makes sure that it will not be forced on the next line unless
% necessary.
% \begin{macro}{\lec}
@@ -533,318 +454,192 @@ DefEnvironment('{sblockquote} []',
% which can be customized in the document class. The basic one here is provided so that
% it is not missing.
% \begin{macrocode}
-%<*package>
\providecommand{\@@lec}[1]{(#1)}
-\def\@lec#1{\strut\hfil\strut\null\nobreak\hfill\hbox{\@@lec{#1}}}
+\def\@lec#1{\strut\hfil\strut\null\nobreak\hfill\@@lec{#1}}
\def\lec#1{\@lec{#1}\par}
-%</package>
-%<*ltxml>
-DefConstructor('\lec{}',
- "\n<omdoc:note type='line-end-comment'>#1</omdoc:note>");
-%</ltxml>
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\my*graphics}
-% We set up a special treatment for including graphics to respect the intended {\omdoc}
-% document structure. The main work is done in the transformation stylesheet though.
-%
+% We set up a special treatment for including graphics to respect the intended {\omdoc}
+% document structure. The main work is done in the transformation stylesheet though.
% \begin{macrocode}
-%<ltxml>RawTeX('
-%<*ltxml|package>
\newcommand\mygraphics[2][]{\includegraphics[#1]{#2}}
-\newcommand\mycgraphics[2][]{\begin{center}\includegraphics[#1]{#2}\end{center}}
-\newcommand\mybgraphics[2][]{\fbox{\includegraphics[#1]{#2}\end{center}}}
-%</ltxml|package>
-%<ltxml>');
+\newcommand\mycgraphics[2][]{\begin{center}\mygraphics[#1]{#2}\end{center}}
+\newcommand\mybgraphics[2][]{\fbox{\mygraphics[#1]{#2}}}
+\newcommand\mycbgraphics[2][]{\begin{center}\fbox{\mygraphics[#1]{#2}}\end{center}}
% \end{macrocode}
% \end{macro}
% \end{omgroup}
%
% \begin{omgroup}[id=sec:impl:index]{Index Markup}
-%
-% \begin{macrocode}
-% this is the main internal indexing comman. It makes sure that the modules necessary for
-% interpreting the math in the index entries are loaded.
-%<*package>
-\newcommand{\omdoc@index}[2][]{\ifindex\def\@test{#1}%%
-\ifx\@test\@empty\def\@@idx{#2}\else\def\@@idx{#1}\fi%
-\@ifundefined{mod@id}{\index{\@@idx @#2}}%
-{\index{\@@idx @{\importmodule{\mod@id} #2}}\fi}}
-\newcommand{\indexalt}[3][]{{#2}\omdoc@index[#1]{#3}} % word in text and index
-\newcommand{\indextoo}[2][]{{#2}\omdoc@index[#1]{#2}} % word in text and index
-%</package>
-% \end{macrocode}
-%
-% this puts two-compound words into the index in various permutations
-%
+% \begin{macro}{\omdoc@index*}
+% these are the main internal indexing commands -- dividing them into three is awful,
+% but I did not get list processing running. It makes sure that the modules necessary
+% for interpreting the math in the index entries are loaded. If the |loadmodules| key is
+% given, we import the module we are in otherwise all the currently imported modules. We
+% do not have to require the module files, since the index is a the end of the
+% document. If the |at| key is given, then we use that for sorting in the index.
% \begin{macrocode}
-%<*package>
-\newcommand{\@twin}[3][]{\ifindex\def\@test{#1}%%
-\ifx\@test\@empty\def\@@idx{#2}\else\def\@@idx{#1}\fi%
-\@ifundefined{mod@id}
-{\index{\@@idx @#2!#3}%
-\ifx\@test\@empty\def\@@idx{#3}\else\def\@@idx{#1}\fi%
-\index{\@@idx @#2!#3}}%
-{\index{\@@idx @{\importmodule{\mod@id} #2}!{\importmodule{\mod@id} #3}}%
-\ifx\@test\@empty\def\@@idx{#3}\else\def\@@idx{#1}\fi%
-\index{\@@idx @{\importmodule{\mod@id} #3}!{\importmodule{\mod@id} #2}}\fi}}
-\newcommand{\twinalt}[4][]{#2\@twin[#1]{#3}{#4}}
-\newcommand{\twintoo}[3][]{{#2 #3}\@twin[#1]{#2}{#3}} % and use the word compound too
-%</package>
+\addmetakey{omdoc@index}{at}
+\addmetakey[false]{omdoc@index}{loadmodules}[true]
+\newcommand\omdoc@indexi[2][]{\ifindex%
+\metasetkeys{omdoc@index}{#1}%
+\@bsphack\begingroup\@sanitize%
+\protected@write\@indexfile{}{\string\indexentry%
+{\ifx\omdoc@index@at\@empty\else\omdoc@index@at @\fi%
+\ifx\omdoc@index@loadmodules\@true%
+\string\withusedmodules{\@ifundefined{mod@id}\used@modules\mod@id}{#2}%
+\else #2\fi% loadmodules
+}{\thepage}}%
+\endgroup\@esphack\fi}%ifindex
+\newcommand\omdoc@indexii[3][]{\ifindex%
+\metasetkeys{omdoc@index}{#1}%
+\@bsphack\begingroup\@sanitize%
+\protected@write\@indexfile{}{\string\indexentry%
+{\ifx\omdoc@index@at\@empty\else\omdoc@index@at @\fi%
+\ifx\omdoc@index@loadmodules\@true%
+\string\withusedmodules{\@ifundefined{mod@id}\used@modules\mod@id}{#2}!%
+\string\withusedmodules{\@ifundefined{mod@id}\used@modules\mod@id}{#3}%
+\else #2!#3\fi% loadmodules
+}{\thepage}}%
+\endgroup\@esphack\fi}%ifindex
+\newcommand\omdoc@indexiii[4][]{\ifindex%
+\metasetkeys{omdoc@index}{#1}%
+\@bsphack\begingroup\@sanitize%
+\protected@write\@indexfile{}{\string\indexentry%
+{\ifx\omdoc@index@at\@empty\else\omdoc@index@at @\fi%
+\ifx\omdoc@index@loadmodules\@true%
+\string\withusedmodules{\@ifundefined{mod@id}\used@modules\mod@id}{#2}!%
+\string\withusedmodules{\@ifundefined{mod@id}\used@modules\mod@id}{#3}!%
+\string\withusedmodules{\@ifundefined{mod@id}\used@modules\mod@id}{#4}%
+\else #2!#3\fi% loadmodules
+}{\thepage}}%
+\endgroup\@esphack\fi}%ifindex
% \end{macrocode}
+% \end{macro}
+%
+% Now, we make two interface macros that make use of this:
%
-% this puts adjectivized two-compound words into the index in various
-% permutations\ednote{what to do with the optional argument here and below?}
-%
+% \begin{macro}{\indexalt}
% \begin{macrocode}
-%<*package>
-\newcommand{\@atwin}[4][]{\ifindex\def\@test{#1}%%
-\ifx\@test\@empty\def\@@idx{#2}\else\def\@@idx{#1}\fi%
-\@ifundefined{mod@id}%
-{\index{\@@idx @#2!#3!#4}%
-\ifx\@test\@empty\def\@@idx{#3}\else\def\@@idx{#1}\fi
-\index{\@@idx @#3!#2 (#4)}}%
-{\index{\@@idx @{\importmodule{\mod@id} #2}!{\importmodule{\mod@id} #3}!{\importmodule{\mod@id} #4}}
-\ifx\@test\@empty\def\@@idx{#3}\else\def\@@idx{#1}\fi%
-\index{\@@idx @{\importmodule{\mod@id} #3}!{\importmodule{\mod@id} #2} ({\importmodule{\mod@id} #4})}\fi}}
-\newcommand{\atwinalt}[5][]{#2\@atwin[#1]{#3}{#4}{#4}}
-\newcommand{\atwintoo}[4][]{{#2 #3 #4}\@atwin[#1]{#2}{#3}{#4}} % and use it too
-%</package>
-%<*ltxml>
-DefConstructor('\indextoo[]{}',
- "<omdoc:idx>"
- . "<omdoc:idt>#2</omdoc:idt>"
- . "<omdoc:ide ?#1(sort-by='#1')()>"
- . "<omdoc:idp>#2</omdoc:idp>"
- . "</omdoc:ide>"
- ."</omdoc:idx>");
-DefConstructor('\indexalt[]{}{}',
- "<omdoc:idx>"
- . "<omdoc:idt>#2</omdoc:idt>"
- . "<omdoc:ide ?#1(sort-by='#1')()>"
- . "<omdoc:idp>#3</omdoc:idp>"
- . "</omdoc:ide>"
- ."</omdoc:idx>");
-%</ltxml>
+\newcommand\indexalt[3][]{{#2}\omdoc@indexi[#1]{#3}} % word in text and index
% \end{macrocode}
+% \end{macro}
%
+% \begin{macro}{\indextoo}
% \begin{macrocode}
-%<*ltxml>
-DefConstructor('\twintoo[]{}{}',
- "<omdoc:idx>"
- . "<omdoc:idt>#2 #3</omdoc:idt>"
- . "<omdoc:ide ?#1(sort-by='#1')()>"
- . "<omdoc:idp>#2</omdoc:idp>"
- . "<omdoc:idp>#3</omdoc:idp>"
- . "</omdoc:ide>"
- ."</omdoc:idx>");
-DefConstructor('\twinalt[]{}{}{}',
- "<omdoc:idx>"
- . "<omdoc:idt>#2</omdoc:idt>"
- . "<omdoc:ide ?#1(sort-by='#1')()>"
- . "<omdoc:idp>#2</omdoc:idp>"
- . "<omdoc:idp>#3</omdoc:idp>"
- . "</omdoc:ide>"
- ."</omdoc:idx>");
-%</ltxml>
+\newcommand\indextoo[2][]{{#2}\omdoc@indexi[#1]{#2}} % word in text and index
% \end{macrocode}
+% \end{macro}
%
+% \begin{macro}{\@twin}
+% this puts two-compound words into the index in various permutations
% \begin{macrocode}
-%<*ltxml>
-DefConstructor('\atwintoo[]{}{}{}',
- "<omdoc:idx>"
- . "<omdoc:idt>#2 #3</omdoc:idt>"
- . "<omdoc:ide ?#1(sort-by='#1')()>"
- . "<omdoc:idp>#2</omdoc:idp>"
- . "<omdoc:idp>#3</omdoc:idp>"
- . "<omdoc:idp>#4</omdoc:idp>"
- . "</omdoc:ide>"
- ."</omdoc:idx>");
-
-DefConstructor('\atwinalt[]{}{}{}{}',
- "<omdoc:idx>"
- . "<omdoc:idt>#2</omdoc:idt>"
- . "<omdoc:ide ?#1(sort-by='#1')()>"
- . "<omdoc:idp>#2</omdoc:idp>"
- . "<omdoc:idp>#3</omdoc:idp>"
- . "<omdoc:idp>#4</omdoc:idp>"
- . "</omdoc:ide>"
- ."</omdoc:idx>");
-%</ltxml>
+\newcommand\@twin[3][]{\omdoc@indexii[#1]{#2}{#3}\omdoc@indexii[#1]{#3}{#2}}
% \end{macrocode}
-% \end{omgroup}
-%
-% \begin{omgroup}{{\LaTeX} Commands we interpret differently}
+% \end{macro}
%
-% The first think we have to take care of are the paragraphs, we want to generate {\omdoc}
-% that uses the |ltx:p| element for paragraphs inside |CMP|s. For that we have modified
-% the DTD only to allowed |ltx:p| elements in |omdoc:CMP| (in particular no text). Then
-% we instruct the |\par| macro to close a |ltx:p| element if possible. The next
-% |ltx:p| element is then opened automatically, since we make |ltx:p| and |omdoc:CMP|
-% autoclose and autoopen.
+% And again we have two interface macros building on this
%
+% \begin{macro}{\twinalt}
% \begin{macrocode}
-%<*ltxml>
-# needed? DefConstructor('\par',sub { $_[0]->maybeCloseElement('ltx:p'); },alias=>"\\par\n");
-Tag('omdoc:CMP', autoClose=>1, autoOpen=>1);
-Tag('omdoc:omtext', autoClose=>1, autoOpen=>1);
-%</ltxml>#$
+\newcommand\twinalt[4][]{#2\@twin[#1]{#3}{#4}}
% \end{macrocode}
-% the rest of the reinterpretations is quite simple, we either disregard presentational
-% markup or we re-interpret it in terms of {\omdoc}.\ednote{MK: we should probably let
-% LaTeXML deal with these and allow more text in the omdoc+ltml.xsl}
+% \end{macro}
+%
+% \begin{macro}{\twinalt}
% \begin{macrocode}
-%<package>\def\omspace#1{\hspace*{#1}}
-%<*ltxml>
-DefConstructor('\footnote[]{}',
- "<omdoc:note type='foot' ?#1(mark='#1')>#2</omdoc:note>");
-DefConstructor('\footnotemark[]',"");
-DefConstructor('\footnotetext[]{}',
- "<omdoc:note class='foot' ?#1(mark='#1')>#2</omdoc:note>");
-%</ltxml>
+\newcommand\twintoo[3][]{{#2 #3}\@twin[#1]{#2}{#3}} % and use the word compound too
% \end{macrocode}
-% \end{omgroup}
-%
-% \begin{omgroup}[id=sec:impl:ids]{Providing IDs for {\omdoc} Elements}
-%
-% To provide default identifiers, we tag all {\omdoc} elements that allow |xml:id|
-% attributes by executing the |numberIt| procedure below. Furthermore, we use the
-% |locateIt| procedure to give source links.
+% \end{macro}
%
+% \begin{macro}{\@atwin}
+% this puts adjectivized two-compound words into the index in various
+% permutations\ednote{what to do with the optional argument here and below?}
% \begin{macrocode}
-%<*ltxml>
-Tag('omdoc:omtext',afterOpen=>\&numberIt,afterClose=>\&locateIt);
-Tag('omdoc:omgroup',afterOpen=>\&numberIt,afterClose=>\&locateIt);
-Tag('omdoc:CMP',afterOpen=>\&numberIt,afterClose=>\&locateIt);
-Tag('omdoc:idx',afterOpen=>\&numberIt,afterClose=>\&locateIt);
-Tag('omdoc:ide',afterOpen=>\&numberIt,afterClose=>\&locateIt);
-Tag('omdoc:idt',afterOpen=>\&numberIt,afterClose=>\&locateIt);
-Tag('omdoc:note',afterOpen=>\&numberIt,afterClose=>\&locateIt);
-Tag('omdoc:metadata',afterOpen=>\&numberIt,afterClose=>\&locateIt);
-Tag('omdoc:meta',afterOpen=>\&numberIt,afterClose=>\&locateIt);
-Tag('omdoc:resource',afterOpen=>\&numberIt,afterClose=>\&locateIt);
-Tag('ltx:p',afterOpen=>\&numberIt,afterClose=>\&locateIt);
-%</ltxml>
+\newcommand\@atwin[4][]{\omdoc@indexiii[#1]{#2}{#3}{#4}\omdoc@indexii[#1]{#3}{#2 (#4)}}
% \end{macrocode}
-% We also have to number some {\latexml} tags, so that we do not get into trouble with the
-% \omdoc tags inside them.
+% \end{macro}
+%
+% and the two interface macros for this case:
+% \begin{macro}{\@atwinalt}
% \begin{macrocode}
-%<*ltxml>
-Tag('ltx:tabular',afterOpen=>\&numberIt,afterClose=>\&locateIt);
-Tag('ltx:thead',afterOpen=>\&numberIt,afterClose=>\&locateIt);
-Tag('ltx:td',afterOpen=>\&numberIt,afterClose=>\&locateIt);
-Tag('ltx:tr',afterOpen=>\&numberIt,afterClose=>\&locateIt);
-Tag('ltx:caption',afterOpen=>\&numberIt,afterClose=>\&locateIt);
-%</ltxml>
+\newcommand\atwinalt[5][]{#2\@atwin[#1]{#3}{#4}{#4}}
% \end{macrocode}
-% The |numberIt| procedure gets the prefix from first parent with an |xml:id| attribute and then
-% extends it with a label that reflects the number of preceding siblings, provided that
-% there is not already an identifier. Additionally, it estimates an XPointer position in the original document
-% of the command sequence which produced the tag.
-% The |locateIt| subroutine is a sibling of |numberIt| as it is required as an |afterClose| handle for tags
-% produced by {\LaTeX} environments, as opposed to commands. |locateIt| estimates an XPointer end position of
-% the LaTeX environment, allowing to meaningfully locate the entire environment at the source.
+% \end{macro}
+%
+% \begin{macro}{\atwintoo}
% \begin{macrocode}
-%<*ltxml>
-sub numberIt {
- my($document,$node,$whatsit)=@_;
- my(@parents)=$document->findnodes('ancestor::*[@xml:id]',$node);
- my $prefix= (@parents ? $parents[$#parents]->getAttribute('xml:id')."." : '');
- my(@siblings)=$document->findnodes('preceding-sibling::*[@xml:id]',$node);
- my $n = scalar(@siblings)+1;
- my $id = ($node -> getAttribute('xml:id'));
- my $localname = $node->localname;
- $node->setAttribute('xml:id'=>$prefix."$localname$n") unless $id;
- my $about = $node -> getAttribute('about');
- $node->setAttribute('about'=>'#'.$node->getAttribute('xml:id')) unless $about;
- #Also, provide locators:
- my $locator = $whatsit->getProperty('locator');
- #Need to inherit locators if missing:
- $locator = (@parents ? $parents[$#parents]->getAttribute('stex:srcref') : '') unless $locator;
- if ($locator) {
- # There is a BUG with namespace declarations (or am I using the API wrongly??) which
- # does not recognize the stex namespace. Hence, I need to redeclare it...
- my $parent=$document->getNode;
- if(! defined $parent->lookupNamespacePrefix("http://kwarc.info/ns/sTeX"))
- { # namespace not already declared?
- $document->getDocument->documentElement->setNamespace("http://kwarc.info/ns/sTeX","stex",0);
- }
- $node->setAttribute('stex:srcref'=>$locator);
- }return;}
-
-sub locateIt {
- my($document,$node,$whatsit)=@_;
- #Estimate trailer locator:
- my $trailer = $whatsit->getProperty('trailer');
- return unless $trailer; #Nothing we can do if the trailer isn't defined
- $trailer = $trailer->getLocator;
- return unless ($trailer && $trailer!~/^\s*$/); #Useless if broken
- my $locator = $node->getAttribute('stex:srcref');
- if ($locator) {
- $locator =~ /^(.+from=\d+;\d+)/;
- my $from = $1;
- $trailer =~ /(,to=\d+;\d+.+)$/;
- my $to = $1;
- $locator = $from.$to;
- } else {
- $locator = $trailer; #This should never happen
- }
- my $parent = $document->getNode;
- if(! defined $parent->lookupNamespacePrefix("http://kwarc.info/ns/sTeX"))
- { # namespace not already declared?
- $document->getDocument->documentElement->setNamespace("http://kwarc.info/ns/sTeX","stex",0);
- }
- $node->setAttribute('stex:srcref' => $locator);
- return;
-}
-%</ltxml>#$
+\newcommand\atwintoo[4][]{{#2 #3 #4}\@atwin[#1]{#2}{#3}{#4}} % and use it too
% \end{macrocode}
+% \end{macro}
% \end{omgroup}
%
-% \begin{omgroup}{Finale}
-%
-% We need to terminate the file with a success mark for perl.
+% \begin{omgroup}[id=sec:impl:misc]{Miscellaneous}
+% Some shortcuts that use math symbols but are not mathematical at all; in particular,
+% they should not be translated by {\latexml}.
% \begin{macrocode}
-%<ltxml>1;
+\newcommand\hateq{\ensuremath{\hat=}\xspace}
+\newcommand\hatequiv{\ensuremath{\hat\equiv}\xspace}
+\@ifundefined{ergo}%
+{\newcommand\ergo{\ensuremath{\leadsto}\xspace}}%
+{\renewcommand\ergo{\ensuremath{\leadsto}\xspace}}%
+\newcommand{\reflect@squig}[2]{\reflectbox{$\m@th#1\rightsquigarrow$}}%
+\newcommand\ogre{\ensuremath{\mathrel{\mathpalette\reflect@squig\relax}}\xspace}%
+%</package>
% \end{macrocode}
+%
% \end{omgroup}
%\end{omgroup}
% \Finale
\endinput
% \iffalse
-% LocalWords: GPL structuresharing STR omdoc dtx stex CPERL LoadClass url dc
%%% Local Variables:
%%% mode: doctex
%%% TeX-master: t
%%% End:
% \fi
-% LocalWords: RequirePackage RegisterNamespace namespace xsl DocType ltxml dtd
-% LocalWords: ltx DefEnvironment beforeDigest AssignValue inPreamble getGullet
-% LocalWords: afterDigest keyval omgroup DefKeyVal Semiverbatim KeyVal
-% LocalWords: OptionalKeyVals DefParameterType IfBeginFollows skipSpaces CMP
-% LocalWords: ifNext DefMacro needwrapper unlist DefConstructor omtext bgroup
-% LocalWords: useCMPItemizations RefStepItemCounter egroup beginItemize li di
-% LocalWords: beforeDigestEnd dt autoclose ul ol dl env showignores srcref def
-% LocalWords: afterOpen LastSeenCMP autoClose DefCMPEnvironment proto ToString
-% LocalWords: addAttribute nlex nlcex omdocColorMacro args tok MergeFont qw rm
-% LocalWords: TokenizeInternal toString isMath foreach maybeCloseElement id'd
-% LocalWords: autoOpen minipage footnotesize scriptsize numberIt whatsit href
-% LocalWords: getAttribute setAttribute OMDoc RelaxNGSchema noindex xml lec sc
-% LocalWords: Subsubsection useDefaultItemizations refundefinedtrue sblockquote
-% LocalWords: DefCMPConstructor sinlinequote idx idt ide idp emph extrefs sref
-% LocalWords: flushleft flushright DeclareOption PassOptions undef cls iffalse
-% LocalWords: ProcessOptions subparagraph ignoresfalse ignorestrue raisebox tr
-% LocalWords: texorpdfstring latexml texttt fileversion maketitle newpage iff
-% LocalWords: tableofcontents newpage ednote obeylines usepackage indextoo Cwd
-% LocalWords: indextoo twintoo twintoo exfig vspace twinalt ldots ttin emin
-% LocalWords: renmanig myindex atwin atwin packge-local blockquote inlinequote
-% LocalWords: atwintoo atwinalt atwinalt printbibliography impl cwd newif ifx
-% LocalWords: ifindex indextrue indexfalse srefaddidkey smallskip showmeta
-% LocalWords: providecommand stDMemph textbf newenvironment hfil showmeta
-% LocalWords: noindent ignorespaces newcommand nobreak hfill hbox mygraphics
-% LocalWords: includegraphics mycgraphics mybgraphics fbox adjectivized hspace
-% LocalWords: printindex jobname.ind jobname.ind omspace footnotemark thead
-% LocalWords: footnotetext findnodes doctex textsf langle textsf langle funval
-% LocalWords: metakeys funsymbs addmetakey metasetkeys startemph textsl textit
-% LocalWords: compactenum
+% LocalWords: GPL structuresharing STR omdoc dtx stex CPERL LoadClass url dc filedate sl
+% LocalWords: RequirePackage RegisterNamespace namespace xsl DocType ltxml dtd annote mh
+% LocalWords: ltx DefEnvironment beforeDigest AssignValue inPreamble getGullet indexalt
+% LocalWords: afterDigest keyval omgroup DefKeyVal Semiverbatim KeyVal regexp indexalt
+% LocalWords: OptionalKeyVals DefParameterType IfBeginFollows skipSpaces CMP rangle rel
+% LocalWords: ifNext DefMacro needwrapper unlist DefConstructor omtext bgroup rangle baz
+% LocalWords: useCMPItemizations RefStepItemCounter egroup beginItemize li di makeindex
+% LocalWords: beforeDigestEnd dt autoclose ul ol dl env showignores srcref def st@flow
+% LocalWords: afterOpen LastSeenCMP autoClose DefCMPEnvironment proto ToString KeyVals
+% LocalWords: addAttribute nlex nlcex omdocColorMacro args tok MergeFont qw rm XPointer
+% LocalWords: TokenizeInternal toString isMath foreach maybeCloseElement id'd endinput
+% LocalWords: autoOpen minipage footnotesize scriptsize numberIt whatsit href HorIacJuc
+% LocalWords: getAttribute setAttribute OMDoc RelaxNGSchema noindex xml lec sc cscpnrr11
+% LocalWords: Subsubsection useDefaultItemizations refundefinedtrue sblockquote foobar
+% LocalWords: DefCMPConstructor sinlinequote idx idt ide idp emph extrefs sref mhrepos
+% LocalWords: flushleft flushright DeclareOption PassOptions undef cls iffalse mathhub
+% LocalWords: ProcessOptions subparagraph ignoresfalse ignorestrue raisebox tr finalpath
+% LocalWords: texorpdfstring latexml texttt fileversion maketitle newpage iff mh-variant
+% LocalWords: tableofcontents newpage ednote obeylines usepackage indextoo Cwd coreft
+% LocalWords: indextoo twintoo twintoo exfig vspace twinalt ldots ttin emin importmodule
+% LocalWords: renmanig myindex atwin atwin packge-local blockquote inlinequote coreft
+% LocalWords: atwintoo atwinalt atwinalt printbibliography impl cwd newif ifx mhgraphics
+% LocalWords: ifindex indextrue indexfalse srefaddidkey smallskip showmeta importmodules
+% LocalWords: providecommand stDMemph textbf newenvironment hfil showmeta NeedsTeXFormat
+% LocalWords: noindent ignorespaces newcommand nobreak hfill hbox mygraphics mhcgraphics
+% LocalWords: includegraphics mycgraphics mybgraphics fbox adjectivized hspace corefs
+% LocalWords: printindex jobname.ind jobname.ind omspace footnotemark thead mhcgraphics
+% LocalWords: footnotetext findnodes doctex textsf langle textsf langle funval corefs
+% LocalWords: metakeys funsymbs addmetakey metasetkeys startemph textsl textit mdframed
+% LocalWords: compactenum ifundefined localname localname xspace ctancite mhcurrentrepos
+% LocalWords: KohAmb smmssl requiremodules prhase bsphack begingroup thepage mh-variants
+% LocalWords: indexentry endgroup esphack SOURCEFILE baselocal BASELOCAL importmhmodule
+% LocalWords: mh@currentrepos mhbgraphics co-rerefence usemodule coref textsubscript
+% LocalWords: ensuremath textsuperscript sboxquote leftmargin rightmargin mycbgraphics
+% LocalWords: mhcbgraphics textleadsto customization specializing customized behavior
+% LocalWords: flexiformal latexsym itemize loadmodules recognize hateq hatequiv equiv
+% LocalWords: leadsto renewcommand reflect@squig reflectbox m@th rightsquigarrow
+% LocalWords: mathrel mathpalette
+% \endinput
+% Local Variables:
+% mode: doctex
+% TeX-master: t
+% End: