[Tex/LaTex] Inconsistent Author et al Behavior with LaTeX+BibTeX

author-numberbibtex

I am having some issues while using BibTeX to cite papers in an article I am writing. The journal I am submitting to supplies their own *.bst and *.sty files that are supposed to format to the journal's desired style.

The problem is I am having really incosistent behavior with Author truncating (i.e. et al). In some places when I am citing the same paper I get:

Author1 et al. (2003)

whereas in others I get:

Author1, Author2, Author3, and Author4 (2003)

This is all while using \cite{key} in the same way. To try and diagnose the issue I took a look at the paper.aux file. In this file I can see that the Authors are correctly parsed by BibTeX. Here is an example of the *.aux file entry:

\bibcite{key}{{5}{2003}{{Author1 et~al.}}{{Author1, Author2, Author3, and Author4}}}

To me the next logical step is to take a look at the *.bst file. Unfortunately I am very inexperienced with BibTeX. Here is the code that I think is relevant from the *.bst file:

FUNCTION {bbl.etal}
{ "et~al." }
FUNCTION {format.names}
{ 'bibinfo :=
  duplicate$ empty$ 'skip$ {
  's :=
  "" 't :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr
      duplicate$ #1 >
        { "{f.~}{vv~}{ll}{, jj}" }
        { "{vv~}{ll}{, f.}{, jj}" }
      if$
      format.name$
      bibinfo bibinfo.check
      't :=
      nameptr #1 >
        {
          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$
}

Best Answer

You seem, in your latest comment, intent on finding a way to monitor such behaviour.

You should give a try at biblatex, which is very complete and highly configurable.

For your precise case, you would use \usepackage[maxnames=99]{biblatex}, which would always display all the authors.