Skip to content
BibTeX for org-mode
Emacs Lisp TeX
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.



BibELTeX is a BibTeX-like tool for GNU Emacs’ org-mode. Instead of generating TeX instructions BibELTeX generates org-mode data.

This is intended as a replacement for ox-bibtex.el from org-mode’s contrib. Which is similar but only works for LaTeX and HTML export by using bibtex2html.

This is in a very early development stage and currently does not produce any fancy or beautiful output.


Put bibeltex.el somewhere in your load-path and require it. To deactivate it, simply call unload-feature for bibeltex.

Use \cite{key} to add a citation and add a line

#+BIBLIOGRAPHY file style

to generate the bibliography. With file being the name of a BibTeX-file. Currently style is being ignored.


To add a new style define a new elisp variable and add it to bibeltex-style-alist. A style is a list containing either format strings or lisp expressions. Lisp expressions are evaluated and should return format strings. Lisp expressions are evaluated with the entry fields bound to entry-FIELDNAME. E.g., for the :author field it would be entry-author.

The format specifications are the following: %ENTRY% or %ENTRY:OPTIONA:OPTIONB:...%. ENTRY should be the name of a field without the leading :. E.g., %key-num% to get the :key-num field. The option fields look like func(arg0,arg1,...). With func being a function from the bibeltex--style-option-functions map. The functions are called with the field value as first argument and the arguments from the option call following. E.g., %key-num:foo(1)% would result in foo((bibeltex--get-field :key-num entry), "1"). The return value replaces the field value in the format and for the next option call. To cancel the insertion of a format string the symbol cancel can be returned.

There are two predefined functions:

which handles BibTeX name lists and takes an optional numeric argument for the number of names to be added.
cancels the format string insertion if the field is emptry.

A style should always add a properties entry with a custom-id equal to the :key field to an entry to turn the entry into a link target.

Sorting and quote style are currently not included in the style itself but handled separately by bibeltex-format-cite-entry, bibeltex-format-cite-sep, bibeltex-format-cite, bibeltex-use-num-keys, bibeltex-sort-function. This will however be definable by the style in the future.

To Do

More styles

Add more styles (similar to bibtex styles).

Local customization

Maybe: Support for ox-bibtex.el options Properties? Keywords?

Handle (La)TeX instructions

E.g., umlauts with \"{o}. Some things are handled by org-mode’s entity support. But sadly not everything.

Try to use org-mode internal functions to handle \cite/#+BIBLIOGRAPHY

Currenty \cite/#+BIBLIOGRAPHY are expanded in any case.

You can’t perform that action at this time.