Daten-Beschreibungen (D.R.D.) (data relation descriptions) |
Einer der Hauptvorteile von TeXmacs ist die Verwendung von Baumstrukturen als allgemeines Datenformat des Editors. Wie bei XML hat dies den Vorteil, dass diese Strukturen übersichtlich und leicht verständlich sind, sodass es einfach ist, Dokumente mit den eingebauten Werkzeugen zu ändern und anzupassen. Wenn jedoch der Editor für einen ganz bestimmten, besonderen Zweck eingesetzt werden soll, dann muss in aller Regel das Datenformat auf eine bestimmte Teilmenge der möglichen Bäume beschränkt werden.
In XML benutzt man Data Type Definitions (D.T.D.s), um eine spezielle Teilmenge des allgemeinen XML-Formats für einen bestimmten Zweck zu definieren: für Web-Dokumente „XHTML“, für Mathematik „MathML“, für 2-dimensionale Graphik „SVG“ usw.. Außerdem erlaubt XML, solche D.T.D.s in einem gewissen Umfang miteinander zu kombinieren. Schließlich enthalten D.T.D.s. normalerweise ein Referenz-Handbuch.
In TeXmacs sind wir mit der Einführung von D.R.D.s
noch einen Schritt weiter gegangen. Neben der Entscheidung, ob ein
gegebenes Dokument syntaktisch korrekt ist, können wir damit auch
formal bestimmte Eigenschaften des Dokuments beschreiben.
Beispielsweise können Textfragmente erreichbar
(accessible) sein oder eben nicht. So ist typischerweise der
Zähler in einem Bruch erreichbar und kann daher jederzeit im
Editor geändert werden, während beispielsweise die URL eines
Hyperlinks nicht erreichbar ist und daher erst nach Aufhebung des
Schutzes veränderbar wird. Ganz ähnlich implizieren
bestimmte Konstrukte wie z.B.
Eine Daten-Beschreibung (D.R.D.) besteht aus einer „Data Type Definition“ und zusätzlichen logischen Eigenschaften von Marken, Konstrukten und Textfragmenten. Diese logischen Eigenschaften werden in sogenannten Horn clauses definiert, die auch in anderen Programmiersprachen wie z.B. Prolog Verwendung finden. Es sollte damit relativ leicht sein, die Eigenschaften von Marken, Konstrukten und Textfragmenten zu bestimmen, so dass bestimmte Datenbanktechniken zur effektiven Implementierung genutzt werden können. Momentan haben wir damit gerade erst begonnen und benutzen zur Zeit noch eine Menge C++ Code im Widerspruch zu dem, was wir oben beschrieben haben. Daher können wir eine bessere formale Beschreibung von D.R.D.s jetzt noch nicht liefern.
Einer der wichtigsten Vorteile von D.R.D.s ist, dass anders als in objektorientierten Sprachen keine festen hierarchischen Strukturen vorgegeben werden müssen. Das ist deshalb so nützlich, weil Eigenschaften wie Veränderbarkeit (accessability), Blockinhalt, Zeileninhalt von einander unabhängig sind. Es ist in der Tat so, dass D.T.D.s meist zur Beschreibung passiver Dokumente ausreichend sind, dass aber, wenn es darum geht, Dokumente interaktiv zu editieren, eine feinere Beschreibung von Eigenschaften günstiger ist.
Derzeit enthält die D.R.D. eines Dokuments die folgenden Informationen:
In nächster Zukunft sollen die folgenden Eigenschaften eingeführt werden:
Diese Informationen werden neben anderen für folgende Aktionen verwandt:
TeXmacs erzeugt für jedes Dokument eine eigene Daten-Beschreibung, D.R.D.. Diese wird in zwei Stufen erzeugt. Zunächst versucht TeXmacs heuristisch die Eigenschaften von Konstrukten, die der Benutzer definiert hat, und die Konstrukte von assoziierten Stildefinitionen auszuwerten. Ist zum Beispiel folgendes Makro
<assign|hi|<macro|name|Hello
name!>>
vorhanden, dann erkennt TeXmacs automatisch, dass
Manchmal sind die heuristisch definierten Eigenschaften nicht
zutreffend. Für diesen Fall besitzt TeXmacs das Konstrukt