summaryrefslogtreecommitdiff
path: root/texmf-dist/doc/latex/acmtrans/acmtr2e.tex
blob: f6dd45ba738126e5eff742da23068877e1a692f0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
% acmtr.tex
% revised 1/20/97
% $Header: acmtr.tex,v 1.5 2/14/96 11:07:57 boyland Exp $

\documentclass[hyperref]{acmtrans2e}
\usepackage[pdfmark]{hyperref}

%&t&{\tt #}&
%&v&\verb|#|&

\newcommand{\BibTeX}{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em
    T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}

\firstfoot{ACM Transactions on Document Formatting,
  Vol.\ 8, No.\ 1, January 1999, Pages \pages.}

\runningfoot{ACM Transactions on Document Formatting,
  Vol.\ 8, No.\ 1, January 1999.}

\markboth{Leslie Lamport et al.}{Preparing Articles for the ACM Transactions}

\title{Preparing Articles for the ACM Transactions
with \LaTeX}
\author{LESLIE LAMPORT\\Digital Equipment Corporation\\
ANDREW W. APPEL\\Princeton University \and
JOHN TANG BOYLAND\\University of California, Berkeley}
\begin{abstract}
The \LaTeX\ {\tt acmtrans} document style formats articles in 
the style of the ACM transactions.  Users who have prepared their
document with \LaTeX\ can, with very little effort, produce
camera-ready copy for these journals.  
%Then the ACM production department
%will re-typeset from scratch anyway, introducing typographical errors.
\end{abstract}

\category{D.2.7}{Software Engineering}{Distribution and Main\-ten\-ance}%
[documentation]

\category{H.4.0}{Information Systems Applications}{General}

\category{I.7.2}{Text Processing}{Document Preparation}[languages \and
  photocomposition]

\terms{Documentation, Languages}

\keywords{Document preparation, publications, typesetting}

\begin{document}

\setcounter{page}{111}

\begin{bottomstuff}
Author's address: L. Lamport, System Research Center,
Digital Equipment Corporation, 130 Lytton Ave., Palo Alto, CA 94301.\newline
Start of a second footnote ...
\permission
\copyright\ 1999 ACM 0164-0925/99/0100-0111 \$00.75
\end{bottomstuff}
\maketitle

\section{Introduction}

This article is a description of the \LaTeX\ {\tt acmtrans} document
style for typesetting articles in the format of the ACM
transactions---{\em Transactions on Programming Languages and
Systems}, {\em Transactions on Database Systems}, etc.  It has, of
course, been typeset using this document style, so it is a
self-illustrating article.  The reader is assumed to be familiar
with \LaTeX, as described by~\citeN{lamport:latex}.

This document also describes the {\tt acmtrans} bibliography style.

\LaTeX\ is a document preparation system
implemented as a macro package in Donald Knuth's
\TeX\ typesetting system~\cite{knuth:texbook}.  It is based
upon the premise that the user should describe the logical structure of
his document and not how the document is to be formatted.  Formatting
is under the direction of a {\em document style} chosen by the user.
The user can dramatically change the way the document is formatted by
simply choosing a different document style.  The idea of separating the
logical structure from the formatting comes from Brian Reid's {\em
Scribe\/} system~\cite{reid:scribe}.  


It is impossible to provide predefined logical structures to handle all
situations that may arise in a document, so users must sometimes make
their own formatting decisions.  \LaTeX\ provides a number of features
to assist in this task and, if necessary, the user can call upon the
full power of \TeX, which is probably the most powerful typesetting
system currently available.  However, very little user formatting is
necessary for the majority of documents that appear in journals such as
the ACM transactions.  Consequently, it is quite easy to convert
an existing \LaTeX\ input file to the {\tt acmtrans} style.

\section{The Title Page}

\subsection{The Title, Author(s), and Abstract}

Following order is mandatory to generate a correct title page:

\begin{verbatim}
		      \documentstyle{acmtrans}
		      \markboth{}{}
		      \title{}
		      \author{}
		      \begin{abstract} ...  \end{abstract}
		      \category{}{}{}
		      \terms{} 
		      \keywords{}
		      \begin{document}
		      \begin{bottomstuff} ... \end{bottomstuff}
		      \maketitle
\end{verbatim}

\subsubsection{Title and Author}
The \LaTeX\ \verb|\title| and \verb|\author| declarations and the
\verb|\maketitle| command are employed as usual.  However, the user
must format the author a little differently to match the ACM standard.
The following example \cite{6:1:1} illustrates most features:
\begin{quote}
\begin{verbatim}
\author{JAMES E. ARCHER, JR.\\ Rational Machines
        \and RICHARD CONWAY and FRED B. SCHNEIDER \\ 
             Cornell University}
\end{verbatim}
\end{quote}
Note that authors' names are in uppercase letters, authors are
separated from their affiliation by a \verb|\\| command, multiple
authors with the same affiliation are separated by ``and'' (or commas
and ``and'' if there are more than two), and authors with different
affiliations are separated by an \verb|\and| command.  The following
example \cite{6:3:380} shows what to do if there are more than
two affiliations:
\begin{quote}
\begin{verbatim}
\author{E. KORACH \\ IBM Israel \\
        D. ROTEM \\ University of Waterloo
        \and N. SANTORO \\ Carleton University}
\end{verbatim}
\end{quote}
In both the title and the author, you may have to insert \verb|\\|
commands if lines need to be broken. 

\subsubsection{Abstract}
The abstract is typed as usual with the {\tt abstract} environment.
However, this environment must come before the \verb|\maketitle|
command.


\subsection{Content Indicators and Keywords}

The content indicators and keywords are entered with \LaTeX\ 
declarations.  The CR categories are indicated with \verb|\category|
declarations.  The first CR category of this article, appearing
right below the abstract, was entered with the following command:
\begin{quote}
\begin{verbatim}
\category{D.2.7}{Software Engineering}{Distribution and 
  Maintenance}[Documentation]
\end{verbatim}
\end{quote}
Note that the last argument (which contains the subject descriptors)
is optional, since some categories have none.  Multiple subject descriptors
are separated by \verb|\and| commands, as in the last category of
this article:
\begin{quote}
\begin{verbatim}
\category{I.7.2}{Text Processing}{Document Preparation}
         [Languages \and Photocomposition]
\end{verbatim}
\end{quote}
Use a separate \verb|\category| declaration for each CR category;
they will be listed in the order that the commands appear.  The
\verb|\category| commands must precede the \verb|\maketitle|
command.

The General Terms are declared with a (single) \verb|\terms|
command as in the one for this article:
\begin{quote}
\begin{verbatim}
\terms{Documentation, Languages}
\end{verbatim}
\end{quote}
The \verb|\terms| declaration must come before the \verb|\maketitle|
command.  The terms {\it must} be chosen from the following list:
\begin{quote}
Algorithms; 
Design; 
Documentation; 
Economics; 
Experimentation; 
Human factors; 
Languages; 
Legal aspects; 
Management; 
Measurement; 
Performance; 
Reliability; 
Security; 
Standardization; 
Theory; 
Verification; 
\end{quote}
The general terms are
orthogonal to the Categories, at least theoretically, and so
may be applied to any elements of the classification tree.

Think of them as `perspectives' from which any topic may
be approached. Thus you could use {\em Theory} or {\em Performance} for an
article about {\em C.2.1 Distributed Networks}. However, 
some of these general terms actually slide over into
content areas. Thus {\em Legal aspects} is a general term
applicable to any category, but also an entire node in the tree,
{\em K.5}, devoted to {\em Legal aspects of computing,} with many sub-topics.

So, though perhaps not perfect, the General Terms are most useful
in online searches when used in combination with categories.

The ``Additional Keywords and Phrases'' item on the title page
is provided by the \verb|\keywords| declaration, {\bf listed alphabetically\/}.
For this article,  
they were produced by the following command:
\begin{quote}
\begin{verbatim}
\keywords{Document preparation, publications, typesetting}
\end{verbatim}
\end{quote}
There is no prescribed list of ``additional keywords;'' use any that
you want.

\subsection{The Bottom of the Title Page}

The bottom of the article's title page contains acknowledgment of
support, the author(s) address(es), a ``permission to copy'' statement,
and a line containing a copyright symbol (\copyright) and a mysterious
number.  This is all entered with a {\tt bottomstuff} environment;
there must be no blank line after the \verb|\begin{bottomstuff}|
command.  The permission to copy statement is produced by the
\verb|\permission| command.

\subsection{The Page Headers}

\verb|\markboth{}{}| generates the left- and right-page headers. The first 
argument is the author's name(s):

\begin{itemize}
\item If there is one author, then use author's full name (ex. Leslie Lamport);
\item If there are two authors, then abbreviate each author's first name
           (L.~Lamport and A.~Appel);
\item If there are more than two authors, then the format is Leslie Lamport et al.
\end{itemize}

The second argument of \verb|markboth| is the title;
if the title is too long, 
contract it by omitting subtitles and phrases, not by abbreviating words.


\section{Ordinary Text}

Most of the body of the text is typed just as in an ordinary
document.  This section lists the differences.

\subsection{Lists}

\subsubsection{Enumeration and Itemization}

Let's begin with enumeration.
\begin{longenum}
\item The ACM style has two different formats for 
itemized lists, which I will call the {\em long\/} and {\em short\/}
formats.  The long format is generally used when the individual items
are more than two or three lines long, but ACM has been inconsistent in
their choice of format, sometimes using the long format for lists whose
items are all one or two lines long and the short format for lists of
long items.  This list is an example of the long format.

\item The ordinary {\tt enumerate} environment
produces the short format.  For the long format, use the
{\tt longenum} environment.
\begin{enumerate}\itemindent 10pt
\item This inner enumeration uses the short format.
\item It was produced using \LaTeX's ordinary {\tt enumerate}
      environment.
\item ACM has no standard for enumerations nested more than
      two levels deep, so the {\tt acmtrans} style does not
      handle them well.
\end{enumerate}
\end{longenum}

Itemized lists are similar to enumerated ones.
\begin{longitem}
\item As with enumerations, there is a long and a short
format for itemized lists.  This list is in the long format.

\item The long format is produced by the {\tt longitem}
environment.  The ordinary {\tt itemize} environment
uses the short format.
\begin{itemize}
\item This is an itemized list using the short format.

\item It was produced  with the {\tt itemize} environment
that is used in ordinary \LaTeX\ input.
\end{itemize}
\end{longitem}

It is interesting to observe that the style of tick mark used
for an itemization changed around 1985 from an en dash
(--) to an em dash (---). % jtb: changed!

\subsubsection{Descriptions}

A list is a sequence of displayed text elements, called items, each
composed of the following two elements:
\begin{describe}{{\em item body\/}:}
\item[{\em label\/}:]
A marker that identifies or sets off the item.  It
is a number in an enumerated list and a tick mark in an itemized list.

\item[{\em item body\/}:] The text of the item.  It is usually ordinary prose,
but sometimes consists of an equation, a program statement, etc.

Or another paragraph, which will be indented like normal paragraphs.
\end{describe}

When the labels of a list are names rather than numbers or tick marks,
the list is called a {\em description\/} list.
The ACM style
has both long and short description lists.  The above list is a short
description list; the bodies of all the items are indented enough to
accommodate the widest label.
The following list is a long description list.
The {\tt acmtrans} style provides both kinds of description lists:
\begin{description}
\item[short]
The {\tt describe} environment 
%that works the
%same as the {\tt description} environment except that it 
takes an argument, which should be the same as the argument of the \verb|\item|
command that produces the widest label.  Thus, the above description
list was begun with the command
\begin{quote}
\begin{verbatim}
\begin{describe}{{\em item body\/}:}
\end{verbatim}
\end{quote}

A description label is often emphasized in some way; in this example I
used the \LaTeX\ \verb|\em| command, italicized the label.  The ACM
appears to have no standard convention for formatting the labels of a
description list, so the {\tt describe} environment leaves the label
formatting up to you.  An \verb|\hfill| command can be used to produce
a label like ``{\em gnu \hfill --\/}'' where {\em gnu\/} is flush left
against the margin and the ``--'' is aligned flush right next to the
item body.

\item[long]
The standard \LaTeX\ {\tt description} environment produces a long
description list.  It italicizes the labels, and puts a period after
them, which seems to be what is done in the ACM transactions.
\end{description}

\subsection{Theorems, Etc.}

%\newtheorem{theorem}{Theorem}[subsection]
%\begin{theorem}
%testing section counter
%\end{theorem}

\LaTeX\ provides a single class of theorem-like environments, which are
defined with the \verb|\newtheorem| command.  The ACM transactions
style divides this class into two subclasses that are formatted
differently.  The first class includes theorems, corollaries, lemmas,
and propositions.  It is produced with the \verb|\newtheorem| command.
Such a theorem-like environment is often followed by a proof, for which
the {\tt acmtrans} style provides a {\tt proof} environment.

\newtheorem{subtheorem}{Theorem}[subsection]
\begin{subtheorem}
Notice that theorems are numbered inside the nearest section\newline subsection.
\end{subtheorem}

When listing within the theorem environment, this style will now produce
roman parantheses. Thank you David Sands.

\begin{proof}	
This theorem is an instance of {\tt subtheorem}, theorems nested in
subsections.
\end{proof}


The second subclass of theorem-like environments includes ones for
definitions, examples, and remarks.  These environments are defined
with the \verb|\newdef| command, which works the same as
\verb|\newtheorem|.  Here
is an example of such an environment.

\newdef{subexample}[subtheorem]{Definition}

\begin{subexample}
This is an example of a Definition, typed with an {\tt subexample}
environment defined with \verb|\newdef|.
As you can see theorems are italicized and definitions are not.
\end{subexample}

\newtheorem{subproperty}[subtheorem]{Property}

Sometimes theorem-like environments are numbered in unusual ways, or
are identified by a name.  Consider the following example
from~\citeN{7:3:359}.
\begin{subproperty}[{\rm Ca}]
Let syn $\in$ Syn, occ $\in$ Occ be maximal and sta $\in$ Sta.  Then
Tcol\/{\rm [[}syn\/{\rm ]]} occ sta\hspace{-2pt} $\downarrow\!1$ $=$
Tsto\/{\rm [[}syn\/{\rm ]]} sta.
\end{subproperty}
\begin{proof}[of Property {\rm Ca}]
By straightforward structural induction, and is \linebreak
omitted.
\end{proof}
It was obtained by giving optional arguments to the
{\tt property} environment (defined with \verb|\newtheorem|)
and the {\tt proof} environment and was typed as follows.
\begin{quote}
\begin{verbatim}
\begin{subproperty}[{\rm Ca}] Let ...  \end{subproperty}
\begin{proof}[of Property {\rm Ca}]  By straightforward ...
\end{verbatim}
\end{quote}
Notice that the optional argument to the {\tt property} environment
suppresses the automatic numbering.  If a null optional argument
were given to this environment by typing ``{\tt []}'', then
it would have produced the label ``{\sc Property.}''  This is
how unnumbered theorems, etc.\ are produced.

Environments defined by \verb|\newdef| use the optional
argument the same way as those defined by \verb|\newtheorem|.

\vskip10pt
With this definition

\begin{verbatim}
     \newtheorem{secthm}{Theorem}[section]
\end{verbatim}
\noindent
one can solve the counter problems and counter and label problems for
theorems, lemmas and definitions etc.

With the above definition and with the following variations
\begin{verbatim}
     \newdef{secdefn}[secthm]{Definition} or
     \newdef{seclem}[secthm]{Lemma} or
     \newdef{sectheo}{secthm]{Theorem} etc.
\end{verbatim}
\noindent
one can achieve
\begin{enumerate} 
\item correct counters in definitions, theorems etc. in \verb|\section| environment.
For example, to generate ``Definition 4.1.''; without the above two definitions, it produces ``Definition 4.0.1.'' and
\item correct counter and label associated with definitions, theorems etc. in any environment (section or subsection). For example, 
\begin{verbatim}
     \begin{secdefn}[\thesecthm\ (label)] 
       text text text
     \end{secdefn}
\end{verbatim}
produces the correct definition counter + correct placement of the period as in
``Definition 3.1 (label).''.
\end{enumerate}

\subsection{Overfull hbox - Stretching/filling one horizontal line}

To solve a line break due to ``Overfull \verb|\hbox|'', here is a plain \TeX\ 
solution; here \verb|\hsize| is the default setting of acmtrans.sty:

\begin{center}
\verb|\hbox to \hsize{line sentence to be stretched}|
\end{center}

This can be used in a list environment as well but \verb|\hsize| declared to a reduce
dimension:

\begin{verbatim}
   \hbox{\vbox{\hsize = less than the default setting
   \hbox to \hsize{line sentence to be stretched}}}
\end{verbatim}

\subsection{Programs}

Good formatting of programs requires a knowledge of their semantics,
and is beyond the scope of a document production system.  While
``pretty printers'' are useful for handling the many pages of a real
program, the short examples that are published in articles should be
formatted by hand to improve their clarity.  The \LaTeX\ {\tt tabbing}
environment makes the formatting of programs relatively easy,
especially if the user defines commands for his particular language
constructs.
One may also use the {\tt verbatim} environment.

The ACM transactions style requires that programs be formatted with
different size fonts, depending upon whether they appear in the text or
in a figure, but that is handled by the figure macro which
automatically sets the correct font size.
%The {\tt acmtrans} style provides a {\tt program}
%environment that is exactly the same as the standard {\tt tabbing}
%environment except for the size of the fonts it uses.  This environment
%should be used for formatting programs, whether they appear in the
%running text or in a figure.
Moreover, programs in running text should be indented two ems 
on each side (as provided by the {\tt quote} environment), and
programs in regular figures should be centered.
(Programs in ``narrow figures'' (q.v.) are left or right justified
automatically).

Here is an example of a program:
\begin{quote}
\begin{tabbing}
{\bf type} date =\\
\hspace*{1em}\= {\bf record} \= day: 1\,.\,.\,31;\+\+\\
                                month: 1\,.\,.\,12;\\
                                year: integer \-\\
                {\bf end} \-\\
{\bf var} mybirth, today : date;\\
{\bf var} myage : integer;
\end{tabbing}
\end{quote}
Figure~\ref{fig:prog} shows how the same program looks in a figure.
\begin{figure}
\centerline{\parbox{104pt}{% it's safe to overestimate the size here
\begin{tabbing}
{\bf type} date =\\
\hspace*{1em}\= {\bf record} \= day: 1\,.\,.\,31;\+\+\\
                                month: 1\,.\,.\,12;\\
                                year: integer \-\\
                {\bf end} \-\\
{\bf var} mybirth, today : date;\\
{\bf var} myage : integer;
\end{tabbing}}}
\caption{An example of a program centered in a figure}
\label{fig:prog}
\end{figure}

%The ACM standard calls for the program to start flush at the left
%margin, with each new level of nesting indented by a distance of one
%em, and with the continuation of broken lines indented two ems.  However,
%this standard is not applied consistently.

In addition to formatting programs, the {\tt tabbing} environment may be
used for similar displayed material such as BNF syntax specifications
and rewrite rules.

\subsection{User-specified Formatting}

If \LaTeX\ does not provide a particular text structure, the user must
define it himself and specify how it is to be formatted.  This is most
easily done by defining the new structure in terms of existing ones;
the \LaTeX\ {\tt list} and {\tt trivlist} environments are useful
tools.  However, it is occasionally necessary for the user to provide
explicit formatting commands.  

The best guide to how something should be formatted is what has been
done in the ACM transactions.  While horizontal spacing tends to depend
strongly upon the particular text, there is a standard amount of
vertical space used to set off text.  The ordinary \LaTeX\ 
\verb|\medskip| command produces a vertical space of the appropriate
size.

\section{Figures and Tables}

\subsection{Figures}

The ordinary \LaTeX\ {\tt figure} environment works as usual.
Figure~\ref{fig:ordinary}, which is Figure~6 of \citeN{7:3:359}, a bogus reference,
\begin{figure}
\centering
\(\begin{array}{c|ccc}
     & \bot & F & T \\
\hline
\bot & \bot & \bot & T \\
F    & \bot & F    & T \\
T    & \bot & T    & T
\end{array}\)
\caption{The truth table for the parallel-or.}
\label{fig:ordinary}
\end{figure}
was produced in this way.
Note that figures should never appear in the text or at the bottom of
a page. (If you use the figure placement optional argument, use only
\verb"t" or \verb"p" or both; do not use \verb"h" or \verb"b").

Some figures (and tables) have no caption except for the figure number.
For such figures (and tables), one uses a \verb|\nocaption| command,
which has no argument, instead of the \verb|\caption| command.

\begin{narrowfig}{3in}
\begin{tabbing}
{\bf type} date =\\
\hspace*{1em}\= {\bf record} \= day: 1\,.\,.\,31;\+\+\\
                                month: 1\,.\,.\,12;\\
                                year: integer \-\\
                {\bf end} \-\\
{\bf var} mybirth, today : date;\\
{\bf var} myage : integer;
\end{tabbing}
\caption{An example of a program displayed in a figure.}
\label{fig:narrow}
\end{narrowfig}

In addition to this method of formatting figures, the ACM transactions
also uses figures with side captions, as in Figure~\ref{fig:narrow}.
Such a figure is produced with the {\tt narrowfig} environment.  This
environment has a single mandatory argument, which is the width of the
figure.
Note that if the figure is generated by {\tt tabbing} or {\tt
tabular}, one can safely overestimate the size.
It works just like the ordinary {\tt figure} environment,
except it must contain only one \verb|\caption| or \verb|\nocaption|
command, which must come after the figure itself.  

The {\tt narrowfig} environment should obviously not be used unless the
figure is narrow enough to leave a reasonable amount of space beside it
for the caption.  The ACM seems to have no consistent policy for choosing
which style of figure to employ.

\subsection{Tables}

The ordinary \LaTeX\ {\tt table} environment can be used, but it
requires the user to add formatting commands to match the ACM
transactions style.  This formatting is performed automatically
if the {\tt acmtable} environment is used instead, producing
the result shown in Table~\ref{tab:table}, which shows the same
table displayed in Figure~\ref{fig:ordinary}.
\begin{acmtable}{100pt}
\centering
\(\begin{array}{c|ccc}
     & \bot & F & T \\
\hline
\bot & \bot & \bot & T \\
F    & \bot & F    & T \\
T    & \bot & T    & T
\end{array}\)
\caption{The truth table for the parallel-or.}
\label{tab:table}
\end{acmtable}
This environment has a mandatory argument that equals the width
of the table---more precisely, it specifies the width of the rules
above and below the table.  There must be only one 
\verb|\caption| or \verb|\nocaption|
command, which must come after the text of the table.  
(Even though the table caption is printed above the table, the
\verb|\caption| command comes after the table in the input file.)


\section{The End of the Document}

\subsection{Appendix}

The appendix (if the article has one) should precede the
acknowledgments (if any) and bibliography.
If the appendix isn't broken into separate sections,
then you should add the following commands after the \verb|\appendix|
command:
\begin{quote}
\begin{verbatim}
\section*{APPENDIX}
\setcounter{section}{1}
\end{verbatim}
\end{quote}
Setting the counter is necessary so that numbered subsections and
theorems will have the names ``A.{\em N\/}'' in the text.

For an article with multiple appendices, one begins
the appendix with an \verb|\appendix| followed by
\verb|\section*{APPENDIX}|, and then starts each
appendix with an ordinary \verb|\section| command.

Information about electronic appendices is given in
Section~\ref{sec:elecappendix} and in the Appendix.

\subsection{Acknowledgments}

An optional acknowledgments section follows all the text of the
article, including any appendices.  It is produced with the
{\tt acks} environment.  (Since I can never remember how many
{\em e\/}'s there are in {\em acknowledgments}, it seemed
like an abbreviation was in order for the environment name.
One may also spell out the name as {\tt acknowledgments}).
Sometimes, there is just a single acknowledgment.
This may be given using the {\tt ack} or {\tt acknowledgment}
environment.

\subsection{Bibliography}

The bibliography follows the acknowledgments, and is the last
significant body of text in the article.  It is produced by the usual
\LaTeX\ commands. 

In 1993 the ACM changed bibliography styles, from numerical citations [13]
to author's name and year \cite{7:3:359}. 
The user is encouraged to let \LaTeX\ produce his bibliography
with the \verb|\bibliography| command, letting \BibTeX\ handle the
formatting of the entries.
The \verb|acmtrans.sty|
bibliography style file now generates citations in this format.
Put
\begin{quote}
\begin{verbatim}
\bibliographystyle{acmtrans}
\end{verbatim}
\end{quote}
between the \verb|\begin{document}| and the \verb|\end{document}|.

The conventional \verb|\cite| command will generate citations as usual in
\LaTeX.
Note that the style file automatically omits repeating author
names~\cite{7:3:359,test}.
If you mention the work explicitly in your prose, you should use
\verb|\citeN| command. This command generates for example, \citeN{7:3:359}
discusses denotational program transformations. Or, you use 
\verb|\citeyear| and say that Nielson \citeyear{7:3:359} discusses
them.
The command \verb|\shortcite| is an alias for \verb|\citeyear|.
Either command may be used in cases where one refers to multiple
works (of the same authors!).
For example, \verb|Nielson~\shortcite{7:3:359,test}| generates
Nielson~\shortcite{7:3:359,test}.
%To generate author~[year1; year2], give the author's name and then use
%the command \verb|\citeNN{year1,year2}|, 
%which generates ``Nielson~\citeNN{7:3:359,test}.''

More variations of \verb|\cite| are discussed in comments in the
\verb|acmtrans.sty| file. Here are some {\bf examples} on how to get

\begin{enumerate}
\item{Appel [1996]} $\rightarrow$ using either \verb|\citeN| or \verb|\citeyear|
\item{[Kempe 1879]} $\rightarrow$ \verb|\cite{kempe79}|
\item{Appel [1995; 1996]} $\rightarrow$ \verb|\shortcite{ref1-key,ref2-key}| 
\item{Fil\'e [1981a; 1981b]} $\rightarrow$ \verb|Fil\'{e}~\shortcite{engelfriet/file:81sweep,|\\
\hbox{}\kern.2in\verb|engelfriet/file:81passes}| or simply \verb|\shortcite{ref1-key, ref2-key}|
\item{[Appel and Shao 1992; Shao and Appel 1994]} $\rightarrow$ 
\verb|\cite{appel-zhong-lsc92,|\\
\hbox{}\kern3.5in\verb|shao94:clo}|
\item{Chow and Harrison [1992; 1994]} $\rightarrow$ 
   Chow~and~Harrison~[\verb|\citeyearNP{CH-popl92};|
   \hbox{}\kern2in\verb|\citeyearNP{CH-iccl94}|]  
\item{[Chow and Harrison 1992; 1994; Cousot and Cousot 1984]} $\rightarrow$ 
\verb|[\citeNP{CH-popl92};|\\
  \hbox{}\kern1.7in \verb|\citeyearNP{CH-iccl94}; \citeNP{CC-apct77}]|
\item{[Cytron et al. 1991]} $\rightarrow$ \verb|\cite{cytron-et-al-toplas91}|
\item{Briggs et al. [1994]} $\rightarrow$ \verb|\citeN{briggs-cooper-torczon-toplas94}| or
\item{Duri et al. [1993]} $\rightarrow$ \verb|Duri~et~al.~\citeyear{DBDS-sigsoft93}|
\item{[Chaitin 1982; Chaitin et al. 1981]} $\rightarrow$ \verb|\cite{chaitin-pldi82,chaitin-et-al-cl81}|
\item{[Alblas 1991; Deransart et al. 1988; Knuth 1868]} $\rightarrow$ 
\verb|\cite{alblas:91intro,|
\hbox{}\kern1in\verb|deransart/jourdan/lorho:88ag,knuth:68semantics}|
\item{[Gary and Johnson 1979]} $\rightarrow$ \verb|\cite{garey-johnson-bk79}|
\item{[Brand and Zafiropulo 1983; Gouda et al. 1984;1987]} $\rightarrow$ \newline
\verb|[\citeNP{brand83}; \citeNP{gouda84};\citeyearNP{gouda87}]|
\end{enumerate}
\noindent
The list will be updated as we find unique cases.

\subsection{Received Date}

An ACM transactions article ends with the dates that the article and its
revised versions were received and the date it was accepted for
publication.  In the {\tt acmtrans} document style, this information is
produced with the {\tt received} environment.  Type the body of the
environment just as it should appear in the printed version.
(Note that only \verb"Received" and the months should be capitalized,
the entries should be separated by semicolons,
and the whole ``sentence'' should {\em not} be terminated by a period.)
You can get these dates from the editor-in-chief.

\section{Running Heads and Feet}

The running foot of all but the title page of the article is declared
with the \linebreak
\verb|\runningfoot| command.  It contains the name of the
journal, volume, number, and date.  The foot for the title page
contains this information plus the page numbers.  It is declared
with the \verb|\firstfoot| command.

The \verb|\pages| command prints the page numbers of the article,
producing something like ``123--132''.  It is implemented with the
\LaTeX\ \verb|\pageref| command, so it will not produce the correct
page numbers the first time the file is run through \LaTeX, or if the
number of the first or last page has changed since the last time.

The default page style for the {\tt acmtrans} style is {\tt
myheadings}.  Thus, a \verb|\markboth| command is used to set the
running heads.  The left head contains the author's name (or authors'
names) and the right head contains the title.  For long titles,
some contraction of the title is used.

{\bf
At present, the ACM prefers to strip in their own running heads and
feet, so it is unnecessary to worry about them when producing
camera-ready copy.
}

\section{Interacting with ACM's Production Staff}

After your article is accepted, format your document and send
a Postscript file to the editor-in-chief.  An ACM copy editor will
mark up a paper copy and send it back to you for corrections.
If there are just a few corrections, they may be sent to you by e-mail.
Iterate this process until the copy editor is satisfied (it may take
one or two iterations).

Then print your final camera-ready copy on a 1200-dpi phototypesetter
(or a 600-dpi laser printer, if you must) and mail it to ACM.

If you are using a laser printer for your final camera-ready copy,
you may enjoy using special paper designed for this purpose (it gives
a sharper image on a whiter background).  One such paper
(manufactured by Hammermill Papers) is:
\begin{verse}
   Hammermill Laser Plus (Featuring Wax Holdout)\\
   8$\frac{1}{2}$x11--12M--S24/60\\
   10450--5\\
   For Prepress Proofing and Camera-Ready Masters.
\end{verse}

But the use of special paper is entirely optional; plain white laser-printer 
paper is fine.

\subsection{ACM Copy Editors' Preferences}

We wish to thank the authors who have mailed to us copies of their page proofs.
From the page proofs (and explicit requests from ACM), here is a list of items most 
frequently marked up by the copy editors. 

\begin{description}\itemindent\labelsep  % that is, no indentation
\item[\bf Center] Displayed items like figures, pieces of program codes, and equations.  Equation numbers to appear right flushed. Remember to add a period if the displayed equation ends in a sentence. 
\item[\bf Fonts] Following items in regular Roman font:
\begin{itemize}
\item such words like et al., e.g., i.e., ad hoc, and bona fide, and 
\item the body of the definition environment.
\end{itemize} 
\item[\bf Etc] No double period when a sentence ends with ``etc.''
\item[\bf Figure] Spell out the word ``figure'' when using in a sentence, as in Figure 1.
Use a period as in ``Fig. 1.'' and not a colon as in ``Fig. 1:''
\item[\bf Contractions] Avoid the use of contractions; for example, use 
{\em do not} instead of {\em don't}.  
(If you prefer to use contractions to avoid
stuffiness, you'll have to tell the copy editor explicitly after you
get the marked-up proofs.)
\item[\bf Conference References] Please use {\it 4th International Conf. on
Document Formatting}, not {\it Fourth International Conference ...}; that
is, do not spell out the number.
\item[\bf Journal References] Figure~\ref{fig:abbrev} gives common journal abbreviations; there is a duplicate list in the acmtrans.bst file for your convenience.  Using the {\it abbreviation} feature of \BibTeX\  for journal
names (and months!) makes it easy to follow the rules.
\end{description} 

\begin{figure}\noindent
\begin{tabular}{l|l||l|l}
\footnotesize
acmcs&ACM Comput. Surv.&jlp&J. Logic Program.\\
acmlett&ACM Lett. Program. Lang. Syst.&jcss&J. Comput. Syst. Sci.\\
acta&Acta Inf.&jsmrp&J. Softw. Maint. Res. Pract.\\
al&Ada Lett.&jss&J. Syst. Softw.\\
acr&Adv. Comput. Res.&jlsc&J. Lisp Symb. Comput.\\
bit&Bit&lpls&Lett. Program. Lang. Syst.\\
cacm&Commun. ACM&mscs&Math. Struct. Comput. Sci.\\
cj&Comput. J.&mst&Math. Syst. Theor.\\
cn&Comput. J.&ngc&New Gen. Comput.\\
cl&Comput. Lang.&scp&Sci. Comput. Program.\\
ict&Inf. Contr.&sicomp&SIAM J. Comput.\\
ieebcs&IEE/BCS Softw. Eng. J.&spe&Softw. Pract. Exper.\\
ieees&IEEE Softw.&tocs&ACM Trans. Comput. Syst.\\
ieeese&IEEE Trans. Softw. Eng.&tods&ACM Trans. Database Syst.\\
ieeetc&IEEE Trans. Comput.&tog&ACM Trans. Graphics\\
ieeetpds&IEEE Trans. Parall. Distrib. Syst.&toms&ACM Trans. Math. Softw.\\
ieeetit&IEEE Trans. Inf. Theory&toois&ACM Trans. Office Inf. Syst.\\
ipl&Inf. Process. Lett.&toplas&ACM Trans. Program. Lang. Syst.\\
icp&Inf. Comput.&tcs&Theor. Comput. Sci.\\
ist&Inf. Softw. Tech.&tr&Tech. Rep.\\
ijsa&Int. J. Supercomput. Appl.&jf&J. Funct. Program.\\
ijpp&Int. J. Parallel Program.&jlc&J. Logic and Comput.\\
\end{tabular}
\caption{Common journal abbreviations.}
\label{fig:abbrev}
\end{figure}

The best method of
reducing the number of copy editorial markups is by using a recent ACM journal 
as a guide  to typesetting your article.  

\section{Electronic Appendices}
\label{sec:elecappendix}

Because of severe constraints on how many pages it can print,
{\it ACM Transactions on Programming Languages and Systems} (TOPLAS)
accepts some articles with {\it electronic appendices:}  appendices
in Postscript format that will not appear in the printed article but
will be available separately.  If your article is accepted with an
electronic appendix, you should put an appendix header where the
appendix normally belongs (before the ``acknowledgments'').
The body of the electronic appendix should be given after the
references.
The \verb|appendixhead| command is given
\begin{quote}
{\tt \verb|\|appendixhead\{{\it journal}\}\{{\it article-id}\}}
\end{quote}
where {\it journal} is the name of the journal (e.g. {\tt toplas} or
{\tt todf}), and
{\it article-id} is a number given to you by the Editor.
The result of \verb|\appendixhead| looks like this:\footnote{%
See the end of this document for the remainder of the explanation of
electronic appendices}

\appendix
\section*{ONLINE-ONLY APPENDICES}
\setcounter{secnumbookdepth}{-1}
% \begin{NoHyper}
\section{Splitting off the electronic appendix}
\section{Single appendix}
\section{Multiple appendices}
% \end{NoHyper}
\setcounter{secnumbookdepth}{3}

\appendixhead{Appendix A is}{appendix}{http://www.acm.org/toplas}

\begin{acks}
We wish to thank Howard Trickey for providing the now-obsolete
version of the {\tt acmtrans}
bibliography style, and for giving advice on creating the new one;
Rebecca Davies for helping to adapt
Glenn Paulley's ``Chicago'' bibliography
style to fit the new ACM style; 
and Marilyn Salmansohn and George Criscione for providing information
on the official ACM transactions style.
\end{acks}

\bibliographystyle{acmtrans}
\bibliography{acmtr}
\begin{received}
Received February 1986;
November 1993;
accepted January 1996
\end{received}

elecappendix{http://www.acm.org/toplas}{1998}{ACM Transactions on Document Formatting,
     Vol.~8, No.~1, January 1999, Pages \pages.}{
\copyright\ 1999 ACM 0164-0925/98/0100-0208A \$5.00}

The contents of the electronic appendix is written after the references
and the ``received'' environment.
The electronic appendix is started 
by an \verb|\elecappendix| command that takes two
required arguments:
\begin{quote}
{\tt \verb|\|elecappendix\{{\it year}\}\{{\it ref\/}\}}
\end{quote}
where
{\it year} is the year of appearance (or, if this not known, the year
of acceptance), necessary for the copyright notice, and
{\it ref\/} is a sentence provided by the Editor describing the
publication reference
information regarding your article.

\section{Splitting off the electronic appendix}

If you have an electronic appendix, only the main body of the
article, up through and including the description of how to obtain
the electronic appendix, will be printed in the journal.

It will be necessary to split your dvi or Postscript file into
two parts: one to be printed, the other to be available by
FTP.  Please split your Postscript into two separate postscript files 
using {\tt dvipages} or {\tt pslpr} and
email them separately to the Editor.

Note that the pages of the appendix are numbered A-1, A-2, etc.
so as not to interfere with the normal journal pagination.

\section{Single Appendix}

When an article has a single electronic appendix, then after
the \verb|\elecappendix| command, type the following.
\begin{quote}
\begin{verbatim}
\setcounter{section}{1}
\end{verbatim}
\end{quote}
If the text starts immediately, add a \verb|\medskip| to set off the
text from the horizontal rule created by \verb|\elecappendix|.

\section{Multiple appendices}

For an article with multiple electronic appendices, one begins
the appendix with an \verb|\elecappendix|
command, then starts each
appendix with an ordinary \verb|\section| command.  Lower levels of
sectioning are produced by the ordinary sectioning commands.

\end{document}