> I've attached your patch to http://savannah.gnu.org/bugs/?57034.
Just a brief follow-up to this: the test in the patch is
for a string expansion that returns nothing, in this case
usually because the string is not defined, and then groff
gives a warning.
There are two obvious ways to fix this: either an explicit
empty string that signifies the end of the author's titles,
or storing the number of titles in a register. Both require
one extra register per author, but I think the latter is better,
since it easily allows using .ne to request enough space to
output an author's signature block without page breaks.
With that in mind, here's a better patch (relative to the
original m.tmac). No provision is made for single titles
that are so long that they take more than one line to print.
--- a/contrib/mm/m.tmac
+++ b/contrib/mm/m.tmac
@@ -2975,7 +2975,8 @@
.\" indent stored in cov*abs-ind
.\" number of authors stored in cov*au
.\" author(s) stored in cov*au!x!y
-.\" author(s) title stored in cov*at!x!y
+.\" number of author's titles strored in cov*at!x
+.\" author(s) title(s) stored in cov*at!x!y
.\" x is the author-index [1-cov*au], y is the argument-index [1-9].
.\" author(s) firm stored in cov*firm
.\" new date (if .ND exists) is stored in cov*new-date
@@ -3019,6 +3020,7 @@
.\" Must appear directly after .AU
.de AT
.if \\n[.$]<1 .@error "AT: no arguments"
+.nr cov*at!\\n[cov*au] \\n[.$]
.nr cov*i 0 1
.while \\n[.$]>=\\n+[cov*i] \{\
. ds cov*at!\\n[cov*au]!\\n[cov*i] "\\$[\\n[cov*i]]
@@ -3304,18 +3306,23 @@
.nr let*i 0 1
.while \\n+[let*i]<=\\n[cov*au] \{\
. if \\n[let*i]>1 .as let*tmp /
-. as let*tmp \\*[cov*au!\\n[let*k]!2]
+. as let*tmp \\*[cov*au!\\n[let*i]!2]
.\}
.if !''\\$1' .as let*tmp -\\$1
.in (u;\\n[.l]/2)
.nf
.nr let*i 0 1
.while \\n+[let*i]<=\\n[cov*au] \{\
+. ne 3v+\\n[cov*at!\\n[let*i]]v
. SP 3v
. if \\n[let*i]=\\n[let*k] \{\
\Z'\h'-(u;\\n[.l]/2)'\\*[let*tmp]'\c
. \}
\\*[cov*au!\\n[let*i]!1]
+. nr let*j 0 1
+. while \\n+[let*j]<=\\n[cov*at!\\n[let*i]] \{\
+\\*[cov*at!\\n[let*i]!\\n[let*j]]
+. \}
.\}
.fi
.in