Texinfo で日本語 PDF を生成



概要

Native Unicode による日本語 Texinfo サンプル
https://github.com/trueroad/texinfo-sample-jp

Texinfo

TexinfoGNU の公式文書フォーマットです。 1 つのテキストファイル(Texinfo ソースファイル)から Web (html), info, PDF など、複数の形式で出力ができます。 GNU に限らず、 様々なフリーソフト・オープンソースソフトのドキュメントに使われています。 例えば、楽譜作成プログラム LilyPond の Web page やマニュアルは Texinfo で生成されたものです。

Texinfo で日本語 PDF

さて、この Texinfo ですが、PDF を生成するときには、TeX を利用します。 Texinfo がデフォルトで使う TeX エンジンは pdfTeX というもので、 もちろん(通常では)日本語非対応です。 LilyPond でも日本語の Web page や html マニュアルはありますけど、 日本語の PDF マニュアルはありません。 英語やドイツ語、フランス語、イタリア語などは PDF もあるんですけどね。 これは pdfTeX で PDF を生成しているため、 日本語が使えない(使いにくい)というのが理由の一つです。

pTeX

もちろん pdfTeX の代わりに日本語対応している pTeX を使えば、 日本語 PDF を生成することもできます。この方法の場合、本家 Texinfo に含まれている texinfo.tex にパッチを当てて 日本語対応化させたものがあります。 例えば Windows 用の TeX で有名な角藤先生の W32TeX には日本語化した texinfo.tex や関連ツールがありますし、 日本語 texi から栞付きPDFを生成するという記事も見つけました。 とはいえ、本家 Texinfo には pTeX 対応は含まれていないため、 本家版では日本語 PDF を生成できませんでした。

Unicode 対応 TeX エンジン

一方で、pdfTeX の後継として Unicode に対応した LuaTeXXeTeX が登場してきていて、これらを日本語対応化するパッケージとして、 LuaTeX-jaZXjatype などが登場してきています。

こういったものを使えば、 LilyPond の日本語 PDF マニュアルも生成できるんじゃないか。 そう漠然と考えていました。

LilyPond

pdfTeX に問題?

そこへ、たまたまですが lilypond-develLilyPond のドキュメントに不具合 が見つかった、というメールが流れました。しかも、 LuaTeX なら問題が起きなさそう ということもわかり、 原因は pdfTeX (と TeX Gyre フォント)なので、 直すには pdfTeX から LuaTeX に変えるしかない ということになりました。

Texinfo に問題?

ところが、 単純に LuaTeX に変えてみても、うまくいきません。 結局、 Texinfo は非 8bit の TeX エンジンでは UTF-8 を扱えない ということがわかりました。 LilyPond ドキュメントの Texinfo ソースは全部 UTF-8 で書かれていますので、 致命的です。。。 とりあえず 試しにフォントを Unicode 対応している Latin Modern に替えてみる と、いくつかの問題が回避できそうなこともわかりました。

つづく

ここからは、 bug-texinfo に舞台が移ります。以下 3 種類の解決方法が出てきました。

  1. pdfTeX と同じ、バイト単位の入力 (byte-wise input) に切り替える
  2. フォントを Unicode 非対応の Computer Modern から Unicode 対応の Latin Modern 等に替える
  3. Computer Modern のまま Native Unicode に対応する

紆余曲折ありましたが、 最終的には 3. Native Unicode が採用に至りました。

長くなってきましたので、ここから先は後日機会があれば、にしたいと思います。