因此,我尝试\DeclareSourcemap
按照 biblatex 手册进行操作。这是我的代码:
\RequirePackage{filecontents}
\begin{filecontents*}{p.bib}
@article{A1,
author={Aa, A and Bb, B},
title={Title},
abstract={abs},
journal={J BS},
year={1999},
}
@conference{A2,
author={Aa, A and Ab, S},
title={Title},
abstract={abs},
journal={J BS},
year={2009},
}
\end{filecontents*}
\documentclass{article}
\usepackage[style=authoryear-comp,backend=biber]{biblatex}
\addbibresource{p.bib}
\DeclareSourcemap{
\maps[datatype=bibtex,overwrite]{
\map{
\step[fieldsource=title]
\step[fieldset=title, fieldvalue=Test]
}}}
\begin{document}
\textcite{A1,A2}
\printbibliography
\end{document}
通过 latex/biber 运行此操作不会将title
字段更改为“测试”。在.bcf
文件中,创建了源映射规则,以下是相关代码片段:
<!-- SOURCEMAP -->
<bcf:sourcemap>
<bcf:maps datatype="bibtex" map_overwrite="1">
<bcf:map>
<bcf:map_step map_field_source="title"/>
<bcf:map_step map_field_set="title" map_field_value="Test"/>
</bcf:map>
</bcf:maps>
<bcf:maps datatype="bibtex" driver_defaults="1">
<bcf:map>
<bcf:map_step map_type_source="conference" map_type_target="inproceedings"/>
<bcf:map_step map_type_source="electronic" map_type_target="online"/>
<bcf:map_step map_type_source="www" map_type_target="online"/>
[…]
似乎我的附加块没有得到处理,因为还有另一个maps
块bibtex
(而这个块确实得到了处理,因为它变为@conference
了@inproceedings
)?如果我将map
块复制到中biber.conf
,它会按预期工作。所以我的问题是:如何正确使用\DeclareSourcemap
以确保地图得到执行,独立于可能的其他块?