|
- \NeedsTeXFormat{LaTeX2e}[1994/06/01]
-
- \ProvidesClass{tufte-handout}[2008/02/11 v1.2.3 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}
-
- % FIXME: should probably specify options not supported like Mittelbach's aipproc.cls
-
- \DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
- \ProcessOptions
-
- \LoadClass{article}%
-
- %%
- % Set page layout geometry
-
- \if@tufteh@afourpaper
- \RequirePackage[a4paper,includemp,width=170mm,marginparsep=10mm,marginparwidth=50mm]{geometry}
- \else
- \RequirePackage[letterpaper,includemp,width=6.5in,marginparsep=0.375in,marginparwidth=2in]{geometry}
- \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
-
- %%
- % Modify \raggedright from latex.ltx to allow hyphenation per Donald Arseneau
-
- \def\@tufteh@raggedright{%
- \let\\\@centercr\@rightskip\z@ plus 0.08\hsize
- \rightskip\@rightskip
- \leftskip\z@skip}
-
- %%
- % 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{chngpage}
-
- % 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{\@title}\\
- \vskip0.5\baselineskip
- \noindent\normalsize{\@author}\\
- \vskip0.3\baselineskip
- \noindent{\@date}
- \thispagestyle{empty}
- }
-
- %%
- % 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}}}}
-
- %%
- % An environment for paragraph-style section
-
- \providecommand\newthought[1]{\vspace{1.8\baselineskip plus 3pt minus 2pt}%
- {\noindent\scshape #1}}
-
- %%
- % Transform existing \footnotes into \sidenotes
- % Sidenote: ``Where God meant footnotes to go.'' ---Tufte
-
- \RequirePackage[side,multiple]{footmisc}
- \newcommand{\footnotelayout}{\@tufteh@marginfont\@tufteh@raggedright}
-
- % 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\raggedright #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 hypperref interaction
-
-
- %%
- % 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
-
- \newcommand{\marginfigure}[2]%
- [-1.2ex]%
- {\FloatBarrier% process all floats before this point so the figure numbers stay in order.
- \marginpar{\@tufteh@marginfont
- \def\@captype{figure}
- \vspace*{#1}
- \@tufteh@raggedright #2}}
-
- % FIXME: if anyone can make this an environment instead -- patch welcome!
-
- %%
- % Margin table
-
- \newcommand{\margintable}[2]%
- [-1.2ex]%
- {\FloatBarrier% process all floats before this point so the table numbers stay in order.
- \marginpar{\@tufteh@marginfont
- \def\@captype{table}
- \vspace*{#1}
- \@tufteh@raggedright #2}}
-
- % FIXME: if anyone can make this an environment instead -- patch welcome!
-
- %%
- % Full-width figure
-
- \renewenvironment{figure*}[1]%
- [htbp]%
- {\@float{figure}[#1]%
- \begin{adjustwidth}{}{-\@tufteh@overhang}%
- \begin{minipage}{\linewidth}}%
- {\end{minipage}%
- \end{adjustwidth}%
- \end@float}
-
- %%
- % Full-width table
-
- \renewenvironment{table*}[1]
- [htbp]%
- {\@float{table}[#1]%
- \begin{adjustwidth}{}{-\@tufteh@overhang}%
- \begin{minipage}{\linewidth}}%
- {\end{minipage}%
- \end{adjustwidth}%
- \end@float}
-
- %%
- % Full-page-width area
-
- \newenvironment{fullwidth}
- {\begin{adjustwidth}{}{-\@tufteh@overhang}}%
- {\end{adjustwidth}}
-
- %%
- % Format the captions in a style similar to the sidenotes
-
- % if 'sfsidenotes' option is specified, set the captions in sf, too.
- \if@tufteh@sfsidenotes
- \RequirePackage[format=default,font={sf,scriptsize},justification=raggedright,singlelinecheck=false]{caption}
- \else
- \RequirePackage[format=default,font={rm,scriptsize},justification=raggedright,singlelinecheck=false]{caption}
- \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.
-
- %%
- % Set raggedright and paragraph indentation for document
-
- \AtBeginDocument{\@tufteh@raggedright\setlength\parindent{1em}}
-
- \endinput
|