1
0
Fork 0
doc/devel/format/basics/tm-drd.de.tm

145 lines
6.5 KiB
Plaintext
Raw Normal View History

2011-08-28 15:59:50 +08:00
<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 <20>bersichtlich und leicht verst<73>ndlich sind,
sodass es einfach ist, Dokumente mit den eingebauten Werkzeugen zu <20>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<68>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<41>erdem erlaubt XML, solche
<abbr|D.T.D.>s in einem gewissen Umfang miteinander zu kombinieren.
Schlie<69>lich enthalten <abbr|D.T.D.>s. normalerweise ein Referenz-Handbuch.
In <TeXmacs> sind wir mit der Einf<6E>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<67>ndert werden, w<>hrend beispielsweise die URL eines
Hyperlinks nicht erreichbar ist und daher erst nach Aufhebung des Schutzes
ver<65>nderbar wird. Ganz <20>hnlich implizieren bestimmte Konstrukte wie z.B.
<markup|itemize> Blockinhalte, w<>hrend andere wie z.B. <markup|sqrt>
Zeileninhalt impliziert. Schlie<69>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<75>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<65>nderbarkeit (accessability), Blockinhalt, Zeileninhalt von einander
unabh<62>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<74>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<65>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<61>rliches Vorgabeverhalten, wenn Konstrukte oder ihre Kinder
erzeugt oder vernichtet werden, z.B. automatische Erg<72>nzung von fehlenden
Argumenten und/oder L<>schung von Konstrukten mit zu geringer
Argumentanzahl.\
<item>Beschr<68>nke Suchoperationen auf erreichbare Knoten z.B. bei der
Rechtschreibpr<70>fung.
<item>Automatische Einf<6E>gung der Konstrukte <markup|document> bzw.
<markup|table>, wenn Bl<42>cke oder Tabellen erzeugt werden.
<item>Syntaktische Hervorhebungen im Quellmodus in Abh<62>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<75>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<75>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<61>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<65>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>