LaTeXでRPN的に数式を入力してみる

嬉しい人がいるかどうか分からないけど、公開してみます。
仕様は大きく変更になる可能性があります。

  • texrpnmath-0.4
    • 0.3 からの変更点:
      • 大幅に改訂。[elisp] texrpmmath-mode (on-the-spot 入力) 実装。
      • ギリシャ文字の入力等において、 RPN による LaTeX 数式エディタパクら参考にさせていただきました。
    • 0.2 からの変更点:
      • texrpnmath.el 追加。それに伴う変更
    • 0.1 からの変更点:
      • Undo 機能追加 等

LuaLaTeX を使うと .texファイルに埋め込むことができますが、スクリプト単体でも使用できます。詳しくは README を参照して下さい。

.tex ファイルに埋め込んだ例 (LuaLaTeX)

Emacs での使用

インストール

  1. texrpnmath.lua を適切な場所にコピー
  2. texrpnmath.el を適切な場所にコピー
  3. 以下を .emacs に追加 (SOMEWHERE は適切に変更して下さい)
    (require 'texrpnmath)
    ;; or
    ;;  (autoload 'texrpnmath-insert "texrpnmath.el" nil t)
    ;;  (autoload 'texrpnmath-mode "texrpnmath.el" nil t)

    (custom-set-variables '(texrpnmath-script "SOMEWHERE/texrpnmath.lua"))
  4. その後 eval (あるいは Emacs 再起動) し、M-x texrpnmath-mode でマイナーモードへ移行します。
  5. (参考) AUCTeX で使用する場合の例: 以下を .emacs を追加すると C-c m, C-c ~ に texrpnmath-insert, texrpnmath-mode がそれぞれバインドされます。
    なお、C-c ~ は AUCTeX では LaTeX-math-mode に割り当てられています。
    これをオーバーライドしたくない場合は別のキーを使用するか、 M-x texrpnmath-mode で起動して下さい。
    ;; AUCTeX
    (eval-after-load "latex"
      '(progn
         (add-hook 'LaTeX-mode-hook
               '(lambda ()
              (local-set-key "\C-cm" 'texrpnmath-insert)
              ;; LaTeX-math-mode` をオーバーライド
              (local-set-key "\C-c~" 'texrpnmath-mode)))))

使用方法 (マイナーモード)

  • M-x texrpnmath-mode で起動
  • ` (backquote) で入力開始及び終了
  • `[SPC]a[SPC]sin[SPC]` などのように入力

以下の例では、
` x _ s i n _ x _ c o s _ f r a c _ `
(但し _ はスペース) と入力しています。

使用方法 (従来手法)

  • M-x texrpnmath-insert で起動
  • 以下の画像のように入力
  • 最後に .i で元バッファーへ反映

スクリプトとしての使用

スクリプトとして実行すると、こんな感じになります。

$ lua texrpnmath.lua
RPN> a sin
                                1:      \sin a
RPN> b cos
                                1:      \sin a
                                2:      \cos b
RPN> frac
                                1:      \frac{\sin a}{\cos b}
RPN> .show .clear .quit
\frac{\sin a}{\cos b}

.u (または .undo) で直前の入力 (行単位) を取り消すことができます:

RPN> a sin
                                1:      \sin a
RPN> b sin
                                1:      \sin a
                                2:      \sin b
RPN> frac
                                1:      \frac{\sin a}{\sin b}
RPN> .u
                                1:      \sin a
                                2:      \sin b

ダウンロード

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です