Function: japanese-TeX-set-process-coding-system
japanese-TeX-set-process-coding-system is a byte-compiled function
defined in tex-jp.el.
Signature
(japanese-TeX-set-process-coding-system PROCESS)
Documentation
Set proper coding system for japanese TeX PROCESS.
Source Code
;; Defined in ~/.emacs.d/elpa/auctex-14.1.2/tex-jp.el
;;; Coding system
(defun japanese-TeX-set-process-coding-system (process)
"Set proper coding system for japanese TeX PROCESS."
(with-current-buffer TeX-command-buffer
(when japanese-TeX-mode
;; TeX-engine が ptex, jtex, uptex のいずれかである場合のみ考え
;; る。luatex-ja などの場合はそもそもただの LaTeX-mode でよく、
;; わざわざ japanese-LaTeX-mode にする必要がない。
;; FIXME: 以下の処理は tex engine を対象とする場合しか考えていない。
;; bibtex や mendex 等の補助ツールの場合は正しくない処理かもしれない。
(let*
;; -kanji オプションありの時の文字コード。
((kanji (and japanese-TeX-use-kanji-opt-flag
(let ((str (japanese-TeX-get-encoding-string)))
(cond
((equal str "euc") 'euc-jp)
((equal str "jis") 'iso-2022-jp)
((equal str "sjis") 'shift_jis)
((equal str "utf8") 'utf-8)))))
;; process からの出力の文字コード。
(dec (cond
;; windows と mac の場合。
((memq system-type '(windows-nt darwin))
(cond
;; ptex なら mac は utf-8。
;; windows で -kanji オプションありの時はその文字コード、
;; なしの時は sjis。
;; texlive 2018 からは sjis ではなく utf-8 になったので
;; そちらに合わせる。
((eq TeX-engine 'ptex)
(cond ((eq system-type 'darwin)
'utf-8)
((and japanese-TeX-use-kanji-opt-flag kanji)
kanji)
(t 'utf-8)))
;; jtex なら sjis に固定する。
((eq TeX-engine 'jtex)
'shift_jis)
;; uptex なら utf-8 に固定する。
(t
'utf-8)))
;; unix の場合。
(t
;; jtex なら euc に固定する。
(cond
((eq TeX-engine 'jtex)
'euc-jp)
;; それ以外は、uptex でも locale に従う。
;; ただし、locale が日本語をサポートしない場合は
;; euc に固定する。
(t
(let ((lcs locale-coding-system))
(if (and lcs (japanese-TeX-coding-ejsu lcs))
lcs 'euc-jp)))))))
;; process に与える入力の文字コード。
(enc (cond
;; ptex で -kanji オプションありなら、その文字コード。
;; なしなら utf-8 か sjis。
;; texlive 2018 で w32 でも utf-8 がデフォルトになっ
;; たようなので、それに合わせる。
((eq TeX-engine 'ptex)
(if (and japanese-TeX-use-kanji-opt-flag kanji)
kanji
'utf-8))
;; jtex なら euc か sjis に固定する。
((eq TeX-engine 'jtex)
(if (memq system-type '(windows-nt darwin))
'shift_jis 'euc-jp))
;; uptex なら utf-8 に固定する。
(t
'utf-8))))
;; 改行コードを指定。
(setq dec (coding-system-change-eol-conversion
dec
(if (eq system-type 'windows-nt) 'dos 'unix))
enc (coding-system-change-eol-conversion
enc
(if (eq system-type 'windows-nt) 'dos 'unix)))
;; Customize 値があればそれを優先。
(set-process-coding-system
process
(or TeX-japanese-process-output-coding-system dec)
(or TeX-japanese-process-input-coding-system enc))))))