<!doctype linuxdoc system>
<article opts="makeidx">
<titlepag>
<title>Linuxdoc Reference
<subtitle>A introduction to the linuxdoc dtd</subtitle></title>
<author><name>Uwe B&oe;hme, &lt;uwe@hof.baynet.de&gt;</name></author>
<date>v1.1, 30 January 2000</date>
<abstract>
This article is intended to be a reference for the SGML document type
definition linuxdoc, which is coming along with the SGML text
formatting system version 1.0.
It should also be applicable to future versions which may be found at
<url url="http://www.hof.baynet.de/~uwe" name="My Homepage">.

</abstract></titlepag>
<toc>
<lof>
<lot>


<sect>Making of<p>

<sect1>Legal stuff

<p><nidx/copyright/Copyright &copy; 1997-2000 by Uwe B&oe;hme.
This document may be distributed under the terms set forth in the Linux
Documentation Project License at
<url url="http://metalab.unc.edu/LDP/COPYRIGHT.html"
name="LDP">.
Please contact the authors if you are unable to get the license.
This is free documentation.
It is distributed in the hope that it will be useful,
but without any warranty; without even the implied
warranty of merchantability or fitness for a particular purpose.

This document is not part of <nidx/ldp/<em/ldp/ (even if I took their
form of license).
I'm not yet playing in that league.

<sect1>Genesis

<p>This document was born trying to learn more about writing texts on my
linux system.
The one system looking like suitable to my needs was <idx/sgml-tools/
<url url="http://www.sgml-tools.org" name="SGML-Tools Organsation"> an the
<idx/linuxdoc/ dtd.

In [<em/SGML-Tools User's Guide 1.0 ($Revision$)/] (see section
<ref id="reference" name="Reference">) the overall structure is described
nice and easy.
Also [<em/Quick SGML Example, v1.0/] (see section <ref id="reference"
name="Reference">) was helpful, <bf/but/:

A lot of features are not mentioned.

On the way to learn more about it, I met [<em/The qwertz Document Type
Definition/] (see section <ref id="reference" name="Reference">).
It's as detailed as hoped, but it's not made for the linuxdoc dtd
<nidx/dtd/ (even if linuxdoc is based on <idx/qwertz/).

I tried a new approach:
Look at the <idx/dtd/<footnote>dtd = document type definition</footnote>
file itself, and try to understand it.

As time went by I noticed that I also forgot about some stuff,
or - at least - didn't point it out strong enough.
This will change within the next revision.

Any feedback you might have is welcome (especially help with English
spelling or grammar) by e-mail at <url url="mailto:uwe@hof.baynet.de"
name="Uwe B&oe;hme">.


<sect>Introduction
<p>
<nidx/principles/
<nidx/sgml/
The principle of any sgml'ed document (linuxdoc, docbook, html) is
more or less the same:

Don't write how it should <em/look like/, but write what it <em/is/.

This is a different approach than the standard
&quot;<idx/wysiwyg/&quot;<footnote/What you see is what you (should) get
(if you are a very lucky one and your computer wins the war against
buggy software)/ one<footnote>You might want to call it
<tt>wysiwym</tt>, i.e. &quot;What you see is what you mean&quot;</footnote>.
You do not tell the program that this line should be in a bigger font,
<bf/to look like/ a headline.
What you do is telling that this line <bf/is/ a headline.
You do not try to make your document <bf/look like/ a
report, but you tag it <bf/to be/ a report.
So you <em/tag/ the text with the appropriate &lt;tag&gt;.


The big advantages of this approache are:
<enum>
<item>You do not need to mess around with fontsetting, line gaps or
anything directly connected to the layout.
<item><nidx/portability/
You describe your document in a more abstract way so it's more
reusable and can be mapped to different media types.
<footnote/If you ever tried the reuse a document written in a
specialized wysiwy layout for html then you know what I'm
talking about./
</enum>

In addition in all sgml-style documents you will find <idx/named symbol/s
This is a concept to expand the charset of the document and to avoid
inconsitences in decision of the parser, how to interpret or map some
special characters.

How should the parser know weather a <tt/&lt;/ character is
starting a tag or should be printed directly.
This is solved by the <idx/named character/ <em/lt/.
If you write <tt/&amp;lt;/ this one will result to <tt/&lt;/ in your
text.
For a list of the named symbols see
<ref id="namedsymbols" name="Named Symbols">.

<descrip>
<tag/Hint for the new user/
It might be a good idea, to download this document not only as a dvi or
ps document, but also to download the sgml source.
This offers you the chance to look into the sources, if you find something
within this article, wich might fit your needs.
</descrip>


<sect>A minimalistic document<label id="crash">
<p>
In this section you'll find what you'll need for a minimalistic linuxdoc
dtd conform document.
It's intended to give a first touch.
Skip this section, if you already now the principles.

<sect1>Step By Step
<p>
The steps you have to do to create a nice linuxdoc document and map it to
the form you need are:

<itemize>
<item>Take a plain text editor of your choice.
<item>Create a file and name it (or later save it as) e.g. <tt/start.sgml/.
<item>Type the document
<item>Save the file and close your editor.
<item>Run the checker by typing <tt>sgmlcheck&nbsp;start.sgml</tt>.
<item>If you get errors reported, reopen your document in your editor again
and try to correct it<footnote>The error messages of <tt><idx/sgmlcheck/</tt>
will give you a hint about the type of error and also line and column where
it occurred.</footnote>.
Run the checker again until no more errors occur.
<item>Now you have to decide what's your document for.
<nidx/mapping/Take the apropriate parser mapper combination and translate
your document.
To find the mappers available in the SGML-Tools see table
<ref id="tmapper" name="SGML-Tools mappers for sgml documents">.

<table loc="ht">
<tabular ca="ll">
type|to produce@<hline>@
<tt/sgml2html start.sgml/|Hypertext markup language for web browsers@
<tt/sgml2lyx start.sgml/|Lyx or KLyx wysiwym textformat@
<tt/sgml2info start.sgml/|Info page for UN*X info@
<tt/sgml2latex start.sgml/|DVI output@
<tt/sgml2latex --output=tex start.sgml/|pure tex output@
<tt/sgml2latex --output=ps start.sgml/|postscript output@
<tt/sgml2rtf start.sgml/|rich text format@
<tt/sgml2txt start.sgml/|pure text@
</tabular>
<caption>SGML-Tools mappers for sgml documents<label id="tmapper">
</table>
</itemize>


<sect1>A Startup Document
<p>
We start with a simple document (the numbers and colon in the beginning
of the line are for explanation, don't type it!):

<nidx/example!startup document/<code>
1: &lt;!doctype linuxdoc system>
2: &lt;notes>
3: &lt;title>A Small Linuxdoc Example&etago;title>
4: &lt;p>Hello &lt;em>world&etago;em>.&etago;p>
5: &lt;p>&lt;bf>Here&etago;bf> we are.&etago;p>
6: &etago;notes>
</code>

Now we take a look at the single lines:
<enum>
<item>
A linuxdoc document has to start, like all SGML conform documents,
with the <em><idx>preamble</idx></em>.
If you like you can take it as a piece of necessary magic, or you can
try to find more information about SGML.
The preamble is indicating to the SGML-parser, which dtd
(document type definition) it should use for checking the syntax of the
document.

<item>
Open the <em/document class/:
You have to decide, wich type of document you want to write.
See section <ref id="linuxdoc" name="Document Classes"> for detailed
description about that <em/document classes/.
The necessary header information, wich is depending on the
<em/document class/ is also explained there.
In our case we place a <tt/&lt;notes&gt;/ tag forming a note, wich is
indicating a simple unstructured document.

<item>
Even if optional it's a good idea to give a <em/title/ to the document.
That's done with the <tt/&lt;title&gt;/ tag.

<item>
A paragraph marked by the <tt/&lt;p&gt;/ tag, containing the word <tt/world/
wich is <em/inline/ <em/emphasize/d by the <tt/&lt;em&gt;/ tag.

<item>
Another completely tagged paragraph, with another word <em/inline/
<em/boldface/d by the <tt/&lt;bf&gt;/ tag.

<item>
Here we close the open <em/document class/ tag.
</enum>

The same example may be written a little bit shorter, by leaving out tags
which are placed automatically by the parser, and by using shortened tags:

<nidx/example!startup document short/<code>
1: &lt;!doctype linuxdoc system>
2: &lt;notes>
3: &lt;title>A Small Linuxdoc Example
4: &lt;p>Hello &lt;em/world/.
5:
6: &lt;bf/Here/ we are.
7: &etago;notes>
</code>


Now we look at the single lines again:
<enum>
<item>
The <em/preambel/.

<item>
The document class (also unchanged).

<item>
The <em/title/. It's not closed, because the <tt/p/ tag in the next line is
implicitely closing it.

<item>
The paragraph is implicitly closing the <em/title/. The <em/emphasize/ tag is
noted in short form. The short notation you can use only if your tagged text
doesn't contain a litteral <tt>/</tt>. The <em/paragraph/ is not explicitly
closed in this line.

<item>
The empty line here is the reason, why you don't need to close the previous
<em/paragraph/ and don't need to open the next one.
A empty line is interpreted as a end of the current paragraph and the
start of a new one.

<item>
Another paragraph (not opened directly), with another short <em/inline/ tag.

<item>Closing the open <em/document class/ tag, wich is implicitly also
closing the still open paragraph.
</enum>

Maybe now it's a little bit more clear, who you have to work with tags.


<sect>Document Classes<label id="linuxdoc">
<p>
<nidx/documentclass/
<code>
&lt;!element linuxdoc o o 
        (sect | chapt | article | report | 
	 book | letter | telefax | slides | notes | manpage ) >
</code>

This is describing the overall class of the document, so naturally it has
(leave alone the doctype definition) to be the first tag enclosing your whole
document.
Some of the tags namely the <tt/sect/ and <tt/chapt/ (see section
<ref id="sections" name="Sectioning Tags">) doesn't make any sense taken them
standalone despite being included as part of more complete classed document,
so we'll describe them later as a part of the other document classes.
Decide first which of the top mentioned document classes fits the type of the
document you want to write best.

To find a detailed description of the document classes see table
<ref id="tclasses" name="Document classes">.

<table loc="ht">
<tabular ca="ll">
Chapter|Class tag@<hline>@
<ref id="article" name="Article Tag">|<tt/&lt;atricle&gt;/@
<ref id="report" name="Report Tag">|<tt/&lt;report&gt;/@
<ref id="book" name="Book Tag">|<tt/&lt;book&gt;/@
<ref id="letter" name="Letter Tag">|<tt/&lt;letter&gt;/@
<ref id="telefax" name="Telefax Tag">|<tt/&lt;telefax&gt;/@
<ref id="slides" name="Slides Tag">|<tt/&lt;slides&gt;/@
<ref id="notes" name="Notes Tag">|<tt/&lt;notes&gt;/@
<ref id="manpage" name="Manpage Tag">|<tt/&lt;manpage&gt;/
</tabular>
<caption>Document classes<label id="tclasses">
</table>

To me the <em/article class/ is the most important one.
Thatīs the reason why itīs described first and most detailed.

<sect1>Article Tag<label id="article">
<p>
<nidx/article!documentclass/
<nidx/documentclass!article/
<nidx/article/
<nidx/tag!article/
<code>
&lt;!element article - -
        (titlepag, header?,
         toc?, lof?, lot?, p*, sect*,
         (appendix, sect+)?, biblio?) +(footnote)>

<!attlist article
        opts cdata "null">
</code>
You can see that the <em/article/ needs some tags included. They will be
explained in consequence.

The <em/options/ attribute (<tt/opts/) takes a comma separated list with thy
different style (&latex; <tt/.sty/) sheets to inlude within the document.


<sect2>Titlepage Tag<label id="titlepag">
<p>
<nidx/titlepage/
<nidx/tag!titlepage/
<code>
&lt;!element titlepag o o (title, author, date?, abstract?)>
</code>
The <em/Titlepage/ Tag (<tt/titlepag/) is implicitly placed as soon a you
started your <em/document class/. You don't need to write it explicitly.
Anyway you have to note it's mandatory tags. It's purpouse is to describe the
layout and elements of the titlepages.


<sect3>Title Tag<label id="title">
<p>
<nidx/title/
<nidx/tag!title/
<code>
&lt;!element title - o (%inline, subtitle?) +(newline)>
</code>
Each <em/document class/ wich owns a titlepage of course needs a <em/title/,
wich is noted down with a <tt/&lt;title&gt;/ tag.
You don't need to close thatone.
A title may contain a <em/subtitle/ started by the <tt/&lt;subtitle&gt;/ tag.

If you look at the headerpage of this document you'll find it to be mapped
from the tags:

<nidx/example!title/
<nidx/example!subtitle/
<verb>
&lt;title>Linuxdoc Reference
&lt;subtitle>A introduction to the linuxdoc dtd
</verb

<sect3>Author Tag<label id="author">
<p>
<nidx/author/
<nidx/tag!author/
<code>
&lt;!element author - o (name, thanks?, inst?,
                        (and, name, thanks?, inst?)*)>
</code>
Usually you place the (your) name here.
People should know who wrote the document,
so you place a <tt/&lt;author&gt;/ tag.
If you don't note the <tt/name/ tag itīs imlicitly placed.
The <em/author/ has also optional items wich can be tagged within the
<tt/author/ tag.

If you want to say thanks to anyone (might be somebody providing usefull
information) you place it within the <tt/&lt;thanks&gt;/ tag.
Next, if your writing is done in your position of an <em/institution/
staff member, place it within the <tt/&lt;inst&gt;/ tag.

The <tt/&lt;and&gt;/ tag is starting the whole story again,
as if there would be a second <tt/author/ tag would have been started.
Clearly thisone is for coauthors.

<sect3>Date Tag<label id="date">
<p>
<nidx/date/
<nidx/tag!date/
If you want to mark your document with a <em/date/, you can do that with the
<tt/&lt;date&gt;/ tag.
<footnote/It's not checked weather you really place a valid date here, but
don't abuse it./

<sect3>Abstract Tag<label id="abstract">
<p>
<nidx/abstract/
<nidx/tag!abstract/
This tag is intended for an <em/abstract/ description of your document.
Don't mix the <tt/&lt;abstract&gt;/ tag withh an <em/indruduction/ wich is
likely to be placed inside the first <em/section/ of your document
(see section <ref id="sections" name="Sectioning">).


<sect2>Header Tag<label id="header">
<p>
<nidx/header/
<nidx/tag!header/
<code>
&lt;!element header - - (lhead, rhead) &gt;
&lt;!element lhead - o (%inline)&gt;
&lt;!element rhead - o (%inline)&gt;
</code>
A <tt/&lt;header&gt;/ tag specifies what should be printed at the top of each
page.
It consists of a <em/left heading/ i.e. <tt/&lt;lhead&gt;/ and a <em/right
heading/ i.e. <tt/&lt;rhead&gt;/).
Both elements are required, if a heading is used at all, but either may be
left empty, so that the effect of having only a left or right heading can be
achieved easily enough.

As we will see, an initial header can be given after the title page.
Afterwards, a new header can be given for each new chapter or section. The
header printed on a page is the one which is in effect at the end of the
current page. So that the header will be that of the last section starting on
the page.


<sect2>Table Of Contents Tag<label id="toc">
<p>
<nidx/toc/<nidx/table of contense/
<nidx/tag!toc/
If you place the <tt/&lt;toc&gt;/ tag, a <em/table of contense/ will be
generated, by looking the section heading, and adding references.
<footnote/In a hyperref document, this might be hyperrefs, in a &latex;
document you will come to see the pagenumbers./
Only the sections major to the <tt/sect3/ will be included.


<sect2>List Of Figures Tag<label id="lof">
<p>
<nidx/lof/<nidx/list of figures/
<nidx/tag!lof/
If you place the <tt/&lt;lof&gt;/ tag, a <em/list of figures/ will be
generated, by looking the captions of the figures, and adding references.


<sect2>List Of Tables Tag<label id="lot">
<p>
<nidx/lot/<nidx/list of tables/
<nidx/tag!lot/
If you place the <tt/&lt;lot&gt;/ tag, a <em/list of tables/ will be
generated, by looking the captions of the tables, and adding references.


<sect2>Body <label id="body">
<p>
<nidx/body/
Here you place various sections according section
<ref id="sections" name="Sectioning">.
There is no <em/body tag/.
The body starts with the first <em/chapter/, <em/section/ or <em/paragraph/.


<sect2>Appendix Tag<label id="appendix">
<p>
<nidx/appendix/
<nidx/tag!appendix/
In the end of the article you can place the <tt/&lt;appendix&gt;/ tag
<footnote/Really you shouldn't think about people (e.g. m.d.s knifing your
belly here./, wich starts a area of appended sections.
The <tt/appendix/ tag implies a different section numbering type to the
following section tags.

<sect2>Bibliography Tag<label id="biblio">
<p>
<nidx/bibliography/<nidx/biblio/
<nidx/tag!biblio/
It's intended to gather all the <tt/&lt;cites&gt;/ and <tt/&lt;ncites&gt;/
you used within your document. The <tt/&lt;biblio&gt;/ tag will be replaced
by a <em/bibliography/ according the mapping type of the document,
maybe by hyperrefs maybe by section numbers or anything wich might be useful.
<footnote/Until now I've not been able to create a <tt/.bbl/ file, so I
wasn't able to verify./


<sect2>Footnote Tag<label id="footnote">
<p>
<nidx/footnote/
<nidx/tag!footnote/
A <em/footnote/ may be place in any spot of your document.
Exactly the spot in yout document where you are placing
the <tt/&lt;footnote&gt;/ tag should be the one where the reference to the
tagged text shuld be rendered.
It should be used for additional information, wich is not necessary for
understanding the primary purpouse of yor document
but might be usefull, interesting, or funny.
<footnote/Whereas the last one is not always true, even if you try./
anywhere within the article.

<sect1>Report Tag<label id="report">
<p>
<nidx/report/
<nidx/tag!report/
<nidx/documentclass!report/
<code>
&lt;!element report - -
        (titlepag, header?, toc?, lof?, lot?, p*,
         chapt*, (appendix, chapt+)?, biblio?) +(footnote)>
</code>
The <em/report/ is a document class with a chapter oriented approach.
So within a document clasified by a <tt/&lt;report&gt;/ tag the
toplevel is grouped by the <tt/&lt;chapt&gt;/ tag (see <ref id="sections"
name="Sectioning">). The rest of the structure is identical to the
<em/article/ class <ref id="article" name="Article Tag">.


<sect1>Book Tag<label id="book">
<p>
<nidx/book/
<nidx/tag!book/
<nidx/documentclass!book/
<code>
&lt;!element book  - -
        (titlepag, header?, toc?, lof?, lot?, p*, chapt*,
         (appendix, chapt+)?, biblio?) +(footnote) >
</code>
You will notice that the <em/book/ element is identical to the <em/report/
<ref id="report" name="Report Tag">.
So anything valid there is also valid if you classify your document with a
<tt/&lt;book&gt;/ tag.


<sect1>Letter Tag<label id="letter">
<p>
<nidx/letter/
<nidx/tag!letter/
<nidx/documentclass!letter/
<code>
&lt;!entity  % addr "(address?, email?, phone?, fax?)" >

&lt;!element letter - -
	(from, %addr, to, %addr, cc?, subject?, sref?, rref?,
         rdate?, opening, p+, closing, encl?, ps?)>
</code>

Also the purpose of the <em/letter/ document class should be quite self
explaining. Place a <tt/&lt;letter&gt;/ tag if you want to write one.

The letter's tags ar described in table
<ref id="tletter" name="Tags in a letter">

<table loc="ht">
<tabular ca="lll">
tag|mandatory|what's it@<hline>@
from|yes|from sender@
address|no|sender's address@
email|no|sender's email@
phone|no|sender's phone@
fax|no|sender's fax@
to|yes|receiver@
address|no|receiver's address@
email|no|receiver's email@
phone|no|receiver's phone@
fax|no|receiver's fax@
cc|no|carbon copy@
subject|no|letters subject@
sref|no|sender's reference@
rref|no|receiver's reference@
rdate|no|received date??@
opening|yes|opening@
paragraphs|yes|see <ref id="paragraph" name="Paragraphs">@
closing|yes|closing@
encl|no|enclosure@
ps|no|post scriptum@
</tabular>
<caption>Tags in a letter<label id="tletter">
</table>

<sect1>Telefax Tag<label id="telefax">
<p>
<nidx/telefax/
<nidx/tag!telefax/
<nidx/documentclass!telefax/
<code>
&lt;!element telefax - -
	(from, %addr, to, address, email?,
         phone?, fax, cc?, subject?,
         opening, p+, closing, ps?)>
</code>
Overall the structure is same to the <em/letter/ class.
The only difference is that with the
<tt/&lt;telefax&gt;/ tag the receiver's <tt/&lt;fax&gt;/
tag becomes mandatory.
<footnote/Should be obvious why./


<sect1>Slides Tag<label id="slides">
<p>
<nidx/slides/
<nidx/tag!slides/
<nidx/documentclass!slides/
<code>
&lt;!element slides - - (slide*) >
</code>
The <em/slides/ class is intended for overhead slides and transparencies.
So the structure of a document classified by a <tt/&lt;slides&gt;/ tag is a
very simple one.
It contains single slide(s) startes by a <tt/&lt;slide&gt;/ tag.
Nothing else.
If not explicitly written the first <em/slide/ is started implicitly.

<sect2>Slide Tag<label id="slide">
<p>
<code>
&lt;!element slide - o (title?, p+) >
</code>
A <tt/&lt;slide&gt;/ tag is only allowed within the <em/slides/ document class.
A <em/slide/ may contain:

A <em/title/ (see section <ref id="title" name="The Title Tag">)
and one or more <em/paragraph/s
(see section <ref id="paragraph" name="Paragraphs">).
That's all.

<sect1>Note Tag<label id="notes">
<p>
<nidx/note/
<nidx/tag!note/
<nidx/documentclass!note/
<code>
&lt;!element notes - - (title?, p+) >
</code>
Intended as a class for personal notes the structure is even more simplified
than the <em/slides/ document class
(see <ref id="slide" name="The Slide Tag">).
After classifying a document with the <tt/&lt;notes&gt;/ tag only a
<em/title/ (see section <ref id="title" name="The Title Tag">)
and one or more <em/paragraph/s
(see section <ref id="paragraph" name="Paragraphs">) are allowed.


<sect1>Manual Page Tag<label id="manpage">
<p>
<nidx/manpage/
<nidx/tag!manpage/
<nidx/documentclass!manpage/
<code>
&lt;!element manpage - - (sect1*)
	-(sect2 | f | %mathpar | figure | tabular |
          table | %xref | %thrm )>
</code>
This document class is intended for writing <em/manual pages/, fitting the
need of the <tt/man/ programm.
In a document classified by a <tt/&lt;manpage&gt;/ tag the topleve
section tag is the <tt/sect1/ tag (see section <ref id="sections"
name="Sectioning">), for easy pasting manual pages into an <em/article/
or <em/book/ document class.
The exception here to the nortmal sectioning is, that there is only one
subsection level allowed (<tt/sect2/).


<sect>Inlines
<p>
<nidx/inline/
<code>
&lt;!entity % inline
	" (#pcdata | f| x| %emph; |sq| %xref | %index | file )* " >
</code>
<em/Inlines/ may occure anywhere within the text, and doesn't have any
influence to the textflow or logical structure of the document.

<descrip>
<tag/#pcdata/
<em/Parsed character data/ is just normal written text within the flow wich
may contain other inlines.

<tag/f/
Inline <em/mathematical formulas/ according to the <tt/maths.dtd/. See
<ref id="f" name="The Formula Tag">.

<tag/x/
The <em/external/ tag wich is bypassing the parser.
Tagged data walks directly into the mapped file.
See chapter <ref id="x" name="The External Tag"> for detailed information.

<tag/%emph;/
<em/Emphasizes/ of the text. See chapter <ref id="emph" name="Emphasizes">.

<tag/sq/
<em/Shortquotes/ within the textflow.
See chapter <ref id="sq" name="The Short Quote Tad">.

<tag/%xref/
<em/XReferecnces/ within the text or external references.
See chapter <ref id="labelandreference" name="Labels and References">.

<tag/%index/
Again I can't explain this one. If you can, please mail.

<tag/file/
Again I can't explain this one
(I only could guess about picture files in eps).
If you can, please mail.
</descrip>



<sect>Sectioning<label id="sections">
<p>
<code>
&lt;!element chapt - o (%sect, sect*) +(footnote)>
&lt;!element sect  - o (%sect, sect1*) +(footnote)>
&lt;!element sect1 - o (%sect, sect2*)>
&lt;!element sect2 - o (%sect, sect3*)>
&lt;!element sect3 - o (%sect, sect4*)>
&lt;!element sect4 - o (%sect)>
</code>
The <em/sectioning/<footnote/Also the <tt/chapt/ tag is a <em/sectioning/
tag.</footnote> is done by the according elements, forming the section tree.
They are bringing the various paragraphs within our document to follow a
nice tree.
The top level tag and the allowed depth is varying with the <em/document
class/ (see section <ref id="linuxdoc" name="The Document Class">).

The normal hierarchy is
<verb>
chapt
    sect
        sect1
            sect2
                sect3
                    sect4
</verb>

Just take a book, look the table of conetents and you will see.

Each of the tags out of the <em/sectionings/ has nearly the same syntax.
All of them owe a <em/heading/.
The <tt/heading/ tag is placed implicitly if you don't note it down.
Also the each of the sectioning tags may contain a <tt/header/ tag, changing
the current document header (see section <ref id="header"
name="The Header Tag">).

Within the you may place subordinate sections and <em/paragraphs/
(see <ref id="paragraph" name="Paragraphs">).

Some of the sectioning tags may only appear in special document classes (<ref
id="linuxdoc" name="Document Classes">).

<descrip>
<tag/Hint:/It's wise to place a <em/label/ tag after the text of the
<em/section/ tag, even if you don't want to refer to the section
<ref id="labelandreference" name="Labels and references">.
Later when your document grows you might want to.
</descrip>


<sect>Paragraphs<label id="paragraph">
<p>
<code>
&lt;!entity % sectpar
        " %par; | figure | tabular | table | %mathpar; |
	  %thrm; | %litprog; ">

&lt;!entity % par 	
	"  %list; | comment | lq | quote | tscreen " >

&lt;!entity % litprog " code | verb " >

</code>

Each of the here described tags form a paragraph.

For obvious reason a paragraph is normally<footnote/The behaviour of the
exceptions <tt/figure/ and <tt/tabular/ are explained there./ starting and
ending with a new line.
<footnote/How else you would notice it's a paragraph ?/

There are some tags, wich always form a paragraph, and one way to form a
paragraph implicitly.
There are various types of paragraphs, because not every type of paragraph
is allowed to appear in every document class in every place.

The different types of paragraphs are explained in the next sections.
For more details about <tt/%litprog;/ see
<ref id="litprog" name="Literate Programming">.


<sect1>Normal Paragraph<label id="par">
<p>
Normal paragraphs can be formed in two ways:

<sect2>Paragraph tag<label id="p">
<p>
The <tt/&lt;p&gt;/ tag is starting a new <em/paragraph/.
This tag is mandatory if you want to finish a section header without
explicitly closing the <tt/sect/ tag.
In this case <tt/&lt;p&gt;/ tag then closes the <tt/&lt;sect&gt;/ tag
automatically.

<sect2>Empty Newline<label id="nn">
<p>
A empty line between two paragraph is implicitly starting a new
<em/paragraph/.
Take care within <tt/descriptive/ lists. There a empty <tt/&lt;tag&gt;/
tag will not be paragraphed by an empty line.

<sect1>List-like Paragraphs<label id="listlike">
<p>
<code>
&lt;!entity % list
        " list | itemize | enum | descrip " >
</code>
This four tags indicate the starting of a list-like paragraph.
Within each of the lists the single items are separated by an
<em/item tag/.
<code>
&lt;!element item o o ((%inline; | %sectpar;)*, p*) >
</code>
As you can see, a item may again contain paragraphs (and therefore
also may contain other lists - even of a different type).

<sect2>List Tag<label id="list">
<p>
<code>
&lt;!element list - - (item+)>
</code>

The <em/list tag/ will be mapped to a nacked list without bullets, numers or
anything else.

To see it, I place a small example:
<code>
&lt;list>
&lt;item>A point
&lt;item>Another one
&lt;item>Last
&lt;/list>
</code>

Will look (depending on the mapping) like:

<list>
<item>A point
<item>Another one
<item>Last
</list>

<sect2>Itemize Tag<label id="itemize">
<p>
<code>
&lt;!element itemize - - (item+)>
</code>

The <em/itemize tag/ will be mapped to a list with bullets,
wich is usually place for lists where the order of the items is not
important.

A small example:
<code>
&lt;itemize>
&lt;item>A point
&lt;item>Another one
&lt;item>Last
&lt;/itemize>
</code>

Will look (depending on the mapping) like:

<itemize>
<item>A point
<item>Another one
<item>Last
</itemize>


<sect2>Enum Tag<label id="enum">
<p>
<code>
&lt;!element enum - - (item+)>
</code>

The <em/enum tag/ will be mapped to a list with numbers.

A small example:
<code>
&lt;enum>
&lt;item>A point
&lt;item>Another one
&lt;item>Last
&lt;/enum>
</code>

Will look (depending on the mapping) like:

<enum>
<item>A point
<item>Another one
<item>Last
</enum>


<sect2>Descrip Tag<label id="descrip">
<p>
<nidx/descrip/
<nidx/tag!descrip/
<code>
&lt;!element descrip - - (tag?, p+)+ >
</code>

The <em/descrip tag/ will be mapped to a descriptive list.
The concept here is a little bit different than with the other types of lists
mentioned above.

Here you place a <em/tag/ (this time the tag's name is really litteraly
<tt/tag/) wich is described later on.


<nidx/example!descrip/A small example:
<code>
&lt;descrip>
&lt;tag/sgml/structured general markup language.
&lt;tag/html - hypertext markup language/
A sgml implementation.
It contains some concepts about linking information together in a very
convenient way.
This made it to be so successful and to become the standard for documents
published by the internet.
&lt;tag/internet/A worldwide connected internet (internet here as a
technical term)
&lt;/descrip>
</code>

Will look (depending on the mapping) like:

<descrip>
<tag/sgml/structured general markup language.
<tag/html - hypertext markup language/
A sgml implementation. It contains some concepts about linking information together
in a very covenient way. This made it to be so successfull and to become the standard for
documents published by the internet.
<tag/internet/A worldwide connected internet (internet here as a technical term)
</descrip>


<sect1>Figures and Tables<label id="figtab">
<p>
The <tt/&lt;figure&gt;/ and the <tt/&lt;table&gt;/ tags form very special
paragraphs.
Not always they stay within the normal textflow.
Both of the tags can hold a <tt/loc/ (<em/loction/) attribute wich is telling
how to handle the flow of this special paragraph.

The value of the <tt/loc/ attribute is a string of up to four letters, where
each letter declares a location at which the figure or table <bf/may/ appear,
as described in table <ref id="tlocations" name="Table Locations">.

<table loc="ht">
<tabular ca="lll">
h|here|At the same location as in the SGML file@
t|top|At the top of a page@
b|bottom|At the bottom of a page@
p|page|On a separate page only with figures and tables
</tabular>
<caption>Table Locations<label id="tlocations">
</table>

The default value of the loc attribute is <tt/top/.


<sect2>Table Tag<label id="table">
<p>
<nidx/table/
<nidx/tag!table/
<code>
&lt;!element table   - - (tabular, caption?) >
</code>

As you can see a <em/table/ consists of the <tt/&lt;table&gt;/ tag itself,
including a <tt/&lt;tabular&gt;/ tag and a optional <tt/&lt;caption&gt;/ tag.

The <tt/&lt;tabular&gt;/ tag may also be placed without a <tt/&lt;table&gt;/
tag so it is described in detail in it's own section
(see <ref id="tabular" name="Tabular Tag">).

The <em/caption/ is used also to place the entry for the
<em/list of tables/ if you stated one
(see <ref id="lot" name="The List Of Tables Tag">).

A short example will show how it's working together.

<nidx/example!table/<verb>
&lt;table loc="ht">
&lt;tabular ca="lcr">
Look|this|table@
Isn't|it|nice@
1.234|mixed|columns
&etago;tabular>
&lt;caption>A sample table
&etago;table>
</verb>

<table loc="ht">
<tabular ca="lcr">
Look|this|table@
Isn't|it|nice@
1.234|mixed|columns
</tabular>
<caption>A sample table
</table>

The <em/caption/ <sq/A sample table/ would be the name in the <em/list of
tables/.

<sect2>Figure Tag<label id="figure">
<p>
<nidx/figure/
<nidx/tag!figure/
<code>
&lt;!element figure - - ((eps | ph ), img*, caption?)>
</code>
The usage of the <tt/&lt;figure&gt;/ tag is equivalent to the
<tt/&lt;table&gt;/ tag.
Instead of the <tt/&lt;tabular&gt;/ tag you place either a <tt/&lt;eps&gt;/
or a <tt/&lt;ph&gt;/ tag.

<sect3>Encapsulated Postscript&trade; Tag<label id="eps">
<p>
<nidx/figure!eps/
<nidx/tag!figure!eps/
<code>
&lt;!attlist eps
        file cdata #required
        height cdata "5cm"
        angle cdata "0">
</code>
The <tt/&lt;eps&gt;/ tag is intended for including a external file in
<em/encapsulated postscript&trade;/ format into the document.

The attributes of the <tt/&lt;eps&gt;/ tag are:

<descrip>

<tag/file/
The <tt/file/ attribute needs the <em/file name/ of a encapsulated
postscript&trade; file ending with a <tt/.ps/ suffix.
The mandatory <tt/.ps/ suffix must not be written.

<tag/height/
The <em/height/ of the space the file is zoomed to.
If you don't specify it defaults to 5cm.
Take care that there's no spcae between the number and the length unit
(<tt/i/, <tt/cm/).

<tag/angle/
The <em/angle/ is given in normal degrees (0-360) and as the number is
increasing the file is rotated counter clockwise.

</descrip>

A example:

<nidx/example!figure!eps/<verb>
&lt;figure loc="here">
&lt;eps file="logo" height="4cm" angle="15">
&lt;img src="logo.gif">
&lt;caption>A included encapsulated postscript&ero;trade;
&etago;figure>
</verb>

The <em/img/ tag is ignored by &latex;-mapping and useful for
html, 'cause most browsers don't know about eps.


<figure loc="here">
<eps file="logo" height="4cm" angle="15">
<img src="logo.gif">
<caption>A included encapsulated postscript&trade; file.
</figure>

The <em/caption/ here would go to the <em/list of figures/ as decribed in
section <ref id="lof" name="The List Of Figures Tag">.


<sect3>Placeholder Tag<label id="ph">
<p>
<nidx/figure!ph/
<nidx/tag!figure!ph/
<code>
&lt;!attlist ph
        vspace cdata #required>
</code>
This tag doesn't place anything but keeps a clean space for good old
manual picture pasting.
The space kept free is destined by the <tt/vspace/ attribte.
<bf/Caveat:/ The numerical argument for the <tt/vspace/ attribte needs a
unit directly behind the number. Don't leave a space there
(same as for the <tt/height/ attribute in
<ref id="eps" name ="Encapsulated Postscript&trade; Tag">.

<nidx/example!figure!ph/<verb>
&lt;figure loc="ht">
&lt;ph vspace="5cm">
&lt;caption>A blank space.
&etago;figure>
</verb>

Results to:

<figure loc="ht">
<ph vspace="5cm">
<caption>A blank space for gluing a photo
</figure>

At this point you might want to look for your scissors and the glue.


<sect1>Tabular Tag<label id="tabular">
<p>
<code>
&lt;!element tabular - - 
       (hline?, %tabrow, (rowsep, hline?, %tabrow)*, caption?) >
</code>
The <tt/&lt;tabular&gt;/ tag is interpreted as an own paragraph, if it is
written standalone.
Together with a <tt/&lt;table&gt;/ tag it gets part of the paragraph of the
<tt/&lt;table&gt;/ tag (see <ref id="table" name="Table tag">).

Within the <tt/tabular/ tag you have rows an collumns wich are separating the
text.
You have to have at least one collumn and one row.<footnote/Wouldn't be very
usefull otherwise./

The <tt/&lt;tabular&gt;/ tag has a mandatory <tt/ca/ attribute for <em/collumn
allignement/.
The collumn allignement holds a single character for each collumn in their
order from left to right.
The chracters you may place per collumn described in table
<ref id="tcalign" name="Collumns allignements">

<table loc="ht">
<tabular ca="ll">
char|alignment@<hline>@
l|left@
c|centered@
r|right
</tabular>
<caption>Column alignments<label id="tcalign">
</table>

In theory you should be able to place a | into the <tt/ca/ attribure for
drawing a horizontal line for separating two collumns.
The problem: It doesn't work.
The parser accepts it nicely, only the &latex; output will map <tt/|/ to
<tt/{$|$}/ wich is of course the set for four collumns with invalid collumn
allignement for all four collums.
I'll try to figure out what to do about it.

The columns within the <tt/&lt;tabular&gt;/ tag are separated by a <em/collumn
separator/, the <tt/&lt;colsep&gt;/ tag. The character <tt/|/ is translated to
<tt/&lt;colsep&gt;/ so you can also place that one instead<footnote/Less
typing, more fun./.

What's valid for collumns is also valid for rows. You separate the by a
<em/row separator/, the <tt/&lt;rowsep&gt;/ tag.
The character <tt/@/ is translated to <tt/&lt;rowsep&gt;/.

Optional you can place a <em/horizontal line/ with the <tt/&lt;hline&gt;/ tag.
Take care with that one:
The SGML tools will parse it nicely weather you place it in front of the row
you want under the line, or behind the end of the row you want over it.
But the only place to write it without causing the parser to shout
&quot;error&quot; is to write it dircetly and without space or newline behind
the row separator.

<verb>
&lt;tabular ca="lcr">
Look|this|table@&lt;hline>
Isn't|it|nice@
1.234|mixed|columns@
&etago;tabular>
</verb>

Results in table <ref id="ttabularsample" name="Sample table for tabular tag">

<table loc="ht">
<tabular ca="lcr">
Look|this|table@<hline>@
Isn't|it|nice@
1.234|mixed|columns@
</tabular>
<caption>Sample table for tabular tag<label id="ttabularsample">
</table>

<descrip>
<tag/Attention:/In &latex; mapping everything works nice if you place a
<em/tabular tag/ without a <em/table tag/, only in the other mappings (e.g.
html) it will be messed up.
</descrip>

<sect1>Mathematical Paragraph<label id="mathpar">
<p>
<code>
&lt;!entity % mathpar " dm | eq " >
</code>

A <em/mathematical paragraph/ consits either of a <em/displayed formula/,
tagged by <tt/&lt;dm&gt;/<footnote/No, sorry, not for Deutschmark! ;-)/
or an <em/equation/, tagged by <tt/&lt;eq&gt;/.
They work very much the same.

Both of these tags contain a mathematical formula.
See <ref id="formula" name="Mathematical Formulas"> for the tags valid here.

<descrip>
<tag/Note:/Because neither Netscape nor Microsoft has seen any need
to add mathematical mappings to their browsers (like demanded and defined by
<em/w3c/), there is no nice way of mapping, or at least displaying the math
stuff in html. So if you view the online version, feel free to wonder what
nonsense this man is telling here. Might be you should take a glance at the
postscript version.
</descrip>


<sect2>Displayed Formula Tag<label id="dm">
<p>
This tag displays a <em/mathematical formula/ as a <em/paragraph/.
The formula is mapped centered as a single line<footnote/No guarantee for
that. You know: Mapping is a matter of taste./.

<verb>
&lt;dm>(a+b)&lt;sup/2/=a&lt;sup/2/+2ab+b&lt;sup/2/&etago;dm>
</verb>
Is mapped to:
<dm>(a+b)<sup/2/=a<sup/2/+2ab+b<sup/2/</dm>


<sect2>Equation Tag<label id="eq">
<p>
<verb>
&lt;dm>(a+b)&lt;sup/2/=a&lt;sup/2/+2ab+b&lt;sup/2/&etago;dm>
</verb>
Is mapped to:
<dm>(a+b)<sup/2/=a<sup/2/+2ab+b<sup/2/</dm>


<sect1>Theorem Paragraph<label id="thrm">
<p>
<code>
&lt;!entity % thrm 
        " def | prop | lemma | coroll | proof | theorem " >

&lt;!element def - - (thtag?, p+) >
&lt;!element prop - - (thtag?, p+) >
&lt;!element lemma - - (thtag?, p+) >
&lt;!element coroll - - (thtag?, p+) >
&lt;!element proof - - (p+) >
&lt;!element theorem - - (thtag?, p+) >
</code>
As you can see the different types of <em/theorem/ paragraphs are nearly
identical.
The only exception wich is a little bit different is the <em/proof/ wich
doesn't own a <tt/thtag/.
For all the others the <tt/thtag/ is giving the <em/tag/ of the theorem
paragraph.

Yust try to use that one, wich is fitting the meaning of what you are typing.

<verb>
&lt;thrm>
&lt;thtag>Alexander's thrm&etago;thtag>
Let &lt;f>&ero;lt;fi/G/&etago;f> be a set of non-trivially achievable subgoals
and &ero;mu; an order on &lt;f>&ero;lt;fi/G/&etago;f>. &ero;mu; is abstractly
indicative if and only if it is a linearization of
&lt;f>&lt;lim>&lt;op>&ero;mu;&etago;op>&lt;ll>&lt;fi/G/&etago;ll>&lt;ul>&ero;ast;&etago;ul>&etago;lim>&etago;f>.
&etago;theorem>
</verb>

The <tt/thrm/ is replaced by the adequate tag.

Maybe somebody knowing about mathematics would be shocked about my abuse of
the types, but I'm lazy so I simply copied the examples:

<em/Definition/ (<tt/def/):
<def><thtag>Alexander's Definition</thtag>
Let <f><fi/G/</f> be a set of nontrivially achievable subgoals and &mu;
an order on <f><fi/G/</f>. &mu; is abstractly indicative if and only
if it is a linearization of
<f><lim><op>&mu;</op><ll><fi>G</fi></ll><ul>&ast;</ul></lim></f>.
</def>

<em/Proposition/ (<tt/prop/):
<prop><thtag>Alexander's Proposition</thtag>
Let <f><fi/G/</f> be a set of nontrivially achievable subgoals and &mu;
an order on <f><fi/G/</f>. &mu; is abstractly indicative if and only
if it is a linearization of
<f><lim><op>&mu;</op><ll><fi>G</fi></ll><ul>&ast;</ul></lim></f>.
</prop>

<em/Lemma/ (<tt/lemma/):
<lemma><thtag>Alexander's Lemma</thtag>
Let <f><fi/G/</f> be a set of nontrivially achievable subgoals and &mu;
an order on <f><fi/G/</f>. &mu; is abstractly indicative if and only
if it is a linearization of
<f><lim><op>&mu;</op><ll><fi>G</fi></ll><ul>&ast;</ul></lim></f>.
</lemma>

<em/Corollation/ (<tt/coroll/):
<coroll><thtag>Alexander's Corollary</thtag>
Let <f><fi/G/</f> be a set of nontrivially achievable subgoals and &mu;
an order on <f><fi/G/</f>. &mu; is abstractly indicative if and only
if it is a linearization of
<f><lim><op>&mu;</op><ll><fi>G</fi></ll><ul>&ast;</ul></lim></f>.
</coroll>

<theorem><thtag>Alexander's Theorem</thtag>
Let <f><fi/G/</f> be a set of nontrivially achievable subgoals and &mu;
an order on <f><fi/G/</f>. &mu; is abstractly indicative if and only
if it is a linearization of
<f><lim><op>&mu;</op><ll><fi>G</fi></ll><ul>&ast;</ul></lim></f>.
</theorem>

The proof is just the same without the <tt/thtag/:

<proof>
Let <f><fi/G/</f> be a set of nontrivially achievable subgoals and &mu;
an order on <f><fi/G/</f>. &mu; is abstractly indicative if and only
if it is a linearization of
<f><lim><op>&mu;</op><ll><fi>G</fi></ll><ul>&ast;</ul></lim></f>.
</proof>

<sect1>Code and verbatim Paragraphs<label id="codeandverb">
<p>
Both tags from a paragraph and have very similar behavior.
Inside this tags most special characters don't need their named form
as in section <ref id="namedsymbols" name="Named Symbols">.
The exceptions are:
<enum>
<item>&amp;etago;&nbsp;&rarr;&nbsp;&etago;&nbsp;&rarr;&nbsp;<tt/end of tag open/
</enum>
Maybe later the list will grow.

In difference to the normal paragraph mapping white-spaces and newlines will be
mapped literally (as you write them in your source).

Also (with respect to manual layout) the font for mapping will be a
non-proportional one.<footnote>See the difference between IIWW and
<tt/IIWW/.</footnote>

<descrip>
<tag/Note:/Aggain, I'm neither a native speaker not I love mathematics a lot.
So I just placed some nonsense, wich might cause headache and grey hair for
people who want to use this document for learning to formulate mathematical
or physical theories.

Feel free to send better examples.
</descrip>


<sect2>Code Tag<label id="code">
<p>
<code>
&lt;!element code - - rcdata>
</code>

Use the <em/code tag/, if you want to write sourcecode example within your
text.

A code sample

&lt;code>
<code>
#include <stdio.h>
int main() {
    printf("Hello world");
    return 1;
}
</code>
&etago;code>

<sect2>Verbatim Tag<label id="verbatim">
<p>
<code>
&lt;!element verb - - rcdata>
</code>

Use the <em/verbatim tag/ for anything else than sourcecode
(use <ref id="code" name="Code Tag"> for this) which needs the good old
whitespace padding, like terminal hardcopy, ASCII-Graphics etc.

A verb sample

&lt;verb>
<verb>
/////////
| *   * |
|   |   |
| <---> |
 \_____/
</verb>
&etago;verb>

<sect>Inline Tags<label id="inline">
<p>
Here the abstract <em/inlines/ are broken down until only true and usable
tags will remain.
Let's recall:
<code>
&lt;!entity % inline 
	" (#pcdata | f| x| %emph; |sq| %xref | %index | file )* " >
</code>
Inlines don't have a influence to paragraphing, sectioning or document
classing. Just modifying text within it's normal flow.


<sect1>Emphasizes<label id="emph">
<p>
<code>
&lt;!entity % emph 
	" em|it|bf|sf|sl|tt|cparam " >
</code>

The <em/emphasizes/ are gathering the tags for emphasizing inline text.


The different types of emphasizes are:

<descrip>
<tag><tt/em/ &rarr; The Emphasize Tag</tag>
I hate to be redundant but I have to say:
The <em/emphasize/ tag you place for emphasized text.
Normally it's mapped to italic letters.
So if you write <tt>&lt;em/a emphasized text/</tt> it will be mapped to
<em/a emphasized text/.

<tag><tt/it/ &rarr; The Italic Tag</tag>
The <em/italic/ tag you place for a cursive mapping. If you write
<tt>&lt;it/a italic text/</tt> it will be mapped to <it/a italic text/.

<tag><tt/bf/ &rarr; The Boldface Tag</tag>
The <em/boldface/ tag you place for a bold mapping. If you write
<tt>&lt;bf/a bold text/</tt> it will be mapped to <bf/a bold text/.

<tag><tt/sf/ &rarr; The Swissfont Tag</tag>
I know that Tom Gordon from GMD is telling that this is the
<tt/sans serif/ tag.
My interpretation of the sf is <em/swissfont/ wich for me is more easy
to remember.
This is mapping the inlined text to a font wich is out of the helvetica family.
So <tt>&lt;sf/a swissfont text/</tt> will be mapped to <sf/a swissfont text/.

<tag><tt/sl/ &rarr; The Slanted Tag</tag>
I think I skip the explanation. <tt>&lt;sl/a slanted text/</tt> will be
mapped to <sl/a slanted text/.

<tag><tt/tt/ &rarr; The Terminaltype Tag</tag>
Text tagged with <em/terminaltype/ will be placed inline, just like all the
other text within a paragraph. It will not be included into source
output if you are workink as described in section <ref id="litprog"
name="Literate Programming">, even if it's
looking like typed code. <tt>&lt;tt/a terminal typed text/</tt> will be
mapped to <tt/a terminal typed text/.
</descrip>


<sect1>Short-quote Tag<label id="sq">
<p>
Normally this one could be viewed the same level like one of the <em/emphasize/
tags, but the definition of the linuxdoc dtd is placing it same level like the
emphasizes, and so I do.

The <tt/shortquote/ tag is a inline quotation,  not forming an own paragraph.
The text <tt>&lt;sq/a short quote/</tt> is mapped to <sq/a short quote/.


<sect1>Formula Tag<label id="f">
<p>
The <em/formula/ tag allows us to note down a mathematical formula within the
normal text, not appearing in an own line. So the text
<tt>&lt;f>x=y&lt;sup>2&etago;sup>&etago;f></tt> will be displayed as
<f>x=y<sup>2</sup></f>. See <ref id="formula" name="Mathematical Fomulas"> for
the tags valid within the <em/formula/.


<sect1>External Tag<label id="x">
<p>
The <em/external tag/ is passing the tagged data directly through the parser,
without modifying it. E.g. to &latex;.



<sect>Mathematical Formulas<label id="formula">
<p>
They can appear with in the tags listed in table
<ref id="tmformula" name="Places of Mathematical Formulas">

<table loc="ht">
<tabular ca="lll">
tag|description|see@<hline>@
f|inline formula|<ref id="f" name="The Formula Tag">@
dm|displayed formula|<ref id="mathpar" name="Mathematical Paragraph">@
eq|equation|<ref id="mathpar" name="Mathematical Paragraph">
</tabular>
<caption>Places of Mathematical Formulas<label id="tmformula">
</table>

If you view this document mapped to html you will notice that html has no
nice way of displaying mathematical formulas.

After a little hand parsing the contents of a <em/mathematical/ tag looks like:
<code>
&lt;!element  xx       - - 
        (((fr|lim|ar|root) | 
          (pr|in|sum) |
          (#pcdata|mc|(tu|phr)) |
          (rf|v|fi) |
          (unl|ovl|sup|inf))*)>
</code>
The <tt/xx/ stands for <tt/f/, <tt/dm/ or <tt/eq/. All of them are the same.


<descrip>
<tag/Note:/Because neither Netscape nor Microsoft has seen any need
to add mathematical mappings to their browsers (like demanded and defined by
<em/w3c/), there is no nice way of mapping, or at least displaying the math
stuff in html. So if you view the online version, feel free to wonder what
nonsense this man is telling here. Might be you should take a glance at the
postscript version.
</descrip>


<sect1>Fraction Tag<label id="fr">
<p>
<code>
&lt;!element  fr       - - (nu,de) >
&lt;!element  nu       o o ((%fbutxt;)*) >
&lt;!element  de       o o ((%fbutxt;)*) >
</code>

So what we see from it is, that a <em/fraction/ consits of a <em/numerator/
and a <em/denumerator/ tag, wich again each one can hold a
<em/mathematical formula/.

I think an example will tell you more:
<verb>
&lt;dm>&lt;fr>&lt;nu/7/&lt;de/13/&etago;fr>&etago;dm>
</verb>

results to:

<dm><fr><nu/7/<de/13/</fr></dm>

In case we want to to place &half; instead of the numerator without cleaning it
up, we'll type:

<verb>
&lt;dm>&lt;fr>&lt;nu>&lt;fr>&lt;nu/1/&lt;de/2/&etago;fr>&etago;nu>&lt;de/13/&etago;fr>&etago;dm>
</verb>

Which results to:

<dm><fr><nu><fr><nu/1/<de/2/</fr></nu><de/13/</fr></dm>

<sect1>Product, Integral and Summation Tag<label id="prinsum">
<p>
<code>
&lt;!element  pr       - - (ll,ul,opd?) >
&lt;!element  in       - - (ll,ul,opd?) >
&lt;!element  sum      - - (ll,ul,opd?) >
</code>

Each of them has a <em/lower limit/ (<tt/ll/ tag),
a <em/upper limit/ (<tt/ul/ tag) and a optional <em/operand/,
where each of them again may consist of a formula.
The tags are same in syntax like shown in table
<ref id="tulllop" name="Tags with upper-, lower limit and operator">.

<table loc="ht">
<tabular ca="lll">
name|example|result@<hline>@
Product|
<tt>&lt;f>y=&lt;pr>&lt;ll>i=1&lt;ul>n&lt;opd>x&lt;inf/i/&etago;pr>&etago;f></tt>|
<f>y=<pr><ll>i=1<ul>n<opd>x<inf/i/</pr></f>@
Integral|
<tt>&lt;f>y=&lt;in>&lt;ll>a&lt;ul>b&lt;opd>x&lt;sup/2/&etago;in>&etago;f></tt>|
<f>y=<in><ll>a<ul>b<opd>x<sup/2/</in></f>@
Summation|
<tt>&lt;f>y=&lt;sum>&lt;ll>i=1&lt;ul>n&lt;opd>x&lt;inf/i/&etago;sum>&etago;f></tt>|
<f>y=<sum><ll>i=1<ul>n<opd>x<inf/i/</sum></f>@
</tabular>
<caption>Tags with upper-, lower limit and operator<label id="tulllop">
</table>


<sect1>Limited Tag<label id="lim">
<p>
<code>
&lt;!element  lim      - - (op,ll,ul,opd?) >
&lt;!element  op       o o (%fcstxt;|rf|%fph;) -(tu) >
&lt;!element  ll       o o ((%fbutxt;)*) >
&lt;!element  ul       o o ((%fbutxt;)*) >
&lt;!element  opd      - o ((%fbutxt;)*) >
</code>

You can use that one for operators with upper and lower limits other than
products, sums or integrals. The for the other types defined <em/operator/ is
destinied by the <tt/op/tag, wich can contain again a mathematical formula.

<dm><lim><op/B/<ll/i=0/<ul/n/<opd>x<inf/i/</opd></lim></dm>


<sect1>Array Tag<label id="ar">
<p>
<code>
&lt;!element  ar       - - (row, (arr, row)*) >
&lt;!attlist  ar
    ca     cdata    #required >
&lt;!element  arr      - o empty >
&lt;!element  arc      - o empty >
&lt;!entity   arr "&lt;arr>" >
&lt;!entity   arc "&lt;arc>" >
</code>
Of course a reasonable mathematical document needs a way to describe arrays
and matrices.
The <em/array/ (<tt/ar/) is noted down equivalent to a <em/tabular/ (see
section <ref id="tabular" name="The Tabular Tag">).
The differences in handling are:
<itemize>
<item>No <tt/&lt;hline>/ tag.
<item>The <tt/ca/ attribute character <tt/|/ is not allowd.
<item>Columns are not separated by <tt/colsep/ tag but with the <tt/arc/ tag
(<em/array collumn/).
<item>Rows are not separated by <tt/rowsep/ tag but with the <tt/arr/ tag
(<em/array row/).
</itemize>
Again the characters <tt/|/ and <tt/@/ are mapped to the adequate separator
tag, so you really can note a array same way as a tabular.

<verb>
&lt;dm>&lt;ar ca="clcr">
a+b+c | uv    &lt;arc> x-y | 27    @
a+b   | u+v   | z   | 134   &lt;arr>
a     | 3u+vw | xyz | 2,978
&etago;ar>&etago;dm>
</verb>

Is mapped to:

<dm><ar ca="clcr">
a+b+c | uv    <arc> x-y | 27    @
a+b   | u+v   | z   | 134   <arr>
a     | 3u+vw | xyz | 2,978
</ar></dm>


<sect1>Root Tag<label id="root">
<p>
<code>
&lt;!element  root     - - ((%fbutxt;)*) >
&lt;!attlist  root
        n cdata "">
</code>
The <em/root/ is noted down by the <tt/root/ tag, wich contains a <tt/n/
attribute, holding the value for the <sq/n'th/ root.

<verb>
&lt;dm>&lt;root n="3"/x+y/&etago;dm>
</verb>

is mapped to:

<dm>
<root n="3"/x+y/
</dm>


<sect1>Figure Tag<label id="fi">
<p>
<code>
&lt;!element  fi  - o (#pcdata) >
</code>

With the figure tag you can place mathematical figures. The tagged characters
are directly mapped to a mathematical figure. Which character is mapped to which
figure you'll find in <ref id="mflist" name="Mathematical Figures">.


<sect1>Realfont Tag<label id="rf">
<p>
<code>
&lt;!element  rf  - o (#pcdata) >
</code>
This tag is placing a real font within a mathematical formula.
<footnote>I'm really not sure about <tt/rf/. What should it be?</footnote>
No formula is allowed within that tag.

<verb>
&lt;dm>&lt;rf/Binom:/ (a+b)&lt;sup/2/=a&lt;sup/2/+2ab+b&lt;sup/2/&etago;dm>
</verb>

is mapped to:

<dm><rf/Binom:/ (a+b)<sup/2/=a<sup/2/+2ab+b<sup/2/</dm>


<sect1>Other Mathematical Tags<label id="omt">
<p>
The remaining tags simply modify the tagged formula, without implying any
other tag. The effect is shown in table
<ref id="tomt" name="Mathematical tags without included tags">

<table loc="ht">
<tabular ca="lllcl">
name|tag|example|&nbsp;|result@<hline>@
<em/vector/|<tt/v/|
<tt>&lt;f>&lt;v/a/&amp;times;&lt;v/b/=&lt;v/0/&etago;f></tt>|&rarr;|
<f><v/a/&times;<v/b/=<v/0/</f> @
<em/overline/|<tt/ovl/|
<tt>&lt;f>&lt;ovl/1+1/=&lt;ovl/2/&etago;f></tt>|&rarr;|
<f><ovl/1+1/=<ovl/2/</f>@
<em/underline/|<tt/unl/|
<tt>&lt;f>&lt;unl/1+1/=&lt;unl/2/&etago;f></tt>|&rarr;|
<f><unl/1+1/=<unl/2/</f>@
<em/superior/|<tt/sup/|
<tt>&lt;f>e=m&amp;times;c&lt;sup/2/&etago;f></tt>|&rarr;|
<f>e=m&times;c<sup/2/</f>@
<em/inferior/|<tt/inf/|
<tt>&lt;f>x&lt;inf/i/:=2x&lt;inf/i-1/+3&etago;f></tt>|&rarr;|
<f>x<inf/i/:=2x<inf/i-1/+3</f>@
</tabular>
<caption>Mathematical tags without included tags<label id="tomt">
</table>

<sect>Labels and References<label id="labelandreference">
<p>
<code>
&lt;!entity % xref
	" label|ref|pageref|cite|url|htmlurl|ncite " >
</code>

As soon as itīs a little bit more sophisticated a document will need
references to other places within the document.


<sect1>Label Tag<label id="label">
<p>
<code>
&lt;!element label - o empty>
&lt;!attlist label id cdata #required>
</code>
If you want to refer to a spot, chapter or section within your document
you place a <em/label tag/.

A example could look like:
<code>
&lt;sect1>Welcome to the article&lt;label id="intro">
&lt;p>&hellip;
</code>


<sect1>Reference Tag<label id="ref">
<p>
<code>
<!element ref - o empty>
<!attlist ref
        id cdata #required
        name cdata "&refnam">
</code>

With this tag you can refer to a place within your document
labeled as in <ref id="label" name="Label Tag">.

The way the reference is mapped in you document again depends
to the mapper.
May result to a hyper-ref (HTML) or a section number (&latex;).


<sect1>Page reference Tag<label id="pageref">
<p>
<code>
&lt;!element pageref - o empty>
&lt;!attlist pageref
        id cdata #required>
</code>

A example for a pageref:
<code>
&lt;pageref id="intro">
</code>

In the HTML mapping there is no use for <em/pageref/, because there are
no page numbers.
In &latex; mapping the tag is mapped to the pagenumber of the reffered label.

<sect1>Url Tag<label id="url">
<p>
<code>
&lt;!element url - o empty>
&lt;!attlist url
        url cdata #required
        name cdata "&urlnam" >
</code>

A example for a <em/url/:
<code>
&lt;url url="http://www.gnu.org" name="GNU Organization">
</code>
<url url="http://www.gnu.org" name="GNU Organisation">

The mapping to html brings up a hyper-ref in your document.
The reference is the value of the <em/url/ attribute, the text
standing in the Hyperref is the <em/name/ attribute's value.

In &latex; mapping this one results to the name followed by the url.


<sect1>Htmlurl Tag<label id="htmlurl">
<p>
<code>
&lt;!element htmlurl - o empty>
&lt;!attlist htmlurl
        url cdata #required
        name cdata "&urlnam" >
</code>
A example for a htmlurl:
<code>
&lt;htmlurl url="http://www.gnu.org" name="GNU Organization">
</code>
<htmlurl url="http://www.gnu.org" name="GNU Organisation">

The only difference between this tag and the
<ref id="url" name="Url Tag"> is in the &latex; mapping.

The &latex; mapping simply drops the url attribute and
emphasizes the name.

In all other cases it's absolutely the same as the <em/url tag/.


<sect1>Cite Tag<label id="cite">
<p>
<code>
&lt;!element cite - o empty>
&lt;!attlist cite
        id cdata #required>
</code>

AFAIK this one needīs bibTeX to work nicely.
So I'm terribly sorry, but I was not jet able to make use of it.
For that reason for sure I'm the wrong one to explain about it.


<sect1>Ncite Tag<label id="ncite">
<p>
<code>
&lt;!element ncite - o empty>
&lt;!attlist ncite
        id cdata #required
	note cdata #required>
</code>

Same as <ref id="cite" name="Cite Tag">.

<sect>Indices
<p>
<code>
&lt;!entity % index "idx|cdx|nidx|ncdx" >

&lt;!element idx - - (#pcdata)>
&lt;!element cdx - - (#pcdata)>
&lt;!element nidx - - (#pcdata)>
&lt;!element ncdx - - (#pcdata)>
</code>

<table loc="ht">
<tabular ca="ll">
tag|my translation@<hline>@
<tt/idx/|index@
<tt/cdx/|code index (terminaltype index)@
<tt/nidx/|invisible index@
<tt/ncdx/|invisible code index (terminaltype index)@
</tabular>
<caption>Index elements<label id="tindex">
</table>

The index tags serve for making a index of your document.
They are only useful if you want do &latex; mapping.
They only differ very slightly as mentioned in table
<ref id="tindex" name="Index elements">.

<sect1>Including a index
<p>There are two ways to include indices into your document.
Look at both and decide.

<sect2>Manually<label id="manind">
<p>
<enum>
<item>Set the opts attribute of your document class to
contain the packages <em/makeidx/.
You do that by: <tt/&lt;article opts=&quot;makeidx&quot;&gt;/.
<item>Mark all the words you want to be in the index later
with a <em/idx tag/ or <em/cdx tag/.
If the word you want to index to a location in your document
is not within the text you simply write it at the location you
want to index with the <em/nidx tag/.
Itīs like the normal <em/idx/ only the tagged text will be silently
dropped in the normal document.
<item>Process your file with <idx/makeindex/
<tt/sgml2latex -m mydocument.sgml/.
<newline>
This will produce an additional <tt/mydocument.idx/.
<item>Process <tt/mydocument.idx/ with the <tt/makeindex/
command like <tt/makeindex mydocument.idx/.
<newline>
This will produce an additional <tt/mydocument.ind/.
<item>To include the now generated index in your document
you process your document with
<tt/sgml2latex -o tex -m mydocument.sgml/.
<newline>
This results in output of <tt/mydocument.tex/.
<item>Edit <tt/mydocument.tex/ with the editor of your choice.
<newline>
You look for the line <tt/\end{document}/ (should be somewhere
close to the end of the file) and insert the text
<tt/\printindex/ bevor this line.
<item>Process the modified file with <tt/latex mydocument.tex/.
<newline>
This gives you the final <tt/mydocument.dvi/ wich aggain you might
process with <tt/dvips/ to generate a postscript document.
</enum>
A lot of a mess, ain't it?

<sect2>Hacked<label id="hackind">
<p>
I'm currently working on a patch to the sgmltools to automate the
inclusion and generation of a index.
To find out the current state see
<htmlurl url="http://www.bnhof.de/~uwe/lnd/indexpatch/index.html"
name="http://www.bnhof.de/~uwe/lnd/indexpatch/index.html">.


<sect>Literate Programming<label id="litprog">
<p>
<code>
&lt;!entity % litprog " code | verb " >
</code>
This one is a funny thing.
It's the idea of not to write some comment text within a program,
and might be to take later some special tools, to extract
the text<footnote>Think of <tt/perlpod/.</footnote>, but to write a big
document and later to extract the code from it.
<footnote/People who don't like to document their code will not appreciate./
The principle is:
All text within <tt/verb/ and <tt/code/ tags, will be gathered into a
sourcefile.


That's it, because for now I don't remember the name of the tool doing thatone.


<sect>Reference<label id="reference">
<p>

<itemize>
<item><label id="qwertzdtd">
<em/The qwertz Document Type Definition/&nl;
<tt/Norman Welsh/

<item><label id="SGMLUserGuide">
<em/SGML-Tools User's Guide 1.0 ($Revision$)/&nl;
<tt/Matt Welsh and Greg Hankins and Eric S. Raymond/&nl;
November 1997

<item><label id="SGMLExample">
<em/Quick SGML Example, v1.0/&nl;
<tt/Matt Welsh, &lt;mdw@cs.cornell.edu>/&nl;
March 1994
</itemize>


<appendix>

<sect>Named Symbols<label id="namedsymbols">

<sect1>Named Characters<label id="namedchars">
<p>
This is a slightly modified list taken from [<em/SGML-Tools User's Guide
1.0 ($Revision$)/]. If you miss some, don't hesitate to mail.
A lot of the named characters shown in table
<ref id="tnamedchars" name="Named Characters">
are same as in the html-dtd.

<table loc="ht">
<tabular ca="rlrlrlrlrlrl">
AElig  | &AElig;  |
Aacute | &Aacute; |
Acirc  | &Acirc;  |
Ae     | &Auml;   |
Agrave | &Agrave; |
Atilde | &Atilde; @
Auml   | &Auml;   |
Ccedil | &Ccedil; |
Eacute | &Eacute; |
Egrave | &Egrave; |
Euml   | &Euml;   |
Iacute | &Iacute; @
Icirc  | &Icirc;  |
Igrave | &Igrave; |
Iuml   | &Iuml;   |
Ntilde | &Ntilde; |
Oacute | &Oacute; |
Ocirc  | &Ocirc;  @
Oe     | &Ouml;   |
Ograve | &Ograve; |
Oslash | &Oslash; |
Ouml   | &Ouml;   |
Uacute | &Uacute; |
Ue     | &Ue;     @
Ugrave | &Ugrave; |
Uuml   | &Uuml;   |
Yacute | &Yacute; |
aacute | &aacute; |
acirc  | &acirc;  |
ae     | &auml;   @
aelig  | &aelig;  |
agrave | &agrave; |
amp    | &amp;    |
apos   | &apos;   |
aring  | &aring;  |
arr    | &darr;   @
ast    | &ast;    |
atilde | &atilde; |
auml   | &auml;   |
bsol   | &bsol;   |
bull   | &bull;   |
ccedil | &ccedil; @
cir    | &cir;    |
circ   | &circ;   |
clubs  | &clubs;  |
colon  | &colon;  |
comma  | &comma;  |
commat | &commat; @
copy   | &copy;   |
darr   | &darr;   |
deg    | &deg;    |
diams  | &diams;  |
divide | &divide; |
dollar | &dollar; @
dquot  | &dquot;  |
eacute | &eacute; |
ecirc  | &ecirc;  |
egrave | &egrave; |
equals | &equals; |
etago  | &etago;  @
euml   | &euml;   |
excl   | &excl;   |
frac12 | &frac12; |
frac14 | &frac14; |
frac18 | &frac18; |
frac34 | &frac34; @
frac38 | &frac38; |
frac58 | &frac58; |
frac78 | &frac78; |
gt     | &gt;     |
half   | &half;   |
hearts | &hearts; @
hellip | &hellip; |
horbar | &horbar; |
hyphen | &hyphen; |
iacute | &iacute; |
icirc  | &icirc;  |
iexcl  | &iexcl;  @
igrave | &igrave; |
iquest | &iquest; |
iuml   | &iuml;   |
laquo  | &laquo;  |
larr   | &larr;   |
lcub   | &lcub;   @
ldquo  | &ldquo;  |
lowbar | &lowbar; |
lpar   | &lpar;   |
lsqb   | &lsqb;   |
lsquo  | &lsquo;  |
lt     | &lt;     @
mdash  | &mdash;  |
micro  | &micro;  |
middot | &middot; |
mu     | &mu;     |
ndash  | &ndash;  |
not    | &not;    @
ntilde | &ntilde; |
num    | &num;    |
oacute | &oacute; |
ocirc  | &ocirc;  |
oe     | &ouml;   |
ograve | &ograve; @
ohm    | &ohm;    |
ordf   | &ordf;   |
ordm   | &ordm;   |
oslash | &oslash; |
otilde | &otilde; |
ouml   | &ouml;   @
para   | &para;   |
percnt | &percnt; |
period | &period; |
plus   | &plus;   |
plusmn | &plusmn; |
pound  | &pound;  @
quest  | &quest;  |
quot   | &quot;   |
raquo  | &raquo;  |
rarr   | &rarr;   |
rcub   | &rcub;   |
rdquo  | &rdquo;  @
reg    | &reg;    |
rpar   | &rpar;   |
rsqb   | &rsqb;   |
rsquo  | &rsquo;  |
sect   | &sect;   |
semi   | &semi;   @
sol    | &sol;    |
spades | &spades; |
sup1   | &sup1;   |
sup2   | &sup2;   |
sup3   | &sup3;   |
sz     | &sz;     @
szlig  | &szlig;  |
tilde  | &tilde;  |
times  | &times;  |
trade  | &trade;  |
uacute | &uacute; |
uarr   | &uarr;   @
ucirc  | &ucirc;  |
ue     | &uuml;   |
ugrave | &ugrave; |
uuml   | &uuml;   |
verbar | &verbar; |
yacute | &yacute; @
</tabular>
<caption>Named Characters<label id="tnamedchars">
</table>

<sect1>Named Whitespaces<label id="namedwhite">
<p>
There is a small number of whatever you want to name it. The look like named
characters, but will be printed not always, or not at all.

<descrip>
<tag/thinsp/
Thin space:

<tt/d&amp;thinsp;D/ &rarr;d&thinsp;D

<tag/emsp/
Emphasized space:
<tt/d&amp;emsp;D/ &rarr; d&emsp;D

<tag/ensp/
Normal space:
/d&amp;ensp;D/ &rarr; d&ensp;D

<tag/nbsp/
No break space:
A spaces at wich the line is not allowed to be broken. Two words separated by
a <tt/nbsp/ will be treated by parser and mapper to be a single long one.

<tag/shy/
Suggest Hyphen:
If the mapper is up to break a word, with has the <tt/shy/ tag inside, it will
probably do the wordbreak at the place of the <tt/shy/ tag and place a
<em/hyphen/ instead. If no wordbreak is necessary the <tt/shy/ expands to
nothging at all.
</descrip>

<sect>Mathematical Figures<label id="mflist">
<p>
<table loc="ht">
<tabular ca="lcr">
<f><ar ca="llll">
a-<fi/a/|b-<fi/b/|c-<fi/c/|d-<fi/d/@
e-<fi/e/|f-<fi/f/|g-<fi/g/|h-<fi/h/@
i-<fi/i/|j-<fi/j/|k-<fi/k/|l-<fi/l/@
m-<fi/m/|n-<fi/n/|o-<fi/o/|p-<fi/p/@
q-<fi/q/|r-<fi/r/|s-<fi/s/|t-<fi/t/@
u-<fi/u/|v-<fi/v/|w-<fi/w/|x-<fi/x/@
y-<fi/y/|z-<fi/z/|&nbsp;  |&nbsp;
</ar></f>
<colsep>
&horbar;
<colsep>
<f><ar ca="llll">
A-<fi/A/|B-<fi/B/|C-<fi/C/|D-<fi/D/@
E-<fi/E/|F-<fi/F/|G-<fi/G/|H-<fi/H/@
I-<fi/I/|J-<fi/J/|K-<fi/K/|L-<fi/L/@
M-<fi/M/|N-<fi/N/|O-<fi/O/|P-<fi/P/@
Q-<fi/Q/|R-<fi/R/|S-<fi/S/|T-<fi/T/@
U-<fi/U/|V-<fi/V/|W-<fi/W/|X-<fi/X/@
Y-<fi/Y/|Z-<fi/Z/|&nbsp;  |&nbsp;
</ar></f>
</tabular>
<caption>Mathematical Figures<label id="tmfig">
</table>

The special mappings for characters you might use for building up
mathematical figures are shown in table
<ref id="tmfig" name="Mathematical Figures">.


<sect>Linuxdoc dtd Source<label id="source">
<p>
<nidx/dtd/
This is the <tt/linuxdoc.dtd/ used to parse this document. The revision log,
revision comments and a few redundant lines are taken out for saving paper
and screenspace.
<code>
&lt;!-- This is a DTD, but will be read as -*- sgml -*-   -->
&lt;!-- ================================================= -->
&lt;!-- $Id$ 

     This is LINUXDOC96 DTD for SGML-Tools.

     This was LINUXDOC.DTD,
     a hacked version of QWERTZ.DTD v1.3 by Matt Welsh,
     Greg Hankins, Eric Raymond, Marc Baudoin and
     Tristan Debeaupuis; modified from QWERTZ.DTD by
     Tom Gordon.

&lt;!entity % emph 
	" em|it|bf|sf|sl|tt|cparam " >

&lt;!entity % index "idx|cdx|nidx|ncdx" >

&lt;!-- url added by HG; htmlurl added by esr -->
&lt;!entity % xref
	" label|ref|pageref|cite|url|htmlurl|ncite " >

&lt;!entity % inline 
	" (#pcdata | f| x| %emph; |sq| %xref | %index | file )* " >

&lt;!entity % list 
        " list | itemize | enum | descrip " >

&lt;!entity % par 	
	"  %list; | comment | lq | quote | tscreen " >

&lt;!entity % mathpar " dm | eq " >

&lt;!entity % thrm 
        " def | prop | lemma | coroll | proof | theorem " >

&lt;!entity % litprog " code | verb " >

&lt;!entity % sectpar 
        " %par; | figure | tabular | table | %mathpar; | 
	  %thrm; | %litprog; ">
&lt;!element linuxdoc o o 
        (sect | chapt | article | report | 
	 book | letter | telefax | slides | notes | manpage ) >

&lt;!-- `general' entity replaced with ISO entities - kwm -->
&lt;!entity % isoent system "isoent">
%isoent;

&lt;!entity urlnam sdata "urlnam" >
&lt;!entity refnam sdata "refnam" >
&lt;!entity tex	sdata "[tex   ]" >
&lt;!entity latex	sdata "[latex ]" >
&lt;!entity latexe	sdata "[latexe]" >
&lt;!entity tm     sdata "[trade ]" >
&lt;!entity dquot  sdata "[quot  ]" >
&lt;!entity ero    sdata "[amp   ]" >
&lt;!entity etago '&lt;/' >
&lt;!entity   Ae  '&ero;Auml;' >
&lt;!entity   ae  '&ero;auml;' >
&lt;!entity   Oe  '&ero;Ouml;' >
&lt;!entity   oe  '&ero;ouml;' >
&lt;!entity   Ue  '&ero;Uuml;' >
&lt;!entity   ue  '&ero;uuml;' >
&lt;!entity   sz  '&ero;szlig;' >
&lt;!element  p o o (( %inline | %sectpar )+) +(newline) >
&lt;!entity ptag '&lt;p>' >
&lt;!entity psplit '&lt;/p>&lt;p>' >

&lt;!shortref pmap
	"&ero;#RS;B" null 
	"&ero;#RS;B&ero;#RE;" psplit
	"&ero;#RS;&ero;#RE;" psplit
--	'"' qtag  --
      	"[" lsqb
      	"~" nbsp
      	"_" lowbar
      	"#" num
      	"%" percnt
      	"^" circ
      	"{" lcub
      	"}" rcub
      	"|" verbar >

&lt;!usemap pmap p>
&lt;!element em - - (%inline)>
&lt;!element bf - - (%inline)>
&lt;!element it - - (%inline)>
&lt;!element sf - - (%inline)>
&lt;!element sl - - (%inline)>
&lt;!element tt - - (%inline)>
&lt;!element sq - - (%inline)>
&lt;!element cparam - - (%inline)>

&lt;!entity   ftag     '&lt;f>'    -- formula begin -- >
&lt;!entity   qendtag  '&lt;/sq>'>

&lt;!shortref sqmap 
      "&ero;#RS;B" null
--      '"' qendtag  --
      "[" lsqb
      "~" nbsp
      "_" lowbar
      "#" num
      "%" percnt
      "^" circ
      "{" lcub
      "}" rcub
      "|" verbar >

&lt;!usemap   sqmap    sq >

&lt;!element lq - - (p*)>
&lt;!element quote - - ((%inline; | %sectpar;)*, p*)+ >
&lt;!element tscreen - - ((%inline; | %sectpar;)*, p*)+ >
&lt;!element itemize - - (item+)>
&lt;!element enum - - (item+)>
&lt;!element list - - (item+)>

&lt;!shortref desmap
        "&ero;#RS;B" null
        "&ero;#RS;B&ero;#RE;" ptag
        "&ero;#RS;&ero;#RE;" ptag
        "~" nbsp
        "_" lowbar
        "#" num
        "%" percnt
        "^" circ
        "[" lsqb
        "]" rsqb
        "{" lcub
        "}" rcub
        "|" verbar >

&lt;!element descrip - - (tag?, p+)+ >
&lt;!usemap desmap descrip>

&lt;!element item o o ((%inline; | %sectpar;)*, p*) >

&lt;!element tag - o (%inline)>
&lt;!usemap desmap tag>

&lt;!usemap global (list,itemize,enum)>
&lt;!entity space " ">
&lt;!entity null "">

&lt;!--
&lt;!shortref bodymap
     "&ero;#RS;B&ero;#RE;" ptag
     "&ero;#RS;&ero;#RE;" ptag
      '"' qtag 
      "[" lsqb
      "~" nbsp
      "_" lowbar
      "#" num
      "%" percnt
      "^" circ
      "{" lcub
      "}" rcub
      "|" verbar>
-->

&lt;!element figure - - ((eps | ph ), img*, caption?)>
&lt;!attlist figure
	loc cdata "tbp"
	caption cdata "Caption">

&lt;!-- eps attributes added by mb and td  -->
&lt;!element eps - o empty  >
&lt;!attlist eps
        file cdata #required
        height cdata "5cm"
        angle cdata "0">

&lt;!element ph - o empty >
&lt;!attlist ph
        vspace cdata #required>

&lt;!element img - o empty>
&lt;!attlist img
	src cdata #required>

&lt;!element caption - o (%inline)>

&lt;!shortref oneline
     "B&ero;#RE;" space
     "&ero;#RS;&ero;#RE;" null 
     "&ero;#RS;B&ero;#RE;" null
--      '"' qtag  --
      "[" ftag
      "~" nbsp
      "_" lowbar
      "#" num
      "%" percnt
      "^" circ
      "{" lcub
      "}" rcub
      "|" verbar>

&lt;!usemap oneline tag>
&lt;!usemap oneline caption>

&lt;!entity % tabrow "(%inline, (colsep, %inline)*)" >
&lt;!element tabular - - 
       (hline?, %tabrow, (rowsep, hline?, %tabrow)*, caption?) >

&lt;!attlist tabular
	ca cdata #required>

&lt;!element rowsep - o empty>
&lt;!element colsep - o empty>
&lt;!element hline  - o empty>

&lt;!entity rowsep "&lt;rowsep>">
&lt;!entity colsep "&lt;colsep>">

&lt;!shortref tabmap
     "&ero;#RE;" null
     "&ero;#RS;&ero;#RE;" null
     "&ero;#RS;B&ero;#RE;" null
     "&ero;#RS;B" null
      "B&ero;#RE;" null
      "BB"  space
      "@" rowsep
      "|" colsep 
      "[" ftag
--      '"' qtag --
      "_" thinsp
      "~" nbsp
      "#" num
      "%" percnt
      "^" circ
      "{" lcub
      "}" rcub >

&lt;!usemap  tabmap tabular>
&lt;!element table   - - (tabular, caption?) >
&lt;!attlist table
	loc cdata "tbp">

&lt;!element code - - rcdata>
&lt;!element verb - - rcdata>

&lt;!shortref ttmap     -- also on one-line --
        "B&ero;#RE;" space
        "&ero;#RS;&ero;#RE;" null 
        "&ero;#RS;B&ero;#RE;" null
	"&ero;#RS;B" null
        '#'     num
        '%'     percnt
        '~'     tilde
        '_'     lowbar
        '^'     circ
        '{'     lcub
        '}'     rcub
        '|'     verbar >

&lt;!usemap ttmap  tt>
&lt;!element  mc  - - cdata >
&lt;!entity % sppos     "tu" >
&lt;!entity % fcs       "%sppos;|phr" >
&lt;!entity % fcstxt    "#pcdata|mc|%fcs;" >
&lt;!entity % fscs      "rf|v|fi" >
&lt;!entity % limits    "pr|in|sum" >
&lt;!entity % fbu       "fr|lim|ar|root" >
&lt;!entity % fph       "unl|ovl|sup|inf" >
&lt;!entity % fbutxt    "(%fbu;) | (%limits;) | 
                      (%fcstxt;)|(%fscs;)|(%fph;)" >
&lt;!entity % fphtxt    "p|#pcdata" >
&lt;!element  f        - - ((%fbutxt;)*) >

&lt;!entity   fendtag  '&lt;/f>'   -- formula end -- >

&lt;!shortref fmap 
      "&ero;#RS;B" null
      "&ero;#RS;B&ero;#RE;" null
      "&ero;#RS;&ero;#RE;" null
      "_" thinsp
      "~" nbsp
      "]" rsqb
      "#" num
      "%" percnt
      "^" circ
      "{" lcub
      "}" rcub
      "|" verbar>

&lt;!usemap   fmap     f >

&lt;!element  dm       - - ((%fbutxt;)*)>
&lt;!element  eq       - - ((%fbutxt;)*)>

&lt;!shortref dmmap
     "&ero;#RE;" space
      "_" thinsp
      "~" nbsp
      "]" rsqb
      "#" num
      "%" percnt
      "^" circ
      "{" lcub
      "}" rcub
      "|" verbar>

&lt;!usemap dmmap (dm,eq)>
&lt;!element  fr       - - (nu,de) >
&lt;!element  nu       o o ((%fbutxt;)*) >
&lt;!element  de       o o ((%fbutxt;)*) >
&lt;!element  ll       o o ((%fbutxt;)*) >
&lt;!element  ul       o o ((%fbutxt;)*) >
&lt;!element  opd      - o ((%fbutxt;)*) >
&lt;!element  pr       - - (ll,ul,opd?) >
&lt;!element  in       - - (ll,ul,opd?) >
&lt;!element  sum      - - (ll,ul,opd?) >
&lt;!element  lim      - - (op,ll,ul,opd?) >
&lt;!element  op       o o (%fcstxt;|rf|%fph;) -(tu) >
&lt;!element  root     - - ((%fbutxt;)*) >
&lt;!attlist  root
        n cdata "">
&lt;!element col o o ((%fbutxt;)*) >
&lt;!element row o o (col, (arc, col)*) >

&lt;!element  ar       - - (row, (arr, row)*) >
&lt;!attlist  ar
    ca     cdata    #required >
&lt;!element  arr      - o empty >
&lt;!element  arc      - o empty >
&lt;!entity   arr "&lt;arr>" >
&lt;!entity   arc "&lt;arc>" >

&lt;!shortref arrmap
     "&ero;#RE;" space
      "@" arr
      "|" arc 
      "_" thinsp
      "~" nbsp
      "#" num
      "%" percnt
      "^" circ
      "{" lcub
      "}" rcub >

&lt;!usemap   arrmap   ar >
&lt;!element  sup      - - ((%fbutxt;)*) -(tu) >
&lt;!element  inf      - - ((%fbutxt;)*) -(tu) >
&lt;!element  unl - - ((%fbutxt;)*) >
&lt;!element  ovl - - ((%fbutxt;)*) >
&lt;!element  rf  - o (#pcdata) >
&lt;!element  phr - o ((%fphtxt;)*) >
&lt;!element  v   - o ((%fcstxt;)*) 
	-(tu|%limits;|%fbu;|%fph;) >
&lt;!element  fi  - o (#pcdata) >
&lt;!element  tu  - o empty >

&lt;!usemap global (rf,phr)>
&lt;!element def - - (thtag?, p+) >
&lt;!element prop - - (thtag?, p+) >
&lt;!element lemma - - (thtag?, p+) >
&lt;!element coroll - - (thtag?, p+) >
&lt;!element proof - - (p+) >
&lt;!element theorem - - (thtag?, p+) >
&lt;!element thtag - - (%inline)>

&lt;!usemap global (def,prop,lemma,coroll,proof,theorem)>
&lt;!usemap oneline thtag>
&lt;!entity   qtag     '&lt;sq>' >

&lt;!shortref global
      "&ero;#RS;B" null  -- delete leading blanks --
  --    '"' qtag -- 
      "[" ftag
      "~" nbsp
      "_" lowbar
      "#" num
      "%" percnt
      "^" circ
      "{" lcub
      "}" rcub
      "|" verbar>

&lt;!usemap global linuxdoc>
&lt;!element label - o empty>
&lt;!attlist label id cdata #required>

&lt;!-- ref modified to have an optional name field HG -->
&lt;!element ref - o empty>
&lt;!attlist ref   
        id cdata #required
        name cdata "&ero;refnam">

&lt;!-- url entity added to have direct url references HG -->
&lt;!element url - o empty>
&lt;!attlist url   
        url cdata #required
        name cdata "&ero;urlnam" >

&lt;!-- htmlurl entity added to have quieter url references esr -->
&lt;!element htmlurl - o empty>
&lt;!attlist htmlurl   
        url cdata #required
        name cdata "&ero;urlnam" >

&lt;!element pageref - o empty>
&lt;!attlist pageref
        id cdata #required>
&lt;!element comment - - (%inline)>
&lt;!element x - - ((#pcdata | mc)*) >
&lt;!usemap   #empty   x >

&lt;!-- Hacked by mdw to exclude abstract; abstract now part of titlepag -->
&lt;!element article - -
        (titlepag, header?, 
         toc?, lof?, lot?, p*, sect*, 
         (appendix, sect+)?, biblio?) +(footnote)>

&lt;!attlist article
        opts cdata "null">

&lt;!-- Hacked by mdw to exclude abstract; abstract now part of titlepag -->
&lt;!element report - - 
        (titlepag, header?, toc?, lof?, lot?, p*,
         chapt*, (appendix, chapt+)?, biblio?) +(footnote)>

&lt;!attlist report
        opts cdata "null">
&lt;!element book  - - 
        (titlepag, header?, toc?, lof?, lot?, p*, chapt*, 
         (appendix, chapt+)?, biblio?) +(footnote) >

&lt;!attlist book
        opts cdata "null">

&lt;!-- Hacked by mdw, abstract now part of titlepag -->
&lt;!element titlepag o o (title, author, date?, abstract?)>
&lt;!element title - o (%inline, subtitle?) +(newline)>
&lt;!element subtitle - o (%inline)>
&lt;!usemap oneline titlepag>
&lt;!element author - o (name, thanks?, inst?, 
                        (and, name, thanks?, inst?)*)>
&lt;!element name o o (%inline) +(newline)>
&lt;!element and - o empty>
&lt;!element thanks - o (%inline)>
&lt;!element inst - o (%inline) +(newline)>
&lt;!element date - o (#pcdata) >

&lt;!usemap global thanks>
 
&lt;!element newline - o empty >
&lt;!entity nl "&lt;newline>"> 

&lt;!-- Hacked by mdw -->
&lt;!element abstract - o (%inline)>
&lt;!usemap oneline abstract>


&lt;!element toc - o empty>
&lt;!element lof - o empty>
&lt;!element lot - o empty>
&lt;!element header - - (lhead, rhead) >
&lt;!element lhead - o (%inline)>
&lt;!element rhead - o (%inline)>
&lt;!entity % sect "heading, header?, p* " >
&lt;!element heading o o (%inline)>
&lt;!element chapt - o (%sect, sect*) +(footnote)> 
&lt;!element sect  - o (%sect, sect1*) +(footnote)>
&lt;!element sect1 - o (%sect, sect2*)>
&lt;!element sect2 - o (%sect, sect3*)>
&lt;!element sect3 - o (%sect, sect4*)>
&lt;!element sect4 - o (%sect)>
&lt;!usemap oneline (chapt,sect,sect1,sect2,sect3,sect4)>
&lt;!element appendix - o empty >
&lt;!element footnote - - (%inline)>
&lt;!usemap global footnote>
&lt;!element cite - o empty>
&lt;!attlist cite 
        id cdata #required>

&lt;!element ncite - o empty>
&lt;!attlist ncite 
        id cdata #required
	note cdata #required>

&lt;!element file - - (#pcdata)>

&lt;!element idx - - (#pcdata)>
&lt;!element cdx - - (#pcdata)>
&lt;!element nidx - - (#pcdata)>
&lt;!element ncdx - - (#pcdata)>

&lt;!element biblio - o empty>
&lt;!attlist biblio
	style cdata "linuxdoc"
        files cdata "">
&lt;!element slides - - (slide*) >

&lt;!attlist slides
	opts cdata "null">
&lt;!element slide - o (title?, p+) >
&lt;!entity  % addr "(address?, email?, phone?, fax?)" >  
	
&lt;!element letter - - 
	(from, %addr, to, %addr, cc?, subject?, sref?, rref?,
         rdate?, opening, p+, closing, encl?, ps?)>

&lt;!attlist letter
	opts cdata "null">
	
&lt;!element from		- o (#pcdata) >
&lt;!element to		- o (#pcdata) >
	
&lt;!usemap oneline (from,to)>
	
&lt;!element address 	- o (#pcdata) +(newline) >
&lt;!element email		- o (#pcdata) >
&lt;!element phone		- o (#pcdata) >
&lt;!element fax 		- o (#pcdata) >
	
&lt;!element subject 	- o (%inline;) >
&lt;!element sref		- o (#pcdata) >
&lt;!element rref          - o (#pcdata) >
&lt;!element rdate         - o (#pcdata) >
	
&lt;!element opening 	- o (%inline;) >
&lt;!usemap oneline opening>
	
&lt;!element closing - o (%inline;) >
&lt;!element cc - o (%inline;) +(newline) >
&lt;!element encl - o (%inline;) +(newline) >
	
&lt;!element ps - o (p+) >

&lt;!element telefax - - 
	(from, %addr, to, address, email?, 
         phone?, fax, cc?, subject?,
         opening, p+, closing, ps?)>

&lt;!attlist telefax
	opts cdata "null"
	length cdata "2">

&lt;!element notes - - (title?, p+) >
&lt;!attlist notes
	opts cdata "null" >
&lt;!element manpage - - (sect1*) 
	-(sect2 | f | %mathpar | figure | tabular | 
          table | %xref | %thrm )>


&lt;!attlist manpage
	opts cdata "null"
	title cdata ""
	sectnum cdata "1" >
&lt;!shortref manpage
      "&ero;#RS;B" null
--      '"' qtag  --
      "[" ftag
      "~" nbsp
      "_" lowbar
      "#" num
      "%" percnt
      "^" circ
      "{" lcub
      "}" rcub
      "|" verbar>

&lt;!usemap manpage  manpage >
</code>

</article>

