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 millenium 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% }
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>