1 @c -----------------------------------------------------------------------------
2 @c File : Input.de.texi
3 @c License : GNU General Public License (GPL)
5 @c Original : Input.texi revision 21.08.2011
6 @c Translation : Dr. Dieter Kaiser
8 @c Revision : 21.08.2011
10 @c This file is part of Maxima -- GPL CAS based on DOE-MACSYMA
11 @c -----------------------------------------------------------------------------
16 * Funktionen und Variablen f@"ur die Eingabe und Ausgabe::
17 * Funktionen und Variablen f@"ur die TeX-Ausgabe::
18 * Funktionen und Variablen f@"ur die Fortran-Ausgabe::
21 @c -----------------------------------------------------------------------------
22 @node Kommentare, Dateien, Eingabe und Ausgabe, Eingabe und Ausgabe
24 @c -----------------------------------------------------------------------------
26 Ein Kommentar in der Maxima-Eingabe ist ein Text der von den Zeichen @code{/*}
27 und @code{*/} eingeschlossen ist. Der Maxima-Parser behandelt einen Kommentar
28 wie ein Zwischenraumzeichen, wenn ein Token eingelesen wird. Ein Token endet
29 immer an einem Zwischenraumzeichen. Eine Eingabe wie @code{a/* foo */b}
30 enth@"alt die beiden Token @code{a} und @code{b} und nicht das einzelne Token
31 @code{ab}. Ansonsten werden Kommentare von Maxima ignoriert. Kommentare werden
32 im eingelesenen Ausdruck nicht gespeichert.
34 Kommentare k@"onnen in beliebiger Tiefe verschachtelt werden. Die
35 Begrenzungszeichen @code{/*} und @code{*/} m@"ussen paarweise auftreten.
40 (%i1) /* aa is a variable of interest */ aa : 1234;
42 (%i2) /* Value of bb depends on aa */ bb : aa^2;
44 (%i3) /* User-defined infix operator */ infix ("b");
46 (%i4) /* Parses same as a b c, not abc */ a/* foo */b/* bar */c;
48 (%i5) /* Comments /* can be nested /* to any depth */ */ */ 1 + xyz;
52 @c -----------------------------------------------------------------------------
53 @node Dateien, Funktionen und Variablen f@"ur die Eingabe und Ausgabe, Kommentare, Eingabe und Ausgabe
55 @c -----------------------------------------------------------------------------
57 @c TODO: HIER FEHLEN AUSFUEHRUNGEN DIE MAXIMA BETREFFEN.
58 @c DIE OBIGEN AUSFUEHRUNGEN SIND ZU ALLGEMEIN.
60 Folgende Funktionen und Variablen arbeiten mit Dateien:
63 appendfile batch batchload
64 closefile file_output_append filename_merge
65 file_search file_search_maxima file_search_lisp
66 file_search_demo file_search_usage file_search_tests
67 file_type file_type_lisp file_type_maxima
68 load load_pathname loadfile
69 loadprint pathname_directory pathname_name
70 pathname_type printfile save
71 stringout with_stdout writefile
74 @c -----------------------------------------------------------------------------
75 @node Funktionen und Variablen f@"ur die Eingabe und Ausgabe, Funktionen und Variablen f@"ur die TeX-Ausgabe, Dateien, Eingabe und Ausgabe
76 @section Funktionen und Variablen f@"ur die Eingabe und Ausgabe
77 @c -----------------------------------------------------------------------------
79 @c --- 09.11.2010 DK -----------------------------------------------------------
81 @deffn {Funktion} appendfile (@var{filename})
83 Startet wie die Funktion @mref{writefile} eine Aufzeichnung aller Ein- und
84 Ausgaben der Konsole. Die Ein- und Ausgaben werden in die Datei @var{filename}
85 geschrieben. Im Unterschied zu @code{writefile} werden die Daten immer an eine
86 existierende Datei angeh@"angt, wenn diese existiert. Existiert die Datei
87 nicht, wird diese angelegt.
89 Die Funktion @mref{closefile} beendet die Aufzeichnung.
92 @c --- 09.11.2010 DK -----------------------------------------------------------
94 @deffn {Funktion} batch (@var{filename})
95 @deffnx {Funktion} batch (@var{filename}, option)
97 Das Kommando @code{batch(@var{filename})} liest Maxima-Ausdr@"ucke aus der Datei
98 @var{filename} ein, wertet diese aus und gibt die Ergebnisse auf der Konsole
99 aus. @code{batch} sucht die Datei @var{filename} in den Verzeichnissen, die in
100 der Liste @mref{file_search_maxima} enthalten sind. Siehe auch die Funktion
101 @mrefdot{file_search}
103 @code{batch(@var{filename}, @code{demo})} entspricht dem Kommando
104 @code{demo(@var{filename})}. @code{batch} sucht f@"ur diesen Fall die Datei in
105 der Liste der Verzeichnisse @mrefdot{file_search_demo} Siehe auch die Funktion
108 @code{batch(@var{filename}, @code{test})} entspricht dem Kommando
109 @mref{run_testsuite} mit der Option @code{display_all=true}. Im Unterschied zur
110 Funktion @code{run_testsuite} sucht die Funktion @code{batch} die Datei
111 @var{filename} in den Verzeichnissen der Liste @code{file_search_maxima} und
112 nicht in der Liste @mrefdot{file_search_tests}
114 Die Maxima-Ausdr@"ucke in der Datei werden wie auf der Konsole mit den
115 Zeichen @code{;} oder @code{$} beendet. Die Systemvariable @code{%} und die
116 Funktion @code{%th} beziehen sich auf vorhergehende Zeilen in der Datei. Die
117 Datei kann @code{:lisp}-Unterbrechungskommandos enthalten. Leerzeichen,
118 Tabulatoren, Zeilenschaltungen und Kommentare werden ignoriert. Eine geeignete
119 Datei kann mit einem Texteditor oder der Funktion @mref{stringout} erstellt
122 Den Ein- und Ausgaben werden jeweils Ein- und Ausgabemarken zugewiesen. Tritt
123 w@"ahrend der Auswertung eines Ausdrucks ein Fehler auf, wird das Einlesen der
124 Datei abgebrochen. Werden Eingaben vom Nutzer ben@"otigt, wie zum Beispiel bei
125 Fragen der Funktionen @code{asksign} oder @code{askinteger}, dann wartet
126 @code{batch} auf die Antworten, um dann die Verarbeitung der Datei fortzusetzen.
128 Die Verarbeitung von @code{batch} kann durch die Eingabe von @code{control-C}
129 abgebrochen werden. Die weitere Reaktion auf einen Abbruch mit @code{control-C}
130 h@"angt von der Lisp-Implementation ab.
132 @code{batch} wertet die Argumente aus. @code{batch} gibt den Namen der Datei
133 @var{filename} als Zeichenkette zur@"uck, wenn die Funktion ohne zweites
134 Argument oder mit der Option @code{demo} aufgerufen wird. Wird die Funktion mit
135 der Option @code{test} aufgerufen, ist die R@"uckgabe eine leere Liste @code{[]}
136 oder eine Liste, die @var{filename} und die Nummern der fehlgeschlagenen Tests
139 Siehe auch die Funktionen @mref{load} und @mrefcomma{batchload} um Dateien
140 zu laden, sowie die Funktionen @mref{run_testsuite} und @mrefdot{demo}
143 @c --- 09.11.2010 DK -----------------------------------------------------------
145 @deffn {Funktion} batchload (@var{filename})
147 Liest Ausdr@"ucke aus der Datei @var{filename} ein und wertet diese aus, ohne
148 die eingelesenen und ausgewerteten Ausdr@"ucke anzuzeigen und ohne Zuweisung von
149 Eingabe- und Ausgabemarken. Die Ausgabe von Fehlermeldungen oder sonstigem
150 Text, der von Funktionen ausgegeben wird, wird nicht unterdr@"uckt.
152 Die Systemvariable @code{%} und die Funktion @code{%th} beziehen sich auf die
153 letzte Eingabe auf der Konsole und nicht auf Zeilen oder Ergebnisse der Datei.
154 Im Gegensatz zur Funktion @code{batch} darf eine Datei, die von @code{batchload}
155 geladen wird, keine @code{:lisp}-Unterbrechungskommandos enthalten.
157 @code{batchload} gibt eine Zeichenkette mit dem Pfad der Datei @var{filename}
158 zur@"uck. Siehe auch die Funktionen @mref{batch} und @mrefcomma{load} um
162 @c --- 09.11.2010 DK -----------------------------------------------------------
164 @deffn {Funktion} closefile ()
166 Beendet eine Aufzeichnung, die von den Funktionen @mref{writefile} oder
167 @mref{appendfile} gestartet wurde, und schlie@ss{}t die Ausgabedatei.
170 @c --- 09.11.2010 DK -----------------------------------------------------------
171 @anchor{file_output_append}
172 @defvr {Optionsvariable} file_output_append
173 Standardwert: @code{false}
175 Die Optionsvariable @code{file_output_append} kontrolliert, ob die Funktionen
176 @mrefcomma{save} @mref{stringout} oder @mrefcomma{with_stdout} die in eine Datei
177 schreiben, diese l@"oschen und neu anlegen oder die Daten anh@"angen. Wenn
178 @code{file_output_append} den Wert @code{true} hat, werden die Daten an die
179 existierende Datei angeh@"angt. Ansonsten wird eine neue Datei erstellt.
181 Plot-Funktionen und der @"Ubersetzer erstellen grunds@"atzlich neue Dateien und
182 die Funktionen @mref{tex} und @mref{appendfile} h@"angen die Ausgabe immer an
183 eine bestehende Datei an.
186 @c --- 28.08.2010 DK -----------------------------------------------------------
187 @anchor{filename_merge}
188 @deffn {Funktion} filename_merge (@var{path}, @var{filename})
190 Setzt einen Pfad aus @var{path} und @var{filename} zusammen. Endet @var{path}
191 mit einer Zeichenkette der Form @code{###.@var{something}}, wird diese
192 Zeichenkette durch @code{@var{filename.something}} ersetzt. Ansonsten
193 wird der Endbestandteil durch @var{filename} ersetzt.
195 Die R@"uckgabe ist ein Lisp-Dateiname.
200 (%i1) filename_merge("user/", "myfile");
203 (%i2) filename_merge("user/###.lisp", "myfile");
204 (%o2) user/myfile.lisp
208 @c --- 09.11.2010 DK -----------------------------------------------------------
210 @deffn {Funktion} file_search (@var{filename})
211 @deffnx {Funktion} file_search (@var{filename}, @var{pathlist})
213 @code{file_search} sucht die Datei @var{filename} und gibt den Pfad als eine
214 Zeichenkette zur@"uck, wenn die Datei gefunden wurde. Ansonsten wird
215 @code{false} zur@"uckgegeben. @code{file_search(@var{filename})} sucht in den
216 Standardsuchverzeichnissen, die mit den Optionsvariablen
217 @mrefcomma{file_search_maxima} @mref{file_search_lisp} und
218 @mref{file_search_demo} spezifiziert werden.
220 @code{file_search} pr@"uft zuerst, ob die Datei @code{filename} existiert. Dann
221 pr@"uft @code{file_search}, ob die Datei anhand von Mustern im Dateinamen
222 gefunden werden kann. Siehe @mref{file_search_maxima} f@"ur die Suche von
225 Das Argument @var{filename} kann ein Name mit einer Pfadangabe oder allein der
226 Dateiname sein. Sind in den Suchverzeichnissen Dateinamen mit Mustern
227 enthalten, kann die Datei auch ohne Endung angegeben werden. Zum Beispiel
228 finden die folgenden Kommandos dieselbe Datei, wenn
229 @code{/home/wfs/special/###.mac} in der Liste @code{file_search_maxima}
233 file_search ("/home/wfs/special/zeta.mac");
234 file_search ("zeta.mac");
235 file_search ("zeta");
238 @code{file_search(@var{filename}, @var{pathlist})} sucht nur in den
239 Verzeichnissen @var{pathlist}. Das Argument @var{pathlist} @"uberschreibt die
240 Standardsuchverzeichnisse. Auch ein einzelnes Verzeichnis muss als eine Liste
243 Die Standardsuchverzeichnisse k@"onnen modifiziert werden. Siehe dazu auch
244 @mrefdot{file_search_maxima}
246 @code{file_search} wird von der Funktion @mref{load} mit den Verzeichnislisten
247 @code{file_search_maxima} und @code{file_search_lisp} aufgerufen.
250 @c --- 09.11.2010 DK -----------------------------------------------------------
251 @anchor{file_search_maxima}
252 @anchor{file_search_lisp}
253 @anchor{file_search_demo}
254 @anchor{file_search_usage}
255 @anchor{file_search_tests}
256 @defvr {Optionsvariable} file_search_maxima
257 @defvrx {Optionsvariable} file_search_lisp
258 @defvrx {Optionsvariable} file_search_demo
259 @defvrx {Optionsvariable} file_search_usage
260 @defvrx {Optionsvariable} file_search_tests
262 Diese Optionsvariablen bezeichnen Listen mit Verzeichnissen, die von Funktionen
263 wie @mref{load} und @mref{demo} durchsucht werden, um eine Datei zu finden. Die
264 Standardwerte bezeichnen verschiedene Verzeichnisse der Maxima-Installation.
266 Diese Variablen k@"onnen modifiziert werden, indem die Standardwerte ersetzt
267 oder weitere Verzeichnisse angeh@"angt werden. Zum Beispiel wird im Folgenden
268 der Standardwert der Optionsvariablen @code{file_search_maxima} ersetzt:
271 file_search_maxima: ["/usr/local/foo/###.mac",
272 "/usr/local/bar/###.mac"]$
275 In diesem Beispiel werden zwei weitere Verzeichnisse zu der Optionsvariablen
276 @code{file_search_maxima} hinzugef@"ugt:
279 file_search_maxima: append (file_search_maxima,
280 ["/usr/local/foo/###.mac", "/usr/local/bar/###.mac"])$
283 Soll eine erweiterte Liste der Suchverzeichnisse nach jedem Start von Maxima
284 zur Verf@"ugung stehen, kann das obige Kommando in die Datei
285 @code{maxima-init.mac} aufgenommen werden.
287 Mehrere Dateiendungen und Pfade k@"onnen mit Wildcard-Konstruktionen
288 spezifiziert werden. Eine Zeichenkette @code{###} wird durch einen Dateinamen
289 ersetzt. Werden mehrere Zeichenketten durch Kommata getrennt und mit
290 geschweiften Klammern angegeben wie zum Beispiel @code{@{foo, bar, baz@}},
291 expandiert die Liste in mehrere Zeichenketten. Das folgende Beispiel expandiert
295 "/home/@{wfs,gcj@}/###.@{lisp,mac@}"
298 in @code{/home/wfs/neumann.lisp}, @code{/home/gcj/neumann.lisp},
299 @code{/home/wfs/neumann.mac} und @code{/home/gcj/neumann.mac}.
302 @c --- 19.04.2011 DK -----------------------------------------------------------
304 @deffn {Funktion} file_type (@var{filename})
306 Gibt eine Vermutung @"uber den Typ der Datei @var{filename} zur@"uck. Es
307 wird nur die Dateiendung betrachtet.
309 Die R@"uckgabe ist das Symbol @code{maxima} oder @code{lisp}, wenn die
310 Dateiendung einen der Werte der Optionsvariablen @mref{file_type_maxima} oder
311 der Optionsvariablen @mref{file_type_lisp} entspricht. Ansonsten ist die
312 R@"uckgabe das Symbol @code{object}.
314 Siehe auch die Funktion @mrefdot{pathname_type}
317 @c --- 19.04.2011 DK -----------------------------------------------------------
318 @anchor{file_type_lisp}
319 @defvr {Optionsvariable} file_type_lisp
320 Standardwert: @code{[l, lsp, lisp]}
322 Die Optionsvariable @code{file_type_lisp} enth@"alt die Dateiendungen, die
323 Maxima als die Bezeichnung f@"ur eine Lisp-Datei annimmt.
325 Siehe auch die Funktion @mrefdot{file_type}
328 @c --- 19.04.2011 DK -----------------------------------------------------------
329 @anchor{file_type_maxima}
330 @defvr {Optionsvariable} file_type_maxima
331 Standardwert: @code{[mac, mc, demo, dem, dm1, dm2, dm3, dmt]}
333 Die Optionsvariable @code{file_type_maxima} enth@"alt die Dateiendungen, die
334 Maxima als die Bezeichnung f@"ur eine Maxima-Datei annimmt.
336 Siehe auch die Funktion @mrefdot{file_type}
339 @c --- 28.08.2010 DK -----------------------------------------------------------
341 @deffn {Funktion} load (@var{filename})
343 Wertet die Ausdr@"ucke in der Datei @var{filename} aus, wodurch die Variablen,
344 Funktionen und andere Objekte in Maxima geladen werden. Alle bisher zugewiesen
345 Variablen und Definitionen werden @"uberschrieben. Um die Datei zu finden, wird
346 von @code{load} die Funktion @mref{file_search} mit den Verzeichnislisten
347 @mref{file_search_maxima} und @mref{file_search_lisp} aufgerufen. Ist
348 @code{load} erfolgreich, wird der Dateiname zur@"uckgegeben. Ansonsten gibt
349 @code{load} eine Fehlermeldung aus.
351 @code{load} verarbeitet Dateien mit Lisp-Code oder Maxima-Code. Dateien, die
352 mit den Funktionen @mrefcomma{save} @mref{translate_file} und
353 @mref{compile_file} erstellt wurden, enthalten Lisp-Code. Dateien, die mit
354 @mref{stringout} erstellt wurden, enthalten Maxima-Code. Die Ausgabedateien
355 dieser Funktionen k@"onnen mit @code{load} geladen werden. @code{load} ruft die
356 Funktion @mref{loadfile} auf, um Lisp-Dateien und @mref{batchload} auf, um
357 Maxima-Da@-tei@-en zu verarbeiten.
359 @code{load} erkennt keine @code{:lisp}-Unterbrechungskommandos in
360 Maxima-Dateien. Die Systemvariablen @mrefcomma{_} @mref{__} und @mref{%} und
361 die Funktion @mref{%th} behalten jeweils ihren letzten Wert vor dem Aufruf von
364 Siehe auch die Funktionen @mrefcomma{loadfile} @mrefcomma{batch}
365 @mref{batchload} und @mrefdot{demo} @code{loadfile} verarbeitet
366 Lisp-Da@-tei@-en. @code{batch}, @code{batchload} und @code{demo} verarbeiten
369 Siehe @mref{file_search} f@"ur mehr Informationen, wie Maxima Dateien in
370 Verzeichnissen findet. @code{load} wertet die Argumente aus.
373 @c --- 09.11.2010 DK -----------------------------------------------------------
374 @anchor{load_pathname}
375 @defvr {Systemvariable} load_pathname
376 Standardwert: @code{false}
378 Wird eine Datei mit den Funktionen @mrefcomma{load} @mref{loadfile} oder
379 @mref{batchload} geladen, enth@"alt die Systemvariable @code{load_pathname}
380 den Namen der Datei. Der Wert der Systemvariablen kann in der Datei, die
381 geladen wird, ausgelesen werden.
385 Ist eine Batch-Datei mit den Namen @code{test.mac} in dem Verzeichnis
387 "/home/dieter/workspace/mymaxima/temp/"
389 abgelegt und enth@"alt die Datei die folgenden Befehle
392 print("The value of load_pathname is: ", load_pathname)$
393 print("End of batchfile")$
396 dann wird das Folgende ausgegeben:
399 (%i1) load("/home/dieter/workspace/mymaxima/temp/test.mac")$
400 The value of load_pathname is:
401 /home/dieter/workspace/mymaxima/temp/test.mac
406 @c --- 09.11.2010 DK -----------------------------------------------------------
408 @deffn {Funktion} loadfile (@var{filename})
410 L@"adt die Datei @var{filename} und wertet die Lisp-Ausdr@"ucke in der Datei
411 aus. @code{filename} ruft nicht @mref{file_search} auf, um eine Datei zu
412 finden. Daher muss @code{filename} ein voll@-st@"an@-di@-ger Dateiname sein.
414 @code{loadfile} kann Dateien verarbeiten, die mit den Funktionen
415 @mrefcomma{save} @mref{translate_file} und @mref{compile_file} erzeugt wurden.
418 @c --- 09.11.2010 DK -----------------------------------------------------------
420 @defvr {Optionsvariable} loadprint
421 Standardwert: @code{true}
423 @code{loadprint} kontrolliert, ob Meldungen ausgegeben werden, wenn eine Datei
427 @item Hat @code{loadprint} den Wert @code{true}, wird immer eine Meldung
429 @item Hat @code{loadprint} den Wert @code{'loadfile}, wird eine Meldung
430 ausgegeben, wenn die Datei mit der Funktion @mref{loadfile} geladen wird.
431 @item Hat @code{loadprint} den Wert @code{'autoload}, wird eine Meldung
432 ausgegeben, wenn eine Datei automatisch geladen wird.
433 @item Hat @code{loadprint} den Wert @code{false}, werden keine Meldungen beim
434 Laden von Dateien ausgegeben.
438 @c -----------------------------------------------------------------------------
439 @anchor{pathname_directory}
440 @anchor{pathname_name}
441 @anchor{pathname_type}
442 @deffn {Funktion} pathname_directory (@var{pathname})
443 @deffnx {Funktion} pathname_name (@var{pathname})
444 @deffnx {Funktion} pathname_type (@var{pathname})
446 Diese Funktionen geben die Bestandteile eines Pfadnamens zur@"uck.
451 (%i1) pathname_directory("/home/dieter/maxima/changelog.txt");
452 (%o1) /home/dieter/maxima/
453 (%i2) pathname_name("/home/dieter/maxima/changelog.txt");
455 (%i3) pathname_type("/home/dieter/maxima/changelog.txt");
460 @c --- 09.11.2010 DK -----------------------------------------------------------
462 @deffn {Funktion} printfile (@var{path})
464 Druckt eine Datei mit dem Namen @var{path} auf der Konsole aus. @var{path} kann
465 ein Symbol oder eine Zeichenkette sein. @code{printfile} sucht die Datei in den
466 Verzeichnissen, die in der Optionsvariablen @mref{file_search_usage} enthalten
469 @code{printfile} gibt @var{path} zur@"uck, wenn die Datei existiert.
472 @c --- 11.11.2010 DK -----------------------------------------------------------
474 @deffn {Funktion} save (@var{filename}, @var{name_1}, @var{name_2}, @var{name_3}, @dots{})
475 @deffnx {Funktion} save (@var{filename}, values, functions, labels, @dots{})
476 @deffnx {Funktion} save (@var{filename}, [@var{m}, @var{n}])
477 @deffnx {Funktion} save (@var{filename}, @var{name_1}=@var{expr_1}, @dots{})
478 @deffnx {Funktion} save (@var{filename}, all)
479 @deffnx {Funktion} save (@var{filename}, @var{name_1}=@var{expr_1}, @var{name_2}=@var{expr_2}, @dots{})
481 Speichert die aktuellen Werte von @var{name_1}, @var{name_2}, @var{name_3},
482 @dots{}, in die Datei @var{filename}. Die Argumente sind die Namen von
483 Variablen, Funktionen oder anderen Objekten. Argumente, die keinen Wert haben,
484 werden ignoriert. @code{save} gibt den Namen der Datei @code{filename}
487 @code{save} speichert die Daten in einem Lisp-Format. Die gespeicherten Daten
488 k@"onnen mit dem Kommando @code{load(@var{filename})} zur@"uckgelesen werden.
491 Die Optionsvariable @mref{file_output_append} kontrolliert, ob @code{save} die
492 Daten an die Ausgabedatei anh@"angt, wenn diese bereits existiert, oder die
493 Ausgabedatei zuvor l@"oscht. Hat @code{file_output_append} den Wert
494 @code{true}, werden die Daten angeh@"angt. Ansonsten wird die Datei gel@"oscht
495 und neu angelegt, wenn diese bereits existiert. Existiert die Ausgabedatei
496 noch nicht, wird diese angelegt.
498 @code{save(@var{filename}, values, functions, labels, ...)} speichert die
499 Werte aller Ein@-tr@"a@-ge der Listen @code{values}, @code{functions},
500 @code{labels}, u.s.w. in die Ausgabedatei. Es kann jede der vorhandenen
501 Informationslisten, die in der Systemvariablen @code{infolists} enthalten ist,
502 als Argument @"ubergeben werden. @code{values} enth@"alt zum Beispiel alle vom
503 Nutzer definierten Variablen.
505 @code{save(@var{filename}, [@var{m}, @var{n}])} speichert die Werte der Eingabe-
506 und Ausgabemarken von @var{m} bis @var{n}. @var{m} und @var{n} m@"ussen ganze
507 Zahlen sein. Die Eingabe- und Ausgabemarken k@"onnen auch einzeln gespeichert
508 werden, zum Beispiel mit dem Kommando @code{save("foo.1", %i42, %o42)}.
509 @code{save(@var{filename}, labels)} speichert alle Eingabe- und Ausgabemarken.
510 Beim Zur@"ucklesen der Marken werden vorhandene Werte @"uberschrieben.
512 @code{save(@var{filename}, @var{name_1} = @var{expr_1}, @var{name_2} =
513 @var{expr_2}, ...)} speichert die Werte @var{expr_1}, @var{expr_2}, @dots{},
514 unter den Namen @var{name_1}, @var{name_2}, @dots{} ab. Dies kann n@"utz@-lich
515 sein, um zum Beispiel die Werte von Marken unter einem neuen Namen
516 abzuspeichern. Die rechte Seite der Gleichungen kann ein beliebiger
517 ausgewerteter Ausdruck sein. Die neuen Namen werden der aktuellen Sitzung nicht
518 hinzugef@"ugt und nur in der Ausgabedatei gespeichert.
520 Die verschiedenen M@"oglichkeiten der Funktion @code{save}, k@"onnen
521 miteinander kombiniert werden. Das Kommando
522 @code{save(@var{filename}, aa, bb, cc=42, functions, [11,17])} ist daf@"ur ein
525 @code{save(@var{filename}, all)} speichert den aktuellen Zustand von Maxima
526 in eine Ausgabedatei. Eingeschlossen sind alle nutzerdefinierten Variablen,
527 Funktionen oder Arrays, einschlie@ss{}lich automatischer Definitionen. Die
528 gespeicherten Daten enthalten auch die Werte von ge@"anderten System- oder
529 Optionsvariablen. Siehe dazu auch @mrefdot{myoptions}
531 @code{save} wertet das Argument @var{filename} aus. Alle anderen Argumente
532 werden nicht ausgewertet.
535 @c --- 11.11.2010 DK -----------------------------------------------------------
537 @deffn {Funktion} stringout (@var{filename}, @var{expr_1}, @var{expr_2}, @var{expr_3}, @dots{})
538 @deffnx {Funktion} stringout (@var{filename}, [@var{m}, @var{n}])
539 @deffnx {Funktion} stringout (@var{filename}, input)
540 @deffnx {Funktion} stringout (@var{filename}, functions)
541 @deffnx {Funktion} stringout (@var{filename}, values)
543 @code{stringout} schreibt Ausdr@"ucke in einem Format in eine Datei, dass
544 identisch mit dem Format der Eingabe ist. Die Datei kann als Eingabedatei f@"ur
545 die Funktionen @mref{batch} oder @mref{demo} genutzt werden. Sie kann mit
546 einem Texteditor f@"ur jeden Zweck editiert werden. @code{stringout} kann
547 ausgef@"uhrt werden, wenn das Kommando @mref{writefile} aktiv ist.
549 Die Optionsvariable @mref{file_output_append} kontrolliert, ob @code{stringout}
550 die Daten an die Ausgabedatei anh@"angt, wenn diese bereits existiert oder die
551 Ausgabedatei zuvor l@"oscht. Hat @code{file_output_append} den Wert
552 @code{true}, werden die Daten angeh@"angt, wenn die Datei bereits existiert.
553 Ansonsten wird die Datei gel@"oscht und neu angelegt. Existiert die
554 Ausgabedatei noch nicht, wird diese angelegt.
556 Die allgemeine Form von @code{stringout} schreibt die Werte eines oder mehrerer
557 Ausdr@"ucke in die Ausgabedatei. Ist ein Ausdruck eine Variable, wird nur der
558 Wert der Variablen, nicht jedoch der Name der Variablen in die Ausgabedatei
559 geschrieben. Ein n@"utzlicher Spezialfall ist, dass die Werte der Eingabe-
560 und Ausgabemarken (@code{%i1}, @code{%i2}, @code{%i3}, @dots{} und @code{%o1},
561 @code{%o2}, @code{%o3}, @dots{}) in die Datei geschrieben werden k@"onnen.
563 Hat die Optionsvariable @code{grind} den Wert @code{true}, wird die Ausgabe
564 im Format der Funktion @mref{grind} in die Ausgabedatei geschrieben. Ansonsten
565 wird das Format der Funktion @mref{string} f@"ur die Ausgabe genutzt.
567 @code{stringout(@var{filename}, [@var{m}, @var{n}])} schreibt die Werte aller
568 Eingabemarken von @var{m} bis @var{n} in die Ausgabedatei.
569 @code{stringout(@var{filename}, input)} schreibt alle Eingabemarken in die
570 Ausgabedatei. @code{stringout(@var{filename}, functions)} schreibt alle vom
571 Nutzer definierten Funktionen, die in der Informationsliste @code{functions}
572 enthalten sind, in die Ausgabedatei.
574 @code{stringout(@var{filename}, values)} schreibt alle benuzterdefinierten
575 Variablen, die in der Informationsliste @code{values} enthalten sind, in die
576 Ausgabedatei. Die Variablen werden als eine Zuweisung, mit dem Namen der
577 Variablen, dem Zuweisungsoperator @code{:} und dem Wert in die Datei
578 geschrieben. Im Unterschied dazu, speichert die allgemeine Form der Funktion
579 @code{stringout} die Variablen nicht als Zuweisung.
582 @c --- 28.08.2010 DK -----------------------------------------------------------
584 @deffn {Funktion} with_stdout (@var{f}, @var{expr_1}, @var{expr_2}, @var{expr_3}, @dots{})
585 @deffnx {Funktion} with_stdout (@var{s}, @var{expr_1}, @var{expr_2}, @var{expr_3}, @dots{})
587 @code{with_stdout} wertet Argumente @var{expr_1}, @var{expr_2}, @var{expr_3},
588 @dots{} aus und schreibt die Ergebnisse der Auswertung in die Ausgabedatei
589 @code{f} oder in den Stream @code{s}. Die Ergebnisse werden nicht auf der
592 Die Optionsvariable @code{file_output_append} bestimmt, ob @code{with_stdout}
593 die Daten an die Ausgabedatei anh@"angt oder die Ausgabedatei zuvor l@"oscht.
594 Hat @code{file_output_append} den Wert @code{true}, werden die Daten
595 angeh@"angt. Ansonsten wird die Datei gel@"oscht und neu angelegt. Existiert
596 die Ausgabedatei noch nicht, wird diese angelegt.
598 @code{with_stout} gibt das Ergebnis des letzten Argumentes zur@"uck.
600 Siehe auch @mrefdot{writefile}
605 (%i1) with_stdout ("tmp.out", for i:5 thru 10 do
606 print (i, "! yields", i!))$
607 (%i2) printfile ("tmp.out")$
617 @c --- 03.09.2010 DK -----------------------------------------------------------
619 @deffn {Funktion} writefile (@var{filename})
621 Startet eine Aufzeichnung aller Ein- und Ausgaben der Konsole. Die Ein- und
622 Ausgaben werden in die Datei @var{filename} geschrieben.
624 Die Ausgabedatei kann von Maxima nicht wieder zur@"uckgelesen werden. Um ein
625 Datei zu erzeugen, die von Maxima zur@"uckgelesen werden kann, siehe die
626 Funktionen @mref{save} und @mrefdot{stringout} @code{save} speichert
627 Ausdr@"ucke in einem Lisp-Format und @code{stringout} in einem Maxima-Format.
629 Die Reaktion der Funktion @code{writefile} f@"ur den Fall, dass die Ausgabedatei
630 bereits existiert, h@"angt von der Lisp-Implementation ab. Die Ausgabedatei
631 kann zur@"uckgesetzt werden oder die Daten werden angeh@"angt. Die Funktion
632 @mref{appendfile} h@"angt die Daten immer an eine existierende Datei an.
634 Um eine Aufzeichnung ohne Textausgaben von Funktionen zu erhalten, kann
635 @code{writefile} nach der Ausf@"uhrung von @code{playback} ausgef@"uhrt werden.
636 @code{playback} gibt alle vorhergenden Eingabe- und Ausgabemarken aus, jedoch
637 nicht sonstige Textausgaben von Maxima-Funktionen.
639 Mit @mref{closefile} wird die Aufzeichnung beendet.
642 @c -----------------------------------------------------------------------------
643 @node Funktionen und Variablen f@"ur die TeX-Ausgabe, Funktionen und Variablen f@"ur die Fortran-Ausgabe, Funktionen und Variablen f@"ur die Eingabe und Ausgabe, Eingabe und Ausgabe
644 @section Funktionen und Variablen f@"ur die TeX-Ausgabe
645 @c -----------------------------------------------------------------------------
647 @c -----------------------------------------------------------------------------
649 @deffn {Function} tex (@var{expr})
650 @deffnx {Function} tex (@var{expr}, @var{destination})
651 @deffnx {Function} tex (@var{expr}, false)
652 @deffnx {Function} tex (@var{label})
653 @deffnx {Function} tex (@var{label}, @var{destination})
654 @deffnx {Function} tex (@var{label}, false)
656 Prints a representation of an expression suitable for the TeX document
657 preparation system. The result is a fragment of a document, which can be copied
658 into a larger document but not processed by itself.
660 @code{tex (@var{expr})} prints a TeX representation of @var{expr} on the
663 @code{tex (@var{label})} prints a TeX representation of the expression named by
664 @var{label} and assigns it an equation label (to be displayed to the left of
665 the expression). The TeX equation label is the same as the Maxima label.
667 @var{destination} may be an output stream or file name. When @var{destination}
668 is a file name, @code{tex} appends its output to the file. The functions
669 @code{openw} and @code{opena} create output streams.
671 @code{tex (@var{expr}, false)} and @code{tex (@var{label}, false)} return their
672 TeX output as a string.
674 @code{tex} evaluates its first argument after testing it to see if it is a
675 label. Quote-quote @code{''} forces evaluation of the argument, thereby
676 defeating the test and preventing the label.
678 See also @code{texput}.
683 (%i1) integrate (1/(1+x^3), x);
686 log(x - x + 1) sqrt(3) log(x + 1)
687 (%o1) - --------------- + ------------- + ----------
690 $$-@{@{\log \left(x^2-x+1\right)@}\over@{6@}@}+@{@{\arctan \left(@{@{2\,x-1
691 @}\over@{\sqrt@{3@}@}@}\right)@}\over@{\sqrt@{3@}@}@}+@{@{\log \left(x+1\right)
692 @}\over@{3@}@}\leqno@{\tt (\%o1)@}$$
694 (%i3) tex (integrate (sin(x), x));
697 (%i4) tex (%o1, "foo.tex");
701 @code{tex (@var{expr}, false)} returns its TeX output as a string.
704 (%i1) S : tex (x * y * z, false);
711 @c -----------------------------------------------------------------------------
713 @deffn {Function} tex1 (@var{e})
715 Returns a string which represents the TeX output for the expressions @var{e}.
716 The TeX output is not enclosed in delimiters for an equation or any other
722 (%i1) tex1 (sin(x) + cos(x));
727 @c -----------------------------------------------------------------------------
729 @deffn {Function} texput (@var{a}, @var{s})
730 @deffnx {Function} texput (@var{a}, @var{f})
731 @deffnx {Function} texput (@var{a}, @var{s}, @var{operator_type})
732 @deffnx {Function} texput (@var{a}, [@var{s_1}, @var{s_2}], matchfix)
733 @deffnx {Function} texput (@var{a}, [@var{s_1}, @var{s_2}, @var{s_3}], matchfix)
735 Assign the TeX output for the atom @var{a}, which can be a symbol or the name
738 @code{texput (@var{a}, @var{s})} causes the @code{tex} function to interpolate
739 the string @var{s} into the TeX output in place of @var{a}.
741 @code{texput (@var{a}, @var{f})} causes the @code{tex} function to call the
742 function @var{f} to generate TeX output. @var{f} must accept one argument,
743 which is an expression which has operator @var{a}, and must return a string
744 (the TeX output). @var{f} may call @code{tex1} to generate TeX output for the
745 arguments of the input expression.
747 @code{texput (@var{a}, @var{s}, @var{operator_type})}, where @var{operator_type}
748 is @code{prefix}, @code{infix}, @code{postfix}, @code{nary}, or @code{nofix},
749 causes the @code{tex} function to interpolate @var{s} into the TeX output in
750 place of @var{a}, and to place the interpolated text in the appropriate
753 @code{texput (@var{a}, [@var{s_1}, @var{s_2}], matchfix)} causes the @code{tex}
754 function to interpolate @var{s_1} and @var{s_2} into the TeX output on either
755 side of the arguments of @var{a}. The arguments (if more than one) are separated
758 @code{texput (@var{a}, [@var{s_1}, @var{s_2}, @var{s_3}], matchfix)} causes the
759 @code{tex} function to interpolate @var{s_1} and @var{s_2} into the TeX output
760 on either side of the arguments of @var{a}, with @var{s_3} separating the
765 Assign TeX output for a variable.
768 (%i1) texput (me,"\\mu_e");
775 Assign TeX output for an ordinary function (not an operator).
778 (%i1) texput (lcm, "\\mathrm@{lcm@}");
780 (%i2) tex (lcm (a, b));
781 $$\mathrm@{lcm@}\left(a , b\right)$$
785 Call a function to generate TeX output.
788 (%i1) texfoo (e) := block ([a, b], [a, b] : args (e),
789 concat ("\\left[\\stackrel@{", tex1 (b),
790 "@}@{", tex1 (a), "@}\\right]"))$
791 (%i2) texput (foo, texfoo);
793 (%i3) tex (foo (2^x, %pi));
794 $$\left[\stackrel@{\pi@}@{2^@{x@}@}\right]$$
798 Assign TeX output for a prefix operator.
801 (%i1) prefix ("grad");
803 (%i2) texput ("grad", " \\nabla ", prefix);
810 Assign TeX output for an infix operator.
815 (%i2) texput ("~", " \\times ", infix);
822 Assign TeX output for a postfix operator.
825 (%i1) postfix ("##");
827 (%i2) texput ("##", "!!", postfix);
834 Assign TeX output for a nary operator.
839 (%i2) texput ("@@@@", " \\circ ", nary);
841 (%i3) tex (a @@@@ b @@@@ c @@@@ d);
842 $$a \circ b \circ c \circ d$$
846 Assign TeX output for a nofix operator.
851 (%i2) texput ("foo", "\\mathsc@{foo@}", nofix);
858 Assign TeX output for a matchfix operator.
861 (%i1) matchfix ("<<", ">>");
863 (%i2) texput ("<<", [" \\langle ", " \\rangle "], matchfix);
864 (%o2) [ \langle , \rangle ]
866 $$ \langle a \rangle $$
868 (%i4) tex (<<a, b>>);
869 $$ \langle a , b \rangle $$
871 (%i5) texput ("<<", [" \\langle ", " \\rangle ", " \\, | \\,"],
873 (%o5) [ \langle , \rangle , \, | \,]
875 $$ \langle a \rangle $$
877 (%i7) tex (<<a, b>>);
878 $$ \langle a \, | \,b \rangle $$
883 @c -----------------------------------------------------------------------------
884 @anchor{get_tex_enviroment}
885 @anchor{set_tex_enviroment}
886 @deffn {Function} get_tex_environment (@var{op})
887 @deffnx {Function} set_tex_environment (@var{op}, @var{before}, @var{after})
889 Customize the TeX environment output by @code{tex}.
890 As maintained by these functions, the TeX environment comprises two strings:
891 one is printed before any other TeX output, and the other is printed after.
893 Only the TeX environment of the top-level operator in an expression
894 is output; TeX environments associated with other operators are ignored.
896 @code{get_tex_environment} returns the TeX enviroment which is applied
897 to the operator @var{op}; returns the default if no other environment
900 @code{set_tex_environment} assigns the TeX environment for the operator
906 (%i1) get_tex_environment (":=");
912 (%i2) tex (f (x) := 1 - x);
919 (%i3) set_tex_environment (":=", "$$", "$$");
921 (%i4) tex (f (x) := 1 - x);
927 @c -----------------------------------------------------------------------------
928 @anchor{get_tex_enviroment_default}
929 @anchor{set_tex_enviroment_default}
930 @deffn {Function} get_tex_environment_default ()
931 @deffnx {Function} set_tex_environment_default (@var{before}, @var{after})
933 Customize the TeX environment output by @code{tex}.
934 As maintained by these functions, the TeX environment comprises two strings:
935 one is printed before any other TeX output, and the other is printed after.
937 @code{get_tex_environment_default} returns the TeX environment which is
938 applied to expressions for which the top-level operator has no
939 specific TeX environment (as assigned by @code{set_tex_environment}).
941 @code{set_tex_environment_default} assigns the default TeX environment.
946 (%i1) get_tex_environment_default ();
948 (%i2) tex (f(x) + g(x));
949 $$g\left(x\right)+f\left(x\right)$$
951 (%i3) set_tex_environment_default ("\\begin@{equation@}
954 (%o3) [\begin@{equation@}
957 (%i4) tex (f(x) + g(x));
959 g\left(x\right)+f\left(x\right)
965 @c -----------------------------------------------------------------------------
966 @node Funktionen und Variablen f@"ur die Fortran-Ausgabe, , Funktionen und Variablen f@"ur die TeX-Ausgabe, Eingabe und Ausgabe
967 @section Funktionen und Variablen f@"ur die Fortran-Ausgabe
968 @c -----------------------------------------------------------------------------
970 @c -----------------------------------------------------------------------------
971 @defvr {Option variable} fortindent
972 Default value: @code{0}
974 @code{fortindent} controls the left margin indentation of
975 expressions printed out by the @mref{fortran} command. @code{0} gives normal
976 printout (i.e., 6 spaces), and positive values will causes the
977 expressions to be printed farther to the right.
980 @c -----------------------------------------------------------------------------
982 @deffn {Function} fortran (@var{expr})
984 Prints @var{expr} as a Fortran statement.
985 The output line is indented with spaces.
986 If the line is too long, @code{fortran} prints continuation lines.
987 @code{fortran} prints the exponentiation operator @code{^} as @code{**},
988 and prints a complex number @code{a + b %i} in the form @code{(a,b)}.
990 @var{expr} may be an equation. If so, @code{fortran} prints an assignment
991 statement, assigning the right-hand side of the equation to the left-hand side.
992 In particular, if the right-hand side of @var{expr} is the name of a matrix,
993 then @code{fortran} prints an assignment statement for each element of the
996 If @var{expr} is not something recognized by @code{fortran},
997 the expression is printed in @mref{grind} format without complaint.
998 @code{fortran} does not know about lists, arrays, or functions.
1000 @code{fortindent} controls the left margin of the printed lines.
1001 @code{0} is the normal margin (i.e., indented 6 spaces). Increasing
1002 @code{fortindent} causes expressions to be printed further to the right.
1004 When @mref{fortspaces} is @code{true}, @code{fortran} fills out
1005 each printed line with spaces to 80 columns.
1007 @code{fortran} evaluates its arguments;
1008 quoting an argument defeats evaluation.
1009 @code{fortran} always returns @code{done}.
1011 See also the function @mxref{function_f90, f90} for printing one or more
1012 expressions as a Fortran 90 program.
1017 (%i1) expr: (a + b)^12$
1018 (%i2) fortran (expr);
1021 (%i3) fortran ('x=expr);
1024 (%i4) fortran ('x=expand (expr));
1025 x = b**12+12*a*b**11+66*a**2*b**10+220*a**3*b**9+495*a**4*b**8+792
1026 1 *a**5*b**7+924*a**6*b**6+792*a**7*b**5+495*a**8*b**4+220*a**9*b
1027 2 **3+66*a**10*b**2+12*a**11*b+a**12
1029 (%i5) fortran ('x=7+5*%i);
1032 (%i6) fortran ('x=[1,2,3,4]);
1042 @c -----------------------------------------------------------------------------
1044 @defvr {Option variable} fortspaces
1045 Default value: @code{false}
1047 When @code{fortspaces} is @code{true}, @code{fortran} fills out
1048 each printed line with spaces to 80 columns.
1051 @c --- End of Input.de.texi ----------------------------------------------------