当拼写出相同的名字或首字母时,biblatex 排序

当拼写出相同的名字或首字母时,biblatex 排序

我正在尝试按下列键对一些引文/参考书目进行排序:

  1. 作者姓名(按照maxnames和 的格式uniquenames)。
  2. 出版年份(按照 格式labelyear)。

使用一些标准选项,我可以获得格式几乎完美:

\RequirePackage{filecontents}
\begin{filecontents*}{papers.bib}
  @article{colby_1999,
  author={Colby, J and Brown, A and Brown, B},
  title={Title},
  year={1999},
  }

  @article{colby_2000,
  author={Colby, John and Brown, A and Brown, B},
  title={Title},
  year={2000},
  }

  @article{colby_2001,
  author={Colby, J and Brown, A and Brown, B},
  title={Title},
  year={2001},
  }

  @article{colby_2001_2,
  author={Colby, J and Damon, A and Brown, B},
  title={Title},
  year={2001},
  }

  @article{colby_2002,
  author={Colby, J and Class, A and Brown, B},
  title={Title},
  year={2002},
  }

  @article{colby_a_2002,
  author={Colby, A and Class, A and Brown, B},
  title={Title},
  year={2002},
  }

  @article{adams_1998,
  author={Adams, J and Class, A and Brown, B},
  title={Title},
  year={1998},
  }

  @article{adams_2002,
  author={Adams, J and Class, A and Brown, B},
  title={Title},
  year={2002},
  }
\end{filecontents*}

\documentclass{article}

\usepackage[style=authoryear-comp, natbib, backend=biber]{biblatex}
\ExecuteBibliographyOptions{
  maxnames    = 1, 
  maxbibnames = 99, 
  uniquelist  = false, 
  uniquename  = true, 
  dashed      = false, 
  firstinits  = true}
\addbibresource{papers.bib}

\begin{document}
\citep{colby_1999,colby_2000,colby_2001,colby_2001_2,colby_2002,adams_2002,adams_1998,colby_a_2002}
\printbibliography
\end{document}

在此处输入图片描述

唯一的问题是,我希望“Colby, John”和所有“Colby, J”条目在排序时得到相同的处理。换句话说,我希望所有这些条目在引文中压缩为 1 个块,并且我希望“Colby, John”条目在参考书目中的其他“Colby, J”中按年份排序。类似这样:

在此处输入图片描述

答案1

需要记住的是,Biber 无法仅通过语法知道“John Colby”和“J Colby”是同一个人(这是它所要做的全部工作...)。“firstinits”选项不会影响排序,因为人们通常希望在首字母相同的情况下按照全名进行排序。

您有多种选择:

  1. 编辑您的参考书目源数据,使名称在语义上等效、语法上等效,以便 Biber 拥有用于排序的相关信息。
  2. 编辑您的书目源数据以添加sortname和/或shortauthor字段来将排序更改为您需要的,而不更改名称。
  3. 使用评论中提到的 Bibersourcemap选项自动执行 1. 或 2.,而完全不改变源。
  4. 使用 biber 0.9.9 (beta)“sortfirstinits”选项,使排序算法仅使用名字的首字母。非官方的 biblatex 1.7 修补 .sty、.def 和 .pdf 文档在此处:https://sourceforge.net/projects/biblatex-biber/files/biblatex-test您需要从 sourceforge 下载 biber 0.9.9 beta。新选项位于测试版 biblatex 手册中。在sortfirstinits = true您的选项中试用它。

如果可能的话,我推荐选项 1,因为当您需要自动化系统时最好使语法和语义一致。

如果只考虑按第一作者进行排序,你可以对 sourcemap 进行如下操作:

<?xml version="1.0" encoding="UTF-8"?>
<config>
  <sourcemap>
    <maps datatype="bibtex" map_overwrite="1">
      <map>
        <map_step map_field_source="AUTHOR" map_match="\AColby," map_final="1"/>
        <map_step map_field_set="SORTNAME" map_origfieldval="1"/>
        <map_step map_field_source="SORTNAME" map_match="\A(.+?)\s+and" map_replace="$1"/>
      </map>
    </maps>
  </sourcemap>
</config>

相关内容