Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Makefile for LaTeX'ing and Bibtex'ing papers that may include xfig'ures. Supports pdflatex as well as latex, dvips, and epstopdf.
##########################################################################
# LaTeX Makefile by Christoph Kirsch
#
# Do not remove any tab characters.
# Tab characters distinguish dependencies from commands.
##########################################################################
# Define the main file that includes all others and the bib file
# In local make script, define, e.g., 'export MAIN=other' to overwrite default
MAIN := paper
BIB := paper
##########################################################################
# Get all .fig files in current directory
# and replace .fig suffix by .pdf and .pdf_t, respectively.
FIGURES := $(wildcard *.fig)
FIGPDF := $(patsubst %.fig,%.pdf,$(FIGURES))
FIGPDFT := $(patsubst %.fig,%.pdf_t,$(FIGURES))
FIGPSTEX := $(patsubst %.fig,%.pstex,$(FIGURES))
FIGPSTEXT := $(patsubst %.fig,%.pstex_t,$(FIGURES))
FIGEEPIC := $(patsubst %.fig,%.eepic,$(FIGURES))
##########################################################################
# Get all .eps files in current directory
# and replace .eps suffix by .pdf suffix.
EPS := $(wildcard *.eps)
EPSPDF := $(patsubst %.eps,%.pdf,$(EPS))
##########################################################################
# Define the pattern rules
#
# Example:
# The following rule tells 'make' how to generate
# .dvi files from .tex files:
#
# %.dvi : %.tex $(FIGURES)
# latex $<
#
# The generation depends on the .tex file as well as on the $(FIGURES).
# % matches any non-empty substring, e.g., 'foo'.
# Then $< is 'foo.tex', $@ is 'foo.dvi', and $* is 'foo'.
%.bbl : $(BIB).bib %.tex
bibtex $*
%.pdf : %.tex $(FIGURES)
pdflatex $<
%.dvi: %.tex $(FIGURES)
latex $<
%.ps : %.dvi
dvips -P cmz -t letter -o $@ $<
%.pdf : %.fig
fig2dev -L pdftex -n $@ $< $@
%.pdf_t : %.fig
fig2dev -L pdftex_t -p $*.pdf $< $@
%.pstex : %.fig
fig2dev -L pstex -n $@ $< $@
%.pstex_t : %.fig
fig2dev -L pstex_t -p $*.pstex $< $@
%.eepic : %.fig
fig2dev -L eepic $< $@
%.pdf : %.eps
epstopdf $<
%.ps.gz : %.ps
gzip -c $< > $@
%.rtf : %.tex
latex2rtf $<
##########################################################################
# Define the rules
#
# The first rule is the default rule and will be invoked by 'make'.
.PHONY : paper again dgain bib fig pdf ps dvi all clean
paper: fig pdf bib
again: pdf
pdflatex $(MAIN)
dgain: dvi
latex $(MAIN)
bib: $(MAIN).bbl
fig: $(FIGPDF) $(FIGPDFT) $(FIGEEPIC) $(EPSPDF)
pdf: $(MAIN).pdf
ps: fig dvi bib $(MAIN).ps
dvi: $(MAIN).dvi
rtf: $(MAIN).rtf
all: paper
pdflatex $(MAIN)
pdflatex $(MAIN)
clean:
/bin/rm -f *~ *.aux *.bbl *.blg *.dvi *.idx *.ilg *.ind *.lof \
*.log *.lot *.ps *.ps.gz *.pdf *.toc *.pstex *.pstex_t \
*.pdf_t *.eepic *.fig.bak *.pdfsync *.out
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.