%% %% This is file `savetrees.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% savetrees.dtx (with options: `package') %% %% This is a generated file. %% %% Copyright (C) 2016 by Scott Pakin %% %% This file may be distributed and/or modified under the conditions of %% the LaTeX Project Public License, either version 1.3c of this license %% or (at your option) any later version. The latest version of this %% license is in: %% %% http://www.latex-project.org/lppl.txt %% %% and version 1.3c or later is part of all distributions of LaTeX version %% 2006/05/20 or later. %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesPackage{savetrees} [2016/04/13 v2.4 Pack as much text as possible onto each page] \newcommand*{\st@margin@width}{1.5cm} \newcommand*{\st@parindent}{1em} \newcommand*{\st@baselinestretch}{0.95} \newcommand*{\st@char@shrink}{50} \newcommand*{\st@cspace@shrink}{-25} \newcommand*{\st@wspace@factor}{0.8} \RequirePackage{xkeyval} \RequirePackage{ifpdf} \RequirePackage{ifluatex} \def\st@more@packages{} \newcommand*{\st@RequirePackage}[2][]{% \PassOptionsToPackage{#1}{#2}% \@cons\st@more@packages{{#2}}% } \AtEndOfPackage{% \let\@elt=\RequirePackage \st@more@packages \let\@elt=\relax } \newcommand*{\st@define@option}[1]{% \expandafter\newif\csname if@st@tight@#1\endcsname \csname @st@tight@#1true\endcsname \define@choicekey{savetrees}{#1}[\st@arg\st@arg@num]{tight,normal}[tight]{% \ifnum\st@arg@num=0 \csname @st@tight@#1true\endcsname \else \csname @st@tight@#1false\endcsname \fi }% \DeclareOptionX{#1}[tight]{\csname KV@savetrees@#1\endcsname{##1}}% } \st@define@option{sections} \st@define@option{margins} \st@define@option{lists} \st@define@option{floats} \st@define@option{indent} \st@define@option{title} \st@define@option{leading} \st@define@option{paragraphs} \st@define@option{charwidths} \st@define@option{tracking} \st@define@option{wordspacing} \st@define@option{bibliography} \st@define@option{bibnotes} \st@define@option{bibbreaks} \st@define@option{mathspacing} \st@define@option{mathdisplays} \define@choicekey{savetrees}{all}[\st@arg\st@arg@num]{tight,normal}[tight]{% \ifnum\st@arg@num=0 \@st@tight@sectionstrue \@st@tight@marginstrue \@st@tight@liststrue \@st@tight@floatstrue \@st@tight@indenttrue \@st@tight@titletrue \@st@tight@leadingtrue \@st@tight@paragraphstrue \@st@tight@charwidthstrue \@st@tight@trackingtrue \@st@tight@wordspacingtrue \@st@tight@bibliographytrue \@st@tight@bibnotestrue \@st@tight@bibbreakstrue \@st@tight@mathspacingtrue \@st@tight@mathdisplaystrue \else \@st@tight@sectionsfalse \@st@tight@marginsfalse \@st@tight@listsfalse \@st@tight@floatsfalse \@st@tight@indentfalse \@st@tight@titlefalse \@st@tight@leadingfalse \@st@tight@paragraphsfalse \@st@tight@charwidthsfalse \@st@tight@trackingfalse \@st@tight@wordspacingfalse \@st@tight@bibliographyfalse \@st@tight@bibnotesfalse \@st@tight@bibbreaksfalse \@st@tight@mathspacingfalse \@st@tight@mathdisplaysfalse \fi } \DeclareOptionX{all}[tight]{\KV@savetrees@all{#1}} \define@key{savetrees}{subtle}{% \setkeys{savetrees}{% all=normal, paragraphs=tight, floats=tight, mathspacing=tight, wordspacing=tight, tracking=tight, bibbreaks=tight }% } \DeclareOptionX{subtle}{\KV@savetrees@subtle} \define@key{savetrees}{moderate}{% \setkeys{savetrees}{% subtle=yes, charwidths=tight, mathdisplays=tight, lists=tight, indent=tight, leading=tight, bibnotes=tight }% } \DeclareOptionX{moderate}{\KV@savetrees@moderate} \DeclareOptionX{extreme}{% \setkeys{savetrees}{all=tight}% } \DeclareOptionX{marginwidth}{\gdef\st@margin@width{#1}} \DeclareOptionX{parindent}{\gdef\st@parindent{#1}} \DeclareOptionX{leadingfraction}{\gdef\st@baselinestretch{#1}} \DeclareOptionX{charwidthfraction}{% \@tempdima=#1pt \multiply\@tempdima by -1000 \advance\@tempdima by 1000pt \divide\@tempdima by 65536 \@tempcnta=\@tempdima \xdef\st@char@shrink{\the\@tempcnta}% } \DeclareOptionX{trackingfraction}{% \@tempdima=#1pt \advance\@tempdima by -1pt \multiply\@tempdima by 1000 \divide\@tempdima by 65536 \@tempcnta=\@tempdima \xdef\st@cspace@shrink{\the\@tempcnta}% } \DeclareOptionX{wordspacingfraction}{\gdef\st@wspace@factor{#1}} \newcommand*{\st@mark@as@obsolete}[2]{% \define@key{savetrees}{#1}[tight]{% \PackageError{savetrees}{Package option `#1' is no longer supported}{% Rather than `#1', please specify `#2=normal'.\MessageBreak Instead of enabling all features by default and letting the\MessageBreak user selectively disable them, savetrees now provides the\MessageBreak ability to turn features on or off as desired, including all\MessageBreak features en masse.}% \csname @st@tight@#2false\endcsname }% \DeclareOptionX{#1}[tight]{\csname KV@savetrees@#1\endcsname{##1}}% } \st@mark@as@obsolete{normalsections}{sections} \st@mark@as@obsolete{normalmargins}{margins} \st@mark@as@obsolete{normallists}{lists} \st@mark@as@obsolete{normalfloats}{floats} \st@mark@as@obsolete{normalindent}{indent} \st@mark@as@obsolete{normaltitle}{title} \st@mark@as@obsolete{normalleading}{leading} \st@mark@as@obsolete{normallooseness}{paragraphs} \st@mark@as@obsolete{normalcharwidths}{charwidths} \st@mark@as@obsolete{normalbib}{bibliography} \st@mark@as@obsolete{normalbibnotes}{bibnotes} \ProcessOptionsX\relax \if@st@tight@sections \st@RequirePackage[tiny,compact]{titlesec} \fi \if@st@tight@margins \st@RequirePackage[lmargin=\st@margin@width, rmargin=\st@margin@width, tmargin=\st@margin@width, bmargin=\st@margin@width, includefoot, footskip=2ex]{geometry} \fi \if@st@tight@lists \st@RequirePackage{calc} \def\itemize{% \ifnum \@itemdepth >\thr@@\@toodeep\else \advance\@itemdepth\@ne \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% \expandafter \list \csname\@itemitem\endcsname {\def\makelabel##1{\hss\llap{##1}}% \settowidth{\leftmargin}{\csname\@itemitem\endcsname}% \addtolength{\leftmargin}{\labelsep * \@itemdepth}% \setlength{\partopsep}{0pt plus 4pt}% \setlength{\topsep}{0pt plus 4pt}% \setlength{\itemsep}{0pt}% \setlength{\parsep}{0pt}% \setlength{\listparindent}{\st@parindent}% }% \fi} \def\enumerate{% \ifnum \@enumdepth >\thr@@\@toodeep\else \advance\@enumdepth\@ne \edef\@enumctr{enum\romannumeral\the\@enumdepth}% \expandafter \list \csname label\@enumctr\endcsname {\usecounter\@enumctr\def\makelabel##1{\hss\llap{##1}}% \settowidth{\leftmargin}{\csname label\@enumctr\endcsname}% \addtolength{\leftmargin}{\labelsep * \@enumdepth}% \setlength{\partopsep}{0pt plus 4pt}% \setlength{\topsep}{0pt plus 4pt}% \setlength{\itemsep}{0pt}% \setlength{\parsep}{0pt}% \setlength{\listparindent}{\st@parindent}% } \fi} \renewenvironment{description}{% \begin{list}{}{\setlength{\leftmargin}{1pc}% \setlength{\itemindent}{-\leftmargin}% \setlength{\partopsep}{0pt plus 4pt}% \setlength{\topsep}{0pt plus 4pt}% \setlength{\itemsep}{0pt}% \setlength{\parsep}{0pt}% \setlength{\labelwidth}{0pt}% \setlength{\listparindent}{\st@parindent}% \let\makelabel\descriptionlabel}% }{% \end{list} } \fi \if@st@tight@floats \renewcommand{\topfraction}{0.85} \renewcommand{\bottomfraction}{0.85} \renewcommand{\textfraction}{0.1} \renewcommand{\floatpagefraction}{0.85} \renewcommand{\dbltopfraction}{0.85} \renewcommand{\dblfloatpagefraction}{.85} \setcounter{topnumber}{25} \setcounter{bottomnumber}{25} \setcounter{totalnumber}{25} \setcounter{dbltopnumber}{25} \fi \if@st@tight@indent \setlength{\parindent}{\st@parindent} \fi \if@st@tight@title \def\@maketitle{% \newpage \mbox{}% \begingroup \centering \let \footnote \thanks {\large \textbf{\@title}\par} \vskip 0.5\baselineskip \begin{tabular}[t]{c}% \@author \end{tabular}\par \vskip 0.5\baselineskip \@date \par \endgroup \vskip \baselineskip } \fi \if@st@tight@leading \renewcommand{\baselinestretch}{\st@baselinestretch} \fi \if@st@tight@paragraphs \let\markeverypar\everypar \newtoks\everypar \everypar\markeverypar \markeverypar{\the\everypar\looseness=-1\relax} \fi \if@st@tight@charwidths \ifpdf \st@RequirePackage[stretch=0,shrink=\st@char@shrink]{microtype} \fi \fi \if@st@tight@tracking \ifpdf \ifluatex \else \st@RequirePackage[letterspace=\st@cspace@shrink,tracking=all]{microtype} \fi \fi \fi \if@st@tight@wordspacing \g@addto@macro\define@newfont{% \fontdimen2\font@name=\st@wspace@factor\fontdimen2\font@name }% \fontdimen2\font@name=\st@wspace@factor\fontdimen2\font@name \fi \if@st@tight@bibliography \renewenvironment{thebibliography}[1]{% \@ifundefined{chapter}{% \section*{\refname \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}}% }{% \chapter*{\bibname \@mkboth{\MakeUppercase\bibname}{\MakeUppercase\bibname}}% }% \list{\@biblabel{\@arabic\c@enumiv}}% {\settowidth\labelwidth{\@biblabel{#1}}% \leftmargin\labelwidth \advance\leftmargin\labelsep \setlength{\parsep}{0pt}% \setlength{\itemsep}{1pt}% \@openbib@code \usecounter{enumiv}% \let\p@enumiv\@empty \renewcommand\theenumiv{\@arabic\c@enumiv}}% \small \sloppy \clubpenalty150 \@clubpenalty \clubpenalty \widowpenalty150% \sfcode`\.\@m }{% \def\@noitemerr {\@latex@warning{Empty `thebibliography' environment}}% \endlist } \AtBeginDocument{% \@ifundefined{bibfont}{}{% \renewcommand*{\bibfont}{\normalfont\small}% \bibitemsep=0pt plus 2pt\relax }% }% \fi \if@st@tight@bibnotes \newcommand{\savetreesbibnote}[1]{\@gobble} \else \newcommand{\savetreesbibnote}[1]{#1} \fi \if@st@tight@bibbreaks \AtBeginDocument{% \@ifundefined{bibsetup}{}{% \renewcommand*{\bibsetup}{% \interlinepenalty=100\relax \widowpenalty=100\relax \clubpenalty=100\relax \raggedbottom \frenchspacing \biburlsetup }% }% }% \fi \if@st@tight@mathspacing \AtBeginDocument{% \thinmuskip=0mu plus 3mu \medmuskip=1mu plus 4mu \thickmuskip=2mu plus 5mu } \fi \if@st@tight@mathdisplays \AtBeginDocument{% \abovedisplayskip=0pt plus 3pt \belowdisplayskip=0pt plus 3pt \abovedisplayshortskip=0pt plus 3pt \belowdisplayshortskip=0pt plus 3pt } \fi \endinput %% %% End of file `savetrees.sty'.