At 2020-03-03T02:09:02+0100, Tadziu Hoffmann wrote: > > As far as I can tell from Kernighan and Cherry[1], eqn's "define"s > > aren't parameterized at all. The groff eqn(1) man page claims to > > document (only) extensions to classical eqn, but I don't see this > > extension described there. > > It actually does: in subsection "Macros": > > Macros > > Macros can take arguments. In a macro body, $n where > n is between 1 and 9, is replaced by the nth argument > if the macro is called with arguments; if there are > fewer than n arguments, it is replaced by nothing. > A word containing a left parenthesis where the part > of the word before the left parenthesis has been > defined using the define command is recognized as a > macro call with arguments; characters following the > left parenthesis up to a matching right parenthesis > are treated as comma-separated arguments; commas inside > nested parentheses do not terminate an argument.
Yup, you're right; I read that part of eqn(1) in haste and concluded wrongly that to get this behavior, you had to use "sdefine" or one of the other keywords defined in that subsection. > So it does mention grouping with parentheses being understood, > but it says nothing about understanding "strings" delimited by > quotes. Yup. With that in mind, GNU eqn produces the output I expect. .EQ define f % $1 % f("a,b") .EN . .EQ "a .EN I get the same diagnostic twice. Regards, Branden
signature.asc
Description: PGP signature