[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

13. File Input and Output


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

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

Categories:  Syntax


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

13.2 Files

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

   appendfile           batch                 batchload
   closefile            file_output_append    filename_merge
   file_search          file_search_maxima    file_search_lisp
   file_search_demo     file_search_usage     file_search_tests
   file_type            file_type_lisp        file_type_maxima
   load                 load_pathname         loadfile
   loadprint            pathname_directory    pathname_name
   pathname_type        printfile             save
   stringout            with_stdout           writefile

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


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

13.3 Functions and Variables for File Input and Output

関数: appendfile (filename)

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

closefileappendfilewritefileが開いた筆記録ファイルを閉じます。

Categories:  File output · Console interaction

関数: batch  
    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ようなものです。 この場合、batchrun_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も参照してください。

Categories:  Session management · File input

関数: batchload (filename)

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

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

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

batchloadも参照してください。

Categories:  Session management · File input

関数: closefile ()

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

Categories:  File output · Console interaction

オプション変数: file_output_append

デフォルト値: false

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

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

Categories:  File output · Global flags

mo

関数: filename_merge (path, filename)

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

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

Categories:  File input · File output

関数: file_search  
    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を参照してください。

loadfile_search_maximafile_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"])$

は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に展開されます。

Categories:  File input · Global variables

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

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_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を処理する時 グローバル変数 _, __, %, %thloadがコールされた時バインドされていた値を持ちます。

loadコマンドが呼ばれる前に defstructが構造体を定義しているなら、 それらは構造体として再読み込みされるだけということも注意してください。

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

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

loadは引数を評価します。

Categories:  Session management · File input

システム変数: load_pathname

デフォルト値: false

関数 loadloadfile, 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式を評価します。 loadfilefile_searchを呼び出しません。 なのでファイル拡張子とファイルを見つけるのに filenameは必要なパスも含まなければいけません。

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

Categories:  Session management · File input

オプション変数: loadprint

デフォルト値: true

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

Categories:  File input · Global flags

関数: directory (path)

ファイルシステムの pathの中のファイルとディレクトリのリストを返します。

pathはワイルドカード文字(すなわち、パスの未指定部分を表す文字)を含むかもしれません。 それはほとんどのシステム上で少なくともアスタリスクを含み、システムによっては可能な他の文字も含みます。

ディレクトリ はLisp関数 DIRECTORYを頼りにしていて、実装依存の振る舞いがあるかもしれません。

Categories:  File input

関数: 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が現在のワーキングディレクトリからアクセス可能なファイル名なら そのファイルがコンソールに表示されます。 そうでないなら printfilefilename_mergeを介して file_search_usageの要素のそれぞれに pathを追加することでファイルを見つけようとします。

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

Categories:  File input · Console interaction

関数: save  
    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, …)

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

saveはデータを Lisp式の形式で保存します。 もし filename.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を評価し、他の引数すべてをクォートします。

Categories:  Session management · File output

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

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

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

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

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

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

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

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

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

Categories:  Session management · File output

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

Categories:  File output

関数: writefile (filename)

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

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

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

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

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

Categories:  File output · Console interaction


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

13.4 Functions and Variables for TeX Output

wxMaximaの組み込みの TeX出力機能はここで記述する関数を使いませんが、 代わりにそれ自身用の実装を使うことに注意してください。

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

Categories:  TeX output · File output

関数: tex1 (e)

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

例:

 
(%i1) tex1 (sin(x) + cos(x));
(%o1)                     \sin x+\cos x

関数: texput  
    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出力)を返さなければいけません。 ftex1をコールし、入力式の引数のためにTeX出力を生成するかもしれません。

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

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

texput (a, [s_1, s_2, s_3], matchfix)とすると、 tex関数は TeX出力の aの引数の両側に s_1s_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環境は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

Categories:  TeX output

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

Categories:  TeX output


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

13.5 Functions and Variables for Fortran Output

オプション変数: fortindent

デフォルト値: 0

fortindentfortranコマンドが表示する式の左マージンインデントを制御します。 0は標準のプリントアウト(すなわち6スペース)を与え、 正の値は式を更に右に印字するようにします。

関数: fortran (expr)

Fortran文として exprを印字します。 出力行はスペースでインデントされます。 もし行が長過ぎるなら、 fortranは継続行を印字します。 fortranは指数演算子 ^**として印字し、 複素数 a + b %iを形式 (a,b)で印字します。

exprは等式も取り、もしそうなら fortranは、 等式の右辺を左辺に割り当てる割り当て文を印字します。 特にもし exprの右辺が行列名なら、 fortranは行列の要素それぞれに対する割り当て文を印字します。

もし exprfortranが認識する何かでないなら、 クレームすることなく式を grindフォーマットで印字します。 fortranはリスト、配列、関数について知りません。

fortindentfortranコマンドが表示する式の左マージンインデントを制御します。 0は標準のプリントアウト(すなわち6スペース)を与え、 正の値は式を更に右に印字するようにします。

fortspacestrueの時、 fortranは印字行それぞれを80カラムまでスペースで埋めます。

fortranは引数を評価します; 引数のクォートは評価を無効にします。 fortranはいつも doneを返します。

例:

(%i1) expr: (a + b)^12$
(%i2) fortran (expr);
      (b+a)**12
(%o2)                         done
(%i3) fortran ('x=expr);
      x = (b+a)**12
(%o3)                         done
(%i4) fortran ('x=expand (expr));
      x = b**12+12*a*b**11+66*a**2*b**10+220*a**3*b**9+495*a**4*b**8+792
     1   *a**5*b**7+924*a**6*b**6+792*a**7*b**5+495*a**8*b**4+220*a**9*b
     2   **3+66*a**10*b**2+12*a**11*b+a**12
(%o4)                         done
(%i5) fortran ('x=7+5*%i);
      x = (7,5)
(%o5)                         done
(%i6) fortran ('x=[1,2,3,4]);
      x = [1,2,3,4]
(%o6)                         done
(%i7) f(x) := x^2$
(%i8) fortran (f);
      f
(%o8)                         done

オプション変数: fortspaces

デフォルト値: false

fortspacestrueの時、 fortranは印字行それぞれを80カラムまでスペースで埋めます。


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by 市川雄二 on June, 21 2016 using texi2html 1.76.