3

When I cite a paper with more than 2 authors, the citation in the text body is "Author1 et al.". Is it possible to change this default number from 2 to 3, so that a paper with 3 authors will be cited as "Author1 and Author2 and Author3"?

I work with bibtex and natbib. I looked at the natbib reference but did not find this option.

  • 2
    Could you consider using biblatex? It's just a matter of changing the values of the keys maxcitenames and mincitenames. – Bernard Dec 19 '17 at 10:54
  • it is determined by the bibtex style you are using, most will cut off at a higher number. – David Carlisle Dec 19 '17 at 11:02
  • The question is tagged apa. This is how APA wants it. – Johannes_B Dec 19 '17 at 11:03
  • Which bibliography style do you employ? The solution to your query involves modifying the bibliography style. Incidentally, for publications with exactly three authors, do you really want a citation call-out of the form "Author1 and Author2 and Author3", or would you prefer either "Author1, Author2 and Author3" or "Author1, Author2, and Author3"? (The latter possibility uses the "Oxford" comma...) Finally, should the citation call-out revert to "Author1 et al." for publications with four or more authors? If not, where's your preferred cut-off? Please advise. – Mico Dec 19 '17 at 11:03
2

You've indicated that you use the apa bibliography style. I suggest you proceed as follows to achieve your formatting objective:

  • Find the file apa.bst in your TeX distribution. Make a copy of this file and call the copy, say, apa-erel.bst.

  • Open the file apa-erel.bst in a text editor. (The editor you use for the main tex file will do fine.

  • In the file apa-erel.bst, locate the function format.lab.names. (In my copy of this file, the function starts on line 866.)

  • Delete (or comment out) all 17 or so lines of this function and replace them with the following code:

    FUNCTION {bbl.and}
    { "and"}
    FUNCTION {space.word}
    { " " swap$ * " " * }
    FUNCTION {format.lab.names}
    {'s :=
     "" 't :=
      #1 'nameptr :=
      s num.names$ 'numnames :=
      numnames 'namesleft :=
        { namesleft #0 > }
        { s nameptr
          "{vv~}{ll}" format.name$
          't :=
          nameptr #1 >
            {
              nameptr #2 =
              numnames #3 > and
                { "others" 't :=
                  #1 'namesleft := }
                'skip$
              if$
              namesleft #1 >
                { ", " * t * }
                {
                  s nameptr "{ll}" format.name$ duplicate$ "others" =
                    { 't := }
                    { pop$ }
                  if$
                  t "others" =
                    { " et~al." * }
                    {
                      numnames #2 >
                        { "," * }
                        'skip$
                      if$
                      bbl.and
                      space.word * t *
                    }
                  if$
                }
              if$
            }
            't
          if$
          nameptr #1 + 'nameptr :=
          namesleft #1 - 'namesleft :=
        }
      while$
    }
    
  • Save the file apa-erel.bst, either in a directory that's searched by BibTeX or in the directory where your main tex file is located. If you choose the former method, be sure to update the filename database of your TeX distribution suitably.

  • In your main tex file, change the instruction \bibliographystyle{apa} to \bibliographystyle{apa-erel} and perform a full recompile cycle -- latex, bibtex, latex, latex -- to fully propagate all changes.

Happy BibTeXing!

A full MWE:

enter image description here

\RequirePackage{filecontents}
\begin{filecontents}{mybib.bib}
@misc{ab, author = "A and B", title = "X", year = 3001, }
@misc{abc, author = "A and B and C", title = "Y", year = 3002, }
@misc{abcd, author = "A and B and C and D", title = "Z", year = 3003, }

\end{filecontents}

\documentclass{article}
\usepackage[authoryear,round]{natbib}
\bibliographystyle{apa-erel}
\begin{document}
\cite{ab}

\cite{abc}

\cite{abcd}

\bibliography{mybib}
\end{document}
  • Thanks! So the solution is different for each bst file? – Erel Segal-Halevi Dec 23 '17 at 18:08
  • 1
    @ErelSegal-Halevi - I'd say the solution is (more or less) the same for all bst files created with the makebst utility. (makebst was written by the author of the natbib package.) Lots and lots of bst files fall into this category. For other styles, including apa, the solution has to be bespoke. Some really old bib styles (especially those that generate only numeric-style citation call-outs) don't even feature a function called format.lab.names. In such cases, it's pretty much hopeless (pointless?!) to try to come up with a solution. – Mico Dec 23 '17 at 18:22

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.