MATHS: mth2html, mth2sgml

Contents


Einleitung

Es bietet einige Vorteile, Dokumentationen einschließlich mathematischer und naturwissenschaftlicher Texte quasi als ASCII-Texte zu verfassen und zur Verfügung zu haben.

ASCII-Texte kann man im Gegensatz zu den sich ändernden Codierungen handelsüblicher Textverarbeitungsprogramme als ``stabil'' ansehen, sie lassen sich auch ohne weiteres per E-Mail verschicken und auf andere Rechnerplattformen übertragen. Ähnliche Vorteile gelten zwar auch für TeX-Dokumente, die jedoch als TeX-Quelltexte relativ schlecht lesbar sind, auch ist deren Konvertierung in andere Textformate nicht unproblematisch. Attraktiv ist die Verwendung von SGML (Standard Generalized Markup Language),

SGML General Information

jedoch erfordert die Erstellung von SGML-Dokumenten allerhand Disziplin sowie die Kenntnis der wichtigsten Regeln.

Speziell zur Erstellung mathematischer Dokumente, insbesondere formaler Beschreibungen wie BNF (Backus-Naur Form) bzw. EBNF und XBNF, wurde von Dr. Richard J. Botting <dick@csci.csusb.edu>, California State University, das System MATHS entwickelt (Multi-purpose Abstractions, Terminology, Heuristics and Symbols). Dessen Kernpunkt liegt eigentlich darin, die impliziten Zusammenhänge von XBNF automatisch in sinnvolle Formatierungen (z.B. HTML) überführen zu können.

MATHS-Dokumente sind also gut lesbare ASCII-Texte, die allerdings noch einige leicht erlernbare Formatierungsangaben enthalten, mit denen Überschriften, Verweise und Quellenangaben markiert werden. Sämtliche Formatierungsangaben beginnen mit einem Punkt (.) am Anfang der Zeile.

Mit Hilfsprogrammen wie mth2html kann ein MATHS-Dokument in ein Hypertext-Dokument (HTML) konvertiert werden. Hier wurde eine PERL-Fassung von ``mth2html'' entwickelt sowie ein (experimentelles) PERL-Script ``mth2sgml'' zur Konvertierung in ein SGML-Dokument. Das SGML-Dokument kann dann z.B. in LaTeX, HTML, RTF oder ASCII-Text umgewandelt werden.

Formatierungsangaben in MATHS

Überschriften

Wie in der Einleitung erwähnt, beginnen die Formatierungsangaben mit einem Punkt am Zeilenanfang. Überschriften auf der gleichen Gliederungsebene beginnen mit einem Punkt, dem ein Leerzeichen und dann die eigentliche Überschrift folgt:

. Abschnittsueberschrift

Das gesamte Dokument sowie Unterabschnitte sollen zwischen den Zeilen ``.Open <Überschrift>'' und ``.Close'' stehen (man beachte die Groß- und Kleinschreibung der Schlüsselwörter!). Die auf ``.Open ...'' folgenden Überschriften werden jeweils um eine Stufe in der Hierarchie herabgestuft. Damit ergibt sich etwa folgender Aufbau eines MATHS-Dokuments:

.Open Titel des Dokuments
.Open Abschnitt 1
. Abschnitt 1.1
Text zum Abschnitt 1.1 ...
. Abschnitt 1.2
Text zum Abschnitt 1.2 ...
.Close Abschnitt 1
.Open Abschnitt 2
. Abschnitt 2.1
Text zum Abschnitt 2.1 ...
. Abschnitt 2.2
Text zum Abschnitt 2.2 ... usw. usf.
.Close Abschnitt 2
.Close Titel des Dokuments

Absätze

Absätze werden durch eine Leerzeile getrennt.

Einrückungen

Einrückungen am Anfang eines Absatzes haben eine spezielle Funktion. In der Standardvariante werden damit eingerückte Absätze gekennzeichnet (<DD> in HTML), in der speziellen ``lists''-Variante hingegen numerierte Listenpunkte (<LI> in HTML).

Verweise

Verweise werden durch das Schlüsselwort ``.See'' eingeleitet, gefolgt (z.B.) vom URL, also dem in HTML-Texten gebräuchlichen ``Uniform Resource Locator'':

.See <URL>
z.B.:
.See http://www.chemie.fu-berlin.de/

//www.chemie.fu-berlin.de/

Hervorgehobene Textstellen

In MATHS sind Hervorhebungen für Quellen (``.Source'') und für Adressen (``.Address'') vorgesehen; beides führt in der Praxis dazu, daß die markierten Textpassagen kursiv dargestellt werden:

.Source Dr. Richard J. Botting

Dr. Richard J. Botting

.Address Dr. Burkhard Kirste

Dr. Burkhard Kirste

Präformatierte Passagen

Mit Hilfe eines vorangestellten ``.As_is'' am Anfang jeder Zeile lassen sich Passagen in ihrer ursprünglichen Formatierung übernehmen, z.B.:

.As_is.Address Dr. Burkhard Kirste

Eingebundene Bilder

Bilder werden in das HTML-Dokument eingebunden, indem man im MATHS-Text die Formatierungsangabe ``.Image'' benutzt:

.Image <URL> <Alternativtext>
z.B.:
.Image http://www.chemie.fu-berlin.de/bilder/info.gif Info

Info

Private Erweiterungen zu den Formatierungsangaben (BKi)

Motivation

Wie erwähnt, dient das ursprüngliche MATHS-Konzept zur Darstellung von XBNF. Um auch ``normale'' Texte angemessen formatieren zu können, wurden einige private (!) Erweiterungen hinzugefügt. Sie dienen zur Hervorhebung durch Fettdruck (``.Strong''), zur Erzeugung von Listen sowie zur einfachen Wiedergabe von längeren präformatierten Textpassagen bzw. von Quellcode. Nur zur Verwendung mit mth2sgml können auch SGML-Passagen original verwendet werden.

Fettdruck

Analog zum Kursivdruck (.Source, .Address) mittels ``.Strong'':

.Strong Fettdruck

Fettdruck

Listen

Unnumerierte (<itemize>, <ul>) bzw. numerierte (<enum>, <ol>) Listen lassen sich wie folgt erzeugen:

.Begin itemize
.Item ein Listenelement
.Item ein weiteres Listenelement
.End itemize

.Begin enum
.Item Punkt eins
.Item Punkt zwei
.End enum

  1. Punkt eins
  2. Punkt zwei

Da die Formulierung ``.Item '' verhältnismäßig häßlich ist, kann statt dessen ``* '' verwendet werden; dann muß bei den Scripts allerdings der Optionsschalter ``-s'' gesetzt werden.

.Begin enum
* Punkt eins
* Punkt zwei
.End enum

Präformatierte Passagen

Anstelle des Voranstellens von ``.As_is'' vor jede Zeile können längere Passagen zwischen die Zeilen ``.Begin verb'' und ``.End verb'' geschrieben werden, wenn sie präformatiert übernommen werden sollen.

Die Variante ``.Begin code'' ... ``.End code'' arbeitet bezüglich mth2html genauso, mit mth2sgml wird die Markierung für Quellcode erzeugt.

Bei der Verwendung von ``.Begin sgml'' ... ``.End sgml'' wird der betreffende Text so, wie er steht, in das HTML- bzw. SGML-Dokument übernommen und dann vom HTML- bzw. SGML-Parser interpretiert; Vorsicht!

mth2sgml: ``.Begin mytag'' wird in ``<mytag>'' umgesetzt und ``.End mytag'' in ``</mytag>''.

Scripts mth2html und mth2sgml

Die Perl-Scripts sind via anon. FTP erhältlich:

mth2html.tar.gz

Das Perl-Script mth2html basiert im wesentlichen auf dem gleichnamigen Script (sh mit sed und awk) von R. Botting, es wurde nach formaler Konvertierung etwas modifiziert und erweitert. Standardaufruf:

     mth2html myfile[.mth]

Es wird die HTML-Datei myfile.html erzeugt.

Um der speziellen ``lists''-Variante (mth2html.lists) von R. Botting Rechnung zu tragen, benutze man die Option ``-l'':

     mth2html -l myfile[.mth]

Eine kurze Erläuterung zu den vorhandenen Kommandozeilen-Optionen liefert der Aufruf

     mth2html -h

Falls man der Einfachheit halber Listenelemente durch ein ``* '' am Zeilenanfang gekennzeichnet hat (statt durch ``.Item ...''), benutze man die Option ``-s''. Die Eingabedatei darf ISO-Latin1-Zeichen (in der 8-Bit-Codierung) erhalten, es erfolgt automatisch eine Umwandlung in die ``character entities'' (&auml; etc.).

Analog dient das Perl-Script mth2sgml zur Erzeugung von SGML-Dokumenten in der linuxdoc DTD. Dieses Script muß allerdings als ``experimentell'' bezeichnet werden, da nicht alle MATHS-Formatierungen korrekt implementiert sind. Die Syntax des erhaltenen SGML-Dokuments sollte überprüft werden, es sind evtl. nachträgliche manuelle Korrekturen erforderlich. Im übrigen erfolgt der Aufruf analog zu mth2html:

     mth2sgml -h
     mth2sgml myfile[.mth]
     mth2sgml -l myfile[.mth]

Es wird die SGML-Datei myfile.sgml erzeugt.

Sofern die SGML-Syntax korrekt ist (sgmlcheck myfile), kann die Datei ``myfile.sgml'' anschließend nach LaTeX (sgml2latex), HTML (sgml2html), RTF (sgml2rtf), ASCII- bzw. ISO-Latin1-Text (sgml2txt), GNU Info (sgml2info) oder Lyx (sgml2lyx) konvertiert werden; siehe auch die Dokumentation zu Linuxdoc-SGML,

guide

Linuxdoc-SGML basiert übrigens auf qwertz-SGML,

qwertz-sgml

Quelltext dieser Datei:

mth2html.mth

Sections and Definitions in Alphabetical Order


Burkhard Kirste, 1996/05/14.