2  Changes

This section describes the differences between BIBTEX versions 0.98i and 0.99b, and also between the corresponding standard styles. There were a lot of differences; there will be a lot fewer between 0.99 and 1.00.

2.1  New BIBTEX features

The following list explains BIBTEX's new features and how to use them.

  1. With the single command `\nocite{*}' you can now include in the reference list every entry in the database files, without having to explicitly \cite or \nocite each entry. Giving this command, in essence, \nocites all the enties in the database, in database order, at the very spot in your document where you give the command.

  2. You can now have as a field value (or an @STRING definition) the concatenation of several strings. For example if you've defined

        @STRING( WGA = " World Gnus Almanac" )
    

    then it's easy to produce nearly-identical title fields for different entries:

      @BOOK(almanac-66,
        title = 1966 # WGA,
        .  .  .
      @BOOK(almanac-67,
        title = 1967 # WGA,
    

    and so on. Or, you could have a field like

        month = "1~" # jan,
    

    which would come out something like `1~January' or `1~Jan.' in the bbl file, depending on how your bibliography style defines the jan abbreviation. You may concatenate as many strings as you like (except that there's a limit to the overall length of the resulting field); just be sure to put the concatenation character `#', surrounded by optional spaces or newlines, between each successive pair of strings.

  3. BIBTEX has a new cross-referencing feature, explained by an example. Suppose you say \cite{no-gnats} in your document, and suppose you have these two entries in your database file:

      @INPROCEEDINGS(no-gnats,
        crossref = "gg-proceedings",
        author = "Rocky Gneisser",
        title = "No Gnats Are Taken for Granite",
        pages = "133-139")
      .  .  .
      @PROCEEDINGS(gg-proceedings,
        editor = "Gerald Ford and Jimmy Carter",
        title = "The Gnats and Gnus 1988 Proceedings",
        booktitle = "The Gnats and Gnus 1988 Proceedings")
    

    Two things happen. First, the special crossref field tells BIBTEX that the no-gnats entry should inherit any fields it's missing from the entry it cross references, gg-proceedings. In this case it in inherits the two fields editor and booktitle. Note that, in the standard styles at least, the booktitle field is irrelevant for the PROCEEDINGS entry type. The booktitle field appears here in the gg-proceedings entry only so that the entries that cross reference it may inherit the field. No matter how many papers from this meeting exist in the database, this booktitle field need only appear once.

    The second thing that happens: BIBTEX automatically puts the entry gg-proceedings into the reference list if it's cross referenced by two or more entries that you \cite or \nocite, even if you don't \cite or \nocite the gg-proceedings entry itself. So gg-proceedings will automatically appear on the reference list if one other entry besides no-gnats cross references it.

    To guarantee that this scheme works, however, a cross-referenced entry must occur later in the database files than every entry that cross-references it. Thus, putting all cross-referenced entries at the end makes sense. (Moreover, you may not reliably nest cross references; that is, a cross-referenced entry may not itself reliably cross reference an entry. This is almost certainly not something you'd want to do, though.)

    One final note: This cross-referencing feature is completely unrelated to the old BIBTEX's cross referencing, which is still allowed. Thus, having a field like

        note = "Jones \cite{jones-proof} improves the result"
    

    is not affected by the new feature.

  4. BIBTEX now handles accented characters. For example if you have an entry with the two fields

        author = "Kurt G{\"o}del",
        year = 1931,
    

    and if you're using the alpha bibliography style, then BIBTEX will construct the label [Göd31] for this entry, which is what you'd want. To get this feature to work you must place the entire accented character in braces; in this case either {\"o} or {\"{o}} will do. Furthermore these braces must not themselves be enclosed in braces (other than the ones that might delimit the entire field or the entire entry); and there must be a backslash as the very first character inside the braces. Thus neither {G{\"{o}}del} nor {G\"{o}del} will work for this example.

    This feature handles all the accented characters and all but the nonbackslashed foreign symbols found in Tables 3.1 and 3.2 of the LATEX book. This feature behaves similarly for ``accents'' you might define; we'll see an example shortly. For the purposes of counting letters in labels, BIBTEX considers everything contained inside the braces as a single letter.

  5. BIBTEX also handles hyphenated names. For example if you have an entry with

        author = "Jean-Paul Sartre",
    

    and if you're using the abbrv style, then the result is `J.-P. Sartre'.

  6. There's now an @PREAMBLE command for the database files. This command's syntax is just like @STRING's, except that there is no name or equals-sign, just the string. Here's an example:

        @PREAMBLE{ "\newcommand{\noopsort}[1]{} "
                 # "\newcommand{\singleletter}[1]{#1} " }
    

    (note the use of concatenation here, too). The standard styles output whatever information you give this command (LATEX macros most likely) directly to the bbl file. We'll look at one possible use of this command, based on the \noopsort command just defined.

    The issue here is sorting (alphabetizing). BIBTEX does a pretty good job, but occasionally weird circumstances conspire to confuse BIBTEX: Suppose that you have entries in your database for the two books in a two-volume set by the same author, and that you'd like volume 1 to appear just before volume 2 in your reference list. Further suppose that there's now a second edition of volume 1, which came out in 1973, say, but that there's still just one edition of volume 2, which came out in 1971. Since the plain standard style sorts by author and then year, it will place volume 2 first (because its edition came out two years earlier) unless you help BIBTEX. You can do this by using the year fields below for the two volumes:

        year = "{\noopsort{a}}1973"
        .  .  .
        year = "{\noopsort{b}}1971"
    

    According to the definition of \noopsort, LATEX will print nothing but the true year for these fields. But BIBTEX will be perfectly happy pretending that \noopsort specifies some fancy accent that's supposed to adorn the `a' and the `b'; thus when BIBTEX sorts it will pretend that `a1973' and `b1971' are the real years, and since `a' comes before `b', it will place volume 1 before volume 2, just what you wanted. By the way, if this author has any other works included in your database, you'd probably want to use instead something like {\noopsort{1968a}}1973 and {\noopsort{1968b}}1971, so that these two books would come out in a reasonable spot relative to the author's other works (this assumes that 1968 results in a reasonable spot, say because that's when the first edition of volume 1 appeared).

    There is a limit to the number of @PREAMBLE commands you may use, but you'll never exceed this limit if you restrict yourself to one per database file; this is not a serious restriction, given the concatenation feature (item 2.1).

  7. BIBTEX's sorting algorithm is now stable. This means that if two entries have identical sort keys, those two entries will appear in citation order. (The bibliography styles construct these sort keys -- usually the author information followed by the year and the title.)

  8. BIBTEX no longer does case conversion for file names; this will make BIBTEX easier to install on Unix systems, for example.

  9. It's now easier to add code for processing a command-line aux-file name.

2.2  Changes to the standard styles

This section describes changes to the standard styles (plain, unsrt, alpha, abbrv) that affect ordinary users. Changes that affect style designers appear in the document ``Designing BIBTEX Styles'' [3].

  1. In general, sorting is now by ``author'', then year, then title -- the old versions didn't use the year field. (The alpha style, however, sorts first by label, then ``author'', year, and title.) The quotes around author mean that some entry types might use something besides the author, like the editor or organization.

  2. Many unnecessary ties (~) have been removed. LATEX thus will produce slightly fewer `Underfull \hbox' messages when it's formatting the reference list.

  3. Emphasizing ({\em ...}) has replaced italicizing ({\it ...}). This will almost never result in a difference between the old output and the new.

  4. The alpha style now uses a superscripted `+' instead of a `*' to represent names omitted in constructing the label. If you really liked it the way it was, however, or if you want to omit the character entirely, you don't have to modify the style file -- you can override the `+' by redefining the \etalchar command that the alpha style writes onto the bbl file (just preceding the \thebibliography environment); use LATEX's \renewcommand inside a database @PREAMBLE command, described in the previous subsection's item 2.1.

  5. The abbrv style now uses `Mar.' and `Sept.' for those months rather than `March' and `Sep.'

  6. The standard styles use BIBTEX's new cross-referencing feature by giving a \cite of the cross-referenced entry and by omitting from the cross-referencing entry (most of the) information that appears in the cross-referenced entry. These styles do this when a titled thing (the cross-referencing entry) is part of a larger titled thing (the cross-referenced entry). There are five such situations: when (1) an INPROCEEDINGS (or CONFERENCE, which is the same) cross references a PROCEEDINGS; when (2) a BOOK, (3) an INBOOK, or (4) an INCOLLECTION cross references a BOOK (in these cases, the cross-referencing entry is a single volume in a multi-volume work); and when (5) an ARTICLE cross references an ARTICLE (in this case, the cross-referenced entry is really a journal, but there's no JOURNAL entry type; this will result in warning messages about an empty author and title for the journal -- you should just ignore these warnings).

  7. The MASTERSTHESIS and PHDTHESIS entry types now take an optional type field. For example you can get the standard styles to call your reference a `Ph.D. dissertation' instead of the default `PhD thesis' by including a

        type = "{Ph.D.} dissertation"
    

    in your database entry.

  8. Similarly, the INBOOK and INCOLLECTION entry types now take an optional type field, allowing `section 1.2' instead of the default `chapter 1.2'. You get this by putting

        chapter = "1.2",
        type = "Section"
    

    in your database entry.

  9. The BOOKLET, MASTERSTHESIS, and TECHREPORT entry types now format their title fields as if they were ARTICLE titles rather than BOOK titles.

  10. The PROCEEDINGS and INPROCEEDINGS entry types now use the address field to tell where a conference was held, rather than to give the address of the publisher or organization. If you want to include the publisher's or organization's address, put it in the publisher or organization field.

  11. The BOOK, INBOOK, INCOLLECTION, and PROCEEDINGS entry types now allow either volume or number (but not both), rather than just volume.

  12. The INCOLLECTION entry type now allows a series and an edition field.

  13. The INPROCEEDINGS and PROCEEDINGS entry types now allow either a volume or number, and also a series field.

  14. The UNPUBLISHED entry type now outputs, in one block, the note field followed by the date information.

  15. The MANUAL entry type now prints out the organization in the first block if the author field is empty.

  16. The MISC entry type now issues a warning if all the optional fields are empty (that is, if the entire entry is empty).