This project modifies .bib
files with the following key functionalities:
- Remove Unused Entries & Sort: Filters out unused entries and sorts the remaining entries based on citation order in a given
.aux
file. - IEEE Journal Name Convertion: Replaces journal names with their string definitions according to the provided IEEEfull.bib mapping.
- Abbreviation for Journals and Conferences: Using .CSV file from ITWA. (Try Abbreviation online)
- Title Protection: Encloses citation titles with additional braces to prevent BibTeX from automatically converting text to lowercase.
- Date Update: Automatically updates the
year
andmonth
fields of citations by extracting publication dates from local PDF files using the Everything search tool.
@inproceedings{gopalakrishnan2019robust,
- title={Robust wireless fingerprinting via complex-valued neural networks},
+ title={{Robust wireless fingerprinting via complex-valued neural networks}},
author={Gopalakrishnan, Soorya and Cekic, Metehan and Madhow, Upamanyu},
- booktitle={2019 IEEE Global Communications Conference (GLOBECOM)},
+ booktitle={{Proc. IEEE Global Commun. Conf. (GLOBECOM)}},
pages={1--6},
year={2019},
organization={IEEE}
}
@article{pham2016channel,
- title={Channel estimation and data detection for insufficient cyclic prefix MIMO-OFDM},
+ title={{Channel estimation and data detection for insufficient cyclic prefix MIMO-OFDM}},
author={Pham, Tri and Le-Ngoc, Tho and Woodward, Graeme K and Martin, Philippa A},
- journal={IEEE Transactions on Vehicular Technology},
+ journal=IEEE_J_VT,
volume={66},
number={6},
pages={4756--4768},
year={2016},
publisher={IEEE}
}
We recommend using Conda to manage dependencies. Follow these steps to create and activate the environment:
# Create the environment
conda create -n bib_modifier python=3.12 conda-forge::pypdf2
conda activate bib_modifier
git clone https://github.com/jackdondy/bib_modifier.git
The script optionally uses the Everything search tool to find PDF files.
- Download, install Everything, and make sure it is running.
- Download the Everything CLI, ensure the CLI executable (es.exe) is accessible in your system's PATH or specify its path in the script.
You need the following files:
-
IEEEfull.bib: A file containing IEEE journal abbreviation mappings.
-
.aux file: Generated by your LaTeX project.
-
Original BibTeX file: The reference file you want to update.
Modify the file paths in the script according to your actual file locations:
ieee_path = r'your/path/IEEEfull.bib'
aux_path = r'your/path/your_project.aux'
bib_path = r'your/path/original.bib'
new_bib_path = r'your/path/updated.bib'
Set skip_date_check
to False
if you want to updates the year and month fields of citations according to local PDF files.
# Enable if Everything is not installed or date update is not needed
# skip_date_check = True
# Enable if Everything is installed
skip_date_check = False
Set es_cmd_path
to None
will make the program to use system default Everything CLI path.
You can test default Everything CLI by enter es
in a Windows command line.
es_cmd_path = r'your/path/es.exe'
# es_cmd_path = None # Use default Everything path
For GUI version, just assign files through the file browser:

Click Save Config
button, then the program will produce a config.json
file in the current folder, and this .json file will be load automatically on next run.
The Blue label can be clicked, and automatically jump to URLs.
For GUI version, just click OK
button.
For pure command line version, Execute the script in your terminal:
python main_with_date_check.py
When dealing with PDF files, the program will output
-----------------press Enter for first result / input index to select a file / a new path / month and year like '2000 jun' / 'S' to skip / 'SS' to skip all / 'DD' to auto run all:
if found any .pdf files in your system that match the citation name, or
-----------------Input new path / month and year like '2000 jun' / 'S' to skip / 'SS' to skip all / 'DD' to auto run all:
if nothing was found.
Follow the instructions to input. DD
means the program auto deal with all citations, it will skip a citation if found nothing and use the first match if found any files.
The program use PyPDF2.PdfReader to read the .pdf files and search for any strings like
VOL. 11, NO. 5, 1 MARCH 2024
VOL. 16, NO. 2, FEBRUARY 2017
date of current version 16 September 2022
date of current version July 16, 2021
Note that only the first page of .pdf will be searched.
The script will generate an updated BibTeX file at the specified path.
Welcome to contribute to this project, or report any issues and bugs.