6

I am working on my master thesis and I have problem with citing multiple authors. The separator in pdf is "and", but this is not correct in my language. Is there a simple solution to change this separator?

Thanks for every answer

here is MWE:

\documentclass{article}
\usepackage[numbers]{natbib}

\begin{document}
  blba bla bla bla bla bla bla \cite{x}

  \bibliographystyle{plain}
  \bibliography{references}
\end{document}

It produces results like: the "and" shouldn't be there

  • 1
    Biblatex has localisation files for strings and knows about babel. They're written in your_language.lbx. – Bernard Apr 19 '14 at 11:40
  • 1
    Welcome to TeX.SX! Please help us to help you and add a minimal working example (MWE) that illustrates your problem. It will be much easier for us to reproduce your situation and find out what the issue is when we see compilable code, starting with \documentclass{...} and ending with \end{document}. You’ll find tips for a biblatex MWE in my answer to that question. – doncherry Apr 19 '14 at 11:42
  • 1
    Thanks for the code, but that is unfortunately not a MWE. A MWE should contain all (and only) the code that’s needed to produce e.g. what your picture shows. – doncherry Apr 19 '14 at 18:29
  • @Truthseeker Did you see tex.stackexchange.com/questions/104128/…? The 'copy and edit the .bst file' method there is generally true for non-biblatex styles. – Joseph Wright Mar 8 '15 at 13:26
8
+50

First of all, from the command line, run

kpsewhich plain.bst

to know where the file plain.bst is. Its path should be TEXMF/bibtex/bst/base/.

Now copy plain.bst in the directory where your .tex file is, and rename it to myplain.bst.

Then open myplain.bst in your editor and search for the lines:

FUNCTION {format.names}
{ 's :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
      nameptr #1 >
    { namesleft #1 >
        { ", " * t * }
        { numnames #2 >
        { "," * }
        'skip$
          if$
          t "others" =
        { " et~al." * }
        { " and " * t * }
          if$
        }
      if$
    }
    't
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
}

Replace them with the following

FUNCTION {format.names}
{ 's :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
      nameptr #1 >
    { namesleft #1 >
        { ", " * t * }
        { numnames #2 >
        { "," * }
        'skip$
          if$
          t "others" =
        { " et~al." * }
        { " " * t * }
          if$
        }
      if$
    }
    't
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
}

and save the file.

Now in your document, replace

\bibliographystyle{plain}

with

\bibliographystyle{myplain}

and you're done.

MWE

\begin{filecontents*}{references.bib}
@article{x,
author = {Author, A and Buthor, B and Cuthor, C},
journal = {A journal},
title = {A title},
year = {2015}
}
\end{filecontents*}

\documentclass{article}
\usepackage[numbers]{natbib}

\begin{document}
  blba bla bla bla bla bla bla \cite{x}

  \bibliographystyle{myplain}
  \bibliography{references}
\end{document} 

Output:

enter image description here

6

If you're using biblatex, take a look on the biblatex manual, section 3.9.1 Generic Commands and Hooks.

\finalnamedelim is probably the bibliography string you want to change. You can do that easily with:

\renewcommand*{\finalnamedelim}{\addcomma\addspace}

You may also take a look at the \multinamedelim-string.

  • Thanks for your answer, but my problem is that I have to use \usepackage[numbers]{natbib}. Do you know similar solution for this package too? – user3304071 Apr 19 '14 at 17:47

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.