BIBLABEL 1 "17 February 1997" "Version 0.03"

Table of contents


NAME

biblabel - generated standardized BibTeX citation labels

SYNOPSIS

biblabel [ -f in-use-file ] [ -i ignore-file ] [ BibTeXfile(s) ] >outfile

DESCRIPTION

biblabel filters a BibTeX bibliography, or bibliography fragment, on its standard input, or one or more bibliographies named on the command line, and prints on standard output lines containing pairs of old and new citation labels, suitable for input to the companion program, citesub(1).

The citation label is formed by these rules, easily applicable by a human, or by a computer program like this one:

(1)
Take the first author's last name, dropping apostrophes, Jr/Sr/generation numbers, and eliminating accents (e.g. J{\"a}nsch -> Jaensch, and Jind\v{r}ich -> Jindrich), using multi-letter transliterations if that is conventional. Hyphenated names, like Baeza-Yates, are preserved in full.
(2)
Append a colon.
(3)
Append the four-digit year of publication.
(4)
Append another colon.
(5)
Pick the first 3 important words in the title that begin with a letter, excluding articles and prepositions and TeX math mode (e.g. On ${C}^1$ interpolating hierarchical spline bases reduces to IHS), and append that. If there are fewer than 3 important words, then use a shorter string.
(6)
If the resulting citation label is already in use, add a letter a, b, c, ... to make it unique.

This will produce a label like Smith:1994:ABC.

The reason for including a four-digit year is that the millennium change is near, and we expect bibliographies to be in use for many years hence. Also, some bibliographies may be historical, with entries dating back hundreds of years. Using a four-digit year will keep sorts of otherwise identical keys in chronological order, and putting the year before the key derived from the title will facilitate sorting by year.

Because any change in citation labels must be accompanied by a change in citations in all documents that use the bibliography, it is not sufficient to just produce a new bibliography file with changed labels. Consequently, the output of biblabel is expected to be saved, and subsequently used with citesub(1) to actually carry out the substitutions efficiently. If no documents other than the bibliography file itself need to be changed, then a simple UNIX or IBM PC DOS pipeline of the form

biblabel <foo.bib | citesub -f - >foo.bib-new

will produce a new bibliography file with all of the citation labels changed to the new standardized form.

To avoid confusion between labels with common prefixes, such as Smith80 and Smith80a, citesub(1) will check for leading context of a left brace, quote, comma, whitespace, or beginning of line and trailing context of a right brace, comma, quote, percent, whitespace, or end of line so as to match these styles:

@Book{Smith:1980:ABC,

crossref = "Smith:1980:ABC",

crossref = {Smith:1980:ABC},

\cite{Smith:1980:ABC}

\cite{Smith:1980:ABC,Jones:1994:DEF}

\cite{%
       Smith:1980:ABC,%
       Jones:1994:DEF%
}

OPTIONS

Except for the options described below, all command-line words are assumed to be input files. Should such a filename begin with a hyphen, it must be disguised by a leading absolute or relative directory path, e.g. /tmp/-foo.bib or ./-foo.bib.
-f labels-in-use-file
This option specifies the name of a file containing citation labels already in use, one label per line. This can be used in a multi-file bibliography collection to guarantee unique citation labels across the entire collection.
-i ignore-file
This option specifies the name of a file containing additional words to be added to the internal ignore list. Such words are ignored when the up-to-three-letter title abbreviation is constructed.

WARNING AND ERROR MESSAGES

biblabel will issue warning messages in the following cases:

CAVEATS

BibTeX has loose syntactical requirements that the current simple implementation of biblabel does not support. In particular, outer parentheses may not be used in place of braces following ``@keyword'' patterns. If you have such a file, you can use bibclean(1) to prettyprint it into a form that biblabel can handle successfully.

SEE ALSO

bibcheck(1), bibclean(1), bibextract(1), bibjoin(1), biblex(1), biborder(1), bibparse(1), bibsort(1), bibtex(1), bibunlex(1), citesub(1).

AUTHOR

Nelson H. F. Beebe, Ph.D.
Center for Scientific Computing
Department of Mathematics
University of Utah
Salt Lake City, UT 84112
Tel: +1 801 581 5254
FAX: +1 801 581 4148
Email: <beebe@math.utah.edu>