2

I'm using \bibliographystyle{phil_review} and when I cite a paper with more than two authors it automatically appears as 'XX et. al.' What's the simplest way to control for the number of authors required before this happens?

3
  • Suppose I want to impose 'et.al' when there are at least four authors. – bozidarka Jun 13 '13 at 15:50
  • Thanks for this information. Could you indicate from where you've obtained your copy of the file phil_review.bst? It doesn't seem to be on the CTAN. I found one version on a GitHub website, but that version has some severe errors. – Mico Jun 13 '13 at 18:25
  • Here is where it can be found:tedsider.org/latex/phil_review.bst – bozidarka Jun 14 '13 at 0:37
1

In order to make BibTeX show the names of all authors (or editors) as long as there are no more than 3 authors, you'll need to edit the function format.lab.names in the file phil_review.bst along the following lines:

  • Make a copy of the file and name it, say, phil_review_mod.bst. (Don't edit an original file.)

  • Open the file phil_review_mod.bst in your favorite text editor and locate the function format.lab.names. (It starts on line 1286 in my copy of the file.)

  • Delete the entire function -- it occupies about 23 lines of code -- and replace it with the following code:

    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" =
                    {
                      " " * bbl.etal *
                    }
                    {
                      numnames #2 >
                        { "," * }
                        'skip$
                      if$
                      bbl.and
                      space.word * t *
                    }
                  if$
                }
              if$
            }
            't
          if$
          nameptr #1 + 'nameptr :=
          namesleft #1 - 'namesleft :=
        }
      while$
    }
    
  • Save the file, either in the directory with your main .tex file or in a directory that's searched by your TeX distribution, and start using it by issuing the command \bibliographystyle{phil_review_mod}. Happy BibTeXing!

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.