YosemiteでSublime Text 3 + LaTeXToolsを使ったらPDF出てこない話

覚え書き。

今日公開されたMac OS X Yosemite (10.10)に早速更新したところ、Sublime Text 3 + LaTeXToolsの環境でLaTeXをビルドしてもPDFが出力されなくなった。

この問題はYosemiteがbetaの時点でアップグレードして報告した猛者がいた。LaTeXTools on OS X 10.10 · Issue #401 · SublimeText/LaTeXTools

opened this issue on 5 Jun

(白目)

症状としては上述の通り。ビルドを実行したときにコンソールへ吐き出されているログはこんな感じ。

Welcome to thread Thread-13
['latexmk', '-cd', '-e', "$latex = 'uplatex %O -interaction=nonstopmode -synctex=1 %S'", '-e', "$biber = 'biber %O --bblencoding=utf8 -u -U --output_safechars %B'", '-e', "$bibtex = 'upbibtex %O %B'", '-e', "$makeindex = 'makeindex %O -o %D %S'", '-e', "$dvipdf = 'dvipdfmx %O -o %D %S'", '-f', '-norc', '-gg', '-pdfdvi', 'report.tex']
Finished normally
12
Exception in thread Thread-13:
Traceback (most recent call last):
  File "./threading.py", line 901, in _bootstrap_inner
  File "/Users/mayth/Library/Application Support/Sublime Text 3/Packages/LaTeXTools/makePDF.py", line 147, in run
    data = open(self.caller.tex_base + ".log", 'rb').read()
FileNotFoundError: [Errno 2] No such file or directory: '/Users/mayth/Documents/report.log'

report.{pdf,log}。察して。

それはともかく、どうやらこれはYosemiteでデフォルトのPATHの値が変わっているのが原因らしい。そこで、肝心のコマンドを呼んでいるところでPATHを追加してあげればよい。

LaTeXTools on OS X 10.10 · Issue #401 · SublimeText/LaTeXToolsから引用すると

proc = subprocess.Popen(cmd, stderr=subprocess.STDOUT, stdout=subprocess.PIPE, env=os.environ)

これはmakePDF.pyの中に含まれている。MacではmakePDF.pyは以下のパスにある。

$HOME/Library/Application Support/Sublime Text 3/Packages/LaTeXTools/

パス辿るのが面倒ならPreferences -> Browse Packagesを使えばPackagesフォルダがFinderで開かれるので、その中のLaTeXToolsを見ると存在するはず。

現時点では当該の記述は95行目にある。その行に上記引用のように、env=os.environを追記すると上手く動くようになった。