mirror of https://github.com/texmacs/doc.git
145 lines
6.5 KiB
Tcl
145 lines
6.5 KiB
Tcl
<TeXmacs|1.0.4.2>
|
|
|
|
<style|tmdoc>
|
|
|
|
<\body>
|
|
<\tmdoc-title>
|
|
Daten-Beschreibungen (D.R.D.)
|
|
|
|
(data relation descriptions)
|
|
</tmdoc-title>
|
|
|
|
<paragraph*|der sinn von Daten-Beschreibungen, <abbr|D.R.D.>s>
|
|
|
|
Einer der Hauptvorteile von <TeXmacs> ist die Verwendung von Baumstrukturen
|
|
als allgemeines Datenformat des Editors. Wie bei <no-break>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 (<abbr|D.T.D.>s), um eine
|
|
spezielle Teilmenge des allgemeinen XML-Formats für einen bestimmten Zweck
|
|
zu definieren: für Web-Dokumente \RXHTML``, für Mathematik \RMathML``, für
|
|
2-dimensionale Graphik \RSVG`` usw.. Auÿerdem erlaubt XML, solche
|
|
<abbr|D.T.D.>s in einem gewissen Umfang miteinander zu kombinieren.
|
|
Schlieÿlich enthalten <abbr|D.T.D.>s. normalerweise ein Referenz-Handbuch.
|
|
|
|
In <TeXmacs> sind wir mit der Einführung von <abbr|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 (<em|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.
|
|
<markup|itemize> Blockinhalte, während andere wie z.B. <markup|sqrt>
|
|
Zeileninhalt impliziert. Schlieÿlich verhalten sich bestimmte verwandte
|
|
Konstrukte wie <markup|chapter>, <markup|section>, <markup|subsection>,
|
|
<abbr|usw.> bei bestimmten Operationen wie z.B. Konversionen gleichartig.
|
|
|
|
Eine Daten-Beschreibung (<abbr|D.R.D.>) besteht aus einer \RData Type
|
|
Definition`` und zusätzlichen logischen Eigenschaften von Marken,
|
|
Konstrukten und Textfragmenten. Diese logischen Eigenschaften werden in
|
|
sogenannten <em|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 <abbr|D.R.D.>s jetzt noch nicht liefern.
|
|
|
|
Einer der wichtigsten Vorteile von <abbr|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 <abbr|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.
|
|
|
|
<paragraph*|Derzeitige Eigenschaften und Anwendungen von <abbr|D.R.D.>s>
|
|
|
|
Derzeit enthält die <abbr|D.R.D.> eines Dokuments die folgenden
|
|
Informationen:
|
|
|
|
<\itemize>
|
|
<item>Die erlaubten Anzahlen von Variablen (arity).
|
|
|
|
<item>Die Erreichbarkeit (accessability) eines Konstrukts und seiner
|
|
Kinder.
|
|
</itemize>
|
|
|
|
In nächster Zukunft sollen die folgenden Eigenschaften eingeführt werden:
|
|
|
|
<\itemize>
|
|
<item>Ist_Zeileninhalt (inline-ness) eines Konstrukts und seiner Kinder.
|
|
|
|
<item>Ist_Tabelle (tabular-ness) eines Konstrukts und seiner Kinder.\
|
|
|
|
<item>Zweck eines Konstrukts und seiner Kinder.
|
|
</itemize>
|
|
|
|
Diese Informationen werden neben anderen für folgende Aktionen verwandt:
|
|
|
|
<\itemize>
|
|
<item>Natürliches Vorgabeverhalten, wenn Konstrukte oder ihre Kinder
|
|
erzeugt oder vernichtet werden, z.B. automatische Ergänzung von fehlenden
|
|
Argumenten und/oder Löschung von Konstrukten mit zu geringer
|
|
Argumentanzahl.\
|
|
|
|
<item>Beschränke Suchoperationen auf erreichbare Knoten z.B. bei der
|
|
Rechtschreibprüfung.
|
|
|
|
<item>Automatische Einfügung der Konstrukte <markup|document> bzw.
|
|
<markup|table>, wenn Blöcke oder Tabellen erzeugt werden.
|
|
|
|
<item>Syntaktische Hervorhebungen im Quellmodus in Abhängigkeit von dem
|
|
Zweck des Konstrukts und seiner Argumente.
|
|
</itemize>
|
|
|
|
<paragraph*|Erzeugung der <abbr|Daten-Beschreibung (D.R.D.>) eines
|
|
Dokuments>
|
|
|
|
<TeXmacs> erzeugt für jedes Dokument eine eigene Daten-Beschreibung,
|
|
<abbr|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\
|
|
|
|
<\tm-fragment>
|
|
<inactive*|<assign|hi|<macro|name|Hello <arg|name>!>>>
|
|
</tm-fragment>
|
|
|
|
vorhanden, dann erkennt <TeXmacs> automatisch, dass <markup|hi> ein Makro
|
|
mit einem Argument ist, und nimmt an, dass die zulässige Argumentanzahl 1
|
|
ist. Beachten Sie, dass die heuristische Erzeugung der Daten-Beschreibung
|
|
interaktiv ist. Wenn Sie ein Makro in Ihrem Dokument erzeugen, werden seine
|
|
Eigenschaften automatisch in die Daten-Beschreibung aufgenommen, sofern Sie
|
|
<TeXmacs> dafür etwas Zeit lassen (ca. 1 s).
|
|
|
|
Manchmal sind die heuristisch definierten Eigenschaften nicht zutreffend.
|
|
Für diesen Fall besitzt <TeXmacs> das Konstrukt <markup|drd-props>, mit der
|
|
eine <hyper-link|manuelle Korrektur|../stylesheet/prim-macro.de.tm> dieser
|
|
Eigenschaften durchgeführt werden kann.
|
|
|
|
<tmdoc-copyright|2004|Joris van der Hoeven>
|
|
|
|
<tmdoc-license|Permission is granted to copy, distribute and/or modify this
|
|
document under the terms of the GNU Free Documentation License, Version 1.1
|
|
or any later version published by the Free Software Foundation; with no
|
|
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
|
Texts. A copy of the license is included in the section entitled "GNU Free
|
|
Documentation License".>
|
|
</body>
|
|
|
|
<\initial>
|
|
<\collection>
|
|
<associate|language|german>
|
|
<associate|preamble|false>
|
|
</collection>
|
|
</initial> |