<!-- $Id: texinfo.dtd 7485 2016-10-31 10:36:52Z gavin $
  Document Type Definition for Texinfo XML output (the '-'-xml option).

  Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
  2011, 2012, 2013, 2014, 2015, 2016 Free Software Foundation, Inc.

  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
  notice and this notice are preserved.

  As soon as this file is nontrivially modified, update
  TEXINFO_DTD_VERSION in configure.ac (if not already done).
  See comments there for explanation.
  
  Email bug-texinfo@gnu.org with any discussion.
  (Original author: Philippe Martin.)
-->

<!-- * ENTITIES * -->

<!-- Meta-information -->
<!-- copying | titlepage could be there too -->
<!ENTITY % metainformation "setfilename | settitle | dircategory | direntry
                            | hyphenation
                            | documentdescription 
                            | shorttitlepage">
<!ENTITY % variable.cmds "set | clear">

<!-- Unique options -->
<!ENTITY % unique.option.cmds "novalidate | setcontentsaftertitlepage 
   | setshortcontentsaftertitlepage | documentencoding 
   | everyheadingmarks | everyfootingmarks | evenheadingmarks | oddheadingmarks
   | evenfootingmarks | oddfootingmarks | fonttextsize | pagesizes
   | setchapternewpage | footnotestyle | finalout

   | allowcodebreaks | exampleindent | afourpaper 
   | afivepaper | afourlatex | afourwide | headings
   | everyheading | everyfooting | evenheading | evenfooting | oddheading
   | oddfooting | smallbook | cropmarks">

<!-- Global options in the main text -->
<!ENTITY % global.option.cmds "synindex | syncodeindex
  | defindex | defcodeindex | definfoenclose | alias">

<!-- Options -->
<!ENTITY % multiple.option.cmds "frenchspacing | documentlanguage 
    | %variable.cmds; | kbdinputstyle | paragraphindent 
    | firstparagraphindent | urefbreakstyle | xrefautomaticsectiontitle
    | deftypefnnewline
    | codequoteundirected | codequotebacktick | raisesections
    | lowersections | clickstyle">

<!ENTITY % option.cmds "%unique.option.cmds; | %global.option.cmds; 
               | %multiple.option.cmds;">

<!-- ToC -->
<!ENTITY % toc "contents | shortcontents | summarycontents">

<!-- Title page -->
<!ENTITY % titlepage.cmds "author | title | subtitle">

<!-- index entry commands -->
<!ENTITY % indexentry.cmds "cindex | findex | kindex | pindex | tindex
  | vindex | indexcommand">

<!-- API definition commands -->
<!ENTITY % def.cmds "deffn | defvr | deftypefn | deftypeop | deftypevr
      | defcv | deftypecv | defop | deftp | defun | defmac 
      | defspec | defvar | defopt | deftypefun | deftypevar 
      | defivar | deftypeivar | defmethod | deftypemethod">

<!ENTITY % raw.cmds "html | tex | docbook | xml | macro | rmacro | ignore">

<!-- Commands that appear everywhere, both with block and in paragraphs -->
<!-- include is in general absent, since it is replaced, but it is
     present if the file was not found -->
<!ENTITY % ubiquitous.cmds "sp | anchor | indent | noindent | %raw.cmds; 
                 | %option.cmds; | errormsg | unmacro | include
                 | %indexentry.cmds; | refill | quote-arg | allow-recursion">

<!-- Block -->
<!ENTITY % block "menu | para | pre | quotation | smallquotation
                  | example | smallexample | lisp | smalllisp
                  | cartouche | float | format | smallformat
                  | display | smalldisplay | copying | titlepage
                  | raggedright | flushleft | flushright
                  | itemize | enumerate | titlefont | center | group
                  | table | vtable | ftable | multitable | definition 
                  | image
                  | %def.cmds; 
                  | %ubiquitous.cmds;
                  | verbatim | verbatiminclude | insertcopying | page | need
                  | vskip
                  | listoffloats">

<!-- API definition line -->
<!ENTITY % definition.args "defcategory | deffunction | defvariable | defparam
                          | defdelimiter | deftype | defparamtype | defdatatype
                          | defclass | defclassvar | defoperation">

<!-- Headings -->
<!ENTITY % heading.cmds "majorheading | chapheading | heading | subheading
                     | subsubheading">

<!-- Language codes -->
<!ENTITY % languagecodes "aa|ab|af|am|ar|as|ay|az|ba|be|bg|bh|bi|bn|bo|br|ca|co|cs|cy|da|de|dz|el|en|eo|es|et|eu|fa|fi|fj|fo|fr|fy|ga|gd|gl|gn|gu|ha|he|hi|hr|hu|hy|ia|id|ie|ik|is|it|iu|ja|jw|ka|kk|kl|km|kn|ko|ks|ku|ky|la|ln|lo|lt|lv|mg|mi|mk|ml|mn|mo|mr|ms|mt|my|na|ne|nl|no|oc|om|or|pa|pl|ps|pt|qu|rm|rn|ro|ru|rw|sa|sd|sg|sh|si|sk|sl|sm|sn|so|sq|sr|ss|st|su|sv|sw|ta|te|tg|th|ti|tk|tl|tn|to|tr|ts|tt|tw|ug|uk|ur|uz|vi|vo|wo|xh|yi|yo|za|zh|zu">

<!-- Sectioning -->
<!ENTITY % section.level1 "top | part | chapter | unnumbered | centerchap | appendix">

<!ENTITY % section.level2 "section | unnumberedsec | appendixsec">

<!ENTITY % section.level3 "subsection | unnumberedsubsec | appendixsubsec">

<!ENTITY % section.level4 "subsubsection | unnumberedsubsubsec 
                           | appendixsubsubsec">

<!ENTITY % section.all "%section.level1; | %section.level2; | %section.level3;
                        | %section.level4;">


<!-- toplevel content, not in copying nor footnote -->
<!ENTITY % main.content "%block; | %toc; | node | %heading.cmds; 
                         | printindex">

<!ENTITY % section.level0.content "(%main.content;
                                   | %section.level1;
                                   | %section.level2;
                                   | %section.level3;
                                   | %section.level4;)*">


<!ENTITY % section.level1.content "(%main.content;
                                   | %section.level2;
                                   | %section.level3;
                                   | %section.level4;)*">

<!ENTITY % section.level2.content "(%main.content;
                                   | %section.level3;
                                   | %section.level4;)*">

<!ENTITY % section.level3.content "(%main.content;
                                   | %section.level4;)*">

<!ENTITY % section.level4.content "(%main.content;)*">

<!-- Inline -->
<!ENTITY % Inline.emphasize "strong | emph">
<!ENTITY % Inline.fonts "b | i | r | sansserif | slanted | t
                         | sc">
<!ENTITY % Inline.footnote "footnote">
<!ENTITY % Inline.markup "code | command | env | file | option | samp | verb
                          | dfn | cite | key | kbd | var | acronym | abbr
                          | indicateurl | w | asis | sub | sup "> 
<!ENTITY % Inline.math "math | dmn">
<!ENTITY % Inline.reference "xref | ref | pxref | inforef | email | uref | url">
<!ENTITY % Inline.misc "click | clicksequence | logo | punct | spacecmd | today
                        | linebreak | accent | dotless | ctrl | inlineraw 
                        | inlinefmt | inlinefmtifelse | inlineifclear 
                        | inlineifset | infoenclose | noeos | formfeed ">

<!-- on lines -->
<!ENTITY % Inline.linetext "%Inline.emphasize; | %Inline.misc; | %Inline.fonts;
          | %Inline.markup; | %Inline.math; | %Inline.reference;
          | %Inline.footnote;" >
<!ENTITY % Inline.line "%Inline.linetext; | image">
<!ENTITY % Inline.fullline "%Inline.line; | titlefont | anchor">

<!-- in paragraphs -->
<!ENTITY % Inline.phrase
           "%Inline.line; | %ubiquitous.cmds;">

<!-- in raw (everything except sectioning commands) -->
<!ENTITY % Raw.content "#PCDATA | %titlepage.cmds; | %block; | %heading.cmds; 
           | %Inline.linetext; | exdent | %toc; | printindex 
           | %metainformation;">

<!-- arguments/attribute values. Many are missing -->
<!ENTITY % onoff "on|off">
<!ENTITY % spacetype "spc|tab|nl">
<!ENTITY % topbottom "top|bottom">
<!ENTITY % zeroone "0|1">

<!-- ubiquitous attribute -->
<!ENTITY % spacesattr
  "spaces CDATA #IMPLIED">
<!ENTITY % lineattr
  "line CDATA #IMPLIED">
<!ENTITY % bracketedattr
  "bracketed (%onoff;) #IMPLIED">
<!-- block commands that have spaces also have endspaces -->
<!-- this is also used for commands without arguments 
     when they have a @comment on their line -->
<!ENTITY % spacesblockattr 
          "%spacesattr; 
           endspaces CDATA #IMPLIED">

<!-- ELEMENTS -->

<!-- TOP Level Element -->
<!ELEMENT texinfo (filename?, preamble?, (%metainformation;
                    | %section.all; | %main.content;)*, bye?)>
<!ATTLIST texinfo xml:lang (%languagecodes;) 'en'>

<!-- meta-information -->
<!ELEMENT filename EMPTY>
<!ATTLIST filename
          file   CDATA #IMPLIED>
<!ELEMENT setfilename (#PCDATA  | %Inline.line;)*>
<!ATTLIST setfilename
          %spacesattr;
          file   CDATA #IMPLIED>
<!ELEMENT settitle        (#PCDATA | %Inline.line;)*>
<!ATTLIST settitle
          %spacesattr;>
<!ELEMENT shorttitlepage  (#PCDATA | %Inline.line;)*>
<!ATTLIST shorttitlepage
          %spacesattr;>
<!ELEMENT dircategory     (#PCDATA | %Inline.line;)*>
<!ATTLIST dircategory
          %spacesattr;>

<!ELEMENT set    (#PCDATA)>
<!ATTLIST set
          %lineattr;
          name CDATA #REQUIRED>
<!ELEMENT clear  EMPTY>
<!ATTLIST clear
          %lineattr;
          name CDATA #REQUIRED>
<!ELEMENT unmacro  EMPTY>
<!ATTLIST unmacro
          %lineattr;
          name CDATA #REQUIRED>
<!ELEMENT definfoenclose EMPTY>
<!ATTLIST definfoenclose 
          %lineattr;
          command  NMTOKEN #REQUIRED
          open     CDATA   #IMPLIED
          close    CDATA   #IMPLIED>
<!ELEMENT alias          EMPTY>
<!ATTLIST alias
          %lineattr;
          new       NMTOKEN #REQUIRED
          existing  NMTOKEN #REQUIRED>
<!ELEMENT clickstyle  (#PCDATA)>
<!ATTLIST clickstyle
          %lineattr;
          command  NMTOKEN #REQUIRED>

<!-- preamble -->
<!ELEMENT preamble (#PCDATA)>

<!-- ToC -->
<!ELEMENT contents      EMPTY>
<!ATTLIST contents
          %lineattr;>
<!ELEMENT shortcontents EMPTY>
<!ATTLIST shortcontents
          %lineattr;>
<!ELEMENT summarycontents EMPTY>
<!ATTLIST summarycontents
          %lineattr;>

<!-- Global unique options -->
<!ELEMENT novalidate EMPTY>
<!ATTLIST novalidate
          %lineattr;>
<!ELEMENT setcontentsaftertitlepage EMPTY>
<!ATTLIST setcontentsaftertitlepage
          %lineattr;>
<!ELEMENT setshortcontentsaftertitlepage EMPTY>
<!ATTLIST setshortcontentsaftertitlepage
          %lineattr;>
<!ELEMENT documentencoding (#PCDATA)>
<!ATTLIST documentencoding
          %spacesattr;
          encoding CDATA #REQUIRED>
<!ELEMENT everyheadingmarks EMPTY>
<!ATTLIST everyheadingmarks
          %lineattr;
          value (%topbottom;) #REQUIRED>
<!ELEMENT everyfootingmarks EMPTY>
<!ATTLIST everyfootingmarks
          %lineattr;
          value (%topbottom;) #REQUIRED>
<!ELEMENT evenheadingmarks EMPTY>
<!ATTLIST evenheadingmarks
          %lineattr;
          value (%topbottom;) #REQUIRED>
<!ELEMENT oddheadingmarks EMPTY>
<!ATTLIST oddheadingmarks
          %lineattr;
          value (%topbottom;) #REQUIRED>
<!ELEMENT evenfootingmarks EMPTY>
<!ATTLIST evenfootingmarks
          %lineattr;
          value (%topbottom;) #REQUIRED>
<!ELEMENT oddfootingmarks EMPTY>
<!ATTLIST oddfootingmarks
          %lineattr;
          value (%topbottom;) #REQUIRED>
<!-- "10|11" -->
<!ELEMENT fonttextsize  EMPTY>
<!ATTLIST fonttextsize
          %lineattr;
          value CDATA #REQUIRED>
<!ELEMENT pagesizes (#PCDATA)>
<!ATTLIST pagesizes
          %spacesattr;>
<!ELEMENT setchapternewpage  EMPTY>
<!-- "off|on|odd" -->
<!ATTLIST setchapternewpage
          %lineattr;
          value CDATA #REQUIRED>
<!ELEMENT footnotestyle      EMPTY>
<!-- "end|separate" -->
<!ATTLIST footnotestyle
          %lineattr;
          value CDATA #REQUIRED>
<!ELEMENT allowcodebreaks    EMPTY>
<!-- "false|true" -->
<!ATTLIST allowcodebreaks
          %lineattr;
          value CDATA #REQUIRED>
<!ELEMENT exampleindent      EMPTY>
<!ATTLIST exampleindent
          %lineattr;
          value CDATA #REQUIRED>
<!ELEMENT afourpaper      EMPTY>
<!ATTLIST afourpaper
          %lineattr;>
<!ELEMENT afivepaper      EMPTY>
<!ATTLIST afivepaper
          %lineattr;>
<!ELEMENT afourlatex      EMPTY>
<!ATTLIST afourlatex
          %lineattr;>
<!ELEMENT afourwide       EMPTY>
<!ATTLIST afourwide
          %lineattr;>
<!ELEMENT finalout        EMPTY>
<!ATTLIST finalout
          %lineattr;>
<!ELEMENT headings        EMPTY>
<!-- "off|on|single|double|singleafter|doubleafter" -->
<!ATTLIST headings
          %lineattr;
          value CDATA #REQUIRED>
<!ELEMENT everyheading (#PCDATA)>
<!ELEMENT everyfooting (#PCDATA)>
<!ELEMENT evenheading (#PCDATA)>
<!ELEMENT evenfooting (#PCDATA)>
<!ELEMENT oddheading (#PCDATA)>
<!ELEMENT oddfooting (#PCDATA)>
<!ELEMENT vskip (#PCDATA)>
<!ELEMENT smallbook       EMPTY>
<!ATTLIST smallbook
          %lineattr;>
<!ELEMENT cropmarks       EMPTY>
<!ATTLIST cropmarks
          %lineattr;>

<!-- Global options -->
<!ELEMENT documentlanguage (#PCDATA)>
<!ATTLIST documentlanguage 
          %spacesattr;
          xml:lang (%languagecodes;) 'en'>
<!ELEMENT frenchspacing (#PCDATA)> <!-- must be on or off -->
<!ATTLIST frenchspacing 
          %lineattr;
          value (%onoff;) 'off'>
<!ELEMENT kbdinputstyle   EMPTY>
<!-- "code|example|distinct" -->
<!ATTLIST kbdinputstyle
          %lineattr;
          value CDATA #REQUIRED>
<!ELEMENT paragraphindent EMPTY>
<!ATTLIST paragraphindent
          %lineattr;
          value CDATA #REQUIRED>
<!ELEMENT firstparagraphindent EMPTY>
<!ATTLIST firstparagraphindent
          %lineattr;
          value CDATA #REQUIRED>
<!ELEMENT urefbreakstyle  EMPTY>
<!-- "after|before|none" -->
<!ATTLIST urefbreakstyle
          %lineattr;
          value CDATA #REQUIRED>
<!ELEMENT xrefautomaticsectiontitle EMPTY>
<!ATTLIST xrefautomaticsectiontitle
          %lineattr;
          value (%onoff;) #REQUIRED>
<!ELEMENT deftypefnnewline EMPTY>
<!ATTLIST deftypefnnewline
          %lineattr;
          value (%onoff;) #REQUIRED>
<!ELEMENT codequoteundirected EMPTY>
<!ATTLIST codequoteundirected
          %lineattr;
          value (%onoff;) #REQUIRED>
<!ELEMENT codequotebacktick EMPTY>
<!ATTLIST codequotebacktick
          %lineattr;
          value (%onoff;) #REQUIRED>
<!ELEMENT raisesections   EMPTY>
<!ATTLIST raisesections
          %lineattr;>
<!ELEMENT lowersections   EMPTY>
<!ATTLIST lowersections
          %lineattr;>

<!-- Titlepage and copying -->
<!ELEMENT copying    (%block; | %heading.cmds;)*>
<!ATTLIST copying
          %spacesblockattr;>
<!ELEMENT insertcopying EMPTY>

<!ELEMENT titlepage  (%titlepage.cmds; | %block; | %heading.cmds;)*>
<!ATTLIST titlepage
          %spacesblockattr;>
<!ELEMENT author     (#PCDATA | %Inline.line;)*>
<!ATTLIST author
          %spacesattr;>
<!ELEMENT title      (#PCDATA | %Inline.line;)*>
<!ATTLIST title
          %spacesattr;>
<!ELEMENT subtitle   (#PCDATA | %Inline.line;)*>
<!ATTLIST subtitle
          %spacesattr;>

<!-- Formatting -->
<!ELEMENT sp EMPTY>
<!ATTLIST sp
          %lineattr;
          value CDATA #IMPLIED>
<!ELEMENT page EMPTY>
<!ATTLIST page
          %lineattr;>
<!ELEMENT need EMPTY>
<!ATTLIST need
          %lineattr;
          value CDATA #REQUIRED>
<!ELEMENT indent   EMPTY>
<!ELEMENT noindent EMPTY>

<!-- emacs-page
<!ELEMENT node (nodename, nodenext?, nodeprev?, nodeup?,
                (%section.all; | %main.content;)*) >
     Nodes -->
<!ELEMENT node (nodename, nodenext?, nodeprev?, nodeup?)>
<!ATTLIST node
          %spacesattr;
          name CDATA #IMPLIED>

<!ELEMENT nodename (#PCDATA | %Inline.line;)*>
<!ATTLIST nodename
          trailingspaces CDATA #IMPLIED>
<!ELEMENT nodenext (#PCDATA | %Inline.line;)*>
<!ATTLIST nodenext
          %spacesattr;
          trailingspaces CDATA #IMPLIED
          automatic (%onoff;) 'off'>
<!ELEMENT nodeprev (#PCDATA | %Inline.line;)*>
<!ATTLIST nodeprev
          %spacesattr;
          trailingspaces CDATA #IMPLIED
          automatic (%onoff;) 'off'>
<!ELEMENT nodeup   (#PCDATA | %Inline.line;)*>
<!ATTLIST nodeup
          %spacesattr;
          trailingspaces CDATA #IMPLIED
          automatic (%onoff;) 'off'>

<!ENTITY % sectionsattr
  "%spacesattr;
   originalcommand CDATA #IMPLIED">
<!-- Sectioning -->
<!ELEMENT top           (sectiontitle?, (%section.level0.content;))>
<!ATTLIST top
          %sectionsattr;>
<!ELEMENT part          (sectiontitle?, (%section.level0.content;))>
<!ATTLIST part
          %sectionsattr;>

<!ELEMENT chapter       (sectiontitle?, (%section.level1.content;))>
<!ATTLIST chapter
          %sectionsattr;>
<!ELEMENT section       (sectiontitle?, (%section.level2.content;))>
<!ATTLIST section
          %sectionsattr;>
<!ELEMENT subsection    (sectiontitle?, (%section.level3.content;))>
<!ATTLIST subsection
          %sectionsattr;>
<!ELEMENT subsubsection (sectiontitle?, (%section.level4.content;))>
<!ATTLIST subsubsection
          %sectionsattr;>

<!ELEMENT unnumbered          (sectiontitle?, (%section.level1.content;))>
<!ATTLIST unnumbered
          %sectionsattr;>
<!ELEMENT unnumberedsec       (sectiontitle?, (%section.level2.content;))>
<!ATTLIST unnumberedsec
          %sectionsattr;>
<!ELEMENT unnumberedsubsec    (sectiontitle?, (%section.level3.content;))>
<!ATTLIST unnumberedsubsec
          %sectionsattr;>
<!ELEMENT unnumberedsubsubsec (sectiontitle?, (%section.level4.content;))>
<!ATTLIST unnumberedsubsubsec
          %sectionsattr;>
<!ELEMENT centerchap          (sectiontitle?, (%section.level1.content;))>
<!ATTLIST centerchap
          %sectionsattr;>

<!ELEMENT appendix          (sectiontitle?, (%section.level1.content;))>
<!ATTLIST appendix
          %sectionsattr;>
<!ELEMENT appendixsec       (sectiontitle?, (%section.level2.content;))>
<!ATTLIST appendixsec
          %sectionsattr;>
<!ELEMENT appendixsubsec    (sectiontitle?, (%section.level3.content;))>
<!ATTLIST appendixsubsec
          %sectionsattr;>
<!ELEMENT appendixsubsubsec (sectiontitle?, (%section.level4.content;))>
<!ATTLIST appendixsubsubsec
          %sectionsattr;>

<!-- Headings and titles -->
<!ELEMENT majorheading  (#PCDATA | %Inline.line;)*>
<!ATTLIST majorheading
          %spacesattr;>
<!ELEMENT chapheading   (#PCDATA | %Inline.line;)*>
<!ATTLIST chapheading
          %spacesattr;>
<!ELEMENT heading       (#PCDATA | %Inline.line;)*>
<!ATTLIST heading
          %spacesattr;>
<!ELEMENT subheading    (#PCDATA | %Inline.line;)*>
<!ATTLIST subheading
          %spacesattr;>
<!ELEMENT subsubheading (#PCDATA | %Inline.line;)*>
<!ATTLIST subsubheading
          %spacesattr;>
<!ELEMENT sectiontitle  (#PCDATA | %Inline.line;)*>


<!-- emacs-page
     Block elements -->

<!ELEMENT quotation    (quotationtype?, (%block; | exdent | author)*)>
<!ATTLIST quotation
          %spacesblockattr;>
<!ELEMENT smallquotation    (quotationtype?, (%block; | exdent | author)*)>
<!ATTLIST smallquotation
          %spacesblockattr;>
<!ELEMENT quotationtype (#PCDATA | %Inline.line;)*>

<!ELEMENT documentdescription (%block;)*>
<!ATTLIST documentdescription
          %spacesblockattr;>
<!ELEMENT example      (%block; | exdent)*>
<!ATTLIST example
          %spacesblockattr;>
<!ELEMENT smallexample (%block; | exdent)*>
<!ATTLIST smallexample
          %spacesblockattr;>
<!ELEMENT lisp         (%block; | exdent)*>
<!ATTLIST lisp
          %spacesblockattr;>
<!ELEMENT smalllisp    (%block; | exdent)*>
<!ATTLIST smalllisp
          %spacesblockattr;>
<!ELEMENT cartouche    (%block; | exdent)*>
<!ATTLIST cartouche
          %spacesblockattr;>
<!ELEMENT format       (%block; | exdent)*>
<!ATTLIST format
          %spacesblockattr;>
<!ELEMENT smallformat  (%block; | exdent)*>
<!ATTLIST smallformat
          %spacesblockattr;>
<!ELEMENT display      (%block; | exdent)*>
<!ATTLIST display
          %spacesblockattr;>
<!ELEMENT smalldisplay (%block; | exdent)*>
<!ATTLIST smalldisplay
          %spacesblockattr;>
<!ELEMENT group        (%block; | exdent)*>
<!ATTLIST group
          %spacesblockattr;>
<!ELEMENT flushleft    (%block; | exdent)*>
<!ATTLIST flushleft
          %spacesblockattr;>
<!ELEMENT flushright   (%block; | exdent)*>
<!ATTLIST flushright
          %spacesblockattr;>
<!ELEMENT raggedright  (%block; | exdent)*>
<!ATTLIST raggedright
          %spacesblockattr;>

<!ELEMENT center       (#PCDATA | %Inline.fullline;)*>
<!ATTLIST center
          %spacesattr;>

<!ELEMENT image        (imagefile, imagewidth?, imageheight?, alttext?,
                        imageextension?)>
<!ATTLIST image
          %spacesattr;
          where      CDATA #IMPLIED>
<!ELEMENT imagefile       (#PCDATA | %Inline.line;)*>
<!ELEMENT imagewidth      (#PCDATA)>
<!ATTLIST imagewidth
          %spacesattr;>
<!ELEMENT imageheight     (#PCDATA)>
<!ATTLIST imageheight
          %spacesattr;>
<!ELEMENT alttext         (#PCDATA | %Inline.line;)*>
<!ATTLIST alttext
          %spacesattr;>
<!ELEMENT imageextension  (#PCDATA)>
<!ATTLIST imageextension
          %spacesattr;>

<!-- Whitespace in these elements are always preserved -->
<!ELEMENT verbatim     (#PCDATA)>
<!ATTLIST verbatim 
          %spacesattr;
          xml:space (preserve) #FIXED 'preserve'>

<!-- author is there because it may happen in a quotation para -->
<!ELEMENT para         (#PCDATA | %Inline.phrase; | author)*>
<!ATTLIST para
          role CDATA #IMPLIED>
<!ELEMENT pre          (#PCDATA | %Inline.phrase; | author)*>
<!ATTLIST pre          xml:space (preserve) #FIXED 'preserve'>

<!ELEMENT menu (menuentry | detailmenu | menucomment)*>
<!ATTLIST menu
          %spacesblockattr;>
<!ELEMENT detailmenu (menuentry | menucomment)*>
<!ATTLIST detailmenu
          %spacesblockattr;>
<!ELEMENT direntry (menuentry | menucomment)*>
<!ATTLIST direntry
          %spacesblockattr;>
<!ELEMENT menuentry (menutitle?, menunode?, menudescription?)>
<!ATTLIST menuentry
          leadingtext CDATA #REQUIRED>
<!ELEMENT menunode (#PCDATA | %Inline.line;)*>
<!ATTLIST menunode
          separator CDATA #IMPLIED>
<!ELEMENT menutitle (#PCDATA | %Inline.line;)*>
<!ATTLIST menutitle
          separator CDATA #IMPLIED>
<!ELEMENT menudescription (%block;)*>
<!ELEMENT menucomment (%block;)*>

<!-- Raw formats -->
<!ELEMENT docbook (%Raw.content;)*>
<!ATTLIST docbook
          %spacesblockattr;>
<!ELEMENT html (%Raw.content;)*>
<!ATTLIST html
          %spacesblockattr;>
<!ELEMENT tex (%Raw.content;)*>
<!ATTLIST tex
          %spacesblockattr;>
<!-- this may happen if xml is not expanded -->
<!ELEMENT xml (%Raw.content;)*>
<!ATTLIST xml
          %spacesblockattr;>

<!-- formalarg only before PCDATA, but mandating it seems not possible -->
<!-- same issue for nesting macros -->
<!ELEMENT macro (#PCDATA | formalarg | macro | rmacro)*>
<!ATTLIST macro
          name CDATA #REQUIRED
          line CDATA #REQUIRED>
<!ELEMENT rmacro (#PCDATA | formalarg | macro | rmacro)*>
<!ATTLIST rmacro
          name CDATA #REQUIRED
          line CDATA #REQUIRED>

<!ELEMENT formalarg (#PCDATA)>

<!ELEMENT ignore (#PCDATA)>

<!-- Negative indentation in blocks -->
<!ELEMENT exdent       (#PCDATA | %Inline.fullline;)*>
<!ATTLIST exdent
          %spacesattr;>

<!ELEMENT verbatiminclude (#PCDATA)>
<!ATTLIST verbatiminclude
          %spacesattr;
          file CDATA #REQUIRED>

<!ELEMENT include (#PCDATA)>
<!ATTLIST include
          %spacesattr;>

<!-- Floating displays -->
<!ELEMENT float (floattype?, floatname?, (%block;)*,
                (caption | shortcaption)*)>
<!ATTLIST float
          %spacesblockattr;
          number CDATA #IMPLIED
          name CDATA #IMPLIED
          type CDATA #IMPLIED>
<!ELEMENT floattype (#PCDATA | %Inline.line;)*>
<!ELEMENT floatname (#PCDATA | %Inline.line;)*>
<!ATTLIST floatname
          %spacesattr;>
<!ELEMENT caption (#PCDATA | %block;)*>
<!ATTLIST caption
          %spacesattr;>
<!ELEMENT shortcaption (#PCDATA | %Inline.phrase; | para)*>
<!ELEMENT listoffloats (#PCDATA | %Inline.line;)*>
<!ATTLIST listoffloats
          %spacesattr;
          type CDATA #IMPLIED>

<!-- Lists -->
<!ELEMENT itemize (itemprepend?, beforefirstitem?, 
                   (listitem | %indexentry.cmds;)*)>
<!ATTLIST itemize
          %spacesblockattr;
          commandarg CDATA #IMPLIED>
<!ELEMENT enumerate (enumeratefirst?, beforefirstitem?,
                     (listitem | %indexentry.cmds;)*)>
<!ATTLIST enumerate
          %spacesblockattr;
          first CDATA #IMPLIED>
<!ELEMENT enumeratefirst (#PCDATA)>

<!ELEMENT listitem (prepend?, (%block;)*)>
<!ATTLIST listitem
          %spacesattr;>
<!ELEMENT prepend (#PCDATA | %Inline.line;)*>

<!ELEMENT itemprepend (#PCDATA | %Inline.line; | formattingcommand)*>
<!ELEMENT formattingcommand EMPTY>
<!ATTLIST formattingcommand
          command CDATA #REQUIRED>
<!ELEMENT beforefirstitem (%block;)*>

<!-- Tables -->
<!ELEMENT table (beforefirstitem?, (tableentry | %indexentry.cmds;)+)>

<!ENTITY % blocktablearg
         "%spacesblockattr;
          commandarg CDATA #IMPLIED
          begin CDATA #IMPLIED
          end CDATA #IMPLIED">

<!-- begin and end are for definfoenclose command as table argument -->
<!ATTLIST table
          %blocktablearg;>
<!ELEMENT vtable (beforefirstitem?, (tableentry | %indexentry.cmds;)+)>
<!ATTLIST vtable
          %blocktablearg;>
<!ELEMENT ftable (beforefirstitem?, (tableentry | %indexentry.cmds;)+)>
<!ATTLIST ftable
          %blocktablearg;>
<!ELEMENT tableentry (tableterm, tableitem?)>
<!-- tableterm contains directly pre if there is an index entry before @itemx -->
<!ELEMENT tableterm (item,  (pre | itemx | %indexentry.cmds;)*)>
<!ELEMENT item (#PCDATA | %Inline.line; | itemformat | indexterm)*>
<!ATTLIST item
          %spacesattr;>
<!ELEMENT itemx (#PCDATA | %Inline.line; | itemformat | indexterm)*>
<!ATTLIST itemx
          %spacesattr;>
<!ELEMENT itemformat (#PCDATA | %Inline.line; | indexterm)*>
<!-- begin and end are for definfoenclose command for item content -->
<!ATTLIST itemformat
          command   CDATA #REQUIRED
          begin CDATA #IMPLIED
          end CDATA #IMPLIED>
<!ELEMENT tableitem (%block;)*>

<!ELEMENT multitable ((columnfractions | columnprototypes), beforefirstitem?, 
                      thead?, tbody)>
<!ATTLIST multitable
          %blocktablearg;>
<!ELEMENT columnfractions (columnfraction+)>
<!ATTLIST columnfractions
          %lineattr;>
<!ELEMENT columnprototypes (columnprototype+)>
<!ELEMENT columnfraction EMPTY>
<!ATTLIST columnfraction
          value CDATA #REQUIRED>
<!ELEMENT columnprototype (#PCDATA | %Inline.line;)*>
<!ATTLIST columnprototype
          %spacesattr;
          %bracketedattr;>
<!ELEMENT thead (row+)>
<!ELEMENT tbody (row+)>
<!ELEMENT row (entry*)>
<!ELEMENT entry (%block;)*>
<!ATTLIST entry
          %spacesattr;
          command   CDATA #REQUIRED>

<!-- API definitions -->

<!-- def* contains directly pre if there is an index entry before def*x -->
<!ELEMENT deffn (definitionterm, (pre | deffnx | %indexentry.cmds;)*, definitionitem?)>
<!ATTLIST deffn
          %spacesblockattr;>
<!ELEMENT deffnx (definitionterm)>
<!ATTLIST deffnx
          %spacesattr;>
<!ELEMENT defvr (definitionterm, (pre | defvrx | %indexentry.cmds;)*, definitionitem?)>
<!ATTLIST defvr
          %spacesblockattr;>
<!ELEMENT defvrx (definitionterm)>
<!ATTLIST defvrx
          %spacesattr;>
<!ELEMENT deftypefn (definitionterm, (pre | deftypefnx | %indexentry.cmds;)*, definitionitem?)>
<!ATTLIST deftypefn
          %spacesblockattr;>
<!ELEMENT deftypefnx (definitionterm)>
<!ATTLIST deftypefnx
          %spacesattr;>
<!ELEMENT deftypeop (definitionterm, (pre | deftypeopx | %indexentry.cmds;)*, definitionitem?)>
<!ATTLIST deftypeop
          %spacesblockattr;>
<!ELEMENT deftypeopx (definitionterm)>
<!ATTLIST deftypeopx
          %spacesattr;>
<!ELEMENT deftypevr (definitionterm, (pre | deftypevrx | %indexentry.cmds;)*, definitionitem?)>
<!ATTLIST deftypevr
          %spacesblockattr;>
<!ELEMENT deftypevrx (definitionterm)>
<!ATTLIST deftypevrx
          %spacesattr;>
<!ELEMENT defcv (definitionterm, (pre | defcvx | %indexentry.cmds;)*, definitionitem?)>
<!ATTLIST defcv
          %spacesblockattr;>
<!ELEMENT defcvx (definitionterm)>
<!ATTLIST defcvx
          %spacesattr;>
<!ELEMENT deftypecv (definitionterm, (pre | deftypecvx | %indexentry.cmds;)*, definitionitem?)>
<!ATTLIST deftypecv
          %spacesblockattr;>
<!ELEMENT deftypecvx (definitionterm)>
<!ATTLIST deftypecvx
          %spacesattr;>
<!ELEMENT defop (definitionterm, (pre | defopx | %indexentry.cmds;)*, definitionitem?)>
<!ATTLIST defop
          %spacesblockattr;>
<!ELEMENT defopx (definitionterm)>
<!ATTLIST defopx
          %spacesattr;>
<!ELEMENT deftp (definitionterm, (pre | deftpx | %indexentry.cmds;)*, definitionitem?)>
<!ATTLIST deftp
          %spacesblockattr;>
<!ELEMENT deftpx (definitionterm)>
<!ATTLIST deftpx
          %spacesattr;>
<!ELEMENT defun (definitionterm, (pre | defunx | %indexentry.cmds;)*, definitionitem?)>
<!ATTLIST defun
          %spacesblockattr;>
<!ELEMENT defunx (definitionterm)>
<!ATTLIST defunx
          %spacesattr;>
<!ELEMENT defmac (definitionterm, (pre | defmacx | %indexentry.cmds;)*, definitionitem?)>
<!ATTLIST defmac
          %spacesblockattr;>
<!ELEMENT defmacx (definitionterm)>
<!ATTLIST defmacx
          %spacesattr;>
<!ELEMENT defspec (definitionterm, (pre | defspecx | %indexentry.cmds;)*, definitionitem?)>
<!ATTLIST defspec
          %spacesblockattr;>
<!ELEMENT defspecx (definitionterm)>
<!ATTLIST defspecx
          %spacesattr;>
<!ELEMENT defvar (definitionterm, (pre | defvarx | %indexentry.cmds;)*, definitionitem?)>
<!ATTLIST defvar
          %spacesblockattr;>
<!ELEMENT defvarx (definitionterm)>
<!ATTLIST defvarx
          %spacesattr;>
<!ELEMENT defopt (definitionterm, (pre | defoptx | %indexentry.cmds;)*, definitionitem?)>
<!ATTLIST defopt
          %spacesblockattr;>
<!ELEMENT defoptx (definitionterm)>
<!ATTLIST defoptx
          %spacesattr;>
<!ELEMENT deftypefun (definitionterm, (pre | deftypefunx | %indexentry.cmds;)*, definitionitem?)>
<!ATTLIST deftypefun
          %spacesblockattr;>
<!ELEMENT deftypefunx (definitionterm)>
<!ATTLIST deftypefunx
          %spacesattr;>
<!ELEMENT deftypevar (definitionterm, (pre | deftypevarx | %indexentry.cmds;)*, definitionitem?)>
<!ATTLIST deftypevar
          %spacesblockattr;>
<!ELEMENT deftypevarx (definitionterm)>
<!ATTLIST deftypevarx
          %spacesattr;>
<!ELEMENT defivar (definitionterm, (pre | defivarx | %indexentry.cmds;)*, definitionitem?)>
<!ATTLIST defivar
          %spacesblockattr;>
<!ELEMENT defivarx (definitionterm)>
<!ATTLIST defivarx
          %spacesattr;>
<!ELEMENT deftypeivar (definitionterm, (pre | deftypeivarx | %indexentry.cmds;)*, definitionitem?)>
<!ATTLIST deftypeivar
          %spacesblockattr;>
<!ELEMENT deftypeivarx (definitionterm)>
<!ATTLIST deftypeivarx
          %spacesattr;>
<!ELEMENT defmethod (definitionterm, (pre | defmethodx | %indexentry.cmds;)*, definitionitem?)>
<!ATTLIST defmethod
          %spacesblockattr;>
<!ELEMENT defmethodx (definitionterm)>
<!ATTLIST defmethodx
          %spacesattr;>
<!ELEMENT deftypemethod (definitionterm, (pre | deftypemethodx | %indexentry.cmds;)*, definitionitem?)>
<!ATTLIST deftypemethod
          %spacesblockattr;>
<!ELEMENT deftypemethodx (definitionterm)>
<!ATTLIST deftypemethodx
          %spacesattr;>

<!--
<!ELEMENT definition (definitionterm | definitionitem | indexterm)+>
<!ELEMENT definitionterm (%definition.args; | indexterm)+>
-->
<!ELEMENT definitionterm (indexterm?, (%definition.args;)+)>
<!ELEMENT definitionitem (%block;)*>

<!ENTITY % defargattr
         "%bracketedattr; %spacesattr;">
<!ELEMENT defcategory  (#PCDATA | %Inline.line;)*>
<!ATTLIST defcategory
          %defargattr;
          automatic (%onoff;) 'off'>
<!ELEMENT deffunction  (#PCDATA | %Inline.line;)*>
<!ATTLIST deffunction
          %defargattr;>
<!ELEMENT defvariable  (#PCDATA | %Inline.line;)*>
<!ATTLIST defvariable
          %defargattr;>
<!ELEMENT defparam     (#PCDATA | %Inline.line;)*>
<!ATTLIST defparam
          %defargattr;>
<!ELEMENT defdelimiter (#PCDATA | %Inline.line;)*>
<!ELEMENT deftype      (#PCDATA | %Inline.line;)*>
<!ATTLIST deftype
          %defargattr;>
<!ELEMENT defparamtype (#PCDATA | %Inline.line;)*>
<!ATTLIST defparamtype
          %defargattr;>
<!ELEMENT defdatatype  (#PCDATA | %Inline.line;)*>
<!ATTLIST defdatatype
          %defargattr;>
<!ELEMENT defclass     (#PCDATA | %Inline.line;)*>
<!ATTLIST defclass
          %defargattr;>
<!ELEMENT defclassvar  (#PCDATA | %Inline.line;)*>
<!ATTLIST defclassvar
          %defargattr;>
<!ELEMENT defoperation (#PCDATA | %Inline.line;)*>
<!ATTLIST defoperation
          %defargattr;>

<!-- emacs-page
     Inline elements -->

<!ELEMENT hyphenation (#PCDATA)>

<!-- emphasize -->
<!ELEMENT strong (#PCDATA | %Inline.phrase;)*>
<!ELEMENT emph   (#PCDATA | %Inline.phrase;)*>

<!-- small caps -->
<!ELEMENT sc (#PCDATA | %Inline.phrase;)*>

<!-- fonts -->
<!ELEMENT b  (#PCDATA | %Inline.phrase;)*>
<!ELEMENT i  (#PCDATA | %Inline.phrase;)*>
<!ELEMENT r  (#PCDATA | %Inline.phrase;)*>
<!ELEMENT sansserif   (#PCDATA | %Inline.phrase;)*>
<!ELEMENT slanted     (#PCDATA | %Inline.phrase;)*>
<!ELEMENT titlefont   (#PCDATA | %Inline.phrase;)*>
<!ELEMENT t (#PCDATA | %Inline.phrase;)*>

<!-- markup -->
<!ELEMENT code    (#PCDATA | %Inline.phrase;)*>
<!ELEMENT command (#PCDATA | %Inline.phrase;)*>
<!ELEMENT env     (#PCDATA | %Inline.phrase;)*>
<!ELEMENT file    (#PCDATA | %Inline.phrase;)*>
<!ELEMENT option  (#PCDATA | %Inline.phrase;)*>
<!ELEMENT samp    (#PCDATA | %Inline.phrase;)*>
<!ELEMENT dfn     (#PCDATA | %Inline.phrase;)*>
<!ELEMENT cite    (#PCDATA | %Inline.phrase;)*>
<!ELEMENT key     (#PCDATA | %Inline.phrase;)*>
<!ELEMENT kbd     (#PCDATA | %Inline.phrase;)*>
<!ELEMENT var     (#PCDATA | %Inline.phrase;)*>
<!ELEMENT indicateurl   (#PCDATA | %Inline.phrase;)*>
<!ATTLIST indicateurl
          %spacesattr;>
<!ELEMENT clicksequence (#PCDATA | %Inline.phrase;)*>
<!ELEMENT w       (#PCDATA | %Inline.phrase;)*>
<!ELEMENT asis    (#PCDATA | %Inline.phrase;)*>
<!ELEMENT sub     (#PCDATA | %Inline.phrase;)*>
<!ELEMENT sup     (#PCDATA | %Inline.phrase;)*>
<!ELEMENT verb    (#PCDATA)>
<!ATTLIST verb
          delimiter CDATA #REQUIRED>

<!ELEMENT acronym (acronymword, acronymdesc?)>
<!ATTLIST acronym
          %spacesattr;>
<!ELEMENT acronymword (#PCDATA | %Inline.phrase;)*>
<!ELEMENT acronymdesc (#PCDATA | %Inline.phrase;)*>
<!ATTLIST acronymdesc
          %spacesattr;>

<!ELEMENT abbr (abbrword, abbrdesc?)>
<!ATTLIST abbr
          %spacesattr;>
<!ELEMENT abbrword (#PCDATA | %Inline.phrase;)*>
<!ELEMENT abbrdesc (#PCDATA | %Inline.phrase;)*>
<!ATTLIST abbrdesc
          %spacesattr;>

<!-- math -->
<!ELEMENT math    (#PCDATA | %Inline.phrase;)*>
<!ATTLIST math
          %spacesattr;>
<!ELEMENT dmn     (#PCDATA | %Inline.phrase;)*>

<!-- reference -->
<!ELEMENT anchor (#PCDATA | %Inline.phrase;)*>
<!ATTLIST anchor
          %spacesattr;
          name CDATA #IMPLIED>

<!ELEMENT errormsg (#PCDATA | %Inline.phrase;)*>
<!ATTLIST errormsg
          %spacesattr;>

<!-- inline conditionals -->
<!ELEMENT inlineraw (inlinerawformat, inlinerawcontent)>
<!ATTLIST inlineraw
          %spacesattr;>
<!ELEMENT inlinerawformat (#PCDATA)>
<!ELEMENT inlinerawcontent (#PCDATA | %Inline.phrase;)*>
<!ATTLIST inlinerawcontent
          %spacesattr;>

<!ELEMENT inlinefmt (inlinefmtformat, inlinefmtcontent)>
<!ATTLIST inlinefmt
          %spacesattr;>
<!ELEMENT inlinefmtformat (#PCDATA)>
<!ELEMENT inlinefmtcontent (#PCDATA | %Inline.phrase;)*>
<!ATTLIST inlinefmtcontent
          %spacesattr;>

<!ELEMENT inlineifclear (inlineifclearformat, inlineifclearcontent)>
<!ATTLIST inlineifclear
          %spacesattr;>
<!ELEMENT inlineifclearformat (#PCDATA)>
<!ELEMENT inlineifclearcontent (#PCDATA | %Inline.phrase;)*>
<!ATTLIST inlineifclearcontent
          %spacesattr;>

<!ELEMENT inlineifset (inlineifsetformat, inlineifsetcontent)>
<!ATTLIST inlineifset
          %spacesattr;>
<!ELEMENT inlineifsetformat (#PCDATA)>
<!ELEMENT inlineifsetcontent (#PCDATA | %Inline.phrase;)*>
<!ATTLIST inlineifsetcontent
          %spacesattr;>

<!ELEMENT inlinefmtifelse (inlinefmtifelseformat, inlinefmtifelsecontentif?, inlinefmtifelsecontentelse?)>
<!ATTLIST inlinefmtifelse
          %spacesattr;>
<!ELEMENT inlinefmtifelseformat (#PCDATA)>
<!ELEMENT inlinefmtifelsecontentif (#PCDATA | %Inline.phrase;)*>
<!ATTLIST inlinefmtifelsecontentif
          %spacesattr;>
<!ELEMENT inlinefmtifelsecontentelse (#PCDATA | %Inline.phrase;)*>
<!ATTLIST inlinefmtifelsecontentelse
          %spacesattr;>


<!-- command defined by definfoenclose -->
<!ELEMENT infoenclose  (#PCDATA | %Inline.phrase;)*>
<!ATTLIST infoenclose
          command CDATA #REQUIRED
          begin CDATA #IMPLIED
          end CDATA #IMPLIED>

<!ENTITY % xref.args "xrefnodename?, xrefinfoname?, xrefprinteddesc?,
                xrefinfofile?, xrefprintedname?">
<!ENTITY % xref.attr
          "%spacesattr; 
           label CDATA #IMPLIED
           manual CDATA #IMPLIED">

<!ELEMENT xref (%xref.args;)>
<!ATTLIST xref
          %xref.attr;>
<!ELEMENT ref (%xref.args;)>
<!ATTLIST ref
          %xref.attr;>
<!ELEMENT pxref (%xref.args;)>
<!ATTLIST pxref
          %xref.attr;>

<!ELEMENT xrefnodename    (#PCDATA | %Inline.phrase;)*>
<!ELEMENT xrefinfoname    (#PCDATA | %Inline.phrase;)*>
<!ATTLIST xrefinfoname
          %spacesattr;>
<!ELEMENT xrefinfofile    (#PCDATA | %Inline.phrase;)*>
<!ATTLIST xrefinfofile
          %spacesattr;>
<!ELEMENT xrefprintedname (#PCDATA | %Inline.phrase;)*>
<!ATTLIST xrefprintedname
          %spacesattr;>
<!ELEMENT xrefprinteddesc (#PCDATA | %Inline.phrase;)*>
<!ATTLIST xrefprinteddesc
          %spacesattr;>

<!ELEMENT inforef (inforefnodename?, inforefrefname?, inforefinfoname?)>
<!ATTLIST inforef
          %xref.attr;>
<!ELEMENT inforefnodename (#PCDATA | %Inline.phrase;)*>
<!ELEMENT inforefrefname  (#PCDATA | %Inline.phrase;)*>
<!ATTLIST inforefrefname
          %spacesattr;>
<!ELEMENT inforefinfoname (#PCDATA | %Inline.phrase;)*>
<!ATTLIST inforefinfoname
          %spacesattr;>

<!ELEMENT email (emailaddress, emailname?)>
<!ATTLIST email
          %spacesattr;>
<!ELEMENT emailaddress (#PCDATA | %Inline.phrase;)*>
<!ELEMENT emailname (#PCDATA | %Inline.phrase;)*>
<!ATTLIST emailname
          %spacesattr;>

<!ELEMENT uref (urefurl, urefdesc?, urefreplacement?)>
<!ATTLIST uref
          %spacesattr;>
<!ELEMENT url  (urefurl, urefdesc?, urefreplacement?)>
<!ATTLIST url
          %spacesattr;>
<!ELEMENT urefurl         (#PCDATA | %Inline.phrase;)*>
<!ELEMENT urefdesc        (#PCDATA | %Inline.phrase;)*>
<!ATTLIST urefdesc
          %spacesattr;>
<!ELEMENT urefreplacement (#PCDATA | %Inline.phrase;)*>

<!ELEMENT footnote (%block;)*>
<!ATTLIST footnote
          %spacesattr;>

<!-- deprecated -->

<!ELEMENT ctrl             (#PCDATA | %Inline.phrase;)*>
<!ELEMENT refill           EMPTY>
<!ELEMENT quote-arg        EMPTY>
<!ELEMENT allow-recursion  EMPTY>

<!-- index commands -->

<!ENTITY % indexcmdattr
         "%spacesattr;
          index CDATA #IMPLIED">

<!ELEMENT defindex  EMPTY>
<!ATTLIST defindex
          %lineattr;
          value     NMTOKEN #REQUIRED>
<!ELEMENT defcodeindex  EMPTY>
<!ATTLIST defcodeindex
          %lineattr;
          value     NMTOKEN #REQUIRED>
<!ELEMENT synindex  EMPTY>
<!ATTLIST synindex
          %lineattr;
          from      NMTOKEN #REQUIRED
          to        NMTOKEN #REQUIRED>
<!ELEMENT syncodeindex  EMPTY>
<!ATTLIST syncodeindex
          %lineattr;
          from      NMTOKEN #REQUIRED
          to        NMTOKEN #REQUIRED>
<!ELEMENT indexterm (#PCDATA | %Inline.line;)*>
<!ATTLIST indexterm
          index         CDATA #IMPLIED
          mergedindex   CDATA #IMPLIED
          number        CDATA #REQUIRED
          incode    (%zeroone;) #IMPLIED>
<!ELEMENT indexcommand (indexterm)>
<!ATTLIST indexcommand
          %indexcmdattr;
          command   CDATA #REQUIRED>
<!ELEMENT cindex (indexterm)>
<!ATTLIST cindex 
          %indexcmdattr;>
<!ELEMENT findex (indexterm)>
<!ATTLIST findex 
          %indexcmdattr;>
<!ELEMENT kindex (indexterm)>
<!ATTLIST kindex 
          %indexcmdattr;>
<!ELEMENT pindex (indexterm)>
<!ATTLIST pindex 
          %indexcmdattr;>
<!ELEMENT tindex (indexterm)>
<!ATTLIST tindex 
          %indexcmdattr;>
<!ELEMENT vindex (indexterm)>
<!ATTLIST vindex 
          %indexcmdattr;>
<!ELEMENT printindex EMPTY>
<!ATTLIST printindex
          %lineattr;
          value     NMTOKEN #REQUIRED>

<!-- unusual insertions and other -->

<!ELEMENT accent (#PCDATA | accent | dotless)*>
<!ATTLIST accent
          %bracketedattr;
          %spacesattr;
          type        CDATA #REQUIRED>

<!ELEMENT bye EMPTY>

<!ELEMENT click  EMPTY>
<!ATTLIST click
          command        CDATA #REQUIRED>

<!ELEMENT dotless (#PCDATA)>

<!ELEMENT spacecmd EMPTY>
<!ATTLIST spacecmd
          type (%spacetype;) #IMPLIED>

<!ELEMENT today EMPTY>

<!ELEMENT U (#PCDATA)>


<!-- emacs-page
     Punctuation and special symbols.  -->

<!ELEMENT punct     (#PCDATA)>
<!ATTLIST punct
          end-of-sentence (yes|no) #IMPLIED>
<!ELEMENT logo      (#PCDATA)>
<!ELEMENT linebreak EMPTY>
<!ELEMENT noeos EMPTY>
<!ELEMENT formfeed EMPTY>

<!ENTITY tex        "<logo>TeX</logo>">
<!ENTITY latex      "<logo>LaTeX</logo>">
<!ENTITY ellipsis   "&#x2026;">
<!ENTITY lt         "&#x3c;">
<!ENTITY gt         "&#x3e;">
<!ENTITY bullet     "&#x2022;">
<!ENTITY copyright  "&#xa9;">
<!ENTITY registered "&#xae;">
<!ENTITY euro       "&#x20ac;">
<!ENTITY pounds     "&#xa3;">
<!ENTITY minus      "&#x2212;">
<!ENTITY linebreak  "<linebreak/>">
<!ENTITY dots       "<punct end-of-sentence='no'>&#x2026;</punct>">
<!ENTITY enddots    "<punct end-of-sentence='yes'>&#x2026;</punct>">
<!ENTITY amp        "&#x26;">
<!ENTITY lsquo      "&#x2018;">
<!ENTITY textlsquo      "&#x2018;">
<!ENTITY rsquo      "&#x2019;">
<!ENTITY textrsquo      "&#x2019;">
<!ENTITY sbquo      "&#x201a;">
<!ENTITY ldquo      "&#x201c;">
<!ENTITY textldquo      "&#x201c;">
<!ENTITY rdquo      "&#x201d;">
<!ENTITY textrdquo      "&#x201d;">
<!ENTITY bdquo      "&#x201e;">
<!ENTITY laquo      "&#xab;">
<!ENTITY raquo      "&#xbb;">
<!ENTITY lsaquo     "&#x2039;">
<!ENTITY rsaquo     "&#x203a;">
<!ENTITY textmdash      "&#x2014;">
<!ENTITY textndash      "&#x2013;">
<!ENTITY formfeed       "<formfeed/>">
<!ENTITY attrformfeed   "\f">
<!ENTITY period     "<punct end-of-sentence='no'>.</punct>">
<!ENTITY eosperiod  "<punct end-of-sentence='yes'>.</punct>">
<!ENTITY quest      "<punct end-of-sentence='no'>?</punct>">
<!ENTITY eosquest   "<punct end-of-sentence='yes'>?</punct>">
<!ENTITY excl       "<punct end-of-sentence='no'>!</punct>">
<!ENTITY eosexcl    "<punct end-of-sentence='yes'>!</punct>">
<!ENTITY hyphenbreak "&#x00ad;">
<!ENTITY slashbreak "/">
<!ENTITY noeos      "<noeos/>">
<!ENTITY arobase    "@">
<!ENTITY lbrace     "{">
<!ENTITY rbrace     "}">
<!ENTITY comma      ",">
<!ENTITY atchar     "@">
<!ENTITY lbracechar "{">
<!ENTITY rbracechar "}">
<!ENTITY backslashchar "\\">
<!ENTITY hashchar   "#">
<!ENTITY nbsp       "&#xa0;">
<!ENTITY deg        "&#xb0;">
<!ENTITY expansion  "&#x2192;">
<!ENTITY point      "&#x2605;">
<!ENTITY printglyph "&#x22a3;">
<!ENTITY errorglyph "error--&gt;">
<!ENTITY result     "&#x21d2;">
<!ENTITY le         "&#x2264;">
<!ENTITY ge         "&#x2265;">
<!ENTITY equiv      "&#x2261;">

<!ENTITY auml "&#xe4;">
<!ENTITY ouml "&#xf6;">
<!ENTITY uuml "&#xfc;">
<!ENTITY Auml "&#xc4;">
<!ENTITY Ouml "&#xd6;">
<!ENTITY Uuml "&#xdc;">
<!ENTITY Euml "&#xcb;">
<!ENTITY euml "&#xeb;">
<!ENTITY Iuml "&#xcf;">
<!ENTITY iuml "&#xef;">
<!ENTITY yuml "&#xff;">
<!ENTITY uml  "&#xa8;">

<!ENTITY Aacute "&#xc1;">
<!ENTITY Eacute "&#xc9;">
<!ENTITY Iacute "&#xcd;">
<!ENTITY Oacute "&#xd3;">
<!ENTITY Uacute "&#xda;">
<!ENTITY Yacute "&#xdd;">
<!ENTITY aacute "&#xe1;">
<!ENTITY eacute "&#xe9;">
<!ENTITY iacute "&#xed;">
<!ENTITY oacute "&#xf3;">
<!ENTITY uacute "&#xfa;">
<!ENTITY yacute "&#xfd;">

<!ENTITY ccedil "&#xe7;">
<!ENTITY Ccedil "&#xc7;">

<!ENTITY Acirc "&#xc2;">
<!ENTITY Ecirc "&#xca;">
<!ENTITY Icirc "&#xc3;">
<!ENTITY Ocirc "&#xd4;">
<!ENTITY Ucirc "&#xdb;">
<!ENTITY acirc "&#xe2;">
<!ENTITY ecirc "&#xea;">
<!ENTITY icirc "&#xee;">
<!ENTITY ocirc "&#xf4;">
<!ENTITY ucirc "&#xfb;">

<!ENTITY Agrave "&#xc0;">
<!ENTITY Egrave "&#xc8;">
<!ENTITY Igrave "&#xcc;">
<!ENTITY Ograve "&#xd2;">
<!ENTITY Ugrave "&#xd9;">
<!ENTITY agrave "&#xe0;">
<!ENTITY egrave "&#xe8;">
<!ENTITY igrave "&#xec;">
<!ENTITY ograve "&#xf2;">
<!ENTITY ugrave "&#xf9;">

<!ENTITY Atilde "&#xc3;">
<!ENTITY Ntilde "&#xd1;">
<!ENTITY Otilde "&#xd5;">
<!ENTITY atilde "&#xe3;">
<!ENTITY ntilde "&#xf1;">
<!ENTITY otilde "&#xf5;">

<!ENTITY oslash "&#xf8;">
<!ENTITY Oslash "&#xd8;">

<!ENTITY lslash "&#x0142;">
<!ENTITY Lslash "&#x0141;">

<!ENTITY THORN  "&#xde;">
<!ENTITY thorn  "&#xfe;">

<!ENTITY eth "&#xf0;">
<!ENTITY ETH "&#xd0;">

<!ENTITY ordm "&#xba;">
<!ENTITY ordf "&#xaa;">

<!ENTITY iexcl "&#xa1;">
<!ENTITY pound "&#xa3;">
<!ENTITY iquest "&#xbf;">
<!ENTITY AElig "&#xc6;">
<!ENTITY aelig "&#xe6;">
<!ENTITY OElig "&#x152;">
<!ENTITY oelig "&#x153;">
<!ENTITY Aring "&#xc5;">
<!ENTITY aring "&#xe5;">
<!ENTITY szlig "&#xdf;">

<!ENTITY rarr "&#x2192;">
<!ENTITY rArr "&#x21d2;">

<!ENTITY macr "&#xaf;">

<!ENTITY backslash "\">
