acmart natbib:如何在参考文献中显示部分作者

acmart natbib:如何在参考文献中显示部分作者

我正在使用 ACM 的模板 acmart。我遇到了一个问题:我的参考文献列表总是显示一篇文章的所有作者姓名。

是否有使用 ACM 模板来限制参考文献中作者数量的选项?

\bibliographystyle{ACM-Reference-Format}
\bibliography{bibliography}

谢谢

答案1

您可以修改ACM-Reference-Format.bst以截断人员列表。有三个地方需要更改几行。

您可以直接从https://gist.github.com/moewew/1f7c74b4229fdb44bc9f05d6e96d915a或者应用以下补丁来ACM-Reference-Format.bst获取ACM-Reference-Format-num.bst

--- ACM-Reference-Format.bst    2018-10-21 23:12:52.000000000 +0200
+++ ACM-Reference-Format-num.bst    2018-11-26 18:11:16.051275200 +0100
@@ -999,7 +999,14 @@
         %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
         %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
         {"\bibinfo{person}{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
-        {"\bibinfo{person}{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
+        {"\bibinfo{person}{"
+         nameptr #5 >
+           { #1 'namesleft :=
+             "others" }
+           { s nameptr "{ff }{vv }{ll}{, jj}" format.name$ }
+         if$
+         * "}" *
+         't := }
       if$
       nameptr #1 >
         {
@@ -1033,7 +1040,12 @@
   numnames 'namesleft :=
     { namesleft #0 > }

-    { s nameptr "{vv~}{ll}" format.name$ 't :=  % get the next name
+    { nameptr #5 >
+        { #1 'namesleft :=
+          "others" }
+        { s nameptr "{vv~}{ll}" format.name$ }
+      if$
+      't :=  % get the next name
       nameptr #1 >
         {
           namesleft #1 >
@@ -1072,7 +1084,13 @@
     { namesleft #0 > }

     {
-      "\bibinfo{person}{" s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ * "}" * 't :=
+      "\bibinfo{person}{"
+      nameptr #5 >
+        { #1 'namesleft :=
+          "others" }
+        { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ }
+      if$
+      * "}" * 't :=

       nameptr #1 >
         {

将 更改#5#<number of people before truncation>。引用标签的默认截断是#2

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{natbib}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{many,
  author    = {Anne Uthor and William Riter and Connie Ontributor and Emma Ditor
               and Anne Elk and James Hacker and Sophie Cribe},
  title     = {The Book of Many Authors},
  year      = {1980},
  publisher = {P. Ublisher},
  address   = {Place},
}
\end{filecontents}


\begin{document}
\cite{many}
\bibliographystyle{ACM-Reference-Format-num}
\bibliography{\jobname}
\end{document}

给出

Anne Uthor、William Riter、Connie Ontributor、Emma Ditor、Anne Elk 等。1980 年。《多位作者之书》。P. Ublisher,地点。

相关内容