号码布末尾的句号与原始日期不一致

号码布末尾的句号与原始日期不一致

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} 

代码输出

相关内容