LaTeX
显然,用两个不同的输出来处理同一种情况。当 bib 条目origdate
符合 APA 样式时,字符串(Original work published xxx)
应附加在 bib 条目的末尾,前面加上句点 ( .
),将其与前一个字段(即出版商)分开。不过,LaTeX
并不总是在出版商之后和 之前附加句点(Original...
。以下 MWE 的输出仅产生一个正确结果,即第二个,而第一个和最后一个条目缺少句点。
\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}
答案1
这里的差异是由于针对book
条目类型和incollection
条目类型的书目驱动程序略有不同造成的。在针对类型的驱动程序中book
,有以下代码片段:
...
\usebibmacro{location+publisher}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\setunit*{\addspace}\newblock
\usebibmacro{origyear}%
...
而在incollection
驱动程序中只有:
...
\usebibmacro{location+publisher}%
\newunit\newblock
\usebibmacro{origyear}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
...
这有两点不同:doi
在 中打印在原始年份之后,incollection
而在 中打印在原始年份之前book
。此外,在book
驱动程序中,添加了显式空格,而不是使用\newunit
(默认为句点和空格)。
我不清楚这是否是设计使然(毕竟,APA 的工作方式很神秘)。您可以暂时通过重新定义条目的驱动程序book
来删除有问题的空间,从而修复此问题。
Philip Kime(的作者biblatex-apa
)在该网站上很活跃,因此他可能有一些进一步的评论。
\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}