TextMateのLaTeX bundleで,LaTeXの実行を指示している箇所が texmate.py にあるので,そこを直接修正することで uplatex での組版ができるようにした。具体的には,pdflatexが選択されているときは,これをptex2pdfで置き換え,また,latexが選択されているときは,これをuplatexで置き換えた。また,latexのあとは,dviをpdfに変換するのだが,dvi2psとps2pdfの組合せの代わりに,dvipdfmxを使うように変更した。具体的は変更は以下の通り。
編集するファイルは,
~/Library/Application Support/TextMate/Managed/Bundles/latex.tmbundle/Support/bin/texmate.py
補助的な関数の定義のあと,914行目からメインのルーティンが始まる。command の種類によって,様々な処理を行うようになっているが,メインは command が latex の場合。そこで,途中の
elif command == 'latex':
以下のブロック(1044行目あたり以降)を次のように書き換えた。
elif command == 'latex': engine_options = construct_engine_options(typesetting_directives, tm_engine_options, synctex) if engine == 'latex': engine = 'uplatex' engine_options = "-shell-escape -synctex=1 -interaction=nonstopmode" elif engine == 'pdflatex': engine = 'ptex2pdf' engine_options = "-u -l -ot \"-interaction=nonstopmode -synctex=1 -file-line-error -shell-escape\" " command = "{} {}".format(engine, engine_options) status = run_latex(command, filename, cache_filename, verbose) tex_status, fatal_error, number_errors, number_warnings = status number_runs = 1 if engine == 'latex': # call("dvips {0}.dvi -o '{0}.ps'".format(file_without_suffix), # shell=True) # call("ps2pdf '{}.ps'".format(file_without_suffix), shell=True) call("dvipdfmx {0}.dvi", shell=True) if tm_autoview and number_errors < 1 and not suppress_viewer: viewer_status = run_viewer( viewer, filepath, pdffile_path, number_errors > 1 or number_warnings > 0 and tm_preferences['latexKeepLogWin'], 'pdfsync' in packages or synctex, line_number)