MirOS Manual: 28.bib(USD)

BIB - A Program for Formatting Bibliographies            USD:31-1

          BIB - A Program for Formatting Bibliographies

                         Timothy A. Budd

                    The University of Arizona
                 Department of Computer Science
                      Tucson, Arizona 85721

     Bib is a program for  collecting  and  formatting  reference
lists  in  documents.   It  is  a preprocessor to the nroff/troff
typesetting systems, (much like the tbl [.tbl.] and  eqn  [.eqn.]
programs) and an alternative to the refer [.lesk refer.] bibliog-
raphy program.  Bib takes two inputs: a document to be  formatted
and  a  library of references.  Imprecise citations in the source
document are replaced by more conventional citation strings,  the
appropriate  references are selected from the reference file, and
commands are generated to format both citation and the referenced
item in the bibliography.

     An imprecise citation is a list of words surrounded  by  the
characters  [. .].  Words (which are truncated to six letters) in
the imprecise citation are matched against entries in the  refer-
ence  file, and if an entry is found that matches all words, that
reference is used. For example:

     In Brooks's interesting book [.  brooks  mythical.]  various
reasons ...

     Multiple citations are indicated by simply placing  a  comma
in the imprecise citation:

     In [.kernig tools, kernig elements.], Kernighan and  Plauger
have ...

     Embedded newlines, tabs and extra blanks within  the  impre-
cise citation are ignored.

     Judicious use of the K (keyword) field in references in  the
database  can  simplify  citations considerably.  Also additional
information can be placed into citations by surrounding text with
curly  braces.  The  additional  information is inserted verbatim
into the citation, e.g. [.dragon {, Chapter 6}.].  Note  that  it

                        October 25, 2015

USD:31-2            BIB - A Program for Formatting Bibliographies

may  be  desirable to use non-breakable spaces, in order that the
citation not be split across a line boundary by troff, for  exam-

     For a description of LR parsing,  see  [.dragon  {,\ Chapter
6}.] by Aho and Ullman.

     An alternative citation style can be used by surrounding the
imprecise  citation  with  {.  and .}.  Most document styles just
give the raw citation, without the braces, in this case.  This is
useful, for example, to refer to citations in running text.

     For a discussion of this point, see reference {.dragon.}.

     The algorithm used by bib scans  the  source  input  in  two
passes. In the first pass, references are collected and the loca-
tion of citations marked. In the second  pass,  these  marks  are
replaced  by  the  appropriate  citation,  and the entire list of
references is dumped following a call  on  the  macro  .[].  This
macro  is left untouched. However, this can be altered to achieve
other typographic effects.

     An exception to this process  is  made  in  those  instances
where  references  are  indicated in footnotes.  In this case the
macro that generates the reference is  placed  immediately  after
each line in which the reference is cited.

     Reference files  are  prepared  for  bib  using  invert.  By
default invert places an inverted index for the reference list in
the file INDEX.  Unless the user specifies  an  alternative  (see
the  -p  switch described below), this is the first file searched
by bib in attempting to locate a reference.  If the entry is  not
found  in  the  user's  file,  a  standard  system-wide  index is
searched.  If the entry is still not found in the system file,  a
warning message is produced and a blank citation is generated.

     The format for entries in the reference  file  is  described
more  fully  in the section `Reference File Formats'. This format
is similar to that used by refer with the following exceptions:

1.   An F field, if present, overrides whatever  citation  string
     would otherwise be constructed.

2.   Certain defined names can be used, and will be expanded dif-
     ferently  by  different  document  styles.  For example, the
     string CACM is expanded into `Communications of the ACM'  by
     some  document  styles, `Comm. ACM' by others, and `Comm. of
     the Assoc. of Comp. Mach.' by yet others. Appendix  1  lists
     the currently recognized names.

                        October 25, 2015

BIB - A Program for Formatting Bibliographies            USD:31-3

3.   The program automatically abbreviates names, reverses names,
     and   hyphenates   strings   of  contiguous  references,  if

4.   A reference  can  have  more  than  one  editor  field,  and
     editor's  names can be abbreviated, reversed, and/or printed
     in cap/small caps style, independent of any processing  done
     to authors names.

     Since the user's index is searched before the system  index,
if  the  user wants to alter a specific entry in the system index
(say to change the name W. E. Howden to William  E.  Howden,  for
example)  it  is  a  simple matter to copy the system information
into a private database and make the changes locally.

     Citation formats are either determined  by  explicit  switch
settings  or,  more  generally,  by using a predefined formatting
style.  In the latter form, usage looks something like:

                       bib -tstyle [files]

where style is a citation style. Currently the following citation
styles are available:

stdn  (standard numeric) numeric citation.  Reference entries are
      listed in citation order.

stdsn same as stdn, but references are sorted  by  senior  author
      followed by date.

stda  (standard alphabetic) citations are three letters  followed
      by the last two digits of the date.  For papers with a sin-
      gle author, the letters are the first three letters of  the
      authors  last  name  (e.g. Knu). In papers with two authors
      the first two letters are from the first author followed by
      one  letter  from  the  second (e.g. HoU). If three or more
      authors are given the first letters from  the  first  three
      authors are used (e.g. AHU).

openn same as stdsn, only using an open  reference  format  (each
      major entry is on a new line1).

opena same as stda, but using an open format.

foot  footnoted references.

supn  same as stdn, but using superscripts.

spe   format  used   by   the   journal   Software-Practice   and
1. The open reference format is adapted from A Handbook
for  Scholars,  by Mary-Claire van Leunen, published by
Knopf, 1978.

                        October 25, 2015

USD:31-4            BIB - A Program for Formatting Bibliographies

      Experience. Eventually there will be macro packages  avail-
      able for several journal styles.

     It is possible to alter  slightly  the  format  of  standard
styles.   For example, to generate references in standard numeric
style, but abbreviate first names, the following can be used:

                       bib -tstdn -aa ...

     If two reference items create the same citation string (this
can  happen if two papers authored by the same person in a single
year are referred to in one paper) a disambiguating final  letter
is added to the citation (i.e., Knu79 becomes Knu79a and Knu79b).
As noted previously, this can be altered by using the F field.

     For the purposes of sorting by  author,  the  last  name  is
taken  to  be  the  last word of the name field.  This means some
care must be taken when names contain embedded blanks, such as in
`Hartley Rogers, Jr.' or `Mary-Claire van Leunen'. In these cases
a  concealed  space  (\ )  should  be  used,   as   in   `Hartley
Rogers,\ Jr.'.

     bib knows very little about troff usage or syntax.  This can
sometimes be useful.  For example, to cause an entry to appear in
a reference list without having it explicitly cited in  the  text
the citation can be placed in a troff comment.

 .\" [.imprecise citation.]

     It is also possible to embed troff commands within a  refer-
ence  definition.  See  `abbreviations' in the section `Reference
Format Designer's Guide' for an example.

     In some styles (superscripts) periods and commas should pre-
cede the citation while spaces follow. In other styles (brackets)
these rules are reversed.  If a period, comma  or  space  immedi-
ately  precedes  a  citation, it will be moved to the appropriate
location for the particular  reference  style  being  used.  This
movement  is  not  done  for  citations  given in the alternative

     The following is a complete list of options for bib:

-aa     reduce author's first names to abbreviations.

-arnum  reverse the first num author's names. If num  is  omitted
        all names are reversed.

-ax     print authors last names in Caps-Small Caps  style.   For
        example Budd becomes BUDD.

-cstr   build citations according to the template str.   See  the
        reference format designer's guide for more information on

                        October 25, 2015

BIB - A Program for Formatting Bibliographies            USD:31-5


-ea     abbreviate editors' names

-ex     places editors' names in Caps-Small Caps style.  (see  -x

-ernum  reverse the first num editors' names.  If num is  omitted
        all editors' names are reversed.

-f      instead of dumping references following the call on  .[],
        dump  each  reference  immediately  following the line on
        which the citation is placed (used for  footnoted  refer-

-h      hyphenate runs of three or more contiguous references  in
        the  citation  string. (eg 2,3,4,5 becomes 2-5).  This is
        most useful for numeric citation styles, but  works  gen-
        erally. The -h option implies the -o option.

-i file

-ifile  include and process the indicated file.  This  is  useful
        for including a private file of string definitions.

-nstr   turn off the indicated options.  str must be composed  of
        the characters afhorx.

-o      sort contiguous citations according to the order given by
        the reference list.  (This option defaults on).

-p file

-pfile  instead of searching the file INDEX, search the indicated
        reference  file(s) before searching the system file. Mul-
        tiple files are separated by commas.

-sstr   sort references according to the template str.

-t type

-ttype  use the standard macros and switch settings  to  generate
        citations and references in the indicated style.

                         Reference File Formats

     A reference file is a file containing any number  of  refer-
ence  items.   Reference items are separated by one or more blank

                        October 25, 2015

USD:31-6            BIB - A Program for Formatting Bibliographies

lines. There are no restrictions placed on the order of items  in
a  file,  although  imposing  some  order  (such as sorting items
alphabetically) simplifies updates.

     A reference item is a collection of field tags and values. A
field  tag  is  a  percent  sign  followed  by  a  single letter.
Currently, the following field tags are recognized:

A    Author's name
B    Title of book containing item
C    City of publication
D    Date
E    Editor(s) of book containing item
F    Caption
G    Government (NTIS) ordering number
I    Issuer (publisher)
J    Journal name
K    Keys for searching
N    Issue number
O    Other information
P    Page(s) of article
R    Technical report number
S    Series title
T    Title
V    Volume number
W    Where the item can be found locally
X    Annotations (not in all macro styles)

     Author and editor fields can be repeated, as necessary,  but
all  other  fields  can occur at most once in any reference.  The
field information is as long as necessary, and  can  extend  onto
new  lines.  Lines  that  do  not  begin with a percent sign or a
period are treated as continuations of  the  previous  line.  The
order  of  fields  is irrelevant, except that authors and editors
are listed in the order of occurrence.

     Generally a  reference  falls  into  one  of  several  basic
categories.  An  example  of  each  and  a brief comment is given
below.   With  less  standard   references   (Archival   Sources,
Correspondence,  Government Documents, Newspapers) generally some
experimentation is necessary.


     A book is something with a publisher that  isn't  a  journal
article  or  a  technical  report.   Generally,  books  also have
authors and  titles  and  dates  of  publication  (although  some
don't).   For  books not published by a major publishing house it
is also helpful to give a city for the publisher.   Some  govern-
ment  documents  also  qualify  as  books,  so  a book may have a
government ordering number.

     It is conventional that the  authors  names  appear  in  the
reference  in  the  same  form  as on the title page of the book.

                        October 25, 2015

BIB - A Program for Formatting Bibliographies            USD:31-7

Note also that string definitions are provided for  most  of  the
major  publishing houses (PRHALL for Prentice-Hall, for example).
The string definition may include the city as part of the defini-
tion, depending on the database in use.

%A R. E. Griswold
%A J. F. Poage
%A I. P. Polonsky
%T The SNOBOL4 Programming Language
%D second edition 1971

     Sometimes a book  (particularly  old  books)  will  have  no
listed publisher. The reference entry must still have an I field.

%A R. Colt Hoare
%T A Tour through the Island of Elba
%I (no listed publisher)
%C London
%D 1814

     If a reference database contains entries  from  many  people
(such  as  a departmental-wide database), the W field can be used
to indicate where the referenced item can  be  found;  using  the
initials  of the owner, for example. Any entry style can take a W
field, since this field is not used in formatting the reference.

     The K field is used to define general subject categories for
an  entry. This is useful in locating all entries pertaining to a
specific subject area. Note the use of the backslash, to indicate
the last name is Van Tassel, and not simply Tassel.

%A Dennie Van\ Tassel
%T Program Style, Design, Efficiency,
Debugging and Testing
%D 1978
%W tab
%K testing debugging

Journal article

     The only requirement for a journal article is that it have a
journal  name  and a volume number. Usually journal articles also
have authors, titles, page numbers, and a  date  of  publication.
They  may  also  have numbers, and, less frequently, a publisher.
(Generally, publishers are only listed for obscure journals).

     Note that string names (such as CACM for  Communications  of
the  ACM)  are  defined  for  most major journals. There are also
string names for the months of the year, so that  months  can  be
abbreviated to the first three letters. Note also in this example
the use of the K field to define a short name (hru) that  can  be
used in searching for the reference.

                        October 25, 2015

USD:31-8            BIB - A Program for Formatting Bibliographies

%A M. A. Harrison
%A W. L. Ruzzo
%A J. D. Ullman
%T Protection in Operating Systems
%V 19
%N 8
%P 461-471
%D AUG 1976
%K hru

Article in conference proceedings

     An article from a conference is printed as though it were  a
journal  article and the journal name was the name of the confer-
ence. Note that string names (SOSP)  are  also  defined  for  the
major conferences (Symposium on Operating System Principles).

%A M. Bishop
%A L. Snyder
%T The Transfer of Information and Authority
in a Protection System
%J Proceedings of the 7th SOSP
%P 45-54
%D 1979

Article in book

     An article in a book has two titles, the title of the  arti-
cle  and  the title of the book.  The first goes into the T field
and the second into the B field.  Similarly  the  author  of  the
article  goes  into  the  A field and the editor of the book goes
into the E field.

%A John B. Goodenough
%T A Survey of Program Testing Issues
%B Research Directions in Software Technology
%E Peter Wegner
%I MIT Press
%P 316-340
%D 1979

     If a work as more than one editor, they each get  their  own
%E field.

%A R. J. Lipton
%A L. Snyder
%T On Synchronization and Security
%E Richard A. DeMillo
%E David P. Dobkin
%E Anita K. Jones
%E Richard J. Lipton
%B Foundations of Secure Computation
%P 367-388

                        October 25, 2015

BIB - A Program for Formatting Bibliographies            USD:31-9

%D 1978

     Sometimes the book is part of  a  multi-volume  series,  and
hence may contain a volume field and/or a series name.

%A C.A.R. Hoare
%T Procedures and parameters: An axiomatic approach
%B Symposium on semantics of algorithmic languages
%E E. Engeler
%P 102-116
%S Lecture Notes in Mathematics
%V 188
%I Springer-Verlag
%C Berlin-Heidelberg-New York
%D 1971

     In any reference format, the O field can  be  used  to  give
additional information. This is frequently used, for example, for
secondary references.

%A A. Girard
%A J-C Rault
%T A Programming Technique for Software Reliability
%B Symposium on Software Reliability
%C Montvale, New Jersey
%D 1977
%O (Discussed in Glib [32])


     A compilation  is  the  work  of  several  authors  gathered
together  by  an editor into a book.  The reference format is the
same as for a book, with the editor(s) taking the  place  of  the

%E R. A. DeMillo
%E D. P. Dobkin
%E A. K. Jones
%E R. J. Lipton
%T Foundations of Secure Computation
%D 1978

Technical Reports

     A technical report must have a report number.  They  usually
have  authors,  titles,  dates  and an issuing institution (the I
field is used for this). They may also have a city and a  govern-
ment  issue number.  Again string values (UATR for `University of
Arizona Technical Report') will frequently simplify typing refer-

                        October 25, 2015

USD:31-10           BIB - A Program for Formatting Bibliographies

%A T. A. Budd
%T An APL Complier
%R UATR 81-17
%C Tucson, Arizona
%D 1981

     If the institution name is not part of the technical  report
number, then the institution should be given separately.

%A Douglas Baldwin
%A Frederick Sayward
%T Heuristics for Determining Equivalence of Program Mutations
%R Technical Report Number 161
%I Yale University
%D 1979

PhD Thesis

     A PhD thesis is listed as if it were a book, and the  insti-
tution granting the degree the publisher.

%A Martin Brooks
%T Automatic Generation of Test Data for
Recursive Programs Having Simple Errors
%I PhD Thesis, Stanford University
%D 1980

     Some authors prefer to treat Master's  and  Bachelor  theses
similarly,  although  most  references  on  style instruct say to
treat a Master's degree as an article or as a report.

%A A. Snyder
%T A Portable Compiler for the Language C
%R Master's Thesis
%I M.I.T.
%D 1974


     A miscellaneous object is something that does not  fit  into
any  other  form. It can have any of the the following fields; an
author, a title, a date, page numbers, and, most generally, other
information (the O field).

     Any  reference  item  can  contain  an  F  field,  and   the
corresponding  text  will override whatever citation would other-
wise be constructed.

%F BHS--
%A Timothy A. Budd
%A Robert Hess
%A Frederick G. Sayward
%T User's Guide for the EXPER Mutation Analysis system
%O (Yale university, memo)

                        October 25, 2015

BIB - A Program for Formatting Bibliographies           USD:31-11

                Reference Format Designer's Guide

     This section need only be read by those users  who  wish  to
write their own formatting macro packages.

     The  information  necessary  for  generating  citations  and
references  of  a particular style is contained in a format file.
A format file consists of two parts; a sequence  of  format  com-
mands,  which  are read and interpreted by bib, and a sequence of
text lines (usually troff macro  definitions)  which  are  merely
copied  to  output.  The format file name is always prefixed with
the string bib. Thus the format  file  for  a  standard  document
type,  such  as  stdn,  is found in a file called bib.stdn in the
standard library area.

     When bib encounters a -t switch,  the  user's  directory  is
first  searched for a format file matching the given name, before
the system area is examined. Thus the user can create  individual
style database files.

     Each formatting command is distinguished by a single letter,
which  must be the first character on a line. The formatting com-
mands in a database file are similar to the command line  options
for  bib.   The  legal commands, and their arguments, are as fol-

# text

     A line beginning with a sharp sign is  a  comment,  and  all
remaining text on the line is ignored.


     The A command controls how authors' names are to be  format-
ted.  It can be followed by the following character sequences:

A       Authors' names are to  be  abbreviated.   (see  abbrevia-
        tions, below).

Rnum    The first num authors' names are to be reversed.  If  num
        is omitted, all authors' names are reversed.

X       Authors' names are  to  be  printed  in  Caps-Small  Caps


     The E command is equivalent to the A command, except that it
controls the formatting of editors' names.


     The F command indicates that references  are  to  be  dumped

                        October 25, 2015

USD:31-12           BIB - A Program for Formatting Bibliographies

immediately  after a line containing a citation, such as when the
references are to be placed in footnotes.

S template

     The S command indicates references are to be  sorted  before
being dumped. The comparison used in sorting is based on the tem-
plate.  See the discussion on sorting (below) for an  explanation
of templates.

C template

     The template is used as a model in  constructing  citations.
See the discussion below.

D  word  definition

     The word-definition pair is placed into a table. Before each
reference  is  dumped  it is examined for the occurrence of these
words.  Any occurrence of a word from this table is  replaced  by
the  definition,  which  is then rescanned for other words. Words
are limited to alphanumeric characters, ampersand and underscore.

     Definitions can extend over multiple lines by  ending  lines
with  a  backslash  (\).   The backslash will be removed, and the
definition, including the newline and  the  next  line,  will  be
entered  into  the  table.   This is useful for including several
fields as part of a single definition (city names can be included
as part of a definition for a publishing house, for example).

I filename

     The indicated file is included at the  current  point.   The
included file may contain other formatting commands.


     Three or more contiguous citations that  refer  to  adjacent
items  in the reference list are replaced by a hyphenated string.
For example, the citation 2,3,4,5 would be replaced by 2-5.  This
is  most useful with numeric citations.  The H option implies the
O option.


     Contiguous citations are sorted according to the order given
by the reference list.

R number

     The first number author's names are reversed on output (i.e.
T.  A.  Budd becomes Budd, T. A.). If number is omitted all names
are reversed.

                        October 25, 2015

BIB - A Program for Formatting Bibliographies           USD:31-13

T str

     The str is a list of field names.  Each  time  a  definition
string  for a named field is produced, a second string containing
just the last character will also be  generated.   See  `Trailing
characters', below.


     Authors' last names are to be  printed  in  Caps/Small  Caps
format (i.e., Budd becomes BUDD).

     The first line in the format file that does not match a for-
mat  command  causes  that  line, and all subsequent lines, to be
immediately copied to the output.

File Naming Conventions

     Standard database  format  files  are  kept  in  a  standard
library  area.  The string BMACLIB in bib.h points to this direc-
tory (/usr/new/lib/bmac in the distribution).  In addition,  this
name is always defined when reading format files. There are three
types of files:

bib.xxx   These files contain bib commands to format documents in
          the xxx style.

bibinc.xxxThese files contain information (such  as  definitions)
          used by more than one style database.

bmac.xxx  These files are the troff macros to actually  implement
          a style. They are generally not examined by bib at all,
          but are processed by troff in response to  a  .so  com-

     The first command output by bib defines the string l] to  be
the  standard  macro database directory.  This allows macro files
to be independent of where they are actually stored.

Naming Conventions

     There is a simple naming convention for  strings,  registers
and  macros  used  by bib.  All strings, registers and macros are
denoted by two character names containing either a left or  right
brace.  The following are general rules:

[x   If x is alphanumeric, the string contains  the  value  of  a
     reference  field. If x is nonalphanumeric, this is a format-
     ting string preceding a citation.

]x   If x is alphanumeric, this is the  final  character  from  a
     reference  field.  If  x  is  nonalphanumeric, the string is

                        October 25, 2015

USD:31-14           BIB - A Program for Formatting Bibliographies

     formatting information within a citation.

x[   Strings in this format, where x is can be any character, are
     defined  by  the  specific  macro package in use and are not
     specified by bib.

x]   If x is nonalphanumeric these strings  represent  formatting
     commands  following  citations (the inverse of [x commands).
     Other strings represent miscellaneous  formatting  commands,
     such  as  the  space  between leading letters in abbreviated


     The sort template is used in  comparing  two  references  to
generate  the  sorted  reference  list.   The  sort template is a
sequence of sort  objects.   Each  sort  object  consists  of  an
optional  negative  sign, followed by a field character, followed
by an optional  signed  size.   The  leading  negative  sign,  if
present,  specifies the sort is to be in decreasing order, rather
than increasing.  The field character indicates  which  field  in
the  reference  is  to  be  compared.   The entire field is used,
except in the case of the `A'  field,  in  which  case  only  the
senior  author's  last  name is used. A positive number following
the field character indicates that only the  first  n  characters
are  to  be examined in the comparison.  The negative value indi-
cates only the last n characters.  Thus, for  example,  the  tem-
plate  AD-2  indicates  that  sorting is to be done by the senior
author followed by the last two characters of the date.

     The sort algorithm is stable, so that  two  documents  which
compare equally will be listed in citation order.

     Note that in sorting, citation construction, and  elsewhere,
if an author field is not present the senior editor will be used.
If neither author nor editor fields are present  the  institution
name will be used.


     A citation template is similar to a sort template, with  the
following  exceptions:   The  field name `1' refers to the number
which represents the position of the reference in  the  reference
list  (after sorting). The field name `2' generates a three char-
acter sequence; If  the  paper  being  referenced  has  only  one
author,  this  is the first three characters of the author's last
name.  For two author papers, this is the first two characters of
the  senior author, followed by the first character of the second
author.  For papers with three or more authors the  first  letter
of the first three authors is used. The field name `3' is used to
specify a format consisting of the authors' last  names,  or  the
senior  author  followed  by  the  text `et al' if more than four
authors are listed.  The fields `4' through `9' are  reserved  to
be  used  to  specify  formats  that  cannot  be  produced  using

                        October 25, 2015

BIB - A Program for Formatting Bibliographies           USD:31-15

templates.  These will be implemented either as  local  modifica-
tions to bib or in future releases.

     In order to postpone the inevitable clash of  local  changes
versus new releases, it is suggested that local formatting styles
use numbers starting at 9 and working downward.

     Each object can be followed by either of the letters `u'  or
`l' and the field will be printed in all upper or all lower case,

     If necessary for disambiguating, the character  `@'  can  be
used  as  a  separator  between objects in the citation template.
Any text which should be inserted into the citation uninterpreted
should be surrounded by either {} or <> pairs.

Citation Formatting

     In the output, each citation is surrounded  by  the  strings
\*([[  and \*(]] (\*([{ and \*(}] in the alternative style). Mul-
tiple citations are separated by the string \*(],. The text  por-
tion  of a format file should contain troff definitions for these
strings to achieve the appropriate typographic effect.

     Citations that are preceded by a  period,  comma,  space  or
other  puncuation  are surrounded by string values for formatting
the puncuation in the approprate location. Again, troff  commands
should be given to insure the appropriate values are produced.

     The following table summarizes the string values  that  must
be defined to handle citations.

     [[   ]]   Standard citation beginning and ending
     {[   }]   Alternate citation beginning and ending
     [.   .]   Period before and after citation
     [,   ,]   Comma before and after citation
     [?   ?]   Question mark before and after citation
     [!   !]   Exclaimation Point before and after citation
     [:   :]   Colon before and after citation
     [;   ;]   Semi-Colon before and after citation
     ["   "]   Double Quote before and after citation
     ['   ']   Single Quote before and after citation
     [<   >]   Space before and after citation
     ],        Multiple citation separator
     ]-        Separator for a range of citations

Name Formatting

     Authors' (and editors') names can be abbreviated,  reversed,
and/or  printed  in  Caps-small  Caps  format.   In producing the
string values for an author, formatting strings are  inserted  to
give  the macro writer greater flexibility in producing the final
output.  Currently the following strings are used:

                        October 25, 2015

USD:31-16           BIB - A Program for Formatting Bibliographies

    a]   gap between sucessive initials
    b]   comma between last name and initial in reversed text
    c]   comma between authors
    n]   and between two authors
    m]   and between last two authors
    p]   period following initial

     For example, suppose the name `William E. Howden' is  abbre-
viated and reversed.  It will come out looking like

Reference Formatting

     The particular style used in printing references is  decided
by  macros  passed  to troff.  Basically, for each reference, bib
generates a sequence of string definitions, one for each field in
the  reference,  followed by a call on the formatting macro.  For
example an entry which in the reference file looks like:

%A M. A. Harrison
%A W. L. Ruzzo
%A J. D. Ullman
%T Protection in Operating Systems
%V 19
%N 8
%P 461-471
%D 1976
%K hru

is converted into the following sequence of commands

 .ds [F 1
 .ds [A M. A. Harrison
 .as [A \*(c]W. L. Ruzzo
 .as [A \*(m]J. D. Ullman
 .ds [T Protection in Operating Systems
 .ds [J Communications of the ACM
 .ds [V 19
 .ds [N 8
 .nr [P 1
 .ds [P 461-471
 .ds [D 1976

     Note that the commands are preceded by a call on  the  macro
`.[-'. This can be used by the macro routines for initialization,
for example to delete old string values.  The string  [F  is  the
citation  value  used  in the document. Note that the string CACM
has been expanded.

                        October 25, 2015

BIB - A Program for Formatting Bibliographies           USD:31-17

     The strings c], n] and m] are used to separate authors.   c]
separates  the  initial  authors in multi-author documents (it is
usually a comma with some space before and after),  n]  separates
authors  in  two  author  documents  (usually  ` and '),  and  m]
separates the last two authors in multi-author documents  (either
` and ' or `, and ').

     If abbreviation is specified,  the  string  a]  is  used  to
separate initials in the author's first name.

     The bib system provides minimal assistance in deciding  for-
mat types.  For example note that the number register [P has been
set of 1, to indicate that the article is on more than one  page.
Similarly,  in  documents with editors, the register [E is set to
the number of editors.

Trailing Characters

     There is a problem with fields  that  end  with  punctuation
characters causing multiple occurrences of those characters to be
printed.  For example, suppose author fields are terminated  with
a period, as in T. A. Budd.  If names are reversed, this could be
printed as Budd, T. A..  Even if names are not reversed, abbrevi-
ations, such as in Jr. can cause problems.

     To avoid this problem bib, if instructed, generates the last
character  from  a  particular  field  as a separate string.  The
string name is a right brace  followed by  the  field  character.
Macro  packages should test this value before generating punctua-


     The algorithm used  to  generate  abbreviations  from  first
names  is  fairly  simple: Each word in the first name field that
begins with a capital is reduced to that capital letter  followed
by  a  period.  In  some  cases, this may not be sufficient.  For
example, suppose  Ole-Johan  Dahl  should  be  abbreviated  `O-J.
Dahl'.   The  only way to achieve this (short of editing the out-
put) is to include troff commands  in  the  reference  file  that
alter the strings produced by bib, as in the following

 %A Ole-Johan Dahl
 .ds [A O-J. Dahl

     In fact, any troff commands can be entered in the middle  of
a  reference  entry, and the commands are copied uninterpreted to
the output. For example, the user may wish to have a switch indi-
cating whether the name is to be abbreviated or not:


                        October 25, 2015

USD:31-18           BIB - A Program for Formatting Bibliographies

 %A Ole-Johan Dahl
 .if \n(i[ .ds [A O-J. Dahl

An Example

     Figure 1 shows the format file for the  standard  alphabetic
format.  The sort command indicates that sorting is to be done by
senior author, followed by the last two digits of the date.   The
citation  template  indicates  that  citations  will be the three
character sequence described in the section of citations followed
by the last two characters of the date (i.e. AHU79, for example).

#  standard alphabetic format
I BMACLIB/bibinc.fullnames
I BMACLIB/bibinc.std

                            Figure 1

     The two I commands include two files.  The first is  a  file
of  definitions  for  common  strings,  such as dates and journal
names.  A portion of this file is shown in figure 2. Note that  a
no-op  has  been  inserted  into the definition string for BIT in
order to avoid further expansion  when  the  definition  is  res-

     The second file is a sequence of troff macros for formatting
the references.  The beginning of this file is shown in figure 3.

     On the basis of some simple rules (the presence  or  absence
of certain fields) the document is identified as one of five dif-
ferent types, and a call made on a different macro for each type.
This is shown in figure 4.

     Finally figure 5 shows the macro for one of those  different
types, in this case the book formatting macro.

                        October 25, 2015

BIB - A Program for Formatting Bibliographies           USD:31-19

# full journal names, and other names
# journals
D ACTA Acta Informatica
D CACM Communications of the ACM
# months
D JAN January
D DEC December

                            Figure 2

 #  standard end macros
 .ds [ [
 .ds ] ]
 .ds , ,
 .ds >. .
 .ds >, ,
 .ds c] , \&
 .ds n] "" and
 .ds m] , and
 .de p[   \" produce reference beginning
 .IP [\\$1]
 .de []   \" start displaying collected references

                            Figure 3

 .de ][   \" choose format
 .ie !"\\*([J"" \{\
 .    ie !"\\*([V"" .nr t[ 1    \" journal
 .    el            .nr t[ 5    \" conference paper
 .el .ie !"\\*([B"" .nr t[ 3    \" article in book
 .el .ie !"\\*([R"" .nr t[ 4    \" technical report
 .el .ie !"\\*([I"" .nr t[ 2    \" book
 .el                .nr t[ 0    \" other

                            Figure 4

                        October 25, 2015

USD:31-20           BIB - A Program for Formatting Bibliographies

 .de 2[ \" book
 .if !"\\*([F"" .p[ \\*([F
 .if !"\\*([A"" \\*([A,
 .if !"\\*([T"" \\f2\\*([T,\\f1
 .if !"\\*([C"" , \\*([C\c
 .if !"\\*([D"" \& (\\*([D)\c
 .if !"\\*([G"" Gov't. ordering no. \\*([G.
 .if !"\\*([O"" \\*([O

                            Figure 5


     bib was inspired by refer, written by M. Lesk.

                        October 25, 2015

BIB - A Program for Formatting Bibliographies           USD:31-21


Standard Names

     The following list gives the standard  names  recognized  in
most citation styles.  Various different forms for the output are
used by the different styles. In the longer reference style,  the
conference   proceedings  will  also  refer  to  the  date  (%D),
city(%C), and when the proceedings are published  as  a  journal,
the journal name (%J), volumn (%V) and number (%N).

Journal Names
ACTA    Acta Informatica
BSTJ    Bell System Technical Journal
CACM    Communications of the ACM
COMP    IEEE Computer
COMPJOURThe Computer Journal
COMPLANGJournal of Computer Languages
COMPSUR ACM Computing Surveys
I&C     Information and Control
IBMJRD  IBM Journal of Research and Development
IBMSJ   IBM Systems Journal
IEEETC  IEEE Transactions on Computers
IEEETSE IEEE Transactions on Software Engineering
IJCIS   International Journal of Computer and Information Sciences
IPL     Information Processing Letters
JACM    Journal of the ACM
JCSS    Journal of Computer and System Sciences
MATHST  Mathematics Systems Theory
NMATH   Numerical Mathematics
SIAMJC  Siam Journal on Computing
SIAMJNA Siam Journal on Numerical Analysis
SIGSOFT Software Engineering Notes
SP&E    Software-Practice & Experience
SPE     Software-Practice & Experience
TOCS    ACM Transactions on Computer Systems
TODS    ACM Transactions on Database Systems
TOMS    ACM Transactions on Mathematical Software
TOPLAS  ACM Transactions on Programming Languages and Systems

ADA80   PROC of the ACM-SIGPLAN Symposium on the Ada Programming Language, SIGPLAN
ASPLOS82PROC of the SYMP on Architectural Support for Programming Languages and Operating Systems, SIGPLAN
CCC79   PROC of the SIGPLAN 1979 SYMP on Compiler Construction, SIGPLAN
CCC82   PROC of the SIGPLAN 1982 SYMP on Compiler Construction, SIGPLAN
CCC84   PROC of the SIGPLAN 1984 SYMP on Compiler Construction, SIGPLAN
CONF    Conference
FJCC    Fall Joint Computer Conference

                        October 25, 2015

USD:31-22           BIB - A Program for Formatting Bibliographies

FOCS    Annual SYMP on Foundations of Computer Science
HICSS   Hawaii International CONF on System Science
ICSE    International CONF on Software Engineering
JER3    PROC Third Jerusalem CONF on Information Technology
JICAI   Joint International CONF on Artificial Intelligence
PLISS83 PROC SIGPLAN 1983 SYMP on Programming Language Issues in Software Systems, SIGPLAN
POPL    ACM SYMP on Principles of Programming Languages
POPL5   Conference Record of the Fifth POPL
POPL6   Conference Record of the Sixth POPL
POPL7   Conference Record of the Seventh POPL
POPL8   Conference Record of the Eighth POPL
POPL9   Conference Record of the Ninth POPL
POPL10  Conference Record of the Tenth POPL
POPL11  Conference Record of the Eleventh POPL
PROC    Proceedings
SOSP    SYMP on Operating System Principles
STOC    Annual ACM SYMP on Theory of Computing
SYMP    Symposium
WJCC    PROC Western Joint Computer CONF

Longer place names
BTLHO Bell Laboratories
BTLMH Bell Laboratories
CMU   Carnegie-Mellon University
CMUCS Computer Science Department, Carnegie-Mellon University
DG    Data General
MITAI MIT Artificial Intelligence Laboratory
MITLCSMIT Laboratory for Computer Science
SUCS  Computer Science Department, Stanford University
SUCSL Computer Systems Lab., Stanford Electronics Lab., Dept. of Electrical Engineering and Computer Science
SUEE  Department of Electrical Engineering, Stanford University
TUM   Technische Universia.t u.nchen
UCB   University of California, Berkeley
UCBCS Computer Science Division, EECS, UCB

Short place names                  MAR   March
CORP   Corporation                 APR   April
CSD    Computer Science Department MAY   May
DCS    Department of Computer ScienJUN   June
DEPT   Department                  JUL   July
DISS   Dissertation                AUG   August
TR     Technical Report            SEP   September
UATR   University of Arizona TechniOCT ReOctober
UNIV   University                  NOV   November
ERL    Electronics Research LaboratDEC   December

Months of the year                 Publishers
JAN   January                      ACADEMIC   Academic Press
FEB   February                     ACPRESS    Academic Press

                        October 25, 2015

BIB - A Program for Formatting Bibliographies           USD:31-23

ADDISON    Addison Wesley
ANSI       American National Standards Institute
CSPRESS    Computer Science Press
DIGITAL    Digital Press
ELSEVIER   American Elsevier
FREEMAN    W. H. Freeman and Company
GPO        U. S. Government Printing Office
HOLT       Holt, Rinehart, and Winston
IEEEP      IEEE Press
MCGRAW     McGraw-Hill
MGHILL     McGraw-Hill
MITP       MIT Press
NHOLL      North-Holland
NYC        New York, NY
PRENTICE   Prentice Hall
PRHALL     Prentice Hall
SPRINGER   Springer Verlag
SRA        Science Research Associates
WILEY      John Wiley & Sons
WINTH      Winthrop Publishers

                        October 25, 2015

Generated on 2015-10-25 00:47:46 by $MirOS: src/scripts/roff2htm,v 1.81 2015/10/16 13:19:09 tg Exp $

These manual pages and other documentation are copyrighted by their respective writers; their source is available at our CVSweb, AnonCVS, and other mirrors. The rest is Copyright © 2002–2015 The MirOS Project, Germany.
This product includes material provided by mirabilos.

This manual page’s HTML representation is supposed to be valid XHTML/1.1; if not, please send a bug report – diffs preferred.