15

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?

17

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

  • Hi, Thanks for the answer. Unfortunately, it still doesn't work. – jmm Mar 10 '14 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 '14 at 13:56
  • 1
    @jmm: see my edit (with example MWE), note the placement of the \bstctlcite command. – cslstr Mar 10 '14 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 '14 at 11:37
  • full solution tex.stackexchange.com/questions/16506/… – Georges Aug 24 '18 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.

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.