[Tex/LaTex] author-year and footnote citations in biblatex

biblatexbibliographiescitingnatbib

I use natbib and switching to biblatex in order to produce documents that can be converted with relative ease between author-date citations with a reference list and the "everything in footnotes" style with a full citation at first occurrence and abbreviated citations thereafter. I feel a bit daunted. It does not seem likely that I can reasonably expect one source file can produce both formats simply by changing an option, but that might be the ideal solution. In any case, I am really just looking for advice on the best way to write my documents.

For author-date citations, I like to freely mix references to authors and references to papers, and I give the first and last name of the author the first time it appears, the last name alone thereafter. So, a typical passage might look like this:

David Lewis's (1980) Principal Principle is one of my favorite principles. One of my favorite papers is Lewis 1994. Everybody should be rational (Lewis 1980; van Fraassen 1984). Lewis said a lot of things. For instance, he said that everybody should be rational (1980), and he said that everybody should drive on the right side of the road (1969).

Now, even in natbib, I don't think I was coding these things right. For instance, I didn't know the right way to get the apostrophe in the first citation; I didn't know any automated way of enforcing my first-name-at-first-use-only policy; and I was making heavy use of \citealp for paper citations and (\citeyear{XXX}) for parenthetical citations, which doesn't seem to be the recommended style. But what is the optimal way to do all this in biblatex?

For the "everything in footnotes" style, it seems that substantial changes to my source will be necessary. Most citations will have to be moved to the end of the sentence, and I will have to use references to papers less freely since I will need to refer to them by title, which is cumbersome. Also, citations within footnotes will need to be restructured. Most obviously, they will need to be written with sensitivity to whether the citation is a first citation or not because first occurrence citations are long and will break the flow of a sentence. However, it does appear that at least I am not likely to have to learn any new citation commands for writing citations in footnotes beyond those I will need to learn to do author-date citations in biblatex.

Any words of wisdom from more experienced biblatexers?

Best Answer

Some citation commands are intended for use "in the flow of text". Examples include \textcite, \citetitle, \citeauthor and \citeyear. If you stick to these commands and \autocite, you can get by with just a change in biblatex load-time option settings.

In the authoryear styles, \autocite is based on \parencite. In verbose styles, \autocite invokes \smartcite, which behaves like \parencite in footnotes and \footcite inline. The neat thing about \autocite is that it moves punctuation for you. The starred variant \autocite* issues the starred version of its backend citation command. In authoryear styles this is \parencite*, which prints only year.

Possessive citations just require a change to the labelname format in \textcite. In the example below I adapted the solution in this post. Full person names are printed the first time an entry is cited via \textcite or \citeauthor with the help of another answer by domwass. To cope with differences in the construction of the authoryear and verbose citation commands, I've defined some patches using etoolbox extensions by egreg.

\documentclass{article}
\usepackage[style=authoryear]{biblatex}
\usepackage[colorlinks]{hyperref}

\makeatletter

% patch bibmacros without optional arguments
\def\act@on@bibmacro#1#2{%
  \expandafter#1\csname abx@macro@\detokenize{#2}\endcsname}
\def\pretobibmacro{\act@on@bibmacro\pretocmd}

% patch citation commands
\def\act@on@citecmd#1#2{%
  \expandafter#1\csname blx@citei@\detokenize{#2}\endcsname}
\def\patchcitecmd{\act@on@citecmd\patchcmd}

% patch default name formats
\def\act@on@nameformat#1#2{%
  \expandafter#1\csname abx@nfd@*@\detokenize{#2}\endcsname}
\def\pretonameformat{\act@on@nameformat\pretocmd}
\def\apptonameformat{\act@on@nameformat\apptocmd}

% track seen labelnames
\newcommand*{\cbx@seennames}{}
\newrobustcmd*{\cbx@nameseen}[1]{\listxadd{\cbx@seennames}{\detokenize{#1}}}
\newrobustcmd*{\cbx@ifnameseen}[1]{\xifinlist{\detokenize{#1}}{\cbx@seennames}}

% define fullname-if-not-seen labelname format
\csletcs{abx@nfd@*@labelname:seen}{abx@nfd@*@labelname}
\pretonameformat{labelname:seen}
  {\cbx@ifnameseen{#1#3#5#7}
     {}{\defcounter{uniquename}{2}\cbx@nameseen{#1#3#5#7}}}{}{}

% define possessive labelname format
\csletcs{abx@nfd@*@labelname:poss}{abx@nfd@*@labelname:seen}
\apptonameformat{labelname:poss}
  {\ifnumequal{\value{listcount}}{\value{liststop}}{'s}{}}{}{}

\makeatother

% use "seen" labelname format in \textcite and \citeauthor
\patchcitecmd{citeauthor}
  {\printnames{labelname}}{\printnames[labelname:seen]{labelname}}{}{}
\patchcitecmd{textcite}
  {\printnames{labelname}}{\printnames[labelname:seen]{labelname}}{}{}
\pretobibmacro{textcite}{\DeclareNameAlias{labelname}{labelname:seen}}{}{}

% define possessive citation commands
\newrobustcmd*{\possalias}{%
  \AtNextCite{\DeclareNameAlias{labelname:seen}{labelname:poss}}}
\newrobustcmd*{\posscite}{\possalias\textcite}
\newrobustcmd*{\Posscite}{\possalias\Textcite}
\newrobustcmd*{\posscites}{\possalias\textcites}
\newrobustcmd*{\Posscites}{\possalias\Textcites}

\addbibresource{biblatex-examples.bib}

\begin{document}
\null\vfill
\Posscite{knuth:ct:a} Principal Principle is one of my favourite principles.
One of my favourite books is \citetitle{knuth:ct:a}. Everybody should be 
rational \autocite{knuth:ct:a,vangennep}. \Citeauthor{knuth:ct} said a lot
of things. For instance, he said that everybody should be rational 
\autocite*[9]{knuth:ct:a}, and he said that everybody should drive on the
right side of the road \autocite*[10--15]{knuth:ct:c}. \Citeauthor{vangennep}
said that everybody should drive on the left, but otherwise
\posscite[4]{vangennep} work agrees with \citeauthor{knuth:ct}.
\end{document}

enter image description here

Switching to the verbose style via

\usepackage[style=verbose]{biblatex}

gives

enter image description here

This solution should work with any of the standard authoryear and verbose variants. Details on these styles can be found in the biblatex documentation.

Related Question