diff options
author | Karl Berry <karl@freefriends.org> | 2014-12-21 00:01:48 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2014-12-21 00:01:48 +0000 |
commit | 1436604c912a222eb97ca0668b29a50bac05ea3d (patch) | |
tree | af50712d3b9477bfbc332b48caf8b0c0ce176619 /Master/texmf-dist/source/latex/savetrees/savetrees.dtx | |
parent | 39853cd005fdc89e9ebd9c0fdd5f0a4b339cdeaf (diff) |
savetrees (20dec14)
git-svn-id: svn://tug.org/texlive/trunk@35871 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/savetrees/savetrees.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/savetrees/savetrees.dtx | 265 |
1 files changed, 234 insertions, 31 deletions
diff --git a/Master/texmf-dist/source/latex/savetrees/savetrees.dtx b/Master/texmf-dist/source/latex/savetrees/savetrees.dtx index 06f3ac51621..11737e59429 100644 --- a/Master/texmf-dist/source/latex/savetrees/savetrees.dtx +++ b/Master/texmf-dist/source/latex/savetrees/savetrees.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2013 by Scott Pakin <scott+st@pakin.org> +% Copyright (C) 2014 by Scott Pakin <scott+st@pakin.org> % ------------------------------------------------------ % % This file may be distributed and/or modified under the @@ -16,14 +16,16 @@ % \fi % % \iffalse +%<bbxfile>\ProvidesFile{savetrees.bbx} +%<cbxfile>\ProvidesFile{savetrees.cbx} +%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01] +%<package>\ProvidesPackage{savetrees} %<*driver> \ProvidesFile{savetrees.dtx} %</driver> -%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01] -%<package>\ProvidesPackage{savetrees} -%<*package> - [2013/04/09 v2.1 Pack as much text as possible onto each page] -%</package> +%<*package|bbxfile|cbxfile> + [2014/12/19 v2.3 Pack as much text as possible onto each page] +%</package|bbxfile|cbxfile> % %<*driver> \documentclass{ltxdoc} @@ -40,6 +42,22 @@ \usepackage[tracking]{microtype} \SetExpansion[context=tightcharwidths,stretch=0,shrink=55]{encoding=*,shape=*}{} \usepackage{hyperref} +\usepackage{hyperxmp} +\hypersetup{% + pdftitle={The savetrees package}, + pdfauthor={Scott Pakin}, + pdfsubject={Reduce a LaTeX document's page count by adjusting the formatting}, + pdfkeywords={LaTeX, reduce document size, margins, whitespace, page count}, + pdfcopyright={Copyright (C) \the\year, Scott Pakin}, + pdflicenseurl={http://www.latex-project.org/lppl.txt}, + pdfcaptionwriter={Scott Pakin}, + pdfcontactregion={New Mexico}, + pdfcontactcountry={USA}, + pdfcontactemail={scott+st@pakin.org}, + pdfcontacturl={http://www.pakin.org/\xmptilde scott/}, + baseurl={http://mirror.ctan.org/macros/latex/contrib/savetrees/savetrees.pdf}, + pdflang={en-US} +} \EnableCrossrefs \CodelineIndex \setcounter{IndexColumns}{2} @@ -62,7 +80,7 @@ %</driver> % \fi % -% \CheckSum{484} +% \CheckSum{527} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -82,6 +100,9 @@ % % % \changes{v1.0}{2002/07/06}{Initial version} +% \changes{v2.2}{2014/02/19}{Disabled \textsf{tracking}'s effect +% except when called from pdf\LaTeX, and disabled \textsf{charwidths}'s +% effect except when called from either pdf\LaTeX\ or Lua\LaTeX} % % \GetFileInfo{savetrees.dtx} % @@ -365,6 +386,10 @@ % Option & Space-saving technique & Implementation \\ % \midrule % +% \pkgoption{bibbreaks} +% & Allow page breaks within bibliographic entries. +% & Redefine Biblatex's \texttt{\string\bibsetup} hook. \\ +% % \pkgoption{paragraphs} % & Discourage \TeX\ from allowing the last line of a paragraph to % contain only a single word. @@ -406,7 +431,8 @@ % % \pkgoption{bibnotes} % & Ignore \texttt{NOTE} fields in the bibliography. -% & Pass information to |savetrees.bst|. \\ +% & Pass information to |savetrees.bst| (\BibTeX) or |savetrees.bbx| +% (Biblatex). \\ % % \pkgoption{charwidths} % & Allow character glyphs to be drawn slightly narrower than @@ -452,7 +478,7 @@ % \pkgoption{bibliography} % & Typeset the bibliography in a smaller font and with no inter-item % spacing. -% & Redefine \texttt{thebibliography}. \\ +% & Redefine \texttt{thebibliography}, |\bibfont|, and |\bibitemsep|. \\ % % \pkgoption{title} % & Typeset the document title with smaller fonts and with less @@ -585,7 +611,7 @@ % % \section{Abbreviating bibliographic information} % -% One of the advantages of a tool like \BibTeX{} is that the +% One of the advantages of a tool like \BibTeX\ is that the % bibliographic database can---and should---contain complete % bibliographic information for each reference while style files % determine the subset of that information that is actually typeset. @@ -686,8 +712,26 @@ % etc.), with the exception that the |NOTE| field is suppressed unless % the |bibnotes=normal| package option is provided. % -% As of version~2.0 of \pkgname{savetrees}, |savetrees.bib| can be used -% independently of |savetrees.sty|. +% \bigskip +% +% In addition to |savetrees.bst|, \pkgname{savetrees} provides analogous +% Biblatex style files: |savetrees.bbx| and |savetrees.cbx|. Like their +% \BibTeX\ counterpart, they use abbreviated terms whenever possible, +% list at most two authors before truncating them with ``et~al.'', and +% abbreviate authors' names to initials plus surname. +% +% To use the \pkgname{savetrees} Biblatex style files, simply load +% \pkgname{biblatex} with ``|\usepackage[style=savetrees]{biblatex}|''. +% By default, the bibliography style suppresses the |isbn| |url|, |doi|, +% and |eprint| fields from typesetting, but these can be re-enabled +% explicitly: +% +% \begin{verbatim} +% \usepackage[style=savetrees,isbn,url,doi,eprint]{biblatex} +% \end{verbatim} +% +% The \pkgname{savetrees} \BibTeX\ and Biblatex style files can be +% used independently of |savetrees.sty|. % % % \changes{v2.0}{2011/05/03}{Removed the awkward-to-use @@ -926,9 +970,9 @@ % teaching instrument for \LaTeX{} newcomers who want to learn more % about fine-tuning document formatting. % -% \begin{macrocode} +% \iffalse %<*package> -% \end{macrocode} +% \fi % % \subsection{Default values} % @@ -1026,6 +1070,13 @@ \RequirePackage{xkeyval} % \end{macrocode} % +% \pkgname{savetrees} uses the \pkgname{ifpdf} and \pkgname{ifluatex} +% packages to control the use of the \pkgname{microtype} package. +% \begin{macrocode} +\RequirePackage{ifpdf} +\RequirePackage{ifluatex} +% \end{macrocode} +% % \begin{macro}{\st@more@packages} % \begin{macro}{\st@RequirePackage} % As we process the package options we may encounter additional packages @@ -1308,6 +1359,21 @@ % \end{macro} % \end{macro} % +% \begin{macro}{\if@st@tight@bibbreaks} +% \begin{macro}{\@st@tight@bibbreakstrue} +% \begin{macro}{\@st@tight@bibbreaksfalse} +% \begin{macro}{\KV@savetrees@bibbreaks} +% The \pkgoption{bibbreaks} package option allows Biblatex to break +% pages within bibliographic items. +% \begin{macrocode} +\st@define@option{bibbreaks} +% \end{macrocode} +% \pkgoptiondecl{bibbreaks} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% % \begin{macro}{\if@st@tight@mathspacing} % \begin{macro}{\@st@tight@mathspacingtrue} % \begin{macro}{\@st@tight@mathspacingfalse} @@ -1369,6 +1435,7 @@ \@st@tight@wordspacingtrue \@st@tight@bibliographytrue \@st@tight@bibnotestrue + \@st@tight@bibbreakstrue \@st@tight@mathspacingtrue \@st@tight@mathdisplaystrue \else @@ -1385,6 +1452,7 @@ \@st@tight@wordspacingfalse \@st@tight@bibliographyfalse \@st@tight@bibnotesfalse + \@st@tight@bibbreaksfalse \@st@tight@mathspacingfalse \@st@tight@mathdisplaysfalse \fi @@ -1413,7 +1481,8 @@ floats=tight, mathspacing=tight, wordspacing=tight, - tracking=tight + tracking=tight, + bibbreaks=tight }% } \DeclareOptionX{subtle}{\KV@savetrees@subtle} @@ -1870,11 +1939,13 @@ % white space. \pkgname{savetrees} hijacks this feature as a % space-saving mechanisms by specifying a maximum expansion of~0\% of a % character's natural width but a maximum contraction of greater -% than~0\%. -% +% than~0\%. At the time of this writing, this feature works only with +% pdf\LaTeX\ and Lua\LaTeX. % \begin{macrocode} \if@st@tight@charwidths - \st@RequirePackage[stretch=0,shrink=\st@char@shrink]{microtype} + \ifpdf + \st@RequirePackage[stretch=0,shrink=\st@char@shrink]{microtype} + \fi \fi % \end{macrocode} % @@ -1887,11 +1958,17 @@ % tracking feature. Rather than using tracking with a light touch and % just in certain contexts (e.g.,~small caps), we instruct % \pkgname{microtype} to track somewhat aggressively, shaving off a few -% percent of an em~width between \emph{every} pair of characters. +% percent of an em~width between \emph{every} pair of characters. At +% the time of this writing, this feature works only with pdf\LaTeX. % % \begin{macrocode} \if@st@tight@tracking - \st@RequirePackage[letterspace=\st@cspace@shrink,tracking=all]{microtype} + \ifpdf + \ifluatex + \else + \st@RequirePackage[letterspace=\st@cspace@shrink,tracking=all]{microtype} + \fi + \fi \fi % \end{macrocode} % @@ -1985,22 +2062,42 @@ % \begin{macrocode} \small % \end{macrocode} -% We finish up using the original code. +% We finish up using the original code, except we reduce the club and +% widow penalties from~4000 to~150. +% \changes{v2.3}{2014/12/19}{Reduced club and widow penalties from~4000 to~150} % \begin{macrocode} \sloppy - \clubpenalty4000 + \clubpenalty150 \@clubpenalty \clubpenalty - \widowpenalty4000% + \widowpenalty150% \sfcode`\.\@m }{% \def\@noitemerr {\@latex@warning{Empty `thebibliography' environment}}% \endlist } -\fi % \end{macrocode} % \end{environment} % +% \changes{v2.3}{2014/12/19}{Made \protect\texttt{bibliography!=tight} work with +% Biblatex, not just \protect\BibTeX} +% \begin{macro}{\bibfont} +% \begin{macro}{\bibitemsep} +% If the \pkgname{biblatex} package was loaded we use Biblatex's +% mechanisms for reducing the font size to |\small| (|\bibfont|) and +% for omitting blank lines between bibliographic entries (|\bibitemsep|). +% \begin{macrocode} + \AtBeginDocument{% + \@ifundefined{bibfont}{}{% + \renewcommand*{\bibfont}{\normalfont\small}% + \bibitemsep=0pt plus 2pt\relax + }% + }% +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% % % \subsection{Bibliographic notes} % \label{sec:bibliographic-notes} @@ -2029,6 +2126,41 @@ % \labelprevcodeline{code:stbn-end} % \end{macro} % +% \subsection{Page breaks within bibliographies} +% \label{sec:bibliographic-breaks} +% +% The Biblatex package strongly discourages \TeX\ from breaking pages +% within a bibliographic entry. Instead, \TeX\ is told to favor pushing +% an entire bibliographic entry onto the next page. Setting +% |bibbreaks=tight| changes Biblatex's behavior to allow page breaks to +% appear anywhere in a bibliography. The setting has no effect on +% \BibTeX, only Biblatex. +% \changes{v2.3}{2014/12/19}{Added support for allowing page breaks +% within Biblatex bibliographies} +% \labelnextcodeline{code:stbb-begin} +% \begin{macrocode} +\if@st@tight@bibbreaks + \AtBeginDocument{% + \@ifundefined{bibsetup}{}{% +% \end{macrocode} +% \begin{macro}{\bibsetup} +% The \pkgname{biblatex} package was loaded. Redefine its |\bibsetup| hook. +% \begin{macrocode} + \renewcommand*{\bibsetup}{% + \interlinepenalty=100\relax + \widowpenalty=100\relax + \clubpenalty=100\relax + \raggedbottom + \frenchspacing + \biburlsetup + }% + }% + }% +\fi +% \end{macrocode} +% \end{macro} +% \labelprevcodeline{code:stbb-end} +% % \subsection{Mathematical expressions} % \label{sec:math-exprs} % @@ -2072,12 +2204,12 @@ \fi % \end{macrocode} % -% \begin{macrocode} +% \iffalse %</package> -% \end{macrocode} +% \fi % % -% \section{Implementation of \texttt{savetrees.bst}} +% \section{Implementation of the \texorpdfstring{\BibTeX}{BibTeX} style file} % \label{sec:savetrees.bst} % % In addition to a \LaTeXe{} style, the \pkgname{savetrees} package also @@ -2098,9 +2230,9 @@ % source code in this document. Rather, only the hand-modified parts are % presented below. % -% \begin{macrocode} -%<*bibstyle> -% \end{macrocode} +% \iffalse +%<*bstfile> +% \fi % % \begin{center} % $\vdots$ \\ @@ -3560,9 +3692,80 @@ EXECUTE {end.bib} % \end{macrocode} % \fi % +% \iffalse +%</bstfile> +% \fi +% +% +% \section{Implementation of the Biblatex style files} +% \label{sec:savetrees-biblatex} +% +% We define an analogue of |savetrees.bst| (\ref{sec:savetrees.bst}) for +% Biblatex. This comprises two files: a bibliography style, +% |savetrees.bbx| (\ref{sec:savetrees.bbx}), and a citation style, +% |savetrees.cbx| (\ref{sec:savetrees.cbx}). +% +% \subsection{Implementation of \texttt{savetrees.bbx}} +% \label{sec:savetrees.bbx} +% +% Biblatex's default |numeric-comp| bibliography style is already fairly +% abbreviated so we begin with that and merely make a few changes to +% reduce the number of authors before ``et~al.''\ kicks in; use initials +% for all given and middle names,; suppress typesetting ISBNs, URLs, +% DOIs, and eprint IDs; and honor \pkgname{savetrees}'s |bibnotes| +% option. +% +% \changes{v2.3}{2014/12/19}{Included style files for Biblatex} +% +% \iffalse +%<*bbxfile> +% \fi +% +% \begin{macrocode} +\RequireBibliographyStyle{numeric-comp} + +\ExecuteBibliographyOptions{% + maxnames = 2, + minnames = 2, + firstinits = true, + isbn = false, + url = false, + doi = false, + eprint = false +} + +\AtBeginDocument{% + \@ifundefined{if@st@tight@bibnotes}{}{% + \if@st@tight@bibnotes + \DeclareFieldFormat{note}{}% + \fi + }% +} +% \end{macrocode} +% +% \iffalse +%</bbxfile> +% \fi +% +% +% \subsection{Implementation of \texttt{savetrees.cbx}} +% \label{sec:savetrees.cbx} +% +% The corresponding |savetrees.cbx| citation style is even more trivial +% than |savetrees.bbx|. It simply defines itself as an alias for +% Biblatex's standard |numeric-comp| citation style. +% +% \iffalse +%<*cbxfile> +% \fi +% % \begin{macrocode} -%</bibstyle> +\RequireCitationStyle{numeric-comp} % \end{macrocode} % +% \iffalse +%</cbxfile> +% \fi +% % \Finale \endinput |