Skip to main content
logo

PyPI - Python Version Static Badge Static Badge

bib-optimizer

Oh, sure, because who doesn't love manually cleaning up messy .bib files? bib_optimizer.py heroically steps in to remove those lazy, unused citations and reorder the survivors exactly as they appear in the .tex file—because, clearly, chaos is the default setting for bibliographies.

In layman's terms, it automates bibliography management by:

  1. removing unused citations,
  2. reordering the remaining ones to match their order of appearance in the .tex file.

Input Files:

  • main.tex – The LaTeX source file.
  • ref.bib – The original bibliography file.

These input files will remain unchanged.

Output File:

  • ref_opt.bib – A placeholder filename for the newly generated, cleaned, and ordered bibliography file.

Installation

Install from PyPI with pip

Create and activate a virtual environment, then install the latest release from PyPI:

python -m venv .venv

# Linux/macOS
source .venv/bin/activate

# Windows
.venv\Scripts\activate

python -m pip install --upgrade bib_optimizer

Alternatively, install the command in an isolated environment with uv:

uv tool install bib_optimizer

After either installation method, the bibopt command is available in your terminal.

Install from source for development

This repository uses uv for project and dependency management.

  1. Clone the repository

    git clone https://github.com/kwyip/bib_optimizer.git
    cd bib_optimizer
    
  2. Install environment

    # This creates the virtual environment and installs all dependencies
    uv sync
    
  3. Activate environment

    # Linux/MacOS
    source .venv/bin/activate
    
    # Windows
    .venv\Scripts\activate
    

🐍 This requires Python 3.8 or newer versions


Steps to Clean Your Bibliography

  1. Prepare the input files (e.g., by downloading them from Overleaf).

  2. Run the command to generate a new .bib file (for example, you may name it ref_opt.bib):

           bibopt main.tex ref.bib ref_opt.bib

  3. Use the Cleaned Bibliography
    Replace ref.bib with ref_opt.bib in your LaTeX project.


Test

You may test the installation using the sample input files (sample_main.tex and sample_ref.bib) located in the test folder.

sample_main_shot  sample_ref_shot

sample_main.tex and sample_ref.bib

sample_ref_opt_shot

A sample ref_opt.bib created after running bibopt sample_main.tex sample_ref.bib ref_opt.bib


Code-free use with an AI agent

Download SKILL.md, then upload these files to your AI agent:

  • SKILL.md,
  • the root .tex file,
  • the source .bib file, and if any:
  • every .tex file referenced through \input or \include.

https://github.com/user-attachments/assets/2b4e3224-2aee-44c1-974c-812dead72e2f


New feature (version 0.4.0)

If the main.tex calls inputs from other .tex (e.g., with \input{...}), the newly generated ref_opt.bib will preserve the order of appearances in the main.tex with each inputted .tex as well.
(The dependent .tex files need to be placed in the same directory as main.tex.)


New feature (version 0.4.1)

On top of version 0.4, skip any \input .tex file if not found.


New feature/Fix (version 0.4.2)

Added support for the \include{...} command in addition to \input{...}, fixing missing citations when a LaTeX project uses \include to split its content across files.


New feature/Fix (version 0.4.3)

Added Python 3.14 support and constrained bibtexparser to the compatible 1.x release series, fixing ModuleNotFoundError: No module named 'bibtexparser.bwriter' during fresh installations.


New feature/Fix (version 0.5.0)

Add code-free SKILL.md

♥ Lastly executed on Python 3.14 on 2026-09-29.

Metadata

Release files for bib-optimizer 0.5.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bib-optimizer 0.5.1
File Size Uploaded Provenance Actions
bib_optimizer-0.5.1.tar.gz 7.1 kB Without provenance Details for bib_optimizer-0.5.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for bib-optimizer 0.5.1
File Interpreter ABI Platform Actions
bib_optimizer-0.5.1-py3-none-any.whl Python 3 none any Details for bib_optimizer-0.5.1-py3-none-any.whl

Total release size: 14.1 kB

Release files / bib_optimizer-0.5.1.tar.gz

Download URL bib_optimizer-0.5.1.tar.gz
Size 7.1 kB
Tags Source
SHA-256 checksum
How to use checksums
9990df39b31a455b13133bb9596309e96e87b3696d031185280ba231c96ac79e
BLAKE2b-256 checksum
How to use checksums
8584d4926a4ea2fa2549111310a3941482f2c04ddbde7e4a2a00f333c4a9b041
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / bib_optimizer-0.5.1-py3-none-any.whl

Download URL bib_optimizer-0.5.1-py3-none-any.whl
Size 7.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
22cc1477e37dbf850cda64372019246c70854f2ac1884b576456fe54edd28a46
BLAKE2b-256 checksum
How to use checksums
c3b9f18c84b6353ee99fdb687ad3fdcc83084d3eacf9b04af23c23c702065d8a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for bib-optimizer 0.5.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page