38 lines
1.3 KiB
Plaintext
38 lines
1.3 KiB
Plaintext
|
#!/bin/sh
|
||
|
# tocfix - move a DVI file table of contents to its proper position
|
||
|
|
||
|
# TeX puts the table of contents at the end of the DVI file.
|
||
|
# If you're printing multiple pages per sheet, you can't fix it
|
||
|
# on the printout. This program moves the TOC to be right after
|
||
|
# the titlepage and copyright page.
|
||
|
# It's a safe no-op to run this program on a DVI file more than once.
|
||
|
|
||
|
# Some explanation: the TOC has negative page numbers, represented
|
||
|
# to dviselect by an underscore. The titlepage and copyright page
|
||
|
# have TeX page numbers 1 and 2, but so do the first two pages of the
|
||
|
# first chapter. So we have to use absolute, as opposed to TeX,
|
||
|
# page numbers to get them right, represented to dviselect by an
|
||
|
# equals sign.
|
||
|
|
||
|
# This program assumes that the DVI file has the standard Texinfo
|
||
|
# format -- a titlepage, a copyright page, then the real text.
|
||
|
|
||
|
# djm@cygnus.com (David MacKenzie)
|
||
|
|
||
|
trap 'rm -f new-*.dvi title.dvi toc.dvi body_plus_toc.dvi body.dvi; exit 1' 1 3 15
|
||
|
|
||
|
if [ $# -eq 0 ]; then
|
||
|
echo "Usage; tocfix dvifile..." >&2; exit 1
|
||
|
fi
|
||
|
|
||
|
for dvi
|
||
|
do
|
||
|
dviselect -i $dvi -o title.dvi =1:2
|
||
|
dviselect -i $dvi -o toc.dvi :_1
|
||
|
dviselect -i $dvi -o body_plus_toc.dvi =3:
|
||
|
dviselect -i body_plus_toc.dvi -o body.dvi 1:
|
||
|
dviconcat -o new-$dvi title.dvi toc.dvi body.dvi
|
||
|
mv new-$dvi $dvi
|
||
|
rm -f title.dvi toc.dvi body_plus_toc.dvi body.dvi
|
||
|
done
|