<\body> Mir der /-Sprache kann man, neue Datenformate und Konvertierer zu als Module hinzufügen. Normalerweise werden die zusätzlichen Formate und Konvertierer in ihrer persönlichen Initialisierungs-Datei definiert oder in einem speziellen Plugin. Einige Beispiele finden Sie in einem Unterverzeichnis ihres -Verzeichnisses, wie z.B. . Ein neues Format kann mit dem Befehl <\scheme-fragment> (define-format \ \ (:name ) \ \ ) erzeugt werden. > ist ein Symbol, dass für das Format steht und > eine Zeichenkette, die in Menüs benutzt werden kann. Tatsächlich gibt es ein Datenformat meist in mehreren Varianten: ein Format -file> für Dateien, ein Format -document> für ganze Dokumente und ein Format -snippet> für kurze Zeichenketten, wie z.B. Auswahlen (selections), und schlieÿlich -object> für die bevorzugte interne -Repräsentation bei Konversionen (dies ist Parser-Variante des Formats). Konvertierer von -file> nach -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 <\scheme-fragment> (:suffix ... ) angegeben werden. Eine (heuristische) Routine, um festzustellen, ob ein Dokument zu einem bestimmten Format gehört, kann mit <\scheme-fragment> (:recognize ) (:must-recognize ) 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 können mit <\scheme-fragment> (converter \ \ ) erzeugt werden. Der eigentliche Konvertierer wird durch eine der folgenden Optionen spezifiziert: <\scheme-fragment> (:function ) (:function-with-options ) (:shell from to ) Im ersten Fall ist der Konvertierer > eine Routine die ein Objekt im Daten-Format > \ übernimmt und ein Objekt im Daten-Format > zurückgibt. Im zweiten Fall übernimmt der > eine assoziative Liste als zweites Argument und Optionen für den Konvertierer. Im letzten Fall wird ein -Befehl angegeben, der die Konvertierung zwischen den beiden Datei-Formaten durchführt. Der Konvertierer wird dann und nur dann aktiviert, wenn das Programm > gefunden wird. Hilfsdateien können automatisch erzeugt und wieder gelöscht werden. berechnet automatisch die transitive \RClosure'' aller Konvertierer, indem einen \Rkürzesten Pfad Algorithmus'' benutzt. Mit anderen Worten, wenn es einen Konvertierer für nach gibt und einen Konvertierer von nach , dann hat man auch einen von nach . Es für jede Konvertierung kann eine \RStrafe/Abstand zwischen den Formaten`` mit <\scheme-fragment> (:penalty ) angeben werden, um so Hinweise zum automatischen Finden eines optimalen Weges für die Konvertierung zu geben. Weitere Optionen für Konvertierer sind: <\scheme-fragment> (:require ) (:option ) 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 Option. Die Option spezifiziert eine Option für den Konvertierer, mit einer Voreinstellung. Diese Option wird automatisch an alle Konvertierer mit Optionen weitergegeben. <\initial> <\collection>