the 'proper' way to cite the earliest publication date in brackets, followed by the publication date of the recent version used – ASA style
The biblatex
way is to use origdate
, but the default styles do not support origdate
awfully well.
You might like the following redefinitions. This will work for the standard mergedate=compact
option of biblatex
.
We just add a call to \printorigdate
where appropriate and make sure that origdate
is not used as labeldate
to avoid duplication.
\documentclass{article}
\usepackage[backend=biber, style=authoryear, natbib=true]{biblatex}
\usepackage{hyperref}
\DeclareLabeldate{%
\field{date}
\field{year}
\field{eventdate}
\field{urldate}
\literal{nodate}
}
\renewbibmacro*{date+extradate}{%
\iffieldundef{labelyear}
{}
{\printtext[parens]{%
\iffieldundef{origyear}
{}
{\printtext[brackets]{\printorigdate}%
\setunit{\addspace}}%
\iflabeldateisdate
{\printdateextra}
{\printlabeldateextra}}}}
\renewbibmacro*{cite:labeldate+extradate}{%
\iffieldundef{labelyear}
{}
{\printtext[bibhyperref]{%
\iffieldundef{origyear}
{}
{\printtext[brackets]{\printorigdate}%
\setunit{\addspace}}%
\printlabeldateextra}}}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@book{Veblen2005:1899,
author = {Veblen, Thorstein},
isbn = {978-81-87879-29-9},
publisher = {Aakar Books},
title = {The Theory of the Leisure Class},
subtitle = {An Economic Study of Institutions},
date = {2005-01},
origdate = {1899},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{document}
\ldots \citep{Veblen2005:1899,wilde} stated that \ldots
\printbibliography
\end{document}
yields
Note that the .bib
entry should be using origdate
instead of origyear
(generally, only the ...date
fields are supposed to appear in the .bib
file, the backend parses the dates and produces the dateparts ...day
, ...month
etc., there are backwards compatibility exceptions for year
and month
, which are acceptable instead of date
).
edit Updated for recent versions of biblatex
and Biber. See the edit history for older versions.
Since the above answer is outdated and I struggled a bit to replicate this behavior in the biblatex authoryear
style, I'll provide here the updated code. This works in biber version 2.12:
\renewbibmacro*{date+extradate}{%
\iffieldundef{labelyear}
{}
{\printtext[parens]{%
\iffieldundef{origyear}% new code
{}
{\printtext[brackets]{\printorigdate}\setunit{\addspace}}% end new
\printlabeldateextra}}}%
\renewbibmacro*{cite:labeldate+extradate}{%
\iffieldundef{labelyear}
{}
{\printtext[bibhyperref]{%
\iffieldundef{origyear}% new code
{}
{\printtext[brackets]{\printorigdate}\setunit{\addspace}}% end new
\printlabeldateextra}}}
Therefore the MVE becomes
\documentclass{article}
\usepackage[backend=biber, style=authoryear, natbib=true]{biblatex}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@book{Veblen2005:1899,
author = {Veblen, Thorstein},
Isbn = {978-81-87879-29-9},
publisher = {Aakar Books},
title = {The Theory of the Leisure Class},
subtitle = {An Economic Study of Institutions},
date = {2005-01},
origyear = {1899},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\renewbibmacro*{date+extradate}{%
\iffieldundef{labelyear}
{}
{\printtext[parens]{%
\iffieldundef{origyear}% new code
{}
{\printtext[brackets]{\printorigdate}\setunit{\addspace}}% end new
\printlabeldateextra}}}%
\renewbibmacro*{cite:labeldate+extradate}{%
\iffieldundef{labelyear}
{}
{\printtext[bibhyperref]{%
\iffieldundef{origyear}% new code
{}
{\printtext[brackets]{\printorigdate}\setunit{\addspace}}% end new
\printlabeldateextra}}}
\begin{document}
\ldots \textcite{Veblen2005:1899} stated that \ldots
\printbibliography
\end{document}
Hope this helps anyone who'll struggle with this again!