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}
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.
This answer has been updated in the light, particularly, of Audrey's perceptive comments.
Yes. There are a number of ways to do this.
The code below is a revision of my original suggestion, which (I hope) corrects various deficiencies in its general use. Specifically:
My original code didn't deal gracefully with empty years: this does.
My original code "hardwired" multind
's syntax and your chosen index names: in this version the index names are in macros which means they can be changed.
My original code didn't make use of the indexsorttitle
and indextitle
fields: this does, as it should.
My original code could cause problems with certain macros (e.g. \TeX
used in indextitles, as Audrey properly pointed out. This handles those properly, I hope.
On the example you gave, none of this changes anything -- but I've added two further example entries which the original version would have handled wrongly or stupidly, and this handles directly.
Oddly, \fullcite
doesn't seem to call the indexing macros, which is why I've used \cite
; I daresay there's an explanation for that, but I don't have time to dig into it.
\documentclass{report}
\usepackage{filecontents}
\begin{filecontents*}{testing.bib}
@article{Author2010,
author="Author, A and Writer, B",
journal="Slackers Monthly",
title="An overly long treatise on procrastination",
year=2010,
month=jun,
}
@article{Writer2011,
author="Writer, B and Scribe, C",
journal="Fake Online Journal",
title="Waste of time or time of waste: procrastination in a modern society",
year=2011,
month=oct,
}
@book{Writer2003,
author="Writer, B",
title="Procrastination for dummies",
year=2003,
publisher="Procrastination House",
address="Auckland",
}
@book{knuth:ct:b,
hyphenation = {american},
sortyear = {1986-1},
sorttitle = {Computers & Typesetting B},
indexsorttitle = {TeX: The Program},
author = {Knuth, Donald E.},
title = {\TeX: The Program},
shorttitle = {\TeX},
maintitle = {Computers \& Typesetting},
volume = {B},
publisher = {Addison-Wesley},
location = {Reading, Mass.},
date = {1986},
annotation = {The second volume of a five-volume book. Note the
\texttt{sorttitle} and \texttt{sortyear} fields. Also note the
\texttt{indexsorttitle} field}
}
@book{yearless,
author = {Lazy B. Ugger},
title = {I Can't Be Bothered with Years},
publisher = {Equally Lazee},
}
\end{filecontents*}
\usepackage[style=authoryear,indexing=cite]{biblatex}
\addbibresource{testing.bib}
\makeatletter
% For the "years" index, we redefine the ordinary bibmacro
% which indexes titles, so that it indexes into the years
% index instead
\renewbibmacro*{index:title}[2]{%
\iffieldundef{year}
{\usebibmacro{index:years}%
{\index}%
{\undated}%
{\thefield{indexsorttitle}}%
{\thefield{entrykey}}}
{\usebibmacro{index:years}%
{\index}%
{\thefield{year}}%
{\thefield{indexsorttitle}}%
{\thefield{entrykey}}}}
\newbibmacro*{index:years}[4]{%
\begingroup
\protected@edef\theindexentry{%
\unexpanded{#1}\yearsindex{#2!#3\actualoperator\unexpanded{\citefield}{#4}{indextitle}}}%
\theindexentry
\endgroup}
% For authors we just redefine the field format (so that it
% includes title and year information
\DeclareIndexNameFormat{default}{%
\iffieldundef{year}
{\usebibmacro{index:name}%
{\index}%
{#1}%
{#3}%
{#5}%
{#7}%
{\thefield{indexsorttitle}}%
{\thefield{entrykey}}%
{}}
{\usebibmacro{index:name}%
{\index}%
{#1}%
{#3}%
{#5}%
{#7}%
{\thefield{indexsorttitle}}%
{\thefield{entrykey}}%
{ (\thefield{year})}}}
% ... and modify the relevant bibmacro to add the extra information
\renewbibmacro*{index:name}[8]{%
\begingroup
\ifuseprefix
{\protected@edef\theindexentry{%
\unexpanded{#1}\authorsindex{%
\ifblank{#4}{}{#4 }%
\@firstofone #2% remove spurious braces
\ifblank{#5}{}{ #5}%
\ifblank{#3}{}{, #3}%
\actualoperator
\ifblank{#4}{}{\MakeCapital{#4} }%
#2%
\ifblank{#5}{}{ #5}%
\ifblank{#3}{}{, #3}!#6
\actualoperator\unexpanded{\citefield}{indextitle}#8}}}%
{\protected@edef\theindexentry{%
\unexpanded{#1}\authorsindex{%
\@firstofone #2% remove spurious braces
\ifblank{#5}{}{ #5}%
\ifblank{#3#4}{}{,}%
\ifblank{#3}{}{ #3}%
\ifblank{#4}{}{ #4}!#6\actualoperator
\unexpanded{\citefield}{#7}{indextitle}#8}}}%
\theindexentry
\endgroup}
\makeatother
% redefine this if the index for years is differently named, or if using
% index or imakeidx
\newcommand{\yearsindex}{{years}}
% redefine this if the index for authors is differently named, or if
% using index or imakeidx
\newcommand{\authorsindex}{{authors}}
% undated entries
\newcommand{\undated}{n.d.}
\usepackage{multind}
\makeindex{authors}
\makeindex{years}
\begin{document}
\chapter{Introductory works}
\section{An overly long treatise on procrastination}
\fullcite{Author2010}
This paper was really useful in telling me how to waste more time rather
than doing real work.
\section{Waste of time or time of waste: procrastination in a modern society}
\cite{Writer2011}
Applies post-modern philosophical theory to procrastination.
\section{Procrastination for dummies}
\cite{Writer2003}
A classic reference book for anybody starting a research position.
\section{The Awkward Squad}
\cite{knuth:ct:b}
An author who uses a title that indexing programs find hard to cope
with, but certainly no procrastinator.
\cite{yearless}
An author so lazy that he cannot be bothered to put a year of publication.
\printbibliography
\printindex{authors}{Author index}
\printindex{years}{Year index}
\end{document}
(If you need to, you can coax biblatex to do very complex indexing: I've just completed the first version of a style which can produce many, many, indexes (more than 33!), and which indexes based not just on title fields, but uses postnotes to set sub-items. It's not thrilling to set up, but it's absolutely do-able as biblatex stands.)
Best Answer
Short answer: Yes.
Longer answer: Absolutely.
Even longer answer: Give the following minimalist document a try. Observe the use of the optional argument of
\bibitem
to store the citation call-out string and publication year. Compile the document twice to generate the citation call-outs correctly.You will, of course, still be in charge of everything related to bibliography: The ordering of the bib entries, the formatting of the bib entries, etc., etc.