aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorG. Branden Robinson <g.branden.robinson@gmail.com>2025-10-26 16:33:08 -0500
committerDan Cross <crossd@gmail.com>2025-10-26 19:03:55 -0400
commit46fbe4cd00252a93e9ffcedb3154b53453d0993e (patch)
tree188670b27c551896da9bb7bb0bccd1382a5a792c
parent499efb270d7d5e841b51fc1a44400da54ba58361 (diff)
tmac/tmac.an*: work around formatter bug
...when rendering some man pages, such as those of ncurses. I did not manage (nor seriously attempt) to identify the root cause of this bug. ncurses's use of `SH` and `SS` man(7) macros is unremarkable.[1] I cannot account for why the less(1) man page renders fine and ncurses pages like insstr(3) do not. But render badly they do, emitting *roff logic as formatted output. ``` $ 9 nroff -man $(man -w insstr) | grep -F .ss | cat -v "'''if^GNAME^GSYNOPSIS^G .ss 18 NAME "'''if^GSYNOPSIS^GSYNOPSIS^G .ss 18 SYNOPSIS "'''if^GDESCRIPTION^GSYNOPSIS^G .ss 18 DESCRIPTION "'''if^GRETURN^GSYNOPSIS^G .ss 18 RETURN VALUE "'''if^GNOTES^GSYNOPSIS^G .ss 18 NOTES "'''if^GEXTENSIONS^GSYNOPSIS^G .ss 18 EXTENSIONS "'''if^GPORTABILITY^GSYNOPSIS^G .ss 18 PORTABILITY "'''if^GHISTORY^GSYNOPSIS^G .ss 18 HISTORY "'''if^GSEE^GSYNOPSIS^G .ss 18 SEE ALSO ``` With this patch: ``` $ 9 nroff -man $(man -w insstr) | grep -F .ss | cat -v | grep . || echo NO OUTPUT NO OUTPUT ``` I do observe that the problem seems to correspond to the only use in the package of the old-fashioned `'''` commenting convention _within a macro definition_. I have a notion of how GNU troff works, but little about AT&T troff. That said, if I were to try to get to the bottom of this problem, I'd look into if and how the no-break command character is handled differently in copy mode. I see nothing in CSTR #54 to suggest that the command characters have different meanings in copy mode and its complement.[2] My solution is to use idiomatic comment syntax inside macro definitions. [1] https://github.com/ThomasDickey/ncurses-snapshots/blob/d5dc8a4a7c15474652d73dee37d905c8205f6ab4/man/curs_insstr.3x#L47 [2] unnamed in AT&T documentation but which I term "interpretation mode" in groff
-rw-r--r--tmac/tmac.an4
-rw-r--r--tmac/tmac.antimes4
2 files changed, 4 insertions, 4 deletions
diff --git a/tmac/tmac.an b/tmac/tmac.an
index dfd653b2..28c6f6f1 100644
--- a/tmac/tmac.an
+++ b/tmac/tmac.an
@@ -143,8 +143,8 @@
.ne 1.1v
.nr )R 0
.fi
-'''ss12
-'''if\\$2SYNOPSIS .ss 18
+.\"ss12
+.\"if\\$2SYNOPSIS .ss 18
.it 1 }N
.if !\\$3 .SM
.ft 3
diff --git a/tmac/tmac.antimes b/tmac/tmac.antimes
index b2843713..6afd0be6 100644
--- a/tmac/tmac.antimes
+++ b/tmac/tmac.antimes
@@ -126,8 +126,8 @@
.ne1.1v
.nr)R 0
.fi
-'''ss12
-'''if\\$2SYNOPSIS .ss 18
+.\"ss12
+.\"if\\$2SYNOPSIS .ss 18
.it1 }N
.if!\\$3 .SM
.ft 3