Biblatex: clear the extrayear field for some references only

It's my first time asking a question, so I hope I'm making myself clear...

I want to cite the same reference twice, once in the author-year style, and once using a shorthand, and to print two different bibliographies for them. I want to do this because the book is a collection of ancient Greek inscriptions, so in some cases I just want to give the number of the inscription, and in other cases I'm interested in what the editor of the inscriptions has to say about them.

In my example below, in my normal bibliography, there is a 'Bresson 1991b', although there is no 'Bresson 1991a' since the other reference with the same name and year, which is actually the same, has a shorthand and is printed in the list of shorthands. So I want to use 'Bresson 1991', without a label, but still be able to distinguish 'Guy 2017a' and 'Guy 2017b'.

I have two entries for the same reference in my bibliography file, but they look quite different, because I add a shorthand, a keyword, a pagination and I change the author to editor. So I don't think there is a way to tell biblatex that it's the same reference, but maybe it's possible to give an extrayear label only when there is a reference with same author and date within the same bibliography.

I have only managed to clear the extrayear field in the list of shorthands, using \AtEveryBiblistitem{shorthand}{\clearfield{extrayear}}. Here is my MWE:

\documentclass[12pt,a4paper]{report}
\usepackage[citestyle=authoryear-icomp, bibstyle=authoryear-icomp, backend=biber]{biblatex}
\AtEveryBiblistitem{shorthand}{\clearfield{extrayear}}

\begin{document}
About the inscription \cite[44]{i.peree.rhodes}, Alain \textcite[68-69]{bresson1991} suggests that blablabla. \textcites{otherguy2017a}{otherguy2017b} agrees that blablabla.

\printbibliography[notkeyword=epigraphy]
\printbiblist[keyword=epigraphy]{shorthand}
\end{document}


And the bibliography:

@book{otherguy2017b,
Author = {Guy, Other},
Booktitle = {Another Book},
Title = {Another Book},
Year = {2017}}

@book{otherguy2017a,
Author = {Guy, Other},
Title = {Some title},
Year = {2017}}

@book{bresson1991,
Author = {Bresson, Alain},
Booktitle = {Recueil des inscriptions},
Title = {Recueil des inscriptions},
Year = {1991}}

@book{i.peree.rhodes,
Booktitle = {Recueil des inscriptions},
Editor = {Bresson, Alain},
Keywords = {epigraphy},
Pagination = {none},
Shorthand = {\emph{I.Per.Rhod.}},
Title = {Recueil des inscriptions},
Year = {1991}}


Also, I don't understand how biblatex attributes the labels. If I cite \cite{bresson1991} before \cite{i.peree.rhodes}, the first one appears as Bresson 1991a, but if I cite it second, it becomes "Bresson 1991b". But when I use \textcites{otherguy2017a}{otherguy2017b}, the first reference that is cite is label Guy 2017b, and the second one Guy 2017a. Is there a way to decide which one is a and which one is b?

• I don't think it is a great idea to write Alain \textcite[68-69]{bresson1991} to obtain 'Alain Bresson (1991)'. If you always want first and last name in \textcite citations, refer to tex.stackexchange.com/q/358852/35864. – moewe Mar 19 '17 at 10:49

If you don't want to use the 'normal labelling scheme' for an entry, you can use the option skiplab. With authoryear-type styles, the entry will then get no extrayear and the entry will be ignored for all disambiguation purposes. You want this option for i.peree.rhodes

@book{i.peree.rhodes,
editor     = {Bresson, Alain},
keywords   = {epigraphy},
pagination = {none},
shorthand  = {\emph{I.Per.Rhod.}},
title      = {Recueil des inscriptions},
year       = {1991},
options    = {skiplab=true},
}


(There is no use in having a booktitle that coincides with title for a @book entry, so I have removed that.) The relevant line is the last line options = {skiplab=true},.

With this set-up your entry bresson1991 in the MWE will be cited as 'Bresson 1991' and i.peree.rhodes as 'I.Per.Rhod.'.

You will not need the \AtEveryBiblistitem{shorthand}{\clearfield{extrayear}} any more.

To the second part of your question:

If you use an authoryear-family style, biblatex uses a sorting scheme called nyt. In short, this sorts the entries via 'Name -> Year -> Title'. The sorting order is also what determines the extrayear.

In your MWE i.peree.rhodes and bresson1991 are tied with respect to all relevant sorting criteria (after all, it is the same work!), so in order to break the tie, Biber just looks at who was cited first.

otherguy2017a and otherguy2017b, however, are always given in the order otherguy2017a < otherguy2017b, since the title of the former is 'Another Book' which sorts before the 'Some Title' of otherguy2017b.

\documentclass[12pt,a4paper]{article}
\usepackage[citestyle=authoryear-icomp, bibstyle=authoryear-icomp, backend=biber]{biblatex}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{otherguy2017b,
author = {Guy, Other},
title = {Another Book},
year = {2017},
}

@book{otherguy2017a,
author = {Guy, Other},
title = {Some title},
year = {2017},
}

@book{bresson1991,
author  = {Bresson, Alain},
title   = {Recueil des inscriptions},
year    = {1991},
}

@book{i.peree.rhodes,
editor     = {Bresson, Alain},
keywords   = {epigraphy},
pagination = {none},
shorthand  = {\emph{I.Per.Rhod.}},
title      = {Recueil des inscriptions},
year       = {1991},
options    = {skiplab=true},
}
\end{filecontents}