2005-10-02

AUCTeX 11.81 の日本語モード

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 が日本語モードに入ると、次の機能が加わる。

  • コンパイル・コマンド LaTeXplatex (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-cBibTeX が候補に挙がる。この時、日本語モードに入っていると、 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 してる。どうせ、最初の一回だけなので気にしない。

まあ、ほとんどの人は上の設定も加えるようにしとけば、いいんじゃないかしらん。

新しくクラス・ファイルを作った時に

今の AUCTeXC-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