0

I am using a template acmart of ACM. I have a problem: my reference list always displays all author names of an article.

Is there an option for limiting the number of authors in a reference with the ACM template ?

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

Thanks

2
  • 2
    Where should the cut-off be? And what should be shown in lieu of the suppresed authors' names?
    – Mico
    Commented Nov 25, 2018 at 22:32
  • In biblatex, there are the option "number max of authors". I have references with 15 authors :-/ Commented Nov 26, 2018 at 15:32

1 Answer 1

1

You can modify ACM-Reference-Format.bst to truncate lists of people. There are three places where you need to change a few lines.

You can get the modified file directly from https://gist.github.com/moewew/1f7c74b4229fdb44bc9f05d6e96d915a or apply the following patch to ACM-Reference-Format.bst to obtain 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 >
         {

Change the #5 to #<number of people before truncation>. The default truncation for citation labels is #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}

gives

Anne Uthor, William Riter, Connie Ontributor, Emma Ditor, Anne Elk, et al. 1980. The Book of Many Authors. P. Ublisher, Place.

0

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .