[ < ] | [ > ] |  | [ << ] | [上] | [ >> ] |  |  |  |  | [冒頭] | [目次] | [見出し] | [ ? ]

# 13. File Input and Output

[ < ] | [ > ] |  | [ << ] | [上] | [ >> ] |  |  |  |  | [冒頭] | [目次] | [見出し] | [ ? ]

## 13.1 Comments

Maximaの入力中 `/*`と `*/`の間のテキストはどんなものでもコメントです。 です。

Maximaのパーサはコメントを入力ストリームでのトークンを見つけるための空白として扱います; コメントで常にトークンは終わります。 `a/* foo */b`のような入力は１つのトークン`ab`ではなく、２つのトークン `a`と`b`を含みます。 ほかの点では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

·

Categories: Syntax

[ < ] | [ > ] |  | [ << ] | [上] | [ >> ] |  |  |  |  | [冒頭] | [目次] | [見出し] | [ ? ]

## 13.2 Files

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

`save`, `load`, `loadfile`, `stringout`, `batch`, `demo`, `writefile`, `closefile`, `appendfile`。

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

[ < ] | [ > ] |  | [ << ] | [上] | [ >> ] |  |  |  |  | [冒頭] | [目次] | [見出し] | [ ? ]

## 13.3 Functions and Variables for File Input and Output

関数: appendfile (filename)

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

  `closefile` は `appendfile`や `writefile`が開いた筆記録ファイルを閉じます。

  ·

  Categories: File output ·Console interaction

関数: 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`はエラーがない限りファイルの中のすべての入力式を評価します。 もしユーザー入力が（例えば、 `asksign` や `askinteger` によって）要求されたら、 `batch`は必要な入力を入手するためポーズして、入手後評価を続けます。

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

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

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

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

  ·

  Categories: Session management ·File input

関数: batchload (filename)

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

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

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

  `batch` や `load` も参照してください。

  ·

  Categories: Session management ·File input

関数: closefile ()

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

  ·

  Categories: File output ·Console interaction

オプション変数: file_output_append

  デフォルト値: `false`

  `file_output_append`は ファイル出力関数が出力ファイルに追加するかファイルを新たに書き換えるか(truncate)決めます。 `file_output_append`が`true`の時 ファイル出力関数は出力ファイルに追加します。 そうでないなら出力ファイルは書き換えられます。

  `save` , `stringout` , `with_stdout` は `file_output_append`に関係します。 出力ファイルを書き出す他の関数は `file_output_append`に関係しません。 特に、プロット関数や変換関数は常に出力ファイルを書き換え、 `tex` や `appendfile` はいつも追加します。

  ·

  Categories: File output ·Global flags

mo

関数: filename_merge (path, filename)

  pathと filenameから限定された(modified)パスを構成します。 もし pathの最後の構成要素が `###.something`の形なら、 構成要素は `filename.something`に置き換えられます。 そうでないなら最後の構成要素は単に filenameに置き換えられます。

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

  ·

  Categories: File input ·File output

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

  `file_search`はファイル filenameを検索し、 もし見つかったら（文字列として）ファイルへのパスを返します; 見つからないなら `file_search`は `false`を返します。 `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/###.mac`が `file_search_maxima`に中にあるという仮定の下で 上記すべては同じファイルを見つけます。

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

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

  `load` は `file_search_maxima`と `file_search_lisp` を を検索ディレクトリとして指定して `file_search`を呼び出します。

  ·

  Categories: File input

オプション変数: 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"])$

  は２つのディレクトリを追加します。 ファイル `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`に展開されます。

  ·

  Categories: File input ·Global variables

関数: file_type (filename)

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

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

  `pathname_type` も参照してください。

  デフォルト値に関しては `file_type_maxima` と `file_type_lisp` を 参照してください。

  例:

      (%i2) map('file_type,
                ["test.lisp", "test.mac", "test.dem", "test.txt"]);
      (%o2)            [lisp, maxima, maxima, object]

  ·

  Categories: File input

オプション変数: 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_maxima`と `file_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`は引数を評価します。

  ·

  Categories: Session management ·File input

システム変数: load_pathname

  デフォルト値: `false`

  関数 `load` や `loadfile` , `batchload` を使ってファイルがロードされる時、 システム変数 `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

  ·

  Categories: File input

関数: loadfile (filename)

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

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

  ·

  Categories: Session management ·File input

オプション変数: loadprint

  デフォルト値: `true`

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

  - `loadprint`が `true`の時いつもメッセージを表示します。
  - `loadprint`が `'loadfile`の時ファイルが関数 `loadfile`によってロードされた時だけメッセージを表示します。
  - `loadprint`が `'autoload`の時 ファイルが自動的にロードされた時だけメッセージを表示します。 `setup_autoload` を参照してください。
  - `loadprint`が `false`の時メッセージは決して表示されません。
  ·

  Categories: File input ·Global flags

オプション変数: packagefile

  デフォルト値: `false`

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

  ·

  Categories: Translation flags and variables

関数: 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

  ·

  Categories: File input

関数: printfile (path)

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

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

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

  ·

  Categories: File input ·Console interaction

関数: 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_nの i番目の要素を表示します。

  例:

      (%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_append`が `true`の時、 `save`は出力ファイルに追加します。 そうでないなら `save`は出力ファイルを切り詰めます。 どちらの場合も、もしファイルが存在しないなら `save`はファイルを生成します。

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

  特殊形式 `save (filename, [m, n])`は、 mから nまでの入力ラベル、出力ラベルの値を保存します。 mと nは整数リテラルでなければならないことに注意してください。 例えば、`save ("foo.1", %i42, %o42)`のように、 入力ラベル、出力ラベルは１つ１つ保存することもできます。 `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_maxima` や `showtime` のようなシステム変数に新しい値を割り当てていたなら、 保存項目はそれらを含みます。 `myoptions` を参照してください。

  `save`は filenameを評価し、他の引数すべてをクォートします。

  ·

  Categories: Session management ·File output

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

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

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

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

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

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

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

  特別な形 `stringout (filename, functions)`は （グローバルリスト `functions` で指定される） ユーザー定義関数すべてをファイルに書き込みます。

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

  ·

  Categories: Session management ·File output

関数: 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`はファイルに出力を追加します。 関数 `openw`と `opena`は出力ストリームを生成します。

  `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$$

  ·

  Categories: TeX output ·File output

関数: 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は `tex1`をコールし、入力式の引数のためにTeX出力を生成するかもしれません。

  `texput (a, s, operator_type)`とすると、 `tex`関数は aの代わりに sをTeX出力に書き足し、 適切な位置に書き足されたテキストを配置します。 ここで operator_typeは `prefix`か, `infix`, `postfix`, `nary`, `nofix`のいずれかです。

  `texput (a, [s_1, s_2], matchfix)`とすると、 `tex`関数は TeX出力の aの引数の両側に s_1と s_2を書き足します。 （もし複数なら）引数はコンマで分離します。

  `texput (a, [s_1, s_2, s_3], matchfix)`とすると、 `tex`関数は TeX出力の aの引数の両側に s_1と s_2を書き足します。 引数は s_3で分離します。

  例:

  変数に 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

  ·

  Categories: TeX output

関数: get_tex_environment (op)
関数: set_tex_environment (op, before, after)

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

  式のトップレベル演算子の 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

  ·

  Categories: TeX output

関数: get_tex_environment_default ()
関数: set_tex_environment_default (before, after)

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

  `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

  ·

  Categories: TeX output

関数: 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_append`が `true`の時、 `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

  ·

  Categories: File output

関数: writefile (filename)

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

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

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

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

  `closefile` は `writefile`や `appendfile`が開いたトランスクリプトファイルを閉じます。

  ·

  Categories: File output ·Console interaction

[ << ] | [ >> ] |  |  |  |  |  | [冒頭] | [目次] | [見出し] | [ ? ]

この文書は市川 雄二によって2012年1月月5日にtexi2html 1.82を用いて生成されました。