refer (software)

From Wikipedia, the free encyclopedia
Original author(s)Mike Lesk
Operating systemUnix-like
TypeReference management
Licensedepends on implementation

refer is a program for managing bibliographic references, and citing them in troff, nroff, and groff documents. It is implemented as a preprocessor.

refer was written by Mike Lesk at Bell Laboratories[1][2] in or before 1978, and is now available as part of most Unix-like operating systems. A free reimplementation exists as part of the groff package.

As of 2015, refer sees little use, primarily because troff itself is not used much for longer technical writing that might need software support for reference and citation management. As of 2016, some reference management software (for instance, RefWorks) will import refer data.


refer works with a "reference file", a text file where the author lists works to which they might want to refer. One such reference, to an article in a journal in this case, might look like:

%A Brian W. Kernighan
%A Lorinda L. Cherry
%T A System for Typesetting Mathematics
%J J. Comm. ACM
%V 18
%N 3
%D March 1978
%P 151-157
%K eqn

The author then can refer to it in their troff, groff, or nroff document by listing keywords which uniquely match this reference:

kernighan cherry eqn

Database fields[edit]

A refer bibliographic database is a text file consisting of a series of records, separated by one or more blank lines. Within each record, each field starts with a %-sign at the beginning of the line and one character immediately after. The name of the field should be followed by exactly one space, and then by the contents of the field. Empty fields are ignored. The conventional meaning of each field is shown in the table below. Compare this scheme with the newer EndNote scheme which uses a similar syntax.

Database fields [3]
Field Meaning
%A The name of an author. If the name contains a title such as Jr. at the end, it should be separated from the last name by a comma. There can be multiple occurrences of the %A field. The order is significant. It is a good idea always to supply an %A field or a %Q field.
%B For an article that is part of a book, the title of the book.
%C The place (city) of publication.
%D The date of publication. The year should be specified in full. If the month is specified, the name rather than the number of the month should be used, but only the first three letters are required. It is a good idea always to supply a %D field; if the date is unknown, a value such as in press or unknown can be used.
%E For an article that is part of a book, the name of an editor of the book. Where the work has editors and no authors, the names of the editors should be given as %A fields and , (ed) or , (eds) should be appended to the last author.
%G US Government ordering number.
%I The publisher (issuer).
%J For an article in a journal, the name of the journal.
%K Keywords to be used for searching.
%L Label.
%N Journal issue number.
%O Other information. This is usually printed at the end of the reference.
%P Page number. A range of pages can be specified as m-n.
%Q The name of the author, if the author is not a person. This will only be used if there are no %A fields. There can only be one %Q field.
%R Technical report number.
%S Series name.
%T Title. For an article in a book or journal, this should be the title of the article.
%V Volume number of the journal or book.
%X Annotation.
  • For all fields except %A and %E, if there is more than one occurrence of a particular field in a record, only the last such field will be used.
  • A field with no value given is simply ignored.

See also[edit]

Data schemes



  1. ^ Michael Lesk. Some applications of inverted indexes on the Unix system. In UNIX Programmer's manual: Supplementary Documents, volume 2. Holt, Rinehart and Winston, seventh edition, 1982. Also available online [1]
  2. ^ McIlroy, M. D. (1987). A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 (PDF) (Technical report). CSTR. Bell Labs. 139.
  3. ^ refer man page, version 1.22.3, dated 2 July 2016.

External links[edit]