如何在编译 BibTeX 后删除机构最后一位作者之前的逗号和“and”

如何在编译 BibTeX 后删除机构最后一位作者之前的逗号和“and”

我有以下 BibTeX 条目:

@article{pubmed18800157,
    author = {Heng, T.S. and Painter, M.W. and Immunological Genome Project Consortium},
    title = {The {I}mmunological {G}enome {P}roject: networks of gene expression in immune cells.},
    journal = {Nat. Immunol.},
    pages = {1091-1094},
    volume = {9},
    number ={10},
    year = {2008},
},
%\bibliographystyle{unsrt}

当生成参考书目时,它会在作者末尾放置逗号: 在此处输入图片描述

注意后面的逗号M.W. Painter。有办法去掉它吗?

答案1

与以下方法相辅相成编辑.bst文件,如果你愿意转向biblatex然后你可以使用trad-unsrt风格和非常小的定制:

\RequirePackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{pubmed18800157,
    author = {Heng, T. S. and Painter, M. W. and {Immunological Genome Project Consortium}},
    title = {The {Immunological} {Genome} {Project}:
      networks of gene expression in immune cells.},
    journal = {Nat. Immunol.},
    pages = {1091-1094},
    volume = {9},
    number ={10},
    year = {2008},
},
\end{filecontents}
\documentclass{article}
\usepackage[backend=bibtex,bibstyle=trad-unsrt]{biblatex}
\bibliography{\jobname}
\renewcommand*{\finalnamedelim}{\addspace \bibstring {and}\space}

\begin{document}

\textcite{pubmed18800157}

\printbibliography

\end{document}

请注意,这与机构作者无关:对于任何具有该unsrt风格的三位或更多作者的列表也是如此。

答案2

要删除牛津逗号,您需要修改文件.bst– 在您的情况下是unsrt.bst。在您的系统上找到文件.bstfile ,复制并重命名(例如unsrtnox.bst,重命名为 ),并将其放在 LaTeX 可以找到的地方。

相关函数称为FUNCTION {format.names}unsrt.bst,l.185)。

如果你去掉四条线

numnames #2 >
  { "," * }
  'skip$
if$

实现它(在我们的例子中unsrt.bst

FUNCTION {format.names}
{ 's :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
      nameptr #1 >
  { namesleft #1 >
      { ", " * t * }
      { t "others" =
          { " et~al." * }
          { " and " * t * }
        if$
      }
    if$
  }
    't
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
}

姓氏前的逗号消失。

上面的测试在倒数第二个名字时触发(否则会在名字后面打印逗号),并检查列表是否包含两个以上的名字,如果是,则无论如何都会打印逗号。删除此测试可防止打印逗号。

相关内容