Berechnungen im Hintergrund

Bis jetzt haben wir Schnittstellen von TeXmacs zu anderen Anwendungen betrachtet, die dazu gedacht sind, aus TeXmacs heraus interaktiv mit den Anwendungen zu kommunizieren. Es gibt aber auch einen Scheme-Befehl

(plugin-eval plugin session expression)

mit dem man den Ausdruck expression durch die Anwendung evaluieren lassen kann. Darin ist plugin der Name des Anwendungs-Plugin, session die Bezeichnung der Sitzung und expression ein Scheme-Ausdruck, der einen TeXmacs-Baum repräsentiert.

Das substitute plugin

Evaluierungen im Hintergrund können z.B. dazu benutzt werden, dass, wenn der Anwender einen Ausdruck ausgewählt hat, dieser Ausdruck durch das Ergebnis der Evaluierung ersetzt wird. Das vorliegende Beispiel substitute formt mathematische LaTeX-Ausdrücke in TeXmacs-Ausdrücke um. Außerdem stellt es dafür den Kurzbefehl C-F12 bereit. das Plugin besteht aus den folgenden Dateien:

    substitute/Makefile
    substitute/progs/init-substitute.scm
    substitute/src/substitute.cpp

Die Hauptschleife von substitute.cpp besteht aus den folgenden Zeilen

char buffer[100];
cin.getline (buffer, 100, '\n');
cout << DATA_BEGIN;
cout << "latex:$" << buffer << "$";
cout << DATA_END;
fflush (stdout);

Die Konfigurationsdatei des Plugins, init-substitute.scm, hat den folgenden Code, der den ausgewählten Bereich durch das Ergebnis der Evaluierung ersetzt.

(define (substitute-substitute)

(import-from (texmacs plugin plugin-cmd))

(if (selection-active-any?)

(let* ((t (tree->object (the-selection)))

(u (plugin-eval "substitute" "default" t)))

(clipboard-cut "primary")

(insert-tree (object->tree u)))))

und den Code für den Kurzbefehl C-F12:

(kbd-map

("C-F12" (substitute-substitute)))

Beachten Sie bitte, dass diese Routinen in größeren, echten Plugins in eigenständige Module gehören.

Das secure plugin

Ein weiteres Beispiel dafür, wie man eine Schnittstelle im Hintergrund benutzen kann, gibt das Plugin secure, das die Dateien

    secure/Makefile
    secure/packages/secure.ts
    secure/progs/init-secure.scm
    secure/progs/secure-secure.scm
    secure/src/secure.cpp

enthält.

Wie substitute.cpp oben formt das Hauptprogramm secure.cpp LaTeX-Ausdrücke in TeXmacs-Ausdrücke um. Das Modul secure-secure.scm enthält die sichere Scheme-Routine latexer:

(tm-define (latexer s)

(:type (tree -> object))

(:synopsis "convert LaTeX string to TeXmacs tree using plugin")

(:secure #t)

(plugin-eval "secure" "default" (tree->string s)))

Man muss latexer unbedingt als „sicher“ einstufen, damit sie mit dem extern Konstrukt zur Definition von weiteren Konstrukten herangezogen werden kann. Dazu wird die Stil-Definition secure.ts benutzt mit dem Code:

<document|Sehen Sie einen mathematischen TeX-Befehl als TeXmacs-Ausdruck mittels eines Plugin|<assign|latexer|<macro|x|<extern|latexer|x>>>>

Nach Kompilierung, Installation und Neustart von TeXmacs können Sie , nachdem Sie den neuen Menübefehl DokumentPaket benutzenSecure durchgeführt haben, latexer als neuen Konstrukt benutzen. Dieser nimmt einen mathematischen LaTeX-Ausdruck als Argument und zeigt ihn nach der Konversion auf dem Bildschirm an.

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