bibtex citation picker

From their README

Supercharged Citation Picker

A citation picker for academics that write in markdown. Using Alfred, this citation picker inserts Pandoc, Multi-Markdown, or Latex citations from a BibTeX File.

Feature Overview

  • Inserts Pandoc Citation Syntax ([@citekey]), supporting page numbers & multiple citations ([@citekey, p. 23; @citekey, p. 42]). There are also customization options to support other citation styles, e.g. Multi-Markdown or Latex.
  • App-independent: works system-wide, in every text field of every app.
  • Smart Search: search for citekeys, authors, title, publication, keywords (tags), include/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, search for .csl files online, backup the library, …
  • Minimalistic reference manager: add or remove entries without from the BibTeX library or automatically file PDF.
  • Performant: considerably quicker than other citation pickers (~200ms to fully reload a library with ~4000 entries on my machine).
  • Easy Installation: no dependencies, no required plugins, no setup. other than entering the path to your .bib file.
  • Obsidian integration: When located in an Obsidian vault, literature notes will automatically be opened/created in Obsidian, instead of the default markdown app.

Table of Contents

Getting Started

  1. Download the latest release.
  2. In the workflow settings, set bibtex_library_path to the absolute path of your BibTeX library file (Tutorial: How to set environment variables in Alfred).
  3. Set a hotkey for the citation picker by double-clicking the respective field in the workflow window.

Basic Usage

Press the hotkey in any text field to launch the citation picker.

Search

  • Search for the title, author/editor (last name), year, or, collection/journal-title.
  • Prepend @ to a word to search for a citekey, e.g. @Grieser2020.
  • Prepend # to search for keywords (tags), e.g. #sociology.
  • Smart Queries: You can search for any combination of the above. For example, the query 2020 #cognition Grieser will for entries published in 2020, with the tag "cognition", and with "Grieser" as author/editor.
  • Quick Queries: The search is fuzzy and case-insensitive. For year dates, it also matches the last two digits. For example, you can search for fouc 77 to find Foucault 1977. In addition, recently selected entries are placed further at the top of the search results.

Citation Actions

  • ↵: Paste the citekey of the selected citation.
  • ⌥ + ↵: Add another citation.
  • ⌘ + ↵: Add page numbers before pasting the selected citekey. Confirm the page number with ⌥ + ↵ or ⌘ + ↵ to add another citation afterwards.

URL Actions

  • ⌃ + ↵: Open the URL in the browser.
  • ⌘ + C: Copy the URL to the clipboard.

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)
  • Multi-Markdown
  • Latex
  • Wikilink
  • Tag

Further Format Customization

If you want to use a format that isn't 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 more people, feel free to make a PR to this file which generates the formats.

Advanced Usage

Bibliography Actions

  • ⇧ + ↵: Reveal the entry in BibDesk, VSCode, or Sublime, depending on the setting open_entries_in.
  • ⌘⌥ + ↵: Paste the full bibliographic entry in the APA 6th Style (requires Pandoc).
  • ⌘ + L: Preview the (unabridged) title, abstract, and list of keywords in Large Type.
  • ⌘fn + ↵: Delete the entry from the BibTeX library.
    • ⚠️ This feature is untested with BiBTeX files created with apps other than BibDesk and Bookends (or have been formatted with bibtex-tidy). Create an issue for problems with other apps.
  • Add entries to the BibTex library: use the Alfred Keyword +, followed by a DOI or ISBN
    • the respective entry will be added to your library, with a properly formatted citekey (avoiding duplicates with existing library, etc.)
    • Leave the input after the + empty to create a new, empty BibTeX entry.
    • Opens the entry afterwards in the app specified in open_entries_in.
  • Note that adding & 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 will be overridden.

Advanced Search Features

  • The workflow setting match_authors_in_etal determines whether authors (or editors) in the et al. are still matched when searching for them (default: true).
  • The workflow setting match_only_short_years ensures that searching for "19" only matches publications written in the year 2019 (or 1919), and not all publications written between 1900 and 1999 (default: false).
  • Tab-Completion: Pressing tab autocompletes the first author/editor name.

Literature Note Actions

  • Looks in the folder specified in the workflow settings literature_note_folder for files that are exactly named like the citekey (without @, but with .md extension).
  • Entries that have a literature note like this will be indicated by a 📓.
  • Add * to any search query to filter only for entries with literature notes, e.g. * grieser will search for entries from "Grieser" with literature notes. Can be combined with other queries (see: smart queries).
  • ⌘⇧ + ↵: Open the literature note.
    • If the file is in an Obsidian Vault, opens the file in Obsidian.
    • If there is no literature note, a new one will be created.
  • ⌘ + Y: Preview the literature note with QuickLook (requires QLmarkdown or Peek[^1]).

PDFs Management Actions

  • fn + ↵: Auto-file and auto-rename the currently selected PDF in Finder to the folder specified in pdf_folder. Inside pdf_folder, uses the template path: {first_letter_of_citekey}/{citekey-author-part}/{citekey}_{shortened_title}.pdf
  • If there is a PDF already present at that location, it will be indicated by a 📕.
  • Hyper + ↵: Opens the associated PDF in the default PDF reader.[^5]
  • 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 will search for 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).

  • CSL Search: Search for a citation style, which will be downloaded to the location csl_folder specified in your workflow settings (default: ~/.pandoc/csl/).
  • Bibliography Stats: Brief statistical summary of the library. (Currently only total number of citations.)
  • Cheatsheet: Pandoc Citation Syntax: Open a cheat sheet for the Pandoc citation syntax.
  • Cheatsheet: Citation Picker Actions: Open a cheat sheet of the available actions of the Supercharged Citation Picker.
  • Force Buffer Reload: Force a reload of the citation picker for debugging purposes.
  • Run BibTeX-Tidy: Runs bibtex-tidy with the options set in bibtex_tidy_options in the terminal.[^4]
  • Autocompletion List: Create an autocompletion list formatted for use with the Various Complements Plugin in Obsidian.[^3]
  • Library Backup[^2]: Create a Backup of your library in the location backup_destination, restricting the maximum number of backups to max_number_of_bkps (deleting the oldest backup). You can also use the following AppleScript to trigger the backups, e.g. for a cron job:
tell application id "com.runningwithcrayons.Alfred" to run trigger "BibTeX Library Backup" in workflow "de.chris-grieser.alfred-bibtex-citation-picker"

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

If you feel very generous, you may also buy me something from my Amazon wish list. But please donate something to developers who still go to college, before you consider buying me an item from my wish list! 😊

Amazon wish list

Credits

Icons created by Freepik - Flaticon

[^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 small 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]: As per MIT License, this app comes without any warranty in case of data loss. That being said, I never had any problems with the backups created.

[^3]: Set the workflow setting autocomplete_list_location to the absolute path where the file should be created and use a .txt extension. In the Various Complements settings, use "Prefix" as Matching Strategy, the pipe character (|) as delimiter, enable Custom Dictionaries, add the previously created file to the custom dictionary list, and set Delimiter to divide suggestions for display from ones for insertion to >>>. Afterwards, reload custom dictionaries via the command palette. (If the Advanced URI Plugin is installed, the reloading of the custom dictionaries will be triggered automatically, if the file is already in the custom dictionary list.)

[^4]: Uses the app set as default terminal in the Alfred preferences.

[^5]: Hyper is an artificial "fifth" modifier key equivalent to ⌘⌥⌃⇧, and can be created using apps like Karabiner Elements, BetterTouchTool, or Hyperkey.