Dokumente sind Bäume

TeXmacs repräsentiert alle Texte durch Bäume (für einen bestimmten Text wird der zugehörige Baum der Editierbaum genannt). Die inneren Knoten eines solchen Baum werden mit Standard-Operatoren des Typs tree_label (siehe Basic/Data/tree.gen.h) aufgebaut. Der Inhalt der "Blätter" des Baums sind Zeichenketten (Strings), welche entweder unsichtbar (z. B. Längen oder Makro-Definitionen), oder sichtbar (der richtige Text) erscheinen. TeXmacs Bäume können auf verschiedene Weise beschrieben werden. Zum Beispiel repräsentiert der Baum

die Formel

x + y +

1
2
+ sqrt ( y + z )

und kann in der Notation von Scheme geschrieben werden als:

(concat

"x+y"

(frac "1" "2")

"+"

(sqrt "y+z"))

Die Bedeutung des Textes und die Art, wie er gesetzt wird, hängt essenziell von der aktuellen Umgebung ab. Die Umgebung besteht hauptsächlich aus einer Hash-Tabelle, welche die Umgebungsvariablen mit den Baum-Inhalten verknüpft. Die aktuelle Sprache, aktuelle Schrift und aktuelle Farbe sind Beispiele für Systemumgebungs-Variablen; neue Variablen können durch den Nutzer definiert werden. Zum Beispiel erzeugt der Scheme Ausdruck

(concat

"Ein "

(with "color" "blue" "blauer")

" Text.")

das entsprechende Textfragment

Ein blauer Text.

Das TeXmacs-Konstrukt with beschreibt eine lokale Änderung der Umgebungsvariablen.

Im nachfolgenden werden wir im Detail beschreiben, wie die verschiedenen Standard TeXmacs Operatoren und Umgebungsvariablen funktionieren. Es sollte erwähnt werden, dass sich das TeXmacs Datenformat ein Punkt ist, an dem 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. Dennoch sind sie manchmal wichtig für die Entwickler, wenn auch die meisten Änderungen nur das Hinzufügen von neuen Konstrukten betreffen.

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".