English

XeTeX について

最近話題の XeTeX を試してみました。 XeTeX Home

もともとは MacOSX 用だったらしいですが最近 Linux に移植され Win でも 動くらしいです。最大の特徴はユニコード対応と(MacOSX の?)システムフォントを 使える,という点だと思います。 逆にいうとシステム依存な訳で根本的に TeX とは考えが違うような気もします。 Linux の場合システムフォントというより fc-list (fontconfig) で表示される フォントが使える,という状況のようです。ここでは Debian/GNU Linux での 話に限定しています。

XeTeX と LuaTeX の関係も含めまとめています。

サンプル

IPA の OTF も普通になったので縦書きを少し試してみました。出力は小塚フォントと 多少違ったりしますが縦書きには問題ないようです。 縦書きに関しては LuaTeX より使いやすい気がする。LuaTeX で使う Omega 由来の pagedir などは意味が直感的に理解しずらい上に挙動が怪しいと思う。

Tips

平成25年5月8日(水):
xeCJK パッケージも改良されてるようで最近だと以下のような設定をするのが良いらしい。
\usepackage[xCJKecglue=true,CheckSingle=true,
AllowBreakBetweenPuncts=true]{xeCJK}
\NewDocumentCommand{\jaecglue}{}
{\hspace{0.25em plus 0.15em minus 0.05em}}
\xeCJKsetup{CJKecglue=\jaecglue}
\setCJKmainfont[BoldFont=IPAGothic]{IPAMincho}
\setCJKsansfont{IPAGothic}
\setCJKmonofont{IPAGothic}

また色々進歩、改良されてるようで以下のような状況らしい。以前の常識とかなり違ってるので注意。

平成22年3月8日(月):
日本語環境の改善 xeCJK パッケージを用いると煩わしかった「行末の改行が空白になってしまう不具合」が 改善される。使い方は

\usepackage{xeCJK}
\setCJKmainfont[BoldFont={IPAGothic}]{IPAMincho}
のようにするだけ。

サンプル
xe-vert.texPDF.

数式フォントが表示されないことがある。色々あるのかも分りませんが マップファイルが原因なことがあるようです。Debian だと dvipdfmx の設定ファイルに依存してるっぽいのが気になりますが

** WARNING ** This .map file looks like a dvips format fontmap file.
** WARNING ** -- Current input buffer is: ASCII ASCII のようなメッセージが流れるようなら多分マップファイルが原因でしょう。
  1. dvipdfmx.cfg を xetex (or xdvipdfmx) が見付けられる必要があります。 もし適当なディレクトリになければ,/etc/texmf/dvipdfm/dvipdfmx.cfg があるのを確認し,例えば /usr/share/texmf/dvipdfmx/dvipdfmx.cfg などにリンクしておきます。
  2. dvipdfmx.cfg の下の方にあるマップファイルの設定で dvipdfm.map, cid-x.map を有効にしてある必要があるようです。 (pdftex.map, psfonts.map はコメントが良いようです。)
デバッグするには "xetex -no-pdf myfile.tex" "xdvipdfmx -v myfile.xdv" してみるのが第一歩。

日本語環境の為の最低限の設定。

\usepackage{fontspec}
%\setromanfont[BoldFont={Sazanami Gothic}]{Sazanami Mincho}
\setromanfont[BoldFont={IPAGothic}]{IPAMincho}
\XeTeXlinebreaklocale "ja" % actually, even "en" will work for default CJK breaking
\XeTeXlinebreakskip = 0pt plus 1pt % allow slight stretchability for justification
\renewcommand{\baselinestretch}{1.2}
使えるフォントを \setromanfont で設定します。\XeTeXlinebreaklocale を設定しないと改行が全然まともにされないようです。 \XeTeXlinebreakskip と \baselinestretch は好みで適当にすれば良いのでしょう。 これでかなり普通に日本語が使えますが行末の改行が空白に変換されてしまい 日本語の場合意図しない空白がパラパラ入ってしまうので行末に % を書いておく ことになります。実用にしてるとちょっと面倒。

縦組みできることが判明。ただし OTF フォントに限る。 また XeTeX 0.997 (revision 548), xdvipdfmx 0.5 (revision 108) を svn でゲットしてインストールしておく必要があります。 ここでは(一応フリー?で入手が容易な)Acrobat7 の Kozuka フォントの場合。

こんな感じで少なくとも一部を縦組みにはできる。もちろん改行,改ページなど まで考えるとそれなりに細工はいるだろうけど。 また OTF フォントにすると行末の改行が空白になってしまう不具合も 無いように見える。

今のところ効果が良く理解できてないのですが中国語用らしい zhspacing なるパッケージが開発されてるようです。禁則処理の類が改良されるのかも。

Debian/unstable 用の XeTeX Packages

texlive-xetex が新たにパッケージングされた(平成19年3月22日頃)ので 簡単に使えるようになりました。ただし平成19年6月時点で testing の TeXLive は壊れてるので unstable な環境が良いでしょう。
付記: 以前作成していた xetex, xdvipdfmx, xdvipdfmx-data は不要(ハッキリ言うと 邪魔 ^^;)になったので削除しました。 このサイトの非公式パッケージをインストールしてる方は安全の為 texlive-xetex をインストールする前に xetex, xdvipdfmx, xdvipdfmx-data を手動で --purge して texlive-xetex をインストールしませう。

Debian/unstable 用のサンプルについて

XeTeX_doc.zip を上のページからダウンロードして展開したら得られる CJKsample.tex, Arabic.tex, Hindi.tex を(少し修正して)コンパイルして みました。

オリジナルの CJKsample.tex は CJK といいながら Chinese, Japanes と Thai で何故か Korean/Hangul が無いので Ksample.tex を作ってみました。 その後 Amharic.tex, CM-test.tex, PicFileLSample.ltx, transforms.tex 追加。

サンプルファイル

ソースファイル(と画像データ,スタイルファイル(?)など)をまとめて sample_linux.tar.gzみました。 必要なフォントパッケージ(Debian の場合)はファイルのコメントにあります。

パッケージについて(obsolete!)

XeTeX のホームページには Ubuntu 用パッケージがありますが TeXLive 環境に インストールしたかったので 8 月 22 日 update されたバージョン 0.995 のソースをゲットして TeXlive 環境な Debian/unstable にもインストールできる パッケージに変更したものを使いました。

('06/08/20) /usr/locall/share から /usr/share にインストールする ように変更。また dh_installtex を利用してパッケージング。 teTeX 環境にインストールする場合,古いパッケージが使ってたらしい(?) /etc/texmf/web2c/fmtutil.cnf があるとインストールに失敗するかも。 /etc/texmf/web2c/fmtutil.cnfnon とかにして mktexlsr しておけば良いはず。

Linux 版 XeTeX はデフォルトで dvipdfmx の拡張版 xdvipdfmx を利用するので XeTeX のサイトにある Ubuntu 用を少し修正した Debian/unstable 用 xdvipdfmx パッケージもインストールします。 dvipdfmx と重複する設定ファイルがありそうなので xdvipdfmx と xdvipdfmx-data に分割してみました。xdvipdfmx に加えて dvipdfmx か xdvipdfmx-data パッケージのどちらかをインストールする必要があります。

最新の 0.995 ではサンプル(Arabic.tex)のコンパイルに失敗するようです。 何故かひとつ古い 0.994a だと問題なくコンパイルできるようです。

XeTeX のホームページには Ubuntu 用の deb があるようですが,まだまだ 洗練されてはいないようです(/usr/local にインストールされたり)。 そのうち修正するつもりです。


Last modified: Thu May 9 13:23:49 JST 2013