[1XB The File [11Xgapdoc.dtd[1X[0X For easier reference we repeat here the complete content of the file [11Xgapdoc.dtd[0m. [4X-------------------------- gapdoc.dtd --------------------------[0X [4X<?xml version="1.0" encoding="UTF-8"?>[0X [4X<!-- ==================================================================[0X [4X gapdoc.dtd - XML Document type definition for GAP documentation[0X [4X By Frank Lübeck and Max Neunhöffer[0X [4X ================================================================== -->[0X [4X[0X [4X<!-- $Id: gapdoc.dtd,v 1.17 2008/04/30 15:29:10 gap Exp $ -->[0X [4X[0X [4X<!-- Note that this definition goes "bottom-up" because entities can only[0X [4X be used after their definition in the file. -->[0X [4X[0X [4X[0X [4X<!-- ==================================================================[0X [4X Some entities:[0X [4X ================================================================== -->[0X [4X[0X [4X<!-- The standard XML entities: -->[0X [4X[0X [4X<!ENTITY lt "&#60;"> [0X [4X<!ENTITY gt ">"> [0X [4X<!ENTITY amp "&#38;"> [0X [4X<!ENTITY apos "'"> [0X [4X<!ENTITY quot """>[0X [4X[0X [4X[0X [4X<!-- The following were introduced in GAPDoc version < 1.0, it is no longer[0X [4X necessary to take care of LaTeX special characters[0X [4X (we keep the entities with simplified definitions for compatibility) -->[0X [4X [0X [4X<!ENTITY tamp "&">[0X [4X<!ENTITY tlt "<">[0X [4X<!ENTITY tgt ">">[0X [4X<!ENTITY hash "#">[0X [4X<!ENTITY dollar "$">[0X [4X<!ENTITY percent "%">[0X [4X<!ENTITY tilde "~">[0X [4X<!ENTITY bslash "\\">[0X [4X<!ENTITY obrace "{">[0X [4X<!ENTITY cbrace "}">[0X [4X<!ENTITY uscore "_">[0X [4X<!ENTITY circum "^">[0X [4X[0X [4X<!-- ==================================================================[0X [4X Our predefined entities:[0X [4X ================================================================== -->[0X [4X[0X [4X<!ENTITY nbsp " ">[0X [4X<!ENTITY ndash "–">[0X [4X<!ENTITY GAP "<Package>GAP</Package>">[0X [4X<!ENTITY GAPDoc "<Package>GAPDoc</Package>">[0X [4X<!ENTITY TeX [0X [4X "<Alt Only='LaTeX'>{\TeX}</Alt><Alt Not='LaTeX'>TeX</Alt>">[0X [4X<!ENTITY LaTeX [0X [4X "<Alt Only='LaTeX'>{\LaTeX}</Alt><Alt Not='LaTeX'>LaTeX</Alt>">[0X [4X<!ENTITY BibTeX [0X [4X "<Alt Only='LaTeX'>{Bib\TeX}</Alt><Alt Not='LaTeX'>BibTeX</Alt>">[0X [4X<!ENTITY MeatAxe "<Package>MeatAxe</Package>">[0X [4X<!ENTITY XGAP "<Package>XGAP</Package>">[0X [4X<!ENTITY copyright "©">[0X [4X[0X [4X<!-- and unicode math symbols -->[0X [4X<!ENTITY CC "ℂ" > <!-- double struck -->[0X [4X<!ENTITY ZZ "ℤ" >[0X [4X<!ENTITY NN "ℕ" >[0X [4X<!ENTITY PP "ℙ" >[0X [4X<!ENTITY QQ "ℚ" >[0X [4X<!ENTITY HH "ℍ" >[0X [4X<!ENTITY RR "ℝ" >[0X [4X[0X [4X[0X [4X<!-- ==================================================================[0X [4X The following describes the "innermost" documentation text which [0X [4X can occur at various places in the document like for example[0X [4X section headings. It does neither contain further sectioning [0X [4X elements nor environments like Enums or Lists. [0X [4X ================================================================== -->[0X [4X[0X [4X<!ENTITY % InnerText "#PCDATA |[0X [4X Alt |[0X [4X Emph | E |[0X [4X Par | P | Br |[0X [4X Keyword | K | Arg | A | Quoted | Q | Code | C | [0X [4X File | F | Button | B | Package |[0X [4X M | Math | Display | [0X [4X Example | Listing | Log | Verb |[0X [4X URL | Email | Homepage | Address | Cite | Label | [0X [4X Ref | Index |[0X [4X Ignore" >[0X [4X[0X [4X[0X [4X<!ELEMENT Alt (%InnerText;)*> <!-- This is only to allow "Only" and[0X [4X "Not" attributes for normal text -->[0X [4X<!ATTLIST Alt Only CDATA #IMPLIED[0X [4X Not CDATA #IMPLIED>[0X [4X[0X [4X<!-- The following elements declare a certain block of InnerText to[0X [4X have a certain property. They are non-terminal and can contain[0X [4X any InnerText recursively. -->[0X [4X[0X [4X<!ELEMENT Emph (%InnerText;)*> <!-- Emphasize something -->[0X [4X<!ELEMENT E (%InnerText;)*> <!-- the same as shortcut -->[0X [4X[0X [4X[0X [4X<!-- The following is an empty element marking a paragraph boundary. -->[0X [4X[0X [4X<!ELEMENT Par EMPTY> <!-- this is intentionally empty! -->[0X [4X<!ELEMENT P EMPTY> <!-- the same as shortcut -->[0X [4X[0X [4X<!-- And here is an element for forcing a line break, not starting[0X [4X a new paragraph. -->[0X [4X[0X [4X<!ELEMENT Br EMPTY> <!-- a forced line break -->[0X [4X[0X [4X<!-- The following elements mark a word or sentence to be of a certain[0X [4X kind, such that it can be typeset differently. They are terminal[0X [4X elements that should only contain character data. But we have to[0X [4X allow Alt elements for handling special characters. For these[0X [4X elements we introduce a long name - which is easy to remember -[0X [4X and a short name - which you may prefer because of the shorter[0X [4X markup. -->[0X [4X[0X [4X<!ELEMENT Keyword (#PCDATA|Alt)*> <!-- Keyword -->[0X [4X<!ELEMENT K (#PCDATA|Alt)*> <!-- Keyword (shortcut) -->[0X [4X[0X [4X<!ELEMENT Arg (#PCDATA|Alt)*> <!-- Argument -->[0X [4X<!ELEMENT A (#PCDATA|Alt)*> <!-- Argument (shortcut) -->[0X [4X[0X [4X<!ELEMENT Code (#PCDATA|Alt|A|Arg)*> <!-- GAP code -->[0X [4X<!ELEMENT C (#PCDATA|Alt|A|Arg)*> <!-- GAP code (shortcut) -->[0X [4X[0X [4X<!ELEMENT File (#PCDATA|Alt)*> <!-- Filename -->[0X [4X<!ELEMENT F (#PCDATA|Alt)*> <!-- Filename (shortcut) -->[0X [4X[0X [4X<!ELEMENT Button (#PCDATA|Alt)*> <!-- "Button" (also Menu, Key) -->[0X [4X<!ELEMENT B (#PCDATA|Alt)*> <!-- "Button" (shortcut) -->[0X [4X[0X [4X<!ELEMENT Package (#PCDATA|Alt)*> <!-- A package name -->[0X [4X[0X [4X<!ELEMENT Quoted (%InnerText;)*> <!-- Quoted (in quotes) text -->[0X [4X<!ELEMENT Q (%InnerText;)*> <!-- Quoted text (shortcut) -->[0X [4X[0X [4X[0X [4X<!-- The following elements contain mathematical formulae. They are [0X [4X terminal elements that contain character data in TeX notation. -->[0X [4X[0X [4X<!-- Math with well defined translation to text output -->[0X [4X<!ELEMENT M (#PCDATA|A|Arg|Alt)*>[0X [4X<!-- Normal TeX math mode formula -->[0X [4X<!ELEMENT Math (#PCDATA|A|Arg|Alt)*> [0X [4X<!-- TeX displayed math mode formula -->[0X [4X<!ELEMENT Display (#PCDATA|A|Arg|Alt)*>[0X [4X[0X [4X[0X [4X<!-- The following elements contain GAP related text like code,[0X [4X session logs or examples. They are all terminal elements and[0X [4X consist of character data which is normally typeset verbatim. The[0X [4X different types of the elements only control how they are[0X [4X treated. -->[0X [4X[0X [4X<!ELEMENT Example (#PCDATA)> <!-- This is subject to the automatic [0X [4X example checking mechanism -->[0X [4X<!ELEMENT Log (#PCDATA)> <!-- This not -->[0X [4X<!ELEMENT Listing (#PCDATA)> <!-- This is just for code listings -->[0X [4X<!ATTLIST Listing Type CDATA #IMPLIED> <!-- a comment about the type of[0X [4X listed code, may appear in[0X [4X output -->[0X [4X[0X [4X<!-- One further verbatim element, this is truely verbatim without[0X [4X any processing and intended for ASCII substitutes of complicated[0X [4X displayed formulae or tables. -->[0X [4X[0X [4X<!ELEMENT Verb (#PCDATA)> [0X [4X[0X [4X<!-- The following elements are for cross-referencing purposes like[0X [4X URLs, citations, references, and the index. All these elements[0X [4X are terminal and need special methods to make up the actual[0X [4X output during document generation. -->[0X [4X[0X [4X<!ELEMENT URL (#PCDATA|Alt|Link|LinkText)*> <!-- Link, LinkText[0X [4X variant for case where text needs further markup -->[0X [4X<!ATTLIST URL Text CDATA #IMPLIED> <!-- This is for output formats[0X [4X that have links like HTML -->[0X [4X<!ELEMENT Link (%InnerText;)*> <!-- the URL -->[0X [4X<!ELEMENT LinkText (%InnerText;)*> <!-- text for links, can contain markup -->[0X [4X<!-- The following two are actually URLs, but the element name determines[0X [4X the type. -->[0X [4X<!ELEMENT Email (#PCDATA|Alt|Link|LinkText)*>[0X [4X<!ELEMENT Homepage (#PCDATA|Alt|Link|LinkText)*>[0X [4X[0X [4X<!-- Those who still want to give postal addresses can use the following[0X [4X element. Use <Br/> for specifying typical line breaks -->[0X [4X[0X [4X<!ELEMENT Address (#PCDATA|Alt|Br)*>[0X [4X[0X [4X<!ELEMENT Cite EMPTY>[0X [4X<!ATTLIST Cite Key CDATA #REQUIRED[0X [4X Where CDATA #IMPLIED>[0X [4X [0X [4X<!ELEMENT Label EMPTY>[0X [4X<!ATTLIST Label Name CDATA #REQUIRED>[0X [4X[0X [4X<!ELEMENT Ref EMPTY>[0X [4X<!ATTLIST Ref Func CDATA #IMPLIED[0X [4X Oper CDATA #IMPLIED[0X [4X Meth CDATA #IMPLIED[0X [4X Filt CDATA #IMPLIED[0X [4X Prop CDATA #IMPLIED[0X [4X Attr CDATA #IMPLIED[0X [4X Var CDATA #IMPLIED[0X [4X Fam CDATA #IMPLIED[0X [4X InfoClass CDATA #IMPLIED[0X [4X Chap CDATA #IMPLIED[0X [4X Sect CDATA #IMPLIED[0X [4X Subsect CDATA #IMPLIED[0X [4X Appendix CDATA #IMPLIED[0X [4X Text CDATA #IMPLIED[0X [4X[0X [4X Label CDATA #IMPLIED[0X [4X BookName CDATA #IMPLIED[0X [4X Style (Text|Number) #IMPLIED> <!-- normally automatic -->[0X [4X[0X [4X<!-- Note that only one attribute of Ref is used normally. BookName[0X [4X and Style can be specified in addition to handle external[0X [4X references and the typesetting style of the reference. -->[0X [4X[0X [4X<!-- For explicit index entries (Func and so on should cause an[0X [4X automatically generated index entry). Use the attributes Key,[0X [4X Subkey for sorting (simplified, without markup). The Subkey value[0X [4X also gets printed. Use the optional Subkey element if the printed[0X [4X version needs some markup. -->[0X [4X<!ELEMENT Index (%InnerText;|Subkey)*>[0X [4X<!ATTLIST Index Key CDATA #IMPLIED[0X [4X Subkey CDATA #IMPLIED>[0X [4X<!ELEMENT Subkey (%InnerText;)*>[0X [4X[0X [4X[0X [4X<!-- ==================================================================[0X [4X The following describes the normal documentation text which can[0X [4X occur at various places in the document. It does not contain[0X [4X further sectioning elements. In addition to InnerText it can contain [0X [4X environments like enumerations, lists, and such.[0X [4X ================================================================== -->[0X [4X[0X [4X<!ENTITY % Text "%InnerText; | List | Enum | Table">[0X [4X[0X [4X<!ELEMENT Item ( %Text;)*>[0X [4X<!ELEMENT Mark ( %InnerText;)*>[0X [4X<!ELEMENT BigMark ( %InnerText;)*>[0X [4X[0X [4X<!ELEMENT List ( ((Mark,Item)|(BigMark,Item)|Item)+ )>[0X [4X<!ATTLIST List Only CDATA #IMPLIED[0X [4X Not CDATA #IMPLIED>[0X [4X<!ELEMENT Enum ( Item+ )>[0X [4X<!ATTLIST Enum Only CDATA #IMPLIED[0X [4X Not CDATA #IMPLIED>[0X [4X[0X [4X<!ELEMENT Table ( Caption?, (Row | HorLine)+ )>[0X [4X<!ATTLIST Table Label CDATA #IMPLIED[0X [4X Only CDATA #IMPLIED[0X [4X Not CDATA #IMPLIED[0X [4X Align CDATA #REQUIRED> <!-- A TeX tabular string -->[0X [4X <!-- We allow | and l,c,r, nothing else -->[0X [4X<!ELEMENT Row ( Item+ )>[0X [4X<!ELEMENT HorLine EMPTY>[0X [4X<!ELEMENT Caption ( %InnerText;)*>[0X [4X[0X [4X<!-- ==================================================================[0X [4X We start defining some things within the overall structure:[0X [4X ================================================================== -->[0X [4X[0X [4X<!-- The TitlePage consists of several sub-elements: -->[0X [4X[0X [4X<!ELEMENT TitlePage (Title, Subtitle?, Version?, TitleComment?, [0X [4X Author+, Date?, Address?, Abstract?, Copyright?, [0X [4X Acknowledgements? , Colophon? )>[0X [4X[0X [4X<!ELEMENT Title (%Text;)*>[0X [4X<!ELEMENT Subtitle (%Text;)*>[0X [4X<!ELEMENT Version (%Text;)*>[0X [4X<!ELEMENT TitleComment (%Text;)*>[0X [4X<!ELEMENT Author (%Text;)*> <!-- There may be more than one Author! -->[0X [4X<!ELEMENT Date (%Text;)*>[0X [4X<!ELEMENT Abstract (%Text;)*>[0X [4X<!ELEMENT Copyright (%Text;)*>[0X [4X<!ELEMENT Acknowledgements (%Text;)*> [0X [4X<!ELEMENT Colophon (%Text;)*>[0X [4X[0X [4X[0X [4X<!-- The following things just specify some information about the[0X [4X corresponding parts of the Book: -->[0X [4X[0X [4X<!ELEMENT TableOfContents EMPTY>[0X [4X<!ELEMENT Bibliography EMPTY>[0X [4X<!ATTLIST Bibliography Databases CDATA #REQUIRED[0X [4X Style CDATA #IMPLIED>[0X [4X<!ELEMENT TheIndex EMPTY>[0X [4X[0X [4X<!-- ==================================================================[0X [4X The Ignore element can be used everywhere to include further[0X [4X information in a GAPDoc document which is not intended for the [0X [4X standard converters (e.g., source code, not yet finished stuff,[0X [4X and so on. This information can be extracted by special converter [0X [4X routines, more precise information about the content of an Ignore[0X [4X element can be given by the "Remark" attribute.[0X [4X ================================================================== -->[0X [4X[0X [4X<!ELEMENT Ignore (%Text;| Chapter | Section | Subsection | ManSection |[0X [4X Heading)*>[0X [4X<!ATTLIST Ignore Remark CDATA #IMPLIED>[0X [4X [0X [4X<!-- ==================================================================[0X [4X Now we go on with the overall structure by defining the sectioning [0X [4X structure, which includes the Synopsis element: [0X [4X ================================================================== -->[0X [4X[0X [4X[0X [4X<!ELEMENT Subsection (%Text;| Heading)*>[0X [4X<!ATTLIST Subsection Label CDATA #IMPLIED> <!-- For reference purposes -->[0X [4X[0X [4X<!ELEMENT ManSection ( Heading?, [0X [4X ((Func, Returns?) | (Oper, Returns?) | [0X [4X (Meth, Returns?) | (Filt, Returns?) | [0X [4X (Prop, Returns?) | (Attr, Returns?) |[0X [4X Var | Fam | InfoClass)+, Description )>[0X [4X<!ATTLIST ManSection Label CDATA #IMPLIED> <!-- For reference purposes -->[0X [4X[0X [4X<!ELEMENT Returns (%Text;)*>[0X [4X<!ELEMENT Description (%Text;)*>[0X [4X[0X [4X[0X [4X<!-- Note that the ManSection element is actually a subsection with[0X [4X respect to labelling, referencing, and counting of sectioning[0X [4X elements. -->[0X [4X[0X [4X<!ELEMENT Func EMPTY>[0X [4X<!ATTLIST Func Name CDATA #REQUIRED[0X [4X Label CDATA #IMPLIED[0X [4X Arg CDATA #REQUIRED[0X [4X Comm CDATA #IMPLIED>[0X [4X[0X [4X<!-- Note that Arg contains the full list of arguments, including[0X [4X optional parts, which are denoted by square brackets [].[0X [4X Arguments are separated by whitespace, commas count as[0X [4X whitespace. -->[0X [4X[0X [4X<!-- Note further that although Name and Label are CDATA (and not ID)[0X [4X Label must make up a unique identifier. -->[0X [4X[0X [4X<!ELEMENT Oper EMPTY>[0X [4X<!ATTLIST Oper Name CDATA #REQUIRED[0X [4X Label CDATA #IMPLIED[0X [4X Arg CDATA #REQUIRED[0X [4X Comm CDATA #IMPLIED>[0X [4X [0X [4X<!ELEMENT Meth EMPTY>[0X [4X<!ATTLIST Meth Name CDATA #REQUIRED[0X [4X Label CDATA #IMPLIED[0X [4X Arg CDATA #REQUIRED[0X [4X Comm CDATA #IMPLIED>[0X [4X[0X [4X<!ELEMENT Filt EMPTY>[0X [4X<!ATTLIST Filt Name CDATA #REQUIRED[0X [4X Label CDATA #IMPLIED[0X [4X Arg CDATA #IMPLIED[0X [4X Comm CDATA #IMPLIED[0X [4X Type CDATA #IMPLIED> [0X [4X[0X [4X<!ELEMENT Prop EMPTY>[0X [4X<!ATTLIST Prop Name CDATA #REQUIRED[0X [4X Label CDATA #IMPLIED[0X [4X Arg CDATA #REQUIRED[0X [4X Comm CDATA #IMPLIED>[0X [4X[0X [4X<!ELEMENT Attr EMPTY>[0X [4X<!ATTLIST Attr Name CDATA #REQUIRED[0X [4X Label CDATA #IMPLIED[0X [4X Arg CDATA #REQUIRED[0X [4X Comm CDATA #IMPLIED>[0X [4X[0X [4X<!ELEMENT Var EMPTY>[0X [4X<!ATTLIST Var Name CDATA #REQUIRED[0X [4X Label CDATA #IMPLIED[0X [4X Comm CDATA #IMPLIED>[0X [4X[0X [4X<!ELEMENT Fam EMPTY>[0X [4X<!ATTLIST Fam Name CDATA #REQUIRED[0X [4X Label CDATA #IMPLIED[0X [4X Comm CDATA #IMPLIED>[0X [4X[0X [4X<!ELEMENT InfoClass EMPTY>[0X [4X<!ATTLIST InfoClass Name CDATA #REQUIRED[0X [4X Label CDATA #IMPLIED[0X [4X Comm CDATA #IMPLIED>[0X [4X[0X [4X[0X [4X<!ELEMENT Heading (%InnerText;)*>[0X [4X[0X [4X<!ELEMENT Section (%Text;| Heading | Subsection | ManSection)*>[0X [4X<!ATTLIST Section Label CDATA #IMPLIED> <!-- For reference purposes -->[0X [4X[0X [4X[0X [4X<!ELEMENT Chapter (%Text;| Heading | Section)*>[0X [4X<!ATTLIST Chapter Label CDATA #IMPLIED> <!-- For reference purposes -->[0X [4X[0X [4X[0X [4X<!-- Note that the entity %InnerText; is documentation that contains[0X [4X neither sectioning elements nor environments like enumerations,[0X [4X but only formulae, labels, references, citations, and other[0X [4X terminal elements. -->[0X [4X[0X [4X<!ELEMENT Appendix (%Text;| Heading | Section)*>[0X [4X<!ATTLIST Appendix Label CDATA #IMPLIED> <!-- For reference purposes -->[0X [4X[0X [4X<!-- Note that an Appendix is exactly the same as a Chapter. They[0X [4X differ only in the numbering. -->[0X [4X[0X [4X<!-- ==================================================================[0X [4X At last we define the overall structure of a gapdoc Book:[0X [4X ================================================================== -->[0X [4X[0X [4X<!ELEMENT Body ( %Text;| Chapter | Section )*>[0X [4X[0X [4X<!ELEMENT Book (TitlePage,[0X [4X TableOfContents?,[0X [4X Body,[0X [4X Appendix*,[0X [4X Bibliography?,[0X [4X TheIndex?)>[0X [4X<!ATTLIST Book Name CDATA #REQUIRED>[0X [4X [0X [4X<!-- Note that the entity %Text; is documentation that contains[0X [4X no further sectioning elements but possibly environments like[0X [4X enumerations, and formulae, labels, references, and citations.[0X [4X -->[0X [4X[0X [4X<!-- ============================================================== -->[0X [4X[0X [4X[0X [4X------------------------------------------------------------------[0X