A citation command like \citet[]{}
has two parts: the mandatory tag for the citation, and the optional part to "pinpoint" the reference within the citation.
So long as you don't use the optional part, \citet{}
can be used on its own to cite multiple works: \citet{a,b,c}
. But obviously that doesn't work with the optional argument, because it's ambiguous which work it relates to. In general, that ambiguity is resolved by assuming it is a pinpoint citation for the last work cited.
If you want pinpoint citations for multiple sources, you have (as far as I know) three options:
Switch to biblatex, which has special citation commands intended for exactly this, which are described in multiplace citations with pages using biblatex. There are many good reasons to make that switch, of which this cannot be said to be one of the most important. (It may be worth noting that for APA-style citations biblatex has a particularly carefully written, stable, and actively maintained package: biblatex-apa.)
Simply do what you have done in your example: instead of \cites[1]{a}[2]{b}
, where the software inserts the "separator" between the citations, which is what biblatex provides, put it in yourself \cite[1]{a}; \cite[2]{b}
. Unless you have lots of these and expect to change the "separator" rather often, this is fine. (If you did think you might want to change the "separator" you could always define a macro for it, which could be redefined to ensure consistency. For most cases that would be overkill.)
If you are very enthusiastic, write something that emulates the biblatex \cites
command. This is left, as they say, as an exercise for the reader, though I'm sure the biblatex code would give you some ideas.
This is easy if you take Ulrike Fischer's answer as the starting point.
\documentclass[]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[subentry]{biblatex}
\defbibentryset{set2}{shore,doody}
\addbibresource{biblatex-examples.bib}
\begin{document}
\cite{set}, \cite{set2} \cite{shore}
\printbibliography
\end{document}
If you cannot use Biblatex, start from Joseph Wright's answer instead. This is definitely the more harrowing course because you may actually be forced to read mciteplus
's documentation which explains how to do exactly what you want.
It is surprising just how often package authors go to the trouble of explaining how to do stuff with their packages, given the evident dearth of readers.
\begin{filecontents*}{\jobname.bib}
@Article{Arduengo1992,
Title = {Electronic stabilization of nucleophilic carbenes},
Author = {Arduengo, III, Anthony J. and H.~V.~Rasika Dias and Richard~L. Harlow and Michael Kline},
Journal = {J. Am. Chem. Soc.},
Year = {1992},
Number = {14},
Pages = {5530--5534},
Volume = {114},
Doi = {10.1021/ja00040a007},
}
@Article{Arduengo1994,
Title = {Low-coordinate carbene complexes of nickel(0) and platinum(0)},
Author = {Arduengo, III, Anthony J. and Siegfried~F. Gamper and Joseph~C. Calabrese and Fredric Davidson},
Journal = {J. Am. Chem. Soc.},
Year = {1994},
Number = {10},
Pages = {4391--4394},
Volume = {116},
Doi = {10.1021/ja00089a029},
}
\end{filecontents*}
\documentclass{article}
\usepackage[numbers]{natbib}
\usepackage{mciteplus}
\renewcommand{\mcitesubrefform}{[\arabic{mcitebibitemcount}\alph{mcitesubitemcount}]}
\begin{document}
Some text \cite{Arduengo1992,*Arduengo1994}.
Now a specific reference \mciteSubRef{Arduengo1992}.
\bibliographystyle{rsc}
\bibliography{\jobname}
\end{document}
Best Answer
The
natbib
package provides the "alternate" citation commands\citealt
and\citealp
, which act just like\citet
and\citep
, respectively, except that they don't generate parentheses.I suggest you replace the single
\citep
directive with two\citealp
directives; the first for the first entry (the one for which you want to provide a page range in the citation call-out), and the second for the 2nd and 3rd entries.