2016年2月2日

\epTeXinputencoding

e-pTeXに\epTeXinputencodingというプリミティブを追加してもらった..styや.clsでUTF-8(BOM無し)にしたいときに使えるかと.こんな感じで使う.

\epTeXinputencoding <エンコード名>
現在のファイルの文字コードを指定されたものに切り替える.新しい文字コードは次の行から有効になる.\input等でそこから読まれるファイルには効力を及ぼさない.<エンコード名>には-kanji=で指定できるものが入れられる.(他にも有効な値がある:default,BINARY,ISO-2022-JP,EUC-JP,Shift_JIS,UTF-8.defaultはシステム規定値,BINARYはjisと同じ.)大文字小文字は区別されない.

ちなみに(e-)pTeXの文字コードは次の順番で決まる.(ptexencの処理だけど.)処理はファイルの先頭行を読むときに行われる.(PTEX_IN_FILTERが定義無しの時.定義されている場合はこっち.)

  1. ファイル先頭にUTF-8のBOM(正確には,最初の4byteが0xEF 0xBB 0xBF 0x7E以下)を見つけたらUTF-8(BOM付き)と見なす.
  2. (Windowsの場合のみ)文字コード推測が有効ならば推測を行い,成功すればそれを採用する.
  3. -kanjiオプションによる指定があればそれを使う.
  4. 環境変数PTEX_KANJI_ENCが定義されていればそれを使う.
  5. 以上までで決まらない場合は既定の文字コードを使う.(最近の環境だと,WindowsではShift_JIS,それ以外ではUTF-8.)

なお,ISO-2022-JPな文字たちは現在の文字コードによらず正しく読まれる.これからわかるように,\epTeXinputencodingがないとUTF-B(BOM付き)にISO-2022-JP限り確実に正しく読み込める.(実際にはUTF-8(BOM無し)も,Windowsなら文字コード推測で,それ以外ならば既定がUTF-8なので殆どの場合問題が無い.しかしたとえばLinux上でplatex -kanji=sjisなんてすると破綻する.)

0 件のコメント:

コメントを投稿

コメントの追加にはサードパーティーCookieの許可が必要です