1 # Copyright (C) 2007-2018 Free Software Foundation, Inc.
2 # See end for copying conditions.
4 # although it would be nice to use tex rather than pdftex to avoid
5 # colors, spurious warnings about names being referenced but not
6 # existing, etc., dvips | ps2pdf doesn't preserve the page size.
7 # Instead of creating a special dvips config file, put up with the warnings.
8 # (Note added 2012/05: for me, using texlive-2007-57, pdftex
9 # doesn't work for reason, but tex does.)
13 tex = TEXINPUTS
=".:$(texinfodir):${emacsdir}:${TEXINPUTS}" pdftex
-interaction
=nonstopmode
15 all: vol1.pdf vol2.pdf
17 # There's probably a better way to do this, without using a temp file.
19 # tex -jobname=vol1 '\def\SETVOL1 \input{elisp.texi}'
20 # but I don't know what to use for "\def\SETVOL1".
21 tex1
= sed
'/^@setfilename/a\
22 @set VOL1' elisp.texi
> elisp1tmp.
tex && $(tex) -jobname
=vol1 elisp1tmp.
tex
24 tex2
= sed
'/^@setfilename/a\
25 @set VOL2' elisp.texi
> elisp2tmp.
tex && $(tex) -jobname
=vol2 elisp2tmp.
tex
27 # elisp.texi specially defines \tocreadfilename when VOL1 or VOL2 is
28 # set, so we can use our premade .toc's.
30 vol1.pdf
: elisp1med-fns-ready elisp1med-aux-ready elisp1med-toc-ready
31 @printf
'\f Final TeX run for volume 1...\n'
32 cp elisp1med-toc-ready elisp1-toc-ready.toc
33 cp elisp1med-fns-ready vol1.fns
34 cp elisp1med-aux-ready vol1.aux
37 vol2.pdf
: elisp2med-fns-ready elisp2med-aux-ready elisp2med-toc-ready
38 @echo
"Final TeX run for volume 2..."
39 cp elisp2med-toc-ready elisp2-toc-ready.toc
40 cp elisp2med-fns-ready vol2.fns
41 cp elisp2med-aux-ready vol2.aux
44 # \f intermediate toc files.
46 # vol1 toc: volume 1, page break, volume 2 (with II: prepended).
47 elisp1med-toc-ready
: elisp1med-init elisp2med-init
48 echo
'@unnchapentry{@b{Volume 1}}{10001}{vol1}{}' >$@
49 cat elisp1med-toc
>>$@
51 echo
'@unnchapentry{@b{Volume 2}}{10001}{vol2}{}' >>$@
52 sed
's/{\([^}]*\)}$$/{II:\1}/' elisp2med-toc
>>$@
54 # vol2 toc: volume 1 (with I: prepended), page break, volume 2.
55 elisp2med-toc-ready
: elisp1med-init elisp2med-init
56 echo
'@unnchapentry{@b{Volume 1}}{10001}{vol1}{}' >$@
57 sed
's/{\([^}]*\)}$$/{I:\1}/' elisp1med-toc
>>$@
59 echo
'@unnchapentry{@b{Volume 2}}{10001}{vol2}{}' >>$@
60 cat elisp2med-toc
>>$@
63 # \f intermediate aux files.
65 # append vol2's fixed aux to normal vol1.
66 elisp1med-aux-ready
: elisp2med-aux-vol-added
67 cat elisp1med-aux
$< >$@
69 # prepend vol1's fixed aux to vol2.
70 elisp2med-aux-ready
: elisp1med-aux-vol-added
71 cat
$< elisp2med-aux
>$@
73 # on -pg entries, append volume number after page number.
74 elisp1med-aux-vol-added
: elisp1med-init
75 sed
's/-pg}{\(.*\)}$$/-pg}{\1, vol.@tie1}/' elisp1med-aux
>$@
77 elisp2med-aux-vol-added
: elisp2med-init
78 sed
's/-pg}{\(.*\)}$$/-pg}{\1, vol.@tie2}/' elisp2med-aux
>$@
80 # \f intermediate index (fns) file.
82 elisp1med-fns-ready
: elisp1med-fn-vol-added elisp2med-fn-vol-added
83 cat elisp2med-fn-vol-added
>>vol1.fn
87 elisp2med-fns-ready
: elisp1med-fn-vol-added elisp2med-fn-vol-added
88 cat elisp1med-fn-vol-added
>>vol2.fn
92 # Insert volume number (I: or II:) into index file.
93 elisp1med-fn-vol-added
: elisp1med-init
94 cp vol1.fn elisp1med-fn
95 sed
's/}{/}{I:/' elisp1med-fn
>$@
97 elisp2med-fn-vol-added
: elisp2med-init
98 cp vol2.fn elisp2med-fn
99 sed
's/}{/}{II:/' elisp2med-fn
>$@
101 # -----------------------------------------------------------------------------
102 # everything above is essentially a duplicate of everything below. sorry.
103 # -----------------------------------------------------------------------------
105 # \f intermediate TeX runs.
107 # this generates what would be the final versions -- except the page
108 # numbers aren't right. The process of adding the I: and II: changes
109 # the page breaks, so a few index entries, at least are wrong. (In
110 # 2007, x-meta-keysym in vol.II ended up on page 374 when the index had
111 # it on page 375 from the initial run.)
113 # So, we start all over again, from these fns/aux/toc files.
115 elisp1med-init
: elisp1-fns-ready elisp1-aux-ready elisp1init-toc-ready
$(texinfodir
)/texinfo.
tex
116 @printf
'\f Intermediate TeX run for volume 1...\n'
117 cp elisp1init-toc-ready elisp1-toc-ready.toc
118 cp elisp1-fns-ready vol1.fns
119 cp elisp1-aux-ready vol1.aux
122 mv vol1.aux elisp1med-aux
123 mv vol1.toc elisp1med-toc
125 elisp2med-init
: elisp2-fns-ready elisp2-aux-ready elisp2init-toc-ready
$(texinfodir
)/texinfo.
tex
126 @echo
"Final TeX run for volume 2..."
127 cp elisp2init-toc-ready elisp2-toc-ready.toc
128 cp elisp2-fns-ready vol2.fns
129 cp elisp2-aux-ready vol2.aux
132 mv vol2.aux elisp2med-aux
133 mv vol2.toc elisp2med-toc
136 # \f initial toc files.
138 # vol1 toc: volume 1, page break, volume 2 (with II: prepended).
139 elisp1init-toc-ready
: elisp1-init elisp2-init
140 echo
'@unnchapentry{@b{Volume 1}}{10001}{vol1}{}' >$@
143 echo
'@unnchapentry{@b{Volume 2}}{10001}{vol2}{}' >>$@
144 sed
's/{\([^}]*\)}$$/{II:\1}/' elisp2-toc
>>$@
146 # vol2 toc: volume 1 (with I: prepended), page break, volume 2.
147 elisp2init-toc-ready
: elisp1-init elisp2-init
148 echo
'@unnchapentry{@b{Volume 1}}{10001}{vol1}{}' >$@
149 sed
's/{\([^}]*\)}$$/{I:\1}/' elisp1-toc
>>$@
151 echo
'@unnchapentry{@b{Volume 2}}{10001}{vol2}{}' >>$@
155 # \f initial aux files.
157 # append vol2's fixed aux to normal vol1. The initial runs saved
158 # elisp1-aux and elisp2-aux.
159 elisp1-aux-ready
: elisp2-aux-vol-added
160 cat elisp1-aux
$< >$@
162 # prepend vol1's fixed aux to vol2.
163 elisp2-aux-ready
: elisp1-aux-vol-added
164 cat
$< elisp2-aux
>$@
166 # on -pg entries, append volume number after page number.
167 elisp1-aux-vol-added
: elisp1-init
168 sed
's/-pg}{\(.*\)}$$/-pg}{\1, vol.@tie1}/' elisp1-aux
>$@
170 elisp2-aux-vol-added
: elisp2-init
171 sed
's/-pg}{\(.*\)}$$/-pg}{\1, vol.@tie2}/' elisp2-aux
>$@
173 # \f initial index (fns) file.
175 # Append other volume's index entries to this one's.
176 # Index entries in this volume will then take precedence.
177 elisp1-fns-ready
: elisp1-fn-vol-added elisp2-fn-vol-added
178 cat elisp2-fn-vol-added
>>vol1.fn
182 elisp2-fns-ready
: elisp1-fn-vol-added elisp2-fn-vol-added
183 cat elisp1-fn-vol-added
>>vol2.fn
187 # Insert volume number (I: or II:) into index file.
188 elisp1-fn-vol-added
: elisp1-init
190 sed
's/}{/}{I:/' elisp1-fn
>$@
192 elisp2-fn-vol-added
: elisp2-init
194 sed
's/}{/}{II:/' elisp2-fn
>$@
197 # \f initial TeX runs.
199 # We use the .fn, .aux, and .toc files created here in subsequent
200 # processing. The page numbers generated here will not be correct yet,
201 # but we run texindex and TeX a second time just to get them closer.
202 # Otherwise it might take even longer for them to converge.
204 elisp1-init
: elisp.texi
205 @printf
'\f Initial TeX run for volume 1...\n'
206 rm -f vol1.aux vol1.toc
209 mv vol1.aux elisp1-aux
210 mv vol1.toc elisp1-toc
213 elisp2-init
: elisp.texi
214 @echo
"Initial TeX run for volume 2..."
215 rm -f vol2.aux vol2.toc
218 mv vol2.aux elisp2-aux
219 mv vol2.toc elisp2-toc
224 # This file is free software: you can redistribute it and/or modify
225 # it under the terms of the GNU General Public License as published by
226 # the Free Software Foundation, either version 3 of the License, or
227 # (at your option) any later version.
229 # This file is distributed in the hope that it will be useful,
230 # but WITHOUT ANY WARRANTY; without even the implied warranty of
231 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
232 # GNU General Public License for more details.
234 # You should have received a copy of the GNU General Public License
235 # along with this file. If not, see <https://www.gnu.org/licenses/>.