I don't comprehend natbib's intricacies, but here's a solution using biblatex. (Note: My \citesep
command works well for simultaneously citing several papers with the same author(s), but will yield strange results for different authors.)
\documentclass{article}
\usepackage{biblatex}
\makeatletter
% COPIED FROM \newbibmacro*{textcite}
\newbibmacro*{textadjunctcite}{%
\iffieldequals{namehash}{\cbx@lasthash}
{\multicitedelim}
{\cbx@tempa
\ifnameundef{labelname}
{\printfield[citetitle]{labeltitle}}
% {\printnames{labelname}}% DELETED
{\printnames{labelname}% NEW
\printfield{adjunct}}% NEW
\addspace\bibopenbracket}%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
\usebibmacro{cite}%
\savefield{namehash}{\cbx@lasthash}%
\gdef\cbx@tempa{\bibclosebracket\multicitedelim}}
% COPIED FROM \DeclareCiteCommand{\textcite}
\DeclareCiteCommand{\textadjunctcite}
{\let\cbx@tempa=\empty
\undef\cbx@lasthash}
{\usebibmacro{citeindex}%
% \usebibmacro{textcite}}% DELETED
\usebibmacro{textadjunctcite}}% NEW
{}
{\usebibmacro{postnote}%
\bibclosebracket}
\newcommand*{\citeposs}[2][]{%
\def\abx@field@adjunct{'s}%
\textadjunctcite[#1]{#2}%
}
\newcommand*{\citesep}[3][]{%
\def\abx@field@adjunct{#3}%
\textadjunctcite[#1]{#2}%
}
\makeatother
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{Knu01,
author = {Knuth, Donald E. and Tarjan, Robert E.},
year = {2001},
title = {A new algorithm},
}
@misc{Knu02,
author = {Knuth, Donald E. and Tarjan, Robert E.},
year = {2002},
title = {More about our algorithm},
}
\end{filecontents}
\bibliography{\jobname}
\begin{document}
This was \citeposs{Knu01,Knu02} work~\dots
As shown in \citesep{Knu01,Knu02}{'s algorithm}~\dots
\printbibliography
\end{document}
EDIT: Extended MWE to include a \citeposs
command.
\cite
the papers normally after that. Otherwise, biblatex might have the resources to deal with this problem. [Are you sure the authors' names are exactly the same in the two fields? If one is "D. Knuth" and the other is "Donald Knuth", that will cause them to be treated as different... – Seamus Oct 5 '10 at 11:41\citet
does compress them appropriately, I guess a solution could therefore be obtained by modifying it so as to remove reference numbers, but I've had a look at natbib.sty and I don't really see how to do that. – Anthony Labarre Oct 5 '10 at 13:44ieeetr.bst
norieeepes.bst
prints any names using my\citesep
command. – Anthony Labarre Oct 13 '10 at 7:14