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

Attachment: signature.asc
Description: PGP signature

Reply via email to