我发现这个帖子似乎可以在创建书目条目时使用正则表达式匹配来替换期刊名称。所以我写了一个配置文件,内容如下:
<map>
<bibtex>
BMAP_OVERWRITE 1
<globalfield journal>
BMAP_MATCH Physical\sReview
BMAP_REPLACE "Phys. Rev."
</globalfield>
</bibtex>
</map>
但我收到此错误:
:4: parser error : Specification mandate value for attribute journal
<globalfield journal>
^
关于如何解决这个问题有什么指南吗?
答案1
从那时起文件.conf
格式已经发生了很大变化,
<?xml version="1.0" encoding="UTF-8"?>
<config>
<sourcemap>
<maps datatype="bibtex" level="user">
<map map_overwrite="1">
<map_step map_field_source="journal" map_match="Physical\sReview" map_replace="Phys. Rev."/>
</map>
</maps>
</sourcemap>
</config>
现在就应该做正确的事。
这Biber 文档是开始研究的好地方。请参阅 §3.1.2。选项sourcemap
,第 13-20 页,特别是第 17 页,其中有例子
<map map_overwrite="0">
<map_step map_field_source="AUTHOR" />
<map_step map_field_set="SORTNAME" map_origfieldval="1" map_final="1"/>
<map_step map_field_source="SORTNAME" map_match="\A(.+?)\s+and. ∗ " map_replace="$1"/>
</map>
当然你也可以\DeclareSourcemap
在.tex
文档中添加
\DeclareSourcemap{
\maps{
\map{
\step[fieldsource=journal,
match=\regexp{Physical\sReview},
replace=\regexp{Phys. Rev.}]
}
}
}
我发现它的作用相同,但更容易跟踪。很容易忘记并对biber.conf
输出感到困惑,在.tex
文件中完成源映射后,至少有一个更有可能看到相关代码。