1/使用以下方法清理文件biber的特定功能.bibbiber-tool

1/使用以下方法清理文件biber的特定功能.bibbiber-tool

语境

我使用biblatexbiber(见术语消歧) 作为我的个人著作。

我想使用需要包的模板提交论文natbib— 因此使用bibtex。但是,我使用文件biber中的功能.bib(例如 crossref)无法处理natbib,因此切换并不简单。

问题

给定存储我的所有参考资料的文件,从 { + } 切换到 { + }.bib需要哪些步骤/修改?biblatexbibernatbibbibtex

答案1

免责声明:该答案尚未确定,因为尚未找到最终解决方案。

路线图概述

  1. 使用以下方法清理文件biber的特定功能.bibbiber-tool

  2. ...


1/使用以下方法清理文件biber的特定功能.bibbiber-tool

.bib文件可能使用biber- 特定的功能(例如@inbook条目crossrefurldate字段等)。因此必须生成一个 - 兼容的新.bib文件BibTeX。以下答案基于胎面。

  • 创建一个名为的文件,myBiberConfig.conf其中包含以下代码。它定义了应如何转换原始.bib文件以实现BibTeX-兼容。
<?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>
  • 使用以下选项处理原始.bib文件--toolbiber

    biber --tool --configfile=myBiberConfig.conf <yourbibfile>.bib
    
  • 您处理的.bib文件是新创建的<yourbibfile>_bibertool.bib

答案2

添加到现有答案。对于bibtex-2.16最低配置:

<?xml version="1.0" encoding="utf-8"?>
<!-- Got the date from https://gist.githubusercontent.com/mkouhia/f00fea7fc8d4effd9dfd/raw/500e9dbc6aa43a47e39c45ba230738ff4544709f/biblatex-to-bibtex.conf -->
<config>
  <output_fieldcase>lower</output_fieldcase>
  <output_resolve>1</output_resolve>
  <output_safechars>1</output_safechars>
  <output_format>bibtex</output_format>
  <sourcemap>
    <maps datatype="bibtex">
      <!-- Easy type conversions -->
      <map>
        <map_step map_type_source="report" map_type_target="techreport"/>
        <map_step map_type_source="online" map_type_target="misc"/>
      </map>
      <!-- Date to year, month -->
      <map>
        <map_step map_field_source="date"
        map_field_target="year" />
      </map>
      <map>
        <map_step map_field_source="year"
        map_match="(\d{4}|\d{2})-(\d{1,2})-(\d{1,2})"
        map_final="1" />
        <map_step map_field_source="year"
        map_match="(\d{4}|\d{2})-(\d{1,2})-(\d{1,2})"
        map_replace="$1" />
        <map_step map_field_set="month" map_origfieldval="1" />
        <map_step map_field_source="month"
        map_match="(\d{4}|\d{2})-(\d{1,2})-(\d{1,2})"
        map_replace="$2" />
      </map>
      <map>
        <map_step map_field_source="year"
        map_match="(\d{4}|\d{2})-(\d{1,2})" map_final="1" />
        <map_step map_field_source="year"
        map_match="(\d{4}|\d{2})-(\d{1,2})" map_replace="$1" />
        <map_step map_field_set="month" map_origfieldval="1" />
        <map_step map_field_source="month"
        map_match="(\d{4}|\d{2})-(\d{1,2})" map_replace="$2" />
      </map>
    </maps>
  </sourcemap>
</config>

加上一些命令行选项:

biber --tool --configfile=biberConf.xml references.bib --output-file refsTmp.bib --output-legacy-date --output-field-replace=location:address,journaltitle:journal

足够了。更多详细信息在这里。请注意,在这种情况下,充分性被定义为被认可为有效的bibtexsphinx并且不应该在没有对其他情况(如期刊模板)进行更多工作的情况下使用它。

相关内容