如何在引文中列出两位以上的作者

如何在引文中列出两位以上的作者

当我引用一篇有 2 位以上作者的论文时,正文中的引用是“Author1 et al.”。是否可以将此默认数字从 2 更改为 3,以便引用有 3 位作者的论文为“Author1 and Author2 and Author3”?

我使用 bibtex 和 natbib。我查看了natbib 参考但没有找到这个选项。

答案1

您已表明您使用apa书目样式。我建议您按以下步骤操作以实现您的格式化目标:

  • 在你的 TeX 发行版中找到该文件apa.bst。复制此文件并将副本命名为apa-erel.bst

  • 在文本编辑器中打开文件apa-erel.bst。(用于主 tex 文件的编辑器就可以了。)

  • 在文件中apa-erel.bst找到函数format.lab.names。(在我的此文件副本中,该函数从第 866 行开始。)

  • 删除(或注释掉)该函数的所有 17 行左右的代码并将其替换为以下代码:

    FUNCTION {bbl.and}
    { "and"}
    FUNCTION {space.word}
    { " " swap$ * " " * }
    FUNCTION {format.lab.names}
    {'s :=
     "" 't :=
      #1 'nameptr :=
      s num.names$ 'numnames :=
      numnames 'namesleft :=
        { namesleft #0 > }
        { s nameptr
          "{vv~}{ll}" format.name$
          't :=
          nameptr #1 >
            {
              nameptr #2 =
              numnames #3 > and
                { "others" 't :=
                  #1 'namesleft := }
                'skip$
              if$
              namesleft #1 >
                { ", " * t * }
                {
                  s nameptr "{ll}" format.name$ duplicate$ "others" =
                    { 't := }
                    { pop$ }
                  if$
                  t "others" =
                    { " et~al." * }
                    {
                      numnames #2 >
                        { "," * }
                        'skip$
                      if$
                      bbl.and
                      space.word * t *
                    }
                  if$
                }
              if$
            }
            't
          if$
          nameptr #1 + 'nameptr :=
          namesleft #1 - 'namesleft :=
        }
      while$
    }
    
  • 将文件保存apa-erel.bst在 BibTeX 搜索的目录中,或保存在主 tex 文件所在的目录中。如果选择前一种方法,请确保适当更新 TeX 发行版的文件名数据库。

  • 在您的主 tex 文件中,将指令更改\bibliographystyle{apa}\bibliographystyle{apa-erel}并执行完整的重新编译循环 - latex、bibtex、latex、latex - 以完全传播所有更改。

祝您 BibTeX 愉快!

完整的 MWE:

在此处输入图片描述

\RequirePackage{filecontents}
\begin{filecontents}{mybib.bib}
@misc{ab, author = "A and B", title = "X", year = 3001, }
@misc{abc, author = "A and B and C", title = "Y", year = 3002, }
@misc{abcd, author = "A and B and C and D", title = "Z", year = 3003, }

\end{filecontents}

\documentclass{article}
\usepackage[authoryear,round]{natbib}
\bibliographystyle{apa-erel}
\begin{document}
\cite{ab}

\cite{abc}

\cite{abcd}

\bibliography{mybib}
\end{document}

相关内容