我的书结构如下:
book.tex
chapter/ch1.tex
/ch2.tex
ref/ch1.bib
/ch2.bib
由于我的书的每一章都需要有自己的参考资料,因此我使用了chapterbib
包并将每章的 tex 文件与相应的 bib 文件一起提供。最后,我可以使用以下 bash 命令来编译这本书:
xelatex book
bibtex chapter/ch1
bibtex chapter/ch2
xelatex book
xelatex book
现在我的问题是,我如何通过编写 Makefile 来编译这本书?我当前的脚本根本不起作用。
TEXFILE := book
CHAPTERDIR := chapter
CHAPTERS := $(wildcard $(CHAPTERDIR)/*.tex)
TEXENGINE=xelatex
BIBTEX=bibtex
BUILDTEX=$(TEXENGINE) $(TEXFILE)
all:
$(BUILDTEX)
$(shell for chapterSrc in $(CHAPTERS); do \
chapterSrcName=$(shell basename $(chapterSrc) .tex); \
$(BIBTEX) $(CHAPTERDIR)/$(chapterSrcName); \
done)
$(BUILDTEX)
$(BUILDTEX)
谢谢。
答案1
警告:未经测试的代码。 应该在 GNU Make 中工作。
TEXFILE := book
CHAPTERDIR := chapter
CHAPTERS := $(wildcard $(CHAPTERDIR)/*.tex)
BIBS := $(patsubst %.tex,%,$(CHAPTERS))
TEXENGINE=xelatex
BIBTEX=bibtex
BUILDTEX=$(TEXENGINE) $(TEXFILE)
all:
$(BUILDTEX)
for c in $(BIBS); do \
$(BIBTEX) $$c; \
done;
$(BUILDTEX)
$(BUILDTEX)