diff options
author | Karl Berry <karl@freefriends.org> | 2016-04-07 20:49:10 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2016-04-07 20:49:10 +0000 |
commit | ddfe3a4eaf95167482e923d4da3de2917a7dbfbb (patch) | |
tree | 0acc1bb60b37392451f5e79e00c33c487c19abcf /Master/texmf-dist/source/latex/stex/omtext/omtext.dtx | |
parent | a04ae5a947a6b06bc717719f6ad63e6de5cb5af6 (diff) |
stex (7apr16)
git-svn-id: svn://tug.org/texlive/trunk@40320 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/stex/omtext/omtext.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/stex/omtext/omtext.dtx | 785 |
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: |