TeX Live 2013 のインストールに挑戦
新しいマシンもようやく手に馴染んできたので,そろそろ開発環境とか入れなきゃ。 というわけで,手始めに TeX Live をインストールすることにしてみた。
Windows に対応した TeX ディストリビューションはいくつかあるが,日本語が使えることを前提に考えるのなら W32TeX (いわゆる角籐版)か TeX Live かということになるようである。 両者の特徴は
(「Microsoft Windows - TeX Wiki」より)
- 最新のバイナリを使いたい場合は W32TeX
- 最新のパッケージを使いたい場合は TeX Live (Win32)
ということのようだ。 (ちなみに64ビット対応版というものはなかった。 まぁ Windows では64ビットである必然性はないけど)
前回は TeX インストーラを使って角籐版をインストールしたので,今回は(パッケージ優先で) TeX Live を使ってみることにする。
TeX Live は毎年新しいバージョンが出ているようで,現在の最新は 2012 だが, 2013 も7月に public release されるらしい。 なので今回は思い切って 2013 のテスト版を試すことにした。 やり方は「Microsoft Windows - TeX Wiki」の TeX Live の節を参考にすればいいだろう。 ここでは,かいつまんで説明する。
まず http://ftp.math.utah.edu/pub/texlive/tlpretest/ から install-tl.zip をダウンロードして適当なフォルダに展開する。 私がダウンロードしたときは日付が 29-May-2013 となっていた。 インストーラは内部で Perl を使用するようだが,あらかじめ Perl をインストールする必要はない。 インストーラに Perl が一揃い同梱されていて,そちらを使うようだ。
起動はコマンドプロンプトで install-tl.bat
を使って以下のコマンドラインで行う。
> install-tl.bat --repository http://ftp.math.utah.edu/pub/texlive/tlpretest/
リポジトリがテスト版のものになっていることに注意。
(install-tl.bat
でうまくいかない場合は install-tl-advanced.bat
を管理者として実行すればいいという情報もあったが,試してない)
起動するとウィザード画面が開くので必要な項目を入力する。
といってもインストール先のフォルダ指定以外は全部既定で構わない(と思う。いや,インストール先も既定で別に構わないのだが。
ちなみにインストール先のパスには “C:\Program Files\texlive
” みたいな空白を含むものは避けたほうが良い)。
入力を行なってウィザード画面を進めるとインストールが始まるのだけど,これが長い(私の環境で2時間以上かかった)。 なんせ2686個のパッケージをインストールするのである。 なのでインストールが始まったら放っておいてお茶でも飲んでいたほうがいい。 ログを見てると時々 wget に失敗するみたいだが(500を吐いてる),ちゃんとリトライしてるので気にしなくても大丈夫。
(私の環境ではウイルス対策ソフトとコンフリクトして強制停止になってしまった。 tds というパッケージ。 インストーラを再起動すると前回と同じ設定でインストールを行うか訊いてくる。 ちょっとアレな気もしたが,ウイルス対策ソフトを一時停止して再度インストールを行うとうまくいった。 う~んな感じ)
ちなみに TeX Live 2013 には e-pTeX や IPAex フォントや pLaTeX2e 新ドキュメントクラスも入ってるらしい。 私は TeX 界隈をちゃんと追ってるわけではないのだが,日本のユーザの方々の努力の賜物なんだろうなぁ,と思う。 ありがとうございます。
インストールが完了したら pTeX/pLaTeX が起動するか確認してみる。
> platex -v e-pTeX 3.1415926-p3.4-110825-2.6 (sjis) (TeX Live 2013/W32TeX) kpathsea version 6.1.1 ptexenc version 1.3.1 Copyright 2013 D.E. Knuth. There is NO warranty. Redistribution of this software is covered by the terms of both the e-pTeX copyright and the Lesser GNU General Public License. For more information about these matters, see the file named COPYING and the e-pTeX source. Primary author of e-pTeX: Peter Breitenlohner.
その後は適当な文書を作ってコンパイルしてみるのだが... うまくいかない。
どうも調べてみると texmf-dist/tex/platex/jsclasses/
にあるドキュメントクラスが原因ぽい。
中に入っている jsarticle.cls
等のファイルは UTF-8 でエンコーディングされているのだけど,どうやらそれがよくないらしい。
試しに jsarticle.cls
を Shift-JIS に変換して再コンパイルしてみたらうまくいった。
しかしこれだと TeX 文書が Shift-JIS 限定になってしまうんだとなぁ。
どうすればいいんだろ。
さて,「Microsoft Windows - TeX Wiki」の後半を見ながら作業の続き。
texmf-dist/web2c/texmf.cnf
を開いて shell_escape_commands
に関する記述を探す。
すると以下の様な記述になっているはずである。
shell_escape_commands = \ bibtex,bibtex8,\ kpsewhich,\ makeindex,\ mpost,\ repstopdf,\
これを以下のように修正する。
shell_escape_commands = \ bibtex,bibtex8,bibtexu,pbibtex,upbibtex,biber,\ kpsewhich,\ makeindex,mendex,texindy,\ mpost,pmpost,\ repstopdf,epspdf,extractbb,\
IPAex フォントは texmf-dist/fonts/truetype/public/ipaex
にある。
右クリックするとコンテキストメニューに「インストール」の項目があるのでインストールしてしまおう。
TeX Live では日本語フォントの埋め込みも簡単にできるようだ。 コマンドプロンプトから
> kanji-config-updmap ipaex
と実行すると IPAex フォントが埋め込まれるようになる。 実際に dvipdfmx コマンドで PDF を生成し確認してみるとよいだろう。
とまぁこんなところか。 文字エンコードの問題は困ったもんだなぁ。 みんなどうやってるんだろう。
追記(6/19):
Twitter で教えて頂きました。
起動時に “-kanji=utf8
” オプションを付けることで UTF-8 な TeX 文書も処理できるようです。
> platex -kanji=utf8 -v e-pTeX 3.1415926-p3.4-110825-2.6 (utf8.sjis) (TeX Live 2013/W32TeX) kpathsea version 6.1.1 ptexenc version 1.3.1 Copyright 2013 D.E. Knuth. There is NO warranty. Redistribution of this software is covered by the terms of both the e-pTeX copyright and the Lesser GNU General Public License. For more information about these matters, see the file named COPYING and the e-pTeX source. Primary author of e-pTeX: Peter Breitenlohner.
e-pTeX のバージョン表記が “(utf8.sjis)
” になっている点に注意。
前はこんなことしなくても良かった気がするんだけど,まぁいいや。
当面はこれで運用するかな。
追記(6/21):
Twitter に情報があった。 感謝です。
「TeX Live 2013のWindowsバイナリは角藤さんのW32TeX版と同じ(少し古い版)だったんだ。 texmf.cnfにguess_input_kanji_encoding = 1を入れれば文字コードは推測してくれる。 これTeX Liveそのものに入れられないかな」
(Twitter / h_okumura より)
と言うわけで,インストールフォルダ直下にある texmf.cnf
に件の記述を入れて早速試してみたら大成功! “-kanji=utf8
” オプションなしで処理できた。
TeX 文書やクラスファイルの文字エンコーディングも正しく推測してくれるようだ。
よーし,うむうむ,よーし。
(上記のリンク先でも少しやり取りがあるみたいだけど, UTF-8 に BOM を強制するのは止めてくれ。 少なくとも議論の前に RFC3629 くらい読め,と言いたい。 (昔 UTF-8 の判定を BOM の有無だけで行うという超手抜き実装があって苦労したんだってば)