[Tex/LaTex] Workaround for reprinted items in bibliography

apa-stylebiberbiblatex

I am trying to find a way to indicate that a chapter is a reprint (in the following MWE, test1 is a reprint of test2). I had a look at this but I would like a solution that does not require adding fields such as Reprintedin and Reprintpages to the .bib file, since my .bib is produced by Zotero and the type of fields are given (although I could add a note field).

Is there a way to cross cite (or any other workaround)?

Please consider the following MWE:

\RequirePackage{filecontents}

\begin{filecontents*}{mybib.bib}
@incollection{test1,
    address = {London},
    title = {Deliberation and democratic legitimacy},
    isbn = {0415302102},
    lccn = {JA71 .D36 2003},
    booktitle = {Debates in contemporary political philosophy: {An} anthology},
    publisher = {Routledge},
    author = {Cohen, Joshua},
    editor = {Matravers, Derek and Pike, Jonathan E.},
    year = {2003 [1989]},
    pages = {342--360},
}
@book{test2,
    address = {Oxford},
    title = {The {Good} polity: {Normative} analysis of the state},
    isbn = {0631158049},
    lccn = {JC325 .G59 1989},
    shorttitle = {The {Good} polity},
    publisher = {Blackwell},
    editor = {Hamlin, Alan P. and Pettit, Philip},
    year = {1989}
}
}
\end{filecontents*}

\documentclass[a4paper]{article}


% Set the values for the bibliography
\usepackage[
    style=apa,
    backend=biber,
    isbn=false,
    url=false,
    doi=false,
    eprint=false,
    hyperref=true,
    backref=false,
    firstinits=false,
]{biblatex}

% Recommended by biblatex
\usepackage[utf8]{inputenc}
\usepackage{csquotes}
\usepackage{xpatch}

% Set language
\usepackage[british]{babel}
\DeclareLanguageMapping{british}{british-apa}

\addbibresource{mybib.bib}

\begin{document}

\cite{test1}

\printbibliography
\end{document}

Ideally, what I would like to obtain is the following in-text citation:

(Cohen, 2003 [1989])

and the following full citation in the Reference list:

Cohen, J. (2003). Deliberation and democratic legitimacy. In D.
Matravers & J. E. Pike (Eds.), Debates in contemporary political
philosophy: An anthology (pp. 342–360). (Reprinted from The Good
polity: Normative analysis of the state
, pp. 17-34, by A. P. Hamlin &
P. Pettit, Eds., 1989, Oxford: Blackwell). London: Routledge.

Best Answer

There is no need to alter the bib file. It is possible to add the information about the original publication using \DeclareSourcemap

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldsource=entrykey, match=\regexp{test1},
            fieldset=related, fieldvalue={test2}]
      \step[fieldsource=entrykey, match=\regexp{test1},
            fieldset=relatedtype, fieldvalue={reprintfrom}]
    }
  }
}

The apa biblatex style does not include the date of the reprint in the bibliographic info. Thus we can patch it using the xpatch package (i.e., use \usepackage{xpatch} to load it) and the following code

\xpatchbibmacro{related:reprintfrom}
  {\usebibmacro{location+publisher}}
  {\usebibmacro{date}\setunit{\addcomma\addspace}\usebibmacro{location+publisher}}
  {}
  {}

Similarly apa does not specify the that the editors of a work from which the reprint originates are editors. Thus we can add the string ed/eds by patching again the bibmacro used for related work of type reprintfrom (related:reprintfrom)

\xpatchbibmacro{related:reprintfrom}
  {\printnames[apanames][-\value{listtotal}]{editor}}
  {\printnames[apanames][-\value{listtotal}]{editor}%
    \ifnameundef{editor}{}{\addcomma\addspace\usebibmacro{apaeditorstrg}{editor}}}
  {}
  {}

Finally to print the full text Reprint from there are two alternatives: the first is to load the option abbreviate=false of biblatex (but it has the effect to turn off all the abbreviations) or we can redefine the bibliography string associated to it (reprintfrom); this can be done as in the following code:

\DefineBibliographyStrings{british}{
  reprintfrom = {Reprinted from}
}
Related Question