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

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