どせいたんさき。

ナスダヨー

Emacs でスペルチェックのときに tex のコマンドをチェックしない方法

A. aspell をつかう

google:aspell emacs 導入

特定のコマンドをスペルチェックから除外する方法

とあるクラスファイルを使っている場合,そこで定義されている独自のコマンド (\citep, \citet, \author, \affiliate, 等) を使うことが多い.そういったばあいは aspell の除外リストから漏れているので自分でカスタマイズしないとスペルチェックから除外できない.
追記:\citep{hogehoge} の hogehoge をスペルチェックから除外するための設定です


どうやら ispell-tex-skip-alists という変数をいじればいいらしい.

ispell-tex-skip-alists is a variable defined in `C source code'.
Its value is shown below.

Documentation:
*Lists of regions to be skipped in TeX mode.
First list is used raw.
Second list has key placed inside \begin{}.

Delete or add any regions you want to be automatically selected
for skipping in latex mode.

適当に以下のようなスクリプトを書いてみた.

(setq aspell-origlists-raw (car ispell-tex-skip-alists))
(setq aspell-origlists-env (car (cdr ispell-tex-skip-alists)))

(setq aspell-appendlists-raw
      (list
       '("\\\\cite[tp]?" ispell-tex-arg-end)
       '("\\\\bibitem\\[.*\\]" ispell-tex-arg-end)
       '("\\\\includegraphics" ispell-tex-arg-end)
       '("\\\\plotone" ispell-tex-arg-end)
       '("\\\\plottwo" ispell-tex-arg-end)
       '("\\\\\\(short\\)?authors?" ispell-tex-arg-end)
       '("\\\\affil\\(iate\\)?" ispell-tex-arg-end)
       '("\\\\bibliographystyle" ispell-tex-arg-end)
       '("\\ifx" . "\\fi")
       ))
(setq aspell-appendlists-env
      (list
       '("tabular" ispell-tex-arg-end)
       ))

(append aspell-appendlists-raw aspell-origlists-raw)
(append aspell-appendlists-env aspell-origlists-env)
(setq ispell-tex-skip-alists
      (list aspell-appendlists-raw aspell-appendlists-env))

このスクリプトをパスの通ったところに保存して ispell が起動したときに読み込むように .emacs にて設定.

(eval-after-load "ispell" '(load "aspell-tex"))


とりあえず動いたけどこんな方法でいいのだろうか……誰か添削してくださると大変助かります.