Zum Inhalt springen

Auszeichnungssprache

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 23. Juli 2015 um 23:38 Uhr durch Uwe Lück (Diskussion | Beiträge) (Äußere Systematik: andere Quelle: HTML „Programm[iersprache]“). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Eine Auszeichnungssprache (englisch markup language) ist eine maschinenlesbare Sprache für die Gliederung und Formatierung von Texten und anderen Daten. Der bekannteste Vertreter ist die Hypertext Markup Language (HTML), die Kernsprache des World Wide Webs.[1]

Mit Auszeichnungssprachen werden Eigenschaften, Zugehörigkeiten und Darstellungsformen von Abschnitten eines Textes (Zeichen, Wörter, Absätze usw.) oder einer Datenmenge beschrieben. Dies geschieht in der Regel, indem sie mit Auszeichnungselementen (so genannten Tags) markiert werden.

Wortherkunft und Geschichte

Der typographische Begriff Auszeichnung kommt aus der Druckersprache. Ursprünglich war damit lediglich die Methode gemeint, Teile eines Textes durch von der Grundschrift abweichende Schriften zu gestalten, z. B. durch andere Schriftgrößen und -arten, aber auch durch Unterstreichen, Sperren oder andere Druckfarben. Für den Schriftsetzer wurden die entsprechenden Stellen früher handschriftlich auf dem zugehörigen Manuskript kenntlich gemacht; auch dies wurde Auszeichnen genannt.[2] Mit der Weiterentwicklung der Typografie für digitale Texte wurden daraus maschinenlesbare Sprachen, und das Konzept wurde auf Fußnoten, Literaturhinweise, Absätze, Überschriften etc. erweitert.

Wie ausgezeichneter Text aussieht

Typische Auszeichnungssprachen kennzeichnen Abschnitte („Elemente“) von Texten oder anderen Daten mit Tags. Die Quelltexte dafür werden mit einem computerlesbaren Zeichensatz verfasst, in der Regel ASCII oder Unicode, meist UTF-8. Oft bietet die Sprache auch die Möglichkeit, Sonderzeichen zu beschreiben, meist mit Hilfe einer numerischen Zuweisung (Unicode) oder durch Benennung (benannte Zeichenentitäten), für „µ“ zum Beispiel \mu in LaTeX und µ in HTML.

Ergebnis und Code in Beispielen

Beispiel für … Darstellungs-
beispiel
HTML LaTeX MediaWiki-Wikitext
Überschrift Abschnitt <h2>Abschnitt</h2> \section{Abschnitt}
==Abschnitt==
Aufzählung
  • Punkt 1
  • Punkt 2
  • Punkt 3

<ul>
<li>Punkt 1
<li>Punkt 2
<li>Punkt 3
</ul>

\begin{itemize}
\item Punkt 1
\item Punkt 2
\item Punkt 3
\end{itemize}

* Punkt 1
* Punkt 2
* Punkt 3

Hyperlink W3C <a href="http://www.w3.org">W3C</a> \href{http://www.w3.org}{W3C} [http://www.w3.org W3C]
fetten Text fett <b>fett</b> \textbf{fett} '''fett'''
kursiven Text kursiv <i>kursiv</i> \textit{kursiv} ''kursiv''

Der Hyperlink mit LaTeX funktioniert nicht allgemein, jedenfalls aber mit dem Zusatzpaket hyperref und bei Erzeugung eines Ergebnisses im PDF-Format.

Beispiele „darstellender“ gegenüber „beschreibender“ Auszeichnung

Fett“ und „kursiv“ in der vorigen Tabelle bedeuten eine bestimmte Darstellung (Formatierung, hier konkret Wahl eines Schriftschnitts), während „Überschrift“ ein semantisches Merkmal ist und im Allgemeinen keine Darstellung etwa als fett festlegt. In Druckwerken werden Überschriften statt durch Fetten auch durch Kapitälchen oder Kursivstellung formatiert. Zu HTML und LaTeX gibt die vorige Tabelle daher für „fett“ und „kursiv“ den Code für die Schriftauszeichnung (präsentationales Markup)[3] an; tatsächlich erzeugt die MediaWiki-Software der Wikipedia aus dem Wikitext '''fett''' den HTML-Code <b>fett</b>. Im Gegensatz dazu bietet HTML die semantische Auszeichnung durch strong an, was „Wichtigkeit“ ausdrücken soll, Beispiel:

HTML Ergebnis mit Voreinstellungen
<strong>wichtig!</strong> wichtig!

Das HTML-Element strong wird also normalerweise (in Browser-Voreinstellungen) durch Fetten dargestellt,[4] die Spezifikationen (HTML 4.01, HTML5) des HTML-Elements strong lassen jedoch die konkrete Darstellungsweise offen.[5]

Analog zum Verhältnis des HTML-Elements b zum HTML-Element strong ist die Beziehung des HTML-Elements i zu em: Dieses Element steht für „Betonung“, seine voreingestellte Darstellung ist Kursivstellung. In LaTeX gibt es ebenfalls eine „semantische Variante“ \emph der Darstellungsauszeichnung \textit:[6]

HTML LaTeX Ergebnis mit Voreinstellungen
<body>
eine <em>Betonung</em>
in normaler Umgebung
</body>
\begin{document}
eine \emph{Betonung}
in normaler Umgebung
\end{document}
eine Betonung in normaler Umgebung

Innerhalb eines kursiv gesetzten Texts aber ist Kursivstellung zur Betonung ungeeignet, LaTeX berücksichtigt das:

HTML Ergebnis mit Voreinstellungen
<i>eine <em>Betonung</em> in kursiver Umgebung</i> eine Betonung in kursiver Umgebung
\textit{eine \emph{Betonung} in kursiver Umgebung} eine Betonung in kursiver Umgebung
LaTeX Ergebnis

Wikitext verhält sich hier in gewisser Weise wie LaTeX; in HTML kann das Verhalten von LaTeX durch die CSS-Deklaration i em { font-style: normal; } (ansatzweise) erzielt werden. Nach HTML5-Spezifikation soll Verschachtelung von em-Elementen verstärkte Betonung ausdrücken[7] (was anscheinend noch kaum implementiert ist). LaTeX hingegen schaltet bei Verschachtelung von \emph nur zwischen Kursiv- und Aufrechtstellung hin und her, so dass beim Lesen dreifache Betonung von einfacher Betonung nicht zu unterscheiden ist. Letztlich sind demnach gebräuchliche und gleichzeitig sinnvolle Implementierungen von „Betonung“ in HTML nur für die einfachsten Fälle und in LaTeX nur für die einfachsten und die zweiteinfachsten Fälle bekannt.

Bei HTML wurde lange angestrebt, darstellende (der Jargon ist in diesem Falle „präsentationale“) Elemente abzuschaffen[8] (HTML4-Varianten „strict“[9] vs. „transitional“). Mit HTML5 soll dieses Ziel erreicht sein,[10] obwohl b und i immer noch vorhanden sind – für Fälle, in denen Fetten bzw. Kursivstellung „dringend erwünscht“ ist. Eine Aufzählung von Fällen, in denen die konkrete Schriftschnittwahl angebracht ist, wird als „semantische Definition“ der beiden Elemente betrachtet.[11]

Innere Systematik – Abstraktionsstufen

„Darstellend“ gegenüber „beschreibend“ – Übersicht

1981 unterschied Charles Goldfarb auf einer Konferenz und in einem einflussreichen[12] Artikel[13] zwischen prozeduraler (englisch procedural markup) und deskriptiver („beschreibender“, englisch descriptive markup) Auszeichnung von Dokumenten. 1987 wurde präsentational (englisch presentational markup) im Zusammenhang mit WYSIWYG-Textverarbeitung als weitere Art Text auszuzeichnen genannt.[14] Recht bald[15] wurde „präsentational“ jedoch als mit „prozedural“ synonym (oder als Oberbegriff davon) verwendet – wir nennen das hier „darstellend“. Letzeres bestimmt die Textformatierung, also etwa die Schriftauszeichnung durch Wahl einer Schriftart, eines Schriftschnitts, des Schriftgrads, einer Schriftfarbe oder einer Unterlegung; auch die Ausrichtung von Text (relative Abstände, absolute Position auf der Seite).[16] Goldfarb, William W. Tunnicliffe und Brian Reid empfahlen damals, Dokumente nur „beschreibend“ auszuzeichnen – z. B. Phrasen und Blöcke nur als „Titel“, „Abschnittsüberschrift“, „Blockzitat“ usw. zu kennzeichnen –, um typografisch hochwertigen Satz auch ohne typografische Fachkenntnisse und Programmierkenntnisse der Verfasser zu ermöglichen, den Darstellungsstil mit geringem Aufwand ändern zu können, nicht auf bestimmte Werksatzanbieter angewiesen zu sein und um automatische Informationsgewinnung zu erleichtern, etwa um beim Durchsuchen von Dokumenten nach Stichwörtern Vorkommnisse in Überschriften stärker zu gewichten. Entsprechend wurde später bei HTML darauf hingearbeitet, nur „strukturelle“ oder „semantische“ Elemente und Attribute anzubieten und die Darstellung völlig in die Cascading Style Sheets auszulagern.

Man kann die Auszeichnungssprachen grob unterteilen in Sprachen zur semantischen Beschreibung (englisch descriptive markup language) und in Auszeichnungssprachen für die Darstellung (englisch procedural markup language).

Mit den Beschreibungssprachen werden die Dokumente durch Metainformationen zu ihrer physischen und inhaltlichen Struktur und die Semantik ihrer Elemente ergänzt. Zu ihnen gehören unter anderem die in SGML oder XML definierten Sprachen HTML, DocBook, TEI, MathML, WML, XAML und SVG. Auszeichnungssprachen im engeren Sinne beschreiben dagegen die Darstellung der Dokumente auf dem Bildschirm, im Webbrowser, für Drucker und andere Ausgabegeräte. Dazu gehören die darstellenden Seitenbeschreibungssprachen wie das Textsatzsystem TeX und dessen Makropakete LaTeX oder ConTeXt. Viele Auszeichnungssprachen verwenden sowohl Eigenschaften der Beschreibungssprachen als auch der Darstellungssprachen, z. B. die Seitenbeschreibungssprachen für PDF und PostScript.

Nutzerfreundliche Frontends

Klassische Auszeichnungssprachen, die viele Details exakt darstellen können, müssen nicht unbedingt von Menschen direkt verwendet werden können, sondern werden oft maschinell durch Skriptsprachen erzeugt. Müssen aber die Quelltexte manuell geschrieben werden oder für Menschen lesbar sein, so können diese entweder mit WYSIWYG grafisch aufbereitet oder direkt durch einfache Auszeichnungssprachen (s. u.) dargestellt werden. Im Gegensatz zu WYSIWYG muss der Text zum Schreiben und Lesen nicht bearbeitet werden.

Vereinfachte Auszeichnungssprachen

Merkmale

Beiträge Wikis, Blogs, Internetforen werden typischerweise in Webformularfenstern verfasst. Die Gestaltungsmöglichkeiten können dabei sehr begrenzt sein, was einem gepflegten Erscheingsbild der sich ergebenden Seiten zugute kommen kann. Obwohl das Zielformat (in dem die Beiträge den Lesern präsentiert werden) HTML oder XHTML ist, wird HTML-Eingabecode im Formular allenfalls begrenzt akzeptiert (sonst weggefiltert). Das Markup verwendet (von den URLs für Hyperlinks abgesehen) oft nur (ungewöhnliche Kombinationen von) Interpunktionszeichen oder jedenfalls Zeichen, die keine Buchstaben sind; oder wenige HTML-Tags werden verkürzt und entsprechende Elemente nicht geschlossen (ähnlich wie in SGML), etwa

Textile Übersetzung in XHTML Beispieldarstellung
h3. Unterabschnitt <h3>Unterabschnitt</h3> Unterabschnitt

(ähnlich Haml). Dadurch stört das Markup den Lesefluss beim Verfassen des Beitrags im Formularfenster minimal. Für die Darstellung der Dokumente wird dieses Markup dann in die dafür erforderliche komplexere Auszeichnungssprache wie HTML oder XHTML serverseitig umgewandelt, etwa durch Pandoc oder, wie im Falle der Wikipedia, durch die MediaWiki-Software.

Markup-Beispiele mit zwei vereinfachten Auszeichnungssprachen
MediaWiki-Wikitext Markdown so … … oder so: ergibt XHTML Darstellungs-
beispiel
==Abschnitt==
##Abschnitt
<h2>Abschnitt</h2> Abschnitt

* Punkt 1
* Punkt 2
* Punkt 3

- Punkt 1
- Punkt 2
- Punkt 3

* Punkt 1
* Punkt 2
* Punkt 3

<ul>

<li>Punkt 1</li>
<li>Punkt 2</li>
<li>Punkt 3</li>
</ul>

  • Punkt 1
  • Punkt 2
  • Punkt 3
[http://www.w3.org W3C] [http://www.w3.org](W3C) <a href="http://www.w3.org">W3C</a> W3C
'''fett'''
**fett**
__fett__ <b>fett</b> fett
''kursiv'' *kursiv* _kursiv_ <i>kursiv</i> kursiv

Weiter verzichten vereinfachte Auszeichnungssprachen typischerweise auf Nutzung einfacher Codezeilenumbrüche und des Einrückens von Code allein zu dessen Strukturierung (im Sinne der Lesbarkeit und Verständlichkeit); vielmehr beendet etwa im Falle von MediaWiki ein Codezeilenumbruch einen in der Darstellung eingerückten Absatz („hängender Einzug“) einer Liste oder eines Blockzitats. Ein sofort folgendes Sternchen (*) beginnt einen (neuen) Listenpunkt und wird als typografisches Aufzählungszeichen dargestellt. Nachteil dieser Methode sind mögliche Kollisionen mit einer anderen Funktion der entsprechenden Zeichen, die Fehler verursachen können. In Markdown z. B. beginnt ein kursiv geschriebener Text mit dem Sternchen (ich rufe *laut* um Hilfe), was am Zeilenanfang (*laut* rufe ich um Hilfe) mit der Verwendung für einen Listeneintrag kollidieren kann. Eingerückter Code (d. h. dem Codezeilenumbruch folgt mindestens ein Leerzeichen) wird in Wikitext „verbatim“ als „Code“ (ohne Syntaxhighlighting) dargestellt. Weitere und genauere Beispiel bieten die Artikel Wikitext und Markdown sowie die weiteren Artikel in der Kategorie:Vereinfachte Auszeichnungssprache.

Neben rein logischen („deskriptiven“) Auszeichnungen wie Überschriften und reinen Schriftauszeichnungen wie fett können weitere Funktionen erfüllt werden:

  • Tags zur zusätzlichen Auszeichnung eines Datenbestandes mit zusätzlichen Informationen und zur Kategorisierung;
  • Transklusionen, um Teile anderer Dokumente durch einen Verweis einzuschließen.

Zwar ist das hauptsächliche Zielformat solcher Sprachen HTML oder XHTML, jedoch können viele von ihnen dank Pandoc (in eingeschränkter Weise) sogar als Frontend für LaTeX und ConTeXt verwendet werden und so letztlich PDF als Zielformat haben, oder sie können so in Textverarbeitungsformate, E-Books und Dokumentationsformate (DocBook, Manpages) umgewandelt werden.

Historische Entwicklung

Vereinfachte Auszeichnungssprachen wurden schon immer in rein textbasierten Systemen (z. B. Readme oder E-Mails) zur Darstellung von Hervorhebungen wie Kursiv oder Fett verwendet, ohne dass diese weiter umgewandelt wurden. Besonders ist die Syntax von Markdown – das mit umgewandelt wird – eng an diese historische Praxis angelehnt.

Die meisten Auszeichnungssprachen haben sich in der Anwendung unterschiedlicher Software gebildet, es gibt kaum standardisierte oder einheitliche Lösungen, obwohl die Funktionen oft ähnlich sind.

Die wohl erste vereinfachte Auszeichnungssprache mit Umwandlung wurde 1994 von Ward Cunninghams entwickelt und 1995 als WikiWikiWeb zusammen mit dem Portland Pattern Repository veröffentlicht, siehe auch Chronologie der Hypertext-Technologien.

Äußere Systematik

Dateinamenserweiterungen und MIME-Typen
ausgewählter Auszeichnungssprachen
Auszeichungssprache Dateiendung MIME-Typ
HTML .htm, .html text/html
PostScript .ps application/postscript
Rich Text Format .rtf text/rtf
TeX/LaTeX .tex text/x-tex
XML .xml text/xml

Zur Frage, ob eine Auszeichnungssprache eine Programmiersprache ist oder nicht, oder ob eine bestimmte Auszeichungssprache wie HTML eine Programmiersprache ist (eine HTML-Datei ein „Programm“)[17] oder nicht.[18] Zu XML erklärte das W3C 2001, es sei keine Programmiersprache, sondern biete Regeln zum Festlegen von Textformaten zur Strukturierung von Daten,[19] also zum Festlegen von Datenformaten (damit steht es nicht allein).[20] Tatsächlich ergab die Entwicklung von SGML zu XML die Möglichkeit, Auszeichnungssprachen zu völlig anderen Zwecken als dem ursprünglichen – der Vorbereitung von Texten – zu nutzen. Beispielsweise wird die Konfiguration des Linux-Fenstermanagers Openbox in einer XML-Datei abgelegt; statt Zeilen der Gestalt key=value wie in den Konfigurationsdateien anderer Programme findet man hier <key>value</key>, und übergeordnete Elemente wie mouse werden zur Gliederung der ungefähr 900 Zeilen umfassenden Datei verwendet. Es ist ganz und gar nicht beabsichtigt, diese Konfigurationsdatei als „Dokument“ zu „setzen“. Der Artikel XML nennt weitere Beispiele solcher ursprünglich nicht intenderter Anwendungsweisen von XML. Als Datenformat ist die in einer (Dokument‑)Datei verwendete Auszeichnungssprache an den Dateinamenserweiterungen erkennbar (siehe Tabelle).

Von den Musterbeispielen prozeduraler Auszeichungssprachen – PostScript, TeX und dem Nachkömmling troff des urzeitlichen RUNOFF (auf das auch Goldfarbs GML aufsetzte) ist bekannt, dass sie Turing-vollständig sind. Insofern können diese beliebig komplexe Algorithmen darstellen und erfüllen so ein wesentliches, allgemein anerkanntes Merkmal von Programmiersprachen. XSLT bildet eine weitere Turing-vollständige Programmiersprache, deren „Befehle“ jedoch wie bei den vorgenannten „Sprachen“ für die Darstellung mit XML „deskriptiv“ ausgezeichneter Dokumente ausgelegt sind und die kurioserweise selbst in einem „XML-Datenformat“ notiert ist.[21] Ebenso ist die in XML notierte Sprache XQuery für XML-Datenbanken Turing-vollständig.

Siehe auch

Literatur

  • James H. Coombs, Allen H. Renear und Steven J. DeRose: Markup Systems and the Future of Scholarly Text Processing. In: Communications of the ACM. Band 30, Nr. 11, November 1987, S. 933–947, doi:10.1145/32206.32209. Vollständige HTML-Fassung, abgerufen am 7. Juli 2015; Scan des Originalartikels (PDF 709 KiB).
  • Richard Furuta: Important papers in the history of document preparation systems: basic sources. In: Electronic Publishing: Origination, Dissemination & Design. Band 5, Nr. 1. John Wiley & Sons, Chichester, UK März 1992, S. 19–44 (PDF-Download von CiteSeerx [abgerufen am 7. Juli 2015] Relevante Abschnitte: 4, 5, 6.1, 6.2).
  • Charles Goldfarb: A Generalized Approach to Document Markup. In: Proceedings of the ACM SIGPLAN SIGOA Symposium on Text Manipulation (= SIGPLAN Notices). Band 16, Nr. 6, Juni 1981, S. 68–73 (PDF-Download von CiteSeerx [abgerufen am 9. Juli 2015]).
  • Dmitry Kirsanov: Chapter 3: SGML and HTML DTD. Procedural and Descriptive Markup. In: Rick Darnell et al. (Hrsg.): HTML Unleashed. sams.net, Indianapolis, IN 1997, ISBN 1-57521-299-4 (HTML-Fassung des Kapitelabschnitts [abgerufen am 23. Juli 2015]).
  • Eric Steven Raymond: The Art of Unix Programming. Addison-Wesley Professional Computing Series. Addison-Wesley Professional, Boston 2004, ISBN 0-13-142901-9, Kapitel 8. Minilanguages (Kapitelanfangsseite der HTML-Version vom 23. September 2003 [abgerufen am 13. Juli 2015] u. a. zur Turing-Vollständigkeit einzelner Auszeichnungssprachen).

Einzelnachweise

  1. HTML5 – A vocabulary and associated APIs for HTML and XHTML. W3C Recommendation 28 October 2014. W3C, 28. Oktober 2014, abgerufen am 10. Juni 2015 (englisch): „the core language of the World Wide Web: the Hypertext Markup Language (HTML)“
  2. Meyers enzyklopädisches Lexikon, Mannheim 1971. Band 3, S. 188.
  3. HTML 4.01 Specification – W3C Recommendation. 15 Alignment, font styles, and horizontal rules. 24. Dezember 1999, abgerufen Format invalid.
  4. HTML/Elements/strong. In: W3C Wiki. Abgerufen am 8. Juli 2014 (englisch).
  5. HTML5 – A vocabulary and associated APIs for HTML and XHTML – W3C Recommendation. 4.5.3 The strong element. 28. Oktober 2014, abgerufen am 8. Juli 2015 (englisch)..
  6. Frank Mittelbach, Michel Goosens, with …: The LaTeX Companion. Second Edition. Addison-Wesley, Boston among many more 2004, ISBN 0-201-36299-6, S. 341 ff.
  7. HTML5 – A vocabulary and associated APIs for HTML and XHTML – W3C Recommendation. 4.5.2 The em element. 28. Oktober 2014, abgerufen am 8. Juli 2015 (englisch).
  8. In HTML3.2 vom 14. Januar 1997 war davon noch nichts zu sehen, jedoch war am 17. Dezember 1996 mit CSS1 der Grundstein gelegt worden. Im Arbeitsentwurf für HTML 4.0 vom 8. Juli 1997 wurde dann angekündigt, dass „präsentationale“ Elemente und Attribute nach und nach durch Stylesheets ersetzt werden sollten.
  9. Dokumenttypdefinition
  10. HTML5 – A vocabulary and associated APIs for HTML and XHTML – W3C Recommendation. 1.10.1 Presentational markup. 28. Oktober 2014, abgerufen am 8. Juli 2015 (englisch).
  11. HTML5 – A vocabulary and associated APIs for HTML and XHTML – W3C Recommendation. 4.5 Text-level semantics. 28. Oktober 2014, abgerufen am 8. Juli 2015 (englisch).
  12. Furuta (#Literatur) Abschnitt 4.1
  13. Goldfarb unter #Literatur
  14. Coombs, Renear und DeRose (#Literatur)
  15. Furuta (#Literatur) bereits 1992.
  16. HTML 4.01 Specification – W3C Recommendation. 15 Alignment, font styles, and horizontal rules. 24. Dezember 1999, abgerufen Format invalid.
  17. Dmitry Kirsanov (#Literatur): HTML Unleashed. SGML and the HTML DTD. Introduction. 16. Juni 1997, abgerufen am 23. Juli 2015: „SGML [...] think of it as a programming language to build working programs (HTML being one of them) […]“
  18. Jukka Korpela (Technische Universität Tampere): Programs vs. markup. or why HTML authoring is not programming. 16. November 2015, abgerufen am 13. Juli 2014 (englisch).
  19. XML in 10 points. W3C, 13. November 2001, abgerufen am 15. Juli 2014 (englisch): „Note: This document is no longer maintained but is left for historical purposes.“
  20. Christoph Prevezanos: Technisches Schreiben: Für Informatiker, Akademiker, Techniker und den Berufsalltag. Abschnitt 2.1.5: XML-Umgebungen. Carl Hanser, München 2013, ISBN 978-3-446-43721-0, S. 13 (eingeschränkte Vorschau in der Google-Buchsuche [abgerufen am 16. Juli 2015] E-Book-ISBN 978-3-446-43759-3). Zitat: „XML ist keine Textverarbeitung, keine Programmiersprache und auch kein konkretes Programm. Stattdessen handelt es sich um eine Auszeichnungssprache, mit der sich Texte strukturieren und die Elemente deklarieren lassen.“
  21. Stephan Kepser (Universität Tübingen, SFB 441): A Simple Proof for the Turing-Completeness of XSLT and XQuery. In: Extreme Markup Languages 2004® (Montréal, Québec) (= Proceedings of Extreme Markup Languages). (HTML-Fassung des Vortragtexts [abgerufen am 19. Juli 2015] © 2004 Stephan Kepser).