如何让 biber 将字段传递到 .bbl 文件中?

如何让 biber 将字段传递到 .bbl 文件中?

我正在使用 biblatex 和 biber,并尝试修改常用样式以包含 AMS MathReviews 编号的字段。我的 BibTeX 文件(嗯,我猜它现在是一个 Biber 文件)有mrnumber字段,我已经修改了相关.bbx文件,但当我运行 Biber 时,它不会对 mrnumber 字段执行任何操作 - 因此这些字段永远不会出现在参考书目中。

我手动修改了.bbl文件(我输入了\field{mrnumber}{123456}),MR 号码被打印出来了。那么,除了修改文件之外.bbx,我如何让 Biber 将相关字段传递到.bbl文件中?

答案1

好问题。您真正需要的是能够修改 biblatex 内部数据模型,目前还无法直接修改。事实上,这在 biber 中是可能的,但目前没有 biblatex 接口。这是 biblatex 2.x 版计划实现的。

但是,您可以通过将“mrnumber”字段重新映射到受支持的 biblatex 字段(如“usera”),然后在 .bbx 中使用“usera”作为字段名来解决此问题。

将其放入您的 biber.conf 中以执行重新映射(参见 biber 手册,第 3.1.1 节):

<map>
  <bibtex>
    BMAP_OVERWRITE 1
    <globalfield>
      MRNUMBER USERA
    </globalfield>
  </bibtex>
</map>      

顺便说一句,您的 .bib 文件仍然是 bibtex 数据文件 - biber 没有自己的数据格式(目前...)。bibtex 程序和 bibtex 数据格式之间存在区别。从 biblatex 2.x 开始,bibtex 程序可能不再受支持,但 bibtex 数据格式将始终受支持。

编辑:配置文件格式将在 Biber 0.9.8 中发生变化,因为当前格式限制太多。映射将不会太混乱。以下是新格式的相同解决方案:

<config>
  <sourcemap>
    <maps datatype="bibtex" map_overwrite="1">
      <map>
        <map_step map_field_source="MRNUMBER" map_field_target="USERA"/>
      </map>
    </maps>
  </sourcemap>
</config>

答案2

使用 BibLaTeX 2.x 只需将以下几行添加到您的biblatex-dm.cfg

\DeclareDatamodelFields[type=field,datatype=literal,nullok=false]{mrnumber}
\DeclareDatamodelEntryfields[article,book]{mrnumber}

编辑:我已经发布了用于添加 mathscinet 链接的样式文件在 github

相关内容