1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
## Makefile for LaTeX presentations.
##
## Will compile the LaTeX file as many times as necessary.
## if FAST=1, always compile once
##
## The postscript :
## make mypres.ps
## The PDF, compile only once, even if the TOC or references are outdated
## make mypres.pdf FAST=1
## The PDF, 4 slides per page, A4
## make mypres.a4.4.pdf
## The web page (create a directory, needs album: apt-get install album)
## make mypres.www
##
## <phil(at)secdev.org>
PSNUPOPTS=-W128mm -H96mm -pa4 -m0.5cm -b0.2cm -d
FORMAT ?= 1
XFIG_FIGS=$(patsubst %.fig,%.eps,$(wildcard fig/*.fig))
DIA_FIGS=$(patsubst %.dia,%.eps,$(wildcard fig/*.dia))
ALL_FIGS=$(XFIG_FIGS) $(DIA_FIGS)
all:
@echo 'USAGE: make <filename.ext> [FAST=1]'
@echo 'possible extentions :'
@echo ' .dvi, .ps or .pdf'
@echo ' .www to create a directory with web pages'
@echo ' .a4.n.pdf with n in 1-4,6,8,9,16,32 for n slides per page'
.SUFFIXES: .pdf .tex .ps .dvi .www .eps .fig
# cancel built-in implicit rule tex -> dvi
%.dvi:%.tex
%.eps: %.fig
fig2dev -L eps $< $@
%.eps: %.dia
dia -e $@ $<
%.pdf: %.ps
ps2pdf $*.ps
%.ps: %.dvi
dvips -Ppdf $*
%.dvi: %.tex $(ALL_FIGS)
[ -e $*.aux ] || touch $*.aux
while true; do \
cp $*.aux $*.aux2 ;\
echo $(FORMAT) | latex $* || { rm $*.aux2 ; break; }; \
cmp $*.aux $*.aux2 && break ;\
[ -z "$(FAST)" ] || break ;\
done
@# if .aux2 does not exist, there was an error. Next line will be false.
@[ -e $*.aux2 ] && rm $*.aux2
@echo "#######[ warnings ]#######"
@grep -i warning $*.log
@echo "##########################"
%.a4.0.ps: %.dvi
dvips -Ppdf -ta4 $* -o $@
%.a4.1.ps: %.a4.0.ps
psnup $(PSNUPOPTS) -1 $< $@
%.a4.2.ps: %.a4.0.ps
psnup $(PSNUPOPTS) -2 $< $@
%.a4.3.ps: %.a4.0.ps
psnup $(PSNUPOPTS) -3 $< $@
%.a4.4.ps: %.a4.0.ps
psnup $(PSNUPOPTS) -4 $< $@
%.a4.6.ps: %.a4.0.ps
psnup $(PSNUPOPTS) -6 $< $@
%.a4.8.ps: %.a4.0.ps
psnup $(PSNUPOPTS) -8 $< $@
%.a4.9.ps: %.a4.0.ps
psnup $(PSNUPOPTS) -9 $< $@
%.a4.16.ps: %.a4.0.ps
psnup $(PSNUPOPTS) -16 $< $@
%.a4.24.ps: %.a4.0.ps
psnup $(PSNUPOPTS) -24 $< $@
%.a4.32.ps: %.a4.0.ps
psnup $(PSNUPOPTS) -32 $< $@
%.a4.ps: %.a4.0.ps
mv $< $@
%.jpg: %.ppm
convert $< $@
# gs or pdftoppm ? pdftoppm : better fonts, graphics not anti-aliased
#gs -dBATCH -dNOPAUSE -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sDEVICE=png16m -sOutputFile=$@/$@-%04d.png -r150 $<
%.www: %.pdf
[ -e $@ ] && rm -rf $@ || true
mkdir $@
pdftoppm $< $@/$@
$(MAKE) alljpg PPMDIR=$@
rm $@/*.ppm
cd $@ ; album -geometry 200x150
alljpg:
@$(MAKE) $(patsubst %.ppm,%.jpg, $(wildcard $(PPMDIR)/*.ppm))
.PRECIOUS: %.dvi %.ps %.pdf %.eps
.PHONY: clean,test
clean:
rm -f *.toc *.aux *.vrb *.snm *.log *.out *.nav *.ps *.dvi
overclean: clean
rm -f *.pdf
|