文字っぽいの。

文字を書いています。写真も混ざります。

まだLaTeXのコンパイルで消耗しているの?OMakeで継続監視ビルドしてPDF生成する方法

はじめに

LaTeXは綺麗な組版で文章を出力してくれて大変便利ですが、コンパイルが地味に面倒ですよね。 単純な文章を書いているときは良いのですが、数式や図表を扱う場合はコンパイル・確認・修正を繰り返す必要があり面倒ですし、 \cite{}\ref{}を使うと、複数回コンパイルする必要があって更に面倒です。

IDE系のツールを使っている場合は、ボタンやショートカットキーでよしなにビルドしてくれますし、 バッチファイルやMakefileRakefile)を作っておけばコンソールでコマンド1発叩くだけになります。

しかし、この動作すら面倒です。僕はもうEmacs上でC-c t bを叩いたり、コンソールでmakeを叩くステップを踏みたくありません。 執筆を楽にするためにコンピュータを使っているのであって、LaTeXコンパイルをしたいからコンピュータを使うわけではありません。 コンピュータは賢いのですから、文章を書いて保存したらよしなにバックグランドでコンパイルして欲しいものです。

ちなみに、pandocの様なドキュメント変換ツールや、CIツールを利用した自動ビルドは今回扱いませんのであしからず。

解決法

OMakeを使います。強いMakeだと思ってもらえれば良いです(雑)。

インストール

Windows

下記サイトからバイナリがダウンロードできますので、パスの通った場所におきましょう。

Mac

少し前までHomebrewからのインストールが上手くいかなかったようですが、今は普通に入れれば大丈夫です。

$ brew install o-make

Ubuntu

ファイルの更新監視の為にfamも必要です。

$ sudo apt-get install omake fam

セットアップ

.texファイルがあるディレクトリで、下記のコマンドを実行します。

$ omake --install

OMakefileOMakerootというファイルが生成されるはずです。

OMakefileの編集

OMakefileには予めサンプルやコメントが書いてあるので、全部消して下記の設定を書きましょう。 設定の内容は、各自のディレクトリ構成やファイル名、コンパイルに使用するコマンドやオプションによって、 変更すると良いです。

LaTeXの自動ビルド用のOMakefile

こちらの設定は、 LaTeX用のOMakefile - Qiita を利用させて頂きつつ、下記の変更を追加しています。

  • バウンディングボックスをxbb形式で生成
  • PDF形式の画像に対応

.gitignoreの設定

Gitで管理している人は下記の設定を.gitignoreファイルに追加すると良いでしょう。

.omakedb
.omakedb.lock
*.omc

使い方

下記のコマンドを叩くだけで、継続監視ビルドを始めてくれます。

$ omake -P --verbose

.texファイルから.pdfファイルを生成する際に依存しているファイル(.tex.bib.png等)が更新されると、勝手にビルドしなおしてくれます。超便利。 .xbbファイルも自動で生成してくれるので、PNGやJPG形式の画像もシュッと使えます。もちろんPDFやEPS形式でも大丈夫ですよ。

ちなみに、LaTeXにおける画像の取り扱いについては

日本人のための LaTeX タブー集 ~画像読込編~ - Qiita

が詳しいので、ご一読されることをおすすめします。

ちなみに、OMakeは普通にMakeライクに使えるので

$ omake

とすればビルドが走りますし

$ omake clean

とすれば、いわゆるmake cleanが出来ます。

便利につかう

こうなると、わざわざPDFファイルを開き直すのも不便です。 PDFリーダで自動リロードを行ってくれるソフトはいくつかありますが、下記がおすすめです。 (Adobeリーダーは対応してなかった気がしますが、今はしてるんですかね?)

Windowsユーザの方は、

無料 PDF リーダー - Sumatra PDF

Macユーザの方は、

Skim (Mac) - ダウンロード

を使うと、PDFファイルの変更を検知して自動でリロードしてくれます。 MacPreview.appもリロードしてくれるのですが、フォーカスしてないとダメなので少し不便です。

さらに便利に使う

Macユーザ限定になってしまいますが、iTerm2と組み合わせると便利です。 iTerm2のPreferences->Profiles->Advancedから、Triggersのeditを選んで下図の様に設定してあげます。

f:id:FromAtom:20150109181731p:plain

こうすると、PDF生成が終わったり、構文エラーが検出された時にGrowlの通知で教えてくれます。

参考サイト