If we enable the package option singletitle
we can use the test \ifsingletitle
to check if there is only one work by a particular author.
We can modify the cite:title
macro to do nothing if that is the case
\renewbibmacro*{cite:title}{%
\ifsingletitle
{}
{\printtext[bibhyperref]{%
\printfield[citetitle]{labeltitle}}}}
This, leads to a tiny complication with punctuation though, so we also need
\renewbibmacro*{cite}{%
\global\boolfalse{cbx:loccit}%
\iffieldundef{shorthand}
{\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
{\usebibmacro{cite:ibid}}
{\ifnameundef{labelname}
{}
{\printnames{labelname}%
\ifsingletitle{}{\setunit{\nametitledelim}}}%<--- the change is here
\usebibmacro{cite:title}}}%
{\usebibmacro{cite:shorthand}}}
Note that in your MWE I have changed your redefinition of the in
bibstring to the standard way to suppress the "in:", I also use style=authortitle-ibid
instead of the longer, but equivalent citestyle=authortitle-ibid, bibstyle=authortitle
. I don't like the techreport = {},
either, but I'm not entirely sure what you want to do there, so I left it, maybe, just maybe \AtEveryBibitem{\clearfield{type}}
does what you want. We also used \footcite{foo}
instead of \footnote{\cite{foo}}
.
\documentclass[11pt, article, oneside]{memoir}
\usepackage[australian]{babel}
\usepackage{csquotes}
\usepackage{endnotes}
\let\footnote=\endnote
\renewcommand{\notesname}{}
\usepackage[style=authortitle-ibid, terseinits=true, block=space, backend=biber, singletitle]{biblatex}
\defbibheading{memoir}{}
\addbibresource{biblatex-examples.bib}
\DefineBibliographyStrings{australian}{%
bibliography = {References},
shorthands = {Abbreviations},
editor = {editor},
editors = {editors},
techreport = {},
}
\renewbibmacro{in:}{}
\renewbibmacro*{cite}{%
\global\boolfalse{cbx:loccit}%
\iffieldundef{shorthand}
{\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
{\usebibmacro{cite:ibid}}
{\ifnameundef{labelname}
{}
{\printnames{labelname}%
\ifsingletitle{}{\setunit{\nametitledelim}}}%
\usebibmacro{cite:title}}}%
{\usebibmacro{cite:shorthand}}}
\renewbibmacro*{cite:title}{%
\ifsingletitle
{}
{\printtext[bibhyperref]{%
\printfield[citetitle]{labeltitle}}}}
\begin{document}
blah\footcite[12]{sigfridsson} blah\footcite{worman,pines} blah\footcite[34]{knuth:ct:b}
blah\footcite[56]{geer} blah\footcite[78]{knuth:ct:c} blah.
\newpage
\addcontentsline{toc}{chapter}{Notes}
\chapter*{Notes}
%
\begingroup
\renewcommand{\makeenmark}{\hbox{\theenmark}.\quad}
\parindent 0pt
\parskip 2ex
\def\enotesize{\normalsize}
\theendnotes
\endgroup
\chapter*{References}
\raggedright
\printbibliography[heading=memoir]
\end{document}
You can customise the alphabetic label style quite heavily with \DeclareLabelalphaTemplate
(see §4.5.4 Labels, pp. 163-169 of the biblatex
manual). In your case that is not necessary, however.
You only need the add the two options
maxalphanames=4, minalphanames=4
to your biblatex
call to get the number of names as desired.
And then
\renewcommand*{\labelalphaothers}{}
gets rid of the "+" that shows that authors have been omitted.
MWE
\documentclass[a4paper,10pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[style=alphabetic,maxalphanames=4,minalphanames=4]{biblatex}
\addbibresource{biblatex-examples.bib}
\renewcommand*{\labelalphaothers}{}
\begin{document}
\cite{sigfridsson,worman,geer,aksin,companion}
\printbibliography
\end{document}
Best Answer
This is the standard with biblatex’s style
alphabetic
, as long as you have one author. With multiple authors, this style takes the first letter of every author – up to three, as a default. If there are more than three authors, it takes the first three letters of the first name, then a+
and the year, e.g.Edit:
As Audrey stated in the comments, you can change the name of the authors that are used for the alphabetic label with the option
maxalphanames
. Withmaxalphanames=1
, the above examples would look like this:If you want to get rid of the
+
, you can redefine the\labelalphaothers
command:\renewcommand*{\labelalphaothers}{}