From e5b5757e640371974d2e70144c8e59c6a5b613f6 Mon Sep 17 00:00:00 2001 From: "G. Branden Robinson" Date: Sun, 24 Aug 2025 11:53:38 -0500 Subject: tmac/tmac.an*: support `lq`, `rq` strings The `lq` and `rq` strings are not a groffism, but _almost_ universally portable to man(7) renderers. They originate in 4BSD (1980).[1] They entered Unix System V with SVR4 (1988 or 1989).[2] mandoc(1) has supported them since its inception.[3] * tmac/tmac.an: * tmac/tmac.antimes: Do it. Use U+201C and U+201D if the output device is "utf", otherwise define them as `` and ''. Don't define them as `"` because that breaks when interpolating the strings in macro arguments.[4] [1] https://minnie.tuhs.org/cgi-bin/utree.pl?file=4BSD/usr/lib/tmac/tmac.an.new [2] https://github.com/ryanwoodsmall/oldsysv/blob/e68293af91e2dc39f5f29c20d7e429f9e0cabc75/sysvr4/svr4/ucbcmd/troff/troff.d/tmac.d/an#L46 [3] https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/mandoc/predefs.in?rev=1.1&content-type=text/x-cvsweb-markup [4] https://www.gnu.org/software/groff/manual/groff.html.node/Calling-Macros.html "For the (neutral) double quote, you have recourse to an obscure syntactical feature of AT&T troff. ..." --- tmac/tmac.an | 8 ++++++++ tmac/tmac.antimes | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/tmac/tmac.an b/tmac/tmac.an index 7948a153..dfd653b2 100644 --- a/tmac/tmac.an +++ b/tmac/tmac.an @@ -478,6 +478,8 @@ .nr )V 11 \} .if t \{.ds R ® .ds S \s\n()S +.ds lq “ +.ds rq ” ..\} .if n \{.ie \nL<=0 .nr )L 11i .el \{.nr )L \nLu @@ -491,6 +493,12 @@ .nr )O 0\} .ds R (Reg.) .ds S +.ds lq `` +.ds rq '' +.\" Insert definitions for non-utf troff-mode devices here. +.if '\*(.T'utf' \{.ds lq “ +.ds rq ” +.\} ..\} .if \nT .nr LL 80n .if \nV>1 \{ diff --git a/tmac/tmac.antimes b/tmac/tmac.antimes index 123ea514..b2843713 100644 --- a/tmac/tmac.antimes +++ b/tmac/tmac.antimes @@ -450,6 +450,8 @@ .nr)V 12 \} .ift \{.ds R \(rg .dsS \s\n()S +.ds lq “ +.ds rq ” ..\} .ifn \{.nr )L 11i .nrLL 6.5i @@ -461,6 +463,12 @@ .nr)O 0\} .dsR (Reg.) .dsS +.ds lq `` +.ds rq '' +.\" Insert definitions for non-utf troff-mode devices here. +.if '\*(.T'utf' \{.ds lq “ +.ds rq ” +.\} ..\} .if\nT .nr LL 80n .if\nV>1 \{ -- cgit v1.2.3