[Tex/LaTex] Biblatex / Biber full citation for first occurrence only

biberbiblatexciting

I'm in the process of switching from BibTeX to BibLaTeX/biber. I've searched around but can't seem to find/figure out how to style the citations a particular way and I'd appreciate some help.

I'm using the tufte-latex package so citations appear in the margins. I'm looking to have the first occurrence of a citation give the full citation, i.e., Author, Title, publisher, year, and the remaining citations of that item simply give the numeric citation, i.e., author [citation number].

My current biblatex options are:

\usepackage[
natbib=true,
bibstyle=numeric, 
block=nbpar, 
citestyle=numeric, 
backend=biber
]{biblatex}

Two types of references are found in the text, the standard citation which appears as its own margin note, and a citation appearing within a margin note. To accommodate this I use the BibLaTeX commands \textcite{} for citations within a margin note (giving "Author [cit. number]"), and \autocite{} for standard citations with autocite being defined as follows.

\renewcommand{\autocite}[1]{\sidenote{\textcite{#1}}}

But again, what I would like is to have this set-up (or similar) but have the initial occurrence of each citation give the full citation (Author, title, pub, year, etc..) and the remainder go back to the numeric version I currently have.

Is this possible?

Best Answer

Using a modified tufte-common.def file you can create tufte-latex documents with biblatex. A limitation is that tufte-latex modifies footnotes. So biblatex features such as \smartcite inside footnotes and footnote detection with \iffootnote may not work as intended. Most of this has already been covered in another post.

As for the citation style, you can get most of the way there with some edits to the textcite bibliography macro and \smartcite. Both of these are defined in numeric.cbx.

\documentclass[nobib]{tufte-handout}
\usepackage{hyphenat}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=numeric,citetracker=true,autocite=footnote]{biblatex}

\makeatletter

% If not seen, avoid compact lists and print full citation
\renewbibmacro*{textcite}{%
  \ifciteseen
    {}
    {\clearfield{namehash}}%
  \iffieldequals{namehash}{\cbx@lasthash}
    {\multicitedelim}
    {\cbx@tempa
     \ifciteseen
       {\ifnameundef{labelname}
          {\printfield[citetitle]{labeltitle}}
          {\printnames{labelname}}}
       {\usedriver
          {\DeclareNameAlias{sortname}{default}%
           \clearfield{pages}%
           \clearfield{pagetotal}}
          {\thefield{entrytype}}}%
     \addspace\bibopenbracket}%
  \ifnumequal{\value{citecount}}{1}
    {\usebibmacro{prenote}}
    {}%
  \usebibmacro{cite}%
  \savefield{namehash}{\cbx@lasthash}%
  \gdef\cbx@tempa{\bibclosebracket\multicitedelim}}

% Make \smartcite like \textcite
\DeclareCiteCommand{\smartcite}[\iffootnote\mkbibbrackets\mkbibfootnote]
  {\let\cbx@tempa=\empty
   \undef\cbx@lasthash}
  {\usebibmacro{citeindex}%
   \usebibmacro{textcite}}
  {}
  {\usebibmacro{postnote}%
   \bibclosebracket}

\makeatother

\addbibresource{biblatex-examples.bib}
\begin{document}
One of the most prominent and distinctive features of this style is the
extensive use of sidenotes \autocites(See)()[10--15]{knuth:ct:a}[10]{companion}.
There is a wide margin to provide ample room for sidenotes and small figures
\autocite{knuth:ct:a,knuth:ct:b}. Any footnotes will automatically be converted to
sidenotes.\footnote{Results from \textcite{knuth:ct:a,knuth:ct:b,companion} showed
that...}
\printbibliography
\end{document}

enter image description here

Some notes:

  • The autocite=footnote option setting makes \autocite use \smartcite as its backend citation command.
  • The \ifciteseen test needs citation tracking enabled. In the example global tracking is enabled via citetracker=true. Alternative settings are possible. Refer to the manual for details.
  • Full citations are printed with \usedriver. The first argument to this command allows you to hook code in before printing. This is a good place to suppress fields with \clearfield and friends. In the example, I suppress the pages and pagetotal fields to avoid confusion with page references in postnotes.
  • In numeric, \textcite generates compact citation lists. This complicates printing full citations. The edits to textcite take an easy way out by simply replacing the labelname or labeltitle with the full citation.
  • The numeric style isn't particularly suited to this customization. Refer to the verbose style or any of its variants for some better alternatives.