Commit c85c5553 authored by Karl Berry's avatar Karl Berry
Browse files

update two-volume material for printing

parent c44a951a
......@@ -11,3 +11,7 @@ index.texi
elisp
elisp-?
elisp-??
vol1.*
vol2.*
elisp1*
elisp2*
2007-06-12 Karl Berry <karl@gnu.org>
* vol1.texi, vol2.texi, two-volume-cross-refs.txt: update.
* two-volume.make: new file.
* .cvsignore: ignore two-volume files.
2007-06-02 Richard Stallman <rms@gnu.org>
* frames.texi (Color Parameters): Add xref to (emacs)Standard Faces.
......
......@@ -5,7 +5,24 @@ Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
Two Volume Cross References
===========================
18 March 1992
12 June 2007 (karl)
For lispref 2.9 (for Emacs 22, June 2007), I created a very ugly
Makefile, in the file two-volume.make, to encapsulate all the steps
below, without manual intervention. In theory, simply running "make -f
two-volume.make" should create a vol1.pdf and vol2.pdf with all the
niceties worked out.
One issue not explicitly discussed below is getting page numbers right.
It's not enough to go through the whole process. You have to go through
the whole process twice -- otherwise, some index entries and/or toc
entries will be off by one. See two-volume.make for a few more comments.
For future editions, it should suffice to update the usual things in
vol[12].texi (as well as elisp.texi). That was my hope, anyway.
18 March 1992 (bob)
This enables you to create manuals in *two* volumes, with tables of
contents, cross references, and indices in each volume referring to
......@@ -57,23 +74,23 @@ Here are the steps in detail:
% cp vol1.aux elisp1-aux
% cp vol2.aux elisp2-aux
% cp vol1.aux elisp1-aux-vol-number-added
% cp vol2.aux elisp2-aux-vol-number-added
% cp vol1.aux elisp1-aux-vol-added
% cp vol2.aux elisp2-aux-vol-added
on elisp1-aux-vol-number-added
(volume-aux-markup 1) see defun for volum-aux-markup below.
to create elisp1-aux-vol-number-added
(volume-aux-markup 1) see defun for volume-aux-markup below.
to create elisp1-aux-vol-added
on elisp2-aux-vol-number-added
(volume-aux-markup 2)
to create elisp2-aux-vol-number-added
to create elisp2-aux-vol-added
insert elisp2-aux-vol-number-added into vol1.aux (append)
insert elisp1-aux-vol-number-added into vol2.aux (prepend)
insert elisp2-aux-vol-added into vol1.aux (append)
insert elisp1-aux-vol-added into vol2.aux (prepend)
(so you dont have to do it again)
% cp vol1.aux elisp1-aux-2vol-ready
% cp vol2.aux elisp2-aux-2vol-ready
% cp vol1.aux elisp1-aux-ready
% cp vol2.aux elisp2-aux-ready
### Create .fn files with volume numbers for other volume.
......@@ -166,45 +183,6 @@ Do not change the .texi files; they will call the elisp-toc-2vol.toc file.
% tex vol1.texi
% tex vol2.texi
================================================================
@c ================================================================
@tex
% Special @contents command
% This inputs fixed up table of contents file rather than create new one.
\global\def\contents{%
\startcontents{Table of Contents}%
\input elisp-toc-2vol.toc
\endgroup
\vfill \eject
}
% Special @summarycontents command
% This inputs fixed up table of contents file rather than create new one.
\outer\def\summarycontents{%
\startcontents{Short Contents}%
%
\let\chapentry = \shortchapentry
\let\unnumbchapentry = \shortunnumberedentry
% We want a true roman here for the page numbers.
\secfonts
\let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl
\rm
\advance\baselineskip by 1pt % Open it up a little.
\def\secentry ##1##2##3##4{}
\def\unnumbsecentry ##1##2{}
\def\subsecentry ##1##2##3##4##5{}
\def\unnumbsubsecentry ##1##2{}
\def\subsubsecentry ##1##2##3##4##5##6{}
\def\unnumbsubsubsecentry ##1##2{}
\input elisp-toc-2vol.toc
\endgroup
\vfill \eject
}
@end tex
@c ================================================================
================================================================
......
# Copyright 2007 Free Software Foundation, Inc.
# See end for copying conditions.
# although it would be nice to use tex rather than pdftex to avoid
# colors, spurious warnings about names being referenced but not
# existing, etc., dvips | ps2pdf doesn't preserve the page size.
# Instead of creating a special dvips config file, put up with the warnings.
tex = pdftex -interaction=nonstopmode
all: vol1.pdf vol2.pdf
# vol1.texi and vol2.texi specially define \tocreadfilename so we can
# use our premade .toc's.
#
vol1.pdf: elisp1med-fns-ready elisp1med-aux-ready elisp1med-toc-ready
@echo -e "\f Final TeX run for volume 1..."
cp elisp1med-toc-ready elisp1-toc-ready.toc
cp elisp1med-fns-ready vol1.fns
cp elisp1med-aux-ready vol1.aux
$(tex) vol1.texi
#
vol2.pdf: elisp2med-fns-ready elisp2med-aux-ready elisp2med-toc-ready
@echo "Final TeX run for volume 2..."
cp elisp2med-toc-ready elisp2-toc-ready.toc
cp elisp2med-fns-ready vol2.fns
cp elisp2med-aux-ready vol2.aux
$(tex) vol2.texi
# intermediate toc files.
#
# vol1 toc: volume 1, page break, volume 2 (with II: prepended).
elisp1med-toc-ready: elisp1med-init elisp2med-init
echo '@unnchapentry{@b{Volume 1}}{10001}{vol1}{}' >$@
cat elisp1med-toc >>$@
echo '@page' >>$@
echo '@unnchapentry{@b{Volume 2}}{10001}{vol2}{}' >>$@
sed 's/{\([^}]*\)}$$/{II:\1}/' elisp2med-toc >>$@
#
# vol2 toc: volume 1 (with I: prepended), page break, volume 2.
elisp2med-toc-ready: elisp1med-init elisp2med-init
echo '@unnchapentry{@b{Volume 1}}{10001}{vol1}{}' >$@
sed 's/{\([^}]*\)}$$/{I:\1}/' elisp1med-toc >>$@
echo '@page' >>$@
echo '@unnchapentry{@b{Volume 2}}{10001}{vol2}{}' >>$@
cat elisp2med-toc >>$@
# intermediate aux files.
#
# append vol2's fixed aux to normal vol1.
elisp1med-aux-ready: elisp2med-aux-vol-added
cat elisp1med-aux $< >$@
#
# prepend vol1's fixed aux to vol2.
elisp2med-aux-ready: elisp1med-aux-vol-added
cat $< elisp2med-aux >$@
# on -pg entries, append volume number after page number.
elisp1med-aux-vol-added: elisp1med-init
sed 's/-pg}{\(.*\)}$$/-pg}{\1, vol.@tie1}/' elisp1med-aux >$@
#
elisp2med-aux-vol-added: elisp2med-init
sed 's/-pg}{\(.*\)}$$/-pg}{\1, vol.@tie2}/' elisp2med-aux >$@
# intermediate index (fns) file.
#
elisp1med-fns-ready: elisp1med-fn-vol-added elisp2med-fn-vol-added
cat elisp2med-fn-vol-added >>vol1.fn
texindex vol1.fn
cp vol1.fns $@
#
elisp2med-fns-ready: elisp1med-fn-vol-added elisp2med-fn-vol-added
cat elisp1med-fn-vol-added >>vol2.fn
texindex vol2.fn
cp vol2.fns $@
# Insert volume number (I: or II:) into index file.
elisp1med-fn-vol-added: elisp1med-init
cp vol1.fn elisp1med-fn
sed 's/}{/}{I:/' elisp1med-fn >$@
#
elisp2med-fn-vol-added: elisp2med-init
cp vol2.fn elisp2med-fn
sed 's/}{/}{II:/' elisp2med-fn >$@
# -----------------------------------------------------------------------------
# everything above is essentially a duplicate of everything below. sorry.
# -----------------------------------------------------------------------------
# intermediate TeX runs.
#
# this generates what would be the final versions -- except the page
# numbers aren't right. The process of adding the I: and II: changes
# the page breaks, so a few index entries, at least are wrong. (In
# 2007, x-meta-keysym in vol.II ended up on page 374 when the index had
# it on page 375 from the initial run.)
#
# So, we start all over again, from these fns/aux/toc files.
#
elisp1med-init: elisp1-fns-ready elisp1-aux-ready elisp1init-toc-ready texinfo.tex
@echo -e "\f Intermediate TeX run for volume 1..."
cp elisp1init-toc-ready elisp1-toc-ready.toc
cp elisp1-fns-ready vol1.fns
cp elisp1-aux-ready vol1.aux
$(tex) vol1.texi
texindex vol1.??
mv vol1.aux elisp1med-aux
mv vol1.toc elisp1med-toc
#
elisp2med-init: elisp2-fns-ready elisp2-aux-ready elisp2init-toc-ready texinfo.tex
@echo "Final TeX run for volume 2..."
cp elisp2init-toc-ready elisp2-toc-ready.toc
cp elisp2-fns-ready vol2.fns
cp elisp2-aux-ready vol2.aux
$(tex) vol2.texi
texindex vol2.??
mv vol2.aux elisp2med-aux
mv vol2.toc elisp2med-toc
# initial toc files.
#
# vol1 toc: volume 1, page break, volume 2 (with II: prepended).
elisp1init-toc-ready: elisp1-init elisp2-init
echo '@unnchapentry{@b{Volume 1}}{10001}{vol1}{}' >$@
cat elisp1-toc >>$@
echo '@page' >>$@
echo '@unnchapentry{@b{Volume 2}}{10001}{vol2}{}' >>$@
sed 's/{\([^}]*\)}$$/{II:\1}/' elisp2-toc >>$@
#
# vol2 toc: volume 1 (with I: prepended), page break, volume 2.
elisp2init-toc-ready: elisp1-init elisp2-init
echo '@unnchapentry{@b{Volume 1}}{10001}{vol1}{}' >$@
sed 's/{\([^}]*\)}$$/{I:\1}/' elisp1-toc >>$@
echo '@page' >>$@
echo '@unnchapentry{@b{Volume 2}}{10001}{vol2}{}' >>$@
cat elisp2-toc >>$@
# initial aux files.
#
# append vol2's fixed aux to normal vol1. The initial runs saved
# elisp1-aux and elisp2-aux.
elisp1-aux-ready: elisp2-aux-vol-added
cat elisp1-aux $< >$@
#
# prepend vol1's fixed aux to vol2.
elisp2-aux-ready: elisp1-aux-vol-added
cat $< elisp2-aux >$@
# on -pg entries, append volume number after page number.
elisp1-aux-vol-added: elisp1-init
sed 's/-pg}{\(.*\)}$$/-pg}{\1, vol.@tie1}/' elisp1-aux >$@
#
elisp2-aux-vol-added: elisp2-init
sed 's/-pg}{\(.*\)}$$/-pg}{\1, vol.@tie2}/' elisp2-aux >$@
# initial index (fns) file.
#
# Append other volume's index entries to this one's.
# Index entries in this volume will then take precedence.
elisp1-fns-ready: elisp1-fn-vol-added elisp2-fn-vol-added
cat elisp2-fn-vol-added >>vol1.fn
texindex vol1.fn
cp vol1.fns $@
#
elisp2-fns-ready: elisp1-fn-vol-added elisp2-fn-vol-added
cat elisp1-fn-vol-added >>vol2.fn
texindex vol2.fn
cp vol2.fns $@
# Insert volume number (I: or II:) into index file.
elisp1-fn-vol-added: elisp1-init
cp vol1.fn elisp1-fn
sed 's/}{/}{I:/' elisp1-fn >$@
#
elisp2-fn-vol-added: elisp2-init
cp vol2.fn elisp2-fn
sed 's/}{/}{II:/' elisp2-fn >$@
# initial TeX runs.
#
# We use the .fn, .aux, and .toc files created here in subsequent
# processing. The page numbers generated here will not be correct yet,
# but we run texindex and TeX a second time just to get them closer.
# Otherwise it might take even longer for them to converge.
#
elisp1-init: vol1.texi
@echo -e "\f Initial TeX run for volume 1..."
rm -f vol1.aux vol1.toc
$(tex) $<
texindex vol1.??
mv vol1.aux elisp1-aux
mv vol1.toc elisp1-toc
touch $@
#
elisp2-init: vol2.texi
@echo "Initial TeX run for volume 2..."
rm -f vol2.aux vol2.toc
$(tex) $<
texindex vol2.??
mv vol2.aux elisp2-aux
mv vol2.toc elisp2-toc
touch $@
# COPYING CONDITIONS
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This file is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this file; see the file COPYING. If not, write to
# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment