13

I am using authoryear with biblatex.

When, for instance, I type \parencite[p.6]{gusfield2009}, I get :

(Gusfield, 2009, p.6)

How to get also the origdate entry in the citation in order to have :

(Gusfield, [1981] 2009, p. 6)

  • authorstyle is not a valid biblatex style, do you mean authoryear? By default, the origyear (origdate) is not displayed in the bibliography either, where do you want it to appear (what mergedate option, if any, do you use?)? – moewe Sep 23 '13 at 9:35
  • Sorry for the mistake (it is fixed now). I don't have specific mergedate option (in fact, I don't what mergedate is for the moment, I am still new..) – Leo Sep 23 '13 at 9:52
  • For mergedate read this file. – moewe Sep 23 '13 at 9:55
15

If you only want the origdate in citations, you need

\documentclass[a4paper,british]{article}
\usepackage[utf8]{inputenc} 
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=authoryear]{biblatex}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{test,
  author  = {Walter Ordsmith},
  title   = {An Old Work},
  date    = {2010},
  edition = {5},
  origdate = {1981},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\DeclareFieldFormat{origdate}{\mkbibbrackets{#1}}
\renewbibmacro*{cite}{%
  \iffieldundef{shorthand}
    {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
       {\usebibmacro{cite:label}%
        \setunit{\printdelim{nonameyeardelim}}}
       {\printnames{labelname}%
        \setunit{\printdelim{nameyeardelim}}}%
     \printorigdate
     \setunit*{\addspace}
     \usebibmacro{cite:labeldate+extradate}}
    {\usebibmacro{cite:shorthand}}}

\begin{document}
  \cite{test} and \parencite[6]{test}
  \printbibliography
\end{document}

yields enter image description here


Edit

The following approach incorporates the origdate into more cite commands and the bibliography.

\documentclass[a4paper,british]{article}
\usepackage[utf8]{inputenc} 
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=authoryear,mergedate=maximum]{biblatex}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{test,
  author  = {Walter Ordsmith},
  title   = {An Old Work},
  date    = {2010},
  edition = {5},
  origdate = {1981},
}
@book{testn,
  author  = {Walter Ordsmith},
  title   = {A New Work},
  date    = {2013},
}
@book{testm,
  author  = {Walter Ordsmith},
  title   = {A Very Old Work},
  date    = {2000},
  edition = {8},
  origdate = {1882},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\DeclareFieldFormat{origdate}{\mkbibbrackets{#1}}
\renewbibmacro*{cite:labeldate+extradate}{%
  \iffieldundef{origyear}
    {}
    {\printorigdate
     \setunit{\addspace}}%
  \iffieldundef{labelyear}
    {}
    {\printtext[bibhyperref]{\printlabeldateextra}}}

\DeclareCiteCommand{\citeorigyear}
  {\boolfalse{citetracker}%
   \boolfalse{pagetracker}%
   \usebibmacro{prenote}}
  {\printfield{origyear}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\renewbibmacro*{date+extradate}{%
  \iffieldundef{origyear}
    {}
    {\printorigdate
     \setunit{\addspace}}%
  \iffieldundef{labelyear}
    {}
    {\printtext[parens]{%
       \iflabeldateisdate
         {\printdateextra}
         {\printlabeldateextra}}}}

\begin{document}
  \cite{test} and \parencite[6]{test}.
  And \parencite[6]{testn} is nice and \textcite{testm} was written in \citeyear{testm}.

  \nocite{*}
  \printbibliography
\end{document}

gives enter image description here

|improve this answer|||||
  • Another question : Is there a way to get also automatically the original date with the date while using \citeyear ? In order to have for instance : [1981]2010 (Or do you think I should better do it manually ?) – Leo Sep 23 '13 at 9:57
  • 1
    @Leo The lower level command is \printfield{origyear} (do not use this in your document though). I have updated the answer to provide \citeorigyear which cites the origyear (without brackets or anything around it). Alternatively, there is the quite cumbersome \citefield{testm}{origyear}. – moewe Sep 23 '13 at 10:27
  • 1
    @asr The answer has been updated for the current version of biblatex – moewe Jul 13 '18 at 6:31
  • 1
    @asr Yeah, it shouldn't be doing that. Apparently \setunit* didn't quite work as intended. This should be fixed now. – moewe Jul 14 '18 at 9:22
  • 1
    @asr The behaviour of \setunit* after \printdate was a bug and will be fixed in the next biblatex release: github.com/plk/biblatex/commit/…. In the meantime the code above should work as expected (and should continue to do so even after the update). – moewe Jul 14 '18 at 11:24
4

Another option is to use the biblatex-chicago package, which comes with styles supporting origdate.

So

\documentclass{article}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@incollection{hume_1751_enquiry,
    origdate = {1751},
    date = {1975-06-12},
    author = {Hume, David},
    title = {An Enquiry Concerning the Principles of Morals},
    booktitle = {Enquiries Concerning Human Understanding and
        Concerning the Principles of Morals},
    editor = {Selby-Bigge, L. A. and Nidditch, P. H.},
    annotation = {Selby-Bigge and Nidditch's 1975 edition is
        based off a collection of Hume's essays postumously
        published in 1777. Hume's ``An Equiry Concerning the
        Principles of Morals" was first published in 1751.},
    publisher = {Oxford University Press},
    location = {New York},
    edition = {3},
    isbn = {978-0-19-824536-0}
}
\end{filecontents}

\usepackage[authordate,
    backend=biber,
    sorting=nyt,
    backref=true,
    alldates=iso8601,
    cmsdate=both,
    annotation=true]{biblatex-chicago}
\addbibresource{\jobname.bib}

\begin{document}

Lorem \autocite[179]{hume_1751_enquiry}.

\printbibliography

\end{document}

Will result in

cmsdate both

The cmsdate option controls how origdate and date are displayed both in the citation and in the reference list. My own preference is to use cmsdate=on which has the effect of eliminating the date field in the citation, but nevertheless displays both dates in the reference entry (the date is moved to the end of the entry):

cmsdate on

The Chicago Manual of Style, if that's the style guide you want to follow, specifies not using "p." to preface page numbers. But if you wanted to you could use ...

\autocite[p. 179]{hume_1751_enquiry}.

... to return ...

(Hume [1751] 1975, p. 179)

Update

Better, however, would be to add the following code to your preamble to insert "p." and "pp." automatically (in lieu of manually specifying it) ...

\DeclareFieldFormat{postnote}{\mkpageprefix[pagination]{#1}}
\DeclareFieldFormat{volcitepages}{\mkpageprefix[pagination]{#1}}
\DeclareFieldFormat{multipostnote}{\mkpageprefix[pagination]{#1}}

... as moewe suggests in the comments.

|improve this answer|||||
  • 1
    If one wants to get the page prefix back in biblatex-chicago, one should probably better use \DeclareFieldFormat{postnote}{\mkpageprefix[pagination]{#1}}, \DeclareFieldFormat{volcitepages}{\mkpageprefix[pagination]{#1}} and \DeclareFieldFormat{multipostnote}{\mkpageprefix[pagination]{#1}}. Inserting the "p."/"pp." manually should be a thing of the past with biblatex. – moewe Aug 16 '16 at 11:21
  • 1
    @moewe that's definitely the better approach. I've updated the main post accordingly. Thanks for the code! – John Bentley Aug 17 '16 at 8:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.