ディレクトリ構成
以下のように、同一ディレクトリ内に複数のLaTeXソースコードがあり、それぞれ単独でコンパイルしたい場合を考えます。
$ tree
.
├── aaa.tex
├── bbb.tex
├── ccc.tex
├── ddd.tex
├── eee.tex
├── fff.tex
└── Makefile
Makefile
all: $(patsubst %.tex,%.pdf,$(wildcard *.tex))
clean:
$(RM) *.aux *.log *.dvi
%.pdf: %.dvi
dvipdfmx $<
%.dvi: %.tex
platex $<
.PHONY: clean
解説
%.dvi: %.tex
platex $<
により、%.tex
から%.dvi
を生成します。
使用例
$ make aaa.tex
%.pdf: %.dvi
dvipdfmx $<
により、%.dvi
から%.pdf
を生成します。
使用例
$ make aaa.dvi
all: $(patsubst %.tex,%.pdf,$(wildcard *.tex))
all: *.pdf
と書きたいところですが、初回コンパイル時には*.pdf
は存在しないためエラーになるのでこう書きます。
使用例
$ make
本来make all
と書くべきですが、一番上のターゲットは引数を省略できます。
clean:
中間ファイル*.aux
、*.log
、*.dvi
を一括削除します。
.PHONY: clean
は、ディレクトリ内にclean
というファイルがあった時に無視することを意味しています。
使用例
$ make clean
注意
目次、相互参照等があり複数回コンパイルが必要な場合は、このMakefileでは正しくコンパイルできません。
複数回コンパイルが必要な場合は、%.dvi: %.tex
を次のように書き換えます。
%.dvi: %.tex
for i in `seq 1 2`; do platex $<; done
2回で足りない場合はseq 1 2
をseq 1 3
等にしてみてください。