理系学生日記

おまえはいつまで学生気分なのか

reftexで式のラベルを数字以外に

yatexを使って論文を書いてる方は、yatexと一緒にreftexを使うことが多いかと思います。
reftexはラベルとか引用とか、そういうのをより便利に、より快適にemacsから使えるようにするパッケージで、ぼくもずっと使ってた。


例えばreftex-labelは、現在のポイントのある場所に合わせて、適当なラベルを生成してくれる。
figure環境内なら\label{fig:}がエコー領域におかれるし、table環境内なら\label{tab:}が、普通は章ラベルとして\label{sec:}がおかれます。
ところが、equation環境なり、align環境では、このラベルが\label{eq:1}、\label{eq:2}とか勝手に番号がラベルとして付けられてしまって、後から参照するのがわかりにくい!!ずっと使ってたわりには最近、ぼくはこの件ですごくイライラしてきたのです!!


実際にこの挙動を調節しているのは、reftex-insert-label-flags。flagsと複数形になっている通り、2つのフラグで構成されているぽい。
基本的には最初のフラグがtのときに、コンテキストに合わせてラベルを作ってくれて、例えば章タイトルがabcとかですと、\label{sec:abc}が挿入されるようになる。これがnilだと、\label{sec:1}とか、勝手に番号が挿入される。
2つ目のフラグは、ユーザにプロンプトを出すかどうかで、tのときはエコー領域にユーザがラベルを入力できるようになる。


ところがややこしいのが、この2つのフラグは文字列が指定できるということで、実際にデフォルト値は("s" "sft")になってる。これは環境別により細かな指定をしていて、各文字は

  • s: section
  • f: figure
  • t: table
  • e: equation

を表している。
デフォルト値だと、章ラベルは章タイトルの内容からラベルを作って、かつユーザにプロンプトを出す。図や表はcaptionからラベルを作らないけど、プロンプトは出す(\label{eq: }がエコー領域に出る)という指定。というわけなので、式にもプロンプトを出すには

(setq reftex-insert-label-flags '("s" "sfte")

とかすればいいよ。