La Vita è Bella

2005-10-02

Makefile for <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span class="E">E</span>X</span></span>

Update:TeXLive doesn't have it, but it have a tool texi2dvi with the same function (at least it also support -b and -p parameters).

You don't know how many times you should run the command latex, so it's hard to write a Makefile for LATEX

But I've found texify today. It can automatically calls the commands needed including latex/pdflatex, bibtex, etc., with needed times, and ships with almost all tex distributions.

Here's an example for my "Makefile" file (Note: don't forget to define RMRF, ACROREAD & PREVIEW for your environment):

LATEX = texify
PARAMS = -b
DVIPDF = dvipdfmx
MAINNAME = myarticle
SRCS = $(MAINNAME).tex \
	   chapter1.tex \
	   chapter2.tex
DVIFILE = $(MAINNAME).dvi
PDFFILE = $(MAINNAME).pdf

all: $(PDFFILE)

$(PDFFILE): $(DVIFILE)
	$(DVIPDF) $(DVIFILE)

$(DVIFILE): $(SRCS)
	$(LATEX) $(PARAMS) $(MAINNAME).tex

preview: $(DVIFILE)
	$(PREVIEW) $(DVIFILE)

read: $(PDFFILE)
	$(ACROREAD) $(PDFFILE)

clean:
	$(RMRF) *.toc *.out *.aux *.log *.bak

cleanall: clean
	$(RMRF) $(PDFFILE) $(DVIFILE)
	
.PHONY: clean cleanall all

For pdflatex files, beamer slides for example, use texify -p, here's the Makefile:

LATEX = texify -p
PARAMS = -b
MAINNAME = myarticle
SRCS = $(MAINNAME).tex \
	   chapter1.tex \
	   chapter2.tex
PDFFILE = $(MAINNAME).pdf

all: $(PDFFILE)

$(PDFFILE): $(SRCS)
	$(LATEX) $(PARAMS) $(MAINNAME).tex

read: $(PDFFILE)
	$(ACROREAD) $(PDFFILE)

clean:
	$(RMRF) *.toc *.out *.aux *.log *.bak

cleanall: clean
	$(RMRF) $(PDFFILE) $(DVIFILE)
	
.PHONY: clean cleanall all

If you need gbk2uni for Chinese support, change the line

	$(LATEX) $(PARAMS) $(MAINNAME).tex

into (Note: don't forget to define GBK2UNI):

	$(LATEX) $(PARAMS) $(MAINNAME).tex
	$(GBK2UNI) $(MAINNAME).out
	$(LATEX) $(PARAMS) $(MAINNAME).tex

That's it!

06:09:36 by fishy - Permanent Link

May the Force be with you. RAmen