[Tex/LaTex] Biblatex uniquename: spell out full first name

biblatex

For a paper I am writing, I will have to refer to many Taiwanese authors. As the list of Chinese last names is pretty limited, I quite often have different authors that share the same last name (but different first names) publishing articles/books in the same year.

I have tried several "uniquename" options with biblatex, but none achieved the desired result.

At first I tried:

uniquename=false

This resulted in the folling inline citation:

(Chu 1994a, p. 1) and (Chu 1994b, p. 4)

Different authors are assigned "Chu 1994a" and "Chu 1994b", etc. But I would prefer the a, b, c differentiation to be used only "within" the same author, as otherwise it might be misunderstood as me citing two works of the same author.

I then used:

uniquename=minfull

which results in:

(T.-t. Chu 1994, p. 1) and (T.-e. Chu 1994, p. 4).

This solves the "a, b, c" problem, but as most Taiwanese authors have a hyphen in their first name, biblatex's procedure to use the initials of the first name results in many "Y.-h.", "Y.-c." and "W.-w." in the text, which I find not pleasing to the eye.

What I would like to achieve is biblatex using normal author-year citations by last name as long as there is no ambiguity (Wu in my example). But if there is an ambiguity, I would like it to spell out the complete first name, not only initials. In the best of all worls, I would even prefer it to cite as "Lastname, Firstname Year", that is:

(Chu, Test-test 1994) and (Chu, Trial-error 1994)

Is there a way to do this?

Here is my MWE:

\begin{filecontents}{uniquename.bib}
@article{chu1994one,
author = {Chu, Test-test},
title = {Title1},
journaltitle = {Journal 1},
year = {1994},
volume = {22},
issue = {5},
pages = {1--2}
}

@article{chu1994two,
author = {Chu, Trial-error},
title = {Title2},
journaltitle = {Journal 2},
year = {1994},
volume = {22},
issue = {5},
pages = {3--4}
}

@article{wu1994one,
author = {Wu, Test-name},
title = {Title3},
journaltitle = {Journal 3},
year = {1994},
volume = {22},
issue = {5},
pages = {5--6}

}
\end{filecontents}



\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage[style=authoryear-icomp, uniquename=minfull, bibstyle=authoryear, autocite=inline, backend=biber]
 {biblatex}


\addbibresource{uniquename.bib}

\begin{document}
Some text with a citation \autocite[1]{chu1994one}, and some further text with another citation \autocite[4]{chu1994two}. Some more text with a third citation \autocite[5]{wu1994one}.

\printbibliography
\end{document}

Best Answer

Use

\DeclareNameFormat{labelname}{%
  \ifnumequal{\value{uniquename}}{0}
    {\usebibmacro{name:family}
       {\namepartfamily}
       {\namepartgiven}
       {\namepartprefix}
       {\namepartsuffix}}
    {\usebibmacro{name:family-given}
       {\namepartfamily}
       {\namepartgiven}
       {\namepartprefix}
       {\namepartsuffix}}%
  \usebibmacro{name:andothers}}

together with uniquename=full, allfull or minfull.

Normally, even with a full-like uniquename setting biblatex only gives the full name when initials would be ambiguous. With the above we get first names as soon as the last name alone is not enough.

We get the Last, First format because we used name:family-given; for First Last (the default) we'd use name:given-family.

Related Question