diff options
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.cls | 550 |
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 |