使用 natbib 限制参考文献中的作者列表

使用 natbib 限制参考文献中的作者列表

natbib我正在用撰写论文\bibliographystyle{abbrvnat}。我想要參考文獻表(書目)遵守以下规则:

  1. 当作者人数少于 5 人时显示所有作者姓名。
  2. 当作者数量大于 4 时,显示“第一作者等”。

我不想改变文本中的引用外观。我在寻找上述解决方案时非常困惑。我有点着急。请帮助我,请不要责骂。

\documentclass[openright, twoside, 12pt, a4paper]{report}
\usepackage{amstext,amssymb,amsmath,amsfonts}

\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
\usepackage{graphicx}
\usepackage{subfigure}

\usepackage{color}
\usepackage{hyperref}
\usepackage{subfigure,float}
\usepackage{multirow}
\usepackage{array,booktabs}
\usepackage{siunitx}

\usepackage{physics}


\usepackage{float}


\usepackage{natbib}
\usepackage[sc]{mathpazo}

\usepackage{fancyhdr}



\usepackage{rotating} 
\usepackage{lscape} 
\usepackage{longtable}
\usepackage{tabularx}   


\usepackage{makecell}


\usepackage{afterpage}

\begin{document}

\pagenumbering{roman}
\include{cover/title}


\begin{spacing}{1.5}

\tableofcontents 


\pagenumbering{arabic} 

\include{cover/def} %include all the definitions
\include{chapter_01/introduction}


\appendix

\bibliographystyle{abbrvnat}
\bibliography{thesis_bib}

\end{spacing}

\end{document}

答案1

据我所知,没有方便的选项可以做到这一点,您必须修改样式.bst

  1. abbrvnat.bst在您的机器上找到。您可以通过kpsewhich abbrvnat.bst在命令行/终端中输入来执行此操作。或者,从 CTAN 获取该文件的副本http://mirrors.ctan.org/macros/latex/contrib/natbib/abbrvnat.bst
  2. 将文件复制到 TeX 可以找到的位置。文档目录就可以了。
  3. 将文件重命名为abbrvnat-maxbibnames4.bst(这是 的许可证的要求abbrvnat.bst, 的修改版本abbrvnat.bst不应使用相同的名称)
  4. 打开文件并找到函数FUNCTION {format.names}(在我的版本中为 ll. 216-243)并将整个块替换为

    FUNCTION {format.names}
    { 's :=
      #1 'nameptr :=
      s num.names$ 'numnames :=
      numnames 'namesleft :=
        { namesleft #0 > }
        { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
          nameptr #1 >
            { namesleft #1 >
                { ", " * t * }
                { numnames #2 >
                    { "," * }
                    'skip$
                  if$
                  t "others" =
                    { " et~al." * }
                    { " and " * t * }
                  if$
                }
              if$
            }
            { 
              t
              namesleft #4 >
                { " et al."  *
                  #1 'namesleft := }
                'skip$
              if$
            }
          if$
          nameptr #1 + 'nameptr :=
          namesleft #1 - 'namesleft :=
        }
      while$
    }
    
  5. 在文件顶部的注释中添加您的姓名和日期并解释修改。

  6. 在您的文档中使用\bibliographystyle{abbrvnat-maxbibnames4}而不是。\bibliographystyle{abbrvnat}

相关内容