# Superfullcite with style=alphabetic

I am using \superfullcite{} explained here. As I understand it (which is not much I'm afraid), it is basically a \footfullcite{} that only appears once as a footnote, even if cited several times. I like this very much, since it allows me (using \AtEveryCiteKey{\clearfield{...}}) to put (small) citations into the footer (or margin for tufte) and have the (complete, long) citation at the end.

However, it uses numeric-comp, and I'd rather have the links to my citations be [XYZ99] like this, (I guess that would be alphabetic) This way,there exists no implied numerical order, which gets messed up upon sorting alphabetically. But if a person reads only the bibliography.

I'm not really sure how to go about this. What is missing is basically only a change of labels, however I'm unsure how to do this.

• Keep using numeric-comp and sorting=true and somehow modify labels?
• Start using alphabetic and try to get \superfullcite{} to work?

A MWE would be this one

% !TEX TS-program = pdflatex
% !TEX encoding = UTF-8 Unicode
%\documentclass[a4paper, nobib, notoc, symmetric, marginals=raggedouter, justified]{tufte-book} %
%\morefloats
%\morefloats
\documentclass{article}
\usepackage{csquotes}
\usepackage{hyphenat}
\usepackage[american]{babel}

\usepackage[block=nbpar, firstinits=false, backref=true, maxcitenames=1, maxbibnames=99,  isbn=false, doi=false, url=false, eprint=false, style=numeric-comp, backend=biber, sorting=none, citetracker=true, defernumbers=true]{biblatex}

\bibliography{biblatex-examples}
%%=====
\makeatletter
\DeclareCiteCommand{\notefullcite}[\mkbibbrackets]
{\usebibmacro{cite:init}%
\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{notefullcite}%
\usebibmacro{cite:comp}}
{}
{\usebibmacro{cite:dump}%
\usebibmacro{postnote}}

\newbibmacro*{notefullcite}{%
\ifciteseen
{}
{\footnotetext[\thefield{labelnumber}]{%
\usedriver{}{\thefield{entrytype}}.}}}

% Declare superfullcite and remap it to cite
\DeclareCiteCommand{\superfullcite}[\cbx@superscript]%
{\usebibmacro{cite:init}%
\let\multicitedelim=\supercitedelim
\iffieldundef{prenote}
{}
{\BibliographyWarning{Ignoring prenote argument}}%
\iffieldundef{postnote}
{}
{\BibliographyWarning{Ignoring postnote argument}}}
{\usebibmacro{citeindex}%
\usebibmacro{superfullcite}%
\usebibmacro{cite:comp}}
{}
{\usebibmacro{cite:dump}}

\newbibmacro*{superfullcite}{%
\ifciteseen
{}
{\xappto\cbx@citehook{%
\noexpand\footnotetext[\thefield{labelnumber}]{%
\fullcite{\thefield{entrykey}}.}}}}

\newrobustcmd{\cbx@superscript}[1]{%
\mkbibsuperscript{#1}%
\cbx@citehook
\global\let\cbx@citehook=\empty}
\let\cbx@citehook=\empty
\makeatother

%\renewcommand{\cite}[1]{\superfullcite{#1}} %remap \superfullcite to \cite

\begin{document}
Some filler text \notefullcite{cotton}, then some more text
\notefullcite{hammond}. Perhaps some more text and the same
citation again \notefullcite{hammond}. Yet another one
\notefullcite{knuth:ct:a}. Now all again
\notefullcite{cotton,hammond,knuth:ct:a}.

Some filler text,\superfullcite{augustine} then some more
text.\superfullcite{companion} Perhaps some more text and the
same citation again.\superfullcite{companion} Yet another
one.\superfullcite{kastenholz} Now all
again.\superfullcite{augustine,companion,kastenholz}
\printbibliography

\end{document}


As you can see I use sorting=none but I cannot change the style to alphabetic, since the cite:init and similar macros do not work. Could someone elaborate on what these do? Seaching the biblatex documentation turns up 0 results.

• You can use sorting=none to have the numeric labels in cite-order. What I fear with this approach is that it might be quite hard to identify which footnote goes with which alphabetic label in the end and in repeated citations. I could imagine a cite command that always prints the alphabetic label, but on the first cite also adds a footnote with the full citation. – moewe Feb 18 '15 at 17:32
• I already use sorting=none, however there are no alphabetic labels, since the MWE as is will not compile for style=alphabetic. I could imagine the exact same cite command as well, in fact that's more or less what I'm looking for. – Bernhard Mar 9 '15 at 14:37

We can define a new command \sfcite that prints the standard citation and adds a \footfullcite, i.e. a footnote with the full bibliographic entry, on the first occurrence of a citation.

\DeclareCiteCommand{\sfcite}[\mkbibbrackets]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}%
\ifciteseen
{}
{\footfullcite{\thefield{entrykey}}}}
{\multicitedelim}
{\usebibmacro{postnote}}


(The definition above is designed to work with alphabetic, but if you delete the [\mkbibbrackets] it works with a lot of the other standard styles. The basic idea is to add the \ifciteseen{}{\footfullcite{\thefield{entrykey}}} block after \usebibmacro{cite} in the definition.)

MWE

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[style=alphabetic,backend=biber,citetracker=constrict]{biblatex}

\DeclareCiteCommand{\sfcite}[\mkbibbrackets]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}%
\ifciteseen
{}
{\footfullcite{\thefield{entrykey}}}}
{\multicitedelim}
{\usebibmacro{postnote}}

\begin{document}
Lorem \sfcite{wilde} ipsum \sfcite{cicero} dolor \sfcite{wilde} sit
\sfcite{geer} amet \sfcite{knuth:ct:a,knuth:ct:b}.

Cite again \sfcite{geer} and \sfcite{cicero}.
\end{document}