Limit Authors in References – Limiting Number of Authors in References with IEEEtran

author-numberbibliographiesieeetran

I'm trying to limit the number of authors that appear in the references by putting "et al." when their number is equal or greater than 3.

According to the documentation (in page 8), you have to define the field that you want to change in your .bib file like so:

@IEEEtranBSTCTL{IEEEexample:BSTcontrol,
CTLmax_names_forced_etal = "3"}

Then, you have to put the following line in the .tex document:

\bstctlcite{IEEEexample:BSTcontrol}

I have done both things and it compiles. However, the output still shows more than 3 authors in the references (no reference has an "et al." written on them).

Does anyone have experience with using IEEEtran.bst with IEEEtran.cls?
What am I doing wrong?

Best Answer

It seems like you didn't include all of the fields needed to make this work:

CTLuse_forced_etal is required to indicate that you actually want to shorten author lists. CTLmax_names_forced_etal Gives the maximum number of authors before it shortens the list. CTLnames_show_etal Allows you to specify how many names will be given when it does shorten.

Your bib-file entry might then look like:

@IEEEtranBSTCTL{IEEEexample:BSTcontrol,
CTLuse_forced_etal       = "yes",
CTLmax_names_forced_etal = "3",
CTLnames_show_etal       = "2" }

This will limit author lists more than 3 by printing only the first 2 authors followed by et al.

Finally, you need to include \bstctlcite{IEEEexample:BSTcontrol} in your document before you cite any references (right after \begin{document} would be ideal). It won't have the right effect if it appears down by where you insert the bibliography.

A minimum working example:

\documentclass[]{IEEEtran}

\usepackage{lipsum} % For some dummy text
\usepackage{filecontents} % To make the bib-file

\begin{filecontents}{\jobname.bib}
@IEEEtranBSTCTL{IEEEexample:BSTcontrol,
  CTLuse_forced_etal       = "yes",
  CTLmax_names_forced_etal = "3",
  CTLnames_show_etal       = "2" 
}
@article{paperOne,
  author = "Author First and Author Second and Author Third and Author Fourth",
  title = "Paper One Title",
  journal = "Awesome Journal",
  pages = "111--115",
  year = 2013
}
@incollection{paperTwo,
  author = "Author First and Author Second and Author Third",
  title = "Paper Two Title",
  booktitle = "Proc. of Collection",
  pages = "222--225",
  year = 2013
}
\end{filecontents}

\begin{document}
\bstctlcite{IEEEexample:BSTcontrol}

% Paper text
\lipsum[4]
\nocite{paperOne,paperTwo} % Cite the references you want to include...

% Insert bibliography
\bibliographystyle{IEEEtran}
\bibliography{\jobname}

\end{document}

This will result in the following (note that the first reference has 4 authors trimmed down to 2, while the second reference is allowed to show all 3 authors, just as specified).

bibliography example