1

I implemented Thai name templates based on Moewe's Ethiopian ones (which don't seem to suffer from the same problem).

\documentclass[american]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}

\usepackage[style=authoryear]{biblatex} % GOOD
% \usepackage[style=verbose]{biblatex} % BAD
% \usepackage[notes,backend=biber]{biblatex-chicago} % GOOD
\usepackage[style=american]{csquotes}

\DeclareSortingNamekeyTemplate[thai]{
  \keypart{
    \namepart{given}
  }
  \keypart{
    \namepart{family}
  }
}

\DeclareUniquenameTemplate[thai]{% Distinguish names (Man. 4.11.4)
  \namepart[base=true]{given}
  \namepart[disambiguation=full]{family}
}

\DeclareNamehashTemplate[thai]{
  \namepart[hashscope=full]{given}
  \namepart[hashscope=full]{family}
}

\DeclareNameAlias{sortname}{family-given} % Make sortname family-given (w/ Thai special case built-in)

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

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

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

\newbibmacro{labelname:thai}{%
  \iffieldequalstr{uniquepart}{base}
    {\usebibmacro{name:thai}
       {\namepartgiven}
       {\empty}
       {\empty}}
    {\usebibmacro{name:thai}
       {\namepartgiven}
       {\namepartprefix}
       {\namepartfamily}}}

\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:thai}[3]{%
  \usebibmacro{name:delim}{#1#2#3}%
  \usebibmacro{name:hook}{#1#2#3}%
  \mkbibthgiven{#1}%
  \ifdefvoid{#2}{}{\bibnamedelimd\mkbibthfamily{#2}\isdot}%
  \ifdefvoid{#3}{}{\bibnamedelimd\mkbibthfamily{#3}\isdot}}

\let\mkbibthgiven\mkbibnamefamily
\let\mkbibthfamily\mkbibnamegiven

\begin{filecontents*}{\jobname.bib}
@book{Bunbongkarn:The_Military_in,
    author   = {given=Suchit, family=Bunbongkarn, nametemplates=thai},
    title    = {The Military in {Thai} Politics, 1981--86},
    publisher = {Institute of Southeast Asian Studies},
    location = {Singapore},
    date     = {1987},
}

@book{Morell:Political_Conflict_in,
    author   = {David Morell and given=Chai-anan, family=Samudavanija, nametemplates=thai},
    title    = {Political Conflict in {Thailand}},
    subtitle = {Reform, Reaction, Revolution},
    publisher = {Oelgeschlager, Gunn \& Hain},
    location = {Cambridge, Mass.},
    date     = {1981},
}

\end{filecontents*}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}

\begin{itemize}
    \item \citeauthor{knuth:ct:a} says \dots
    \item \citeauthor{Bunbongkarn:The_Military_in} says \dots
    \item \citeauthor{Morell:Political_Conflict_in} say \dots
\end{itemize}

\printbibliography
\end{document}

\citeauthor works properly with the authoryear style (and likewise the notes style of biblatex-chicago).

enter image description here

However, switching to the verbose style results in unwanted full Thai names.

enter image description here

How do I fix my implementation so as to make \citeauthor work properly with the verbose style as well?

Update The abovementioned Ethiopian implementation on which I modeled mine does in fact suffer from the same problem. Here's the result after switching to verbose.

enter image description here

1 Answer 1

1

All I need to do is set the uniquename package option to true. Anything but the default false would probably work as well, although I haven't thoroughly checked.

The authoryear style and biblatex-chicago work out-of-the-box because they set the option to full (for which true is an alias) and minfull respectively.

\documentclass[american]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}

% \usepackage[style=authoryear]{biblatex} % GOOD
\usepackage[style=verbose, uniquename=true]{biblatex} % also GOOD
% \usepackage[notes,backend=biber]{biblatex-chicago} % GOOD
\usepackage[style=american]{csquotes}

\DeclareSortingNamekeyTemplate[thai]{
  \keypart{
    \namepart{given}
  }
  \keypart{
    \namepart{family}
  }
}

\DeclareUniquenameTemplate[thai]{% Distinguish names (Man. 4.11.4)
  \namepart[base=true]{given}
  \namepart[disambiguation=full]{family}
}

\DeclareNamehashTemplate[thai]{
  \namepart[hashscope=full]{given}
  \namepart[hashscope=full]{family}
}

\DeclareNameAlias{sortname}{family-given} % Make sortname family-given (w/ Thai special case built-in)

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

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

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

\newbibmacro{labelname:thai}{%
  \iffieldequalstr{uniquepart}{base} % Doesn't work w/o uniquename package option
    {\usebibmacro{name:thai}
       {\namepartgiven}
       {\empty}
       {\empty}}
    {\usebibmacro{name:thai}
       {\namepartgiven}
       {\namepartprefix}
       {\namepartfamily}}}

\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:thai}[3]{%
  \usebibmacro{name:delim}{#1#2#3}%
  \usebibmacro{name:hook}{#1#2#3}%
  \mkbibthgiven{#1}%
  \ifdefvoid{#2}{}{\bibnamedelimd\mkbibthfamily{#2}\isdot}%
  \ifdefvoid{#3}{}{\bibnamedelimd\mkbibthfamily{#3}\isdot}}

\DeclareCiteCommand{\citeauthornew}
  {\boolfalse{citetracker}%
   \boolfalse{pagetracker}%
   \usebibmacro{prenote}}
  {\ifciteindex
     {\indexnames{labelname}}
     {}%
     \printnames[family-given]{labelname}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\let\mkbibthgiven\mkbibnamefamily
\let\mkbibthfamily\mkbibnamegiven

\begin{filecontents*}{\jobname.bib}
@book{Bunbongkarn:The_Military_in,
    author   = {given=Suchit, family=Bunbongkarn, nametemplates=thai},
    title    = {The Military in {Thai} Politics, 1981--86},
    publisher = {Institute of Southeast Asian Studies},
    location = {Singapore},
    date     = {1987},
}

@book{Morell:Political_Conflict_in,
    author   = {David Morell and given=Chai-anan, family=Samudavanija, nametemplates=thai},
    title    = {Political Conflict in {Thailand}},
    subtitle = {Reform, Reaction, Revolution},
    publisher = {Oelgeschlager, Gunn \& Hain},
    location = {Cambridge, Mass.},
    date     = {1981},
}

\end{filecontents*}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}

\begin{itemize}
    \item \citeauthor{knuth:ct:a} says \dots
    \item \citeauthor{Bunbongkarn:The_Military_in} says \dots
    \item \citeauthor{Morell:Political_Conflict_in} say \dots
\end{itemize}

\printbibliography
\end{document}

enter image description here

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.