- 论坛徽章:
- 5
|
是这样的,要给latex写一个makefile,规则是这样的:
对.tex文件执行latex命令,生成.aux, .out, .dvi文件,但是因为缺少了.bbl文件,所以.dvi文件不正确。
对刚刚生成的.aux文件执行bibtex命令,生成需要的.bbl文件
对.bbl, .aux, .tex文件再执行一次latex命令,这时同样会生成.aux, .out, .dvi文件。这时这三个文件都是正确的了。
对.dvi文件执行dvipdfm,生成.pdf文件。工作完成。
所以,.pdf依赖.dvi
.bbl 依赖 .aux
.aux, .out 依赖 .tex
那么,在一次完全构建中,latex会执行两次,第一次是为了得到aux文件,从而生成bbl,第二次是为了得到.dvi文件。
现在的问题是,如果之前已经构建了一次pdf文件了,但因为上次第二次执行latex的时候同样会更新.aux文件。这样.aux文件会比.bbl文件新,从而导致不必要的latex的第二次执行。这么解决这个问题呢??
目前的makefile是这样的:
$(TARGET) : frame.pdf
$(MV) $< $@
frame.pdf : frame.dvi
$(DVIPDFM) $<
frame.dvi : frame.aux frame.bbl
$(LATEX) frame
frame.bbl : frame.aux $(BIBS)
$(BIBTEX) $<
frame.aux : frame.tex $(INCLUDES) $(BBS)
$(LATEX) $< |
|