Fix bug #1848: taytorat leaks internal gensyms from multivar expansions
[maxima.git] / doc / info / ja / Input.texi
blobe7f3656afa33e4bbf3b85aa3cb8b819f9944e11f
1 @menu
2 * Comments::
3 * Files::                       
4 * Functions and Variables for File Input and Output::  
5 @end menu
7 @c -----------------------------------------------------------------------------
8 @node Comments, Files, File Input and Output, File Input and Output
9 @section Comments
10 @c -----------------------------------------------------------------------------
12 Maximaの入力の中のコメントは、@code{/*}と@code{*/}の間の任意のテキストです。
14 Maximaのパーサは、コメントを、入力外リームでのトークンを見つけるための空白として扱います;
15 コメントで常にトークンは終わります。
16 @code{a/* foo */b}のような入力は、1つのトークン@code{ab}ではなく、2つのトークン、@code{a}と@code{b}を含みます。
17 そうでなければ、Maximaはコメントを無視します;
18 コメントの中身も位置もパースされた入力式に残りません。
20 コメントは任意の深さに入れ子にすることができます。
21 @code{/*}と@code{*/}の区切り記号はマッチングペアを形作ります。
22 @code{/*}の数は@code{*/}と同じでなければいけません。
24 例:
26 @c ===beg===
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;
32 @c ===end===
33 @example
34 (%i1) /* aa is a variable of interest */  aa : 1234;
35 (%o1)                         1234
36 (%i2) /* Value of bb depends on aa */  bb : aa^2;
37 (%o2)                        1522756
38 (%i3) /* User-defined infix operator */  infix ("b");
39 (%o3)                           b
40 (%i4) /* Parses same as a b c, not abc */  a/* foo */b/* bar */c;
41 (%o4)                         a b c
42 (%i5) /* Comments /* can be nested /* to any depth */ */ */  1 + xyz;
43 (%o5)                        xyz + 1
44 @end example
46 @opencatbox
47 @category{Syntax}
48 @closecatbox
50 @c -----------------------------------------------------------------------------
51 @node Files, Functions and Variables for File Input and Output, Comments, File Input and Output
52 @section Files
53 @c -----------------------------------------------------------------------------
55 ファイルは、単に、データやテキスト含む、特別なストレージデバイスのある領域です。
56 ディスク上のファイルは、比喩的に「ディレクトリ」の中にグループ化されます。
57 ディレクトリは、単にファイルのリストです。
58 ファイルを扱うコマンドは以下の通りです:
60 @code{save},
61 @code{load},
62 @code{loadfile},
63 @code{stringout},
64 @code{batch},
65 @code{demo},
66 @code{writefile},
67 @code{closefile},と
68 @code{appendfile}。
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 -----------------------------------------------------------------------------
80 @anchor{appendfile}
81 @deffn {関数} appendfile (@var{filename})
82 コンソールの筆記録を@var{filename}に追加します。
83 @code{appendfile}は、
84 筆記録ファイルが、存在すれば、いつも追加されることを除いて、
85 @code{writefile}と同じです。
87 @mref{closefile}は、@code{appendfile}や@code{writefile}によって開かれた筆記録ファイルを閉じます。
89 @opencatbox
90 @category{File output}
91 @category{Console interaction}
92 @closecatbox
93 @end deffn
95 @c -----------------------------------------------------------------------------
96 @anchor{batch}
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}ようなものです。
112 この場合、@code{batch}は、
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}から読み込み、
127 入力をコンソールに表示し、
128 対応する出力式を計算し、
129 出力式を表示します。
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}にはいくつか用法があります。
141 役立つコマンドラインの蓄積を供給したり、
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}も参照してください。
153 @opencatbox
154 @category{Session management}
155 @category{File input}
156 @closecatbox
158 @end deffn
160 @c RECOMMEND CUTTING THIS ITEM, AS THE load SUBSUMES FUNCTIONALITY OF batchload
162 @c -----------------------------------------------------------------------------
163 @anchor{batchload}
164 @deffn {関数} batchload (@var{filename})
166 @var{filename}からMaximaの式を読み込み、評価します。
167 入力式や出力式を表示しません。
168 ラベルを出力式に割り当てません。
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 ???
181 @opencatbox
182 @category{Session management}
183 @category{File input}
184 @closecatbox
185 @end deffn
187 @c -----------------------------------------------------------------------------
188 @anchor{closefile}
189 @deffn {関数} closefile ()
191 @mref{writefile}や@mref{appendfile}で開いたトランスクリプトファイルを閉じます。
193 @opencatbox
194 @category{File output}
195 @category{Console interaction}
196 @closecatbox
197 @end deffn
199 @c -----------------------------------------------------------------------------
200 @anchor{file_output_append}
201 @defvr {オプション変数} file_output_append
202 デフォルト値: @code{false}
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 ??
216 @opencatbox
217 @category{File output}
218 @category{Global flags}
219 @closecatbox
220 @end defvr
223 @c NEEDS EXAMPLES
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}に置き換えられます。
234 結果はLispのパス名オブジェクトです。
236 @opencatbox
237 @category{File input}
238 @category{File output}
239 @closecatbox
240 @end deffn
242 @c -----------------------------------------------------------------------------
243 @anchor{file_search}
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}変数によって指定されます。
255 @code{file_search}は、
256 名前を「ワイルドカード」ファイルサーチパターンにマッチさせようとする前に、
257 最初に、渡された実際の名前が存在するかチェックします。
258 ファイルサーチパターンに関連した@mref{file_search_maxima}を参照してください。
260 引数@var{filename}は、パスとファイル名、もしくは単にファイル名、もしくは、
261 もしファイルサーチディレクトリがファイルサーチパターンを含むなら、単にファイル名のベース(拡張子なし)、を取り得ます。
262 例えば、
264 @example
265 file_search ("/home/wfs/special/zeta.mac");
266 file_search ("zeta.mac");
267 file_search ("zeta");
268 @end example
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}を
284 を検索ディレクトリとして、
285 @mref{load}によって呼び出されます。
287 @opencatbox
288 @category{File input}
289 @closecatbox
291 @end deffn
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の関数が検索する
306 ディレクトリのリストを指定します。
307 これらの変数のデフォルト値は、Maxima員ストレーションの様々なディレクトリを名指ししています。
309 ユーザーは、
310 デフォルト値を置き換えるか、ディレクトリを追加することで、
311 これらの変数を変更できます
312 例えば、
314 @example
315 file_search_maxima: ["/usr/local/foo/###.mac",
316     "/usr/local/bar/###.mac"]$
317 @end example
319 は、@code{file_search_maxima}のデフォルト値を置き換える一方、
321 @example
322 file_search_maxima: append (file_search_maxima,
323     ["/usr/local/foo/###.mac", "/usr/local/bar/###.mac"])$
324 @end example
326 は、2つのディレクトリを追加します。
327 ファイル@code{maxima-init.mac}に
328 Maximaが起動した時にファイル検索パスが自動的に割り当てられるような式を入れておくと便利かもしれません。
329 @ref{Introduction for Runtime Environment}も参照してください。
331 特別な「ワイルドカード」構造によって、ファイル名の拡張子やパスを多重にしてすることができます。
332 文字列@code{###}は、求められている名前に拡張される一方、
333 カーリ括弧@code{@{foo,bar,baz@}}で囲まれた、コンマで分離されたリストは多重文字列に拡張されます。
334 例えば、求められてる名前が@code{neumann}とすると、
336 @example
337 "/home/@{wfs,gcj@}/###.@{lisp,mac@}"
338 @end example
340 @flushleft
341 は、@code{/home/wfs/neumann.lisp}, @code{/home/gcj/neumann.lisp},
342 @code{/home/wfs/neumann.mac}, @code{/home/gcj/neumann.mac}に展開されます。
343 @end flushleft
345 @opencatbox
346 @category{File input}
347 @category{Global variables}
348 @closecatbox
349 @end defvr
351 @c -----------------------------------------------------------------------------
352 @anchor{file_type}
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}を
369 参照してください。
371 例:
373 @c ===beg===
374 @c map('file_type,
375 @c     ["test.lisp", "test.mac", "test.dem", "test.txt"]);
376 @c ===end===
377 @example
378 (%i2) map('file_type,
379           ["test.lisp", "test.mac", "test.dem", "test.txt"]);
380 (%o2)            [lisp, maxima, maxima, object]
381 @end example
383 @opencatbox
384 @category{File input}
385 @closecatbox
386 @end deffn
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}も参照してください。
397 @end defvr
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}も参照してください。
408 @end defvr
410 @c -----------------------------------------------------------------------------
411 @anchor{load}
412 @deffn {関数} load (@var{filename})
414 @var{filename}の中の式を評価します。
415 そして、変数、関数、他のオブジェクトをMaximaにもたらします。
416 、@var{filename}から再生されたバインドは存在するオブジェクトのバインドを上書きします(clobber)。
417 ファイルを見つけるために、
418 @code{load}は、探索ディレクトリとして@code{file_search_maxima}と@code{file_search_lisp}を引数として@code{file_search}をコールします。
419 もし@code{load}が成功したら
420 ファイルの名前を返します。
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}は引数を評価します。
441 @opencatbox
442 @category{Session management}
443 @category{File input}
444 @closecatbox
445 @end deffn
447 @c -----------------------------------------------------------------------------
448 @anchor{load_pathname}
449 @defvr {システム変数} load_pathname
450 デフォルト値: @code{false}
452 関数@mref{load}や、@mref{loadfile}、@mref{batchload}を使ってファイルがロードされる時、
453 システム変数@code{load_pathname}は処理するファイルのパス名を示します。
455 変数@code{load_pathname}はロード中にファイルからアクセスすることができます。
457 例:
459 ディレクトリ
460 @flushleft
461 @code{"/home/dieter/workspace/mymaxima/temp/"}に、以下のコマンドを含む
462 @end flushleft
463 バッチファイル@code{test.mac}があるとしましょう。
465 @example
466 print("The value of load_pathname is: ", load_pathname)$
467 print("End of batchfile")$
468 @end example
470 すると、以下の出力を得ます。
472 @example
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 
476 End of batchfile
477 @end example
479 @opencatbox
480 @category{File input}
481 @closecatbox
482 @end defvr
484 @c RECOMMEND CUTTING THIS ITEM, AS THE load SUBSUMES FUNCTIONALITY OF loadfile
486 @c -----------------------------------------------------------------------------
487 @anchor{loadfile}
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}を使うほうが便利だと気づくでしょう。
497 @opencatbox
498 @category{Session management}
499 @category{File input}
500 @closecatbox
501 @end deffn
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 -----------------------------------------------------------------------------
507 @anchor{loadprint}
508 @defvr {オプション変数} loadprint
509 デフォルト値: @code{true}
511 @code{loadprint}は、ファイルがロードされた時、メッセージを表示するかどうか告げます。
513 @itemize @bullet
514 @item
515 @code{loadprint}が@code{true}の時, いつもメッセージを表示します。
516 @item
517 @code{loadprint}が@code{'loadfile}の時, ファイルが関数@code{loadfile}によってロードされた時だけメッセージを表示します。
518 @item
519 @code{loadprint}が@code{'autoload}の時、
520 ファイルが自動的にロードされた時だけメッセージを表示します。
521 @mref{setup_autoload}を参照してください。
522 @item
523 @code{loadprint}が@code{false}の時, メッセージは決して表示されません。
524 @end itemize
526 @opencatbox
527 @category{File input}
528 @category{Global flags}
529 @closecatbox
530 @end defvr
532 @c STILL EXISTS, NEEDS CLARIFICATION !!!
534 @c -----------------------------------------------------------------------------
535 @anchor{packagefile}
536 @defvr {オプション変数} packagefile
537 デフォルト値: @code{false}
539 他の人が使うパッケージ(ファイル)を生成するために@mref{save}や@mref{translate}を使う
540 パッケージデザイナは、
541 ファイルがロードされる時必要な場合を除いて、
542 Maximaの情報リスト(例えば、@mref{values}, @mref{functions})に情報が追加されることを抑制するために、@code{packagefile: true}を設定したいかもしれません。
543 この方法によれば、
544 ユーザーが自身のデータを追加した時ユーザーの方法では
545 パッケージの中身は、得られないでしょう。
546 これは、起こりうる名前衝突の問題を解決はしないことに注意してください。
547 このフラグは、パッケージファイルへの出力であるものに素直に影響することにも注意してください。
548 フラグを@code{true}に設定することは、
549 Maxima初期化ファイルを生成するにも役に立ちます。
551 @opencatbox
552 @category{Translation flags and variables}
553 @closecatbox
554 @end defvr
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}の構成要素を返します。
566 例:
568 @c ===beg===
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");
572 @c ===end===
573 @example 
574 (%i1) pathname_directory("/home/dieter/maxima/changelog.txt");
575 (%o1)                 /home/dieter/maxima/
576 (%i2) pathname_name("/home/dieter/maxima/changelog.txt");
577 (%o2)                       changelog
578 (%i3) pathname_type("/home/dieter/maxima/changelog.txt");
579 (%o3)                          txt
580 @end example
582 @opencatbox
583 @category{File input}
584 @closecatbox
585 @end deffn
587 @c -----------------------------------------------------------------------------
588 @anchor{printfile}
589 @deffn {関数} printfile (@var{path})
591 @var{path}という名前のファイルをコンソールに表示します。
592 @var{path}は、文字列もしくはシンボルです;
593 もしシンボルなら、文字列に変換されます。
595 もし@var{path}が現在のワーキングディレクトリからアクセス可能なファイル名なら、
596 そのファイルがコンソールに表示されます。
597 そうでなければ、
598 @code{printfile}は、
599 @mref{filename_merge}を介して@mref{file_search_usage}の要素のそれぞれに
600 @var{path}を追加することでファイルを見つけようとします。
602 @code{printfile}は、もし@var{path}が存在しているファイルを示しているなら、
603 @var{path}を返し、そうでなければ、
604 成功したファイル名マージの結果を返します。
606 @opencatbox
607 @category{File input}
608 @category{Console interaction}
609 @closecatbox
610 @end deffn
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 -----------------------------------------------------------------------------
619 @anchor{tcl_output}
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})
624 リストの要素を、
625 カーリ括弧@code{@{ @}}で囲んで表示します。
626 Tcl/Tk言語でプログラムの一部として適した形です。
628 @code{tcl_output (@var{list}, @var{i0}, @var{skip})}
629 は、
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}番目の要素を表示します。
638 例:
639 @c EXAMPLE INPUT
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)"
650 @example
651 (%i1) tcl_output ([1, 2, 3, 4, 5, 6], 1, 3)$
653  @{1.000000000     4.000000000     
654  @}
655 (%i2) tcl_output ([1, 2, 3, 4, 5, 6], 2, 3)$
657  @{2.000000000     5.000000000     
658  @}
659 (%i3) tcl_output ([3/7, 5/9, 11/13, 13/17], 1)$
661  @{((RAT SIMP) 3 7) ((RAT SIMP) 11 13) 
662  @}
663 (%i4) tcl_output ([x1, y1, x2, y2, x3, y3], 2)$
665  @{$Y1 $Y2 $Y3 
666  @}
667 (%i5) tcl_output ([[1, 2, 3], [11, 22, 33]], 1)$
669  @{SIMP 1.000000000     11.00000000     
670  @}
671 @end example
672 @end deffn
674 @c NEEDS EXAMPLES
675 @c -----------------------------------------------------------------------------
676 @anchor{save}
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{},の現在値を
685 保存します。
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}, などと名付けられた項目を
703 保存します。
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)}は、
713 入力ラベル出力ラベルすべてを保存します。
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 これは、自動的に定義された項目はもちろん、ユーザー定義の変数、関数、配列などすべてを
729 含みます。
730 保存される項目は、
731 もしそれらがユーザーによって新しい値を割り当てられたなら、
732 @mref{file_search_maxima}や@mref{showtime}のようなシステム変数を含みます。
733 @mref{myoptions}を参照してください。
735 @code{save}は@var{filename}を評価し、他の引数すべてをクォートします。
737 @opencatbox
738 @category{Session management}
739 @category{File output}
740 @closecatbox
741 @end deffn
743 @c -----------------------------------------------------------------------------
744 @anchor{stringout}
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)
751 @code{stringout}は、
752 式が入力としてタイプされたのと同じ形式で、式をファイルに書き込みます。
753 なので、ファイルは@mref{batch}や@mref{demo}コマンドの入力として使えますし、
754 どんな目的のためでも編集できます。
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 もし式が変数なら、変数の値だけが書き込まれ、変数名は書き込まれないことに注意してください。
766 役に立つ特殊な場合として、式は、
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}の一般形式は変数を割り当て文として出力しないことに注意してください。
789 @opencatbox
790 @category{Session management}
791 @category{File output}
792 @closecatbox
793 @end deffn
795 @c -----------------------------------------------------------------------------
796 @anchor{tex}
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ドキュメントの準備に適した式の表現を出力します。
805 結果は、ドキュメントの断片です。
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)}は、
820 TeX出力を文字列として返します。
822 @code{tex}は、最初の引数がラベルかどうか見るためにテストした後、最初の引数を評価します。
823 クォートクォート@code{''}は、引数の評価を強制し、
824 その結果、テストをだめにして、ラベルを妨げます。
826 @mref{texput}も参照してください。
828 例:
830 @example
831 (%i1) integrate (1/(1+x^3), x);
832                                     2 x - 1
833                   2            atan(-------)
834              log(x  - x + 1)        sqrt(3)    log(x + 1)
835 (%o1)      - --------------- + ------------- + ----------
836                     6             sqrt(3)          3
837 (%i2) tex (%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)@}$$
841 (%o2)                          (\%o1)
842 (%i3) tex (integrate (sin(x), x));
843 $$-\cos x$$
844 (%o3)                           false
845 (%i4) tex (%o1, "foo.tex");
846 (%o4)                          (\%o1)
847 @end example
849 @code{tex (@var{expr}, false)}はTeX出力を文字列として返します。
851 @c ===beg===
852 @c S : tex (x * y * z, false);
853 @c S;
854 @c ===end===
855 @example
856 (%i1) S : tex (x * y * z, false);
857 (%o1) $$x\,y\,z$$
858 (%i2) S;
859 (%o2) $$x\,y\,z$$
860 @end example
862 @opencatbox
863 @category{TeX output}
864 @category{File output}
865 @closecatbox
867 @end deffn
869 @c -----------------------------------------------------------------------------
870 @anchor{tex1}
871 @deffn {関数} tex1 (@var{e})
873 式@var{e}のTeX出力を表現する文字列を返します。
874 TeX出力は、等式や他の任意の環境のため、区切り記号で囲まれません。
876 例:
878 @c ===beg===
879 @c tex1 (sin(x) + cos(x));
880 @c ===end===
881 @example
882 (%i1) tex1 (sin(x) + cos(x));
883 (%o1)                     \sin x+\cos x
884 @end example
885 @end deffn
887 @c -----------------------------------------------------------------------------
888 @anchor{texput}
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})}は、
899 @code{tex}関数に、
900 @var{a}の代わりに文字列@var{s}をTeX出力に入れるようにさせます。
902 @code{texput (@var{a}, @var{f})}は、
903 @code{tex}関数に、
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})}は、
911 @code{tex}関数に
912 @var{a}の代わりに@var{s}をTeX出力に入れるようにさせ、
913 適切な位置に挿入された手キスを置くようにさせます。
915 @code{texput (@var{a}, [@var{s_1}, @var{s_2}], matchfix)}は、
916 @code{tex}関数に、
917 @var{a}の引数のそれぞれの側に@var{s_1}と@var{s_2}を
918 TeX出力に入れるようにさせます。
919 (もし複数なら)引数はコンマで分離されます。
921 @code{texput (@var{a}, [@var{s_1}, @var{s_2}, @var{s_3}], matchfix)}は、
922 @code{tex}関数に、
923 引数を分離する@var{s_3}と一緒に
924 @var{a}の引数のそれぞれの側に@var{s_1}と@var{s_2}をTeX出力に入れるようにさせます。
926 例:
928 変数にTeX出力を割り当てます。
930 @c ===beg===
931 @c texput (me,"\\mu_e");
932 @c tex (me);
933 @c ===end===
934 @example
935 (%i1) texput (me,"\\mu_e");
936 (%o1)                         \mu_e
937 (%i2) tex (me);
938 $$\mu_e$$
939 (%o2)                         false
940 @end example
942 任意の関数(演算子ではない)にTeX出力を割り当てます。
944 @c ===beg===
945 @c texput (lcm, "\\mathrm{lcm}");
946 @c tex (lcm (a, b));
947 @c ===end===
948 @example
949 (%i1) texput (lcm, "\\mathrm@{lcm@}");
950 (%o1)                     \mathrm@{lcm@}
951 (%i2) tex (lcm (a, b));
952 $$\mathrm@{lcm@}\left(a , b\right)$$
953 (%o2)                         false
954 @end example
956 TeX出力を生成する関数をコールします。
958 @c ===beg===
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));
963 @c ===end===
964 @example
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);
968 (%o2)                        texfoo
969 (%i3) tex (foo (2^x, %pi));
970 $$\left[\stackrel@{\pi@}@{2^@{x@}@}\right]$$
971 (%o3)                         false
972 @end example
974 前置演算子にTeX出力を割り当てます。
976 @c ===beg===
977 @c prefix ("grad");
978 @c texput ("grad", " \\nabla ", prefix);
979 @c tex (grad f);
980 @c ===end===
981 @example
982 (%i1) prefix ("grad");
983 (%o1)                         grad
984 (%i2) texput ("grad", " \\nabla ", prefix);
985 (%o2)                        \nabla 
986 (%i3) tex (grad f);
987 $$ \nabla f$$
988 (%o3)                         false
989 @end example
991 中置演算子にTeX出力を割り当てます。
993 @c ===beg===
994 @c infix ("~");
995 @c texput ("~", " \\times ", infix);
996 @c tex (a ~ b);
997 @c ===end===
998 @example
999 (%i1) infix ("~");
1000 (%o1)                           ~
1001 (%i2) texput ("~", " \\times ", infix);
1002 (%o2)                        \times 
1003 (%i3) tex (a ~ b);
1004 $$a \times b$$
1005 (%o3)                         false
1006 @end example
1008 後置演算子にTeX出力を割り当てます。
1010 @c ===beg===
1011 @c postfix ("##");
1012 @c texput ("##", "!!", postfix);
1013 @c tex (x ##);
1014 @c ===end===
1015 @example
1016 (%i1) postfix ("##");
1017 (%o1)                          ##
1018 (%i2) texput ("##", "!!", postfix);
1019 (%o2)                          !!
1020 (%i3) tex (x ##);
1021 $$x!!$$
1022 (%o3)                         false
1023 @end example
1025 n項演算子にTeX出力を割り当てます。
1027 @c ===beg===
1028 @c nary ("@@");
1029 @c texput ("@@", " \\circ ", nary);
1030 @c tex (a @@ b @@ c @@ d);
1031 @c ===end===
1032 @example
1033 (%i1) nary ("@@@@");
1034 (%o1)                          @@@@
1035 (%i2) texput ("@@@@", " \\circ ", nary);
1036 (%o2)                         \circ 
1037 (%i3) tex (a @@@@ b @@@@ c @@@@ d);
1038 $$a \circ b \circ c \circ d$$
1039 (%o3)                         false
1040 @end example
1042 無項演算子にTeX出力を割り当てます。
1044 @c ===beg===
1045 @c nofix ("foo");
1046 @c texput ("foo", "\\mathsc{foo}", nofix);
1047 @c tex (foo);
1048 @c ===end===
1049 @example
1050 (%i1) nofix ("foo");
1051 (%o1)                          foo
1052 (%i2) texput ("foo", "\\mathsc@{foo@}", nofix);
1053 (%o2)                     \mathsc@{foo@}
1054 (%i3) tex (foo);
1055 $$\mathsc@{foo@}$$
1056 (%o3)                         false
1057 @end example
1059 マッチフィックス演算子にTeX出力を割り当てます。
1061 @c ===beg===
1062 @c matchfix ("<<", ">>");
1063 @c texput ("<<", [" \\langle ", " \\rangle "], matchfix);
1064 @c tex (<<a>>);
1065 @c tex (<<a, b>>);
1066 @c texput ("<<", [" \\langle ", " \\rangle ", " \\, | \\,"], 
1067 @c       matchfix);
1068 @c tex (<<a>>);
1069 @c tex (<<a, b>>);
1070 @c ===end===
1071 @example
1072 (%i1) matchfix ("<<", ">>");
1073 (%o1)                          <<
1074 (%i2) texput ("<<", [" \\langle ", " \\rangle "], matchfix);
1075 (%o2)                [ \langle ,  \rangle ]
1076 (%i3) tex (<<a>>);
1077 $$ \langle a \rangle $$
1078 (%o3)                         false
1079 (%i4) tex (<<a, b>>);
1080 $$ \langle a , b \rangle $$
1081 (%o4)                         false
1082 (%i5) texput ("<<", [" \\langle ", " \\rangle ", " \\, | \\,"],
1083       matchfix);
1084 (%o5)           [ \langle ,  \rangle ,  \, | \,]
1085 (%i6) tex (<<a>>);
1086 $$ \langle a \rangle $$
1087 (%o6)                         false
1088 (%i7) tex (<<a, b>>);
1089 $$ \langle a \, | \,b \rangle $$
1090 (%o7)                         false
1091 @end example
1093 @opencatbox
1094 @category{TeX output}
1095 @closecatbox
1096 @end deffn
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環境を割り当てます。
1117 例:
1119 @c ===beg===
1120 @c get_tex_environment (":=");
1121 @c tex (f (x) := 1 - x);
1122 @c set_tex_environment (":=", "$$", "$$");
1123 @c tex (f (x) := 1 - x);
1124 @c ===end===
1125 @example
1126 (%i1) get_tex_environment (":=");
1127 (%o1) [
1128 \begin@{verbatim@}
1129 , ;
1130 \end@{verbatim@}
1132 (%i2) tex (f (x) := 1 - x);
1134 \begin@{verbatim@}
1135 f(x):=1-x;
1136 \end@{verbatim@}
1138 (%o2)                         false
1139 (%i3) set_tex_environment (":=", "$$", "$$");
1140 (%o3)                       [$$, $$]
1141 (%i4) tex (f (x) := 1 - x);
1142 $$f(x):=1-x$$
1143 (%o4)                         false
1144 @end example
1146 @opencatbox
1147 @category{TeX output}
1148 @closecatbox
1149 @end deffn
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環境を割り当てます。
1165 例:
1167 @c ===beg===
1168 @c get_tex_environment_default ();
1169 @c tex (f(x) + g(x));
1170 @c set_tex_environment_default ("\\begin{equation}
1171 @c ", "
1172 @c \\end{equation}");
1173 @c tex (f(x) + g(x));
1174 @c ===end===
1175 @example
1176 (%i1) get_tex_environment_default ();
1177 (%o1)                       [$$, $$]
1178 (%i2) tex (f(x) + g(x));
1179 $$g\left(x\right)+f\left(x\right)$$
1180 (%o2)                         false
1181 (%i3) set_tex_environment_default ("\\begin@{equation@}
1182 ", "
1183 \\end@{equation@}");
1184 (%o3) [\begin@{equation@}
1186 \end@{equation@}]
1187 (%i4) tex (f(x) + g(x));
1188 \begin@{equation@}
1189 g\left(x\right)+f\left(x\right)
1190 \end@{equation@}
1191 (%o4)                         false
1192 @end example
1194 @opencatbox
1195 @category{TeX output}
1196 @closecatbox
1197 @end deffn
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}に書き込みます。
1206 評価される式は出力に書き込まれません。
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
1223 @c of "-3".
1225 @example
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")$
1239 5 ! yields 120 
1240 6 ! yields 720 
1241 7 ! yields 5040 
1242 8 ! yields 40320 
1243 9 ! yields 362880 
1244 10 ! yields 3628800
1245 @end example
1247 @opencatbox
1248 @category{File output}
1249 @closecatbox
1250 @end deffn
1252 @c -----------------------------------------------------------------------------
1253 @anchor{writefile}
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形式
1265 の式を保存します。
1267 @var{filename}が既に存在している時、@code{writefile}の実行の効果は、
1268 基礎となるLisp実装に依存します;
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}が開いたトランスクリプトファイルを閉じます。
1279 @opencatbox
1280 @category{File output}
1281 @category{Console interaction}
1282 @closecatbox
1283 @end deffn