groff
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Groff] moving TOC to start


From: Tadziu Hoffmann
Subject: Re: [Groff] moving TOC to start
Date: Wed, 28 Sep 2005 10:30:34 +0200
User-agent: Mutt/1.5.6i

To be honest, my method has been pretty much obsoleted by
groff's "write" requests.  It had been based on the fact
that troff had had no capability for writing larger blocks
of text (i.e., multi-line chunks) to external files.

Here is a toy model of a much better approach.  Just roff
the file twice (use flags "-U -e") -- no need for a separate
run to generate the TOC, it is generated automatically.
In fact, this method is technically much superior (plus, the
TOC doesn't have to be on a separate page) that I think I'll
implement it in my macros instead of my previous method.

(Note also that the technique is not really new -- LaTeX
has been using an analogous approach for a *long* time.)


.\" unsafe, eqn
.em cleanup
.wh -2c pagedone
.sp 3c
.ns
.de cleanup
.close toc
..
.de pagedone
.ch pagedone
.ev 1
.if \\n%=1 .footer
.if !\\n%=1 .header
.bp
.sp 3c
.ns
.ev
.wh -2c pagedone
..
.de header
.sp |1c
.tl '\\*[lefthead]''%'
.tl ''\v'-.8m'\D'l \\n(.lu 0'''
..
.de footer
.sp 2v
.tl '''%'
..
.de section
.nr secnum +1
.sp 2v
.ne 4v
.fp 8 TB
.ft TB
\\n[secnum].\ \ \\$*
.sp .5v
.ft TR
.fp 8 TR
.ds lefthead \\n[secnum].\ \ \\$*
.write toc .tocline \\n% \\n[secnum].\ \ \\$*
..
.de contents
.char \(LC \ \ .
.lc \(LC
.ta \\n(.luR
.sp 2v
.ne 4v
.ft TB
Contents
.sp .5v
.ft TR
.fp 8 TR
.so troff.toc
.open toc troff.toc
.nr secnum 0
..
.de tocline
.ds pagenum \\$1
.shift
\\$*\a\h'-\w'\\*[pagenum]'u%\w'\(LC'u+\w'\(LC'u'\\*[pagenum]
.br
..
.EQ
delim $$
gfont 8
grfont 8
.EN
.contents
.section Introduction
Blahblah
.bp 85
.section Experimental setup ($C H sub 3 - C H sub 2 O H$)
Blahblah
.section Results
Blahblah
.bp 107
.section Conclusions
Blahblah





reply via email to

[Prev in Thread] Current Thread [Next in Thread]