如果 bib 文件中的列表包含 {pp. 12-34},则参考书目中的页码无法正确打印

如果 bib 文件中的列表包含 {pp. 12-34},则参考书目中的页码无法正确打印

我在打印参考书目时遇到了麻烦。

我有一个像这样的 bib 文件

    @Article{Sample:01,
  Title                    = {Some Title},
  Author                   = {Doe, John},
  Year                     = {111},
  Pages                    = {pp. 1-2},
  Journal                  = {Really Cool Journal},
  }

    @Article{Sample:02,
  Title                    = {Different Title},
  Author                   = {Doe, Jane},
  Year                     = {222},
  Pages                    = {3-4},
  Journal                  = {Other Cool Journal},
  }

我将其与biblatex和 一起使用biber

但是,我的参考书目对于第二种类型打印正确,但对于第一种类型打印不正确(即第 3-4 页),而在第二种情况下,它只说页面

我得到了这种不统一风格的页面列表,因为我收集了来自不同互联网来源的引用,有时是第一种类型,有时是第二种类型。

有什么办法我可以告诉 biber 忽略任何在列表中页面并始终打印出来页面 ab

到目前为止,我的解决方法是手动更改列表并删除不过,我觉得一定有某种方法可以自动完成这一操作。

到目前为止我还没找到。有人知道吗?

记录一下:我正在使用 MikTex 2,9 并pdflatex通过latexmk包调用进行编译。

这是一个最小的工作示例,它会导致上述 bib 文件在同一文件夹中存储为 mybib 时出现错误。

\documentclass{scrartcl}

\usepackage[
    backend=biber, natbib
]{biblatex}

\bibliography{mybib}

\begin{document}
    \citet{Sample:01}, \citet{Sample:02}

    \printbibliography
\end{document}

答案1

你可以让 biber 帮你做这样的替换。我的正则表达式能力最多只能算是差强人意,但我认为这行得通:

\DeclareSourcemap{
  \maps[datatype=bibtex,overwrite=true]{
    \map{
      \step[fieldsource=pages,
            match=\regexp{pp\.(.+)},
            replace=\regexp{$1}]
    }
  }
}

答案2

只需使用任何文本编辑器的替换选项将所有“{pp.”替换为“{”!

相关内容