9

The icelandic bibliography system requires sorting authors by surname comma first name (if not icelanders) and by first name no comma patronymic (if icelanders).

I'm using biblatex-chicago and polyglossia. While sorting by surname is set by default, I can't find any solution to sort the icelandic authors by their first name nor to skip the comma in between.

  • 1
    Have you considered treating the Icelanders as "corporate authors", by encasing their names in pairs of curly braces? That way, "{Arnar Vigfusson}" and "{Sigridur Benediktsdottir}" would get sorted under "A" and "S", respectively. – Mico Jan 15 '16 at 5:05
  • I just tried your suggestion, and it worked! Thanks! – niru1 Jan 15 '16 at 5:18
  • The upcoming version of biblatex will be able to deal with Icelandic customs a bit better, see for example this git commit. I'm not sure though, if this feature can be enabled on a per-entry basis. – moewe Jan 15 '16 at 8:04
  • 2
    I'm looking into this for biblatex/biber as part of general name handling enhancements. I'm assuming it would need to be set per-entry at least. To really do this properly, the bibtex data format just isn't suitable as you need as way of coding that a namepart is a patronymic etc. That's the purpose of the experimental biblatexml format. – PLK Jan 15 '16 at 8:24
  • 1
    @PLK Yes but ... Is this really a _good_format to output: as a reader it sounds like a nightmare! – Joseph Wright Jan 17 '16 at 15:37
7

You could treat the names of Icelanders as "corporate authors", by encasing their names in pairs of curly braces. That way "{Arnar Vigfusson}" and "{Sigridur Benediktsdottir}" -- {{Arnar Vigfusson}} and {{Sigridur Benediktsdottir}}would work too, of course -- will get sorted under "A" and "S", respectively, rather than under "V" and "B". Moreover, no comma will be inserted between the given name and the patronymic.

  • 1
    Although this works, it seems like a bit of a hack, since the same .bib file can't be used for more standard styles. So a long term solution would require changing the order based on an extra .bib file field rather than changing the names in the .bib file. – Alan Munn Jan 15 '16 at 6:08
5

Using biblatex 3.3 and biber 2.4 (currently in development folders on Sourceforge), you can customise the sorting keys used to sort names and you can do this at various scopes. One way of tackling your problem is:

\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}

enter image description here

Here you can see that the new command \DeclareSortingNameScheme is used to define a new named scheme for constructing name sorting keys. This can be referred to at several scopes - globally (default), as part of a reference context, as a per-entry option (as in this example) or, with BibLaTeXML data sources, you can even do this at per name-list or per-name scope so that you can mix Icelandic and non-Icelandic names in the same entry:

\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}

enter image description here

There is a new test \ifsortnamekeyscheme which you can use to detect which scheme was used for a particular name. You can insert literals (like spaces, commas) into the name key scheme and also have compound name parts etc. I am looking into implementing more generic name handling for things like patronymics etc.

The name parts system in biblatex 3.3/biber 2.4 has been significantly changed and it is now possible, using a modern datasource like biblatexml, to define and use arbitrary name parts like "patronymic" etc. See the DEV branch biblatex PDF documentation for a complete example.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.