# Ebib: a BibTeX database manager for Emacs

Ebib is a program for managing BibTeX databases that runs inside Emacs. If you are used to doing everything LaTeX from within Emacs, you may appreciate that you can manage your `.bib` files in Emacs as well. Ebib provides functions with which you can select a key from the database and have it inserted directly into your LaTeX text. Similar functionality is available for Markdown and Orgmode.

Ebib provides the standard capabilities that one would expect from a BibTeX database manager: `.bib` files can be opened, modified (adding, deleting, modifying entries), searched, and saved. Apart from the basics, Ebib has quite a few extra features that make managing your BibTeX files easier.

## Features

### General

- Visual representation distinguishing obligatory, optional and extra fields.
- Copy/cut/paste mechanism for quickly copying field values. (This fully integrates with Emacs' kill ring.)
- Automatic loading of `.bib` files upon start-up.
- Extensive user manual.

### BibTeX / Biblatex

- Support for both BibTeX and Biblatex files.
- Creating and editing `@string` and `@preamble` definitions is supported (`@comment`s are kept, but are not editable).
- BibTeX / Biblatex entry and field types can be customised, allowing adaptation for non-standard and personal bibliography styles.
- Automatic creation of entry keys (using the functionality of Emacs' `bibtex-mode`).
- Field values containing newlines are supported, allowing the creation of annotated bibliographies.
- Crossreferencing is supported, both BibTeX and Biblatex mechanisms.
- Alternatively, the database can be saved with the entries in the `.bib` file sorted on user-specified fields (useful in ConTeXt).

### Databases

- Multiple `.bib` files can be opened at the same time.
- Merging of a second `.bib` file with an already loaded database.
- Single or multiple entries can be exported to another file, or to another open database, allowing the creation of a new specialised `.bib` file from an existing one. `@preamble` and `@string` definitions can also be exported.

### Searching

- Simple regexp searches can be performed on a database, searching the contents of all fields of each entry.
- Complex search queries with logical `and`, `or` and `not` operators, built up interactively, can be performed, with the possibility of searching only specific fields. Search queries can be saved for later reuse.

### LaTeX integration

- From within a LaTeX document, it is possible to select (using TAB-completion) and insert a BibTeX key into the document. This can also be set up for other document formats that support automatic bibliographies: support for Org mode and Pandoc Markdown is included.
- Inside Ebib, it is possible to push entries to a LaTeX / Org mode / Markdown buffer.
- Quick summary of entries into a `*Help*` buffer.
- Creating a `.bib` file from a `.bbl` file, allowing you to create a `.bib` file for a LaTeX document containing only the references in the document. (Currently only works for `.bbl` files generated by BibTeX.)

### Miscellaneous

- Entries can be imported from text buffers or from the `*scratch*` buffer (allowing copy & paste of BibTeX entries, e.g. from the Internet).
- A URL stored in a BibTeX field can be extracted and sent to a browser.
- Files stored in a BibTeX field can be opened with user-configurable viewers.
- A time stamp can be added to each new entry, allowing you to keep track of new additions in the database.
- (Parts of) databases can be printed, either as a list of references typeset by BibTeX / Biblatex, or directly as database entries.
- Keywords can be stored in a file to aid in maintaining uniformity in keywords within and across `.bib` files.

## Screenshots

Visually, Ebib is not very spectacular. But to get an impression of what it looks like, you can look at the following three screenshots. The first shows Ebib's standard lay-out, with the list of entry keys in the top window and the fields of the currently highlighted entry in the bottom window. In the second image, which uses the alternative vertical layout, the string 'Reuland' is highlighted as the result of a text search. The field values displayed in a lighter colour come from the cross-referenced entry. The third screenshot shows the strings buffer, where you can edit the `@string` definitions in the database.

## Manual

The complete user manual for Ebib is available in html format here.

## Installation

The easiest way to install Ebib is to use the Melpa package archive. This and other installation methods are described in the manual.

If you want to download the source, you can clone the git repository for Ebib, or get a tar ball from the Github releases page.

Note: if you're upgrading from Ebib 1.x to the latest version, there are a few things to consider. See the manual for details.

## Support

The quickest way to ask questions or report issues is to use the Github issue tracker. Alternatively, send me an email.

Joost Kremers (last modified: 22 Feb 2016)