14

In Ethiopian naming conventions, a person has a given name followed by their father's given name and their grandfather's given name. The person will generally be addressed by their own given name, even in formal settings. Thus, a professor named Kebede Daniel Demeke would be known professionally as Professor Kebede, not Professor Demeke. If I were to cite a book by Dr. Kebede, it's my understanding that the citation should say "(Kebede 2012)" and the bibliography entry should read "Kebede Daniel Demeke. 2012. An Important Book..."

I'm writing a report that will include a mixture of Ethiopian and non-Ethiopian sources. Is there a way to structure the entries in my Bibtex file so that the Ethiopian names are handled as described above, while the non-Ethiopian names are handed in the usual way (e.g., "(Smith 2012)"; "Smith, John Q. 2012. Another Important Book...")?

In case it's relevant, I'm using Biber and XeLaTeX.

Thanks for your help.

10

Starting with biblatex 3.8/Biber 2.8 you can do the following.

Make the new name parts known to biblatex in a .dbx file (in the example below it is called ethiopian.dbx and created via filecontents, you don't need to do that, it just needs to be in a place where LaTeX can find it)

\DeclareDatamodelConstant[type=list]{nameparts}{prefix,family,suffix,given,patronymic,papponymic}

We add the two name parts patronymic for the father's name and papponymic for that of the grandfather.

Then we need to adjust sorting for Ethiopian names

\DeclareSortingNamekeyTemplate[ethiopian]{
  \keypart{
    \namepart{given}
  }
  \keypart{
    \namepart{patronymic}
  }
  \keypart{
    \namepart{papponymic}
  }
}

The rules for uniqueness can also be changed to include the patronymic and papponymic with the given name if needed to disambiguate.

\DeclareUniquenameTemplate[ethiopian]{
  \namepart[base=true]{given}
  \namepart[disambiguation=full]{patronymic}
  \namepart[disambiguation=full]{papponymic}
}

The names are printed with name: macros

\newbibmacro*{name:ethiopian}[3]{%
  \usebibmacro{name:delim}{#1#2#3}%
  \usebibmacro{name:hook}{#1#2#3}%
  \mkbibethgiven{#1}%
  \ifdefvoid{#2}{}{\bibnamedelimd\mkbibethpat{#2}\isdot}%
  \ifdefvoid{#3}{}{\bibnamedelimd\mkbibethpap{#3}\isdot}}

\let\mkbibethgiven\mkbibnamefamily
\let\mkbibethpat\mkbibnamegiven
\let\mkbibethpap\mkbibnamegiven

Using \ifsortingnamekeytemplatename and \ifuniquenametemplatename we can then branch the definitions of the name formats

\DeclareNameAlias{sortname}{family-given}

\DeclareNameFormat{given-family}{%
  \ifsortingnamekeytemplatename{ethiopian}
    {\usebibmacro{name:ethiopian}
       {\namepartgiven}
       {\namepartpatronymic}
       {\namepartpapponymic}}
    {\ifgiveninits
       {\usebibmacro{name:given-family}
         {\namepartfamily}
         {\namepartgiveni}
         {\namepartprefix}
         {\namepartsuffix}}
       {\usebibmacro{name:given-family}
         {\namepartfamily}
         {\namepartgiven}
         {\namepartprefix}
         {\namepartsuffix}}}%
  \usebibmacro{name:andothers}}

\DeclareNameFormat{family-given}{%
  \ifsortingnamekeytemplatename{ethiopian}
    {\usebibmacro{name:ethiopian}
       {\namepartgiven}
       {\namepartpatronymic}
       {\namepartpapponymic}}
    {\ifgiveninits
       {\usebibmacro{name:family-given}
         {\namepartfamily}
         {\namepartgiveni}
         {\namepartprefix}
         {\namepartsuffix}}
       {\usebibmacro{name:family-given}
         {\namepartfamily}
         {\namepartgiven}
         {\namepartprefix}
         {\namepartsuffix}}}%
  \usebibmacro{name:andothers}}

\DeclareNameFormat{labelname}{%
  \ifuniquenametemplatename{ethiopian}
    {\usebibmacro{labelname:ethiopian}}
    {\usebibmacro{labelname:western}}%
  \usebibmacro{name:andothers}}

\newbibmacro{labelname:ethiopian}{%
  \iffieldequalstr{uniquepart}{base}
    {\usebibmacro{name:ethiopian}
       {\namepartgiven}
       {\empty}
       {\empty}} 
    {\iffieldequalstr{uniquepart}{patronymic}
       {\usebibmacro{name:ethiopian}
          {\namepartgiven}
          {\namepartpatronymic}
          {\empty}}
       {\usebibmacro{name:ethiopian}
          {\namepartgiven}
          {\namepartpatronymic}
          {\namepartpapponymic}}}}

\newbibmacro{labelname:western}{%
  \ifcase\value{uniquename}%
    \usebibmacro{name:family}
      {\namepartfamily}
      {\namepartgiven}
      {\namepartprefix}
      {\namepartsuffix}%
  \or
    \ifuseprefix
      {\usebibmacro{name:given-family}
        {\namepartfamily}
        {\namepartgiveni}
        {\namepartprefix}
        {\namepartsuffixi}}
      {\usebibmacro{name:given-family}
        {\namepartfamily}
        {\namepartgiveni}
        {\namepartprefixi}
        {\namepartsuffixi}}%
  \or
    \usebibmacro{name:given-family}
      {\namepartfamily}
      {\namepartgiven}
      {\namepartprefix}
      {\namepartsuffix}%
  \fi}

In your .bib file you can give the name as follows

author  = {given=Kebede, patronymic=Daniel, papponymic=Demeke, nametemplates=ethiopian},

This is necessary because the traditional name rules of BibTeX can't parse the name correctly.

In total

\documentclass{article}
\usepackage{filecontents}

\begin{filecontents*}{ethiopian.dbx}
\DeclareDatamodelConstant[type=list]{nameparts}{prefix,family,suffix,given,patronymic,papponymic}
\end{filecontents*}

\begin{filecontents*}{\jobname.bib}
@BOOK{kebede,
  author  = {given=Kebede, patronymic=Daniel, papponymic=Demeke, nametemplates=ethiopian},
  title   = {One},
  date    = {1983}
}
@BOOK{two,
  author  = {given=Daniel, patronymic=Demeke, nametemplates=ethiopian},
  title   = {Two},
  date    = {1984}
}
@BOOK{three,
  author  = {given=Daniel, patronymic=Kebede, nametemplates=ethiopian},
  title   = {Three},
  date    = {1985}
}
\end{filecontents*}

\usepackage[style=authoryear,datamodel=ethiopian]{biblatex}

\addbibresource{biblatex-examples.bib}
\addbibresource{\jobname.bib}

\DeclareSortingNamekeyTemplate[ethiopian]{
  \keypart{
    \namepart{given}
  }
  \keypart{
    \namepart{patronymic}
  }
  \keypart{
    \namepart{papponymic}
  }
}

\DeclareUniquenameTemplate[ethiopian]{
  \namepart[base=true]{given}
  \namepart[disambiguation=full]{patronymic}
  \namepart[disambiguation=full]{papponymic}
}

\DeclareNameAlias{sortname}{family-given}

\DeclareNameFormat{given-family}{%
  \ifsortingnamekeytemplatename{ethiopian}
    {\usebibmacro{name:ethiopian}
       {\namepartgiven}
       {\namepartpatronymic}
       {\namepartpapponymic}}
    {\ifgiveninits
       {\usebibmacro{name:given-family}
         {\namepartfamily}
         {\namepartgiveni}
         {\namepartprefix}
         {\namepartsuffix}}
       {\usebibmacro{name:given-family}
         {\namepartfamily}
         {\namepartgiven}
         {\namepartprefix}
         {\namepartsuffix}}}%
  \usebibmacro{name:andothers}}

\DeclareNameFormat{family-given}{%
  \ifsortingnamekeytemplatename{ethiopian}
    {\usebibmacro{name:ethiopian}
       {\namepartgiven}
       {\namepartpatronymic}
       {\namepartpapponymic}}
    {\ifgiveninits
       {\usebibmacro{name:family-given}
         {\namepartfamily}
         {\namepartgiveni}
         {\namepartprefix}
         {\namepartsuffix}}
       {\usebibmacro{name:family-given}
         {\namepartfamily}
         {\namepartgiven}
         {\namepartprefix}
         {\namepartsuffix}}}%
  \usebibmacro{name:andothers}}

\DeclareNameFormat{labelname}{%
  \ifuniquenametemplatename{ethiopian}
    {\usebibmacro{labelname:ethiopian}}
    {\usebibmacro{labelname:western}}%
  \usebibmacro{name:andothers}}

\newbibmacro{labelname:ethiopian}{%
  \iffieldequalstr{uniquepart}{base}
    {\usebibmacro{name:ethiopian}
       {\namepartgiven}
       {\empty}
       {\empty}} 
    {\iffieldequalstr{uniquepart}{patronymic}
       {\usebibmacro{name:ethiopian}
          {\namepartgiven}
          {\namepartpatronymic}
          {\empty}}
       {\usebibmacro{name:ethiopian}
          {\namepartgiven}
          {\namepartpatronymic}
          {\namepartpapponymic}}}}

\newbibmacro{labelname:western}{%
  \ifcase\value{uniquename}%
    \usebibmacro{name:family}
      {\namepartfamily}
      {\namepartgiven}
      {\namepartprefix}
      {\namepartsuffix}%
  \or
    \ifuseprefix
      {\usebibmacro{name:given-family}
        {\namepartfamily}
        {\namepartgiveni}
        {\namepartprefix}
        {\namepartsuffixi}}
      {\usebibmacro{name:given-family}
        {\namepartfamily}
        {\namepartgiveni}
        {\namepartprefixi}
        {\namepartsuffixi}}%
  \or
    \usebibmacro{name:given-family}
      {\namepartfamily}
      {\namepartgiven}
      {\namepartprefix}
      {\namepartsuffix}%
  \fi}

\newbibmacro*{name:ethiopian}[3]{%
  \usebibmacro{name:delim}{#1#2#3}%
  \usebibmacro{name:hook}{#1#2#3}%
  \mkbibethgiven{#1}%
  \ifdefvoid{#2}{}{\bibnamedelimd\mkbibethpat{#2}\isdot}%
  \ifdefvoid{#3}{}{\bibnamedelimd\mkbibethpap{#3}\isdot}}

\let\mkbibethgiven\mkbibnamefamily
\let\mkbibethpat\mkbibnamegiven
\let\mkbibethpap\mkbibnamegiven

\begin{document}
\textcite{sigfridsson,knuth:ct:a,knuth:ct:b,knuth:ct:c,cicero,geer}

\textcite{kebede}

\textcite{two}

\textcite{three}

\printbibliography
\end{document}

which yields

enter image description here

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.