home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume10 / mx-macros < prev    next >
Encoding:
Internet Message Format  |  1987-06-15  |  40.2 KB

  1. Path: seismo!uunet!rs
  2. From: rs@uunet.UU.NET (Rich Salz)
  3. Newsgroups: comp.sources.unix,comp.text
  4. Subject: v09i063:  Troff macros for "ACM Transactions"
  5. Message-ID: <367@uunet.UU.NET>
  6. Date: 16 Jun 87 23:41:04 GMT
  7. Organization: UUNET Communications Services, Arlington, VA
  8. Lines: 1746
  9. Approved: rs@uunet.uu.net
  10.  
  11. Submitted by: dberry@cs.ucla.edu (Dan Berry)
  12. Mod.sources: Volume 9, Issue 63
  13. Archive-name: mx-macros
  14.  
  15. [  Slightly unusual -- it's not C code -- but no doubt many people will find
  16.    this worthwhile, if not for use than for study.  In order to catch the
  17.    right readership, I'm also cross-posting this to comp.text, and I don't
  18.    intend to start a trend by doing that. --r$  ]
  19.  
  20. # This is a shell archive.  Remove anything before this line,
  21. # then unpack it by saving it in a file and typing "sh file".
  22. # Contents:  acm.tos/ READ_ME mX.doc mX.7 tmac.X tmac.Xrefs acm.tos/refmacros
  23. #    acm.tos/skeleton
  24.  
  25. echo x - READ_ME
  26. sed 's/^@//' > "READ_ME" <<'@//E*O*F READ_ME//'
  27. Dear Colleagues
  28.  
  29. RE: Marc Moriconi's letter in SIGPLAN Notices concerning preparing
  30. camera-ready copy for ACM Transactions in X with the help of LaTeX.
  31.  
  32. Those of you who prefer to use ditroff can do the same. In fact, by
  33. using ditroff, you will more likely be able to typeset it with fonts
  34. that appear more like those actually used by the ACM Transactions. One
  35. can use fonts like these:  Roman, Italic, Bold, and Sans Serif, as well
  36. as the constant width font in which this letter is done.
  37.  
  38. Some time ago Shaula Yemini and I published a paper in TOPLAS for which
  39. I prepared a camera-ready copy (S. Yemini and D.M. Berry, "A Modular
  40. Verifiable Exception Handling Mechanism", Transactions on Programming
  41. Languages and Systems 7:2, pp. 214-243, 1985).  I used AT&T's ditroff
  42. with the mX macros. The mX macro set was prepared UCLA for vanilla
  43. troff about a decade ago by the then student Bruce Walker.  It is an
  44. incredibly clean macro set, which seems not to have been affected by
  45. all the changes to troff and ditroff. By measuring the articles in one
  46. issue with a ruler, I came up with initial register settings,
  47. substitute definitions for some macros, refer macros, and a paper
  48. skeleton that looked fairly good. After receiving the editor's marked
  49. copy which revealed actual sizes in normal typesetting units, picas,
  50. points, etc.  I corrected these, to produce the camera-ready copy. We
  51. prepared a follow-up paper, submitting it in nearly final form (only
  52. the projected acceptance date and publication dates would have to be
  53. changed!). This was done by using the previous paper as a skeleton.
  54. Happily this paper was accepted, but we are still awaiting word of the
  55. printing date.
  56.  
  57. As with Moriconi's experience, we proof with a laser printer, and then
  58. when the paper is accepted and edited, we take the same file to a
  59. commercial typesetter. As a matter of fact, the laser printer and the
  60. typesetter we use talk PostScript\(tm (PostScript is a trademark of
  61. Adobe Systems, Inc.) and can be sent the same PostScript output from
  62. ditroff; the laser proof is an accurrate prediction of the typesetter's
  63. output.
  64.  
  65. By this posting, I am making available the mX macro package together
  66. with the paper skeleton. Using these would require changing your
  67. paper's macro calls to use mX's. That is not too difficult, as one does
  68. not do much more than start new sections, start new paragraphs, have
  69. numbered lists, etc.  If, however, you prefer to use another macro
  70. package, or are submitting to another journal, it would not be
  71. difficult to come up with register settings for the macro package for
  72. the journal's style.  A troff expert can do it in a day!
  73.  
  74. Daniel M. Berry         UCLA Computer Science Department
  75. 3531 Boelter Hall, UCLA, Los Angeles, CA 90024-1600, USA
  76. dberry@cs.ucla.edu  ..!{sdcrdcf,ihnp4,cepu,trwspp,ucbvax}!ucla-cs!dberry
  77.  
  78. -----------------------
  79. Below is a list of the files and directories contained herein. Install them
  80. in the indicated place. The acm.tos files go with your home directory
  81.  
  82. mX.doc  user level description- should go in /usr/lib/tmac
  83. mX.7  man page- should go in /usr/man/man7
  84. tmac.X  macro package- should go in /usr/lib/tmac
  85. tmac.Xrefs  standard reference macros- should go in /usr/lib/tmac
  86.  
  87.  
  88. acm.tos    directory containing skeleton and refmacros for doing ACM
  89.             Transactions on xxxxx
  90. acm.tos/refmacros  
  91. acm.tos/skeleton  
  92. @//E*O*F READ_ME//
  93. chmod u=rw,g=,o= READ_ME
  94.  
  95. echo mkdir - acm.tos
  96. mkdir acm.tos
  97. chmod u=rwx,g=,o= acm.tos
  98.  
  99. echo x - mX.doc
  100. sed 's/^@//' > "mX.doc" <<'@//E*O*F mX.doc//'
  101.             NROFF/TROFF  MACROS   by Bruce Walker
  102.  
  103.  
  104.  
  105.   These macros are compatible with version 7 troff/nroff and eqn/neqn.
  106.   The macros have been designed to meet the needs of as many users as
  107.   possible by having most macros controlled by user settable variables.
  108.   The following scenario outlines how to take advantage of this:
  109.     .so /usr/lib/tmac/tmac.X    \" bring in the macro file
  110.      .nr tf 1.5i    \" make changes to variables
  111.      .ds Te 'EVEN PAGE'TITLE'LINE'
  112.     .ds To 'ODD PAGE'TITLE'LINE'
  113.     .en         \" set up the environment so paging, etc. happens.
  114.     continue with the text of the paper etc.
  115.  
  116.  
  117.             USER MACROS
  118.  
  119.  .en  - set up the environment (ie. traps for page start and end).
  120.      - this should be called near the start of an nroff.
  121.       - "th" is the total space of header (in units);
  122.       - "bh" is space before and including header (in units)
  123.       - "tf" is the total space of footer (in units);
  124.       - "bf" is space before and including footer (in units);
  125.  .pp     - start a paragraph.
  126.      - spaces "sh" vertical; needs "sg" vertical; indents "sf" units;
  127.  .sc     - start a new chapter.
  128.      - begin a new page; can have 0 or 2 parameters; with 0 parameters,
  129.        the next two input lines are centered, after "sl" unit spaces;
  130.        With two parameters, the first can be either +,- or chapter #;
  131.        A + indicates that a one line title consisting of the second
  132.        parameter should be centered, after the appropriate spaces.
  133.        It should also appear as is in the Table of Contents.
  134.        A - indicates that the second parameter is to appear in the
  135.        Table of Contents but that no spacing or centering or printing
  136.        of a title is to be done.
  137.        With a chapter # as the first parameter, a
  138.        two line chapter title is centered after "sl" unit blank lines.
  139.        The first line is CHAPTER #;  The second is as given in the
  140.        second parameter.  The Table of Contents entry is the concat of
  141.        the two parameters.
  142.  .sa  - start a new appendix.
  143.      - begin a new page and space down "sl" unit spaces.  There can be
  144.        0 or 2 parameters.  With 0 parameters the next two input lines
  145.        are centered.  With two parameters, the first is the appendix
  146.        name/number.  The second is the title.  A two line appendix title
  147.        is centered after "sl" unit blank lines.  The first line is
  148.        APPENDIX \\$1.  The second is \\$2, where \\$1 and \\$2 are the
  149.        two parameters to .sa.  The table of contents entry is
  150.        Appendix \\$1 \\$2 .............  page#
  151.  .su     - start a new subsection.
  152.      - "sa" unit spaces are left; "sm" units are needed; There can be
  153.        0, 1 or 2 parameters.  With zero parameters, the next input line
  154.        is underlined with .ul.  With one parameter, it is underlined and
  155.        put as is in the table of contents.  With two parameters, the
  156.        second parameter is a level number which is used to control the
  157.        indenting of the entry in the table of contents.
  158.  .es     - example start;
  159.      - space "si" vertical; save mode (fill/nofill); switch to nofill
  160.       - indent "sj" units;
  161.  .ee  - example end;
  162.      - space "sk" vertical; indent -"sj" units; restore fill mode if needed
  163.  .l1     - start a list;
  164.      - set the first tab to be the current indent + "sn" and 2 other
  165.      - tabs at 5m intervals; indent +"sn" units;
  166.      - There is an optional parameter.  If a parameter is given, the
  167.        list is automatically numbered in "format" which is given
  168.        as the parameter (1 is straight numbering; i is roman numerals;
  169.        a is for letters (see .af built in command in ref manual)).
  170.  .e1     - end list;
  171.      - break; indent -"sn" units; restore tabs to default;
  172.  .le  - list entry; done before each list entry.
  173.       - space down "sp" units; temporarily indents -"so" units.
  174.       - If the list is being numbered automatically (see .l1), then the
  175.         number, followed by a dot, followed by a tab and set up so
  176.         next user's input will go on the same line (ie. a \c) is done.
  177.  .fn  - start footnote;
  178.      - If the user wishes to number footnotes on a page by page basis,
  179.        use either \*N (for superscripting) or \*O (for [#]) at the
  180.        reference point and at the start of the reference.
  181.  .ef  - end footnote text.
  182.  .fs  - figure start.  Text up to .fe is printed in environment 2.
  183.      - If there is room on the current page, the figure will be printed
  184.        there.  Otherwise the page will be filled with subsequent text
  185.        and the figure will appear at the top of the next page.
  186.  .fe  - figure end.  There is an optional parameter which is the entry
  187.        that will be put in the List of Figures.
  188.  .fg  - full page figure.  There is an optional parameter which is the
  189.        entry that will be put in the List of Figures.  The page on
  190.         which the full page figure would be put is omitted (to save
  191.         troffing) but the page numbers are incremented accordingly.
  192.         NOTE: Use of this does not work with multi-columning (see MC).
  193.  .rb  - reference begin.
  194.      - set tabs to "se", "se"+5, "se"+10; save current indent;
  195.        go to spacing set in "sq"; indent to "se";
  196.  .rf  - reference entry.
  197.      - space "sd" units; temporarily indent -"se" units; need "sc" units;
  198.  .re  - refernce end.
  199.    - reset indentation to that value saved at reference begin.
  200.        restore line spacing to it's previous value;
  201.        Restore tabs to default.
  202.  .LL  - change line length and length of titles to the parameter given.
  203.      - This macro changes these lengths in all the environments.
  204.  .MC  - Request to do multiple columns
  205.        This macro expects 4 parameters
  206.          - number of columns
  207.           - width of each column (units must be given).
  208.           - width of space between columns (units must be given).
  209.           - page offset of the whole thing (units must be given).
  210.      - NOTE: use of ".fg" does not work with multi-columning.
  211.  .PS  - change the character point size to the parameter given.
  212.      - This macro changes the point size in all the environments.
  213.  .RT  - reset tabs to standard nroff or troff.
  214.  .EQ  - start an equation; save mode (fill/nofill); switch to nofill.
  215.      - 2 parameters: first is L,C, or I - for left justified,
  216.        centered or indented equation.  Second is the equation number.
  217.       - if only 1 parameter, it is treated as an equation number unless
  218.         it is L, C, or I.
  219.  .EN  - end and equation; restore fill mode if necessary.
  220.  .HS  - a macro which is called at the beginning of the header macro.
  221.        The user can redefine this. It is initialized to null.
  222.  .HE  - a macro which is called at the end of the header macro.
  223.        The user can redefine this. It is initialized to null.
  224.  .FS  - a macro which is called at the beginning of the footer macro.
  225.        The user can redefine this. It is initialized to null.
  226.  .FE  - a macro which is called at the end of the footer macro.
  227.        The user can redefine this. It is initialized to null.
  228.  
  229.  
  230.             HIDDEN MACROS
  231.  
  232.  .hd     - header macro, executed at the top of each page (after .en done).
  233.  .fo  - footer macro, executed at the bottom of each page or when
  234.        footnotes must start to print.
  235.  .mf  - multiple column footer processing.
  236.  .fx  - end of page trap which is hit if footnotes are printing.  It
  237.        saves excess footnotes in "fy".
  238.  .xf     - print footnotes macro; called by .fo if there are any to print.
  239.        This can trap to .fx.
  240.  .fz  - save left over footnote for printing on a subsequent page.
  241.        This is called by .hd if there were left over footnote text.
  242.  .Ff     - print figure macro; called by .fo if there are any to print.
  243.  .Fa,Fb,Fc,Fd,Fe,F0 - used in figure collection and printing.
  244.  .T1,T2 - used in Table of Contents and List of Figure entry generation.
  245.  .SC  - used by .sc to ensure that a new page is started.  It is a recursive
  246.        .bp.  A single .bp in .sc would be insufficient because it might
  247.        be used to get to a new page to print a figure.  Then the chapter
  248.        would not be on a new page.
  249.  .ZZ  - Cleanup at end of processing. This is automatically called at
  250.        the end of processing.
  251.        This will dump any figures which have been diverted and are
  252.        waiting for the next page.  Also it will print the Table of
  253.        Contents and List of Figures if they are requested.
  254.  .AB  - Abort and print error message.
  255.  
  256.          REGISTERS USED OTHER THAN THOSE WHICH ARE USER SETTABLE
  257.  
  258.  t  : internal temporary used for page numbers.
  259.  x  : counter- counts number of footnotes to be genned at bottom of page.
  260.  y  : footer top - has negative of # u's from bottom of page at which
  261.                    footer starts, includes space for footnotes
  262.  z  : temporary variable used in footnote processing.
  263.  w  : footnote counter usable by user to number his footnotes on each page
  264.  c  : internal  -- column count for multiple columning
  265.  z1 : internal  -- size of leftover footnote
  266.  he : internal  -- flag to footer to tell that it is in a header.
  267.  fa : internal  -- flag from footer to header to tell it to do new page.
  268.  fg : internal  -- flag indicating that a figure is being printed.
  269.  fn : internal  -- flag indicating that a footnote is being processed
  270.  ex : internal  -- flag indicating that processing is in an example
  271.  fs : internal  -- flag indicating that a figure is being processed.
  272.  tt : internal  -- flag to indicate that a figure has caused a trap
  273.  mx : internal  -- line number saved to go back to for multiple columning.
  274.  cw,cs,co,cp: internal  -- used for multiple columnning.
  275.  f0-f7 : internal  - used for figures.
  276.  h1-h2 : internal  - used for headers and footers.
  277.  l0-l9 : internal - used for lists
  278.  t1 : internal  - used in reference macros to save status.
  279.  FI : internal  - saves fill/nofill mode status in equations and examples
  280.  dn : troff counter - counts # of lines of text in last diversion
  281.  nl : troff counter - counts # of lines of text on current page
  282.  .p : troff variable - contains current page length
  283.  .t : troff variable - length to next trap
  284.  .i : troff variable - current indent.
  285.  .$ : troff variable - number of parameters to current macro.
  286.  .z : troff variable - current diversion name
  287.  %  : troff variable - page number
  288. @//E*O*F mX.doc//
  289. chmod u=rw,g=,o= mX.doc
  290.  
  291. echo x - mX.7
  292. sed 's/^@//' > "mX.7" <<'@//E*O*F mX.7//'
  293. @.hc %
  294. @.TH MX L
  295. @.SH NAME
  296. mX \- macros for formatting documents
  297. @.SH SYNOPSIS
  298. @.B "nroff \-mX"
  299. [ options ]
  300. file ... 
  301. @.br
  302. @.B "troff \-mX"
  303. [ options ]
  304. file ... 
  305. @.SH DESCRIPTION
  306. This package of 
  307. @.I nroff
  308. and
  309. @.I troff
  310. macro definitions provides a canned formatting
  311. facility for tech%nical papers in various formats.
  312. When producing multi-column output on a terminal, filter
  313. the output through
  314. @.IR  col (1).
  315. @.PP
  316. The macro requests are defined below.
  317. Many
  318. @.I nroff
  319. and
  320. @.I troff
  321. requests are unsafe in conjunction with
  322. this package, however these requests may be used with
  323. impunity.
  324. @.nf
  325. @.IP
  326. @.ta \w'.cw n  'u
  327. \&.bp    begin new page
  328. \&.br    break output line here
  329. \&.sp n    insert n spacing lines
  330. \&.ls n    (line spacing) n=1 single, n=2 double space
  331. \&.na    no alignment of right margin
  332. \&.ce n    center next n lines
  333. \&.ul n    underline next n lines
  334. @.fi
  335. @.PP
  336. Output of the
  337. @.I eqn,
  338. @.I neqn,
  339. @.I refer,
  340. and
  341. @.IR  tbl (1)
  342. preprocessors
  343. for equations and tables is acceptable as input.
  344. @.SH FILES
  345. /usr/lib/tmac/tmac.X
  346. @.br
  347. /usr/lib/tmac/mX/tmac.Xlong
  348. @.br
  349. /usr/lib/tmac/tmac.Xtras
  350. @.br
  351. /usr/lib/tmac/tmac.Xrefs
  352. @.SH "SEE ALSO"
  353. eqn(1), troff(1), refer(1), tbl(1)
  354. @.br
  355. @.I "A Beginner's Guide to Nroff and Troff and the mX Macro Package"
  356. by G. A. Hornor
  357. @.tr &.
  358. @.SH REQUESTS 
  359. @.PP
  360. @.ta \w'.MC w x y z  'u +\w'Initial 'u +\w'Cause 'u
  361. @.br
  362. @.di x
  363.             \ka
  364. @.br
  365. @.di
  366. @.in \nau
  367. @.ti0
  368. Request    Initial    Cause    Explanation
  369. @.ti0
  370.     Value    Break
  371. @.br
  372. @.in \nau
  373. @.ti0
  374. \&.en    -    no    Set up the environment (i.e. traps
  375. for page start and end). This should be called near the
  376. start of an nroff/troff.
  377. @.ti0
  378. \&.pp    -    yes    Start a paragraph.
  379. @.ti0
  380. \&.sc \fIn x\fR    1    yes    Start a new chapter. \fIn\fR
  381. can be a number (or any arbitrary string of characters) 
  382. indicating the chapter ID after the word ``CHAPTER'', a `+' to omit
  383. the chapter heading only, or `-' to omit both the chapter heading and
  384. title \fIx\fR.
  385. The table of contents is updated in all cases.
  386. @.ti0
  387. \&.cp \fIn x\fR    1    yes    Start a new autonumbered chapter. 
  388. \fIn\fR is the chapter number (optional) and \fIx\fR is the
  389. chapter title. Omiting \fIn\fR will cause chapters to be
  390. automatically numbered.
  391. @.ti0
  392. \&.sa \fIn x\fR    1    yes    Start a new appendix.
  393. \fIn\fR and \fIx\fR have the same meaning as for .sc.
  394. @.ti0
  395. \&.su \fIx n\fR    -    yes    Start a new subsection.
  396. \fIn\fR is the (optional) level number of the subsection and \fIx\fR is
  397. the title.
  398. @.ti0
  399. \&.ss \fIn x\fR    1    yes    Start a new autonumbered subsection
  400. for a thesis or dissertation. \fIn\fR is the level number
  401. and \fIx\fR is the title.
  402. @.ti0
  403. \&.se \fIn x\fR    1    yes    Start a new autonumbered subsection
  404. for a paper. \fIn\fR is the level number and \fIx\fR is the
  405. title.
  406. @.ti0
  407. \&.es    no    yes    Start of an example (in nofill
  408. mode).
  409. @.ti0
  410. \&.ee    no    yes    End of an example (restores fill
  411. mode).
  412. @.ti0
  413. \&.l1 \fIf\fR    null    yes    Start a list. \fIf\fR
  414. determines how the lists are labeled: \fI1\fR is straight
  415. numbering, \fIi\fR is roman numberals, \fIa\fR is for
  416. letters.
  417. @.ti0
  418. \&.e1    no    yes    End a list.
  419. @.ti0
  420. \&.le    no    yes    Make an entry in a list.
  421. @.ti0
  422. \&.fn    no    no    Start a footnote. Footnotes can be
  423. numbered by using either \\*N (for superscripting) or \\*O
  424. (for [#]) at the reference point and at the start of the
  425. footnote.
  426. @.ti0
  427. \&.ef    no    no    End a footnote.
  428. @.ti0
  429. \&.fs    no    no    Start a floating keep (a figure
  430. usually).
  431. @.ti0
  432. \&.fe \fIx\fR    no    no    End a floating keep. \fIx\fR
  433. is an optional title which will appear in the list of
  434. figures.
  435. @.ti0
  436. \&.fg \fIx\fR    no    no    Full page figure. Leaves a blank
  437. unnumbered page. \fIx\fR is an optional title which will
  438. appear in the list of figures.
  439. @.ti0
  440. \&.rb    no    yes    Begin a list of references (as in a
  441. bibliography).
  442. @.ti0
  443. \&.rf    no    yes    Enter a reference in a list of
  444. references.
  445. @.ti0
  446. \&.re    no    yes    End a list of references.
  447. @.ti0
  448. \&.LL \fIn\fR    6.5i    yes    Change line length and length of
  449. titles to the parameter given.
  450. @.ti0
  451. \&.MC \fIw x y z\fR    no    yes    Request for multiple columns.
  452. \fIw\fR is the number of columns, \fIx\fR is the width of
  453. each column (units must be given), \fIy\fR is the width of
  454. space between colums (units must be given), and \fIz\fR is
  455. the page offset (units must be given).
  456. @.ti0
  457. \&.PS \fIn\fR    10    no    Change the character point size to
  458. the parameter given.
  459. @.ti0
  460. \&.RT    -    no    Reset tabs to standard nroff or
  461. troff.
  462. @.ti0
  463. \&.EQ \fIx y\fR    -    no    Start a displayed equation.
  464. \fIx\fR is either \fIL, C,\fR or \fII\fR for left-justified,
  465. centered, or indented equation. \fIy\fR is the equation
  466. number. If only one parameter is given, it is treated as the
  467. equation number unless it is \fIL, C,\fR or \fII\fR.
  468. @.ti0
  469. \&.EN    -    no    End a displayed equation.
  470. @.ti0
  471. \&.HS    -    no    A null macro which the user can
  472. redefine. It is called at the beginning of the page header
  473. macro.
  474. @.ti0
  475. \&.HE    -    no    A null macro which the user can
  476. redefine. It is called at the end of the page header macro.
  477. @.ti0
  478. \&.FS    -    no    A null macro which the user can
  479. redefine. It is called at the beginning of the page footer
  480. macro.
  481. @.ti0
  482. \&.FE    -    no    A null macro which the user can
  483. redefine. It is called at the end of the page footer macro.
  484. @//E*O*F mX.7//
  485. chmod u=rw,g=,o= mX.7
  486.  
  487. echo x - tmac.X
  488. sed 's/^@//' > "tmac.X" <<'@//E*O*F tmac.X//'
  489. @.\"    NROFF/TROFF MACROS    by Bruce Walker
  490. @.\"
  491. @.\" Please refer to /usr/lib/tmac/mX.doc and man mX for documentation.
  492. @.deen
  493. @.wh0 hd
  494. @.wh-\\n(tfu fo
  495. @.chfo 32000
  496. @.wh-\\n(tfu fx
  497. @.chfo -\\n(tfu
  498. @.nrx 0 1
  499. @.nry 0-\\n(tfu
  500. @.emZZ
  501. @.nrw 1
  502. @.nrhe0
  503. @.nrfa0
  504. @..
  505. @.depp
  506. @.br
  507. @.ne\\n(sgv+\\n(shv
  508. @.sp\\n(shv
  509. @.ti+\\n(sfu
  510. @..
  511. @.desc
  512. @.br
  513. @.rs
  514. @.SC
  515. @.sv\\n(slu
  516. @.ie\\n(.$\{\
  517. @.if!\\n(.$-1 .AB"1 and not 2 parameters were sent to .sc"
  518. @.ie"\\$1"+"\{.if \\n(ft .T1 "\\$2" "\\n%" "0" "1"
  519. @.ce1
  520. \\$2\}
  521. @.el\{\
  522. @.ie"\\$1"-"\{.if \\n(ft .T1 "\\$2" "\\n%" "0" "1"\}
  523. @.el\{\
  524. @.if\\n(ft .T1 "\\$1 \\$2" "\\n%" "0" "1"
  525. @.ce2
  526. \\*(CH\\$1
  527. \\$2\}\}\}
  528. @.el.ce 2
  529. @..
  530. @.desa
  531. @.br
  532. @.rs
  533. @.SC
  534. @.sv\\n(slu
  535. @.ie\\n(.$\{\
  536. @.if!\\n(.$-1 .AB"1 and not 2 parameters were sent to .sa"
  537. @.if\\n(ft\{.T1 "\\*(AP\\$1 \\$2" "\\n%" "0" "1"\}
  538. @.ce2
  539. \\*(AX\\$1
  540. \\$2\}
  541. @.el.ce 2
  542. @..
  543. @.desu
  544. @.br
  545. @.ne\\n(smu+\\n(sau
  546. @.sp\\n(sau
  547. @.ie\\n(.$\{\
  548. @.ie\\n(.$-1\{\
  549. @.if\\n(ft .T1 "\\$1" "\\n%" "\\$2" "0"\}
  550. @.el.if \\n(ft .T1 "\\$1" "\\n%" "0" "0"
  551. @.ft\\n(fv
  552. \\$1\fP\}
  553. @.el.ul 1
  554. @..
  555. @.dees
  556. @.ie\\n(ex .AB"Nesting examples is a no no"
  557. @.el.nr ex 1
  558. @.sp\\n(siv
  559. @.nrFI\\n(.u
  560. @.nf
  561. @.in+\\n(sju
  562. @..
  563. @.deee
  564. @.ie!\\n(ex .AB"Ending an example (.ee) without starting an example"
  565. @.el.nr ex 0
  566. @.sp\\n(skv
  567. @.in-\\n(sju
  568. @.if\\n(FI .fi
  569. @..
  570. @.del1
  571. @.if\\n+(l0=4 .AB"Nesting of lists too deep"
  572. @.ta\\n(sou +5m +5m
  573. @.in+\\n(snu
  574. @.afl1 1
  575. @.nrl3\\n(l2
  576. @.nrl2\\n(l1
  577. @.nrl9\\n(l8
  578. @.nrl8\\n(l7
  579. @.rnl5 l6
  580. @.rnl4 l5
  581. @.nrl10 1
  582. @.nrl70
  583. @.dsl4 "1
  584. @.if\\n(.$\{\
  585. @.dsl4 "\\$1
  586. @.nrl71\}
  587. @.afl1 \\*(l4
  588. @..
  589. @.dee1
  590. @.br
  591. @.in-\\n(snu
  592. @.if\\n-(l0<0 .AB"Ending more lists than started"
  593. @.ie\\n(l0=0\{\
  594. @.RT\}
  595. @.el\{\
  596. @.nrl1\\n(l2 1
  597. @.nrl2\\n(l3 1
  598. @.nrl7\\n(l8
  599. @.nrl8\\n(l9
  600. @.rnl5 l4
  601. @.rnl6 l5
  602. @.afl1 \\*(l4\}
  603. @..
  604. @.dele
  605. @.sp\\n(spu
  606. @.ti-\\n(sou
  607. @.if\\n(l7=1\{\
  608. \\n+(l1.\t\c\}
  609. @..
  610. @.defn
  611. @.ie\\nx .ne \\n(rcv-2v
  612. @.el.ne \\n(rcv
  613. @.if\\n(fn .AB"Nesting of footnotes is a no no"
  614. @.nrfn1
  615. @.daFN
  616. @.ev1
  617. @.ie\\n+x=1\{\
  618. \l'1i'
  619. @.br\}
  620. @.el.sp \\n(srv
  621. @.fi
  622. @.ad
  623. @..
  624. @.deef
  625. @.if!\\n(fn .AB"Ending a footnote (.ef) when one was not started"
  626. @.nrfn0
  627. @.br
  628. @.nrz \\n(.v
  629. @.ev
  630. @.di
  631. @.nry -\\n(dn
  632. @.if(\\n(nlu+1v)>(\\n(.pu+\\nyu-1v)\{\
  633. @.nry (2v+\\n(nlu-\\n(.pu)u\}
  634. @.chfo (\\nyu-1v)
  635. @.nrw +1
  636. @..
  637. @.defs
  638. @.if\\n(fs .AB"Nesting of figures is a no no"
  639. @.if\\n(f7>0 .AB"Too many figures diverted near page \\n%"
  640. @.nrf0+1
  641. @.nrfs1
  642. @.daF2
  643. @.ev2
  644. @.dt\\n(.pu-\\n(thu-\\n(tfu Fc
  645. @.nrtt0
  646. @..
  647. @.defe
  648. @.ie!\\n(fs .AB"Ending a figure (.fe) which was not started"
  649. @.el.nr fs 0
  650. @.br
  651. @.ie\\n(tt\{\
  652. @.ev
  653. @.di
  654. @.if\\n(dn>0\{\
  655. @.ie\\n(f0=3 .AB"Too many figures diverted near page \\n%"
  656. @.el\{\
  657. @.tmNROFF/TROFF Warning: A figure after page \\n% was truncated.\}\}\}
  658. @.el\{\
  659. @.ev
  660. @.da
  661. @.nrf2+\\n(dnu\}
  662. @.ie\\n(.$ .Fb "\\$1"
  663. @.el\{\
  664. @.ie\\n(f0+\\n(f5>1 .Fd " " "0"
  665. @.el.Fe " " "0"\}
  666. @..
  667. @.defg
  668. @.nrt 2
  669. @.ie\\n(f7>0 .nr f7 +1 1
  670. @.el\{\
  671. @.ie\\n(f0>1 .nr f7 1 1
  672. @.el\{\
  673. @.nrt 1
  674. @.ie\\n(f6>0 .nr f6 +1 1
  675. @.el\{\
  676. @.ie\\n(f0=1 .nr f6 1 1
  677. @.el\{\
  678. @.nrf5+1 1
  679. @.nrt 0\}\}\}\}
  680. @.nrt +\\n%+\\n(f5+\\n(f6+\\n(f7
  681. @.if\\n(ff+\\n(.$-1 .F0 "\\$1" "\\nt"
  682. @..
  683. @.derb
  684. @.ta\\n(sem +5m +5m
  685. @.nrt1\\n(.i
  686. @.ls\\n(sq
  687. @.in\\n(sem
  688. @..
  689. @.derf
  690. @.br
  691. @.ne\\n(scu+\\n(sdu
  692. @.sp\\n(sdu
  693. @.ti-\\n(sem
  694. @..
  695. @.dere
  696. @.br
  697. @.ls
  698. @.in\\n(t1u
  699. @.RT
  700. @..
  701. @.deLL
  702. @.if!\\n(.$ .AB"Called LL with no parameter"
  703. @.ev2
  704. @.lt\\$1
  705. @.ll\\$1
  706. @.ev
  707. @.ev2
  708. @.lt\\$1
  709. @.ll\\$1
  710. @.ev
  711. @.ev1
  712. @.lt\\$1
  713. @.ll\\$1
  714. @.ev
  715. @.ev0
  716. @.lt\\$1
  717. @.ll\\$1
  718. @.ev
  719. @..
  720. @.deMC
  721. @.if\\n(.$<4 .AB"Called MC with less than 4 parameters"
  722. @.nrcn\\$1
  723. @.nrcw\\$2
  724. @.nrcs\\$3
  725. @.nrco\\$4
  726. @.po\\n(cou
  727. @.LL\\$2
  728. @.nrc 1 1
  729. @.mkmx
  730. @..
  731. @.dePS
  732. @.ev2
  733. @.ps\\$1
  734. @.ev
  735. @.ev2
  736. @.ps\\$1
  737. @.ev
  738. @.ev1
  739. @.ps\\$1
  740. @.ev
  741. @.ev0
  742. @.ps\\$1
  743. @.ev
  744. @..
  745. @.deVS
  746. @.ev2
  747. @.vs\\$1
  748. @.ev
  749. @.ev2
  750. @.vs\\$1
  751. @.ev
  752. @.ev1
  753. @.vs\\$1
  754. @.ev
  755. @.ev0
  756. @.vs\\$1
  757. @.ev
  758. @..
  759. @.deRT
  760. @.ien .ta .8i +.8i +.8i +.8i +.8i +.8i +.8i +.8i +.8i +.8i
  761. @.el.ta .5i +.5i +.5i +.5i +.5i +.5i +.5i +.5i +.5i +.5i
  762. @..
  763. @.deEQ
  764. @.br
  765. @.ne2.5
  766. @.ift .sp .5
  767. @.ifn .sp 1P
  768. @.nrFI\\n(.u
  769. @.nf
  770. @.ce
  771. @.dsEL \\$1
  772. @.if\\n(.$-1 .ds EL \\$2
  773. @.nrLE\\n(.$
  774. @.ie"\\$1"L"\{\
  775. @.ce0
  776. @.nrLE-1\}
  777. @.el\{\
  778. @.ie"\\$1"C" .nr LE -1
  779. @.el\{\
  780. @.if"\\$1"I"\{\
  781. @.ce0
  782. @.ti+10n
  783. @.nrLE-1\}\}\}
  784. @..
  785. @.deEN
  786. @.ce0
  787. @.lt\\n(.lu
  788. @.if\\n(LE\{\
  789. @.ien\{\
  790. @.sp-1
  791. @.tl'''\\*(EL'\}
  792. @.el\{\
  793. @.sp-1-\\n(.au
  794. @.tl'''\\*(EL'
  795. @.sp\\n(.au\}\}
  796. @.if\\n(FI .fi
  797. @.ifn .sp 1P
  798. @.ift .sp 0.5
  799. @..
  800. @.deHS
  801. @..
  802. @.deHE
  803. @..
  804. @.deFS
  805. @..
  806. @.deFE
  807. @..
  808. @.dehd
  809. @.HS
  810. @.nrhe+1
  811. @.ie\\n(cn>1\{\
  812. @.ie\\nc>\\n(cn\{\
  813. 'sp\\n(bhu-1v
  814. @.lt(\\n(cn*\\n(cwu)u+(\\n(csu*(\\n(cn-1))u
  815. @.iee .tl \\*(Te
  816. @.el.tl \\*(To
  817. 'sp|\\n(thu
  818. @.nrc 1 1
  819. @.mkmx\}
  820. @.el\{\
  821. @.po+\\n(cwu+\\n(csu
  822. 'sp|\\n(mxu\}\}
  823. @.el\{\
  824. @.if\\n(f5\{\
  825. @.nr% +\\n(f5
  826. @.nrf50 1\}
  827. 'sp\\n(bhu-1v
  828. @.iee .tl \\*(Te
  829. @.el.tl \\*(To
  830. 'sp|\\n(thu\}
  831. @.chfx -\\n(tfu
  832. @.chfo -\\n(tfu
  833. @.if\\n(z1 .fz
  834. @.chfo -\\n(tfu
  835. @.if!\\n(f0 .ns
  836. @.if\\n(f0\{\
  837. @.nrf5\\n(f6
  838. @.nrf6\\n(f7
  839. @.nrf70
  840. @.Ff
  841. @.ie\\n(fa\{\
  842. @.nrfa0
  843. @.nrh21\}
  844. @.el\{\
  845. @.ie\\nx\{.if (\\n(nlu+5v)>(\\n(.p+\\nyu) .nr h1 1\}
  846. @.el\{.if \\n(.tu<6v  .nr h1 1\}\}\}
  847. @.if\\n(h1=1\{\
  848. @.nrh10
  849. 'bp\}
  850. @.if\\n(h2=1\{\
  851. @.nrh20
  852. @.fo\}
  853. @.chfo (\\nyu-1v)
  854. @.nrhe-1
  855. @.HE
  856. @..
  857. @.defo
  858. @.FS
  859. @.if!\\n(he\{.if \\nx .xf\}
  860. @.nrfa0
  861. @.ie\\n(fg\{\
  862. @.nrfa1
  863. @.diGA\}
  864. @.el\{\
  865. @.ie\\n(cn<2\{\
  866. 'chfo 32000
  867. 'chfx 32000
  868. 'sp(\\n(.pu-\\n(nlu-\\n(tfu+\\n(bfu-1v)u
  869. @.iee .tl \\*(Be
  870. @.el.tl \\*(Bo
  871. 'bp\}
  872. @.el.mf\}
  873. @.FE
  874. @..
  875. @.demf
  876. @.ie\\n+c<=\\n(cn .hd
  877. @.el\{\
  878. @.po\\n(cou
  879. @.lt(\\n(cn*\\n(cwu)u+(\\n(csu*(\\n(cn-1))u
  880. 'chfo 32000
  881. 'chfx 32000
  882. 'sp(\\n(.pu-\\n(nlu-\\n(tfu+\\n(bfu-1v)u
  883. @.iee .tl \\*(Be
  884. @.el.tl \\*(Bo
  885. 'bp\}
  886. @..
  887. @.defx
  888. @.if\\nx .di fy
  889. @..
  890. @.defz
  891. @.nrx 0 1
  892. @.nry 0-\\n(tfu
  893. @.nrz10
  894. @.fn
  895. @.nf
  896. @.fy
  897. @.fi
  898. @.ef
  899. @.nrw 1 1
  900. @..
  901. @.dexf
  902. @.ev1
  903. @.nf
  904. @.sp(\\n(.pu+\\nyu-\\n(nlu)u
  905. @.FN
  906. @.rmFN
  907. @.ie"\\n(.z"fy"\{\
  908. @.di
  909. @.nrz1\\n(dn\}
  910. @.el.nr z1 0
  911. @.nrx 0 1
  912. @.nry 0-\\n(tfu
  913. @.ev
  914. @.nrw 1 1
  915. @..
  916. @.deFf
  917. @.nrf10
  918. @.ev2
  919. @.nf
  920. @.nrfg1
  921. @.F1
  922. @.nrfg0
  923. @.if\\n(fa .di
  924. @.br
  925. @.ev
  926. @.rmF1
  927. @.if\\n(f0-1 .Fa
  928. @.nrf0-1
  929. @..
  930. @.deFa
  931. @.daF1
  932. @.ev2
  933. @.nf
  934. @.F2
  935. @.br
  936. @.ev
  937. @.da
  938. @.nrf1+\\n(f2
  939. @.nrf20
  940. @.rmF2
  941. @..
  942. @.deFb
  943. @.ie\\n(f0+\\n(f5>1\{\
  944. @.Fd"\\$1" "1"\}
  945. @.el\{\
  946. @.Fe"\\$1" "1"\}
  947. @..
  948. @.deFc
  949. @.ev
  950. @.di
  951. @.nrf2\\n(dnu
  952. @.nrtt1
  953. @.diGA
  954. @.ev2
  955. @..
  956. @.deFd
  957. @.ie\\n(f0=3\{\
  958. @.nrf02
  959. @.nrt \\n%+\\n(f5+\\n(f6+2\}
  960. @.el\{\
  961. @.nrf02
  962. @.nrt \\n%+\\n(f5+\\n(f6+2
  963. @.if\\n(f6=0\{\
  964. @.if(\\n(.pu-\\n(f1u-\\n(f2u-\\n(thu-\\n(tfu)>=0\{\
  965. @.nrf0-1
  966. @.nrt \\n%+\\n(f5+1
  967. @.Fa\}\}\}
  968. @.if'\\n(ff\\$2'11' .F0 "\\$1" "\\nt"
  969. @..
  970. @.deFe
  971. @.rmF1
  972. @.nrf10
  973. @.Fa
  974. @.nrt \\n%+\\n(f5+1 1
  975. @.ie\\n(f1+2v>\\n(.tu\{.if '\\$2\\n(ff'11' .F0 "\\$1" "\\nt"\}
  976. @.el\{\
  977. @.if'\\$2\\n(ff'11'\{\
  978. @.F0"\\$1" "\\n-t"\}
  979. @.br
  980. @.Ff
  981. @.if\\n(fa\{\
  982. @.nrfa0
  983. @.fo\}\}
  984. @..
  985. @.deF0
  986. @.daFP
  987. @.ev2
  988. @.br
  989. \t
  990. @.T2"\\$1" "\\$2" "0"
  991. @.br
  992. @.RT
  993. @.ev
  994. @.da
  995. @..
  996. @.deT1
  997. @.daTP
  998. @.ev2
  999. @.br
  1000. @.if'\\$4'1' .sp 1v
  1001. @.T2"\\$1" "\\$2" "\\$3"
  1002. @.br
  1003. @.RT
  1004. @.ev
  1005. @.da
  1006. @..
  1007. @.deT2
  1008. @.nrFI\\n(.u
  1009. @.nrAD\\n(.j
  1010. @.if\\$3>0 .in +(4n*\\$3u)u
  1011. @.ie\\w'\\$1'u-\\n(.lu+\\n(.iu+3m\{\
  1012. @.if\\$3>0 .in +4n
  1013. @.ta(\\n(.lu-\\n(.iu-3m)u +3mR
  1014. @.if\\$3>0 .ti -4n
  1015. @.fi
  1016. @.na
  1017. @.ll-3m
  1018. \\$1
  1019. @.nf
  1020. @.sp-1
  1021. @.ll+3m
  1022. @.dsPD \\h'\\n(.nu'\}
  1023. @.el\{\
  1024. @.ta(\\n(.lu-\\n(.iu-3m)u +3mR
  1025. @.dsPD \\$1\}
  1026. @.ie\\n(.lu-\\n(.iu-\\w'\\*(PD'u-3n-3m .as PD "  \a\t\\$2
  1027. @.el.as PD \\h'\\n(.lu-\\n(.iu-\\w'\\*(PD'u-3m+1u'\t\\$2
  1028. \\*(PD
  1029. @.if\\$3>0 .in -(4n*\\$3u)u
  1030. @.if\\$3>0 .in -4n
  1031. @.if\\n(FI .fi
  1032. @.ad\\n(.j
  1033. @..
  1034. @.deSC
  1035. @.if\\n(nlu>\\n(thu\{.bp
  1036. @.SC\}
  1037. @..
  1038. @.deZZ
  1039. @.br
  1040. \\c
  1041. @.if\\n(f0 'bp
  1042. @.rs
  1043. @.ie!"\\*(TL\\*(Te"''''''''"\{\
  1044. @.dsTe ''''
  1045. @.dsTo ''''
  1046. @.if\\n(ff+\\n(ft>0 'bp\}
  1047. @.el\{\
  1048. @.if\\n(nlu>\\n(thu\{\
  1049. @.if\\n(ff+\\n(ft>0 'bp\}\}
  1050. @.if\\n(ft\{.af % i
  1051. @.nr% \\n(su
  1052. @.ev2
  1053. @.ce
  1054. \\*(TC
  1055. @.sp\\n(rau
  1056. @.ta\\n(.luR
  1057. \t\\*(PG
  1058. @.sp\\n(rbu
  1059. @.TP
  1060. @.ev\}
  1061. @.if\\n(ff\{.af % i
  1062. 'bp+1
  1063. @.ev2
  1064. @.ce
  1065. \\*(LF
  1066. @.sp\\n(rau
  1067. @.ta\\n(.luR
  1068. \t\\*(PG
  1069. @.sp\\n(rbu
  1070. @.FP\}
  1071. @.if\\n(cn>1\{\
  1072. @.nrc \\n(cn
  1073. @.bp\}
  1074. @..
  1075. @.deAB
  1076. @.abNROFF/TROFF aborted near input line \\n(.c: \\$1.
  1077. @..
  1078. @.ig
  1079. @.EQ
  1080. delim $$
  1081. ndefine =del ` "\z=\z^\v'-.25v'-\v'.25v'" `
  1082. tdefine =del ` "\v'.3m'\z=\v'-.6m'\h'.3m'\s-1\(*D\s+1\v'.3m'" `
  1083. ndefine cdot ` "\u.\d" `
  1084. ndefine oppA ` "V-" `
  1085. @.EN
  1086. @..
  1087. @.ev2
  1088. 'nf
  1089. @.lt6.5i
  1090. @.ll6.5i
  1091. @.ls1
  1092. @.ps10
  1093. @.nh
  1094. @.ev
  1095. @.ev1
  1096. @.lt6.5i
  1097. @.ll6.5i
  1098. @.ls1
  1099. @.ps10
  1100. 'nh
  1101. @.ev
  1102. @.ev0
  1103. @.ls2
  1104. @.ll6.5i
  1105. @.lt6.5i
  1106. @.ps10
  1107. @.ev
  1108. @.pl11i
  1109. @.tr~
  1110. @.nrth1i
  1111. @.nrbh7i/12u
  1112. @.nrtf19i/16u
  1113. @.nrbf10i/16u
  1114. @.nrra0v
  1115. @.nrrb2v
  1116. @.nrrc5u
  1117. @.nrsq1u
  1118. @.nrsc0.5i
  1119. @.nrsd1i/6u
  1120. @.nrsf0.5i
  1121. @.nrsg3u
  1122. @.nrsh1u
  1123. @.nrsi1u
  1124. @.nrsj0.5i
  1125. @.nrsk2u
  1126. @.nrsl1.0i
  1127. @.nrsn0.5i
  1128. @.nrso0.5i
  1129. @.nrsp1i/6u
  1130. @.nrsr1u
  1131. @.nrsu3
  1132. @.dsTe \\*(TL
  1133. @.dsTo \\*(TL
  1134. @.dsBe \\*(BL
  1135. @.dsBo \\*(BL
  1136. @.dsBL ''''
  1137. @.dsTL ''''
  1138. @.dsCH "CHAPTER 
  1139. @.dsAP "Appendix 
  1140. @.dsAX "APPENDIX 
  1141. @.dsTC "Table of Contents
  1142. @.dsLF "List of Figures
  1143. @.dsPG "page
  1144. @.dsN \\s-3\\u\\nw\\d\\x'-0.5m'\\s+3
  1145. @.dsO [\\nw]
  1146. @.nrx 0 1
  1147. @.nrff0
  1148. @.nrft0
  1149. @.nrcn1
  1150. @.nrf00
  1151. @.nrf10
  1152. @.nrf20
  1153. @.nrf50
  1154. @.nrf60
  1155. @.nrf70
  1156. @.nrl00 1
  1157. @.ien\{\
  1158. @.nrsa2v
  1159. @.nrse10
  1160. @.nrsm3i/2u
  1161. @.nrfv2\}
  1162. @.el\{\
  1163. @.nrsa1v
  1164. @.nrse8u
  1165. @.nrsm1i
  1166. @.nrfv3\}
  1167. @//E*O*F tmac.X//
  1168. chmod u=rw,g=,o= tmac.X
  1169.  
  1170. echo x - tmac.Xrefs
  1171. sed 's/^@//' > "tmac.Xrefs" <<'@//E*O*F tmac.Xrefs//'
  1172. @.\" REFER macros .... citations
  1173. @.de []
  1174. @.][ \\$1
  1175. @..
  1176. @.de ][
  1177. @.if \\$1>5 .tm Bad arg to []
  1178. @.if !"\\*([O"" .if !\\n([O .as [O .
  1179. @.[\\$1
  1180. @..
  1181. @.ds RB ".sc + References
  1182. @.ds [. " [
  1183. @.ds .] ]
  1184. @.if n .ds [o ""
  1185. @.if n .ds [c ""
  1186. @.if t .ds [o ``
  1187. @.if t .ds [c ''
  1188. @.\" the next lines deal with the problem of .[1] or [1].
  1189. @.\" refer will write "linexxx\*(<.[1]\*(>.
  1190. @.\" and either "<." or ">." should produce the .;
  1191. @.\" similarly for ,
  1192. @.ds >. .
  1193. @.ds >, ,
  1194. @.de [5 \" tm style
  1195. \\*([A, \\f2\\*([T\\f1,
  1196. @.ie \\n(TN \\*([M.
  1197. @.el UCLA Computer Science Department internal memorandum (\\*([D).
  1198. @.br
  1199. @..
  1200. @.de [0 \" other
  1201. @.nr [: 0
  1202. @.if !"\\*([A"" \{.nr [: 1
  1203. \\*([A\c\}
  1204. @.if !"\\*([T"" \{.if \\n([:>0 ,
  1205. @.nr [: 1
  1206. \\f2\\*([T\\f1\c\}
  1207. @.if !"\\*([D"" \{.if \\n([:>0 ,
  1208. @.nr [: 1
  1209. \\*([D\c\}
  1210. @.if \\n([:>0 \&.
  1211. @.if !"\\*([O"" \\*([O
  1212. @.br
  1213. @..
  1214. @.de [1 \" journal article
  1215. @.if !"\\*([A"" \\*([A,
  1216. @.if !"\\*([T"" \\*([o\\*([T,\\*([c
  1217. \\f2\\*([J\\f1\c
  1218. @.if !"\\*([V"" .if n \& Vol.\&\c
  1219. @.if !"\\*([V"" \& \\f3\\*([V\\f1\c
  1220. @.if !"\\*([N"" (\\*([N)\c
  1221. @.if !"\\*([P"" \{\
  1222. @.ie \\n([P>0 , pp.\c
  1223. @.el , p.\c
  1224. \\*([P\c\}
  1225. @.if !"\\*([I"" .if "\\*([R"" , \\*([I\c
  1226. @.if !"\\*([D"" \& (\\*([D)\c
  1227. \&.
  1228. @.if !"\\*([O"" \\*([O
  1229. @.br
  1230. @..
  1231. @.de [2 \" book
  1232. @.if !"\\*([A"" \\*([A,
  1233. @.if !"\\*([T"" \\f2\\*([T,\\f1
  1234. \\*([I\c
  1235. @.if !"\\*([C"" , \\*([C\c
  1236. @.if !"\\*([D"" \& (\\*([D)\c
  1237. \&.
  1238. @.if !"\\*([G"" Gov't. ordering no. \\*([G.
  1239. @.if !"\\*([O"" \\*([O
  1240. @.br
  1241. @..
  1242. @.de [4 \" report
  1243. @.if !"\\*([A"" \\*([A,
  1244. \\*([o\\*([T,\\*([c
  1245. \\*([R\c
  1246. @.if !"\\*([G"" \& (\\*([G)\c
  1247. @.if !"\\*([I"" ,  \\*([I\c
  1248. @.if !"\\*([C"" ,  \\*([C\c
  1249. @.if !"\\*([D"" \& (\\*([D)\c
  1250. \&.
  1251. @.if !"\\*([O"" \\*([O
  1252. @.br
  1253. @..
  1254. @.de [3 \" article in book
  1255. @.if !"\\*([A"" \\*([A,
  1256. @.if !"\\*([T"" \\*([o\\*([T,\\*([c
  1257. @.if !"\\*([P"" pp. \\*([P
  1258. in \\f2\\*([B\\f1\c
  1259. @.if !"\\*([E"" , ed. \\*([E\c
  1260. @.if !"\\*([I"" , \\*([I\c
  1261. @.if !"\\*([C"" , \\*([C\c
  1262. @.if !"\\*([D"" \& (\\*([D)\c
  1263. \&.
  1264. @.if !"\\*([O"" \\*([O
  1265. @.br
  1266. @..
  1267. @.\" define warning that mX does not support references as footnotes
  1268. @.de ]-
  1269. @.AB"Can't do references as footnotes. Use '-e' or '-s' option with 'refer'
  1270. @..
  1271. @.de ]<
  1272. @.\" define the real ]- next-reference macro
  1273. @. de ]-
  1274. @. rm [V [P [A [T
  1275. @. rm [N [C [B [O
  1276. @. rm [R [I [E [D
  1277. @. rf
  1278. [\\\\*([F]    \c
  1279. \\..
  1280. @.\"now start the reference subsection
  1281. \\*(RB
  1282. @.rb
  1283. @..
  1284. @.de ]>
  1285. @.re
  1286. @..
  1287. @.de ]]
  1288. this is never
  1289. executed
  1290. and just
  1291. uses up an end-of-file
  1292. bug.
  1293. @..
  1294. @//E*O*F tmac.Xrefs//
  1295. chmod u=rw,g=,o= tmac.Xrefs
  1296.  
  1297. echo x - acm.tos/refmacros
  1298. sed 's/^@//' > "acm.tos/refmacros" <<'@//E*O*F acm.tos/refmacros//'
  1299. @.\" REFER macros .... citations
  1300. @.nr se 8u \" space to indent in emms
  1301. @.de []
  1302. @.][ \\$1
  1303. @..
  1304. @.de ][
  1305. @.if \\$1>5 .tm Bad arg to []
  1306. @.if !"\\*([O"" .if !\\n([O .as [O .
  1307. @.[\\$1
  1308. @..
  1309. @.ds RB ".RE
  1310. @.ds [. " [
  1311. @.ds .] ]
  1312. @.if n .ds [o ""
  1313. @.if n .ds [c ""
  1314. @.if t .ds [o \(lq
  1315. @.if t .ds [c \(rq
  1316. @.\" the next lines deal with the problem of .[1] or [1].
  1317. @.\" refer will write "linexxx\*(<.[1]\*(>.
  1318. @.\" and either "<." or ">." should produce the .;
  1319. @.\" similarly for ,
  1320. @.ds >. .
  1321. @.ds >, ,
  1322. @.de [5 \" tm style
  1323. \\*([A  \\f2\\*([T\\f1.
  1324. @.ie \\n(TN \\*([M.
  1325. @.el UCLA Computer Science Department internal memorandum (\\*([D).
  1326. @.br
  1327. @..
  1328. @.de [0 \" other
  1329. @.nr [: 0
  1330. @.if !"\\*([A"" \{.nr [: 1
  1331. \\*([A\c\}
  1332. @.if !"\\*([T"" \{.if \\n([:>0 \&
  1333. @.nr [: 1
  1334. \\f2\\*([T\\f1\c\}
  1335. @.if !"\\*([D"" \{.if \\n([:>0 .
  1336. @.nr [: 1
  1337. \\*([D\c\}
  1338. @.if \\n([:>0 \&.
  1339. @.if !"\\*([O"" \\*([O
  1340. @.br
  1341. @..
  1342. @.de [1 \" journal article
  1343. @.if !"\\*([A"" \\*([A
  1344. @.if !"\\*([T"" \\*([o\\*([T.\\*([c
  1345. \\f2\\*([J\\f1\c
  1346. @.if !"\\*([V"" .if n \& Vol.\&\c
  1347. @.if !"\\*([V"" \& \\f2\\*([V\\f1,\c
  1348. @.if !"\\*([N"" \& \\*([N\c
  1349. @.if !"\\*([I"" .if "\\*([R"" , \\*([I\c
  1350. @.if !"\\*([D"" \& (\\*([D)\c
  1351. @.if !"\\*([P"" \{\
  1352. @.ie \\n([P>0 , pp. \c
  1353. @.el , p.\c
  1354. \\*([P\c\}
  1355. \&.
  1356. @.if !"\\*([O"" \\*([O
  1357. @.br
  1358. @..
  1359. @.de [2 \" book
  1360. @.if !"\\*([A"" \\*([A
  1361. @.if !"\\*([T"" \\f2\\*([T.\\f1
  1362. \\*([I\c
  1363. @.if !"\\*([C"" , \\*([C\c
  1364. @.if !"\\*([D"" \& (\\*([D)\c
  1365. \&.
  1366. @.if !"\\*([G"" Gov't. ordering no. \\*([G.
  1367. @.if !"\\*([O"" \\*([O
  1368. @.br
  1369. @..
  1370. @.de [4 \" report
  1371. @.if !"\\*([A"" \\*([A
  1372. \\*([o\\*([T.\\*([c
  1373. \\*([R\c
  1374. @.if !"\\*([G"" \& (\\*([G)\c
  1375. @.if !"\\*([I"" ,  \\*([I\c
  1376. @.if !"\\*([C"" ,  \\*([C\c
  1377. @.if !"\\*([D"" \& (\\*([D)\c
  1378. \&.
  1379. @.if !"\\*([O"" \\*([O
  1380. @.br
  1381. @..
  1382. @.de [3 \" article in book
  1383. @.if !"\\*([A"" \\*([A
  1384. @.if !"\\*([T"" \\*([o\\*([T.\\*([c
  1385. in \\f2\\*([B\\f1\c
  1386. @.if !"\\*([E"" , ed. \\*([E\c
  1387. @.if !"\\*([I"" , \\*([I\c
  1388. @.if !"\\*([C"" , \\*([C\c
  1389. @.if !"\\*([D"" \& (\\*([D)\c
  1390. @.if !"\\*([P"" \{\
  1391. @.ie \\n([P>0 , pp. \c
  1392. @.el , p. \c
  1393. \\*([P\c\}
  1394. \&.
  1395. @.if !"\\*([O"" \\*([O
  1396. @.br
  1397. @..
  1398. @.de [2 \" book
  1399. @.if !"\\*([A"" \\*([A
  1400. @.if !"\\*([T"" \\f2\\*([T.\\f1
  1401. \\*([I\c
  1402. @.if !"\\*([C"" , \\*([C\c
  1403. @.if !"\\*([D"" \& (\\*([D)\c
  1404. \&.
  1405. @.if !"\\*([G"" Gov't. ordering no. \\*([G.
  1406. @.if !"\\*([O"" \\*([O
  1407. @.br
  1408. @..
  1409. @.de [4 \" report
  1410. @.if !"\\*([A"" \\*([A
  1411. \\*([o\\*([T.\\*([c
  1412. \\*([R\c
  1413. @.if !"\\*([G"" \& (\\*([G)\c
  1414. @.if !"\\*([I"" ,  \\*([I\c
  1415. @.if !"\\*([C"" ,  \\*([C\c
  1416. @.if !"\\*([D"" \& (\\*([D)\c
  1417. \&.
  1418. @.if !"\\*([O"" \\*([O
  1419. @.br
  1420. @..
  1421. @.de [3 \" article in book
  1422. @.if !"\\*([A"" \\*([A
  1423. @.if !"\\*([T"" \\*([o\\*([T.\\*([c
  1424. in \\f2\\*([B\\f1\c
  1425. \&.
  1426. @.if !"\\*([O"" \\*([O
  1427. @.br
  1428. @..
  1429. @.\" define warning that mX does not support references as footnotes
  1430. @.de ]-
  1431. @.AB"Can't do references as footnotes. Use '-e' or '-s' option with 'refer'
  1432. @..
  1433. @.de ]<
  1434. @.\" define the real ]- next-reference macro
  1435. @. de ]-
  1436. @. rm [V [P [A [T
  1437. @. rm [N [C [B [O
  1438. @. rm [R [I [E [D
  1439. @. rf
  1440. \\\\*([F.    \c
  1441. \\..
  1442. @.\"now start the reference subsection
  1443. \\*(RB
  1444. @.rb
  1445. @..
  1446. @.de ]>
  1447. @.re
  1448. @..
  1449. @.de ]]
  1450. this is never
  1451. executed
  1452. and just
  1453. uses up an end-of-file
  1454. bug.
  1455. @..
  1456. @//E*O*F acm.tos/refmacros//
  1457. chmod u=rw,g=,o= acm.tos/refmacros
  1458.  
  1459. echo x - acm.tos/skeleton
  1460. sed 's/^@//' > "acm.tos/skeleton" <<'@//E*O*F acm.tos/skeleton//'
  1461. @.\" run with:
  1462. @.\"    refer -a -cA -e -n -p /u/users.own/refsidx -sADT paper > paper.ref
  1463. @.\"    soelim paper.ref|pic|tbl|eqn |troff -mX
  1464. @.\"
  1465. @.en
  1466. @.hy 14
  1467. @.LL 5i
  1468. @.pl 10i
  1469. @.so refmacros \" must be so'd so refer does not get to trip over its own macros
  1470. @.\" redefine .le and .e1 macros for list items and end of list
  1471. @.dele
  1472. @.sp\\n(spu
  1473. @.ti-\\n(sou
  1474. @.if\\n(l7=1\{\
  1475. \\n+(l1.\t\c\}
  1476. @..
  1477. @.dee1
  1478. @.br
  1479. @.in-\\n(snu
  1480. @.if\\n-(l0<0 .AB"Ending more lists than started"
  1481. @.ie\\n(l0=0\{\
  1482. @.RT\}
  1483. @.el\{\
  1484. @.nrl1\\n(l2 1
  1485. @.nrl2\\n(l3 1
  1486. @.nrl7\\n(l8
  1487. @.nrl8\\n(l9
  1488. @.rnl5 l4
  1489. @.rnl6 l5
  1490. @.afl1 \\*(l4\}
  1491. @.sp\\n(spu
  1492. @..
  1493. @.\" redefine start and end example macros .es & .ee
  1494. @.dees
  1495. @.ie\\n(ex .AB"Nesting examples is a no no"
  1496. @.el.nr ex 1
  1497. @.sp\\n(siv
  1498. @.nrFI\\n(.u
  1499. @.nf
  1500. @.ll-\\n(sju
  1501. @.in+\\n(sju
  1502. @..
  1503. @.deee
  1504. @.ie!\\n(ex .AB"Ending an example (.ee) without starting an example"
  1505. @.el.nr ex 0
  1506. @.sp\\n(skv
  1507. @.in-\\n(sju
  1508. @.ll+\\n(sju
  1509. @.if\\n(FI .fi
  1510. @..
  1511. @.\" redefine .RT to restore back to a smaller tabbing distance
  1512. @.deRT
  1513. @.ien .ta .3i +.3i +.3i +.3i +.3i +.3i +.3i +.3i +.3i +.3i
  1514. @.el.ta .25i +.25i +.25i +.25i +.25i +.25i +.25i +.25i +.25i +.25i
  1515. @..
  1516. @.\" then do that tabbing
  1517. @.RT
  1518. @.\" now set a bunch of registers
  1519. @.nr si 1u \" # of spaces used to start an example (used as v).
  1520. @.nr se 4u \" # of spaces to indent for a reference (used as ems).
  1521. @.nr sj 0.25i \" space to indent for an example (used as u);
  1522. @.nr sk 1u \" # of spaces left at the end of an example (used as v);
  1523. @.nr sf .125i
  1524. @.nr sg 2u
  1525. @.nr sr 0u
  1526. @.nr sm 1i
  1527. @.nr sh 0u
  1528. @.nr sd 0u
  1529. @.nr sn .25i
  1530. @.nr so .25i
  1531. @.nr sp 0u
  1532. @.de rb
  1533. @.ta .1875i +5m +5m
  1534. @.nr t1 \\n(.i
  1535. @.ls \\n(sq
  1536. @.in .1875i
  1537. @..
  1538. @.hw TOPLAS
  1539. @.ds To ''\f7\h'2i'\s8Title\h'.25i'\u.\d\h'.25i''%\s0\fP'
  1540. @.ds Te '\f7\s8%'\h'.25i'\u.\d\h'.25i'A. Uthor1 and A. U. Thor2\h'2.625i'\s0\fP''
  1541. @.ds BL ''%''
  1542. @.\" redefine some footnote stuff to match Transactions format
  1543. @.de(n
  1544. @.ie\\nx .ne \\n(rcv-2v
  1545. @.el.ne \\n(rcv
  1546. @.if\\n(fn .AB"Nesting of footnotes is a no no"
  1547. @.nrfn1
  1548. @.daFN
  1549. @.ev1
  1550. @.ie\\n+x=1\{\
  1551. @.sp 2p
  1552. \s-2\l'5i\(ul'\s+2
  1553. @.sp 2p\}
  1554. @.el.sp \\n(srv
  1555. @.fi
  1556. @.ad
  1557. @..
  1558. @.defn
  1559. @.ie\\nx .ne \\n(rcv-2v
  1560. @.el.ne \\n(rcv
  1561. @.if\\n(fn .AB"Nesting of footnotes is a no no"
  1562. @.nrfn1
  1563. @.daFN
  1564. @.ev1
  1565. @.ie\\n+x=1\{\
  1566. @.sp 10p
  1567. \s-2\l'.67i\(ul'\s+2
  1568. @.br\}
  1569. @.el.sp \\n(srv
  1570. @.fi
  1571. @.ad
  1572. @..
  1573. @.\" redefine start of section - to be used for 2 or higher level section
  1574. @.de su
  1575. @.ne 3v
  1576. @.sp 10p
  1577. \&\f7\\$1\fP
  1578. @..
  1579. @.\" define start of major section - to be used for level 1 section
  1580. @.de SU
  1581. @.ne 3v
  1582. @.sp 12p
  1583. \&\f7\\$1\fP
  1584. @..
  1585. @.\" for first paragraph in section
  1586. @.de PP
  1587. @.sp 4p
  1588. @..
  1589. @.de sc
  1590. @.sp 6p
  1591. \\h'.25i'\f1\\$1\ \ \ \f2\\$2\f1\\h'1n'\\c
  1592. @..
  1593. @.ig
  1594. @.\" some useful eqn defines
  1595. @.EQ
  1596. define circleplus % "\(a+" %
  1597. define bigleft % "\f1\s+4(\s0\fP" %
  1598. define bigright % "\f2\s+4)\s0\fP" %
  1599. define lessthan % {roman "<"} %
  1600. define greaterthan % {roman ">"} %
  1601. define leftbrace % {roman "{"} %
  1602. define rightbrace % {roman "}"} %
  1603. define fatleftbrace % {bold "{"} %
  1604. define fatrightbrace % {bold "}"} %
  1605. define member % "\(mo" %
  1606. define identical % "\(==" %
  1607. define equiv % "\(==" %
  1608. define implies % "\(sp" %
  1609. define orsign % "\(lo" %
  1610. define andsign % "\(la" %
  1611. define oppA % "\(fa" %
  1612. define oppE % "\(te" %
  1613. define supset % "\(sp" %
  1614. define !supset % "\(ip" %
  1615. @.EN
  1616. @..
  1617. @.\" now we begin the actual paper
  1618. @.ps 18
  1619. @.na
  1620. @.nh
  1621. @.vs 20
  1622. @.ft 7
  1623. @.ls 1
  1624. Title
  1625. @.sp
  1626. @.ad
  1627. @.hy 14
  1628. @.ps 10
  1629. @.vs 10
  1630. ARNOLD UTHOR
  1631. @.sp 4p
  1632. Somewhere
  1633. @.sp
  1634. and
  1635. @.sp
  1636. ARTHOR U. THOR
  1637. @.sp 4p
  1638. Nowhere
  1639. @.br
  1640. @.(n
  1641. @.ps 8
  1642. @.vs 10
  1643. @.ft 1
  1644. This research was supported in part by the author's kids.
  1645. @.br
  1646. A preliminary report of this work appeared in the local garbage dump.
  1647. @.br
  1648. Authors' Addresses:
  1649. A. Uthor, Somewhere, Rainbow City, Garden State ZIP, U.S.A.;
  1650. A. U. Thor, Nowhere, Fun City, State of Imagination, Neverland
  1651. @.br
  1652. Permission to copy without fee all or part of this material is granted
  1653. provided that the copies are not made or distributed for direct commercial
  1654. advantage, the ACM copyright notice and the title of the publication and
  1655. its date appear, and notice is given that copying is by permission of the
  1656. Association for Computing Machinery. To copy otherwise, or to republish,
  1657. requires a fee and/or specific permission.
  1658. @.br
  1659. \(co ACM 0000-0000/86/0000-0000 $00.00
  1660. @.ef
  1661. @.sp 6p
  1662. @.ft 1
  1663. \s-2\l'5i'\s+2
  1664. @.sp 12p
  1665. @.vs 10
  1666. @.ps 8
  1667. Abstract comes here and
  1668. goes on and on and on and on and on and on and on and on
  1669. and on and on and on and on and on and on and on
  1670. and on and on and on and on and on and on and on.
  1671. @.sp 4p
  1672. Categories and Subject Descriptors:
  1673. D.2.4 [\f3Software Engineering\fP]:
  1674. Program Verification\(em\f2correctness proofs\fP;
  1675. D.3.1 [\f3Programming Languages\fP]:
  1676. Formal Definitions and Theory\(em\f2semantics\fP;
  1677. @.sp 4p
  1678. General Terms: Design, Languages, Theory, Verification
  1679. @.sp 4p
  1680. Additional Key Words and Phrases:
  1681. Axiomatic semantics,
  1682. program specification
  1683. @.br
  1684. @.sp 5p
  1685. @.vs 12
  1686. @.ps 10
  1687. \s-2\l'5i'\s+2
  1688. @.sp 10p
  1689. @.EQ
  1690. delim $$
  1691. @.EN
  1692. @.SU "1\ \ \ MAJOR SECTION"
  1693. @.PP
  1694. First paragraph. Goes on and on and on and on and on and on and on and on
  1695. and on and on and on and on and on and on and on
  1696. and on and on and on and on and on and on and on
  1697. and on and on and on and on and on and on and on
  1698. and on and on and on and on and on and on and on
  1699. and on and on and on and on and on and on and on
  1700. @.[
  1701. inverted indexes lesk
  1702. @.]
  1703. and on and on and on and on and on and on and on
  1704. and on and on and on and on and on and on and on
  1705. and on and on and on and on and on and on and on.
  1706. @.pp
  1707. Second paragraph. Goes on and on and on and on and on and on and on and on
  1708. and on and on and on and on and on and on and on
  1709. and on and on and on and on and on and on and on
  1710. and on and on and on and on and on and on and on
  1711. and on and on and on and on and on and on and on
  1712. and on and on and on and on and on and on and on
  1713. and on and on and on and on and on and on and on
  1714. and on and on and on and on and on and on and on
  1715. and on and on and on and on and on and on and on
  1716. and on and on and on and on and on and on and on
  1717. and on and on and on and on and on and on and on.
  1718. @.su "1.1\ \ \ Minor Section"
  1719. @.PP
  1720. First paragraph. Goes on and on and on and on and on and on and on and on
  1721. and on and on and on and on and on and on and on
  1722. and on and on and on and on and on and on and on
  1723. and on and on and on and on and on and on and on
  1724. and on and on and on and on and on and on and on
  1725. and on and on and on and on and on and on and on
  1726. and on and on and on and on and on and on and on
  1727. and on and on and on and on and on and on and on
  1728. and on and on and on and on and on and on and on
  1729. and on and on and on and on and on and on and on
  1730. and on and on and on and on and on and on and on
  1731. and on and on and on and on and on and on and on.
  1732. Now comes the end of the paper.
  1733. @.sp 8p
  1734. @.su "\s8ACKNOWLEDGEMENTS\s0"
  1735. @.ps 10
  1736. @.sp 2p
  1737. The authors thank all those that they bribed to get this paper published.
  1738. @.ps 8
  1739. @.vs 10
  1740. @.sp 8p
  1741. @.su "\s9REFERENCES\s0"
  1742. @.sp 2p
  1743. @.[
  1744. $LIST$
  1745. @.]
  1746. @//E*O*F acm.tos/skeleton//
  1747. chmod u=rw,g=,o= acm.tos/skeleton
  1748.  
  1749. exit 0
  1750. Daniel M. Berry         UCLA Computer Science Department
  1751. 3531 Boelter Hall, UCLA, Los Angeles, CA 90024-1600, USA
  1752. dberry@cs.ucla.edu  ..!{sdcrdcf,ihnp4,cepu,trwspp,ucbvax}!ucla-cs!dberry
  1753.  
  1754. -- 
  1755. Rich $alz            rsalz@pineapple.bbn.com
  1756. Cronus Project, BBN Labs    "Anger is an energy"
  1757.