在书目条目中以以下形式显示作者姓名:姓氏,名字的首字母

在书目条目中以以下形式显示作者姓名:姓氏,名字的首字母
\RequirePackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{Arter95,
    Author = {David Arter},
    Date-Added = {2013-08-11 17:38:06 +0000},
    Date-Modified = {2013-09-01 15:13:22 +0000},
    Journal = {Journal of Common Market Studies},
    Number = {3},
    Pages = {361-287},
    Title = {The {EU} {Referendum} in {Finland} on 16 October 1994: 
            {A} Vote for the {West}, not for {Maastricht}},
    Volume = {33},
    Year = {1995}}

@article{Detlef95,
    Author = {Jahn, Detlef; Storsved,Ann-sofie},
    Date-Added = {2013-08-11 17:14:34 +0000},
    Date-Modified = {2013-08-11 17:16:45 +0000},
    Journal = {West European Politics},
    Number = {4},
    Pages = {18-37},
    Title = {Legitimacy through referendum? The nearly successful domino‚Äêstrategy of the Eu‚Äêreferendums in Austria, Finland, Sweden and Norway},
    Volume = {18},
    Year = {1995}}
\end{filecontents}
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{natbib}
\bibpunct{(}{)}{;}{a}{}{,}
\makeatletter
\renewcommand\@biblabel[1]{}
\makeatother

\begin{document}

\cite{Arter95}

\bibliography{\jobname}
\bibliographystyle{plainnat}

\end{document}

请帮忙。我希望作者的名字显示为“Arter, D.”而不是 David Arter

答案1

正如您所发现的,plainnat参考书目样式不会缩写名字(“第一”)。要更改此行为以及将名字放在姓氏,建议您执行以下步骤:

  • 在你的 TeX 发行版中找到该文件plainnat.bst并将其复制到myplainnat.bst。(不要直接编辑作为 TeX 发行版一部分提供的文件。)

  • 在您喜欢的文本编辑器中打开该文件myplainnat.bst并搜索名为的函数format.names。(它在我的副本中从第 216 行开始plainnat.bst。)

  • 在此函数中,查找行

     { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
    

将此行更改为

    { s nameptr "{vv~}{ll}{, f.}{, jj}" format.name$ 't :=
  • 将文件保存myplainnat.bst到包含主文件的目录.tex或 TeX(和 BibTeX)发行版搜索的目录中。(如果选择第二个选项,您可能还需要适当刷新文件名数据库。)

  • 通过发出命令开始使用修改后的参考书目样式文件\bibliographystyle{myplainnat}

顺便说一句,由于 和plainnat的延伸,myplainnat参考书目样式使用 [英语]“句子样式”来排版title类型条目中字段的内容,因此您应该将 、 和等单词@article括在花括号中,以防止它们被排版为全小写。EUReferendumFinlandMaastricht


附录:有人建议我提供更多有关函数中的字符串"{ff~}{vv~}{ll}{, jj}"和含义的信息。"{vv~}{ll}{, f.}{, jj}"format.names

首先介绍一些背景信息。就 BibTeX 而言,作者的全名最多可以包含四个独立部分:名字部分(也包括中间名)、“von”部分(例如,“de”、“von”、“van”、“van der”、“della”等)、姓氏部分(通常但不一定是一个单词;与此规则相当不同的是四个单词的姓氏“Mies van der Rohe”——以及“junior”部分(例如,“Jr.”、 “Sr.”、 “III”等)。全名必须包含至少“姓氏”部分;名字、von 和 junior 部分是可选的。

您现在可能已经猜到了,上面的字符串ff、和表示四个部分;形式“ ”指示 BibTeX 打印完整的名字和中间名(当然,如果存在的话),而形式“ vv”指示 BibTeX 仅打印每个名字和中间名的首字母。lljjfff.

有各种语法规则决定了 BibTeX 如何解析全名以得出各个组​​成部分。虽然这里不是 BibTeX 语法完整教程的地方,但值得一提的是以下几个主题:

  1. BibTeX 不会检查内部的特殊字符的名字部分。假设作者的全名在您的.bib。BibTeX 会正确地将“CA”识别为名字部分,但不会为“。” (点) 赋予任何特殊含义里面“CA”,即它不会注意到该字段的名字部分由两个单独的首字母组成,每个首字母都以点结尾。因此,如果文件{ f.}中提供了“ ”解析说明符.bst,BibTeX 会将“CA”缩写为“C.”,即使这可能不是您想要它执行的操作。

那么,如果你想展示全部名字部分的首字母,而不仅仅是第一个首字母?您需要将作者字段写为“CA Brown”或等效地写为“Brown, CA”。这样,BibTeX 会“注意到”名字部分有两个部分(“C.”和“A.”),并会忠实地呈现这两个部分。

  1. 如上所述,BibTeX 假定每个作者的姓名都有至少姓氏部分——可能多达四个部分。这个事实对于处理具有所谓“公司作者”的条目很有用,例如“美国国家航空航天局”和“国际货币基金组织”。如果任其发展,BibTeX 会将前作者字段解释为具有[!](回想一下,“and”是author字段中的保留字)分隔作者,第一个作者名为“国家航空航天局”,第二个作者名为“太空管理局”;对于后一个作者字段,其语法规则将使其得出结论,只有一位作者,其名字为“International”,中间名“Monetary”,姓氏为“Fund”。

如果参考书目样式指定名字应缩写并列在相应的姓氏后面,BibTeX 最终会将作者字段排版为“ Aeronautics, N. and Administration, S.”和“ Fund, I. M.”。此外,前一个条目将归类为“A”(代表航空)而不是“N”,而后一个条目将归类为“F”(代表基金)而不是“I”。此外,如果生成作者年份引文,它们将看起来像“航空和管理([年份])”和“基金([年份])”。显然,这些结果都不可能是您想要的!

公司作者问题的解决方案很简单:将整个作者字段括在双花括号中对于上面的两个例子,应该写成

    author = {{National Aeronautics and Space Administration}},

    author = {{International Monetary Fund}},

分别。外侧的一对花括号界定了字段,而内侧的一对花括号则使 BibTeX 将该字段视为具有只有一个组件——根据其语法规则,它必须是姓氏部分。从某种意义上说,BibTeX 会认为前一位作者有一个由五个单词组成的复杂姓氏,而后一位作者的姓氏由三个单词组成。不过,令人高兴的结果是,名字将被正确呈现和排序。

答案2

此解决方案仅解决了那些与 OP 共享所需名称格式但不关心格式其他方面的人的问题(评论表明 OP 希望以其他方式保留原始格式,但这并没有做到):

替换\bibliographystyle{plainnat}\bibliographystyle{agsm}(我学到了这个这里

答案3

抱歉回复旧问题,但我想详细说明 Mico 的回答,因为我目前正在处理同样的问题,也许还有其他人需要类似的参考书目样式。建议的解决方案是将参考书目列表中的所有名称更改为该样式。像细胞生物学杂志不过,请使用一种样式,其中只有第一作者的姓名采用“姓氏”、“名字”的顺序。所有其他作者都遵循“名字”“姓氏”的顺序。这是我需要使用的样式。

因此,要做到这myplainnat.bst一点,需要对文件进行更多编辑。在我的系统中,原始plainnat.bst文件中第 221-223 行如下所示:

{ namesleft #0 > }
{ s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
  nameptr #1 >

我添加了一个 if 子句来查看我们是在处理名字还是其余名字,并相应地设置格式。这会增加一些额外的行(第 221-226 行):

{ namesleft #0 > }
{ nameptr #1 =
  {s nameptr "{vv~}{ll}{, f.}{, jj}" format.name$ 't :=}
  {s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=}
  if$
  nameptr #1 >

(我使用 f. 而不是 ff)

原来的plainnat.bst原始 plainnat.bst

Mico 的修改: 所有姓名按“姓”、“名”顺序排列

细胞生物学杂志风格: 细胞生物学杂志风格

答案4

您可以尝试将 Bibtex 书目样式更改为acmapalike

\bibliographystyle{stylename}
\bibliography{bibfile}

了解有关其他风格的更多信息:https://www.sharelatex.com/learn/Bibtex_bibliography_styles

相关内容