Re: ThaiLaTeX について (タイ語フォントと単語分割)

名前: 安田
日時: 2005-12-14 00:08:36
IPアドレス: 210.159.229.*

>>39825 栗山さん、大友さん、Kunoさん、こんばんは。 タイ語に関するこの話題も Windows で確認できたところで一段落でしょうか。 私なりの CJK パッケージを用いた場合の懸案について報告しておきます。 >> CJK パッケージの解説には、cjk-enc.el Emacs Lisp で原稿を作成し、 >> (この場合、原稿テキストは Mule エンコーディングになるのだと思います) >> 各国語用のフォントで組めばよいような記述があります。 > >CJK 環境で統合漢字問題をクリアし、各国毎の満足のいく出力を >得るには、異なったエンコードを「一つの」テキストで実現し >(= Mule の考え方)それを TeX 処理にかけることができれば、 >これが唯一の解決方法となるのでしょうか。アジア圏の多言語 >環境を考える上で示唆的な問題なのかも知れないと思います。 CJK に添付されている Emacs-Lisp cjk-enc.el を用いて、多言語サンプルを 試してみました。 面倒ですが、日本語、中国語簡体字、中国語繁体字、韓国語のフォントを CTAN から追加で取ってきてインストールしました。 Unicode UTF-8 で原稿を準備するのと異なり、Unicode 包摂漢字の 問題を、原稿及び出力結果ともにクリアできることを確認しました。 フォントについては、タイ語は ThaiLaTeX、ヴェトナム語は VnTeX、 ギリシア語は cbgreek、ラテン系言語とロシア語は cm-super をそれぞれ 拾ってくれ、これまで話題にしていました CJK パッケージ利用の Cyberbit 一辺倒に比べて遥かに書体としては満足できるものです。 とはいえ、日中韓は新たに組み込んだフォントを使用するようになるのです けれど、書体品質としては評価に苦しむところです。 (私の印象では、Adobe の Asian fonts にはさすがに敵いません。 とくに日本語は wadalab フォントで、古色蒼然たるものを感じます。 まだ Cyberbit のほうがマシでしょうか) セットアップの方法は、CJK パッケージを展開したディレクトリ直下にある INSTALL ファイルの記述に従います。 CJK パッケージの utils/lisp/ 下の - cjkspace.el - cjktilde.el - emacs/cjk-enc.el - emacs/thai-word.el を Emacs の site-lisp ディレクトリに入れ、.emacs に (load-library "cjk-enc") を記述しておきます。 cjk-enc.el は、CJK のドキュメントによりますと、Emacs-20.3 以降、 XEmacs-21.1 以降もしくは Mule-2.3 が前提となっていますが、 Mac OS X X11-Emacs 22.0.50 でも動作しました。 現在主流の Emacs-21 系でも動作するはずです。 使い方は、まず TeX 原稿を emacs-mule エンコーディングで準備します。 CJK パッケージには、これで書かれた CJKbabel.tex が添付されています。 emacs-mule はもともと Mule が多言語用にもっていた内部エンコーディングで、 Unicode みたいにケチな包摂をせずに、既存の CNS や Big5、GB2312、 KSC 5601 をエスケープシーケンスのようなもの外側をくるんで文字を 管理します。 このため、CJK 統合漢字の包摂問題がありません。 Emacs 上で各国語特有のグリフで編集ができます。 一方、Unicode でやっと定義された漢字(主として旧字体)は使えません。 これを含めて解決するには、やはり OTF しか選択肢がないと思います。 原稿ができたら、M-x cjk-write-file RET を実行すると、拡張子が .cjk の ファイルが生成されます。CJKbabel.tex なら CJKbabel.cjk ができます。 これを latex で処理します。 cjk-enc.el は、原稿文字を独自の TeX 文字シーケンスに変換するとともに、これを 処理するためのスタイルやら命令やらを自動的に原稿に挿入し、.cjk ファイルに 出力する、という仕組みになっています。 ですから、原稿を修正するつどに .cjk ファイルも更新してやる必要があります。 cjk-enc.el から他の上記 Lisp が呼ばれます。 タイ語については、thai-word.el でインターラクティブに単語境界に 指定文字を挿入してくれる関数群がサポートされています。 これも試してみました。 swath と精度の違いはあるかと思いますが、Emacs から離れないで タイ語分割できますので、たいへん便利です。 私が処理したサンプル PDF を置いておきます。 これは、CJKbabel.tex をベースに ThaiLaTeX サンプルのタイ語を追加して、 thai-word.el の thai-break-words 関数で単語分割を施したものです。 そのうち、このへんを整理して、 「CJK,Unicode パッケージ,ロシア語多書体の利用」に反映したいと思います。

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます)