Metadata-Version: 2.5
Name: citekeep
Version: 0.1.1
Summary: Keep a personal BibTeX library, and keep project bibliographies in sync with it
Project-URL: Homepage, https://github.com/klutchnikoff/citekeep
Project-URL: Documentation, https://citekeep.readthedocs.io/
Project-URL: Repository, https://github.com/klutchnikoff/citekeep
Project-URL: Issues, https://github.com/klutchnikoff/citekeep/issues
Author: Nicolas Klutchnikoff
License-Expression: MIT
License-File: LICENSE
Keywords: bibliography,bibtex,latex,mathematics,zbmath
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Text Processing :: Markup :: LaTeX
Requires-Python: >=3.11
Provides-Extra: docs
Requires-Dist: mkdocs-material>=9.5; extra == 'docs'
Requires-Dist: mkdocstrings[python]>=0.26; extra == 'docs'
Requires-Dist: ruff; extra == 'docs'
Description-Content-Type: text/markdown

# citekeep

[![CI](https://github.com/klutchnikoff/citekeep/actions/workflows/ci.yml/badge.svg)](https://github.com/klutchnikoff/citekeep/actions/workflows/ci.yml)
[![PyPI](https://img.shields.io/pypi/v/citekeep.svg)](https://pypi.org/project/citekeep/)
[![Python](https://img.shields.io/pypi/pyversions/citekeep.svg)](https://pypi.org/project/citekeep/)
[![Documentation](https://readthedocs.org/projects/citekeep/badge/?version=latest)](https://citekeep.readthedocs.io/)

**Clean a reference once. Reuse it in every LaTeX project.**

You write several papers at once, with different co-authors. Each has its own
`.bib`. The same reference gets typed again in each of them, a little
differently every time, and the one you cleaned up two years ago sits in a
folder you have since archived.

citekeep gives you one canonical library — a plain `.bib` file you own — and
materialises each project's bibliography from it without leaving your editor.
It searches the project first, then your library, then zbMATH, with CrossRef as
a fallback.

Three things follow from that:

- **Your co-authors need nothing.** The project keeps an ordinary,
  self-contained `.bib`, and their citation keys are never rewritten.
- **It works offline.** A reference met once stays searchable, and metadata
  corrected once is never repaired a second time.
- **It refuses rather than guesses.** When the evidence does not settle
  whether two records are one work, citekeep says so and writes nothing.

![citekeep searches the project, the personal library and zbMATH, then writes
the selected record into the project bibliography](https://raw.githubusercontent.com/klutchnikoff/citekeep/main/docs/assets/citekeep-demo.gif)

*Project (●) first. Personal library (○) next. zbMATH and CrossRef only when
needed.*

## What it is not

Not a Zotero replacement, a PDF manager, a note-taking system, or a hosted
collaboration platform. citekeep manages the flow of bibliographic records and
leaves the rest to tools that already do it well: Emacs and Citar for reading
notes and PDF links, git and an ordinary `.bib` for collaboration.

## Install

```bash
uv tool install citekeep
citekeep init --library ~/bibliography/master.bib
```

No runtime dependencies — everything is standard library. Requires Python 3.11.

If you already have a library, do not initialise a second one: point citekeep
at the existing file instead.

## Documentation

**[citekeep.readthedocs.io](https://citekeep.readthedocs.io/)** — a tutorial
for the first project, guides for the day-to-day, the command and API
reference, and the reasoning behind the design.

## Licence

MIT.
