Diese Seite stellt keinen aktuellen Stand dar. Montimum wurde 2010 durch Aneamal ersetzt.

Montimum 2: Syntax

Der erste Teil der Serie über Montimum drehte sich um die Ziele der Auszeichnungssprache. Dieser zweite Teil behandelt die Syntax – grob gesagt, wie die Ziele umgesetzt werden.

Montimum kann individuell für jedes Dokument angepasst werden. Aus dieser Flexibilität ergibt sich, dass es einerseits eine Standard-Syntax gibt, andererseits eine gestaltbare „Nicht-Standard-Syntax“. Los geht es mit der …

Standard-Syntax

Ein Montimum-Dokument ist zunächst eine simple Textdatei. Dieser Text lässt sich in verschiedene Komponenten einteilen, von denen einige auch ineinander verschachtelt auftauchen können:

  • einfache Komponenten
    • einfacher Text
    • Kommentare
    • zeichengetreuer Text
  • komplexe Komponenten
    • Auszeichnungselemente
    • das Wurzelelement

Komplexe Komponenten unterscheiden sich von einfachen Komponenten dadurch, dass sie andere Komponenten enthalten können, ohne dass die eingeschlossenen Komponenten ihre spezifische Bedeutung verlieren. Beispielsweise sind Listen Auszeichnungselemente, also komplexe Komponenten. Eine Liste kann einen Link enthalten, der dann genauso interpretiert wird, als würde er irgendwo außerhalb der Liste stehen. Der Link verliert seine spezifische Bedeutung nicht, wenn er in der komplexen Komponente Liste enthalten ist. Er funktioniert unverändert.

Wird ein Link hingegen in einem Bereich zeichengetreuen Textes notiert, wird er nicht als Link interpretiert und dargestellt, sondern Zeichen für Zeichen so ausgegeben, wie er eingetippt wurde. Er verliert innerhalb der einfachen Komponente zeichengetreuer Text seine besondere Funktion, Dokumente miteinander zu verknüpfen.

Einfacher Text

Einfacher Text ist einfach Text. Ein Beispiel:

Einfacher Text ist einfach Text.

Kommentar

Kommentare sind Anmerkungen in einem Dokument. Bei der Ausgabe, zum Beispiel in Form einer Internetseite, werden sie nicht angezeigt. Kommentare werden [[so]] umschlossen, also mit doppelten eckigen Klammern. Beispiel:

Einfacher Text ist einfach Text. [[Tja, wer hätte das gedacht?]]

Im Gegensatz zu XML-Kommentaren können Montimum-Kommentare geschachtelt vorkommen.1 Beispiel:

Einfacher Text ist einfach Text. [[Tja, wer hätte das [[wohl]] gedacht?]]

Zeichengetreuer Text

Zeichengetreuer Text ist ein Bereich, in dem Zeichen nur für sich selbst stehen und keine besondere Bedeutung tragen, vergleichbar mit CDATA-Bereichen in XML. Zeichengetreuer Text wird entweder '[so]' oder "[so]" umschlossen, also mit eckigen Klammern, die wiederum von einfachen oder doppelten Anführungszeichen2 eingeschlossen werden. Beispiel:

"[Kommentare werden [[so]] umschlossen]", also doppelt mit eckigen Klammern.

Dass sowohl die Verwendung einfacher als auch doppelter Anführungszeichen möglich ist, hat vor allem einen Zweck: Um in Anleitungen wie dieser mit der einen Variante die jeweils andere als zeichengetreu markieren zu können. Beispiel:

Zeichengetreuer Text wird entweder "['[so]']" oder '["[so]"]' umschlossen.

Auszeichnungselemente

Auszeichnungselemente gehören zu den wichtigsten Komponenten jeder Auszeichnungssprache. Es gibt viele verschiedene Auszeichnungselemente, die zusammen den Wortschatz von Montimum bilden. Im nächsten Artikel der Serie werde ich sie und ihre Bedeutung auflisten. Hier erst einmal Informationen zu ihrer Struktur.

Auszeichnungselemente werden durch allein stehende Gravis und Akut3 umschlossen und enthalten einen von eckigen Klammern eingerahmten Bezeichner. Beispiel:

`[separator]´

Auszeichnungselemente besitzen zumeist weitere Inhalte. Inhalte können sowohl einfacher Text als auch die Mehrzahl der anderen Komponenten sein: Kommentare, zeichengetreuer Text, weitere Auszeichnungselemente in Standard- oder Nicht-Standard-Syntax. Inhalte befinden sich zwischen der schließenden eckigen Klammer und dem schließenden Akut. Beispiel:

`[paragraph]In der Kürze liegt die `[emphasize]Würze´.´

Ein Element kann mehrere unbenannte, voneinander getrennte Inhalte besitzen, die durch eine Doppelpunkt-Punkt-Kombination abgegrenzt werden. Im folgenden Beispiel enthält das Link-Element einerseits einen Link-Text, andererseits die Adresse, unter der man mehr darüber erfährt:

Lesen Sie mehr bei `[link]Perlebär :. http://xn--perlebr-bxa.de/´.

Manche Elemente können gestalterische Eigenschaften wie Textausrichtung in Tabellen tragen. Diese werden innerhalb der eckigen Klammern hinter dem Bezeichner und einem Doppelpunkt notiert. Es folgt die Benennung der Eigenschaft und durch das erste Leerzeichen getrennt dann ein oder mehrere Werte zu dieser Eigenschaft. Beispiel:

`[array: align right left] Iberische Länder und Hauptstädte :. Spanien :. Madrid :. Portugal :. Lissabon ´

Sollen zu einem Element mehrere Eigenschaften mit Werten angegeben werden, trennt man sie durch Semikolons voneinander. Beispiel:

`[figure: align justify; background transparent] Logo :. /bilder/logo.png´

Die Reihenfolge der benannten Eigenschaften kann frei gewählt werden, während die Reihenfolge der unbenannten Inhalte nicht beliebig ist.

Wurzelelement

Jedes Dokument besitzt automatisch ein anonymes Wurzelelement. Im Gegensatz zu XML muss und kann das Wurzelelement nicht niedergeschrieben werden. Es enthält als Inhalt sämtliche Komponenten der ersten Schachtelungsebene des Dokumentes, also jene Komponenten, die nicht in einem anderen Element enthalten sind.

Nicht-Standard-Syntax

Bei der Nicht-Standard-Syntax können für Auszeichnungselemente Kurzschreibweisen vereinbart und verwendet werden.

Nicht-Standard-Auszeichnungselemente

Nicht-Standard-Auszeichnungselemente werden durch allein stehende Gravis und Akut3 umschlossen. Direkt nach dem Gravis und optional noch einmal vor dem Akut steht eine zuvor vereinbarte Abkürzung. Die Abkürzung kann ein einzelnes Unicode-Zeichen sein, aber auch ein Wort – theoretisch ein ganzer Roman. Beispiele:

The quick brown `**dog´ jumps over the lazy fox. The quick brown `!dog!´ jumps over the lazy fox. The quick brown `hervorgehoben:dog´ jumps over the lazy fox.

Nicht-Standard-Auszeichnungselemente können ebenso wie ihre standardisierten Brüder mehrere unbenannte Inhalte besitzen, wie gehabt getrennt durch eine Doppelpunkt-Punkt-Kombination. Gestalterische Eigenschaften können ihnen im Text nicht hinzugefügt werden. Allerdings können diese bei der Vereinbarung der Kurzschreibweise bereits hinterlegt werden.

Vereinbarung von Kurzschreibweisen

Die Vereinbarung von Kurzschreibweisen sieht in etwa so aus, wie ein Auszeichnungselement mit dem Bezeichner „<=>“4 aufgebaut wäre:

`[<=>: strong **]´ `[<=>: strong !]´ `[<=>: strong hervorgehoben:]´

Nach dem „<=>“ steht also ein Doppelpunkt, dann der Name des abzukürzenden Standard-Auszeichnungselementes. Es folgt durch ein Leerzeichen getrennt die Abkürzung. Durch ein Semikolon getrennt können dann wie bei Standard-Auszeichnungselementen Eigenschaften zur Gestaltung mitgegeben werden:

`[<=>: figure Abbildung; align justify; background transparent]´

Angewendet wird es so:

`Abbildung Logo :. /bilder/logo.png´

Das entspricht genau dieser Standard-Syntax:

`[figure: align justify; background transparent] Logo :. /bilder/logo.png´

Wie es weitergeht

Der dritte Teil der Serie wird sich mit dem Wortschatz von Montimum beschäftigen. In weiteren Artikeln gehe ich zum einen auf die Implementierung von Montimum ein und beschreibe, wie Dokumente für Perlebär.de in XHTML übersetzt werden. Zum anderen lade ich zu einem kleinen Ausflug zu Montimums Mathe-Modus ein.

1 Eine Schachtelung von Kommentaren war mir sehr wichtig. Beim Erstellen eines Dokumentes, genauso wie beim Programmieren, kommentiert man Abschnitte zu Testzwecken oftmals aus. Enthalten jene Abschnitte bereits Kommentare, muss man diese ohne Unterstützung von Kommentarschachtelung erst entfernen oder aber den Abschnitt in mehrere Unterabschnitte teilen und diese einzeln auskommentieren. Das verringert Übersichtlichkeit und raubt Zeit.
2 Mit Anführungszeichen sind hier die Unicode-Zeichen U+0027 (einfach) und U+0022 (doppelt) gemeint.
3 Es handelt sich um die Unicode-Zeichen U+0060 (Gravis) und U+00B4 (Akut).
4 „<=>“ sind die drei Unicode-Zeichen U+003C, U+003D, U+003E.