Maxima

maxima.el の説明

インストール方法

  1. maxima.elmaxima-font-lock.el をパスの通ったところに置きます
  2. .emacs ファイルに以下の行を追加します:
    (autoload 'maxima-mode "maxima" "Maxima mode" t)
    (autoload 'maxima "maxima" "Maxima interaction" t)
    
  3. 拡張子 .max をmaxima用にするための設定を好みに応じて追加しましょう:
    (setq auto-mode-alist (cons '("\\.max" . maxima-mode) auto-mode-alist))
    
  4. maximaのヘルプを利用するために以下の変数を設定しておくとよいでしょ う:
    maxima-info-dir
    maxima infoファイルが置かれているディレクトリ. デフォルトでは "/usr/local/info/"です.
    maxima-info-index-file
    インデックスが含まれているmaxima infoファイル名. デフォルトでは "maxima.info-15"です.
  5. M-x maxima-mode でバッファをmaximaモードにするには, .emacs に以下の行を追加します:
    (autoload 'maxima-mode "maxima" "Maxima editing mode" t)
    
  6. M-x maxima でインタラクティブモードを開始するには, .emacs に次の行 を追加します:
    (autoload 'maxima "maxima" "Running Maxima interactively" t)
    

maxima-mode

現在のバッファをmaxima-modeにするには M-x maxima-mode とタイプします. Maximaモードには次のコマンドが用意されています:
M-C-a フォームの先頭に移動します
M-C-e フォームの末尾に移動します
M-C-b S式の先頭に移動します
M-C-f S式の末尾に移動します

また以下のコマンドも用意されています:

M-h    現在のフォームをマーク
C-c)   現在のリージョンで括弧の対応をチェック
C-cC-) 現在のフォームで括弧の対応をチェック

Maximaモードでは M-TAB による補完コマンドも用意されています. 複数の候 補がある場合には候補がバッファに表示されます. 変数 maxima-use-dynamic-complete がnon-nilなら, M-TAB で可能な補完をサイク リックに行います.

バッファの一部がMaximaプロセスに送られます. もしプロセスが実行されてい なければ, まずプロセスを実行するところから始めます:

C-cC-r リージョンをMaximaに送る
C-cC-b バッファをMaximaに送る
C-cC-c 行をMaximaに送る
C-cC-e フォームをMaximaに送る
C-RET  フォームを構成する最小の行セットを送り, 次行へ移動
M-RET  フォームを構成する最小のリージョンセットを送り, 次行へ移動
C-cC-l Maximaに読み込むファイル名を入力

Maximaに何かが送られると, Maximaプロセスの実行バッファが現れます. C-c C-p でも同様に表示されます. Maximaに情報を送るコマンドが発効されると, 括弧がきちんと対応しているか どうか, リージョン(バッファ/行/フォーム)を検査します. 引数をつければ検 査を省略します. C-cC-k でMaximaプロセスを切ることができます. 通常は確 認されますが, 確認も省略したければ引数をつけて C-cC-k を与えます.

デフォルトでは, 字下げは前の行と同じレベルに設定されています. 開き括弧 には空白が追加されます. インデントの振舞いは M-x maxima-change-indent-style で変更することができます. 以下が選択できま す:

Standard
簡単なインデント
Perhaps smart
開き括弧, "do"ループなどをもとに適切なインデント を設定
デフォルトをどちらに設定してもよいでしょう. どちらでも, M-x maxima-untab でインデントレベルを下げることができます.

最後に, 以下のコマンドも紹介しておきます:

C-cC-d         Maximaのトピックについてのヘルプ
C-cC-m         Maxima info マニュアルを読む
C-cC-h (f12)   カーソル位置にあるシンボルのヘルプ
C-cC-a (M-f12) カーソル位置にあるシンボルのに関連した事柄

Maxima をインタラクティブに実行する

M-x maxima によりMaximaをインタラクティブに実行できます.

Maximaプロセスバッファでは, RET を押すと括弧の対応が調べられ, 入力とし て送られます. C-RET であれば検査なしで送られます.



;; <M-tab> will complete the Maxima symbol as much as possible, providing
;;      a completion buffer if there is more than one possible completion.
;;      If `maxima-use-dynamic-complete' is non-nil, then <M-tab> will
;;      cycle through possible completions.

;; <C-M-tab> will complete the input line, based on previous input lines.
;; C-c C-d will get help on a Maxima topic.
;; C-c C-m will bring up the Maxima info manual.
;; C-cC-k will kill the process and the buffer, after asking for
;;   confirmation.  To kill without confirmation, give C-M-k an
;;   argument.

;; To scroll through previous commands,
;; M-p will bring the previous input to the current prompt,
;; M-n will bring the next input to the prompt.
;; M-r will bring the previous input matching
;;   a regular expression to the prompt,
;; M-s will bring the next input matching
;;   a regular expression to the prompt.

;; ** Running Maxima from the minibuffer **
;; The command M-x maxima-minibuffer
;; will allow you to interact with Maxima from the minibuffer.  
;; The arrows will allow you to scroll through previous inputs.
;; The line
;;  (autoload 'maxima-minibuffer "maxima" "Maxima in a minibuffer" t)
;; in your .emacs will make sure the function is available.
;; If the variable maxima-minibuffer-2d is non-nil, then the output
;; will be in Maxima's 2d output form, otherwise it will be in 
;; Maxima's 1d output form.  (For XEmacs, only the 1d form is available,
;; since the minibuffer isn't resizable.)
;; The command maxima-insert-last-minibuffer-output will insert
;; the last minibuffer output; if the output is in 2d, this will look
;; unpleasant.  With an argument, maxima-insert-last-minibuffer-output 
;; will insert the TeX form of the output.  (The variable 
;; maxima-minibuffer-get-tex need to be non-nil for this to work.)