Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I have the following BibTeX entry:

@article{pubmed18800157,
    author = {Heng, T.S. and Painter, M.W. and Immunological Genome Project Consortium},
    title = {The {I}mmunological {G}enome {P}roject: networks of gene expression in immune cells.},
    journal = {Nat. Immunol.},
    pages = {1091-1094},
    volume = {9},
    number ={10},
    year = {2008},
},
%\bibliographystyle{unsrt}

When the bibliography is generated, it puts comma a the end of the author: enter image description here

Notice the comma after M.W. Painter. Is there a way to remove it?

share|improve this question
    
Thats a duplicate of Getting Rid of Comma before 'and' in Authors' Names. –  Christoph Sep 2 '13 at 6:51
    
@Christoph Well yes but the answer there doesn't really give much in the way of technical detail! –  Joseph Wright Sep 2 '13 at 7:27
    
@JosephWright Yes, you are right. It wasn't meant to say, that it should be marked as duplicate. I should've said, "look at that question". –  Christoph Sep 2 '13 at 7:46
    
Not part of the question, but as the institutional author is a single 'name', you should put the entire thing in braces. –  Joseph Wright Sep 2 '13 at 8:18
    
Perhaps we should 'reverse dupe' here: this question has answers at the technical level, so might be a better 'main' question. –  Joseph Wright Sep 2 '13 at 8:25

2 Answers 2

Complementary to the approach of editing a .bst file, if you are willing to shift to biblatex then you can do this using the trad-unsrt style and a very minor customisation:

\RequirePackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{pubmed18800157,
    author = {Heng, T. S. and Painter, M. W. and {Immunological Genome Project Consortium}},
    title = {The {Immunological} {Genome} {Project}:
      networks of gene expression in immune cells.},
    journal = {Nat. Immunol.},
    pages = {1091-1094},
    volume = {9},
    number ={10},
    year = {2008},
},
\end{filecontents}
\documentclass{article}
\usepackage[backend=bibtex,bibstyle=trad-unsrt]{biblatex}
\bibliography{\jobname}
\renewcommand*{\finalnamedelim}{\addspace \bibstring {and}\space}

\begin{document}

\textcite{pubmed18800157}

\printbibliography

\end{document}

Note that this has nothing to do with institutional authors: the same is true for any list of three or more authors with the unsrt style.

share|improve this answer
    
How can I do this in the lbx file? In Hungarian the comma is grammatically wrong, but redefining \finalnamedelim in the lbx file didn't work for me. –  marczellm May 5 at 16:37
    
@marczellm Broadly, I'd say 'you don't'. The reasoning is as follows: the style is defined by the .bbx file and is 'language-independent', while the language strings are defined by the .lbx file and are of course not. As such, commas are present not because of the language but because of the style: bibliography data is not in 'sentence form'. –  Joseph Wright May 5 at 16:52

To get rid of that Oxford comma, you'll need to modify the .bst file – in your case that is unsrt.bst. Locate the file .bst file on your system, copy and rename it (to unsrtnox.bst, for example) and put it somewhere LaTeX can find it.

The relevant function is called FUNCTION {format.names} (unsrt.bst, l. 185).

If you get rid of the four lines

numnames #2 >
  { "," * }
  'skip$
if$

making it (in our case of unsrt.bst)

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 * }
      { t "others" =
          { " et~al." * }
          { " and " * t * }
        if$
      }
    if$
  }
    't
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
}

the comma before the last name disappears.

The test above is evoked at the penultimate name (otherwise a comma is printed following the name) and checks if the list contains more than two names, if so, the comma will be printed anyway. Getting rid of this test prevents the comma from being printed.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.