Makefile 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. LATEX = latex
  2. BIBTEX = bibtex
  3. MAKEINDEX = makeindex
  4. XDVI = xdvi -gamma 4
  5. DVIPS = dvips
  6. DVIPDF = dvipdft
  7. L2H = latex2html
  8. GH = gv
  9. RERUN = "(There were undefined references|Rerun to get (cross-references|the bars) right)"
  10. RERUNBIB = "No file.*\.bbl|Citation.*undefined"
  11. MAKEIDX = "^[^%]*\\makeindex"
  12. MPRINT = "^[^%]*print"
  13. USETHUMBS = "^[^%]*thumbpdf"
  14. DATE=$(shell date +%Y-%m-%d)
  15. COPY = if test -r $(<:%.tex=%.toc); then cp $(<:%.tex=%.toc) $(<:%.tex=%.toc.bak); fi
  16. RM = rm -f
  17. SRC := $(shell egrep -l '^[^%]*\\begin\{document\}' *.tex)
  18. TRG = $(SRC:%.tex=%.dvi)
  19. PSF = $(SRC:%.tex=%.ps)
  20. PDF = $(SRC:%.tex=%.pdf)
  21. define run-latex
  22. $(COPY);$(LATEX) $<
  23. egrep $(MAKEIDX) $< && ($(MAKEINDEX) $(<:%.tex=%);$(COPY);$(LATEX) $<) >/dev/null; true
  24. egrep -c $(RERUNBIB) $(<:%.tex=%.log) && ($(BIBTEX) $(<:%.tex=%);$(COPY);$(LATEX) $<) ; true
  25. egrep $(RERUN) $(<:%.tex=%.log) && ($(COPY);$(LATEX) $<) >/dev/null; true
  26. egrep $(RERUN) $(<:%.tex=%.log) && ($(COPY);$(LATEX) $<) >/dev/null; true
  27. if cmp -s $(<:%.tex=%.toc) $(<:%.tex=%.toc.bak); then true ;else $(LATEX) $< ; fi
  28. $(RM) $(<:%.tex=%.toc.bak)
  29. # Display relevant warnings
  30. egrep -i "(Reference|Citation).*undefined" $(<:%.tex=%.log) ; true
  31. endef
  32. define run-pdflatex
  33. LATEX=pdflatex
  34. @$(run-latex)
  35. endef
  36. define get_dependencies
  37. deps=`perl -ne '($$_)=/^[^%]*\\\(?:include|input)\{(.*?)\}/;@_=split /,/;foreach $$t (@_) {print "$$t.tex "}' $<`
  38. endef
  39. define getbibs
  40. bibs=`perl -ne '($$_)=/^[^%]*\\\bibliography\{(.*?)\}/;@_=split /,/;foreach $$b (@_) {print "$$b.bib "}' $< $$deps`
  41. endef
  42. define manconf
  43. mandeps=`if test -r $(basename $@).cnf ; then cat $(basename $@).cnf |tr -d '\n\r' ; fi`
  44. endef
  45. all : veryclean $(TRG) wordcount
  46. acroread $(PDF) &
  47. .PHONY : all show clean ps pdf showps veryclean wordcount
  48. clean :
  49. -rm -f $(TRG) $(PSF) $(PDF) $(TRG:%.dvi=%.aux) $(TRG:%.dvi=%.bbl) $(TRG:%.dvi=%.blg) $(TRG:%.dvi=%.log) $(TRG:%.dvi=%.out) $(TRG:%.dvi=%.idx) $(TRG:%.dvi=%.ilg) $(TRG:%.dvi=%.ind) $(TRG:%.dvi=%.toc) $(TRG:%.dvi=%.d)
  50. veryclean : clean
  51. -rm -f *.log *.aux *.dvi *.bbl *.blg *.ilg *.toc *.lof *.lot *.idx *.ind *.ps *~ *.tdo *.lol
  52. %.d : %.tex
  53. $(get_dependencies) ; echo $$deps ; \
  54. $(getbibs) ; echo $$bibs ; \
  55. $(manconf) ; echo $$mandeps ;\
  56. echo "$*.dvi $@ : $< $$deps $$bibs $$mandeps" > $@
  57. include $(SRC:.tex=.d)
  58. $(TRG) : %.dvi : %.tex
  59. @$(run-latex)
  60. $(PSF) : %.ps : %.dvi
  61. @$(DVIPS) $< -o $@
  62. $(PDF) : %.pdf : %.tex
  63. @$(run-pdflatex)
  64. show : $(TRG)
  65. @for i in $(TRG) ; do $(XDVI) $$i & done
  66. showps : $(PSF)
  67. @for i in $(PSF) ; do $(GH) $$i & done
  68. ps : $(PSF)
  69. pdf : $(PDF)
  70. wordcount:
  71. @echo "counting words in tex files"
  72. detex MasterThesis.tex | wc -w