babun(Cygwin)でTeX日本語環境をインストールする


はじめに

babun環境でTeXを入れいようとしたら思いの外はまってしまったので備忘録を兼ねて記載します。
あくまで私の環境で発生したことなのでこれでうまくいくとは思いません。(むしろ調べた感じCygwin環境でここまではまってたのは他にいなかった)

だらだら状況説明しながら書いてるので手っ取り早く解決策だけ知りたい人は最後尾のまとめだけ見てね

環境

OS : Windows 8.1 64bit
Cygwin : babun 1.1.1
導入TeX : pLaTeX

自分はbabunというCygwinをラップした環境を使っているけど生のCygwinを使ってapt-cygを使ってもだいたいおんなじ感じだと思います。

ハマった現象

babunのpact(パッケージマネージャ)でtexliveを使ってpLaTeX始めTeXを入れようとしたらまともに動かなかった。
まずtexlive自体のインストールでも一度コケる。
本体自体はインストールされ瑠葉になってlatex、platex等はパス通るようになっても、いざコンパイルしようとしたら「I can't the format file find 'latex.fmt'」と出てきて止まってしまう。
調べてみてもなかなか答えが見つからなかった。

解決策

幾つか問題があったので順番に説明

インストールでコケる問題

texlive自体のインストールは下記コマンドで出来る。

pact install texlive

これでtexlive本体とtexlive-collection-basic(この中に基本的なTeXエンジンが入ってる)が導入されるはずだが途中でパスが通ってないからファイルがないよって怒られる。
具体的には「TEXMFMAIN」と「TEXMFCNF」という環境変数でこれ以下にあるファイルを参照しようとした時にエラーが出る。
これは次のように打てば解決する。

texconfig rehash

こうすることによってtexliveで管理されている場所を認識させることができるみたい。(よく理解できていない)
ちなみにTEXMFMAINは「/usr/share/texmf-dist」でTEXMFCNFは「/usr/share/texmf-dist/web2c」になると思う。
texlive-collection-basicのところでエラーが出てたから上記コマンドを打ったあともう一回入れなおす。

pact update texlive-collection-basic

これでエラーなく導入は完了するはず。

pLaTeXの導入

次にpLaTeXを入れた時におかしくなるのだがそこまで導入手順を説明する。

pact install texlive-collection-langjapanese

これで日本語TeX環境の導入ができる。
このパッケージにはtexlive-collection-langcjk(日中韓言語パック)に依存していて、cjkの方にpTeXが、japaneseの方にpLaTeXが入っている。
巷の資料をググったところcjkだけでpLaTeX使えるって記述が多いからもしかしたら最近分割されたのかも

latex.fmt、platex.fmt等がないと怒られる

上記の通りインストールするとplatexコマンドまで使えるようになる。
なので適当にサンプルを作ってコンパイルさせようとしたところはじめに述べたとおり「I can't find the format file 'platex.fmt(latex.fmt)'」(ファイル名はどのTeX動かすかで変わる)とエラーが出る。
調べても英語ばかりでしかも解決しない……
いろいろ試していて3回位入れなおしたけどダメだった。
英語サイト読み漁りながら複数のサイトの記述を結び合わせてやっと解決策を見つけた。

なぜlatex.fmt等がないのか

正しい動作では各パッケージをインストールすると自動でビルドされてfmtファイルが作成されるらしい。
しかし何らかの原因でビルドしていないらしい。

どういう手順で生成されるのか(手動でできるのか)

下記コマンドを打つと生成処理が走るっぽい
fmtutil-sys --all
実際に走らせてみるとなんかfmtが生成されてるっぽいんだけどtex.fmtとかpdftex.fmtとかだけでLaTeX関係のものが作られない……
ここでかなり悩んだ。

fmtutil-sysはどこを見てるか

何らかのファイルをビルドしてfmtにしてるはずだからどこかに元ファイルがあるはず
調べたら「/usr/share/texmf-dist/tex/」以下を参照しているみたい。
見てみるとlatexディレクトリやplatexディレクトリちゃんとある。
でもそれらはfmtutilとかから見えてないっぽい。
更に調べてたら下記のような記述を発見
http://0xcc.net/misc/mktexlsr.html
このサイトによるとmktexlsrというコマンドでファイルを管理しているから追加された時に実行する必要がある。
本来ならおそらくインストールのタイミングで自動実行されるんだろうけどうまく言っていないみたい。
ということで

mktexlsr
fmtutil-sys --all

お、ログ見るとちゃんと生成されてるっぽい。
実際にファイルは「/var/lib/texmf/web2c/」にある。

これで再度サンプルをコンパイルするとDVIファイルが生成されてdvipdfmxでPDFにもできた!

まとめ

だらだらと長い記述になったのでやったことおさらい

  • 本体インストール
pact install texlive
  • 環境変数?認識
texconfig rehash
  • pLaTeXインストール
pact install texlive-collection-langjapanese
  • 追加ファイル認識
mktexlsr
  • fmtファイル生成
fmtutil-sys --all

以上
なにかおかしなとこなどありましたらコメントください。