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

2015-03-20 2025-04-07

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

  • texrpnmath-0.4

    • 0.3 からの変更点:

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

      • texrpnmath.el 追加。それに伴う変更
    • 0.1 からの変更点:

      • Undo 機能追加 等

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

.tex ファイルに埋め込んだ例 ($\mathrm{Lua}\LaTeX$)

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. (参考) $\mathrm{AUC}\TeX$ で使用する場合の例: 以下を .emacs を追加すると C-c m, C-c ~ に texrpnmath-insert, texrpnmath-mode がそれぞれバインドされます。 なお、 C-c ~ は $\mathrm{AUC}\TeX$ では 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) で入力開始及び終了

    • `a␣sin␣` などのように入力 (但し はスペース)

以下の例では、 ` 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

ダウンロード