32

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?

2

2 Answers 2

41

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

5
  • Hi, Thanks for the answer. Unfortunately, it still doesn't work.
    – jmm
    Mar 10, 2014 at 11:16
  • 1
    Hi jmm; it would help if you could edit your question above to include a minimum (non-)working example that gives an example of what you have tried that doesn't work. See meta.tex.stackexchange.com/a/3225/47522 for more information.
    – cslstr
    Mar 10, 2014 at 13:56
  • 1
    @jmm: see my edit (with example MWE), note the placement of the \bstctlcite command.
    – cslstr
    Mar 10, 2014 at 15:26
  • Hi cslstr, Thanks to your example, I found the problem. It was not with the commands themselves, but I was loading the "cite" package. I guess it causes some conflict. After commenting the \usepackage{cite} line, it works. Thank you :)
    – jmm
    Mar 11, 2014 at 11:37
  • full solution tex.stackexchange.com/questions/16506/…
    – Georges
    Aug 24, 2018 at 13:46
0

Working on Sharelatex.

@IEEEtranBSTCTL does require at least the first two field values in the post above (see Michael Shell's documentation). I am using the cite package, with no conflict.

1
  • It would help if you can verify the package versions you're using. See Which package version am I using? This may make it so your suggestion can be replicated.
    – Werner
    Oct 20, 2016 at 23:36

You must log in to answer this question.

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