删除分隔符并更改 biblatex 的“incollection”中页面的位置

删除分隔符并更改 biblatex 的“incollection”中页面的位置

按照出版商的风格指南,我需要对参考书目条目biblatex'的打印方式进行两个方面进行调整。incollection

  1. 我需要删除.出现在集合标题和编辑者列表之间的句点,该句点应该以ed.小写的单词开头e(我个人认为这很奇怪,但我又有何资格不同意呢)。

  2. 页码序列应直接位于出版商地址之前,并且页码序列前面应有一个逗号。

换句话说,该条目应如下所示:

弗莱明,爱德华 (2004)。“对比与感知独特性”。基于语音的音系学布鲁斯·海斯 (Bruce Hayes)、罗伯特·基尔希纳 (Robert Kirchner) 和唐卡·斯特里亚德 (Donca Steriade) 编,第 232-276 页。剑桥:剑桥大学出版社。

\documentclass{article}
\usepackage[style=authoryear]{biblatex}
\renewbibmacro{in:}{}
\DeclareFieldFormat[article,incollection]{pages}{#1}
\begin{filecontents}{\jobname.bib}
@INCOLLECTION{flemming2004,
    AUTHOR = "Edward Flemming",
    BOOKTITLE = "Phonetically based phonology",
    EDITOR = "Bruce Hayes and Robert Kirchner and Donca Steriade",
    TITLE = "Contrast and perceptual distinctiveness",
    YEAR = "2004",
    LOCATION = "Cambridge",
    PAGES = "232--276",
    PUBLISHER = "Cambridge University Press"}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{flemming2004}
\printbibliography
\end{document}

在此处输入图片描述

答案1

借助奇妙的xpatch包及其\xpatchbibdriver命令。

我们用来xpatch抑制 s 之前的标点符号editor。然后我们将 移动page到宏的右后方series+number(这为您的示例提供了合适的位置,我不确定其他示例是否如此,因此如果您对该位置不满意,请在下面发表评论。):首先,我们从旧位置删除宏,然后将其插入到新位置。

\xpatchbibdriver{incollection}
  {\usebibmacro{byeditor+others}}
  {\nopunct\usebibmacro{byeditor+others}}
  {}{\typeout{failed to patch bibmacro incollection to remove punctuation before byeditors}}

\xpatchbibdriver{incollection}
  {\newunit\newblock
   \usebibmacro{chapter+pages}}
  {}
  {}{\typeout{failed to patch bibmacro incollection to remove page macro}}

\xpatchbibdriver{incollection}
  {\usebibmacro{series+number}}
  {\usebibmacro{series+number}
   \newunit\newblock
   \usebibmacro{chapter+pages}}
  {}{\typeout{failed to patch bibmacro incollection to re-add page macro}}

数学家协会

\documentclass{article}
\usepackage[style=authoryear]{biblatex}
\usepackage{xpatch}
\renewbibmacro{in:}{}
\DeclareFieldFormat[article,incollection]{pages}{#1}
\begin{filecontents}{\jobname.bib}
@INCOLLECTION{flemming2004,
    AUTHOR = "Edward Flemming",
    BOOKTITLE = "Phonetically based phonology",
    EDITOR = "Bruce Hayes and Robert Kirchner and Donca Steriade",
    TITLE = "Contrast and perceptual distinctiveness",
    YEAR = "2004",
    LOCATION = "Cambridge",
    PAGES = "232--276",
    PUBLISHER = "Cambridge University Press"}
\end{filecontents}
\addbibresource{\jobname.bib}

\xpatchbibdriver{incollection}
  {\usebibmacro{byeditor+others}}
  {\nopunct\usebibmacro{byeditor+others}}
  {}{\typeout{failed to patch bibmacro incollection to remove punctuation before byeditors}}

\xpatchbibdriver{incollection}
  {\newunit\newblock
   \usebibmacro{chapter+pages}}
  {}
  {}{\typeout{failed to patch bibmacro incollection to remove page macro}}

\xpatchbibdriver{incollection}
  {\usebibmacro{series+number}}
  {\usebibmacro{series+number}
   \newunit\newblock
   \usebibmacro{chapter+pages}}
  {}{\typeout{failed to patch bibmacro incollection to re-add page macro}}

\begin{document}
\nocite{flemming2004}
\printbibliography
\end{document}

产量

在此处输入图片描述

相关内容