[Tex/LaTex] How to switch from biblatex+biber to natbib+bibtex

biberbiblatexbibliographiesbibtexnatbib

Context

I use the biblatex package coupled with biber (see terminology disambiguation) for my personal writings.

I want to submit a paper using a template requiring the natbib package — hence the use of bibtex. However, I use biber features in my .bib file (such as crossref) that are not handled by natbib, making the switch not straightforward.

Question

Given the.bib file where all my references are stored, which are all the steps/modifications needed to switch from {biblatex+biber} to {natbib+bibtex}?

Best Answer

Disclaimer: This answer is a work-in-progress, since final solution have not been found yet.

Roadmap overview

  1. Clean-up the biber-specific features of your .bib file using biber-tool

  2. ...


1/ Clean-up the biber-specific features of your .bib file using biber-tool

The .bib file might use biber-specific features (such as the @inbook entry, crossref or urldate fields, etc.). A new .bib file that is BibTeX-compatible must thus be generated. Following answer based on this and this treads.

  • Create a file named myBiberConfig.conf containing following code. It defines how your original .bib file should be transformed in order to be BibTeX-compatible.
<?xml version="1.0" encoding="UTF-8"?>
<config>
    <output_fieldcase>lower</output_fieldcase>
    <output_resolve>1</output_resolve>
    <output_safechars>1</output_safechars>
    <sourcemap>
        <maps datatype="bibtex" map_overwrite="1">
            <map map_overwrite="1">
                <map_step map_field_source="date" map_match="[0-9]{4}?-([0-9]{2}?)" map_final="1"/>
                <map_step map_field_set="month" map_field_value="$1"/>
            </map>
            <map map_overwrite="1">
                <map_step map_field_source="date" map_match="([0-9]{4}?)" map_final="1"/>
                <map_step map_field_set="year" map_field_value="$1"/>
            </map>
        </maps>
        <maps datatype="bibtex">
            <map>
                <map_step map_type_source="conference" map_type_target="inproceedings"/>
                <map_step map_type_source="electronic" map_type_target="online"/>
                <map_step map_type_source="www" map_type_target="online"/>
            </map>
            <map>
                <map_step map_type_source="mastersthesis" map_type_target="thesis" map_final="1"/>
                <map_step map_field_set="type" map_field_value="mathesis"/>
            </map>
            <map>
                <map_step map_type_source="phdthesis" map_type_target="thesis" map_final="1"/>
                <map_step map_field_set="type" map_field_value="phdthesis"/>
            </map>
            <map>
                <map_step map_type_source="techreport" map_type_target="report" map_final="1"/>
                <map_step map_field_set="type" map_field_value="techreport"/>
            </map>
            <map>
                <map_step map_field_source="address" map_field_target="location"/>
                <map_step map_field_source="school" map_field_target="institution"/>
                <map_step map_field_source="annote" map_field_target="annotation"/>
                <map_step map_field_source="archiveprefix" map_field_target="eprinttype"/>
                <map_step map_field_source="journal" map_field_target="journaltitle"/>
                <map_step map_field_source="primaryclass" map_field_target="eprintclass"/>
                <map_step map_field_source="key" map_field_target="sortkey"/>
                <map_step map_field_source="pdf" map_field_target="file"/>
            </map>
        </maps>
    </sourcemap>
</config>
  • Process your original .bib file with the --tool option of biber

    biber --tool --configfile=myBiberConfig.conf <yourbibfile>.bib
    
  • Your processed .bib file is the freshly created <yourbibfile>_bibertool.bib

Related Question