按 Alpha 书目中的作者排序

按 Alpha 书目中的作者排序

使用alpha书目样式,引文按引文键排序。我想使用相同的作者-年份引文键样式(例如 [CP92]),但书目按第一作者的姓氏排序,而不是按引文键本身的字母顺序排序。这样可以将同一第一作者的相同论文放在一起。

例如,alpha将产生以下排序顺序:

  • [Cha81] D. Chaum。无法追踪……
  • [CL04] J. Camenisch 和 A. Lysyanskaya。签名...
  • [CP92] D. Chaum 和 T. Pedersen。钱包...

abbr将产生以下排序顺序:

  • [1] J. Camenisch 和 A. Lysyanskaya。签名......
  • [2] D. Chaum. 无法追踪……
  • [3] D. Chaum 和 T. Pedersen. 钱包......

我正在寻找相同的排序abbr但保持的引用关键字样式alpha

有没有办法实现这种混合风格?

答案1

对于传统 BibTeX 的用户,即不使用biblatex:复制TEXMF/bibtex/bst/base/alpha.bst到 BibTeX 可以找到它的新文件alpha-abbrvsort.bst中。在文本编辑器中打开它,找到函数presort,并注释掉下面四行:

FUNCTION {presort}
{ calc.label
  % sort.label   %% four lines commented out to obtain presort of abbrv.bst
  % "    "       %%
  % *            %%
  type$ "book" =
  type$ "inbook" =
  or
    'author.editor.sort
    { type$ "proceedings" =
    'editor.organization.sort
    { type$ "manual" =
        'author.organization.sort
        'author.sort
      if$
    }
      if$
    }
  if$
  % *            %%
  "    "
  *
  year field.or.null sortify
  *
  "    "
  *
  title field.or.null
  sort.format.title
  *
  #1 entry.max$ substring$
  'sort.key$ :=
}

保存并关闭,然后正常使用:

\documentclass{article}
\usepackage{filecontents}

\begin{filecontents}{PulpSpy.bib}
  @misc{a, author={Chaum, D.}, title = {Untracable ...}, year = {1981}}
  @misc{b, author={Chamenisch, J. and Lysyanskaya, A.}, title={Signature...}, year={2004}}
  @misc{c, author={Chaum, D. and T. Pedersen, T.}, title={Wallet...}, year={1992}}
\end{filecontents}

\begin{document}
\nocite{*}
\bibliographystyle{alpha-abbrvsort}
\bibliography{PulpSpy}
\end{document}

作品:

参考输出

答案2

如果你愿意切换到biblatex,操作方法如下:

\documentclass{article}

\usepackage[style=alphabetic,sorting=nty]{biblatex}

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@misc{C,
  author = {Chaum, D.},
  year = {1981},
  title = {Untraceable \dots},
}    
@misc{CL,
  author = {Camenisch, J. and Lysyanskaya, A.},
  year = {2004},
  title = {Signature \dots},
}
@misc{CP,
  author = {Chaum, D. and Pedersen, T.},
  year = {1992},
  title = {Wallet \dots},
}
\end{filecontents}

\addbibresource{\jobname.bib}

\nocite{*}

\begin{document}

\printbibliography

\end{document}

相关内容