                      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


You might enjoy trying out option 3 on the enclosed paper 'fun.tex'.


Indefensible hacking based on NbibTeX
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I'm using the same infrastructure to keep my web pages up to date, but
that's a story for another day.
