TeXmacs-Bäume |
TeXmacs repräsentiert alle Dokumente oder Teile von Dokumenten, also alle Formen von Text, durch Bäume. Zum Beispiel repräsentiert der Baum
die Formel
x
+
y
+
+ sqrt (
y
+
z
)
1
2
Die Knoten eines solchen Baum sind Standard-Operatoren
des Typs tree_label (siehe Basic/Data/tree.gen.h),
z.B.: concat, frac,
sqrt. Der Inhalt der "Blätter" des
Baums sind Zeichenketten (Strings). Diese sind entweder auf dem
Bildschirm sichtbar und können auch gedruckt werden, dies ist der
eigentliche Text, - oder sie sind auf dem Bildschirm nicht sichtbar
wie z.B. Längen- oder Makro-Definitionen und werden daher auch
nicht ausgedruckt. Die Baumdarstellung von Dokumenten in TeXmacs
spiegelt ihren logischen Aufbau wieder. Dateien sind jedoch linear
aufgebaut, sodass Bäume zur Speicherung in einen fortlaufenden
Text umgeformt werden müssen (serialization, deutsch:
Linearisierung), der von einem sogenannten Parser
zurückübersetzt werden kann. Dies ist auf verschiedene Weise
möglich. Der oben gezeigte Beispielbaum kann in der Notation von
(concat
"x+y"
(frac "1" "2")
"+"
(sqrt "y+z"))
Wie ein solcher Text interpretiert wird und wie das
Schriftsatz-Programm TeXmacs den Text schließlich setzt,
hängt vom aktuellen Kontext ab. Dieser Kontext ist im
wesentlichen eine Hash-Tabelle, welche die Kontextvariable mit den
Bauminhalten verknüpft. Die aktuelle Sprache, die aktuelle
Schrift und die aktuelle Farbe sind Beispiele für
Kontextvariable; Variablen können durch den Nutzer geändert
definiert werden. Zum Beispiel erzeugt der
(concat
"Ein "
(with "color" "blue"
"blauer")
" Text.")
das folgende Textfragment
Ein blauer Text.
Der TeXmacs-Befehl with setzt eine Kontextvariable neu. Diese Änderung ist lokal, d.h., sie bezieht sich nur auf Ausdrücke in der Klammer (variable). Daher ist auch „blauer” blau.
Im nachfolgenden beschreiben wir im Detail, wie die verschiedenen Standard TeXmacs-Konstrukte (Befehle) und Kontextvariablen funktionieren. Es sollte erwähnt werden, dass an dem TeXmacs Datenformat noch gearbeitet wird. Im letzten Abschnitt werden diese Änderungen beschrieben. Für gewöhnlich wird der Anwender von einer Erweiterung des Datenformats nichts bemerken, da solch eine Änderung immer zusammen mit einem Konvertierungs-Programm entwickelt wird, das die bestehenden Dokumente automatisch auf das neue Format ergänzt. Die meisten Änderungen bestehen im Hinzufügen von neuen Konstrukten. Für Entwickler kann die Kenntnis solcher Änderungen dennoch wichtig sein.