% \iffalse      THIS IS A META-COMMENT
%<*dtx>
\ProvidesFile
%========================================================================
                              {FULLPAGE.DTX}
%========================================================================
%</dtx>
%% Copyright 1994-1999 Patrick W Daly
%% Max-Planck-Institut f\"ur Aeronomie
%% Max-Planck-Str. 2
%% D-37191 Katlenburg-Lindau
%% Germany
%% E-mail: daly@linmpi.mpg.de
% 
% This program can be redistributed and/or modified under the terms
% of the LaTeX Project Public License Distributed from CTAN
% archives in directory macros/latex/base/lppl.txt; either
% version 1 of the License, or any later version.
%
% This is a contributed file to the LaTeX2e system.
% -------------------------------------------------
%         This is a LaTeX package to set all margins to 1in or 1.5cm
% Installation:
%    LaTeX this file: creates docstrip installation file fullpage.ins
%                         AND the (LaTeX2e) documentation
%    (La)TeX fullpage.ins: creates package files fullpage.sty, and optionally
%                          doc driver fullpage.drv
%    (fullpage.ins may be edited as needed)
% Docstrip options available:
%        package - to produce a (LaTeX2e) package .sty file 
%        driver  - to produce a driver file to print the documentation
%--------------------------------------------------------------------------
%  *** Identify the package file:-
%<package>\NeedsTeXFormat{LaTeX2e}[1994/06/01]
%<package>\ProvidesPackage{fullpage}
%
%  *** Identify the driver file:-
%<driver>\NeedsTeXFormat{LaTeX2e}
%<driver>\ProvidesFile{fullpage.drv}
%
%  *** The DATE, VERSION, and other INFO
%\fi
%\ProvidesFile{fullpage}
         [1999/02/23 1.1 (PWD)]
% \changes{1.0}{1994 Feb 15}{Initial version}
% \changes{1.0a}{1994 Jun 15}{Documentation as per \LaTeXe: driver at start}
% \changes{1.0b}{1997 Apr 29}{Conform to new \texttt{docstrip}}
% \changes{1.1}{1999 Feb 23}{Update copyright notice}
%
% \CheckSum{74}
% \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     \&
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
%
%\iffalse
%<*install>
%^^A =============================================
%^^A    Here is the docstrip installation file
%^^A    It is written on first LaTeX run if it 
%^^A    does not already exist
%^^A =============================================
\begin{filecontents*}{fullpage.ins}
% File: fullpage.ins
% Copyright 1999 Patrick W. Daly
%
% This file can be redistributed and/or modified under the terms
% of the LaTeX Project Public License Distributed from CTAN
% archives in directory macros/latex/base/lppl.txt; either
% version 1 of the License, or any later version.
% 
% It is an installation file for extracting package and driver
% files from the original source file. Simply process it under
% TeX or LaTeX. 

\input docstrip

\preamble
=============================================
IMPORTANT NOTICE:

This program can be redistributed and/or modified under the terms
of the LaTeX Project Public License Distributed from CTAN
archives in directory macros/latex/base/lppl.txt; either
version 1 of the License, or any later version.

This is a generated file.
It may not be distributed without the original source file \inFileName.

Full documentation can be obtained by LaTeXing that original file.
Only a few abbreviated comments remain here to describe the usage.
=============================================
\endpreamble
\postamble

<<<<< End of generated file <<<<<<
\endpostamble

\declarepreamble\driver
============================================
This is the driver file to produce the LaTeX documentation 
from the original source file \inFileName.

Make changes to it as needed. (Never change the file \inFileName!)
============================================
\endpreamble

\declarepostamble\driverq

End of documentation driver file.
\endpostamble

\keepsilent
\askforoverwritefalse

\generate{\file{fullpage.sty}{\from{fullpage.dtx}{package}}
          \file{fullpage.drv}{\usepreamble\driver\usepostamble\driverq
                           \from{fullpage.dtx}{driver}}
         }

\obeyspaces
\Msg{*******************************************}%
\Msg{* For documentation, process fullpage.dtx *}%
\Msg{*    or the driver file      fullpage.drv *}%
\Msg{*******************************************}

\endbatchfile
\end{filecontents*}
%</install>
%<*driver>
\documentclass{ltxdoc}
%<driver>%\documentclass[twoside]{ltxdoc}
%<driver>%\documentclass[a4paper]{ltxdoc}
%<driver>%\documentclass[twoside,a4paper]{ltxdoc}
\raggedbottom

 %** To include the detailed explanation of the coding, comment out
 %**   the next line
\OnlyDescription

 %** To produce a command index: add the following line for one run,
 %**   then run  makeindex -s gind.ist natbib
 %**   and reprocess, with or without this line (much faster without)
%<driver>% \EnableCrossrefs\CodelineIndex 

 %** To produce a change history: add the following line for one run,
 %**   then run  makeindex -s gglo.ist -o natbib.gls natbib.glo
 %**   and reprocess, with or without this line (faster without)
%<driver>% \RecordChanges 

\DisableCrossrefs %May stay; zapped by \EnableCrossrefs
\CodelineNumbered %May stay

\begin{document}
   \DocInput{fullpage.dtx}
\end{document}
%</driver>
%\fi
%
% \DoNotIndex{\begin,\CodelineIndex,\CodelineNumbered,\def,\DisableCrossrefs}
% \DoNotIndex{\DocInput,\documentclass,\EnableCrossrefs,\end,\GetFileInfo}
% \DoNotIndex{\NeedsTeXFormat,\OnlyDescription,\RecordChanges,\usepackage}
% \DoNotIndex{\ProvidesClass,\ProvidesPackage,\ProvidesFile,\RequirePackage}
% \DoNotIndex{\LoadClass,\PassOptionsToClass,\PassOptionsToPackage}
% \DoNotIndex{\DeclareOption,\CurrentOption,\ProcessOptions,\ExecuteOptions}
% \DoNotIndex{\AtEndOfClass,\AtEndOfPackage,\AtBeginDocument,\AtEndDocument}
% \DoNotIndex{\InputIfFileExists,\IfFileExists,\ClassError,\PackageError}
% \DoNotIndex{\ClassWarning,\PackageWarning,\ClassWarningNoLine}
% \DoNotIndex{\PackageWarningNoLine,\ClassInfo,\PackageInfo,\MessageBreak}
% \DoNotIndex{\space,\protect,\DeclareRobustCommand,\CheckCommand}
% \DoNotIndex{\newcommand,\renewcommand,\providecommand\newenvironment}
% \DoNotIndex{\renewenvironment,\newif,\newlength,\newcounter,\setlength}
% \DoNotIndex{\setcounter,\if,\ifx,\ifcase,\ifnum,\texttt,\textbf,\textrm}
% \DoNotIndex{\textsl,\textsc,\textup,\textit,\textmd,\textsf,\emph}
% \DoNotIndex{\ttfamily,\rmfamily,\sffamily,\mdseries,\bfseries,\upshape}
% \DoNotIndex{\slshape,\scshape,\itshape,\em,\LaTeX,\LaTeXe}
% \DoNotIndex{\addtolength,\pagestyle,\paperheight,\paperwidth}
% \DoNotIndex{\filename,\fileversion,\filedate,\let,\fi}
%
% \setcounter{IndexColumns}{2}
% \setlength{\IndexMin}{10cm}
% \setcounter{StandardModuleDepth}{1}
%
% \GetFileInfo{fullpage}
%
% \title{\bfseries A Package to Set Margins to Full Page}
%    
% \author{Patrick W. Daly}
%         
% \date{This paper describes package \texttt{\filename}\\
%       version \fileversion{} from \filedate\\[1ex]
%     \textsl{It is part of the \texttt{preprint} collection of packages}\\
%  }
% 
% \maketitle
%
% \pagestyle{myheadings}
% \markboth{P. W. Daly}{SETTING PAGE MARGINS FOR FULL PAGE}
%
%^^A In order to keep all marginal notes on the one (left) side:
%^^A (otherwise they switch sides disasterously with twoside option)
% \makeatletter \@mparswitchfalse \makeatother 
%
%\begin{small}\begin{center}\bfseries Summary\end{center}
% The stripped version of this file contains the following brief description:
%\iffalse
%<*package>
%\fi
% \begin{verbatim}
 % Sets all 4 margins to be either 1 inch or 1.5 cm, and specifies
 %  the page style
 % Call as    \usepackage[options]{fullpage}
 % Options  =   in   (default) for 1 inch
 %              cm             for 1.5 cm
 %              plain (default) sets \pagestyle{plain}
 %              empty           sets \pagestyle{empty}
 %              headings        sets \pagestyle{headings}
 %              myheadings      sets \pagestyle{myheadings}
% \end{verbatim}
%\iffalse
 %-----------------------------------------------------------
%</package>
%\fi
%\end{small}
% 
% \section{Purpose}
% This package is called \texttt{\filename}, and it sets the text height
% and width and the margins such that the page is almost full. It only
% leaves a uniform margin on all four sides. 
% 
% To do this, it needs to know how big the full page is, whether US letter
% size ($8\frac{1}{2} \times 11''$) or A4 ($21 \times 29.7$~cm), or some
% other size. This is given in the parameters |\paperwidth| and
% |\papersize| that are set by the appropriate option in the
% |\documentclass| command.
% 
% The package must also know which page style is being employed. This is
% because it must leave space for possible headers and footers, if they are
% present. If not, it may use that space for text.
% 
% \section{Invoking the Package}
% The package is called after the |\documentclass| command as e.g.,
% \begin{quote}
% |\documentclass[a4paper,landscape]{article}|\\
% |\usepackage[|\emph{options}|]{|\texttt{\filename}|}|
% \end{quote}
% where possible options for \texttt{\filename} are
% \begin{quote}\begin{description}
% \item[\tt in] (default) sets the margins to one inch;
% \item[\tt cm] sets the margins to 1.5~cm (one centimeter is really too
%               little);
% \item[\tt plain] (default) selects the \texttt{plain} page style, i.e.,
%               with no headers but only a footer;
% \item[\tt empty] for neither headers nor footers;
% \item[\tt headings] for both header and footers;
% \item[\tt myheadings] also for both headers and footers.
% \end{description}\end{quote}
% For the last 4 options, the corresponding |\pagestyle| declaration is
% executed, so that it is not necessary to give it again. 
% 
% \StopEventually{\PrintIndex\PrintChanges}
% 
% \section{Options with \texttt{docstrip}}
% The source \texttt{.dtx} file is meant to be processed with
% \texttt{docstrip}, for which a number of options are available:
% \begin{description}
% \item[\tt package] to produce a \texttt{.sty} package file with most
%     comments removed;
% \item[\tt driver] to produce a driver \texttt{.drv} file that will print
%     out the documentation under \LaTeXe. The documentation cannot be
%     printed under \LaTeX~2.09.
% \end{description}
% The source file \texttt{\filename.dtx} is itself a driver file and can
% be processed directly by \LaTeXe.
% 
% \section{The Coding}
% This section presents and explains the actual coding of the macros.
% It is nested between |%<*package>| and |%</package>|, which
% are indicators to \texttt{docstrip} that this coding belongs to the package 
% file.
%
% \begin{macro}{\FP@margin}
% Define the options with help of the length |\FP@margin|. The options |in|
% and |cm| select the actual margin size.
%    \begin{macrocode}
%<*package>
\newlength{\FP@margin}
\DeclareOption{in}{\setlength{\FP@margin}{1in}}
\DeclareOption{cm}{\setlength{\FP@margin}{1.5cm}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ifFP@plain}
% \begin{macro}{\ifFP@empty}
% The remaining options determine the page style, and need two flags to
% keep track of whether headers and footers are present.
%    \begin{macrocode}
\newif\ifFP@plain
\newif\ifFP@empty
\DeclareOption{plain}{\FP@plaintrue \FP@emptyfalse
                      \pagestyle{plain}}
\DeclareOption{empty}{\FP@plaintrue \FP@emptytrue
                      \pagestyle{empty}}
\DeclareOption{headings}{\FP@plainfalse \FP@emptyfalse
                         \pagestyle{headings}}
\DeclareOption{myheadings}{\FP@plainfalse \FP@emptyfalse
                           \pagestyle{myheadings}}
%    \end{macrocode}
% \end{macro}\end{macro}
% 
% Invoke the default options and then process the requested ones. Use the
% starred version of |\ProcessOptions| so that the options are executed
% in the order they were specified (not defined). Thus if someone gives
% conflicting options (like |in| and |cm|) then the last one in the list
% counts.
%    \begin{macrocode}
\ExecuteOptions{in,plain}
\ProcessOptions*
%    \end{macrocode}
% 
% \begin{macro}{\headheight}
% \begin{macro}{\headsep}
% If there are to be no headers (for options |empty| and |plain|, which both
% set |\ifFP@plain| to be \meta{true}), zero the appropriate parameters.
%    \begin{macrocode}
\ifFP@plain
   \setlength{\headheight}{0pt}
   \setlength{\headsep}{0pt}
\fi
%    \end{macrocode}
% \end{macro}\end{macro}
% 
% \begin{macro}{\footskip}
% If there are to be not footers, zero the |\footskip| parameter. This
% occurs only for page style |empty|, for although the two |headings|
% styles do not include a footer, they are often used in conjunction with a
% |\thispagestyle{plain}| command for the first page of a document.
%    \begin{macrocode}
\ifFP@empty
   \setlength{\footskip}{0pt}
\fi
%    \end{macrocode}
% \end{macro}
% 
% \begin{macro}{\textwidth}
% \begin{macro}{\oddsidemargin}
% \begin{macro}{\evensidemargin}
% Calculate the width of the text from |\paperwidth| and set the left and
% right margins. Recall that \TeX{} automatically leaves a margin of $1''$.
%    \begin{macrocode}
\setlength{\textwidth}{\paperwidth}
\addtolength{\textwidth}{-2\FP@margin}
\setlength{\oddsidemargin}{\FP@margin}
\addtolength{\oddsidemargin}{-1in}
\setlength{\evensidemargin}{\oddsidemargin}
%    \end{macrocode}
% \end{macro}\end{macro}\end{macro}
% 
% \begin{macro}{\textheight}
% \begin{macro}{\topmargin}
% Calculate the height of the text from |\paperwidth|, by removing the
% margins, headers, and footers. Set the top margin, recalling that \TeX{}
% automatically leaves $1''$.
%    \begin{macrocode}
\setlength{\textheight}{\paperheight}
\addtolength{\textheight}{-\headheight}
\addtolength{\textheight}{-\headsep}
\addtolength{\textheight}{-\footskip}
\addtolength{\textheight}{-2\FP@margin}
\setlength{\topmargin}{\FP@margin}
\addtolength{\topmargin}{-1in}
%</package>
%    \end{macrocode}
% \end{macro}\end{macro}
%
% \Finale
