Auszeichnungssprache

Eine Auszeichnungssprache (englisch markup language, abgekürzt ML) 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.

Mit Auszeichnungssprachen werden Eigenschaften, Zugehörigkeiten und Darstellungsformen von Abschnitten eines Textes (Zeichen, Wörtern, Absätzen usw. – „Elementen“) oder einer Datenmenge beschrieben. Dies geschieht in der Regel, indem sie mit Tags markiert werden.

Der Artikel behandelt besonders die mit der Standard Generalized Markup Language (SGML) empfohlene „Trennung von Struktur und Darstellung“.

Wortherkunft und Geschichte

Der typografische 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. 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. Dann wurde der Gedanke der Trennung von Inhalt und Form (ursprünglich ein Schlagwort der Formalen Soziologie) populär, so dass in den Quelltexten für Dokumente Hinweise auf die Formatierung von Textteilen mehr und mehr durch Kennzeichnungen der Art von Information ersetzt wurden, die jeweils mitgeteilt werden sollte. Dies führte 1986 zu SGML als internationalem Auszeichnungsstandard (ISO 8879) und 1998 zur Spezifikation von XML durch das World Wide Web Consortium. XML wurde in den folgenden Jahren auch für andere Zwecke als für die Formatierung von Textdokumenten eingesetzt, etwa für Datenformate („Datenserialisierung“).

Wie ausgezeichneter Text aussieht

Grundzüge

Typische Auszeichnungssprachen kennzeichnen Teile von Texten oder anderen Daten mit Tags. Die Quelltexte dafür werden mit einem computerlesbaren Zeichensatz verfasst, in der Regel ASCII oder 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>
<li>Punkt 2</li>
<li>Punkt 3</li>
</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{https://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 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 Text dargestellt.

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:

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 (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 (HTML4-Varianten „strict“ vs. „transitional“). Mit HTML5 soll dieses Ziel erreicht sein, 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.

Innere Systematik – Abstraktionsstufen

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

1981 unterschied Charles Goldfarb auf einer Konferenz (der „Lausanne-Konferenz“) und in einem einflussreichen Artikel 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. Recht bald wurde „präsentational“ jedoch als mit „prozedural“ synonym (oder als Oberbegriff davon, dazu unten #„Prozedural“ und „präsentational“) verwendet – wir nennen das hier darstellend. Letzteres 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). Weitere Synonyme wurden später häufiger verwendet:

zu „darstellend“/„präsentational“
 
visuell, physisch, spezifisch;
zu „deskriptiv“
 
strukturell, deklarativ, verallgemeinert („generalized“), generisch, inhaltlich, logisch, konzeptuell (englisch conceptual markup), semantisch.

Der Ausdruck generic coding anstelle von descriptive markup stammt von William W. Tunnicliffe. Furuta verwendete 1992 zur Darstellung von Goldfarbs (und Brian Reids, s.u.) Unterscheidung nicht „prozedural“ und „deskriptiv“, sondern „präsentational“ und „generisch“ (außerdem separation between content specification and format specification und zu „generisch“ logical structure rather than its physical appearance.) In den Spezifikationen (und Entwürfen) zu HTML 4.0 und HTML 4.01 ist das vorherrschende Gegensatzpaar „präsentational“ (auch presentation elements and attributes) versus „strukturell“ (Separate structure and presentation), auch von visual formatting ist die Rede.

Zu Beginn seines Artikels erklärt Goldfarb, das Markup trenne die logischen Elemente voneinander und gebe („typischerweise“ – wohl in Bezug auf das bis dahin bekannte prozedurale Markup) die Verarbeitungsfunktionen („processing functions“) an, die auf diese Elemente angewendet werden sollen.

Popularität beschreibender Auszeichnung (Vorteile, historische Entwicklung)

Goldfarb, William W. Tunnicliffe und Brian Reid empfahlen damals, Dokumente beim Verfassen 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. Goldfarb weist etwa darauf hin, dass durch die bloße Kennzeichnung von Wörtern als zu zentrieren die Information verloren geht, ob es sich um eine Überschrift oder die Beschriftung einer Tabelle oder Abbildung handelt. Deskriptive Auszeichnung erleichtert auch die Darstellung in unterschiedlichen Ausgabeformaten/-geräten wie HTML, PDF und Screenreader . Im Falle von HTML kann die Nutzung präsentationaler Attribute anstelle von Stylesheets auch die HTML-Dateien „aufblähen“. 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 (Trennung von Inhalt und Form).

William W. Tunnicliffe sprach sich bereits 1967 auf einer Konferenz für die Trennung von Inhalt und Form in der Textverarbeitung aus, was jedoch zunächst geringe Wirkung hatte (immerhin gibt Goldfarb an, davon beeinflusst worden zu sein). 1981 stellte Brian Reid sein Satzsystem Scribe in derselben Sitzung der „Lausanne-Konferenz“ vor, in der Goldfarb seine Ideen vorstellte. Scribes Trennung von Inhalt und Form(atierung) beeindruckte als besonders gut gelungen. In den nächsten Jahren entwickelte Leslie Lamport das Makropaket LaTeX für das TeX-Programm besonders mit der Motivation, ebenfalls Autoren eine deskriptive Auszeichnungssprache anzubieten. 1985 wurde es veröffentlicht. Bereits 1992 war LaTeX sehr populär, zunächst unter nordamerikanischen Mathematikern, in den nächsten Jahren überhaupt im wissenschaftlich-akademischen Bereich und in der Industrie. In den nächsten Jahren übernahm ein fast rein europäisches Entwicklungsteam die Weiterentwicklung von LaTeX von Lamport und verbesserte seine Flexibilität hinsichtlich Verwendung unterschiedlicher „Stylesheets“ (Makrodefinitionsdateien mit Endungen .sty für „style“ wie bei Lamport und .cls für die Deklaration der „Dokumentenklasse“ mit \documentclass) und hinsichtlich der Verwendung mit nicht-englischen Sprachen, wodurch die Bedeutung von LaTeX noch gesteigert wurde.

Tunnicliffe und Goldfarb führten dagegen die Weiterentwicklung von IBM Generalized Markup Language zu SGML als Grundlage für die Definition rein deskriptiver Auszeichnungssprachen an, woraus später XML entstand, das im Werksatz ebenfalls eine bedeutende Rolle spielt.

Definition als „Sprache“

Eine Auszeichnungssprache sollte eine Sprache sein, die auch maschinenlesbar ist. Dazu müssen jeweils Syntax und Semantik angegeben werden, was in folgenden Fällen zutrifft:

  1. Der Quellcode eines Dokuments ist ein Programm mit Anweisungen einer (domänenspezifischen) Programmiersprache; Syntax und Semantik sind also wie bei anderen Programmiersprachen auch definiert und bilden eine formale Sprache, deren Syntax etwa durch Produktionsregeln (etwa in Backus-Naur-Form) gebildet wird. Dies gilt etwa für PostScript, troff und TeX (für dieses auf Token-Ebene nach Expansion von Makros u.a.).
  2. Bei gemäß SGML bzw. XML definierten Auszeichnungssprachen wird jedenfalls die Syntax präzise durch eine Dokumenttypdefinition dargestellt. Unter Umständen gibt das World Wide Web Consortium auch eine (informelle) Semantik an, die aus an Nutzer und Entwickler gerichteten Empfehlungen besteht.

Etwas schwieriger ist es im Fall von TeX und LaTeX, wo durch Makrodefinitionen (hauptsächlich vor dem Einlesen des Codes, der den Inhalt eines Dokuments darstellt) eine sehr umfangreiche „prozedurale“ Sprache (wir greifen etwas vor) entsteht. Durch die Wahl „sprechender“ Makronamen entsteht jedenfalls eine „Illusion“ von rein „deskriptiver“ Auszeichnung. Durch Verschweigen (im Handbuch) oder Verbieten der durchaus verfügbaren Möglichkeiten „prozeduraler“ oder „präsentationaler“ Auszeichnung kann man zu einer „rein deskriptiven“ Auszeichnungssprache gelangen. Auf ähnliche Weise war HTML 4.01 Strict eine durch „Verbieten“ präsentationaler, von Browsern aber weiterhin interpretierter Elemente und Attribute eine rein deskriptive Auszeichnungssprache.

„Prozedural“ und „präsentational“

In einem bedeutenden Aufsatz von 1987 wurden neben „prozedural“ und „deskriptiv“ weitere Auszeichnungsarten beschrieben, von denen der XML-Koautor Tim Bray in seinem Blog „präsentational“ übernahm. Gemeint war mit letzterem solches Markup, das von WYSIWYG-Textverarbeitungsprogrammen automatisch in den Dokument-Quellcode eingefügt wurde, wenn Nutzer bestimmte Tastenkombinationen eingaben (genannt wird WordStar). Statt des Quellcodes bekommt der Nutzer aber nur eine Vorschau der Druckausgabe zu sehen. „Präsentational“ hat hierbei offenbar eine andere, speziellere Bedeutung als in den HTML-Spezifikationen, in denen keine Rede von WYSIWYG-Editoren ist. Eine Gemeinsamkeit besteht aber darin, dass der Auszeichnungscode knapper ist als der für „auffällig prozedurales Markup“ in folgendem Sinne:

In dem von Goldfarb angegebenen Beispiel geht einer Liste, wie sie etwa in HTML mit <ol> eingeleitet wird, folgender Code voraus:

tb 4
of 4
sk 1

Die ersten beiden Zeilen stellen dabei Wertzuweisungen für Parameter dar, die den hängenden Einzug des folgenden Absatzes steuern, die dritte Zeile erzeugt dessen vertikalen Abstand zum vorhergehenden Absatz. Die dabei verwendete Auszeichnungssprache ist das (troff-ähnliche) SCRIPT. Es handelt sich offenbar um einen Teil eines Computerprogramms in einer imperativen Programmiersprache. <ol> in HTML ist kürzer und verzichtet auf Details der Formatierung. Das Beispiel ist allerdings nur dazu geeignet, Goldfarbs Vorstellung von „prozeduraler Auszeichnung“ anzudeuten, und illustriert nur den Unterschied zur „deskriptiven Auszeichnung“.

Bray illustriert „prozedurales Markup“ mit den PostScript-Befehlen gsave und grestore. Diese beiden Befehle verhalten sich zueinander wie \begingroup und \endgroup in TeX. Die Anweisung \begingroup bewirkt, dass bei jeder folgenden Parameterwertänderung der vorige Parameterwert in einem Stapelspeicher abgelegt wird. Der entsprechende Befehl \endgroup stellt die Parameterwerte vor dem entsprechenden \begingroup wieder her. Beide Befehle haben keine unmittelbare Auswirkung auf die Formatierung, die Wirkung hängt vielmehr davon ab, die Werte welcher Parameter zwischen ihnen geändert werden.

In PostScript gibt es außerdem den Befehl selectfont, der an den LaTeX-Befehl \selectfont erinnert:

%!
/Courier
20 selectfont
72 500 moveto
(Hallo Welt!) show
showpage

Insgesamt legen die vorigen Beobachtungen folgendes Beispiel nahe:

Kursivstellung mit HTML und LaTeX, letzteres mit high-level- gegenüber low-level-Befehlen
Darstellung HTML LaTeX high-level LaTeX mit \begingroup LaTeX mit { statt \begingroup
kursiv gesetzt
<body>
<i>kursiv</i>
gesetzt
</body>
\begin{document}
\textit{kursiv}
gesetzt
\end{document}
\begin{document}
\begingroup
\fontshape{it}\selectfont
kursiv\/\endgroup\
gesetzt
\end{document}
\begin{document}
{\fontshape{it}\selectfont
 kursiv\/} gesetzt
\end{document}

Die beiden low-level-Beispiele rechts kommen dem sehr nahe, wie LaTeX den high-level-Befehl \textit tatsächlich umsetzt. \endgroup gesetzt würde in „kursivgesetzt“ resultieren, daher wird \endgroup\ verwendet. Die Notwendigkeit dieses Tricks vermeidet man im rechten Beispiel, wo die geschweiften Klammern die Befehle \begingroup und \endgroup vertreten, während sie nach \textit nur dessen Anwendungsbereich angeben. Der Befehl \/ verhindert, dass durch die Rechtsneigung des „v“ der Abstand zwischen „kursiv“ und „gesetzt“ optisch zu eng ausfällt (sogenannte Kursivkorrektur).

In allen vier Beispielen liegt eine darstellende Auszeichnung vor, die den Schriftschnitt variiert. Einer der Nachteile prozeduraler Auszeichnung, die Goldfarb nennt, soll darin bestehen, dass sie die Beherrschung einer Vielzahl von Programmierbefehlen erfordert, als Beispiel nennt er ausdrücklich Knuths TeX. Die Kursivkorrektur ist auch eine typografische Feinheit, deren Notwendigkeit bei der Nutzung von TeX für Autoren nicht selbstverständlich ist. Der LaTeX-Befehl \textit erspart dem Anwender die Kenntnis einiger low-level-Befehle und der Kursivkorrektur. Das i-Element in HTML ist ebenso einfach zu beherrschen. Goldfarbs hier angesprochener Kritikpunkt richtet sich (im Unterschied zu anderen) offenbar nicht gegen jede darstellende Auszeichnung, sondern nur gegen programmiersprachenartige Auszeichnung wie in den beiden Beispielen rechts und gegen PostScript-Befehle weiter oben.

Im Falle des HTML-Beispiels erscheint die Bezeichnung der Auszeichnung durch <i> und </i> als „prozedural“ auch unpassend. Während in den „umständlichen“ Beispielen einzelne Befehle an den Textprozessor gerichtet werden (Goldfarb: „processing functions“), die erst durch ihre Kombination die gewünschte Darstellung erreichen, stellt das i-Element nur eine abstrakte Schnittstelle zum Webbrowser dar, dessen prozedurale Verarbeitung des linken Beispiels für Verfasser von HTML-Dokumenten gar nicht zugänglich ist. Der Unterschied ähnelt dem zwischen imperativer Programmierung („echt prozedural“ in den rechten Beispielen) und deklarativer Programmierung, in der die Algorithmen zum Erreichen eines beschriebenen Zustands (hier: Kursivschrift) nicht explizit genannt werden.

„Prozedurale“ und „deskriptive“ Auszeichnungssprachen

In der Literatur wird auch von „deskriptiven Auszeichnungssprachen“ (englisch descriptive markup languages) im Gegensatz zu „prozeduralen Auszeichnungssprachen“ (englisch procedural markup languages) gesprochen; wann eine Aussprache „prozedural“ bzw. „deskriptiv“ ist, soll vielleicht im Anschluss an Erläuterungen von „prozeduraler Auszeichnung“ bzw. „deskriptiver Auszeichnung“ selbstverständlich sein. Eine „deskriptive Auszeichnungssprache“ dürfte eine Auszeichnungssprache sein, die weder „prozedurales“ noch „präsentationales“ Markup ermöglicht, also „rein deskriptiv“ ist – wie es die Intention/„Philosophie“ von SGML war. Dies trifft auf DocBook und TEI zu. Das Prädikat „prozedurale Auszeichnungssprache“ scheint auf Auszeichnungssprachen zuzutreffen, in denen Wertzuweisungen und andere Ähnlichkeiten mit imperativen Programmiersprachen „unübersehbar“ sind, vielleicht auch auf Auszeichnungssprachen, die Formatierungsanweisungen in eher deklarativer Weise geben, wie HTML (vor HTML5). Jedenfalls könnten PostScript, TeX und troff dazu gezählt werden.

Die vorige Deutung steht allerdings im Widerspruch dazu, dass LaTeX laut Furuta (und dem 1994er LaTeX-Begleiter „in hohem Maße“) eine „generische Markup-Sprache“ sein soll, trotz des darstellenden \textit (mit dem im LaTeX-Begleiter beschriebenen LaTeX 2e) bzw. \it (mit dem 1992 gültigen LaTeX 2.09). Vielleicht ist eine generische (oder deskriptive) Markup-Sprache doch eine Sprache, die neben präsentationalem Markup auch ein „gewisses Maß“ an generischem Markup bietet.

Darstellungsstufen

Auf eine Arbeit von 1988 unter seiner Beteiligung Bezug nehmend, spricht Furuta von drei „Erscheinungsformen“ (representations) eines Dokuments:

  1. einer abstrakten, die durch Bearbeitung mit einem Editor verändert wird (abstract representation),
  2. einer physischen, die aus einer abstrakten durch Formatierung entsteht (physical representation), und
  3. einer Seitenerscheinungsform, die für ein bestimmtes Ausgabegerät erforderlich ist (page representation).

Entsprechend ist Furutas Artikel gegliedert.

Durch „darstellendes Markup“ kann man wie oben dargelegt (beginnend mit Beispiele) Schriftschnitt, Farben, und Textausrichtung bestimmen, ein entsprechender Abschnitt in den Spezifikationen zu HTML 4.0 und 4.01 beschreibt diesen „physischen“ Aspekt einigermaßen umfassend. In HTML5 ist mit dem style-Attribut eine Möglichkeit verblieben, z.B. Schriftschnitte (durch CSS-Code) zu wählen, auch Tabellen bewirken eine „physisch“ einigermaßen strikte Darstellung, die der seitenorientierten Darstellung näher kommt als die Wahl von Schriftschnitten. Auszeichnung dieser Art entspricht dem ursprünglichen, engeren Begriff (Textformatierung bzw. traditionelles Auszeichnen wie am Anfang des Artikels beschrieben).

Was bei solcher Auszeichnung im Allgemeinen nicht bestimmt wird, ist in einem Fließtextabsatz der Zeilenumbruch. Bei einem Wort ab der Mitte eines längeren Absatzes lässt man sich davon „überraschen“, ob es im dargestellten Absatz auf dem Bildschirm oder auf der ausgedruckten Seite eher links oder eher rechts steht oder ob es beim Zeilenumbruch getrennt wird. So ist es auch bei der üblichen Verwendung von LaTeX, ConTeXt und plain TeX. Bei Bedarf kann man (mit etwas fortgeschrittenen Kenntnissen) die Zeilen eines Absatzes manuell fixieren (bei Webseiten mit white-space: nowrap und <br />, bei LaTeX mit \makebox und \linebreak). Häufiger ist man in einzelnen Fällen mit dem automatischen Zeilenumbruch nicht zufrieden und legt einen Zeilenwechsel manuell fest, oder man unterbindet einen Zeilenumbruch innerhalb einer Phrase. Neben dem Zeilenumbruch werden auch die Zeilenabstände typischerweise automatisch bestimmt (sie sollten gleichmäßig sein, etwa bei mathematischen Formeln mit Brüchen müssen sie aber oft größer gewählt werden). TeX trat auch mit der Besonderheit hervor, die Zeichen in mathematischen Formeln in verschiedenen Größen zu setzen und relativ zueinander zu so anzuordnen, dass die Proportionen hohen typografischen Ansprüchen genügen.

Gegenüber Webseiten muss im Drucksatz zusätzlich der Seitenumbruch bestimmt werden. Auch den überlässt man meist dem Satzprogramm und korrigiert das automatische Ergebnis gelegentlich manuell. Bei der Gestaltung der Titelseite eines Buchs überlässt man dagegen „nichts dem Zufall“.

Dateiformate, die alle Zeilenumbrüche in Fließtexten einer Ausgabeseite und auch die exakte Position von Textelementen und Grafiken auf ihr fixieren und festlegen, heißen (oder entsprechen) Seitenbeschreibungssprachen. Solche sind etwa PostScript und PDF von Adobe, das ursprüngliche Ausgabeformat DVI von TeX oder XML Paper Specification von Microsoft. PDF und DVI kann man allerdings nicht in einem Texteditor betrachten und ändern oder verfassen. In Postscript ist dies möglich, man kann im Prinzip ein Buch in PostScript verfassen und bestimmt dabei ähnlich wie mit der Schreibmaschine die exakten Positionen aller Zeichen auf den einzelnen Seiten. In der Praxis werden PostScript-Dateien eher etwa aus mit LaTeX ausgezeichneten Quelltextdateien erzeugt, indem man die von TeX erzeugte DVI-Datei mit einem weiteren Programm (dvips) in PostScript umwandelt.

Im Allgemeinen versieht also der Verfasser den Text nur mit deskriptivem oder auch „physischem“ Markup (in einem Editor), ohne Zeilen-/Seitenumbrüche festzulegen, diese (und weitere Anordnungsweisen) werden vielmehr automatisch erzeugt und unter Umständen in einer Seitenbeschreibungsdatei abgelegt. Seitenbeschreibungsdateien kann man mit einem Viewer wie Ghostview (Postscript), Adobe Reader (PDF) oder YAP (für DVI unter Windows) bzw. xdvi als Vorschau am Bildschirm betrachten und ausdrucken lassen. Sie sind auch für den elektronischen Austausch von Dokumenten bzw. ihre Verbreitung (Online-Publikation) gegenüber den Quellformaten vorteilhaft, da sie dem Empfänger das Neuerzeugen der Ansichtsversion des Dokuments (was sogar scheitern kann) ersparen („Austauschformate“).

Die „Seitenerscheinungsform“ oder „Seitendarstellung“ eines Dokuments muss jedoch nicht als eigene Seitenbeschreibungsdatei vorliegen. Bei manchen „Editoren“ kann/konnte man sie „direkt“ am Bildschirm betrachten oder ausdrucken. troff wurde zu ditroff erweitert, das eine eigene Seitenbeschreibungsdatei erzeugen kann, andere Textverarbeitungsprogramme wurden mit der Möglichkeit ausgestattet, PDF zu erzeugen.

Bei Webbrowsern (genauer: HTML-Renderern) und E-Book-Readern (die etwa HTML oder EPUB darstellen) wird die Seitendarstellung (der Umbruch von Fließtextabsätzen) schnell an sich ändernde Fensterbreiten oder Schriftgrößen angepasst.

Implementierung der Stilvariation bei generischer Auszeichnung

Implementierung einer Darstellungsweise

Für die Formatierung generisch ausgezeichneten Texts werden allgemeine Regeln zur Behandlung der einzelnen Tags (eventuell abhängig von „Attributen“ bei SGML-artigen Auszeichnungssprachen) in einer formalen Sprache (in einer Art Programm) festgelegt. Entsprechende „Regeldateien“ werden im SGML-Umfeld „Stylesheets“ genannt (bei LaTeX nicht). Zum Teil oder in einem ersten Schritt besteht die Formatierung darin, die generische Sprache in eine präsentationale zu „übersetzen“.

Im Falle von HTML wird die Formatierung einzelner Elemente durch entsprechende Anweisungen in CSS-Code bestimmt. Beispielsweise besagt die CSS-Zeile body { color: blue; background-color: yellow; }, dass eine HTML-Datei mit blauem Text auf gelbem Grund dargestellt werden soll, und mit em { color: red; } soll der Text in em-Elementen rot sein. In folgendem Beispieldokument

<head>
  <title>Hallo Welt!</title>
  <style type="text/css">
    body { color: blue; background-color: yellow; }
    em   { color: red; }
  </style>
</head>
<body>

<em>Hallo,</em> Welt!

<em>Hörst</em> du?

</body>

erscheint dieser CSS-Code in einem style-Element innerhalb des head-Elements. Das Ergebnis sollte in etwa

Hallo, Welt!
Hörst du?

sein und das gleiche wie mit

<head>
  <title>Hallo Welt!</title>
</head>
<body style="color: blue; background-color: yellow; ">

<em style="color: red; ">Hallo,</em> Welt!

<em style="color: red; ">Hörst</em> du?

</body>

In der zweiten Datei wurde <body> durch <body style="color: blue; background-color: yellow;"> ersetzt, und jedes em-Tag – generisches Markup – der ersten Datei wurde durch das präsentationale <em style="color: red; "> ersetzt. Die CSS-Anweisung tag { stil } wirkt also wie das Einfügen von style=stil in alle tag-Anfangstags.

Was HTML-Renderer tatsächlich tun, um CSS und HTML zusammenzuführen, kann hier nicht dargestellt werden. Immerhin handelt es sich bei den Beispieldateien sogar um XHTML, also Code einer XML-Sprache, und die „Übersetzung“ stellt eine Transformation dar, die (wiederum leicht missbräuchlich) durch XSL Transformation (XSLT) dargestellt werden könnte. XSL steht für Extensible Stylesheet Language. Im Falle von XML besteht die „puristische“ Anwendung von XSL und XSLT darin, generische XML-Sprachen gemäß XSL-Stylesheets in die präsentationale Sprache XSL-FO („XSL Formatting Objects“) zu übersetzen. In einfachen Fällen bedeutet das, wie oben, Ersetzen generischer durch präsentationale Tags. XSL-FO ist selbst noch keine Seitenbeschreibungssprache und muss zum Ausdrucken erst etwa in eine PDF-Datei umgewandelt werden.

Eine XSL-Transformation erzeugt aus generischem Quellcode eines Dokuments tatsächlich eine Datei in einem anderen Textformat. Im Falle von LaTeX aber ist es ähnlich wie bei HTML-Renderern: generische Befehle werden in präsentationale bzw. (schließlich) prozedurale übersetzt, allerdings intern, auf Tokenebene. \emph{Hallo} wird zu einer Tokenkette emph{1H11a11l11l11o11,12}2, dann werden die beiden ersten Token und das letzte nach und nach durch einige andere ersetzt, wenn einige Prüfungen überstanden sind und die Neigung der umgebenden Schrift nicht positiv ist, resultiert eine ähnliche Tokenkette wie begingroupitshapeH11a11l11l11o11,12/endgroup, wobei sich unter Standardeinstellungen itshape wie fontshape>{i11t11}2selectfont verhält. Das Resultat wäre dasselbe wie das der „prozeduralen Version“ von \textit im Abschnitt #„Prozedural“ und „präsentational“. Im Gegensatz zum Document Object Model, bei dem das Dokument erst übersetzt wird, nachdem es komplett im Speicher repräsentiert ist, verarbeitet die TeX-Engine Datenströme wie den Quellcode, die Tokenketten und weitere interne Listen in möglichst kurzen Abschnitten und entledigt sich nach Ausgabe einer Druckseite weitgehend der dafür benötigten Speicherinhalte (so konnten schon vor Jahrzehnten dicke Bände gesetzt werden).

Im Falle von LaTeX (wie von TeX überhaupt und auch von ConTeXt) wird das Suchen und Ersetzen, das die Formatierung implementiert, durch einen internen Makroprozessor bewerkstelligt. Auch die 1981 von Charles Goldfarb vorgestellte die generische Auszeichnungssprache IBM Generalized Markup Language übersetzte Makros in die prozedurale, troff-ähnliche Sprache SCRIPT.

An den Beispielen sollten auch zwei Vorteile der generischen Auszeichnung gegenüber der prozeduralen erkennbar sein: Generisch ausgezeichneter Quellcode beansprucht weniger Speicherplatz als präsentational ausgezeichneter (sobald die Zahl der entsprechenden Textelemente eine von der Komplexität der Ersetzungsregel abhängige Zahl übersteigt – was im Beispiel noch nicht der Fall ist), und in einem Texteditor ist bei generischer Auszeichnung der darzustellende eigentliche Text leichter wiederzufinden als bei prozeduraler Auszeichnung, er ist intuitiver zu lesen.

Dieser Speicherplatzeffekt wird noch verstärkt, wenn die Stildefinitionen (anders als im vorigen Beispiel) nicht im „Kopf“ der Textquelldatei – dem head-Element einer HTML-Datei oder oberhalb \begin{document} in einer LaTeX-Quelldatei (dort „Dokumentenpräambel“ genannt) – stehen, sondern in separaten Stildateien, die von den Textquelldateien eingebunden werden (Transklusion). Auf Websites, die eine Vielzahl separater Dokumente beherbergen, welche einheitlich gestaltet werden, sind das CSS-Dateien mit der Endung .css. Im Falle von LaTeX trugen die Stildateien ursprünglich die Endung .sty für style. Heute bestimmen auch Dateien mit der Endung .cls, die von \documentclass eingelesen werden, die Darstellungsweise:

HTML LaTeX
<head>
  <title>Hallo Welt!</title>
  <link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>

<em>Hallo,</em> Welt!

<em>Hörst</em> du?

</body>
\documentclass{abc-art}
\begin{document}
  \emph{Hallo,} Welt!

  \emph{H\"orst} du?
\end{document}

Die beiden CSS-Zeilen von vorher könnten sich nun in der Datei style.css befinden, die wie folgt aussähe:

body { color: blue; background-color: yellow; }
em   { color: red; }

Darstellungsänderung

Im vorigen Beispielpaar kann man nun die Darstellung des ausgezeichneten Textquellcodes ändern, indem man jeweils den „Kopf“ ändert:

HTML LaTeX
<head>
  <title>Hallo Welt!</title>
  <style type="text/css">
    em { text-decoration: underline;
         font-style:      normal;    }
  </style>
</head>
<body>

<em>Hallo,</em> Welt!

<em>Hörst</em> du?

</body>
\documentclass{article}
\usepackage{ulem}
\begin{document}
  \emph{Hallo,} Welt!

  \emph{H\"orst} du?
\end{document}

Im Falle von LaTeX wurde hier der Formatierungsstil des fiktiven The ABC-Journal durch eine LaTeX-Standardklasse ersetzt und Transklusion der Datei ulem.sty eingefügt. Diese definiert das aus \emph resultierende Token emph so um (setzt eine andere Makro-Ersetzungsregel in Kraft), dass die Betonung durch Understreichen statt Kursivstellung dargestellt wird. Der veränderte CSS-Code für das em-Element wirkt ebenso. Von der Schriftart abgesehen, sollte das Ergebnis mit HTML wie LaTeX so aussehen:

Hallo, Welt!
Hörst du?

Alternativ könnte der CSS-Code in style.css geändert werden. Für Fachzeitschriftsnummern können die von \begin{document} und \end{document} eingerahmten Teile der von den einzelnen Autoren eingesandten Quelltexte mit der Dokumentenpräambel des Journals zusammengefügt werden, so dass sie alle nach „Art des Hauses“ – gleichartig – formatiert werden.

Bei XML-Dokumenten kann die Darstellung geändert werden, indem man eine andere XSL-Transformation verwendet.

Der generisch ausgezeichnete Text des Dokuments muss zur Änderung der Darstellung also überhaupt nicht geändert werden. Darauf wies das World Wide Web Consortium in der Spezifikation von HTML5 als zweiten Nachteil präsentationaler Auszeichnung hin, und Goldfarb sprach von „Inflexibilität“ in Bezug auf Änderungen der Darstellungsweise als zweitem Nachteil prozeduraler Auszeichnung. – In der Praxis findet aber etwa LaTeX nicht immer die besten Zeilen- oder Seitenumbrüche, so dass die Bearbeiter einer Fachzeitschriftsnummer gelegentlich ein präsentationales \pagebreak o.ä. einfügen müssen.

(Statt \"o kann man mit LaTeX ö verwenden, wenn die Dokumentpräambel etwa \usepackage[utf8]{inputenc} enthält. Die so eingelesene Datei inputenc.sty ist ein Beispiel dafür, dass die Endung .sty leider nicht mehr ausschließlich für „Stil“ steht, solche Pakete bieten vielmehr oft Möglichkeiten, die Arbeit zu erleichtern, meist durch Erweiterung des Befehlssatzes.)

Fazit: Worin besteht die „Trennung von Inhalt und Darstellung“?

Im Falle von LaTeX und HTML enthält der Quellcode des Dokuments zwar Angaben zur Formatierung, bei rein deskriptiver/generischer Auszeichnung befinden sich die Angaben zur Formatierung jedoch ausschließlich in einem „Kopfteil“ der Quelldatei – im head-Element bzw. in der „Dokumentpräambel“. Der darzustellende Text mit generischem Markup befindet sich in einem anderen Teil des Quelldokuments – body-Element bzw. {document}-Umgebung. Die Trennung von Struktur und Präsentation o.ä. besteht dann darin, dass Quelldokumente zwei Bestandteile haben, von denen einer ausschließlich Formatierungsregeln angibt und der andere ausschließlich den Dokumenttext mit generischer Auszeichnung enthält.

Die Formatierungsregeln müssen sich nicht direkt im Kopfteil befinden, der Kopfteil bindet zumeist den größten Teil der Formatierungsregeln aus anderen Dateien ein (Transklusion). Im Falle von LaTeX muss die Datei mit den Angaben zur Formatierung (die „Steuerdatei“) nicht den gesamten darzustellenden Text enthalten, dieser wird oft auch – gerade im Fall von Büchern – ebenfalls aus anderen (generisch ausgezeichneten) Dateien eingebunden.

In anderen Fällen enthält das Quelldokument überhaupt keine Angaben zur Formatierung (bindet keine Dateien mit Formatierungsregeln ein, z.B. XML/XSL). Die „Trennung von Inhalt und Form“ – bzw. zur Abgrenzung von der Formalen Soziologie: von „Inhalt“ und „Formatierung“ – ist dann – noch deutlicher als schon im vorigen Fall – dadurch verwirklicht, dass der mit logischer Auszeichnung versehene Inhalt sich in anderen Dateien befindet als die Formatierungsregeln. Für die Wahl eines Darstellungsstils ist dann keine Änderung der Dateien erforderlich, die den darzustellenden Text („Inhalt“) enthalten.

Automatische Codeerzeugung und ursprünglicher Quellcode

Es wurde bereits angesprochen, dass „ausgezeichneter Text“, der der Darstellung eines Dokuments auf Ausgabegeräten (Drucker, Bildschirm) zugrunde liegt, automatisch aus einer anderen Form von „ausgezeichnetem Text“ erzeugt werden kann. Soweit die fixe seitenorientierte Darstellungsform noch als in einer Auszeichnungssprache kodiert angesehen kann (ist PostScript eine Auszeichnungssprache?, PDF?), wird sie praktisch immer durch ein Satzprogramm automatisch aus einer rein physischen (ohne semantisch-strukturelle Information), rein generischen (ohne Hinweise auf die Darstellungsweise, wie in HTML5 ohne das style-Attribut) oder physische und semantisch-strukturelle Angaben mischenden Auszeichnungssprache (wie bei „nicht-puristischer“ Verwendung von LaTeX) erzeugt. Sie kann direkt aus einer rein physisch ausgezeichneten Erscheinungsform des Dokuments erzeugt werden (PDF aus XSL-FO), und eine rein physische, nicht seiten-orientierte Form kann aus einer rein strukturellen Erscheinungsform (XHTML) automatisch erzeugt worden sein (etwa durch XSL-Transformation).

Wenn das Werk publiziert oder an einen Adressaten verschickt worden ist, oder wenn der für ein Archiv gewünschte Ausdruck vorliegt, geraten die zugrunde liegenden Dateien bestimmter Auszeichnungsformate oft in Vergessenheit, von manchen Anwendern werden sie auch gelöscht. Wenn das Dokument aber noch (teilweise) wiederverwendet werden soll, z.B. für eine neue, überarbeitete Buchausgabe, oder wenn ein vor Jahren gedruckter Artikel auch als HTML online publiziert werden soll, ist es gut, wenn die ursprüngliche (teils) semantisch-strukturelle Auszeichnung – der ursprüngliche Quellcode – immer noch verfügbar ist und nicht aus einem rein darstellenden Format „rekonstruiert“ werden muss (z.B. nicht nummerierte Abschnittsüberschriften und Unterabschnittsüberschriften).

Den automatisch erzeugten Code schauen sich Verfasser (oder Typisten) meist nicht an. Bei Verwendung von WYSIWYG-Editoren beachtet man typischerweise nicht einmal den ursprünglichen Quellcode. Ebenso ist es etwa bei LyX, einem Frontend für LaTeX, mit dem man semantisch-strukturell auszeichnen und die erzeugte Struktur auch am Bildschirm erkennen kann, ohne den Quellcode zu sehen.

(In Anbetracht unterschiedlicher Codierungsweisen von Textzeichen – Unicode oder … könnte man auch sagen, dass der ursprüngliche Quellcode in einem Hexdump besteht, den man sich nicht ansieht, der Texteditor präsentiert eine „anwenderfreundliche Version“ davon, die hinsichtlich der am Ausgabegerät zu lesenden Zeichen WYSIWYG-artig ist.)

HTML war einmal Format, in dem der „ursprüngliche Quellcode“ von Dokumenten notiert wurde. Inzwischen ist es auch ein Zielformat, es wird etwa (aus Datenbanken, die in XML notiert sein können) durch Skriptsprachen wie JavaScript und PHP – oder aus anderen Quellformaten mit Pandoc erzeugt. Um einen Text wie einen Wikipedia-Artikel auszuzeichnen, sind das jedoch keine Alternativen: der reine Text (wie er aus Browserfenster durch Copy and Paste extrahiert werden kann) muss getippt und markiert werden. Die < und > sind umständlich zu tippen und werden durch XML-Anforderungen noch vermehrt. Zum Teil müssen Attributnamen getippt werden, was das Verhältnis von in der Ausgabe anzuzeigenden Zeichen zu fürs Markup verwendeten Zeichen verschlechtert. LaTeX ist teilweise einfacher zu tippen und leichter zu lesen, da es (im Fließtext) hauptsächlich Positionsparameter anstelle von Key-Value-Angaben verwendet. Zudem können LaTeX-Anwender für in einem Dokument häufig auftretende Zeichenkombinationen (wie Tags – welche häufig auftreten, ist von Dokument zu Dokument verschieden) Abkürzungsbefehle einführen (in der Dokumentenpräambel oder in .sty-Dateien – dank eingebautem Makroprozessor). – Zur Vereinfachung der Erzeugung von (X)HTML-Dokumenten sind daher noch folgende Möglichkeiten ersonnen worden:

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

Daten

YAML und seine Untermenge JavaScript Object Notation (JSON) sind vereinfachte Auszeichnungssprachen für die Datenserialisierung.

Äußere Systematik: Einordnung als Programmiersprache oder Datenformat

Dateinamenserweiterungen und MIME-Typen
ausgewählter Auszeichnungssprachen
Auszeichnungssprache 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 Auszeichnungssprache wie HTML eine Programmiersprache (eine HTML-Datei ein „Programm“) ist oder nicht, finden sich gegensätzliche Äußerungen. Zu XML erklärte das W3C 2001, es sei keine Programmiersprache, sondern biete Regeln zum Festlegen von Textformaten zur Strukturierung von Daten, also zum Festlegen von Datenformaten (damit steht es nicht allein). Tatsächlich ergab die Entwicklung von SGML zu XML die Möglichkeit, Auszeichnungssprachen zu völlig anderen Zwecken als dem ursprünglichen – der Formatierung 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“. Als Datenformat ist die in einer (Dokument-)Datei verwendete Auszeichnungssprache an den Dateinamenserweiterungen erkennbar (siehe Tabelle). Diejenigen Auszeichnungssprachen, die noch zum Erstellen von Dokumenten gedacht sind (HTML, PostScript, troff, LaTeX, RTF), bilden Dokumentenformate. Binäre Dokumentenformate (.doc, .pdf, das Ausgabeformat DVI von TeX) sind keine Auszeichnungssprachen.

Von den Musterbeispielen prozeduraler Auszeichnungssprachen – 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. Ebenso ist die in XML notierte Sprache XQuery für XML-Datenbanken Turing-vollständig.

Siehe auch: „Andere Bedeutungen“ im Artikel Quelltext
Trenner
Basierend auf einem Artikel in: Wikipedia.de
Seitenende
Seite zurück
© biancahoegel.de
Datum der letzten Änderung: Jena, den: 21.09. 2022