Hi népéta,

At 2024-09-07T14:52:33+1000, népéta mew wrote:
> yeah, i did also create an inline version of the macro, i mostly
> wanted a .q( .q) version just to make it easier to do things like
> nested quotes, but making that work seems like probably more trouble
> than it's worth.

Okay, well, here's one stab at it.

It's a little syntaxy, and does require the groff `\n[.br]` extension,
but it seems to work.

.nr qq 0 \" quote nesting level
.
.de qr \" update quotation mark strings
.  ie \\n(qq%2 \{\
.    ds qo \(oq\"
.    ds qc \(cq\"
.  \}
.  el \{\
.    ds qo \(lq\"
.    ds qc \(rq\"
.  \}
..
.
.de q( \" open quotation
.  nr qq +1
.  qr
\\*(qo\\$1\c
..
.
.de q) \" close quotation
.  ds qx \" empty; output suffix
.  \" The `.br` register is a groff extension.
.  if \\n[.br] .as qi \c\"
\\*(qc\\$1\\*(qx
.  rm qx
.  nr qq -1
.  qr
..
.

Demonstration:

$ nroff -ww ATTIC/nepeta3.groff | cat -s
‘Maybe  my  costume’s not “the norm”.  I’m not “camera‐friendly”.
I “frighten children”; I’m “not hygienic”; I  don’t  “wipe  prop‐
erly”.  (in memory of Bennett Brauer (Chris Farley))

“She  said, ‘I think we’re getting a little carried away with the
“nesting”’.  But I told her it’s all the rage  among  Lisp  ‘pro‐
grammers’.”

Full example attached.

Regards,
Branden
.nr qq 0 \" quote nesting level
.
.de qr \" update quotation mark strings
.  ie \\n(qq%2 \{\
.    ds qo \(oq\"
.    ds qc \(cq\"
.  \}
.  el \{\
.    ds qo \(lq\"
.    ds qc \(rq\"
.  \}
..
.
.de q( \" open quotation
.  nr qq +1
.  qr
\\*(qo\\$1\c
..
.
.de q) \" close quotation
.  ds qx \" empty; output suffix
.  \" The `.br` register is a groff extension.
.  if \\n[.br] .as qi \c\"
\\*(qc\\$1\\*(qx
.  rm qx
.  nr qq -1
.  qr
..
.
.q(
Maybe my costume's not
.q(
the norm\c
'q) .
I'm not
.q(
camera-friendly\c
'q) .
I
.q(
frighten children\c
'q) ;
I'm
.q(
not hygienic\c
'q) ;
I don't
.q(
wipe properly\c
'q) .
(in memory of Bennett Brauer (Chris Farley))
.sp
.
.sp
.
.q(
She said,
.q(
I think we're getting a little carried away
with the
.q(
nesting\c
'q) \c
'q) .
.
But I told her it's all the rage among Lisp
.q(
programmers\c
'q) .\c
.q)

Attachment: signature.asc
Description: PGP signature

Reply via email to