Ubuntu 13.10 で pLaTeX を使おうとしたらハマった
複雑すぎだろ。
お久しぶりです、さんどさんです。
どうもTeX関係になると毎回苦労していまして、しかもその苦労たるや数時間単位、下手を打つと日にち単位で悩む羽目になるので、「苦労したけど環境構築できたからもういいや」で放っておくと、後からもう一度インストール・設定することになったときは実に非生産的で不毛です。
Windowsに入れた時もcygwinとのパスの兼ね合いだとか、Emacsから呼び出すにはどうしたらいいだとか、とにかく苦労してます。TeXとかLaTeXとか、他にもYaTeXやらTeTeXやら、みんな違ってみんないいのは構わないけど、何がどう違うの? pLaTeXが日本語対応っていうのはさすがにわかるけど p って何?
そもそもTeXは「てっくす」ではなく「てふ」という発音だと大昔に聞いて、LaTeXは「らてふ」が回り回って「やちょう」になってるらしいけど、字面的にどうしても自然に脳内変換できなくて、妥協した結果が「てく」な私はどうなの?
TeXファミリーへの疑問は尽きません。*1
事の発端
もともとはEmacsのorg-modeから日本語を含むpdfを作成したかったのでした。アルファベットのみのpdfは問題なく出力されるのですが、日本語の文字がまったく透明になっている。念のためWindows環境でも確認しましたが、日本語のフォント情報を参照できずに空白が出力されちゃってたみたいです。やっぱり素の状態から日本語pdf出力は無理。
TeX環境の用意
ほとんどの場合TeX Liveという統合環境をインストールすればよろしいようです。私はいろんな記事を参考にしていろんなパッケージをインストールして試行錯誤した結果、なぜかdvipdfm(x)
を実行するたびに
** WARNING ** Could not open config file "dvipdfmx.cfg".
という警告を騙るFatal Errorが発生していましたが、そんなときは
$ sudo apt-get --purge autoremove tex\*
とかなんとかして、TeXに限らず最近インストールした怪しい関連パッケージを設定ファイルごと一旦削除したほうがいいと思います。とりわけ私のような「嗚呼TeX、あなたはどうしてそんなにブラックボックスなの?」と思っている人には特に効果的です。
話を戻しましてTeX Liveのインストール。
- 参考サイト: Loading...
$ sudo apt-get install texlive-full texlive-lang-cjk xdvik-ja $ sudo vi /usr/share/texmf/web2c/texmf.conf shell_escape_commands = \ bibtex,bibtex8,bibtexu,pbibtex,upbibtex,biber,\ kpsewhich,\ makeindex,mendex,texindy,\ mpost,pmpost,\ repstopdf,epspdf,extractbb,\
texlive-full
をインストールしておかないとEmacsの org-mode
から出力するときに必要なLaTeXクラスが無くて困るので、1時間ほどかかりますが悪しからずご了承くださいませ。
Emacsのorg-modeへの対処
- 参考サイト(というか実質丸投げ): Redirecting...
これでおおむね完了です。pdfファイルを開くコマンドは okular
でもいいんですが、 texlive-full
をインストールしていれば poppler-data
というものも一緒にインストールされているはずなので、Ubuntu標準のドキュメントビューア evince
で開くことができます。
長々とお疲れ様でしたと言いたいところですが私の環境では相変わらず日本語は出力されませんでしたので、以下蛇足です。
org-mode: C-c C-e p で日本語pdfが作れないときの対処
コンソールから
$ platexpdf something.ja.tex $ evince something.ja.pdf
と打ち込むと、こちらはきちんと日本語が出力されていました。感動するほど日本語でした。多分リアルに「ふつくしい……」とか言ってて気持ち悪かったと思います。
とすると問題はEmacs側にあるはずなので、掘り下げていったら、上記参考サイトの elisp
コードのうちこのライン
(when (executable-find "platexpdf") (setq org-latex-to-pdf-process '("platexpdf %f" "platexpdf %f")))
org-latex-to-pdf-process
を評価してみたら見事に platexpdf
が入っていなかったので、どうやら when
の条件である (executable-find "platexpdf")
が nil
を返しているようです。っていうか返してました。もちろん chmod +x
としてあります。
その原因は platexpdf
を $HOME/bin
に放り込んでいたかららしく、Emacsが $HOME/bin
を実行パスとして認識できていなかったみたいです。
もうこの頃には体力的に限界だったので対処療法的に /usr/local/bin
へ platexpdf
を移し、 (executable-find "platexpdf")
が t
を返すようになったのを確認して、 org-mode
から C-c C-e d
しまして、 evince
で日本語が表示できていることを確認して寝たのが昨日です。
Emacsが参照するパスをシェルと同じものにするには GitHub - purcell/exec-path-from-shell: Make Emacs use the $PATH set up by the user's shell などなどいろいろあるようですが、このエントリを書いてる時点で作業に戻りたいのでこちらに関してはまた今度。「こんな例もあるよ」ということでひとつ。