sci

最果て風呂

Texinfo で日本語 PDF 出力

Texinfo が 6.3 になってから、日本語の PDF を直接(TeX の助けを借りるけれども)生成することができるようになったそうです。6 系になってから Perl スクリプトになり、動作がかなり遅くなったのですが、出力される HTML のタグ付けはかなりまともになりました。PDF を使うことが(個人的には)なくなったので現状に満足していたのですが、やっぱり試してみたくなりました。

今までは texi ファイルから日本語の PDF を生成するために、下記のような手順で生成していました。

TEX=ptex texi2dvi kemof.texi
dvipdfmx kemof.dvi

これで PDF ファイルが生成されるのですが、日本語の見出しのフォントサイズが小さかったりして、あまり満足のできるものではありませんでした。

新しいバージョンの texinfo をインストールしてから、そのソースの texinfo-6.3/doc 内に移動し、サンプルの short-sample-ja.texi から PDF を生成してみることにしました。

しかし下記のようにコマンドを実行しても、エラーが出てうまくいきません。

> texi2pdf short-sample-ja.texi
This is pdfTeX, Version 3.14159265
...
The TeX engine is not LuaTeX / XeTeX. LuaTeX / XeTeX is required for Japanese Texinfo files.

TeXLive 2016 をインストールしてあるのですが、パスか何かが悪いのでしょうか?しばらく気付かなかったのですが、PDFTEX=luatex のように、環境変数で指定してやるとうまくいくようです。もちろん PDFTEX=xetex でも大丈夫です。

さて、サンプルからの生成はうまくいくようになったのですが、自分のプロジェクトの texi ファイルから PDF を生成しようとすると、必要なファイルが無いといってビルドが止まってしまいます。もちろん、サンプルにあるようにヘッダ部分は下記のように修正してあります。

\input texinfo-ja   @c -*- texinfo -*-
@documentencoding UTF-8
@documentlanguage ja

どうやらカレントディレクトリに texinfo-ja.textxi-ja.tex を置いてやると、うまくいくようです。

TeXLive のディレクトリを調べてみると /usr/local/texlive/2016/texmf-dist/tex/texinfo に texinfo 関連のものが入っているようです。しかしここには texinfo-ja.textxi-ja.tex は存在していませんでした。この場所は TeXLive が使うものであって、texinfo をインストールしても、この場所にはインストールしてくれないようです。2017 年版ではデフォルトで収録されるのかな?

ということで、ユーザーがバージョン(年度)に関係なく勝手に使える /usr/local/texlive/texmf-local/tex/latex/local/ 以下に texinfo というディレクトリを作り、そこにコピーしてみることにしました。そして texhash を実行して ls-R を更新します。

> cd /usr/local/texlive/texmf-local/
> sudo mkdir tex/latex/local/texinfo
> sudo cp texinfo-ja.tex tex/latex/local/texinfo/
> sudo cp txi-ja.tex tex/latex/local/texinfo/
> sudo texhash

これでカレントディレクトリに texinfo-ja.textxi-ja.tex がなくても PDF を生成することができるようになりました。

> PDFTEX=luatex texi2pdf kemof.texi

わ〜い!PDF が出力された!コントリビュートした人すご〜い!

以前、CSS を書く時に参照しようと思ってタグの種類を調べたのですが、一年前だったのですね。早いなぁ。