In the tufte-book document, I'm trying to put the footnotes at the bottom of margin and also adopt BibTeX to cite in most footnotes. But the problem is how to mix them together? I tried several times by using
\citep
, \footfullcite
and etc but didn't work it out. Any suggestions and advices will be welcome. Thanks for your replies.The desired layout would be like this way: Put the footnotes at the bottom of margin could be realized in the following codes:
Code: Select all
\documentclass[a4paper,nols,nobib]{tufte-book}
\usepackage[american]{babel}
\usepackage{blindtext}
%% footnote format
\usepackage{forarray,etoolbox,xifthen,,graphicx,picture,calc,atbegshi,lipsum,color}
\newlength{\vincrement}
\newlength{\fmvorigin}
\newlength{\fmhorigin}
\newlength{\fmvoffset}
\newlength{\nextfmvoffset}
\newlength{\fmvskip}
\setlength{\fmvorigin}{-1in-\voffset-\topmargin-\headheight-\headsep-\textheight}
\makeatletter
\ifthenelse{\isundefined{\Gm@lmargin}}%
{\setlength{\fmhorigin}{1in+\hoffset+\oddsidemargin+\textwidth+\marginparsep}}%
{\setlength{\fmhorigin}{\Gm@lmargin+\textwidth+\marginparsep}}
\makeatother
\setlength{\fmvoffset}{0pt}
\setlength{\fmvskip}{3ex}
\newlength{\tmvorigin}
\newlength{\tmhorigin}
\newlength{\tmvoffset}
\newlength{\nexttmvoffset}
\newlength{\tmvskip}
\newlength{\maxtmnheight}
\setlength{\tmvorigin}{-1in-\voffset-\topmargin-\headheight-\headsep-\baselineskip}
\setlength{\tmhorigin}{\fmhorigin}
\setlength{\tmvoffset}{0pt}
\setlength{\tmvskip}{6ex}
\newcounter{fmn}
\newcounter{tmn}
\newboolean{marginisfull}
\newcommand{\fmnbuffer}{}
\newcommand{\currentfmnqueue}{}
\newcommand{\nextfmnqueue}{}
\newcommand{\tmnbuffer}{}
\newcommand{\currenttmnqueue}{}
\newcommand{\nexttmnqueue}{}
\newcommand{\append}[2]{%
\ifdefempty{#1}{}{\eappto{#1}{,}}%
\eappto{#1}{#2}%
}
\newcommand{\prepend}[2]{%
\ifdefempty{#1}{}{\epreto{#1}{,}}%
\epreto{#1}{#2}%
}
\newcommand{\footmarginnote}[1]{%
\addtocounter{fmn}{1}%
\expandafter\newsavebox\csname fmnbox\roman{fmn}\endcsname%
\expandafter\savebox\csname fmnbox\roman{fmn}\endcsname{\parbox[b]{\marginparwidth}{#1}}%
\append{\currentfmnqueue}{\roman{fmn}}%
}
\newcommand{\topmarginnote}[1]{%
\addtocounter{tmn}{1}%
\expandafter\newsavebox\csname tmnbox\roman{tmn}\endcsname%
\expandafter\savebox\csname tmnbox\roman{tmn}\endcsname{\parbox[t]{\marginparwidth}{\vskip-0.75\baselineskip#1}}%
\append{\currenttmnqueue}{\roman{tmn}}%
}
\newcommand{\printfmn}{%
\setlength{\fmvoffset}{0pt}%
\setboolean{marginisfull}{false}%
\ifdefempty{\currentfmnqueue}{}{%
\gdef\nextfmnqueue{}%
\gdef\fmnbuffer{}%
\ForEachX{,}{%
\ifthenelse{\boolean{marginisfull}}%
{\append{\nextfmnqueue}{\thislevelitem}}%
{%
\setlength{\vincrement}%
{\fmvskip+\expandafter\ht\csname fmnbox\thislevelitem\endcsname+\dp\csname fmnbox\thislevelitem\endcsname}%
\setlength{\nextfmvoffset}{\fmvoffset+\vincrement}%
\ifthenelse{\lengthtest{\nextfmvoffset>\textheight}}{%
\setboolean{marginisfull}{true}%
\append{\nextfmnqueue}{\thislevelitem}%
}{%
\prepend{\fmnbuffer}{\thislevelitem}%
\addtolength{\fmvoffset}{\vincrement}%
}%
}%
}%
{\currentfmnqueue}%
\setlength{\fmvoffset}{0pt}%
\ForEachX{,}{%
\put(\fmhorigin,\fmvorigin+\fmvoffset){\expandafter\usebox\csname fmnbox\thislevelitem\endcsname}%
\setlength{\vincrement}%
{\fmvskip+\expandafter\ht\csname fmnbox\thislevelitem\endcsname+\dp\csname fmnbox\thislevelitem\endcsname}%
\addtolength{\fmvoffset}{\vincrement}%
}%
{\fmnbuffer}%
\global\let\currentfmnqueue\nextfmnqueue%
}%
}
\newcommand{\printtmn}{%
\setlength{\maxtmnheight}{\textheight-\fmvoffset}%
\setlength{\tmvoffset}{0pt}%
\setboolean{marginisfull}{false}%
\ifdefempty{\currenttmnqueue}{}{%
\gdef\nexttmnqueue{}%
\gdef\tmnbuffer{}%
\ForEachX{,}{%
\ifthenelse{\boolean{marginisfull}}%
{\append{\nexttmnqueue}{\thislevelitem}}%
{%
\setlength{\vincrement}%
{\tmvskip+\expandafter\ht\csname tmnbox\thislevelitem\endcsname+\dp\csname tmnbox\thislevelitem\endcsname}%
\setlength{\nexttmvoffset}{\tmvoffset+\vincrement}%
\ifthenelse{\lengthtest{\nexttmvoffset>\maxtmnheight}}{%
\setboolean{marginisfull}{true}%
\append{\nexttmnqueue}{\thislevelitem}%
}{%
\append{\tmnbuffer}{\thislevelitem}%
\addtolength{\tmvoffset}{\vincrement}%
}%
}%
}%
{\currenttmnqueue}%
\setlength{\tmvoffset}{0pt}%
\ifdefempty{\tmnbuffer}{}{%
\ForEachX{,}{%
\put(\tmhorigin,\tmvorigin-\tmvoffset){\expandafter\usebox\csname tmnbox\thislevelitem\endcsname}%
\setlength{\vincrement}%
{\tmvskip+\expandafter\ht\csname tmnbox\thislevelitem\endcsname+\dp\csname tmnbox\thislevelitem\endcsname}%
\addtolength{\tmvoffset}{\vincrement}%
}%
{\tmnbuffer}%
}%
\global\let\currenttmnqueue\nexttmnqueue%
}%
}
\AtBeginShipout{\AtBeginShipoutUpperLeft{\printfmn\printtmn}}
\makeatletter
\renewcommand{\footnote}[1]{\footnotemark\footmarginnote{\textsuperscript{\@thefnmark}\,#1}}
\makeatother
\begin{document}
Text\footnote{This is the first footnote.}
\blindtext
\blindtext
Text\footnote{This is the second and somewhat longer footnote.}
\blindtext
\blindtext
Text\footnote{This is the third footnote.}
\blindtext
\blindtext
Text\footnote{This is the fourth footnote.}
\blindtext
\end{document}
Code: Select all
\documentclass[a4paper,nols,nobib]{tufte-book}
\usepackage[american]{babel}
\usepackage{blindtext}
%% bib
\usepackage{hyphenat}
\usepackage[style=verbose,citepages=omit,dashed=false,maxcitenames=3]{biblatex}
\ExecuteBibliographyOptions{citetracker=true}
\renewbibmacro*{cite:short}{% based on cite:short from verbose.cbx
\printtext[bibhyperlink]{\printnames{labelname}}%
\iffieldundef{shorttitle}
{}
{\setunit*{\nametitledelim}%
\printfield[citetitle]{labeltitle}}}
\addbibresource{test.bib}
\begin{document}
Text\autocite[11]{abc}
\blindtext
\blindtext
Text\autocite[12-15]{def}
\blindtext
\blindtext
Text\autocite[05]{ghi}
\blindtext
\blindtext
Text\autocite[99-100]{jkl}
\blindtext
\end{document}