-
Notifications
You must be signed in to change notification settings - Fork 2.2k
/
makefile
136 lines (112 loc) · 4.71 KB
/
makefile
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
127
128
129
130
131
132
133
134
135
# This Makefile Works on Mac
# important target files to be published.
ART=The-Art-of-Linear-Algebra
ILLUST=Illustrations
WORLD=MatrixWorld
MAP=MapofEigenvalues
# PS->EPS options and page cutter from PostScript from PowerPoint.
PSSELECT=psselect
#PS2EPS=ps2eps -B -l -f
#vertical
PS2EPS=ps2eps -B -l -f -R=+
# horizontal
#PS2EPS=ps2eps -B -l -f -R=-
# the two product target files. "-j" means Japaense version.
all: $(ART).pdf $(ART)-j.pdf
# printout of all the pages of PowerPoint to PostScript
$(ILLUST).ps: $(ILLUST).pptx
@echo "*** .pptx is new !! Print out $< to PostScript(.ps see PowerPointSetting.png for setting), then make again ***"
open PowerPointSetting.png
exit 1
$(ILLUST)-j.ps: $(ILLUST)-j.pptx
@echo "*** .pptx is new !! Print out $< to PostScript(.ps see PowerPointSetting.png for setting), then make again ***"
open PowerPointSetting.png
exit 1
MATRIXWORLD_PREMUS=Matrix-World-for-PREMUS
matrix-world-premus: figs/$(MATRIXWORLD_PREMUS).eps
$(MATRIXWORLD_PREMUS).ps: $(MATRIXWORLD_PREMUS).pptx
@echo "*** .pptx is new !! Print out $< to PostScript(.ps see PowerPointSetting.png for setting), then make again ***"
open PowerPointSetting.png
exit 1
figs/$(MATRIXWORLD_PREMUS).eps: $(MATRIXWORLD_PREMUS).ps
$(PSSELECT) 2 $< figs/$(MATRIXWORLD_PREMUS)-cut.ps
$(PS2EPS) figs/$(MATRIXWORLD_PREMUS)-cut.ps
# the target should be $(EPS) but, avoided muti-loop of execution.
# so this target has to be kicked by hand after changing PowerPoint illustrations.
# the "page number to figure name" table is in the name-list.mak
eps-updated.touch: $(ILLUST).ps
for i in {1..48}; do \
$(PSSELECT) $$i $< figs/illust-p$$i.ps; \
$(PS2EPS) figs/illust-p$$i.ps; \
grep "^$$i " name-list.mak | cut -d ' ' -f 2 | sed -e's|^.*|figs/&.eps|' | xargs cp figs/illust-p$$i.eps ; \
done
ls -lR > $@
epsj-updated.touch: $(ILLUST)-j.ps
for i in {1..46}; do \
$(PSSELECT) $$i $< figs/illust-p$$i-j.ps; \
$(PS2EPS) figs/illust-p$$i-j.ps; \
grep "^$$i " name-list.mak | cut -d ' ' -f 2 | sed -e 's|^.*|figs/&-j.eps|' | xargs cp figs/illust-p$$i-j.eps ; \
done
ls -lR > $@
# THE tex compilation part.
%.pdf: out/%.dvi
dvipdfmx -p a4 -q $<
# do uplatex twice to make table of contents and references.
out/$(ART).dvi: $(ART).tex eps-updated.touch
uplatex -synctex=1 -halt-on-error -file-line-error -output-directory=out $(ART).tex
uplatex -synctex=1 -halt-on-error -file-line-error -output-directory=out $(ART).tex
out/$(ART)-j.dvi: $(ART)-j.tex epsj-updated.touch
uplatex -synctex=1 -halt-on-error -file-line-error -output-directory=out $(ART)-j.tex
uplatex -synctex=1 -halt-on-error -file-line-error -output-directory=out $(ART)-j.tex
out/figs-catalog.dvi: figs-catalog.tex figs/epsinclude.tex
uplatex -synctex=1 -halt-on-error -file-line-error -output-directory=out $<
.PHONY: figs/epsinclude.tex
figs/epsinclude.tex:
cd figs; ls illust*.eps | grep -v 'japp' | grep -v -- '-j.eps' | sed -e 's/.*/\\includegraphics{&}\\\\&\\\\\n\n/' | sed 's/_/\\_/g' > epsinclude.tex
# note: for the options
# uplatex -synctex=1 -halt-on-error -silent -file-line-error -output-directory=out $<
# see https://qiita.com/rainbartown/items/d7718f12d71e688f3573#comment-7c2f42254e84b43d3175
# export illustrations to the book. (Linear Algebra for Everyone, Japanese edition 2022)
# list of figre pages and names are in name-list-book.mak
japp_eps: $(ILLUST)-j.ps
for i in `sed '/^#/d' name-list-book.mak | cut -d ' ' -f 1`; do \
grep "^$$i " name-list-book.mak | cut -d ' ' -f 2 | sed -e 's/_/=/' -e 's|^.*|figs/japp_&.eps|' | xargs cp figs/illust-p$$i-j.eps ; \
done
japp_copy:
cp figs/japp*.eps ../linear-algebra-for-everyone/translation/jfigs
cp figs/MatrixWorld-j.eps ../linear-algebra-for-everyone/translation/jfigs/MatrixWorld-j.eps
cp figs/japp*.eps ../linear-algebra-for-everyone/translation/figs
cp figs/MatrixWorld-j.eps ../linear-algebra-for-everyone/translation/figs/MatrixWorld-j.eps
clean:
rm -f *.dvi *.out *.log *.fls *.aux *.toc *.synctex.gz *.fdb_latexmk out/* *.p figs/*.ps
# may need this later ... (only commented lines below)
# now, all the eps filenames are moved to names-list.mak
# and updated timestamp is in .touch files.
# EPS=figs/ViewingMatrix-4Ways.eps\
# figs/VectorTimesVector.eps\
# figs/MatrixTimesVector.eps\
# figs/VectorTimesMatrix.eps\
# figs/4-Subspaces.eps\
# figs/MatrixTimesMatrix.eps\
# figs/5-Factorizations.eps\
# figs/A_CR.eps\
# figs/A_LU.eps\
# figs/A_QLQT.eps\
# figs/A_QR.eps\
# figs/A_USVT.eps\
# figs/CR1.eps\
# figs/CR2.eps\
# figs/LU1.eps\
# figs/LU2.eps\
# figs/Pattern11-22.eps\
# figs/Pattern12.eps\
# figs/Pattern3.eps\
# figs/Pattern4.eps\
# figs/QR.eps\
# figs/EVD.eps\
# figs/SVD.eps\
# figs/$(MAP).eps\
# figs/$(WORLD).eps
# EPSJ=$(EPS:%.eps=%-j.eps)
# $(EPS): eps-updated.touch
# $(EPSJ): epsj-updated.touch