iwiwi 備忘録

学んだことを殴り書きます。自分向けのメモです。

latex 執筆時に omake -P で快適自動ビルド

博論執筆の現実逃避で自分の latex 執筆環境の改善を少し試みる.

OMakefile

だいたいこれをベースにさせてもらうととても良い感じ.

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つ以上入っていると起こる有名なバグみたいだ.これはひどい

これは,hoge.piyo.pdf というファイル名とすると,{hoge.piyo}.pdf と表記すると回避できる.

結果

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

満足.