A minimalistic bibtex linter
bibL is a minimalistic linter (style checker) for BibTeX files. bibL does not come with its own BibTeX parser, but leverages the pybtex parser.
pip install bibl
Run bibl on your BibTeX files with the following command
bibl lint bibliography1.bib bibliography2.bib ...
or as a python module with
python -m bibl lint bibliography1.bib bibliography2.bib ...
bibl will check these files for a variety of style issues and deviations from the BibTeX spec (http://www.bibtex.org/Format/, https://en.wikipedia.org/wiki/BibTeX). Each possible type of issue is formulated as a rule. Each rule is identified by a unique code. Some examples of rules are
|Rule ID||Rule description|
||Entry not in alphabetical order by ke|
||Keys of published works should have format AuthorYEARa|
||Incorrect doi format|
||Non-standard whitespace at beginning of line (indents should be 4 spaces)|
||Missing required field
This link provides a list of all available rules
The first character of a rule id refers to a rules category, e.g.
E for issues with entry values,
T for textual
issues with the
.bib file, etc.
You can specify which rules to check by using
--ignore. Wildcards are allowed.
--select will only
enable the specified rules, disabling all other rules, while
--ignore will disable all rules except the ones specified.
--ignore may not be specified simultaneously.
bibl --select "D*,E06,T01" lint bibliography.lint
will only check all rules starting with D, rule E06 and rule T01
bibl --ignore "D*,E06,T01" lint bibliography.lint
will check all rules except all rules starting with D, rule E06 and rule T01
--ignore, other configuration options can be provided via the cli, like
to specify the line length for which an issue should be reported if exceeded. See below for a full list.
Configuration can also be specified in a yaml format configuration file, provided by the
If no configuration file is provided and a
.bibl.yml file is present in the current working directory, this file will
be used as a configuration file.
Command line option configuration will override configuration provided by a file.
See the default configuration .bibl.yml for all values that can be overwritten in a configuration file.
Some rules, like the various
U01* rules, are procedurally generated based on the
This setting specifies which entry and field types should be present and can be modified to more easily ignore generated
rules for specific entry types or fields, or to add custom fields or entry types for which warnings should be given
Usage: bibl [OPTIONS] COMMAND [ARGS]... Options: -c, --config TEXT Custom configuration file path. --select TEXT Comma separated list of enabled rules, all other rules will be disabled. --ignore TEXT Comma separated list of disabled rules, all other rules will be enabled. --indent-spaces INTEGER Number of trailing whitespaces for indented line, used by TO1. --max-line-length INTEGER Max line length before wrap recommended, used by T03. --abbreviation-dot Abbreviate middle names with dot. --help Show this message and exit. Commands: lint Lint a BibTeX bibliography file. list-all Show all available rules. list-enabled Show all rules enabled by the configuration. version Show the package version.
Usage: bibl lint [OPTIONS] [BIBLIOGRAPHY]... Lint a BibTeX bibliography file. Options: --help Show this message and exit.
Usage: bibl list-all [OPTIONS] Show all available rules. Options: -m Format rules as markdown table. --help Show this message and exit.
Usage: bibl list-enabled [OPTIONS] Show all rules enabled by the configuration. Options: -m Format rules as markdown table. --help Show this message and exit.
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.