我正在尝试在工具模式下使用 biber 操作 bibtex 文件:给定源文件 source.bib:
@article{key1,
group = {A}
}
@article{key2,
group = {A, B}
}
我需要制作:
@article{key1,
group = {A},
keywords = {RG;Group A}
}
@article{key2,
group = {A, B},
keywords = {RG;Group A; Group B}
}
我使用配置文件 group.conf 输入“biber --tool --configfile=group.conf source.bib”:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<sourcemap>
<maps datatype="bibtex" level="user">
<map map_overwrite="1">
<map_step map_field_source="group" map_final="1"/>
<map_step map_field_set="keywords" map_field_value="RG" map_append="1"/>
</map>
<map map_overwrite="1" map_foreach="group">
<map_step map_field_set="keywords" map_field_value=";Group $MAPLOOP" map_append="1"/>
</map>
</maps>
</sourcemap>
</config>
我得到了:
@ARTICLE{key1,
GROUP = {A},
KEYWORDS = {RG;Group $MAPLOOP},
}
@ARTICLE{key2,
GROUP = {A, B},
KEYWORDS = {RG;Group $MAPLOOP},
}
有人能告诉我我哪里做错了吗?
答案1
评论太长,因此以答案形式发布。
我无法重现您的结果。我得到了两个不同之处:1 -$MAPLOOP
确实像宣传的那样扩展了;2 -group
字段丢失了,我不确定为什么,但我想这是因为这个字段不是数据模型的一部分。
我可以通过以下设置实现您想要的结果:
souce.bib
(用usera
代替group
):
@article{key1,
usera = {A}
}
@article{key2,
usera = {A, B}
}
group.conf
:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<sourcemap>
<maps datatype="bibtex">
<map map_overwrite="1">
<map_step map_field_source="usera" map_final="1"/>
<map_step map_field_set="keywords" map_field_value="RG" map_append="1"/>
</map>
<map map_overwrite="1" map_foreach="usera">
<map_step map_field_set="keywords" map_field_value=";Group $MAPLOOP" map_append="1"/>
</map>
</maps>
</sourcemap>
</config>
结果biber --tool --configfile=group.conf source.bib
是source_bibertool.bib
:
@ARTICLE{key1,
KEYWORDS = {RG;Group A},
USERA = {A},
}
@ARTICLE{key2,
KEYWORDS = {RG;Group A;Group B},
USERA = {A, B},
}
所以我真的不知道哪里出了问题。你能报告一下这个小改动是否有帮助吗?如果没有,我唯一能想到的就是版本过时了(但这只是一种不太有想象力的猜测)。你使用的是哪个版本的 biber?