/alfred-bibtex-citation-picker

Citation picker & lightweight reference manager for BibTeX files, via Alfred.

Primary LanguageJavaScriptMIT LicenseMIT

Supercharged Citation Picker

A citation picker and lightweight reference manager for Alfred. Uses a BibTeX File and supports various formats like Pandoc Markdown, Multi-Markdown, LaTeX, or Org Mode.

promo screenshot

Feature Overview

  • Inserts Pandoc Citation Syntax ([@citekey]), supporting page numbers & multiple citations ([@citekey, p. 23; @citekey, p. 42]). Can also be configured to use LaTeX, Multi-Markdown, eta templates, Org Mode, [[wikilinks]], #tags or bare citkeys as citation format.
  • App-independent: Works system-wide, in every text field of every app.
  • Smart Search: Search for citekeys, authors, title, publication, keywords (tags), include or exclude authors in et al., tab-completion, fuzzy-matching, sorting recently used entries to the top.
  • Feature-rich: Paste single-entry bibliographies, open URLs, open or create literature notes, attach PDFs, search for .csl files online, and more.
  • Blazingly Fast: Considerably quicker than any other citation picker (~200 ms to fully reload a library with ~4000 entries).
  • Simple Installation: Just enter the path to your .bib file, and you are ready to go.
  • Lightweight Reference Manager: Automatically rename and file PDFs, remove, entries, and more.
  • Quickly Add New Entries: Select a DOI or ISBN and add them directly to your BibTeX library via hotkey.
  • Obsidian Integration: When located in your Obsidian Vault, literature notes are automatically opened or created in Obsidian instead of the default markdown app.

Table of Contents

Installation

  1. Download the latest release.
  2. Enter the BibTeX Library path.
  3. Use the citation picker via the Alfred keyword ct, or set a hotkey for the citation picker by double-clicking the respective field in the workflow window.

Note As soon as the workflow is admitted into the Alfred Gallery, it is automatically updated via the Gallery. Until then, you have to update the workflow manually by downloading the latest release here at GitHub.

Basic Usage

Use the ct keyword press the hotkey in any text field to start the citation picker.

Search

  • You can search for the title, author/editor (last name), year, collection, or journal name.
  • Prepend @ to a word to search for a citekey, for example @Grieser2020.
  • Prepend # to search for keywords (tags), for example #sociology.
  • Smart Queries: You can search for any combination of the above. For example, the query 2020 #cognition grieser searches for entries published in 2020, with the tag "cognition," and with "Grieser" as author/editor.

Note
The citation picker prioritizes entries first by how well they match, then by the recency their use, and lastly by how recently they have been added to the library.

Citation Actions

  • : Paste the citekey of the selected citation.
  • ⌥ + ↵: Add another citation.
  • ⌘⇧ + ↵: Paste an inline-citation (citation without surrounding formatting, for example @Grieser2022 instead of [@Grieser2022])
  • ⌘ + ↵: Add page numbers before pasting the selected citekey.
    • Confirm the page number with ⌥ + ↵ to add another citation afterward.
    • Confirm with ⌘⇧ + ↵ for an inline-citation with page number (@Grieser2022 [p. 42]).

URL Actions

  • ⌃ + ↵: Open the URL in the browser.
  • ⌘ + C: Copy the URL to the clipboard.
  • In both cases, if the entry has a DOI but not a URL, the citation picker uses the DOI-URL (https://doi.org/…) instead.

Icon Meanings

Icon Entry has
🌐 URL or DOI
📄 Abstract
n 🏷 n Keywords
📓 Literature Note
📕 PDF

Changing the Citation Format

Available Formats

You can use the scp and select Change Citation Format to change the format of the citations:

  • Pandoc (default)
  • Org Mode
  • Multi-Markdown (MMD)
  • LaTeX
  • eta template
  • iA Writer
  • [[wikilink]]
  • #tag
  • bare citekey
  • bracketed citekey

Note
Not all formats support all citation-related features. For example, adding Page numbers as well as inline-citations are not supported for Latex, Wikilinks, and Tags, and iA Writer does not support multiple citations.

Other Format Customizations

If you want to use a format that is not available, you can customize the format yourself by changing the workflow environment variables starting with _format. (Tutorial: How to set environment variables in Alfred)

If there is a citation syntax that is commonly used, or if you want to improve support for an existing format, feel free to open a Feature Request.

You can also make a PR to this file which defines the citation formats.

Advanced Usage

Bibliography Actions

  • ⇧ + ↵: Reveal the entry in Zotero, neovim, BibDesk, VS Code, or Sublime Text, depending on the setting in the workflow configuration.
  • ⌘⌥ + ↵: Paste the full bibliographic entry in the APA 6th Style (requires Pandoc).
  • ⌘ + L: Preview the (unabridged) title, abstract, and list of keywords.
  • ⌘fn + ↵: Delete the entry from the BibTeX library. (⚠️ This feature is untested with BibTeX files created with apps other than BibDesk and Bookends. Create an issue for problems with other apps.)

Add New Entries

  • universal action or hotkey: Uses the selected DOI, ISBN, or URL containing a DOI to add a new entry to the library.
    • Experimental: A second universal action can be used to parse & add a bibliographic entry. Requires anystyle.
    • The new entry is added to your library, with a correctly formatted and unique citekey. Afterward, the entry is opened.
  • file action: Use the Add Entry and Auto-file action on a PDF file that includes a DOI. The DOI is automatically retrieved from the PDF, the entry added to the library, and the PDF auto-filed (see PDF Management Actions). Requires pdfgrep.

Note Adding or removing entries does not work with the BetterBibTeX Zotero Plugin since the plugin only does a one-way-sync (Zotero ➞ BibTeX file), meaning any changes to the .bib file are not reflected in Zotero.

Literature Note Actions

  • The citation picker looks in the folder specified in the workflow settings for files that are exactly named like the citekey, optionally followed by an underscore and some text like {citekey}_{title}.md. The citekey must not contain underscores (_), the filename should not include the @.
  • Entries that have such a literature note is indicated by a 📓.
  • ⌃⌥ + ↵: Open the literature note.
    • If the file is in your Obsidian Vault, it is opened directly in Obsidian instead of the default text editor.
    • If there is no literature note, a new one is created.
  • ⌘ + Y: Preview the literature note with QuickLook (requires QLmarkdown or Peek1).
  • Add * to any search query to filter only for entries with literature notes, for example * grieser searches for entries matching "grieser" which also have a literature notes. Can be combined with other queries (see: smart queries).

PDF Management Actions

The following features require that all your PDFs are located in the folder specified in your workflow settings.

  • fn + ↵: Auto-file and auto-rename the currently selected PDF. Inside your selected PDF folder, uses the template path: {first_letter_of_citekey}/{citekey-author-part}/{citekey}_{shortened_title}.pdf
  • The 📕 indicates that the entry already has an associated PDF at that location.
  • Hyper + ↵2: If the entry has an associated PDF file, open it with the default PDF reader. The citekey must not contain an underscore (_).
  • Add pdf to any search query to filter only for entries with PDFs that have been added by the auto-file feature. pdf grieser, for example, displays only entries from the author "Grieser" with PDFs. Can be combined with other queries (see: smart queries).

Auxiliary Features

Triggered via the Alfred Keyword scp (for Supercharged Citation Picker).

  • Cheatsheet: Citation Picker Actions: Open a cheat sheet of the available actions of the Supercharged Citation Picker.
  • Citation Style Search: Search for a citation style (.csl file), which is downloaded to the location specified in your workflow settings (default: ~/.pandoc/csl/).
  • Force Buffer Reload: Force a reload of the citation picker. Mostly for debugging purposes.

Spread the Word

As this is probably the most feature-rich and most performant citation picker on macOS, it is kind of a bummer that not many people know about this. However, I do not really know where to "advertise" this, since I am not aware of any forum or website for academics that work with markdown and BibTeX. So if you know a good place, feel free to contact me or spread the word yourself. 😊

About the Developer

In my day job, I am a sociologist studying the social mechanisms underlying the digital economy. For my PhD project, I investigate the governance of the app economy and how software ecosystems manage the tension between innovation and compatibility. If you are interested in this subject, feel free to get in touch.

Profiles

Donate

Buy Me a Coffee at ko-fi.com

Credits

Icons created by Freepik (Flaticon)

Footnotes

  1. QLmarkdown and Peek both enable previewing of Markdown documents. Peek works with a wide range of other file types than Markdown, but costs around 5€. QLMarkdown is free, but only works for Markdown and requires some minor setup. To enable the proper display of YAML headers, you need to enable the respective setting in the Advanced Options of QLMarkdown or Peek.

  2. Hyper is an artificial "fifth" modifier key equal to ⌘⌥⌃⇧, and can be created using apps like Karabiner Elements, BetterTouchTool, or Hyperkey.