Hi Dan, At 2025-10-02T16:15:14-0400, Dan Plassche wrote: > Follwing-up: > > .XE and the other table of contents macros were added into 4.2BSD > outside of the tmac directory under /usr/lib/ms in 1983.
I don't think the Eighth Edition Unix man(7)'s `XE` has anything to do with Berkeley ms's `XE`. You can find the *roff source of the V8 man(7) page at TUHS. (I don't think this was publicly available ~6 years ago when I snarfed the V7 version of the page for my archeological efforts.) https://minnie.tuhs.org/cgi-bin/utree.pl?file=V8/usr/man/man7/man.7 I'm attaching a diff of the V7->V8 difference in the man page. In it, one can observe the quiet death of the `li` request, which was deleted from troff, I presume by Kernighan in the course of his big device- independent refactoring effort described in CSTR #97. The implementation itself is starkly different from V7 to V8. It looks like the people behind PWB (USG?) whacked on the man(7) package pretty hard, imposed their own (less readable) code style, and CSRC reimported it and built their innovations on that. By PWB I guess I mean PWB 2.0, a predecessor of Unix System III, since TUHS doesn't have a copy of PWB2 but does of PWB1, which appears to me to offer no man(7) macros as we know them at all. (That makes sense if PWB1 is a descendant of V6 Unix rather than V7.) > They are documented in the paper by Bill Tuthill entitled "A > Revised Version of -ms" in the same release. Yes. When updating groff's ms documentation, Tuthill was my go-to reference for figuring out which extensions to Seventh Edition Unix ms were from Berkeley and which were from GNU. Regards, Branden
--- 1979-01-v7/man.7.orig 2019-09-02 09:19:14.925081520 -0500 +++ 1986-02-v8/man.7 2025-10-02 15:29:24.900463941 -0500 @@ -57,8 +57,6 @@ /usr/man/man0/xx .SH SEE ALSO troff(1), man(1) -.SH BUGS -Relative indents don't nest. .SH REQUESTS .ta \w'.TH n c x 'u +\w'Cause 'u +\w'Argument\ 'u .di xx @@ -71,95 +69,76 @@ .ti0 Break Argument .ti0 -.li -.B \fIt\fR no \fIt\fR=n.t.l.* Text +\&.B \fIt\fR no \fIt\fR=n.t.l.* Text .I t is bold. .ti0 -.li -.BI \fIt\fR no \fIt\fR=n.t.l. Join +\&.BI \fIt\fR no \fIt\fR=n.t.l. Join words of .I t alternating bold and italic. .ti0 -.li -.BR \fIt\fR no \fIt\fR=n.t.l. Join +\&.BR \fIt\fR no \fIt\fR=n.t.l. Join words of .I t alternating bold and Roman. .ti0 -.li -.DT no .5i 1i... Restore default tabs. +\&.DT no .5i 1i... Restore default tabs. .ti0 -.li -.HP \fIi\fR yes \fIi\fR=p.i.* Set prevailing indent to +\&.HP \fIi\fR yes \fIi\fR=p.i.* Set prevailing indent to .I i. Begin paragraph with hanging indent. .ti0 -.li -.I \fIt\fR no \fIt\fR=n.t.l. Text +\&.I \fIt\fR no \fIt\fR=n.t.l. Text .I t is italic. .ti0 -.li -.IB \fIt\fR no \fIt\fR=n.t.l. Join +\&.IB \fIt\fR no \fIt\fR=n.t.l. Join words of .I t alternating italic and bold. .ti0 -.li -.IP \fIx i\fR yes \fIx\fR="" Same as .TP with tag +\&.IP \fIx i\fR yes \fIx\fR="" Same as .TP with tag .I x. .ti0 -.li -.IR \fIt\fR no \fIt\fR=n.t.l. Join +\&.IR \fIt\fR no \fIt\fR=n.t.l. Join words of .I t alternating italic and Roman. .ti0 -.li -.LP yes - Same as .PP. +\&.LP yes - Same as .PP. .ti0 -.li -.PD \fId\fR no \fId\fR=.4v Interparagraph distance is +\&.PD \fId\fR no \fId\fR=.4v Interparagraph distance is .I d. .ti0 -.li -.PP yes - Begin paragraph. +\&.PP yes - Begin paragraph. Set prevailing indent to .5i. .ti0 -.li -.RE yes - End of relative indent. +\&.RE yes - End of relative indent. Set prevailing indent to amount of starting .RS. .ti0 -.li -.RB \fIt\fR no \fIt\fR=n.t.l. Join +\&.RB \fIt\fR no \fIt\fR=n.t.l. Join words of .I t alternating Roman and bold. .ti0 -.li -.RI \fIt\fR no \fIt\fR=n.t.l. Join +\&.RI \fIt\fR no \fIt\fR=n.t.l. Join words of .I t alternating Roman and italic. .ti0 -.li -.RS \fIi\fR yes \fIi\fR=p.i. Start relative indent, +\&.RS \fIi\fR yes \fIi\fR=p.i. Start relative indent, move left margin in distance .I i. Set prevailing indent to .5i for nested indents. .ti0 -.li -.SH \fIt\fR yes \fIt\fR=n.t.l. Subhead. +\&.SH \fIt\fR yes \fIt\fR=n.t.l. Subhead. .ti0 -.li -.SM \fIt\fR no \fIt\fR=n.t.l. Text +\&.SM \fIt\fR no \fIt\fR=n.t.l. Text .I t is small. .ti0 -.li -.TH \fIn c x\fR yes - Begin page named +\&.TH \fIn c x\fR yes - Begin page named .I n of chapter .IR c; @@ -167,12 +146,23 @@ is extra commentary, e.g. `local', for page foot. Set prevailing indent and tabs to .5i. .ti0 -.li -.TP \fIi\fR yes \fIi\fR=p.i. Set prevailing indent to +\&.TP \fIi\fR yes \fIi\fR=p.i. Set prevailing indent to .I i. Begin indented paragraph with hanging tag given by next text line. If tag doesn't fit, place it on separate line. +.ti0 +\&.XE no Use +.IR eqn (1) +preprocessor; should be first in file. +.ti0 +\&.1C yes Equalize columns and return to 1-column output +.ti0 +\&.2C yes Start 2-column nofill output .PP .ti0 * n.t.l. = next text line; p.i. = prevailing indent +.SH BUGS +There is no direct way to suppress column widows in 2-column +output; the column lengths may be adjusted by inserting +\&.sp requests before the .1C
signature.asc
Description: PGP signature
