summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/tufte-latex/tufte-handout.cls
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-05-18 23:25:02 +0000
committerKarl Berry <karl@freefriends.org>2009-05-18 23:25:02 +0000
commit7c769b8e95cd5bd87da30c618e5198d6d12461e1 (patch)
tree6518993393c24294d5449771ed8e0bf2098b25dd /Master/texmf-dist/tex/latex/tufte-latex/tufte-handout.cls
parentfec32543c0ec1c6ff61656ca2662d38390745593 (diff)
tufte-latex update (17may09)
git-svn-id: svn://tug.org/texlive/trunk@13216 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/tufte-latex/tufte-handout.cls')
-rw-r--r--Master/texmf-dist/tex/latex/tufte-latex/tufte-handout.cls550
1 files changed, 24 insertions, 526 deletions
diff --git a/Master/texmf-dist/tex/latex/tufte-latex/tufte-handout.cls b/Master/texmf-dist/tex/latex/tufte-latex/tufte-handout.cls
index 8075ec3c164..ca9ab630829 100644
--- a/Master/texmf-dist/tex/latex/tufte-latex/tufte-handout.cls
+++ b/Master/texmf-dist/tex/latex/tufte-latex/tufte-handout.cls
@@ -1,552 +1,50 @@
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
-\ProvidesClass{tufte-handout}[2008/11/16 v2.0.1 Tufte-handout class]
+\ProvidesClass{tufte-handout}[2009/05/17 v3.0.0 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
+% The symmetric option forces twoside.
+\DeclareOption{symmetric}{%
+ \ExecuteOptions{twoside}
+ \PassOptionsToPackage{twoside}{tufte-common}
\PassOptionsToClass{twoside}{article}
+ \PackageInfo{tufte-handout}{Passing twoside to `article' class}
}
-%%
-% 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}}
+\PassOptionsToPackage{handout}{tufte-common}
+\DeclareOption*{% pass options to tufte-common package and the article class
+ \PassOptionsToPackage{\CurrentOption}{tufte-common}
+ \PassOptionsToClass{\CurrentOption}{article}
+ \PackageInfo{tufte-handout}{Passing \CurrentOption\space to `article' class}
+}
\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
-}
-
+\RequirePackage{tufte-common}
-% 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}
-}
+% Set up any handout-specific stuff now
%%
% 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}
+% TODO The abstract should be printed on its own page of the `titlepage'
+% option was specified.
+\renewenvironment{abstract}
+ {\begin{quotation}\if@tufte@sfsidenotes\begin{sffamily}\fi}
+ {\if@tufte@sfsidenotes\end{sffamily}\fi\end{quotation}}
%%
-% Set raggedright and paragraph indentation for document
+% If there is a `tufte-handout-local.tex' file, load it.
-\AtBeginDocument{\@tufteh@justification\setlength\parindent{1em}}
+\IfFileExists{tufte-handout-local.tex}
+ {\input{tufte-handout-local}}
+ {}
%%
-% 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
-}
-
+% End of file
\endinput