136

I have several entries in my list of references that include of the order of 40 authors. Is there a way to make bibtex automatically reduce these lists to e.g. the first name + "et al."?

I don't want to edit the BibTeX entries manually and I cannot use biblatex. If at all possible I would also make as little changes as possible to the bibliography style.

There are similar questions, but none of those had a concise answer:

natbib e.g. seems to change only the reference within the text, but not the entry in the bibliography.

EDIT: I am using \bibliographystyle{unsrt} as style definition.

4
  • This seems to be a duplicate of the questions you have linked to? Is there some specific problem you are having or do you just find the answers to the linked question unsatisfactory? – Seamus Aug 26 '11 at 11:05
  • Yes, it's a deliberate duplicate -- somehow none of the answers there seem to match my usecase: They either advise to use biblatex, or to use a different style. And also natbib doesn't seem to be appropriate. – fuenfundachtzig Aug 26 '11 at 11:54
  • 7
    So it's not a duplicate: Your question is "How do I reduce long author lists in the bibliography (not in the citation) to et al. using something like the unsrt style without moving to biblatex"? which is more specific and not covered by the other questions. Is that correct? – Seamus Aug 26 '11 at 14:18
  • 1
    Yes, exactly. Sorry for not being clear in that point. – fuenfundachtzig Aug 27 '11 at 8:42

11 Answers 11

112

The natbib citation management package manages the creation and appearance of citation call-outs. It does not, per se, determine how (or even whether) lists of numerous authors should be truncated, either in a citation call-out or in the formatted bibliographic reference. Such truncation issues are determined by the bibliography style file (.bst), which is loaded via the command \bibliographystyle{<somestyle>}.

If you can't find an existing .bst file that meets your formatting needs, you can always create one from scratch by running LaTeX on makebst.tex, which is part of the custom-bib package. Running the makebst utility launches an interactive series of multiple-choice questions, with all available answer options nicely explained. Several questions will be related to truncation matters. The output will be the .bst file you want.


Additional write-up, upon receiving information that @fuenfundachtzig uses the unsrt bibliography style. (Since the unsrt bibliography style can create numeric-style citation call-outs only, the answer below addresses how to truncate the list of authors in the formatted bibliography, not in the citation call-outs.)

I suggest you proceed as follows:

  • Find the file unsrt.bst in your TeX distribution. Make a copy of this file and name the copy, say, unsrt85.bst. Do not edit a system file directly.

  • Open the file unsrt85.bst in your favorite text editor.

  • Update September 2020: It has come to my attention that the editing instructions I provided back in August 2011 no longer work. I have no idea when exactly BibTeX's processing of the bst file changed. The following code is valid for an up-to-date TeXLive2020 TeX distribution.

    Find the function format.names (it starts on l. 185 in my copy of the file) and locate the following line inside this function, about 7 lines down from the top:

           nameptr #1 >
    
  • Assuming that you want to print out just the first three authors (followed by "et al.") whenever the entry has more than four (i.e., "at least five") authors, you should replace the next 3 lines in the BibTeX function, viz.,

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

    with the following 17 lines:

            {
              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 >
    

    Put differently, this setup tells BibTeX to include all authors' names if the entry has at most four authors, and to include just the first three names, followed by "et al", if the entry has more than four authors.

  • Save the file unsrt85.bst either in the directory that contains the main tex file or in a directory that's searched by BibTeX. If you choose the second option, be sure to also update TeX's filename database as needed.

  • In the main tex file, you need to change \bibliographystyle{unsrt} to \bibliographystyle{unsrt85} and perform a full recompile cycle (LaTeX, BibTeX, and LaTeX twice more).


Addendum May 2019: For the ACM-Reference-Format bibliography style, there needs to be one slight modification to the fix proposed above:

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

i.e., the string "others" should be replaced with "\bibinfo{person}{others}". (Verified with version 2.1 of ACM-Reference-Format.bst.)

11
  • 7
    +1 for suggesting unsrt85.bst as filename :) – fuenfundachtzig Aug 27 '11 at 7:07
  • 2
    Excellent--as a user of unsrt.bst, this worked perfectly. – Tobin Fricke Sep 14 '11 at 3:44
  • 2
    @Frank -- You're almost there: To truncate the list of authors (or editors) to 2 whenever there are more than 2 of them, you'd (i) replace numnames #5 with numnames #2 on line 5 and (ii) replace nameptr #3 with nameptr #2 on line 3. – Mico May 29 '12 at 5:56
  • 1
    @craymichael - Thanks for the addendum. – Mico May 9 '19 at 4:36
  • 1
    I did obviously not downvote, but you probably you know how you can rule out users: look at their reputation change in the past week. If you have a suspect, you can compare the change with what you get in this user's profile under activity. If they downvoted, there is a mismatch, if there is no mismatch, you can rule them out. On the other hand, sometimes the timing is such that one of those who cannot be ruled out are very plausible suspects, e.g. when the timing of the downvote matches with last seen. – user194703 Nov 14 '19 at 19:58
72

If you are using BibTeX, place and others after the main authors and the compiled file should show et. al, e.g.:

Author="H. Morgan and others"
5
  • 9
    Thanks for your answer, the focus of the question is, however, on "automatically". – fuenfundachtzig Jan 30 '13 at 9:13
  • 10
    Not automatic but very helpful for me anyway! – YMomb Feb 27 '13 at 15:27
  • 4
    Now that .bib files are more and more automatically generated by desktop applications (such as mendeley, endnote and others), your approach has the result of vanishing the purpose for which these applications were made (simplify references management and export them without too much trouble) – Alessandro Cuttin Jul 12 '13 at 18:25
  • 3
    Customising the bst file is the better way, but this it is quite useful when you don't have access to the bst file. – craq Jul 4 '16 at 13:14
  • Thanks! I opted for this one since I can't understand how the style language works. I simply wanted 2 authors or et al for the rest so I ended putting "others" everywhere – lesolorzanov Feb 18 at 17:50
12

There should be no need to edit a .bib file manually to have the desired number of authors before 'et al.' in either the citations or the bibliography/reference list.

The number of authors listed in citations and the bibliography is managed by the bibliography style. For example, using the APA style (which requires up to the first six authors before 'et al.' for book references in the bibliography):

sample.tex file:

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

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

\bibliography{sample}
\end{document}

sample.bib file:

@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,
}

output (not formatted, just the text from the .pdf)

Found in (Man et al., 2025).

References

Man, A., Woman, A., Man, S., Man, T., Man, F., Woman, S., et al. (2025). This book. Men & Women.

You would need to identify an appropriate style, usually provided by the publisher if they accept contributions produced using (Any)TeX or from the pre-configured styles available, or you could produce your own if the requirement is sufficiently important. If you want suggestions for possible styles it would help if you said which style you are currently using and the changes you want to achieve.

To give an example of a different style using the same sample.bib file but with the bibliography style changed:

\documentclass{article}
\bibliographystyle{alpha}

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

\bibliography{sample}
\end{document}

This style produces (again, just the text from the .pdf):

Found in [MWM+ 25].

References

[MWM+ 25] A. Man, A. Woman, Second Man, Third Man, Fourth Man, Second Woman, Third Woman, Fourth Woman, and Fifth Man. This book. Men & Women, 2025.

This does not truncate the number of authors in the bibliography at all (unlike the first example using the APA style).

5
  • 5
    I don't think that this solution addresses the original question: Apparently, he/she wants to have the truncation (to "First Author et al") not only in the citation but also in the bibliographic entry. – Mico Aug 26 '11 at 15:42
  • @Mico, you're right. – fuenfundachtzig Aug 27 '11 at 7:05
  • 1
    @Mas: The question is about the bibliography. Sorry for the confusion and thanks for the nice answer anyway. – fuenfundachtzig Aug 27 '11 at 7:05
  • @mico -- sorry about any confusion. The first example, using apa style, was intended to show limiting the number of authors listed in the bibliography (I took the OP's 'e.g. the first name + "et al."' to refer to the reduction to one name to be an example, and felt that reduction from 40+ authors to 6 was worthwhile :-). The second example, which does not reduce the number of authors was simply to demonstrate that it is the selection of the bibliographic style that determines the number of authors listed in the bibliography and there is no need to edit the .bib file to achieve this. – mas Aug 27 '11 at 19:52
  • @mas -- my apologies for not noticing that the first of your two examples did achieve a truncation -- from "many" to five authors. – Mico Aug 29 '11 at 2:52
6

Like @mico said, a sure way to do this is to create the .bst file with makebst.tex.

For those who use natbib, I created a file on my own with the folloowing features:

  • in the list of references, for every entry the list of authors is truncated after the third one
  • in a citation, the list of authors is truncated to first author et al. for three or more authors.

The file can be downloaded from this page.

FUNCTION {format.names}
{ 'bibinfo :=
  duplicate$ empty$ 'skip$ {
  's :=
  "" 't :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr
      "{f.~}{vv~}{ll}{, jj}"
      format.name$
      bibinfo bibinfo.check
      type$ "presentation" =
        { check.speaker }
        'skip$
      if$
      't :=
      nameptr #1 >
        {
          nameptr #3
          #1 + =
          numnames #3
          > and
            { "others" 't :=
              #1 'namesleft := }
            'skip$
          if$
          namesleft #1 >
            { ", " * t * }
            {
              s nameptr "{ll}" format.name$ duplicate$ "others" =
                { 't := }
                { pop$ }
              if$
              t "others" =
                {
                  " " * bbl.etal *
                }
                {
                  bbl.and
                  space.word * t *
                }
              if$
            }
          if$
        }
        't
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
  } if$
}
4
  • The link is dead. – oliversm Mar 1 '18 at 16:36
  • @oliversm try it now please – Alessandro Cuttin Mar 1 '18 at 22:27
  • 2
    It's better to have the relevant portions here, instead of at a link that can die or change without warning. – Teepeemm Mar 1 '18 at 22:34
  • 1
    Indeed yes, I just did it – Alessandro Cuttin Aug 27 '18 at 14:12
5

Some journals like Neuron only want an et al. in the Reference list after 10 authors have been listed. Helps to be able to paste this code over the relevant section of your .bst file rather than having to go through the whole makebst thing. I think the following achieves this:

FUNCTION {format.names}
{ 'bibinfo :=
  duplicate$ empty$ 'skip$ {
  's :=
  "" 't :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr
      "{f.~}{vv~}{ll}{, jj}"
      format.name$
      bibinfo bibinfo.check
      't :=
      nameptr #1 >
        {
          nameptr #10
          #1 + =
          numnames #10
          > and
            { "others" 't :=
              #1 'namesleft := }
            'skip$
          if$
          namesleft #1 >
            { ", " * t * }
            {
              s nameptr "{ll}" format.name$ duplicate$ "others" =
                { 't := }
                { pop$ }
              if$
              numnames #2 >
                { "," * }
                'skip$
              if$
              t "others" =
                {
                  " " * bbl.etal *
                }
                {
                  bbl.and
                  space.word * t *
                }
              if$
            }
          if$
        }
        't
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
  } if$
}
1
  • It may be useful to point out that the suggested modifications work only with bibliography styles that define variables such as bbl.etal, bbl.and, and bibinfo. Happily, this condition is satisfied by the bib style files that are distributed with the natbib citation management package as well as by bib styles created with the help of the makebst utility. Unfortunately, the condition is not satisfied by the unsrt bib style, i.e., the bib style used by the OP. – Mico Jan 12 '20 at 3:13
4

You can redo the unsrt style with custom-bib. Copy the following into a file 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

and then TeX it with

latex myunsrt.dbj

You will get a few subtle differences to unsrt:

  • There will be italic correction after italic text
  • The note field will have a captilazed first word
  • A Ph.D. thesis will appear as "Ph.D. thesis" instead of "PhD thesis"
  • Titles of theses will be emphasized, too, like article titles, or book titles
  • Address and year will not be part of a book title in an incollection, but part of the incollection item; this changes the order of address, year, and publisher (year will always be last)

In my opinion, those differences are for good. You can change the number of authors that you like to see in the bibliography by changing the m5 and x5 in the dbj file to something else, say m7 and x7.

3

You can use the unsrt2authabbrvpp.bst to abbreviate author names and to reduce the author's list using "et al.". You don't have to change anything in the bib file. I have tested it with only IEEE template.

Download it from here: https://gitlab.com/tanwirahmad/ieee-abrv-names

2
  • This finally helped. No editing large bibfiles, no nothing. Well - there was a problem. One citation blocked the final result because of natbib - but I found a solution on stackexchange - \usepackage[square,sort,comma,numbers]{natbib} . Thank you. – jaromrax Feb 16 at 14:43
  • You are welcome :-) – JohnM Feb 22 at 11:47
0

You can use natbibapa with apacite, but it returns the long name in the first citation by default.

To change this you have to give the bibtexkey of your references with more than 3 author before the citation as follow:

\usepackage[natbibapa]{apacite}
\shortcites{bibtexkey1, bibtexkey2,...} %before the citations

\begin{document}

\citep{bibtexkey1}

\bibliography{Mybibliography}
\end{document}

It was the simplest way I found to get together natbib, APA style and short citation names.

Note: in the references, all the names are printed as APA style requires

3
  • 1
    Welcome to TeX.SX! The behavior of natbib you mention is not the default behavior of natbib. If you look at the answer of Mico, you will see that the "default" behavior is imposed by the bibliography style and not by natbib. Then, what you describe is the default behavior of apacite with the natbibapa option. – KersouMan Jun 26 '20 at 12:00
  • 1
    natbib shows a full(er) list of authors on first citations if the option ` longnamesfirst` is active (I'm pretty sure this option is generally not active by default). But you are using natbib together with apacite. apacite implements APA style and APA style wants long author lists (at least to some extent) on first citations, so it tells natbib to implement that. – moewe Jun 26 '20 at 14:14
  • Thank you! I've changed following your comments – Alex Urrego Mesa Jun 28 '20 at 9:55
0

Remove all the authors whom you want to replace with et al. Then add and others suffix to the author field.

e.g. Code segment in .bib file

@ARTICLE{hao,
author={Hao, M. and Bai, Y. and Zeiske, S. and others},
journal={Nature Energy},
title={Ligand-assisted cation-exchange engineering for high-efficiency colloidal Cs1−xFAxPbI3 quantum dot solar cells with reduced phase segregation},
year={2020},
month={Jan.},
volume={5},
number={},
pages={79–88},
keywords={},
doi={10.1038/s41560-019-0535-7},
ISSN={}
}

Output:

[2] M. Hao, Y. Bai, S. Zeiske, et al., “Ligand-assisted cation-exchange engineering for high-efficiency colloidalcs1xfaxpbi3 quantum dot solar cells with reduced phase segregation,” Nature Energy, vol. 5, p. 79–88, Jan. 2020.

-1

You can use abntex2-num or abntex2-alf as style. If you don't have it install the TexLive texlive-bibtex-extra package.

http://www.ctan.org/tex-archive/macros/latex/contrib/abntex2

1
  • 2
    Could you say a bit more about these style files? E.g., do they mimic unsrt's overall setting very closely? If not, where do they differ from unsrt? I take it that one produces numeric-style citation callouts whereas the other produces authoryear-style citation callouts? Is their truncation behavior programmable? The user guides appear to be written in Portuguese -- are English language versions of the guides available? Please advise. – Mico Oct 7 '14 at 13:53
-6

Too complex and you usually do not have time to struggle with this sort of things.

Just go to your bibtex file and in the authors tag, keep the first name, delete the rest and write "and others", compile and you will be done.

2
  • Welcome to TeX.SX! You can have a look at our starter guide to familiarize yourself further with our format. I would consider you first sentence as a personal opinion. Try to be objective as far as possible or support such claims with facts. Apart from that, your solution usually takes more time when working with a large database of references than figuring out how to do this in general once and for all. – cryingshadow Dec 3 '15 at 19:30
  • 2
    How does this answer differ, in substance, from the earlier one given by @user25223? – Mico Dec 3 '15 at 20:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.
https://tex.stackexchange.com/questions/26575/bibtex-how-to-reduce-long-author-lists-to-firstauthor-et-al?noredirect=1
tex.stackexchange.com
crawl=CC-MAIN-2021-31
310519
application/http; msgtype=response
sha1:ZQDVHWTG7JVVQCQAC4JBCDMXSKRZLJCH
<urn:uuid:e396c1e1-b758-4001-8c84-96f492bc0e40>
2021-07-29T06:03:03Z
151.101.65.69
text/html
sha1:CJIVT2KQBMR3ZSECBNC57X242PSX54UW
<urn:uuid:059a6c1c-119c-4947-81a9-390efb7d5197>
https://tex.stackexchange.com/questions/26575/bibtex-how-to-reduce-long-author-lists-to-firstauthor-et-al?noredirect=1
response
<urn:uuid:5371f34f-46ee-4f0d-afd7-4c716192ec16>
isPartOf: CC-MAIN-2021-31
publisher: Common Crawl
description: Wide crawl of the web for July/August 2021
operator: Common Crawl Admin (info@commoncrawl.org)
hostname: ip-10-67-67-191.ec2.internal
software: Apache Nutch 1.18 (modified, https://github.com/commoncrawl/nutch/)
robots: checked via crawler-commons 1.2-SNAPSHOT (https://github.com/crawler-commons/crawler-commons)
format: WARC File Format 1.1
conformsTo: https://iipc.github.io/warc-specifications/specifications/warc-format/warc-1.1/