BSD 4 release
[unix-history] / usr / lib / me / src / tmac.e
index 30e187b..df83710 100644 (file)
@@ -8,13 +8,15 @@
 .\"*           Electronics Research Laboratory                         *
 .\"*           U.C. Berkeley.                                          *
 .\"*                                                                   *
 .\"*           Electronics Research Laboratory                         *
 .\"*           U.C. Berkeley.                                          *
 .\"*                                                                   *
-.\"*   VERSION 1.1     First Release: 11 Sept 1978                     *
+.\"*   VERSION 2.8     First Release: 11 Sept 1978                     *
 .\"*   See file \*(||/revisions for revision history                   *
 .\"*                                                                   *
 .\"*   Documentation is available.                                     *
 .\"*                                                                   *
 .\"**********************************************************************
 .\"*   See file \*(||/revisions for revision history                   *
 .\"*                                                                   *
 .\"*   Documentation is available.                                     *
 .\"*                                                                   *
 .\"**********************************************************************
-.\" %beginstrip%
+.\"
+.\"    @(#)tmac.e      2.8     11/10/80
+.\"    %beginstrip%
 .\"
 .\"    Code on .de commands:
 .\"            ***     a user interface macro.
 .\"
 .\"    Code on .de commands:
 .\"            ***     a user interface macro.
 ..
 .\"\f           *** INTERNAL HEADER AND FOOTER MACROS ***
 .de @h                 \" --- header
 ..
 .\"\f           *** INTERNAL HEADER AND FOOTER MACROS ***
 .de @h                 \" --- header
-.if \n@>0 .tm >> @h %=\\n% ?a=\\n(?a ?b=\\n(?b
+.if \n@>0 .tm >> @h %=\\n% ?a=\\n(?a ?b=\\n(?b ?w=\\n(?w
 .if (\\n(.i+\\n(.o)>=\\n(.l \
 .      tm Line \\n(c. -- Offset + indent exceeds line length
 .if t .if (\\n(.l+\\n(.o)>7.75i \
 .if (\\n(.i+\\n(.o)>=\\n(.l \
 .      tm Line \\n(c. -- Offset + indent exceeds line length
 .if t .if (\\n(.l+\\n(.o)>7.75i \
 .rn |6 |2
 .rn |7 |3
 .nr _w 0                       \" reset max footnote width
 .rn |6 |2
 .rn |7 |3
 .nr _w 0                       \" reset max footnote width
+.nr ?W 0                       \" no wide floats this page (yet)
 .nr ?I 1
 .\" begin actual header stuff
 .ev 2
 .nr ?I 1
 .\" begin actual header stuff
 .ev 2
 .if \n@>3 .tm >> @n nl=\\n(nl %=\\n% ?f=\\n(?f ?o=\\n(?o
 .if \\n(bm<=0 \
 .      nr bm \\n(.Vu
 .if \n@>3 .tm >> @n nl=\\n(nl %=\\n% ?f=\\n(?f ?o=\\n(?o
 .if \\n(bm<=0 \
 .      nr bm \\n(.Vu
-.if \\n(_w<=\\n($l \
+.if (\\n(_w<=\\n($l)&(\\n(?W=0) \
 \{\
 .      nr _b (\\n(ppu*\\n($ru)/2u      \" compute fudge factor (must be < 1P)
 .      if \\n(_bu>((\\n(bmu-\\n(fmu-(\\n(tpu*\\n($ru))/2u) \
 \{\
 .      nr _b (\\n(ppu*\\n($ru)/2u      \" compute fudge factor (must be < 1P)
 .      if \\n(_bu>((\\n(bmu-\\n(fmu-(\\n(tpu*\\n($ru))/2u) \
 .      mk #T                   \" for tbl commands
 .      ns
 .\}
 .      mk #T                   \" for tbl commands
 .      ns
 .\}
-.if \\n(?a \
+.if (\\n(?a)&((\\n($c<2):(\\n(?w=0)) \
 \{\
 .      nr ?a 0                 \" output floating keep
 .      @k |t
 \{\
 .      nr ?a 0                 \" output floating keep
 .      @k |t
+.      if \\n(?w \
+.              mk _k           \" don't overstrike wide keeps
+.      nr ?w 0
 .\}
 .os
 .$H                            \" special column header macro
 .\}
 .os
 .$H                            \" special column header macro
 ..
 .\"\f           *** FLOATING TABLES AND NONFLOATING BLOCKS ***
 .de (z                 \" &&& begin floating keep
 ..
 .\"\f           *** FLOATING TABLES AND NONFLOATING BLOCKS ***
 .de (z                 \" &&& begin floating keep
-.rn (z @T
+.rn (z @V
 .so \\*(||/float.me
 .(z \\$1 \\$2
 .so \\*(||/float.me
 .(z \\$1 \\$2
-.rm @T
+.rm @V
 ..
 .de )z                 \" &&& end floating keep
 .tm Line \\n(c. -- unmatched .)z
 ..
 .de )z                 \" &&& end floating keep
 .tm Line \\n(c. -- unmatched .)z
 ..
 .de )c                 \" *** end block centered text
 .if !"\\n(.z"|c" .tm Line \\n(c. -- Unmatched .)c
 ..
 .de )c                 \" *** end block centered text
 .if !"\\n(.z"|c" .tm Line \\n(c. -- Unmatched .)c
+.br                            \" force out final line
 .di
 .if \n@>4 .tm >> .)c .l=\\n(.l .i=\\n(.i $i=\\n($i dl=\\n(dl
 .ev 1
 .di
 .if \n@>4 .tm >> .)c .l=\\n(.l .i=\\n(.i $i=\\n($i dl=\\n(dl
 .ev 1
 .rm @T
 ..
 .de TS                 \" &&& begin table
 .rm @T
 ..
 .de TS                 \" &&& begin table
-.rn TS @T
+.rn TS @W
 .so \\*(||/tbl.me
 .TS \\$1 \\$2
 .so \\*(||/tbl.me
 .TS \\$1 \\$2
-.rm @T
+.rm @W
 ..
 .\"\f           *** FONT AIDS ***
 .de sz                 \" *** set point size and vertical spacing
 ..
 .\"\f           *** FONT AIDS ***
 .de sz                 \" *** set point size and vertical spacing
 ..
 .\"\f           *** FOOTNOTING ***
 .de (f                 \" &&& begin footnote
 ..
 .\"\f           *** FOOTNOTING ***
 .de (f                 \" &&& begin footnote
-.rn (f @T
+.rn (f @U
 .so \\*(||/footnote.me
 .(f \\$1 \\$2
 .so \\*(||/footnote.me
 .(f \\$1 \\$2
-.rm @T
+.rm @U
 ..
 .de )f                 \" &&& end footnote
 .tm Line \\n(c. -- unmatched .)f
 ..
 .de )f                 \" &&& end footnote
 .tm Line \\n(c. -- unmatched .)f
 ..
 .\"\f           *** DELAYED TEXT ***
 .de (d                 \" &&& begin delayed text
 ..
 .\"\f           *** DELAYED TEXT ***
 .de (d                 \" &&& begin delayed text
-.rn (d @T
+.rn (d @U
 .so \\*(||/deltext.me
 .(d \\$1 \\$2
 .so \\*(||/deltext.me
 .(d \\$1 \\$2
-.rm @T
+.rm @U
 ..
 .de )d                 \" &&& end delayed text
 .tm Line \\n(c. -- unmatched .)d
 ..
 .\"\f           *** INDEXES (TABLE OF CONTENTS) ***
 .de (x                 \" &&& begin index
 ..
 .de )d                 \" &&& end delayed text
 .tm Line \\n(c. -- unmatched .)d
 ..
 .\"\f           *** INDEXES (TABLE OF CONTENTS) ***
 .de (x                 \" &&& begin index
-.rn (x @T
+.rn (x @U
 .so \\*(||/index.me
 .(x \\$1 \\$2
 .so \\*(||/index.me
 .(x \\$1 \\$2
-.rm @T
+.rm @U
 ..
 .de )x                 \" &&& end index entry
 .tm Line \\n(c. -- unmatched .)x
 ..
 .de )x                 \" &&& end index entry
 .tm Line \\n(c. -- unmatched .)x
 .      ds < \v'0.4m'\x'0.2m'\s-3
 .      ds > \s0\v'-0.4m'
 .      ds - \-
 .      ds < \v'0.4m'\x'0.2m'\s-3
 .      ds > \s0\v'-0.4m'
 .      ds - \-
+.      nr fi 0.3i
+.\}
+.if n \
+\{\
+.      nr fi 3n
 .\}
 .nr _o \n(.o
 .if n .po 1i
 .\}
 .nr _o \n(.o
 .if n .po 1i
 .      nr $T 0
 .      po -0.5i                \" make ugly line on LHS
 .\}
 .      nr $T 0
 .      po -0.5i                \" make ugly line on LHS
 .\}
+.if \nv \
+.      po 1i                   \" for vtroff
 .if \n($T \
 \{\
 .      if \n($T=1 \
 .if \n($T \
 \{\
 .      if \n($T=1 \