ietf
[Top] [All Lists]

Re: Automatically updated Table of Contents with Nroff

2010-12-21 17:23:23
The magic directive is .tm:

.tm string After skipping initial blanks, string (rest of the line) is read in
                        copy mode and written on the standard error.

For anything you want in the table of contents, put in this line at the proper place (or include it in a header macro):

    .tm header level and title . . . . . . \n%

Stick in a line that says

    .so toc.input

where you want the table of contents to go.

    # empty out toc.input
> toc.input
    # run once to get a sample ToC, but page numbers will be off
    nroff file > /dev/null 2> toc.input
    # run again to get proper page numbers into toc.input
    nroff file > /dev/null 2> toc.input
    # run a 3rd time to get the right output, ignoring stderr this time
    nroff file 2>/dev/null

And your output will have a table of contents in the proper place with the proper page numbers.

Note: At least on my linux box, this won't work because nroff is a shell script that calls groff internally and redirects stderr to /dev/null. So you have to use groff directly.

    Tony Hansen

On 12/21/2010 11:43 AM, Julian Reschke wrote:
On 15.07.2009 11:13, Julian Reschke wrote:
Randy Presuhn wrote:
...
No need to manually edit.

Use the macros or awk / sed to spit the toc into a file which can be
inserted
into the correct position by the .so nroff directive. This will result in
a table of contents in the correct position. There is the possibility
that if the number of toc pages has changed from one iteration
to the next that the page numbers will be off by one, but that will
go away the next time the process runs.

For editing a document, particularly a largish one, the availability of
.so is for me nroff's biggest advantage over xml2rfc.
...
...

Randy,

I've been spending some time looking at the feasibility of using NROFF for IDs while retaining features like automatics generation of the TOC in the *right* place.

Funny enough, googling for this topic leads me back to this thread (and nowhere else, it seems).

So, I do understand how generate the ToC at the end, and I'll probably grok .so, but what is needed to extract the ToC into a separate file? Is there anything in nroff supporting that, or were you just referring to a set of homegrown tools? Also, as far as I can tell, the generated ToC will already be paginated, so do you post-process it again so it can be inserted properly?
_______________________________________________
Ietf mailing list
Ietf(_at_)ietf(_dot_)org
https://www.ietf.org/mailman/listinfo/ietf