From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

<?xml version="1.0" encoding="UTF-8"?>
<!--
/=====================================================================\
| LaTeXML-para.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="Para.class" combine="choice">
<a:documentation>This module defines the following `logical' block elements.</a:documentation>
<choice>
<ref name="para"/>
<ref name="theorem"/>
<ref name="proof"/>
<ref name="figure"/>
<ref name="table"/>
<ref name="float"/>
<ref name="pagination"/>
</choice>
</define>
<!-- allow pagination here, to avoid unnecessary extra para! -->
<define name="Misc.class" combine="choice">
<a:documentation>Additionally, it defines these miscellaneous elements that can appear
in both inline and block contexts.</a:documentation>
<ref name="inline-para"/>
</define>
<!-- ====================================================================== -->
<define name="para">
<element name="para">
<a:documentation>A Logical paragraph. It has an \attr{id}, but not a \attr{label}.</a:documentation>
<ref name="para_attributes"/>
<ref name="para_model"/>
</element>
</define>
<define name="para_attributes">
<a:documentation>Attributes for \elementref{para}.</a:documentation>
<ref name="Common.attributes"/>
<ref name="ID.attributes"/>
<ref name="Backgroundable.attributes"/>
</define>
<define name="para_model">
<a:documentation>Content model for \elementref{para}.</a:documentation>
<ref name="Block.model"/>
</define>
<!-- ====================================================================== -->
<define name="inline-para">
<element name="inline-para">
<a:documentation>An inline para. Actually, can appear in inline or block mode, but
typesets its contents as para.</a:documentation>
<ref name="inline-para_attributes"/>
<ref name="inline-para_model"/>
</element>
</define>
<define name="inline-para_attributes">
<a:documentation>Attributes for \elementref{inline-para}.</a:documentation>
<ref name="Common.attributes"/>
<ref name="ID.attributes"/>
<ref name="Positionable.attributes"/>
<ref name="Backgroundable.attributes"/>
</define>
<define name="inline-para_model">
<a:documentation>Content model for \elementref{inline-para}.</a:documentation>
<ref name="Para.model"/>
</define>
<!-- ====================================================================== -->
<define name="theorem">
<element name="theorem">
<a:documentation>A theorem or similar object. The \attr{class} attribute can be used to distinguish
different kinds of theorem.</a:documentation>
<ref name="theorem_attributes"/>
<ref name="theorem_model"/>
</element>
</define>
<define name="theorem_attributes">
<a:documentation>Attributes for \elementref{theorem}.</a:documentation>
<ref name="Common.attributes"/>
<ref name="Labelled.attributes"/>
<ref name="Backgroundable.attributes"/>
</define>
<define name="theorem_model">
<a:documentation>Content model for \elementref{theorem}.</a:documentation>
<optional>
<ref name="title"/>
</optional>
<ref name="Para.model"/>
</define>
<!-- ====================================================================== -->
<define name="proof">
<element name="proof">
<a:documentation>A proof or similar object. The \attr{class} attribute can be used to distinguish
different kinds of proof.</a:documentation>
<ref name="proof_attributes"/>
<ref name="proof_model"/>
</element>
</define>
<define name="proof_attributes">
<a:documentation>Attributes for \elementref{proof}.</a:documentation>
<ref name="Common.attributes"/>
<ref name="Labelled.attributes"/>
<ref name="Backgroundable.attributes"/>
<ref name="Data.attributes"/>
</define>
<define name="proof_model">
<a:documentation>Content model for \elementref{proof}.</a:documentation>
<optional>
<ref name="title"/>
</optional>
<ref name="Para.model"/>
</define>
<!-- ====================================================================== -->
<define name="Caption.class">
<a:documentation>These are the additional elements representing figure and
table captions.
NOTE: Could title sensibly be reused here, instead?
Or, should caption be used for theorem and proof?</a:documentation>
<choice>
<ref name="caption"/>
<ref name="toccaption"/>
</choice>
</define>
<!-- ====================================================================== -->
<define name="figure">
<element name="figure">
<a:documentation>A figure, possibly captioned.</a:documentation>
<ref name="figure_attributes"/>
<ref name="figure_model"/>
</element>
</define>
<define name="figure_attributes">
<a:documentation>Attributes for \elementref{figure}.</a:documentation>
<ref name="Common.attributes"/>
<ref name="Labelled.attributes"/>
<ref name="Positionable.attributes"/>
<ref name="Transformable.attributes"/>
<ref name="Backgroundable.attributes"/>
<ref name="Data.attributes"/>
<optional>
<attribute name="placement">
<a:documentation>the vertical floating placement parameter that determines where the object is displayed.</a:documentation>
</attribute>
</optional>
</define>
<define name="figure_model">
<a:documentation>Content model for \elementref{figure}; allow nested figures, etc for "sub" floats.</a:documentation>
<zeroOrMore>
<choice>
<ref name="figure"/>
<ref name="table"/>
<ref name="float"/>
<ref name="Block.model"/>
<ref name="Caption.class"/>
</choice>
</zeroOrMore>
</define>
<!-- ====================================================================== -->
<define name="table">
<element name="table">
<a:documentation>A Table, possibly captioned. This is not necessarily a \elementref{tabular}.</a:documentation>
<ref name="table_attributes"/>
<ref name="table_model"/>
</element>
</define>
<define name="table_attributes">
<a:documentation>Attributes for \elementref{table}.</a:documentation>
<ref name="Common.attributes"/>
<ref name="Labelled.attributes"/>
<ref name="Positionable.attributes"/>
<ref name="Transformable.attributes"/>
<ref name="Backgroundable.attributes"/>
<ref name="Data.attributes"/>
<optional>
<attribute name="placement">
<a:documentation>the vertical floating placement parameter that determines where the object is displayed.</a:documentation>
</attribute>
</optional>
</define>
<define name="table_model">
<a:documentation>Content model for \elementref{table}.</a:documentation>
<zeroOrMore>
<choice>
<ref name="table"/>
<ref name="figure"/>
<ref name="float"/>
<ref name="Block.model"/>
<ref name="Caption.class"/>
</choice>
</zeroOrMore>
</define>
<!-- ====================================================================== -->
<define name="float">
<element name="float">
<a:documentation>A generic float, possibly captioned, something other than a table or figure</a:documentation>
<ref name="float_attributes"/>
<ref name="float_model"/>
</element>
</define>
<define name="float_attributes">
<a:documentation>Attributes for \elementref{float}.</a:documentation>
<ref name="Common.attributes"/>
<ref name="Labelled.attributes"/>
<ref name="Positionable.attributes"/>
<ref name="Transformable.attributes"/>
<ref name="Backgroundable.attributes"/>
<ref name="Data.attributes"/>
<optional>
<attribute name="role">
<a:documentation>The kind of float; could be something like a listing, or some other thing</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="placement">
<a:documentation>the vertical floating placement parameter that determines where the object is displayed.</a:documentation>
</attribute>
</optional>
</define>
<define name="float_model">
<a:documentation>Content model for \elementref{float}.</a:documentation>
<zeroOrMore>
<choice>
<ref name="float"/>
<ref name="figure"/>
<ref name="table"/>
<ref name="Block.model"/>
<ref name="Caption.class"/>
</choice>
</zeroOrMore>
</define>
<!-- ====================================================================== -->
<define name="caption">
<element name="caption">
<a:documentation>A caption for a \elementref{table} or \elementref{figure}.</a:documentation>
<ref name="caption_attributes"/>
<ref name="caption_model"/>
</element>
</define>
<define name="caption_attributes">
<a:documentation>Attributes for \elementref{caption}.</a:documentation>
<ref name="Common.attributes"/>
<ref name="Fontable.attributes"/>
<ref name="Colorable.attributes"/>
<ref name="Backgroundable.attributes"/>
</define>
<define name="caption_model">
<a:documentation>Content model for \elementref{caption},
basically Inline.model with tag included (normally, but not necessarily, tag would come first).</a:documentation>
<zeroOrMore>
<choice>
<ref name="tag"/>
<text/>
<ref name="Inline.class"/>
<ref name="Misc.class"/>
<ref name="Meta.class"/>
</choice>
</zeroOrMore>
</define>
<!-- ====================================================================== -->
<define name="toccaption">
<element name="toccaption">
<a:documentation>A short form of \elementref{table} or \elementref{figure} caption,
used for lists of figures or similar.</a:documentation>
<ref name="toccaption_attributes"/>
<ref name="toccaption_model"/>
</element>
</define>
<define name="toccaption_attributes">
<a:documentation>Attributes for \elementref{toccaption}.</a:documentation>
<ref name="Common.attributes"/>
</define>
<define name="toccaption_model">
<a:documentation>Content model for \elementref{toccaption}.</a:documentation>
<zeroOrMore>
<choice>
<text/>
<ref name="Inline.class"/>
<ref name="Misc.class"/>
<ref name="Meta.class"/>
<ref name="tag"/>
</choice>
</zeroOrMore>
</define>
</grammar>
<!-- ====================================================================== -->