summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/comprehensive/source/Makefile
blob: 99c13ae44c97aeeb4f957b8540afd9eb08481697 (plain)
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#############################################
# Build the Comprehensive LaTeX Symbol List #
# By Scott Pakin <scott+clsl@pakin.org>     #
#############################################

# Define TARGETS as a list of all of the files we intend to generate.
# TARGETS is categorized into TARGETS_SOURCE and TARGETS_DIST.
# TARGETS_DIST comprise the prebuilt distribution of the Comprehensive
# LaTeX Symbol List.  TARGETS_SOURCE are needed primarily to build
# TARGETS_DIST, although they are also distributed (in a "source"
# subdirectory).
TARGETS = $(TARGETS_SOURCE) $(TARGETS_DIST)

TARGETS_DIST = symbols-letter.pdf symbols-a4.pdf SYMLIST README

TARGETS_SOURCE = lightbulb.eps lightbulb10.pfb lightbulb.map

# There are a few files that we didn't generate but that need to be
# distributed.
EXTRADIST = symbols.tex lightbulb10.mf lightbulb.mf makefakeMnSymbol \
	    epsdice.eps Makefile

# Define INTERMEDIATES as a list of all of the intermediate files
# generated by both latex and pdflatex while producing TARGETS.
INTERMEDIATES = symbols.aux symbols.idx symbols.ilg \
		symbols.ind symbols.log symbols.toc \
		symbols.pts

# We need FontForge (or the older PfaEdit) to generate lightbulb10.pfb.
FONTFORGE = fontforge

# The following should be overwritten in a recursive call to Make.
SIZE = letter
EXT = pdf

###########################################################################

# Build all specified formats in all specified paper sizes.
all: $(TARGETS)

.PHONY: symbols dist

###########################################################################

# Define generic rules for building pdf/dvi/ps in letter/a4 size.
symbols $(INTERMEDIATES): symbols.tex lightbulb.eps lightbulb10.pfb lightbulb.map fakeMnSymbol.sty
	$(LATEX) '\PassOptionsToClass{$(SIZE)paper}{article}\input symbols'
	$(LATEX) '\PassOptionsToClass{$(SIZE)paper}{article}\input symbols'
	makeindex -s gind.ist symbols
	$(LATEX) '\PassOptionsToClass{$(SIZE)paper}{article}\input symbols'
	totalsymbols=`fgrep -c '\item \verb' symbols.ind` ; \
	  ( fgrep -v prevtotalsymbols symbols.aux > symbols.pts ; \
	    echo "\\gdef\\prevtotalsymbols{$$totalsymbols}" ; \
	    echo "\\gdef\\approxcount{}" ) >> symbols.pts ; \
	  mv symbols.pts symbols.aux
	$(LATEX) '\PassOptionsToClass{$(SIZE)paper}{article}\input symbols'
	mv symbols.$(EXT) symbols-$(SIZE).$(EXT)
	mv symbols.log symbols-$(SIZE)-$(EXT).log

###########################################################################

# Define specific rules for building different formats and sizes.
symbols-a4.pdf symbols-a4-pdf.log: symbols.tex
	$(MAKE) $(MAKEFLAGS) SIZE=a4 LATEX=pdflatex EXT=pdf symbols

symbols-letter.pdf symbols-letter-pdf.log: symbols.tex
	$(MAKE) $(MAKEFLAGS) SIZE=letter LATEX=pdflatex EXT=pdf symbols

symbols-a4.dvi symbols-a4-dvi.log: symbols.tex
	$(MAKE) $(MAKEFLAGS) SIZE=a4 LATEX=latex EXT=dvi symbols

symbols-letter.dvi symbols-letter-dvi.log: symbols.tex
	$(MAKE) $(MAKEFLAGS) SIZE=letter LATEX=latex EXT=dvi symbols

symbols-letter.ps: symbols-letter.dvi
	dvips -t letter -Pamz -Pcmz -j0 -o symbols-letter.ps symbols-letter.dvi

symbols-a4.ps: symbols-a4.dvi
	dvips -t a4 -Pamz -Pcmz -j0 -o symbols-a4.ps symbols-a4.dvi

###########################################################################

# Define rules to produce a lightbulb proof figure.
mfplain.mem:
	mpost -ini '\input mfplain; dump'

lightbulb.eps: lightbulb10.mf lightbulb.mf mfplain.mem
	mpost -mem mfplain '\mode:=proof; prologues:=2; labelfont cmr17; input lightbulb10'
	mv lightbulb10.65 lightbulb.eps

# Generate a FontForge script that makes the LightBulb10 PostScript
# names mixed case.
lightbulb10.pe:
	echo 'Open($$1);' > $@
	echo 'LB = "LightBulb";' >> $@
	echo 'SetFontNames(LB+"10", LB, LB+"10");' >> $@
	echo 'Generate("lightbulb10.pfb");' >> $@

# Define a rule to produce a Type 1 version of the LightBulb10 font.
lightbulb10.pfb: lightbulb10.mf lightbulb10.pe
	mftrace -V -fpfb --simplify lightbulb10
	$(FONTFORGE) -script lightbulb10.pe lightbulb10.pfb

# Define a rule to produce a LightBulb font-mapping file.
lightbulb.map:
	echo "lightbulb10 LightBulb10 <lightbulb10.pfb" > lightbulb.map

###########################################################################

# If we have MnSymbol.sty, generate a faked version which does not
# declare any new math alphabets.
fakeMnSymbol.sty: makefakeMnSymbol
	if [ "`kpsewhich MnSymbol.sty`" ] ; then \
	  makefakeMnSymbol `kpsewhich MnSymbol.sty` > $@ ; \
	else \
	  makefakeMnSymbol /dev/null > $@ ; \
	fi

###########################################################################

# Create a list of all symbols.
SYMLIST: symbols.ind
	cat symbols.ind | perl -ne 's/.*\\verb\+([^+]+)\+.*/$$1/g && print' | sort -u > SYMLIST

# Create a README file.
README: makeREADME symbols-letter-pdf.log symbols.ind
	makeREADME symbols-letter-pdf.log symbols.ind > README

# Create a .tar.gz file.
comprehensive.tar.gz: $(TARGETS) $(EXTRADIST)
	$(RM) -r comprehensive
	mkdir comprehensive
	mkdir comprehensive/source
	install -m 664 $(TARGETS_DIST) comprehensive
	install -m 664 $(TARGETS_SOURCE) $(EXTRADIST) comprehensive/source
	cat symbols.tex | checksum > comprehensive/source/symbols.tex
	chmod 664 comprehensive/source/symbols.tex
	tar -czf comprehensive.tar.gz comprehensive
	$(RM) -r comprehensive

dist: comprehensive.tar.gz

# Clean up our mess.
clean: mostlyclean
	$(RM) comprehensive.tar.gz
	$(RM) $(TARGETS)
	$(RM) fakeMnSymbol.sty
	$(RM) mfplain.{log,mem}
	$(RM) lightbulb10*pk lightbulb10.{tfm,log,pe}

mostlyclean:
	$(RM) -r comprehensive
	$(RM) $(INTERMEDIATES) $(TARGETS_DIST)
	$(RM) symbols-letter.dvi symbols-a4.dvi
	$(RM) symbols-*-*.log