imaxima でのデータ書き出し

参考 Maxima 5.38.1 Manual: 13. File Input and Output

emacs 上の imaxima でデータをファイル(hoge.out)に書き出しをしようとして

with_stdout("hoge.out", for i:0 thru 9 do print(i, " ", i^2));

とすると出力が LaTeX のタグを含んだ形になってしまう。これは imaxima が emacs 上での表示をきれいにするために LaTeX で整形して出力しているのでしょうがない。

そこで print のかわりに printf を使うとうまくいく。printf の出力ストリームに true を与えてやる。

with_stdout("hoge.out", for i:0 thru 9 do printf(true, "~d ~d~%", i, i^2));

printf のフォーマットには common lisp の format の書式を与えることができる。~% は改行を意味する。
とくに理由がなければ openw, close を使うよりは with_stdout を使うべき。

ファイル末尾にデータを追加していくには グローバル変数 file_output_append を true にする。この値はデフォルトでは false でファイル上書きになっている。

file_output_append : true;

追記
リスト,配列,行列などのデータを書き出すなら write_data 関数を使うと良い