[comp.text] v09i063: Troff macros for "ACM Transactions"

rs@uunet.UUCP (06/17/87)

Submitted by: dberry@cs.ucla.edu (Dan Berry)
Mod.sources: Volume 9, Issue 63
Archive-name: mx-macros

[  Slightly unusual -- it's not C code -- but no doubt many people will find
   this worthwhile, if not for use than for study.  In order to catch the
   right readership, I'm also cross-posting this to comp.text, and I don't
   intend to start a trend by doing that. --r$  ]

# This is a shell archive.  Remove anything before this line,
# then unpack it by saving it in a file and typing "sh file".
# Contents:  acm.tos/ READ_ME mX.doc mX.7 tmac.X tmac.Xrefs acm.tos/refmacros
#	acm.tos/skeleton
 
echo x - READ_ME
sed 's/^@//' > "READ_ME" <<'@//E*O*F READ_ME//'
Dear Colleagues

RE: Marc Moriconi's letter in SIGPLAN Notices concerning preparing
camera-ready copy for ACM Transactions in X with the help of LaTeX.

Those of you who prefer to use ditroff can do the same. In fact, by
using ditroff, you will more likely be able to typeset it with fonts
that appear more like those actually used by the ACM Transactions. One
can use fonts like these:  Roman, Italic, Bold, and Sans Serif, as well
as the constant width font in which this letter is done.

Some time ago Shaula Yemini and I published a paper in TOPLAS for which
I prepared a camera-ready copy (S. Yemini and D.M. Berry, "A Modular
Verifiable Exception Handling Mechanism", Transactions on Programming
Languages and Systems 7:2, pp. 214-243, 1985).  I used AT&T's ditroff
with the mX macros. The mX macro set was prepared UCLA for vanilla
troff about a decade ago by the then student Bruce Walker.  It is an
incredibly clean macro set, which seems not to have been affected by
all the changes to troff and ditroff. By measuring the articles in one
issue with a ruler, I came up with initial register settings,
substitute definitions for some macros, refer macros, and a paper
skeleton that looked fairly good. After receiving the editor's marked
copy which revealed actual sizes in normal typesetting units, picas,
points, etc.  I corrected these, to produce the camera-ready copy. We
prepared a follow-up paper, submitting it in nearly final form (only
the projected acceptance date and publication dates would have to be
changed!). This was done by using the previous paper as a skeleton.
Happily this paper was accepted, but we are still awaiting word of the
printing date.

As with Moriconi's experience, we proof with a laser printer, and then
when the paper is accepted and edited, we take the same file to a
commercial typesetter. As a matter of fact, the laser printer and the
typesetter we use talk PostScript\(tm (PostScript is a trademark of
Adobe Systems, Inc.) and can be sent the same PostScript output from
ditroff; the laser proof is an accurrate prediction of the typesetter's
output.

By this posting, I am making available the mX macro package together
with the paper skeleton. Using these would require changing your
paper's macro calls to use mX's. That is not too difficult, as one does
not do much more than start new sections, start new paragraphs, have
numbered lists, etc.  If, however, you prefer to use another macro
package, or are submitting to another journal, it would not be
difficult to come up with register settings for the macro package for
the journal's style.  A troff expert can do it in a day!

Daniel M. Berry         UCLA Computer Science Department
3531 Boelter Hall, UCLA, Los Angeles, CA 90024-1600, USA
dberry@cs.ucla.edu  ..!{sdcrdcf,ihnp4,cepu,trwspp,ucbvax}!ucla-cs!dberry

-----------------------
Below is a list of the files and directories contained herein. Install them
in the indicated place. The acm.tos files go with your home directory

mX.doc  user level description- should go in /usr/lib/tmac
mX.7  man page- should go in /usr/man/man7
tmac.X  macro package- should go in /usr/lib/tmac
tmac.Xrefs  standard reference macros- should go in /usr/lib/tmac


acm.tos	directory containing skeleton and refmacros for doing ACM
			Transactions on xxxxx
acm.tos/refmacros  
acm.tos/skeleton  
@//E*O*F READ_ME//
chmod u=rw,g=,o= READ_ME
 
echo mkdir - acm.tos
mkdir acm.tos
chmod u=rwx,g=,o= acm.tos
 
echo x - mX.doc
sed 's/^@//' > "mX.doc" <<'@//E*O*F mX.doc//'
			NROFF/TROFF  MACROS   by Bruce Walker



  These macros are compatible with version 7 troff/nroff and eqn/neqn.
  The macros have been designed to meet the needs of as many users as
  possible by having most macros controlled by user settable variables.
  The following scenario outlines how to take advantage of this:
	.so /usr/lib/tmac/tmac.X	\" bring in the macro file
     .nr tf 1.5i	\" make changes to variables
     .ds Te 'EVEN PAGE'TITLE'LINE'
	.ds To 'ODD PAGE'TITLE'LINE'
	.en	 	\" set up the environment so paging, etc. happens.
	continue with the text of the paper etc.


			USER MACROS

 .en  - set up the environment (ie. traps for page start and end).
	 - this should be called near the start of an nroff.
	  - "th" is the total space of header (in units);
	  - "bh" is space before and including header (in units)
	  - "tf" is the total space of footer (in units);
	  - "bf" is space before and including footer (in units);
 .pp	 - start a paragraph.
	 - spaces "sh" vertical; needs "sg" vertical; indents "sf" units;
 .sc	 - start a new chapter.
	 - begin a new page; can have 0 or 2 parameters; with 0 parameters,
	   the next two input lines are centered, after "sl" unit spaces;
	   With two parameters, the first can be either +,- or chapter #;
	   A + indicates that a one line title consisting of the second
	   parameter should be centered, after the appropriate spaces.
	   It should also appear as is in the Table of Contents.
	   A - indicates that the second parameter is to appear in the
	   Table of Contents but that no spacing or centering or printing
	   of a title is to be done.
	   With a chapter # as the first parameter, a
	   two line chapter title is centered after "sl" unit blank lines.
	   The first line is CHAPTER #;  The second is as given in the
	   second parameter.  The Table of Contents entry is the concat of
	   the two parameters.
 .sa  - start a new appendix.
	 - begin a new page and space down "sl" unit spaces.  There can be
	   0 or 2 parameters.  With 0 parameters the next two input lines
	   are centered.  With two parameters, the first is the appendix
	   name/number.  The second is the title.  A two line appendix title
	   is centered after "sl" unit blank lines.  The first line is
	   APPENDIX \\$1.  The second is \\$2, where \\$1 and \\$2 are the
	   two parameters to .sa.  The table of contents entry is
	   Appendix \\$1 \\$2 .............  page#
 .su	 - start a new subsection.
	 - "sa" unit spaces are left; "sm" units are needed; There can be
	   0, 1 or 2 parameters.  With zero parameters, the next input line
	   is underlined with .ul.  With one parameter, it is underlined and
	   put as is in the table of contents.  With two parameters, the
	   second parameter is a level number which is used to control the
	   indenting of the entry in the table of contents.
 .es	 - example start;
	 - space "si" vertical; save mode (fill/nofill); switch to nofill
      - indent "sj" units;
 .ee  - example end;
	 - space "sk" vertical; indent -"sj" units; restore fill mode if needed
 .l1	 - start a list;
	 - set the first tab to be the current indent + "sn" and 2 other
	 - tabs at 5m intervals; indent +"sn" units;
	 - There is an optional parameter.  If a parameter is given, the
	   list is automatically numbered in "format" which is given
	   as the parameter (1 is straight numbering; i is roman numerals;
	   a is for letters (see .af built in command in ref manual)).
 .e1	 - end list;
	 - break; indent -"sn" units; restore tabs to default;
 .le  - list entry; done before each list entry.
	  - space down "sp" units; temporarily indents -"so" units.
	  - If the list is being numbered automatically (see .l1), then the
	    number, followed by a dot, followed by a tab and set up so
	    next user's input will go on the same line (ie. a \c) is done.
 .fn  - start footnote;
	 - If the user wishes to number footnotes on a page by page basis,
	   use either \*N (for superscripting) or \*O (for [#]) at the
	   reference point and at the start of the reference.
 .ef  - end footnote text.
 .fs  - figure start.  Text up to .fe is printed in environment 2.
	 - If there is room on the current page, the figure will be printed
	   there.  Otherwise the page will be filled with subsequent text
	   and the figure will appear at the top of the next page.
 .fe  - figure end.  There is an optional parameter which is the entry
	   that will be put in the List of Figures.
 .fg  - full page figure.  There is an optional parameter which is the
	   entry that will be put in the List of Figures.  The page on
        which the full page figure would be put is omitted (to save
        troffing) but the page numbers are incremented accordingly.
        NOTE: Use of this does not work with multi-columning (see MC).
 .rb  - reference begin.
	 - set tabs to "se", "se"+5, "se"+10; save current indent;
	   go to spacing set in "sq"; indent to "se";
 .rf  - reference entry.
	 - space "sd" units; temporarily indent -"se" units; need "sc" units;
 .re  - refernce end.
   - reset indentation to that value saved at reference begin.
	   restore line spacing to it's previous value;
	   Restore tabs to default.
 .LL  - change line length and length of titles to the parameter given.
	 - This macro changes these lengths in all the environments.
 .MC  - Request to do multiple columns
	   This macro expects 4 parameters
	     - number of columns
	      - width of each column (units must be given).
	      - width of space between columns (units must be given).
	      - page offset of the whole thing (units must be given).
	 - NOTE: use of ".fg" does not work with multi-columning.
 .PS  - change the character point size to the parameter given.
	 - This macro changes the point size in all the environments.
 .RT  - reset tabs to standard nroff or troff.
 .EQ  - start an equation; save mode (fill/nofill); switch to nofill.
	 - 2 parameters: first is L,C, or I - for left justified,
	   centered or indented equation.  Second is the equation number.
      - if only 1 parameter, it is treated as an equation number unless
        it is L, C, or I.
 .EN  - end and equation; restore fill mode if necessary.
 .HS  - a macro which is called at the beginning of the header macro.
	   The user can redefine this. It is initialized to null.
 .HE  - a macro which is called at the end of the header macro.
	   The user can redefine this. It is initialized to null.
 .FS  - a macro which is called at the beginning of the footer macro.
	   The user can redefine this. It is initialized to null.
 .FE  - a macro which is called at the end of the footer macro.
	   The user can redefine this. It is initialized to null.


			HIDDEN MACROS

 .hd	 - header macro, executed at the top of each page (after .en done).
 .fo  - footer macro, executed at the bottom of each page or when
	   footnotes must start to print.
 .mf  - multiple column footer processing.
 .fx  - end of page trap which is hit if footnotes are printing.  It
	   saves excess footnotes in "fy".
 .xf	 - print footnotes macro; called by .fo if there are any to print.
	   This can trap to .fx.
 .fz  - save left over footnote for printing on a subsequent page.
	   This is called by .hd if there were left over footnote text.
 .Ff	 - print figure macro; called by .fo if there are any to print.
 .Fa,Fb,Fc,Fd,Fe,F0 - used in figure collection and printing.
 .T1,T2 - used in Table of Contents and List of Figure entry generation.
 .SC  - used by .sc to ensure that a new page is started.  It is a recursive
	   .bp.  A single .bp in .sc would be insufficient because it might
	   be used to get to a new page to print a figure.  Then the chapter
	   would not be on a new page.
 .ZZ  - Cleanup at end of processing. This is automatically called at
	   the end of processing.
	   This will dump any figures which have been diverted and are
	   waiting for the next page.  Also it will print the Table of
	   Contents and List of Figures if they are requested.
 .AB  - Abort and print error message.

 		REGISTERS USED OTHER THAN THOSE WHICH ARE USER SETTABLE

 t  : internal temporary used for page numbers.
 x  : counter- counts number of footnotes to be genned at bottom of page.
 y  : footer top - has negative of # u's from bottom of page at which
                   footer starts, includes space for footnotes
 z  : temporary variable used in footnote processing.
 w  : footnote counter usable by user to number his footnotes on each page
 c  : internal  -- column count for multiple columning
 z1 : internal  -- size of leftover footnote
 he : internal  -- flag to footer to tell that it is in a header.
 fa : internal  -- flag from footer to header to tell it to do new page.
 fg : internal  -- flag indicating that a figure is being printed.
 fn : internal  -- flag indicating that a footnote is being processed
 ex : internal  -- flag indicating that processing is in an example
 fs : internal  -- flag indicating that a figure is being processed.
 tt : internal  -- flag to indicate that a figure has caused a trap
 mx : internal  -- line number saved to go back to for multiple columning.
 cw,cs,co,cp: internal  -- used for multiple columnning.
 f0-f7 : internal  - used for figures.
 h1-h2 : internal  - used for headers and footers.
 l0-l9 : internal - used for lists
 t1 : internal  - used in reference macros to save status.
 FI : internal  - saves fill/nofill mode status in equations and examples
 dn : troff counter - counts # of lines of text in last diversion
 nl : troff counter - counts # of lines of text on current page
 .p : troff variable - contains current page length
 .t : troff variable - length to next trap
 .i : troff variable - current indent.
 .$ : troff variable - number of parameters to current macro.
 .z : troff variable - current diversion name
 %  : troff variable - page number
@//E*O*F mX.doc//
chmod u=rw,g=,o= mX.doc
 
echo x - mX.7
sed 's/^@//' > "mX.7" <<'@//E*O*F mX.7//'
@.hc %
@.TH MX L
@.SH NAME
mX \- macros for formatting documents
@.SH SYNOPSIS
@.B "nroff \-mX"
[ options ]
file ... 
@.br
@.B "troff \-mX"
[ options ]
file ... 
@.SH DESCRIPTION
This package of 
@.I nroff
and
@.I troff
macro definitions provides a canned formatting
facility for tech%nical papers in various formats.
When producing multi-column output on a terminal, filter
the output through
@.IR  col (1).
@.PP
The macro requests are defined below.
Many
@.I nroff
and
@.I troff
requests are unsafe in conjunction with
this package, however these requests may be used with
impunity.
@.nf
@.IP
@.ta \w'.cw n  'u
\&.bp	begin new page
\&.br	break output line here
\&.sp n	insert n spacing lines
\&.ls n	(line spacing) n=1 single, n=2 double space
\&.na	no alignment of right margin
\&.ce n	center next n lines
\&.ul n	underline next n lines
@.fi
@.PP
Output of the
@.I eqn,
@.I neqn,
@.I refer,
and
@.IR  tbl (1)
preprocessors
for equations and tables is acceptable as input.
@.SH FILES
/usr/lib/tmac/tmac.X
@.br
/usr/lib/tmac/mX/tmac.Xlong
@.br
/usr/lib/tmac/tmac.Xtras
@.br
/usr/lib/tmac/tmac.Xrefs
@.SH "SEE ALSO"
eqn(1), troff(1), refer(1), tbl(1)
@.br
@.I "A Beginner's Guide to Nroff and Troff and the mX Macro Package"
by G. A. Hornor
@.tr &.
@.SH REQUESTS 
@.PP
@.ta \w'.MC w x y z  'u +\w'Initial 'u +\w'Cause 'u
@.br
@.di x
			\ka
@.br
@.di
@.in \nau
@.ti0
Request	Initial	Cause	Explanation
@.ti0
	Value	Break
@.br
@.in \nau
@.ti0
\&.en	-	no	Set up the environment (i.e. traps
for page start and end). This should be called near the
start of an nroff/troff.
@.ti0
\&.pp	-	yes	Start a paragraph.
@.ti0
\&.sc \fIn x\fR	1	yes	Start a new chapter. \fIn\fR
can be a number (or any arbitrary string of characters) 
indicating the chapter ID after the word ``CHAPTER'', a `+' to omit
the chapter heading only, or `-' to omit both the chapter heading and
title \fIx\fR.
The table of contents is updated in all cases.
@.ti0
\&.cp \fIn x\fR	1	yes	Start a new autonumbered chapter. 
\fIn\fR is the chapter number (optional) and \fIx\fR is the
chapter title. Omiting \fIn\fR will cause chapters to be
automatically numbered.
@.ti0
\&.sa \fIn x\fR	1	yes	Start a new appendix.
\fIn\fR and \fIx\fR have the same meaning as for .sc.
@.ti0
\&.su \fIx n\fR	-	yes	Start a new subsection.
\fIn\fR is the (optional) level number of the subsection and \fIx\fR is
the title.
@.ti0
\&.ss \fIn x\fR	1	yes	Start a new autonumbered subsection
for a thesis or dissertation. \fIn\fR is the level number
and \fIx\fR is the title.
@.ti0
\&.se \fIn x\fR	1	yes	Start a new autonumbered subsection
for a paper. \fIn\fR is the level number and \fIx\fR is the
title.
@.ti0
\&.es	no	yes	Start of an example (in nofill
mode).
@.ti0
\&.ee	no	yes	End of an example (restores fill
mode).
@.ti0
\&.l1 \fIf\fR	null	yes	Start a list. \fIf\fR
determines how the lists are labeled: \fI1\fR is straight
numbering, \fIi\fR is roman numberals, \fIa\fR is for
letters.
@.ti0
\&.e1	no	yes	End a list.
@.ti0
\&.le	no	yes	Make an entry in a list.
@.ti0
\&.fn	no	no	Start a footnote. Footnotes can be
numbered by using either \\*N (for superscripting) or \\*O
(for [#]) at the reference point and at the start of the
footnote.
@.ti0
\&.ef	no	no	End a footnote.
@.ti0
\&.fs	no	no	Start a floating keep (a figure
usually).
@.ti0
\&.fe \fIx\fR	no	no	End a floating keep. \fIx\fR
is an optional title which will appear in the list of
figures.
@.ti0
\&.fg \fIx\fR	no	no	Full page figure. Leaves a blank
unnumbered page. \fIx\fR is an optional title which will
appear in the list of figures.
@.ti0
\&.rb	no	yes	Begin a list of references (as in a
bibliography).
@.ti0
\&.rf	no	yes	Enter a reference in a list of
references.
@.ti0
\&.re	no	yes	End a list of references.
@.ti0
\&.LL \fIn\fR	6.5i	yes	Change line length and length of
titles to the parameter given.
@.ti0
\&.MC \fIw x y z\fR	no	yes	Request for multiple columns.
\fIw\fR is the number of columns, \fIx\fR is the width of
each column (units must be given), \fIy\fR is the width of
space between colums (units must be given), and \fIz\fR is
the page offset (units must be given).
@.ti0
\&.PS \fIn\fR	10	no	Change the character point size to
the parameter given.
@.ti0
\&.RT	-	no	Reset tabs to standard nroff or
troff.
@.ti0
\&.EQ \fIx y\fR	-	no	Start a displayed equation.
\fIx\fR is either \fIL, C,\fR or \fII\fR for left-justified,
centered, or indented equation. \fIy\fR is the equation
number. If only one parameter is given, it is treated as the
equation number unless it is \fIL, C,\fR or \fII\fR.
@.ti0
\&.EN	-	no	End a displayed equation.
@.ti0
\&.HS	-	no	A null macro which the user can
redefine. It is called at the beginning of the page header
macro.
@.ti0
\&.HE	-	no	A null macro which the user can
redefine. It is called at the end of the page header macro.
@.ti0
\&.FS	-	no	A null macro which the user can
redefine. It is called at the beginning of the page footer
macro.
@.ti0
\&.FE	-	no	A null macro which the user can
redefine. It is called at the end of the page footer macro.
@//E*O*F mX.7//
chmod u=rw,g=,o= mX.7
 
echo x - tmac.X
sed 's/^@//' > "tmac.X" <<'@//E*O*F tmac.X//'
@.\"	NROFF/TROFF MACROS	by Bruce Walker
@.\"
@.\" Please refer to /usr/lib/tmac/mX.doc and man mX for documentation.
@.deen
@.wh0 hd
@.wh-\\n(tfu fo
@.chfo 32000
@.wh-\\n(tfu fx
@.chfo -\\n(tfu
@.nrx 0 1
@.nry 0-\\n(tfu
@.emZZ
@.nrw 1
@.nrhe0
@.nrfa0
@..
@.depp
@.br
@.ne\\n(sgv+\\n(shv
@.sp\\n(shv
@.ti+\\n(sfu
@..
@.desc
@.br
@.rs
@.SC
@.sv\\n(slu
@.ie\\n(.$\{\
@.if!\\n(.$-1 .AB"1 and not 2 parameters were sent to .sc"
@.ie"\\$1"+"\{.if \\n(ft .T1 "\\$2" "\\n%" "0" "1"
@.ce1
\\$2\}
@.el\{\
@.ie"\\$1"-"\{.if \\n(ft .T1 "\\$2" "\\n%" "0" "1"\}
@.el\{\
@.if\\n(ft .T1 "\\$1 \\$2" "\\n%" "0" "1"
@.ce2
\\*(CH\\$1
\\$2\}\}\}
@.el.ce 2
@..
@.desa
@.br
@.rs
@.SC
@.sv\\n(slu
@.ie\\n(.$\{\
@.if!\\n(.$-1 .AB"1 and not 2 parameters were sent to .sa"
@.if\\n(ft\{.T1 "\\*(AP\\$1 \\$2" "\\n%" "0" "1"\}
@.ce2
\\*(AX\\$1
\\$2\}
@.el.ce 2
@..
@.desu
@.br
@.ne\\n(smu+\\n(sau
@.sp\\n(sau
@.ie\\n(.$\{\
@.ie\\n(.$-1\{\
@.if\\n(ft .T1 "\\$1" "\\n%" "\\$2" "0"\}
@.el.if \\n(ft .T1 "\\$1" "\\n%" "0" "0"
@.ft\\n(fv
\\$1\fP\}
@.el.ul 1
@..
@.dees
@.ie\\n(ex .AB"Nesting examples is a no no"
@.el.nr ex 1
@.sp\\n(siv
@.nrFI\\n(.u
@.nf
@.in+\\n(sju
@..
@.deee
@.ie!\\n(ex .AB"Ending an example (.ee) without starting an example"
@.el.nr ex 0
@.sp\\n(skv
@.in-\\n(sju
@.if\\n(FI .fi
@..
@.del1
@.if\\n+(l0=4 .AB"Nesting of lists too deep"
@.ta\\n(sou +5m +5m
@.in+\\n(snu
@.afl1 1
@.nrl3\\n(l2
@.nrl2\\n(l1
@.nrl9\\n(l8
@.nrl8\\n(l7
@.rnl5 l6
@.rnl4 l5
@.nrl10 1
@.nrl70
@.dsl4 "1
@.if\\n(.$\{\
@.dsl4 "\\$1
@.nrl71\}
@.afl1 \\*(l4
@..
@.dee1
@.br
@.in-\\n(snu
@.if\\n-(l0<0 .AB"Ending more lists than started"
@.ie\\n(l0=0\{\
@.RT\}
@.el\{\
@.nrl1\\n(l2 1
@.nrl2\\n(l3 1
@.nrl7\\n(l8
@.nrl8\\n(l9
@.rnl5 l4
@.rnl6 l5
@.afl1 \\*(l4\}
@..
@.dele
@.sp\\n(spu
@.ti-\\n(sou
@.if\\n(l7=1\{\
\\n+(l1.\t\c\}
@..
@.defn
@.ie\\nx .ne \\n(rcv-2v
@.el.ne \\n(rcv
@.if\\n(fn .AB"Nesting of footnotes is a no no"
@.nrfn1
@.daFN
@.ev1
@.ie\\n+x=1\{\
\l'1i'
@.br\}
@.el.sp \\n(srv
@.fi
@.ad
@..
@.deef
@.if!\\n(fn .AB"Ending a footnote (.ef) when one was not started"
@.nrfn0
@.br
@.nrz \\n(.v
@.ev
@.di
@.nry -\\n(dn
@.if(\\n(nlu+1v)>(\\n(.pu+\\nyu-1v)\{\
@.nry (2v+\\n(nlu-\\n(.pu)u\}
@.chfo (\\nyu-1v)
@.nrw +1
@..
@.defs
@.if\\n(fs .AB"Nesting of figures is a no no"
@.if\\n(f7>0 .AB"Too many figures diverted near page \\n%"
@.nrf0+1
@.nrfs1
@.daF2
@.ev2
@.dt\\n(.pu-\\n(thu-\\n(tfu Fc
@.nrtt0
@..
@.defe
@.ie!\\n(fs .AB"Ending a figure (.fe) which was not started"
@.el.nr fs 0
@.br
@.ie\\n(tt\{\
@.ev
@.di
@.if\\n(dn>0\{\
@.ie\\n(f0=3 .AB"Too many figures diverted near page \\n%"
@.el\{\
@.tmNROFF/TROFF Warning: A figure after page \\n% was truncated.\}\}\}
@.el\{\
@.ev
@.da
@.nrf2+\\n(dnu\}
@.ie\\n(.$ .Fb "\\$1"
@.el\{\
@.ie\\n(f0+\\n(f5>1 .Fd " " "0"
@.el.Fe " " "0"\}
@..
@.defg
@.nrt 2
@.ie\\n(f7>0 .nr f7 +1 1
@.el\{\
@.ie\\n(f0>1 .nr f7 1 1
@.el\{\
@.nrt 1
@.ie\\n(f6>0 .nr f6 +1 1
@.el\{\
@.ie\\n(f0=1 .nr f6 1 1
@.el\{\
@.nrf5+1 1
@.nrt 0\}\}\}\}
@.nrt +\\n%+\\n(f5+\\n(f6+\\n(f7
@.if\\n(ff+\\n(.$-1 .F0 "\\$1" "\\nt"
@..
@.derb
@.ta\\n(sem +5m +5m
@.nrt1\\n(.i
@.ls\\n(sq
@.in\\n(sem
@..
@.derf
@.br
@.ne\\n(scu+\\n(sdu
@.sp\\n(sdu
@.ti-\\n(sem
@..
@.dere
@.br
@.ls
@.in\\n(t1u
@.RT
@..
@.deLL
@.if!\\n(.$ .AB"Called LL with no parameter"
@.ev2
@.lt\\$1
@.ll\\$1
@.ev
@.ev2
@.lt\\$1
@.ll\\$1
@.ev
@.ev1
@.lt\\$1
@.ll\\$1
@.ev
@.ev0
@.lt\\$1
@.ll\\$1
@.ev
@..
@.deMC
@.if\\n(.$<4 .AB"Called MC with less than 4 parameters"
@.nrcn\\$1
@.nrcw\\$2
@.nrcs\\$3
@.nrco\\$4
@.po\\n(cou
@.LL\\$2
@.nrc 1 1
@.mkmx
@..
@.dePS
@.ev2
@.ps\\$1
@.ev
@.ev2
@.ps\\$1
@.ev
@.ev1
@.ps\\$1
@.ev
@.ev0
@.ps\\$1
@.ev
@..
@.deVS
@.ev2
@.vs\\$1
@.ev
@.ev2
@.vs\\$1
@.ev
@.ev1
@.vs\\$1
@.ev
@.ev0
@.vs\\$1
@.ev
@..
@.deRT
@.ien .ta .8i +.8i +.8i +.8i +.8i +.8i +.8i +.8i +.8i +.8i
@.el.ta .5i +.5i +.5i +.5i +.5i +.5i +.5i +.5i +.5i +.5i
@..
@.deEQ
@.br
@.ne2.5
@.ift .sp .5
@.ifn .sp 1P
@.nrFI\\n(.u
@.nf
@.ce
@.dsEL \\$1
@.if\\n(.$-1 .ds EL \\$2
@.nrLE\\n(.$
@.ie"\\$1"L"\{\
@.ce0
@.nrLE-1\}
@.el\{\
@.ie"\\$1"C" .nr LE -1
@.el\{\
@.if"\\$1"I"\{\
@.ce0
@.ti+10n
@.nrLE-1\}\}\}
@..
@.deEN
@.ce0
@.lt\\n(.lu
@.if\\n(LE\{\
@.ien\{\
@.sp-1
@.tl'''\\*(EL'\}
@.el\{\
@.sp-1-\\n(.au
@.tl'''\\*(EL'
@.sp\\n(.au\}\}
@.if\\n(FI .fi
@.ifn .sp 1P
@.ift .sp 0.5
@..
@.deHS
@..
@.deHE
@..
@.deFS
@..
@.deFE
@..
@.dehd
@.HS
@.nrhe+1
@.ie\\n(cn>1\{\
@.ie\\nc>\\n(cn\{\
'sp\\n(bhu-1v
@.lt(\\n(cn*\\n(cwu)u+(\\n(csu*(\\n(cn-1))u
@.iee .tl \\*(Te
@.el.tl \\*(To
'sp|\\n(thu
@.nrc 1 1
@.mkmx\}
@.el\{\
@.po+\\n(cwu+\\n(csu
'sp|\\n(mxu\}\}
@.el\{\
@.if\\n(f5\{\
@.nr% +\\n(f5
@.nrf50 1\}
'sp\\n(bhu-1v
@.iee .tl \\*(Te
@.el.tl \\*(To
'sp|\\n(thu\}
@.chfx -\\n(tfu
@.chfo -\\n(tfu
@.if\\n(z1 .fz
@.chfo -\\n(tfu
@.if!\\n(f0 .ns
@.if\\n(f0\{\
@.nrf5\\n(f6
@.nrf6\\n(f7
@.nrf70
@.Ff
@.ie\\n(fa\{\
@.nrfa0
@.nrh21\}
@.el\{\
@.ie\\nx\{.if (\\n(nlu+5v)>(\\n(.p+\\nyu) .nr h1 1\}
@.el\{.if \\n(.tu<6v  .nr h1 1\}\}\}
@.if\\n(h1=1\{\
@.nrh10
'bp\}
@.if\\n(h2=1\{\
@.nrh20
@.fo\}
@.chfo (\\nyu-1v)
@.nrhe-1
@.HE
@..
@.defo
@.FS
@.if!\\n(he\{.if \\nx .xf\}
@.nrfa0
@.ie\\n(fg\{\
@.nrfa1
@.diGA\}
@.el\{\
@.ie\\n(cn<2\{\
'chfo 32000
'chfx 32000
'sp(\\n(.pu-\\n(nlu-\\n(tfu+\\n(bfu-1v)u
@.iee .tl \\*(Be
@.el.tl \\*(Bo
'bp\}
@.el.mf\}
@.FE
@..
@.demf
@.ie\\n+c<=\\n(cn .hd
@.el\{\
@.po\\n(cou
@.lt(\\n(cn*\\n(cwu)u+(\\n(csu*(\\n(cn-1))u
'chfo 32000
'chfx 32000
'sp(\\n(.pu-\\n(nlu-\\n(tfu+\\n(bfu-1v)u
@.iee .tl \\*(Be
@.el.tl \\*(Bo
'bp\}
@..
@.defx
@.if\\nx .di fy
@..
@.defz
@.nrx 0 1
@.nry 0-\\n(tfu
@.nrz10
@.fn
@.nf
@.fy
@.fi
@.ef
@.nrw 1 1
@..
@.dexf
@.ev1
@.nf
@.sp(\\n(.pu+\\nyu-\\n(nlu)u
@.FN
@.rmFN
@.ie"\\n(.z"fy"\{\
@.di
@.nrz1\\n(dn\}
@.el.nr z1 0
@.nrx 0 1
@.nry 0-\\n(tfu
@.ev
@.nrw 1 1
@..
@.deFf
@.nrf10
@.ev2
@.nf
@.nrfg1
@.F1
@.nrfg0
@.if\\n(fa .di
@.br
@.ev
@.rmF1
@.if\\n(f0-1 .Fa
@.nrf0-1
@..
@.deFa
@.daF1
@.ev2
@.nf
@.F2
@.br
@.ev
@.da
@.nrf1+\\n(f2
@.nrf20
@.rmF2
@..
@.deFb
@.ie\\n(f0+\\n(f5>1\{\
@.Fd"\\$1" "1"\}
@.el\{\
@.Fe"\\$1" "1"\}
@..
@.deFc
@.ev
@.di
@.nrf2\\n(dnu
@.nrtt1
@.diGA
@.ev2
@..
@.deFd
@.ie\\n(f0=3\{\
@.nrf02
@.nrt \\n%+\\n(f5+\\n(f6+2\}
@.el\{\
@.nrf02
@.nrt \\n%+\\n(f5+\\n(f6+2
@.if\\n(f6=0\{\
@.if(\\n(.pu-\\n(f1u-\\n(f2u-\\n(thu-\\n(tfu)>=0\{\
@.nrf0-1
@.nrt \\n%+\\n(f5+1
@.Fa\}\}\}
@.if'\\n(ff\\$2'11' .F0 "\\$1" "\\nt"
@..
@.deFe
@.rmF1
@.nrf10
@.Fa
@.nrt \\n%+\\n(f5+1 1
@.ie\\n(f1+2v>\\n(.tu\{.if '\\$2\\n(ff'11' .F0 "\\$1" "\\nt"\}
@.el\{\
@.if'\\$2\\n(ff'11'\{\
@.F0"\\$1" "\\n-t"\}
@.br
@.Ff
@.if\\n(fa\{\
@.nrfa0
@.fo\}\}
@..
@.deF0
@.daFP
@.ev2
@.br
\t
@.T2"\\$1" "\\$2" "0"
@.br
@.RT
@.ev
@.da
@..
@.deT1
@.daTP
@.ev2
@.br
@.if'\\$4'1' .sp 1v
@.T2"\\$1" "\\$2" "\\$3"
@.br
@.RT
@.ev
@.da
@..
@.deT2
@.nrFI\\n(.u
@.nrAD\\n(.j
@.if\\$3>0 .in +(4n*\\$3u)u
@.ie\\w'\\$1'u-\\n(.lu+\\n(.iu+3m\{\
@.if\\$3>0 .in +4n
@.ta(\\n(.lu-\\n(.iu-3m)u +3mR
@.if\\$3>0 .ti -4n
@.fi
@.na
@.ll-3m
\\$1
@.nf
@.sp-1
@.ll+3m
@.dsPD \\h'\\n(.nu'\}
@.el\{\
@.ta(\\n(.lu-\\n(.iu-3m)u +3mR
@.dsPD \\$1\}
@.ie\\n(.lu-\\n(.iu-\\w'\\*(PD'u-3n-3m .as PD "  \a\t\\$2
@.el.as PD \\h'\\n(.lu-\\n(.iu-\\w'\\*(PD'u-3m+1u'\t\\$2
\\*(PD
@.if\\$3>0 .in -(4n*\\$3u)u
@.if\\$3>0 .in -4n
@.if\\n(FI .fi
@.ad\\n(.j
@..
@.deSC
@.if\\n(nlu>\\n(thu\{.bp
@.SC\}
@..
@.deZZ
@.br
\\c
@.if\\n(f0 'bp
@.rs
@.ie!"\\*(TL\\*(Te"''''''''"\{\
@.dsTe ''''
@.dsTo ''''
@.if\\n(ff+\\n(ft>0 'bp\}
@.el\{\
@.if\\n(nlu>\\n(thu\{\
@.if\\n(ff+\\n(ft>0 'bp\}\}
@.if\\n(ft\{.af % i
@.nr% \\n(su
@.ev2
@.ce
\\*(TC
@.sp\\n(rau
@.ta\\n(.luR
\t\\*(PG
@.sp\\n(rbu
@.TP
@.ev\}
@.if\\n(ff\{.af % i
'bp+1
@.ev2
@.ce
\\*(LF
@.sp\\n(rau
@.ta\\n(.luR
\t\\*(PG
@.sp\\n(rbu
@.FP\}
@.if\\n(cn>1\{\
@.nrc \\n(cn
@.bp\}
@..
@.deAB
@.abNROFF/TROFF aborted near input line \\n(.c: \\$1.
@..
@.ig
@.EQ
delim $$
ndefine =del ` "\z=\z^\v'-.25v'-\v'.25v'" `
tdefine =del ` "\v'.3m'\z=\v'-.6m'\h'.3m'\s-1\(*D\s+1\v'.3m'" `
ndefine cdot ` "\u.\d" `
ndefine oppA ` "V-" `
@.EN
@..
@.ev2
'nf
@.lt6.5i
@.ll6.5i
@.ls1
@.ps10
@.nh
@.ev
@.ev1
@.lt6.5i
@.ll6.5i
@.ls1
@.ps10
'nh
@.ev
@.ev0
@.ls2
@.ll6.5i
@.lt6.5i
@.ps10
@.ev
@.pl11i
@.tr~
@.nrth1i
@.nrbh7i/12u
@.nrtf19i/16u
@.nrbf10i/16u
@.nrra0v
@.nrrb2v
@.nrrc5u
@.nrsq1u
@.nrsc0.5i
@.nrsd1i/6u
@.nrsf0.5i
@.nrsg3u
@.nrsh1u
@.nrsi1u
@.nrsj0.5i
@.nrsk2u
@.nrsl1.0i
@.nrsn0.5i
@.nrso0.5i
@.nrsp1i/6u
@.nrsr1u
@.nrsu3
@.dsTe \\*(TL
@.dsTo \\*(TL
@.dsBe \\*(BL
@.dsBo \\*(BL
@.dsBL ''''
@.dsTL ''''
@.dsCH "CHAPTER 
@.dsAP "Appendix 
@.dsAX "APPENDIX 
@.dsTC "Table of Contents
@.dsLF "List of Figures
@.dsPG "page
@.dsN \\s-3\\u\\nw\\d\\x'-0.5m'\\s+3
@.dsO [\\nw]
@.nrx 0 1
@.nrff0
@.nrft0
@.nrcn1
@.nrf00
@.nrf10
@.nrf20
@.nrf50
@.nrf60
@.nrf70
@.nrl00 1
@.ien\{\
@.nrsa2v
@.nrse10
@.nrsm3i/2u
@.nrfv2\}
@.el\{\
@.nrsa1v
@.nrse8u
@.nrsm1i
@.nrfv3\}
@//E*O*F tmac.X//
chmod u=rw,g=,o= tmac.X
 
echo x - tmac.Xrefs
sed 's/^@//' > "tmac.Xrefs" <<'@//E*O*F tmac.Xrefs//'
@.\" REFER macros .... citations
@.de []
@.][ \\$1
@..
@.de ][
@.if \\$1>5 .tm Bad arg to []
@.if !"\\*([O"" .if !\\n([O .as [O .
@.[\\$1
@..
@.ds RB ".sc + References
@.ds [. " [
@.ds .] ]
@.if n .ds [o ""
@.if n .ds [c ""
@.if t .ds [o ``
@.if t .ds [c ''
@.\" the next lines deal with the problem of .[1] or [1].
@.\" refer will write "linexxx\*(<.[1]\*(>.
@.\" and either "<." or ">." should produce the .;
@.\" similarly for ,
@.ds >. .
@.ds >, ,
@.de [5 \" tm style
\\*([A, \\f2\\*([T\\f1,
@.ie \\n(TN \\*([M.
@.el UCLA Computer Science Department internal memorandum (\\*([D).
@.br
@..
@.de [0 \" other
@.nr [: 0
@.if !"\\*([A"" \{.nr [: 1
\\*([A\c\}
@.if !"\\*([T"" \{.if \\n([:>0 ,
@.nr [: 1
\\f2\\*([T\\f1\c\}
@.if !"\\*([D"" \{.if \\n([:>0 ,
@.nr [: 1
\\*([D\c\}
@.if \\n([:>0 \&.
@.if !"\\*([O"" \\*([O
@.br
@..
@.de [1 \" journal article
@.if !"\\*([A"" \\*([A,
@.if !"\\*([T"" \\*([o\\*([T,\\*([c
\\f2\\*([J\\f1\c
@.if !"\\*([V"" .if n \& Vol.\&\c
@.if !"\\*([V"" \& \\f3\\*([V\\f1\c
@.if !"\\*([N"" (\\*([N)\c
@.if !"\\*([P"" \{\
@.ie \\n([P>0 , pp.\c
@.el , p.\c
\\*([P\c\}
@.if !"\\*([I"" .if "\\*([R"" , \\*([I\c
@.if !"\\*([D"" \& (\\*([D)\c
\&.
@.if !"\\*([O"" \\*([O
@.br
@..
@.de [2 \" book
@.if !"\\*([A"" \\*([A,
@.if !"\\*([T"" \\f2\\*([T,\\f1
\\*([I\c
@.if !"\\*([C"" , \\*([C\c
@.if !"\\*([D"" \& (\\*([D)\c
\&.
@.if !"\\*([G"" Gov't. ordering no. \\*([G.
@.if !"\\*([O"" \\*([O
@.br
@..
@.de [4 \" report
@.if !"\\*([A"" \\*([A,
\\*([o\\*([T,\\*([c
\\*([R\c
@.if !"\\*([G"" \& (\\*([G)\c
@.if !"\\*([I"" ,  \\*([I\c
@.if !"\\*([C"" ,  \\*([C\c
@.if !"\\*([D"" \& (\\*([D)\c
\&.
@.if !"\\*([O"" \\*([O
@.br
@..
@.de [3 \" article in book
@.if !"\\*([A"" \\*([A,
@.if !"\\*([T"" \\*([o\\*([T,\\*([c
@.if !"\\*([P"" pp. \\*([P
in \\f2\\*([B\\f1\c
@.if !"\\*([E"" , ed. \\*([E\c
@.if !"\\*([I"" , \\*([I\c
@.if !"\\*([C"" , \\*([C\c
@.if !"\\*([D"" \& (\\*([D)\c
\&.
@.if !"\\*([O"" \\*([O
@.br
@..
@.\" define warning that mX does not support references as footnotes
@.de ]-
@.AB"Can't do references as footnotes. Use '-e' or '-s' option with 'refer'
@..
@.de ]<
@.\" define the real ]- next-reference macro
@. de ]-
@. rm [V [P [A [T
@. rm [N [C [B [O
@. rm [R [I [E [D
@. rf
[\\\\*([F]	\c
\\..
@.\"now start the reference subsection
\\*(RB
@.rb
@..
@.de ]>
@.re
@..
@.de ]]
this is never
executed
and just
uses up an end-of-file
bug.
@..
@//E*O*F tmac.Xrefs//
chmod u=rw,g=,o= tmac.Xrefs
 
echo x - acm.tos/refmacros
sed 's/^@//' > "acm.tos/refmacros" <<'@//E*O*F acm.tos/refmacros//'
@.\" REFER macros .... citations
@.nr se 8u \" space to indent in emms
@.de []
@.][ \\$1
@..
@.de ][
@.if \\$1>5 .tm Bad arg to []
@.if !"\\*([O"" .if !\\n([O .as [O .
@.[\\$1
@..
@.ds RB ".RE
@.ds [. " [
@.ds .] ]
@.if n .ds [o ""
@.if n .ds [c ""
@.if t .ds [o \(lq
@.if t .ds [c \(rq
@.\" the next lines deal with the problem of .[1] or [1].
@.\" refer will write "linexxx\*(<.[1]\*(>.
@.\" and either "<." or ">." should produce the .;
@.\" similarly for ,
@.ds >. .
@.ds >, ,
@.de [5 \" tm style
\\*([A  \\f2\\*([T\\f1.
@.ie \\n(TN \\*([M.
@.el UCLA Computer Science Department internal memorandum (\\*([D).
@.br
@..
@.de [0 \" other
@.nr [: 0
@.if !"\\*([A"" \{.nr [: 1
\\*([A\c\}
@.if !"\\*([T"" \{.if \\n([:>0 \&
@.nr [: 1
\\f2\\*([T\\f1\c\}
@.if !"\\*([D"" \{.if \\n([:>0 .
@.nr [: 1
\\*([D\c\}
@.if \\n([:>0 \&.
@.if !"\\*([O"" \\*([O
@.br
@..
@.de [1 \" journal article
@.if !"\\*([A"" \\*([A
@.if !"\\*([T"" \\*([o\\*([T.\\*([c
\\f2\\*([J\\f1\c
@.if !"\\*([V"" .if n \& Vol.\&\c
@.if !"\\*([V"" \& \\f2\\*([V\\f1,\c
@.if !"\\*([N"" \& \\*([N\c
@.if !"\\*([I"" .if "\\*([R"" , \\*([I\c
@.if !"\\*([D"" \& (\\*([D)\c
@.if !"\\*([P"" \{\
@.ie \\n([P>0 , pp. \c
@.el , p.\c
\\*([P\c\}
\&.
@.if !"\\*([O"" \\*([O
@.br
@..
@.de [2 \" book
@.if !"\\*([A"" \\*([A
@.if !"\\*([T"" \\f2\\*([T.\\f1
\\*([I\c
@.if !"\\*([C"" , \\*([C\c
@.if !"\\*([D"" \& (\\*([D)\c
\&.
@.if !"\\*([G"" Gov't. ordering no. \\*([G.
@.if !"\\*([O"" \\*([O
@.br
@..
@.de [4 \" report
@.if !"\\*([A"" \\*([A
\\*([o\\*([T.\\*([c
\\*([R\c
@.if !"\\*([G"" \& (\\*([G)\c
@.if !"\\*([I"" ,  \\*([I\c
@.if !"\\*([C"" ,  \\*([C\c
@.if !"\\*([D"" \& (\\*([D)\c
\&.
@.if !"\\*([O"" \\*([O
@.br
@..
@.de [3 \" article in book
@.if !"\\*([A"" \\*([A
@.if !"\\*([T"" \\*([o\\*([T.\\*([c
in \\f2\\*([B\\f1\c
@.if !"\\*([E"" , ed. \\*([E\c
@.if !"\\*([I"" , \\*([I\c
@.if !"\\*([C"" , \\*([C\c
@.if !"\\*([D"" \& (\\*([D)\c
@.if !"\\*([P"" \{\
@.ie \\n([P>0 , pp. \c
@.el , p. \c
\\*([P\c\}
\&.
@.if !"\\*([O"" \\*([O
@.br
@..
@.de [2 \" book
@.if !"\\*([A"" \\*([A
@.if !"\\*([T"" \\f2\\*([T.\\f1
\\*([I\c
@.if !"\\*([C"" , \\*([C\c
@.if !"\\*([D"" \& (\\*([D)\c
\&.
@.if !"\\*([G"" Gov't. ordering no. \\*([G.
@.if !"\\*([O"" \\*([O
@.br
@..
@.de [4 \" report
@.if !"\\*([A"" \\*([A
\\*([o\\*([T.\\*([c
\\*([R\c
@.if !"\\*([G"" \& (\\*([G)\c
@.if !"\\*([I"" ,  \\*([I\c
@.if !"\\*([C"" ,  \\*([C\c
@.if !"\\*([D"" \& (\\*([D)\c
\&.
@.if !"\\*([O"" \\*([O
@.br
@..
@.de [3 \" article in book
@.if !"\\*([A"" \\*([A
@.if !"\\*([T"" \\*([o\\*([T.\\*([c
in \\f2\\*([B\\f1\c
\&.
@.if !"\\*([O"" \\*([O
@.br
@..
@.\" define warning that mX does not support references as footnotes
@.de ]-
@.AB"Can't do references as footnotes. Use '-e' or '-s' option with 'refer'
@..
@.de ]<
@.\" define the real ]- next-reference macro
@. de ]-
@. rm [V [P [A [T
@. rm [N [C [B [O
@. rm [R [I [E [D
@. rf
\\\\*([F.	\c
\\..
@.\"now start the reference subsection
\\*(RB
@.rb
@..
@.de ]>
@.re
@..
@.de ]]
this is never
executed
and just
uses up an end-of-file
bug.
@..
@//E*O*F acm.tos/refmacros//
chmod u=rw,g=,o= acm.tos/refmacros
 
echo x - acm.tos/skeleton
sed 's/^@//' > "acm.tos/skeleton" <<'@//E*O*F acm.tos/skeleton//'
@.\" run with:
@.\"	refer -a -cA -e -n -p /u/users.own/refsidx -sADT paper > paper.ref
@.\"	soelim paper.ref|pic|tbl|eqn |troff -mX
@.\"
@.en
@.hy 14
@.LL 5i
@.pl 10i
@.so refmacros \" must be so'd so refer does not get to trip over its own macros
@.\" redefine .le and .e1 macros for list items and end of list
@.dele
@.sp\\n(spu
@.ti-\\n(sou
@.if\\n(l7=1\{\
\\n+(l1.\t\c\}
@..
@.dee1
@.br
@.in-\\n(snu
@.if\\n-(l0<0 .AB"Ending more lists than started"
@.ie\\n(l0=0\{\
@.RT\}
@.el\{\
@.nrl1\\n(l2 1
@.nrl2\\n(l3 1
@.nrl7\\n(l8
@.nrl8\\n(l9
@.rnl5 l4
@.rnl6 l5
@.afl1 \\*(l4\}
@.sp\\n(spu
@..
@.\" redefine start and end example macros .es & .ee
@.dees
@.ie\\n(ex .AB"Nesting examples is a no no"
@.el.nr ex 1
@.sp\\n(siv
@.nrFI\\n(.u
@.nf
@.ll-\\n(sju
@.in+\\n(sju
@..
@.deee
@.ie!\\n(ex .AB"Ending an example (.ee) without starting an example"
@.el.nr ex 0
@.sp\\n(skv
@.in-\\n(sju
@.ll+\\n(sju
@.if\\n(FI .fi
@..
@.\" redefine .RT to restore back to a smaller tabbing distance
@.deRT
@.ien .ta .3i +.3i +.3i +.3i +.3i +.3i +.3i +.3i +.3i +.3i
@.el.ta .25i +.25i +.25i +.25i +.25i +.25i +.25i +.25i +.25i +.25i
@..
@.\" then do that tabbing
@.RT
@.\" now set a bunch of registers
@.nr si 1u \" # of spaces used to start an example (used as v).
@.nr se 4u \" # of spaces to indent for a reference (used as ems).
@.nr sj 0.25i \" space to indent for an example (used as u);
@.nr sk 1u \" # of spaces left at the end of an example (used as v);
@.nr sf .125i
@.nr sg 2u
@.nr sr 0u
@.nr sm 1i
@.nr sh 0u
@.nr sd 0u
@.nr sn .25i
@.nr so .25i
@.nr sp 0u
@.de rb
@.ta .1875i +5m +5m
@.nr t1 \\n(.i
@.ls \\n(sq
@.in .1875i
@..
@.hw TOPLAS
@.ds To ''\f7\h'2i'\s8Title\h'.25i'\u.\d\h'.25i''%\s0\fP'
@.ds Te '\f7\s8%'\h'.25i'\u.\d\h'.25i'A. Uthor1 and A. U. Thor2\h'2.625i'\s0\fP''
@.ds BL ''%''
@.\" redefine some footnote stuff to match Transactions format
@.de(n
@.ie\\nx .ne \\n(rcv-2v
@.el.ne \\n(rcv
@.if\\n(fn .AB"Nesting of footnotes is a no no"
@.nrfn1
@.daFN
@.ev1
@.ie\\n+x=1\{\
@.sp 2p
\s-2\l'5i\(ul'\s+2
@.sp 2p\}
@.el.sp \\n(srv
@.fi
@.ad
@..
@.defn
@.ie\\nx .ne \\n(rcv-2v
@.el.ne \\n(rcv
@.if\\n(fn .AB"Nesting of footnotes is a no no"
@.nrfn1
@.daFN
@.ev1
@.ie\\n+x=1\{\
@.sp 10p
\s-2\l'.67i\(ul'\s+2
@.br\}
@.el.sp \\n(srv
@.fi
@.ad
@..
@.\" redefine start of section - to be used for 2 or higher level section
@.de su
@.ne 3v
@.sp 10p
\&\f7\\$1\fP
@..
@.\" define start of major section - to be used for level 1 section
@.de SU
@.ne 3v
@.sp 12p
\&\f7\\$1\fP
@..
@.\" for first paragraph in section
@.de PP
@.sp 4p
@..
@.de sc
@.sp 6p
\\h'.25i'\f1\\$1\ \ \ \f2\\$2\f1\\h'1n'\\c
@..
@.ig
@.\" some useful eqn defines
@.EQ
define circleplus % "\(a+" %
define bigleft % "\f1\s+4(\s0\fP" %
define bigright % "\f2\s+4)\s0\fP" %
define lessthan % {roman "<"} %
define greaterthan % {roman ">"} %
define leftbrace % {roman "{"} %
define rightbrace % {roman "}"} %
define fatleftbrace % {bold "{"} %
define fatrightbrace % {bold "}"} %
define member % "\(mo" %
define identical % "\(==" %
define equiv % "\(==" %
define implies % "\(sp" %
define orsign % "\(lo" %
define andsign % "\(la" %
define oppA % "\(fa" %
define oppE % "\(te" %
define supset % "\(sp" %
define !supset % "\(ip" %
@.EN
@..
@.\" now we begin the actual paper
@.ps 18
@.na
@.nh
@.vs 20
@.ft 7
@.ls 1
Title
@.sp
@.ad
@.hy 14
@.ps 10
@.vs 10
ARNOLD UTHOR
@.sp 4p
Somewhere
@.sp
and
@.sp
ARTHOR U. THOR
@.sp 4p
Nowhere
@.br
@.(n
@.ps 8
@.vs 10
@.ft 1
This research was supported in part by the author's kids.
@.br
A preliminary report of this work appeared in the local garbage dump.
@.br
Authors' Addresses:
A. Uthor, Somewhere, Rainbow City, Garden State ZIP, U.S.A.;
A. U. Thor, Nowhere, Fun City, State of Imagination, Neverland
@.br
Permission to copy without fee all or part of this material is granted
provided that the copies are not made or distributed for direct commercial
advantage, the ACM copyright notice and the title of the publication and
its date appear, and notice is given that copying is by permission of the
Association for Computing Machinery. To copy otherwise, or to republish,
requires a fee and/or specific permission.
@.br
\(co ACM 0000-0000/86/0000-0000 $00.00
@.ef
@.sp 6p
@.ft 1
\s-2\l'5i'\s+2
@.sp 12p
@.vs 10
@.ps 8
Abstract comes here and
goes on and on and on and on and on and on and on and on
and on and on and on and on and on and on and on
and on and on and on and on and on and on and on.
@.sp 4p
Categories and Subject Descriptors:
D.2.4 [\f3Software Engineering\fP]:
Program Verification\(em\f2correctness proofs\fP;
D.3.1 [\f3Programming Languages\fP]:
Formal Definitions and Theory\(em\f2semantics\fP;
@.sp 4p
General Terms: Design, Languages, Theory, Verification
@.sp 4p
Additional Key Words and Phrases:
Axiomatic semantics,
program specification
@.br
@.sp 5p
@.vs 12
@.ps 10
\s-2\l'5i'\s+2
@.sp 10p
@.EQ
delim $$
@.EN
@.SU "1\ \ \ MAJOR SECTION"
@.PP
First paragraph. Goes on and on and on and on and on and on and on and on
and on and on and on and on and on and on and on
and on and on and on and on and on and on and on
and on and on and on and on and on and on and on
and on and on and on and on and on and on and on
and on and on and on and on and on and on and on
@.[
inverted indexes lesk
@.]
and on and on and on and on and on and on and on
and on and on and on and on and on and on and on
and on and on and on and on and on and on and on.
@.pp
Second paragraph. Goes on and on and on and on and on and on and on and on
and on and on and on and on and on and on and on
and on and on and on and on and on and on and on
and on and on and on and on and on and on and on
and on and on and on and on and on and on and on
and on and on and on and on and on and on and on
and on and on and on and on and on and on and on
and on and on and on and on and on and on and on
and on and on and on and on and on and on and on
and on and on and on and on and on and on and on
and on and on and on and on and on and on and on.
@.su "1.1\ \ \ Minor Section"
@.PP
First paragraph. Goes on and on and on and on and on and on and on and on
and on and on and on and on and on and on and on
and on and on and on and on and on and on and on
and on and on and on and on and on and on and on
and on and on and on and on and on and on and on
and on and on and on and on and on and on and on
and on and on and on and on and on and on and on
and on and on and on and on and on and on and on
and on and on and on and on and on and on and on
and on and on and on and on and on and on and on
and on and on and on and on and on and on and on
and on and on and on and on and on and on and on.
Now comes the end of the paper.
@.sp 8p
@.su "\s8ACKNOWLEDGEMENTS\s0"
@.ps 10
@.sp 2p
The authors thank all those that they bribed to get this paper published.
@.ps 8
@.vs 10
@.sp 8p
@.su "\s9REFERENCES\s0"
@.sp 2p
@.[
$LIST$
@.]
@//E*O*F acm.tos/skeleton//
chmod u=rw,g=,o= acm.tos/skeleton
 
exit 0
Daniel M. Berry         UCLA Computer Science Department
3531 Boelter Hall, UCLA, Los Angeles, CA 90024-1600, USA
dberry@cs.ucla.edu  ..!{sdcrdcf,ihnp4,cepu,trwspp,ucbvax}!ucla-cs!dberry

-- 
Rich $alz			rsalz@pineapple.bbn.com
Cronus Project, BBN Labs	"Anger is an energy"