# autoryear-ext with introcite=label: Remove extradate letter from bibliography entry but not from label

I am asked to produce a bibliography in authoryear style with only the first author in label. In case of an ambitious label, a letter is appended to the year. This can easily be produced with the following code (taken from Creating a bibliography with fixed indention and authoryear labels using biblatex and biber):

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[british]{babel}
\usepackage{csquotes}
\usepackage[style=ext-authoryear, backend=biber, maxcitenames=1, uniquename=false, uniquelist=false, introcite=label, dashed=false]{biblatex}
\usepackage{filecontents}

\begin{filecontents*}{\jobname.bib}
@book{Shepard2001a,
author = {Shepard, Frank and Fisher, John},
year = {2001},
title = {Livestock management},
}
@book{Shepard2001b,
author = {Shepard, Frank and Farmer, Boris},
year = {2001},
title = {On food supplies},
}
\end{filecontents*}

\setlength{\bibitemsep}{0.5\baselineskip plus 0.5\baselineskip}
\setlength{\introcitewidth}{6em}

\begin{document}
\cite{Shepard2001a, Shepard2001b}
\printbibliography
\end{document}


As you can see, I am using ext-authoryear from biblatex-ext with introcite=label.

The result looks like that:

This is good, except that in the bibliography entry the letter appended to the year should be removed. I have marked the 'offending' letter with a red line. That is: I need the letter in the label but not in the bibliography entry itself. An entry for the MWE should look like that:

Shepard et al. 2001a
Shepard, Frank and Boris Farmer (2001), ...


I could not figure out, where to change that.

replacing \printdateextra by \printdate in the data+extradate macro:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[british]{babel}
\usepackage{csquotes}
\usepackage[style=ext-authoryear, backend=biber, maxcitenames=1, uniquename=false, uniquelist=false, introcite=label, dashed=false]{biblatex}
\usepackage{filecontents}

\begin{filecontents*}{\jobname.bib}
@book{Shepard2001a,
author = {Shepard, Frank and Fisher, John},
year = {2001},
title = {Livestock management},
}
@book{Shepard2001b,
author = {Shepard, Frank and Farmer, Boris},
year = {2001},
title = {On food supplies},
}
\end{filecontents*}

\setlength{\bibitemsep}{0.5\baselineskip plus 0.5\baselineskip}
\setlength{\introcitewidth}{6em}

\makeatletter
\iffieldundef{labelyear}
{}
{\printtext[\blx@delimcontext labeldate]{%
\iflabeldateisdate
{\printfield{issue}%
\printdate}
{\printlabeldateextra}}}}%
\renewbibmacro*{bbx:ifmergeddate}{\iflabeldateisdate}%
\renewbibmacro*{issue+date}{%
\usebibmacro{bbx:ifmergeddate}
{}
{\printtext[issuedate]{%
\printfield{issue}%
\printdate}}}
\makeatother

\begin{document}
\cite{Shepard2001a, Shepard2001b}
\printbibliography
\end{document}


• +1) But note that this is the code from mergedate=maximum while the default (which the OP is using because they haven't defined anything else) would be the code from mergedate=compact. In case you choose the code for the appropriate mergedate one only needs to change the date+extradate bibmacro and not the other two. Last but not least we probably want to replace the remaining \printlabeldateextra with \printlabeldate as well. – moewe Aug 16 at 12:25

The code for date printing varies with the chosen mergedate setting. The preset is mergedate=true which is equivalent to mergedate=compact, where the modifications can be kept at bay as follows.

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[british]{babel}
\usepackage{csquotes}
\usepackage[style=ext-authoryear, backend=biber,
maxcitenames=1, uniquename=false, uniquelist=false,
introcite=label, dashed=false]{biblatex}

\setlength{\bibitemsep}{0.5\baselineskip plus 0.5\baselineskip}
\setlength{\introcitewidth}{6em}

\makeatletter
\iffieldundef{labelyear}
{}
{\printtext[\blx@delimcontext labeldate]{%
\iflabeldateisdate
{\printdate}
{\printlabeldate}}}}
\makeatother

\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@book{Shepard2001a,
author = {Shepard, Frank and Fisher, John},
year   = {2001},
title  = {Livestock management},
}
@book{Shepard2001b,
author = {Shepard, Frank and Farmer, Boris},
year   = {2001},
title  = {On food supplies},
}
\end{filecontents*}

\begin{document}
\cite{Shepard2001a, Shepard2001b}
\printbibliography
\end{document}


The other answer used the code for mergedate=maximum as a basis and redefined bbx:ifmergeddate and issue+date as well, even though that was not necessary. In the code here we also removed the extradate info in the case where \iflabeldateisdate is false.

Another option with different output would be to combine authoryear citations with an authortitle bibliography.

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[british]{babel}
\usepackage{csquotes}
\usepackage[backend=biber, bibstyle=ext-authortitle, citestyle=ext-authoryear,
sorting=nyt,
maxcitenames=1, uniquename=false, uniquelist=false,
introcite=label, dashed=false]{biblatex}

\setlength{\bibitemsep}{0.5\baselineskip plus 0.5\baselineskip}
\setlength{\introcitewidth}{6em}

\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@book{Shepard2001a,
author = {Shepard, Frank and Fisher, John},
year   = {2001},
title  = {Livestock management},
}
@book{Shepard2001b,
author = {Shepard, Frank and Farmer, Boris},
year   = {2001},
title  = {On food supplies},
}
\end{filecontents*}