########################################################################### # Automating LaTeX-proposal management by make. # The participants work on proposal.tex in "draft" mode, which gives a lot # of information to the developers. Variants submit.tex and public.tex are # used to prepare official versions (hiding development/private info). ########################################################################### # To use this file, set these variables in a local Makefile # PROPOSAL = ???? # the base name of the top-level proposal file(s) # REPORT = ???? # the base name of the top-level report file(s) # BIB = ????? # directory of the bibTeX databases # PROP.dir = ???? # The LaTeX-proposal class directory ########################################################################### # The following variables can be used to customize things furhter LATEXMODE ?= batchmode PDFLATEX = pdflatex -interaction $(LATEXMODE) -file-line-error ########################################################################### # the following variables are computed from these settings TARGET = $(PROPOSAL) $(REPORT) # all pdflatex targets TARGET.pdf = $(TARGET:%.tex=%.pdf) # PDFs to be produced TARGET.aux = $(TARGET:%.tex=%.aux) # their aux files. PDATA = $(PROPOSAL:%.tex=%.pdata) # the proposal project data SRC = $(filter-out $(TARGET),$(shell ls *.tex)) # included files BBL = $(PROPOSAL:%.tex=%.bbl) PROPCLS.dir = $(PROP.dir)/base DFGPROPCLS.dir = $(PROP.dir)/dfg TEXINPUTS := $(PROPCLS.dir)//:$(DFGPROPCLS.dir)//: BIBINPUTS := $(BIB):$(BIBINPUTS) BIBS := $(shell ls *.bib 2>/dev/null) $(shell ls $(BIB)/*.bib 2>/dev/null) PROPCLS.clssty = proposal.cls pdata.sty reporting.cls DFGPROPCLS.clssty = dfgproposal.cls dfgpdata.sty dfgreporting.cls PROPCLS = $(PROPCLS.clssty:%=$(PROPCLS.dir)/%) $(DFGPROPCLS.clssty:%=$(DFGPROPCLS.dir)/%) all: $(TARGET.pdf) submit: $(MAKE) -w PROPOSAL=submit.tex all public: $(MAKE) -w PROPOSAL=public.tex all cd: # make cd will prepare CD for burning mkdir CD;make $(TARGET.pdf); cp $(TARGET.pdf) CD bbl: $(BBL) $(BBL): %.bbl: %.aux biber -min-crossrefs=100 -terse $< $(PDATA): %.pdata: %.tex $(PDFLATEX) $< $(TARGET.aux): %.aux: %.tex $(PDFLATEX) $< $(TARGET.pdf): %.pdf: %.tex $(SRC) $(BIBS) $(PROPCLS) $(PDFLATEX) $< || $(RM) $@ # sort $(PROPOSAL:%.tex=%.delivs) > $(PROPOSAL:%.tex=%.deliverables) @if (test -e $(patsubst %.tex, %.idx, $<));\ then makeindex $(patsubst %.tex, %.idx, $<); fi # bbl is up to date $(MAKE) -$(MAKEFLAGS) $(BBL) @if (grep "(re)run" $(patsubst %.tex, %.log, $<)> /dev/null);\ then biber $(basename $<); fi $(PDFLATEX) $< || $(RM) $@ @if (grep Rerun $(patsubst %.tex, %.log, $<) > /dev/null);\ then $(PDFLATEX) $< || $(RM) $@; fi @if (grep Rerun $(patsubst %.tex, %.log, $<) > /dev/null);\ then $(PDFLATEX) $< || $(RM) $@; fi clean: rm -f *~ *.log *.ilg *.out *.glo *.idx *.ilg *.blg *.run.xml *.synctex.gz *.cut distclean: clean rm -f *.aux *.ind *.gls *.ps *.dvi *.thm *.out *.run.xml *.bbl *.toc *.deliv* *.pdata *-blx.bib rm -Rf auto echo: @echo $(BIBS)