  
  [1m[4m[31mB. The File [1mgapdoc.dtd[1m[4m[31m[0m
  
  For  easier  reference  we  repeat  here  the  complete  content of the file
  [1mgapdoc.dtd[0m.
  
  [22m[35m--------------------------  gapdoc.dtd  --------------------------[0m
    [22m[35m<?xml version="1.0" encoding="ISO-8859-1"?>[0m
    [22m[35m<!-- ==================================================================[0m
    [22m[35m     gapdoc.dtd - XML Document type definition for GAP documentation[0m
    [22m[35m     By Frank Lübeck and Max Neunhöffer[0m
    [22m[35m     ================================================================== -->[0m
    [22m[35m[0m
    [22m[35m<!-- $Id: gapdoc.dtd,v 1.5 2002/05/02 20:39:58 gap Exp $ -->[0m
    [22m[35m[0m
    [22m[35m<!-- Note that this definition goes "bottom-up" because entities can only[0m
    [22m[35m     be used after their definition in the file. -->[0m
    [22m[35m[0m
    [22m[35m[0m
    [22m[35m<!-- ==================================================================[0m
    [22m[35m     Some entities:[0m
    [22m[35m     ================================================================== -->[0m
    [22m[35m[0m
    [22m[35m<!-- The standard XML entities: -->[0m
    [22m[35m[0m
    [22m[35m<!ENTITY lt     "&#38;#60;"> [0m
    [22m[35m<!ENTITY gt     "&#62;"> [0m
    [22m[35m<!ENTITY amp    "&#38;#38;"> [0m
    [22m[35m<!ENTITY apos   "&#39;"> [0m
    [22m[35m<!ENTITY quot   "&#34;">[0m
    [22m[35m[0m
    [22m[35m[0m
    [22m[35m<!-- The following are necessary because these characters have special[0m
    [22m[35m     meanings in either XML or LaTeX: -->[0m
    [22m[35m     [0m
    [22m[35m<!ENTITY tamp [0m
    [22m[35m  "<Alt Only='LaTeX'>\&amp;</Alt><Alt Not='LaTeX'><Alt Only='HTML'>&amp;amp;</Alt><Alt Not='HTML'>&amp;</Alt></Alt>">[0m
    [22m[35m<!ENTITY tlt [0m
    [22m[35m  "<Alt Only='LaTeX'>{\textless}</Alt><Alt Not='LaTeX'><Alt Only='HTML'>&amp;lt;</Alt><Alt Not='HTML'>&lt;</Alt></Alt>">[0m
    [22m[35m<!ENTITY tgt [0m
    [22m[35m  "<Alt Only='LaTeX'>{\textgreater}</Alt><Alt Not='LaTeX'><Alt Only='HTML'>&amp;gt;</Alt><Alt Not='HTML'>&gt;</Alt></Alt>">[0m
    [22m[35m<!ENTITY hash "<Alt Only='LaTeX'>\#</Alt><Alt Not='LaTeX'>#</Alt>">[0m
    [22m[35m<!ENTITY dollar "<Alt Only='LaTeX'>\$</Alt><Alt Not='LaTeX'>$</Alt>">[0m
    [22m[35m<!ENTITY percent [0m
    [22m[35m  "<Alt Only='LaTeX'>\&#37;</Alt><Alt Not='LaTeX'>&#37;</Alt>">[0m
    [22m[35m<!ENTITY tilde [0m
    [22m[35m  "<Alt Only='LaTeX'>{\textasciitilde}</Alt><Alt Not='LaTeX'>~</Alt>">[0m
    [22m[35m<!ENTITY bslash [0m
    [22m[35m  "<Alt Only='LaTeX'>{\textbackslash}</Alt><Alt Not='LaTeX'>\</Alt>">[0m
    [22m[35m<!ENTITY obrace "<Alt Only='LaTeX'>\{</Alt><Alt Not='LaTeX'>{</Alt>">[0m
    [22m[35m<!ENTITY cbrace "<Alt Only='LaTeX'>\}</Alt><Alt Not='LaTeX'>}</Alt>">[0m
    [22m[35m<!ENTITY uscore [0m
    [22m[35m  "<Alt Only='LaTeX'>{\textunderscore}</Alt><Alt Not='LaTeX'>_</Alt>">[0m
    [22m[35m<!ENTITY circum [0m
    [22m[35m  "<Alt Only='LaTeX'>{\textasciicircum}</Alt><Alt Not='LaTeX'>^</Alt>">[0m
    [22m[35m<!ENTITY nbsp "<Alt Only='LaTeX'>~</Alt><Alt Not='LaTeX'>&#160;</Alt>">[0m
    [22m[35m[0m
    [22m[35m<!-- ==================================================================[0m
    [22m[35m     Our predefined entities:[0m
    [22m[35m     ================================================================== -->[0m
    [22m[35m[0m
    [22m[35m<!ENTITY GAP    "<Package>GAP</Package>">[0m
    [22m[35m<!ENTITY GAPDoc "<Package>GAPDoc</Package>">[0m
    [22m[35m<!ENTITY TeX    [0m
    [22m[35m  "<Alt Only='LaTeX'>{\TeX}</Alt><Alt Not='LaTeX'>TeX</Alt>">[0m
    [22m[35m<!ENTITY LaTeX  [0m
    [22m[35m  "<Alt Only='LaTeX'>{\LaTeX}</Alt><Alt Not='LaTeX'>LaTeX</Alt>">[0m
    [22m[35m<!ENTITY BibTeX [0m
    [22m[35m  "<Alt Only='LaTeX'>{Bib\TeX}</Alt><Alt Not='LaTeX'>BibTeX</Alt>">[0m
    [22m[35m<!ENTITY MeatAxe "<Package>MeatAxe</Package>">[0m
    [22m[35m<!ENTITY XGAP   "<Package>XGAP</Package>">[0m
    [22m[35m<!ENTITY copyright [0m
    [22m[35m  "<Alt Only='LaTeX'>{\copyright}</Alt><Alt Not='LaTeX'>(C)</Alt>">[0m
    [22m[35m[0m
    [22m[35m[0m
    [22m[35m<!-- ==================================================================[0m
    [22m[35m     The following describes the "innermost" documentation text which [0m
    [22m[35m     can occur at various places in the document like for example[0m
    [22m[35m     section headings. It does neither contain further sectioning [0m
    [22m[35m     elements nor environments like Enums or Lists. [0m
    [22m[35m     ================================================================== -->[0m
    [22m[35m[0m
    [22m[35m<!ENTITY % InnerText "#PCDATA |[0m
    [22m[35m                      Alt |[0m
    [22m[35m                      Emph | E |[0m
    [22m[35m                      Par | P | [0m
    [22m[35m                      Keyword | K | Arg | A | Quoted | Q | Code | C | [0m
    [22m[35m                      File | F | Button | B | Package |[0m
    [22m[35m                      M | Math | Display | [0m
    [22m[35m                      Example | Listing | Log | Verb |[0m
    [22m[35m                      URL | Email | Homepage | Cite | Label | [0m
    [22m[35m                      Ref | Index" >[0m
    [22m[35m[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Alt (%InnerText;)*>     <!-- This is only to allow "Only" and[0m
    [22m[35m                                       "Not" attributes for normal text -->[0m
    [22m[35m<!ATTLIST Alt Only CDATA #IMPLIED[0m
    [22m[35m              Not  CDATA #IMPLIED>[0m
    [22m[35m[0m
    [22m[35m<!-- The following elements declare a certain block of InnerText to[0m
    [22m[35m     have a certain property. They are non-terminal and can contain[0m
    [22m[35m     any InnerText recursively. -->[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Emph (%InnerText;)*>    <!-- Emphasize something -->[0m
    [22m[35m<!ELEMENT E    (%InnerText;)*>    <!-- the same as shortcut -->[0m
    [22m[35m[0m
    [22m[35m[0m
    [22m[35m<!-- The following is an empty element marking a paragraph boundary. -->[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Par EMPTY>    <!-- this is intentionally empty! -->[0m
    [22m[35m<!ELEMENT P EMPTY>      <!-- this is intentionally empty! -->[0m
    [22m[35m[0m
    [22m[35m[0m
    [22m[35m<!-- The following elements mark a word or sentence to be of a certain[0m
    [22m[35m     kind, such that it can  be typeset differently. They are terminal[0m
    [22m[35m     elements that should only contain  character data. But we have to[0m
    [22m[35m     allow  Alt elements  for handling  special characters.  For these[0m
    [22m[35m     elements we introduce  a long name - which is  easy to remember -[0m
    [22m[35m     and a  short name - which  you may prefer because  of the shorter[0m
    [22m[35m     markup. -->[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Keyword (#PCDATA|Alt)*>  <!-- Keyword -->[0m
    [22m[35m<!ELEMENT K (#PCDATA|Alt)*>        <!-- Keyword (shortcut) -->[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Arg (#PCDATA|Alt)*>      <!-- Argument -->[0m
    [22m[35m<!ELEMENT A (#PCDATA|Alt)*>        <!-- Argument (shortcut) -->[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Code (#PCDATA|Alt|A)*>   <!-- GAP code -->[0m
    [22m[35m<!ELEMENT C (#PCDATA|Alt|A)*>      <!-- GAP code (shortcut) -->[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT File (#PCDATA|Alt)*>     <!-- Filename -->[0m
    [22m[35m<!ELEMENT F (#PCDATA|Alt)*>        <!-- Filename (shortcut) -->[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Button (#PCDATA|Alt)*>   <!-- "Button" (also Menu, Key) -->[0m
    [22m[35m<!ELEMENT B (#PCDATA|Alt)*>        <!-- "Button" (shortcut) -->[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Package (#PCDATA|Alt)*>   <!-- A package name -->[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Quoted (%InnerText;)*>   <!-- Quoted (in quotes) text -->[0m
    [22m[35m<!ELEMENT Q (%InnerText;)*>        <!-- Quoted text (shortcut) -->[0m
    [22m[35m[0m
    [22m[35m[0m
    [22m[35m<!-- The following elements contain mathematical formulae. They are [0m
    [22m[35m     terminal elements that contain character data in TeX notation. -->[0m
    [22m[35m[0m
    [22m[35m<!-- Math with well defined translation to text output -->[0m
    [22m[35m<!ELEMENT M (#PCDATA|A|Arg|Alt)*>[0m
    [22m[35m<!-- Normal TeX math mode formula -->[0m
    [22m[35m<!ELEMENT Math (#PCDATA|A|Arg|Alt)*>   [0m
    [22m[35m<!-- TeX displayed math mode formula -->[0m
    [22m[35m<!ELEMENT Display (#PCDATA|A|Arg|Alt)*>[0m
    [22m[35m[0m
    [22m[35m[0m
    [22m[35m<!-- The  following  elements  contain  GAP related  text  like  code,[0m
    [22m[35m     session  logs or  examples. They  are all  terminal elements  and[0m
    [22m[35m     consist of character data which is normally typeset verbatim. The[0m
    [22m[35m     different  types  of  the  elements only  control  how  they  are[0m
    [22m[35m     treated. -->[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Example (#PCDATA)>  <!-- This is subject to the automatic [0m
    [22m[35m                                   example checking mechanism -->[0m
    [22m[35m<!ELEMENT Log (#PCDATA)>      <!-- This not -->[0m
    [22m[35m<!ELEMENT Listing (#PCDATA)>  <!-- This is just for code listings -->[0m
    [22m[35m<!ATTLIST Listing Type CDATA #IMPLIED> <!-- a comment about the type of[0m
    [22m[35m                                            listed code, may appear in[0m
    [22m[35m                                            output -->[0m
    [22m[35m[0m
    [22m[35m<!-- One  further  verbatim element,  this is truely  verbatim without[0m
    [22m[35m     any processing and intended  for ASCII substitutes of complicated[0m
    [22m[35m     displayed formulae or tables. -->[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Verb  (#PCDATA)> [0m
    [22m[35m[0m
    [22m[35m<!-- The following  elements are  for cross-referencing  purposes like[0m
    [22m[35m     URLs, citations,  references, and  the index. All  these elements[0m
    [22m[35m     are  terminal and  need special  methods  to make  up the  actual[0m
    [22m[35m     output during document generation. -->[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT URL (#PCDATA|Alt)*>    <!-- Can we define this better? -->[0m
    [22m[35m<!ATTLIST URL Text CDATA #IMPLIED>   <!-- This is for output formats[0m
    [22m[35m                                          that have links like HTML -->[0m
    [22m[35m[0m
    [22m[35m<!-- The following two are actually URLs, but the element name determines[0m
    [22m[35m     the type. -->[0m
    [22m[35m     [0m
    [22m[35m<!ELEMENT Email (#PCDATA|Alt)*>[0m
    [22m[35m<!ELEMENT Homepage (#PCDATA|Alt)*>[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Cite EMPTY>[0m
    [22m[35m<!ATTLIST Cite Key CDATA #REQUIRED[0m
    [22m[35m               Where CDATA #IMPLIED>[0m
    [22m[35m               [0m
    [22m[35m<!ELEMENT Label EMPTY>[0m
    [22m[35m<!ATTLIST Label Name CDATA #REQUIRED>[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Ref EMPTY>[0m
    [22m[35m<!ATTLIST Ref Func      CDATA #IMPLIED[0m
    [22m[35m              Oper      CDATA #IMPLIED[0m
    [22m[35m              Meth      CDATA #IMPLIED[0m
    [22m[35m              Filt      CDATA #IMPLIED[0m
    [22m[35m              Prop      CDATA #IMPLIED[0m
    [22m[35m              Attr      CDATA #IMPLIED[0m
    [22m[35m              Var       CDATA #IMPLIED[0m
    [22m[35m              Fam       CDATA #IMPLIED[0m
    [22m[35m              InfoClass CDATA #IMPLIED[0m
    [22m[35m              Chap      CDATA #IMPLIED[0m
    [22m[35m              Sect      CDATA #IMPLIED[0m
    [22m[35m              Subsect   CDATA #IMPLIED[0m
    [22m[35m              Appendix  CDATA #IMPLIED[0m
    [22m[35m              Text      CDATA #IMPLIED[0m
    [22m[35m[0m
    [22m[35m              Label     CDATA #IMPLIED[0m
    [22m[35m              BookName  CDATA #IMPLIED[0m
    [22m[35m              Style (Text|Number) #IMPLIED>  <!-- normally automatic -->[0m
    [22m[35m[0m
    [22m[35m<!-- Note that  only one attribute  of Ref is used  normally. BookName[0m
    [22m[35m     and  Style  can  be  specified in  addition  to  handle  external[0m
    [22m[35m     references and the typesetting style of the reference. -->[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Index (%InnerText;)*>[0m
    [22m[35m<!ATTLIST Index Key    CDATA #IMPLIED[0m
    [22m[35m                Subkey CDATA #IMPLIED>[0m
    [22m[35m[0m
    [22m[35m[0m
    [22m[35m<!-- ==================================================================[0m
    [22m[35m     The following  describes the normal documentation  text which can[0m
    [22m[35m     occur  at various  places in  the document.  It does  not contain[0m
    [22m[35m     further sectioning elements. As  opposed to the InnerText element[0m
    [22m[35m     it can contain environments like enumerations, lists, and such.[0m
    [22m[35m     ================================================================== -->[0m
    [22m[35m[0m
    [22m[35m<!ENTITY % Text "%InnerText; | List | Enum | Table">[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Item ( %Text;)*>[0m
    [22m[35m<!ELEMENT Mark ( %InnerText;)*>[0m
    [22m[35m<!ELEMENT BigMark ( %InnerText;)*>[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT List ( ((Mark,Item)|(BigMark,Item)|Item)+ )>[0m
    [22m[35m<!ATTLIST List Only CDATA #IMPLIED[0m
    [22m[35m               Not  CDATA #IMPLIED>[0m
    [22m[35m<!ELEMENT Enum ( Item+ )>[0m
    [22m[35m<!ATTLIST Enum Only CDATA #IMPLIED[0m
    [22m[35m               Not  CDATA #IMPLIED>[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Table ( Caption?, (Row | HorLine)+ )>[0m
    [22m[35m<!ATTLIST Table Label   CDATA #IMPLIED[0m
    [22m[35m                Only    CDATA #IMPLIED[0m
    [22m[35m                Not     CDATA #IMPLIED[0m
    [22m[35m                Align   CDATA #REQUIRED>    <!-- A TeX tabular string -->[0m
    [22m[35m                <!-- We allow | and l,c,r, nothing else -->[0m
    [22m[35m<!ELEMENT Row   ( Item+ )>[0m
    [22m[35m<!ELEMENT HorLine EMPTY>[0m
    [22m[35m<!ELEMENT Caption ( %InnerText;)*>[0m
    [22m[35m[0m
    [22m[35m<!-- ==================================================================[0m
    [22m[35m     We start defining some things within the overall structure:[0m
    [22m[35m     ================================================================== -->[0m
    [22m[35m[0m
    [22m[35m<!-- The TitlePage consists of several sub-elements: -->[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT TitlePage (Title, Subtitle?, Version?, Author+, Date?, Abstract?,[0m
    [22m[35m                     Copyright? , Acknowledgements? , Colophon? )>[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Title (%Text;)*>[0m
    [22m[35m<!ELEMENT Subtitle (%Text;)*>[0m
    [22m[35m<!ELEMENT Version (%Text;)*>[0m
    [22m[35m<!ELEMENT Author (%Text;)*>    <!-- There may be more than one Author! -->[0m
    [22m[35m<!ELEMENT Date (%Text;)*>[0m
    [22m[35m<!ELEMENT Abstract (%Text;)*>[0m
    [22m[35m<!ELEMENT Copyright (%Text;)*>[0m
    [22m[35m<!ELEMENT Acknowledgements (%Text;)*>  [0m
    [22m[35m<!ELEMENT Colophon (%Text;)*>[0m
    [22m[35m[0m
    [22m[35m[0m
    [22m[35m<!-- The following things just specify some information about the[0m
    [22m[35m     corresponding parts of the Book: -->[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT TableOfContents EMPTY>[0m
    [22m[35m<!ELEMENT Bibliography EMPTY>[0m
    [22m[35m<!ATTLIST Bibliography Databases CDATA #REQUIRED[0m
    [22m[35m                       Style CDATA #IMPLIED>[0m
    [22m[35m<!ELEMENT TheIndex EMPTY>[0m
    [22m[35m[0m
    [22m[35m[0m
    [22m[35m<!-- ==================================================================[0m
    [22m[35m     Now we go on with the overall structure by defining the sectioning [0m
    [22m[35m     structure, which includes the Synopsis element: [0m
    [22m[35m     ================================================================== -->[0m
    [22m[35m[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Subsection (%Text;| Heading)*>[0m
    [22m[35m<!ATTLIST Subsection Label CDATA #IMPLIED> <!-- For reference purposes -->[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT ManSection (((Func, Returns?) | (Oper, Returns?) | [0m
    [22m[35m                       (Meth, Returns?) | (Filt, Returns?) | [0m
    [22m[35m                       (Prop, Returns?) | (Attr, Returns?) |[0m
    [22m[35m                       Var | Fam | InfoClass)+, Description )>[0m
    [22m[35m<!ATTLIST ManSection Label CDATA #IMPLIED> <!-- For reference purposes -->[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Returns (%Text;)*>[0m
    [22m[35m<!ELEMENT Description (%Text;)*>[0m
    [22m[35m[0m
    [22m[35m[0m
    [22m[35m<!-- Note that  the ManSection element  is actually a  subsection with[0m
    [22m[35m     respect  to labelling,  referencing, and  counting of  sectioning[0m
    [22m[35m     elements. -->[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Func EMPTY>[0m
    [22m[35m<!ATTLIST Func Name  CDATA #REQUIRED[0m
    [22m[35m               Label CDATA #IMPLIED[0m
    [22m[35m               Arg   CDATA #REQUIRED[0m
    [22m[35m               Comm  CDATA #IMPLIED>[0m
    [22m[35m[0m
    [22m[35m<!-- Note  that Arg  contains the  full list  of arguments,  including[0m
    [22m[35m     optional  parts,  which  are   denoted  by  square  brackets  [].[0m
    [22m[35m     Arguments   are  separated   by  whitespace,   commas  count   as[0m
    [22m[35m     whitespace. -->[0m
    [22m[35m[0m
    [22m[35m<!-- Note further that  even if Name and Label are  CDATA (and not ID)[0m
    [22m[35m     Label must make up a unique identifier. -->[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Oper EMPTY>[0m
    [22m[35m<!ATTLIST Oper Name  CDATA #REQUIRED[0m
    [22m[35m               Label CDATA #IMPLIED[0m
    [22m[35m               Arg   CDATA #REQUIRED[0m
    [22m[35m               Comm  CDATA #IMPLIED>[0m
    [22m[35m             [0m
    [22m[35m<!ELEMENT Meth EMPTY>[0m
    [22m[35m<!ATTLIST Meth Name  CDATA #REQUIRED[0m
    [22m[35m               Label CDATA #IMPLIED[0m
    [22m[35m               Arg   CDATA #REQUIRED[0m
    [22m[35m               Comm  CDATA #IMPLIED>[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Filt EMPTY>[0m
    [22m[35m<!ATTLIST Filt Name  CDATA #REQUIRED[0m
    [22m[35m               Label CDATA #IMPLIED[0m
    [22m[35m               Arg   CDATA #IMPLIED[0m
    [22m[35m               Comm  CDATA #IMPLIED[0m
    [22m[35m               Type  CDATA #IMPLIED>  [0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Prop EMPTY>[0m
    [22m[35m<!ATTLIST Prop Name  CDATA #REQUIRED[0m
    [22m[35m               Label CDATA #IMPLIED[0m
    [22m[35m               Arg   CDATA #REQUIRED[0m
    [22m[35m               Comm  CDATA #IMPLIED>[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Attr EMPTY>[0m
    [22m[35m<!ATTLIST Attr Name  CDATA #REQUIRED[0m
    [22m[35m               Label CDATA #IMPLIED[0m
    [22m[35m               Arg   CDATA #REQUIRED[0m
    [22m[35m               Comm  CDATA #IMPLIED>[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Var  EMPTY>[0m
    [22m[35m<!ATTLIST Var  Name  CDATA #REQUIRED[0m
    [22m[35m               Label CDATA #IMPLIED[0m
    [22m[35m               Comm  CDATA #IMPLIED>[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Fam  EMPTY>[0m
    [22m[35m<!ATTLIST Fam  Name  CDATA #REQUIRED[0m
    [22m[35m               Label CDATA #IMPLIED[0m
    [22m[35m               Comm  CDATA #IMPLIED>[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT InfoClass EMPTY>[0m
    [22m[35m<!ATTLIST InfoClass Name  CDATA #REQUIRED[0m
    [22m[35m                    Label CDATA #IMPLIED[0m
    [22m[35m                    Comm  CDATA #IMPLIED>[0m
    [22m[35m[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Heading (%InnerText;)*>[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Section (%Text;| Heading | Subsection | ManSection)*>[0m
    [22m[35m<!ATTLIST Section Label CDATA #IMPLIED>    <!-- For reference purposes -->[0m
    [22m[35m[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Chapter (%Text;| Heading | Section)*>[0m
    [22m[35m<!ATTLIST Chapter Label CDATA #IMPLIED>    <!-- For reference purposes -->[0m
    [22m[35m[0m
    [22m[35m[0m
    [22m[35m<!-- Note that  the entity %InnerText; is  documentation that contains[0m
    [22m[35m     neither sectioning  elements nor environments  like enumerations,[0m
    [22m[35m     but  only  formulae,  labels, references,  citations,  and  other[0m
    [22m[35m     terminal elements. -->[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Appendix (%Text;| Heading | Section)*>[0m
    [22m[35m<!ATTLIST Appendix Label CDATA #IMPLIED>   <!-- For reference purposes -->[0m
    [22m[35m[0m
    [22m[35m<!-- Note that  an Appendix  is exactly  the same  as a  Chapter. They[0m
    [22m[35m     differ only in the numbering. -->[0m
    [22m[35m[0m
    [22m[35m<!-- ==================================================================[0m
    [22m[35m     At last we define the overall structure of a gapdoc Book:[0m
    [22m[35m     ================================================================== -->[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Body  ( %Text;| Chapter | Section )*>[0m
    [22m[35m[0m
    [22m[35m<!ELEMENT Book (TitlePage,[0m
    [22m[35m                TableOfContents?,[0m
    [22m[35m                Body,[0m
    [22m[35m                Appendix*,[0m
    [22m[35m                Bibliography?,[0m
    [22m[35m                TheIndex?)>[0m
    [22m[35m<!ATTLIST Book Name CDATA #REQUIRED>[0m
    [22m[35m               [0m
    [22m[35m<!-- Note  that  the  entity  %Text; is  documentation  that  contains[0m
    [22m[35m     no  further sectioning  elements but  possibly environments  like[0m
    [22m[35m     enumerations,  and formulae,  labels, references,  and citations.[0m
    [22m[35m     -->[0m
    [22m[35m[0m
    [22m[35m<!-- ============================================================== -->[0m
    [22m[35m[0m
    [22m[35m[0m
  [22m[35m------------------------------------------------------------------[0m
  
