summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/tufte-latex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2008-11-17 01:23:04 +0000
committerKarl Berry <karl@freefriends.org>2008-11-17 01:23:04 +0000
commit3ff3de6f9871e3d4b2fba4c616fa3a83e2ee39ab (patch)
tree034c446908f474c08bcdb8912f931a144dad61f2 /Master/texmf-dist/source/latex/tufte-latex
parent7501fa1170fbcbcbaad8364cc865a056a9aa90c0 (diff)
tufte-latex update (16nov08)
git-svn-id: svn://tug.org/texlive/trunk@11312 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/tufte-latex')
-rw-r--r--Master/texmf-dist/source/latex/tufte-latex/sample-handout.bib57
-rw-r--r--Master/texmf-dist/source/latex/tufte-latex/sample-handout.tex330
-rw-r--r--Master/texmf-dist/source/latex/tufte-latex/tufte-handout.cls552
3 files changed, 939 insertions, 0 deletions
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