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