Library / SDK
emacs-citar/citar avatar
emacs-citar/citar

citar turns a bibliography into a minibuffer you can act on

Emacs package to quickly find and act on bibliographic references, and edit org, markdown, and latex academic documents.

642 stars62 forksEmacs LispGPL-3.0

At a glance

What is it?
citar is a GPL-3.0 Emacs package that provides a completing-read front-end over BibTeX, BibLaTeX and CSL JSON data, with mode adapters for org-cite, LaTeX and markdown, and it is published on MELPA from a release that dates back to 2023 while the repository itself keeps moving.
Who is it for?
citar fits an Emacs academic writer who wants one place to find a reference, insert it in the format the current buffer expects and open the source entry, especially in org-cite where the alternatives are worse. It does not fit a LaTeX workflow that has no AUCTeX, since the LaTeX adapter requires it, and it does not fit a user unwilling to add Vertico, Orderless, Embark and Marginalia, because the completion experience depends on them.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 8 days ago.
What is it written in?
Mainly Emacs Lisp, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A completing-read front-end over your bibliography files

citar is described as a highly configurable completing-read front-end to browse and act on BibTeX, BibLaTeX and CSL JSON bibliographic data, with LaTeX, markdown and org-cite editing support. The completing-read part matters, because it means citar does not implement its own completion interface. It plugs into whatever vertical completion UI you already use.

The feature list is short and concrete. You get quick filtering and selection of bibliographic entries from the minibuffer, and commands to run against them. Bibliographic sources, both global and local, are cached seamlessly, so several .bib files do not each need their own lookup path. And there is a companion package, citar-embark, which supplies contextual actions in the minibuffer and at point in org, markdown and LaTeX buffers.

What you interact with is a list of candidate references, each with a name, and the entries are filtered as you type. The documentation shows it running under vertico, and a second screenshot shows citar-capf completing citation keys in a markdown buffer. For an academic workflow the practical payoff is that finding a reference and inserting it in the right syntax becomes the same action rather than two separate ones.

Four packages you are expected to install alongside it

The installation section names three routes: the Doom Emacs biblio module, which the documentation calls the easiest way to install and configure citar and related packages, MELPA, and Guix, which provides the emacs-citar package.

More important is the list of strongly recommended companions. Vertico is the completion interface, Orderless is the completion style, Embark provides contextual actions, and Marginalia adds annotations and candidate classification for Embark. Emacs 28 or newer is recommended.

The Orderless recommendation comes with a condition that explains the whole design. If you want to narrow your search by authors or titles rather than only by citation key, you need a completion style that is order independent, and the documentation points at Orderless with completion-styles set to (orderless basic). Key search works without it; free text search does not.

So the honest cost of citar is that you are adopting a small stack. Four packages, one of which changes how completion behaves everywhere in Emacs, and a specific Emacs version. In exchange you get a reference browser that behaves like the rest of your minibuffer rather than like a separate application.

Pointing citar at a bibliography and enabling completion at point

The minimal configuration is one custom variable, and the documentation is clear that it works with any completing-read compliant vertical completion UI, such as Vertico or the built-in icomplete-vertical, with actions available through M-x commands:

elisp
(use-package citar
  :custom
  (citar-bibliography '("~/bib/references.bib")))

The second layer is citar-capf, the completion-at-point function that completes citation keys inside the buffer. It is configured by adding hooks:

elisp
(use-package citar
  :custom
  (citar-bibliography '("~/bib/references.bib"))
  :hook
  (LaTeX-mode . citar-capf-setup)
  (org-mode . citar-capf-setup))

Both hooks are shown, which tells you the capf setup is mode independent and gets attached per buffer. The distinction between the two layers is worth holding on to: the first gives you a way to search the whole bibliography from anywhere, the second gives you completion of keys as you type inside a document.

For the third layer, contextual actions, the Embark companion is configured as its own package with the mode turned on:

elisp
(use-package citar-embark
  :after (citar embark)
  :no-require
  :config (citar-embark-mode))

The documentation notes that when Embark is in play the Citar actions are generic and work the same across org, markdown and LaTeX modes.

The adapter framework decides how a citation is written

Citar includes an adapter framework for major-mode specific editing integration, and it is the most extensible part of the package. Each adapter can provide a set of capabilities, and you configure which capabilities apply through the citar-major-mode-functions alist.

The capabilities are insert-keys, to insert citation keys, which the documentation flags as something that may go away; insert-citation; insert-edit, to insert citations or edit at point; local-bib-files, to find the bibliographic files associated with a buffer; key-at-point, which returns the citation key at point; and citation-at-point, which returns the list of keys in the citation at point.

Three adapters ship with the package. citar-org supports org-cite by default and can be configured for other formats. citar-latex offers configurable bibtex, natbib and biblatex support and requires AUCTeX. citar-markdown supports the pandoc citation syntax by default.

Two properties are stated as requirements rather than as conveniences: none of these adapters should require any configuration, and they should load as needed. That is the difference between an adapter framework and a set of hooks you wire up yourself, and it is why citar works across three buffer types without three separate setups.

Indicators, notes and opening the original entry

Three extension points sit above the adapter layer, and they are the parts that decide how citar fits into an existing configuration.

Indicators are the visual signal in the minibuffer that an entry has related resources attached, and the API for them is configurable. Notes integrate the entry with dedicated note packages, with external packages available for org-roam, denote and zk, which means your literature notes can live in a separate system and still be reachable from the reference list. Entry-opening is the third, and the citar-open-entry command opens the source data entry, configurable through citar-open-entry-function, which by default uses citar-open-entry-in-file.

The indicator design deserves a note. A reference that has a note, a PDF or a web page associated with it is not a different reference, and a filter on a key you cannot see is a bad experience. Making the presence of related resources visible in the candidate list is what turns a plain completion into a reference browser.

The cited comparison tools here are org-roam, denote and zk, and each of them has its own idea of what a note is. Citar's job is only to reach them, which keeps the note storage decision out of the reference lookup.

Org-cite integration and the actions at point

If you only write in Org, the documentation says citar-org is the best option, and the configuration shows the org-cite processors being pointed at citar:

elisp
(use-package citar
  :no-require
  :custom
  (org-cite-global-bibliography '("~/bib/references.bib"))
  (org-cite-insert-processor 'citar)
  (org-cite-follow-processor 'citar)
  (org-cite-activate-processor 'citar)
  (citar-bibliography org-cite-global-bibliography)
  ;; optional: org-cite-insert is also bound to C-c C-x C-@
  :bind
  (:map org-mode-map :package org ("C-c b" . #'org-cite-insert)))

The three processors cover inserting, following and activating, and the binding line adds the shorter C-c b for org-cite-insert, alongside the default C-c C-x C-@ binding.

The at-point workflow is where Embark and citar meet. You can insert a citation reference with the citar-insert-reference command, or place the cursor on a citation and run embark-act, then select r to put the reference in the kill ring, move the cursor and paste. If you would rather have the Embark menu appear through org-open-at-point, the documentation says to set citar-at-point-function, for example to embark-act, and notes that both embark-act and embark-dwim can be invoked independently of org-at-point and in other modes such as latex-mode.

GPL-3.0, a 2023 release, and a repository still being worked on

The package is released under the GPL-3.0 licence, with the LICENSE file at the repository root.

The release history is thin and old. The two tagged releases are v1.3.0 on 2023-03-21, whose title is configurable indicators, and v1.2.0 on 2023-03-15. The repository is not archived and the last push was on 2026-10-15, so development has continued for years after the last tag without a new release. Practically, that means the version on MELPA and the version in the repository are not the same thing, and the CHANGELOG.md in the tree is where the difference shows.

That is a mild irony given the version number. A 1.3.0 tag with the feature named in its title, configurable indicators, suggests the indicator API was still moving when it was frozen, and the configurable APIs listed in the features section are the thing to read the changelog for if you depend on them.

The repository is a plain Emacs Lisp package with the expected shape: citar.el at the root as the main entry point, citar-capf.el, citar-embark.el, citar-latex.el, citar-markdown.el, citar-org.el, citar-file.el, citar-format.el, citar-citeproc.el and citar-cache.el, plus a test/ directory, images/, a Makefile and an Eldev configuration. The Makefile shows the workflow, with clean running eldev clean all, lint running eldev -C --unstable -T lint, and test running eldev -C --unstable -T test, which is how a contributor checks a change before sending it.

Editorial conclusion

citar fits an Emacs academic writer who wants one place to find a reference, insert it in the format the current buffer expects and open the source entry, especially in org-cite where the alternatives are worse. It does not fit a LaTeX workflow that has no AUCTeX, since the LaTeX adapter requires it, and it does not fit a user unwilling to add Vertico, Orderless, Embark and Marginalia, because the completion experience depends on them. Before installing, check which version your package archive carries, since the newest tagged release is v1.3.0 from 2023-03-21 while the repository has been pushed to since, and confirm your bibliography is in a format the adapters handle.

Frequently asked questions

How do I install citar in Emacs?

The documentation names three routes: the Doom Emacs biblio module, which it calls the easiest option, MELPA, and Guix, which provides the emacs-citar package. Emacs 28 or newer is recommended, along with Vertico, Orderless, Embark and Marginalia.

What do I need to configure to search references by author or title?

A completion style that is order independent. The documentation points at Orderless with completion-styles set to (orderless basic), since searching by citation key alone works without it but narrowing by authors or titles does not.

Which file formats can citar read?

BibTeX, BibLaTeX and CSL JSON bibliographic data, with editing support for LaTeX, markdown and org-cite. The bibliography files are set through the citar-bibliography variable, and local bibliography files for a buffer are found by the adapter framework.

Does the LaTeX support in citar need extra packages?

Yes. The citar-latex adapter offers configurable bibtex, natbib and biblatex support and requires AUCTeX, and the insert-keys capability is documented as something that may go away.

Can citar open the original entry or connect to my notes?

Yes. The citar-open-entry command opens the source data entry and is configurable through citar-open-entry-function, and the notes API integrates with dedicated note packages, with external packages available for org-roam, denote and zk.

Official sources

  1. emacs-citar/citar on GitHub
  2. Issues
  3. License: GPL-3.0
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/emacs-citar-citar.svg)](https://hysenlabs.com/projects/emacs-citar-citar)

Was this useful?