漢字コード

アスキーの pTeX の漢字コードは ISO-2022-JP (JIS)、EUC-JP (EUC)、Shift_JIS (SJIS) の三通りから選べます (アスキー社による解説)。 この「漢字コード」の意味するものは、正確には三種類あります。

  • [入力] TeX ソースの漢字コード
  • [内部] pTeX 内部で扱う際の漢字コード
  • [出力] 画面やログファイルにメッセージを出力するときの漢字コード
./configure 指定EUCJISSJIS-kanji オプションで変更可能
入力(TeX ソース)JIS
EUCSJIS
内部EUCSJISfmt と一致させる必要あり
バナー文字列EUCJISSJISThis is pTeX, Version 3.141592-p3.1.9 (???)
出力(メッセージ等)画面のメッセージやログファイル
出力 (DVI)JIS

./configure 時に指定した漢字コードは、pTeX 実行時の -kanji オプションで 変更することができます*1。 さらに、内部コードとフォーマットファイル (fmt) の組み合わせが一致していることも 必要です*2。 なお、DVI ファイルの漢字コードはどの場合でも、 エスケープシーケンスを省いた ISO-2022-JP (JIS) に統一されています。

ptetex3 では、./configure の漢字コード指定は my_option というファイルに書きます(my_option.sample をご覧下さい)。

ptetex3 では、platex だけでなく、入力/内部の漢字コードを指定する platex-euc, platex-sjis というコマンドも用意しています。 ptex-src-3.1.9.tar.gz から少々拡張して実現しています。 変更点は次の通りです。

  • fmt の生成を tetex の枠組でやらせている。生成するのは platex-{euc|sjis}.fmt。*3
  • platex-euc → ptex 等のシンボリックリンクも tetex の枠組で すませている。*4
  • ptex へ与える漢字コード (-kanji) オプションは、コマンドライン引数だけでなく、 起動コマンド名の接尾辞 (-euc, -sjis) からも判断する。 元々 fmt ファイル名は起動コマンド名から判断されているが、 同時に必要な漢字コード (-kanji) の切替えも、 この拡張により起動コマンド名で行えるようになった。 以前は(fmt と 漢字コード [-kanji] の2つを同時に切替える必要があるため) platex-euc 等はシェルスクリプトで実現するしかなかったが、 シンボリックリンクで済むようになった。
  • platex.fmt → platex-euc.fmt のような読みかえは、 シンボリックリンクではなく、$TEXMF/aliases ファイルを使って実現している。 これは、TEXMF ツリーが多重になった影響で、読みかえ先のファイルを一つしか 表現できないシンボリックリンクでは役に立たなくなったため。

日本語の入ったマクロを書くには

ISO-2022-JP (JIS)、EUC-JP (EUC)、Shift_JIS (SJIS) の三種類の中で ISO-2022-JP だけは特別で、入力ファイルとして、他の漢字コードと共存できます。 つまり、漢字コードがどう指定されていようとも、 pTeX は ISO-2022-JP のファイルだけは常に正しく読み込むことができます。 ですから、platex-euc と platex-sjis のコマンドが、 ISO-2022-JP で書いた同じマクロを共有することができます。

日本語の入ったマクロを安全に配布するためには、ISO-2022-JP で書いておくと よいということになります。 ptetex3 では、元の配布物が ISO-2022-JP でなければ ISO-2022-JP に変換しています。

Unicode (UTF-8) 対応

アスキーの pTeX 自身は Unicode (UTF-8) の TeX ソースには対応していません。 以下には「これを使えば Unicode で TeX ソースが書けるのではないか」 という誤解のよくある例を挙げておきます。bibTeX や makeindex (mendex) を含めて、日本語を UTF-8 で書ける環境は正式には存在せず、 拙作の UTF-8対応(5) と TANAKA, Takuji 氏の upTeX, upLaTeX が 非公式に存在するだけのようです。

  • 齋藤修三郎氏の UTF/OTF パッケージを 使うと、Unicode 文字を “\UTF{301F}” のように表現できます。 ソースを UTF-8 で書けるわけではなく、 通常の ISO-2022-JP (JIS) 等に変換することになります。安田功氏の Utf82TeX を使うと、 ソースを UTF-8 で書くことが出来ますが、 pTeX で直接処理できるわけではなく、処理前に \UTF{...} の形や 通常の ISO-2022-JP 等に変換する段階を踏む仕組みになっています。
  • Werner Lemberg 氏の CJK package for LaTeX は、pTeX 拡張不要で中日韓文字を扱うことができます。Unicode のソースを 読み込むこともできるようですが、pTeX の代用品として 整備されているわけではありません。j(s)article などのスタイルファイルは 使えませんし、縦書も苦しいようです。
  • Jonathan Kew 氏の XeTeX は、 角藤氏も日本語対応に尽力されているようですが、 やはり pTeX の代用品ではありません。 活発に開発されているようですので、詳しい情報は TeXWiki:XeTeX をどうぞ。
  • Dominique Unruh 氏の Unicode パッケージは、 単独では日本語をサポートしておらず、 上記の CJK-LaTeX と組合せて使う必要があります。 なんだか開発が止まっているようです。

*1 platex-(sjis|euc) -version 表示も -kanji オプションに連動するよう ptex-3.1.10 から対応していただきました。
*2 実行時に -fmt オプションで fmt を選択できます。無指定ならコマンド名と同じ fmt が使われます。
*3 $TEXMF/web2c/fmtutil.cnf に platex-euc 等を登録して fmtutil-sys コマンドを実行すると $TEXMF-var 以下に platex-euc.fmt 等が生成されます。pTeX オリジナルでは make 中にカレントディレクトリに生成した fmt を $TEXMF 以下にコピーしています。
*4 texlinks コマンドで、$TEXMF/web2c/fmtutil.cnf の設定に応じて必要なシンボリックリンクが作られます。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-10-10 (水) 12:19:53 (3691d)