![]() | ![]() |
|
Linuxdoc ReferenceA introduction to the linuxdoc dtdUwe Böhme, <uwe@hof.baynet.de>v1.1, 30 January 2000This 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 My Homepage.
1. Making of
2. Introduction
3. A minimalistic document
4. Document Classes
5. Inlines
6. Sectioning
7. Paragraphs
8. Inline Tags
9. Mathematical Formulas
10. Labels and References
11. Indices
12. Literate Programming
13. ReferenceAppendix
14. Named Symbols
15. Mathematical Figures
16. Linuxdoc dtd Source1. Making of
1.1 Legal stuffCopyright © 1997-2000 by Uwe Böhme. This document may be distributed under the terms set forth in the Linux Documentation Project License at 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 ldp (even if I took their form of license). I'm not yet playing in that league.
1.2 GenesisThis document was born trying to learn more about writing texts on my linux system. The one system looking like suitable to my needs was sgml-tools SGML-Tools Organsation an the linuxdoc dtd. In [SGML-Tools User's Guide 1.0 ($Revision: 1.1.1.1 $)] (see section Reference) the overall structure is described nice and easy. Also [Quick SGML Example, v1.0] (see section Reference) was helpful, but: A lot of features are not mentioned. On the way to learn more about it, I met [The qwertz Document Type Definition] (see section Reference). It's as detailed as hoped, but it's not made for the linuxdoc dtd (even if linuxdoc is based on qwertz). I tried a new approach: Look at the dtd dtd = document type definitionfile 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 Uwe Böhme.
2. IntroductionThe principle of any sgml'ed document (linuxdoc, docbook, html) is more or less the same: Don't write how it should look like, but write what it is. This is a different approach than the standard "wysiwyg" 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 You might want to call it
.
You do not tell the program that this line should be in a bigger font,
to look like a headline.
What you do is telling that this line is a headline.
You do not try to make your document look like a
report, but you tag it to be a report.
So you tag the text with the appropriate <tag>.
The big advantages of this approache are:
In addition in all sgml-style documents you will find named symbols 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
3. A minimalistic documentIn 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.
3.1 Step By StepThe steps you have to do to create a nice linuxdoc document and map it to the form you need are:
3.2 A Startup DocumentWe start with a simple document (the numbers and colon in the beginning of the line are for explanation, don't type it!):
1: <!doctype linuxdoc system> 2: <notes> 3: <title>A Small Linuxdoc Example</title> 4: <p>Hello <em>world</em>.</p> 5: <p><bf>Here</bf> we are.</p> 6: </notes> Now we take a look at the single lines:
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:
1: <!doctype linuxdoc system> 2: <notes> 3: <title>A Small Linuxdoc Example 4: <p>Hello <em/world/. 5: 6: <bf/Here/ we are. 7: </notes>
Now we look at the single lines again:
Maybe now it's a little bit more clear, who you have to work with tags.
4. Document Classes
<!element linuxdoc o o (sect | chapt | article | report | book | letter | telefax | slides | notes | manpage ) > 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 To find a detailed description of the document classes see table Document classes.
To me the article class is the most important one. Thatīs the reason why itīs described first and most detailed.
4.1 Article Tag
<!element article - - (titlepag, header?, toc?, lof?, lot?, p*, sect*, (appendix, sect+)?, biblio?) +(footnote)> <!attlist article opts cdata "null"> You can see that the article needs some tags included. They will be explained in consequence. The options attribute (
Titlepage Tag
<!element titlepag o o (title, author, date?, abstract?)> The Titlepage Tag ( titlepag ) is implicitly placed as soon a you
started your 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.
Title Tag
<!element title - o (%inline, subtitle?) +(newline)> Each document class wich owns a titlepage of course needs a title, wich is noted down with a <title> tag.
You don't need to close thatone.
A title may contain a subtitle started by the <subtitle> tag.
If you look at the headerpage of this document you'll find it to be mapped from the tags:
<title>Linuxdoc Reference <subtitle>A introduction to the linuxdoc dtd Author Tag
<!element author - o (name, thanks?, inst?, (and, name, thanks?, inst?)*)> Usually you place the (your) name here. People should know who wrote the document, so you place a <author> tag.
If you don't note the name tag itīs imlicitly placed.
The author has also optional items wich can be tagged within the
author tag.
If you want to say thanks to anyone (might be somebody providing usefull
information) you place it within the The
Date Tag
If you want to mark your document with a date, you can do that with the
It's not checked weather you really place a valid date here, but don't abuse it.
Abstract Tag
This tag is intended for an abstract description of your document.
Don't mix the
Header Tag
<!element header - - (lhead, rhead) > <!element lhead - o (%inline)> <!element rhead - o (%inline)> A <header> tag specifies what should be printed at the top of each
page.
It consists of a left heading i.e. <lhead> and a right
heading i.e. <rhead> ).
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.
Table Of Contents Tag
If you place the 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 sect3 will be included.
List Of Figures Tag
If you place the
List Of Tables Tag
If you place the
BodyHere you place various sections according section Sectioning. There is no body tag. The body starts with the first chapter, section or paragraph.
Appendix Tag
In the end of the article you can place the Really you shouldn't think about people (e.g. m.d.s knifing your belly here., wich starts a area of appended sections. The appendix tag implies a different section numbering type to the
following section tags.
Bibliography Tag
It's intended to gather all the Until now I've not been able to create a
Footnote Tag
A footnote may be place in any spot of your document.
Exactly the spot in yout document where you are placing
the Whereas the last one is not always true, even if you try.anywhere within the article.
4.2 Report Tag
<!element report - - (titlepag, header?, toc?, lof?, lot?, p*, chapt*, (appendix, chapt+)?, biblio?) +(footnote)> The report is a document class with a chapter oriented approach. So within a document clasified by a <report> tag the
toplevel is grouped by the <chapt> tag (see
Sectioning). The rest of the structure is identical to the
article class
Article Tag.
4.3 Book Tag
<!element book - - (titlepag, header?, toc?, lof?, lot?, p*, chapt*, (appendix, chapt+)?, biblio?) +(footnote) > You will notice that the book element is identical to the report Report Tag. So anything valid there is also valid if you classify your document with a <book> tag.
4.4 Letter Tag
<!entity % addr "(address?, email?, phone?, fax?)" > <!element letter - - (from, %addr, to, %addr, cc?, subject?, sref?, rref?, rdate?, opening, p+, closing, encl?, ps?)> Also the purpose of the letter document class should be quite self
explaining. Place a The letter's tags ar described in table Tags in a letter
4.5 Telefax Tag
<!element telefax - - (from, %addr, to, address, email?, phone?, fax, cc?, subject?, opening, p+, closing, ps?)> Overall the structure is same to the letter class. The only difference is that with the <telefax> tag the receiver's <fax>
tag becomes mandatory.
Should be obvious why.
4.6 Slides Tag
<!element slides - - (slide*) > The slides class is intended for overhead slides and transparencies. So the structure of a document classified by a <slides> tag is a
very simple one.
It contains single slide(s) startes by a <slide> tag.
Nothing else.
If not explicitly written the first slide is started implicitly.
Slide Tag
<!element slide - o (title?, p+) > A <slide> tag is only allowed within the slides document class.
A slide may contain:
A title (see section The Title Tag) and one or more paragraphs (see section Paragraphs). That's all.
4.7 Note Tag
<!element notes - - (title?, p+) > Intended as a class for personal notes the structure is even more simplified than the slides document class (see The Slide Tag). After classifying a document with the <notes> tag only a
title (see section
The Title Tag)
and one or more paragraphs
(see section
Paragraphs) are allowed.
4.8 Manual Page Tag
<!element manpage - - (sect1*) -(sect2 | f | %mathpar | figure | tabular | table | %xref | %thrm )> This document class is intended for writing manual pages, fitting the need of the man programm.
In a document classified by a <manpage> tag the topleve
section tag is the sect1 tag (see section
Sectioning), for easy pasting manual pages into an article
or book document class.
The exception here to the nortmal sectioning is, that there is only one
subsection level allowed (sect2 ).
5. Inlines
<!entity % inline " (#pcdata | f| x| %emph; |sq| %xref | %index | file )* " > Inlines may occure anywhere within the text, and doesn't have any influence to the textflow or logical structure of the document.
6. Sectioning
<!element chapt - o (%sect, sect*) +(footnote)> <!element sect - o (%sect, sect1*) +(footnote)> <!element sect1 - o (%sect, sect2*)> <!element sect2 - o (%sect, sect3*)> <!element sect3 - o (%sect, sect4*)> <!element sect4 - o (%sect)> The sectioning Also the
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 document
class (see section
The Document Class).
The normal hierarchy is chapt sect sect1 sect2 sect3 sect4 Just take a book, look the table of conetents and you will see. Each of the tags out of the sectionings has nearly the same syntax.
All of them owe a heading.
The Within the you may place subordinate sections and paragraphs (see Paragraphs). Some of the sectioning tags may only appear in special document classes ( Document Classes).
7. Paragraphs
<!entity % sectpar " %par; | figure | tabular | table | %mathpar; | %thrm; | %litprog; "> <!entity % par " %list; | comment | lq | quote | tscreen " > <!entity % litprog " code | verb " > Each of the here described tags form a paragraph. For obvious reason a paragraph is normally The behaviour of the exceptionsstarting and ending with a new line. 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
7.1 Normal ParagraphNormal paragraphs can be formed in two ways:
Paragraph tagThe
Empty NewlineA empty line between two paragraph is implicitly starting a new
paragraph.
Take care within
7.2 List-like Paragraphs
<!entity % list " list | itemize | enum | descrip " > This four tags indicate the starting of a list-like paragraph. Within each of the lists the single items are separated by an item tag. <!element item o o ((%inline; | %sectpar;)*, p*) > As you can see, a item may again contain paragraphs (and therefore also may contain other lists - even of a different type).
List Tag
<!element list - - (item+)> The list tag will be mapped to a nacked list without bullets, numers or anything else. To see it, I place a small example: <list> <item>A point <item>Another one <item>Last </list> Will look (depending on the mapping) like:
Itemize Tag
<!element itemize - - (item+)> The 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: <itemize> <item>A point <item>Another one <item>Last </itemize> Will look (depending on the mapping) like:
Enum Tag
<!element enum - - (item+)> The enum tag will be mapped to a list with numbers. A small example: <enum> <item>A point <item>Another one <item>Last </enum> Will look (depending on the mapping) like:
Descrip Tag
<!element descrip - - (tag?, p+)+ > The 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 tag (this time the tag's name is really litteraly
A small example: <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 convenient way. This made it to be so successful and to become the standard for documents published by the internet. <tag/internet/A worldwide connected internet (internet here as a technical term) </descrip> Will look (depending on the mapping) like:
7.3 Figures and TablesThe The value of the
The default value of the loc attribute is
Table Tag
<!element table - - (tabular, caption?) > As you can see a table consists of the The The caption is used also to place the entry for the list of tables if you stated one (see The List Of Tables Tag). A short example will show how it's working together.
<table loc="ht"> <tabular ca="lcr"> Look|this|table@ Isn't|it|nice@ 1.234|mixed|columns </tabular> <caption>A sample table </table>
The caption "A sample table" would be the name in the list of tables.
Figure Tag
<!element figure - - ((eps | ph ), img*, caption?)> The usage of the <figure> tag is equivalent to the
<table> tag.
Instead of the <tabular> tag you place either a <eps>
or a <ph> tag.
Encapsulated Postscript™ Tag
<!attlist eps file cdata #required height cdata "5cm" angle cdata "0"> The <eps> tag is intended for including a external file in
encapsulated postscript™ format into the document.
The attributes of the
A example:
<figure loc="here"> <eps file="logo" height="4cm" angle="15"> <img src="logo.gif"> <caption>A included encapsulated postscript™ </figure> The img tag is ignored by LaTeX-mapping and useful for html, 'cause most browsers don't know about eps.
The caption here would go to the list of figures as decribed in section The List Of Figures Tag.
Placeholder Tag
<!attlist ph vspace cdata #required> 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 vspace attribte.
Caveat: The numerical argument for the vspace attribte needs a
unit directly behind the number. Don't leave a space there
(same as for the height attribute in
Encapsulated Postscript™ Tag.
<figure loc="ht"> <ph vspace="5cm"> <caption>A blank space. </figure> Results to:
At this point you might want to look for your scissors and the glue.
7.4 Tabular Tag
<!element tabular - - (hline?, %tabrow, (rowsep, hline?, %tabrow)*, caption?) > The <tabular> tag is interpreted as an own paragraph, if it is
written standalone.
Together with a <table> tag it gets part of the paragraph of the
<table> tag (see
Table tag).
Within the Wouldn't be very usefull otherwise. The
In theory you should be able to place a | into the The columns within the Less typing, more fun.. What's valid for collumns is also valid for rows. You separate the by a
row separator, the Optional you can place a horizontal line with the
<tabular ca="lcr"> Look|this|table@<hline> Isn't|it|nice@ 1.234|mixed|columns@ </tabular> Results in table Sample table for tabular tag
7.5 Mathematical Paragraph
<!entity % mathpar " dm | eq " > A mathematical paragraph consits either of a displayed formula,
tagged by No, sorry, not for Deutschmark! ;-)or an equation, tagged by <eq> .
They work very much the same.
Both of these tags contain a mathematical formula. See Mathematical Formulas for the tags valid here.
Displayed Formula TagThis tag displays a mathematical formula as a paragraph. The formula is mapped centered as a single line No guarantee for that. You know: Mapping is a matter of taste..
<dm>(a+b)<sup/2/=a<sup/2/+2ab+b<sup/2/</dm>Is mapped to:
Equation Tag
<dm>(a+b)<sup/2/=a<sup/2/+2ab+b<sup/2/</dm>Is mapped to:
7.6 Theorem Paragraph
<!entity % thrm " def | prop | lemma | coroll | proof | theorem " > <!element def - - (thtag?, p+) > <!element prop - - (thtag?, p+) > <!element lemma - - (thtag?, p+) > <!element coroll - - (thtag?, p+) > <!element proof - - (p+) > <!element theorem - - (thtag?, p+) > As you can see the different types of theorem paragraphs are nearly identical. The only exception wich is a little bit different is the proof wich doesn't own a thtag .
For all the others the thtag is giving the tag of the theorem
paragraph.
Yust try to use that one, wich is fitting the meaning of what you are typing.
<thrm> <thtag>Alexander's thrm</thtag> Let <f><fi/G/</f> be a set of non-trivially achievable subgoals and μ an order on <f><fi/G/</f>. μ is abstractly indicative if and only if it is a linearization of <f><lim><op>μ</op><ll><fi/G/</ll><ul>*</ul></lim></f>. </theorem> The Maybe somebody knowing about mathematics would be shocked about my abuse of the types, but I'm lazy so I simply copied the examples: Definition ( Let Proposition ( Let Lemma ( Let Corollation ( Let
Let The proof is just the same without the
Let
7.7 Code and verbatim ParagraphsBoth tags from a paragraph and have very similar behavior. Inside this tags most special characters don't need their named form as in section Named Symbols. The exceptions are:
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. See the difference between IIWW and
Code Tag
<!element code - - rcdata> Use the code tag, if you want to write sourcecode example within your text. A code sample <code> #include <stdio.h> int main() { printf("Hello world"); return 1; } </code>
Verbatim Tag
<!element verb - - rcdata> Use the verbatim tag for anything else than sourcecode (use Code Tag for this) which needs the good old whitespace padding, like terminal hardcopy, ASCII-Graphics etc. A verb sample <verb> ///////// | * * | | | | | <---> | \_____/</verb>
8. Inline TagsHere the abstract inlines are broken down until only true and usable tags will remain. Let's recall: <!entity % inline " (#pcdata | f| x| %emph; |sq| %xref | %index | file )* " > Inlines don't have a influence to paragraphing, sectioning or document classing. Just modifying text within it's normal flow.
8.1 Emphasizes
<!entity % emph " em|it|bf|sf|sl|tt|cparam " > The emphasizes are gathering the tags for emphasizing inline text.
The different types of emphasizes are:
8.2 Short-quote TagNormally this one could be viewed the same level like one of the emphasize tags, but the definition of the linuxdoc dtd is placing it same level like the emphasizes, and so I do. The
8.3 Formula TagThe formula tag allows us to note down a mathematical formula within the
normal text, not appearing in an own line. So the text
8.4 External TagThe external tag is passing the tagged data directly through the parser, without modifying it. E.g. to LaTeX.
9. Mathematical FormulasThey can appear with in the tags listed in table Places of Mathematical Formulas
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 mathematical tag looks like: <!element xx - - (((fr|lim|ar|root) | (pr|in|sum) | (#pcdata|mc|(tu|phr)) | (rf|v|fi) | (unl|ovl|sup|inf))*)> The xx stands for f , dm or eq . All of them are the same.
9.1 Fraction Tag
<!element fr - - (nu,de) > <!element nu o o ((%fbutxt;)*) > <!element de o o ((%fbutxt;)*) > So what we see from it is, that a fraction consits of a numerator and a denumerator tag, wich again each one can hold a mathematical formula. I think an example will tell you more: <dm><fr><nu/7/<de/13/</fr></dm> results to:
In case we want to to place 1/2 instead of the numerator without cleaning it up, we'll type:
<dm><fr><nu><fr><nu/1/<de/2/</fr></nu><de/13/</fr></dm> Which results to:
9.2 Product, Integral and Summation Tag
<!element pr - - (ll,ul,opd?) > <!element in - - (ll,ul,opd?) > <!element sum - - (ll,ul,opd?) > Each of them has a lower limit (
9.3 Limited Tag
<!element lim - - (op,ll,ul,opd?) > <!element op o o (%fcstxt;|rf|%fph;) -(tu) > <!element ll o o ((%fbutxt;)*) > <!element ul o o ((%fbutxt;)*) > <!element opd - o ((%fbutxt;)*) > You can use that one for operators with upper and lower limits other than
products, sums or integrals. The for the other types defined operator is
destinied by the
9.4 Array Tag
<!element ar - - (row, (arr, row)*) > <!attlist ar ca cdata #required > <!element arr - o empty > <!element arc - o empty > <!entity arr "<arr>" > <!entity arc "<arc>" > Of course a reasonable mathematical document needs a way to describe arrays and matrices. The array ( ar ) is noted down equivalent to a tabular (see
section
The Tabular Tag).
The differences in handling are:
| and @ are mapped to the adequate separator
tag, so you really can note a array same way as a tabular.
<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> Is mapped to:
9.5 Root Tag
<!element root - - ((%fbutxt;)*) > <!attlist root n cdata ""> The root is noted down by the root tag, wich contains a n
attribute, holding the value for the "n'th" root.
<dm><root n="3"/x+y/</dm> is mapped to:
9.6 Figure Tag
<!element fi - o (#pcdata) > 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 Mathematical Figures.
9.7 Realfont Tag
<!element rf - o (#pcdata) > This tag is placing a real font within a mathematical formula. I'm really not sure about
No formula is allowed within that tag.
<dm><rf/Binom:/ (a+b)<sup/2/=a<sup/2/+2ab+b<sup/2/</dm> is mapped to:
9.8 Other Mathematical TagsThe remaining tags simply modify the tagged formula, without implying any other tag. The effect is shown in table Mathematical tags without included tags
10. Labels and References
<!entity % xref " label|ref|pageref|cite|url|htmlurl|ncite " > As soon as itīs a little bit more sophisticated a document will need references to other places within the document.
10.1 Label Tag
<!element label - o empty> <!attlist label id cdata #required> If you want to refer to a spot, chapter or section within your document you place a label tag. A example could look like: <sect1>Welcome to the article<label id="intro"> <p>...
10.2 Reference Tag
<!element ref - o empty> <!attlist ref id cdata #required name cdata "<@@refnam>"> With this tag you can refer to a place within your document labeled as in 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).
10.3 Page reference Tag
<!element pageref - o empty> <!attlist pageref id cdata #required> A example for a pageref: <pageref id="intro"> In the HTML mapping there is no use for pageref, because there are no page numbers. In LaTeX mapping the tag is mapped to the pagenumber of the reffered label.
10.4 Url Tag
<!element url - o empty> <!attlist url url cdata #required name cdata "<@@urlnam>" > A example for a url: <url url="http://www.gnu.org" name="GNU Organization"> GNU Organisation The mapping to html brings up a hyper-ref in your document. The reference is the value of the url attribute, the text standing in the Hyperref is the name attribute's value. In LaTeX mapping this one results to the name followed by the url.
10.5 Htmlurl Tag
<!element htmlurl - o empty> <!attlist htmlurl url cdata #required name cdata "<@@urlnam>" > A example for a htmlurl: <htmlurl url="http://www.gnu.org" name="GNU Organization"> GNU Organisation The only difference between this tag and the 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 url tag.
10.6 Cite Tag
<!element cite - o empty> <!attlist cite id cdata #required> 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.
10.7 Ncite Tag
<!element ncite - o empty> <!attlist ncite id cdata #required note cdata #required> Same as Cite Tag.
11. Indices
<!entity % index "idx|cdx|nidx|ncdx" > <!element idx - - (#pcdata)> <!element cdx - - (#pcdata)> <!element nidx - - (#pcdata)> <!element ncdx - - (#pcdata)>
The index tags serve for making a index of your document. They are only useful if you want do do LaTeX mapping. They only differ very slightly as mentioned in table Index elements.
11.1 Including a indexThere are two ways to include indices into your document. Look at both and decide.
Manually
HackedI'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 http://www.bnhof.de/~uwe/lnd/indexpatch/index.html.
12. Literate Programming
<!entity % litprog " code | verb " > 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 Think of
, but to write a big
document and later to extract the code from it.
People who don't like to document their code will not appreciate.The principle is: All text within verb and 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.
13. Reference
14. Named Symbols14.1 Named CharactersThis is a slightly modified list taken from [SGML-Tools User's Guide 1.0 ($Revision: 1.1.1.1 $)]. If you miss some, don't hesitate to mail. A lot of the named characters shown in table Named Characters are same as in the html-dtd.
14.2 Named WhitespacesThere 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.
15. Mathematical Figures
The special mappings for characters you might use for building up mathematical figures are shown in table Mathematical Figures.
16. Linuxdoc dtd Source
This is the <!-- This is a DTD, but will be read as -*- sgml -*- --> <!-- ================================================= --> <!-- $Id: lnd.sgml,v 1.1.1.1 2000/03/05 14:40:31 uwe Exp $ 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. <!entity % emph " em|it|bf|sf|sl|tt|cparam " > <!entity % index "idx|cdx|nidx|ncdx" > <!-- url added by HG; htmlurl added by esr --> <!entity % xref " label|ref|pageref|cite|url|htmlurl|ncite " > <!entity % inline " (#pcdata | f| x| %emph; |sq| %xref | %index | file )* " > <!entity % list " list | itemize | enum | descrip " > <!entity % par " %list; | comment | lq | quote | tscreen " > <!entity % mathpar " dm | eq " > <!entity % thrm " def | prop | lemma | coroll | proof | theorem " > <!entity % litprog " code | verb " > <!entity % sectpar " %par; | figure | tabular | table | %mathpar; | %thrm; | %litprog; "> <!element linuxdoc o o (sect | chapt | article | report | book | letter | telefax | slides | notes | manpage ) > <!-- `general' entity replaced with ISO entities - kwm --> <!entity % isoent system "isoent"> %isoent; <!entity urlnam sdata "urlnam" > <!entity refnam sdata "refnam" > <!entity tex sdata "[tex ]" > <!entity latex sdata "[latex ]" > <!entity latexe sdata "[latexe]" > <!entity tm sdata "[trade ]" > <!entity dquot sdata "[quot ]" > <!entity ero sdata "[amp ]" > <!entity etago '</' > <!entity Ae 'Ä' > <!entity ae 'ä' > <!entity Oe 'Ö' > <!entity oe 'ö' > <!entity Ue 'Ü' > <!entity ue 'ü' > <!entity sz 'ß' > <!element p o o (( %inline | %sectpar )+) +(newline) > <!entity ptag '<p>' > <!entity psplit '</p><p>' > <!shortref pmap "&#RS;B" null "&#RS;B&#RE;" psplit "&#RS;&#RE;" psplit -- '"' qtag -- "[" lsqb "~" nbsp "_" lowbar "#" num "%" percnt "^" circ "{" lcub "}" rcub "|" verbar > <!usemap pmap p> <!element em - - (%inline)> <!element bf - - (%inline)> <!element it - - (%inline)> <!element sf - - (%inline)> <!element sl - - (%inline)> <!element tt - - (%inline)> <!element sq - - (%inline)> <!element cparam - - (%inline)> <!entity ftag '<f>' -- formula begin -- > <!entity qendtag '</sq>'> <!shortref sqmap "&#RS;B" null -- '"' qendtag -- "[" lsqb "~" nbsp "_" lowbar "#" num "%" percnt "^" circ "{" lcub "}" rcub "|" verbar > <!usemap sqmap sq > <!element lq - - (p*)> <!element quote - - ((%inline; | %sectpar;)*, p*)+ > <!element tscreen - - ((%inline; | %sectpar;)*, p*)+ > <!element itemize - - (item+)> <!element enum - - (item+)> <!element list - - (item+)> <!shortref desmap "&#RS;B" null "&#RS;B&#RE;" ptag "&#RS;&#RE;" ptag "~" nbsp "_" lowbar "#" num "%" percnt "^" circ "[" lsqb "]" rsqb "{" lcub "}" rcub "|" verbar > <!element descrip - - (tag?, p+)+ > <!usemap desmap descrip> <!element item o o ((%inline; | %sectpar;)*, p*) > <!element tag - o (%inline)> <!usemap desmap tag> <!usemap global (list,itemize,enum)> <!entity space " "> <!entity null ""> <!-- <!shortref bodymap "&#RS;B&#RE;" ptag "&#RS;&#RE;" ptag '"' qtag "[" lsqb "~" nbsp "_" lowbar "#" num "%" percnt "^" circ "{" lcub "}" rcub "|" verbar> --> <!element figure - - ((eps | ph ), img*, caption?)> <!attlist figure loc cdata "tbp" caption cdata "Caption"> <!-- eps attributes added by mb and td --> <!element eps - o empty > <!attlist eps file cdata #required height cdata "5cm" angle cdata "0"> <!element ph - o empty > <!attlist ph vspace cdata #required> <!element img - o empty> <!attlist img src cdata #required> <!element caption - o (%inline)> <!shortref oneline "B&#RE;" space "&#RS;&#RE;" null "&#RS;B&#RE;" null -- '"' qtag -- "[" ftag "~" nbsp "_" lowbar "#" num "%" percnt "^" circ "{" lcub "}" rcub "|" verbar> <!usemap oneline tag> <!usemap oneline caption> <!entity % tabrow "(%inline, (colsep, %inline)*)" > <!element tabular - - (hline?, %tabrow, (rowsep, hline?, %tabrow)*, caption?) > <!attlist tabular ca cdata #required> <!element rowsep - o empty> <!element colsep - o empty> <!element hline - o empty> <!entity rowsep "<rowsep>"> <!entity colsep "<colsep>"> <!shortref tabmap "&#RE;" null "&#RS;&#RE;" null "&#RS;B&#RE;" null "&#RS;B" null "B&#RE;" null "BB" space "@" rowsep "|" colsep "[" ftag -- '"' qtag -- "_" thinsp "~" nbsp "#" num "%" percnt "^" circ "{" lcub "}" rcub > <!usemap tabmap tabular> <!element table - - (tabular, caption?) > <!attlist table loc cdata "tbp"> <!element code - - rcdata> <!element verb - - rcdata> <!shortref ttmap -- also on one-line -- "B&#RE;" space "&#RS;&#RE;" null "&#RS;B&#RE;" null "&#RS;B" null '#' num '%' percnt '~' tilde '_' lowbar '^' circ '{' lcub '}' rcub '|' verbar > <!usemap ttmap tt> <!element mc - - cdata > <!entity % sppos "tu" > <!entity % fcs "%sppos;|phr" > <!entity % fcstxt "#pcdata|mc|%fcs;" > <!entity % fscs "rf|v|fi" > <!entity % limits "pr|in|sum" > <!entity % fbu "fr|lim|ar|root" > <!entity % fph "unl|ovl|sup|inf" > <!entity % fbutxt "(%fbu;) | (%limits;) | (%fcstxt;)|(%fscs;)|(%fph;)" > <!entity % fphtxt "p|#pcdata" > <!element f - - ((%fbutxt;)*) > <!entity fendtag '</f>' -- formula end -- > <!shortref fmap "&#RS;B" null "&#RS;B&#RE;" null "&#RS;&#RE;" null "_" thinsp "~" nbsp "]" rsqb "#" num "%" percnt "^" circ "{" lcub "}" rcub "|" verbar> <!usemap fmap f > <!element dm - - ((%fbutxt;)*)> <!element eq - - ((%fbutxt;)*)> <!shortref dmmap "&#RE;" space "_" thinsp "~" nbsp "]" rsqb "#" num "%" percnt "^" circ "{" lcub "}" rcub "|" verbar> <!usemap dmmap (dm,eq)> <!element fr - - (nu,de) > <!element nu o o ((%fbutxt;)*) > <!element de o o ((%fbutxt;)*) > <!element ll o o ((%fbutxt;)*) > <!element ul o o ((%fbutxt;)*) > <!element opd - o ((%fbutxt;)*) > <!element pr - - (ll,ul,opd?) > <!element in - - (ll,ul,opd?) > <!element sum - - (ll,ul,opd?) > <!element lim - - (op,ll,ul,opd?) > <!element op o o (%fcstxt;|rf|%fph;) -(tu) > <!element root - - ((%fbutxt;)*) > <!attlist root n cdata ""> <!element col o o ((%fbutxt;)*) > <!element row o o (col, (arc, col)*) > <!element ar - - (row, (arr, row)*) > <!attlist ar ca cdata #required > <!element arr - o empty > <!element arc - o empty > <!entity arr "<arr>" > <!entity arc "<arc>" > <!shortref arrmap "&#RE;" space "@" arr "|" arc "_" thinsp "~" nbsp "#" num "%" percnt "^" circ "{" lcub "}" rcub > <!usemap arrmap ar > <!element sup - - ((%fbutxt;)*) -(tu) > <!element inf - - ((%fbutxt;)*) -(tu) > <!element unl - - ((%fbutxt;)*) > <!element ovl - - ((%fbutxt;)*) > <!element rf - o (#pcdata) > <!element phr - o ((%fphtxt;)*) > <!element v - o ((%fcstxt;)*) -(tu|%limits;|%fbu;|%fph;) > <!element fi - o (#pcdata) > <!element tu - o empty > <!usemap global (rf,phr)> <!element def - - (thtag?, p+) > <!element prop - - (thtag?, p+) > <!element lemma - - (thtag?, p+) > <!element coroll - - (thtag?, p+) > <!element proof - - (p+) > <!element theorem - - (thtag?, p+) > <!element thtag - - (%inline)> <!usemap global (def,prop,lemma,coroll,proof,theorem)> <!usemap oneline thtag> <!entity qtag '<sq>' > <!shortref global "&#RS;B" null -- delete leading blanks -- -- '"' qtag -- "[" ftag "~" nbsp "_" lowbar "#" num "%" percnt "^" circ "{" lcub "}" rcub "|" verbar> <!usemap global linuxdoc> <!element label - o empty> <!attlist label id cdata #required> <!-- ref modified to have an optional name field HG --> <!element ref - o empty> <!attlist ref id cdata #required name cdata "&refnam"> <!-- url entity added to have direct url references HG --> <!element url - o empty> <!attlist url url cdata #required name cdata "&urlnam" > <!-- htmlurl entity added to have quieter url references esr --> <!element htmlurl - o empty> <!attlist htmlurl url cdata #required name cdata "&urlnam" > <!element pageref - o empty> <!attlist pageref id cdata #required> <!element comment - - (%inline)> <!element x - - ((#pcdata | mc)*) > <!usemap #empty x > <!-- Hacked by mdw to exclude abstract; abstract now part of titlepag --> <!element article - - (titlepag, header?, toc?, lof?, lot?, p*, sect*, (appendix, sect+)?, biblio?) +(footnote)> <!attlist article opts cdata "null"> <!-- Hacked by mdw to exclude abstract; abstract now part of titlepag --> <!element report - - (titlepag, header?, toc?, lof?, lot?, p*, chapt*, (appendix, chapt+)?, biblio?) +(footnote)> <!attlist report opts cdata "null"> <!element book - - (titlepag, header?, toc?, lof?, lot?, p*, chapt*, (appendix, chapt+)?, biblio?) +(footnote) > <!attlist book opts cdata "null"> <!-- Hacked by mdw, abstract now part of titlepag --> <!element titlepag o o (title, author, date?, abstract?)> <!element title - o (%inline, subtitle?) +(newline)> <!element subtitle - o (%inline)> <!usemap oneline titlepag> <!element author - o (name, thanks?, inst?, (and, name, thanks?, inst?)*)> <!element name o o (%inline) +(newline)> <!element and - o empty> <!element thanks - o (%inline)> <!element inst - o (%inline) +(newline)> <!element date - o (#pcdata) > <!usemap global thanks> <!element newline - o empty > <!entity nl "<newline>"> <!-- Hacked by mdw --> <!element abstract - o (%inline)> <!usemap oneline abstract> <!element toc - o empty> <!element lof - o empty> <!element lot - o empty> <!element header - - (lhead, rhead) > <!element lhead - o (%inline)> <!element rhead - o (%inline)> <!entity % sect "heading, header?, p* " > <!element heading o o (%inline)> <!element chapt - o (%sect, sect*) +(footnote)> <!element sect - o (%sect, sect1*) +(footnote)> <!element sect1 - o (%sect, sect2*)> <!element sect2 - o (%sect, sect3*)> <!element sect3 - o (%sect, sect4*)> <!element sect4 - o (%sect)> <!usemap oneline (chapt,sect,sect1,sect2,sect3,sect4)> <!element appendix - o empty > <!element footnote - - (%inline)> <!usemap global footnote> <!element cite - o empty> <!attlist cite id cdata #required> <!element ncite - o empty> <!attlist ncite id cdata #required note cdata #required> <!element file - - (#pcdata)> <!element idx - - (#pcdata)> <!element cdx - - (#pcdata)> <!element nidx - - (#pcdata)> <!element ncdx - - (#pcdata)> <!element biblio - o empty> <!attlist biblio style cdata "linuxdoc" files cdata ""> <!element slides - - (slide*) > <!attlist slides opts cdata "null"> <!element slide - o (title?, p+) > <!entity % addr "(address?, email?, phone?, fax?)" > <!element letter - - (from, %addr, to, %addr, cc?, subject?, sref?, rref?, rdate?, opening, p+, closing, encl?, ps?)> <!attlist letter opts cdata "null"> <!element from - o (#pcdata) > <!element to - o (#pcdata) > <!usemap oneline (from,to)> <!element address - o (#pcdata) +(newline) > <!element email - o (#pcdata) > <!element phone - o (#pcdata) > <!element fax - o (#pcdata) > <!element subject - o (%inline;) > <!element sref - o (#pcdata) > <!element rref - o (#pcdata) > <!element rdate - o (#pcdata) > <!element opening - o (%inline;) > <!usemap oneline opening> <!element closing - o (%inline;) > <!element cc - o (%inline;) +(newline) > <!element encl - o (%inline;) +(newline) > <!element ps - o (p+) > <!element telefax - - (from, %addr, to, address, email?, phone?, fax, cc?, subject?, opening, p+, closing, ps?)> <!attlist telefax opts cdata "null" length cdata "2"> <!element notes - - (title?, p+) > <!attlist notes opts cdata "null" > <!element manpage - - (sect1*) -(sect2 | f | %mathpar | figure | tabular | table | %xref | %thrm )> <!attlist manpage opts cdata "null" title cdata "" sectnum cdata "1" > <!shortref manpage "&#RS;B" null -- '"' qtag -- "[" ftag "~" nbsp "_" lowbar "#" num "%" percnt "^" circ "{" lcub "}" rcub "|" verbar> <!usemap manpage manpage >
|
![]() |