latex 執筆時に omake -P で快適自動ビルド
博論執筆の現実逃避で自分の latex 執筆環境の改善を少し試みる.
eps → pdf
eps の図を入れまくると tex のコンパイルが遅くなり omake -P の快適さが薄れてしまう.tex からは pdf を入れるようにして,omake で事前に eps を pdf に変換するようにした.
OMakefile
問題は,自分の画像のディレクトリ構造が上の OMakefile で想定されているものよりももっと深いこと.これに対応するのが簡単かと思いきや omake 初体験にはかなり骨が折れた.
omake はドヤ顔で「omake のルールには有効範囲のスコープがあるので管理しやすい!ワイルドカードを用いるルールが適用されるのはカレントディレクトリだけだ!」って言っているのだけれど,それがめっちゃ困るっていう.export というものを使うと変数等をグローバル化したりできるっぽいのだが,ワイルドカードのルールは頑張っても外に出てくれず,自分のググり力で30分ググった感じでは出すのに成功してる人は見つけられなかった.
というわけで愚直に foreach する以下のような物を書いたら動いた.
EPS_IMAGE_FILES = $(glob $(IMAGE_DIR)/*.eps $(IMAGE_DIR)/*/*.eps $(IMAGE_DIR)/*/*/*.eps) foreach(EPS_FILE, $(EPS_IMAGE_FILES)) PDF_FILE = $(addsuffix .pdf, $(removesuffix $(EPS_FILE))) XBB_FILE = $(addsuffix .xbb, $(removesuffix $(EPS_FILE))) $(PDF_FILE): $(EPS_FILE) $(EPSTOPDF) $< $(XBB_FILE): $(PDF_FILE) $(EBB) $<
no BoundingBox
上記のように Bounding Box を用意してやっても no BoundingBox と言われることがある.調べると,ファイルパスにドットが2つ以上入っていると起こる有名なバグみたいだ.これはひどい.
結果
EPS 使用時
omake thesis.pdf 10.17s user 0.61s system 100% cpu 10.740 total
PDF 使用時
omake thesis.pdf 0.89s user 0.09s system 99% cpu 0.977 total
満足.