Next: , Previous:   [Contents][Index]

13 File Input and Output


13.1 Comments

Maximaの入力の中のコメントは、/**/の間の任意のテキストです。

Maximaのパーサは、コメントを、入力外リームでのトークンを見つけるための空白として扱います; コメントで常にトークンは終わります。 a/* foo */bのような入力は、1つのトークンabではなく、2つのトークン、abを含みます。 そうでなければ、Maximaはコメントを無視します; コメントの中身も位置もパースされた入力式に残りません。

コメントは任意の深さに入れ子にすることができます。 /**/の区切り記号はマッチングペアを形作ります。 /*の数は*/と同じでなければいけません。

例:

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

13.2 Files

ファイルは、単に、データやテキスト含む、特別なストレージデバイスのある領域です。 ディスク上のファイルは、比喩的に「ディレクトリ」の中にグループ化されます。 ディレクトリは、単にファイルのリストです。 ファイルを扱うコマンドは以下の通りです:

save, load, loadfile, stringout, batch, demo, writefile, closefile,と appendfile

ファイル名がplot2dsavewritefileのような関数に渡され、 ファイル名がパスを含まない時、Maximaは現在のワーキングディレクトリにファイルを保存します。 現在のワーキングディレクトリはWindowsやLinuxのようなシステムと、インストールに依存します。


Previous: , Up: File Input and Output   [Contents][Index]

13.3 Functions and Variables for File Input and Output

関数: appendfile (filename)

コンソールの筆記録をfilenameに追加します。 appendfileは、 筆記録ファイルが、存在すれば、いつも追加されることを除いて、 writefileと同じです。

closefileは、appendfilewritefileによって開かれた筆記録ファイルを閉じます。

関数: batch (filename)
関数: batch (filename, option)

batch(filename)はMaximaの式をfilenameから読み込み、評価します。 batchは、リストfile_search_maximaの中でfilenameを検索します。 file_searchも参照してください。

batch(filename, demo)は、 demo(filename)ようなものです。 この場合、batchは、リストfile_search_demoの中で filenameを検索します。 demoを参照してください。

batch(filename, test)は、 オプションdisplay_all=trueを付けたrun_testsuiteようなものです。 この場合、batchは、 run_testsuiteのようにリストfile_search_testsではなく、 リストfile_search_maximaの中でfilenameを検索します。 更に、run_testsuiteはリストtestsuite_filesの中にあるテストを実行します。 batchを使うと、どんなファイルもテストモードで実行することが可能です。 ファイルはリストfile_search_maximaの中であってもいいです。 これはテストファイルを書いている時に便利です。

filenameは、一連のMaximaの式より成り、それぞれの式は、;もしくは$で終了します。 特殊変数%と関数%thは、ファイル内での前の結果を参照します。 ファイルは:lisp構成子を含むかもしれません。 ファイルの中の空白、タブ、改行は無視されます。 適した入力ファイルは、テキストエディタもしくは、stringout関数で作ることができます。

batchは、それぞれの入力式をfilenameから読み込み、 入力をコンソールに表示し、 対応する出力式を計算し、 出力式を表示します。 入力ラベルは入力式に割り当てられ、出力ラベルは出力式に割り当てられます。 batchは、エラーがない限り、ファイルの中のすべての入力式を評価します。 もしユーザー入力が(例えば、asksignaskintegerによって)要求されたら、 batchは、ポーズして必要な入力を入手し、続けます。

コンソールでcontrol-Cをタイプすることで、batchを停止させることが可能かもしれません。 control-Cの効果は、基礎となるLispの実装に依存します。

batchにはいくつか用法があります。 役立つコマンドラインの蓄積を供給したり、 エラーのないデモンストレーションを与えたり、 複雑な問題を解く時、人の考えを整理するのを助けたり。

batchは引数を評価します。 第二引数なしで呼び出されたり、オプションdemoで呼び出された時、 batchfilenameのパスを文字列として返します。 オプションtestで呼び出された時、 戻り値は、空のリスト[]か、filenameと失敗したテストの数を含むリストです。

load, batchload, demoも参照してください。

関数: batchload (filename)

filenameからMaximaの式を読み込み、評価します。 入力式や出力式を表示しません。 ラベルを出力式に割り当てません。 しかし、(printdescribeが生成するような)プリント文の出力は表示されます。

特殊変数%や関数%thは、 ファイルの中の結果ではなく、対話インタープリタからの以前の結果を参照します。 ファイルは:lisp構成子を含むことはできません。

batchloadは、filenameのパスを文字列として返します。 batchloadは引数を評価します。

batchloadも参照してください。

関数: closefile ()

writefileappendfileで開いたトランスクリプトファイルを閉じます。

オプション変数: file_output_append

デフォルト値: false

file_output_appendは、 ファイル出力関数が出力ファイルに追加するか、ファイルを切り詰めるか決めます。 file_output_appendtrueの時、 ファイル出力関数は出力ファイルに追加します。 そうでなければ,出力ファイルは切り詰められます。

save, stringout, with_stdoutは、file_output_appendを考慮します。 出力ファイルを書き出す他の関数はfile_output_appendを考慮しません。 特に、プロット感巣や変換関数は常に出力ファイルを切り詰め、 texappendfileはいつも追加します。

関数: filename_merge (path, filename)

pathfilenameから修正されたパスを構成します。 もし、pathの最後の構成要素が形式###.somethingなら、 構成要素は、filename.somethingに置き換えられます。 そうでなければ、最後の構成要素は単にfilenameに置き換えられます。

結果はLispのパス名オブジェクトです。

関数: file_search (filename)
関数: file_search (filename, pathlist)

file_searchは、ファイルfilenameを検索し、 もし見つかれば、(文字列として)ファイルへのパスを返します; そうでなければ、file_searchfalseを返します。 file_search (filename)は、 デフォルトのサーチディレクトリを検索します。 デフォルトのサーチディレクトリは、file_search_maxima, file_search_lisp, file_search_demo変数によって指定されます。

file_searchは、 名前を「ワイルドカード」ファイルサーチパターンにマッチさせようとする前に、 最初に、渡された実際の名前が存在するかチェックします。 ファイルサーチパターンに関連したfile_search_maximaを参照してください。

引数filenameは、パスとファイル名、もしくは単にファイル名、もしくは、 もしファイルサーチディレクトリがファイルサーチパターンを含むなら、単にファイル名のベース(拡張子なし)、を取り得ます。 例えば、

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

ファイルが存在していて、/home/wfs/special/###.macfile_search_maximaに中にあるという仮定の下で、上記すべては同じファイルを見つけます。

file_search (filename, pathlist)は、 pathlistによって指定されたディレクトリの中だけを検索します。 ここで、pathlistは文字列のりすとです。 引数pathlistは、デフォルトの検索ディレクトリに取って代わります。 だから、もしパスリストが与えられたら、デフォルトの検索ディレクトリのいずれでもなく、file_searchは指定されたところだけを検索します。 pathlistの中に1つのディレクトリだけしかない場合でさえ、まだ、 それは、要素1つのリストとして与えられなければいけません。

ユーザーはデフォルト検索ディレクトリを修正できます。 file_search_maximaを参照してください。

file_searchは、file_search_maximafile_search_lispを を検索ディレクトリとして、 loadによって呼び出されます。

オプション変数: file_search_maxima
オプション変数: file_search_lisp
オプション変数: file_search_demo
オプション変数: file_search_usage
オプション変数: file_search_tests

これらの変数は、load, demoや他のいくつかのMaximaの関数が検索する ディレクトリのリストを指定します。 これらの変数のデフォルト値は、Maxima員ストレーションの様々なディレクトリを名指ししています。

ユーザーは、 デフォルト値を置き換えるか、ディレクトリを追加することで、 これらの変数を変更できます 例えば、

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

は、file_search_maximaのデフォルト値を置き換える一方、

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

は、2つのディレクトリを追加します。 ファイルmaxima-init.macに Maximaが起動した時にファイル検索パスが自動的に割り当てられるような式を入れておくと便利かもしれません。 Introduction for Runtime Environmentも参照してください。

特別な「ワイルドカード」構造によって、ファイル名の拡張子やパスを多重にしてすることができます。 文字列###は、求められている名前に拡張される一方、 カーリ括弧{foo,bar,baz}で囲まれた、コンマで分離されたリストは多重文字列に拡張されます。 例えば、求められてる名前がneumannとすると、

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

は、/home/wfs/neumann.lisp, /home/gcj/neumann.lisp, /home/wfs/neumann.mac, /home/gcj/neumann.macに展開されます。

関数: file_type (filename)

filenameの中身について、ファイル名拡張子を下に、推測を返します。 filenameは、実際のファイルを参照する必要はありません; ファイルを開いたり、中身を探索したりはしません。

戻り値はシンボルであり、object, lisp, maximaのいずれかです。 もし拡張子がfile_type_maximaの中の値の1つと一致したら、 file_typemaximaを返します。 もし拡張子が"file_type_lispの中の値の1つと一致したら、 file_typelispを返します。 上のいずれでもないなら、file_typeobjectを返します。

pathname_typeも参照してください。

デフォルト値に関しては、file_type_maximafile_type_lispを 参照してください。

例:

(%i2) map('file_type,
          ["test.lisp", "test.mac", "test.dem", "test.txt"]);
(%o2)            [lisp, maxima, maxima, object]
オプション変数: file_type_lisp

デフォルト値: [l, lsp, lisp]

file_type_lispは、 maximaがLispソースファイルの印として認識するファイル拡張子のリストです。

file_typeも参照してください。

オプション変数: file_type_maxima

デフォルト値: [mac, mc, demo, dem, dm1, dm2, dm3, dmt]

file_type_maximaは、 maximaがMaximaソースファイルの印として認識するファイル拡張子のリストです。

file_typeも参照してください。

関数: load (filename)

filenameの中の式を評価します。 そして、変数、関数、他のオブジェクトをMaximaにもたらします。 、filenameから再生されたバインドは存在するオブジェクトのバインドを上書きします(clobber)。 ファイルを見つけるために、 loadは、探索ディレクトリとしてfile_search_maximafile_search_lispを引数としてfile_searchをコールします。 もしloadが成功したら ファイルの名前を返します。 そうでなければ、loadはエラーメッセージを出力します。

loadは、LispコードでもMaximaコードでも等しく機能します。 save, translate_file, compile_file―これらはLispコードを生成します―が生成したファイルはすべてloadによって処理できます。 loadは、Lispファイルをロードするためにloadfileをコールし、 Maximaファイルをロードするためにbatchloadをコールします。

loadは、Maximaファイルの中で:lisp構成子を認識しません。 filenameを処理する時、 グローバル変数_, __, %, %thは、 loadがコールされた時バインドされていた値を持ちます。

loadfile, batch, batchload, demoも参照してください。 loadfileはLispファイルを処理します; batch, batchload, demoはMaximaファイルを処理します。

ファイル探索メカニズムについてもっと詳しいことはfile_searchを参照してください。

loadは引数を評価します。

システム変数: load_pathname

デフォルト値: false

関数loadや、loadfilebatchloadを使ってファイルがロードされる時、 システム変数load_pathnameは処理するファイルのパス名を示します。

変数load_pathnameはロード中にファイルからアクセスすることができます。

例:

ディレクトリ

"/home/dieter/workspace/mymaxima/temp/"に、以下のコマンドを含む

バッチファイルtest.macがあるとしましょう。

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

すると、以下の出力を得ます。

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

filenameの中のLisp式を評価します。 loadfileは、file_searchを呼び出しません。 だから、filenameはファイル拡張子とファイルを見つけるのに必要なパスも含まなければいけません。

loadfileは、save, translate_file, compile_fileによって生成されたファイルを処理できます。 ユーザーは、loadfileの代わりにloadを使うほうが便利だと気づくでしょう。

オプション変数: loadprint

デフォルト値: true

loadprintは、ファイルがロードされた時、メッセージを表示するかどうか告げます。

  • loadprinttrueの時, いつもメッセージを表示します。
  • loadprint'loadfileの時, ファイルが関数loadfileによってロードされた時だけメッセージを表示します。
  • loadprint'autoloadの時、 ファイルが自動的にロードされた時だけメッセージを表示します。 setup_autoloadを参照してください。
  • loadprintfalseの時, メッセージは決して表示されません。
オプション変数: packagefile

デフォルト値: false

他の人が使うパッケージ(ファイル)を生成するためにsavetranslateを使う パッケージデザイナは、 ファイルがロードされる時必要な場合を除いて、 Maximaの情報リスト(例えば、values, functions)に情報が追加されることを抑制するために、packagefile: trueを設定したいかもしれません。 この方法によれば、 ユーザーが自身のデータを追加した時ユーザーの方法では パッケージの中身は、得られないでしょう。 これは、起こりうる名前衝突の問題を解決はしないことに注意してください。 このフラグは、パッケージファイルへの出力であるものに素直に影響することにも注意してください。 フラグをtrueに設定することは、 Maxima初期化ファイルを生成するにも役に立ちます。

関数: pathname_directory (pathname)
関数: pathname_name (pathname)
関数: pathname_type (pathname)

これらの関数はpathnameの構成要素を返します。

例:

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

pathという名前のファイルをコンソールに表示します。 pathは、文字列もしくはシンボルです; もしシンボルなら、文字列に変換されます。

もしpathが現在のワーキングディレクトリからアクセス可能なファイル名なら、 そのファイルがコンソールに表示されます。 そうでなければ、 printfileは、 filename_mergeを介してfile_search_usageの要素のそれぞれに pathを追加することでファイルを見つけようとします。

printfileは、もしpathが存在しているファイルを示しているなら、 pathを返し、そうでなければ、 成功したファイル名マージの結果を返します。

関数: tcl_output (list, i0, skip)
関数: tcl_output (list, i0)
関数: tcl_output ([list_1, …, list_n], i)

リストの要素を、 カーリ括弧{ }で囲んで表示します。 Tcl/Tk言語でプログラムの一部として適した形です。

tcl_output (list, i0, skip) は、 要素i0で始まり、要素i0 + skip, i0 + 2 skip, などを表示するよう、listを表示します。

tcl_output (list, i0)は、 tcl_output (list, i0, 2)と同値です。

tcl_output ([list_1, ..., list_n], i)は、 list_1, …, list_ni番目の要素を表示します。

例:

(%i1) tcl_output ([1, 2, 3, 4, 5, 6], 1, 3)$

 {1.000000000     4.000000000     
 }
(%i2) tcl_output ([1, 2, 3, 4, 5, 6], 2, 3)$

 {2.000000000     5.000000000     
 }
(%i3) tcl_output ([3/7, 5/9, 11/13, 13/17], 1)$

 {((RAT SIMP) 3 7) ((RAT SIMP) 11 13) 
 }
(%i4) tcl_output ([x1, y1, x2, y2, x3, y3], 2)$

 {$Y1 $Y2 $Y3 
 }
(%i5) tcl_output ([[1, 2, 3], [11, 22, 33]], 1)$

 {SIMP 1.000000000     11.00000000     
 }
関数: save (filename, name_1, name_2, name_3, …)
関数: save (filename, values, functions, labels, …)
関数: save (filename, [m, n])
関数: save (filename, name_1=expr_1, …)
関数: save (filename, all)
関数: save (filename, name_1=expr_1, name_2=expr_2, …)

filenameに、name_1, name_2, name_3, …,の現在値を 保存します。 引数は、変数、関数、他のオブジェクトの名前です。 もし名前が関連づけられた値や関数を持たないなら、無視されます。 saveは、filenameを返します。

saveは、データをLisp式の形式で保存します。 saveで保存されたデータは、load (filename)によって回復できます。 loadを参照してください。

グローバルフラグ file_output_appendは、 saveが出力ファイルに追加するか、切り詰めるか決めます。 file_output_appendtrueの時、 saveは出力ファイルに追加します。 そうでなければ、saveは出力ファイルを切り詰めます。 どちらの場合も、もしファイルが存在しなければ、saveはファイルを生成します。

特殊形式save (filename, values, functions, labels, ...) は、values, functions, labels, などと名付けられた項目を 保存します。 名前は、変数infolistsによって指定された任意のものです。 valuesは、ユーザー定義変数すべてから成ります。

特殊形式save (filename, [m, n])は、 mからnまでの入力ラベル、出力ラベルの値を保存します。 mnは、整数リテラルでなければならないことに注意してください。 例えば、save ("foo.1", %i42, %o42)のように、 入力ラベル、出力ラベルは1つ1つ保存することもできます。 save (filename, labels)は、 入力ラベル出力ラベルすべてを保存します。 保存されたラベルが回復された時、それらは存在していたラベルを負かします。

特殊形式save (filename, name_1=expr_1, name_2=expr_2, ...)は、 expr_1, expr_2, …,の値をname_1, name_2, …という名前で保存します。 例えば、save ("foo.1", aa=%o88)のように、 この形式を入力ラベル出力ラベルに適用することは便利です。 この形式の等式の右辺は任意の式であり、その式は評価されます。 この形式は、新しい名前を現在のMaximaの環境に導入はせず、 ただ、filenameにそれらを保存します。

これらの特殊形式とsaveの一般形式は自由に混在させることができます。 例えば、save (filename, aa, bb, cc=42, functions, [11, 17])

特殊形式save (filename, all)は、Maximaの現在の状態を保存します。 これは、自動的に定義された項目はもちろん、ユーザー定義の変数、関数、配列などすべてを 含みます。 保存される項目は、 もしそれらがユーザーによって新しい値を割り当てられたなら、 file_search_maximashowtimeのようなシステム変数を含みます。 myoptionsを参照してください。

savefilenameを評価し、他の引数すべてをクォートします。

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

stringoutは、 式が入力としてタイプされたのと同じ形式で、式をファイルに書き込みます。 なので、ファイルはbatchdemoコマンドの入力として使えますし、 どんな目的のためでも編集できます。 stringoutは、writefileが進行中の間に実行することができます。

グローバルフラグfile_output_appendは、 stringoutが出力ファイルに追加するか、切り詰めるか決めます。 file_output_appendtrueの時、 stringoutは、出力ファイルに追加します。 そうでなければ、stringoutは出力ファイルを切り詰めます。 どちらの場合も、もしファイルが存在しなければ,stringoutはファイルを生成します。

stringoutの一般形式は、1つ以上の式の値を出力ファイルに書き込みます。 もし式が変数なら、変数の値だけが書き込まれ、変数名は書き込まれないことに注意してください。 役に立つ特殊な場合として、式は、 入力ラベル(%i1, %i2, %i3, …)もしくは出力ラベル(%o1, %o2, %o3, …)でもよいです。 )

もしgrindtrueなら、 stringoutは、grindフォーマットを使って出力をフォーマットします。 そうでなければ、stringフォーマットが使われます。 grindstringを参照してください。

特殊形式stringout (filename, [m, n])は、 mからnまでの入力ラベルの値を書き込みます。

特殊形式 stringout (filename, input)は、 入力ラベルすべてをファイルに書き込みます。

特殊形式stringout (filename, functions)は、 (グローバルリストfunctionsで名付けられた)ユーザー定義関数すべてをファイルに書き込みます。

特殊形式stringout (filename, values)は、 (グローバルリストvaluesで名付けられた)ユーザーが割り当てた変数すべてをファイルに書き込みます。 変数それぞれは、変数名とコロンとその値という割り当て文として出力されます。 stringoutの一般形式は変数を割り当て文として出力しないことに注意してください。

関数: tex (expr)
関数: tex (expr, destination)
関数: tex (expr, false)
関数: tex (label)
関数: tex (label, destination)
関数: tex (label, false)

TeXドキュメントの準備に適した式の表現を出力します。 結果は、ドキュメントの断片です。 それは、より大きなドキュメントにコピーすることができますが、それ自身では処理されません。

tex (expr)は、exprのTeX表現をコンソールに出力します。

tex (label)は、labelで名付けられた式のTeX表現を出力し、 (式の左に表示されるよう)等式ラベルをそれに割り当てます。 TeX等式ラベルは、Maximaラベルと同じです。

destinationは、出力ストリームもしくはファイル名です。 destinationがファイル名の時、 texは、ファイルに出力を追加します。 関数openwopenaは、出力ストリームを生成します。

tex (expr, false)tex (label, false)は、 TeX出力を文字列として返します。

texは、最初の引数がラベルかどうか見るためにテストした後、最初の引数を評価します。 クォートクォート''は、引数の評価を強制し、 その結果、テストをだめにして、ラベルを妨げます。

texputも参照してください。

例:

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

tex (expr, false)はTeX出力を文字列として返します。

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

eのTeX出力を表現する文字列を返します。 TeX出力は、等式や他の任意の環境のため、区切り記号で囲まれません。

例:

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

アトムaのためのTeX出力を割り当てます。 ここでaはシンボルもしくは演算子名です。

texput (a, s)は、 tex関数に、 aの代わりに文字列sをTeX出力に入れるようにさせます。

texput (a, f)は、 tex関数に、 TeX出力を生成するために関数fをコールさせます。 fは、1つの引数を受け入れなければいけません。 ここで、引数は、演算子aを持つ式で、文字列(TeX出力)を返さなければいけません。 fは、入力式の引数のためにTeX出力を生成するよう、tex1をコールするかもしれません。

operator_typeprefix, infix, postfix, nary, もしくは nofix,として、 texput (a, s, operator_type)は、 tex関数に aの代わりにsをTeX出力に入れるようにさせ、 適切な位置に挿入された手キスを置くようにさせます。

texput (a, [s_1, s_2], matchfix)は、 tex関数に、 aの引数のそれぞれの側にs_1s_2を TeX出力に入れるようにさせます。 (もし複数なら)引数はコンマで分離されます。

texput (a, [s_1, s_2, s_3], matchfix)は、 tex関数に、 引数を分離するs_3と一緒に aの引数のそれぞれの側にs_1s_2をTeX出力に入れるようにさせます。

例:

変数にTeX出力を割り当てます。

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

任意の関数(演算子ではない)にTeX出力を割り当てます。

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

TeX出力を生成する関数をコールします。

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

前置演算子にTeX出力を割り当てます。

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

中置演算子にTeX出力を割り当てます。

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

後置演算子にTeX出力を割り当てます。

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

n項演算子にTeX出力を割り当てます。

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

無項演算子にTeX出力を割り当てます。

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

マッチフィックス演算子にTeX出力を割り当てます。

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

texによって出力されるTeX環境をカスタマイズします。 これらの関数によって保持されるように、TeX環境は2つの文字列から成ります; 1つは他の任意のTeX出力に前もって出力されるもの、もう1つは後に出力されるものです。

式のトップレベル演算子のTeX環境だけが、出力されます; 他の演算子に関連づけられたTeX環境は無視されます。

get_tex_environmentは、 演算子opに適用されたTeX環境を返します; もし他の環境が割り当てられていなければ、デフォルトを返します。

set_tex_environmentは、 演算子opのためのTeX環境を割り当てます。

例:

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

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

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

texによって出力されるTeX環境をカスタマイズします。 これらの関数によって保持されるように、TeX環境は2つの文字列から成ります; 1つは他の任意のTeX出力に前もって出力されるもの、もう1つは後に出力されるものです。

get_tex_environment_defaultは、 トップレベル演算子が(set_tex_environmentで割り当てられたような)特定のTeX環境を持たない式に適用されたTeX環境を返します。

set_tex_environment_defaultは、デフォルトのTeX環境を割り当てます。

例:

(%i1) get_tex_environment_default ();
(%o1)                       [$$, $$]
(%i2) tex (f(x) + g(x));
$$g\left(x\right)+f\left(x\right)$$
(%o2)                         false
(%i3) set_tex_environment_default ("\\begin{equation}
", "
\\end{equation}");
(%o3) [\begin{equation}
, 
\end{equation}]
(%i4) tex (f(x) + g(x));
\begin{equation}
g\left(x\right)+f\left(x\right)
\end{equation}
(%o4)                         false
関数: with_stdout (f, expr_1, expr_2, expr_3, …)
関数: with_stdout (s, expr_1, expr_2, expr_3, …)

expr_1, expr_2, expr_3, ...を評価し、 生成された出力すべてをファイルfもしくは出力ストリームsに書き込みます。 評価される式は出力に書き込まれません。 出力は、print, display, grindや他の関数によって生成されたものです。

グローバルフラグ file_output_appendは、 with_stdoutが出力ファイルfに追加するか切り詰めるか決めます。 file_output_appendtrueの時、 with_stdoutは出力ファイルに追加します。 そうでなければ、with_stdoutは出力ファイルを切り詰めます。 どちらの場合も、もしファイルが存在しないなら、with_stdoutはファイルを生成します。

with_stdoutは最後の引数の値を返します。

writefileも参照してください。

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

Maximaセッションのトランスクリプトをfilenameに書き込むことを開始します。 ユーザーとMaximaの間の対話すべてが、ちょうどコンソールに現れるように、このファイルに記録されます。

トランスクリプトがコンソール出力フォーマットで出力されるので、 それはMaximaに再ロードすることはできません。 最ロード可能な式を含むファイルを作るには、 savestringoutを参照してください。 saveは、Lisp形式の式を保存する一方、stringoutは、Maxima形式 の式を保存します。

filenameが既に存在している時、writefileの実行の効果は、 基礎となるLisp実装に依存します; トランスクリプファイルは負かされるかもしれませんし、ファイルは追加されるかもしれません。 appendfileは、いつもトランスクリプトファイルに追加します。

以前の対話の表示を保存するためにwritefileの後、 playbackを実行するのが便利かもしれません。 playbackは入力と出力変数(%i1, %o1, など)だけを表示し、 (戻り値と対照的に)関数の中のプリント文によって生成された任意の出力はplaybackによって表示されません。

closefileは、writefileappendfileが開いたトランスクリプトファイルを閉じます。


Next: , Previous:   [Contents][Index]