我正在尝试使用的工具模式来biber
清理 bib 文件,以便使用 biblatex 进行处理。一种转换是将冒号后的字幕拆分到字幕字段中。这很有效。同时,我想确保字幕以大写字母开头。但应用\u
perl 样式正则表达式的标准运算符不起作用。
这是一个测试biber-tool.conf
:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<sourcemap>
<maps datatype="bibtex" map_overwrite="1">
<map map_overwrite="1">
<map_step map_field_source="title" map_match="([^:]*): (.*)" map_final="1"/>
<map_step map_field_set="title" map_field_value="$1"/>
<map_step map_field_set="subtitle" map_field_value="\u$2"/>
</map>
</maps>
</sourcemap>
</config>
这是测试 bib 文件:
@Article{atkin-2022-PeirceSpeculativeGrammarLogic,
author = {Atkin, A. K.},
title = {Peirce's Speculative Grammar: logic as Semiotics},
journaltitle = {History and Philosophy of Logic},
date = {2022-01-09},
pages = {1-2},
doi = {10.1080/01445340.2021.2017112}
}
现在,运行biber --tool --configfile=biber-tool.conf test.bib
结果将产生以下输出 bib 文件:
@ARTICLE{atkin-2022-PeirceSpeculativeGrammarLogic,
AUTHOR = {Atkin, A. K.},
DATE = {2022-01-09},
DOI = {10.1080/01445340.2021.2017112},
JOURNALTITLE = {History and Philosophy of Logic},
PAGES = {1--2},
SUBTITLE = {\ulogic as Semiotics},
TITLE = {Peirce's Speculative Grammar},
}
请注意,\u
运算符并未应用,但会逐字出现在输出中。
手册中包含了在源映射配置讨论中biber
使用类似运算符的内容,但在工具模式部分中没有提到此类运算符。工具模式下的正则表达式实现是否不同?\L
答案1
这是在 github 上回答:
这里的问题是,这
map_value
不是正则表达式,而只是一个插入了过去匹配项的文字字符串。您需要使用map_replace
才能在替换文本中使用正则表达式。因此,您要执行此操作的方法是先将整个标题复制到副标题,然后在副标题字段上使用匹配/替换来执行您需要的操作。
以下biber-tool.conf
对我有用:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<sourcemap>
<maps datatype="bibtex" map_overwrite="1">
<map map_overwrite="0">
<map_step map_field_source="title" map_match="([^:]*): (.*)" map_final="1"/>
<map_step map_field_set="subtitle" map_origfieldval="1"/>
</map>
<map map_overwrite="1">
<map_step map_field_source="title" map_match="([^:]*): (.*)" map_final="1"/>
<map_step map_field_set="title" map_field_value="$1"/>
<map_step map_field_source="subtitle" map_match="([^:]*): (.*)" map_replace="\u$2"/>
</map>
</maps>
</sourcemap>
</config>