Hi,

Tadziu wrote:
> > .SH 1
> > Locations
> > .IP " 1." 4
>
> "GROWPS" causes the point size for "SH 1" to become larger.  This
> larger point size is still active when "IP" is called, and the indent
> (in current ens) of the "IP" call is interpreted with the larger point
> size.

I've also been looking into this as an exercise in learning more.
For those that are also interested...

`IP' is aliased to `@IP'.

    .de @IP
    .if \\n[.$]>1 .nr \\n[.ev]:ai (n;\\$2)
    .par*start \\n[\\n[.ev]:ai] 0

The `\\$2' is `4' from Kurt's `.IP'.  As Tadziu says, that's `4n' as
reflects the current font size.  Having set `:ai' particular to this
environment, `par*start' is also passed it.

    .de par*start
    .ds@auto-end
    .nr \\n[.ev]:pli \\$1
    .nr \\n[.ev]:pri \\$2
    .par@reset

So now `:pli', paragraph left indent, holds the same value.  The real
work happens in `par@reset' that's called next.

    .de par@reset
    .br
    .\" Skip irrelevant lines.
    .in (u;\\n[\\n[.ev]:li]+\\n[\\n[.ev]:pli])
    .ft 1
    .fam \\*[FAM]

There's the `.in' setting the indent and using `:pli'.  The `.ft' and
`.fam' immediately follow, but too late to affect the first evaluation
of `4' as `4n' in `@IP'.

Tadziu, you gave workarounds, but unless this is historical behaviour
that must be preserved, isn't the order wrong and `@IP' should get the
paragraph reset before interpreting its `$2'?

-- 
Cheers, Ralph.
https://plus.google.com/+RalphCorderoy

Reply via email to