2

I'm writing a document using natbib and plainnat for authoryear-style citations and for the bibliography. I have a citation list using \citet, and I'd like to add the word "and" before the last item, i.e.

Roussy et al. (2005a,b) and Teixeira and Rosa (2006), instead of Roussy et al. (2005a,b); Teixeira and Rosa (2006)

\documentclass[a4paper]{article}
\usepackage[authoryear,round,sort]{natbib}
\bibliographystyle{plainnat}
\begin{filecontents*}{\jobname.bib}
@Article{Roussy2005,
  author  = {Roussy, Jean and Van Vooren, Maurice and Dempsey, B. A. and Guibal, Eric},
  title   = {Influence of chitosan characteristics on the coagulation and the flocculation of bentonite suspensions},
  journal = {Water Research},
  year    = {2005},
  volume  = {39},
  number  = {14},
  pages   = {3247-3258},
}
@Article{Roussy2005a,
  author  = {Roussy, Jean and Van Vooren, Maurice and Guibal, Eric},
  title   = {Influence of chitosan characteristics on coagulation and flocculation of organic suspensions},
  journal = {Journal of Applied Polymer Science},
  year    = {2005},
  volume  = {98},
  number  = {5},
  pages   = {2070-2079},
}
@Article{Teixeira2006,
  author  = {Teixeira, Margarida Ribau and Rosa, Maria João},
  title   = {Comparing dissolved air flotation and conventional sedimentation to remove cyanobacterial cells of \textit{Microcystis aeruginosa}. {Part I}: The key operating conditions},
  journal = {Separation and Purification Technology},
  year    = {2006},
  volume  = {52},
  number  = {1},
  pages   = {84-94},
}
\end{filecontents*}
\begin{document} 
According to \citet{Roussy2005,Roussy2005a,Teixeira2006}
\bibliography{\jobname}
\end{document}
Mico
  • 506,678
  • 2
    These answers might help you: https://tex.stackexchange.com/a/4681/134144 and https://tex.stackexchange.com/a/186940/134144. – leandriis Nov 20 '17 at 14:51
  • Simply add \makeatletter\def\NAT@sep{ and}\makeatother to your preamble. – Lupino Nov 20 '17 at 15:17
  • 2
    @Lupino That adds an and between every citation doesnt it? OP wants it only before the last item. – Troy Nov 20 '17 at 15:23
  • @Troy, that's right… – Lupino Nov 20 '17 at 15:29
  • 1
    Are you aware of the fact that the user guide of the natbib package expressly discourages the use of \citet with multiple arguments, except if the pieces being cited all have the same author(s)? Hence, what you're asking for in this query isn't something to be encouraged or supported. – Mico Nov 20 '17 at 16:47

2 Answers2

4

The user guide of the natbib package (cf. p. 9, lower half) expressly discourages the use of multiple arguments with \citet unless the pieces being cited have the same author(s). (The situation is different for \citep.)

Thus, instead of writing

... \citet{Roussy2005,Roussy2005a,Teixeira2006} ...

you should write

... \citet{Roussy2005,Roussy2005a} and \citet{Teixeira2006} ...

i.e., you should use two separate \citet directives from the get-go.

Mico
  • 506,678
3

The quickest but dirty way would be to redefine the \NAT@sep macro:

\makeatletter\def\NAT@sep{ and}\makeatother

Or you could use the \bibpunct macro (from the natbib.sty source):

Use \bibpunct with 6 mandatory arguments:
      1. opening bracket for citation
      2. closing bracket
      3. citation separator (for multiple citations in one \cite)
      4. the letter n for numerical styles, s for superscripts
          else anything for author-year
      5. punctuation between authors and date
      6. punctuation between years (or numbers) when common authors missing

You want to adjust the third argument:

\bibpunct[, ]{(}{)}{ and}{a}{,}{,}

Note that in all examples you need the space before the "and". Since it is meant to be used with punctuation it expects to be right after the first citation.

Also note that these are global solutions! If you have three or more citations in a row, all three are linked by an "and". You probably won't want that. To locally adjust the separator you could do something like

According to \citet{Roussy2005,Roussy2005a,Teixeira2006}

\bgroup\makeatletter\def\NAT@sep{ and}\makeatother
According to \citet{Roussy2005,Roussy2005a,Teixeira2006}
\egroup

According to \citet{Roussy2005,Roussy2005a,Teixeira2006}

which gives you:

Result

Lupino
  • 2,772