Re: problem with mm macros
Hi Andreas, At 2021-02-25T15:43:50+0100, Andreas Eder wrote: > I'm a newcomer to roff and have just begun reading the book 'UNIX > Document Processing and Typesetting'. There is an example of a letter > in there thay I enclose here, necause it shows the poblem: [...] > Now the problem is that groff doesn't show the author's title below > the author's name. Both heirloom and neatroff do, so it is maybe a bug > in groff? Also both heirloom and neatroff show name and tile in bold, > whereas groff only shows the name an does not do so in bold. > > Maybe someone with more experience in roff can explain what goes > wrong. There were some errors in your input, and groff 1.22.4 mm was not very helpful about identifying them, nor did its groff_mm(7) man page make terribly clear what you should be doing. When I try your input with groff 1.23.0, released last month, I get the following error. $ ~/groff-stable/bin/groff -ww -b -mm -Tutf8 ATTIC/eder-letter.mm |cat -s m.tmac:.../groff-stable/share/groff/1.23.0/tmac/mm/5.MT:48: error: title not defined; call TL and AU before MT A problem is that, as noticed in the original thread from 2½ years ago, is that you should have been using either: 1. The `AU` and `TL` macros _both_ with `MT`, or 2. The `WA` and `WE` macros with `LT`. Another problem was that you gave 2 arguments to the `FC` macro when it accepts only one. The man page has some new language about these matters. Document styles groff mm offers three different frameworks for document organization. COVER/COVEND is a flexible means of preparing any document requiring a cover page. LT/LO aids preparation of typical Anglophone correspondence (business letters, for example). The MT memorandum type mechanism implements a group of formal styles historically used by AT&T Bell Laboratories. Your document can select at most one of these approaches; when used, each disables the others. [...] Macros [...] AU [name [initials [loc [dept [ext [room [arg1 [arg2 [arg3] Specify author. AU terminates a document title started with TL, and can be called without arguments for that purpose. Author information is used by cover sheets, MT memoranda, and SG. Further arguments comprise initials, location, department, telephone extension, room number or name, and up to three additional items. Repeat AU to identify multiple authors. Use WA/WE instead to identify the author for documents employing LT. [...] FC [closing‐text] Output the string Letfc, or the specified closing‐text, as the formal closing of a letter. [...] LT [style] Format a letter in the designated style, defaulting to BL (see below). A letter begins with the writer’s address (WA/WE), followed by the date (ND), the inside address (IA/IE), the body of the letter (P and other general‐ purpose mm macros), the formal closing (FC), the signature (SG), and notations (NS/NE). Any of these may be omitted. Letter options specified with LO add further annotations, which are extensible; see section “Internals” below. style Description BL Blocked: the writer’s address, date, formal closing, and signature are indented to the center of the line. Everything else is left‐aligned. SB Semi‐blocked: as BL, but the first line of each paragraph is indented by 5m. FB Fully blocked: everything begins at the left margin. SP Simplified: as FB, but a formal closing is omitted, and the signature is set in full capitals. I used DWB 3.3 mm as my basis for comparison. It requires as well the `IA`/`IE` macros for an inside address to be called for `LT` letters, but they need not have any content. groff mm doesn't demand them. DWB 3.3 mm also does not put anything in boldface or italics in `LT` letters. The examples in its manual also do not exhibit such style changes. groff mm (in 1.23.0) uses only one blank line of vertical spacing at most between segments of the letter. I judged this to be the best approach since there is no standard defining how large these gaps should be--one vee seemed a reasonable minimum that people could alter within a letter with `SP` calls, as you did, and anything not covered by that technique, we can add registers for, probably in the `Letxxx` name space. I had problems with Heirloom Doctools mm. It appears to believe that no authors are defined. It also throws some garbage on the output. But it also doesn't do any font style changes as you seemed to be expecting. This at least is consistent with DWB 3.3 (Heirloom's predecessor). ~/heirloom$ ./bi
Re: problem with mm macros
On 2/25/21, Mike Bianchi wrote: > Does anyone maintain m.tmac these days? The bug tracker seems to think that *you* do -- or at least, it thought that once upon a time, as several old -mm bugs are assigned to you: http://savannah.gnu.org/bugs/?go_report=Apply&group=groff&func=browse&set=custom&report_id=100&advsrch=0&status_id=1&assigned_to=36631 I take it this is an error?
Re: problem with mm macros
> 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
Re: problem with mm macros
Thanks, I will try it out. And if the LT macros are still broken, I'll put in a report. I think they will be, as the LT macros are (I believe) a non-standard addition to GNU mm, separate from the MT macros. Robert. On Mon, Mar 15, 2021 at 4:02 PM Dave Kemper wrote: > Thanks, Tadziu! I've attached your patch to > http://savannah.gnu.org/bugs/?57034. > > Andreas and Robert, are the other issues you noted in this thread > manifestations of the same problem, or separate problems? I'm not at > all an mm user so don't know the expected behavior, but from the > descriptions, it sounds like at least the .LT problem Robert reported > is something different. > > Would you two mind opening new bugs in our bug tracker > (http://savannah.gnu.org/bugs/?group=groff&func=additem) to document > these problems if they're different from 57034? You can submit bug > reports here without creating an account. > > -- Robert Goulding Director, John J. Reilly Center for Science, Technology, and Values; Director, Program in History and Philosophy of Science; Assoc. Professor, Program of Liberal Studies, Fellow, Medieval Institute, University of Notre Dame.
Re: problem with mm macros
On Mo 15 Mär 2021 at 15:00, Dave Kemper wrote: > Andreas and Robert, are the other issues you noted in this thread > manifestations of the same problem, or separate problems? I'm not at > all an mm user so don't know the expected behavior, but from the > descriptions, it sounds like at least the .LT problem Robert reported > is something different. Yes, the .LT problem is something different and the problem with .AF also. Andreas
Re: problem with mm macros
On Mo 15 Mär 2021 at 17:45, Tadziu Hoffmann wrote: > This can be fixed quickly by adding, below the line that > prints the author's name, > > \\*[cov*au!\\n[let*i]!1] > > the following lines: > > .nr let*j 0 1 > .while !'\\*[cov*at!\\n[let*i]!\\n+[let*j]]'' \{\ > \\*[cov*at!\\n[let*i]!\\n[let*j]] > .\} > > Since the number of titles for each author is not stored anywhere, > this assumes that an empty value signals the end of the author's > titles, i.e., there can be no empty author's titles (but \& works). Thank you for fixing this, It works. The only difference to either heirloom or neateqn output is that both name and title are not in bold. Wether this is impostant or not os a dofferent question. Andreas
Re: problem with mm macros
Thanks, Tadziu! I've attached your patch to http://savannah.gnu.org/bugs/?57034. Andreas and Robert, are the other issues you noted in this thread manifestations of the same problem, or separate problems? I'm not at all an mm user so don't know the expected behavior, but from the descriptions, it sounds like at least the .LT problem Robert reported is something different. Would you two mind opening new bugs in our bug tracker (http://savannah.gnu.org/bugs/?group=groff&func=additem) to document these problems if they're different from 57034? You can submit bug reports here without creating an account.
Re: problem with mm macros
> > > Now the problem is that groff doesn't show the author's > > > title below the author's name. Both heirloom and neatroff > > > do, so it is maybe a bug in groff? > > Does this seem to you to be the same as the problem reported in > > http://savannah.gnu.org/bugs/index.php?57034 ? > Yes, this seems to be the same problem. This can be fixed quickly by adding, below the line that prints the author's name, \\*[cov*au!\\n[let*i]!1] the following lines: .nr let*j 0 1 .while !'\\*[cov*at!\\n[let*i]!\\n+[let*j]]'' \{\ \\*[cov*at!\\n[let*i]!\\n[let*j]] .\} Since the number of titles for each author is not stored anywhere, this assumes that an empty value signals the end of the author's titles, i.e., there can be no empty author's titles (but \& works). I noticed that the loc-dept-initials/initials line is also different. Does anyone still use this? Is it important that this is historically accurate?
Re: problem with mm macros
On Mo 15 Mär 2021 at 06:38, Dave Kemper wrote: > On 2/25/21, Andreas Eder wrote: >> Now the problem is that groff doesn't show the author's title below the >> author's name. Both heirloom and neatroff do, so it is maybe a bug in >> groff? > > Andreas, > > Does this seem to you to be the same as the problem reported in > http://savannah.gnu.org/bugs/index.php?57034 ? Hello Dave, Yes, this seems to be the same problem. The only difference is that I didn't try nroff but groff, since I am only interested in that output format. Thank you for looking into it. Andreas -- ceterum censeo redmondinem esse delendam
Re: problem with mm macros
On 2/25/21, Andreas Eder wrote: > Now the problem is that groff doesn't show the author's title below the > author's name. Both heirloom and neatroff do, so it is maybe a bug in > groff? Andreas, Does this seem to you to be the same as the problem reported in http://savannah.gnu.org/bugs/index.php?57034 ?
Re: problem with mm macros
On Fr 26 Feb 2021 at 08:48, Robert Goulding wrote: > Actually, I now see that documents headed with .LT don't use .AU etc., but > .WA. And for the most part it works. > > But there is still a bug, with one of the four types of letters. > > Try this: > > .LT SP > .WA "John Doe" > Nowhere, > USA. > .WE > .IA "Jane Smith" > Somewhere, > UK. > .IE > .LO SJ "Letter of Introduction" > .LO SA "Dear Ms Smith" > .P > This is the text of the letter. > .FC "Yours sincerely" > .SG > > You'll find that: The subject line shows only the first word; the formal > closing is omitted completely; and the writer's name at the bottom is > followed by a trailing comma. > > If you change the first line to > .LT BL > > or one of the other types, everything is printed correctly. It seems, I have opened a can of worms here :-) Andreas
Re: problem with mm macros
Actually, I now see that documents headed with .LT don't use .AU etc., but .WA. And for the most part it works. But there is still a bug, with one of the four types of letters. Try this: .LT SP .WA "John Doe" Nowhere, USA. .WE .IA "Jane Smith" Somewhere, UK. .IE .LO SJ "Letter of Introduction" .LO SA "Dear Ms Smith" .P This is the text of the letter. .FC "Yours sincerely" .SG You'll find that: The subject line shows only the first word; the formal closing is omitted completely; and the writer's name at the bottom is followed by a trailing comma. If you change the first line to .LT BL or one of the other types, everything is printed correctly. Robert. On Thu, Feb 25, 2021 at 9:55 AM Robert Goulding wrote: > I get the same result; and then tried variants with .LT instead of .MT, > and the signature is not produced at all! > > On Thu, Feb 25, 2021 at 9:44 AM Andreas Eder wrote: > >> >> Hello, >> >> I'm a newcomer to roff and have just begun reading the book 'UNIX >> Document Processing and Typesetting'. There is an example of a letter in >> there thay I enclose here, necause it shows the poblem: >> >> .ND "January 1, 1999" >> .AU "Dr. Gray Hound" >> .AT "Project Leader" >> .MT 5 >> .DS >> Our Reference: prog/001 >> Your Reference: xyz/100 >> .SP 4 >> Mr. William Smith >> Chief Advisor >> Consult the Consultants >> Penny House >> Graceland >> .DE >> .SP 3 >> Dear Mr. Smith >> .SP 2 >> .ce >> Recruitment of a Programmer >> .fi >> .SP 2 >> .P >> With reference to our discussion over lunch at the West Gate Club, >> the requirements of the programmer are as follows: >> .P >> The programmer should be conversant in all computer programming languages >> and be ready to develop any kind of software using different computers. >> The programmer must also be willing to do administrative and paperwork >> to get his/her pay. >> .P >> Although the requirements may seem to be unusual, I am sure >> that with your company's expertise in head hunting, finding a >> suitable person for the above-mentioned position will be a trivial matter. >> .P >> Hope to hear from you soon. >> .FC Sincerely yours >> .SG >> >> Now the problem is that groff doesn't show the author's title below the >> author's name. Both heirloom and neatroff do, so it is maybe a bug in >> groff? Also both heirloom and neatroff show name and tile in bold, >> whereas groff only shows the name an does not do so in bold. >> >> Maybe someone with more experience in roff can explain what goes wrong. >> >> Sincerly, >> >> Andreas Eder >> >> >> >> > > -- > Robert Goulding > Director, John J. Reilly Center for Science, Technology, and Values; > Director, Program in History and Philosophy of Science; > Assoc. Professor, Program of Liberal Studies, > Fellow, Medieval Institute, > University of Notre Dame. > -- Robert Goulding Director, John J. Reilly Center for Science, Technology, and Values; Director, Program in History and Philosophy of Science; Assoc. Professor, Program of Liberal Studies, Fellow, Medieval Institute, University of Notre Dame.
Re: problem with mm macros
On Do 25 Feb 2021 at 10:40, Mike Bianchi wrote: > Andreas has found a true bug. The .AT macro does not act as advertised in > groff_mm ... > The title _does_not_ show up after the name in the signature block. > > Search /usr/share/groff/1.22.2/tmac/m.tmac (the copy I am using at present) > fgrep 'cov*at!' /usr/share/groff/1.22.2/tmac/m.tmac > and I find > .\" author(s) title stored in cov*at!x!y > . ds cov*at!\\n[cov*au]!\\n[cov*i] "\\$[\\n[cov*i]] > > which shows that cov*at!N!N is created as cov*at!1!1 > but never referenced. > I think I have found the place where the title should be added: it is very probably in the let*mt-sign macro which is defined in m.tmac at line 3298. That is the place where the authors are printed. Unfortunately my roff fu is still much too weak to attempt a fix. Sincerely Andreas
Re: problem with mm macros
On Do 25 Feb 2021 at 10:40, Mike Bianchi wrote: > Andreas has found a true bug. The .AT macro does not act as advertised in > groff_mm ... > The title _does_not_ show up after the name in the signature block. > > Search /usr/share/groff/1.22.2/tmac/m.tmac (the copy I am using at present) > fgrep 'cov*at!' /usr/share/groff/1.22.2/tmac/m.tmac > and I find > .\" author(s) title stored in cov*at!x!y > . ds cov*at!\\n[cov*au]!\\n[cov*i] "\\$[\\n[cov*i]] > > which shows that cov*at!N!N is created as cov*at!1!1 > but never referenced. I think I have found another instance of that problem. If you specify the author's firm with .AF it gets stored away in cov*firm but it is not referenced or used anywhere except 0.MT, 4.MT and ms.cov. Try the following test: .TL Merger Technical Specifications .AF "ABC Corporation" .AU "Christopher Craft" .AT "President" .AS This memo details the specifications for the planned merger. .AE .MT "Merger Description and Marching Orders" As a result of our talks with XYZ corporation, we plan to go forward with the merger. This document contains the following: .BL .LI Schedule and time tables. .LI Financial statements. .LI Asset allocations. .LE .SP Please add any corrections you have, then sign the approval line indicated at the bottom of this sheet. .FC .SG .AV "John W. Doe, XYZ Corporation President" .AV "Sylvia Q. Public, XYZ Corporation CFO" .NS Everyone in the corporation. .NE It should show up in the right top of the page - or at least that is what neatroff does. Sincerely, Andreas
Re: problem with mm macros
Andreas has found a true bug. The .AT macro does not act as advertised in groff_mm ... The title _does_not_ show up after the name in the signature block. Search /usr/share/groff/1.22.2/tmac/m.tmac (the copy I am using at present) fgrep 'cov*at!' /usr/share/groff/1.22.2/tmac/m.tmac and I find .\" author(s) title stored in cov*at!x!y . ds cov*at!\\n[cov*au]!\\n[cov*i] "\\$[\\n[cov*i]] which shows that cov*at!N!N is created as cov*at!1!1 but never referenced. Witness: If I give nroff -mm the following ... .ND "January 1, 1999" .AU "Dr. Gray Hound" .AT "Project Leader" .MT 5 .nf \*[cov*au!1!1] \*[cov*at!1!1] it yields ... Dr. Gray Hound Project Leader Does anyone maintain m.tmac these days? Mike On Thu, Feb 25, 2021 at 09:55:59AM -0500, Robert Goulding wrote: > I get the same result; and then tried variants with .LT instead of .MT, and > the signature is not produced at all! > > On Thu, Feb 25, 2021 at 9:44 AM Andreas Eder wrote: > > > > > Hello, > > > > I'm a newcomer to roff and have just begun reading the book 'UNIX > > Document Processing and Typesetting'. There is an example of a letter in > > there thay I enclose here, necause it shows the poblem: > > > > .ND "January 1, 1999" > > .AU "Dr. Gray Hound" > > .AT "Project Leader" > > .MT 5 > > .DS > > Our Reference: prog/001 > > Your Reference: xyz/100 > > .SP 4 > > Mr. William Smith > > Chief Advisor > > Consult the Consultants > > Penny House > > Graceland > > .DE > > .SP 3 > > Dear Mr. Smith > > .SP 2 > > .ce > > Recruitment of a Programmer > > .fi > > .SP 2 > > .P > > With reference to our discussion over lunch at the West Gate Club, > > the requirements of the programmer are as follows: > > .P > > The programmer should be conversant in all computer programming languages > > and be ready to develop any kind of software using different computers. > > The programmer must also be willing to do administrative and paperwork > > to get his/her pay. > > .P > > Although the requirements may seem to be unusual, I am sure > > that with your company's expertise in head hunting, finding a > > suitable person for the above-mentioned position will be a trivial matter. > > .P > > Hope to hear from you soon. > > .FC Sincerely yours > > .SG > > > > Now the problem is that groff doesn't show the author's title below the > > author's name. Both heirloom and neatroff do, so it is maybe a bug in > > groff? Also both heirloom and neatroff show name and tile in bold, > > whereas groff only shows the name an does not do so in bold. > > > > Maybe someone with more experience in roff can explain what goes wrong. > > > > Sincerly, > > > > Andreas Eder > > > > > > > > > > -- > Robert Goulding > Director, John J. Reilly Center for Science, Technology, and Values; > Director, Program in History and Philosophy of Science; > Assoc. Professor, Program of Liberal Studies, > Fellow, Medieval Institute, > University of Notre Dame. -- Mike Bianchi Foveal Systems 973 822-2085 mbian...@foveal.com http://www.AutoAuditorium.com http://www.FovealMounts.com
Re: problem with mm macros
I get the same result; and then tried variants with .LT instead of .MT, and the signature is not produced at all! On Thu, Feb 25, 2021 at 9:44 AM Andreas Eder wrote: > > Hello, > > I'm a newcomer to roff and have just begun reading the book 'UNIX > Document Processing and Typesetting'. There is an example of a letter in > there thay I enclose here, necause it shows the poblem: > > .ND "January 1, 1999" > .AU "Dr. Gray Hound" > .AT "Project Leader" > .MT 5 > .DS > Our Reference: prog/001 > Your Reference: xyz/100 > .SP 4 > Mr. William Smith > Chief Advisor > Consult the Consultants > Penny House > Graceland > .DE > .SP 3 > Dear Mr. Smith > .SP 2 > .ce > Recruitment of a Programmer > .fi > .SP 2 > .P > With reference to our discussion over lunch at the West Gate Club, > the requirements of the programmer are as follows: > .P > The programmer should be conversant in all computer programming languages > and be ready to develop any kind of software using different computers. > The programmer must also be willing to do administrative and paperwork > to get his/her pay. > .P > Although the requirements may seem to be unusual, I am sure > that with your company's expertise in head hunting, finding a > suitable person for the above-mentioned position will be a trivial matter. > .P > Hope to hear from you soon. > .FC Sincerely yours > .SG > > Now the problem is that groff doesn't show the author's title below the > author's name. Both heirloom and neatroff do, so it is maybe a bug in > groff? Also both heirloom and neatroff show name and tile in bold, > whereas groff only shows the name an does not do so in bold. > > Maybe someone with more experience in roff can explain what goes wrong. > > Sincerly, > > Andreas Eder > > > > -- Robert Goulding Director, John J. Reilly Center for Science, Technology, and Values; Director, Program in History and Philosophy of Science; Assoc. Professor, Program of Liberal Studies, Fellow, Medieval Institute, University of Notre Dame.