how to truncate labelname using authoryear-style?

A possible solution is to define a new specification for printing names.

First of all we create a counter to store the value of how many names (at most should be printed in the label).

\newcounter{maxlabelnames}
\setcounter{maxlabelnames}{2}

Then we define a novel format

\DeclareNameFormat{biblabel}{%
  \ifthenelse{\value{listtotal}>\themaxlabelnames}
    {\ifthenelse{\value{listcount}=1}
      {#1 \bibstring{andothers}}
      {}%
    }
    {
      \ifthenelse{\value{listcount}=1}
        {#1}
        {\ifthenelse{\value{listcount}<\value{listtotal}}
          {\multinamedelim #1}
          {\addspace\bibstring{and}\addspace#1}%
        }%
    }%
}

Finally the new format is used in the begentry hook

\renewbibmacro{begentry}{%
\textbf{\printnames[biblabel]{labelname}~%
            \printfield{labelyear}%
            \printfield{extrayear}}\\}

With maxlabelnames=2 the output is

enter image description here

Tags:

Biblatex