9

LaTeX apparently treats the same case with two different outputs. When a bib entry has origdate according to the APA style, the string (Original work published xxx) should be appended at the end of the bib entry preceded by a period (.), separating it from the previous field (i.e., the publisher). Still, LaTeX does not always append the period after the publisher and before (Original... . The output from the following MWE produces only one correct result, i.e. the second, while the first and the last entries are missing the period.

\RequirePackage{filecontents}

\begin{filecontents*}{mybib.bib}
@book{test1,
    address = {Edinburgh},
    title = {I and thou},
    publisher = {T. \& {T}. {Clark}},
    author = {Buber, Martin},
    translator = {Smith, Ronald Gregor},
    year = {1937},
    origdate = {1923}
}
@book{test2,
    address = {Boston, {MA}},
    title = {The theory of communicative action. {Reason} and the rationalization of society},
    volume = {1},
    publisher = {Beacon {Press}},
    author = {Habermas, Jürgen},
    translator = {{McCarthy}, Thomas},
    year = {1984},
    origdate = {1981}
}
@incollection{test3,
    address = {Cambridge, {MA}},
    title = {Deliberation and democratic legitimacy},
    booktitle = {Deliberative democracy: {Essays} on reason and politics},
    publisher = {MIT {Press}},
    author = {Cohen, Joshua},
    editor = {Bohman, James and Rehg, William},
    year = {1997},
    origdate = {1989},
    pages = {67--91}
}
\end{filecontents*}

\documentclass{article}

\usepackage[
    style=apa,
    backend=biber,
    isbn=false,
    url=false,
    doi=false,
    eprint=false,
    hyperref=true,
    backref=false,
    firstinits=false,
]{biblatex}

\usepackage[utf8]{inputenc}
\usepackage{csquotes}
\usepackage{xpatch}

\usepackage[british]{babel}
\DeclareLanguageMapping{british}{british-apa}

\addbibresource{mybib.bib}

\begin{document}

\cite{test1}
\cite{test2}
\cite{test3}

\printbibliography
\end{document} 

enter image description here

8

The difference here is caused by slightly different bibliography drivers for the book entry type and the incollection entry type. In the driver for the book type, there is the following code fragment:

  ...
  \usebibmacro{location+publisher}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \setunit*{\addspace}\newblock
  \usebibmacro{origyear}%
  ...

whereas in the incollection driver there is just:

  ...
  \usebibmacro{location+publisher}%
  \newunit\newblock
  \usebibmacro{origyear}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  ...

This is different in two ways: the doi is printed after the original year in the incollection and before the original year in the book entry. Furthermore, in the book driver, an explicit space is added instead of using \newunit (which defaults to a period and a space.)

It's not clear to me whether this is by design or not (after all, the APA works in mysterious ways.) Temporarily you can fix it by redefining the driver for the book entry to remove the offending space.

Philip Kime (the author of biblatex-apa) is active on the site, so he may have some further comments.

\RequirePackage{filecontents}

\begin{filecontents*}{mybib.bib}
@book{test1,
    address = {Edinburgh},
    title = {I and thou},
    publisher = {T. \& {T}. {Clark}},
    author = {Buber, Martin},
    translator = {Smith, Ronald Gregor},
    year = {1937},
    origdate = {1923}
}
@book{test2,
    address = {Boston, {MA}},
    title = {The theory of communicative action. {Reason} and the rationalization of society},
    volume = {1},
    publisher = {Beacon {Press}},
    author = {Habermas, Jürgen},
    translator = {{McCarthy}, Thomas},
    year = {1984},
    origdate = {1981}
}
@incollection{test3,
    address = {Cambridge, {MA}},
    title = {Deliberation and democratic legitimacy},
    booktitle = {Deliberative democracy: {Essays} on reason and politics},
    publisher = {MIT {Press}},
    author = {Cohen, Joshua},
    editor = {Bohman, James and Rehg, William},
    year = {1997},
    origdate = {1989},
    pages = {67--91}
}
\end{filecontents*}

\documentclass{article}

\usepackage[
    style=apa,
    backend=biber,
    isbn=false,
    url=false,
    doi=false,
    eprint=false,
    hyperref=true,
    backref=false,
    firstinits=false,
]{biblatex}
\DeclareBibliographyDriver{book}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/editor}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{maintitle+title}%
  \setunit{\addspace}\newblock
  \usebibmacro{book:editor+trans}%
  \newunit\newblock
  \printfield{series}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \usebibmacro{location+publisher}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
% \setunit*{\addspace}\newblock % This line replaced with the following one
  \newunit\newblock
  \usebibmacro{origyear}%
  \newunit\newblock
  \printfield{addendum}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{apa:pageref}%
  \usebibmacro{apa:finpunct}%
  \usebibmacro{finentry}}
\usepackage[utf8]{inputenc}
\usepackage{csquotes}
\usepackage{xpatch}

\usepackage[british]{babel}
\DeclareLanguageMapping{british}{british-apa}

\addbibresource{origdate.bib}

\begin{document}

\cite{test1}
\cite{test2}
\cite{test3}

\printbibliography
\end{document} 

output of code

  • Is not possible to change the driver directly at the source? – Francesco Oct 17 '13 at 1:44
  • I'm not sure what you mean. I'm assuming this is either a bug (in which case it will likely be fixed) or by design (not so likely). Because my solution is likely a temporary one, it's better to put it into the source document directly rather than, e.g. make a different version of apa.bbx. – Alan Munn Oct 17 '13 at 2:25
  • I'm not sure how citation styling works, but I supposed there was somewhere in the system a file I could modify to avoid having to add these lines in each preamble. – Francesco Oct 17 '13 at 3:07
  • 2
    There is such a file, but you should never modify it directly, and in case this is a true bug, it will be fixed anyway. Adding the code to your preamble reminds you of the temporariness of the fix. I've contacted Philip Kime about the issue. – Alan Munn Oct 17 '13 at 3:16
  • APA is a fairly inconsistent pain in such details but I've treated this as a bug and it will be corrected in the next version, thanks to Alan Munn. It should be fairly safe just this once to correct it as Alan says in your apa.bbx which you can find by running the command kpsewhich apa.bbx. – PLK Oct 17 '13 at 9:44

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.