Nächste: , Vorige:   [Inhalt][Index]

13 Eingabe und Ausgabe


Nächste: , Vorige: , Nach oben: Eingabe und Ausgabe   [Inhalt][Index]

13.1 Kommentare

Ein Kommentar in der Maxima-Eingabe ist ein Text der von den Zeichen /* und */ eingeschlossen ist. Der Maxima-Parser behandelt einen Kommentar wie ein Zwischenraumzeichen, wenn ein Token eingelesen wird. Ein Token endet immer an einem Zwischenraumzeichen. Eine Eingabe wie a/* foo */b enthält die beiden Token a und b und nicht das einzelne Token ab. Ansonsten werden Kommentare von Maxima ignoriert. Kommentare werden im eingelesenen Ausdruck nicht gespeichert.

Kommentare können in beliebiger Tiefe verschachtelt werden. Die Begrenzungszeichen /* und */ müssen paarweise auftreten.

Beispiele:

(%i1) /* aa is a variable of interest */  aa : 1234;
(%o1)                         1234
(%i2) /* Value of bb depends on aa */  bb : aa^2;
(%o2)                        1522756
(%i3) /* User-defined infix operator */  infix ("b");
(%o3)                           b
(%i4) /* Parses same as a b c, not abc */  a/* foo */b/* bar */c;
(%o4)                         a b c
(%i5) /* Comments /* can be nested /* to any depth */ */ */  1 + xyz;
(%o5)                        xyz + 1

13.2 Dateien

Folgende Funktionen und Variablen arbeiten mit Dateien:

   appendfile           batch                 batchload
   closefile            file_output_append    filename_merge
   file_search          file_search_maxima    file_search_lisp
   file_search_demo     file_search_usage     file_search_tests
   file_type            file_type_lisp        file_type_maxima
   load                 load_pathname         loadfile
   loadprint            pathname_directory    pathname_name
   pathname_type        printfile             save
   stringout            with_stdout           writefile

13.3 Funktionen und Variablen für die Eingabe und Ausgabe

Funktion: appendfile (filename)

Startet wie die Funktion writefile eine Aufzeichnung aller Ein- und Ausgaben der Konsole. Die Ein- und Ausgaben werden in die Datei filename geschrieben. Im Unterschied zu writefile werden die Daten immer an eine existierende Datei angehängt, wenn diese existiert. Existiert die Datei nicht, wird diese angelegt.

Die Funktion closefile beendet die Aufzeichnung.

Funktion: batch (filename)
Funktion: batch (filename, option)

Das Kommando batch(filename) liest Maxima-Ausdrücke aus der Datei filename ein, wertet diese aus und gibt die Ergebnisse auf der Konsole aus. batch sucht die Datei filename in den Verzeichnissen, die in der Liste file_search_maxima enthalten sind. Siehe auch die Funktion file_search.

batch(filename, demo) entspricht dem Kommando demo(filename). batch sucht für diesen Fall die Datei in der Liste der Verzeichnisse file_search_demo. Siehe auch die Funktion demo.

batch(filename, test) entspricht dem Kommando run_testsuite mit der Option display_all=true. Im Unterschied zur Funktion run_testsuite sucht die Funktion batch die Datei filename in den Verzeichnissen der Liste file_search_maxima und nicht in der Liste file_search_tests.

Die Maxima-Ausdrücke in der Datei werden wie auf der Konsole mit den Zeichen ; oder $ beendet. Die Systemvariable % und die Funktion %th beziehen sich auf vorhergehende Zeilen in der Datei. Die Datei kann :lisp-Unterbrechungskommandos enthalten. Leerzeichen, Tabulatoren, Zeilenschaltungen und Kommentare werden ignoriert. Eine geeignete Datei kann mit einem Texteditor oder der Funktion stringout erstellt werden.

Den Ein- und Ausgaben werden jeweils Ein- und Ausgabemarken zugewiesen. Tritt während der Auswertung eines Ausdrucks ein Fehler auf, wird das Einlesen der Datei abgebrochen. Werden Eingaben vom Nutzer benötigt, wie zum Beispiel bei Fragen der Funktionen asksign oder askinteger, dann wartet batch auf die Antworten, um dann die Verarbeitung der Datei fortzusetzen.

Die Verarbeitung von batch kann durch die Eingabe von control-C abgebrochen werden. Die weitere Reaktion auf einen Abbruch mit control-C hängt von der Lisp-Implementation ab.

batch wertet die Argumente aus. batch gibt den Namen der Datei filename als Zeichenkette zurück, wenn die Funktion ohne zweites Argument oder mit der Option demo aufgerufen wird. Wird die Funktion mit der Option test aufgerufen, ist die Rückgabe eine leere Liste [] oder eine Liste, die filename und die Nummern der fehlgeschlagenen Tests enthält.

Siehe auch die Funktionen load und batchload, um Dateien zu laden, sowie die Funktionen run_testsuite und demo.

Funktion: batchload (filename)

Liest Ausdrücke aus der Datei filename ein und wertet diese aus, ohne die eingelesenen und ausgewerteten Ausdrücke anzuzeigen und ohne Zuweisung von Eingabe- und Ausgabemarken. Die Ausgabe von Fehlermeldungen oder sonstigem Text, der von Funktionen ausgegeben wird, wird nicht unterdrückt.

Die Systemvariable % und die Funktion %th beziehen sich auf die letzte Eingabe auf der Konsole und nicht auf Zeilen oder Ergebnisse der Datei. Im Gegensatz zur Funktion batch darf eine Datei, die von batchload geladen wird, keine :lisp-Unterbrechungskommandos enthalten.

batchload gibt eine Zeichenkette mit dem Pfad der Datei filename zurück. Siehe auch die Funktionen batch und load, um Dateien zu laden.

Funktion: closefile ()

Beendet eine Aufzeichnung, die von den Funktionen writefile oder appendfile gestartet wurde, und schließt die Ausgabedatei.

Optionsvariable: file_output_append

Standardwert: false

Die Optionsvariable file_output_append kontrolliert, ob die Funktionen save, stringout oder with_stdout, die in eine Datei schreiben, diese löschen und neu anlegen oder die Daten anhängen. Wenn file_output_append den Wert true hat, werden die Daten an die existierende Datei angehängt. Ansonsten wird eine neue Datei erstellt.

Plot-Funktionen und der Übersetzer erstellen grundsätzlich neue Dateien und die Funktionen tex und appendfile hängen die Ausgabe immer an eine bestehende Datei an.

Funktion: filename_merge (path, filename)

Setzt einen Pfad aus path und filename zusammen. Endet path mit einer Zeichenkette der Form ###.something, wird diese Zeichenkette durch filename.something ersetzt. Ansonsten wird der Endbestandteil durch filename ersetzt.

Die Rückgabe ist ein Lisp-Dateiname.

Beispiele:

(%i1) filename_merge("user/", "myfile");
(%o1)                      user/myfile

(%i2) filename_merge("user/###.lisp", "myfile");
(%o2)                   user/myfile.lisp
Funktion: file_search (filename)
Funktion: file_search (filename, pathlist)

file_search sucht die Datei filename und gibt den Pfad als eine Zeichenkette zurück, wenn die Datei gefunden wurde. Ansonsten wird false zurückgegeben. file_search(filename) sucht in den Standardsuchverzeichnissen, die mit den Optionsvariablen file_search_maxima, file_search_lisp und file_search_demo spezifiziert werden.

file_search prüft zuerst, ob die Datei filename existiert. Dann prüft file_search, ob die Datei anhand von Mustern im Dateinamen gefunden werden kann. Siehe file_search_maxima für die Suche von Dateien.

Das Argument filename kann ein Name mit einer Pfadangabe oder allein der Dateiname sein. Sind in den Suchverzeichnissen Dateinamen mit Mustern enthalten, kann die Datei auch ohne Endung angegeben werden. Zum Beispiel finden die folgenden Kommandos dieselbe Datei, wenn /home/wfs/special/###.mac in der Liste file_search_maxima enthalten ist:

file_search ("/home/wfs/special/zeta.mac");
file_search ("zeta.mac");
file_search ("zeta");

file_search(filename, pathlist) sucht nur in den Verzeichnissen pathlist. Das Argument pathlist überschreibt die Standardsuchverzeichnisse. Auch ein einzelnes Verzeichnis muss als eine Liste übergeben werden.

Die Standardsuchverzeichnisse können modifiziert werden. Siehe dazu auch file_search_maxima.

file_search wird von der Funktion load mit den Verzeichnislisten file_search_maxima und file_search_lisp aufgerufen.

Optionsvariable: file_search_maxima
Optionsvariable: file_search_lisp
Optionsvariable: file_search_demo
Optionsvariable: file_search_usage
Optionsvariable: file_search_tests

Diese Optionsvariablen bezeichnen Listen mit Verzeichnissen, die von Funktionen wie load und demo durchsucht werden, um eine Datei zu finden. Die Standardwerte bezeichnen verschiedene Verzeichnisse der Maxima-Installation.

Diese Variablen können modifiziert werden, indem die Standardwerte ersetzt oder weitere Verzeichnisse angehängt werden. Zum Beispiel wird im Folgenden der Standardwert der Optionsvariablen file_search_maxima ersetzt:

file_search_maxima: ["/usr/local/foo/###.mac",
    "/usr/local/bar/###.mac"]$

In diesem Beispiel werden zwei weitere Verzeichnisse zu der Optionsvariablen file_search_maxima hinzugefügt:

file_search_maxima: append (file_search_maxima,
    ["/usr/local/foo/###.mac", "/usr/local/bar/###.mac"])$

Soll eine erweiterte Liste der Suchverzeichnisse nach jedem Start von Maxima zur Verfügung stehen, kann das obige Kommando in die Datei maxima-init.mac aufgenommen werden.

Mehrere Dateiendungen und Pfade können mit Wildcard-Konstruktionen spezifiziert werden. Eine Zeichenkette ### wird durch einen Dateinamen ersetzt. Werden mehrere Zeichenketten durch Kommata getrennt und mit geschweiften Klammern angegeben wie zum Beispiel {foo, bar, baz}, expandiert die Liste in mehrere Zeichenketten. Das folgende Beispiel expandiert für neumann

"/home/{wfs,gcj}/###.{lisp,mac}"

in /home/wfs/neumann.lisp, /home/gcj/neumann.lisp, /home/wfs/neumann.mac und /home/gcj/neumann.mac.

Funktion: file_type (filename)

Gibt eine Vermutung über den Typ der Datei filename zurück. Es wird nur die Dateiendung betrachtet.

Die Rückgabe ist das Symbol maxima oder lisp, wenn die Dateiendung einen der Werte der Optionsvariablen file_type_maxima oder der Optionsvariablen file_type_lisp entspricht. Ansonsten ist die Rückgabe das Symbol object.

Siehe auch die Funktion pathname_type.

Optionsvariable: file_type_lisp

Standardwert: [l, lsp, lisp]

Die Optionsvariable file_type_lisp enthält die Dateiendungen, die Maxima als die Bezeichnung für eine Lisp-Datei annimmt.

Siehe auch die Funktion file_type.

Optionsvariable: file_type_maxima

Standardwert: [mac, mc, demo, dem, dm1, dm2, dm3, dmt]

Die Optionsvariable file_type_maxima enthält die Dateiendungen, die Maxima als die Bezeichnung für eine Maxima-Datei annimmt.

Siehe auch die Funktion file_type.

Funktion: load (filename)

Wertet die Ausdrücke in der Datei filename aus, wodurch die Variablen, Funktionen und andere Objekte in Maxima geladen werden. Alle bisher zugewiesen Variablen und Definitionen werden überschrieben. Um die Datei zu finden, wird von load die Funktion file_search mit den Verzeichnislisten file_search_maxima und file_search_lisp aufgerufen. Ist load erfolgreich, wird der Dateiname zurückgegeben. Ansonsten gibt load eine Fehlermeldung aus.

load verarbeitet Dateien mit Lisp-Code oder Maxima-Code. Dateien, die mit den Funktionen save, translate_file und compile_file erstellt wurden, enthalten Lisp-Code. Dateien, die mit stringout erstellt wurden, enthalten Maxima-Code. Die Ausgabedateien dieser Funktionen können mit load geladen werden. load ruft die Funktion loadfile auf, um Lisp-Dateien und batchload auf, um Maxima-Dateien zu verarbeiten.

load erkennt keine :lisp-Unterbrechungskommandos in Maxima-Dateien. Die Systemvariablen _, __ und % und die Funktion %th behalten jeweils ihren letzten Wert vor dem Aufruf von load.

Siehe auch die Funktionen loadfile, batch, batchload und demo. loadfile verarbeitet Lisp-Dateien. batch, batchload und demo verarbeiten Maxima-Dateien.

Siehe file_search für mehr Informationen, wie Maxima Dateien in Verzeichnissen findet. load wertet die Argumente aus.

Systemvariable: load_pathname

Standardwert: false

Wird eine Datei mit den Funktionen load, loadfile oder batchload geladen, enthält die Systemvariable load_pathname den Namen der Datei. Der Wert der Systemvariablen kann in der Datei, die geladen wird, ausgelesen werden.

Beispiele:

Ist eine Batch-Datei mit den Namen test.mac in dem Verzeichnis

"/home/dieter/workspace/mymaxima/temp/"

abgelegt und enthält die Datei die folgenden Befehle

print("The value of load_pathname is: ", load_pathname)$
print("End of batchfile")$

dann wird das Folgende ausgegeben:

(%i1) load("/home/dieter/workspace/mymaxima/temp/test.mac")$
The value of load_pathname is:  
              /home/dieter/workspace/mymaxima/temp/test.mac 
End of batchfile
Funktion: loadfile (filename)

Lädt die Datei filename und wertet die Lisp-Ausdrücke in der Datei aus. filename ruft nicht file_search auf, um eine Datei zu finden. Daher muss filename ein vollständiger Dateiname sein.

loadfile kann Dateien verarbeiten, die mit den Funktionen save, translate_file und compile_file erzeugt wurden.

Optionsvariable: loadprint

Standardwert: true

loadprint kontrolliert, ob Meldungen ausgegeben werden, wenn eine Datei geladen wird.

  • Hat loadprint den Wert true, wird immer eine Meldung ausgegeben.
  • Hat loadprint den Wert 'loadfile, wird eine Meldung ausgegeben, wenn die Datei mit der Funktion loadfile geladen wird.
  • Hat loadprint den Wert 'autoload, wird eine Meldung ausgegeben, wenn eine Datei automatisch geladen wird.
  • Hat loadprint den Wert false, werden keine Meldungen beim Laden von Dateien ausgegeben.
Funktion: pathname_directory (pathname)
Funktion: pathname_name (pathname)
Funktion: pathname_type (pathname)

Diese Funktionen geben die Bestandteile eines Pfadnamens zurück.

Beispiele:

(%i1) pathname_directory("/home/dieter/maxima/changelog.txt");
(%o1)                 /home/dieter/maxima/
(%i2) pathname_name("/home/dieter/maxima/changelog.txt");
(%o2)                       changelog
(%i3) pathname_type("/home/dieter/maxima/changelog.txt");
(%o3)                          txt
Funktion: printfile (path)

Druckt eine Datei mit dem Namen path auf der Konsole aus. path kann ein Symbol oder eine Zeichenkette sein. printfile sucht die Datei in den Verzeichnissen, die in der Optionsvariablen file_search_usage enthalten sind.

printfile gibt path zurück, wenn die Datei existiert.

Funktion: save (filename, name_1, name_2, name_3, …)
Funktion: save (filename, values, functions, labels, …)
Funktion: save (filename, [m, n])
Funktion: save (filename, name_1=expr_1, …)
Funktion: save (filename, all)
Funktion: save (filename, name_1=expr_1, name_2=expr_2, …)

Speichert die aktuellen Werte von name_1, name_2, name_3, …, in die Datei filename. Die Argumente sind die Namen von Variablen, Funktionen oder anderen Objekten. Argumente, die keinen Wert haben, werden ignoriert. save gibt den Namen der Datei filename zurück.

save speichert die Daten in einem Lisp-Format. Die gespeicherten Daten können mit dem Kommando load(filename) zurückgelesen werden. Siehe load.

Die Optionsvariable file_output_append kontrolliert, ob save die Daten an die Ausgabedatei anhängt, wenn diese bereits existiert, oder die Ausgabedatei zuvor löscht. Hat file_output_append den Wert true, werden die Daten angehängt. Ansonsten wird die Datei gelöscht und neu angelegt, wenn diese bereits existiert. Existiert die Ausgabedatei noch nicht, wird diese angelegt.

save(filename, values, functions, labels, ...) speichert die Werte aller Einträge der Listen values, functions, labels, u.s.w. in die Ausgabedatei. Es kann jede der vorhandenen Informationslisten, die in der Systemvariablen infolists enthalten ist, als Argument übergeben werden. values enthält zum Beispiel alle vom Nutzer definierten Variablen.

save(filename, [m, n]) speichert die Werte der Eingabe- und Ausgabemarken von m bis n. m und n müssen ganze Zahlen sein. Die Eingabe- und Ausgabemarken können auch einzeln gespeichert werden, zum Beispiel mit dem Kommando save("foo.1", %i42, %o42). save(filename, labels) speichert alle Eingabe- und Ausgabemarken. Beim Zurücklesen der Marken werden vorhandene Werte überschrieben.

save(filename, name_1 = expr_1, name_2 = expr_2, ...) speichert die Werte expr_1, expr_2, …, unter den Namen name_1, name_2, … ab. Dies kann nützlich sein, um zum Beispiel die Werte von Marken unter einem neuen Namen abzuspeichern. Die rechte Seite der Gleichungen kann ein beliebiger ausgewerteter Ausdruck sein. Die neuen Namen werden der aktuellen Sitzung nicht hinzugefügt und nur in der Ausgabedatei gespeichert.

Die verschiedenen Möglichkeiten der Funktion save, können miteinander kombiniert werden. Das Kommando save(filename, aa, bb, cc=42, functions, [11,17]) ist dafür ein Beispiel.

save(filename, all) speichert den aktuellen Zustand von Maxima in eine Ausgabedatei. Eingeschlossen sind alle nutzerdefinierten Variablen, Funktionen oder Arrays, einschließlich automatischer Definitionen. Die gespeicherten Daten enthalten auch die Werte von geänderten System- oder Optionsvariablen. Siehe dazu auch myoptions.

save wertet das Argument filename aus. Alle anderen Argumente werden nicht ausgewertet.

Funktion: stringout (filename, expr_1, expr_2, expr_3, …)
Funktion: stringout (filename, [m, n])
Funktion: stringout (filename, input)
Funktion: stringout (filename, functions)
Funktion: stringout (filename, values)

stringout schreibt Ausdrücke in einem Format in eine Datei, dass identisch mit dem Format der Eingabe ist. Die Datei kann als Eingabedatei für die Funktionen batch oder demo genutzt werden. Sie kann mit einem Texteditor für jeden Zweck editiert werden. stringout kann ausgeführt werden, wenn das Kommando writefile aktiv ist.

Die Optionsvariable file_output_append kontrolliert, ob stringout die Daten an die Ausgabedatei anhängt, wenn diese bereits existiert oder die Ausgabedatei zuvor löscht. Hat file_output_append den Wert true, werden die Daten angehängt, wenn die Datei bereits existiert. Ansonsten wird die Datei gelöscht und neu angelegt. Existiert die Ausgabedatei noch nicht, wird diese angelegt.

Die allgemeine Form von stringout schreibt die Werte eines oder mehrerer Ausdrücke in die Ausgabedatei. Ist ein Ausdruck eine Variable, wird nur der Wert der Variablen, nicht jedoch der Name der Variablen in die Ausgabedatei geschrieben. Ein nützlicher Spezialfall ist, dass die Werte der Eingabe- und Ausgabemarken (%i1, %i2, %i3, … und %o1, %o2, %o3, …) in die Datei geschrieben werden können.

Hat die Optionsvariable grind den Wert true, wird die Ausgabe im Format der Funktion grind in die Ausgabedatei geschrieben. Ansonsten wird das Format der Funktion string für die Ausgabe genutzt.

stringout(filename, [m, n]) schreibt die Werte aller Eingabemarken von m bis n in die Ausgabedatei. stringout(filename, input) schreibt alle Eingabemarken in die Ausgabedatei. stringout(filename, functions) schreibt alle vom Nutzer definierten Funktionen, die in der Informationsliste functions enthalten sind, in die Ausgabedatei.

stringout(filename, values) schreibt alle benuzterdefinierten Variablen, die in der Informationsliste values enthalten sind, in die Ausgabedatei. Die Variablen werden als eine Zuweisung, mit dem Namen der Variablen, dem Zuweisungsoperator : und dem Wert in die Datei geschrieben. Im Unterschied dazu, speichert die allgemeine Form der Funktion stringout die Variablen nicht als Zuweisung.

Funktion: with_stdout (f, expr_1, expr_2, expr_3, …)
Funktion: with_stdout (s, expr_1, expr_2, expr_3, …)

with_stdout wertet Argumente expr_1, expr_2, expr_3, … aus und schreibt die Ergebnisse der Auswertung in die Ausgabedatei f oder in den Stream s. Die Ergebnisse werden nicht auf der Konsole ausgegeben.

Die Optionsvariable file_output_append bestimmt, ob with_stdout die Daten an die Ausgabedatei anhängt oder die Ausgabedatei zuvor löscht. Hat file_output_append den Wert true, werden die Daten angehängt. Ansonsten wird die Datei gelöscht und neu angelegt. Existiert die Ausgabedatei noch nicht, wird diese angelegt.

with_stout gibt das Ergebnis des letzten Argumentes zurück.

Siehe auch writefile.

Beispiel:

(%i1) with_stdout ("tmp.out", for i:5 thru 10 do
         print (i, "! yields", i!))$
(%i2) printfile ("tmp.out")$
5 ! yields 120 
6 ! yields 720 
7 ! yields 5040 
8 ! yields 40320 
9 ! yields 362880 
10 ! yields 3628800
Funktion: writefile (filename)

Startet eine Aufzeichnung aller Ein- und Ausgaben der Konsole. Die Ein- und Ausgaben werden in die Datei filename geschrieben.

Die Ausgabedatei kann von Maxima nicht wieder zurückgelesen werden. Um ein Datei zu erzeugen, die von Maxima zurückgelesen werden kann, siehe die Funktionen save und stringout. save speichert Ausdrücke in einem Lisp-Format und stringout in einem Maxima-Format.

Die Reaktion der Funktion writefile für den Fall, dass die Ausgabedatei bereits existiert, hängt von der Lisp-Implementation ab. Die Ausgabedatei kann zurückgesetzt werden oder die Daten werden angehängt. Die Funktion appendfile hängt die Daten immer an eine existierende Datei an.

Um eine Aufzeichnung ohne Textausgaben von Funktionen zu erhalten, kann writefile nach der Ausführung von playback ausgeführt werden. playback gibt alle vorhergenden Eingabe- und Ausgabemarken aus, jedoch nicht sonstige Textausgaben von Maxima-Funktionen.

Mit closefile wird die Aufzeichnung beendet.


13.4 Funktionen und Variablen für die TeX-Ausgabe

Function: tex (expr)
Function: tex (expr, destination)
Function: tex (expr, false)
Function: tex (label)
Function: tex (label, destination)
Function: tex (label, false)

Prints a representation of an expression suitable for the TeX document preparation system. The result is a fragment of a document, which can be copied into a larger document but not processed by itself.

tex (expr) prints a TeX representation of expr on the console.

tex (label) prints a TeX representation of the expression named by label and assigns it an equation label (to be displayed to the left of the expression). The TeX equation label is the same as the Maxima label.

destination may be an output stream or file name. When destination is a file name, tex appends its output to the file. The functions openw and opena create output streams.

tex (expr, false) and tex (label, false) return their TeX output as a string.

tex evaluates its first argument after testing it to see if it is a label. Quote-quote '' forces evaluation of the argument, thereby defeating the test and preventing the label.

See also texput.

Examples:

(%i1) integrate (1/(1+x^3), x);
                                    2 x - 1
                  2            atan(-------)
             log(x  - x + 1)        sqrt(3)    log(x + 1)
(%o1)      - --------------- + ------------- + ----------
                    6             sqrt(3)          3
(%i2) tex (%o1);
$$-{{\log \left(x^2-x+1\right)}\over{6}}+{{\arctan \left({{2\,x-1
 }\over{\sqrt{3}}}\right)}\over{\sqrt{3}}}+{{\log \left(x+1\right)
 }\over{3}}\leqno{\tt (\%o1)}$$
(%o2)                          (\%o1)
(%i3) tex (integrate (sin(x), x));
$$-\cos x$$
(%o3)                           false
(%i4) tex (%o1, "foo.tex");
(%o4)                          (\%o1)

tex (expr, false) returns its TeX output as a string.

(%i1) S : tex (x * y * z, false);
(%o1) $$x\,y\,z$$
(%i2) S;
(%o2) $$x\,y\,z$$
Function: tex1 (e)

Returns a string which represents the TeX output for the expressions e. The TeX output is not enclosed in delimiters for an equation or any other environment.

Examples:

(%i1) tex1 (sin(x) + cos(x));
(%o1)                     \sin x+\cos x
Function: texput (a, s)
Function: texput (a, f)
Function: texput (a, s, operator_type)
Function: texput (a, [s_1, s_2], matchfix)
Function: texput (a, [s_1, s_2, s_3], matchfix)

Assign the TeX output for the atom a, which can be a symbol or the name of an operator.

texput (a, s) causes the tex function to interpolate the string s into the TeX output in place of a.

texput (a, f) causes the tex function to call the function f to generate TeX output. f must accept one argument, which is an expression which has operator a, and must return a string (the TeX output). f may call tex1 to generate TeX output for the arguments of the input expression.

texput (a, s, operator_type), where operator_type is prefix, infix, postfix, nary, or nofix, causes the tex function to interpolate s into the TeX output in place of a, and to place the interpolated text in the appropriate position.

texput (a, [s_1, s_2], matchfix) causes the tex function to interpolate s_1 and s_2 into the TeX output on either side of the arguments of a. The arguments (if more than one) are separated by commas.

texput (a, [s_1, s_2, s_3], matchfix) causes the tex function to interpolate s_1 and s_2 into the TeX output on either side of the arguments of a, with s_3 separating the arguments.

Examples:

Assign TeX output for a variable.

(%i1) texput (me,"\\mu_e");
(%o1)                         \mu_e
(%i2) tex (me);
$$\mu_e$$
(%o2)                         false

Assign TeX output for an ordinary function (not an operator).

(%i1) texput (lcm, "\\mathrm{lcm}");
(%o1)                     \mathrm{lcm}
(%i2) tex (lcm (a, b));
$$\mathrm{lcm}\left(a , b\right)$$
(%o2)                         false

Call a function to generate TeX output.

(%i1) texfoo (e) := block ([a, b], [a, b] : args (e),
  concat ("\\left[\\stackrel{", tex1 (b), 
          "}{", tex1 (a), "}\\right]"))$
(%i2) texput (foo, texfoo);
(%o2)                        texfoo
(%i3) tex (foo (2^x, %pi));
$$\left[\stackrel{\pi}{2^{x}}\right]$$
(%o3)                         false

Assign TeX output for a prefix operator.

(%i1) prefix ("grad");
(%o1)                         grad
(%i2) texput ("grad", " \\nabla ", prefix);
(%o2)                        \nabla 
(%i3) tex (grad f);
$$ \nabla f$$
(%o3)                         false

Assign TeX output for an infix operator.

(%i1) infix ("~");
(%o1)                           ~
(%i2) texput ("~", " \\times ", infix);
(%o2)                        \times 
(%i3) tex (a ~ b);
$$a \times b$$
(%o3)                         false

Assign TeX output for a postfix operator.

(%i1) postfix ("##");
(%o1)                          ##
(%i2) texput ("##", "!!", postfix);
(%o2)                          !!
(%i3) tex (x ##);
$$x!!$$
(%o3)                         false

Assign TeX output for a nary operator.

(%i1) nary ("@@");
(%o1)                          @@
(%i2) texput ("@@", " \\circ ", nary);
(%o2)                         \circ 
(%i3) tex (a @@ b @@ c @@ d);
$$a \circ b \circ c \circ d$$
(%o3)                         false

Assign TeX output for a nofix operator.

(%i1) nofix ("foo");
(%o1)                          foo
(%i2) texput ("foo", "\\mathsc{foo}", nofix);
(%o2)                     \mathsc{foo}
(%i3) tex (foo);
$$\mathsc{foo}$$
(%o3)                         false

Assign TeX output for a matchfix operator.

(%i1) matchfix ("<<", ">>");
(%o1)                          <<
(%i2) texput ("<<", [" \\langle ", " \\rangle "], matchfix);
(%o2)                [ \langle ,  \rangle ]
(%i3) tex (<<a>>);
$$ \langle a \rangle $$
(%o3)                         false
(%i4) tex (<<a, b>>);
$$ \langle a , b \rangle $$
(%o4)                         false
(%i5) texput ("<<", [" \\langle ", " \\rangle ", " \\, | \\,"],
      matchfix);
(%o5)           [ \langle ,  \rangle ,  \, | \,]
(%i6) tex (<<a>>);
$$ \langle a \rangle $$
(%o6)                         false
(%i7) tex (<<a, b>>);
$$ \langle a \, | \,b \rangle $$
(%o7)                         false
Function: get_tex_environment (op)
Function: set_tex_environment (op, before, after)

Customize the TeX environment output by tex. As maintained by these functions, the TeX environment comprises two strings: one is printed before any other TeX output, and the other is printed after.

Only the TeX environment of the top-level operator in an expression is output; TeX environments associated with other operators are ignored.

get_tex_environment returns the TeX enviroment which is applied to the operator op; returns the default if no other environment has been assigned.

set_tex_environment assigns the TeX environment for the operator op.

Examples:

(%i1) get_tex_environment (":=");
(%o1) [
\begin{verbatim}
, ;
\end{verbatim}
]
(%i2) tex (f (x) := 1 - x);

\begin{verbatim}
f(x):=1-x;
\end{verbatim}

(%o2)                         false
(%i3) set_tex_environment (":=", "$$", "$$");
(%o3)                       [$$, $$]
(%i4) tex (f (x) := 1 - x);
$$f(x):=1-x$$
(%o4)                         false
Function: get_tex_environment_default ()
Function: set_tex_environment_default (before, after)

Customize the TeX environment output by tex. As maintained by these functions, the TeX environment comprises two strings: one is printed before any other TeX output, and the other is printed after.

get_tex_environment_default returns the TeX environment which is applied to expressions for which the top-level operator has no specific TeX environment (as assigned by set_tex_environment).

set_tex_environment_default assigns the default TeX environment.

Examples:

(%i1) get_tex_environment_default ();
(%o1)                       [$$, $$]
(%i2) tex (f(x) + g(x));
$$g\left(x\right)+f\left(x\right)$$
(%o2)                         false
(%i3) set_tex_environment_default ("\\begin{equation}
", "
\\end{equation}");
(%o3) [\begin{equation}
, 
\end{equation}]
(%i4) tex (f(x) + g(x));
\begin{equation}
g\left(x\right)+f\left(x\right)
\end{equation}
(%o4)                         false

13.5 Funktionen und Variablen für die Fortran-Ausgabe

Option variable: fortindent

Default value: 0

fortindent controls the left margin indentation of expressions printed out by the fortran command. 0 gives normal printout (i.e., 6 spaces), and positive values will causes the expressions to be printed farther to the right.

Function: fortran (expr)

Prints expr as a Fortran statement. The output line is indented with spaces. If the line is too long, fortran prints continuation lines. fortran prints the exponentiation operator ^ as **, and prints a complex number a + b %i in the form (a,b).

expr may be an equation. If so, fortran prints an assignment statement, assigning the right-hand side of the equation to the left-hand side. In particular, if the right-hand side of expr is the name of a matrix, then fortran prints an assignment statement for each element of the matrix.

If expr is not something recognized by fortran, the expression is printed in grind format without complaint. fortran does not know about lists, arrays, or functions.

fortindent controls the left margin of the printed lines. 0 is the normal margin (i.e., indented 6 spaces). Increasing fortindent causes expressions to be printed further to the right.

When fortspaces is true, fortran fills out each printed line with spaces to 80 columns.

fortran evaluates its arguments; quoting an argument defeats evaluation. fortran always returns done.

See also the function f90 for printing one or more expressions as a Fortran 90 program.

Examples:

(%i1) expr: (a + b)^12$
(%i2) fortran (expr);
      (b+a)**12                                                                 
(%o2)                         done
(%i3) fortran ('x=expr);
      x = (b+a)**12                                                             
(%o3)                         done
(%i4) fortran ('x=expand (expr));
      x = b**12+12*a*b**11+66*a**2*b**10+220*a**3*b**9+495*a**4*b**8+792
     1   *a**5*b**7+924*a**6*b**6+792*a**7*b**5+495*a**8*b**4+220*a**9*b
     2   **3+66*a**10*b**2+12*a**11*b+a**12
(%o4)                         done
(%i5) fortran ('x=7+5*%i);
      x = (7,5)                                                                 
(%o5)                         done
(%i6) fortran ('x=[1,2,3,4]);
      x = [1,2,3,4]                                                             
(%o6)                         done
(%i7) f(x) := x^2$
(%i8) fortran (f);
      f                                                                         
(%o8)                         done
Option variable: fortspaces

Default value: false

When fortspaces is true, fortran fills out each printed line with spaces to 80 columns.


Nächste: , Vorige:   [Inhalt][Index]