#################################################################### ### ### ### Makefile pour LaTeX ### ### ### #################################################################### # # Copyright 2000-2011 Gabriel Moreau / Vincent Morra # Il y a encore pas mal de bug dans ce makefile # génération du these.ps -> des merdouilles au niveau # des figures. Solution: aller sous tmp/ et dvips à la main # General configuration # Put your change only in config.mk file ################################################################ QUIX := A.linux DOCUMENT := document ARBO_TEX := ./ ARBO_FIG := $(ARBO_TEX) ARBO_BIB := $(ARBO_TEX) ################################################################ DIR_PROJET := $(shell pwd | perl -p -e 's!/src/?.*$!!!' ) DIR_TMP := $(DIR_PROJET)/tmp DIR_DOC := $(DIR_PROJET)/doc DIR_PS := $(DIR_DOC)/ps DIR_PDF := $(DIR_DOC)/pdf DIR_HTML := $(DIR_DOC)/html ################################################################ LATEX := latex BIBTEX := bibtex L2H := latex2html PDFTEX := pdflatex DVIPS := dvips RM := rm -f BIN_PROTECT := chmod u-w . BIN_UNPROTECT := chmod u+w . DVI_VIEWER := xdvi PDF_VIEWER := xpdf PS_VIEWER := gv # User Config ################################################################ sinclude config.mk # NE PAS TOUCHER A PARTIR D'ICI ################################################################ SRC_FIG := $(notdir $(foreach dir,$(ARBO_FIG),$(wildcard $(dir)/*.fig))) SRC_EPS := $(notdir $(foreach dir,$(ARBO_FIG),$(wildcard $(dir)/*.eps))) SRC_PDF := $(notdir $(foreach dir,$(ARBO_FIG),$(wildcard $(dir)/*.pdf))) SRC_JPG := $(notdir $(foreach dir,$(ARBO_FIG),$(wildcard $(dir)/*.jpg))) SRC_PNG := $(notdir $(foreach dir,$(ARBO_FIG),$(wildcard $(dir)/*.png))) SRC_GIF := $(notdir $(foreach dir,$(ARBO_FIG),$(wildcard $(dir)/*.gif))) SRC_TEX := $(notdir $(foreach dir,$(ARBO_TEX),$(wildcard $(dir)/*.tex))) SRC_BIB := $(notdir $(foreach dir,$(ARBO_BIB),$(wildcard $(dir)/*.bib))) #OBJ_PSTEX := $(patsubst %.fig,$(DIR_TMP)/%.pstex, $(SRC_FIG)) #OBJ_PDFTEX := $(patsubst %.fig,$(DIR_TMP)/%.pdftex, $(SRC_FIG)) OBJ_EPS := $(patsubst %.fig,$(DIR_TMP)/%.eps, $(SRC_FIG)) OBJ_PSTEX_T := $(patsubst %.fig,$(DIR_TMP)/%.pstex_t, $(SRC_FIG)) OBJ_PDF := $(patsubst %.fig,$(DIR_TMP)/%.pdf, $(SRC_FIG)) OBJ_PDFTEX_T := $(patsubst %.fig,$(DIR_TMP)/%.pdftex_t, $(SRC_FIG)) OBJ_PDF4EPS := $(patsubst %.eps,$(DIR_TMP)/%.pdf, $(SRC_EPS)) OBJ_BASE := $(DIR_TMP)/$(DOCUMENT) PDFTEXPRE := export TEXMFOUTPUT="$(DIR_TMP)"; PDFTEXPRE += export TEXINPUTS="$(DIR_PROJET)/src//:$(DIR_TMP):"; PDFTEXPRE += export LANG="C"; BIBINPUTS := $(subst //,/,$(subst / /,:/,$(foreach dir,$(ARBO_BIB),$(strip $(DIR_PROJET)/src/$(dir)/)))) BIBTEXPRE := cd $(DIR_TMP); BIBTEXPRE += BIBINPUTS="$(BIBINPUTS)" RERUNTEX := "(There were undefined references|Rerun to get (cross-references|the bars) right)" RERUNBIB := "No file.*\.bbl|Citation.*undefined" COPYTOC := if test -r $(OBJ_BASE).toc; then cp $(OBJ_BASE).toc $(OBJ_BASE).toc.bak; fi vpath %.fig $(ARBO_FIG) vpath %.pstex $(DIR_TMP) vpath %.pstex_t $(DIR_TMP) vpath %.pdftex $(DIR_TMP) vpath %.pdftex_t $(DIR_TMP) vpath %.pdf $(ARBO_FIG) $(DIR_TMP) vpath %.eps $(ARBO_FIG) $(DIR_TMP) vpath %.jpg $(ARBO_FIG) vpath %.png $(ARBO_FIG) vpath %.gif $(ARBO_FIG) vpath %.bib $(ARBO_BIB) .PHONY: all dossier .PHONY: doc docps docpdf .PHONY: html .PHONY: xpdf xdvi gv .PHONY: echo clean miniclean help .PHONY: figure bibtex .PHONY: pdflatex pdf .PHONY: latex dvi .PHONY: protect unprotect .PHONY: warning review .SUFFIXES: #--------------------------------------------------------------# all: dossier doc dossier: $(DIR_HTML) $(DIR_PS) $(DIR_PDF) $(DIR_TMP) @echo '############################################################' @echo '### Fin de la gestion des dossiers' @echo '############################################################' #--------------------------------------------------------------# xpdf: $(DIR_TMP)/$(DOCUMENT).pdf $(PDF_VIEWER) $(DIR_TMP)/$(DOCUMENT).pdf & @echo '############################################################' @echo '#### Visualisation de $(DOCUMENT)' @echo '############################################################' xdvi: $(DIR_TMP)/$(DOCUMENT).dvi export XEDITOR="nedit-nc -line %l %f"; \ $(DVI_VIEWER) -bg grey95 $(DIR_TMP)/$(DOCUMENT) & @echo '############################################################' @echo '#### Visualisation de $(DOCUMENT)' @echo '############################################################' # xdvi -hl white $(DIR_TMP)/$(DOCUMENT) & gv:$(DIR_PS)/$(DOCUMENT).ps $(PS_VIEWER) $(DIR_PS)/$(DOCUMENT).ps & @echo '############################################################' @echo '#### Visualisation de $(DOCUMENT)' @echo '############################################################' #--------------------------------------------------------------# doc: docpdf docps @echo '############################################################' @echo '### Fin de la compilation ' @echo '############################################################' docpdf: $(DIR_PDF)/$(DOCUMENT).pdf @echo '############################################################' @echo '### Fin de la doc pdf' @echo '############################################################' docps: $(DIR_PS)/$(DOCUMENT).ps @echo '############################################################' @echo '### Fin de la doc postscript' @echo '############################################################' html: $(DIR_HTML) $(L2H) -split 3 -local_icons -no_math -white \ -tmp /tmp -dir $(DIR_HTML) -prefix $(DOCUMENT) -antialias $(DOCUMENT).tex #--------------------------------------------------------------# warning: @echo '############################################################' @echo '### Liste des warnings dans le documents' @echo '############################################################' # @touch -r $(DOCUMENT).tex $(DIR_TMP)/warning.log @touch -r$(DIR_TMP)/warning.log @touch $(DOCUMENT).tex # @make simple | grep Warning | grep -v Marginpar # @touch -r $(DIR_TMP)/warning.log $(DOCUMENT).tex @touch -r $(DIR_TMP)/warning.log review: @echo '############################################################' @echo "### Liste des `grep -HnE '\\rev(add|del|mark|par|forget)' -r . | grep -E '^*/.*\.tex\:' | grep -v macro_review.tex | wc -l` reviews dans le documents" @echo '############################################################' @grep -HnE '\\rev(add|del|mark|par|forget)' -r . | grep -E '^*/.*\.tex\:' | grep -v macro_review.tex #--------------------------------------------------------------# echo: @echo '############################################################' @echo '### Liste des variables ' @echo '############################################################' @echo SRC_FIG $(SRC_FIG) @echo SRC_TEX $(SRC_TEX) @echo OBJ_PSTEX $(OBJ_PSTEX) @echo OBJ_PSTEX_T $(OBJ_PSTEX_T) @echo OBJ_PDF4EPS $(OBJ_PDF4EPS) @echo OBJ_PDF $(OBJ_PDF) clean: @echo '############################################################' @echo '#### Nettoyage' @echo '############################################################' $(RM) $(DOCUMENT).aux \ $(DOCUMENT).log \ $(DOCUMENT).bbl \ $(DOCUMENT).blg \ $(DOCUMENT).brf \ $(DOCUMENT).cb \ $(DOCUMENT).ind \ $(DOCUMENT).idx \ $(DOCUMENT).ilg \ $(DOCUMENT).dvi \ $(DOCUMENT).inx \ $(DOCUMENT).toc \ $(DOCUMENT).out \ $(DOCUMENT).lof \ $(DOCUMENT).lot \ $(DOCUMENT).pdf \ $(OBJ_PSTEX) \ $(OBJ_PSTEX_T) \ $(OBJ_PDF) \ $(DIR_PDF)/$(DOCUMENT).pdf \ $(DIR_TMP)/* miniclean: @echo '############################################################' @echo '#### Nettoyage tres partiel' @echo '############################################################' $(RM) $(DIR_TMP)/$(DOCUMENT).aux \ $(DIR_TMP)/$(DOCUMENT).toc \ $(DIR_TMP)/$(DOCUMENT).lof #--------------------------------------------------------------# figure: $(OBJ_PDF) $(OBJ_PDFTEX_T) $(OBJ_EPS) $(OBJ_PSTEX_T) $(OBJ_PDF4EPS) @echo '############################################################' @echo '#### Fin des figures' @echo '############################################################' #--------------------------------------------------------------# protect: $(BIN_PROTECT) @echo '############################################################' @echo '#### Mise en place de la protection du dossier source' @echo '############################################################' unprotect: $(BIN_UNPROTECT) @echo '############################################################' @echo '#### Suppression de la protection du dossier source' @echo '############################################################' #--------------------------------------------------------------# pdflatex: figure @echo '############################################################' @echo '#### Debut du formateur pdflatex' @echo '############################################################' $(BIN_PROTECT) $(PDFTEXPRE) $(PDFTEX) $(DOCUMENT).tex; true $(BIN_UNPROTECT) @echo '############################################################' @echo '#### Fin du formateur pdflatex' @echo '############################################################' latex: figure @echo '############################################################' @echo '#### Debut du formateur latex' @echo '############################################################' $(BIN_PROTECT) $(PDFTEXPRE) $(LATEX) -src $(DOCUMENT).tex; true $(BIN_UNPROTECT) @echo '############################################################' @echo '#### Fin du formateur latex' @echo '############################################################' bibtex: @echo '############################################################' @echo '#### Debut de la bibliographie' @echo '############################################################' $(BIBTEXPRE) $(BIBTEX) $(OBJ_BASE) @echo '############################################################' @echo '#### Fin de la bibliographie' @echo '############################################################' #--------------------------------------------------------------# help: @echo '############################################################' @echo '# all -> compilation complete' @echo '# dossier -> création des dossiers du projet' @echo '# clean -> nettoyage partiel' @echo '# pdf -> compilation simple avec dependance -> pdf' @echo '# dvi -> compilation simple avec dependance -> dvi' @echo '# xpdf -> visualisation du resultat pdf' @echo '# xdvi -> visualisation du resultat dvi' @echo '# gv -> visualisation du resultat ps' @echo '# warning -> liste de tous les warnings' @echo '# review -> liste de toutes les remarques' @echo '# pdflatex -> compilation du source tex -> pdf' @echo '# latex -> compilation du source tex -> dvi' @echo '# bibtex -> compilation du source bibtex' @echo '# protect -> protection du dossier source' @echo '# unprotect -> suppression de la protection' @echo '############################################################' #--------------------------------------------------------------# pdf: $(DIR_TMP)/pdf.ok dvi: $(DIR_TMP)/dvi.ok $(DIR_TMP)/pdf.ok: $(DOCUMENT).tex $(SRC_TEX) $(OBJ_PDF) $(OBJ_PDFTEX_T) make pdflatex touch $< $(DIR_TMP)/dvi.ok: $(DOCUMENT).tex $(SRC_TEX) $(OBJ_EPS) $(OBJ_PSTEX_T) make latex touch $< ################################################################ $(DIR_TMP)/$(DOCUMENT).pdf: $(DOCUMENT).tex $(SRC_BIB) $(SRC_TEX) $(OBJ_PDF) $(OBJ_PSTEX_T) $(COPYTOC) make pdflatex egrep -c $(RERUNBIB) $(OBJ_BASE).log && (make bibtex;$(COPYTOC); make pdflatex); true egrep $(RERUNTEX) $(OBJ_BASE).log && ($(COPYTOC); make pdflatex); true egrep $(RERUNTEX) $(OBJ_BASE).log && ($(COPYTOC); make pdflatex); true if cmp -s $(OBJ_BASE).toc $(OBJ_BASE).toc.bak; then echo 'end'; else make pdflatex; fi $(RM) $(OBJ_BASE).toc.bak # egrep -i "(Reference|Citation).*undefined" $(OBJ_BASE).log; true # Display relevant warnings ################################################################ ################################################################ $(DIR_TMP)/$(DOCUMENT).dvi: $(DOCUMENT).tex $(SRC_BIB) $(SRC_TEX) $(OBJ_EPS) $(OBJ_PSTEX_T) $(COPYTOC) make latex egrep -c $(RERUNBIB) $(OBJ_BASE).log && (make bibtex;$(COPYTOC); make latex); true egrep $(RERUNTEX) $(OBJ_BASE).log && ($(COPYTOC); make latex); true egrep $(RERUNTEX) $(OBJ_BASE).log && ($(COPYTOC); make latex); true if cmp -s $(OBJ_BASE).toc $(OBJ_BASE).toc.bak; then echo 'end'; else make latex; fi $(RM) $(OBJ_BASE).toc.bak # egrep -i "(Reference|Citation).*undefined" $(OBJ_BASE).log; true # Display relevant warnings ################################################################ #$(DIR_PS)/%.ps: $(DIR_PDF)/%.pdf # pdftops $< $@ $(DIR_PS)/%.ps: $(DIR_TMP)/%.dvi $(PDFTEXPRE) dvips $< -o $@ $(DIR_PDF)/%.pdf: $(DIR_TMP)/%.pdf echo --- rm -f $@ echo --- cp $< $@ # ln -f $< $@ # je sais pas pourquoi mais le lien ne marche pas bien avec le make ################################################################ # figure #$(DIR_TMP)/%.pdf: $(DIR_TMP)/%.pstex $(DIR_TMP)/%.pstex_t # ps2pdf $< $@ # cd $(DIR_TMP); \ # sed 's/\.pstex/.pdf/' $*.pstex_t > $*.tmp; \ # mv $*.tmp $*.pstex_t; \ # sed 's/\\epsfig{file=/\\includegraphics{/' $*.pstex_t > $*.tmp; \ # mv $*.tmp $*.pstex_t $(DIR_TMP)/%.pstex: %.fig fig2dev -L pstex $< $@ $(DIR_TMP)/%.eps: %.fig fig2dev -L pstex $< $@ $(DIR_TMP)/%.pstex_t: %.fig $(DIR_TMP)/%.pstex fig2dev -L pstex_t -p $* $< $@ # fig2dev -L pstex_t -E 1 -p $* $< $@ #$(DIR_TMP)/%.pstex_t: $(DIR_TMP)/%.pstex %.fig # fig2dev -L pstex_t -p $^ $@ $(DIR_TMP)/%.pdf: %.eps @echo eps2pdf $< $@ epstopdf $< --outfile $@ ifeq "$(QUIX)" "A.linux" $(DIR_TMP)/%.pdftex: %.fig fig2dev -L pdftex $< $@ endif ifeq "$(QUIX)" "A.darwin" $(DIR_TMP)/%.pdftex: %.fig fig2dev -L pstex $< $(patsubst %.pdftex,%.pstex,$@) ps2pdf $(patsubst %.pdftex,%.pstex,$@) $@ endif ifeq "$(QUIX)" "A.linux" $(DIR_TMP)/%.pdf: %.fig fig2dev -L pdftex $< $@ endif ifeq "$(QUIX)" "A.darwin" $(DIR_TMP)/%.pdf: %.fig fig2dev -L pstex $< $(patsubst %.pdf,%.eps,$@) ps2pdf $(patsubst %.pdf,%.eps,$@) $@ endif $(DIR_TMP)/%.pdftex_t: %.fig $(DIR_TMP)/%.pdftex fig2dev -L pdftex_t -p $* $< $@ # fig2dev -L pdftex_t -E 1 -p $* $< $@ ################################################################ # dossier $(DIR_DOC): mkdir -p $@ chmod ugo+rx $@ $(DIR_TMP): mkdir -p $@ chmod ugo+rwx $@ $(DIR_PS): $(DIR_DOC) mkdir -p $@ chmod ugo+rx $@ $(DIR_PDF): $(DIR_DOC) mkdir -p $@ chmod ugo+rx $@ $(DIR_HTML): $(DIR_DOC) mkdir -p $@ chmod ugo+rx $@