Emacs+AUCTeXのjapanese-latex-modeでplatexコマンドを実行するときにバッファの文字コードに応じて適切なオプションを付与する
Windows & Ubuntu それぞれで TeX を書く機会が増えそうだったので,TeXで使う文字コードをUTF-8にしてみた。UTF-8なファイルを pLaTeX で処理するためには引数として -kanji=utf8 を渡さなければならないのので,バッファの文字コードに応じて適切なオプションを自動付与するようにしてみた。
とりあえずのやっつけ実装なので,判別してる文字コードの種類が少ないのはご愛敬。
(add-hook 'LaTeX-mode-hook '(lambda () (setq kanji-opt (case buffer-file-coding-system ('utf-8 " -kanji=utf8") ('utf-8-dos " -kanji=utf8") ('shift_jis " -kanji=sjis") ('shift_jis-dos " -kanji=sjis") ('euc-jp " -kanji=euc") ('iso-2022-jp " -kanji=jis") (t ""))) (setcar (cdr (assoc "pLaTeX" japanese-TeX-command-list)) (concat "%(PDF)platex" kanji-opt " %`%S%(PDFout)%(mode)%' %t")) (setcar (cdr (assoc "jBiBTeX" japanese-TeX-command-list)) (concat "%(PDF)jbibtex" kanji-opt " %s"))))
2009/04/25 追記
emacs本家にはcaseが無いようなので書き直した。ついでに若干汎用性アップ。
(add-hook 'LaTeX-mode-hook '(lambda () (let* ((kcode (symbol-name buffer-file-coding-system)) (opt (cond ((string-match "^utf-8" kcode) " -kanji=utf8") ((string-match "^shift_jis" kcode) " -kanji=sjis") ((string-match "^euc-jp" kcode) " -kanji=euc") ((string-match "^iso-2022-jp" kcode) " -kanji=jis") (t "")))) (if (boundp 'japanese-TeX-command-list) (progn (setcar (cdr (assoc "pLaTeX" japanese-TeX-command-list)) (concat "%(PDF)platex" opt " %`%S%(PDFout)%(mode)%' %t")) (setcar (cdr (assoc "jBibTeX" japanese-TeX-command-list)) (concat "%(PDF)jbibtex" opt " %s")) (message "pLaTeX UTF-8 flag enabled")) (message "pLaTeX UTF-8 flag disabled"))))))