166

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
    Commented Aug 26, 2011 at 11:05
  • 2
    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. Commented Aug 26, 2011 at 11:54
  • 8
    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
    Commented Aug 26, 2011 at 14:18
  • 1
    Yes, exactly. Sorry for not being clear in that point. Commented Aug 27, 2011 at 8:42

12 Answers 12

130

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.)

12
  • 9
    +1 for suggesting unsrt85.bst as filename :) Commented Aug 27, 2011 at 7:07
  • 3
    Excellent--as a user of unsrt.bst, this worked perfectly. Commented Sep 14, 2011 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
    Commented May 29, 2012 at 5:56
  • 1
    @craymichael - Thanks for the addendum.
    – Mico
    Commented May 9, 2019 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
    Commented Nov 14, 2019 at 19:58
107

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"
4
  • 14
    Not automatic but very helpful for me anyway!
    – YMomb
    Commented Feb 27, 2013 at 15:27
  • 5
    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) Commented Jul 12, 2013 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
    Commented Jul 4, 2016 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 Commented Feb 18, 2021 at 17:50
13

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
  • 6
    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
    Commented Aug 26, 2011 at 15:42
  • @Mico, you're right. Commented Aug 27, 2011 at 7:05
  • 1
    @Mas: The question is about the bibliography. Sorry for the confusion and thanks for the nice answer anyway. Commented Aug 27, 2011 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
    Commented Aug 27, 2011 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
    Commented Aug 29, 2011 at 2:52
7

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$
}
0
6

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.

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
    Commented Jan 12, 2020 at 3:13
4

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
    Commented Feb 16, 2021 at 14:43
  • You are welcome :-)
    – arman
    Commented Feb 22, 2021 at 11:47
1

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.

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
    Commented Jun 26, 2020 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
    Commented Jun 26, 2020 at 14:14
  • Thank you! I've changed following your comments Commented Jun 28, 2020 at 9:55
0

If you are using IEEEtran style in the end, maybe you should follow this:

  1. download the .bst from IEEE official website: LaTeX Bibliography Files (ZIP, 309 KB)
  2. drag it into your overleaf or local folder with your main.tex
  3. Then check the end of your main.tex normally is this one, so now this file read the local IEEEtran.bst
    \bibliographystyle{IEEEtran}
    \bibliography{IEEEabrv,ref}
    
  4. Open the IEEEtran.bst Check line128 - 142 normally, or I copy here
    % #0 turns off the forced use of "et al."
    % #1 enables
    FUNCTION {default.is.forced.et.al} { #0 }
    
    % The maximum number of names that can be present beyond which an "et al."
    % usage is forced. Be sure that num.names.shown.with.forced.et.al (below)
    % is not greater than this value!
    % Note: There are many instances of references in IEEE journals which have
    % a very large number of authors as well as instances in which "et al." is
    % used profusely.
    FUNCTION {default.max.num.names.before.forced.et.al} { #10 }
    
    % The number of names that will be shown with a forced "et al.".
    % Must be less than or equal to max.num.names.before.forced.et.al
    FUNCTION {default.num.names.shown.with.forced.et.al} { #1 }
    
  5. So If I want to set the max author number to 3 I will modified these three to:
    FUNCTION {default.is.forced.et.al} { #1 }
    FUNCTION {default.max.num.names.before.forced.et.al} { #3 }
    FUNCTION {default.num.names.shown.with.forced.et.al} { #3 }
    
  6. Clean your cache and recompile, you will find it's automatically to the max number you set in reference author display.
1
  • 1
    If you change an original file like IEEEtran.bst please rename it for further use ...
    – Mensch
    Commented Oct 26, 2023 at 21:21
-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
    Commented Oct 7, 2014 at 13:53
-5

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. Commented Dec 3, 2015 at 19:30
  • 2
    How does this answer differ, in substance, from the earlier one given by @user25223?
    – Mico
    Commented Dec 3, 2015 at 20:33

You must log in to answer this question.

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