4 * Functions and Variables for File Input and Output::
7 @c -----------------------------------------------------------------------------
8 @node Comments, Files, File Input and Output, File Input and Output
10 @c -----------------------------------------------------------------------------
12 Maximaの入力の中のコメントは、@code{/*}と@code{*/}の間の任意のテキストです。
14 Maximaのパーサは、コメントを、入力外リームでのトークンを見つけるための空白として扱います;
16 @code{a/* foo */b}のような入力は、1つのトークン@code{ab}ではなく、2つのトークン、@code{a}と@code{b}を含みます。
17 そうでなければ、Maximaはコメントを無視します;
18 コメントの中身も位置もパースされた入力式に残りません。
20 コメントは任意の深さに入れ子にすることができます。
21 @code{/*}と@code{*/}の区切り記号はマッチングペアを形作ります。
22 @code{/*}の数は@code{*/}と同じでなければいけません。
27 @c /* aa is a variable of interest */ aa : 1234;
28 @c /* Value of bb depends on aa */ bb : aa^2;
29 @c /* User-defined infix operator */ infix ("b");
30 @c /* Parses same as a b c, not abc */ a/* foo */b/* bar */c;
31 @c /* Comments /* can be nested /* to any depth */ */ */ 1 + xyz;
34 (%i1) /* aa is a variable of interest */ aa : 1234;
36 (%i2) /* Value of bb depends on aa */ bb : aa^2;
38 (%i3) /* User-defined infix operator */ infix ("b");
40 (%i4) /* Parses same as a b c, not abc */ a/* foo */b/* bar */c;
42 (%i5) /* Comments /* can be nested /* to any depth */ */ */ 1 + xyz;
50 @c -----------------------------------------------------------------------------
51 @node Files, Functions and Variables for File Input and Output, Comments, File Input and Output
53 @c -----------------------------------------------------------------------------
55 ファイルは、単に、データやテキスト含む、特別なストレージデバイスのある領域です。
56 ディスク上のファイルは、比喩的に「ディレクトリ」の中にグループ化されます。
70 ファイル名が@mref{plot2d}や@mref{save}、@mref{writefile}のような関数に渡され、
71 ファイル名がパスを含まない時、Maximaは現在のワーキングディレクトリにファイルを保存します。
72 現在のワーキングディレクトリはWindowsやLinuxのようなシステムと、インストールに依存します。
74 @c -----------------------------------------------------------------------------
75 @node Functions and Variables for File Input and Output, , Files, File Input and Output
76 @section Functions and Variables for File Input and Output
77 @c -----------------------------------------------------------------------------
79 @c -----------------------------------------------------------------------------
81 @deffn {関数} appendfile (@var{filename})
82 コンソールの筆記録を@var{filename}に追加します。
84 筆記録ファイルが、存在すれば、いつも追加されることを除いて、
85 @code{writefile}と同じです。
87 @mref{closefile}は、@code{appendfile}や@code{writefile}によって開かれた筆記録ファイルを閉じます。
90 @category{File output}
91 @category{Console interaction}
95 @c -----------------------------------------------------------------------------
97 @deffn {関数} batch (@var{filename})
98 @deffnx {関数} batch (@var{filename}, @code{option})
100 @code{batch(@var{filename})}はMaximaの式を@var{filename}から読み込み、評価します。
101 @code{batch}は、リスト@mref{file_search_maxima}の中で@var{filename}を検索します。
102 @mref{file_search}も参照してください。
104 @code{batch(@var{filename}, @code{demo})}は、
105 @code{demo(@var{filename})}ようなものです。
106 この場合、@code{batch}は、リスト@mref{file_search_demo}の中で
107 @var{filename}を検索します。
108 @mref{demo}を参照してください。
110 @code{batch(@var{filename}, @code{test})}は、
111 オプション@code{display_all=true}を付けた@code{run_testsuite}ようなものです。
113 @code{run_testsuite}のようにリスト@code{file_search_tests}ではなく、
114 リスト@code{file_search_maxima}の中で@var{filename}を検索します。
115 更に、@code{run_testsuite}はリスト@code{testsuite_files}の中にあるテストを実行します。
116 @code{batch}を使うと、どんなファイルもテストモードで実行することが可能です。
117 ファイルはリスト@code{file_search_maxima}の中であってもいいです。
118 これはテストファイルを書いている時に便利です。
120 @var{filename}は、一連のMaximaの式より成り、それぞれの式は、@code{;}もしくは@code{$}で終了します。
121 特殊変数@mref{%}と関数@mref{%th}は、ファイル内での前の結果を参照します。
122 ファイルは@code{:lisp}構成子を含むかもしれません。
123 ファイルの中の空白、タブ、改行は無視されます。
124 適した入力ファイルは、テキストエディタもしくは、@mref{stringout}関数で作ることができます。
126 @code{batch}は、それぞれの入力式を@var{filename}から読み込み、
130 入力ラベルは入力式に割り当てられ、出力ラベルは出力式に割り当てられます。
131 @code{batch}は、エラーがない限り、ファイルの中のすべての入力式を評価します。
132 もしユーザー入力が(例えば、@mref{asksign}や@mref{askinteger}によって)要求されたら、
133 @code{batch}は、ポーズして必要な入力を入手し、続けます。
135 @c CTRL-C BREAKS batch IN CMUCL, BUT CLISP (ALTHO IT SHOWS "User break")
136 @c KEEPS GOING !!! DON'T KNOW ABOUT GCL !!!
137 コンソールで@code{control-C}をタイプすることで、@code{batch}を停止させることが可能かもしれません。
138 @code{control-C}の効果は、基礎となるLispの実装に依存します。
140 @code{batch}にはいくつか用法があります。
142 エラーのないデモンストレーションを与えたり、
143 複雑な問題を解く時、人の考えを整理するのを助けたり。
145 @code{batch}は引数を評価します。
146 第二引数なしで呼び出されたり、オプション@code{demo}で呼び出された時、
147 @code{batch}は@code{filename}のパスを文字列として返します。
148 オプション@code{test}で呼び出された時、
149 戻り値は、空のリスト@code{[]}か、@var{filename}と失敗したテストの数を含むリストです。
151 @mref{load}, @mref{batchload}, @mref{demo}も参照してください。
154 @category{Session management}
155 @category{File input}
160 @c RECOMMEND CUTTING THIS ITEM, AS THE load SUBSUMES FUNCTIONALITY OF batchload
162 @c -----------------------------------------------------------------------------
164 @deffn {関数} batchload (@var{filename})
166 @var{filename}からMaximaの式を読み込み、評価します。
169 しかし、(@code{print}や@code{describe}が生成するような)プリント文の出力は表示されます。
171 特殊変数@mref{%}や関数@mref{%th}は、
172 ファイルの中の結果ではなく、対話インタープリタからの以前の結果を参照します。
173 ファイルは@code{:lisp}構成子を含むことはできません。
175 @code{batchload}は、@var{filename}のパスを文字列として返します。
176 @code{batchload}は引数を評価します。
178 @mref{batch}や@mref{load}も参照してください。
179 @c batchload APPEARS TO HAVE THE SAME EFFECT AS load. WHY NOT GET RID OF batchload ???
182 @category{Session management}
183 @category{File input}
187 @c -----------------------------------------------------------------------------
189 @deffn {関数} closefile ()
191 @mref{writefile}や@mref{appendfile}で開いたトランスクリプトファイルを閉じます。
194 @category{File output}
195 @category{Console interaction}
199 @c -----------------------------------------------------------------------------
200 @anchor{file_output_append}
201 @defvr {オプション変数} file_output_append
204 @code{file_output_append}は、
205 ファイル出力関数が出力ファイルに追加するか、ファイルを切り詰めるか決めます。
206 @code{file_output_append}が@code{true}の時、
207 ファイル出力関数は出力ファイルに追加します。
208 そうでなければ,出力ファイルは切り詰められます。
210 @mref{save}, @mref{stringout}, @mref{with_stdout}は、@code{file_output_append}を考慮します。
211 出力ファイルを書き出す他の関数は@code{file_output_append}を考慮しません。
212 特に、プロット感巣や変換関数は常に出力ファイルを切り詰め、
213 @mref{tex}や@mref{appendfile}はいつも追加します。
214 @c WHAT ABOUT WRITEFILE ??
217 @category{File output}
218 @category{Global flags}
225 @c -----------------------------------------------------------------------------
226 @anchor{filename_merge}
227 @deffn {関数} filename_merge (@var{path}, @var{filename})
229 @var{path}と@var{filename}から修正されたパスを構成します。
230 もし、@var{path}の最後の構成要素が形式@code{###.@var{something}}なら、
231 構成要素は、@code{@var{filename}.@var{something}}に置き換えられます。
232 そうでなければ、最後の構成要素は単に@var{filename}に置き換えられます。
237 @category{File input}
238 @category{File output}
242 @c -----------------------------------------------------------------------------
244 @deffn {関数} file_search (@var{filename})
245 @deffnx {関数} file_search (@var{filename}, @var{pathlist})
247 @code{file_search}は、ファイル@var{filename}を検索し、
248 もし見つかれば、(文字列として)ファイルへのパスを返します;
249 そうでなければ、@code{file_search}は@code{false}を返します。
250 @code{file_search (@var{filename})}は、
251 デフォルトのサーチディレクトリを検索します。
252 デフォルトのサーチディレクトリは、@mref{file_search_maxima},
253 @mref{file_search_lisp}, @mref{file_search_demo}変数によって指定されます。
256 名前を「ワイルドカード」ファイルサーチパターンにマッチさせようとする前に、
257 最初に、渡された実際の名前が存在するかチェックします。
258 ファイルサーチパターンに関連した@mref{file_search_maxima}を参照してください。
260 引数@var{filename}は、パスとファイル名、もしくは単にファイル名、もしくは、
261 もしファイルサーチディレクトリがファイルサーチパターンを含むなら、単にファイル名のベース(拡張子なし)、を取り得ます。
265 file_search ("/home/wfs/special/zeta.mac");
266 file_search ("zeta.mac");
267 file_search ("zeta");
270 ファイルが存在していて、@code{/home/wfs/special/###.mac}が@code{file_search_maxima}に中にあるという仮定の下で、上記すべては同じファイルを見つけます。
272 @code{file_search (@var{filename}, @var{pathlist})}は、
273 @var{pathlist}によって指定されたディレクトリの中だけを検索します。
274 ここで、@var{pathlist}は文字列のりすとです。
275 引数@var{pathlist}は、デフォルトの検索ディレクトリに取って代わります。
276 だから、もしパスリストが与えられたら、デフォルトの検索ディレクトリのいずれでもなく、@code{file_search}は指定されたところだけを検索します。
277 @var{pathlist}の中に1つのディレクトリだけしかない場合でさえ、まだ、
278 それは、要素1つのリストとして与えられなければいけません。
280 ユーザーはデフォルト検索ディレクトリを修正できます。
281 @mref{file_search_maxima}を参照してください。
283 @code{file_search}は、@code{file_search_maxima}と@mref{file_search_lisp}を
285 @mref{load}によって呼び出されます。
288 @category{File input}
293 @c -----------------------------------------------------------------------------
294 @anchor{file_search_maxima}
295 @anchor{file_search_lisp}
296 @anchor{file_search_demo}
297 @anchor{file_search_usage}
298 @anchor{file_search_tests}
299 @defvr {オプション変数} file_search_maxima
300 @defvrx {オプション変数} file_search_lisp
301 @defvrx {オプション変数} file_search_demo
302 @defvrx {オプション変数} file_search_usage
303 @defvrx {オプション変数} file_search_tests
305 これらの変数は、@mref{load}, @mref{demo}や他のいくつかのMaximaの関数が検索する
307 これらの変数のデフォルト値は、Maxima員ストレーションの様々なディレクトリを名指ししています。
310 デフォルト値を置き換えるか、ディレクトリを追加することで、
315 file_search_maxima: ["/usr/local/foo/###.mac",
316 "/usr/local/bar/###.mac"]$
319 は、@code{file_search_maxima}のデフォルト値を置き換える一方、
322 file_search_maxima: append (file_search_maxima,
323 ["/usr/local/foo/###.mac", "/usr/local/bar/###.mac"])$
327 ファイル@code{maxima-init.mac}に
328 Maximaが起動した時にファイル検索パスが自動的に割り当てられるような式を入れておくと便利かもしれません。
329 @ref{Introduction for Runtime Environment}も参照してください。
331 特別な「ワイルドカード」構造によって、ファイル名の拡張子やパスを多重にしてすることができます。
332 文字列@code{###}は、求められている名前に拡張される一方、
333 カーリ括弧@code{@{foo,bar,baz@}}で囲まれた、コンマで分離されたリストは多重文字列に拡張されます。
334 例えば、求められてる名前が@code{neumann}とすると、
337 "/home/@{wfs,gcj@}/###.@{lisp,mac@}"
341 は、@code{/home/wfs/neumann.lisp}, @code{/home/gcj/neumann.lisp},
342 @code{/home/wfs/neumann.mac}, @code{/home/gcj/neumann.mac}に展開されます。
346 @category{File input}
347 @category{Global variables}
351 @c -----------------------------------------------------------------------------
353 @deffn {関数} file_type (@var{filename})
355 @var{filename}の中身について、ファイル名拡張子を下に、推測を返します。
356 @var{filename}は、実際のファイルを参照する必要はありません;
357 ファイルを開いたり、中身を探索したりはしません。
359 戻り値はシンボルであり、@code{object}, @code{lisp}, @code{maxima}のいずれかです。
360 もし拡張子が@code{file_type_maxima}の中の値の1つと一致したら、
361 @code{file_type}は@code{maxima}を返します。
362 もし拡張子が"@code{file_type_lisp}の中の値の1つと一致したら、
363 @code{file_type}は@code{lisp}を返します。
364 上のいずれでもないなら、@code{file_type}は@code{object}を返します。
366 @mref{pathname_type}も参照してください。
368 デフォルト値に関しては、@mref{file_type_maxima}と@mref{file_type_lisp}を
375 @c ["test.lisp", "test.mac", "test.dem", "test.txt"]);
378 (%i2) map('file_type,
379 ["test.lisp", "test.mac", "test.dem", "test.txt"]);
380 (%o2) [lisp, maxima, maxima, object]
384 @category{File input}
388 @c -----------------------------------------------------------------------------
389 @anchor{file_type_lisp}
390 @defvr {オプション変数} file_type_lisp
391 デフォルト値: @code{[l, lsp, lisp]}
393 @code{file_type_lisp}は、
394 maximaがLispソースファイルの印として認識するファイル拡張子のリストです。
396 @mref{file_type}も参照してください。
399 @c -----------------------------------------------------------------------------
400 @anchor{file_type_maxima}
401 @defvr {オプション変数} file_type_maxima
402 デフォルト値: @code{[mac, mc, demo, dem, dm1, dm2, dm3, dmt]}
404 @code{file_type_maxima}は、
405 maximaがMaximaソースファイルの印として認識するファイル拡張子のリストです。
407 @mref{file_type}も参照してください。
410 @c -----------------------------------------------------------------------------
412 @deffn {関数} load (@var{filename})
414 @var{filename}の中の式を評価します。
415 そして、変数、関数、他のオブジェクトをMaximaにもたらします。
416 、@var{filename}から再生されたバインドは存在するオブジェクトのバインドを上書きします(clobber)。
418 @code{load}は、探索ディレクトリとして@code{file_search_maxima}と@code{file_search_lisp}を引数として@code{file_search}をコールします。
421 そうでなければ、@code{load}はエラーメッセージを出力します。
423 @code{load}は、LispコードでもMaximaコードでも等しく機能します。
424 @mref{save}, @mref{translate_file}, @mref{compile_file}―これらはLispコードを生成します―が生成したファイルはすべて@code{load}によって処理できます。
425 @code{load}は、Lispファイルをロードするために@code{loadfile}をコールし、
426 Maximaファイルをロードするために@mref{batchload}をコールします。
428 @code{load}は、Maximaファイルの中で@code{:lisp}構成子を認識しません。
429 @var{filename}を処理する時、
430 グローバル変数@code{_}, @code{__}, @code{%}, @code{%th}は、
431 @code{load}がコールされた時バインドされていた値を持ちます。
433 @mref{loadfile}, @mref{batch}, @mref{batchload}, @mref{demo}も参照してください。
434 @code{loadfile}はLispファイルを処理します;
435 @code{batch}, @code{batchload}, @code{demo}はMaximaファイルを処理します。
437 ファイル探索メカニズムについてもっと詳しいことは@mref{file_search}を参照してください。
439 @code{load}は引数を評価します。
442 @category{Session management}
443 @category{File input}
447 @c -----------------------------------------------------------------------------
448 @anchor{load_pathname}
449 @defvr {システム変数} load_pathname
452 関数@mref{load}や、@mref{loadfile}、@mref{batchload}を使ってファイルがロードされる時、
453 システム変数@code{load_pathname}は処理するファイルのパス名を示します。
455 変数@code{load_pathname}はロード中にファイルからアクセスすることができます。
461 @code{"/home/dieter/workspace/mymaxima/temp/"}に、以下のコマンドを含む
463 バッチファイル@code{test.mac}があるとしましょう。
466 print("The value of load_pathname is: ", load_pathname)$
467 print("End of batchfile")$
473 (%i1) load("/home/dieter/workspace/mymaxima/temp/test.mac")$
474 The value of load_pathname is:
475 /home/dieter/workspace/mymaxima/temp/test.mac
480 @category{File input}
484 @c RECOMMEND CUTTING THIS ITEM, AS THE load SUBSUMES FUNCTIONALITY OF loadfile
486 @c -----------------------------------------------------------------------------
488 @deffn {関数} loadfile (@var{filename})
490 @var{filename}の中のLisp式を評価します。
491 @code{loadfile}は、@code{file_search}を呼び出しません。
492 だから、@code{filename}はファイル拡張子とファイルを見つけるのに必要なパスも含まなければいけません。
494 @code{loadfile}は、@mref{save}, @mref{translate_file}, @mref{compile_file}によって生成されたファイルを処理できます。
495 ユーザーは、@code{loadfile}の代わりに@mref{load}を使うほうが便利だと気づくでしょう。
498 @category{Session management}
499 @category{File input}
503 @c loadprint DOESN'T EXACTLY WORK LIKE THIS, BUT IT HARDLY SEEMS WORTH FIXING
504 @c I GUESS THIS COULD BE UPDATED TO DESCRIBE THE WAY IT ACTUALLY WORKS
506 @c -----------------------------------------------------------------------------
508 @defvr {オプション変数} loadprint
511 @code{loadprint}は、ファイルがロードされた時、メッセージを表示するかどうか告げます。
515 @code{loadprint}が@code{true}の時, いつもメッセージを表示します。
517 @code{loadprint}が@code{'loadfile}の時, ファイルが関数@code{loadfile}によってロードされた時だけメッセージを表示します。
519 @code{loadprint}が@code{'autoload}の時、
520 ファイルが自動的にロードされた時だけメッセージを表示します。
521 @mref{setup_autoload}を参照してください。
523 @code{loadprint}が@code{false}の時, メッセージは決して表示されません。
527 @category{File input}
528 @category{Global flags}
532 @c STILL EXISTS, NEEDS CLARIFICATION !!!
534 @c -----------------------------------------------------------------------------
536 @defvr {オプション変数} packagefile
539 他の人が使うパッケージ(ファイル)を生成するために@mref{save}や@mref{translate}を使う
541 ファイルがロードされる時必要な場合を除いて、
542 Maximaの情報リスト(例えば、@mref{values}, @mref{functions})に情報が追加されることを抑制するために、@code{packagefile: true}を設定したいかもしれません。
544 ユーザーが自身のデータを追加した時ユーザーの方法では
546 これは、起こりうる名前衝突の問題を解決はしないことに注意してください。
547 このフラグは、パッケージファイルへの出力であるものに素直に影響することにも注意してください。
548 フラグを@code{true}に設定することは、
549 Maxima初期化ファイルを生成するにも役に立ちます。
552 @category{Translation flags and variables}
556 @c -----------------------------------------------------------------------------
557 @anchor{pathname_directory}
558 @anchor{pathname_name}
559 @anchor{pathname_type}
560 @deffn {関数} pathname_directory (@var{pathname})
561 @deffnx {関数} pathname_name (@var{pathname})
562 @deffnx {関数} pathname_type (@var{pathname})
564 これらの関数は@var{pathname}の構成要素を返します。
569 @c pathname_directory("/home/dieter/maxima/changelog.txt");
570 @c pathname_name("/home/dieter/maxima/changelog.txt");
571 @c pathname_type("/home/dieter/maxima/changelog.txt");
574 (%i1) pathname_directory("/home/dieter/maxima/changelog.txt");
575 (%o1) /home/dieter/maxima/
576 (%i2) pathname_name("/home/dieter/maxima/changelog.txt");
578 (%i3) pathname_type("/home/dieter/maxima/changelog.txt");
583 @category{File input}
587 @c -----------------------------------------------------------------------------
589 @deffn {関数} printfile (@var{path})
591 @var{path}という名前のファイルをコンソールに表示します。
592 @var{path}は、文字列もしくはシンボルです;
595 もし@var{path}が現在のワーキングディレクトリからアクセス可能なファイル名なら、
599 @mref{filename_merge}を介して@mref{file_search_usage}の要素のそれぞれに
600 @var{path}を追加することでファイルを見つけようとします。
602 @code{printfile}は、もし@var{path}が存在しているファイルを示しているなら、
603 @var{path}を返し、そうでなければ、
604 成功したファイル名マージの結果を返します。
607 @category{File input}
608 @category{Console interaction}
612 @c RECOMMEND CUTTING THIS ITEM AND CUTTING $tcl_output IN src/plot.lisp
613 @c THIS REALLY, REALLY SEEMS LIKE CRUFT:
614 @c $tcl_output IS NEVER CALLED WITHIN MAXIMA SOURCE,
615 @c AND THIS EXTREMELY NARROW, LIMITED FUNCTIONALITY ISN'T USEFUL TO USERS
616 @c AND IT'S BROKEN: INCORRECT OUTPUT FOR CLISP, DIES ON GCL
618 @c -----------------------------------------------------------------------------
620 @deffn {関数} tcl_output (@var{list}, @var{i0}, @var{skip})
621 @deffnx {関数} tcl_output (@var{list}, @var{i0})
622 @deffnx {関数} tcl_output ([@var{list_1}, @dots{}, @var{list_n}], @var{i})
625 カーリ括弧@code{@{ @}}で囲んで表示します。
626 Tcl/Tk言語でプログラムの一部として適した形です。
628 @code{tcl_output (@var{list}, @var{i0}, @var{skip})}
630 要素@var{i0}で始まり、要素@code{@var{i0} + @var{skip}}, @code{@var{i0} + 2 @var{skip}}, などを表示するよう、@var{list}を表示します。
632 @code{tcl_output (@var{list}, @var{i0})}は、
633 @code{tcl_output (@var{list}, @var{i0}, 2)}と同値です。
635 @code{tcl_output ([@var{list_1}, ..., @var{list_n}], @var{i})}は、
636 @var{list_1}, @dots{}, @var{list_n}の@var{i}番目の要素を表示します。
640 @c tcl_output ([1, 2, 3, 4, 5, 6], 1, 3)$
641 @c tcl_output ([1, 2, 3, 4, 5, 6], 2, 3)$
642 @c tcl_output ([3/7, 5/9, 11/13, 13/17], 1)$
643 @c tcl_output ([x1, y1, x2, y2, x3, y3], 2)$
644 @c tcl_output ([[1, 2, 3], [11, 22, 33]], 1)$
646 @c EXAMPLE OUTPUT: CLISP
647 @c OUTPUT IS OK FOR FIRST TWO, BROKEN FOR OTHERS
648 @c GCL OUTPUT: SAME FOR FIRST TWO
649 @c GCL FAILS ON OTHERS (IN EACH CASE COMPLAINING ELEMENTS ARE "not of type (OR RATIONAL LISP:FLOAT)"
651 (%i1) tcl_output ([1, 2, 3, 4, 5, 6], 1, 3)$
653 @{1.000000000 4.000000000
655 (%i2) tcl_output ([1, 2, 3, 4, 5, 6], 2, 3)$
657 @{2.000000000 5.000000000
659 (%i3) tcl_output ([3/7, 5/9, 11/13, 13/17], 1)$
661 @{((RAT SIMP) 3 7) ((RAT SIMP) 11 13)
663 (%i4) tcl_output ([x1, y1, x2, y2, x3, y3], 2)$
667 (%i5) tcl_output ([[1, 2, 3], [11, 22, 33]], 1)$
669 @{SIMP 1.000000000 11.00000000
675 @c -----------------------------------------------------------------------------
677 @deffn {関数} save (@var{filename}, @var{name_1}, @var{name_2}, @var{name_3}, @dots{})
678 @deffnx {関数} save (@var{filename}, values, functions, labels, @dots{})
679 @deffnx {関数} save (@var{filename}, [@var{m}, @var{n}])
680 @deffnx {関数} save (@var{filename}, @var{name_1}=@var{expr_1}, @dots{})
681 @deffnx {関数} save (@var{filename}, all)
682 @deffnx {関数} save (@var{filename}, @var{name_1}=@var{expr_1}, @var{name_2}=@var{expr_2}, @dots{})
684 @var{filename}に、@var{name_1}, @var{name_2}, @var{name_3}, @dots{},の現在値を
686 引数は、変数、関数、他のオブジェクトの名前です。
687 もし名前が関連づけられた値や関数を持たないなら、無視されます。
688 @code{save}は、@var{filename}を返します。
690 @code{save}は、データをLisp式の形式で保存します。
691 @code{save}で保存されたデータは、@code{load (@var{filename})}によって回復できます。
692 @mref{load}を参照してください。
694 グローバルフラグ @mref{file_output_append}は、
695 @code{save}が出力ファイルに追加するか、切り詰めるか決めます。
696 @code{file_output_append}が@code{true}の時、
697 @code{save}は出力ファイルに追加します。
698 そうでなければ、@code{save}は出力ファイルを切り詰めます。
699 どちらの場合も、もしファイルが存在しなければ、@code{save}はファイルを生成します。
701 特殊形式@code{save (@var{filename}, values, functions, labels, ...)}
702 は、@mref{values}, @mref{functions}, @mref{labels}, などと名付けられた項目を
704 名前は、変数@mref{infolists}によって指定された任意のものです。
705 @mref{values}は、ユーザー定義変数すべてから成ります。
707 特殊形式@code{save (@var{filename}, [@var{m}, @var{n}])}は、
708 @var{m}から@var{n}までの入力ラベル、出力ラベルの値を保存します。
709 @var{m}と@var{n}は、整数リテラルでなければならないことに注意してください。
710 例えば、@code{save ("foo.1", %i42, %o42)}のように、
711 入力ラベル、出力ラベルは1つ1つ保存することもできます。
712 @code{save (@var{filename}, labels)}は、
714 保存されたラベルが回復された時、それらは存在していたラベルを負かします。
716 特殊形式@code{save (@var{filename}, @var{name_1}=@var{expr_1}, @var{name_2}=@var{expr_2}, ...)}は、
717 @var{expr_1}, @var{expr_2}, @dots{},の値を@var{name_1}, @var{name_2}, @dots{}という名前で保存します。
718 例えば、@code{save ("foo.1", aa=%o88)}のように、
719 この形式を入力ラベル出力ラベルに適用することは便利です。
720 この形式の等式の右辺は任意の式であり、その式は評価されます。
721 この形式は、新しい名前を現在のMaximaの環境に導入はせず、
722 ただ、@var{filename}にそれらを保存します。
724 これらの特殊形式と@code{save}の一般形式は自由に混在させることができます。
725 例えば、@code{save (@var{filename}, aa, bb, cc=42, functions, [11, 17])}。
727 特殊形式@code{save (@var{filename}, all)}は、Maximaの現在の状態を保存します。
728 これは、自動的に定義された項目はもちろん、ユーザー定義の変数、関数、配列などすべてを
731 もしそれらがユーザーによって新しい値を割り当てられたなら、
732 @mref{file_search_maxima}や@mref{showtime}のようなシステム変数を含みます。
733 @mref{myoptions}を参照してください。
735 @code{save}は@var{filename}を評価し、他の引数すべてをクォートします。
738 @category{Session management}
739 @category{File output}
743 @c -----------------------------------------------------------------------------
745 @deffn {関数} stringout (@var{filename}, @var{expr_1}, @var{expr_2}, @var{expr_3}, @dots{})
746 @deffnx {関数} stringout (@var{filename}, [@var{m}, @var{n}])
747 @deffnx {関数} stringout (@var{filename}, input)
748 @deffnx {関数} stringout (@var{filename}, functions)
749 @deffnx {関数} stringout (@var{filename}, values)
752 式が入力としてタイプされたのと同じ形式で、式をファイルに書き込みます。
753 なので、ファイルは@mref{batch}や@mref{demo}コマンドの入力として使えますし、
755 @code{stringout}は、@mref{writefile}が進行中の間に実行することができます。
757 グローバルフラグ@mref{file_output_append}は、
758 @code{stringout}が出力ファイルに追加するか、切り詰めるか決めます。
759 @code{file_output_append}が@code{true}の時、
760 @code{stringout}は、出力ファイルに追加します。
761 そうでなければ、@code{stringout}は出力ファイルを切り詰めます。
762 どちらの場合も、もしファイルが存在しなければ,@code{stringout}はファイルを生成します。
764 @code{stringout}の一般形式は、1つ以上の式の値を出力ファイルに書き込みます。
765 もし式が変数なら、変数の値だけが書き込まれ、変数名は書き込まれないことに注意してください。
767 入力ラベル(@code{%i1}, @code{%i2}, @code{%i3}, @dots{})もしくは出力ラベル(@code{%o1}, @code{%o2}, @code{%o3}, @dots{})でもよいです。
770 もし@mref{grind}が@code{true}なら、
771 @code{stringout}は、@code{grind}フォーマットを使って出力をフォーマットします。
772 そうでなければ、@code{string}フォーマットが使われます。
773 @code{grind}と@code{string}を参照してください。
775 特殊形式@code{stringout (@var{filename}, [@var{m}, @var{n}])}は、
776 mからnまでの入力ラベルの値を書き込みます。
778 特殊形式 @code{stringout (@var{filename}, input)}は、
779 入力ラベルすべてをファイルに書き込みます。
781 特殊形式@code{stringout (@var{filename}, functions)}は、
782 (グローバルリスト@mref{functions}で名付けられた)ユーザー定義関数すべてをファイルに書き込みます。
784 特殊形式@code{stringout (@var{filename}, values)}は、
785 (グローバルリスト@mref{values}で名付けられた)ユーザーが割り当てた変数すべてをファイルに書き込みます。
786 変数それぞれは、変数名とコロンとその値という割り当て文として出力されます。
787 @code{stringout}の一般形式は変数を割り当て文として出力しないことに注意してください。
790 @category{Session management}
791 @category{File output}
795 @c -----------------------------------------------------------------------------
797 @deffn {関数} tex (@var{expr})
798 @deffnx {関数} tex (@var{expr}, @var{destination})
799 @deffnx {関数} tex (@var{expr}, false)
800 @deffnx {関数} tex (@var{label})
801 @deffnx {関数} tex (@var{label}, @var{destination})
802 @deffnx {関数} tex (@var{label}, false)
804 TeXドキュメントの準備に適した式の表現を出力します。
806 それは、より大きなドキュメントにコピーすることができますが、それ自身では処理されません。
808 @code{tex (@var{expr})}は、@var{expr}のTeX表現をコンソールに出力します。
810 @code{tex (@var{label})}は、@var{label}で名付けられた式のTeX表現を出力し、
811 (式の左に表示されるよう)等式ラベルをそれに割り当てます。
812 TeX等式ラベルは、Maximaラベルと同じです。
814 @var{destination}は、出力ストリームもしくはファイル名です。
815 @var{destination}がファイル名の時、
816 @code{tex}は、ファイルに出力を追加します。
817 関数@code{openw}と@code{opena}は、出力ストリームを生成します。
819 @code{tex (@var{expr}, false)}と@code{tex (@var{label}, false)}は、
822 @code{tex}は、最初の引数がラベルかどうか見るためにテストした後、最初の引数を評価します。
823 クォートクォート@code{''}は、引数の評価を強制し、
824 その結果、テストをだめにして、ラベルを妨げます。
826 @mref{texput}も参照してください。
831 (%i1) integrate (1/(1+x^3), x);
834 log(x - x + 1) sqrt(3) log(x + 1)
835 (%o1) - --------------- + ------------- + ----------
838 $$-@{@{\log \left(x^2-x+1\right)@}\over@{6@}@}+@{@{\arctan \left(@{@{2\,x-1
839 @}\over@{\sqrt@{3@}@}@}\right)@}\over@{\sqrt@{3@}@}@}+@{@{\log \left(x+1\right)
840 @}\over@{3@}@}\leqno@{\tt (\%o1)@}$$
842 (%i3) tex (integrate (sin(x), x));
845 (%i4) tex (%o1, "foo.tex");
849 @code{tex (@var{expr}, false)}はTeX出力を文字列として返します。
852 @c S : tex (x * y * z, false);
856 (%i1) S : tex (x * y * z, false);
863 @category{TeX output}
864 @category{File output}
869 @c -----------------------------------------------------------------------------
871 @deffn {関数} tex1 (@var{e})
873 式@var{e}のTeX出力を表現する文字列を返します。
874 TeX出力は、等式や他の任意の環境のため、区切り記号で囲まれません。
879 @c tex1 (sin(x) + cos(x));
882 (%i1) tex1 (sin(x) + cos(x));
887 @c -----------------------------------------------------------------------------
889 @deffn {関数} texput (@var{a}, @var{s})
890 @deffnx {関数} texput (@var{a}, @var{f})
891 @deffnx {関数} texput (@var{a}, @var{s}, @var{operator_type})
892 @deffnx {関数} texput (@var{a}, [@var{s_1}, @var{s_2}], matchfix)
893 @deffnx {関数} texput (@var{a}, [@var{s_1}, @var{s_2}, @var{s_3}], matchfix)
895 アトム@var{a}のためのTeX出力を割り当てます。
896 ここで@var{a}はシンボルもしくは演算子名です。
898 @code{texput (@var{a}, @var{s})}は、
900 @var{a}の代わりに文字列@var{s}をTeX出力に入れるようにさせます。
902 @code{texput (@var{a}, @var{f})}は、
904 TeX出力を生成するために関数@var{f}をコールさせます。
905 @var{f}は、1つの引数を受け入れなければいけません。
906 ここで、引数は、演算子@var{a}を持つ式で、文字列(TeX出力)を返さなければいけません。
907 @var{f}は、入力式の引数のためにTeX出力を生成するよう、@code{tex1}をコールするかもしれません。
909 @var{operator_type}が@code{prefix}, @code{infix}, @code{postfix}, @code{nary}, もしくは @code{nofix},として、
910 @code{texput (@var{a}, @var{s}, @var{operator_type})}は、
912 @var{a}の代わりに@var{s}をTeX出力に入れるようにさせ、
913 適切な位置に挿入された手キスを置くようにさせます。
915 @code{texput (@var{a}, [@var{s_1}, @var{s_2}], matchfix)}は、
917 @var{a}の引数のそれぞれの側に@var{s_1}と@var{s_2}を
919 (もし複数なら)引数はコンマで分離されます。
921 @code{texput (@var{a}, [@var{s_1}, @var{s_2}, @var{s_3}], matchfix)}は、
924 @var{a}の引数のそれぞれの側に@var{s_1}と@var{s_2}をTeX出力に入れるようにさせます。
931 @c texput (me,"\\mu_e");
935 (%i1) texput (me,"\\mu_e");
942 任意の関数(演算子ではない)にTeX出力を割り当てます。
945 @c texput (lcm, "\\mathrm{lcm}");
949 (%i1) texput (lcm, "\\mathrm@{lcm@}");
951 (%i2) tex (lcm (a, b));
952 $$\mathrm@{lcm@}\left(a , b\right)$$
959 @c texfoo (e) := block ([a, b], [a, b] : args (e),
960 @c concat ("\\left[\\stackrel{",tex1(b),"}{",tex1(a),"}\\right]"))$
961 @c texput (foo, texfoo);
962 @c tex (foo (2^x, %pi));
965 (%i1) texfoo (e) := block ([a, b], [a, b] : args (e),
966 concat ("\\left[\\stackrel@{",tex1(b),"@}@{",tex1(a),"@}\\right]"))$
967 (%i2) texput (foo, texfoo);
969 (%i3) tex (foo (2^x, %pi));
970 $$\left[\stackrel@{\pi@}@{2^@{x@}@}\right]$$
978 @c texput ("grad", " \\nabla ", prefix);
982 (%i1) prefix ("grad");
984 (%i2) texput ("grad", " \\nabla ", prefix);
995 @c texput ("~", " \\times ", infix);
1001 (%i2) texput ("~", " \\times ", infix);
1012 @c texput ("##", "!!", postfix);
1016 (%i1) postfix ("##");
1018 (%i2) texput ("##", "!!", postfix);
1029 @c texput ("@@", " \\circ ", nary);
1030 @c tex (a @@ b @@ c @@ d);
1033 (%i1) nary ("@@@@");
1035 (%i2) texput ("@@@@", " \\circ ", nary);
1037 (%i3) tex (a @@@@ b @@@@ c @@@@ d);
1038 $$a \circ b \circ c \circ d$$
1046 @c texput ("foo", "\\mathsc{foo}", nofix);
1050 (%i1) nofix ("foo");
1052 (%i2) texput ("foo", "\\mathsc@{foo@}", nofix);
1053 (%o2) \mathsc@{foo@}
1059 マッチフィックス演算子にTeX出力を割り当てます。
1062 @c matchfix ("<<", ">>");
1063 @c texput ("<<", [" \\langle ", " \\rangle "], matchfix);
1066 @c texput ("<<", [" \\langle ", " \\rangle ", " \\, | \\,"],
1072 (%i1) matchfix ("<<", ">>");
1074 (%i2) texput ("<<", [" \\langle ", " \\rangle "], matchfix);
1075 (%o2) [ \langle , \rangle ]
1077 $$ \langle a \rangle $$
1079 (%i4) tex (<<a, b>>);
1080 $$ \langle a , b \rangle $$
1082 (%i5) texput ("<<", [" \\langle ", " \\rangle ", " \\, | \\,"],
1084 (%o5) [ \langle , \rangle , \, | \,]
1086 $$ \langle a \rangle $$
1088 (%i7) tex (<<a, b>>);
1089 $$ \langle a \, | \,b \rangle $$
1094 @category{TeX output}
1098 @c -----------------------------------------------------------------------------
1099 @anchor{get_tex_environment}
1100 @deffn {関数} get_tex_environment (@var{op})
1101 @deffnx {関数} set_tex_environment (@var{op}, @var{before}, @var{after})
1103 @code{tex}によって出力されるTeX環境をカスタマイズします。
1104 これらの関数によって保持されるように、TeX環境は2つの文字列から成ります;
1105 1つは他の任意のTeX出力に前もって出力されるもの、もう1つは後に出力されるものです。
1107 式のトップレベル演算子のTeX環境だけが、出力されます;
1108 他の演算子に関連づけられたTeX環境は無視されます。
1110 @code{get_tex_environment}は、
1111 演算子@var{op}に適用されたTeX環境を返します;
1112 もし他の環境が割り当てられていなければ、デフォルトを返します。
1114 @code{set_tex_environment}は、
1115 演算子@var{op}のためのTeX環境を割り当てます。
1120 @c get_tex_environment (":=");
1121 @c tex (f (x) := 1 - x);
1122 @c set_tex_environment (":=", "$$", "$$");
1123 @c tex (f (x) := 1 - x);
1126 (%i1) get_tex_environment (":=");
1132 (%i2) tex (f (x) := 1 - x);
1139 (%i3) set_tex_environment (":=", "$$", "$$");
1141 (%i4) tex (f (x) := 1 - x);
1147 @category{TeX output}
1151 @c -----------------------------------------------------------------------------
1152 @anchor{get_tex_enviroment_default}
1153 @deffn {関数} get_tex_environment_default ()
1154 @deffnx {関数} set_tex_environment_default (@var{before}, @var{after})
1156 @code{tex}によって出力されるTeX環境をカスタマイズします。
1157 これらの関数によって保持されるように、TeX環境は2つの文字列から成ります;
1158 1つは他の任意のTeX出力に前もって出力されるもの、もう1つは後に出力されるものです。
1160 @code{get_tex_environment_default}は、
1161 トップレベル演算子が(@code{set_tex_environment}で割り当てられたような)特定のTeX環境を持たない式に適用されたTeX環境を返します。
1163 @code{set_tex_environment_default}は、デフォルトのTeX環境を割り当てます。
1168 @c get_tex_environment_default ();
1169 @c tex (f(x) + g(x));
1170 @c set_tex_environment_default ("\\begin{equation}
1172 @c \\end{equation}");
1173 @c tex (f(x) + g(x));
1176 (%i1) get_tex_environment_default ();
1178 (%i2) tex (f(x) + g(x));
1179 $$g\left(x\right)+f\left(x\right)$$
1181 (%i3) set_tex_environment_default ("\\begin@{equation@}
1183 \\end@{equation@}");
1184 (%o3) [\begin@{equation@}
1187 (%i4) tex (f(x) + g(x));
1189 g\left(x\right)+f\left(x\right)
1195 @category{TeX output}
1199 @c -----------------------------------------------------------------------------
1200 @anchor{with_stdout}
1201 @deffn {関数} with_stdout (@var{f}, @var{expr_1}, @var{expr_2}, @var{expr_3}, @dots{})
1202 @deffnx {関数} with_stdout (@var{s}, @var{expr_1}, @var{expr_2}, @var{expr_3}, @dots{})
1204 @var{expr_1}, @var{expr_2}, @var{expr_3}, ...を評価し、
1205 生成された出力すべてをファイル@var{f}もしくは出力ストリーム@var{s}に書き込みます。
1207 出力は、@mref{print}, @mref{display}, @mref{grind}や他の関数によって生成されたものです。
1209 グローバルフラグ @mref{file_output_append}は、
1210 @code{with_stdout}が出力ファイル@var{f}に追加するか切り詰めるか決めます。
1211 @code{file_output_append}が@code{true}の時、
1212 @code{with_stdout}は出力ファイルに追加します。
1213 そうでなければ、@code{with_stdout}は出力ファイルを切り詰めます。
1214 どちらの場合も、もしファイルが存在しないなら、@code{with_stdout}はファイルを生成します。
1216 @code{with_stdout}は最後の引数の値を返します。
1218 @mref{writefile}も参照してください。
1220 @c THIS DOESN'T SEEM VERY IMPORTANT TO MENTION ...
1221 @c Note the binding of display2d to be
1222 @c false, otherwise the printing will have things like "- 3" instead
1226 @c THIS EXAMPLE USES SOME UNIX-ISH CONSTRUCTS -- WILL IT WORK IN WINDOWS ???
1227 @c ALSO IT'S SORT OF COMPLICATED AND THE SIMPLER SECOND EXAMPLE ILLUSTRATES with_stdout BETTER !!!
1228 @c mygnuplot (f, var, range, number_ticks) :=
1229 @c block ([numer:true, display2d:false],
1230 @c with_stdout("tmp.out",
1231 @c dx: (range[2]-range[1])/number_ticks,
1232 @c for x: range[1] thru range[2] step dx
1233 @c do print (x, at (f, var=x))),
1234 @c system ("echo \"set data style lines; set title '", f,"' ;plot '/tmp/gnu'
1235 @c ;pause 10 \" | gnuplot"))$
1236 (%i1) with_stdout ("tmp.out", for i:5 thru 10 do
1237 print (i, "! yields", i!))$
1238 (%i2) printfile ("tmp.out")$
1248 @category{File output}
1252 @c -----------------------------------------------------------------------------
1254 @deffn {関数} writefile (@var{filename})
1256 Maximaセッションのトランスクリプトを@var{filename}に書き込むことを開始します。
1257 ユーザーとMaximaの間の対話すべてが、ちょうどコンソールに現れるように、このファイルに記録されます。
1258 @c FOLLOWING CLAIM PROBABLY NEEDS TO BE QUALIFIED
1260 トランスクリプトがコンソール出力フォーマットで出力されるので、
1261 それはMaximaに再ロードすることはできません。
1262 最ロード可能な式を含むファイルを作るには、
1263 @mref{save}と@mref{stringout}を参照してください。
1264 @code{save}は、Lisp形式の式を保存する一方、@code{stringout}は、Maxima形式
1267 @var{filename}が既に存在している時、@code{writefile}の実行の効果は、
1269 トランスクリプファイルは負かされるかもしれませんし、ファイルは追加されるかもしれません。
1270 @mref{appendfile}は、いつもトランスクリプトファイルに追加します。
1272 以前の対話の表示を保存するために@code{writefile}の後、
1273 @mref{playback}を実行するのが便利かもしれません。
1274 @code{playback}は入力と出力変数(@code{%i1}, @code{%o1}, など)だけを表示し、
1275 (戻り値と対照的に)関数の中のプリント文によって生成された任意の出力は@code{playback}によって表示されません。
1277 @mref{closefile}は、@code{writefile}や@code{appendfile}が開いたトランスクリプトファイルを閉じます。
1280 @category{File output}
1281 @category{Console interaction}