我正在使用 来格式化参考书目biblatex-mla
。MLA 样式(至少到我正在使用的版本为止,并且仍然是 的当前稳定配置)要求在作品的倒数第二位和最后一位作者之间biblatex-mla
添加字符串,但省略了逗号:, and
biblatex-mla
请注意“and”前面缺少逗号。以下是一个相当笼统的解决方案:
\renewcommand{\finalnamedelim}{\addcomma\space\bibstring{and}\space}
这不仅会在这里添加逗号,还会在条目的编辑器部分添加逗号,如下所示,而它不应该出现在这里:
我怎样才能仅修改初始作者/编辑者部分的分隔符,同时保持后面的“这是此多作者卷的编辑者”部分的分隔符不变?
我正在使用 biber 作为后端。
答案1
我认为你只需要重新定义\revsdnamedelim
(不是\finalnamedelim
):
\renewcommand*{\revsdnamedelim}{\addcomma}
以下是具有默认设置的 MWE mla-new
(第 8 版):
\documentclass{article}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=mla-new,backend=biber]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{dudley+webster:1965,
author = {Dudley, Donald R. and Webster, Graham},
title = {The Roman Conquest of Britain AD 43--57},
location = {Chester Springs, PA},
publisher = {Dufour},
date = {1965}
}
@inbook{swan:2009,
author = {Swan, Mary},
title = {Identity and Ideology in {\AE}lfric's Prefaces},
booktitle = {A Companion to {\AE}lfric},
editor = {Magennis, Hugh and Swan, Mary},
series = {Brill's Companions to the Christian Tradition},
number = {18},
location = {Leiden and Boston},
publisher = {Brill},
date = {2009},
pages = {247-269}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\pagestyle{empty}
\renewcommand*{\revsdnamedelim}{\addcomma}
\begin{document}
\autocite{dudley+webster:1965}
\autocite{swan:2009}
\printbibliography
\end{document}
答案2
我认为他们做出的区分很奇怪。但我无法决定。“编辑”部分的问题在于 biblatex 有一个\currentname
表示“编辑”的编辑器条目。唉,这既用于“编辑”字段,也用于“编辑者”字段。幸运的是,“编辑者”作为第一个可选参数(格式)传递给\printnames
,但这不是公开可用的。因此,您必须重新定义\printnames
以提供该信息,然后在 中使用它\finalnamedelim
。
这是一些代码。希望这对你的情况有用。
\usepackage{ifthen}
\usepackage{xparse}
\NewDocumentCommand{\newprintnames}{oom}{%
\def\currentformat{#1}%
\IfNoValueTF{#2}{\originalprintnames[#1]{#3}}%
{\originalprintnames[#1][#2]{#3}}}
\AtBeginBibliography{\let\originalprintnames\printnames\let\printnames\newprintnames}
\renewcommand{\finalnamedelim}{%
\ifthenelse{\equal{\currentformat}{byeditor}}%
{}% Nothing if "edited by"
{\addcomma}% comma otherwise
\space\bibstring{and}\space
}