Hi Jim & Dave,

At 2026-07-10T21:03:48-0700, Jim Avera wrote:
> At https://www.gnu.org/software/groff/manual/groff.html (5.37 GNU troff
> Internals), there is an example using the ".pline" request; this is
> supposed to display internal nodes:
> 
>    printf 'Gi\\[:u]\\%%seppe\n.pline\n' | groff -z 2>&1 | jq
> 
> With groff 1.22.4 this fails because groff says .pline is an unknown
> command.
> 
> I thought maybe a.pline request which outputs was added in a more
> recent release,

You were right!

> however "pline" is not described anywhere in the above html manual.

It's there.

https://www.gnu.org/software/groff/manual/groff.html.node/Debugging.html

Scroll down or search that page for `pline`.

At 2026-07-10T23:43:26-0500, Dave Kemper wrote:
> > (Also: Was -z or -Z intended?  "jq" is a JSON processor on my
> > system.)
> 
> I presume -z was intended; this tells groff to suppress stdout.  Then
> the following "2>&1" directs stderr to stdout so that it can be piped.
> The pline output is in JSON format.

Yes.  jq(1) becomes angry it is input is malformed.  Shushing groff's
standard output stream ensures that only output to standard error goes
to jq(1)'s standard input.

That input can _still_ be malformed if there's something else on the
standard error stream, like diagnostics from groff, troff, a
preprocessor, or an output driver; or a document that uses `tm` or a
similar request.

Regards,
Branden

Attachment: signature.asc
Description: PGP signature

Reply via email to