summaryrefslogtreecommitdiff
path: root/texinfo/cygnus/tocfix
diff options
context:
space:
mode:
Diffstat (limited to 'texinfo/cygnus/tocfix')
-rwxr-xr-xtexinfo/cygnus/tocfix37
1 files changed, 37 insertions, 0 deletions
diff --git a/texinfo/cygnus/tocfix b/texinfo/cygnus/tocfix
new file mode 100755
index 00000000000..c03ca8807fe
--- /dev/null
+++ b/texinfo/cygnus/tocfix
@@ -0,0 +1,37 @@
+#!/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