Biblatex/Biber 正在从出版商字段中删除“公司”一词

Biblatex/Biber 正在从出版商字段中删除“公司”一词

我使用 biblatex 进行书目管理,以 Biber 作为后端style=mla-new。我的 *.bib 中有以下书目条目:

@inbook{theodyssey,
  title = "The Odyssey",
  author = "Homer",
  translator = "Stanley Lombardo",
  booktitle = "The Norton Anthology of Western Literature",
  edition = "9",
  pages = "291-581",
  publisher = {W. W. Norton \& Company},                                                                                                        
  year = "2014"
}

几乎所有内容都打印正确。但是,书目条目如下所示:

Homer, "The Odyssey", The Norton Anthology of Western Literature, translated by
  Stanley Lombard, 9th ed., W. W. Norton &, 2014, pp. 291-581

请注意 WW Norton & Company 中的“公司”一词被删除了。我不知道该如何解决这个问题,甚至不知道为什么会发生这种情况。

答案1

该风格mla-new包括以下步骤StyleSourcemap

\step[fieldsource=publisher, match=\regexp{Company|Co\.|Corporation|Corp\.|Incorporated|Inc\.|Limited|Ltd\.}, replace={}]

这会从字段中删除所有这些术语publisher。由于这是通过 sourcemap 完成的,因此很难覆盖它,因为它会影响数据本身。

但这一定意味着,这是 MLA 风格第 8 版的要求的一部分,由 实施mla-new

该样式mla不包含这样的源映射步骤,如果这对您来说是一种替代方案,并且您不想遵守该样式的最新版本的这个特性,则可以使用它。

但是,biblatex-mla文档中提到了以下内容:

本次测试更新是为了测试与 2016 年 4 月出版的 MLA 手册第 8 版的兼容性。当前版本同时支持旧版(在style=mla序言中使用)和新版(使用style=mla-new);即将推出的 biblatex-mla 版本将不再支持第 7 版,而支持第 8 版。

另一种方法mla-new是用宏替换单词来欺骗源图,如下所示:

\documentclass{article}

\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=mla-new]{biblatex}

\usepackage{filecontents}

\newcommand*{\Co}{Company}

% filecontents is used here for convenience, in your actual document, the entry would be in your regular .bib file
\begin{filecontents}{\jobname.bib}
@inbook{theodyssey,
  title = "The Odyssey",
  author = "Homer",
  translator = "Stanley Lombardo",
  booktitle = "The Norton Anthology of Western Literature",
  edition = "9",
  pages = "291-581",
  publisher = {W. W. Norton \& \Co},
  year = "2014"
}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}

\nocite{*}

\printbibliography

\end{document}

在此处输入图片描述

更新:我找到了一种覆盖源映射步骤的方法,使用应用不同类型的源映射的顺序。 (user)\DeclareSourcemap首先运行,因此我们可以使用它来将原始数据从 复制publisher到字段listf\DeclareStyleSourcemap其次是它们。 幸运的是,它们可以多次使用,并按定义顺序应用。 由于原始的是用 style 定义的(即,使用对 的调用biblatex),我们可以稍后定义第二个,将数据从 复制listfpublisher

\documentclass{article}

\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=mla-new]{biblatex}

\usepackage{filecontents}

\DeclareSourcemap{
    \maps[datatype=bibtex]{
        \map{
            \step[fieldsource=publisher, fieldset=listf, origfieldval]
        }
    }
}

\DeclareStyleSourcemap{
    \maps[datatype=bibtex]{
        \map[overwrite]{
            \step[fieldsource=listf, fieldset=publisher, origfieldval]
        }
    }
}

% filecontents is used here for convenience, in your actual document, the entry would be in your regular .bib file
\begin{filecontents}{\jobname.bib}
@inbook{theodyssey,
  title = "The Odyssey",
  author = "Homer",
  translator = "Stanley Lombardo",
  booktitle = "The Norton Anthology of Western Literature",
  edition = "9",
  pages = "291-581",
  publisher = {W. W. Norton \& Company},
  year = "2014"
}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}

\nocite{*}

\printbibliography

\end{document}

相关内容