NbibTeX — A better BibTeX

NbibTeX helps authors take better advantage of BibTeX data, especially when working in collaboration. Instead of using BibTeX 'keys', which are chosen arbitrarily and idiosyncratically, NbibTeX builds a bibliography by searching the actual contents of citations.

The command nbibtex can be used just as you would use bibtex. Your \cite{...} commands are interpreted either as classic BibTeX keys (for backward compatibility) or as search commands. Thus, if your bibliography contains the classic paper on type inference, nbibtex should find it using a citation like \cite{damas-milner:1978}, or \cite{damas-milner:polymorphism}, or perhaps even simply \cite{damas-milner}. The same citations should also work with your coauthors' bibliographies, even if those bibliographies are organized differently.

NbibTeX also comes with the nbibfind command, which uses the NbibTeX search engine on the command line. If you know you are looking for a paper by Harper and Moggi, you can just type

    nbibfind harper-moggi
and see what comes out.

To help you work with coauthors who don't have NbibTeX, nbibtex can also emit a .bib file containing exactly the entries cited in your paper.

Using NbibTeX

I envision three different ways for people to use NbibTeX.
  1. Use as you would bibtex for your own papers with your own bibliography. Your file paper.tex will contain \bibliography{yours}, and to create a bibliography you will simply use
      nbibtex paper

  2. Use to work with coauthors who also have NbibTeX, each using his or her own bibliography. Your file paper.tex will contain \bibliography{yours,mine,his}, and to create a bibliography you will use
      nbibtex -permissive paper
    nbibtex will cheerfully ignore any missing bibliographies.

  3. Use to work with coauthors, some of whom have only bibtex. In this case, your best bet is to use nbibtex to make a paper-specific bibliography file. Your file paper.tex will contain \bibliography{paper}, and to create or update paper.bib you will use
      nbibtex -permissive -bib -o paper.bib paper paper yours
    This command line tells nbibtex to emit a .bib file (-bib) to file paper.bib, based on citations found in paper.aux (first paper) and using BibTeX entries found in either paper.bib (second paper) or in yours.bib. Because of the -permissive option, it is OK if paper.bib is missing. With paper.bib in place, you and your coauthors can all use classic BibTeX:
      bibtex paper

Getting NbibTeX

NbibTeX is available as source code (you can read the literate program), as a Debian package, or as RPMs.

Dirty tricks

I've thrown together some scripts that attempt to connect BibTeX entries with electronic copies of papers I have lying around. For example, I can view a paper just by
  showpaper damas-milner
These scripts aren't really ready for prime time, but if you want to play, send email.
Back to Norman Ramsey's home page.