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