冰岛书目系统要求按以下方式对作者进行排序:姓氏逗号名字(如果不是冰岛人)并按名字没有逗号父名(如果是冰岛人)。
我使用 biblatex-chicago 和 polyglossia。虽然默认设置按姓氏排序,但我找不到任何解决方案来按名字对冰岛作者进行排序,也无法跳过中间的逗号。
答案1
您可以将冰岛人的名字视为“公司作者”,方法是将他们的名字括在花括号中。这样,"{Arnar Vigfusson}"
和"{Sigridur Benediktsdottir}"
(当然{{Arnar Vigfusson}}
和{{Sigridur Benediktsdottir}}
也可以)将分别归类为“A”和“S”,而不是“V”和“B”。此外,名字和父名之间不会插入逗号。
答案2
使用 biblatex 3.3 和 biber 2.4(目前位于 Sourceforge 上的开发文件夹中),您可以自定义用于对名称进行排序的排序键,并且可以在各种范围内执行此操作。解决您的问题的一种方法是:
\begin{filecontents}{\jobname.bib}
@BOOK{test1,
OPTIONS = {sortnamekeyscheme=givenfirst},
AUTHOR = {Arnar Vigfusson},
TITLE = {One},
DATE = {1983}
}
@BOOK{test2,
OPTIONS = {sortnamekeyscheme=givenfirst},
AUTHOR = {Sigridur Benediktsdottir},
TITLE = {Two},
DATE = {1983}
}
@BOOK{test3,
AUTHOR = {Brian Yellow},
TITLE = {Three},
DATE = {1983}
}
\end{filecontents}
\documentclass{article}
\usepackage{fontspec}
\usepackage[style=authoryear]{biblatex}
\addbibresource{\jobname.bib}
\DeclareSortingNamekeyScheme[givenfirst]{
\keypart{
\namepart{given}
}
\keypart{
\namepart{family}
}
}
\begin{document}
\textcite{test1,test2,test3}
\printbibliography
\end{document}
在这里,您可以看到新命令\DeclareSortingNameScheme
用于定义构造名称排序键的新命名方案。这可以在多个范围内引用 - 全局(默认)、作为参考上下文的一部分、作为每个条目的选项(如本例所示),或者,使用 BibLaTeXML 数据源,您甚至可以在每个名称列表或每个名称范围内执行此操作,以便您可以在同一个条目中混合冰岛语和非冰岛语名称:
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bltxml}
<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="test7.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<!-- Auto-generated by Biber::Output::biblatexml -->
<bltx:entries xmlns:bltx="http://biblatex-biber.sourceforge.net/biblatexml">
<bltx:entry id="test1" entrytype="book">
<bltx:names type="author">
<bltx:name sortnamekeyscheme="givenfirst">
<bltx:namepart type="family" initial="V">Vigfusson</bltx:namepart>
<bltx:namepart type="given" initial="A">Arnar</bltx:namepart>
</bltx:name>
</bltx:names>
<bltx:title>One</bltx:title>
<bltx:date>1983</bltx:date>
</bltx:entry>
<bltx:entry id="test2" entrytype="book">
<bltx:names type="author" sortnamekeyscheme="givenfirst">
<bltx:name>
<bltx:namepart type="family" initial="B">Benediktsdottir</bltx:namepart>
<bltx:namepart type="given" initial="S">Sigridur</bltx:namepart>
</bltx:name>
</bltx:names>
<bltx:title>Two</bltx:title>
<bltx:date>1983</bltx:date>
</bltx:entry>
<bltx:entry id="test3" entrytype="book">
<bltx:names type="author">
<bltx:name>
<bltx:namepart type="family" initial="Y">Yellow</bltx:namepart>
<bltx:namepart type="given" initial="B">Brian</bltx:namepart>
</bltx:name>
</bltx:names>
<bltx:title>Three</bltx:title>
<bltx:date>1983</bltx:date>
</bltx:entry>
</bltx:entries>
\end{filecontents*}
\usepackage{fontspec}
\usepackage[style=authoryear]{biblatex}
\addbibresource[datatype=biblatexml]{\jobname.bltxml}
\DeclareSortingNamekeyScheme[givenfirst]{
\keypart{
\namepart{given}
}
\keypart{
\namepart{family}
}
}
\DeclareNameFormat{author}{%
\nameparts{#1}%
\ifsortnamekeyscheme{givenfirst}
{\ifgiveninits
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffix}}
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}}}
{\ifgiveninits
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffix}}
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}}}%
\usebibmacro{name:andothers}}
\begin{document}
\textcite{test1,test2,test3}
\printbibliography
\end{document}
有一个新的测试\ifsortnamekeyscheme
,您可以使用它来检测特定名称使用了哪种方案。您可以在名称键方案中插入文字(如空格、逗号),也可以使用复合名称部分等。我正在研究为诸如父名等内容实施更通用的名称处理。
biblatex 3.3/biber 2.4 中的名称部分系统已发生重大变化,现在可以使用 biblatexml 等现代数据源定义和使用任意名称部分,如“patronymic”等。请参阅 DEV 分支 biblatex PDF 文档以获取完整示例。