A fast solution could be to add
note={reprinted in LewisPP1, pages 26--46}
in your article entry. With a little pretty printing you get:
@article{LewisCTQML,
Author = {David Lewis},
Date-Modified = {2007-03-24 18:24:14 -0400},
Journal = {Journal of Philosophy},
Pages = {113--26},
Reprintedin = {LewisPP1},
Reprintpages = {26--46},
Title = {Counterpart Theory and Quantified Modal Logic},
Volume = {65},
Year = {1968},
note = {reprinted in LewisPP1, pages 26--46},
}
Here is a proof of concept (no support for the optional argument, and something similar is needed for \citep
and other cite commands), and also it assumes that the .bst
style use "et al" for references for more that a single author.
The idea is to create something similar to \ifciteseen
in biblatex
. Thus we can create a list of references already cited in the document (and we exploit the list facilities of etoolbox
). Then, if the reference has not been used before we use \citet*
, and we add the key to the list of seen references. Otherwise, we use \citet
.
\documentclass{article}
\usepackage{etoolbox}
\usepackage{natbib}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{test1,
author = {Author, A. and Buthor, B and Cuthor, C and Duthor, D},
title = {Title},
journal = {Journal},
year = 2013
}
@article{test2,
author = {Author, A. and Buthor, B and Cuthor, C and Duthor, D},
title = {Title},
journal = {Journal},
year = 2012
}
\end{filecontents}
\newcommand{\citelist}{}
\newcounter{currentcite}
\newcounter{currentcitetotal}
\newcommand{\mycite}[1]{
\setcounter{currentcitetotal}{0}
\renewcommand{\do}[1]{\addtocounter{currentcitetotal}{1}}
\docsvlist{#1}
\renewcommand{\do}[1]{%
\addtocounter{currentcite}{1}%
\ifinlist{##1}{\citelist}
{\citet{##1}}
{\citet*{##1}\listadd{\citelist}{##1}}%
\ifnumcomp{\value{currentcitetotal}}{>}{\value{currentcite}}
{, }
{}%
}
\docsvlist{#1}
}
\begin{document}
\mycite{test1,test2}
\mycite{test1}
\mycite{test2}
\bibliographystyle{plainnat}
\bibliography{\jobname}
\end{document}
Best Answer
Whether using
biblatex
is allowed in the solution or not is unclear. However, ifbiblatex
is indeed allowed, I recommend usingbiblatex
's\textcite
(as well as\citeauthor
and\citeyear
), with the following tweaks: