From 3ff3de6f9871e3d4b2fba4c616fa3a83e2ee39ab Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 17 Nov 2008 01:23:04 +0000 Subject: tufte-latex update (16nov08) git-svn-id: svn://tug.org/texlive/trunk@11312 c570f23f-e606-0410-a88d-b1316a301751 --- .../source/latex/tufte-latex/sample-handout.bib | 57 +++ .../source/latex/tufte-latex/sample-handout.tex | 330 ++++++++++++ .../source/latex/tufte-latex/tufte-handout.cls | 552 +++++++++++++++++++++ 3 files changed, 939 insertions(+) create mode 100644 Master/texmf-dist/source/latex/tufte-latex/sample-handout.bib create mode 100644 Master/texmf-dist/source/latex/tufte-latex/sample-handout.tex create mode 100644 Master/texmf-dist/source/latex/tufte-latex/tufte-handout.cls (limited to 'Master/texmf-dist/source/latex') diff --git a/Master/texmf-dist/source/latex/tufte-latex/sample-handout.bib b/Master/texmf-dist/source/latex/tufte-latex/sample-handout.bib new file mode 100644 index 00000000000..81715a5dd0c --- /dev/null +++ b/Master/texmf-dist/source/latex/tufte-latex/sample-handout.bib @@ -0,0 +1,57 @@ +@BOOK{Tufte2006, + author = {Edward R. Tufte}, + title = {Beautiful Evidence}, + year = {2006}, + publisher = {Graphics Press, {LLC}}, + month = {May}, + edition = {First}, + place = {Cheshire, Connecticut}, + isbn = {0961392177} +} + +@BOOK{Tufte2001, + author = {Edward R. Tufte}, + title = {The Visual Display of Quantitative Information}, + publisher = {Graphics Press}, + year = {2001}, + address = {Cheshire, Connecticut}, + isbn = {0961392142} +} + +@BOOK{Tufte1990, + author = {Edward R. Tufte}, + title = {Envisioning Information}, + publisher = {Graphics Press}, + year = {1990}, + address = {Cheshire, Connecticut}, + isbn = {0961392118} +} + +@BOOK{Tufte1997, + author = {Edward R. Tufte}, + title = {Visual Explanations}, + publisher = {Graphics Press}, + year = {1997}, + address = {Cheshire, Connecticut}, + isbn = {0-9613921-2-6} +} + +@BOOK{Bringhurst2005, + author = {Robert Bringhurst}, + title = {The Elements of Typography}, + publisher = {Hartley \& Marks}, + year = {2005}, + edition = {3.1}, + isbn = {0-88179-205-5} +} + +@BOOK{Mittelbach2004, + author = {Frank Mittelbach and Michel Goossens}, + title = {The \LaTeX\ Companion}, + publisher = {Addison--Wesley}, + year = {2004}, + edition = {Second}, + isbn = {0-201-36299-6} +} + + diff --git a/Master/texmf-dist/source/latex/tufte-latex/sample-handout.tex b/Master/texmf-dist/source/latex/tufte-latex/sample-handout.tex new file mode 100644 index 00000000000..7c65ba41f57 --- /dev/null +++ b/Master/texmf-dist/source/latex/tufte-latex/sample-handout.tex @@ -0,0 +1,330 @@ +\documentclass{tufte-handout} + +\usepackage{amsmath} + +% Set up the images/graphics package +\usepackage{graphicx} +\setkeys{Gin}{width=\linewidth,totalheight=\textheight,keepaspectratio} +\graphicspath{{graphics/}} + +\usepackage{mcaption} % FIXME move to .cls file + +%\title{An Example of the Usage of the Tufte-Handout Style\thanks{Inspired by Edward~R. Tufte!}} +\title{An Example of the Usage of the Tufte-Handout Style} +\author{The Tufte-\LaTeX\ Developers} +%\date{22 February 2008} % if the \date{} command is left out, the current date will be used + +\usepackage{helvet} + +% The following package makes prettier tables. We're all about the bling! +\usepackage{booktabs} + +% The units package provides nice, non-stacked fractions and better spacing +% for units. +\usepackage{units} + +% The fancyvrb package lets us customize the formatting of verbatim +% environments. We use a slightly smaller font. +\usepackage{fancyvrb} +\fvset{fontsize=\normalsize} + +\usepackage{multicol} + +%\usepackage[savepos]{zref} + +\usepackage{lipsum} + +\usepackage{url} +\urldef{\asyurl}\url{http://asymptote.sf.net/} + +\begin{document} + +\maketitle % this prints the handout title, author, and date + +\begin{abstract} +\noindent This document describes the Tufte handout \LaTeX\ document style. +It also provides examples and comments on the style's use. +\end{abstract} + +%\printclassoptions + +The \Verb|tufte-handout| document class defines a style similar to the +style Edward Tufte uses in his books and handouts. Tufte's style is known +for its extensive use of sidenotes, tight integration of graphics with +text, and well-set typography. This document aims to be at once a +demonstration of the features of the \Verb|tufte-handout| document class +and a style guide to its use. + +\section{Page Layout}\label{sec:page-layout} +\subsection{Headings}\label{sec:headings} +This style provides \textsc{a}- and \textsc{b}-heads (that is, +\Verb|\section| and \Verb|\subsection|) demonstrated above. + +If you need more than two levels of section headings, you'll have to define +them yourself at the moment;\sidenote{See see ``Defining new sections'' on +page~\pageref{sec:defining-sections} for help with defining more heading +levels.} there are no pre-defined styles for anything below a +\Verb|\subsection|. As Bringhurst points out in \textit{The Elements of +Typographic Style},\cite{Bringhurst2005} you should ``use as many levels of +headings as you need: no more, and no fewer.'' + +The Tufte-handout class will emit an error if you try to use +\Verb|\subsubsection| and smaller headings. + +%\medskip +%\begin{fullwidth} +%\begin{Verbatim} +%! Package tufte-handout Error: \subsubsection is undefined by this class. +%(tufte-handout) See Robert Bringhurst's _The Elements of +%(tufte-handout) Typographic Style_, section 4.2.2. +%(tufte-handout) \subsubsection was used. +%\end{Verbatim} +%\end{fullwidth} +%\medskip + +% let's start a new thought -- a new section +\newthought{In his later books},\cite{Tufte2006} Tufte +starts each section with a bit of vertical space, a non-indented paragraph, +and sets the first few words of the sentence in \textsc{small caps}. To +accomplish this using this style, use the \Verb|\newthought| command: + +\Verb|\newthought{In his later books}, Tufte starts|\ldots + +\subsection{Sidenotes}\label{sec:sidenotes} +One of the most prominent and distinctive features of this style is the +extensive use of sidenotes. There is a wide margin to provide ample room +for sidenotes and small figures. Any \Verb|\footnote|s will automatically +be converted to sidenotes.\footnote{This is a sidenote that was entered +using the \texttt{\textbackslash footnote} command.} If you'd like to place ancillary +information in the margin without the sidenote mark (the superscript +number), you can use the \Verb|\marginnote| command.\marginnote{This is a +margin note. Notice that there isn't a number preceding the note, and +there is no number in the main text where this note was written.} + +\subsection{References} +References are placed alongside their citations as sidenotes, +as well. This can be accomplished using the normal \Verb|\cite| +command.\footnote{The first paragraph of this document includes a citation.} + +The complete list of references may also be printed automatically by using +the \Verb|\bibliography| command. (See the end of this document for an +example.) If you do not want to print a bibliography at the end of your +document, use the \Verb|\nobibliography| command in its place. + +To enter multiple citations at one +location,\cite{Tufte2006}\cite{Tufte1990} you will need to use multiple +\Verb|\cite| commands: \Verb|\cite{Tufte2006}| \Verb|\cite{Tufte1990}|. Each +\Verb|\cite| command will generate its own sidenote and its own sidenote +number. + + +\section{Figures and Tables}\label{sec:figures-and-tables} +Images and graphics play an integral role in Tufte's work. +In addition to the standard \Verb|figure| and \Verb|tabular| environments, +this style provides special figure and table environments for full-width +floats. + +Full page width figures and tables may be placed in \texttt{figure*} or +\texttt{table*} environments. To place figures or tables in the margin, +use the \Verb|marginfigure| or \Verb|margintable| environments as follows +(see figure~\ref{fig:marginfig}): +\begin{marginfigure} + \includegraphics[width=\marginparwidth]{helix} + \caption{This is a margin figure. The helix is defined by + $x = \cos(2\pi z)$, $y = \sin(2\pi z)$, and $z = [0, 2.7]$. The figure was + drawn using Asymptote (\asyurl).} + \label{fig:marginfig} +\end{marginfigure} +\begin{Verbatim} +\begin{marginfigure} + \includegraphics{blah} + \caption{This figure is in the margin.} +\end{marginfigure} +\end{Verbatim} + + +Figure~\ref{fig:fullfig} is an example of the \Verb|figure*| +environment and figure~\ref{fig:textfig} is an example of the normal +\Verb|figure| environment. +\begin{figure*} + \includegraphics{sine.pdf} + \caption{This graph shows $y = \sin x$ from about $x = [-10, 10]$. + \emph{Notice that this figure takes up the full page width.}} + \label{fig:fullfig} + %\zsavepos{pos:fullfig} +\end{figure*} + +\begin{figure} + \includegraphics{hilbertcurves.pdf} + \caption{Hilbert curves of various degrees $n$. + \emph{Notice that this figure only takes up the main textblock width.}} + \label{fig:textfig} + %\zsavepos{pos:textfig} +\end{figure} + +Table~\ref{tab:normaltab} shows table created with the \texttt{booktabs} +package. Notice the lack of vertical rules---they serve only to clutter +the table's data. + +\begin{table}[ht] + \centering + \fontfamily{ppl}\selectfont + \begin{tabular}{ll} + \toprule + Margin & Length \\ + \midrule + Paper width & \unit[8\nicefrac{1}{2}]{inches} \\ + Paper height & \unit[11]{inches} \\ + Textblock width & \unit[6\nicefrac{1}{2}]{inches} \\ + Textblock/sidenote gutter & \unit[\nicefrac{3}{8}]{inches} \\ + Sidenote width & \unit[2]{inches} \\ + \bottomrule + \end{tabular} + \caption{Here are the dimensions of the various margins used in the Tufte-handout class.} + \label{tab:normaltab} + %\zsavepos{pos:normaltab} +\end{table} + +\section{Full-width text blocks} + +In addition to the new float types, there is a \texttt{fullwidth} +environment that stretches across the main text block and the sidenotes +area. + +\begin{Verbatim} +\begin{fullwidth} +Lorem ipsum dolor sit amet... +\end{fullwidth} +\end{Verbatim} + +\begin{fullwidth} +\small\itshape\lipsum[1] +\end{fullwidth} + +\section{Typography}\label{sec:typography} + +\subsection{Typefaces}\label{sec:typefaces} +If the Palatino and Bera Mono typefaces are installed, this style will use +them automatically. Otherwise, we'll fall back on the Computer Modern +typefaces. + +\subsection{Letterspacing}\label{sec:letterspacing} +This document class includes two new commands and some improvements on +existing commands for letterspacing. + +When setting strings of \allcaps{ALL CAPS} or \smallcaps{small caps}, the +letterspacing---that is, the spacing between the letters---should be +increased slightly.\cite{Bringhurst2005} The \Verb|\allcaps| command has proper letterspacing for +strings of \allcaps{FULL CAPITAL LETTERS}, and the \Verb|\smallcaps| command +has letterspacing for \smallcaps{small capital letters}. These commands +will also automatically convert the case of the text to upper- or +lowercase, respectively. + +The \Verb|\textsc| command has also been redefined to include +letterspacing. The case of the \Verb|\textsc| argument is left as is, +however. This allows one to use both uppercase and lowercase letters: +\textsc{The Initial Letters Of The Words In This Sentence Are Capitalized.} + + +\section{Customization}\label{sec:customization} +\subsection{Document class options}\label{sec:options} +The \Verb|tufte-handout| class is based on the \LaTeX\ \Verb|article| +document class. Therefore, you can pass any of the typical article +options. There are a few options that are specific to the +\Verb|tufte-handout| document class, however. + +The \Verb|a4paper| option will set the paper size to \smallcaps{A4} instead of +the default \smallcaps{US} letter size. + +The \Verb|sfsidenotes| option will set the sidenotes in a \textsf{sans +serif} typeface instead of the default roman. + +The \Verb|twoside| option will modify the running heads so that the page +number is printed on the outside edge (as opposed to always printing the page +number on the right-side edge in \Verb|oneside| mode). + +The \Verb|symmetric| option typesets the sidenotes on the outside edge of +the page. This is how books are traditionally printed, but is contrary to +Tufte's book design which sets the sidenotes on the right side of the page. +This option implicitly sets the \Verb|twoside| option. + +The \Verb|justified| option sets all the text fully justified (flush left +and right). The default is to set the text ragged right. +The body text of Tufte's books are set ragged right. This prevents +needless hyphenation and makes it easier to read the text in the slightly +narrower column. + +\subsection{Defining new sections}\label{sec:defining-sections} +As mentioned on page~\pageref{sec:headings}, the \Verb|tufte-handout| +document class only defines \Verb|\section| and \Verb|\subsection| +headings. + +If you wanted to define, say, a \Verb|\paragraph| heading, you could do it +as follows: + +\begin{Verbatim} +\makeatletter +\renewcommand\paragraph{\@startsection{paragraph}% the name of the new section + {4}% the section level number + {0em}% indentation amount + {\baselineskip}% amount of space to leave before heading + {-1.5em}% amount of space to leave after heading + {\normalfont\itshape}% style +} +\makeatother +\end{Verbatim} + +Place that code in the preamble of your document and you'll now be able to use +\Verb|\paragraph|. + +For more details on defining section levels, see \textit{The \LaTeX\ +Companion},\cite{Mittelbach2004} or use the \Verb|titlesec| package. + + +\section{Installation}\label{sec:installation} +To install the \Verb|tufte-handout| class, simply drop the +\Verb|tufte-handout.cls| file into the same directory as your \Verb|.tex| +file. + +% TODO add instructions for installing it globally + + +\section{Support}\label{sec:support} + +\subsection{Package Dependencies}\label{sec:dependencies} +The following is a list of packages that the \Verb|tufte-handout| document +class relies upon. Packages marked with an asterisk are optional. +\begin{multicols}{2} +\begin{itemize} + \item geometry + \item ragged2e + \item chngpage + \item paralist + \item textcase + \item footmisc + \item natbib and bibentry + \item placeins + \item caption + \item fancyhdr + \item microtype* + \item soul* + \item palatino* + \item beramono* +\end{itemize} +\end{multicols} + +\subsection{Tufte-\LaTeX\ Website}\label{sec:website} +The website for the Tufte-\LaTeX\ packages is located at +\url{http://code.google.com/p/tufte-latex/}. On our website, you'll find +links to our \smallcaps{svn} repository, mailing lists, bug tracker, and documentation. + + +\bibliography{sample-handout} +\bibliographystyle{plainnat} + +%\section{Float Positions---DEBUG} +%Full figure: $x=\zposx{pos:fullfig}$, $y=\zposy{pos:fullfig}$ +%Text figure: $x=\zposx{pos:textfig}$, $y=\zposy{pos:textfig}$ +%Normal table: $x=\zposx{pos:normaltab}$, $y=\zposy{pos:normaltab}$ + +\end{document} diff --git a/Master/texmf-dist/source/latex/tufte-latex/tufte-handout.cls b/Master/texmf-dist/source/latex/tufte-latex/tufte-handout.cls new file mode 100644 index 00000000000..8075ec3c164 --- /dev/null +++ b/Master/texmf-dist/source/latex/tufte-latex/tufte-handout.cls @@ -0,0 +1,552 @@ +\NeedsTeXFormat{LaTeX2e}[1994/06/01] + +\ProvidesClass{tufte-handout}[2008/11/16 v2.0.1 Tufte-handout class] + +%% +% a4paper option + +\newif\if@tufteh@afourpaper \@tufteh@afourpaperfalse +\DeclareOption{a4paper}{\@tufteh@afourpapertrue} + +%% +% sfsidenotes option -- typesets sidenotes in sans serif typeface + +\newif\if@tufteh@sfsidenotes \@tufteh@sfsidenotesfalse +\DeclareOption{sfsidenotes}{\@tufteh@sfsidenotestrue} + +%% +% symmetric option -- puts marginpar space to the outside edge of the page +% Note: this forces twoside + +\newif\if@tufteh@symmetric\@tufteh@symmetricfalse +\DeclareOption{symmetric}{ + \@tufteh@symmetrictrue + \PassOptionsToClass{twoside}{article} +} + +%% +% justified option -- uses fully justified text (flush left and flush +% right) instead of ragged right. + +\newif\if@tufteh@justified\@tufteh@justifiedfalse +\DeclareOption{justified}{\@tufteh@justifiedtrue} + + +% FIXME: should probably specify options not supported like Mittelbach's aipproc.cls + +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} +\ProcessOptions + +\LoadClass{article} + +%% +% Detect whether we're in two-side mode or not. (Used to set up running +% heads later.) + +\newif\if@tufteh@twoside\let\if@tufteh@twoside\if@twoside + +%% +% Set page layout geometry + +\RequirePackage[letterpaper,includemp,width=6.5in,marginparsep=0.375in,marginparwidth=2in]{geometry} + +\if@tufteh@afourpaper + \geometry{a4paper,includemp,width=170mm,marginparsep=10mm,marginparwidth=50mm} +\fi + +\if@tufteh@symmetric +\else + \geometry{asymmetric} +\fi + + +%% +% Separation marginpars by a line's worth of space. + +\setlength\marginparpush{\baselineskip} + +%% +% Font for margin items + +\if@tufteh@sfsidenotes + \newcommand{\@tufteh@marginfont}{\normalfont\scriptsize\sffamily} +\else + \newcommand{\@tufteh@marginfont}{\normalfont\scriptsize} +\fi + +%% +% \RaggedRight allows hyphenation + +\RequirePackage{ragged2e} +\setlength{\RaggedRightRightskip}{\z@ plus 0.08\hsize} + +%% +% Set the justification baesed on the `justified' class option + +\newcommand{\@tufteh@justification}{% + \if@tufteh@justified + \justifying + \else + \RaggedRight + \fi +} + +%% +% Turn off section numbering + +\setcounter{secnumdepth}{-1} + +%% +% Tighten up space between displays (e.g., a figure or table) and make symmetric + +\setlength\abovedisplayskip{6pt plus 2pt minus 4pt} +\setlength\belowdisplayskip{6pt plus 2pt minus 4pt} + +%% +% To implement full-width display environments + +\RequirePackage[strict]{chngpage} + +%% +% Detect if we're using pdfLaTeX +\IfFileExists{ifpdf.sty}{% + \RequirePackage{ifpdf} +}{% assume we're not using pdfTex? + \newif\ifpdf\pdffalse +} + +%% +% Detect if we're using XeLaTeX +\IfFileExists{ifxetex.sty}{% + \RequirePackage{ifxetex} +}{% not using xelatex + \newif\ifxetex\xetexfalse +} + + +% Compute length used for full-width displays + +\newlength{\@tufteh@overhang} +\setlength{\@tufteh@overhang}{\marginparwidth} +\addtolength{\@tufteh@overhang}{\marginparsep} + +%% +% Alter \maketitle from article.cls + +\renewcommand\maketitle{\par + \global\let\and\relax + \global\let\thanks\footnote + \begingroup + \newpage + \global\@topnum\z@ + \@maketitle + \endgroup + \global\let\thanks\relax + \global\let\maketitle\relax + \global\let\@maketitle\relax + \global\let\@thanks\@empty + %\global\let\@author\@empty + %\global\let\@date\@empty + %\global\let\@title\@empty + \global\let\title\relax + \global\let\author\relax + \global\let\date\relax +} +\def\@maketitle{% + \newpage + \noindent\sffamily\large{\allcaps{\@title}}\\ + \vskip0.5\baselineskip + \noindent\normalsize{\allcaps{\@author}}\\ + \vskip0.3\baselineskip + \noindent{\allcaps{\@date}} + \thispagestyle{plain} +} + +%% +% Abstract + +\renewenvironment{abstract}% + {\begin{quotation} + \begin{sffamily} + \begin{small}}% + { \end{small} + \end{sffamily} + \end{quotation}} + +%% +% Require paralist package for tighter lists + +\RequirePackage{paralist} + +% Add rightmargin to compactenum + +\def\@compactenum@{% + \expandafter\list\csname label\@enumctr\endcsname{% + \usecounter{\@enumctr}% + \rightmargin=2em% added this + \parsep\plparsep + \itemsep\plitemsep + \topsep\pltopsep + \partopsep\plpartopsep + \def\makelabel##1{\hss\llap{##1}}}} + +%% +% Improved letterspacing of small caps and all-caps text. +% +% First, try to use the `microtype' package, if it's available. +% Failing that, try to use the `soul' package, if it's available. +% Failing that, well, I give up. + +\RequirePackage{textcase} % provides \MakeTextUppercase and \MakeTextLowercase +\def\allcapsspacing{\relax} +\def\smallcapsspacing{\relax} +\newcommand{\allcaps}[1]{\MakeTextUppercase{\allcapsspacing{#1}}} +\newcommand{\smallcaps}[1]{\MakeTextLowercase{\textsc{#1}}} + +\newcommand{\@tufteh@loadsoul}{% + \IfFileExists{soul.sty}{% + \RequirePackage{soul} + \sodef\allcapsspacing{\upshape}{0.15em}{0.65em}{0.6em} + \sodef\smallcapsspacing{\scshape}{0.075em}{0.5em}{0.6em} + }{ + \PackageWarningNoLine{tufte-handout}{Couldn't locate `soul' package.} + }% soul not installed... giving up. +} + +% If we're using pdfLaTeX v1.40+, use the letterspace package. +% If we're using pdfLaTex < v1.40, use the soul package. +% If we're using XeLaTeX, use XeLaTeX letterspacing options. +% Otherwise fall back on the soul package. + +\ifpdf\PackageInfo{tufte-handout}{ifpdf = true} +\else\PackageInfo{tufte-handout}{ifpdf = false} +\fi + +\ifxetex\PackageInfo{tufte-handout}{ifxetex = true} +\else\PackageInfo{tufte-handout}{ifxetex = false} +\fi + + + +% Check pdfLaTeX version +\def\@tufteh@pdftexversion{0} +\ifx\normalpdftexversion\@undefined \else + \let\pdftexversion \normalpdftexversion + \let\pdftexrevision\normalpdftexrevision + \let\pdfoutput \normalpdfoutput +\fi +\ifx\pdftexversion\@undefined \else + \ifx\pdftexversion\relax \else + \def\@tufteh@pdftexversion{6} + \ifnum\pdftexversion < 140 + \def\@tufteh@pdftexversion{5} + \fi + \fi +\fi + +\ifnum\@tufteh@pdftexversion<6 + % pdfLaTeX version is too old or not using pdfLaTeX + \ifxetex + % TODO use xetex letterspacing + \PackageInfo{tufte-handout}{XeTeX detected. Reverting to `soul' package for letterspacing.} + \@tufteh@loadsoul + \else + \PackageInfo{tufte-handout}{Old version of pdfTeX detected. Reverting to `soul' package for letterspacing.} + \@tufteh@loadsoul + \fi +\else + \IfFileExists{letterspace.sty}{% + \PackageInfo{tufte-handout}{Modern version of pdfTeX detected. Using `letterspace' package.} + \RequirePackage{letterspace} + % Set up letterspacing (using microtype package) -- requires pdfTeX v1.40+ + \renewcommand{\smallcapsspacing}[1]{\textls[50]{##1}} + \renewcommand{\allcaps}[1]{\textls[200]{\MakeTextUppercase{##1}}} + \renewcommand{\smallcaps}[1]{\textsc{\MakeTextLowercase{##1}}} + }{% microtype failed, check for soul + \PackageInfo{tufte-handout}{Modern version of pdfTeX detected, but `letterspace' package not installed. Reverting to `soul' package for letterspacing.} + \@tufteh@loadsoul + } +\fi + + +\DeclareTextFontCommand{\textsmallcaps}{\scshape} +\renewcommand{\textsc}[1]{\textsmallcaps{\smallcapsspacing{#1}}} + + +%% +% An environment for paragraph-style section + +\providecommand\newthought[1]{\vspace{1.8\baselineskip plus 3pt minus 2pt}% + {\noindent\textsc{#1}}} + +%% +% Transform existing \footnotes into \sidenotes +% Sidenote: ``Where God meant footnotes to go.'' ---Tufte + +\RequirePackage[side,multiple]{footmisc} +\providecommand*{\footnotelayout}{\@tufteh@marginfont\@tufteh@justification} +\renewcommand{\footnotelayout}{\@tufteh@marginfont\@tufteh@justification} + +% Override footmisc's definition to set the sidenote marks (numbers) inside the +% sidenote's text block. +\long\def\@makefntext#1{\@textsuperscript{\@tufteh@marginfont\tiny\@thefnmark}\,\footnotelayout#1} + +% Set the in-text footnote mark in the same typeface as the body text itself. +\def\@makefnmark{\hbox{\@textsuperscript{\normalfont\scriptsize\@thefnmark}}} + +\let\sidenote\footnote + +%% +% Sidenote without the footnote mark + +\providecommand\marginnote[1]% + {\marginpar{\@tufteh@marginfont\@tufteh@justification #1}} + +%% +% Citations should go in the margin as well + +\RequirePackage{natbib} +\RequirePackage{bibentry} % allows bibitems to be typeset outside thebibliography environment +\nobibliography* % pre-loads the bibliography keys +\renewcommand{\cite}[1]{\sidenote{\bibentry{#1}.}} +\providecommand{\doi}[1]{\textsc{doi:} #1} % pre-defining this so it may be used before the \bibliography command it issued + +% TODO: Rewrite \cite so that you can specify multiple bib keys +% at once. For example, \cite{Author01,Author02} +% TODO: Combine sequences of citations so that 2,3,4,6 becomes 2-4,6 +% but be careful of hyperref interaction + +%% +% Make Tuftian-style section headings + +% TODO: I'd prefer to use the 'titlesec' package for this formatting, but +% I'll do it old-style for now. --Kevin + +\renewcommand\section{\@startsection {section}{1}{\z@}% + {-3.5ex \@plus -1ex \@minus -.2ex}% + {2.3ex \@plus.2ex}% + {\normalfont\large\it}} +\renewcommand\subsection{\@startsection{subsection}{2}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\normalsize\it}} + +% Subsubsection and following section headings shouldn't be used. +% See Bringhurst's _The Elements of Typography_, section 4.2.2. +\renewcommand\subsubsection{% + \PackageError{tufte-handout}{\noexpand\subsubsection is undefined by this class.% + \MessageBreak See Robert Bringhurst's _The Elements of + \MessageBreak Typographic Style_, section 4.2.2. + \MessageBreak \noexpand\subsubsection was used} + {From Bringhurst's _The Elements of Typographic Style_, section 4.2.2: Use as + \MessageBreak many levels of headings as you need, no more and no fewer. Also see the many + \MessageBreak related threads on Ask E.T. at http://www.edwardtufte.com/.} +} + +\renewcommand\paragraph{% + \PackageError{tufte-handout}{\noexpand\paragraph is undefined by this class.% + \MessageBreak See Robert Bringhurst's _The Elements of + \MessageBreak Typographic Style_, section 4.2.2. + \MessageBreak \noexpand\paragraph was used} + {From Bringhurst's _The Elements of Typographic Style_, section 4.2.2: Use as + \MessageBreak many levels of headings as you need, no more and no fewer. Also see the many + \MessageBreak related threads on Ask E.T. at http://www.edwardtufte.com/.} +} + +\renewcommand\subparagraph{% + \PackageError{tufte-handout}{\noexpand\subparagraph is undefined by this class.% + \MessageBreak See Robert Bringhurst's _The Elements of + \MessageBreak Typographic Style_, section 4.2.2. + \MessageBreak \noexpand\subparagraph was used} + {From Bringhurst's _The Elements of Typographic Style_, section 4.2.2: Use as + \MessageBreak many levels of headings as you need, no more and no fewer. Also see the many + \MessageBreak related threads on Ask E.T. at http://www.edwardtufte.com/.} +} + + +%% +% The placeins package provides the \FloatBarrier command. This forces +% LaTeX to place all of the floats before proceeding. We'll use this to +% keep the float (figure and table) numbers in sequence. +\RequirePackage{placeins} + +%% +% Margin figure environment + +\newsavebox{\@tufteh@marginfigbox} +\newenvironment{marginfigure}[1] + [-1.2ex] + {\FloatBarrier% process all floats before this point so the figure numbers stay in order. + \begin{lrbox}{\@tufteh@marginfigbox} + \begin{minipage}{\marginparwidth} + \@tufteh@marginfont + \def\@captype{figure} + \vspace*{#1} + \@tufteh@justification + } + {\end{minipage}% + \end{lrbox}% + \marginpar{\usebox{\@tufteh@marginfigbox}}} + + +%% +% Margin table environment +\newsavebox{\@tufteh@margintablebox} +\newenvironment{margintable}[1] + [-1.2ex] + {\FloatBarrier% process all floats before this point so the figure numbers stay in order. + \begin{lrbox}{\@tufteh@margintablebox} + \begin{minipage}{\marginparwidth} + \@tufteh@marginfont + \def\@captype{table} + \vspace*{#1} + \@tufteh@justification + } + {\end{minipage}% + \end{lrbox}% + \marginpar{\usebox{\@tufteh@margintablebox}}} + + +%% +% Full-width figure + +\renewenvironment{figure*}[1]% + [htbp]% + {\@float{figure}[#1]% + \if@tufteh@symmetric + \begin{adjustwidth}[]{}{-\@tufteh@overhang}% + \else + \begin{adjustwidth}{}{-\@tufteh@overhang}% + \fi + \begin{minipage}{\linewidth}}% + {\end{minipage}% + \end{adjustwidth}% + \end@float} + +%% +% Full-width table + +\renewenvironment{table*}[1] + [htbp]% + {\@float{table}[#1]% + \if@tufteh@symmetric + \begin{adjustwidth}[]{}{-\@tufteh@overhang}% + \else + \begin{adjustwidth}{}{-\@tufteh@overhang}% + \fi + \begin{minipage}{\linewidth}}% + {\end{minipage}% + \end{adjustwidth}% + \end@float} + +%% +% Full-page-width area + +\newenvironment{fullwidth} + {\if@tufteh@symmetric + \begin{adjustwidth}[]{}{-\@tufteh@overhang}% + \else + \begin{adjustwidth}{}{-\@tufteh@overhang}% + \fi + } + {\end{adjustwidth}} + +%% +% Format the captions in a style similar to the sidenotes + +\RequirePackage[format=default,font={rm,scriptsize},justification=raggedright,singlelinecheck=false]{caption} + +% if the `sfsidenotes' option is specified, set the captions in sf, too. +\if@tufteh@sfsidenotes + \captionsetup{font={sf,scriptsize}} +\else + \captionsetup{font={rm,scriptsize}} +\fi + +% if the `justified' option is specified, set the captions in flush left +% and flush right +\if@tufteh@justified + \captionsetup{justification=justified} +\else + \captionsetup{justification=raggedright} +\fi + +%% +% If the Palatino typeface (and its math symbol set) are installed, load them. + +\IfFileExists{palatino.sty}{% + \RequirePackage{palatino} + \IfFileExists{mathpazo.sty}{\RequirePackage[osf,sc]{mathpazo}}{} +}{} % if the Palatino typefaces aren't found, do nothing. + + +%% +% If the Bera Mono typeface is available, use it. + +\IfFileExists{beramono.sty}{% + \RequirePackage[T1]{fontenc} + \RequirePackage[scaled=0.85]{beramono} +}{} + + +%% +% Sets up the running heads and folios. + +\RequirePackage{fancyhdr} + +% Set the header/footer width to be the body text block plus the margin +% note area. +\if@tufteh@symmetric + \fancyhfoffset[LE,RO]{\@tufteh@overhang} +\else + \fancyhfoffset[RE,RO]{\@tufteh@overhang} +\fi + +% The 'fancy' page style is the default style for all pages. +\fancyhf{} % clear header and footer fields +\if@tufteh@twoside + \fancyhead[LE]{\thepage\quad\smallcaps{\@author}} + \fancyhead[RO]{\smallcaps{\@title}\quad\thepage} +\else + \fancyhead[RE,RO]{\smallcaps{\@title}\quad\thepage} +\fi +\renewcommand{\headrulewidth}{0pt} +\renewcommand{\footrulewidth}{0pt} + +% The 'plain' page style is used on chapter opening pages. +\fancypagestyle{plain}{ + \fancyhf{} % clear header and footer fields + \if@tufteh@twoside + \fancyfoot[LE,RO]{\thepage} + \else + \fancyfoot[RE,RO]{\thepage} + \fi +} + +% The 'empty' page style suppresses all headers and footers. +% It's used on title pages and `intentionally blank' pages. +\fancypagestyle{empty}{ + \fancyhf{} % clear header and footer fields +} + +% Set the default page style to 'fancy' +\pagestyle{fancy} + + +%% +% Set raggedright and paragraph indentation for document + +\AtBeginDocument{\@tufteh@justification\setlength\parindent{1em}} + + +%% +% Prints the list of class options and their states. +\newcommand{\printclassoptions}{% + \texttt{symmetric}---\if@tufteh@symmetric true\else false\fi\\ + \texttt{a4paper}---\if@tufteh@afourpaper true\else false\fi\\ + \texttt{twoside}---\if@tufteh@twoside true\else false\fi\\ + \texttt{sfsidenotes}---\if@tufteh@sfsidenotes true\else false\fi\\ + \texttt{justified}---\if@tufteh@justified true\else false\fi +} + +\endinput -- cgit v1.2.3