# This is a config file for bibtool, see
#    http://www.gerd-neugebauer.de/software/TeX/BibTool/en/
# To use it, invoke bibtool as follows:
#   bibtool -r .bibtoolrsc docs/src/Hecke.bib -o docs/src/Hecke.bib

sort = on

# sort order for fields
sort.order{* =
    bibkey
    author
    title
    editor
    booktitle
    mrnumber
    zbl
    journal
    fjournal
    series
    volume
    number
    note
    howpublished
    address
    organization
    publisher
    edition
    pages
    year
    month
    doi
    url
}

print.align.key = 0
print.line.length = 120
preserve.key.case = on
sort.cased = off
print.use.tab = off

delete.field = { abstract }
delete.field = { hal_id }
delete.field = { hal_version }
delete.field = { isbn }
delete.field = { issn }
delete.field = { keywords }
delete.field = { mrclass }
delete.field = { mrreviewer }
delete.field = { msc2010 }

fmt.name.name = { }
fmt.inter.name = { x }

key.format =
{
    %s(bibkey)
 #
    %.1#n(author)
    { %1.3n(author) }
    { %2d(year) }
 #
    { %+8.1n(author) }
    { %2d(year) }
}

# Enforce "{...}" around fields
rewrite.rule { "^\"\([^#]*\)\"$" "{\1}" }
rewrite.rule { "^ *\([0-9]*\) *$" "{\1}" }

# Remove empty fields
rewrite.rule { "^{ *}$" }

# Unify page range separator
rewrite.rule { pages "\([0-9]+\) *\(-\|---\|–\) *\([0-9]+\)" "\1--\3" }

# Check that 1800<=year<=2029
check.rule { year "^[\"{]1[89][0-9][0-9][\"}]$" }
check.rule { year "^[\"{]20[0-2][0-9][\"}]$" }
check.error.rule { year "" "\@ \$: Year has to be a suitable number" }

# Check that the doi field is not a URL
check.error.rule { doi "\://" "\@ \$: doi field should not be a URL" }

# Check that the url field is not a DOI
check.error.rule { url "doi\.org/" "\@ \$: url field should not contain a doi. Use the doi field instead" }

# Normalize the month field to e.g. `jan` (without braces), see https://github.com/ge-ne/bibtool/issues/66#issuecomment-577283871
rewrite.case.sensitive = Off
rewrite.rule { month "{\([^#]*\)}" "\1"}
rewrite.rule { month "^ *\(1\|Jan.*\|jan.+\) *$" "jan" }
rewrite.rule { month "^ *\(2\|Feb.*\|feb.+\) *$" "feb" }
rewrite.rule { month "^ *\(3\|Mar.*\|mar.+\) *$" "mar" }
rewrite.rule { month "^ *\(4\|Apr.*\|apr.+\) *$" "apr" }
rewrite.rule { month "^ *\(5\|May.*\|may.+\) *$" "may" }
rewrite.rule { month "^ *\(6\|Jun.*\|jun.+\) *$" "jun" }
rewrite.rule { month "^ *\(7\|Jul.*\|jul.+\) *$" "jul" }
rewrite.rule { month "^ *\(8\|Aug.*\|aug.+\) *$" "aug" }
rewrite.rule { month "^ *\(9\|Sep.*\|sep.+\) *$" "sep" }
rewrite.rule { month "^ *\(10\|Oct.*\|oct.+\) *$" "oct" }
rewrite.rule { month "^ *\(11\|Nov.*\|nov.+\) *$" "nov" }
rewrite.rule { month "^ *\(12\|Dec.*\|dec.+\) *$" "dec" }
