AUCTeX の日本語モードについて、バージョン 11.81 を対象に解説を書いた。
AUCTeX には日本語 TeX 用に tex-jp.el というファイルが用意されており、この中で japanese-latex-mode が定義されている。 japanese-latex-mode は、tex-jp.el をロードしただけでは有効にならない。ここではメジャー・モードが japanese-latex-mode な時、 AUCTeX は日本語モードに入っているとしよう。
日本語モードに入ると、どうなるか
まず、tex-jp.el をロードした時点で次の設定が加わる。
- コンパイル・コマンド ( C-c C-c) に日本語 TeX 用のコマンドが追加される。追加されるのは、 pLaTeX, jLaTeX, mendex, jBibTeX など。
- クラス・ファイルの候補に日本語のクラス (jarticle や jsbook など) が追加される。
- スタイル・ファイルのサーチ・パスに日本語 TeX の Path (/usr/share/texmf/ptex など) が追加される。
- 日本語の命令 ( \西歴 など) を理解するようになる。
- エラー・メッセージが日本語になる。
そして、 AUCTeX が日本語モードに入ると、次の機能が加わる。
- コンパイル・コマンド LaTeX で platex (or jlatex) が実行されるようになる。
- BibTeX のデフォールトが、jBibTeX になる。
- クラス・ファイルのデフォールトに japanese-LaTeX-default-style が使われる。
少し説明が必要なのは、コンパイル・コマンドかな。
AUCTeX では C-c C-c COMMAND で外部コマンドを呼び出し、TeX ファイルをコンパイルできる。デフォールトの COMMAND は LaTeX で、 latex コマンドが実行される。この LaTeX は少し賢くて、クラス・ファイルから実行するコマンドを切り替える。つまり、article クラスなら latex を、jarticle クラスなら platex を、j-article クラスなら jlatex コマンドで TeX をコンパイルする。ちなみに、クラス・ファイルから実行コマンドの推測に失敗した場合に備えて、 pLaTeX, jLaTeX というのも用意されてる。クラス・ファイルを自作でもしてない限り、全て LaTeX でやって大丈夫。
一方、 BibTeX は違う。 AUCTeX は TeX のコンパイルに bibtex コマンドが必要な場合、 C-c C-c で BibTeX が候補に挙がる。この時、日本語モードに入っていると、 BibTeX の代わりに jBibTeX が候補に挙がる。つまり、 BibTeX は、クラス・ファイルを見て実行コマンドを切り替えてはくれない、ということ。
日本語モードにどうやって入るか
AUCTeX はファイルをパースして (正確には \documentclass で指定されてるクラス・ファイルを調べて) 日本語モードに入るかどうかを決める。ところが、 AUCTeX はデフォールトで自動パースしない。そのため、ユーザーがパーサーを走らせなきゃいけない。パースの実行は C-c C-n。
TeX ファイルを開いた時、自動的にパースするには次の設定を .emacs に追加する。
;; ;; Automatic Parsing of TeX files. ;; (setq TeX-parse-self t) ; ファイルを開いた時に自動パース (setq TeX-auto-save t) ; パースしたデータを保存する
さて、問題はもう一つある。新規にファイルを作った時、ファイルは空でクラス・ファイルも \documentclass もない。だからパースしても、日本語モードに入らない。従って、新しいファイルに限っては、\documentclass を書いた後に、明示的に C-c C-n しなくちゃいけない。
それが面倒というなら、次の設定を .emacs に加える。
;; ;; Japanese TeX ;; (setq TeX-default-mode 'japanese-latex-mode)
これで新しく開いたファイルは日本語モードに (強制的に) なる。
僕は日本語と英語の文章を半々の割で書くから、 TeX-default-mode の設定はしてない。少々面倒だけど、日本語ファイルの場合だけ C-c C-n してる。どうせ、最初の一回だけなので気にしない。
まあ、ほとんどの人は上の設定も加えるようにしとけば、いいんじゃないかしらん。
新しくクラス・ファイルを作った時に
今の AUCTeX は C-c C-c LaTeX で、クラス・ファイルから実行する latex コマンドを選ぶ。これはもう書いた。問題は、新しくクラス・ファイルを書いた場合はどうするか? AUCTeX がそのクラス・ファイル知らなければ、日本語モードに入っていても latex でコンパイルされちゃう。
回避策は二つある。一つは、 C-c C-c LaTeX の代わりに C-c C-c pLaTeX を使う。もう一つは、 AUCTeX に自作のクラス・ファイルを教える。
後者の具体的な設定は、自作のクラス・ファイル名が myclmemo.cls だとして、次のようなコードを .emacs に追加する。
(setq LaTeX-command-style (append '(("^myclmemo$" "%(PDF)platex %S%(PDFout)")) LaTeX-command-style))
No comments:
Post a Comment