2009年12月15日火曜日

バッファの文字コードに従ってplatexに-kanjiオプションを渡す

ここで書かれていたコードが非常に便利だったので紹介です.

自分はWindows, Ubuntu, Solaris, Macな人間なので,.texファイルをマシン間でコピーした際に,platexが「文字コードが不明!」とかってエラーを吐きます.
platexに -kanji=eucjp のようにオプションを渡せばいいのですが,いちいち設定するのがめんどくさい.
Auctexを使ってるんだから,C-c C-cしただけでちゃんとコンパイルしてほしい.

そんなときに見つけたのが上記のコードです.
そのままだと,バッファの文字コード認識部分が正常に動かなかったのでちょっと修正してます.

(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 "shift-jis" kcode) " -kanji=sjis")
                    ((string-match "^euc-jp" kcode) " -kanji=euc")
                    ((string-match "^japanese-iso-8bit" kcode) " -kanji=euc")
                    ((string-match "^iso-2022-jp" kcode) " -kanji=jis")
                    (t ""))))
           (if (boundp 'japanese-TeX-command-list)
               (progn
                 (message "pLaTeX %s inserted" opt)
   (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")))))

0 件のコメント:

コメントを投稿

フォロワー