BibTeX:如何将长作者列表缩减为“Firstauthor et al.”?

BibTeX:如何将长作者列表缩减为“Firstauthor et al.”?

我的参考文献列表中有几条条目,包括大约 40 位作者。有没有办法bibtex 自动地将这些列表缩小到例如名字+“et al.”?

我不想手动编辑 BibTeX 条目,也不能使用biblatex。如果可能的话,我也希望尽可能少地更改参考书目样式。

还有类似的问题,但是都没有一个简洁的答案:

natbib例如似乎只改变文中的引用,但不改变参考书目中的条目。

编辑:我正在使用它\bibliographystyle{unsrt}作为样式定义。

答案1

引文管理包natbib管理引文标注的创建和显示。它不本身,确定应如何(甚至是否)截断大量作者的列表,无论是在引文标注中还是在格式化的书目参考中。此类截断问题由书目样式文件 ( .bst) 确定,该文件通过命令 加载\bibliographystyle{<somestyle>}

如果你找不到符合你格式需求的现有 .bst 文件,你可以通过在 上运行 LaTeX 从头创建一个makebst.tex,它是定制围兜包。运行该makebst实用程序会启动一系列交互式多项选择题,所有可用的答案选项都得到了很好的解释。几个问题将与截断问题有关。输出将是.bst您想要的文件。


附加说明,在收到 @fuenfundachtzig 使用书目样式的信息后unsrt。(由于unsrt书目样式只能创建数字样式的引文标注,因此以下答案解决了如何截断格式化书目中的作者列表,不是在引文标注中。)

我建议您按如下方式进行:

  • 在你的 TeX 发行版中找到该文件unsrt.bst。复制此文件并将副本命名为unsrt85.bst。执行不是直接编辑系统文件。

  • unsrt85.bst用您最喜欢的文本编辑器打开该文件。

  • 2020 年 9 月更新:我注意到,我于 2011 年 8 月提供的编辑说明不再有效。我不知道 BibTeX 对 bst 文件的处理究竟何时发生了变化。以下代码适用于最新的 TeXLive2020 TeX 发行版。

    找到该函数format.names(它在我的文件副本中从 l. 185 开始)并在该函数内找到以下行,距顶部约 7 行:

           nameptr #1 >
    
  • 假设你只想打印前三名作者(后跟“et al.”)超过四个(即“至少五位”)作者,你应该将 BibTeX 函数中的接下来的三行替换为

            { namesleft #1 >
                { ", " * t * }
                { numnames #2 >
    

    包含以下 17 行:

            {
              nameptr #3
              #1 + =
              numnames #4
              > and
                { "others" 't :=
                  #1 'namesleft := }
                'skip$
              if$
              namesleft #1 >
                { ", " * t * }
                {
                  s nameptr "{ll}" format.name$ duplicate$ "others" =
                    { 't := }
                    { pop$ }
                  if$
                  numnames #2 >
    

    换句话说,此设置告诉 BibTeX,如果条目包含以下信息,则包含所有作者姓名:最多四个作者,并且只包括前三个名字,后面跟着“et al”(如果条目有超过四个作者。

  • 将文件保存unsrt85.bst在包含主 tex 文件的目录中,或保存在 BibTeX 搜索的目录中。如果选择第二个选项,请确保根据需要更新 TeX 的文件名数据库。

  • 在主 tex 文件中,您需要更改\bibliographystyle{unsrt}\bibliographystyle{unsrt85}并执行完整的重新编译循环(LaTeX、BibTeX,然后再执行两次 LaTeX)。


附录2019 年 5 月:对于ACM-Reference-Format参考书目样式,需要对上面提出的修复方案进行一处小修改:

  nameptr #1 >
     {
      nameptr #3
      #1 + =
      numnames #5
      > and
        { "\bibinfo{person}{others}" 't :=
          #1 'namesleft := }
        'skip$
      if$
      namesleft #1 >

即,字符串"others"应替换为"\bibinfo{person}{others}"。 (已使用 2.1 版验证ACM-Reference-Format.bst。)

答案2

如果您使用 BibTeX,请and others在主要作者之后放置,编译后的文件应显示 et. al,例如:

Author="H. Morgan and others"

答案3

无需.bib手动编辑文件即可在引文或参考书目/参考文献列表中的“et al.”之前拥有所需的作者数量。

引文和参考书目中列出的作者数量由参考书目样式管理。例如,使用 APA 样式(要求参考书目中书籍引用的“et al.”前最多有前六位作者):

sample.tex文件:

\documentclass{article}
\usepackage{apacite}
\bibliographystyle{apacite}

\begin{document}
Found in \cite{abk}.

\bibliography{sample}
\end{document}

sample.bib文件:

@book{abk,
  author    = "A. Man and A. Woman and Second Man and Third Man and Fourth Man and Second Woman and Third Woman and Fourth Woman and Fifth Man",
  title     = "This book",
  publisher = "Men \& Women",
  year      = 2025,
}

输出(未格式化,仅来自的文本.pdf

发现于(Man et al.,2025)。

参考

男人 A.、女人 A.、男人 S.、男人 T.、男人 F.、女人 S. 等人 (2025)。 这本书。 男人女人。

您需要确定一种合适的样式,如果出版商接受使用 (Any)TeX 或预配置样式生成的投稿,通常会提供样式,或者如果需求足够重要,您可以自己生成样式。如果您想要有关可能样式的建议,请说明您当前使用的样式以及想要实现的更改。

sample.bib举一个使用相同文件但参考书目样式发生变化的不同样式的例子:

\documentclass{article}
\bibliographystyle{alpha}

\begin{document}
Found in \cite{abk}.

\bibliography{sample}
\end{document}

这种样式产生(再次,仅来自的文本.pdf):

在 [MWM+ 25] 中找到。

参考

[MWM+ 25] 一个男人、一个女人、第二个男人、第三个男人、第四个男人、第二个女人、第三个女人、第四个女人和第五个男人。这本书. 男人和女人,2025 年。

这根本不会截断参考书目中的作者数量(与使用 APA 样式的第一个示例不同)。

答案4

您可以unsrt使用 重新设置样式custom-bib。将以下内容复制到文件中myunsrt.dbj

\input docstrip

\preamble
\endpreamble

\postamble
\endpostamble

\keepsilent
\askforoverwritefalse
\def\MBopts{\from{merlin.mbs}{%
seq-no,% no sorting
nmlm,% limit number of names in bibliography
x5,% maximum number of names to appear
m5,% minimum number of names before et al. is written
}}
\generate{\file{myunsrt.bst}{\MBopts}}
\endbatchfile

然后用 TeX 将其

latex myunsrt.dbj

您会发现一些细微的差别unsrt

  • 斜体文字后会有斜体修正
  • note字段的第一个单词将大写
  • 博士论文将显示为“博士论文”,而不是“博士论文”
  • 论文标题也会被强调,就像文章标题或书名一样
  • 地址和年份不会成为书名的一部分incollection,而是项目的一部分incollection;这会改变地址、年份和出版商的顺序(年份始终是最后)

我认为,这些差异是有益的。您可以通过将文件中的m5和更改为其他内容(例如和 )来更改您希望在参考书目中看到的作者数量。x5dbjm7x7

相关内容