Konvertierer und neue Datenformate erstellen

Mir der Guile/Scheme-Sprache kann man, neue Datenformate und Konvertierer zu TeXmacs als Module hinzufügen. Normalerweise werden die zusätzlichen Formate und Konvertierer in ihrer persönlichen Initialisierungs-Datei ~/.TeXmacs/progs/my-init-texmacs.scm definiert oder in einem speziellen Plugin. Einige Beispiele finden Sie in einem Unterverzeichnis progs/convert ihres TeXmacs-Verzeichnisses, wie z.B. init-html.scm.

neue formate definieren

Ein neues Format kann mit dem Befehl

(define-format format

(:name format-name)

options)

erzeugt werden. format ist ein Symbol, dass für das Format steht und format-name eine Zeichenkette, die in Menüs benutzt werden kann. Tatsächlich gibt es ein Datenformat meist in mehreren Varianten: ein Format format-file für Dateien, ein Format format-document für ganze Dokumente und ein Format format-snippet für kurze Zeichenketten, wie z.B. Auswahlen (selections), und schließlich format-object für die bevorzugte interne Scheme-Repräsentation bei Konversionen (dies ist Parser-Variante des Formats). Konvertierer von format-file nach format-document und umgekehrt werden automatisch erzeugt.

Der Anwender kann zusätzliche Optionen zur automatischen Erkennung von Formaten mit Hilfe von Datei-Suffixen oder -Inhalten spezifizieren. Z.B. können die erlaubten Suffixe eines Daten-Formats mit der Voreinstellung als erstem durch

(:suffix default-suffix other-suffix-1 ... other-suffix-n)

angegeben werden. Eine (heuristische) Routine, um festzustellen, ob ein Dokument zu einem bestimmten Format gehört, kann mit

(:recognize predicate)

(:must-recognize predicate)

erreicht werden. Im ersten Fall hat die Suffix-Erkennung Vorrang vor der heuristischen Erkennung. Im zweiten Fall ist nur die heuristische Erkennung durch das Prädikat, predicate, maßgeblich.

neue konvertierer erzeugen

Neue Konvertierer können mit

(converter from to

options)

erzeugt werden. Der eigentliche Konvertierer wird durch eine der folgenden Optionen spezifiziert:

(:function converter)

(:function-with-options converter-with-options)

(:shell prog prog-pre-args from progs-infix-args to prog-post-args)

Im ersten Fall ist der Konvertierer converter eine Routine die ein Objekt im Daten-Format from übernimmt und ein Objekt im Daten-Format to zurückgibt. Im zweiten Fall übernimmt der converter eine assoziative Liste als zweites Argument und Optionen für den Konvertierer. Im letzten Fall wird ein shell-Befehl angegeben, der die Konvertierung zwischen den beiden Datei-Formaten durchführt. Der Konvertierer wird dann und nur dann aktiviert, wenn das Programm prog gefunden wird. Hilfsdateien können automatisch erzeugt und wieder gelöscht werden.

TeXmacs berechnet automatisch die transitive „Closure” aller Konvertierer, indem einen „kürzesten Pfad Algorithmus” benutzt. Mit anderen Worten, wenn es einen Konvertierer für x nach y gibt und einen Konvertierer von y nach z, dann hat man auch einen von x nach z. Es für jede Konvertierung kann eine „Strafe/Abstand zwischen den Formaten“ mit

(:penalty floating-point-distance)

angeben werden, um so Hinweise zum automatischen Finden eines optimalen Weges für die Konvertierung zu geben.

Weitere Optionen für Konvertierer sind:

(:require cond)

(:option option default-value)

Die erste Option spezifiziert eine Bedingung, die erfüllt sein muss, damit der Konvertierer benutzt werden kann. Diese Option sollte als erste oder zweite Option spezifiziert werden und immer nach der :penalty Option. Die :option Option spezifiziert eine Option für den Konvertierer, mit einer Voreinstellung. Diese Option wird automatisch an alle Konvertierer mit Optionen weitergegeben.

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