Skip to main content

Manage BibTeX libraries from the terminal

Project description

antilibrary

antilibrary

Manage a BibTeX file from the terminal.

Install

pip install antilibrary
# or
uv tool install antilibrary

Usage

Antilibrary manages one or more libraries — each a .bib file with an optional folder for associated files (PDFs, EPUBs, …). Libraries live in ~/.config/antilibrary/config.toml (override with $ANTILIBRARY_CONFIG).

# Register a library (the first one becomes the default)
antilibrary library add main --bib ~/refs/main.bib --files ~/refs/files
antilibrary library add movies --bib ~/media/movies.bib   # no files folder

antilibrary library list                 # show configured libraries
antilibrary library set-default movies   # change the default
antilibrary library remove movies        # forget a library (add --purge to delete its files)

Once a default is set, the entry commands operate on it. Use -l/--library NAME to target another:

antilibrary add                          # interactively add an entry
antilibrary add -l movies                # add to the movies library
antilibrary get smith2024                # print citation for a key
antilibrary browse                       # list entries
antilibrary browse -q "attention"        # fuzzy search
antilibrary browse -t "nlp,transformers" # filter by tags
antilibrary remove smith2024             # delete an entry (+ its managed file)

The library is resolved in this order: -l/--library NAME, then -f/--file FILE (ad-hoc, no files folder), then $ANTILIBRARY_BIB, then the configured default.

Associated files

If a library has a files folder, attaching a file copies it there and renames it to the entry's key (e.g. smith2024.pdf); the entry's file field stores the relative name. If the library has no files folder, the file is left in place and file stores its absolute path. Removing an entry deletes its managed file (pass --keep-file to keep it).

antilibrary add --attach ~/Downloads/paper.pdf   # attach during interactive add

Citation styles

antilibrary get KEY --style {bibtex|bibtex-full|latex|org-cite|pandoc} prints a citation in the requested format:

style output
bibtex smith2024
bibtex-full the whole entry
latex \cite{smith2024}
org-cite [cite:@smith2024]
pandoc [@smith2024]

Adding entries

antilibrary add is interactive — it prompts for type, title, author, year, key, and any extra fields. Adding an entry that matches an existing one (by DOI, arXiv ID, ISBN, or normalized title+author) silently fills any empty fields on the existing entry rather than creating a duplicate. Pass --no-merge to skip on duplicate, or --force to append anyway with an auto-suffixed key.

Bulk add from files or online search

Antilibrary integrates with its two companion tools:

  • antifile — extract BibTeX from PDFs, EPUBs, URLs, DOIs, arXiv IDs, or ISBNs.
  • antifind — online search (movies, TV, music, papers, books) → BibTeX.

Install them as extras:

pip install 'antilibrary[files]'    # antifile
pip install 'antilibrary[search]'   # antifind
pip install 'antilibrary[all]'      # both

Then add entries in bulk. Files that resolve to a real path are attached using the library's files-folder rules:

antilibrary add --add-from-files paper.pdf book.epub 10.1145/3292500
antilibrary add --add-from-search "attention is all you need" --kind papers --limit 3

For PDFs, antifile resolves metadata by identifier (DOI / arXiv / ISBN) or a CrossRef title match. When none of those work it falls back to an LLM: set ANTHROPIC_API_KEY (or OPENAI_API_KEY / GEMINI_API_KEY) and that key is passed through. With no key set, it still tries the claude CLI if it's on your PATH.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

antilibrary-0.3.2.tar.gz (1.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

antilibrary-0.3.2-py3-none-any.whl (22.7 kB view details)

Uploaded Python 3

File details

Details for the file antilibrary-0.3.2.tar.gz.

File metadata

  • Download URL: antilibrary-0.3.2.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for antilibrary-0.3.2.tar.gz
Algorithm Hash digest
SHA256 51e8f804b08b951aee25bf1016679fa600ac1e38958d6c70efbce58eebd32360
MD5 949b0bbf52e6e115949edd2d000bcbbd
BLAKE2b-256 0798d5f7405b92b1b0b6381fa0e54917f7d2643ec79e9c757691f6e1546c685c

See more details on using hashes here.

File details

Details for the file antilibrary-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: antilibrary-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 22.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for antilibrary-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b9a9dde256e7def368439e121c3ee13b37a533cdc5baed8adfe0be22f9958ea5
MD5 70c15e01d815b5346bb6fd4da7319600
BLAKE2b-256 b2d8757dddd0161f371ff819f6ce8470642372c2abeec69188d7019785965ff3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page