(Ted Harding) <[EMAIL PROTECTED]> wrote:

> 1. I'm not aware of a simple mechanism in groff to
>    do this -- e.g. fill all lines whose minimum
>    formatted length is within X of line-length.

AT&T troff has a \n(.x register which holds the remaining
horizontal space on the current output line. Thus it is
possible to do

.sp 5c
.ps 28
.vs 36
.de SP
.       if \\n(.x<1n \p\%
.       sp
..
.ll \w'a full line'u
a full line
stretch it
.SP
a full line
a line
.SP
more text

\n(.x is documented as a "reserved version-dependent register"
but has the described semantics in every version I have seen
from 7th edition troff on.

The \% is necessary to trick the internal control flow; the
.brp request would make it superfluous but is, of course, not
available in AT&T troff.

By introducing a documented register for the same purpose, it
would become possible to use e.g.

.de SP
.       if \\n[.rl]<1n .brp
.       sp
..

to get the desired effect.

        Gunnar


_______________________________________________
Groff mailing list
Groff@gnu.org
http://lists.gnu.org/mailman/listinfo/groff

Reply via email to