<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">% \iffalse meta-comment
%
% Copyright (C) 2013 by Scott Pakin &lt;scott+wtt@pakin.org&gt;
% -------------------------------------------------------
%
% 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 2008/05/04 or later.
%
% \fi
%
% \iffalse
%&lt;*driver&gt;
\ProvidesFile{wheretotrim.dtx}
%&lt;/driver&gt;
%&lt;package&gt;\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%&lt;package&gt;\ProvidesPackage{wheretotrim}
%&lt;*package&gt;
    [2013/05/15 v1.0 Helper package for the wheretotrim script]
%&lt;/package&gt;
%
%&lt;*driver&gt;
\documentclass{ltxdoc}
\usepackage{tabularx}
\usepackage{type1cm}
\usepackage{pifont}
\usepackage{needspace}
\usepackage[bookmarksopen]{hyperref}
\EnableCrossrefs
\CodelineIndex
\RecordChanges
\begin{document}
  \DocInput{wheretotrim.dtx}
%  \PrintChanges
  \makeatletter
  \let\orig@index@prologue=\index@prologue
  \def\index@prologue{%
    \phantomsection\addcontentsline{toc}{section}{Index}
    \orig@index@prologue
  }%
  \makeatother
  \Needspace{12\baselineskip}
  \begingroup
    \catcode`\_=12
    \PrintIndex
  \endgroup
\end{document}
%&lt;/driver&gt;
% \fi
%
% \CheckSum{180}
%
% \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
%   Lower-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
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&amp;
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \&lt;
%   Equals        \=     Greater than  \&gt;     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
%
%
% \changes{v1.0}{2013/05/15}{Initial version}
%
% \GetFileInfo{wheretotrim.dtx}
%
% \DoNotIndex{\",\$,\%,\(,\),!,\D,\d,\n}
% \DoNotIndex{\addtocounter,\def,\edef,\fi,\gdef,\ifnum,\let}
% \DoNotIndex{\newcommand,\newcounter,\noexpand,\noindent,\par,\relax}
% \DoNotIndex{\setcounter,\space,\the,\value,\xdef}
% \newcommand{\see}[1]{\textit{see} #1}
% \index{command-line options|see{program options}}
%
% ^^A  Define a few logical styles to help typeset the documentation.
% \DeclareRobustCommand{\pkgname}[1]{^^A
%   \mbox{\textsf{#1}}^^A
%   \SortIndex{packages}{packages&gt;\textsf{#1}}^^A
%   \SortIndex{#1}{\textsf{#1} (package)}}
% \DeclareRobustCommand{\optname}[1]{^^A
%   \mbox{\texttt{#1}}^^A
%   \SortIndex{package options}{package options&gt;\texttt{#1}}^^A
%   \SortIndex{#1}{\texttt{#1} (package option)}}
% \DeclareRobustCommand{\progname}[1]{^^A
%   \mbox{\texttt{#1}}^^A
%   \SortIndex{programs}{programs&gt;\texttt{#1}}^^A
%   \SortIndex{#1}{\texttt{#1} (program)}}
% \DeclareRobustCommand{\longopt}[1]{^^A
%   \mbox{\textbf{-{}-#1}}^^A
%   \SortIndex{program options}{program options&gt;\texttt{-{}-#1}}^^A
%   \SortIndex{#1}{\texttt{-{}-#1} (program option)}}
%
% ^^A  Specify this document's metadata.
% \title{The \textsf{wheretotrim} package\thanks{This document
%   corresponds to \textsf{wheretotrim}~\fileversion, dated \filedate.}}
% \author{Scott Pakin \\ \texttt{scott+wtt@pakin.org}}
% \hypersetup{^^A
%   pdfauthor={Scott Pakin},
%   pdftitle={The wheretotrim package},
%   pdfsubject={Determine where to cut text to most easily reduce page count}
% }
%
% \maketitle
% \sloppy
%
% \section{Introduction}
% \label{sec:introduction}
%
% \progname{wheretotrim} is a tool to help \LaTeX\ users reduce their
% document's page count.  It is intended to be used with documents that
% exceed a publisher's specified page-length limitation by a small
% amount (much less than a full column or page).  \progname{wheretotrim}
% is therefore similar to the \pkgname{savetrees} package in that both
% seek to reduce page count.  The two differ in that \pkgname{savetrees}
% saves space by altering document formatting while
% \progname{wheretotrim} suggests where text can be removed to reduce
% page count without altering any formatting.  \progname{wheretotrim}
% and \pkgname{savetrees} are compatible with each other, though:
% \progname{wheretotrim} can safely be run on a document that includes a
% |\usepackage{savetrees}|.
%
% \progname{wheretotrim} operates by building the document repeatedly,
% successively expanding each column on each page by one line height to
% mimic reducing the amount of text in that column by an equivalent
% amount.  If doing so does not reduce the page count,
% \progname{wheretotrim} repeats the process with two line heights'
% expansion of each column, then three, and so forth until it expands
% each column in turn by the full height of the column.  The following
% is some sample output for a single-column document when
% \progname{wheretotrim} is run with the \longopt{allpages} option
% (cf.~Section~\ref{sec:cmdline}):
% \begin{verbatim}
%    To reduce the page count from 11 to 10, do any of the following:
%
%      * Reduce page 2 by 8 lines.
%      * Reduce page 5 by 7 lines.
%      * Reduce page 6 by 7 lines.
%      * Reduce page 7 by 7 lines.
%      * Reduce page 8 by 7 lines.
%      * Reduce page 9 by 7 lines.
%      * Reduce page 10 by 5 lines.
%      * Reduce page 11 by 5 lines.
%
%    Note: 5 lines = 1.0" = 2.5 cm = 11.1% of the page height
% \end{verbatim}
%
% \noindent
% That is, reducing either page~10 or page~11 by five lines is the most
% expedient way to reduce the document's page count.  Seven lines would
% need to be cut from page~5, 6, 7, or~8 to achieve the same effect, and
% eight lines would need to be cut from page~2.  In contrast, no amount
% of text trimming on pages~1, 3, or~4 will reduce the page count.
%
% \section{Usage}
% \label{sec:usage}
%
% Sections~\ref{sec:cmdline}--\ref{sec:restrictions} explain how to use
% \progname{wheretotrim}.
%
% \subsection{Command-line options}
% \label{sec:cmdline}
%
% Run \progname{wheretotrim} as follows:
%
% \DeleteShortVerb{\|}
% \begin{quote}
%   \raggedright
%   \progname{wheretotrim}
%   [\longopt{allpages}]
%   [\longopt{verbose} \textbar\ \longopt{quiet}]
%   [\longopt{debug}=\meta{page},\meta{column},\meta{lines}]
%   \meta{latex command}
% \end{quote}
% \noindent
% or
% \begin{quote}
%   \raggedright
%   \progname{wheretotrim} [\longopt{verbose}] \longopt{help} \textbar\ \longopt{version}
% \end{quote}
% \MakeShortVerb{\|}
%
% \progname{wheretotrim} accepts the following command-line options:
%
% \begin{description}
%   \item[-a, \longopt{allpages}] Perform enough extra runs of
%     \progname{latex} to report the amount of space that must be
%     trimmed from \emph{each} column or page to reduce page count, not
%     just the columns or pages to which the page count is the most
%     sensitive.
%
%   \item[-v, \longopt{verbose}] Display the output of each run of
%     \progname{latex}.  This is useful for troubleshooting and to help
%     monitor the progress of long \progname{latex} runs.
%
%   \item[-q, \longopt{quiet}] Suppress progress updates and output only the
%     final report.
%
%   \item[-d \meta{page},\meta{column},\meta{lines},
%     \longopt{debug}=\meta{page},\meta{column},\meta{lines}] Debug
%     \progname{wheretotrim}'s execution by expanding page \meta{page},
%     column \meta{column} by \meta{lines} line heights and leaving the
%     \progname{latex} output in that state.
%
%   \item[-h, \longopt{help}] Summarize usage information and exit.
%     These may be used with \longopt{verbose} to display more extended
%     documentation.
%
%   \item[-V, \longopt{version}] Display \progname{wheretotrim}'s version
%     number and exit.
% \end{description}
%
% In addition to the preceding options, \progname{wheretotrim} requires
% a \meta{latex command} argument that specifies how to build the
% document.
%
% \subsection{Examples}
% \label{sec:examples}
%
% For the most basic usage, simply provide a \progname{latex} command to
% run:
%
% \begin{verbatim}
%    wheretotrim latex myfile.tex
% \end{verbatim}
%
% \noindent
% or, for example,
%
% \begin{verbatim}
%    wheretotrim pdflatex myfile.tex
% \end{verbatim}
%
% \progname{wheretotrim} executes the specified command a large number
% of times and finally terminates with a report resembling the
% following:
%
% \begin{verbatim}
%     To reduce the page count from 10 to 9, do any of the following:
%
%       * Reduce page 9, column 1 by 12 lines.
%       * Reduce page 9, column 2 by 12 lines.
%       * Reduce page 10, column 1 by 12 lines.
%
%     Note: 12 lines = 2.4" = 6.1 cm = 26.8% of the column height
% \end{verbatim}
%
% To ask \progname{wheretotrim} to report how much space needs to be
% trimmed on each column and page to reduce the total page count,
% specify the \longopt{allpages} option:
%
% \begin{verbatim}
%     wheretotrim --allpages latex myfile.tex
% \end{verbatim}
%
% The output now looks like the following:
%
% \begin{verbatim}
%     To reduce the page count from 10 to 9, do any of the following:
%
%       * Reduce page 1, column 1 by 13 lines.
%       * Reduce page 1, column 2 by 13 lines.
%       * Reduce page 2, column 1 by 13 lines.
%       * Reduce page 2, column 2 by 13 lines.
%       * Reduce page 4, column 1 by 13 lines.
%       * Reduce page 4, column 2 by 13 lines.
%       * Reduce page 5, column 1 by 13 lines.
%       * Reduce page 5, column 2 by 13 lines.
%       * Reduce page 6, column 1 by 13 lines.
%       * Reduce page 6, column 2 by 13 lines.
%       * Reduce page 7, column 1 by 13 lines.
%       * Reduce page 7, column 2 by 13 lines.
%       * Reduce page 8, column 1 by 13 lines.
%       * Reduce page 8, column 2 by 13 lines.
%       * Reduce page 9, column 1 by 12 lines.
%       * Reduce page 9, column 2 by 12 lines.
%       * Reduce page 10, column 1 by 12 lines.
%
%     Note: 12 lines = 2.4" = 6.1 cm = 26.8% of the column height
% \end{verbatim}
%
% If you're curious how the document managed to shrink substantially as
% the result of a relatively minor text reduction, you can typeset the
% document with a particular page and column enlarged by a given amount:
%
% \begin{verbatim}
%     wheretotrim --debug=9,1,12 latex myfile.tex
% \end{verbatim}
%
% \subsection{Caveats}
% \label{sec:caveats}
%
% \progname{wheretotrim} hooks into \LaTeX's output routines, which are
% notoriously arcane and somewhat fragile.  As a result, it is quite
% likely that \progname{wheretotrim} will fail to analyze a large set of
% documents.  Use the \longopt{verbose} flag to help identify any
% problems that \progname{latex} encounters.
%
% In many cases, \progname{wheretotrim} will recover by simply ignoring
% a few possible page and column expansions.  For example, certain
% expansions may result in a
% \href{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=fllost}{\texttt{Float(s)
%     lost}} message.  In other cases, \progname{wheretotrim} will fail
% to analyze any modification to the document.  For example, it may
% receive an \texttt{Infinite glue shrinkage found in box being split}
% error from every page and column variation it tries.  In this
% particular case, see the discussion at
% \url{http://www.michaelshell.org/tex/ieeetran/}.
%
% When \progname{wheretotrim} is used with a \progname{latex} auto-build
% script you may need to take measures to force the script to rebuild
% the document even if it appears that no files have changed.  For
% example, \progname{latexmk} should be given the |-CF| option to force
% rebuilding:
%
% \begin{verbatim}
%     wheretotrim latexmk -CF myfile.tex
% \end{verbatim}
%
% \subsection{Restrictions}
% \label{sec:restrictions}
%
% \progname{wheretotrim} is implemented as a Perl script with an
% auxiliary \LaTeXe\ package.  It has been tested only on Linux, but I
% suspect that it should also work on OS~X.  I doubt it will work
% under Windows, though, due to the way the script uses a
% \progname{bash}-specific technique for redirecting the standard error
% device into the standard output device.
%
%
% \StopEventually{}
%
% \iffalse
%&lt;*package&gt;
% \fi
%
% \section{Package implementation}
%
% This section presents the commented \LaTeX\ source code for the
% \pkgname{wheretotrim} package.  Read this section if you want to learn
% how the package is implemented.  Note that the package is not intended
% to be used explicitly (i.e.,~via |\usepackage|) but rather implicitly
% by the \progname{wheretotrim} Perl script.
%
% \subsection{Theory of operation}
%
% The \pkgname{wheretotrim} package mimics the effect of reducing a
% given page and column of a document by a given number of line heights.
% For simplicity, it does so by enlarging the specified column (so
% as to fit additional lines of text) rather than by reducing the
% amount of text in that column.
%
% Users are not expected to load the \pkgname{wheretotrim} package
% explicitly.  Instead, whenever the \progname{wheretotrim} script needs
% to observe the effect of enlarging a given column, it creates a
% temporary |.tex| file using the following template:
%
% \begingroup
% \ttfamily
% \begin{tabbing}
%  ~~~~\=|\RequirePackage[|\=\kill
%  \&gt;|\RequirePackage[|\&gt; column={\normalfont\meta{absolute column}}], \\
%  \&gt; \&gt; expansion={\normalfont\meta{lines}}, \\
%  \&gt; \&gt; extracols={\normalfont\meta{padding columns}}]|{wheretotrim}| \\
%  \&gt; |\PassOptionsToPackage{draft}{hyperref}| \\
%  \&gt; |\input{|{\normalfont\meta{filename}}|}| \\
% \end{tabbing}
% \endgroup
%
% \noindent
% where \meta{absolute column} is the absolute column number to expand
% (with the first column on the first page being numbered~ 1);
% \meta{lines} is the number of line heights (multiples of
% |\baselineskip|) by which to enlarge that column; \meta{padding
%   columns} is the number of extra full columns to append to the
% document (cf.~Section~\ref{sec:page-spillover}); and \meta{filename}
% is the name of the user's top-level \LaTeX\ file.
%
% The \pkgname{wheretotrim} package works by modifying various \TeX- and
% \LaTeX-internal commands.  At every |\shipout|, \pkgname{wheretotrim}
% increases the absolute page counter.  Whenever \LaTeX\ constructs a
% column using |\@makecol|, \pkgname{wheretotrim} logs the current
% absolute page and column numbers and invokes \LaTeX's
% |\enlargethispage| macro when on the target page and column number.
% Because |\@makecol| is not called for every column,
% \pkgname{wheretotrim} additionally modifies |\clearpage| and
% |\maketitle| also to conditionally enlarge the current column.
%
% At the end of the document, \pkgname{wheretotrim} outputs
% |\baselineskip| and |\textheight|, as these are needed by the
% \progname{wheretotrim} script.
%
% \subsection{Package options}
% \label{sec:pkg-opts}
%
% The \pkgname{wheretotrim} package accepts three package
% options---\optname{column}, \optname{expansion}, and
% \optname{extracols}---which are described
% below in the context of, respectively, |\wtt@target@column|,
% |\wtt@column@expand|, and |\wtt@extra@full@columns|.
%
% \begin{macro}{\wtt@target@column}
% |\wtt@target@column| is set by the \optname{column} option and
% defaults to nonexistent column~0.  It specifies the absolute column
% number to expand.
%    \begin{macrocode}
\newcommand{\wtt@target@column}{0}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\wtt@column@expand}
% The |\wtt@column@expand| length---implemented as an ordinary
% macro---is set by the \optname{expansion} option and defaults to
% 0\,pt.  It specifies the number of lines by which to expand that
% column (i.e.,~the multiple of |\baselineskip|).
%    \begin{macrocode}
\newcommand{\wtt@column@expand}{0pt}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\wtt@extra@full@columns}
% |\wtt@extra@full@columns| is set by the \optname{extracols} option and
% specifies the number of additional, dummy, full columns to append to
% the end of the document to force spillover onto an additional page.
%    \begin{macrocode}
\newcommand{\wtt@extra@full@columns}{0}
%    \end{macrocode}
% \end{macro}
%
% We use the \pkgname{keyval} package to help with option processing as
% it's widely available and \pkgname{wheretotrim}'s option-processing
% needs are fairly simple.
%    \begin{macrocode}
\RequirePackage{keyval}
%    \end{macrocode}
%    \begin{macrocode}
\define@key{wtt}{column}{\gdef\wtt@target@column{#1}}
\define@key{wtt}{expansion}{%
  \xdef\wtt@column@expand{#1\noexpand\baselineskip}%
}
\define@key{wtt}{extracols}{\gdef\wtt@extra@full@columns{#1}}
%    \end{macrocode}
%
% \begin{macro}{\next}
% Process our options.  We need to expand |\CurrentOption| before
% passing it to \pkgname{keyval}'s |\setkeys| macro, however.
%    \begin{macrocode}
\DeclareOption*{%
  \edef\next{\noexpand\setkeys{wtt}{\CurrentOption}}%
  \next
}
\ProcessOptions\relax
%    \end{macrocode}
% \end{macro}
%
% \subsection{Column enlargement}
% \label{sec:col-enlarge}
%
% \begin{macro}{\c@wtt@true@page}
% The \pkgname{wheretotrim} package needs to keep track of the current
% page number.  The |page| counter is unsuitable for this task because
% it is really a page \emph{name}.  That is, (1)~it is not necessarily
% numeric (e.g.,~it may be a roman numeral while in the document's front
% matter), and (2)~it is not necessarily unique (e.g.,~|page| may be~|1|
% on the title page, abstract, and first page of text).  To address this
% limitation we define a |wtt@true@page| counter and, with the help of
% the \pkgname{everyshi} package, prepare for it to be incremented on
% every \TeX\ page shipout.
%    \begin{macrocode}
\newcounter{wtt@true@page}
\setcounter{wtt@true@page}{1}
%    \end{macrocode}
% \end{macro}
%
%    \begin{macrocode}
\RequirePackage{everyshi}
\EveryShipout{\addtocounter{wtt@true@page}{1}}
%    \end{macrocode}
%
% \begin{macro}{\c@wtt@column@num}
% The \pkgname{wheretotrim} package also needs to keep track of the
% current absolute column number.  By ``absolute'' we mean a running
% column number that does not reset to~1 on each page.  We define a
% |wtt@column@num| counter to hold the current column number, and,
% below, we modify \LaTeXe's |\@makecol| macro to increment it.  Note
% that some pages may contain fewer pages than others due to, for
% example, |\clearpage| calls that cause pages to ship out early.
%    \begin{macrocode}
\newcounter{wtt@column@num}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\wtt@makecol}
% Before redefining |\@makecol|, we store its old definition in
% |\wtt@makecol|.
%    \begin{macrocode}
\let\wtt@makecol=\@makecol
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@makecol}
% |\@makecol| is \LaTeXe's primary mechanism for typesetting a column:
%
% \begin{center}
% \small
% \begin{tabularx}{\linewidth}{@{}rX@{}}
%   \hspace{1em}|\@makecol|:
%   &amp; Makes the contents of |\box||255| plus the accumulated footnotes,
%     plus the floats in |\@toplist| and |\@botlist|, into a single
%     column of height |\@colht| (unless the page height has been
%     locally changed), which it puts into box |\@outputbox|.  It puts
%     boxes in |\@midlist| back onto |\@freelist| and restores
%     |\maxdepth|.
% \end{tabularx}
% \end{center}
%
% Here, we augment |\@makecol| with code to report the current column
% and page number---and for the user's convenience, page name
% (|\thepage|).  Our redefined |\@makecol| then increments the current
% absolute column number and compares it against |\wtt@target@column|.
% If equal, it uses \LaTeXe's |\enlargethispage| to increase the column
% height.  Finally, it invokes the original |\@makecol| (stored in
% |\wtt@makecol| to typeset the column.
%    \begin{macrocode}
\def\@makecol{%
  \PackageInfo{wheretotrim}%
              {Column \thewtt@column@num\space is on page
               \thewtt@true@page\space (\thepage)}%
  \addtocounter{wtt@column@num}{1}%
  \ifnum\value{wtt@column@num}=\wtt@target@column
    \enlargethispage{\wtt@column@expand}%
  \fi
  \wtt@makecol
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\wtt@clearpage}
% Before redefining |\clearpage|, we store its old definition in
% |\wtt@clearpage|.
%    \begin{macrocode}
\let\wtt@clearpage=\clearpage
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\clearpage}
% \LaTeXe's |\clearpage| macro frustrates the \pkgname{wheretotrim}
% package's attempts to enlarge a given column.  We therefore redefine
% |\clearpage| first to perform its ordinary behavior (stored in
% |\wtt@clearpage|, then to check the value of the preceding penalty
% item.  If the last penalty is -10001 then this is an opportune time to
% insert an |\enlargethispage| (assuming the current column is equal to
% |\wtt@target@column|).  Because |\clearpage| may be called multiple
% times in a row and may be followed by |\@makecol| we restore the
% column counter to its prior value after comparing it to
% |\wtt@target@column| so it is not multiply incremented.
%
% Note that |\cleardoublepage| internally calls |\clearpage| so it is
% sufficient to redefine only |\clearpage|.
%    \begin{macrocode}
\gdef\clearpage{%
  \wtt@clearpage
  \ifnum\lastpenalty=-10001\relax
    \addtocounter{wtt@column@num}{1}%
    \ifnum\value{wtt@column@num}=\wtt@target@column
      \enlargethispage{\wtt@column@expand}%
    \fi
    \addtocounter{wtt@column@num}{-1}%
  \fi
}
%    \end{macrocode}
% \end{macro}
%
% Wait until after the |\begin{document}| to redefine |\maketitle| in
% case |\maketitle| is modified before that point.
%    \begin{macrocode}
\AtBeginDocument{%
%    \end{macrocode}
% \begin{macro}{\wtt@maketitle}
% Before redefining |\maketitle|, we store its old definition in
% |\wtt@maketitle|.
%    \begin{macrocode}
  \let\wtt@maketitle=\maketitle
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\maketitle}
% |\maketitle| is problematic macro for the \pkgname{wheretotrim}
% package because of the way it switches into two-column mode within a
% one-column document (via \LaTeXe's |\twocolumn| macro).  For lack of a
% more general solution we redefine |\maketitle| to enlarge the column
% only after typesetting the title and only when in two-column mode.
% Otherwise, the |\enlargethispage| inserted by |\@makecol| already had
% its intended effect.
%    \begin{macrocode}
  \gdef\maketitle{%
    \wtt@maketitle
    \if@twocolumn
      \ifnum\value{wtt@column@num}=\wtt@target@column
        \enlargethispage{\wtt@column@expand}%
      \fi
    \fi
  }%
}
%    \end{macrocode}
% \end{macro}
%
% \subsection{Page spillover}
% \label{sec:page-spillover}
%
% Normally, it would not be possible to reduce page count by enlarging
% the last column by any amount.  The trick we use here is to add to the
% end of the document a full column or two to make the document spill
% over onto an additional page, as illustrated by
% Figure~\ref{fig:page-spillover}.  Thus, enlarging the last column by
% the height of the text it contains will enable a padding column to
% shift into that column and reduce the page count.
%
% \begin{figure}[htbp]
% \centering
% \fbox{^^A
%   \begin{minipage}[t][3cm]{1cm}
%     \fontsize{2}{2}\selectfont\raggedright
%     \vspace{4pt}
%     Quisque fringilla, felis eu ultricies commodo, tortor justo lobortis
%     est, sit amet molestie ligula lorem at urna. Duis sit amet ligula
%     odio, sed varius massa. Duis lacinia odio elit. Nam adipiscing orci
%     eu lectus tincidunt porta rhoncus in nisl. Mauris tincidunt mollis
%     malesuada.
%   \end{minipage}
%   \begin{minipage}[t][3cm]{1cm}
%   \mbox{}
%   \end{minipage}
% }
% \begin{minipage}[t][3cm]{1cm}
%   \vspace{1cm}
%   \fontsize{36}{36}\ding{220}
% \end{minipage}
% ~^^A
% \fbox{^^A
%   \begin{minipage}[t][3cm]{1cm}
%     \fontsize{2}{2}\selectfont\raggedright
%     \vspace{4pt}
%     Quisque fringilla, felis eu ultricies commodo, tortor justo lobortis
%     est, sit amet molestie ligula lorem at urna. Duis sit amet ligula
%     odio, sed varius massa. Duis lacinia odio elit. Nam adipiscing orci
%     eu lectus tincidunt porta rhoncus in nisl. Mauris tincidunt mollis
%     malesuada.
%   \end{minipage}
%   \begin{minipage}[t][3cm]{1cm}
%     \rule[-2.9cm]{1cm}{2.8cm}
%   \end{minipage}
% }
% \fbox{^^A
%   \begin{minipage}[t][3cm]{1cm}
%     \rule[-2.9cm]{1cm}{2.8cm}
%   \end{minipage}
%   \begin{minipage}[t][3cm]{1cm}
%     \mbox{}
%   \end{minipage}
% }
% \caption{Padding a document with extra columns to induce page spillover}
% \label{fig:page-spillover}
% \end{figure}
%
%    \begin{macrocode}
\AtEndDocument{%
%    \end{macrocode}
% Add zero, one, or two columns of padding (a |\parbox| of width
% |\linewidth| and height |\textheight|) based on the value of
% |\wtt@extra@full@columns| (set by the \optname{extracols} package
% option).
%    \begin{macrocode}
  \ifnum\wtt@extra@full@columns&gt;0\relax
    \noindent\parbox[t][\textheight]{\linewidth}{%
      \rule{\linewidth}{\baselineskip}}\par
    \ifnum\wtt@extra@full@columns&gt;1\relax
      \noindent\parbox[t][\textheight]{\linewidth}{%
        \rule{\linewidth}{\baselineskip}}\par
    \fi
  \fi
%    \end{macrocode}
% Also at the end of the document, output the value of |\baselineskip|
% and the value of |\textheight|, as these are read by the
% \progname{wheretotrim} script.
%    \begin{macrocode}
  \PackageInfo{wheretotrim}%
              {Baseline skip: \the\baselineskip}%
  \PackageInfo{wheretotrim}%
              {Text height: \the\textheight}%
}
%    \end{macrocode}
%
% \iffalse
%&lt;/package&gt;
% \fi
%
% \section{Script implementation}
%
% This section presents the commented \LaTeX\ source code for the
% \progname{wheretotrim} Perl script.  Read this section if you want
% to learn how the script is implemented.
%
% \iffalse
%&lt;*script&gt;
% \fi
%
% \DocInput{wheretotrim-pl.dtx}
%
% \iffalse
%&lt;/script&gt;
% \fi
%
% \Finale
\endinput
</pre></body></html>