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.9.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.9-py3-none-any.whl (25.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: antilibrary-0.3.9.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.9.tar.gz
Algorithm Hash digest
SHA256 011aa680261688fc28ca1b5c4f672e4efb8bc73bd894978f443d484c14033129
MD5 062bd2b44627272d591f1240925992f0
BLAKE2b-256 419a33468d739be0b37d9662ef1a1445bc87948a2a747151e46d6ba6bf136bcd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: antilibrary-0.3.9-py3-none-any.whl
  • Upload date:
  • Size: 25.3 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.9-py3-none-any.whl
Algorithm Hash digest
SHA256 c0813f9eec49016ec5da8e8df1be09aa245999078f1dacb3a6782d508a7f46be
MD5 7158c65c64e437f821836c4f3261cc94
BLAKE2b-256 3b78ae0e322878ccd8cd0a97da145c72c23d3fd02b8569b5a5303021ca90b4f9

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