xref: /original-bsd/share/me/tmac.orig_me (revision 2ce9ec30)
.nr _0 \n(.c @(#)tmac.orig_me 2.31 (Berkeley) 05/21/88

Copyright (c) 1988 Regents of the University of California.
All rights reserved.

Redistribution and use in source and binary forms are permitted
provided that this notice is preserved and that due credit is given
to the University of California at Berkeley. The name of the University
may not be used to endorse or promote products derived from this
software without specific prior written permission. This software
is provided ``as is'' without express or implied warranty.
%beginstrip%

**********************************************************************
* *
* ****** - M E N R O F F / T R O F F M A C R O S ****** *
* *
* Produced for your edification and enjoyment by: *
* Eric Allman *
* Electronics Research Laboratory *
* U.C. Berkeley. *
* current address: *
* Britton-Lee, Inc. *
* 1919 Addison Street Suite 105 *
* Berkeley, California 94704 *
* *
* VERSION 2.31 First Release: 11 Sept 1978 *
* See file \*(||/revisions for revision history *
* *
* Documentation is available. *
* *
**********************************************************************

Code on .de commands:
*** a user interface macro.
&&& a user interface macro which is redefined
when used to be the real thing.
$$$ a macro which may be redefined by the user
to provide variant functions.
--- an internal macro.

. nx \*(||/null.me *** INTERNAL GP MACROS ***
.nr _S \\n(.s .nr _V \\n(.v .nr _F \\n(.f .nr _I \\n(.i .ev \\$1 .vs \\n(_Vu 'in \\n(_Iu .xl \\n($lu .lt \\n($lu .rr _S .rr _V .rr _F .rr _I .ls 1 'ce 0 .. .nr _d \\$1 . nr _d 1 . nr _d 2 . nr _d 3 . nr _d 4 . ds |p "\\$2 .. \{\ . tm Line \\n(c. -- Unclosed block, footnote, or other diversion (\\n(.z) . di . ex .\} . bp \" force out final table . wh -1p @m

.. .. *** STANDARD HEADERS AND FOOTERS ***
\{\ . rm |4 . rm |5 .\} \{\ . ds |4 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 . ds |5 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .\} .. . rm |4 . ds |4 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .. . rm |5 . ds |5 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .. \{\ . rm |6 . rm |7 .\} \{\ . ds |6 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 . ds |7 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .\} .. . rm |6 . ds |6 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .. . rm |7 . ds |7 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .. \{\ . wh 0 . rs . @b .\} .. *** INTERNAL HEADER AND FOOTER MACROS ***
. tm Line \\n(c. -- Offset + indent exceeds line length . tm Line \\n(c. -- Offset + line length exceeds paper width initialize a pile of junk
.nr ?h \\n(?H \" transfer "next page" to "this page" .rr ?H .nr ?c \\n(?C .rr ?C .rn |4 |0 .rn |5 |1 .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 .rs . sp |\\n(hmu \" move to header position .@t $h \" output header title . nr tm \n(.Vu .ev

_k \" for columned output .nr $c 1 \" set first column \{\ . rr ?s . rs ' @b .\} . @n \" begin the column .. \{\ . de @m \" --- output cut mark (only on C/A/T-style) . @O 0 . lt 7.5i . tl '\(rn''\(rn' . @O . lt .. .\} . nr bm \\n(.Vu \{\ . 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)-\n(.Vu . nr _b +\\n(bmu .\} .nr _B \\n(_bu .ch @f .wh -\\n(_bu @f .nr _b +(\\n(ppu*\\n($ru) \" add 1 paragraph v in case of sweep past .nr ?f 0 \" reset footnote flag \{\ . (f _ \" reprocess footnotes which run off page . nf . |o . fi . )f . rm |o .\} .nr ?o 0 \{\ . nr _i \\n(.i . in \\n($iu . |h \" output the table header . in \\n(_iu . rr _i . mk #T \" for tbl commands . ns .\} \{\ . 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 .ns .. .ec \{\ . nr T. 1 \" for tbl commands (to output bottom line) . T# 1 \" output the sides and bottom lines . br .\} .ev 2

0 \{\ . nr ?b 0 . @k |b\" \" output bottom of page tables .\} . @o \" output footnote if present . @c \" handle new column . @e \" new page .ev ..

.ls 1
.wh -\\n(_Bu @r
.|f
\{\ . di \" just in case triggered @r . if \\n(dn=0 \ \{\ . rm |o . nr ?o 0 . \} . nr dn \\n(_D . rr _D .\} .ch @r .. .rs .@O +\\n($lu+\\n($su .nr $c +1 .@n .. .@O \\n(_ou .rs .@t $f \" output footer title .nr ?h 0 .bp .. \{\ . sz \\n(tp \" set header/footer type fonts, etc. . @F \\n(tf . lt \\n(_Lu \" make title span entire page . nf . \\$1 . br .\} .. \{\ . if e .ds |z "\\*(|0 . if o .ds |z "\\*(|1 .\} ' tl \\*(|z .. \{\ . if e .ds |z "\\*(|0 . if o .ds |z "\\*(|1 .\} \{\ . if e .ds |z "\\*(|2 . if o .ds |z "\\*(|3 .\} ' tl \\*(|z .. .di |o \" save overflow footnote .nr ?o 1 .nr _D \\n(dn .ns .. *** COMMANDS WITH VARIANT DEFINITIONS ***
.rn bp @b \" --- begin page .nr $c \\n($m \" force new page, not new column . @b \\$1 \{\ . if \\n(.$>0 \ . pn \\$1 . if \\n(?I \ . @h \" 'spring' the header trap .\}

.wh 0 @h \" reset header .. .rn ll xl \" *** special line length (local) .xl \\$1 .lt \\$1 .nr $l \\n(.l . nr _L \\n(.l .. .rn po @O \" --- local page offset .@O \\$1 .nr _o \\n(.o .. *** MISCELLANEOUS ROFF COMMANDS ***
.nr ?H 1 .. 'in \\$1 ..

.rs .. .nm 1 .xl -\w'0000'u .nr ?n 1 .. .nm \\$1 . xl -\w'0000'u . xl \\n($lu .. .bp \\$1 .. .af % i .. .af % 1 .. .nr _0 \\n(hmu .nr hm \\$1v .nr tm +\\n(hmu-\\n(_0u .rr _0 .. .nr tm \\n(hmu+\\n(tpp+\\$1v .. .nr bm \\n(fmu+\\n(tpp+\\$1v .. .nr _0 \\n(fmu .nr fm \\$1v .nr bm +\\n(fmu-\\n(_0u .. . tm Line \\n(c. -- I cannot skip multiple pages .nr ?s 1 .. *** MISCELLANEOUS USER SUPPORT COMMANDS ***
.. .. . nr $i \\$1n . nr $i \\n(siu*\\n($0u ..

\l'\\n(.lu-\\n(.iu' .. *** PARAGRAPHING ***
.lp \\n(piu .. .@p . ti +\\$1 .nr $p 0 1 .. . nr ii \\n(iin .nr _0 \\n(ii . nr _0 \\$2n .@p \\n(_0u \{\ . ti -\\n(_0u . ie \\w"\\$1">=\\n(_0 \ \{\ \\$1 . br . \} . el \\$1\h'|\\n(_0u'\c .\} .rr _0 .. . nr $p 0 \" reset number after .bu .nr $p +1 \" increment paragraph number .@p \w'\0(000)\0'u \0(\\n($p)\h'|\w'\0(000)\0'u'\c ..

. ns \" don't space between .bu paragraphs .nr $p 0-1 \" mark "bulleted paragraph" mode .@p \w'\0\(bu\0'u \0\(bu\0\c .. .@I \" initialize macro processor . in +\\$1n

0

.@F \\n(pf .sz \\n(pp .ns .. *** SECTION HEADINGS ***
.rn sh @T .so \\*(||/sh.me .sh "\\$1" "\\$2" \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 .. . nr $i \\$3*\\n(si \{\ . sp \\n(ssu \" one of them is non-null . ne \\n(.Lv+\\n(.Vu+\\n(psu+(\\n(spu*\\n($ru*\\n(.Lu) . ie \\n(.$>2 \ . ti -(\\n(siu-\\n(sou) . el \ . ti +\\n(sou . @F \\n(sf . sz \\n(sp . if \\$3>0 \ . $\\$3 . if \w"\\$2">0 \\$2. . if \w"\\$1">0 \\$1\f1 \& .\} . sp \\n(psu .@F \\n(pf .sz \\n(pp .. .rn uh @T .so \\*(||/sh.me .uh "\\$1" .. *** COLUMNNED OUTPUT ***

. 1c \" revert to 1c if already 2c .nr $c 1 .nr $m 2 . nr $m \\$2 . nr $s \\$1n \" param 1: column seperation .nr $l (\\n(.l-((\\n($m-1)*\\n($s))/\\n($m .xl \\n($lu

_k .ns ..

.nr $c 1 .nr $m 1 .@O \\n(_ou .. .. *** FLOATING TABLES AND NONFLOATING BLOCKS ***
.rn (z @V .so \\*(||/float.me .(z \\$1 \\$2 .. .tm Line \\n(c. -- unmatched .)z .. .(z \\$1 \\$2 .. .)z \\$1 \\$2 ..

.@D 3 \\$1 \\$2 .@( ..

.@) . ne \\n(dnu \" make it all on one page .ls 1

.|k
.ec
.xl \\n($lu .ev .. .@M .di |k \!'rs .. .nr ?k 1 .@C 1 .@F \\n(df .vs \\n(.su*\\n($Ru
. fi \" set fill mode if "F" parameter
. in 0
\{\
. in +\\n(biu
. xl -\\n(biu
.\}
. ce 10000
..

.nr ?k 0 .di

0 .. .di |c ..

\" force out final line .di .ev 1 .ls 1

.|c
.ec
.ls
.ev
..
 *** BLOCK QUOTES (OR WHATEVER) AND LISTS ***

.@C 1

.xl -\\n(qiu .sz \\n(qp ..

.ev .nr ?k 0 ..

.@D 3 \\$1 \\$2 .@M ..

.ev .nr ?k 0 .. *** PREPROCESSOR SUPPORT ***

EQN

.rn EQ @T .so \\*(||/eqn.me ..
TBL

.rn TS @W .so \\*(||/tbl.me

.\"
.\" REFER
.\"
.rn ]- @]
.so \\*(||/refer.me
.]-
..
.rn ]< @]
.so \\*(||/refer.me
.]<
..
.\"
.\" IDEAL
.\"
.nr g7 \\n(.u
.ls 1
..
.ls
..
.ls
..
.\"
.\" PIC
.\"
. sp 0.3
.nr g7 \\$2
.nr g7 \\n(.u
.ls 1
..
.ls
..
.\"
.\" GREMLIN
.\"
.nr g7 (\\n(.lu-\\n(g1u)/2u
.nr g7 \\n(.u
.ls 1
..
.GF
..
.ls
..
.\" *** FONT AIDS ***
.vs \\n(.su*\\n($ru \" default vs at pointsize + 20%
.bd S B \\n(.su/3u
..
.nr _F \\n(.f
.ul 0
.rr _F
..
.nr _F \\n(.f
.ul 0
.rr _F
..
.nr _F \\n(.f
.ul 0
.rr _F
..
.nr _F \\n(.f
.ul 0
.rr _F
..
\\$1\l'|0\(ul'\\$2
..
\\*(lq\\$1\\*(rq\\$2
..
..
..
\s-1\\$1\\s0\\$2
..
.nr ~ \\$1
\{\
. ul 0
. if \\n~>4 \
. nr ~ \\n($b
. ft \\n~
.\}
.rr ~
..
.\" *** FOOTNOTING ***
.rn (f @U
.so \\*(||/footnote.me
.(f \\$1 \\$2
..
.tm Line \\n(c. -- unmatched .)f
..
\l'2i'
. sp 0.3
..
.\" *** DELAYED TEXT ***
.rn (d @U
.so \\*(||/deltext.me
.(d \\$1 \\$2
..
.tm Line \\n(c. -- unmatched .)d
..
.\" *** INDEXES (TABLE OF CONTENTS) ***
.rn (x @U
.so \\*(||/index.me
.(x \\$1 \\$2
..
.tm Line \\n(c. -- unmatched .)x
..
.\" *** STUFF FOR "STANDARD" PAPERS ***
.so \\*(||/thesis.me
..
.ep \" force out footnotes
\{\
. bp \" force out a table or more footnote
. rs
. ep
.\}
.nr ?C 1
.nr $f 1 1
. pn 1
.bp
.rs
. $c "\\$1"
. sp 3
..
.nr _0 0
. nr _0 1 \" chapter
. nr _0 11 \" renumbered chapter
. nr _0 2 \" appendix
. nr _0 12 \" renumbered appendix
. nr _0 3 \" preliminary material
. nr _0 4 \" bibliographic material
. nr _0 5 \" abstract
. tm Line \\n(c. -- Bad mode to .++
.nr ?R 0
.\{
. nr ?R 1
. nr _0 -10
.\}
.nr ch 0 1
. pn 1 \" must do before .ep
.ep \" end page for correct page number types
\{\
. af ch 1
. af % 1
.\}
\{\
. af ch A
. af % 1
.\}
. af % i
. af % 1
. af % 1
. he \\$2
. pn 1
.nr _M \\n(_0
.rr _0
..
.sz 12

1000

. nr ch +1
. sp 4-\\n(.L

0

.sz
. $C Chapter \\n(ch "\\$1"
. $C Appendix \\n(ch "\\$1"
..
.hx
.bp

.rs
..
.rn ac @T
.so \\*(||/acm.me
.ac "\\$1" "\\$2"
..
.\" all these macros should be named "*X", where X is any letter
.so \\*(||/local.me
..
.so \\*(||/letterhead.me
..
.\" *** DATES ***
.\" *** PARAMETRIC INITIALIZATIONS ***
. vs 9p \" for 12-pitch DTC terminals
.rr x
.nr $r \n(.v/\n(.s \" ratio of vs to ps for .sz request
.nr $R \n($r \" ratio for displays & footnotes
.nr hm 4v \" header margin
.nr tm 7v \" top margin
.nr bm 6v \" bottom margin
.nr fm 3v \" footer margin
.nr tf 3 \" title font: (real) Times Bold
.nr tp 10 \" title point size
.nr bi 4m \" indent for blocks
.nr pi 5n \" indent for paragraphs
.nr pf 1 \" normal text font
.nr pp 10 \" normal text point size
.nr qi 4n \" indent for quotes
.nr qp -1 \" down one point
.nr ii 5n \" indent for .ip's and .np's
.nr $m 1 \" max number of columns
.nr $s 4n \" column separation
.bd S B 3
.\" *** OTHER INITIALIZATION ***
\{\
. ds [ \v'-0.4m'\x'-0.2m'\s-3
. ds ] \s0\v'0.4m'
. ds < \v'0.4m'\x'0.2m'\s-3
. ds > \s0\v'-0.4m'
. ds - \(em
. nr fi 0.3i
.\}
\{\
. nr fi 3n
.\}
.nr _o \n(.o
. nr $T 2
. nr $T 1
\{\
. nr $T 0
. po -0.5i \" make ugly line on LHS on C/A/T typesetters
.\}
\{\
. if \n($T=1 \
. po 0
. ds [ [
. ds ] ]
. ds < <
. ds > >
.\}
.nr $b \nb \" figure the real font 8 font
.rr b
\{\
. if n .nr $b 2 \" italic
. if t .nr $b 3 \" bold
.\}
.nr ps 0.5v \" paragraph pre/post spacing
. nr ps 1v
.nr bs \n(ps \" block pre/post spacing
.nr qs \n(ps \" quote pre/post spacing
.nr zs 1v \" float-block pre/postspacing
.nr xs 0.2v \" index prespacing
.nr fs 0.2v \" footnote prespacing
. nr fs 0
.wh 0 @h \" set header
.nr $l \n(.lu \" line length
.nr _L \n(.lu \" line length of page
.nr $c 1 \" current column number
.nr $f 1 1 \" footnote number
.nr $d 1 1 \" delayed text number
.nr _M 1 \" chapter mode is chapter
. ds lq ``
. ds rq ''
.em @z
.\" *** FOREIGN LETTERS AND SPECIAL CHARACTERS ***
.so \\*(||/chars.me
..
.lt 6.0i