<!-- This is the ISO12083:1994 document type definition for Mathematics    -->

<!-- Copyright: (C) International Organization for Standardization 1994.
Permission to copy in any form is granted for use with conforming SGML
systems and applications as defined in ISO 8879:1986, provided this notice
is included in all copies.                                                 -->

<!-- ===================================================================== -->
<!--            PUBLIC DOCUMENT TYPE DEFINITION SUBSET                 -->
<!-- ===================================================================== -->

<!--
This DTD is included by the Book and Article DTDs of ISO12083:1994.
As it is a separate entity it may also be included by other DTDs.

Since there is no consensus on how to describe the semantics of formulas,
it only describes their presentational or visual structure. Since, however,
there is a strong need for such description (especially within the
print-disabled community), it is recommended that the following
declaration be added where there is a requirement for a consistent,
standardized mechanism to carry semantic meanings for the SGML
elements declared throughout this part of this International Standard:


<!ENTITY % SDAMAP       "SDAMAP   NAME    #IMPLIED"           >

and that the attribute represented by %SDAMAP; be made available for
all elements which may require a semantic association, or, in the simpler
case, be added to all elements in this DTD.                     -->

<!--
DTD Change History (U.S. date notation)

05/29/02	Commented out definitions and uses of SDAFORM, SDARULE, SDAPREF, SDASUFF, SDASUSP as they are not used for 
		NPG
		
-->
<!-- ===================================================================== -->
<!--  Parameter entities describing the possible contents of formulas.     -->
<!-- ===================================================================== -->

<!-- character transformations                            -->
<!ENTITY % p.trans "bold|italic|sansser|typewrit|smallcap|roman">
		   
<!-- mathematical formula elements                               -->
<!ENTITY % m.math "fraction|subform|sup|inf|top|bottom|middle|fence|mark|
   post|box|overline|undrline|radical|array|hspace|vspace|break|markref" >



<!-- ===================================================================== -->
<!-- Accessible Document and other Parameter Entities        
     If this DTD is not imbedded by a ISO12083:1994 Book or Article,
     the comment delimiters should be removed.                             -->
<!-- ===================================================================== -->

<!-- ENTITY % SDAFORM      "sdaform   CDATA    #FIXED"                      -->
<!-- ENTITY % SDARULE      "sdarule   CDATA    #FIXED"                      --> 
<!-- ENTITY % SDAPREF      "sdapref   CDATA    #FIXED"                      -->
<!-- ENTITY % SDASUFF      "sdasuff   CDATA    #FIXED"                      -->
<!-- ENTITY % SDASUSP      "sdasusp   CDATA     #FIXED"                      -->



<!-- ===================================================================== -->
<!-- This entity is for an attribute to indicate which alphabet is 
     used in the element (f, fd). You may change this to 
     a notation attribute, where the notation could describe a 
     keyboard mapping. Please modify the set as necessary.                 
     If this DTD is not imbedded by a ISO12083:1994 Book or Article,
     the comment delimiters should be removed.                             -->
<!-- ===================================================================== -->

<!ENTITY % a.types "(latin|greek|cyrillic|hebrew|kanji) 'latin'"               >


<!-- ===================================================================== -->
<!-- character transformations                                             --> 
<!-- ===================================================================== -->

<!--      ELEMENT              MIN  CONTENT              EXPLANATIONS      -->
<!ELEMENT bold                 (#PCDATA | %p.trans;)*><!-- bold           -->
<!ELEMENT italic               (#PCDATA | %p.trans;)*><!-- italic         -->
<!ELEMENT sansser              (#PCDATA | %p.trans;)*><!-- sans serif     -->
<!ELEMENT typewrit             (#PCDATA | %p.trans;)*><!-- typewriter     -->
<!ELEMENT smallcap             (#PCDATA | %p.trans;)*><!-- small caps     -->
<!ELEMENT roman                (#PCDATA | %p.trans;)*><!-- roman          -->


<!-- ===================================================================== -->
<!-- Fractions                                                             -->
<!-- ===================================================================== -->

<!--      ELEMENT              MIN  CONTENT               EXPLANATIONS     -->
<!ELEMENT fraction             (num, den)><!-- fraction            -->
<!ELEMENT num                  (#PCDATA | %p.trans;|%m.math;)*><!-- numerator     -->
<!ELEMENT den                  (#PCDATA | %p.trans;|%m.math;)*><!-- denominator   -->
<!--      ELEMENT   NAME       VALUE            DEFAULT                    -->
<!ATTLIST fraction  shape      (built|case) #IMPLIED
		    align      (left|center|right)   
						"center"
		    style      (single|double|triple|dash|dot|bold|blank|none)
						"single"                       >



<!-- ===================================================================== -->
<!-- Superiors, inferiors, accents, over and under                         -->
<!-- ===================================================================== -->

<!--      ELEMENT              MIN  CONTENT               EXPLANATIONS     -->
<!ELEMENT sup                  (#PCDATA | %p.trans;|%m.math;)*><!-- superior      -->
<!ELEMENT inf                  (#PCDATA | %p.trans;|%m.math;)*><!-- inferior      -->
<!--      ELEMENT   NAME       VALUE            DEFAULT                    -->
<!ATTLIST sup       location   (pre|post)       "post"
		    arrange    (compact|stagger)
						"compact"                      >
<!ATTLIST inf       location   (pre|post) "post"
		    arrange    (compact|stagger) "compact"                     >


<!-- ===================================================================== -->
<!-- Embellishments                                                        -->
<!-- ===================================================================== -->

<!--      ELEMENT              MIN  CONTENT               EXPLANATIONS     -->
<!ELEMENT top                  (#PCDATA | %p.trans;|%m.math;)*><!-- top embellishment   -->
<!ELEMENT middle               (#PCDATA | %p.trans;|%m.math;)*><!-- middle, or "through" -->  
<!ELEMENT bottom               (#PCDATA | %p.trans;|%m.math;)*><!-- bottom embellishment -->                                                                                                      
<!--      ELEMENT   NAME       VALUE            DEFAULT                    -->
<!ATTLIST top       align      (left|center|right) 
						"center"
		    sizeid     ID               #IMPLIED><!-- to pass on the height   -->
<!ATTLIST middle    align      (left|center|right) 
						"center"
		    sizeid     ID               #IMPLIED><!-- to pass on the height   -->
<!ATTLIST bottom    align      (left|center|right) 
						"center"
		    sizeid    ID               #IMPLIED><!-- to pass on the height   -->


<!-- The subform element is defined later                                  -->



<!-- ===================================================================== -->
<!-- Fences, boxes, overlines and underlines                               -->
<!-- ===================================================================== -->

<!--      ELEMENT              MIN  CONTENT               EXPLANATIONS     -->
<!ELEMENT mark                 EMPTY                                    >
<!ELEMENT fence                (#PCDATA | %p.trans;|%m.math;)*><!-- fence         -->
<!ELEMENT post                 EMPTY            ><!--post               -->
<!ELEMENT box                  (#PCDATA | %p.trans;|%m.math;)*><!-- box           -->
<!ELEMENT overline             (#PCDATA | %p.trans;|%m.math;)*><!-- overline      -->
<!ELEMENT undrline             (#PCDATA | %p.trans;|%m.math;)*><!-- underline     -->
<!--      ELEMENT   NAME       VALUE            DEFAULT                    -->
<!ATTLIST mark      id         ID               #REQUIRED                    >
<!-- lpost - left post -->
<!-- rpost - right post -->
<!-- sixeid - to pass on the height -->
<!-- sizeref - to pick up a height     -->
<!ATTLIST fence     lpost      CDATA            "|"
		    rpost      CDATA            "|"
		    style      (single|double|triple|dash|dot|bold|blank|none) 
						"single"
		    sizeid     ID               #IMPLIED 
						
		    sizeref    IDREF            #IMPLIED 
						>
<!-- sixeid - to pass on the height -->
<!-- sizeref - to pick up a height     -->
<!ATTLIST post      post       CDATA            "|"
		    style      (single|double|triple|dash|dot|bold|blank|none) 
						"single"
		    sizeid     ID               #IMPLIED 
						
		    sizeref    IDREF            #IMPLIED 
						>
<!ATTLIST box       style      (single|double|triple|dash|dot|bold|blank|none) 
						"single"                       >
<!-- type - embellishment type -->
<!ATTLIST overline  type       CDATA            "-" 
		    style      (single|double|triple|dash|dot|bold|blank|none) 
						"single"
		    start      IDREF            #IMPLIED
		    end        IDREF            #IMPLIED                     >

<!-- type - embellishment type -->
<!ATTLIST undrline  type       CDATA            "_" 							
		    style      (single|double|triple|dash|dot|bold|blank|none) 
						"single"
		    start      IDREF            #IMPLIED
		    end        IDREF            #IMPLIED                     >


<!-- ===================================================================== -->
<!-- Labelled arrows                                                       -->
<!-- ===================================================================== -->

<!--      ELEMENT              MIN  CONTENT               EXPLANATIONS     -->
<!ELEMENT subform              (#PCDATA | %p.trans;|%m.math;)*><!-- base element  -->
<!--      ELEMENT   NAME       VALUE            DEFAULT                    -->
<!-- sizeid - to pass on a width, or a height -->
<!-- sizeref - to pick up a width      -->
<!ATTLIST subform   sizeid     ID               #IMPLIED
						
						
		    sizeref    IDREF            #IMPLIED
						>


<!-- ===================================================================== -->
<!-- Roots                                                                 -->
<!-- ===================================================================== -->

<!--      ELEMENT              MIN  CONTENT               EXPLANATIONS     -->
<!ELEMENT radical              (radix?, radicand)><!-- root or radical  -->
<!ELEMENT radix                (#PCDATA | %p.trans;|%m.math;)*><!-- radix         -->
<!ELEMENT radicand             (#PCDATA | %p.trans;|%m.math;)*><!-- radicand      -->


<!-- ===================================================================== -->
<!-- Arrays                                                                -->
<!-- ===================================================================== -->

<!--      ELEMENT              MIN  CONTENT               EXPLANATIONS     -->
<!ELEMENT array                (arrayrow+|arraycol+)><!-- array         -->
<!ELEMENT arrayrow             (arraycel+)><!-- array row          -->
<!ELEMENT arraycol             (arraycel+)><!-- array column       -->
<!ELEMENT arraycel             (#PCDATA | %p.trans;|%m.math;)*><!-- array cell    -->

<!--      ELEMENT   NAME       VALUE            DEFAULT                    -->
<!-- rowalign - row alignment  -->
<!-- colalign - column alignment -->
<!-- rowsep - row separators -->
<!-- colsep - column separators -->
<!ATTLIST array     rowalign   NMTOKENS         #IMPLIED 
		    colalign   NMTOKENS         #IMPLIED 
		    rowsep     NMTOKENS         #IMPLIED 
		    colsep     NMTOKENS         #IMPLIED >


<!-- ===================================================================== -->
<!-- Spacing                                                               -->
<!-- ===================================================================== -->

<!--      ELEMENT              MIN  CONTENT               EXPLANATIONS     -->
<!ELEMENT hspace              EMPTY><!-- horizontal spacing  -->
<!ELEMENT vspace              EMPTY><!-- vertical   spacing  -->
<!ELEMENT break               EMPTY><!-- turn line, break    -->
<!ELEMENT markref             EMPTY><!-- hmark reference     -->

<!--      ELEMENT   NAME       VALUE            DEFAULT                    -->
<!ATTLIST hspace    space      CDATA            "1 mm"><!-- units as required   -->
<!ATTLIST vspace    space      CDATA            "1 mm"><!-- units as required   -->
<!ATTLIST markref   refid      IDREF            #REQUIRED
		    direct     (hor|ver)        "hor"><!-- horizontal or vertical -->


<!-- ===================================================================== -->
<!-- the formula elements                                                  -->
<!-- ===================================================================== -->

<!--      ELEMENT              MIN  CONTENT               EXPLANATIONS     -->
<!ELEMENT f              (#PCDATA | %p.trans;|%m.math;|mathimg)*><!-- in-line formula -->
<!ELEMENT fd             (#PCDATA | %p.trans;|%m.math;|mathimg)*><!-- display formula -->
<!ELEMENT dformgrp       (f|fd)+><!-- display-formula group -->
						  
<!-- MATHIMG added to parallel TBLIMG in CALSTBL.DTD --> 

<!-- PD 2009/07/27 Modified mathimg to deprecate <!ENTITY to <entity>: changed entname ENTITY #REQUIRED to entname CDATA #IMPLIED and added entref IDREF #IMPLIED -->
<!ELEMENT mathimg         EMPTY>
<!ATTLIST mathimg  entname  CDATA  #IMPLIED
                   entref IDREF #IMPLIED
                   show  (yes | no)  "yes"
                   file CDATA #IMPLIED>

<!--      ELEMENT   NAME       VALUE            DEFAULT                    -->
<!ATTLIST f   id         ID               #IMPLIED
		    alphabet   %a.types;>
		    <!-- %SDAPREF;   "Inlineformula"  
		    %SDASUSP;       "suspend"        --> 
<!ATTLIST fd  id         ID               #IMPLIED
		    num        CDATA            #IMPLIED
		    align      (left|center|right) 
						"center"
		    alphabet   %a.types;>
		    <!-- 
		    %SDAPREF;   "Displayformula"  
		    %SDASUSP;       "suspend"        -->
<!ATTLIST dformgrp  id         ID               #IMPLIED
		    num        CDATA            #IMPLIED
		    align      (left|center|right) 
						"center">
						<!-- 
		    %SDAPREF;   "Displayformulagroup"    -->
