RPN2TeX
Translation to English.
2009/4/15更新
もしこのソフトウエアが役に立ちましたら、寄付を頂けると幸いです。
I would appreciate receiving a donation, if this software is useful for you.
更新履歴
- 2009/4/15
ユニバーサルバイナリ版の配布を開始しました。自動翻訳ページのリンクを修正しました。
- 2007/1/12
RPN2TeX Ver.0.8をリリース。追加機能等については、リリースノートを参照してください。
- 2004/10/22
既知の問題点を追加。
- 過去の更新履歴
目次
- 概要
- スクリーンショット
- 動作確認済み環境
- ダウンロード
- 種別
- マニュアル(別ページ)
- 免責
- リリースノート
- 既知の問題点
- バグ報告の方法
- RPNについて
- TeX形式の式をRPNで入力する理由
- 謝辞
- 参考文献
1. 概要
RPN2TeXは、TeX形式の数式をRPN(Reverse Polish Notation:逆ポーランド記法)によって入力するためのソフトウエアです。
TeXは数式の記述に定評がある組版ソフトですが、テキストエディタ等で数式を入力する場合、以下のような不便さを伴います。
- 入力中の数式のコンパイル結果がリアルタイムに確認できない
- 括弧の対応が煩雑になる
そこで、本ソフトではRPNでの数式入力により、以下を実現しています。
- 入力中の数式のリアルタイムプレビュー
- 括弧の自動対応
より詳しい説明はTeX形式の数式をRPNで入力する理由を参照してください。
また、Ramón Manuel Figueroa-Centeno氏によるスクリプトを使えばTeXShopとのコピー&ペーストを自動化することもできます。
2. スクリーンショット
メインウインドウ
演算子メニューと演算子パレット
3. 動作確認済み環境
OS: Mac OS X 10.4.11
CPU: Power PC G4
4. ダウンロード
- RPN2TeX本体
※VirusBarrier X5 10.5.7にてウイルスチェック済み。ウイルス定義:09/04/14
※RPN2TeX中でプレビュー画像を表示するには、pdflatexもしくはlatexとdvipsのインストールとコマンドパスの設定が必要です。
5. 種別
フリーウエア(寄付は歓迎致します)
7. 免責
このソフトウェアの使用による、いかなる損害に対しても、作者は責任を負いません。
8. リリースノート
2007/1/12 Ver.0.8
Ver.0.8での変更点
- メニューを整理した。
- 演算子パレットを導入した。
- AMS-TeXの記号・演算子を追加した。
- 演算子を追加した。
- キー入力で即座に反応する演算子(+,-など)の実装を変更し、キー入力を直接取り込み、演算子の適用を行うようにした。
- スタックに文字列をプッシュもしくは演算子の適用を行った後、Undoを行う際、入力フィールドの直前の状態を復元するようにした。
- スタックの内容を直接編集するウインドウをリサイズすると、メインウインドウのドローワの高さがおかしくなる問題を解決した。
- 二項演算子\timesで左辺に自動括弧付けがされない問題を解決した。
- 入力フィールドに文字がある状態で、メニューから演算子を適用したとき、コンパイルが二重に行われる問題を解決した。
2004/7/30 Ver.0.7
Ver.0.7での変更点
- pdflatexによるプレビューの表示を行えるようにした。
- (限定的だが)ユーザが演算子を追加できるようにした。
- 常に最下部のスタックが表示されるよう、自動的にスクロールするようにした。
- RPN2TeXを終了しても、ウインドウの位置が保持されるようにした。
- Symbolsメニューの項目をパレットから入力できるようにした。
- Relational operatorsメニューで欠けていた演算子を追加した。
- 環境設定ウインドウで、HeaderとFooterをデフォルトに戻すためのボタンを追加した。
- 単項演算子expを適用すると勝手に括弧[]が付いてしまう問題を修正した。
- 設定ウインドウで設定を変更後、Cancelボタンを押し、再度設定ウインドウを開くと、変更された部分がそのまま残っている、という問題を修正した。
2004/4/23 Ver.0.6.1
Ver.0.6.1での変更点
- 同一マシンで、あるユーザがRPN2TeXを起動した後に、別のユーザがRPN2TeXを起動したときにスタック表示部に何も表示されない問題を修正。これに伴い、一時ファイルの保存先を/private/tmp/RPN2TeX(プロセスID)/に変更した。
- Previewボタンのキーボードショートカットの間違いを修正。修正後はコマンドキー + オプションキー + Pになっている。
- メニューバーからEdit -> Stack -> Swapを選択したときに出てくるドロワ内の数値の初期値を(左から)2と1に変更。
2004/4/20 Ver.0.6
Ver.0.6での変更点
- プレビュー機能を追加した。
- スタックの内容を入れ替える機能を追加した。
- スタックの内容を直接編集する機能を追加した。
- スタックの内容を一括消去する機能を追加した。
- 入力フィールドが空の状態でエンターキーを押すと、最下部のスタックの内容が複製されるようにした。
- 演算子+, -, *, /は、直前にバックスラッシュを付けることで、演算子の適用を解除できるようにした。
- オプションキーを押しながらOperatorsメニューの項目を選択することで、演算子の適用を解除できるようにした(ただし、オプションキーを押す→Operatorsメニューを開く→項目を選択という順序で操作する必要がある。Operatorsメニューを開く→オプションキーを押す→項目を選択だとうまくいかない。どちらでも操作できるようにしたかったが、やり方が分からなかった)。
- RPN2TeXを終了しても、スタックの内容が保存されているようにした(終了時の状態を保持)。ただし、プレビューの画像は保存されない。
- 演算子!(階乗)を追加した。
- ,(カンマ)を入力するためのコマンド,を追加した。
- f(x)のような関数を入力するためのコマンド\funcを追加した。
- 自動括弧付け機能の動作を改善した。
- a [Enter] b + c [Enter] d + + と入力すると c+d に括弧がついてしまう問題を修正。
- ~(チルダ)で負号をつけたときに、括弧がつかない問題を修正。
- 最下部のスタックに積分か総和か総積がある場合、^演算子を適用すると括弧がつくようにした。
2004/4/2 Ver.0.5(ファーストリリース)
9. 既知の問題点
- スタックの内容を直接編集するためのウインドウ(メニューバーからEdit -> Stack-> Editを選択し、メインウインドウの右側のドローワでOKを押すと現れる)をリサイズすると、メインウインドウの右側に出てくるEdit及びSwapドローワの高さがおかしくなる。
- 追加演算子の演算子内容の引数に#b1等の「自動的に括弧付けを行わせる引数」が入っている場合、当該演算子を適用すると、メインウインドウの設定でBracket automaticallyを切ってあっても自動括弧付けが実行されてしまう。
- 入力フィールドに"a+b"をペーストして、後ろから文字を消していくと、bを消した時点で、+が演算子として認識されてしまう。
- 現在の実装方法は「入力フィールドの最後に+等があったら演算子として認識する」ようにしているのだが、これだと上のような問題が発生する。解決するには「キー入力を直接拾って、入力されたキーが演算子かどうかを判定」すれば良いことは明らかだが、多少労力がかかる。
- 自動括弧付け機能がまだ完全ではない。
- そもそも、どこに括弧を付けるかは人それぞれなので、「完全」を実現するのは無理である。ただ、目標としては、最低限必要だと思われるところには付けるようにしておきたい。
- プレビューの画像に日本語の文字を表示できない。
- プレビューのエラーログを表示する機能がない。
- コンソールを使えば、LaTeXの処理過程を見ることはできる。また、/private/tmp/RPN2TeX(プロセスID)/を一時ファイル置き場にしているので、ここにLaTeXのログもある。
- X_{3}(s)という出力を得るには、X [Enter] 3 _ (s) [Cmd + Enter]とタイプする必要があり、多少入力しづらいかもしれない。
- Ver.0.6では、コマンド\funcを導入することで解決を図っている。上の例を入力するには、s [Enter] X [Enter] 3 _ \func [Enter]とタイプする。
- 結果としてタイプ量が増えてしまったので、あまり良策ではないかもしれないが、\funcには次のような意味が込められている(f(x)と入力する場合)。
| 日本語: |
x |
という変数を持った |
f |
という |
関数 |
| 入力: |
x |
[Enter] |
f |
[Enter] |
\func [Enter] |
- x [Enter] yとタイプし、入力フィールドのyを選択して、/をタイプするとスタック1が\frac{}{x}となってしまう。
- 実装上、こうなってしまうのは仕方ないかもしれない。
- いったん終了すると、スタックの内容が消去される。自動的に保存するようにした方が良いかも。
- Ver.0.6では終了時の状態を保存するようにした。ただし、プレビューの画像は保存されないようになっている。
多分まだまだあります。
10. バグ報告等の方法
作者へメールを出すかこちらの掲示板へどうぞ。報告されたバグや不具合は、できるだけ修正するようにしますが、作者にその義務は無いものとします。
11. RPNについて
RPNは、数式の記述の一つで、演算子を後に置くことから後置記法とも呼ばれます。RPNは一般的な中置記法(例: 1 + 2)とは見た目がかなり異なりますが、入力順が日本語に近く、非常に記述性の高い記法(=入力しやすい)です。それを物語っているのが、HP社のRPN入力電卓の根強い愛用者の存在です(HP社の電卓部門はこちら)。
簡単な例を考えてみます。我々は普段は以下のように数式を記述しています。
1 + 2
この式をRPNで書くと次のようになります。
1 2 +
(注:数字の1と2の間には区切りのためのスペースが入っています。"1 2"は数字の12(ジュウニ)ではありません。ちなみに、RPN入力電卓では区切りとしてEnterキーをタイプします)
RPNは初めて見る人にとっては特異な記法に見えるかもしれませんが、次のように考えれば、規則性が見えてくるはずです。
最初の式"1 + 2"を日本語で“表して”みます。まず「1 足す 2」が思い浮かびますが、もう一通りあります。それは「1 に 2 を足す」です。RPNは後者の表し方に近い記法になっています。この関係を対応してみると
| 日本語: |
1 |
に |
2 |
を |
足す |
| RPN: |
1 |
|
2 |
|
+ |
となります。
この調子で、もう少し複雑な式"(1 + 2) (3 - 4)"について考えてみます。先ほどと同様に日本語との対応を考えると次のようになります。
| 日本語: |
1 |
に |
2 |
を |
足した結果と |
3 |
から |
4 |
を |
引いた結果を |
掛ける |
| RPN: |
1 |
|
2 |
|
+ |
3 |
|
4 |
|
- |
* |
2つめの例ではRPNに変換すると括弧が消えていることが分かります。すなわち、RPNでは、数値と演算子の順番によって演算の優先順位を表しています。
この特徴は、コンピュータで数式を処理する際にはとても便利です。というのも、括弧による優先順位の変化や乗除算と加減算の優先順位の違いを考慮することなく、左からRPNの数式を読み込んで処理していくだけで、式の表す値を計算できるからです。
こう書くと「RPNはコンピュータ向けの記述ではないか」と思われるかもしれませんが、「括弧が無い」のは人間にとっても有利な面があります。以下の式はHP社の電卓のマニュアルから引用したものですが「数式通り入力」を謳う関数電卓でこの式を入力するには、おそらく最低3対(6個)の括弧を入力する必要があります。
しかし、RPN入力電卓ならば、1対の括弧もタイプすること無くこの式の値を求められます。括弧が無いため、どことどこの括弧が対応するかも意識する必要がありません。キーストローク数も少なくてすみます。
RPN入力電卓を手軽に体験したい方はここが良いと思います。JavaScriptで作られているのでブラウザ上で使えます。
12. TeX形式の式をRPNで入力する理由
RPNで数式を入力することにより得られるメリットには
- リアルタイムに変化するプレビュー
- 数式の意味による入力
- 括弧の入力の省力化
があります。
リアルタイムに変化するプレビュー
RPNによる入力では、ある時点における個々のスタックの内容は、それ自身が一つの数式として完結しています。そのため、リアルタイムに個々のスタックのプレビューが可能です。
RPNTeXでは、Ver.0.6よりリアルタイムプレビュー機能を備えており、スタック内の数式を常に確認しながら入力が行えるようになっています。
数式の意味による入力
RPNでは、数式の意味に近い形での記述が可能です。上に挙げたような「1 2 +(1に2を足す)」などの四則演算はもちろんですが、微分や積分を意味する演算子を追加することにより「xをtで微分」や「xをtで積分」のような意味解釈を持つ記述も可能です。
RPN2TeXでは「xをtで微分」のように使える演算子をいくつか独自に定義しています。例えば

という式は「xをtで2階微分する」という意味があり、RPN2TeXでこの式を入力するには、次のようにタイプします。
x [Enter] t [Enter] 2 [Enter] \diff3 [Enter]
注:\diff3という名前は、3個のスタックの値を引数として利用することに由来します
数式の意味とキー入力の対応は次のようになります。
| 日本語: |
x |
を |
t |
で |
2 |
階 |
微分する |
| 入力: |
x |
[Enter] |
t |
[Enter] |
2 |
[Enter] |
\diff3 [Enter] |
括弧の入力の省力化
TeXでは、分数や指数を表現する際に、\frac{a}{b}やa^{b}という風に括弧を使います。入力支援環境を使っていない場合は、これらの括弧を一つ一つ入力していくことになります。
RPN2TeXでは上のような場合には、全く括弧の対応を考える必要がありません。上の例ならば、"a [Enter] b /"と入力すると\frac{a}{b}が得られ、"a [Enter] b ^"と入力するとa^{b}が得られます。
さらに、RPN2TeXは数式入力中に括弧が必要である場合には、自動的に括弧付けを行う機能も備えており、さらにキーストローク数が削減ができます。
(ただ、時として邪魔な機能にも成り得るので、切ることもできるようにはしてありますが)
13. 謝辞
RPN2TeXを改良するにあたり、瀬戸亮平氏やTeX on Mac OS X Mailing Listの購読者の方々には様々な助言を賜りました。ここに感謝の意を表します。
RPN2TeXをTeX on Mac OS X Mailing Listに紹介していただいたRamón Manuel Figueroa-Centeno氏に感謝します。
14. 参考文献
ソフトウエアへ戻る