<?xml version="1.0" encoding="UTF-8"?>
<!--
/=====================================================================\
| LaTeXML-math.rnc |
| RelaxNG model for LaTeXML generated documents |
|=====================================================================|
| Part of LaTeXML: |
| Public domain software, produced as part of work done by the |
| United States Government & not subject to copyright in the US. |
|=====================================================================|
| Bruce Miller <bruce.miller@nist.gov> #_# |
\=========================================================ooo==U==ooo=/
-->
<define name="Inline.class" combine="choice">
<a:documentation>The math module defines LaTeXML's internal representation of mathematical
content, including the basic math container \elementref{Math}. This element is
considered inline, as it will be contained within some other block-level
element, eg. \elementref{equation} for display-math.</a:documentation>
<ref name="Math"/>
</define>
<define name="Math.class">
<a:documentation>This class defines the content of the \elementref{Math} element.
Additionally, it could contain MathML or OpenMath, after postprocessing.</a:documentation>
<ref name="XMath"/>
</define>
<define name="XMath.class">
<a:documentation>These elements comprise the internal math representation, being
the content of the \elementref{XMath} element.</a:documentation>
<choice>
<ref name="XMApp"/>
<ref name="XMTok"/>
<ref name="XMRef"/>
<ref name="XMHint"/>
<ref name="XMArg"/>
<ref name="XMWrap"/>
<ref name="XMDual"/>
<ref name="XMText"/>
<ref name="XMArray"/>
<ref name="ERROR"/>
</choice>
</define>
<!-- ====================================================================== -->
<define name="Math">
<element name="Math">
<a:documentation>Outer container for all math. This holds the internal
\elementref{XMath} representation, as well as image data and other representations.</a:documentation>
<ref name="Math_attributes"/>
<ref name="Math_model"/>
</element>
</define>
<define name="Math_attributes">
<a:documentation>Attributes for \elementref{Math}.</a:documentation>
<ref name="Common.attributes"/>
<ref name="Imageable.attributes"/>
<ref name="ID.attributes"/>
<ref name="Backgroundable.attributes"/>
<optional>
<attribute name="mode">
<a:documentation>display or inline mode.</a:documentation>
<choice>
<value>display</value>
<value>inline</value>
</choice>
</attribute>
</optional>
<optional>
<attribute name="tex">
<a:documentation>reconstruction of the \TeX\ that generated the math.</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="content-tex">
<a:documentation>more semantic version of \attr{tex}.</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="text">
<a:documentation>a textified representation of the math.</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="lexemes">
<a:documentation>preserved grammar-near lexemes for export to external apps</a:documentation>
</attribute>
</optional>
</define>
<define name="Math_model">
<a:documentation>Content model for \elementref{Math}.</a:documentation>
<zeroOrMore>
<ref name="Math.class"/>
</zeroOrMore>
</define>
<!-- ====================================================================== -->
<define name="XMath.attributes">
<a:documentation>Common attributes for the various XMath elements.</a:documentation>
<ref name="Positionable.attributes"/>
<optional>
<attribute name="role">
<a:documentation>The role that this item plays in the Grammar.</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="enclose">
<a:documentation>an enclose style to enclose the object
with legitimate values being those of MathML's menclose notations;</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="lpadding">
<a:documentation>left, or leading, (presumably non-semantic) padding space.</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="rpadding">
<a:documentation>right, or trailing, (presumably non-semantic) padding space.</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="name">
<a:documentation>The name of the token, typically the control sequence that created it.</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="meaning">
<a:documentation>A more semantic name corresponding to the intended meaning,
such as the OpenMath name.</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="omcd">
<a:documentation>The OpenMath CD for which \attr{meaning} is a symbol.</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="scriptpos">
<a:documentation>An encoding of the position of sub/superscripts
Before parsing, it takes two forms. On a base token or element,
it is one of (pre|mid|post), indicating where any script can be placed.
On a script token, it is an integer level.
After parsing, the concatenation is moved to the sub|super-script "operator".</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="possibleFunction">
<a:documentation>an annotation placed by the parser when it suspects this token may be used as a function.</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="decl_id">
<a:documentation>an id to where the declaration of this object is given,
preferably the xml:id of an ltx:declare</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="href">
<a:documentation>reference to an arbitrary url.</a:documentation>
</attribute>
</optional>
</define>
<!-- ====================================================================== -->
<define name="XMath">
<element name="XMath">
<a:documentation>Internal representation of mathematics.</a:documentation>
<ref name="XMath_attributes"/>
<ref name="XMath_model"/>
</element>
</define>
<define name="XMath_attributes">
<a:documentation>Attributes for \elementref{XMath}.</a:documentation>
<ref name="Common.attributes"/>
<ref name="ID.attributes"/>
</define>
<define name="XMath_model">
<a:documentation>Content model for \elementref{XMath}.</a:documentation>
<zeroOrMore>
<ref name="XMath.class"/>
</zeroOrMore>
</define>
<!-- ====================================================================== -->
<define name="XMTok">
<element name="XMTok">
<a:documentation>General mathematical token.</a:documentation>
<ref name="XMTok_attributes"/>
<ref name="XMTok_model"/>
</element>
</define>
<define name="XMTok_attributes">
<a:documentation>Attributes for \elementref{XMTok}.</a:documentation>
<ref name="Common.attributes"/>
<ref name="XMath.attributes"/>
<ref name="ID.attributes"/>
<ref name="Fontable.attributes"/>
<ref name="Colorable.attributes"/>
<ref name="Backgroundable.attributes"/>
<optional>
<attribute name="thickness">
<a:documentation>A thickness used for drawing any lines which are part of presenting the token,
such as the fraction line for the fraction operator.</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="stretchy">
<a:documentation>Whether or not the symbol should be stretchy.
This shares MathML's ambiguity about horizontal versus vertical stretchiness.
When not set, defaults to whatever MathML's operator dictionary says.</a:documentation>
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="mathstyle">
<a:documentation>The math style used for displaying the application of this token
when it represents some sort of fraction, variable-sized operator or stack of expressions
(note that this applies to binomials or other stacks of expressions as well as fractions).
Values of \texttt{display} or \texttt{text} correspond to \TeX's
displaystyle or textstyle, while \texttt{inline} indicates the
stack should be arranged horizontally (the layout may depend on the operator).</a:documentation>
<choice>
<value>display</value>
<value>text</value>
<value>script</value>
<value>scriptscript</value>
</choice>
</attribute>
</optional>
</define>
<define name="XMTok_model">
<a:documentation>Content model for \elementref{XMTok}.</a:documentation>
<zeroOrMore>
<text/>
</zeroOrMore>
</define>
<!-- ====================================================================== -->
<define name="XMApp">
<element name="XMApp">
<a:documentation>Generalized application of a function, operator, whatever (the first child)
to arguments (the remaining children).
The attributes are a subset of those for \elementref{XMTok}.</a:documentation>
<ref name="XMApp_attributes"/>
<ref name="XMApp_model"/>
</element>
</define>
<define name="XMApp_attributes">
<a:documentation>Attributes for \elementref{XMApp}.</a:documentation>
<ref name="Common.attributes"/>
<ref name="XMath.attributes"/>
<ref name="ID.attributes"/>
<ref name="Colorable.attributes"/>
<ref name="Backgroundable.attributes"/>
</define>
<define name="XMApp_model">
<a:documentation>Content model for \elementref{XMApp}.</a:documentation>
<zeroOrMore>
<ref name="XMath.class"/>
</zeroOrMore>
</define>
<!-- ====================================================================== -->
<define name="XMDual">
<element name="XMDual">
<a:documentation>Parallel markup of content (first child) and presentation (second child)
of a mathematical object.
Typically, the arguments are shared between the two branches:
they appear in the content branch, with \attr{id}'s,
and \elementref{XMRef} is used in the presentation branch</a:documentation>
<ref name="XMDual_attributes"/>
<ref name="XMDual_model"/>
</element>
</define>
<define name="XMDual_attributes">
<a:documentation>Attributes for \elementref{XMDual}.</a:documentation>
<ref name="Common.attributes"/>
<ref name="XMath.attributes"/>
<ref name="ID.attributes"/>
</define>
<define name="XMDual_model">
<a:documentation>Content model for \elementref{XMDual}.</a:documentation>
<ref name="XMath.class"/>
<ref name="XMath.class"/>
</define>
<!-- ====================================================================== -->
<define name="XMHint">
<element name="XMHint">
<a:documentation>Various layout hints, usually spacing, generally ignored in parsing.
The attributes are a subset of those for \elementref{XMTok}.</a:documentation>
<ref name="XMHint_attributes"/>
<ref name="XMHint_model"/>
</element>
</define>
<define name="XMHint_attributes">
<a:documentation>Attributes for \elementref{XMHint}.</a:documentation>
<ref name="Common.attributes"/>
<ref name="XMath.attributes"/>
<ref name="ID.attributes"/>
</define>
<define name="XMHint_model">
<a:documentation>Content model for \elementref{XMHint}.</a:documentation>
<empty/>
</define>
<!-- ====================================================================== -->
<define name="XMText">
<element name="XMText">
<a:documentation>Text appearing within math.</a:documentation>
<ref name="XMText_attributes"/>
<ref name="XMText_model"/>
</element>
</define>
<define name="XMText_attributes">
<a:documentation>Attributes for \elementref{XMText}.</a:documentation>
<ref name="Common.attributes"/>
<ref name="XMath.attributes"/>
<ref name="Backgroundable.attributes"/>
<ref name="ID.attributes"/>
</define>
<define name="XMText_model">
<a:documentation>Content model for \elementref{XMText}.</a:documentation>
<zeroOrMore>
<choice>
<text/>
<ref name="Inline.class"/>
<ref name="Misc.class"/>
</choice>
</zeroOrMore>
</define>
<!-- ====================================================================== -->
<define name="XMWrap">
<element name="XMWrap">
<a:documentation>Wrapper for a sequence of tokens used to assert the role of the
contents in its parent. This element generally disappears after parsing.
The attributes are a subset of those for \elementref{XMTok}.</a:documentation>
<ref name="XMWrap_attributes"/>
<ref name="XMWrap_model"/>
</element>
</define>
<define name="XMWrap_attributes">
<a:documentation>Attributes for \elementref{XMWrap}.</a:documentation>
<ref name="Common.attributes"/>
<ref name="XMath.attributes"/>
<ref name="Backgroundable.attributes"/>
<ref name="ID.attributes"/>
<optional>
<attribute name="rule">
<a:documentation>The grammatical rule that should apply to the contained sequence</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="style"/>
</optional>
</define>
<define name="XMWrap_model">
<a:documentation>Content model for \elementref{XMWrap}.</a:documentation>
<zeroOrMore>
<ref name="XMath.class"/>
</zeroOrMore>
</define>
<!-- ====================================================================== -->
<define name="XMArg">
<element name="XMArg">
<a:documentation>Wrapper for an argument to a structured macro.
It implies that its content can be parsed independently of its parent,
and thus generally disappears after parsing.</a:documentation>
<ref name="XMArg_attributes"/>
<ref name="XMArg_model"/>
</element>
</define>
<define name="XMArg_attributes">
<a:documentation>Attributes for \elementref{XMArg}.</a:documentation>
<ref name="Common.attributes"/>
<ref name="XMath.attributes"/>
<ref name="ID.attributes"/>
<optional>
<attribute name="rule">
<a:documentation>The grammatical rule that should apply to the contained sequence</a:documentation>
</attribute>
</optional>
</define>
<define name="XMArg_model">
<a:documentation>Content model for \elementref{XMArg}.</a:documentation>
<zeroOrMore>
<ref name="XMath.class"/>
</zeroOrMore>
</define>
<!-- ====================================================================== -->
<define name="XMRef">
<element name="XMRef">
<a:documentation>Structure sharing element typically used in the presentation
branch of an \elementref{XMDual} to refer to the arguments present in the content branch.</a:documentation>
<ref name="XMRef_attributes"/>
<ref name="XMRef_model"/>
</element>
</define>
<define name="XMRef_attributes">
<a:documentation>Attributes for \elementref{XMRef}.</a:documentation>
<ref name="Common.attributes"/>
<ref name="XMath.attributes"/>
<ref name="ID.attributes"/>
<ref name="IDREF.attributes"/>
</define>
<define name="XMRef_model">
<a:documentation>Content model for \elementref{XMRef}.</a:documentation>
<empty/>
</define>
<!-- ====================================================================== -->
<define name="XMArray">
<!-- The attributes are a subset of those for \elementref{XMTok} or of \elementref{tabular}. -->
<element name="XMArray">
<a:documentation>Math Array/Alignment structure.</a:documentation>
<ref name="XMArray_attributes"/>
<ref name="XMArray_model"/>
</element>
</define>
<define name="XMArray_attributes">
<a:documentation>Attributes for \elementref{XMArray}.</a:documentation>
<ref name="Common.attributes"/>
<ref name="XMath.attributes"/>
<ref name="ID.attributes"/>
<optional>
<attribute name="rowsep">
<a:documentation>the spacing between rows</a:documentation>
<ref name="Length.type"/>
</attribute>
</optional>
<optional>
<attribute name="colsep">
<a:documentation>the spacing between columns</a:documentation>
<ref name="Length.type"/>
</attribute>
</optional>
</define>
<define name="XMArray_model">
<a:documentation>Content model for \elementref{XMArray}.</a:documentation>
<zeroOrMore>
<ref name="XMRow"/>
</zeroOrMore>
</define>
<!-- ====================================================================== -->
<define name="XMRow">
<element name="XMRow">
<a:documentation>A row in a math alignment.</a:documentation>
<ref name="XMRow_attributes"/>
<ref name="XMRow_model"/>
</element>
</define>
<define name="XMRow_attributes">
<a:documentation>Attributes for \elementref{XMRow}.</a:documentation>
<ref name="Common.attributes"/>
<ref name="Backgroundable.attributes"/>
<ref name="ID.attributes"/>
</define>
<define name="XMRow_model">
<a:documentation>Content model for \elementref{XMRow}.</a:documentation>
<zeroOrMore>
<ref name="XMCell"/>
</zeroOrMore>
</define>
<!-- ====================================================================== -->
<define name="XMCell">
<element name="XMCell">
<a:documentation>A cell in a row of a math alignment.</a:documentation>
<ref name="XMCell_attributes"/>
<ref name="XMCell_model"/>
</element>
</define>
<define name="XMCell_attributes">
<a:documentation>Attributes for \elementref{XMCell}.</a:documentation>
<ref name="Common.attributes"/>
<ref name="Backgroundable.attributes"/>
<ref name="ID.attributes"/>
<optional>
<attribute name="colspan">
<a:documentation>indicates how many columns this cell spans or covers.</a:documentation>
<data type="nonNegativeInteger"/>
</attribute>
</optional>
<optional>
<attribute name="rowspan">
<a:documentation>indicates how many rows this cell spans or covers.</a:documentation>
<data type="nonNegativeInteger"/>
</attribute>
</optional>
<optional>
<!--
This would have been clearer, but messes up conversion to dtd
attribute align { "left" | "right" | "center" | "justify" | text }?,
-->
<attribute name="align">
<a:documentation> specifies the alignment of the content.</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="width">
<a:documentation>specifies the desired width for the column.</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="border">
<a:documentation>records a sequence of t or tt, r or rr, b or bb and l or ll
for borders or doubled borders on any side of the cell.</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="thead">
<a:documentation>whether this cell corresponds to a table row or column heading or both</a:documentation>
<choice>
<value>column</value>
<value>column row</value>
<value>row</value>
</choice>
</attribute>
</optional>
</define>
<define name="XMCell_model">
<a:documentation>Content model for \elementref{XMCell}.</a:documentation>
<zeroOrMore>
<ref name="XMath.class"/>
</zeroOrMore>
</define>
</grammar>
<!-- ====================================================================== -->