読者です 読者をやめる 読者になる 読者になる

文字っぽいの。

文字を書いています。写真も混ざります。

英語論文を心地良く執筆する為に必要なEmacs Lispの設定

Emacs+YaTeXで英語論文を書くときのスペルチェックの話です。昔はispellってのが使われてたけど、最近はaspell が使われてるようですね。とりあえず、こいつをinstallしましょう。

$ brew install aspell --lang=en
$ echo lang en_US > ~/.aspell.conf

--lang=enつけてあげれば2つめのコマンドは打たなくてもいいかも。一応入ってるか確認。

$ aspell -v
@(#) International Ispell Version 3.1.20 (but really Aspell 0.60.6.1)

ちゃんと入ってるので、次はEmacs側から使う設定をしていきます。

;;ispellをaspellに置き換え
(setq ispell-program-name "aspell")

;;日本語まじりでも使えるようにする
(eval-after-load "ispell"
 '(add-to-list 'ispell-skip-region-alist '("[^\000-\377]+")))

ispellをaspellに置き換える部分を評価してエラーが出たら、

(setq ispell-program-name "/path/to/aspell")

などと絶対パスで指定してあげると良いようです。さて、これでEmacsからaspellを使う準備ができたわけですが、毎回M-x ispellを打つのも面倒なんで、ファイル保存時にスペルチェックしてくれるようにしましょう。

;;YaTeXモードの時にのみ動作させる用に条件分岐
(defun ispell-before-save-if-needed ()
  (when (memq major-mode
              '(yatex-mode))
    (ispell)))

(add-hook 'before-save-hook 'ispell-before-save-if-needed)

これでYaTeXモードの時だけ保存時にスペルチェックが走ります。しかしWordを使ってる人からすると「なんでリアルタイムに見てくれないんだ!」という感じだと思うので、flyspell-modeを使ってリアルタイムもにスペルチェックしてもらいましょう。

;;YaTeXモードの時にのみflyspell-modeを起動
(mapc
 (lambda (hook)(add-hook hook '(lambda () (flyspell-mode 1))))
 '(yatex-mode-hook))

これで間違ったスペルは強調表示してくれますし、YaTeXモード以外の時はスペルチェックが走らないので安心です。便利!

参考

計算物理屋の研究備忘録 Emacsでスペルチェック

まとめ

Emacs Lisp書いてないで論文書かないとマズイ。