Jun 16, 2007

博士論文メモ:Makefile

なかなか良い tex 用 Makefile が出来た.GNU make の機能使っている.

まず,論文ディレクトリは以下のような構造にしておく.

Makefile        obj/            pstricks/       src/
figs/           old/            rfcsbib/

src 以下には tex ファイルと bib ファイルを UTF-8 で置く. 現状まだ UTF-8 で platex 通らないので,Makefile 内で自動で EUC に nkf するようにしている.nkf 後の EUC ファイルは obj 以下に入る. figs ディレクトリには図を eps で置く.

make はトップディレクトリで実行するので,tex ファイルを \input したり,\includegraphics する場合には,obj/intro.tex や figs/figure-1.eps などのように指定する(src/*.tex の中で). (old ディレクトリはゴミ置き場.)

つまり,src ディレクトリに tex と bib ファイルを,図を figs に置き,トップディレクトリで make すると,$(MAIN).pdf が トップディレクトリにできる,というのが動作概要.

二つ特殊な機能をつけてみた.まず pstricks.pstricks ディレクトリに tex ファイルを入れて make pstricks とすると,同名の eps ファイルが figs 内にできる.もちろんこれは $(MAIN).pdf を作る際の依存関係として 考慮される.

もう一つは rfcs.bib.make rfcsbib とすると,IETF の RFC INDEX を 取ってきて,bib ファイルを作ってくれる.(内部的には awk ファイルを 取ってきて,それを使って変換する.)rfcsbib/rfcs.bib というファイルが できる.

苦心したのはやはり依存関係等.make すると yasu-dthesis.pdf が出来る, make clean すると dvi,bbl,log,aux 等の中間ファイルは消すが, その後もう一度 make しても tex/bib ファイルが変わっていなければ 作り直さない,などとしたかった.そうするには,.SECONDARY を使った. (使わないと,pdf の依存関係で dvi を調べに行き,ファイルが無いので dvi を作ろうとする.しかし .SECONDARY 使っているので,dvi が無いのは 気にせず,さらに dvi の依存関係を調べてくれる,ようだ(俺の理解では).)

src の下には tex ファイルをフラットに置くことを想定している. src の下にチャプター毎にディレクトリ作りたいなどという場合には, Makefile を少々変更する必要がある気がする.

Makefile

ちなみに,構成要素の論文誌を二つとも投稿しなおし,博士研究のプレゼン内容も 変わったので,博士論文は書き直しという感じ.

Posted at 00:20 in education | WriteBacks (0) | Edit
WriteBacks
TrackBack ping me at
http://www.sfc.wide.ad.jp/~yasu/nblog/education/about-dthesis-4-Makefile.trackback
Post a comment

writeback message: Ready to post a comment.