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

4
  • 1
    Biblatex has localisation files for strings and knows about babel. They're written in your_language.lbx.
    – Bernard
    Apr 19, 2014 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, 2014 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, 2014 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, 2015 at 13:26

2 Answers 2

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.

1
  • 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? Apr 19, 2014 at 17:47

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .