そろそろ考える時期だろう
僕は別に TeX / LaTeX 関連を専門としているわけでもないし、いわゆる TeXnician という存在でもない。この20年近くの間、文書を作成するのに比較的よく TeX / LaTeX を使ってきて、そのプロセスで必要なことを自力で(他者のコメントに助けられながら、であることは言うまでもない)行ってきて、その余力で、たとえば『TeX Live を使おう――Linux ユーザと Mac OS X ユーザのために――』を書いたり、 各種パッケージのバグを見つけたり……ということに至っているだけである。だから、殊この分野に関しては、先生とか呼んだり「教授」という言葉を向けられたりする(もっとも最近は「教授」と「教示」の区別がつかない人が多いのだけど)のは御勘弁願いたいところである。この点、まずは断り書きをしておくことにする。
さて、『TeX Live を使おう……』でも:
おそらく LuaTeX-ja が更に進展してきたら、また日本語処理環境のベストなかたちを模索するときがくるかもしれませんが、とりあえずは TeX Live で済ませられるかな、と思っています。あと1年か、2年か、あるいはもう少しか。LuaTeX-ja プロジェクトの成果が TeX Live に組込まれるかもしれませんし、まだ僕には何とも分かりません。とりあえず、今後も動向を見守りつつ、環境整備を行い続けることになりそうです。と書いたけれど、どうやら、そろそろこの時期が来ているような気がするのだ。勿論、確実な処理を要求するならば、ここ何年かのデファクトスタンダードである platex + dvipdfmx が優れていることは間違いないのだが、この先に向けた助走に入ることを考えてもよさそうな状況が整いつつあるのだ。
まず、何と言っても大きいのが、先週末に LuaTeX-ja が CTAN に submit された、ということ。今現在、TeX Live 2011 をインストールして、tlmgr で最新のパッケージにアップデートするだけで、LuaTeX-ja は使えるようになるのだ!
実際、横書きに限定するならば、LuaTeX-ja は相当使える状態である。以下に、同じ文書を LuaLaTeX + LuaTeX-ja で組版して PDF としたもの (sauerbruch.pdf) と pLaTeX + dvipdfmx で組版して PDF としたもの (sauerbruch2.pdf) を示す。ほぼ同一の組版内容になっていることがお分かりかと思う。
ただし、現状では両者の間には様々な相違がある。まず、上の2文書は体裁としては同一であり、双方ともフォントを埋め込んでいるのだが、そのサイズは倍程違っている。これは dvipdfmx による埋め込みの場合、欧文フォントが CFF (Compact Font Format) と呼ばれるコンパクトな形式で埋め込まれるのに対して、LuaTeX での埋め込みの場合は type 0 フォントが埋め込まれているからである。
また、上2ファイルは各々 jarticle.cls と ltjarticle.cls を使用しているのだが、これを jsarticle.cls と ltjsarticle.cls で行った場合、組版結果には相応の相違が生ずる。これはおそらく http://oku.edu.mie-u.ac.jp/~okumura/jsclasses/ の「FAQ 長さがずれます」で書かれているような処理の相違によるものだと思うのだが……また、長さの単位に zw を使いたい場合は \zw とする必要があるし、XeLaTeX の場合と同様、en-dash や em-dash を出すためには、プリアンブルに:
と書いておく必要がある。\defaultfontfeatures{Ligatures=TeX}
そして、今月に入ってからのことのようなのだけど、conTeXt で UTF-8 の日本語を扱ってみると、扱えないこともないようだ……という話が出ているのだ。おそらく、ここをお読みの方で conTeXt を御存じの方はそう多くないかもしれないけれど、TeX をエンジンとして使った新しいマークアップ型の組版システムである。欧米では既に結構広まっているようなのだけど、日本語を突っ込んだ場合、複数行に渡る文字列の扱いがうまくいかない、という問題があった。しかし、W32TeX で有名な近畿大の角藤氏が書いたコメントで、この問題が回避できるんじゃないの? という話になったのであった。既に、Z. R. 氏のマクロツイーターの記事 (http://d.hatena.ne.jp/zrbabbler/20120416/1334595982) にある例で試して、これがうまくいくことを確認している。
ただし、これも問題がないというわけではない。まず、ヒラギノフォントでこれを行おうとすると、どうもうまくいかない。最新の ConTeXt Mk IV ではうまくいく、という話もあるのだけど、現時点で TeX Live に収録されているバイナリでは、この問題が不可避だった。
そして、LuaTeX-ja でも同様なのだけど、処理にかかる時間が非常に長い。ConTeXt の場合は、おそらく無駄な処理を何度も繰り返していると思われるのだが、LuaTeX-ja の場合は、初回にフォントのキャッシュを作成するのに非常に長い時間を要するものの、2回目以降はそう問題になることもなさそうな時間で処理できる。
このように、未だ pLaTeX + dvipdfmx と同様に、あるいはそれらを凌駕するような速度・質での処理ができる、というところには達していないのだけど、将来的には現状の pTeX / pLaTeX を凌駕するものになる可能性は非常に高い。ワールドワイドで見たら、今後は LuaTeX / LuaLaTeX や、それをエンジンとして用いている ConTeXt が defact standard になる可能性が大なので、日本人としても、これを無視するわけにはいくまい。eptex や uptex が登場する少し前までの日本語 TeX / LaTeX 環境がガラパゴス化寸前の状態だったことを考えると、現状の安定したシステムだけに依存するのは、やはり危ういと言わざるを得ないのだ。