Hi Mark,

Mark Kettenis wrote on Mon, May 20, 2013 at 01:42:14PM -0600:

> CVSROOT:      /cvs
> Module name:  src
> Changes by:   kette...@cvs.openbsd.org        2013/05/20 13:42:14
> 
> Modified files:
>       share/man/man9 : uvm.9 
> 
> Log message:
> Wrap list of prototypes in a .nr nS 1/0 pair just like all the others.  No
> cluse what this is supposed to do, but it is consistent with what happens
> elsewhere in this man page and fixes the obvious formatting problems.

To answer your question, as i guess few people know this quirk:

 $ man 7 roff | grep -A14 -B1 'Define a register'

   nr
     Define a register.  A register is an arbitrary string value
     that defines some sort of state, which influences parsing
     and/or formatting.  Its syntax is as follows:

           .nr name value

     The value may, at the moment, only be an integer.  So far,
     only the following register name is recognised:

     nS      If set to a positive integer value, certain mdoc(7)
             macros will behave in the same way as in the SYNOPSIS
             section.  If set to 0, these macros will behave in the
             same way as outside the SYNOPSIS section, even when
             called within the SYNOPSIS section itself.  Note that
             starting a new mdoc(7) section with the Sh macro will
             reset this register.

So .nr is one of the few roff(7) requests implemented in mandoc(1).
The register "nS" is special to the old (pre-groff-1.17) groff
implementation of mdoc(7), it is neither supported by modern groff
nor (i suppose) by other, non-groff mdoc(7) implementations, so it's
utterly non-portable.

As OpenBSD never used anything but old groff to build manuals,
this hack just worked for us and got used extensively in kernel
manuals, wherever any page needed to split the SYNOPSIS into parts.
Consequently, i made it work in mandoc(1) as well.

It is still a non-portable hack, but since there is no portable
way to split a SYNOPSIS in mdoc(7), i don't know how to improve
the situation.  Inventing new mdoc(7) syntax for this end would
only make matters worse by being even less portable and causing
a make-work project to adjust existing manuals.

Hope that helps,
  Ingo

P.S.
If you want a free commit, feel free to fix the INITIALISATION
section in the same way.

Reply via email to