TeX 数式ラベル入力補助用 elisp -- texlabel.el v1.0.0
texlabel.el とは
TeXの数式ラベル入力補助用の elisp です。
TeXの数式ラベルをいちいち打つのは面倒ですよね。
ラベル名を考えるのすら面倒です。
そんな悩みを解決してくれるようなelispを作りました。
概要
コマンド1つで適切な位置に番号順の数式ラベルを挿入してくれます。
これにより、文章整形後の式番号とソースコードのラベルの番号が対応します。
実行例
基本
以下のようなTeXファイルで texlabel.el のコマンド(M-x texlabel-auto-labeling-default)を実行すると、
次のように、適切な位置にラベルが挿入されます。
標準では「eq:」をプレフィックスとしたラベルが挿入されます。
インストール
EmacsWiki から texlabel.el をダウンロードして、load-path の通っているフォルダに配置してください。
auto-install.el をインストール済みであれば
M-x install-elisp-from-emacswiki texlabel.el
を実行するとファイルがダウンロードされるので、C-c C-c でインストールできます。
設定
以下の記述を .emacs ファイル (.emacs.el または .emacs.d/init.el) に追加してください。
(require 'texlabel nil t)
YaTeX を使っている人は以下のように, 適当なコマンド(C-c C-l)に M-x texlabel-auto-labeling-default を割り当てておくとよいでしょう。
(add-hook 'yatex-mode-load-hook '(lambda () (define-key YaTeX-mode-map (kbd "C-c C-l") 'texlabel-auto-labeling-default)))
YaTeX を使わずに LaTeX-mode を使っている人は次のようにすればキーマップを設定できます。
(add-hook 'latex-mode-hook '(lambda () (define-key latex-mode-map (kbd "C-c C-l") 'texlabel-auto-labeling-default)))
基本的な使い方
M-x texlabel-auto-labeling-default (もしくは上記で設定したコマンド)を実行すると、数式ラベルが自動的に挿入されます。
数式ラベルが挿入可能な箇所すべてに番号順のラベルを挿入するので、整形後の dvi ファイル上での式番号とラベルの番号が一致します。
自前の数式環境や改行コマンドを定義している場合はラベル挿入位置をうまく判別できない可能性がありますので、下記の「細かい設定」を参考にしてください。
細かい設定
細かい設定はカスタマイズ変数で行えます。
M-x customize-group RET texlabel RET
としてカスタマイズ変数を変更するか、.emacs 内に設定を記述してください。
カスタマイズ変数
以下のようなカスタマイズ変数が定義されています。
- texlabel-math-env-list
- 数式環境名のリスト。標準の数式環境と amsmath の数式環境はサポートしています。その他の数式環境を定義している場合はこのリストに追加してください。
- texlabel-non-sep-math-env-list
- multline のような改行してもラベルが単一の数式環境を表すリスト。標準では multline のみ。
- texlabel-refcmd-list
- リファレンス用のコマンドリスト。標準では ref と eqref のみ。
- texlabel-notag-list
- ラベルなしを指示するコマンドのリスト。標準では \notag と \nonumber のみ。
- texlabel-line-sep-list
- 改行コマンドのリスト。標準では \\ のみ。
- texlabel-pre-label-string
- ラベルコマンドの直前に挿入される文字列。標準では空白2つ分。
- texlabel-prefix
- 数式ラベルのプレフィックス。標準では「eq:」。バッファローカル変数。
設定例
Tips
ファイルの分割に関して
現在、texlabel.el は input や include を用いたファイルの読み込みには対応していません。理由は、
- input 先のファイルのラベルの挿入や貼り替えを行うと、変更に気づかない可能性が高く、問題が多い。
- ファイルを分割してなお別ファイルから引用するような式はそもそも固有のラベル名を付けるべきである。
- input の主な用途は章ごとのファイル分割なので、式番号はリセットされることが多い。
の3つです。1番目の問題をうまく解決する手段を思いつくか、熱い要望がない限り今後も対応の予定はありません。
input で章ごとにファイルを分割している場合は、対応策として章ごとに texlabel の prefix を変更するとよいでしょう。
texlabel-prefix がバッファローカルな変数になっているので、ファイルの末尾に
%%% Local Variables: %%% %%% texlabel-prefix: "quant" %%% %%% End: %%%
のような文章を挿入することで, ファイルごとに prefix を変更することが可能です。
その他
関数
以下の関数が使用可能ですが、texlabel-auto-labeling-default 以外はほとんど使わないでしょう。
- texlabel-auto-labeling-default
- 自動的に数式ラベルを挿入します。「eq;数字」以外のラベルはそのまま残します。
- texlabel-auto-labeling-force
- 自動的に数式ラベルを挿入します。「eq:数字」以外のラベルも「eq:数字」形式に強制的に貼り替えます。
- texlabel-change-default-prefix
- 編集中のファイルのデフォルトのプレフィックスを一時的に変更します。