Thanks all for helping to suss out Pic macro semantics. A v10 trial confirms the consensus that Gnu Pic is faithful to the original.
On Wed, Sep 9, 2026 at 6:07 PM Noel Hunt <[email protected]> wrote: > > I just compiled 'pic' from the 'v10a' distribution, and it compiled > suprisingly easily. > I was expecting lots of prototype errors etc. > > Here is what it outputs: > > .lf 1 test.pic > ... 0 0 0.5 0 > ... 0.000i 0.000i 0.500i 0.000i > .nr 00 \n(.u > .nf > .PS 0.000i 0.500i > .lf 6 > \v'.2m'\h'-\w'A'u/2u'A > .sp -1 > \h'0.500i'\v'.2m'\h'-\w'B'u/2u'B > .sp -1 > .sp 1+0.000i > .PE > .if \n(00 .fi > .lf 6 > > On Wed, 9 Sept 2026 at 20:42, Douglas McIlroy via TUHS <[email protected]> wrote: > > > > I have been surprised by the handling of Pic macro arguments, quite > > different from m4, although Brian had a hand in both. I wonder if Gnu > > differs from the original. > > > > Would someone who can run a Research version of Pic be willing to try > > it and send me Pic's (not groff's) output from the example below? The > > issue is whether macro calls in arguments are evaluated when the > > arguments are collected. For example, is the argument collected for > > the macro call m(x) below x or "A"? In Gnu, it's x, so the two > > instances of $1 ultimately become different text. > > > > .PS > > define x {"A"} > > define m {$1; move; define x {"B"}; $1} > > m(x) > > .PE > > > > Thanks, > > Doug
