8

I'd like BibTeX to print authors' names in the following fashion:

S. Bouabdallah, A. Noth, R. Siegwart

For that to happen, according to what I've read already, the .bib code should look like below:

@inproceedings{BouabdallahPID,
    author = {Bouabdallah, S. and Noth, A. and Siegwart, R.},
    keywords = {quad},
    location = {Sendai, Japan},
    pages = {2451--2456},
    title = {{PID vs LQ control techniques applied to an indoor micro quadrotor}},
    year = {2004}
}

Instead, BibTeX keeps including the "and" word before last author's name, i.e.:

S. Bouabdallah, A. Noth, and R. Siegwart

How do I get rid of the "and" word?

I've tried alpha, plain, ams and acm styles so far, which made no difference, hence assumed style doesn't change this behavior, but may be wrong on this one. I'd like to stay with plain, though.

8

If you're using the plain bibliography style, you could proceed as follows to get BibTeX to replace the " and " connector between the penultimate and ultimate author names with a simple comma:

  • Make a copy of the file plain.bst and name it, say, myplain.bst. Do not directly edit/modify an existing file that comes with a TeX distribution.

  • Open the file myplain.bst in your favorite text editor and search for the function format.names. (It starts on l. 185 in my system's copy of plain.bst.) In the code of this function, look for the following lines (likely lines 195-201):

        { numnames #2 >
            { "," * }
            'skip$
          if$
          t "others" =
            { " et~al." * }
            { " and " * t * }
    
  • Modify the first and last of these lines so that the lines of code look like this:

        { numnames #1 >
            { "," * }
            'skip$
          if$
          t "others" =
            { " et~al." * }
            { " " * t * }
    

    I.e., change #2 to #1 on the first line, and " and " to " " on the last line of this group. It's necessary to make both modifications to get the proper treatment regardless of the number of authors -- as long as the number is greater than 1, of course.

  • Save the file, update your TeX distribution's filename database as needed, and start invoking the new bibliography style with the command \bibliographystyle{myplain}.

Happy BibTeXing!

4
  • 1
    Thank you Mico. Unfortunately I don't know what exactly do you mean in the last point, how do I update my TeX distribution's filename database?
    – mmm
    Nov 6 '12 at 17:25
  • I've done: Start > Programs > MiKTeX > Maintenance > Settings > General > Refresh FNDB (both as user and admin) and after the changes you described end up with empty bibliography. Apart of typing errors, what more could I have done wrong?
    – mmm
    Nov 6 '12 at 18:09
  • @mmm: Where is the file myplain.bat stored? If it's not in one of the directories searched by TeX, updating the file name database (what you've done for your MikTeX system is perfect, BTW) won't do you much good. Incidentally, what error or warning messages do you get in the .blg file?
    – Mico
    Nov 6 '12 at 18:14
  • OK, nevermind, I updated the database and generated my document and bibliography several times more and everything works now. Thank you a lot!
    – mmm
    Nov 6 '12 at 19:10
3

When using jurabib, it works the following way:

\renewcommand*{\jbbtasep}{, } % bta = between two authors sep
\renewcommand*{\jbbfsasep}{, } % bfsa = between first and second author sep
\renewcommand*{\jbbstasep}{, }% bsta = between

I have yet to find out how it is done with plain, though.

EDIT:

I just read the plain styles documentation -- not the whole, obviously -- as to be found on CTAN. In lines 683-714 the function for the name formatting is described (as far as I understood it). It says:

format.names(s) ==
%  BEGIN
%       nameptr := 1
%       numnames := num.names$(s)
%       namesleft := numnames
%       while namesleft > 0
%         do
%                               % for full names:
%           t := format.name$(s, nameptr, "{ff~}{vv~}{ll}{, jj}")
%                               % for abbreviated first names:
%           t := format.name$(s, nameptr, "{f.~}{vv~}{ll}{, jj}")
%           if nameptr > 1 then
%               if namesleft > 1 then nameresult := nameresult * ", " * t
%               else if numnames > 2
%                      then nameresult := nameresult * ","
%                    fi
%                    if t = "others"
%                      then nameresult := nameresult * " et~al."
%                      else nameresult := nameresult * " and " * t
%                    fi
%               fi
%           else nameresult := t
%           fi
%           nameptr := nameptr + 1
%           namesleft := namesleft - 1
%         od
%       return nameresult
%  END

It seems like the else nameresult := nameresult * " and " * t would have to be transformed to else nameresult := nameresult * ", " * t in order to achieve what you want to achieve.

Therefore, you would probably have to create your own new style based on the plain style with just this part changed.

This Blogpost by “Dr. K-Lo” might also be helpful.

0

Thanks for your answer. I just want to add a comment for new users:

The file myplain.bst must be in the same folder as your parent .tex file. If you have your work splitted in several .tex files, (e.g. in a thesis), you have to put the .bst file in the same folder as your non-parent .tex file.

Example

  • Parent tex file: thesis/thesis.tex
  • Chapters' path: thesis/chapters/introduction.tex, thesis/chapters/abstract.tex, thesis/chapters/results.tex ...

Then the path of myplain.bst has to be thesis/chapters/myplain.bst.

You have to compile bibliography and PDF file at least twice in order to print the references without "and" word.

This worked for me.

1

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.