在 Biblatex SourceMap 中,有没有办法对多个字段执行 \step?

在 Biblatex SourceMap 中,有没有办法对多个字段执行 \step?

我编写了一个 Sourcemap,在作者字段中执行正则表达式替换。

\DeclareStyleSourcemap{%
  \maps[datatype=bibtex]{%
    \map{%
      \step[fieldsource=author,%
        match={\regexp{...}}, replace={\regexp{...}}]
 ...

我希望其他名称字段(例如编辑器)以完全相同的方式处理。

当然,我可以复制/粘贴作者使用的匹配/替换步骤。

但是正则表达式相当长且复杂。所以我想知道是否有办法告诉源映射将给定步骤应用于多个字段?这样代码就会更短更优雅。

有任何想法吗 ?

答案1

您可以使用Sourceforge 上的biber2.5 和biblatex3.4 dev 版本执行此操作;foreach源映射的选项现在可以采用显式 CSV 列表、包含 CSV 列表的另一个字段的名称或使用 new 定义的自定义数据字段集的名称\DeclareDatafieldSet。因此,您的用例只是这样的:

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map[overwrite, foreach={author,editor}]{
      \step[fieldsource=\regexp{$MAPLOOP},
            match=\regexp{bigre},
            replace={replacement}]
    }
  }
}

相关内容