1
0
Fork 0
doc/devel/interface/interface-background.de.tm

158 lines
5.0 KiB
Tcl

<TeXmacs|1.0.4.5>
<style|tmdoc>
<\body>
<tmdoc-title|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 <value|scheme>-Befehl
<\scheme-fragment>
(plugin-eval <em|plugin> <em|session> <em|expression>)
</scheme-fragment>
mit dem man den Ausdruck <verbatim|<em|expression>> durch die Anwendung
evaluieren lassen kann. Darin ist <verbatim|<em|plugin>> der Name des
Anwendungs-Plugin, <verbatim|<em|session>> die Bezeichnung der Sitzung und
<verbatim|<em|expression>> ein <value|scheme>-Ausdruck, der einen
<TeXmacs>-Baum repräsentiert.
<paragraph*|Das <verbatim|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
<verbatim|substitute> formt mathematische <LaTeX>-Ausdrücke in
<TeXmacs>-Ausdrücke um. Auÿerdem stellt es dafür den Kurzbefehl <shortcut|(substitute-substitute)>
bereit. das Plugin besteht aus den folgenden Dateien:
<\verbatim>
\ \ \ \ <example-plugin-link|substitute/Makefile>
\ \ \ \ <example-plugin-link|substitute/progs/init-substitute.scm>
\ \ \ \ <example-plugin-link|substitute/src/substitute.cpp>
</verbatim>
Die Hauptschleife von <verbatim|substitute.cpp> besteht aus den folgenden
Zeilen
<\cpp-fragment>
char buffer[100];
cin.getline (buffer, 100, '\\n');
cout \<less\>\<less\> DATA_BEGIN;
cout \<less\>\<less\> "latex:$" \<less\>\<less\> buffer \<less\>\<less\>
"$";
cout \<less\>\<less\> DATA_END;
fflush (stdout);
</cpp-fragment>
Die Konfigurationsdatei des Plugins, <verbatim|init-substitute.scm>, hat
den folgenden Code, der den ausgewählten Bereich durch das Ergebnis der
Evaluierung ersetzt.
<\scheme-fragment>
(define (substitute-substitute)
\ \ (import-from (texmacs plugin plugin-cmd))
\ \ (if (selection-active-any?)
\ \ \ \ \ \ (let* ((t (tree-\<gtr\>object (the-selection)))
\ \ \ \ \ \ \ \ \ \ \ \ \ (u (plugin-eval "substitute" "default" t)))
\ \ \ \ \ \ \ \ (clipboard-cut "primary")
\ \ \ \ \ \ \ \ (insert-tree (object-\<gtr\>tree u)))))
</scheme-fragment>
und den Code für den Kurzbefehl <shortcut|(substitute-substitute)>:
<\scheme-fragment>
(kbd-map
\ \ ("C-F12" (substitute-substitute)))
</scheme-fragment>
Beachten Sie bitte, dass diese Routinen in gröÿeren, echten Plugins in
eigenständige Module gehören.
<paragraph*|Das <verbatim|secure> plugin>
Ein weiteres Beispiel dafür, wie man eine Schnittstelle im Hintergrund
benutzen kann, gibt das Plugin <verbatim|secure>, das die Dateien
<\verbatim>
\ \ \ \ <example-plugin-link|secure/Makefile>
\ \ \ \ <example-plugin-link|secure/packages/secure.ts>
\ \ \ \ <example-plugin-link|secure/progs/init-secure.scm>
\ \ \ \ <example-plugin-link|secure/progs/secure-secure.scm>
\ \ \ \ <example-plugin-link|secure/src/secure.cpp>
</verbatim>
enthält.
Wie <verbatim|substitute.cpp> oben formt das Hauptprogramm
<verbatim|secure.cpp> <LaTeX>-Ausdrücke in <TeXmacs>-Ausdrücke um. Das
Modul <verbatim|secure-secure.scm> enthält die <em|sichere>
<value|scheme>-Routine <verbatim|latexer>:
<\scheme-fragment>
(tm-define (latexer s)
\ \ (:type (tree -\<gtr\> object))
\ \ (:synopsis "convert LaTeX string to TeXmacs tree using plugin")
\ \ (:secure #t)
\ \ (plugin-eval "secure" "default" (tree-\<gtr\>string s)))
</scheme-fragment>
Man muss <verbatim|latexer> unbedingt als \Rsicher`` einstufen, damit sie
mit dem <markup|extern> Konstrukt zur Definition von weiteren Konstrukten
herangezogen werden kann. Dazu wird die Stil-Definition
\ <verbatim|secure.ts> benutzt mit dem Code:
<\tm-fragment>
<\inactive*>
Sehen Sie einen mathematischen TeX-Befehl als TeXmacs-Ausdruck mittels
eines Plugin
<assign|latexer|<macro|x|<extern|latexer|<arg|x>>>>
</inactive*>
</tm-fragment>
Nach Kompilierung, Installation und Neustart von <TeXmacs> können Sie ,
nachdem Sie den neuen Menübefehl <menu|Document|Use package|Secure>
durchgeführt haben, <markup|latexer> als neuen Konstrukt benutzen. Dieser
nimmt einen mathematischen <LaTeX>-Ausdruck als Argument und zeigt ihn nach
der Konversion auf dem Bildschirm an.
<tmdoc-copyright|1998--2002|Joris van der Hoeven>
<tmdoc-license|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".>
</body>
<\initial>
<\collection>
<associate|language|german>
</collection>
</initial>