summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-11 23:55:32 +0000
committerKarl Berry <karl@freefriends.org>2006-01-11 23:55:32 +0000
commit1a0f974322b4ad3b1ca8b2dfc4893865018c4f89 (patch)
tree08bf3543098c7e7f45fce6318edd1654759dce86
parent25837b12ef3d7b2d15b51948cf5f98f2d1c037fd (diff)
trunk/Master/texmf-dist/source/latex/newlfm
git-svn-id: svn://tug.org/texlive/trunk@411 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/source/latex/newlfm/newlfm.dtx5351
-rw-r--r--Master/texmf-dist/source/latex/newlfm/newlfm.ins55
2 files changed, 5406 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/newlfm/newlfm.dtx b/Master/texmf-dist/source/latex/newlfm/newlfm.dtx
new file mode 100644
index 00000000000..7e135a1c558
--- /dev/null
+++ b/Master/texmf-dist/source/latex/newlfm/newlfm.dtx
@@ -0,0 +1,5351 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 1999-2004 Paul Thompson
+% This program is free software; you can redistribute it and/or
+% modify it under the terms of the GNU General Public License
+% as published by the Free Software Foundation; either version 2
+% of the License, or (at your option) any later version.
+%
+% This is file `newlfm.dtx'. It provides newlfm.cls, after processing
+% latex newlfm.ins
+% It provides the documentation after processing
+% latex newlfm.dtx
+% At this time, the documentation is divided into three sections:
+% a) manual - pp. 1-12
+% b) command summary - pp. 13
+% c) code - pp. 14-35
+%
+% This is modified from
+% fax.sty -- John Conover
+% letter.cls -- LaTeX 2e team
+% lettre.sty -- D. Megevand
+% ltrfax.cls -- Paul A. Thompson
+% lfmp.cls -- Ross Boylan
+%
+% Copyright 1998-2005 Paul A. Thompson
+%
+% IMPORTANT NOTICE:
+%
+% You are not allowed to change this file.
+%
+% If you do change the file, you must change the name.
+% \fi
+%
+%% \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
+% \MakeShortVerb{\|}
+%
+% \section{Identification}
+%
+% \askforoverwritefalse
+%
+% This document class can only be used with \LaTeXe, so we make
+% sure that an appropriate message is displayed when another \TeX{}
+% format is used.
+% \begin{macrocode}
+%<+package>\NeedsTeXFormat{LaTeX2e}[1996/06/01]
+%<+addrset>\NeedsTeXFormat{LaTeX2e}[1996/06/01]
+%<+setdim>\NeedsTeXFormat{LaTeX2e}[1996/06/01]
+% \end{macrocode}
+%
+% Announce the Class name and its version.
+% \begin{macrocode}
+%<+package>\ProvidesClass{newlfm}
+%<+addrset>\ProvidesPackage{addrset}
+%<+setdim>\ProvidesPackage{setdim}
+%<*driver>
+ \ProvidesFile{newlfm.drv}
+%</driver>
+%<+package> [2004/11/02 v8.3
+%<+package> Letter-Fax-Memo LaTeX Document Class]
+%<+addrset> [2004/11/02 v8.3
+%<+addrset> Address macros]%
+%<+setdim> [2004/11/02 v8.3
+%<+setdim> Address macros]
+% \end{macrocode}
+%
+% \section{The documentation driver file}
+%
+% We have our own document class to format the \LaTeXe{}
+% documentation.
+% \fi
+% \changes{v1.0}{1998/11/11}{Final cls file version of newlfm set up. Class
+% file set as a docstrip file, so that proper documentation could be
+% maintained with the file. Class file set up to inherit all definitions
+% from letter.cls, the standard \LaTeX\ letter class. Class file posted to
+% CTAN 1998/12/01.}
+% \changes{v1.3}{1999/03/25}{Removed the streamlist and here packages from
+% the list of required packages. These were not actually used.}
+% \changes{v1.4}{1999/03/25}{Fixed the timestamp macro, using a fix from
+% Michael Dritschel, Purdue University. Posted 5/5/99. Viva Las
+% Revolution!! Viva Mexico!!! Viva Las Cinco de Mayo!!!}
+% \changes{v1.5}{1999/07/25}{Fixed the Blank macros, enabling the header and
+% footer information to be properly blanked. Added two macros to print form
+% letters.}
+% \changes{v1.6}{1999/07/27}{Fixed the specification of @f@f, which was set
+% to blank, rather than to 0in. Added specifications for different orders
+% of the printing of dates, from-block and to-block.}
+% \changes{v1.7}{1999/09/16}{Added ability to specify different point sizes,
+% which was not present before. In addition, different paper types are now
+% able to be specified as well. Bug noted by William Slough, cfwas@eiu.edu,
+% Department of Mathematics, Eastern Illinois University, Charleston, IL
+% 61920. Thanks, William!!!}
+% \changes{v1.8}{1999/09/16}{Many of the options, macros and terms have been
+% rewritten to a more ``user-friendly'' approach, thanks to a Friendly user,
+% who is Michael Friendly. Thanks for your suggestion, Mike!!! NOTE TO
+% PREVIOUS NEWLFM USERS: Some of these changes (space and skip commands) are
+% not upward compatible.}
+% \changes{v3.0}{2000/10/30}{Package substantially revised. Items in
+% wrapper macros are now neutral, rather than ``from'' or ``to'' items. In
+% that way, the address items are used for storage, not letter preparation.
+% Two new service macros, {\tt setadrfr} and {\tt setadrto}, convert the
+% items in the wrapper into either ``from'' or ``to'' items. The
+% {\tt memosec} command has been revised and simplified. Commands set up
+% to change terms for the words used in letters. Manual entirely
+% rewritten.}
+% \changes{v3.1}{2001/3/01}{Several errors in handling margin items are
+% fixed. Documentation revised.}
+% \changes{v3.2}{2001/11/15}{Incorporated all functionality of envlab package
+% into newlfm. Documentation margins and text width adjusted to something
+% approximating a nice document. Documentation extensively edited to
+% incorporate all new commands. Example files edited to display new
+% functions.}
+% \changes{v3.4}{2002/3/15}{Allow printing of addresses side-by-side. Fixed up
+% several small errors. Essentially a minor features upgrade.}
+% \changes{v5.0}{2001/8/16}{The page structure of the letterhead page, the
+% fax header page and all other pages are allowed to vary in important ways.
+% Package geometry removed from newlfm, as newlfm code duplicates functionality
+% of geometry. Keyval functionality set into newlfm, to allow all parameters
+% to be input either through the documentstyle option line or through a keyval item.
+% The keyval item can be placed into the letter itself or into the letrinfo file.}
+% \changes{v6.0}{2003/1/09}{The options, formerly placed in the options
+% section of the \LaTeX\ opening command
+% can now be placed in several calls within the letter itself. These can
+% be stored in the letter database.}
+% \changes{v7.0}{2004/5/02}{Single key-value option set up.}
+% \changes{v8.0}{2004/7/04}{Envelope option fixed. 4 different
+% Avery label options added. Manual rewritten. Output routine hacked to
+% ensure that letterhead and subsequent pages have the appropriate
+% margins. Extensive checks in place to ensure that almost everything
+% works, finally!!}
+% \changes{v8.1}{2004/7/07}{Fixed header margin position problem. Fixed
+% unprintable area problem. Additionally, fixed some problems with the
+% letrinfo.tex file for the examples.}
+% \changes{v8.2}{2004/10/15}{Fixed incorrect use of iffixt macro. Fixed
+% incorrect use of sigcenter, sigleft, sigright. Fixed error in useenvlab
+% Added press-release features, following development contributed by Ross
+% Boylan. Thanks, Ross.}
+% \changes{v8.3}{2004/11/02}{Election special. Cello-window option added.}
+% \changes{v8.4}{2004/11/06}{Fixed a number of other errors, including
+% multiple repeated envelope labels. Specials added to printing. Address
+% printing converted to the use of the table notation. Specials and
+% address components work together to print a variety of components in the
+% ``address-area'' of the letter.}
+% \changes{v9.0}{2004/06/16}{Revised address space method, going to a
+% tabular approach. This greatly simplifies the method for setting up the
+% multiple repeated envelope labels. Specials added to printing. Address
+% printing converted to the use of the table notation. Specials and
+% address components work together to print a variety of components in the
+% ``address-area'' of the letter.}
+% \changes{v9.1}{2004/09/16}{Fixed a number of very small bugs - including
+% errors in memonofrom and friends, Blankheader and friends, and several
+% other small problems.}
+%
+% \iffalse
+% \begin{macrocode}
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{geometry,mdwlist,layout}
+\geometry{right=1in,left=1in,top=1in,bottom=1in}
+% \end{macrocode}
+
+%\DocInput{multicol,fancyvrb,mdwlist}
+%
+% We don't want everything to appear in the index.
+% \begin{macrocode}
+\DoNotIndex{\@Alph,\@alph,\@arabic,\@badmath}
+\DoNotIndex{\@centercr}
+\DoNotIndex{\@empty,\@ignoretrue}
+\DoNotIndex{\@ixpt}
+\DoNotIndex{\@M,\@minus,\@ne,\@plus}
+\DoNotIndex{\\,\addtolength}
+\DoNotIndex{\advance}
+\DoNotIndex{\ast,\begin,\begingroup,\bfseries,\bgroup,\box}
+\DoNotIndex{\bullet}
+\DoNotIndex{\cdot,\cr,\day,\DeclareOption}
+\DoNotIndex{\def,\DocInput,\documentclass}
+\DoNotIndex{\DoNotIndex,\egroup,\ifx,\else,\fi,\endtrivlist}
+\DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup}
+\DoNotIndex{\endlist,\everycr,\ExecuteOptions}
+\DoNotIndex{\filedate,\filename,\fileversion}
+\DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule}
+\DoNotIndex{\hsize,\hskip,\hspace,\hss,\ifcase,\or,\fi}
+\DoNotIndex{\ifvmode,\fi,\ifnum,\fi,\input}
+\DoNotIndex{\kern,\leavevmode,\let,\leftmark}
+\DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark}
+\DoNotIndex{\month,\newcommand,\newcounter,\newenvironment}
+\DoNotIndex{\NeedsTeXFormat,\newdimen}
+\DoNotIndex{\newpage,\nobreak,\noindent,\number}
+\DoNotIndex{\p@}
+\DoNotIndex{\pagestyle,\par}
+\DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions}
+\DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright}
+\DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font}
+\DoNotIndex{\rightmargin,\rlap,\rmfamily}
+\DoNotIndex{\setbox,\setcounter,\setlength}
+\DoNotIndex{\skip,\slshape,\space}
+\DoNotIndex{\trivlist,\typeout,\tw@}
+\DoNotIndex{\vskip,\vspace,\year,\z@}
+\CodelineNumbered
+\CodelineIndex
+\EnableCrossrefs
+\RecordChanges
+% \end{macrocode}
+% Set the \texttt{StandardModuleDepth} counter to 1.
+% \begin{macrocode}
+\setcounter{StandardModuleDepth}{1}
+% \end{macrocode}
+% Some commonly used abbreviations
+% \begin{macrocode}
+\def\Lopt#1{\textsf{#1}}
+\def\file#1{\texttt{#1}}
+\def\Lcount#1{\textsl{\small#1}}
+\def\pstyle#1{\textsl{#1}}
+% \end{macrocode}
+% We also want the full details.
+% \begin{macrocode}
+\begin{document}
+\DocInput{newlfm.dtx}
+\end{document}
+%</driver>
+% \end{macrocode}
+% \fi
+%
+% \iffalse
+% Copyright (C) 1998 Paul A. Thompson, Ph.D., all rights reserved.
+% \fi
+%
+% \author{Paul A. Thompson, Ph.D. \\ Division of Biostatistics \\ Washington
+% University of St. Louis, MO, USA \\ \texttt{paul@wubios.wustl.edu}}
+%
+% \title{|newlfm.cls| \\ A New Letter, Fax, Memo Document Class for \LaTeX2e{}}
+%
+% \newcommand{\rec}{recipient}
+% \newcommand{\tabr}[1]{Table \ref{tab:#1}}
+% \newcommand{\tabrb}[2]{Tables \ref{tab:#1} and \ref{tab:#2}}
+% \newcommand{\info}{information}
+% \newcommand{\Info}{Information}
+% \newcommand{\tabref}[1]{Table \ref{tab:#1}}
+% \newcommand{\tabpage}[1]{Table \ref{page:#1}}
+% \newcommand{\mx}[1]{{\ensuremath{#1}}}
+% \newcounter{mytabs}\setcounter{mytabs}{0}
+% \newcommand{\tabset}[2]{\addtocounter{mytabs}{1}
+% \centerline{Table \arabic{mytabs}: #2}
+% \vspace*{-.25in}}
+% \newcommand{\tabpagr}[1]{Table \ref{tab:#1}, on Page \pageref{tab:#1}}
+% \newcommand{\pages}[1]{Page \pageref{tab:#1}}
+% \newcommand{\pagex}[1]{Page \pageref{page:#1}}
+% \newcommand{\tabsetx}[3]{\vspace*{.09375in}
+% \refstepcounter{mytabs} \label{tab:#3}
+% \centerline{Table \arabic{mytabs}: #2}
+% \vspace*{-.0325in}
+% }
+% \hyphenation{Lan-guage lan-guage choi-ces prin-ted de-fi-ni-tion}
+%
+% \maketitle
+% \begin{multicols}{2}
+%
+% \makeatletter
+% \renewcommand{\l@section}{\@dottedtocline{1}{.05em}{1.65em}}
+% \renewcommand{\l@subsection}{\@dottedtocline{2}{1.65em}{3em}}
+% \makeatother
+%
+% \tableofcontents
+% \end{multicols}
+%
+% \newpage
+%
+% \newcommand{\hdr}[1]{\multicolumn{1}{c}{\textbf{ #1}}}
+%
+% \section{The \texttt{newlfm.cls} class}
+% \newcommand{\reffit}[1]{(Section \ref{#1}, Page \pageref{#1})}
+% |newlfm|~ is a {\tt new} {\tt l}etter, {\tt f}ax and {\tt m}emo class.
+% It gives the user control over many elements of letter construction.
+% It enables the user to construct a simple database of letter
+% information for letter information storage. It includes commands to
+% print labels, and issue form letters to multiple recipients.
+% Additionally, the class includes tools to produce standard press
+% releases.
+%
+% \subsection{Writing a simple letter}
+% Here is an example of a very simple letter:
+% \begin{verbatim}
+% \documentclass[stdletter]{newlfm}
+% \nameto{George Bush} \addrto{\parbox{2in}{The White House \\ Washington, DC}}
+% \namefrom{Paul Thompson} \addrfrom{\parbox{2in}{The Pink House \\ Belleville, IL}}
+% \begin{document}
+% \closeline{Sincerely yours,} \greetto{Dear Mr. Bush,}
+% \begin{newlfm}
+% How are the azaleas?
+% \end{newlfm}
+% \end{document}
+% \end{verbatim}
+% This produces a simple letter with very standard features. The letter
+% produced in this way has odd-looking spacing. Additionally, the
+% information in the ``from'' specification is very likely to be repeated
+% in letter after letter. Although the user can copy this information,
+% it is much more convenient to put this information in an address
+% database.
+%
+% \subsection{Option specification}
+% \label{sec:opt}
+% The |newlfm| package features a wide variety of options to specify
+% options for letters, faxes and memos.
+% Options may be specified in one of two ways:
+% \begin{enumerate}
+% \item They may be placed in the options section of the |\documentclass|
+% statement. Thus, the options would be specified as follows, with
+% several other statements to provide context:
+% \begin{verbatim}
+% \documentclass[dvips,faxheaderpage,letterpaper,%
+% stdmemo,dateno,memoaddrto]{newlfm}
+% \lthOfficeA\setadrto{\adrMainCust}
+% \leftmarginsize{.75in}\rightmarginsize{1.385in}
+% \begin{document}\begin{newlfm}
+% Now is the time for all good men to come to the aid of the party.
+% \end{newlfm}\end{document}
+% \end{verbatim}
+% This is called the ``document-header'' approach.
+% Options may be specified in the preamble area (after the
+% |documentclass| specification and before the \verb|\begin{document}|
+% specification).
+% The terms |\lthOfficeA| and |\adrMainCust| refer to specifications in the
+% letter information database, which is described in Section
+% \ref{sect:wrapper}. Note the use of the ``\verb|%|'' to set all spaces
+% after the comma on the first line to comments; this functions to create
+% a single unified line.
+% \item Options may also be placed in a statement in
+% the letter itself, or stored in the letter database file
+% |letrinfo.tex|. Using this approach, options are specified as follows:
+% \begin{verbatim}
+% \documentclass[dvips]{newlfm}
+% \newlfmP{letterpaper,stdmemo,dateno,letrh=OfficeA,addrt=MainCust,memoaddrto,faxheaderpage}
+% \begin{document}\begin{newlfm}
+% Now is the time for all good men to come to the aid of the party.
+% \end{newlfm}\end{document}
+% \end{verbatim}
+% This is called the ``keyed-value'' approach. In previous versions,
+% several distinct ``keyed-value'' specifications were used, but
+% currently all options are placed in the |newlfmP| key specification.
+% The terms |OfficeA| and |MainCust| refer to specifications in the
+% letter information database, which is described in Section \ref{sect:wrapper}.
+% \end{enumerate}
+% The approaches may be intermingled without effect. Options are applied
+% in order of encounter, so the last option encountered over-rides
+% earlier ones.
+%
+% \subsection{Basic ideas of newlfm}
+% A letter has a number of components. These include the to-address,
+% the from-address, the salutation or greeting, the body or main part
+% of the letter, the closing and the signature. In addition, there are
+% components of the header section, the left-margin, the right-margin and
+% the footer section. In |newlfm|, the header and footer sections are
+% managed using the basic tools provided by |fancyhdr|. The left- and
+% right-margins are managed using the margin specification tools of
+% \LaTeX. For the remaining components, |newlfm| structures the
+% placement using the |tabular| methodology of \LaTeX. Using this
+% approach, items are placed into cells of a |tabular| structure, and
+% spacing is adjusted accordingly. The further implications of this
+% structure is discussed below in Section \ref{sec:struct}.
+%
+% \section{Available styles}
+% \subsection{Letter styles}
+% \label{sec:let}%
+% |newlfm| defines several letter styles. These styles are chosen using
+% options (in either selection method). Letters include some or all of the following components:
+% 1) date, 2) from-address, 3) to-address, 4) opening salutation, 5)
+% closing phrase, 6) signature, and 7) name and title of signer.
+% Justification of the components is shown in \tabr{addrloc} below.
+%
+% \subsection{Memo styles}
+% \label{sec:mem}
+% Memos are headed as:
+% \begin{center}
+% \begin{tabular}{lll}
+% To: & J Smith & \today \\
+% From: & P A Thom & \\
+% Re: & Gnu info & \\
+% \end{tabular}
+% \end{center}
+% A number of options control whether more \info{} is printed for the
+% memo, including printing the address, phone number and FAX number of
+% both the ``from'' and ``to'' persons (after the
+% name). There are two forms of the memo style, as shown in
+% \tabr{addrloc} below. The user may use their
+% own version of the memo block.
+%
+% \subsection{A list of styles in \texttt{newlfm}}
+% \tabr{addrloc} shows the components of a letter, and indicates when
+% they will be used in letters:
+%
+% \tabsetx{3}{Letter and memo structures}{addrloc}
+% \begin{center}
+% \begin{tabular}{lllllllllll}
+% \hdr{Class} & \hdr{Style} & \hdr{D} & \hdr{F} & \hdr{T} & \hdr{G} &
+% \hdr{C} & \hdr{S} & \hdr{N} & \hdr{Option name}\\ \hline
+% Letter & Business & L & L & L & L & L & L & L & |busletter| \\
+% & B, No from & L & O & L & L & L & L & L & |busletternofrom| \\
+% & Standard & R & R & L & L & R & R & R & |stdletter| \\
+% & S, No from & R & O & L & L & R & R & R & |stdletternofrom| \\ \hline
+% Memo & Standard & R & L & L & O & O & O & O & |stdmemo| \\
+% & Full & F & F & F & O & O & O & O & |fullmemo| \\ \hline
+% Press Release & Standard & L & L & O & O & O & O & L & |pressrelease| \\ \hline
+% \multicolumn{11}{l}{\parbox[t]{4.4in}{Headers --- |D|: Date; |F|:
+% From-address; |T|: To-address; |G|:
+% Greeting; |C|: Closing; |S|: Signature;
+% |N|: Name. Body entries --- |R|: Right-justified; |L|: Left-justified; |O|:
+% Omitted; |F|: Full}}
+% \end{tabular}
+% \end{center}
+%
+% \subsection{FAX cover pages}
+% A FAX cover page can be used for either the letter or the memo style. This
+% page shows the page count, time and date of composition, and the addresses
+% of sender and recipient. In addition, the letter can include a FAX message
+% in a message line.
+%
+% \section{Letter and memo options}
+% \subsection{Use of options}
+% \label{sec:leto}
+% In |newlfm|, the various components of the letter can be modified.
+% This is done using options (placed in the ``document-header'' or
+% ``keyed-value'' approaches).
+%
+% The following example illustrates option placement in the document
+% header line:
+% \begin{verbatim}
+% \documentclass[busletter,nofromaddress,dateright,dateyes]{newlfm}%
+% \lthMyLtr
+% \begin{document}
+% \begin{newlfm}
+% \end{verbatim}
+% This prints a business letter, with no ``from''-address, and date printed
+% right-justified. Since some options can over-ride actions of others,
+% the options are executed in the order encountered. Long specifications which
+% cannot nicely fit on a single line should be terminated with the command
+% character \verb|%|, which omits spaces in the specification list. The
+% list may continue as long as is necessary.
+%
+% The \info{} may also be specified using the ``keyed-value'' approach:
+% \begin{verbatim}
+% \documentclass{newlfm}%
+% \newlfmP{letrh=MyLtr,busletter,nofromaddress,dateright,dateyes}
+% \begin{document}
+% \begin{newlfm}
+% \end{verbatim}
+% The ``keyed-value'' method is very flexible. Values may be
+% specified either as above (before the |\begin{document}| specification)
+% or within the letter database. Thus, the approach gives the user the
+% flexibility of storing letter characteristics within the address
+% system, so that the selection of a certain recipient defines a letter
+% of a certain type.
+%
+% \subsection{Letter options}
+% Letter options involve the inclusion of elements into ``from-address''
+% and ``to-address'' blocks (including email and telephone numbers) and
+% the placement of blocks on the page. Blocks may also be omitted. Options
+% may be defined using either options specification method:
+%
+% \tabsetx{3}{Letter options}{letteropt}
+% \begin{center}
+% \begin{tabular}{lllll}
+% \hdr{Component} & \hdr{Option} & \hdr{Description} &
+% \hdr{Option} & \hdr{Description} \\ \hline
+% ``From'' address & |noaddrfrom| & Omit address
+% &|printallfrom| & Print all components \\
+% &|addrfromleft| & Left-justified block
+% &|addrfromright| & Right-justified \\
+% &|addrfromemail| & Include e-mail
+% &|addrfromphone| & Include phone \\
+% &|addrfromfax| & Include fax \\ \hline
+% ``To'' address &
+% |printallto| & Print all components
+% &|addrtoleft| & Left-justified block \\
+% &|addrtoright| & Right-justified
+% &|addrtoemail| & Include e-mail \\
+% &|addrtophone| & Include phone
+% &|addrtofax| & Include fax \\ \hline
+% Date &
+% |dateright| & Right-justified
+% &|dateleft| & Left-justified \\
+% &|datecenter| & Centered
+% &|dateno| & Omit \\
+% &|dateyes| & Force date to print \\ \hline
+% Order &
+% |orderdatefromto| & Date, From, To
+% &|orderfromdateto| & From, Date, To \\
+% &|orderfromtodate| & From, To, Date \\ \hline
+% Signature &
+% |sigright| & Right-justified
+% &|sigleft| & Left-justified \\
+% &|sigcenter| & Centered \\
+% \hline
+% \end{tabular}
+% \end{center}
+%
+% \subsection{Letter components}
+% \label{sec:struct}
+% Items are placed in the address block section using a |tabular|
+% structure. The first item(s) is(are) placed in Row 2, the second
+% sequentially occurring is placed in Row 4 and the last in Row 6. The
+% |tabular| block has three columns, and the choice of columns for
+% printing is determined by justification of the items. Other items may
+% optionally be placed in other locations of the |tabular| block using
+% a special item:
+% \begin{verbatim}
+% \speciala{text}{row}{col}
+% \spacespa{space-before-a}{space-after-a}
+% \end{verbatim}
+% Using this approach, optional text may be placed into an optional
+% location in the header section. If special spacing is desired, it is
+% defined using the |\spacespa| construction. In |newlfm|, special text
+% may be added using |speciala|, |specialb|, |specialc|, |speciald|,
+% |speciale|, |specialf|, |specialg|, and |specialh|. Each of these
+% special text tools is paired with a |spacespx| construction, where |x|
+% is the same letter as the |special| tool. The |tabular| structure has
+% a total of 7 addressable rows, allowing optional items to be placed
+% before the first letter element (in Row 1), after the last letter
+% element (in Row 7), or between letter elements (in Rows 3 and 5).
+% Optional items may also be placed on the same rows as standard letter
+% elements. Note, however, that the placement of items in the same
+% position as standard letter elements will be ignored.
+%
+% \subsection{Memo options}
+% \label{sec:memo}
+% Memo options involve the inclusion of elements into from-address
+% and to-address blocks (including email and telephone numbers) and
+% the placement of blocks on the page. Blocks may also be omitted. These
+% may be placed either in the ``document-header'' option section, or in
+% the command |\newlfmP|.
+% \tabsetx{3}{Memo options}{memoopt}
+% \label{page:memoo}
+% \begin{center}
+% \begin{tabular}{lllll}
+% \hline
+% \hdr{Block} & \hdr{Option} & \hdr{Function}& \hdr{Option} & \hdr{Function} \\
+% ``From'' block &
+% |memonofrom| & Omit block
+% &|memoaddrfrom| & Address \\
+% &|memoemailfrom| & E-mail
+% &|memopagerfrom| & Pager \# \\
+% &|memophonefrom| & Telephone \#
+% &|memofaxfrom| & FAX \# \\ \hline
+% ``To'' block &
+% |memonoto| & Omit block
+% &|memoaddrto| & Address \\
+% &|memoemailto| & E-mail
+% &|memophoneto| & Telephone \# \\
+% &|memopagerto| & Pager \#
+% &|memofaxto| & FAX \# \\ \hline
+% Other &
+% |memodate| & Set date on memo
+% &|memonore| & Omit ``Re:'' line \\
+% &|fullmemo| & Use all optional items \\ \hline
+% \end{tabular}
+% \end{center}
+%
+% \subsection{Memo block structure}
+% The default memo block code was shown previously. The memo style is
+% stored internally, but as |\newlfm| is processed, it looks for a file
+% |memosec.tex|, and reads the memo header block definition in that file
+% if it is found. If an alternative to the default memo header block
+% structure is desired, the user may feel free to hack the code found in
+% |smemosec.tex| and save it in |memosec.tex|. Thus, you may alter
+% that file to make changes in the memo block. To simplify the process,
+% you may wish to 1) set up the main
+% parameters for |\newlfm| successfully, and 2) alter the code in
+% |memosec.tex| to look as you wish. Using this approach, you may
+% find that the alteration process works in a more dependable fashion. No
+% support for modification of code is able to be offered, unfortunately.
+% The code for |\memosec| is presented and commented on Page
+% \pageref{page:memosec}.
+%
+% \subsection{Fax options}
+% \label{sec:faxo}
+% Fax options involve the selection of one of several fax block styles.
+% |test1.tex| shows an example of the use of |faxheaderpage| (separate
+% fax page), while |faxhba| shows an example of the use of |faxhba| (fax
+% information in header block).
+% The code for |\faxpage| is presented and commented on Page
+% \pageref{page:faxsec}.
+%
+% \tabsetx{3}{FAX options}{faxopt}
+% \label{page:faxo}
+% \begin{center}
+% \begin{tabular}{llll}
+% \hline
+% \hdr{Option} & \hdr{FAX item} & \hdr{Option} & \hdr{FAX item} \\
+% \hline
+% |faxheaderpage| & Print FAX page &
+% |faxhba| & In Rheader \\
+% |faxblocka| & Block A style &
+% |faxblockb| & Block B style \\
+% \hline
+% \end{tabular}
+% \end{center}
+%
+% \subsection{Press Release style}
+% \label{sec:pr}
+% There is only one press release style. A press release includes
+% the following elements, in this order:
+% \begin{enumerate}
+% \item The information about the contact, address, etc. of the contact
+% person is taken from the current ``from-address'' information. So, to
+% insert a person into the ``Contact'' line specified below, use the
+% |addrf| specification or the other methods of indicating the
+% ``from-information.''
+% \item On the upper left, below the letterhead, information about
+% when the release may be used. Usually this is {\bf FOR IMMEDIATE
+% RELEASE}. This phrase is modified using the command |\release|.
+% \item Contact information, drawn from the from information used in
+% the other styles. The option |PhrContact| allows the user to
+% substitute another term for ``Contact:''.
+% \item Headline, usually in boldface with the first letters of
+% words capitalized. This is specified with the |\headline| command.
+% The press release style automatically inserts a header into the
+% center block of the head section for all subsequent pages. This is
+% the same as the |headline| information, unless a different value is
+% defined with the |\shorthead| command.
+% \item Dateline, usually a city. The date is appended automatically.
+% \item The main body of the press release.
+% \item The end marker, usually \# \# \#.
+% \end{enumerate}
+%
+% Because recipients like to scribble notes on press releases, they
+% have 1 inch margins (that is the default anyway) and double
+% spacing; the command |dspace| will also set double spacing, while
+% |sspace| retains single spacing.
+% \footnote{Do not put a |onehalfspace| environment
+% directly inside the default |doublespace|. The former multiplies
+% whatever spacing is in effect.}
+%
+% A press release should also try not to break paragraphs across
+% pages (not yet implemented), and, if there are multiple pages, put
+% ``--- more ---'' at the bottom and the headline (or a short form of
+% it) at the top of subsequent pages.
+%
+% If faxing a press release, remember to pick a good fax font. As
+% this matter is not specific to press releases, and is system
+% dependent, this press release environment does nothing special to
+% your fonts. Usually, sans serif fonts work better when faxing, so
+% you might want to specify |\sffamily| right after
+% |\begin{document}|.
+%
+% A press release does not have a signature or closing phrase at
+% the end.
+%
+% \subsection{Press Release options}
+% Press releases are inherently subjective in construction. What works
+% for one person will not work for another. The style defined in
+% |newlfm| is servicable, but not particularily elegant. For that
+% reason, a very easy method of customization is set up. The file
+% |sprsrls.tex| includes the default press release style. To change the
+% style:
+% \begin{enumerate}
+% \item Copy the file to |prsrls.tex|;
+% \item Modify the style as needed;
+% \item Test using a press release of your choosing.
+% \end{enumerate}
+%
+% \section{Spacing commands}
+% \label{sec:spac}
+% |newlfm| has a number of commands which allow the user to define the
+% position of items within the letter. Some of these commands control
+% the space for structural elements of the document, and some control
+% spacing within these structural elements.
+%
+% \subsection{Structure of a \LaTeX\ document}
+% A \LaTeX\ document has a number of structural elements, summarized in
+% Figure \ref{fig:lay}.
+% \begin{figure}[htbp]
+% \begin{center}
+% \leavevmode
+% \layout
+% \vspace{3cm}
+% \caption{Page elements. The values shown are those in effect in the
+% current document, not the defaults.}
+% \label{fig:lay}
+% \end{center}
+% \end{figure}
+% Examining this figure, there are three sections vertically (header,
+% text body, footer) and three sections horizontally (left margin, text
+% body, right margin). Each of these sections is placed in reference to the
+% paper boundaries. Vertically, the header is offset from the top of the
+% page, there is a separation to the text body, there is a separation
+% from the text body to the footer, and the footer is offset from the
+% bottom of the page.
+%
+% \subsection{Vertical spacing}
+% Vertical spacing commands are shown in \tabr{spacever}. This table
+% shows the various components of the \LaTeX\ page, along with the
+% commands which are used to define or modify these elements in |newlfm|.
+% Naturally, since the physical page has a physical
+% dimension, the size of one component can be defined by the other
+% dimensions save one. In |newlfm|, commands which give the structure of
+% the overall document are amplified and extended by commands which give
+% the structure of the document within the text body itself. These
+% additional items are shown in \tabr{spvextitem}.
+%
+% For many of these terms, they may be used alone or within the
+% |newlfmP| specification. If used alone, they are specified as \LaTeX\
+% commands, while if used within the |newlfmP| specification, they are
+% used without the backslash:
+% \begin{verbatim}
+% \topmarginskip{1in}
+% \newlfmP{topmarginskip=1in}
+% \end{verbatim}
+%
+% \tabsetx{8}{Vertical spacing commands}{spacever}
+% \begin{center}
+% \setlength{\tabcolsep}{3pt}
+% \begin{tabular}{lllllp{120pt}l} \hline
+% \hdr{Page} & \hdr{\LaTeX} & \hdr{\texttt{newlfm}} & \hdr{Default} & \hdr{Included} & \hdr{Function} \\
+% \hdr{Section} & \hdr{Name} & \hdr{Name} & & \hdr{Items} & \hdr{Description} \\ \hline
+% Top Margin & |\topmargin| & |unprtop| & & & Top unprintable area \\
+% & & |topmarginskip| & & & Top of page to header block \\
+% Header & |\headheight| & |MinHead| & & Group 1 & Header section \\
+% & & |headermarginsize| & 72pt & & Header section \\
+% Header Skip & |\headsep| & |headermarginskip| & 20pt & & Skip from header to text block top \\
+% Text Height & |\textheight| & |textheightsize| & & Group 2 & \\
+% Footer skip & |\footskip| & |bottommarginskip| & 20pt & & Skip from bottom of text to footer \\
+% Footer & |\footskip| & |MinFoot| & 72pt & Group 3 & Footer section \\
+% & & |footermarginsize| & & & \\
+% & & |unprbottom| & & & Bottom unprintable area \\ \hline
+% \multicolumn{7}{l}{\parbox[t]{6in}{Group 1: \texttt{Cheader}, \texttt{Rheader},
+% \texttt{Lheader}, \texttt{cheader}, \texttt{rheader}, \texttt{lheader}. Group 2: \texttt{date},
+% to-address, from-address, \texttt{greetto}, \texttt{signature}. Group 3:
+% \texttt{Cfooter}, \texttt{Rfooter},
+% \texttt{Lfooter}, \texttt{cfooter}, \texttt{rfooter}, \texttt{lfooter}}}
+% \end{tabular}
+% \end{center}
+%
+% \tabsetx{8}{Vertical spacing commands}{spvextitem}
+% \begin{center}
+% \setlength{\tabcolsep}{3pt}
+% \begin{tabular}{lllll} \hline
+% \hdr{Function} & \hdr{\texttt{newlfm}}&\hdr{Section}& \hdr{Space} & \hdr{Space} \\
+% \hdr{Name} & \hdr{Structure} & \hdr{Size} & \hdr{Before} & \hdr{After} \\ \hline
+% Date & |\dateset| & & |dateskipbefore| & |dateskipafter| \\
+% ``From'' address & |\adrsetfr{XXX}| & & |addrfromskipbefore| & |addrfromskipafter| \\
+% ``To'' address & |\adrsetto{XXX}| & & |addrtoskipbefore| & |addrtoskipafter| \\
+% Greeting & |\greetto| & & |greettoskipbefore| & |greettoskipafter| \\
+% Text Block & & |textheight| & & \\
+% Left Margin Block & |\Lmargin| & & |leftmargintopdist| & \\
+% Right Margin Block& |\Rmargin| & & |rightmargintopdist| & \\
+% Signature & |\signature| & |sigsize| & |sigskipbefore| & |sigskipafter| \\
+% & |\siglist| & & & \\
+% |Ps|, |PPs|, etc & Various & & |postsigskipbefore| & |postsigskipafter| \\
+% Memo block & Various & & |memoskipbefore| & |memoskipafter| \\ \hline
+% \end{tabular}
+% \end{center}
+%
+% Here are several rules which are used to define the sizes of items:
+% \begin{itemize*}
+% \item If header margin specifications (|\Cheader|, etc.) are not used,
+% |headermarginskip| and |topmarginskip| are ignored. In this
+% case, |topmargin| alone is sufficient to specify the size of the top margin.
+% If |unprtop| is specified, and $|unprtop| > |\topmargin|$,
+% |unprtop| is used in place of |topmargin|.
+% If |\unprtop| is specified, and $|\unprtop| > |\topmarginskip|$,
+% |\unprtop| is used in place of |\topmarginskip|.
+% \item If any of the footer margin specifications (|\Cfooter|,
+% |\Rfooter|, or |\Lfooter|) are used to specify a footer margin block,
+% |\bottommarginskipbelow| and |\bottommarginskip| are both used to position
+% the bottom- or footer-margin block relative to the text. Additionally,
+% the overall height (including depth) of the largest of the three
+% footer-margin placement blocks
+% is used to specify the value of |\footermarginsize|.
+% If |\unprbottom| is specified, and $|\unprbottom| > |\bottommargin|$,
+% |\unprbottom| is used in place of |\bottommarginsize|.
+% \item |\topmarginsize| and |\bottommarginsize| are sufficient to specify the
+% positions of blocks vertically. If |\textheight| is also specified, it
+% is used last, and over-rides the specification of text height by subtraction.
+% \item If a left margin text block is specified using |\Lmargin|,
+% |\leftmargintopdist| sets the space that the left margin block is placed
+% from the top of the page. By default, the left margin is placed flush
+% with the bottom of the header section. Any choice here sets the top
+% of the header block a certain distance from the top of the page.
+% \item The use of space-after commands is not recommended in the general
+% case, as they can complicate item placement.
+% \end{itemize*}
+%
+% \subsection{Horizontal spacing} Horizontal spacing commands are shown in
+% \tabr{spacehor}.
+%
+% \label{page:skipc}
+% \tabsetx{8}{Horizontal spacing commands}{spacehor}
+% \begin{center}
+% \setlength{\tabcolsep}{3pt}
+% \begin{tabular}{lllllp{100pt}l} \hline
+% \hdr{Page} & \hdr{\LaTeX} & \hdr{\texttt{newlfm}}& \hdr{Default} & \hdr{Included} & \hdr{Function} \\
+% \hdr{Section} & \hdr{Name} & \hdr{Name} & & \hdr{Items} & \hdr{Description} \\ \hline
+% Left Margin & |\oddsidemargin| & |unprleft| & & & Left unprintable area \\
+% & & |leftmarginskipleft|& &
+% & Page left side to margin block \\
+% Left Print Area& & |MinLeft| & & Group 4 & Left print section \\
+% & & |leftmarginsize| & 72pt & & Header section \\
+% Left Margin Gap& & |leftmarginskipright|& 10pt & & Dist from margin block to text \\
+% Text Width & |\textwidth| & |textwidthsize| & & & \\
+% Right margin & |\evensidemargin|& |rightmarginsize| & & Group 5 & \\ \hline
+% \multicolumn{7}{l}{\parbox[t]{6.4in}{Group 4: \texttt{Lmargin}, \texttt{lmargin}
+% Group 5: \texttt{Rmargin}, \texttt{rmargin}}}
+% \end{tabular}
+% \end{center}
+%
+% Usage of these spacing commands:
+% \begin{itemize*}
+% \item The size of the left margin text block is set by the width of the
+% minimum of the |\Lmargin| block or by the |MinLeft| value.
+% \item When |\Lmargin| is used for a left margin block, both
+% |leftmarginskipleft| and |leftmarginskipright| are used to position
+% the left-margin block relative to the text. Additionally, the width of
+% |\Lmargin| is used to specify the value of |\leftmarginsize|.
+% If |\unprleft| is specified, and $|\unprleft| > |\leftmarginskipleft|$,
+% |\unprleft| is used in place of |\leftmarginskipleft|.
+% \item If |\Lmargin| is not used,
+% |leftmarginskipleft| and |leftmarginskipright| are ignored. In this
+% case, |\leftmarginsize| alone is sufficient to specify the size of the left margin.
+% If |\unprleft| is specified, and $|\unprleft| > |\leftmarginsize|$,
+% |\unprleft| is used in place of |\leftmarginsize|.
+% \item If |\Rmargin| is not used, and $|\unprright| > |\rightmarginsize|$,
+% |\unprright| is substituted for |\rightmarginsize|.
+% \item |\rightmarginsize| and |\leftmarginsize| are sufficient to specify the
+% positions of blocks horizontally. If |\textwidth| is also specified, it
+% is used last, and over-rides the specification of text width by subtraction.
+% \end{itemize*}
+%
+% \subsection{Ordering of elements:}
+% Date, from-address and to-address are generally printed
+% in that order. Other orders are set up using options.
+% \begin{itemize*}
+% \item |orderdatefromto|: date, from-address, to-address
+% \item |orderfromdateto|: from-address, date, to-address
+% \item |orderfromtodate|: from-address, to-address, date
+% \end{itemize*}
+%
+% \section{Address components}
+% \label{sec:adrz}
+% Information about the names, addresses, telephone numbers and the
+% other types of data is specified using these commands.
+%
+% \subsection{Address commands}
+% Address \info{} is specified using the commands in \tabr{adrtoc}.
+% These commands are used for both ``from-address'' and ``to-address.''
+% However, the information stored using these commands must be converted
+% to specific ``from-address'' or ``to-address'' information, as
+% discussed below in Section \ref{sect:wrapper} below.
+%
+% \tabsetx{5}{Address item commands}{adrtoc}
+% \begin{center}
+% \begin{tabular}{llllll} \hline
+% \hdr{Command} & \hdr{Stores \ldots} &
+% \hdr{Command} & \hdr{Stores \ldots} &
+% \hdr{Command} & \hdr{Stores \ldots} \\ \hline
+% |\addr| & Address &
+% |\byline| & Byline &
+% |\city| & City \\
+% |\dept| & Department &
+% |\email| & E-mail address &
+% |\emailb| & E-mail address b \\
+% |\emailc| & E-mail address c &
+% |\fax| & FAX \# &
+% |\fname| & First name \\
+% |\greet| & Greeting &
+% |\institute| & Institution &
+% |\lname| & Last name \\
+% |\mname| & Middle name &
+% |\name| & Name &
+% |\pager| & Pager \# \\
+% |\phone| & Telephone \# &
+% |\phonea| & Telephone \# a &
+% |\phoneb| & Telephone \# b \\
+% |\phonec| & Telephone \# c &
+% |\phoned| & Telephone \# d &
+% |\phoneo| & Office \# \\
+% |\phoneh| & Home \# &
+% |\position| & Position &
+% |\regarding| & ``Regarding'' line \\
+% |\release| & ``Immediate Release'' &
+% |\role| & Role &
+% |\socsec| & Social Security \# \\
+% |\staddr| & Street address &
+% |\state| & State &
+% |\subdept| & Sub-department \\
+% |\title| & Title &
+% |\zip| & zip-code \\
+% \hline
+% \end{tabular}
+% \end{center}
+%
+% \subsection{Phrase commands}
+% \label{sec:phras}
+% Letters and memos have certain phrases which identify sections. These
+% include the terms for ``To'' and ``From'' in the memo, and the phrases
+% identifying the other sections of letters. These phrases may be modified
+% using the commands listed here. They are used as:
+% \begin{verbatim}
+% \begin{newlfm}
+% ....
+% \PhrPhone{Telephone Number}
+% ....
+% \end{verbatim}
+% This term will be used whenever the phrase for ``Telephone Number''
+% should be printed.
+%
+% \tabsetx{4}{Phrase commands}{phraseopt}
+% \begin{center}
+% \begin{tabular}{llllll}
+% \hline
+% \hdr{Command} & \hdr{Use} & \hdr{Command} & \hdr{Use} & \hdr{Command} & \hdr{Use} \\
+% \hline
+% |\PhrFAXcovp| & FAX Cover page &
+% |\PhrFAXpgcnt| & FAX Page Count &
+% |\PhrPager| & Pager \\
+% |\PhrEmail| & E-mail &
+% |\PhrDocument| & Document &
+% |\PhrPhone| & Telephone \\
+% |\PhrRe| & re &
+% |\PhrSubre| & re &
+% |\PhrCc| & cc \\
+% |\PhrPs| & ps &
+% |\PhrMessage| & Message &
+% |\PhrPps| & pps \\
+% |\PhrPpps| & ppps &
+% |\PhrEncl| & Encl &
+% |\PhrPage| & page \\
+% |\PhrTo| & To &
+% |\PhrFrom| & From &
+% |\PhrRegard| & Regarding \\
+% |\PhrContact| & Contact &
+% |\PhrRelease| & For Immediate Release &
+% |\PhrMore| & --- more -- \\
+% |\PhrPREnd| & \# \# \# &
+% & \\
+% \hline
+% \end{tabular}
+% \end{center}
+%
+% \section{Letterhead tools}
+% \label{sect:lhead}
+% \subsection{Inclusion of logos}
+% Logos and other \info{}, stored as encapsulated PostScript objects (for
+% standard \LaTeX\ production using |latex file| and |dvips file|) or
+% .pdf files (for \LaTeX\ production using |pdflatex file|),
+% can be placed in the header and footer of letters. However, sizing the
+% resulting letter can be challenging. |newlfm| automatically adjusts
+% letter dimensions to accomodate the inclusion of such objects, if these
+% objects are included as boxed text (|\sbox|, |\fbox|, |\parbox|,
+% |minipage|, etc.). In the discussion that follows, the first page of
+% the letter is called the ``letterhead'' page, while subsequent pages
+% are the ``non-letterhead'' pages.
+%
+% Using |fancyhdr.sty| of Piet van Oostrom, |newlfm| handles letterhead
+% \info{} in a simple and straightforward manner. In |newlfm|,
+% \info{} for the letterhead page is entered using the
+% commands shown in \tabr{letterhopt}.
+%
+% \tabsetx{4}{Marginal material commands}{letterhopt}
+% \begin{center}
+% \begin{tabular}{lllllll}
+% \hline
+% \hdr{Page} & \hdr{Location} & \hdr{Left} & \hdr{Center} & \hdr{Right} \\ \hline
+% Letterhead & Footer & |\Lfooter| & |\Cfooter| & |\Rfooter| \\
+% & Header & |\Lheader| & |\Cheader| & |\Rheader| \\
+% & Under Header & |\LUheader| & |\CUheader| & |\RUheader| \\
+% & Margin & |\Lmargin| & & |\Rmargin| \\
+% \hline \hline
+% Page & Location & Left & Center & Right \\ \hline
+% Non-letterhead & Footer & |\lfooter| & |\cfooter| & |\rfooter| \\
+% & Header & |\lheader| & |\cheader| & |\rheader| \\
+% & Margin & |\lmargin| & & |\rmargin| \\
+% \hline
+% \end{tabular}
+% \end{center}
+%
+% In order to simply use letterhead logos and other PostScript pictorial
+% \info{} (logos, etc.), the program automatically calculates the
+% heights of the header and footer and optimally places them on the page.
+% In order for this to work, {\bfseries \itshape all \info{} for the
+% header and footer must be included in boxed formats}. That is, to use a
+% letterhead, logos, pictures, addresses, whatever must be placed in a
+% \LaTeX\ box structure. The boxed formatted items may be included in a
+% wrapper program.
+%
+% Under-header items are placed into boxes and placed just under the
+% header section. This allows items to be effectively divided into two
+% sections, those placed in the actual header, and those placed in
+% another header-like section just under the true header section. This
+% enables a more flexible and general letter to be written.
+%
+% For example, if a logo is to be included from an external file, this
+% should be inserted into an |\sbox| and used as follows:
+% \begin{verbatim}
+% \newsavebox{\Lpalmb}
+% \sbox{\Lpalmb}{\parbox[t]{1.75in}{\includegraphics[scale=.4,ext=.pdf,%
+% angle=101,trim=-50 245 125 125]{palm}}}%
+% \makelth{Homea}{\Lheader{\usebox{\Lpalms}}}%
+% \end{verbatim}
+%
+% \subsection{Marginal material}
+% The left and right margins may also contain a box of text. This is placed in
+% |\Lmargin| or |\Rmargin|. The size of the margin is automatically calculated from
+% the box size. The box is placed a very small distance from the edge
+% of the paper (10pt), and the margin gap from the box to the text box of
+% the letter is set to be 10pt as well.
+%
+% In some cases, the header and footer margins may be too small when
+% fitted to the boxed-up header and footer items. For this reason,
+% four commands allow the headers and footers to have a given minimum
+% size. These commands are |minhead=xxpt| (minimum size for header of
+% non-letterhead page; xxpt is a dimensional value such as |5in| or
+% |12pt|), |MinHead=xxpt| (minimum size for header of
+% letterhead page), |minfoot=xxpt| (minimum size for footer of
+% non-letterhead page) and |MinFoot=xxpt| (minimum size for footer of
+% letterhead page). These ensure that the headers and footers have given
+% minimum sizes.
+%
+% \subsection{Graphical objects}
+% Here is a step-by-step description of the process of incorporating a
+% graphical object:
+% \begin{itemize*}
+% \item \textbf{Insert the object:}
+% Insert the graphical object into the document (|\includegraphics|).
+% \item \textbf{Check object:}
+% Ensure that the graphical object is included correctly. Prior to
+% attempting to use |newlfm| to print the object, ensure that
+% |\includegraphics| has inserted the \info{} correctly. Using the
+% |\fbox| specification to allow the box edges to be examined carefully,
+% print the boxed \info{} to ensure that the object is correctly
+% specified, and that the size is correct. If the appearance is
+% appropriate, use the wide range of options in the |\includegraphics|
+% command (|clip|, |view|, |bb|, |trim|, |size|, etc.) to make the
+% object appear as you wish it.
+% \item \textbf{Use object:}
+% Use the resulting trimmed, clipped and selected object in one of the
+% commands for inclusion in a |newlfm| letter or memo.
+% \item \textbf{Usage tip:}
+% Run \LaTeX{} twice to ensure that dimensions are correctly interpreted.
+% \end{itemize*}
+%
+% \subsection{Example use of external object:}
+% Here is an example of the inclusion of an external object and its use
+% in constructing a letterhead page. A |\newsavebox| is constructed and
+% used to store the object. |\includegraphics| is used to insert the
+% object. If commands to produce a .ps file are used (|latex file|,
+% |dvips file|), \LaTeX\ will search for a file with the .ps or .eps
+% suffix. If commands to produce a .pdf file are used (|pdflatex file|),
+% \LaTeX\ will search for a file with the .pdf suffix. For
+% flexibility, omit the suffix.
+% \begin{verbatim}
+% \newsavebox{\Logob}%
+% \sbox{\Logob}{\parbox[t]{\vdim}{\includegraphics[scale=.8]{wulogo3}}}%
+% \makeaddress{PAT}{%
+% \name{Paul A. Thompson, Ph.D.}%
+% \addr{\parbox[b]{2.65in}{Washington University School of Medicine \\%
+% at Washington University Medical Center \\ Box 8067, 660 S. Euclid \\%
+% St. Louis, MO 63110-1093}}%
+% \phone{(314) 747-3793}\fax{(314) 362-2693}\email{paul@wubios.wustl.edu}%
+% }
+% \makeaddress{GRQ}{%
+% \name{Roger Q. Grollier}%
+% \addr{\parbox[b]{2.65in}{25 N. Eastwind Rd.\\Westend, OH 43431}}%
+% \phone{(412) 555-2324}\fax{(412) 555-6923}\email{roger@starlik.com}%
+% }
+% \makeletterhead{WULHb}{%
+% \setadrfr{\adrPAT}\Lheader{\usebox{\Logob}}%
+% \Rheader{{\large\bf Division of Biostatistics}}\rheader{\@name@fr}%
+% \lheader{Page \thepage}\Lfooter{\smallform}\closeline{Sincerely yours,}%
+% }%
+% \end{verbatim}
+%
+% The two |makeaddress| specificiations set up wrapper commands (see
+% Section \ref{sect:wrapper} below) which encapsulate the relevant
+% information. The |\setadrfr| specification in the example converts the
+% address information in |\adrPAT| from neutral to ``from-address''
+% formats. This can also be done using the wrapper ID specification, where it
+% would be stated as |\setadrto{\fixadr{GRQ}}|, where the |\fixadr|
+% specification converts the wrapper ID to the wrapper internally.
+%
+% In a letter, this is used as:
+% \begin{verbatim}
+% \documentclass[dvips]{newlfm}
+% \lthWULHb\setadrto{\adrGRQ}
+% \begin{document}
+% \begin{newlfm}
+% ....
+% \end{verbatim}
+% For this example, the object found in |wulogo3| was boxed up using
+% the |\sbox| specification. It will be placed in the
+% left section of the header block for the letterhead page. The logo was
+% examined earlier to ensure that it
+% is printed exactly as required.
+%
+% \paragraph*{Usage tip:}
+% Examine the example of the inclusion of the graphical object above
+% carefully. Note that all lines are terminated with the comment
+% character ``\verb|%|''. All wrapper macros should be constructed in
+% this manner, to ensure that no blank spaces are inadvertently placed in the
+% wrapper macro \textbf{between commands}, other than those placed within
+% a command (for instance, the |\addr| command has blanks). The wrapper
+% macros should not have blanks around commands, either before the start
+% of a command or after the end of one. The wrappers are ``unpacked''
+% during active text construction, and the presence of blanks can
+% result in odd, difficult-to-trace minor justification anomalies. In
+% many cases, the author has found it helpful to ensure that all lines in
+% the wrapper addresses and terms are terminated with the ``\verb|%|''
+% comment character, to ensure that end-of-line characters are not
+% translated into hard-to-detect space characters.
+%
+% \subsection{Blank block printing commands}
+% In some cases, the user wishes to use the included graphical objects to
+% size the header and footer areas (covered in Section \ref{sect:lhead}
+% below), and then not actually print the objects
+% {\itshape per se}. For instance, the letter may be printed on letterhead
+% stock, using the letterhead objects included to size the letter. In that
+% case, the options shown in \tabr{blankopt} are available to blank out the various
+% parts of the letterhead \info{} after it is used to set margin sizes.
+%
+% \tabsetx{4}{Options for blanking}{blankopt}
+% \begin{center}
+% \begin{tabular}{llllll}
+% \hline
+% \hdr{Option} & \hdr{Blanks \ldots} & \hdr{Option} & \hdr{Blanks \ldots} &
+% \hdr{Option} & \hdr{Blanks \ldots} \\ \hline
+% |blankheader| & |r,l,cheader| &
+% |blankfooter| & |r,l,cfooter| &
+% |blanklmargin| & |lmargin| \\
+% |blankrmargin| & |rmargin| &
+% |Blankheader| & |R,L,Cheader| &
+% |Blankfooter| & |R,L,Cfooter| \\
+% |Blanklmargin| & |Lmargin| &
+% |Blankrmargin| & |Rmargin| &
+% |Blankall| & All upper-case \\
+% |blankall| & All lower-case &
+% |Blank| & All \\
+% \hline
+% \end{tabular}
+% \end{center}
+%
+% \section{The letter database}
+% \label{sect:wrapper}
+% \subsection{Letter database {\tt letrinfo.tex}}
+% \Info{} for letters may be stored in a file. The default name of the
+% file is |letrinfo.tex|. This file
+% stores \info{} in two ways: unconditionally and conditionally. The
+% conditional \info{}, such as lists of addresses associated with
+% names, is stored in ``wrappers'', which carry the \info{} from
+% the file |letrinfo.tex| to each letter. The
+% information stored in the letter database file |letrinfo.tex| is letter
+% information (i.e., |\name{Paul Thompson}|, |\PhrPhone{Telephone #}|).
+%
+% Several types of \info{} are stored in the file |letrinfo.tex|. These
+% different types of \info{} may be stored in several ways. It may be
+% stored unconditionally, by placing it into the file |letrinfo.tex|.
+% All \info{}, used in the order listed, will be available for all letters.
+%
+% Most \info{} is not unconditional, however. For this reason, the \info{}
+% will almost always be stored in address ``wrappers''. This
+% includes \info{} about the ``from'' person, as this \info{} may
+% change based on the style of letter, etc. The \info{} may be divided into
+% three different types, and is thus placed into three types of
+% wrapper commands.
+%
+% \subsection{Address \info{}}
+% \label{page:wrapc}
+% Address \info{} is stored in an address wrapper. The address wrapper
+% has an wrapper ID and a body. The wrapper is set up using the command:
+% \begin{verbatim}
+% \makeaddress{IDENT}{stuff}.
+% \end{verbatim}
+% The wrapper ID is |IDENT|.
+% This makes a wrapper for
+% addresses, |\adrIDENT|. Commands placed in the wrapper are then carried into
+% the document when the wrapper command is placed in the letter as:
+% \begin{verbatim}
+% \begin{document}
+% \setadrto{\adrIDENT}
+% \setadrfr{\adrOTHID}
+% \begin{newlfm}
+% ......
+% \end{verbatim}
+% Note that the wrapper command is placed after |\begin{document}| and
+% before |\begin{newlfm}|.
+% All items entered into the |IDENT| wrapper are then activated in that
+% particular document. This enables \info{} to be centrally stored in the
+% |letrinfo.tex| file, and used in each actual letter.
+%
+% The wrappers may also be indicated using the |newlfmP|
+% key-value specification:
+% \begin{verbatim}
+% \begin{document}
+% \newlfmP{addrt=IDENT,addrf=OTHID}
+% \begin{newlfm}
+% ......
+% \end{verbatim}
+% This also sets up |IDENT| as the ``to'' address and |OTHID| as the
+% ``from'' address.
+%
+% Wrapper commands have two parameters.
+% \begin{itemize*}
+% \item The wrapper ID is the first parameter in the |\makeaddress|
+% specification. The wrapper ID is used to set up
+% a new command |\adrIDENT|, and is used in many other places by itself.
+% In general, a simple identifier is best (i.e., addressee's initials).
+% \item The actual items are placed in the second set of braces. The
+% wrapper ID is case-sensitive.
+% Whatever is placed there is used in the command, and carried along
+% whenever it is used. The user may choose to place a wide variety of
+% information in the wrapper. Commands usually used in address wrapper commands
+% are shown in \tabr{adrtoc}.
+% \end{itemize*}
+%
+% The address \info{} for a certain individual usually does not change
+% from letter to letter, although different persons are used in different
+% letters. By using address info{} wrappers, the \info{} can
+% be handled and used easily with the single wrapper command. This
+% information may be used for either the sender or the addressee for the
+% letter.
+%
+% \paragraph{Designating a sender:} To use the address information for
+% the sender or ``from-person,'' use the |\setadrfr| command or the
+% |addrf| term in the |newlfmP| command:
+% \begin{verbatim}
+% \setadrfr{\adrPAT}
+% \setadrfr{\fixadr{PAT}}
+% \newlfmP{addrf=PAT}
+% \end{verbatim}
+% This sets up the information in the |PAT| wrapper to be
+% placed in the ``from'' blanks of the letter.
+% If the wrapper ID is used in the |\setadrfr| command, the |\fixadr| command
+% converts the wrapper ID to the correct form.
+% \paragraph{Designating a recipient:} To use the address
+% information for the recipient, use the |\setadrto| command or the
+% |addrt| term in the |newlfmP| command:
+% \begin{verbatim}
+% \setadrto{\adrPAT}
+% \newlfmP{addrt=PAT}
+% \setadrto{\fixadr{PAT}}
+% \end{verbatim}
+% This would set up the information in the |PAT| wrapper to be
+% placed in the ``to'' blanks of the letter.
+%
+% \subsection{Letterhead \info{}}
+% Letterhead \info{} is stored in a letterhead wrapper. The wrapper is
+% prepared using the command:
+% \begin{verbatim}
+% \makeletterhead{LIDENT}{stuff}
+% \end{verbatim}
+% The wrapper usually contains \info about the header, footer and margin
+% objects, which are used to set up the letterhead. This wrapper is
+% used like the |\makeaddress| command.
+% In many cases, the return address of the letter author is set up in the
+% letterhead wrapper, because this does not change:
+% \begin{verbatim}
+% \makeletterhead{HomeA}{%
+% \rheader{this}%
+% \setadrfr{\adrPAT}%
+% }%
+% \end{verbatim}
+%
+% \subsection{Signature \info{}}
+% Signature \info{} is stored in an signature wrapper. The wrapper is
+% prepared using the command
+% \begin{verbatim}
+% \makesignature{SIDENT}{stuff}
+% \end{verbatim}
+% This wrapper is used like the |\makeaddress| command.
+% The \info{} shown in \tabr{sigsc} is usually included in the
+% |\makesignature| wrapper.
+%
+% \tabsetx{6}{Signature Commands}{sigsc}
+% \begin{center}
+% \begin{tabular}{llll} \hline
+% \hdr{Command} & \hdr{Use}& \hdr{Command} & \hdr{Use} \\ \hline
+% |\signature| & Boxed-up signature & |\signame| & Printed name \\
+% |\closeline| & Letter closing line \\ \hline
+% \end{tabular}
+% \end{center}
+%
+% In some cases, multiple signatures are required. These are listed in a
+% command |\siglist|:
+% \begin{verbatim}
+% \siglist{AAA,BBB,CCC}
+% \end{verbatim}
+% In this case, three signatures are printed. By default, they are
+% printed in a left-justified column. To print them in a row, use
+% |\sigacross{2}| to indicate the number of signature blocks printed in
+% each row (the maximum number is 4). Each signature is printed in a
+% block of the height and width of the largest signature block. For this
+% approach, the letter will look odd and unbalanced if signatures are of
+% different sizes. The user must ensure that all signatures are of the same
+% size, as the program cannot ensure this. Additionally, each signature
+% wrapper is unpacked to determine closing line and printed name.
+% Spacing between signature block columns is set by |\sigskipcolumn|, and
+% spacing between signature block rows is set by |\sigskiprow|.
+%
+% \subsection{Closing \info{}}
+% Other closing items may be included in the letter itself, in the
+% file |letrinfo.tex|. These include the following:
+%
+% \tabsetx{6}{Closing commands}{eolc}
+% \begin{center}
+% \begin{tabular}{llllll} \hline
+% \hdr{Command} & \hdr{Usage} & \hdr{Command} & \hdr{Usage} &
+% \hdr{Command} & \hdr{Usage} \\ \hline
+% |\cclist| & Routing list &
+% |\encllist| & Enclosures list &
+% |\initials| & Sender initials \\
+% |\faxmssg| & FAX cover message &
+% |\psitem| & Ps line &
+% |\ppsitem| & Pps line \\
+% |\pppsitem| & ppps line &
+% |\re| & re line &
+% |\subre| & Second re line \\ \hline
+% \end{tabular}
+% \end{center}
+%
+% \subsection{Setting up wrapper macros}
+% \paragraph{File {\tt letrinfo.tex}:}
+% \begin{verbatim}
+% \makesignature{PT}{\newsavebox{\Signature}
+% \sbox{\Sigx}{\includegraphics[bb=16 9 597 784,viewport=180 350 400
+% 425,scale=6,%
+% height=.6in,width=1.375in,clip]{sigfile}%
+% }%
+% \signature{\usebox{\Sigx}}%
+% \signame{\raisebox{.5in}{\parbox[t]{5in}{Paul A. Thompson \\%
+% Associate Professor \\ Div. Biostatistics \\%
+% Washington University School of Mecicine}}}%
+% }%
+% \makeaddress{JS}{\name{Joe Smith}%
+% \address{12 Center Street \\ Greenville, OH 55555}%
+% \phone{(312) 333-4444}\greet{Dear Joe,}%
+% }%
+% \makeaddress{PAT}{\name{Paul A. Thompson, Ph.D.}%
+% \addr{\parbox[b]{2.75in}{Washington University School of Medicine \\%
+% Box 8067, 660 S. Euclid \\ St. Louis, MO 63110-1093}}%
+% \phone{(314) 747-3793}\fax{(314) 362-2693}%
+% }%
+% \newsavebox{\Logob}%
+% \sbox{\Logob}{\parbox[t]{\vdim}{\includegraphics[scale=.8]{wulogo3}}}%
+% %
+% \makeletterhead{WULHa}{%
+% \sigPT%
+% \Lheader{\usebox{\Logob}}\setadrfr{\adrPAT}%
+% }%
+% \end{verbatim}
+%
+% \paragraph{Use in a letter:}
+% \begin{verbatim}
+% \documentclass[american]{newlfm}
+% \newlfmP{letrh=WULHa,addrt=JS}
+% \begin{document}
+% \begin{newlfm}
+% ...
+% \end{newlfm}
+% \end{document}
+% \end{verbatim}
+%
+% This letter will be addressed to Joe Smith, using the letterhead stored
+% in |WULHa|. The signature is taken from signature wrapper |PT|, which is carried
+% along with the letterhead wrapper |WULHa|.
+% In this way, the letters can be addressed to Joe Smith very easily, by
+% merely including the file |letrinfo.tex| on the \LaTeX{} path, and
+% including the wrapper as shown above in the file. Although initials for
+% the recipient need not be used as the wrapper identifier tag, this is
+% convenient and makes the wrapper designation easy to do.
+%
+% The wrapper commands may be used in a nested fashion. Consider this
+% sequence:
+% \begin{verbatim}
+% \makeaddress{Main}{\name{Paul A. Thompson}%
+% \addr{WU School of Medicine}}%
+% \makeaddress{YouA}{\adrMain \name{Love A}
+% \addr{Whereever you are}}%
+% \makeaddress{YouB}{\adrMain \name{Love B}%
+% \addr{The White House}}%
+% \end{verbatim}
+%
+% In this case, the \info{} in |adrmain| is carried into the wrappers
+% |adrYouA| and |adrYouB| and is available there. This is similar to the
+% concept of inheritence in object-oriented programming.
+%
+% \subsection{Multiple information datasets}
+% By default, |newlfm| looks for a file |letrinfo.tex| on the \TeX\
+% path. If this file is found, it is read in during the initialization
+% process of the |newlfm| environment. If an alternative file is
+% needed, it may be indicated using the command
+% |\InfoFileName{check.tex}|. This file will then be used in place of
+% |letrinfo.tex|.
+%
+% \subsection{Rules for use of wrapper IDs}
+% The wrapper IDs used to construct the letterhead database can be used in two
+% different ways. First, the address or letterhead wrappers may be used
+% by themselves as |\adrSETA| or |\ltrSETB|. Second, the wrapper IDs may
+% be used in many situations without the |\adr|. Here are the general
+% rules for usage:
+% \begin{enumerate}
+% \item The wrapper macro |\adrXXX| may be used at any point in a letter.
+% To properly set up margins, it should be used as |\setadrto{\adrXXX}|
+% and |\setadrfr{\adrXXX}| (used to convert neutral address
+% information into to-address and from-address information) prior to the
+% |\begin{newlfm}| command. This
+% will ensure that proper spacing decisions are made. The
+% |\doletter| construction also uses this form of wrapper (note: this
+% command is now obsolete - please use |\oneletter| as described below).
+% \item Wrapper IDs can be used as |\setadrto{\fixadr{XXX}}| to
+% convert neutral addresses to to-addresses and from-addresses (again,
+% prior to |\begin{newlfm}|.
+% Additionally, |\oneletter{XXX}| is used to send a form letter to
+% address |XXX|, |\multletter{XXX,YYY,ZZZ}| to multiple addresses, and
+% |\newlfmP{addrt=AAA,addrf=BBB}| are used to convert addresses using the
+% |\newlfmP| mechanism.
+% \end{enumerate}
+%
+% \section{Form letters}
+% \label{sec:form}
+% The use of the address wrapper commands makes it very easy to set up form
+% letters. \verb|newlfm| has a simple approach to form letters, using two
+% commands:
+% \begin{itemize*}
+% \item \verb|\letterbody|: This command is used to set up the body of the
+% letter. The body is the text of the letter. When you set up the body,
+% it is very easy to further customize the letters by setting up commands
+% within the letter.
+% \item \verb|\oneletter|: This is the command to print the different
+% letters. The command has a mandatory argument of the label of the
+% ``to'' address.
+% \item \verb|\multletter|: This command allows the use of a list of
+% address wrapper labels that will all be used to print a form letter. The
+% address wrapper labels must all be separated by the comma (``,''). When
+% printing form letters in this manner, specific tailoring can only be
+% done if the tailoring information is included in the address wrapper.
+% Thus, this can be used to print any number of identical letters, or
+% letters which have been tailored or modified using information in the
+% address wrappers.
+% \end{itemize*}
+%
+% \subsection{Example form letter}
+% Here is an example of the use of the form-letter commands. In this
+% example, the two wrapper commands \verb|\adrAA| and \verb|\adrBB| can be
+% used to address letters which are both the same to the persons listed
+% in these wrappers:
+% \begin{verbatim}
+% \letterbody{This is an example of a form letter. \tailor End of the letter.}%
+% \newcommand{\tailor}{First special version.}
+% \oneletter{AA}
+% \letterbody{This is a second example of a form letter, but this approach does not allow for
+% individualization. It is being sent to \printnameto.}
+% \multletter{AA,BB}
+% \renewcommand{\tailor}
+
+% {Second special version.}
+% \oneletter{BB}
+% \end{verbatim}
+%
+% \section{Printing envelopes and labels}
+% \label{sec:env}
+% |newlfm| includes a set of commands which print labels. Some invoke the functionality of the
+% |envlab| package. To use this functionality, follow these steps:
+% \begin{enumerate*}
+% \item Ensure that |envlab| is properly installed in your \TeX
+% installation, and that the installation database has been properly
+% refreshed. This will ensure that \LaTeX{} can find the files.
+% \item Use the option |useenvlab| on the command line:
+% \begin{verbatim}
+% \documentclass[useenvlab]{newlfm}
+% \end{verbatim}
+% This will issue the |\makelabels| command at the start of the run, issue
+% the |\startlabels| command at the end of the run, insert the
+% ``from-address'' and ``to-address'' into appropriate structures for
+% |envlab| and otherwise complete the printing of the envelope using
+% internal information.
+% \item Options which are needed for |envlab| may also be entered into the
+% \LaTeX\ command line, just as with any normal use of |envlab| during any
+% \LaTeX.
+% \item Several types of Avery labels may be used. The specifications
+% for Avery labels 5160, 5161, 5162, 5163 and 5164 are pre-set in
+% |newlfm|. These are summarized in the table below.
+%
+% \tabsetx{6}{Label definitions}{labels}
+% \label{tab:d}
+% \begin{center}
+% \begin{tabular}{lrrlrrrr} \hline
+% Option & Ht & Wt & t & l & Btw & Col & Row \\ \hline
+% Avery5160 & 1 & 2.75 & .5 & .19 & .16 &3 & 10 \\
+% Avery5161 & 1 & 4.19 & .5 & .16 &.19 &2 & 10 \\
+% Avery5162 & 1 & 4.19 & .83 & .16 &.19 &2 & 7 \\
+% Avery5163 & 1 & 4.19 & .5 & .16 &.19 &2 & 5 \\
+% Avery5164 & 1 & 4.19 & .5 & .16 &.19 &2 & 3 \\ \hline
+% \end{tabular}
+% \end{center}
+%
+% \item Several options exist for address selection during label printing. The default
+% is |labto|, in which the ``to-address'' only is printed. If
+% |labrowfrto| is selected, both ``from-address'' and ``to-address'' are
+% printed in a row:
+% \begin{verbatim}
+% From: Paul A. Thompson To: George W. Bush
+% 25 Signal Hill Blvd 1400 W. Turkey Rd.
+% Belleville, IL 62223 Crawford, TX 49281
+% \end{verbatim} If
+% |labcolfrto| is selected, both ``from-address'' and ``to-address'' are
+% printed in a column:
+% \begin{verbatim}
+% From: Paul A. Thompson
+% 25 Signal Hill Blvd
+% Belleville, IL 62223
+% To: George W. Bush
+% 1400 W. Turkey Rd.
+% Crawford, TX 49281
+% \end{verbatim}
+% The user is responsible for ensuring that the label printing options
+% can fit on the label selected; Avery5160 is generally suitable only for
+% |labto|, but other choices can fit on other labels.
+% \item Other printing sizes may be selected during label printing using
+% |labsize=\size|:
+% \begin{verbatim}
+% labsize=\small
+% \end{verbatim}
+% \end{enumerate*}
+%
+% \section{Miscellaneous topics}
+% \subsection{Paper sizes}
+% Paper sizes are the generally available ones. The following may be
+% specified: letterpaper (8.5in $\times$ 11in), legalpaper (8.5in
+% $\times$ 14in), executivepaper (7.25in $\times$ 10.5in), bigpaper (11in
+% $\times$ 17in), ebook(6in $\times$ 9in), a3paper (297mm $\times$
+% 420mm), a4paper (210mm $\times$ 297mm), a5paper (148mm $\times$ 210mm),
+% a6paper (105mm $\times$ 148mm), b3paper (353mm $\times$ 500mm), b4paper
+% (250mm $\times$ 353mm), b5paper (176mm $\times$ 250mm), and b6paper
+% (125mm $\times$ 176mm).
+%
+% \subsection{Lines}
+% By default, |newlfm| demarcates the header and footer sections with
+% lines. These may be eliminated using the commands |noheadline|,
+% |nofootline|, or |nolines|. These commands eliminate lines in both
+% letterhead page and non-letterhead page. Line widths may be set as
+% well, using the commands |Headlinewd| (sets head linewidth for
+% letterhead page), |headlinewd| (sets head linewidth for
+% non-letterhead page), |Footlinewd| (sets foot linewidth for
+% letterhead page), and |footlinewd| (sets foot linewidth for
+% non-letterhead page). These final four commands issued either in the
+% command line or in the |newlfmP| commands as:
+% \begin{verbatim}
+% \newlfmP{Headlinewd=.5pt,footlinewd=.75pt}
+% \end{verbatim}
+% If a line width is set to 0pt, the line is not printed.
+% \subsection{Setting the date}
+% The date for the letter is set to be the date upon which the letter is
+% typeset. To change the date, use |\dateset{May 20, 1974}| (feel free
+% to use other dates as needed).
+% |\dateset{\today}| prints today's date.
+%
+% \subsection{Language option definitions:}
+% \label{sec:othlang}
+% These options define the language for the letter. These macros are not
+% frequently manipulated. Basically, the strings defined here
+% set up the printing of structural elements of a memo or letter, such as
+% the ``From'' or ``To'' strings.
+%
+% These terms are used at various points in printing letters and memos.
+% They are American terms; your mileage may vary. Inclusion of other
+% terms is encouraged, especially when another language group is served.
+% This may be done as follows:
+% \begin{enumerate}
+% \item Change the letters ``am'' to either ``fr'' for French, ``gr'' for
+% German, ``en'' for English, ``ot'' for other or ``pl'' for pig-Latin. If
+% you feel that I have unfairly cast disrespect on your language, feel free
+% to add appropriate code in the section above for your language. Change
+% phrases in the following terms to the appropriate terms for the language
+% in question:
+% \begin{verbatim}
+% \newcommand{\@am@phr}{%
+% \renewcommand*{\@fax@cover@line}
+% {FAX Cover Page}%
+% \renewcommand*{\@fax@page@count}
+% {FAX Page Count}%
+% \renewcommand*{\@fax@phr}{FAX}%
+% \renewcommand*{\@pager@phr}{Pager}%
+% \renewcommand*{\@doc@phr}{Document}%
+% \renewcommand*{\@phn@phr}{Phone}%
+% \renewcommand*{\@email@phr}{E-mail}%
+% \renewcommand*{\@re@phr}{Re}%
+% \renewcommand*{\@subre@phr}
+% {\ensuremath{\mathrm{Re}_2}}%
+% \renewcommand*{\@cc@phr}{cc}%
+% \renewcommand*{\@ps@phr}{Ps}%
+% \renewcommand*{\@m@phr}{Message}%
+% \renewcommand*{\@pps@phr}{Pps}%
+% \renewcommand*{\@ppps@phr}{Ppps}%
+% \renewcommand*{\@encl@phr}{Encl}%
+% \renewcommand*{\@pager@phr}{Page}%
+% \renewcommand*{\@hnto@phr}{To}%
+% \renewcommand*{\@hnfr@phr}{From}%
+% }
+% \end{verbatim}
+% \item Use file |extracd.tex| to store the new commands. This file
+% should be placed in the same subdirectory as |newlfm.cls|. When the
+% program executes, it includes the file if it is found.
+% \item Use the appropriate option to include the correct code.
+% \end{enumerate}
+% \subsection{Printing the address information}
+% The |newlfm| package prints a variety of address \info{} in
+% specific ways which are appropriate and standard for letters. In some
+% cases, you may wish to print other \info{} from the addresses in more
+% flexible ways. For this purpose, certain printing macros are defined.
+% These are shown in \tabr{printcom}.
+%
+% \tabsetx{4}{Printing address information}{printcom}
+% \begin{center}
+% \begin{tabular}{lllll}
+% \hline
+% Select & Command & Item & Command & Item \\ \hline
+% ``To'' & |\printnameto| & Name &
+% |\printaddrto| & address \\
+% & |\printphoneto| & phone &
+% |\printphoneato| & phone A \\
+% & |\printphonebto| & phone B &
+% |\printphonecto| & phone C \\
+% & |\printphonedto| & phone D &
+% |\printphoneoto| & phone O \\
+% & |\printphonehto| & phone H &
+% |\printpagerto| & pager \\
+% & |\printfaxto| & FAX &
+% |\printgreetto| & greeting \\
+% & |\printemailto| & email &
+% |\printemailbto| & email \\
+% & |\printemailcto| & email C &
+% |\printlnameto| & last name \\
+% |\printfnameto| & first name \\
+% ``From'' & |\printnamefrom| & name &
+% |\printaddrfrom| & address \\
+% & |\printphonefrom| & phone &
+% |\printphoneafrom| & phone A \\
+% & |\printphonebfrom| & phone B &
+% |\printphonecfrom| & phone C\ \\
+% & |\printphonedfrom| & phone D &
+% |\printphoneofrom| & phone O \\
+% & |\printphonehfrom| & phone H &
+% |\printpagerfrom| & pager \\
+% & |\printfaxfrom| & FAX &
+% |\printgreetfrom| & greet \\ing
+% & |\printemailfrom| & email &
+% |\printemailbfrom| & email \\
+% & |\printemailcfrom| & email C &
+% |\printlnamefrom| & last name \\
+% & |\printfnamefrom| & first name \\
+% \hline
+% \end{tabular}
+% \end{center}
+%
+% These commands can be issued in any letter to print the \info{} for the
+% particular address component.
+%
+% \subsection{Cellophane-window envelopes}
+% Letters are sometimes set up to be printed for a cellophane-window
+% envelope. Using this approach, the ``to-address'' must be placed into
+% a specific orientation. In |newlfm|, this is particularily
+% challenging, as the class attempts to grant users great flexibility.
+%
+% In |newlfm|, users can specify the use of a cellophane-window
+% envelope. The |cellowindow| option specifies this choice. The
+% ``to-address'' block is positioned down from the top (using |cellodown|
+% to specify the length down; default = 2.5 inches) and left from the side (using |celloleft|
+% to specify the length from the left; default = 1 inch). If the user specifies the
+% printing of a ``from-address'' and a date, it may not be possible to
+% print the ``to-address'' in the correct location; in this case, the
+% user should carefully examine the log and the output screen to
+% determine if the specified locations can be used in the context of
+% other options.
+% The user can also specify the height and width of the ``to-address''
+% block as |cellowidth| (default = 4 inches) and |celloheight| (default =
+% 1 inch).
+%
+% \subsection{Examples}
+% |newlfm| includes a large number of examples specified as |test1.tex|
+% through |test12.tex|. These examples all specify their options using
+% the |newlfmP| mechanism. Each file is also set up using the
+% |\documentclass| specification, on |test1alt.tex| through
+% |test8alt.tex|. When preparing examples, both |pdflatex| and |latex| are
+% both used to prepare examples.
+%
+% \newcommand{\pdfLaTeX}{\texttt{pdf}\LaTeX}
+% \subsection{\LaTeX\ vs. \pdfLaTeX}
+% \pdfLaTeX\ is becoming more and more common in document production in
+% the \TeX\ family. It is not the standard yet, and there remain tools
+% which work only in the \LaTeX\ system (i.e., |pstricks|).
+%
+% The author uses |.eps| files, constructed to ensure that the bounding
+% box accurately encapsulates the active text area of the |.eps| figure.
+% Each of the figures was then converted to |.pdf| encoding using
+% |GSview|. However, the bounding box in the |.pdf| files does not seem
+% to act to crop the image in the same manner. Using the same code for
+% both \pdfLaTeX\ and \LaTeX\ processing does not result in the same
+% appearance of the output page.
+%
+% For this reason, functionality of H. Oberdiek's |ifpdf.sty| file is
+% included in |newlfm|. This tool allows one option to be performed
+% when \pdfLaTeX is used for processing, and another option to be
+% executed in the \LaTeX\ environment. Use of this tool is illustrated in the
+% |letrinfo.tex| file included in the |newlfm| package.
+%
+% Here is an example:
+% \begin{verbatim}
+% \newsavebox{\Lpalme}%
+% \ifpdf
+% \savebox{\Lpalme}{\parbox[t][1in][t]{2in}%
+% {\includegraphics[scale=.1,viewport=135 624 360 700]{palm}\vspace{.5in} \\
+% \rule{2in}{2pt} \\
+% 25 Signal Hill Blvd}
+% }
+% \else
+% \savebox{\Lpalme}{\parbox[t]{2in}%
+% {\includegraphics[scale=.1]{palm} \\
+% \rule{2in}{2pt} \\
+% 25 Signal Hill Blvd}
+% }
+% \fi
+% \end{verbatim}
+% Note that the |\ifpdf| construction includes the entire |\savebox|
+% specification. Although this is not the only manner in which this
+% system will work, it is a reliable method. Problems can be found,
+% which are very hard to diagnose, when the |\ifpdf-\fi| construction is
+% used to control processing of portions of a specification.
+%
+% \subsection{Usage tips}
+% As with any complex program, there are certain tips which can enhance
+% the use of the program. Here are several. If you come up with new
+% ones, please forward them to {\tt paul@wubios.wustl.edu}; complete
+% files demonstrating useful ideas are the most helpful.
+%
+% \begin{itemize}
+% \item |geometry| is no longer used for dimension setting. Rather, all
+% dimensions are set internally. This is done using a combination of
+% default values, header and footer sizes and values input from the user.
+% These include primarily the page size commands |leftmarginsize|,
+% |textwidthsize| and |rightmarginsize|.
+% \item When size commands are used, they will be overridden by structures.
+% Additionally, dimensional commands are applied in order. Inconsistencies
+% are resolved by attending to the most recent commands, and ignoring
+% earlier inconsistent ones.
+% \end{itemize}
+%
+% \newpage
+%
+% \section{Command Summary}
+% \label{sec:summ}
+% \begin{verbatim}
+% \documentstyle[options]{newlfm}
+%
+% \topmarginsize{.25in} \addrfrom{Paul A. Thompson}
+% \adr{PAT}
+% \NewlfmP{leftmarginsize=1.25in}
+%
+% \begin{document}
+% \begin{newlfm}
+% text text text
+% \end{newlfm}
+% \end{document}
+% \end{verbatim}
+%
+% \vspace*{-.125in}
+%
+% \begin{raggedright}
+% \begin{description}
+% \item \textbf{Letter styles:} |stdletter|, |stdletternofrom|, |busletter|,
+% |busletternofrom|
+% (\tabpagr{letteropt})
+% \item \textbf{Letter options:} |noaddrfrom|, |printallfrom|, |printallto|,
+% |dateright|, |dateleft|, |datecenter|, |sigright|,
+% |sigleft|, |sigcenter|, |addrtoemail|, |addrtophone|, |addrtofax|,
+% |addrfromemail|, |addrfromphone|, |addrfromfax|
+% (\tabpagr{letteropt} --- can be specified
+% either in the document-header option block or in the
+% |\newlfmP| command)
+% \item \textbf{Letter date information:} |\dateset|
+% \item \textbf{Memo styles:} |stdmemo|, |fullmemo| (\tabpagr{memoopt})
+% \item \textbf{Memo options:} |memoaddrto|, |memoemailto|, |memophoneto|,
+% |memofaxto|, |memoaddrfrom|, |memoemailfrom|, |memophonefrom|,
+% |memofaxfrom|, |memopagerto|, |memopagerfrom| (\tabpagr{memoopt} --- can be specified
+% either in the letter |\documentclass| option block or in the
+% |\newlfmP| command)
+% \item {\bf{FAX styles:}} |faxheaderpage|, |faxhba|, |faxhbb| (\tabpagr{faxopt})
+% \item {\bf{FAX options:}} |faxblocka|, |faxblockb| (\tabpagr{faxopt} --- can be specified
+% either in the letter |\documentclass| option block or in the
+% |\newlfmP| command)
+% \item {{\bf Press Release Styles:}} |stdpressrelease|%
+% \item {{\bf Press Release Options:}} |dspace|,|sspace|%
+% \item {{\bf Cellophane-window envelopes:}} |cellowindow|%
+% \item {{\bf Cellophane-window options:}} |cellodown|,|celloleft|,|cellowidth|,|celloheight|
+% \item {\bf{Address item order options:}} |orderdatefromto|,
+% |orderfromdateto|, |orderfromtodate| (can be specified
+% either in the document-header option block or in the
+% |\newlfmP| command)
+% \item {\textbf{\texttt{envlab} options:}} |useenvlab|
+% \item {\bf{To-Address commands:}} |\nameto|, |\addressto|, |\phoneto|,
+% |\phonebto|, |\phonecto|, |\phonedto|, |\faxto|, |\emailto|, |\greetto|,
+% |\setadrto{\adrXXX}|, |\setadrto{\fixadr{XXX}}| |\regarding|,
+% |\fnameto|, |\lnameto|, |\addrt|,
+% \item {\bf{From-Address commands:}} |\namefrom|, |\name|, |\address|,
+% |\addrfrom|, |\phone|, |\phonefrom|, |\phonebfrom|, |\phonecfrom|,
+% |\phonedfrom|, |\fax|, |\faxfrom|, |\emailfrom|,
+% |\setadrfr{\adrXXX}|, |\setadrfr{\fixadr{XXX}}|, |\fnamefrom|, |\lnamefrom|, |\addrf|
+% \item {{\bf Press Release commands:}} |\byline|, |\headline|,
+% |\release|, |\shorthead|
+% \item {\bf{End of letter commands:}} |\cclist|, |\encllist|, |\initials|,
+% |\faxmssg|, |\psitem|, |\ppsitem|, |\pppsitem|, |\re|, |\subre|
+% (\tabpagr{eolc})
+% \item {\bf{Signature commands:}} |\signature|, |\signame|, |\siglist|, |\sigacross|,
+% |\closeline|, |\sigtr|
+% (\tabpagr{sigsc})
+% \item {\bf{Horizontal spacing and sizing commands:}}
+% |\unprleft|, |\leftmarginskipleft|, |\leftmarginsize|,
+% |\leftmarginskipright|, |\textwidth|, |\rightmarginsize|,
+% |\unprright|, |MinLeft|, |MinRight|, |minleft|, |minright|
+% (\tabpagr{spacehor} --- can be specified
+% either in the letter itself or in the
+% |\newlfmP| command; when specified in the NewlfmP statement, they are
+% specified without the ``|\|'')
+% \item {\bf{Vertical spacing and sizing commands:}}
+% |\unprtop|, |\topmarginskip|, |\headermarginsize|, |\headermarginskip|,
+% |\leftmargintopdist|, |\rightmargintopdist|, |\memoskipbefore|, |\memoskipafter|,
+% |\dateskipbefore|, |\dateskipafter|, |\addrfromskipbefore|,
+% |\addrfromskipafter|, |\addrtoskipbefore|, |\addrtoskipafter|,
+% |\greettoskipbefore|, |\greettoskipafter|, |\textheight|,
+% |\sigskipbefore|, |\sigsize|, |\sigskipafter|,|\sigskipcolumn|,
+% |\sigskiprow|, |\postsigskipbefore|,
+% |\postsigskipafter|, |\bottommarginskip|, |\footermarginsize|,
+% |\unprbottom|, |MinHead|, |MinFoot|, |minhead|, |minfoot|
+% (\tabpagr{spacever} --- can be specified
+% either in the letter itself or in the
+% |\newlfmP| command; when specified in the NewlfmP statement, they are
+% specified without the ``|\|'')
+% \item {\bf{Wrapper commands:}} |\makeaddress{XXX}{xxx info}| creates a
+% command |\adrXXX| containing the ``xxx info'',
+% |\makeletterhead{XXX}{stuff}| creates a command |\lthXXX| containing
+% ``stuff'' and |\makesignature{XXX}{sigstuff}|
+% creates a command |\sigXXX| with ``sigstuff'' (\pagex{wrapc}).
+% \item {\bf{Form letters:}}
+% |\letterbody| sets the body of a form letter, while |\doletter{zz}|
+% prints the letter, |zz| is any command to be issued before the
+% letter, which will usually be a wrapper command name.
+% \item {\bf{Letterhead commands:}} |\Lfooter|, |\Cfooter|, |\Rfooter|,
+% |\Lheader|, |\Cheader|, |\Rheader|, |\Lmargin|, |\Rmargin|,
+% |\lfooter|, |\cfooter|, |\rfooter|, |\lheader|, |\cheader|,
+% |\rheader|, |\lmargin|, |\rmargin|, |\letrh| (\tabpagr{letterhopt})
+% \item {\bf{Blanking options:}} |blankheader|, |blankfooter|,
+% |blankrmargin|, |blanklmargin|, |Blankheader|, |Blankfooter|,
+% |Blankrmargin|, |Blanklmargin|, |blankall|, |Blankall|,
+% |Blank| (\tabpagr{blankopt})
+% \item {\textbf{Printing commands:}} |\printnameto|, |\printaddrto|,
+% |\printphoneto|, |\printphoneato|, |\printphonebto|, |\printphonecto|,
+% |\printphonedto|, |\printphoneoto|, |\printphonehto|, |\printpagerto|,
+% |\printfaxto|, |\printgreetto|, |\printemailto|, |\printemailbto|,
+% |\printemailcto|, |\printlnameto|, |\printfnameto|, |\printnamefrom|,
+% |\printaddrfrom|, |\printphonefrom|, |\printphoneafrom|,
+% |\printphonebfrom|, |\printphonecfrom|, |\printphonedfrom|,
+% |\printphoneofrom|, |\printphonehfrom|, |\printpagerfrom|,
+% |\printfaxfrom|, |\printgreetfrom|, |\printemailfrom|,
+% |\printemailbfrom|, |\printemailcfrom|, |\printlnamefrom|,
+% |\printfnamefrom| (\tabpagr{printcom})
+% \end{description}
+% \end{raggedright}
+%
+% \newpage
+%
+% \StopEventually
+%
+% \section{Code (excluded from manual)}
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+% \subsection{Preliminaries}
+% In this part we define a few commands that are used later on.
+%
+% These commands are used for printing control during debugging.
+% \begin{macrocode}
+\def\ifta{0}\def\iftb{0}%
+\def\txa#1{\ifthenelse{\equal{\ifta}{1}}{\typeout{#1}}{}}%
+\def\txb#1{}%\ifthenelse{\iftb=1}{\typeout{#1}}{}}%
+% \end{macrocode}
+%
+% A number of packages are needed by this approach to letter construction.
+% These are entered here. These packages include the following:
+% \begin{itemize*}
+% \item |keyval|: Read in key values from a single or multiple lines
+% \item |ifthen|: Good control over conditional logic --- this actually
+% was included above so that the boolean constructions
+% can be used during the class file
+% \item |setdim|: Sets page dimensions -- similar to |chngpage|
+% \item |fancyhdr|: Control over header and footer, and several structures
+% at one time
+% \item |envlab|: Prints envelopes and labels in flexible ways
+% \item |calc|: Better arithmatic in the program
+% \item |graphicx|: External handling of graphical \info
+% \end{itemize*}
+%
+% \begin{macrocode}
+\RequirePackage{keyval}%
+\RequirePackage{ifthen}[1997/11/02]%
+\RequirePackage{ifpdf}%
+\RequirePackage{setdim}%
+\RequirePackage{fancyhdr}%
+\RequirePackage{eso-pic}%
+\RequirePackage{setspace}%
+\RequirePackage{lastpage}%
+\@ifundefined{ps@@empty}{%
+ \ClassError{newlfm}{Version of fancyhdr.sty is not current. \MessageBreak
+ Please obtain a recent copy of fancyhdr.sty (Version 1.99d or later)
+ from CTAN.} {Go to CTAN and download the current version of
+ fancyhdr.sty}}{}
+\RequirePackage{calc}[1997/11/11]%
+\RequirePackage{graphicx}[1997/06/09]%
+\RequirePackage{rotating}[1997/06/09]%
+% \end{macrocode}
+% \paragraph{\texttt{newlength} definitions:}
+% Begin by defining all newlength commands here:
+% \begin{macrocode}
+\newlength{\@addr@fr@sk@b} \newlength{\@addr@fr@sk@a} \newlength{\@addr@to@sk@b}%
+\newlength{\@addr@to@sk@a} \newlength{\@blka@b} \newlength{\@blka@a}%
+\newlength{\@blkb@b} \newlength{\@blkb@a} \newlength{\@blkc@b}%
+\newlength{\@blkc@a} \newlength{\@caption@skip@above}\newlength{\@caption@skip@below}%
+\newlength{\@cello@h} \newlength{\@cello@w} \newlength{\@cello@d}%
+\newlength{\@cello@l} \newlength{\@dt@sk@b} \newlength{\@dt@sk@a}%
+\newlength{\@Dth@H@L} \newlength{\@Dth@H@C} \newlength{\@Dth@H@R}%
+\newlength{\@Dth@F@L} \newlength{\@Dth@F@C} \newlength{\@Dth@F@R}%
+\newlength{\@Dth@h@l} \newlength{\@Dth@h@c} \newlength{\@Dth@h@r}%
+\newlength{\@Dth@f@l} \newlength{\@Dth@f@c} \newlength{\@Dth@f@r}%
+\newlength{\@greet@to@sk@b} \newlength{\@greet@to@sk@a} \newlength{\@Hgt@Head}%
+\newlength{\@Hrw} \newlength{\@hrw} \newlength{\@extr@hor}%
+\newlength{\@Frw} \newlength{\@frw}%
+\newlength{\@Hgt@Foot} \newlength{\@Hgt@head} \newlength{\@Hgt@foot}%
+\newlength{\@Hgt@H@L} \newlength{\@Hgt@H@C} \newlength{\@Hgt@H@R}%
+\newlength{\@Hgt@F@L} \newlength{\@Hgt@F@C} \newlength{\@Hgt@F@R}%
+\newlength{\@Hgt@h@l} \newlength{\@Hgt@h@c} \newlength{\@Hgt@h@r}%
+\newlength{\@Hgt@f@l} \newlength{\@Hgt@f@c} \newlength{\@Hgt@f@r}%
+\newlength{\@lab@bl} \newlength{\@lab@pl} \newlength{\@lab@pw}%
+\newlength{\@lab@bh} \newlength{\@lab@bw} \newlength{\@lab@th}%
+\newlength{\@lab@lm} \newlength{\@marg@lt} \newlength{\@marg@rt}%
+\newlength{\@marg@tp} \newlength{\@marg@bt} \newlength{\@marg@tp@a}%
+\newlength{\@marg@bt@a} \newlength{\@marg@tp@b} \newlength{\@marg@tp@s}%
+\newlength{\@marg@bt@b} \newlength{\@marg@lt@r} \newlength{\@marg@lt@l}%
+\newlength{\@marg@rt@r} \newlength{\@marg@rt@l} \newlength{\@marg@lt@tp@d}%
+\newlength{\@marg@rt@tp@d} \newlength{\@Min@Hgt@Head} \newlength{\@Min@Hgt@head}%
+\newlength{\@Min@Hgt@Foot} \newlength{\@Min@Hgt@foot} \newlength{\@Min@Hgt@Right}%
+\newlength{\@Min@Hgt@right} \newlength{\@Min@Hgt@Left} \newlength{\@Min@Hgt@left}%
+\newlength{\@Plg} \newlength{\@Pwd} \newlength{\@plg}%
+\newlength{\@pwd} \newlength{\@post@sig@sp@a} \newlength{\@post@sig@sp@b}%
+\newlength{\@pre@memo@sp} \newlength{\@post@memo@sp} \newlength{\@sig@sk@b}%
+\newlength{\@sig@sk@a} \newlength{\@sig@sp} \newlength{\@text@width}%
+\newlength{\@sig@sk@c} \newlength{\@sig@sk@r}%
+\newlength{\@stock@height} \newlength{\@stock@width}%
+\newlength{\@fax@height} \newlength{\@fax@width}%
+\newlength{\@text@height} \newlength{\@unpr@tp} \newlength{\@unpr@bm}%
+\newlength{\@unpr@rt} \newlength{\@unpr@lt} \newlength{\@util}%
+\newlength{\@utila} \newlength{\@utilb} \newlength{\@utilc}%
+\newlength{\@utild} \newlength{\@utile}%
+\newlength{\@xda} \newlength{\@xdb} \newlength{\@xdc}%
+\newlength{\@xdd} \newlength{\@xde} \newlength{\@xdf}%
+\newlength{\@xdg} \newlength{\@xdh} \newlength{\@xdi}%
+\newlength{\extrarulesep}%
+% \end{macrocode}%
+% \paragraph{\texttt{newlength} default values:}%
+% Begin by defining all newlength commands here:%
+% \begin{macrocode}%
+\setlength{\@cello@h}{1in} \setlength{\@cello@w}{3in}%
+\setlength{\@cello@d}{2.5in} \setlength{\@cello@l}{1in}%
+\setlength{\@marg@tp@s}{0in} \setlength{\@marg@bt@b}{0in}%
+\setlength{\@unpr@tp}{0in} \setlength{\@unpr@bm}{0in}%
+\setlength{\@unpr@rt}{0in} \setlength{\@unpr@lt}{0in}%
+\setlength{\@marg@lt@r}{0in} \setlength{\@marg@lt@l}{0in}%
+\setlength{\@marg@rt@r}{0in} \setlength{\@marg@lt}{1in}%
+\setlength{\@marg@rt}{1in} \setlength{\@marg@tp}{1in}%
+\setlength{\@marg@bt}{1in} \setlength{\@marg@tp@a}{0in}%
+\setlength{\@marg@bt@a}{0in} \setlength{\@marg@tp@b}{0in}%
+\setlength{\@marg@rt@l}{0in} \setlength{\@marg@lt@tp@d}{0pt}%
+\setlength{\@marg@rt@tp@d}{0pt}%
+\setlength{\@Hrw}{1pt} \setlength{\@hrw}{1pt}%
+\setlength{\@Frw}{1pt} \setlength{\@frw}{1pt}%
+\setlength{\@sig@sk@a}{5pt} \setlength{\@sig@sk@b}{5pt}
+\setlength{\@sig@sk@c}{5pt} \setlength{\@sig@sk@r}{5pt}%
+\setlength{\@fax@height}{720pt}\setlength{\@fax@width}{432pt}%
+\setlength{\@extr@hor}{0pt}%
+% \end{macrocode}%
+% \paragraph{\texttt{newsavebox} definitions:}%
+% Define all newsavebox commands here:%
+% \begin{macrocode}%
+\newsavebox{\@sig@box@a}\newsavebox{\b@addr@fr}\newsavebox{\b@addr@to}%
+\newsavebox{\@x@c} \newsavebox{\@x@l} \newsavebox{\@x@r} \newsavebox{\@xdateb}%
+\newsavebox{\fba} \newsavebox{\adrfr} \newsavebox{\adrto} \newsavebox{\@sp@box}%
+\newsavebox{\@sig@box@b}\newsavebox{\@sig@box@c}\newsavebox{\@sig@box@d}%
+\newsavebox{\@sig@box@e}\newsavebox{\@sig@box@f}\newsavebox{\@sig@box@g}%
+\newsavebox{\@sig@box@h}\newsavebox{\@sig@box@i}\newsavebox{\@sig@box@j}%
+\newsavebox{\@hblk@aa}\newsavebox{\@hblk@ab}\newsavebox{\@hblk@ac}%
+\newsavebox{\@hblk@ba}\newsavebox{\@hblk@bb}\newsavebox{\@hblk@bc}%
+\newsavebox{\@hblk@ca}\newsavebox{\@hblk@cb}\newsavebox{\@hblk@cc}%
+\newsavebox{\@hblk@da}\newsavebox{\@hblk@db}\newsavebox{\@hblk@dc}%
+\newsavebox{\@hblk@ea}\newsavebox{\@hblk@eb}\newsavebox{\@hblk@ec}%
+\newsavebox{\@hblk@fa}\newsavebox{\@hblk@fb}\newsavebox{\@hblk@fc}%
+\newsavebox{\@hblk@ga}\newsavebox{\@hblk@gb}\newsavebox{\@hblk@gc}%
+\newsavebox{\@hblk@ha}\newsavebox{\@hblk@hb}\newsavebox{\@hblk@hc}%
+\newsavebox{\@hblk@ia}\newsavebox{\@hblk@ib}\newsavebox{\@hblk@ic}%
+\newlength{\@hblk@a@bef} \newlength{\@hblk@a@aft}%
+\newlength{\@hblk@b@bef} \newlength{\@hblk@b@aft}%
+\newlength{\@hblk@c@bef} \newlength{\@hblk@c@aft}%
+\newlength{\@hblk@d@bef} \newlength{\@hblk@d@aft}%
+\newlength{\@hblk@e@bef} \newlength{\@hblk@e@aft}%
+\newlength{\@hblk@f@bef} \newlength{\@hblk@f@aft}%
+\newlength{\@hblk@g@bef} \newlength{\@hblk@g@aft}%
+\newlength{\@hblk@h@bef} \newlength{\@hblk@h@aft}%
+\newlength{\@hblk@i@bef} \newlength{\@hblk@i@aft}%
+\setlength{\@hblk@a@bef}{0pt} \setlength{\@hblk@a@aft}{0pt}%
+\setlength{\@hblk@b@bef}{0pt} \setlength{\@hblk@b@aft}{0pt}%
+\setlength{\@hblk@c@bef}{0pt} \setlength{\@hblk@c@aft}{0pt}%
+\setlength{\@hblk@d@bef}{0pt} \setlength{\@hblk@d@aft}{0pt}%
+\setlength{\@hblk@e@bef}{0pt} \setlength{\@hblk@e@aft}{0pt}%
+\setlength{\@hblk@f@bef}{0pt} \setlength{\@hblk@f@aft}{0pt}%
+\setlength{\@hblk@g@bef}{0pt} \setlength{\@hblk@g@aft}{0pt}%
+\setlength{\@hblk@h@bef}{0pt} \setlength{\@hblk@h@aft}{0pt}%
+\setlength{\@hblk@i@bef}{0pt} \setlength{\@hblk@i@aft}{0pt}%
+% \end{macrocode}%
+% \paragraph{\texttt{newcounter} definitions:}%
+% Define all newcounter commands here:%
+% \begin{macrocode}%
+\newcounter{@c@pos} \newcounter{figure} \newcounter{table}%
+\newcounter{@sig@tot} \newcounter{@lab@tot@row}%
+\newcounter{@lab@tot@col} \newcounter{@lab@cnt@row} \newcounter{@lab@cnt@col}%
+\newcount\@nlfm@addr%
+\newcount\@nlfm@util%
+\newcount\@nlfm@uta%
+\newcount\@nlfm@utb%
+% \end{macrocode}%
+% \paragraph{\texttt{newboolean} definitions:}%
+% Boolean variables are defined here. Package |ifthen| defines%
+% |\newboolean|. Booleans are a good approach for simple decision-making support. In%
+% many cases, a default value is set after the boolean is declared.%
+% \begin{macrocode}%
+\newboolean{@af@c}%
+\newboolean{@af@l}%
+\newboolean{@af@p}%
+\newboolean{@addr@fr@e} \setboolean{@addr@fr@e}{false}%
+\newboolean{@addr@fr@f} \setboolean{@addr@fr@f}{false}%
+\newboolean{@addr@fr@t} \setboolean{@addr@fr@t}{false}%
+\newboolean{@addr@swtch} \setboolean{@addr@swtch}{true}%
+\newboolean{@at@c}%
+\newboolean{@at@l}%
+\newboolean{@at@p}%
+\newboolean{@addr@to@f} \setboolean{@addr@to@f}{false}%
+\newboolean{@addr@to@e} \setboolean{@addr@to@e}{false}%
+\newboolean{@addr@to@t} \setboolean{@addr@to@t}{false}%
+\newboolean{@b@h} \setboolean{@b@h}{false}%
+\newboolean{@b@f} \setboolean{@b@f}{false}%
+\newboolean{@b@r} \setboolean{@b@r}{false}%
+\newboolean{@b@l} \setboolean{@b@l}{false}%
+\newboolean{@B@h} \setboolean{@B@h}{false}%
+\newboolean{@B@f} \setboolean{@B@f}{false}%
+\newboolean{@B@r} \setboolean{@B@r}{false}%
+\newboolean{@B@l} \setboolean{@B@l}{false}%
+\newboolean{@bg@use} \setboolean{@bg@use}{false}%
+\newboolean{@Bg@use} \setboolean{@Bg@use}{false}%
+\newboolean{@cello@win} \setboolean{@cello@win}{false}%
+\newboolean{@cf@use} \setboolean{@cf@use}{false}%
+\newboolean{@Ch@use} \setboolean{@Ch@use}{false}%
+\newboolean{@Cf@use} \setboolean{@Cf@use}{false}%
+\newboolean{@COf@use} \setboolean{@COf@use}{false}%
+\newboolean{@CUh@use} \setboolean{@CUh@use}{false}%
+\newboolean{@ch@use} \setboolean{@ch@use}{false}%
+\newboolean{@do@any}%
+\newboolean{@dt@l} \setboolean{@dt@l}{true}%
+\newboolean{@dt@c} \setboolean{@dt@c}{false}%
+\newboolean{@dt@p}%
+\newboolean{@env@open} \setboolean{@env@open}{false}%
+\newboolean{@env@close} \setboolean{@env@close}{false}%
+\newboolean{@fax@m@run} \setboolean{@fax@m@run}{false}%
+\newboolean{@fax@hdr@pg}%
+\newboolean{@fax@RA}%
+\newboolean{@fax@RU}%
+\newboolean{@fax@bla} \setboolean{@fax@bla}{true}%
+\newboolean{@fax@blb} \setboolean{@fax@blb}{false}%
+\newboolean{@fl} \setboolean{@fl}{true}%
+\newboolean{@greet@p}%
+\newboolean{@greet@l}%
+\newboolean{@hblk@a} \setboolean{@hblk@a}{false}%
+\newboolean{@hblk@b} \setboolean{@hblk@b}{false}%
+\newboolean{@hblk@c} \setboolean{@hblk@c}{false}%
+\newboolean{@hblk@d} \setboolean{@hblk@d}{false}%
+\newboolean{@hblk@e} \setboolean{@hblk@e}{false}%
+\newboolean{@hblk@f} \setboolean{@hblk@f}{false}%
+\newboolean{@hblk@g} \setboolean{@hblk@g}{false}%
+\newboolean{@hblk@h} \setboolean{@hblk@h}{false}%
+\newboolean{@hblk@i} \setboolean{@hblk@i}{false}%
+\newboolean{@hl} \setboolean{@hl}{true}%
+\newboolean{@in@tab}%
+\newboolean{@in@makeenv} \setboolean{@in@makeenv}{false}%
+\newboolean{@l@am} \setboolean{@l@am}{true}%
+\newboolean{@l@en} \setboolean{@l@en}{false}%
+\newboolean{@l@ge} \setboolean{@l@ge}{false}%
+\newboolean{@l@fr} \setboolean{@l@fr}{false}%
+\newboolean{@l@ot} \setboolean{@l@ot}{false}%
+\newboolean{@l@pi} \setboolean{@l@pi}{false}%
+\newboolean{@lab@t} \setboolean{@lab@t}{true}%
+\newboolean{@lab@cft} \setboolean{@lab@cft}{false}%
+\newboolean{@lab@rft} \setboolean{@lab@rft}{false}%
+\newboolean{@Lf@use} \setboolean{@Lf@use}{false}%
+\newboolean{@lf@use} \setboolean{@lf@use}{false}%
+\newboolean{@Lh@use} \setboolean{@Lh@use}{false}%
+\newboolean{@lh@use} \setboolean{@lh@use}{false}%
+\newboolean{@LOf@use} \setboolean{@LOf@use}{false}%
+\newboolean{@LUh@use} \setboolean{@LUh@use}{false}%
+\newboolean{@marg@lt@fl@tp}\setboolean{@marg@lt@fl@tp}{false}%
+\newboolean{@marg@rt@fl@tp}\setboolean{@marg@rt@fl@tp}{false}%
+\newboolean{@marg@luse} \setboolean{@marg@luse}{false}%
+\newboolean{@marg@ruse} \setboolean{@marg@ruse}{false}%
+\newboolean{@marg@Luse} \setboolean{@marg@Luse}{false}%
+\newboolean{@marg@Ruse} \setboolean{@marg@Ruse}{false}%
+\newboolean{@memo@bl}%
+\newboolean{@memo@a}%
+\newboolean{@memo@b} \setboolean{@memo@b}{false}%
+\newboolean{@memo@c} \setboolean{@memo@c}{false}%
+\newboolean{@memo@d} \setboolean{@memo@d}{false}%
+\newboolean{@memo@e} \setboolean{@memo@e}{true}%
+\newboolean{@memo@f} \setboolean{@memo@f}{true}%
+\newboolean{@memo@g} \setboolean{@memo@g}{true}%
+\newboolean{@memo@h} \setboolean{@memo@h}{false}%
+\newboolean{@memo@i} \setboolean{@memo@i}{false}%
+\newboolean{@memo@j} \setboolean{@memo@j}{false}%
+\newboolean{@memo@k} \setboolean{@memo@k}{false}%
+\newboolean{@memo@l} \setboolean{@memo@l}{false}%
+\newboolean{@memo@m} \setboolean{@memo@m}{false}%
+\newboolean{@memo@n} \setboolean{@memo@n}{false}%
+\newboolean{@no@cen} \setboolean{@no@cen}{false}%
+\newboolean{@no@spc} \setboolean{@no@spc}{false}%
+\newboolean{@prnt@frm} \setboolean{@prnt@frm}{false}%
+\newboolean{@ROf@use} \setboolean{@ROf@use}{false}%
+\newboolean{@Rf@use} \setboolean{@Rf@use}{false}%
+\newboolean{@rf@use} \setboolean{@rf@use}{false}%
+\newboolean{@Rh@use} \setboolean{@Rh@use}{false}%
+\newboolean{@RUh@use} \setboolean{@RUh@use}{false}%
+\newboolean{@rh@use} \setboolean{@rh@use}{false}%
+\newboolean{@over@all} \setboolean{@over@all}{true}%
+\newboolean{@over@setto} \setboolean{@over@setto}{false}%
+\newboolean{@over@setfr} \setboolean{@over@setfr}{false}%
+\newboolean{@over@sigbl} \setboolean{@over@sigbl}{false}%
+\newboolean{@pt@regard} \setboolean{@pt@regard}{false}%
+\newboolean{@s@b@s} \setboolean{@s@b@s}{false}%
+\newboolean{@set@env} \setboolean{@set@env}{false}%
+\newboolean{@sig@p}%
+\newboolean{@sig@mp}%
+\newboolean{@sig@l} \setboolean{@sig@l}{true}%
+\newboolean{@sig@c} \setboolean{@sig@l}{false}%
+\newboolean{@space@d} \setboolean{@space@d}{true}
+\newboolean{@space@s} \setboolean{@space@s}{false}
+\newboolean{@mult@sig} \setboolean{@mult@sig}{false}%
+\newboolean{@use@sig}%
+\newboolean{@use@close}%
+\newboolean{@use@sig@nm}%
+\newboolean{@use@all@fr}%
+\newboolean{@use@all@to}%
+\newboolean{@use@envlab} \setboolean{@use@envlab}{false}%
+\newboolean{@ztila} \newboolean{@ztilb}%
+\newboolean{@pr@p} \setboolean{@pr@p}{false}%
+\newboolean{@pr@by}
+% \end{macrocode}%
+%
+% \subsection{newlfm commands}%
+% Now begin defining new commands.%
+% \paragraph{Ordering of date, from-address and to-address:}%
+% These commands allow the ordering of date, to-block and from-block:%
+% \begin{macrocode}%
+\def\@d@pos#1{\def\@intd@pos{#1}}%
+\def\@t@pos#1{\def\@intt@pos{#1}}%
+\def\@f@pos#1{\def\@intf@pos{#1}}%
+% \end{macrocode}%
+%
+% \paragraph{\texttt{keyval} processing:} When using the |keyval|%
+% approach to option specification, something similar to the next code%
+% must be used. At this point, this is not 100 \% correct, and so it%
+% will be altered as soon as I can figger it out.%
+% \begin{macrocode}%
+\def\newlfmParam{\@ifnextchar[%]
+\newlx@i{\newlx@i[]}}%
+\def\newlx@i[#1]{{\setkeys{ov}{#1}}}%
+\def\Dimens{\@ifnextchar[%]%
+\Dimens@i{\Dimens@i[]}}%
+\def\Dimens@i[#1]{{\setkeys{ov}{#1}}}%
+\def\Language{\@ifnextchar[%]%
+\Lang@i{\Lang@i[]}}%
+\def\Lang@i[#1]{{\setkeys{ov}{#1}}}%
+\def\MemoParam{\@ifnextchar[%]%
+\MemoP@i{\MemoP@i[]}}%
+\def\MemoP@i[#1]{{\setkeys{ov}{#1}}}%
+\def\LetterParam{\@ifnextchar[%]%
+\LetrP@i{\LetrP@i[]}}%
+\def\LetrP@i[#1]{{\setkeys{ov}{#1}}}%
+\def\FAZParam{\@ifnextchar[%]%
+\FAXP@i{\FAXP@i[]}}%
+\def\FAXP@i[#1]{{\setkeys{ov}{#1}}}%
+\def\LetterP#1{\setkeys{ov}{#1}}%
+\def\newlfmP#1{\setkeys{ov}{#1}}%
+\def\LanguageP#1{\setkeys{ov}{#1}}%
+\def\FAXP#1{\setkeys{ov}{#1}}%
+\def\DimensP#1{\setkeys{ov}{#1}}%
+\def\MemoP#1{\setkeys{ov}{#1}}%
+\def\iffixt#1#2{\ifthenelse{\equal{#1}{true}}{\setboolean{#2}{true}}{}}%
+\def\iffixf#1#2{\ifthenelse{\equal{#1}{true}}{\setboolean{#2}{false}}{}}%
+\def\iffixq#1#2{\ifthenelse{\equal{#1}{true}}{#2}{}}%
+% \end{macrocode}%
+%
+% \paragraph{Language option definitions:}%
+% These options define the language for the letter. These macros are not%
+% frequently manipulated. Basically, the strings defined here%
+% set up the printing of structural elements of a memo or letter, such as%
+% the ``From'' or ``To'' strings.%
+% These terms are used at various points in printing letters and memos.%
+% They are American terms; your mileage may vary. Inclusion of other%
+% terms is encouraged, especially when another language group is served.%
+% \begin{macrocode}%
+\def\DatePhrase#1{\def\@date@phr{#1}}%
+\def\PhrFAXcovp#1{\def\@fax@cover@line{#1}}%
+\def\PhrFAXpgcnt#1{\def\@fax@page@count{#1}}%
+\def\PhrEmail#1{\def\@email@phr{#1}}%
+\def\PhrFax#1{\def\@fax@phr{#1}}%
+\def\PhrPager#1{\def\@pager@phr{#1}}%
+\def\PhrDocument#1{\def\@doc@phr{#1}}%
+\def\PhrPhone#1{\def\@phn@phr{#1}}%
+\def\PhrRe#1{\def\@re@phr{#1}}%
+\def\PhrSubre#1{\def\@subre@phr{#1}}%
+\def\PhrCc#1{\def\@cc@phr{#1}}%
+\def\PhrPs#1{\def\@ps@phr{#1}}%
+\def\PhrMessage#1{\def\@m@phr{#1}}%
+\def\PhrPps#1{\def\@pps@phr{#1}}%
+\def\PhrPpps#1{\def\@ppps@phr{#1}}%
+\def\PhrEncl#1{\def\@encl@phr{#1}}%
+\def\PhrTo#1{\def\@hnto@phr{#1}}%
+\def\PhrFrom#1{\def\@hnfr@phr{#1}}%
+\def\PhrRegard#1{\def\@regard@phr{#1}}%
+\def\PhrContact#1{\def\@contact@phr{#1}}%
+\def\PhrRelease#1{\def\@release@phr{#1}}%
+\def\PhrMore#1{\def\@more@phr{#1}}%
+\def\PhrPRend#1{\def\@PRend@phr{#1}}%
+\def\lth{}\def\sig{}\def\adr{}%
+\def\letrh#1{\def\@ltr@head{#1}}%
+\define@key{ov}{letrh}{\def\@ltr@head{#1}}%
+\def\@adr@to{}\def\@adr@fr{}\def\@ltr@head{}\def\@sig@blok{}%
+\def\addrt#1{\def\@adr@to{#1}\setboolean{@over@setto}{true}}%
+\define@key{ov}{addrt}{\def\@adr@to{#1}\setboolean{@over@setto}{true}}%
+\def\addrf#1{\def\@adr@fr{#1}\setboolean{@over@setfr}{true}}%
+\define@key{ov}{addrf}{\def\@adr@fr{#1}\setboolean{@over@setfr}{true}}%
+\def\sigtr#1{\def\@sig@blok{#1}\setboolean{@over@sigbl}{true}}%
+\define@key{ov}{sigtr}{\def\@sig@blok{#1}\setboolean{@over@sigbl}{true}}%
+\def\MinHead#1{\setlength{\@Min@Hgt@Head}{#1}}%
+\define@key{ov}{MinHead}{\setlength{\@Min@Hgt@Head}{#1}}%
+\def\minhead#1{\setlength{\@Min@Hgt@head}{#1}}%
+\define@key{ov}{minhead}{\setlength{\@Min@Hgt@head}{#1}}%
+\def\MinLeft#1{\setlength{\@Min@Hgt@Left}{#1}}%
+\define@key{ov}{MinLeft}{\setlength{\@Min@Hgt@Left}{#1}}%
+\def\minleft#1{\setlength{\@Min@Hgt@left}{#1}}%
+\define@key{ov}{minleft}{\setlength{\@Min@Hgt@left}{#1}}%
+\def\MinFoot#1{\setlength{\@Min@Hgt@Foot}{#1}}%
+\define@key{ov}{MinFoot}{\setlength{\@Min@Hgt@Foot}{#1}}%
+\def\minfoot#1{\setlength{\@Min@Hgt@foot}{#1}}%
+\define@key{ov}{minfoot}{\setlength{\@Min@Hgt@foot}{#1}}%
+\def\MinRight#1{\setlength{\@Min@Hgt@Right}{#1}}%
+\define@key{ov}{MinRight}{\setlength{\@Min@Hgt@Right}{#1}}%
+\def\minright#1{\setlength{\@Min@Hgt@right}{#1}}%
+\define@key{ov}{minright}{\setlength{\@Min@Hgt@right}{#1}}%
+\def\@def@l{american}%
+\def\@am@phr{%
+ \DatePhrase{Date} \PhrFAXcovp{FAX Cover Page} \PhrFAXpgcnt{FAX Page Count}%
+ \PhrFax{FAX} \PhrPager{Pager} \PhrEmail{E-mail}%
+ \PhrDocument{Document} \PhrPhone{Telephone} \PhrRe{Re}%
+ \PhrSubre{\ensuremath{\mathrm{Re}_2}} \PhrCc{cc}%
+ \PhrPs{Ps} \PhrMessage{Message} \PhrPps{Pps}%
+ \PhrPpps{Ppps} \PhrEncl{Encl} \PhrPager{Page}%
+ \PhrTo{To} \PhrFrom{From} \PhrRegard{Regarding}%
+ \PhrContact{Contact} \PhrRelease{For Immediate Release}%
+ \PhrMore{--- more ---} \PhrPRend{\# \# \#}%
+}
+\InputIfFileExists{extracd.tex}%
+ {\typeout{Reading alternative macro definitions from extracd.tex}}%
+ {\typeout{All language information must be in newlfm.cls}}%
+\DeclareOption{french}%
+{\def\@def@l{french}\setboolean{@l@fr}{true} \@fr@phr}%
+\define@key{ov}{french}[true]%
+{\iffixq{#1}{\def\@def@l{french}\setboolean{@l@fr}{true} \@fr@phr}}%
+\DeclareOption{german}{\def\@def@l{german}\setboolean{@l@ge}{true} \@gr@phr}%
+\define@key{ov}{german}[true]%
+{\iffixq{#1}{\def\@def@l{german}\setboolean{@l@ge}{true} \@gr@phr}}%
+\DeclareOption{american}%
+{\def\@def@l{american}\setboolean{@l@am}{true} \@am@phr}%
+\define@key{ov}{american}[true]%
+{\iffixq{#1}{\def\@def@l{american}\setboolean{@l@am}{true} \@am@phr}}%
+\DeclareOption{english}%
+{\def\@def@l{english}\setboolean{@l@en}{true} \@en@phr}%
+\define@key{ov}{english}[true]%
+{\iffixq{#1}{\def\@def@l{english}\setboolean{@l@en}{true} \@en@phr}}%
+\DeclareOption{othlang}%
+{\renewco@lgnd{\@def@l}{othlang}\setboolean{@l@ot}{true} \@ot@phr}%
+\define@key{ov}{othlang}[true]%
+{\iffixq{#1}{\def\@def@l{othlang}\setboolean{@l@ot}{true} \@ot@phr}}%
+\DeclareOption{piglatin}%
+{\def\@def@l{piglatin}\setboolean{@l@pi}{true} \@pl@phr}%
+\define@key{ov}{piglatin}[true]%
+{\iffixq{#1}{\def\@def@l{piglatin}\setboolean{@l@pi}{true} \@pl@phr}}%
+% \end{macrocode}%
+%
+% \begin{macro}{Lengths}%
+% Length definitions are set up here. This is done by setting options mostly.%
+% These commands are either internal (begin with |@|) or user-optional (do%
+% not begin with |@|). User-optional commands are defined in the text%
+% above. %
+% \begin{macrocode}%
+\define@key{ov}{textwidthsize}{\setlength{\@text@width}{#1}}%
+\def\textwidthsize#1{\setlength{\@text@width}{#1}}%
+\define@key{ov}{textheightsize}{\setlength{\@text@height}{#1}}%
+\def\textheightsize#1{\setlength{\@text@height}{#1}}%
+\define@key{ov}{bottommarginskip}{\setlength{\@marg@bt@a}{#1}}%
+\def\bottommarginskip#1{\setlength{\@marg@bt@a}{#1}}%
+\define@key{ov}{bottommarginskipbelow}{\setlength{\@marg@bt@b}{#1}}%
+\def\bottommarginskipbelow#1{\setlength{\@marg@bt@b}{#1}}%
+\def\topmarginskip#1{\setlength{\@marg@tp@a}{#1}}%
+\define@key{ov}{topmarginskip}{\setlength{\@marg@tp@a}{#1}}%
+\def\topmarginsize#1{\setlength{\@marg@tp@s}{#1}}%
+\define@key{ov}{topmarginsize}{\setlength{\@marg@tp@s}{#1}}%
+\def\headermarginskip#1{\setlength{\@marg@tp@b}{#1}}%
+\define@key{ov}{headermarginskip}{\setlength{\@marg@tp@b}{#1}}%
+\def\rightmarginsize#1{\setlength{\@marg@rt}{#1}}%
+\define@key{ov}{rightmarginsize}{\setlength{\@marg@rt}{#1}}%
+\def\leftmarginsize#1{\setlength{\@marg@lt}{#1}}%
+\define@key{ov}{leftmarginsize}{\setlength{\@marg@lt}{#1}}%
+\def\headermarginsize#1{\setlength{\@marg@tp}{#1}}%
+\define@key{ov}{headermarginsize}{\setlength{\@marg@tp}{#1}}%
+\def\footermarginsize#1{\setlength{\@marg@bt}{#1}}%
+\define@key{ov}{footermarginsize}{\setlength{\@marg@bt}{#1}}%
+\def\leftmargintopdist#1%
+{\setlength{\@marg@lt@tp@d}{#1}\setboolean{@marg@lt@fl@tp}{true}}%
+\define@key{ov}{leftmargintopdist}%
+{\setlength{\@marg@lt@tp@d}{#1}\setboolean{@marg@lt@fl@tp}{true}}%
+\def\rightmargintopdist#1%
+{\setlength{\@marg@rt@tp@d}{#1}\setboolean{@marg@rt@fl@tp}{true}}%
+\define@key{ov}{rightmargintopdist}%
+{\setlength{\@marg@rt@tp@d}{#1}\setboolean{@marg@rt@fl@tp}{true}}%
+\define@key{ov}{leftmarginskipleft}%
+{\setlength{\@marg@lt@l}{#1}\setboolean{@marg@lt@fl@tp}{false}}%
+\def\leftmarginskipleft#1{\setlength{\@marg@lt@l}{#1}}%
+\define@key{ov}{rightmarginskipleft}%
+{\setlength{\@marg@rt@l}{#1}\setboolean{@marg@lt@fl@tp}{false}}%
+\def\rightmarginskipleft#1{\setlength{\@marg@rt@l}{#1}}%
+\def\leftmarginskipright#1{\setlength{\@marg@lt@r}{#1}}%
+\define@key{ov}{leftmarginskipright}{\setlength{\@marg@lt@r}{#1}}%
+\def\rightmarginskipright#1{\setlength{\@marg@rt@r}{#1}}%
+\define@key{ov}{rightmarginskipright}{\setlength{\@marg@rt@r}{#1}}%
+\def\dateskipbefore#1{\setlength{\@dt@sk@b}{#1}}%
+\define@key{ov}{dateskipbefore}{\setlength{\@dt@sk@b}{#1}}%
+\def\dateskipafter#1{\setlength{\@dt@sk@a}{#1}}%
+\define@key{ov}{dateskipafter}{\setlength{\@dt@sk@a}{#1}}%
+\def\addrfromskipafter#1{\setlength{\@addr@fr@sk@a}{#1}}%
+\define@key{ov}{addrfromskipafter}{\setlength{\@addr@fr@sk@a}{#1}}%
+\def\addrfromskipbefore#1{\setlength{\@addr@fr@sk@b}{#1}}%
+\define@key{ov}{addrfromskipbefore}{\setlength{\@addr@fr@sk@b}{#1}}%
+\def\addrtoskipafter#1{\setlength{\@addr@to@sk@a}{#1}}%
+\define@key{ov}{addrtoskipafter}{\setlength{\@addr@to@sk@a}{#1}}%
+\def\addrtoskipbefore#1{\setlength{\@addr@to@sk@b}{#1}}%
+\define@key{ov}{addrtoskipbefore}{\setlength{\@addr@to@sk@b}{#1}}%
+\def\greettoskipafter#1{\setlength{\@greet@to@sk@a}{#1}}%
+\define@key{ov}{greettoskipafter}{\setlength{\@greet@to@sk@a}{#1}}%
+\def\greettoskipbefore#1{\setlength{\@greet@to@sk@b}{#1}}%
+\define@key{ov}{greettoskipbefore}{\setlength{\@greet@to@sk@b}{#1}}%
+\def\sigskipbefore#1{\setlength{\@sig@sk@b}{#1}}%
+\define@key{ov}{sigskipbefore}{\setlength{\@sig@sk@b}{#1}}%
+\def\sigskipafter#1{\setlength{\@sig@sk@a}{#1}}%
+\define@key{ov}{sigskipafter}{\setlength{\@sig@sk@a}{#1}}%
+\def\sigskipcolumn#1{\setlength{\@sig@sk@c}{#1}}%
+\define@key{ov}{sigskipcolumn}{\setlength{\@sig@sk@c}{#1}}%
+\def\sigskiprow#1{\setlength{\@sig@sk@r}{#1}}%
+\define@key{ov}{sigskiprow}{\setlength{\@sig@sk@r}{#1}}%
+\def\sigsize#1{\setlength{\@sig@sp}{#1}}%
+\define@key{ov}{sigsize}{\setlength{\@sig@sp}{#1}}%
+\def\postsigskipafter#1{\setlength{\@post@sig@sp@a}{#1}}%
+\define@key{ov}{postsigskipafter}{\setlength{\@post@sig@sp@a}{#1}}% %
+\def\postsigskipbefore#1{\setlength{\@post@sig@sp@b}{#1}}%
+\define@key{ov}{postsigskipbefore}{\setlength{\@post@sig@sp@b}{#1}}% %
+\def\memoskipafter#1{\setlength{\@post@memo@sp}{#1}}%
+\define@key{ov}{memoskipafter}{\setlength{\@post@memo@sp}{#1}}%
+\def\memoskipbefore#1{\setlength{\@pre@memo@sp}{#1}}%
+\define@key{ov}{memoskipbefore}{\setlength{\@pre@memo@sp}{#1}}%
+\def\unprtop#1{\setlength{\@unpr@tp}{#1}}
+\define@key{ov}{unprtop}{\setlength{\@unpr@tp}{#1}}%
+\def\unprbottom#1{\setlength{\@unpr@bm}{#1}}
+\define@key{ov}{unprbottom}{\setlength{\@unpr@bm}{#1}}%
+\def\unprright#1{\setlength{\@unpr@rt}{#1}}%
+\define@key{ov}{unprright}{\setlength{\@unpr@rt}{#1}}%
+\def\unprleft#1{\setlength{\@unpr@lt}{#1}}
+\define@key{ov}{unprleft}{\setlength{\@unpr@lt}{#1}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{Memos}
+% Memo definitions are set up here. This is done by setting options
+% (for the options block in the |\documentclass| statement) or by
+% entering them into the |MemoParam| statement.
+% In the current approach to |newlfm|, both keyval and class option
+% approaches are maintained for all commands. This requires that all
+% options be processed both using |DeclareOption| and |define@key|
+% approaches. This, at this point, does require simply duplication of
+% the code required to be processed.
+%
+% \begin{macrocode}
+\def\@opt@stm{
+\setboolean{@af@p}{false}%
+\setboolean{@at@p}{false}%
+\setboolean{@memo@bl}{true}%
+\setboolean{@greet@p}{false}%
+\setboolean{@dt@l}{false}%
+\setboolean{@dt@c}{false}%
+\setboolean{@dt@p}{false}%
+\setboolean{@sig@p}{false}%
+\setboolean{@sig@mp}{true}%
+}%
+\def\@opt@stpr{
+\setboolean{@af@p}{false}%
+\setboolean{@at@p}{false}%
+\setboolean{@memo@bl}{true}%
+\setboolean{@greet@p}{false}%
+\setboolean{@dt@l}{false}%
+\setboolean{@dt@c}{false}%
+\setboolean{@dt@p}{false}%
+\setboolean{@sig@p}{false}%
+\setboolean{@sig@mp}{true}%
+}%
+\def\@opt@flm{
+\setboolean{@af@p}{false}%
+\setboolean{@at@p}{false}%
+\setboolean{@memo@bl}{true}%
+\setboolean{@greet@p}{false}%
+\setboolean{@dt@l}{false}%
+\setboolean{@dt@c}{false}%
+\setboolean{@dt@p}{false}%
+\setboolean{@sig@p}{false}%
+\setboolean{@sig@mp}{false}%
+\setboolean{@memo@b}{true}%
+\setboolean{@memo@c}{true}%
+\setboolean{@memo@d}{true}%
+\setboolean{@memo@h}{true}%
+\setboolean{@memo@i}{true}%
+\setboolean{@memo@j}{true}%
+\setboolean{@memo@k}{true}%
+\setboolean{@memo@l}{true}%
+\setboolean{@memo@m}{true}%
+\setboolean{@memo@n}{true}%
+}%
+\DeclareOption{memoaddrto}{\setboolean{@memo@b}{true}}%
+\define@key{ov}{memoaddrto}[true]{\iffixt{#1}{@memo@b}}%
+\DeclareOption{memoemailto}{\setboolean{@memo@k}{true}}%
+\define@key{ov}{memoemailto}[true]{\iffixt{#1}{@memo@k}}%
+\DeclareOption{memophoneto}{\setboolean{@memo@c}{true}}%
+\define@key{ov}{memophoneto}[true]{\iffixt{#1}{@memo@c}}%
+\DeclareOption{memopagerto}{\setboolean{@memo@n}{true}}%
+\define@key{ov}{memopagerto}[true]{\iffixt{#1}{@memo@n}}%
+\DeclareOption{memofaxto}{\setboolean{@memo@d}{true}}%
+\define@key{ov}{memofaxto}[true]{\iffixt{#1}{@memo@d}}%
+\DeclareOption{memoaddrfrom}{\setboolean{@memo@h}{true}}%
+\define@key{ov}{memoaddrfrom}[true]{\iffixt{#1}{@memo@h}}%
+\DeclareOption{memoemailfrom}{\setboolean{@memo@l}{true}}%
+\define@key{ov}{memoemailfrom}[true]{\iffixt{#1}{@memo@l}}%
+\DeclareOption{memopagerfrom}{\setboolean{@memo@m}{true}}%
+\define@key{ov}{memopagerfrom}[true]{\iffixt{#1}{@memo@m}}%
+\DeclareOption{memophonefrom}{\setboolean{@memo@i}{true}}%
+\define@key{ov}{memophonefrom}[true]{\iffixt{#1}{@memo@i}}%
+\DeclareOption{memofaxfrom}{\setboolean{@memo@j}{true}}%
+\define@key{ov}{memofaxfrom}[true]{\iffixt{#1}{@memo@j}}%
+\DeclareOption{memodate}{\setboolean{@dt@p}{true}}%
+\define@key{ov}{memodate}[true]{\iffixt{#1}{@dt@p}}%
+\DeclareOption{memonofrom}{\setboolean{@memo@e}{false}}%
+\define@key{ov}{memonofrom}[false]{\iffixt{#1}{@memo@e}}%
+\DeclareOption{memonoto}{\setboolean{@memo@g}{false}}%
+\define@key{ov}{memonoto}[false]{\iffixt{#1}{@memo@g}}%
+\DeclareOption{memonore}{\setboolean{@memo@f}{false}}%
+\define@key{ov}{memonore}[false]{\iffixt{#1}{@memo@f}}%%
+\DeclareOption{fullmemo}{\@opt@flm}%
+\define@key{ov}{fullmemo}[true]{\iffixq{#1}{\@opt@flm}}%
+\DeclareOption{stdmemo}{\@opt@stm}%
+\define@key{ov}{stdmemo}[true]{\iffixq{#1}{\@opt@stm}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{Press Releases}
+% Press release definitions are set up here.
+% Currently, there are no options.
+%
+% \begin{macrocode}
+\def\@opt@pr{
+\setboolean{@af@p}{true}%
+\setboolean{@at@p}{false}%
+\setboolean{@pr@p}{true}%
+\setboolean{@greet@p}{false}%
+\setboolean{@dt@l}{false}%
+\setboolean{@dt@c}{false}%
+\setboolean{@dt@p}{false}%
+\setboolean{@sig@p}{false}%
+\setboolean{@sig@mp}{false}%
+}%
+\DeclareOption{pressrelease}{\@opt@pr}%
+\define@key{ov}{pressrelease}[true]{\iffixq{#1}{\@opt@pr}}%
+\DeclareOption{stdpressrelease}{\@opt@pr}%
+\define@key{ov}{stdpressrelease}[true]{\iffixq{#1}{\@opt@pr}}%
+\DeclareOption{dspace}{\setboolean{@space@d}{true}\setboolean{@space@s}{false}}%
+\DeclareOption{sspace}{\setboolean{@space@s}{true}\setboolean{@space@d}{false}}%
+\define@key{ov}{dspace}[true]{%
+\iffixq{#1}{\setboolean{@space@d}{true}\setboolean{@space@s}{false}}}%
+\define@key{ov}{sspace}[true]{%
+\iffixq{#1}{\setboolean{@space@s}{true}\setboolean{@space@d}{false}}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{Faxes}
+% These commands define the overall structures for
+% fax pages, fax blocks and fax choices.
+% \begin{macrocode}
+\DeclareOption{faxhp}{\setboolean{@fax@hdr@pg}{true}\setboolean{@fax@RA}{false}}%
+\DeclareOption{faxheaderpage}{\setboolean{@fax@hdr@pg}{true}\setboolean{@fax@RA}{false}}%
+\define@key{ov}{faxheaderpage}[true]%
+{\iffixq{#1}{\setboolean{@fax@hdr@pg}{true}\setboolean{@fax@RA}{false}}}%
+\DeclareOption{faxhba}% Print fax header block on leader in right top-margin.
+ {\setboolean{@fax@RA}{true}\setboolean{@fax@hdr@pg}{false}}%
+\define@key{ov}{faxhba}[true]% Print fax header block on leader in right top-margin.
+ {\iffixq{#1}{\setboolean{@fax@RA}{true}\setboolean{@fax@hdr@pg}{false}}}%
+\DeclareOption{faxhbb}% Print fax header block - leader - upper right quad letter
+ {\setboolean{@fax@RU}{true}\setboolean{@fax@hdr@pg}{false}}%
+\DeclareOption{faxbla}% Print FAX block in \Rheader
+ {\setboolean{@fax@bla}{true}\setboolean{@fax@blb}{false}}%
+\DeclareOption{faxblb}%
+ {\setboolean{@fax@blb}{true}\setboolean{@fax@bla}{false}}%
+\DeclareOption{faxblocka}%Print FAX block in \Rheader
+ {\setboolean{@fax@bla}{true}\setboolean{@fax@blb}{false}}%
+\define@key{ov}{faxblocka}[true]%
+{\iffixq{#1}{\setboolean{@fax@bla}{true}\setboolean{@fax@blb}{false}}}%
+\DeclareOption{faxblockb}%
+ {\setboolean{@fax@blb}{true}\setboolean{@fax@bla}{false}}%
+\define@key{ov}{faxblockb}[true]%
+{\iffixq{#1}{\setboolean{@fax@blb}{true}\setboolean{@fax@bla}{false}}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{Specials}
+% Special definitions. These commands define the tools for including
+% specials into a letter. A special is a piece of text not covered by
+% the usual definitions. Specials can be included by the command
+% |\speciala{textx}{row}{col}|. The special is printed in the
+% ``address-area'' of the letter. The ``address-area'' is divided into a
+% grid that is 6 rows by 3 columns.
+% \begin{macrocode}
+\providecommand{\speciala}[3]
+ {\def\@spec@a{#1}\def\@row@a{#2}\def\@col@a{#3}\setboolean{@use@spec@a}{true}}%
+\def\@col@a{}\def\@row@a{}\def\@spec@a{}
+\newboolean{@use@spec@a}\setboolean{@use@spec@a}{false}%
+\providecommand{\specialb}[3]
+ {\def\@spec@b{#1}\def\@row@b{#2}\def\@col@b{#3}\setboolean{@use@spec@b}{true}}%
+\def\@col@b{}\def\@row@b{}\def\@spec@b{}
+\newboolean{@use@spec@b}\setboolean{@use@spec@b}{false}%
+\providecommand{\specialc}[3]
+ {\def\@spec@c{#1}\def\@row@c{#2}\def\@col@c{#3}\setboolean{@use@spec@c}{true}}%
+\def\@col@c{}\def\@row@c{}\def\@spec@c{}
+\newboolean{@use@spec@c}\setboolean{@use@spec@c}{false}%
+\providecommand{\speciald}[3]
+ {\def\@spec@d{#1}\def\@row@d{#2}\def\@col@d{#3}\setboolean{@use@spec@d}{true}}%
+\def\@col@d{}\def\@row@d{}\def\@spec@d{}
+\newboolean{@use@spec@d}\setboolean{@use@spec@d}{false}%
+\providecommand{\speciale}[3]
+ {\def\@spec@e{#1}\def\@row@e{#2}\def\@col@e{#3}\setboolean{@use@spec@e}{true}}%
+\def\@col@e{}\def\@row@e{}\def\@spec@e{}
+\newboolean{@use@spec@e}\setboolean{@use@spec@e}{false}%
+\providecommand{\specialf}[3]
+ {\def\@spec@f{#1}\def\@row@f{#2}\def\@col@f{#3}\setboolean{@use@spec@f}{true}}%
+\def\@col@f{}\def\@row@f{}\def\@spec@f{}
+\newboolean{@use@spec@f}\setboolean{@use@spec@f}{false}%
+\providecommand{\specialg}[3]
+ {\def\@spec@g{#1}\def\@row@g{#2}\def\@col@g{#3}\setboolean{@use@spec@g}{true}}%
+\def\@col@g{}\def\@row@g{}\def\@spec@g{}
+\newboolean{@use@spec@g}\setboolean{@use@spec@g}{false}%
+\providecommand{\specialh}[3]
+ {\def\@spec@h{#1}\def\@row@h{#2}\def\@col@h{#3}\setboolean{@use@spec@h}{true}}%
+\def\@col@h{}\def\@row@h{}\def\@spec@h{}
+\newboolean{@use@spec@h}\setboolean{@use@spec@h}{false}%
+\providecommand{\spacespa}[2]{\def\@sp@bef@a{#1}\def\@sp@aft@a{#2}} \spacespa{0pt}{0pt}%
+\providecommand{\spacespb}[2]{\def\@sp@bef@b{#1}\def\@sp@aft@b{#2}} \spacespb{0pt}{0pt}%
+\providecommand{\spacespc}[2]{\def\@sp@bef@c{#1}\def\@sp@aft@c{#2}} \spacespc{0pt}{0pt}%
+\providecommand{\spacespd}[2]{\def\@sp@bef@d{#1}\def\@sp@aft@d{#2}} \spacespd{0pt}{0pt}%
+\providecommand{\spacespe}[2]{\def\@sp@bef@e{#1}\def\@sp@aft@e{#2}} \spacespe{0pt}{0pt}%
+\providecommand{\spacespf}[2]{\def\@sp@bef@f{#1}\def\@sp@aft@f{#2}} \spacespf{0pt}{0pt}%
+\providecommand{\spacespg}[2]{\def\@sp@bef@g{#1}\def\@sp@aft@g{#2}} \spacespg{0pt}{0pt}%
+\providecommand{\spacesph}[2]{\def\@sp@bef@h{#1}\def\@sp@aft@h{#2}} \spacesph{0pt}{0pt}%
+% \end{macrocode}%
+% \end{macro}
+%
+% \begin{macro}{Letters}
+% Letter definitions. These commands define the overall structures for
+% standard letters (with and without from-addresses). There are commands
+% for blanking of sections (blankrightmargin, etc.). There are commands
+% for ordering of sections. There are commands for inclusion of various
+% types of information.
+% \begin{macrocode}
+\def\@opt@slr{
+\setboolean{@af@l}{false}%
+\setboolean{@af@p}{true}%
+\setboolean{@at@p}{true}%
+\setboolean{@dt@p}{true}%
+\setboolean{@dt@l}{false}%
+\setboolean{@dt@c}{false}%
+\setboolean{@greet@p}{true}%
+\setboolean{@sig@p}{true}%
+\setboolean{@sig@mp}{false}%
+\setboolean{@at@l}{true}%
+\setboolean{@memo@bl}{false}%
+\setboolean{@dt@l}{false}%
+\setboolean{@sig@l}{false}%
+\setboolean{@sig@c}{false}%
+\@d@pos{1}\@t@pos{3}\@f@pos{2}\setboolean{@s@b@s}{false}}
+\DeclareOption{stdletter}{\@opt@slr}%
+\define@key{ov}{stdletter}[true]{\iffixq{#1}{\@opt@slr}}%
+\def\@opt@sln{\setboolean{@af@l}{false} %
+\setboolean{@af@p}{false} %
+\setboolean{@at@p}{true} %
+\setboolean{@dt@p}{true}%
+\setboolean{@dt@l}{false}%
+\setboolean{@dt@c}{false}%
+\setboolean{@greet@p}{true}%
+\setboolean{@sig@p}{true}%
+\setboolean{@sig@mp}{false}%
+\setboolean{@at@l}{true} %
+\setboolean{@memo@bl}{false}%
+\setboolean{@dt@l}{false}%
+\setboolean{@sig@l}{false}%
+\setboolean{@sig@c}{false}%
+\@d@pos{1}\@t@pos{3}\@f@pos{2}\setboolean{@s@b@s}{false}}
+\DeclareOption{stdletternofrom} {\@opt@sln}%
+\define@key{ov}{stdletternofrom}[true]{\iffixq{#1}{\@opt@sln}}%
+\def\@opt@blr{\setboolean{@af@l}{true}%
+\setboolean{@af@p}{true}%
+\setboolean{@memo@bl}{false}%
+\setboolean{@at@l}{true}%
+\setboolean{@dt@l}{true}%
+\setboolean{@dt@c}{false}%
+\setboolean{@sig@l}{true}%
+\setboolean{@sig@c}{false}%
+\setboolean{@sig@p}{true}%
+\setboolean{@sig@mp}{false}%
+\@d@pos{1}\@t@pos{3}\@f@pos{2}\setboolean{@s@b@s}{false}}
+\DeclareOption{busletter} {\@opt@blr}%
+\define@key{ov}{busletter}[true]{\iffixq{#1}{\@opt@blr}}%
+\def\@opt@bln{\setboolean{@af@l}{true}%
+\setboolean{@af@p}{false}%
+\setboolean{@memo@bl}{false}%
+\setboolean{@at@l}{true}%
+\setboolean{@dt@l}{true}%
+\setboolean{@dt@c}{false}%
+\setboolean{@sig@l}{true}%
+\setboolean{@sig@p}{true}%
+\setboolean{@sig@mp}{false}%
+\setboolean{@sig@c}{false}%
+\@d@pos{1}\@t@pos{3}\@f@pos{2}\setboolean{@s@b@s}{false}}
+\DeclareOption{busletternofrom} {\@opt@bln}%
+\newboolean{@test@opt}\setboolean{@test@opt}{false}
+\define@key{ov}{busletternofrom}[true]{\iffixq{#1}{\@opt@bln}}%
+\DeclareOption{addrfromleft} {\setboolean{@af@l}{true}}%
+\define@key{ov}{addrfromleft}[true]{\iffixt{#1}{@af@l}}%
+\DeclareOption{addrfromright}{\setboolean{@af@l}{false}}%
+\define@key{ov}{addrfromright}[true]{\iffixf{#1}{@af@l}}%
+\DeclareOption{addrtoleft} {\setboolean{@at@l}{true}}%
+\define@key{ov}{addrtoleft}[true]{\iffixt{#1}{@at@l}}%
+\DeclareOption{addrtoright} {\setboolean{@at@l}{false}}%
+\define@key{ov}{addrtoright}[true]{\iffixf{#1}{@at@l}}%
+\DeclareOption{addrtoemail} {\setboolean{@addr@to@e}{true}}%
+\define@key{ov}{addrtoemail}[true]{\iffixt{#1}{@addr@to@e}}%
+\DeclareOption{addrtophone} {\setboolean{@addr@to@t}{true}}%
+\define@key{ov}{addrtophone}[true]{\iffixt{#1}{@addr@to@t}}%
+\DeclareOption{addrtofax} {\setboolean{@addr@to@f}{true}}%
+\DeclareOption{addrfromemail}{\setboolean{@addr@fr@e}{true}}%
+\define@key{ov}{addrfromemail}[true]{\iffixt{#1}{@addr@fr@e}}%
+\DeclareOption{addrfromphone}{\setboolean{@addr@fr@t}{true}}%
+\define@key{ov}{addrfromphone}[true]{\iffixt{#1}{@addr@fr@t}}%
+\DeclareOption{addrfromfax} {\setboolean{@addr@fr@f}{true}}%
+\define@key{ov}{addrfromfax}[true]{\iffixt{#1}{@addr@fr@f}}%
+\providecommand{\boxht}{} \providecommand{\boxwd}{} \providecommand{\btwlb}{}%
+\providecommand{\topht}{} \providecommand{\lftwd}{}%
+\def\labpl#1{\setlength{\@lab@pl}{#1}}
+\def\boxht#1{\setlength{\@lab@bh}{#1}}
+\def\boxwd#1{\setlength{\@lab@bw}{#1}}
+\def\topht#1{\setlength{\@lab@th}{#1}}
+\def\lftwd#1{\setlength{\@lab@lm}{#1}}
+\def\btwlb#1{\setlength{\@lab@bl}{#1}}
+\def\@labname{nolines,dateno}%
+\def\Alaba{\def\@labname{Avery5160,nolines,dateno}%
+ \setboolean{@set@env}{true}\setboolean{@use@envlab}{false} \def\@tab@just{rrr}\labpl{10.125in}%
+ \setcounter{@lab@tot@row}{10} \setcounter{@lab@tot@col}{3} \btwlb{5pt}%
+ \boxht{73pt} \boxwd{164pt} \topht{90pt} \lftwd{-88pt} \setlength{\@Hgt@Foot}{0pt}}%
+\def\Alabb{\def\@labname{Avery5161,nolines,dateno}%
+ \setboolean{@set@env}{true}\setboolean{@use@envlab}{false} \def\@tab@just{rr}\labpl{10.125in}%
+ \setcounter{@lab@tot@row}{10} \setcounter{@lab@tot@col}{2} \btwlb{8pt}%
+ \boxht{67pt} \boxwd{274pt} \topht{37pt} \lftwd{-80pt} \setlength{\@Hgt@Foot}{0pt}}%
+\def\Alabc{\def\@labname{Avery5162,nolines,dateno}%
+ \setboolean{@set@env}{true}\setboolean{@use@envlab}{false} \def\@tab@just{rr}\labpl{9.5in}%
+ \setcounter{@lab@tot@row}{7} \setcounter{@lab@tot@col}{2} \btwlb{8pt}%
+ \boxht{93pt} \boxwd{274pt} \topht{62pt} \lftwd{-80pt} \setlength{\@Hgt@Foot}{0pt}}%
+\def\Alabd{\def\@labname{Avery5163,nolines,dateno}%
+ \setboolean{@set@env}{true}\setboolean{@use@envlab}{false} \def\@tab@just{rr}\labpl{10.125in}%
+ \setcounter{@lab@tot@row}{5} \setcounter{@lab@tot@col}{2} \btwlb{8pt}%
+ \boxht{139pt} \boxwd{274pt} \topht{38pt} \lftwd{-80pt} \setlength{\@Hgt@Foot}{0pt}}%
+\def\Alabe{\def\@labname{Avery5164,nolines,dateno}%
+ \setboolean{@set@env}{true}\setboolean{@use@envlab}{false} \def\@tab@just{rr}\labpl{10.125in}%
+ \setcounter{@lab@tot@row}{3} \setcounter{@lab@tot@col}{2} \btwlb{8pt}%
+ \boxht{232pt} \boxwd{274pt} \topht{38pt} \lftwd{-80pt} \setlength{\@Hgt@Foot}{0pt}}%
+\DeclareOption{Avery5160}{\Alaba}%
+\DeclareOption{Avery5161}{\Alabb}%
+\DeclareOption{Avery5261}{\Alabb}%
+\DeclareOption{Avery5162}{\Alabc}%
+\DeclareOption{Avery5163}{\Alabd}%
+\DeclareOption{Avery5164}{\Alabe}%
+\DeclareOption{Avery5264}{\Alabe}%
+\DeclareOption{labto}{\setboolean{@lab@t}{true}}%
+\DeclareOption{labrowfrto}{\setboolean{@lab@rft}{true}\setboolean{@lab@t}{false}}%
+\DeclareOption{labcolfrto}{\setboolean{@lab@cft}{true}\setboolean{@lab@t}{false}}%
+\def\labsize#1{\def\@lab@size{#1}}
+\define@key{ov}{Avery5160}[true]{\iffixq{#1}{\Alaba}}%
+\define@key{ov}{Avery5161}[true]{\iffixq{#1}{\Alabb}}%
+\define@key{ov}{Avery5261}[true]{\iffixq{#1}{\Alabb}}%
+\define@key{ov}{Avery5162}[true]{\iffixq{#1}{\Alabc}}%
+\define@key{ov}{Avery5163}[true]{\iffixq{#1}{\Alabd}}%
+\define@key{ov}{Avery5164}[true]{\iffixq{#1}{\Alabe}}%
+\define@key{ov}{Avery5264}[true]{\iffixq{#1}{\Alabe}}%
+\define@key{ov}{labto}[true]{\iffixq{#1}{\setboolean{@lab@t}{true}}}%
+\define@key{ov}{labrowfrto}[true]{\iffixq{#1}%
+{\setboolean{@lab@rft}{true}\setboolean{@lab@t}{false}}}%
+\define@key{ov}{labsize}{\def\@lab@size{#1}}
+\define@key{ov}{labcolfrto}[true]{\iffixq{#1}%
+{\setboolean{@lab@cft}{true}\setboolean{@lab@t}{false}}}%
+\DeclareOption{setuplabel}{\setboolean{@set@env}{true}\setboolean{@use@envlab}{false}}%
+\define@key{ov}{setuplabel}[true]{
+\iffixq{#1}{\setboolean{@set@env}{true}\setboolean{@use@envlab}{false}}}%
+\def\@dodtf{\@d@pos{1}\@t@pos{3}\@f@pos{2}\setboolean{@s@b@s}{false}}%
+\def\@dofdt{\@d@pos{2}\@t@pos{3}\@f@pos{1}\setboolean{@s@b@s}{false}}%
+\def\@doftd{\@d@pos{3}\@t@pos{2}\@f@pos{1}\setboolean{@s@b@s}{false}}%
+\def\@dosbs{\@d@pos{1}\@t@pos{0}\@f@pos{0}\setboolean{@s@b@s}{true}}%
+\DeclareOption{orderdatefromto}{\@dodtf}%
+\define@key{ov}{orderdatefromto}[true]{\iffixq{#1}{\@dodtf}}%
+\DeclareOption{orderfromdateto}{\@dofdt}%
+\define@key{ov}{orderfromdateto}[true]{\iffixq{#1}{\@dofdt}}%
+\DeclareOption{orderfromtodate}{\@doftd}%
+\define@key{ov}{orderfromtodate}[true]{\iffixq{#1}{\@doftd}}%
+\DeclareOption{sidebyside}{\@dosbs}%
+\define@key{ov}{sidebyside}[true]{\iffixq{#1}{\@dosbs}}%
+% Set right block flush top page
+\DeclareOption{margflush}{\setboolean{@marg@lt@fl@tp}{true}}%
+\define@key{ov}{margflush}[true]{\iffixt{#1}{@marg@lt@fl@tp}}%
+% Set the marginal gap 20p
+\DeclareOption{biggap}{\setboolean{@gap@small}{false}}%
+% Do not print from-address.
+\DeclareOption{addrfromno}{\setboolean{@af@p}{false}}%
+\DeclareOption{noaddrfr}{\setboolean{@af@p}{false}}%
+\DeclareOption{noaddrfrom}{\setboolean{@af@p}{false}}%
+\define@key{ov}{noaddrfrom}[true]{\iffixf{#1}{@af@p}}%
+% Do not print to-address.
+\DeclareOption{addrtono}{\setboolean{@at@p}{false}}%
+\DeclareOption{noaddrto}{\setboolean{@at@p}{false}}%
+\define@key{ov}{noaddrto}[true]{\iffixf{#1}{@at@p}}%
+% Do not print greeting
+\DeclareOption{greetno}{\setboolean{@greet@p}{false}}%
+\define@key{ov}{nogreet}[true]{\iffixf{#1}{@greet@p}}%
+% Use cello envelope
+\DeclareOption{cellowindow}{\setboolean{@cello@win}{true}}%
+\define@key{ov}{cellowindow}[true]{\iffixt{#1}{@cello@win}}%
+% Cello dimensions
+\def\celloheight#1{\setlength{\@cello@h}{#1}}%
+\def\cellowidth#1{\setlength{\@cello@w}{#1}}%
+\define@key{ov}{celloheight}{\celloheight{#1}}%
+\define@key{ov}{cellowidth}{\cellowidth{#1}}%
+% Cello placement
+\def\cellodown#1{\setlength{\@cello@d}{#1}}%
+\def\celloleft#1{\setlength{\@cello@l}{#1}}%
+\define@key{ov}{cellodown}{\cellodown{#1}}%
+\define@key{ov}{celloleft}{\celloleft{#1}}%
+% Print date right-justified
+\DeclareOption{dateright}{\setboolean{@dt@l}{false}\setboolean{@dt@c}{false}}%
+\define@key{ov}{dateright}[true]%
+{\iffixq{#1}{\setboolean{@dt@l}{false}\setboolean{@dt@c}{false}}}%
+% Print date left-justified
+\DeclareOption{dateleft}{\setboolean{@dt@l}{true}\setboolean{@dt@c}{false}}%
+\define@key{ov}{dateleft}[true]%
+{\iffixq{#1}{\setboolean{@dt@l}{true}\setboolean{@dt@c}{false}}}%
+% Print date centered
+\DeclareOption{datecenter}{\setboolean{@dt@l}{false}\setboolean{@dt@c}{true}}%
+\define@key{ov}{datecenter}[true]%
+{\iffixq{#1}{\setboolean{@dt@l}{false}\setboolean{@dt@c}{true}}}%
+% Do not print date
+\DeclareOption{dateno}{\setboolean{@dt@p}{false}}%
+\define@key{ov}{dateno}[true]{\iffixf{#1}{@dt@p}}%
+% Print date
+\DeclareOption{dateyes}{\setboolean{@dt@p}{true}}%
+% Print signature left-justified
+\DeclareOption{signatureleft}{\setboolean{@sig@l}{true}\setboolean{@sig@c}{false}}%
+\define@key{ov}{signatureleft}[true]%
+{\iffixq{#1}{\setboolean{@sig@l}{true}\setboolean{@sig@c}{false}}}%
+\DeclareOption{signleft}{\setboolean{@sig@l}{true}\setboolean{@sig@c}{false}}%
+\define@key{ov}{sigleft}[true]%
+{\iffixq{#1}{\setboolean{@sig@l}{true}\setboolean{@sig@c}{false}}}%
+% Print signature centered
+\DeclareOption{signaturecenter}{\setboolean{@sig@l}{false}\setboolean{@sig@c}{true}}%
+\define@key{ov}{signaturecenter}[true]%
+{\iffixq{#1}{\setboolean{@sig@l}{false}\setboolean{@sig@c}{true}}}%
+\DeclareOption{sigcenter}{\setboolean{@sig@l}{false}\setboolean{@sig@c}{true}}%
+\define@key{ov}{sigcenter}[true]%
+{\iffixq{#1}{\setboolean{@sig@l}{false}\setboolean{@sig@c}{true}}}%
+% Print signature right-justified
+\DeclareOption{signatureright}{\setboolean{@sig@l}{false}\setboolean{@sig@c}{false}}%
+\define@key{ov}{signatureright}[true]%
+{\iffixq{#1}{\setboolean{@sig@l}{false}\setboolean{@sig@c}{false}}}%
+\DeclareOption{sigright}{\setboolean{@sig@l}{false}\setboolean{@sig@c}{false}}%
+\define@key{ov}{sigright}[true]%
+{\iffixq{#1}{\setboolean{@sig@l}{false}\setboolean{@sig@c}{false}}}%
+% No signature
+\DeclareOption{signatureno}{\setboolean{@sig@p}{false}}%
+\define@key{ov}{signatureno}[true]{\iffixf{#1}{@sig@p}}%
+% Print all fr \info.
+\def\@fix@all@fr{\setboolean{@use@all@fr}{true}
+\setboolean{@af@p}{true}%
+\setboolean{@af@l}{true}%
+\setboolean{@addr@fr@f}{true}%
+\setboolean{@addr@fr@e}{true}%
+\setboolean{@addr@fr@t}{true}}%
+% Print all fr \info.
+\DeclareOption{printallfrom}{\@fix@all@fr}%
+\define@key{ov}{printallfrom}[true]{\iffixq{#1}{\@fix@all@fr}}%
+% Print all to \info.
+\def\@fix@all@to{\setboolean{@use@all@to}{true}
+\setboolean{@at@p}{true}%
+\setboolean{@at@l}{true}%
+\setboolean{@addr@to@f}{true}%
+\setboolean{@addr@to@e}{true}%
+\setboolean{@addr@to@t}{true}}%
+\DeclareOption{printallto}{\@fix@all@to}%
+\define@key{ov}{printallto}[true]{\iffixq{#1}{\@fix@all@to}}%
+% Set header components to blank
+\DeclareOption{blankheader}{\setboolean{@b@h}{true}}%
+\define@key{ov}{blankheader}[true]{\iffixt{#1}{@b@h}}%
+\DeclareOption{Blankheader}{\setboolean{@B@h}{true}}%
+\define@key{ov}{Blankheader}[true]{\iffixt{#1}{@B@h}}%
+% Set footer components to blank
+\DeclareOption{blankfooter}{\setboolean{@b@f}{true}}%
+\define@key{ov}{blankfooter}[true]{\iffixt{#1}{@b@f}}%
+\DeclareOption{Blankfooter}{\setboolean{@B@f}{true}}%
+\define@key{ov}{Blankfooter}[true]{\iffixt{#1}{@B@f}}%
+% Set left margin components to blank
+\DeclareOption{blanklmargin}{\setboolean{@b@l}{true}}%
+\DeclareOption{blankleftmargin}{\setboolean{@b@l}{true}}%
+\define@key{ov}{blankleftmargin}[true]{\iffixt{#1}{@b@l}}%
+\DeclareOption{Blankleftmargin}{\setboolean{@B@l}{true}}%
+\define@key{ov}{Blankleftmargin}[true]{\iffixt{#1}{@B@l}}%
+% Set right margin components to blank
+\DeclareOption{blankrmargin}{\setboolean{@b@r}{true}}%
+\DeclareOption{blankrightmargin}{\setboolean{@b@r}{true}}%
+\define@key{ov}{blankrightmargin}[true]{\iffixt{#1}{@b@r}}%
+\DeclareOption{Blankrightmargin}{\setboolean{@B@r}{true}}%
+\define@key{ov}{Blankrightmargin}[true]{\iffixt{#1}{@B@r}}%
+% Set all components to blank
+\DeclareOption{Blankall}{\setboolean{@B@f}{true}\setboolean{@B@l}{true}
+\setboolean{@B@h}{true}\setboolean{@B@r}{true}}%
+\define@key{ov}{Blankall}[true]%
+{\iffixq{#1}{\setboolean{@B@f}{true}\setboolean{@B@l}{true}
+\setboolean{@B@h}{true}\setboolean{@B@r}{true}}}%
+\DeclareOption{blankall}{\setboolean{@b@f}{true}\setboolean{@b@l}{true}
+\setboolean{@b@h}{true}\setboolean{@b@r}{true}}%
+\define@key{ov}{blankall}[true]%
+{\iffixq{#1}{\setboolean{@b@f}{true}\setboolean{@b@l}{true}
+\setboolean{@b@h}{true}\setboolean{@b@r}{true}}}%
+\DeclareOption{BlankTotal}% Fixed
+{\setboolean{@B@f}{true}\setboolean{@B@l}{true}%
+\setboolean{@B@h}{true}\setboolean{@B@r}{true}%
+\setboolean{@b@f}{true}\setboolean{@b@l}{true}%
+\setboolean{@b@h}{true}\setboolean{@b@r}{true}}%
+\define@key{ov}{BlankTotal}[true]%
+{\iffixq{#1}{\setboolean{@B@f}{true}\setboolean{@B@l}{true}%
+\setboolean{@B@h}{true}\setboolean{@B@r}{true}%
+\setboolean{@b@f}{true}\setboolean{@b@l}{true}%
+\setboolean{@b@h}{true}\setboolean{@b@r}{true}}}%
+% Use envelopes
+\def\@set@pap#1#2#3{\def\@paper@type{#1}\setlength\@stock@height{#2}\setlength\@stock@width{#3}}%
+\DeclareOption{useenvlab}{\setboolean{@set@env}{false}\setboolean{@use@envlab}{true}}%
+\define@key{ov}{useenvlab}[true]{
+\iffixq{#1}{\setboolean{@use@envlab}{true}\setboolean{@set@env}{false}}}%
+% Use letterpaper
+\DeclareOption{letterpaper}{\@set@pap{letterpaper}{11in}{8.5in}}%
+\define@key{ov}{letterpaper}[true]{\iffixq{#1}{\@set@pap{letterpaper}{11in}{8.5in}}}%
+% Use letterpaper
+\DeclareOption{bigpaper}{\@set@pap{bigpaper}{17in}{11in}}%
+\define@key{ov}{bigpaper}[true]{\iffixq{#1}{\@set@pap{bigpaper}{17in}{11in}}}%
+% Use legalpaper
+\DeclareOption{legalpaper}{\@set@pap{legalpaper}{14in}{8.5in}}%
+\define@key{ov}{legalpaper}[true]{\iffixq{#1}{\@set@pap{legalpaper}{14in}{8.5in}}}%
+% Use executivepaper
+\DeclareOption{executivepaper}{\@set@pap{executivepaper}{10.5in}{7.25in}}%
+\define@key{ov}{executivepaper}[true]{\iffixq{#1}{\@set@pap{executivepaper}{10.5in}{7.25in}}}%
+% Use ebook
+\DeclareOption{ebook}{\@set@pap{ebook}{9in}{6in}}%
+\define@key{ov}{ebook}[true]{\iffixq{#1}{\@set@pap{ebook}{9in}{6in}}}%
+% Use a3
+\DeclareOption{a3paper}{\@set@pap{a3paper}{420mm}{297mm}}%
+\define@key{ov}{a3paper}[true]{\iffixq{#1}{\@set@pap{a3paper}{420mm}{297mm}}}%
+% Use a4
+\DeclareOption{a4paper}{\@set@pap{a4paper}{297mm}{210mm}}%
+\define@key{ov}{a4paper}[true]{\iffixq{#1}{\@set@pap{a4paper}{297mm}{210mm}}}%
+% Use a5
+\DeclareOption{a5paper}{\@set@pap{a5paper}{210mm}{148mm}}%
+\define@key{ov}{a5paper}[true]{\iffixq{#1}{\@set@pap{a5paper}{210mm}{148mm}}}%
+% Use a6
+\DeclareOption{a6paper}{\@set@pap{a6paper}{148mm}{105mm}}%
+\define@key{ov}{a6paper}[true]{\iffixq{#1}{\@set@pap{a6paper}{148mm}{105mm}}}%
+% Use b3
+\DeclareOption{b3paper}{\@set@pap{b3paper}{500mm}{353mm}}%
+\define@key{ov}{b3paper}[true]{\iffixq{#1}{\@set@pap{b3paper}{500mm}{353mm}}}%
+% Use b4
+\DeclareOption{b4paper}{\@set@pap{b4paper}{353mm}{250mm}}%
+\define@key{ov}{b4paper}[true]{\iffixq{#1}{\@set@pap{b4paper}{353mm}{250mm}}}%
+% Use b5
+\DeclareOption{b5paper}{\@set@pap{b5paper}{250mm}{176mm}}%
+\define@key{ov}{b5paper}[true]{\iffixq{#1}{\@set@pap{b5paper}{250mm}{176mm}}}%
+% Use b6
+\DeclareOption{b6paper}{\@set@pap{b6paper}{176mm}{125mm}}%
+\define@key{ov}{b6paper}[true]{\iffixq{#1}{\@set@pap{b6paper}{176mm}{125mm}}}%
+% Set default options here
+\setkeys{ov}{textwidthsize=-1pt,textheightsize=-1pt,bottommarginskip=5pt,letterpaper,%
+headermarginskip=0pt,rightmarginsize=72pt,leftmarginsize=72pt,bottommarginskipbelow=5pt,%
+leftmargintopdist=-1pt,addrtoskipafter=18pt,unprright=-1pt,labsize=\normalsize,%
+leftmarginskipleft=10pt,leftmarginskipright=10pt,dateskipbefore=0pt,%
+dateskipafter=0pt,addrfromskipafter=0pt,addrfromskipbefore=0pt,%
+greettoskipafter=0pt,sigskipbefore=12pt,sigskipafter=12pt,sigsize=72pt,%
+postsigskipafter=10pt,memoskipafter=15pt,memoskipbefore=35pt,unprtop=-1pt,unprbottom=-1pt,%
+unprleft=-1pt}%
+% \end{macrocode}%
+% \end{macro}
+%
+% \subsection{Executing Options}
+% Here we execute the default options to initialize certain variables.
+% \begin{macrocode}
+\ExecuteOptions{\@paper@type,stdletter,american}%
+% \end{macrocode}
+%
+% The |\ProcessOptions| command causes the execution of the code for every
+% option \Lopt{foo} which is declared and for which the
+% user typed the \Lopt{foo} option in his |\documentclass| command.
+% For every option \Lopt{bar} he typed, which is not declared, the
+% option is assumed to be a global option. All options will be
+% passed as document options to any |\usepackage| command in the
+% document preamble.
+% \begin{macrocode}
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{letter}}
+\ProcessOptions
+% \end{macrocode}
+%
+% \begin{macro}{showdim}
+% This is here for debugging only.
+% \begin{macrocode}
+\def\showdim#1{%
+\txa{ * * * }
+\txa{*****************************************************************************}
+\txa{Dimensions: #1}%
+% \printinunitsof{in}\pagevalues
+\txa{\string\headheight: \the\headheight, \string\headsep: \the\headsep}%
+\txa{\string\paperheight: \the\paperheight, \string\paperwidth: \the\paperwidth}%
+\txa{\string\textheight: \the\textheight, \string\textwidth: \the\textwidth}
+\txa{\string\@colht: \the\@colht, \string\@colroom: \the\@colroom}%
+\txa{\string\vsize: \the\vsize, \string\columnwidth: \the\columnwidth}%
+\txa{\string\hsize: \the\hsize, \string\linewidth: \the\linewidth}%
+\txa{\string\evensidemargin: \the\evensidemargin, \string\footskip: \the\footskip}%
+\txa{\string\oddsidemargin: \the\oddsidemargin, \string\columnsep: \the\columnsep}%
+\txa{\string\topmargin: \the\topmargin}%
+\txa{\string\marginparpush: \the\marginparpush, \string\marginparsep: \the\marginparsep}%
+\txa{*****************************************************************************}
+\txa{ * * * }
+}%
+% \end{macrocode}
+% \end{macro}
+% Now that all the options have been executed we can load the
+% existing copy of letter.cls. This will ensure that the various
+% constructions which work in letters (|\begin{letter}|, etc.) will
+% continue to work in the class. The |newlfm.cls| class adds the
+% environment |newlfm|, which adds a number of new commands to the
+% |letter| class, but does not remove any |letter| class commands.
+% \begin{macrocode}
+\showdim{Before LoadClass}%
+\PassOptionsToClass{\@paper@type,oneside,final}{letter}%
+\LoadClass{letter}%
+\showdim{Before addrset}%
+\RequirePackage{addrset}%
+\IfFileExists{afterpage.sty}{\RequirePackage{afterpage}}{}%
+\IfFileExists{envlab.sty}{\RequirePackage{envlab}}{}%
+\showdim{After LoadClass}
+% \end{macrocode}%
+% Some of the page layout parameters are defined here. Many of the values%
+% for the page layout parameters are set in geometry below. In setting the%
+% values here, we expect that geometry will override a large number of the%
+% values. However, the values must be assigned {\it a prior}.%
+% \begin{macrocode}%
+\setlength{\voffset}{0in}%
+\setlength{\itemsep}{.2em}%
+\setlength{\topsep}{.2em}%
+\setlength{\partopsep}{0\p@}%
+\setlength{\arraycolsep}{5\p@}%
+\setlength{\tabcolsep}{6\p@}%
+\setlength{\arrayrulewidth}{.4\p@}%
+\setlength{\doublerulesep}{2\p@}%
+\setlength{\tabbingsep}{\labelsep}%
+\skip\@mpfootins = \skip\footins%
+\setlength{\fboxsep}{3\p@}%
+\setlength{\fboxrule}{.4\p@}%
+\providecommand{\geometry}{ }%
+\def\geometry#1{\typeout{Command \string\geometry{items} no longer supported.}%
+\typeout{newlfm supports several dimensional commands. Please check the manual for detail.}%
+}%
+\renewcommand{\theequation}{\@arabic\c@equation}%
+\renewcommand{\footnoterule}{%
+ \kern-\p@%
+ \hrule \@width .4\columnwidth%
+ \kern .6\p@}%
+ \long\def\@makefntext#1{%
+ \noindent \hangindent 5\p@%
+ \hb@xt@5\p@{\hss\@makefnmark}#1}%
+% \end{macrocode}%
+%
+% \begin{macro}{table,figure}
+% Standard \LaTeX\ constructions |table| and |figure|
+% are not defined in |letter|. They are added here.
+% \begin{macrocode}
+\renewcommand{\thefigure}{\@arabic\c@figure}%
+\providecommand{\figurename}{}\renewcommand{\figurename}{Figure}%
+\providecommand{\tablename}{} \renewcommand{\tablename}{Table}%
+\newcommand{\fps@figure}{tbp}\newcommand{\ftype@figure}{1}\newcommand{\ext@figure}{lof}%
+\newcommand{\fnum@figure}{\figurename~\thefigure}%
+\newenvironment{figure}{\@float{figure}}{\end@float}%
+\newenvironment{figure*}{\@dblfloat{figure}}{\end@dblfloat}%
+\renewcommand\thetable{\@arabic\c@table}%
+\newcommand{\fps@table}{tbp}\newcommand{\ftype@table}{2}%
+\newcommand{\ext@table}{lot}%
+\newcommand{\fnum@table}{\tablename~\thetable}%
+\newenvironment{table}{\@float{table}}{\end@float}%
+\newenvironment{table*}{\@dblfloat{table}}{\end@dblfloat}%
+\setlength\@caption@skip@above{10\p@}\setlength\@caption@skip@below{0\p@}%
+\long\def\@makecaption#1#2{%
+ \vskip\@caption@skip@above\sbox\@tempboxa{#1: #2}%
+ \ifdim \wd\@tempboxa >\hsize%
+ #1: #2\par%
+ \else\global \@minipagefalse%
+ \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
+ \fi\vskip\@caption@skip@below}%
+\newcommand{\section}[1]{{\Large {\bfseries #1}}}%
+% \end{macrocode}%
+% \end{macro}%
+%
+% \begin{macro}{Date and time macros}
+% These functions all use various system indicators of time and date to
+% furnish a time or date value to go on faxes and letters.
+%
+% \begin{macrocode}
+\def\monthname{% timestamp function
+ \ifcase\month%
+ \or January\or February\or March\or April \or May\or June%
+ \or July\or August\or September\or October \or November\or December%
+ \fi%
+}%
+\def\timestring{%
+ \begingroup%
+ \count0 = \time \divide\count0 by 60%
+ \count2 = \count0 % the hour%
+ \count4 = \time \multiply\count0 by 60%
+ \advance\count4 by -\count0 % the minute%
+ \ifnum\count4<10 \toks1 = {0} \else \toks1 = {}\fi%
+ \ifnum\count2<12 \toks0 = {A.M.} %
+ \else \toks0 = {P.M.}\advance\count2 by -12\fi%
+ \ifnum\count2=0 \count2 = 12 \fi % make midnight 12%
+ {\number\count2:\the\toks1 \number\count4%
+ \thinspace \the\toks0}%
+ \endgroup%
+}%
+\def\timestamp{\number\day\space\monthname\space\number\year,\space\timestring}%
+\def\datestamp{\monthname\space\number\day,\space\number\year}%
+% \end{macrocode}%
+% \end{macro}%
+%
+% \begin{macro}{Rules}%
+% These macros set up the width of rules. They also determine whether they are printed.%
+% \begin{macrocode}%
+\def\noheadline{\setboolean{@hl}{false}}%
+\define@key{ov}{noheadline}[true]{\iffixq{#1}{\setboolean{@hl}{false}}}%
+\def\nofootline{\setboolean{@fl}{false}}%
+\define@key{ov}{nofootline}[true]{\iffixq{#1}{\setboolean{@fl}{false}}}%
+\def\nolines{\setboolean{@fl}{false}\setboolean{@hl}{false}}%
+\define@key{ov}{nolines}[true]{\iffixq{#1}{\setboolean{@fl}{false}\setboolean{@hl}{false}}}%
+\def\@plhl{1}\def\nopheadline{\def\@plhl{0}}%
+\def\@plfl{1}\def\nopfootline{\def\@plfl{0}}%
+\def\Headlinewd#1{\setlength{\@Hrw}{#1}}%
+\def\headlinewd#1{\setlength{\@hrw}{#1}}%
+\def\Footlinewd#1{\setlength{\@Frw}{#1}}%
+\def\footlinewd#1{\setlength{\@frw}{#1}}%
+\define@key{ov}{Headlinewd}{\setlength{\@Hrw}{#1}}%
+\define@key{ov}{headlinewd}{\setlength{\@hrw}{#1}}%
+\define@key{ov}{Footlinewd}{\setlength{\@Frw}{#1}}%
+\define@key{ov}{footlinewd}{\setlength{\@frw}{#1}}%
+% \end{macrocode}%
+% \end{macro}%
+%
+% \subsection{{\tt fancyhdr} in {\tt newlfm}} %
+% Using fancyhdr (version 1.2v or later), the |ltrhead| and |othhead| environments %
+% are set up. The user actually does not control the \info{} using the %
+% standard macros, but rather uses Lfooter for the left footer on the %
+% letterhead and lfooter for the left footer on remaining pages. Thus, the %
+% \info{} is transfered around in a simple manner. %
+%
+% \begin{macro}{ltrhead}%
+% \begin{macrocode}%
+\fancypagestyle{ltrhead}{%
+ \def\ifta{0}%
+ \txa{Before setting up letterhead}%
+ \showdim{Letterhead}%
+ \fancyhf{}%
+ \txa{Current stored info: \string\@ltr@head:\@ltr@head}%
+ \fancyfoot[L]{\@Lfooter}%
+ \fancyfoot[C]{\@Cfooter}%
+ \fancyfoot[R]{\@Rfooter}%
+ \fancyhead[L]{\@Lheader \vspace*{\the\@marg@tp@a}}%
+ \fancyhead[C]{\@Cheader \vspace*{\the\@marg@tp@a}}%
+ \fancyhead[R]{\@Rheader \vspace*{\the\@marg@tp@a}}%
+ \showdim{Letterhead}%
+ \def\@lodd{\relax}%
+ \def\@rodd{\relax}%
+% \ifempty{\@LUheader}{}{\vspace*{-.5in}\@LUheader \vspace*{.5in}}%
+% }% % section 2 goes here if we go to plan b%
+% \ifempty{\@RUheader}{}{}%
+% }%
+% \@set@em@up%
+% \settoheight{\@utila}{\@Rheader}\settodepth{\@utilb}{\@Rheader}\addtolength{\@utila}{\@utilb}%
+% \txa{Right: \the\@utila}%
+% \settoheight{\@utila}{\@Lheader}\settodepth{\@utilb}{\@Lheader}\addtolength{\@utila}{\@utilb}%
+% \txa{Left: \the\@utila}%
+% \settoheight{\@utila}{\@Cheader}\settodepth{\@utilb}{\@Cheader}\addtolength{\@utila}{\@utilb}%
+% \txa{Center: \the\@utila}%
+ \txa{After setting up letterhead}%
+ \def\ifta{0}%
+}%
+% \end{macrocode}%
+% \end{macro}%
+% \begin{macro}{othhead}%
+% \begin{macrocode}%
+\fancypagestyle{othhead}{%
+ \def\ifta{0}%
+ \fancyhf{}%
+ \fancyfoot[L]{\@lfooter}%
+ \fancyfoot[C]{\@cfooter}%
+ \fancyfoot[R]{\@rfooter}%
+ \fancyhead[L]{\@lheader \vspace*{\the\@marg@tp@a}}%
+ \fancyhead[R]{\@rheader \vspace*{\the\@marg@tp@a}}%
+ \fancyhead[C]{\@cheader \vspace*{\the\@marg@tp@a}}%
+ \def\@lodd{\relax}%
+ \def\@rodd{\relax}%
+}%
+% \end{macrocode}
+% \end{macro}%
+%
+% \subsection{Wrapper code}
+% \begin{macro}{makelth}
+% In order to use the program more efficiently, it is possible to set up a
+% database with addresses, letterhead setups and signature setups in it.
+% Rather than address placing \info{} about each letter in the letter
+% in the letter itself, \info{} is placed in the letter database file
+% and inserted into a letter using the wrapper.
+%
+% \begin{enumerate}
+% \item The file is called |letrinfo.tex|.
+% \item The file is placed somewhere on the \TeX{} path.
+% \item In this file, place all addresses, letterhead setups and signature
+% setups as follows:
+% \begin{enumerate}
+% \item In file |letrinfo.tex|, set up a command
+% |\makelth|{XXX}{ stuff for the letter head}
+% \item This makes a macro out of the stuff, with the name |\lthXXX|
+% \item Issue the command |\lthXXX| prior to the start of the environment
+% \item The letterhead structure will then be used in the letter in which
+% it is called
+% \item The following commands are generally included in a letterhead
+% environment: lfooter, cfooter, rfooter, lheader, cheader, rheader,
+% Lfooter, Cfooter, Rfooter, Lheader, Cheader, Rheader, lmargin,
+% rmargin, Lmargin, Rmargin
+% \end{enumerate}
+% \end{enumerate}
+%
+% \begin{macrocode}
+%</package>
+%<*setdim>
+\def\ifta{0}\def\iftb{0}%
+\def\txa#1{\ifthenelse{\equal{\ifta}{1}}{\typeout{#1}}{}}%%
+% Set text margin parameters
+\def\settext#1#2#3#4#5{%
+ \txa{\string\textheight: #1}\txa{\string\textwidth: #2}%
+ \global\setlength{\textheight}{#1}%
+ \global\setlength{\textwidth}{#2}%
+ \global\setlength{\evensidemargin}{#3}%
+ \global\setlength{\oddsidemargin}{#4}%
+ \global\setlength{\columnsep}{#5}%
+ \@change@text%
+}
+% Set text margin parameters locally, not globally
+\def\lsettext#1#2#3#4#5{%
+ \txa{\string\textheight: #1}\txa{\string\textwidth: #2}%
+ \setlength{\textheight}{#1}%
+ \setlength{\textwidth}{#2}%
+ \setlength{\evensidemargin}{#3}%
+ \setlength{\oddsidemargin}{#4}%
+ \setlength{\columnsep}{#5}%
+ \@lchange@text%
+}
+% Change text margin parameters
+\def\@change@text{%
+ \global\setlength{\@colht}{\textheight}%
+ \txa{\string\@colht:\the\@colht}%
+ \global\setlength{\@colroom}{\textheight}%
+ \global\setlength{\vsize}{\textheight}%
+ \global\setlength{\columnwidth}{\textwidth}%
+ \if@twocolumn%
+ \advance\columnwidth-\columnsep \divide\columnwidth\tw@%
+ \@firstcolumntrue%
+ \fi%
+ \global\setlength{\hsize}{\columnwidth}%
+ \global\setlength{\linewidth}{\hsize}%
+}%
+% Change text margin parameters locally, not globally
+\def\@lchange@text{%
+ \setlength{\@colht}{\textheight}%
+ \txa{\string\@colht:\the\@colht}%
+ \setlength{\@colroom}{\textheight}%
+ \setlength{\vsize}{\textheight}%
+ \setlength{\columnwidth}{\textwidth}%
+ \if@twocolumn%
+ \advance\columnwidth-\columnsep \divide\columnwidth\tw@%
+ \@firstcolumntrue%
+ \fi%
+ \setlength{\hsize}{\columnwidth}%
+ \setlength{\linewidth}{\hsize}%
+}%
+% Retain dimensions for change at a point, and later restoration
+\def\retdims{%
+ \showdim{Setpage A}%
+ \txa{In setpage: \npind}%
+ \global\setlength{\@xda}{\textheight}%
+ \global\setlength{\@xdb}{\textwidth}%
+ \global\setlength{\@xdc}{\evensidemargin}%
+ \global\setlength{\@xdd}{\oddsidemargin}%
+ \global\setlength{\@xde}{\columnsep}%
+ \global\setlength{\@xdf}{\topmargin}%
+ \global\setlength{\@xdg}{\headheight}%
+ \global\setlength{\@xdh}{\headsep}%
+ \global\setlength{\@xdi}{\footskip}%
+}
+% Restore dimensions from change at a point
+\def\rstdims{%
+ \showdim{Setpage A}%
+ \txa{In setpage: \npind}%
+ \global\setlength{\textheight}{\@xda}%
+ \global\setlength{\textwidth}{\@xdb}%
+ \global\setlength{\evensidemargin}{\@xdc}%
+ \global\setlength{\oddsidemargin}{\@xdd}%
+ \global\setlength{\columnsep}{\@xde}%
+ \global\setlength{\topmargin}{\@xdf}%
+ \global\setlength{\headheight}{\@xdg}%
+ \global\setlength{\headsep}{\@xdh}%
+ \global\setlength{\footskip}{\@xdi}%
+ \@change@text%
+}
+% Set all dimensions
+\def\setpage#1#2#3#4#5#6#7#8#9{%
+ \showdim{Setpage A}%
+ \txa{In setpage: \npind}%
+ \settext{#1}{#2}{#3}{#4}{#5}%
+ \global\setlength{\topmargin}{#6}%
+ \global\setlength{\headheight}{#7}%
+ \global\setlength{\headsep}{#8}%
+ \global\setlength{\footskip}{#9}%
+ \@change@text%
+ \showdim{Setpage B}%
+}
+\def\lsetpage#1#2#3#4#5#6#7#8#9{%
+ \showdim{Setpage A}%
+ \txa{In setpage: \npind}%
+ \lsettext{#1}{#2}{#3}{#4}{#5}%
+ \setlength{\topmargin}{#6}%
+ \setlength{\headheight}{#7}%
+ \setlength{\headsep}{#8}%
+ \setlength{\footskip}{#9}%
+ \@lchange@text%
+ \showdim{Setpage B}%
+}
+\def\changetext#1#2#3#4#5{%
+ \addtolength{\textheight}{#1}%
+ \addtolength{\textwidth}{#2}%
+ \addtolength{\evensidemargin}{#3}%
+ \addtolength{\oddsidemargin}{#4}%
+ \addtolength{\columnsep}{#5}%
+ \@change@text%
+}%
+\def\changepage#1#2#3#4#5#6#7#8#9{%
+ \changetext{#1}{#2}{#3}{#4}{#5}%
+ \addtolength{\topmargin}{#6}%
+ \addtolength{\headheight}{#7}%
+ \addtolength{\headsep}{#8}%
+ \addtolength{\footskip}{#9}%
+ \@change@text%
+}%
+%</setdim>
+%<*addrset>
+% \end{macrocode}
+% \begin{macrocode}
+\def\makeletterhead#1#2{\expandafter\newcommand\csname lth#1\endcsname{#2}}%
+\def\makelth#1#2{\expandafter\newcommand\csname lth#1\endcsname{#2}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\makesig}
+% In this wrapper macro, signature \info{} is associated with a name,
+% just as described above in the makelth macro.
+%
+% \begin{macrocode}
+\def\makesignature#1#2{\expandafter\newcommand\csname sig#1\endcsname{#2}}%
+\def\makesig#1#2{\expandafter\newcommand\csname sig#1\endcsname{#2}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\makeadr}
+% In this wrapper macro, address \info{} is associated with a name,
+% just as described above in the makelth macro. This includes macros
+% such as nameto, phoneto, faxto and other \info{} associated with a
+% particular addressee.
+%
+% \begin{macrocode}
+\def\makeadr#1#2{\expandafter\newcommand\csname adr#1\endcsname{#2}}%
+\def\makeaddress#1#2{\expandafter\newcommand\csname adr#1\endcsname{#2}}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+%</addrset>
+%<*package>
+% \end{macrocode}
+%
+% \subsection{Text placement}
+% \begin{macro}{Letterhead}
+% This suite of macro inserts text into a specified place for the |fancyhdr|
+% to use. This is then later transfered into the footer of the
+% letterhead page, right side. The remaining macros also do this, as
+% follows. r, c, l: right, center, left. Header: top of page. Footer:
+% bottom of page. Capitalized: on letterhead page. Non-capitalized: on
+% remaining pages.
+%
+% In placing \info{} on the letterhead page, special constructions
+% allow placement {\it under} the top margin and {\it over} the footer
+% area. These are the macros |\LOfooter|, |\COfooter|, |\ROfooter|,
+% |\LUheader|, |\CUheader| and |\RUheader|. In the case of |\LOfooter|,
+% |\COfooter| and |\ROfooter|, the boxed \info{} is placed over the
+% related footer section, which includes lying over the footer line (if
+% printed). In the case of |\LUheader|, |\CUheader| and |\RUheader|, the
+% boxed \info{} is placed under the related header section, which
+% includes lying under the header line (if printed). When any of these
+% special purpose sections are used, text length is adjusted as needed.
+% ({\bfseries NOTE:} Although this is under development, these commands are
+% not yet functional.
+% \begin{macrocode}
+\providecommand{\@Backgrd}{} \providecommand{\@backgrd}{}%
+\providecommand{\@Lfooter}{} \providecommand{\@Cfooter}{}%
+\providecommand{\@Rfooter}{} \providecommand{\@lfooter}{}%
+\providecommand{\@cfooter}{} \providecommand{\@rfooter}{}%
+\providecommand{\@LOfooter}{} \providecommand{\@COfooter}{}%
+\providecommand{\@ROfooter}{} \providecommand{\@Lheader}{}%
+\providecommand{\@Cheader}{} \providecommand{\@Rheader}{}%
+\providecommand{\@lheader}{} \providecommand{\@cheader}{}%
+\providecommand{\@rheader}{} \providecommand{\@LUheader}{}%
+\providecommand{\@CUheader}{} \providecommand{\@RUheader}{}%
+\providecommand{\@Rmarg}{} \providecommand{\@Lmarg}{}%
+\providecommand{\@rmarg}{} \providecommand{\@lmarg}{}%
+\def\Backgrd#1{\setboolean{@Bg@use}{true}\def\@Backgrd{#1}}%
+\def\backgrd#1{\setboolean{@bg@use}{true}\def\@backgrd{#1}}%
+\def\Lfooter#1{\setboolean{@Lf@use}{true}\def\@Lfooter{#1}}%
+\def\Cfooter#1{\setboolean{@Cf@use}{true}\def\@Cfooter{#1}}%
+\def\Rfooter#1{\setboolean{@Rf@use}{true}\def\@Rfooter{#1}}%
+\def\LOfooter#1{\setboolean{@LOf@use}{true}\def\@LOfooter{#1}}%
+\def\COfooter#1{\setboolean{@COf@use}{true}\def\@COfooter{#1}}%
+\def\ROfooter#1{\setboolean{@ROf@use}{true}\def\@ROfooter{#1}}%
+\def\lfooter#1{\setboolean{@lf@use}{true}\def\@lfooter{#1}}%
+\def\cfooter#1{\setboolean{@cf@use}{true}\def\@cfooter{#1}}%
+\def\rfooter#1{\setboolean{@rf@use}{true}\def\@rfooter{#1}}%
+\def\Lheader#1{\setboolean{@Lh@use}{true}\def\@Lheader{#1}}%
+\def\Cheader#1{\setboolean{@Ch@use}{true}\def\@Cheader{#1}}%
+\def\Rheader#1{\setboolean{@Rh@use}{true}\def\@Rheader{#1}}%
+\def\LUheader#1{\setboolean{@LUh@use}{true}\def\@LUheader{#1}}%
+\def\CUheader#1{\setboolean{@CUh@use}{true}\def\@CUheader{#1}}%
+\def\RUheader#1{\setboolean{@RUh@use}{true}\def\@RUheader{#1}}%
+\def\lheader#1{\setboolean{@lh@use}{true}\def\@lheader{#1}}%
+\def\cheader#1{\setboolean{@ch@use}{true}\def\@cheader{#1}}%
+\def\rheader#1{\setboolean{@rh@use}{true}\def\@rheader{#1}}%
+\def\Rmargin#1{\def\@Rmarg{#1}\setboolean{@marg@Ruse}{true}}%
+\def\Lmargin#1{\def\@Lmarg{#1}\setboolean{@marg@Luse}{true}}%
+\def\rmargin#1{\def\@rmarg{#1}\setboolean{@marg@ruse}{true}}%
+\def\lmargin#1{\def\@lmarg{#1}\setboolean{@marg@luse}{true}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Memo blocks}
+% \begin{macro}{\Prnt@Chk}
+% This is a conditional printing macro. The arguments are
+% \begin{enumerate}
+% \item true: print the remainder of this item.
+% \item true: print to the left.
+% \item true: print centered. If 2) and 3) false, print to the right.
+% \item material to print.
+% \item material or other tokens to evaluate after the previous item is aligned.
+% \item vertical space above the item.
+% \item vertical space after the item.
+% \end{enumerate}
+% \begin{macrocode}
+\newcommand{\Prnt@Chk}[7]{%
+ \ifthenelse{\boolean{#1}}{\ifempty{#6}{}{\vspace*{-2\parskip}\vspace*{#6}}}{}%
+ \ifthenelse{\boolean{#1}}%
+ {\ifthenelse{\boolean{#2}}{\begin{flushleft}{#4}\end{flushleft}}%
+ {\ifthenelse{\boolean{#3}}%
+ {\begin{center}{#4}\end{center}}%
+ {\begin{flushright}{#4}\end{flushright}}}%
+ }{}%
+ \ifthenelse{\boolean{#1}}{#5}{}%
+ \ifthenelse{\boolean{#1}}{\ifempty{#7}{}%
+ {\vspace*{-2\parskip}\vspace*{#7}}}{}%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\memosec}
+% \label{page:memosec}
+% This section defines the text used in printing a normal memo.
+% This will go at the top of the text block.
+%
+% If the user intends to modify the |\memosec| code to provide their
+% own memo, the code in |smemosec.tex| should be modified. Save
+% this as file |memosec.tex|, with any desired modification.
+%
+% \begin{macrocode}
+\newcommand{\fixphr}[2]{\strut & \parbox[t]{\the\@utilc}{#1} #2 \\}%
+\def\ifta{0}%
+\def\memosec{%
+ \def\ifta{0}\txa{Start of memosec}%
+ \noindent\ignorespaces%
+ \settowidth{\@utila}{{\bf \@hnfr@phr:\hspace*{1.25em}}}%
+ \setlength{\@utilb}{\textwidth-\@utila-.1em}%
+ \addtolength{\@utilb}{-5pt}%
+ \settowidth{\@utilc}{\@phn@phr:\hspace*{2em}}%
+ \settowidth{\@utild}{\@fax@phr:\hspace*{2em}}%
+ \ifthenelse{\lengthtest{\@utilc<\@utild}}{\setlength{\@utilc}{\the\@utild}}{}%
+ \settowidth{\@utild}{\@pager@phr:\hspace*{2em}}
+ \ifthenelse{\lengthtest{\@utilc<\@utild}}{\setlength{\@utilc}{\the\@utild}}{}%
+ \settowidth{\@utild}{\@email@phr:\hspace*{2em}}
+ \ifthenelse{\lengthtest{\@utilc<\@utild}}{\setlength{\@utilc}{\the\@utild}}{}%
+\txa{After length tests}
+{\vspace*{-1em}\setlength{\tabcolsep}{0pt}%
+\setboolean{@memo@a}{false}%
+\vspace*{\@pre@memo@sp}\noindent\par%
+\begin{flushleft}%
+\begin{tabular}{p{\the\@utila}l}%
+\ifthenelse{\boolean{@memo@g}}%
+{\setboolean{@memo@a}{true}%
+\strut {\bf \@hnto@phr:} & \@name@to \strut \\%
+\ifthenelse{\boolean{@memo@b}}{\strut &%
+\parbox[t]{\the\@utilb}{\@addr@to\strut}\strut\\}{}%
+\ifthenelse{\boolean{@memo@c}}{\fixphr{\@phn@phr:}{\@phn@to}}{}%
+\ifthenelse{\boolean{@memo@d}}{\fixphr{\@fax@phr:}{\@fax@to}}{}%
+\ifthenelse{\boolean{@memo@n}}{\fixphr{\@pager@phr:}{\@pager@to}}{}%
+\ifthenelse{\boolean{@memo@k}}{\fixphr{\@email@phr:}{\@email@to}}{}%
+}{}%
+\ifthenelse{\boolean{@memo@e}}%
+{\setboolean{@memo@a}{true}%
+\strut {\bf \@hnfr@phr:} &{\@name@fr} \strut \\%
+\ifthenelse{\boolean{@memo@h}}{\strut &%
+\parbox[t]{\the\@utilb}{\@addr@fr \strut} \strut \\}{}%
+\ifthenelse{\boolean{@memo@i}}{\fixphr{\@phn@phr:}{\@phn@fr}}{}%
+\ifthenelse{\boolean{@memo@j}}{\fixphr{\@fax@phr:}{\@fax@fr}}{}%
+\ifthenelse{\boolean{@memo@m}}{\fixphr{\@pager@phr:}{\@pager@fr}}{}%
+\ifthenelse{\boolean{@memo@l}}{\fixphr{\@email@phr:}{\@email@fr}}{}%
+}{}%
+\ifthenelse{\boolean{@memo@f}}{\setboolean{@memo@a}{true}%
+\strut {\bf \@re@phr:} & {\@re@line} \\%
+}{}%
+\ifthenelse{\boolean{@dt@p}}{\strut {\bf \@date@phr:} & \@xdate \\}{}%
+\ifthenelse{\boolean{@memo@a}}{\hline}{}%
+\end{tabular}%
+\end{flushleft}%
+}%
+\vspace*{\@post@memo@sp}\noindent\par%
+\txa{End of memosec}
+}%
+\InputIfFileExists{memosec.tex}%
+{\typeout{Reading {\tt memosec.tex}}}%
+{\typeout{The default definition for memosec is used. File memosec.tex doesn't exist.}}%
+% \end{macrocode}
+% \end{macro}
+% \subsection{Press Release blocks}
+% \begin{macro}{\pressbegin}
+% \label{page:pressbegin}
+% This section defines the text used in printing a normal press release.
+% This will go at the top of the text block. It also sets up
+% appropriate page headers and turns off header and footer lines.
+%
+% |\nolines| seemingly should disable header and footer lines, but
+% it only takes effect via |\@set@em@up|, which is only used if
+% |@over@all| is true. It's not in this case. That might be a
+% problem with the implementation of |\nolines|. It would be good
+% if the redefinition of the line width only persisted within a
+% give lfmp environment. It's not clear that is the case.
+%
+% We want |\@more@phr| (usually ``-- more --'') to appear on the
+% bottom of every page but the last. Because the output routine may
+% be triggered when we're already into the next page, the best way to
+% handle this is with the marking mechanism. The left mark gets the
+% {\em last\/} such mark given, while the right mark uses the first
+% right mark on the page. So we use the left mark to set the footer.
+%
+% In principle, we might use the right mark for the short header used
+% on later pages, but the existing distinction between the first and
+% other pages already handles that.
+%
+% There are a lot of hard-coded distances here; eventually they
+% should perhaps be generalized.
+%
+% \begin{macrocode}
+\newcommand{\pressbegin}{%maybe set dimensions, esp 1 inch margins, here
+\settowidth{\@utila}{\@addr@fr}%
+\def\ifta{0}%
+\txa{Setup beginning of press release}%
+\renewcommand{\headrulewidth}{0pt}\renewcommand{\footrulewidth}{0pt}%
+\begin{flushleft}%
+\rule{\textwidth}{1pt} \par \noindent%
+\centerline{\LARGE \@pr@release \strut} \par\noindent%
+\rule{\textwidth}{1pt} \par \noindent%
+\txa{After first block}%
+\setlength{\tabcolsep}{0pt}%
+\begin{tabular}{l@{\hspace{1em}}l}%
+\textbf{\@contact@phr:} & \@name@fr \strut \\%
+& \parbox[t]{\@utila}{\@addr@fr \strut } \strut \\ %%
+\ifempty{\@phn@fr}{}{\textbf{\@phn@phr:} & \@phn@fr \strut \\}%
+\ifempty{\@phnb@fr}{}{\textbf{\@phn@phr:} & \@phnb@fr \strut \\}%
+\ifempty{\@phnc@fr}{}{\textbf{\@phn@phr:} & \@phnc@fr \strut \\}%
+\ifempty{\@phnd@fr}{}{\textbf{\@phn@phr:} & \@phnd@fr \strut \\}%
+\ifempty{\@fax@fr}{}{\textbf{\@fax@phr:} & \@fax@fr \strut \\}% % maybe email, web site?
+\textbf{Date:} & \@xdate%
+\end{tabular}%
+\end{flushleft}%
+\txa{After endflushleft}%
+\rule{\textwidth}{1pt} \par \noindent%
+\centerline{\textbf{\Large \@pr@headline}} \par \noindent%
+\rule{\textwidth}{1pt} \par \noindent%
+\ifthenelse{\boolean{@space@d}}{\begin{doublespace}}{\begin{singlespace}}%
+\ifthenelse{\boolean{@pr@by}}{\noindent \@pr@byline \\}{}%
+\noindent%
+\txa{end of pressbegin}%
+}%
+\InputIfFileExists{prsrls.tex}%
+ {\typeout{Reading press release page setup from prsrls.tex}}%
+ {\typeout{Press release definitions stored in newlfm.cls}}%
+% \end{macrocode}
+% \end{macro}
+% \subsection{ Fax blocks}
+% \begin{macro}{\faxpage}
+% \label{page:faxsec}
+% Here we define a FAX page. This separate stand-along page includes:
+% \begin{enumerate}
+% \item the term \@fax@cover@line in Huge text, boxed
+% \item From-name
+% \item Optional from-information
+% \item To-name
+% \item Optional to-information
+% \item Re-line
+% \item Additional information specified in |\faxmssg|
+% \end{enumerate}
+%
+% \begin{macrocode}
+\txa{Next part}%
+\newcommand*{\faxpage}{{%
+\def\ifta{0}\showdim{Before setpage inside faxpage}%
+\lsetpage{\@fax@height}{\@fax@width}{1in}{0in}{.25in}{1in}{.75in}{.25in}{.25in}%
+\showdim{After setpage}%
+{\def\ifta{0}\showdim{Before fax page setup A}%
+\setlength{\@utila}{\paperheight}\addtolength{\@utila}{-1in}%
+\setlength{\@utilb}{\paperwidth}\addtolength{\@utilb}{-2in}%
+\global\setlength{\textwidth}{\paperwidth-2in}%
+\txa{\string\paperheight:\paperheight,\string\@utila:\the\@utila}%
+\txa{\string\paperwidth:\paperwidth,\string\@utilb:\the\@utilb}\gdef\npind{A1}%
+\@clear@box%
+\def\ifta{0}%
+\txa{\string\paperheight:\the\paperheight,\string\@utila:\the\@utila}%
+\txa{\string\paperwidth:\the\paperwidth,\string\@utilb:\the\@utilb}%
+\txa{\string\textheight:\the\textheight,\string\textwidth:\the\textwidth}%
+\newpage\c@page\@ne\interlinepenalty=200%
+\showdim{Before fax page setup B}%
+\thispagestyle{empty}%
+\vspace*{-\the\@Hgt@Head}\vspace*{.5in}%
+\showdim{Inside fax page specification}%
+\begin{center}%
+\framebox{\Huge{\@fax@cover@line}} \\%
+\vspace*{.5in} \Large{\@fax@page@count: \ref{totpage}} \\%
+\vspace*{.5in} \Large{\timestamp} \\%
+\end{center}%
+\settowidth{\@utila}{\LARGE{\@hnto@phr:}}%
+\settowidth{\@utilb}{\LARGE{\@hnfr@phr:}}%
+\ifthenelse{\lengthtest{\@utila<\@utilb}}{\setlength{\@utila}{\@utilb}}{}%
+\settowidth{\@utilb}{\LARGE{\@m@phr:}}%
+\ifthenelse{\lengthtest{\@utila<\@utilb}}{\setlength{\@utila}{\@utilb}}{}%
+\setlength{\tabcolsep}{0pt}%
+\setlength{\@utilb}{\the\textwidth-\the\@utila}%
+\txa{Lengths:\the\textwidth, \the\@utila, \the\@utilb}%
+\begin{tabular}{p{\the\@utila}p{\the\@utilb}} \hline \\%
+\LARGE{\@hnto@phr:} & \parbox[t]{\@utilb}{\@name@to \strut \\ \@addr@to \strut%
+\ifempty{\@phn@to}{}{\\ \@phn@phr:\space\@phn@to \strut}%
+\ifempty{\@phnb@to}{}{\\ \@phn@phr:\space\@phnb@to \strut}%
+\ifempty{\@phnc@to}{}{\\ \@phn@phr:\space\@phnc@to \strut}%
+\ifempty{\@phnd@to}{}{\\ \@phn@phr:\space\@phnd@to \strut}%
+\ifempty{\@fax@to}{}{\\ \@fax@phr:\space\@fax@to \strut}} \vspace*{5pt} \\ \hline \vspace*{5pt}%
+\LARGE{\@hnfr@phr:} & \vspace*{5pt}%
+\parbox[t]{\@utilb}{\@name@fr \strut \\ \@addr@fr \strut %%
+\ifempty{\@phn@fr}{}{\\ \@phn@phr:\space\@phn@fr \strut}%
+\ifempty{\@phnb@fr}{}{\\ \@phn@phr:\space\@phnb@fr \strut}%
+\ifempty{\@phnc@fr}{}{\\ \@phn@phr:\space\@phnc@fr \strut}%
+\ifempty{\@phnd@fr}{}{\\ \@phn@phr:\space\@phnd@fr \strut}%
+\ifempty{\@fax@fr}{}{\\ \@fax@phr:\space\@fax@fr \strut}} \vspace*{5pt} \\ \hline%
+\vspace*{5pt}%
+\strut \LARGE{\@re@phr:} & \strut%
+\ifthenelse{\equal{\@re@line}{---BLANK---}}{}{\@re@line}\strut \\%
+\ifempty{\@fax@mssg}{}{ \strut%
+\LARGE{\@m@phr:} \strut &%
+\parbox[t]{\@utilb}{\strut \@fax@mssg} \strut \\ \hline}%
+\end{tabular}}%
+\def\ifta{0}\showdim{End of fax page setup }%
+\@dim@resetfalse%
+\txa{After dimreset}%
+\gdef\npind{F}%
+\txa{Before newpage}%
+\newpage%
+\txa{After newpage}%
+}}%
+\InputIfFileExists{faxpage.tex}%
+ {\typeout{Reading FAX page definitions from faxpage.tex}}%
+ {\typeout{faxpage definitions stored in newlfm.cls}}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{faxblocka}
+% Here we define FAX block a. This block is inserted in several places in
+% the letter, by chosing several letter styles. It can also be inserted in
+% several blocks by user choice. Fax Block A includes
+% 1.) name-from, 2.) fax-from, 3.) name-to, 4.) fax-to, and 5.) re-line.
+% FAX Block A is boxed in a frame.
+% \begin{macrocode}
+\newcommand{\faxblocka}{%
+ \sbox{\fba}{%
+ \framebox[3.0in]{\parbox[b]{3.0in}{\setlength{\tabcolsep}{0pt}
+ \begin{tabular}{p{1.0in}p{2in}}
+ \multicolumn{2}{l}{\Large \hspace*{.25in}
+ \@fax@phr{} \@doc@phr} \\ \hline
+ \@hnfr@phr:\space & \@name@fr \\
+ \@fax@phr:\space & \@fax@fr \\ \hline
+ \@hnto@phr:\space & \@name@to \\
+ \@fax@phr:\space & \@fax@to \\ \hline
+ \@re@phr: & \@re@line
+ \end{tabular}}}}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{faxblockb}
+% Here we define FAX block b. This block is inserted in several places in
+% the letter, by chosing several letter styles. It can also be inserted in
+% several blocks by user choice. Fax Block B includes
+% 1.) name-from, 2.) fax-from, 3.) phone-from, 4.) name-to, 5.) fax-to,
+% 6.) phone to, and 7.) re-line.
+% FAX Block B is boxed in a frame.
+% \begin{macrocode}
+\newcommand{\faxblockb}{%
+ {\parbox[t]{\textwidth}{\fbox{%
+ \begin{tabular}{llll}%
+ \@hnfr@phr:\space & \@name@fr & \@hnto@phr:\space & \@name@to \\%
+ \@fax@phr:\space & \@fax@fr & \@fax@phr:\space & \@fax@to \\%
+ \@phn@phr:\space & \@phn@fr & \@phn@phr:\space & \@phn@to \\%
+ \@re@phr: & \multicolumn{3}{l}{\parbox[t]{2in}{\@re@line}} \\%
+ \end{tabular}%
+}}}}%
+% \end{macrocode}
+% \end{macro}
+% \subsection{Start of letter document}
+% \begin{macro}{\@open@lfm}
+% Begin letter here. First check for left margin boxes; if one has been
+% specified, set it into the margin, and change the margin spacing
+% accordingly. After that, the left, right and center under-margin boxes
+% are checked. If this is a memo, this \info{} is printed next.
+% Finally, we print (optionally) date, from-address, to-address and opening
+% salutation.
+% \begin{macrocode}
+\newcommand{\@set@col}[4]{\ifthenelse{\boolean{#1}}{
+\settowidth{\@utile}{\usebox{#2}}
+\ifthenelse{\lengthtest{\@utile>\@utila}}{\setlength{\@utila}{\@utile}}{}
+\settowidth{\@utile}{\usebox{#4}}
+\ifthenelse{\lengthtest{\@utile>\@utilb}}{\setlength{\@utilb}{\@utile}}{}
+}{}}%
+\newcommand{\@set@box}[6]{%
+\setboolean{@ztilb}{true}%
+\ifthenelse{\swtch=1}{%
+\setboolean{@ztila}{true}%
+\ifthenelse{\boolean{@ztila}}{\ifthenelse{#1=1}%
+{\renewcommand{#1}{a}\setboolean{@ztila}{false}}{}}{}%
+\ifthenelse{\boolean{@ztila}}{\ifthenelse{#1=2}%
+{\renewcommand{#1}{b}\setboolean{@ztila}{false}}{}}{}%
+\ifthenelse{\boolean{@ztila}}{\ifthenelse{#1=3}%
+{\renewcommand{#1}{c}\setboolean{@ztila}{false}}{}}{}%
+\ifthenelse{\boolean{@ztila}}{\ifthenelse{#1=4}%
+{\renewcommand{#1}{d}\setboolean{@ztila}{false}}{}}{}%
+\ifthenelse{\boolean{@ztila}}{\ifthenelse{#1=5}%
+{\renewcommand{#1}{e}\setboolean{@ztila}{false}}{}}{}%
+\ifthenelse{\boolean{@ztila}}{\ifthenelse{#1=6}%
+{\renewcommand{#1}{f}\setboolean{@ztila}{false}}{}}{}%
+\ifthenelse{\boolean{@ztila}}{\ifthenelse{#1=7}%
+{\renewcommand{#1}{g}\setboolean{@ztila}{false}}{}}{}%
+\ifthenelse{\boolean{@ztila}}{\ifthenelse{#1=8}%
+{\renewcommand{#1}{h}\setboolean{@ztila}{false}}{}}{}%
+\ifthenelse{\boolean{@ztila}}%
+{\typeout{Row index for Special #4 incorrect - print cancelled}%
+\setboolean{@ztilb}{false}}{}\setboolean{@ztila}{true}%
+\ifthenelse{\boolean{@ztila}}{\ifthenelse{#2=1}%
+{\renewcommand{#2}{a}\setboolean{@ztila}{false}}{}}{}%
+\ifthenelse{\boolean{@ztila}}{\ifthenelse{#2=2}%
+{\renewcommand{#2}{b}\setboolean{@ztila}{false}}{}}{}%
+\ifthenelse{\boolean{@ztila}}{\ifthenelse{#2=3}%
+{\renewcommand{#2}{c}\setboolean{@ztila}{false}}{}}{}%
+\ifthenelse{\boolean{@ztila}}%
+{\typeout{Column index for Special #4 incorrect - print cancelled}%
+\setboolean{@ztilb}{false}}{}}{}%
+\ifthenelse{\boolean{@ztilb}}{\sbox{\csname @hblk@#1#2\endcsname}{\usebox{#3}}%
+\setboolean{@hblk@#1}{true}%
+\addtolength{\csname @hblk@#1@bef\endcsname}{#5}%
+\addtolength{\csname @hblk@#1@aft\endcsname}{#6}}{}%
+}%
+\newcommand{\ifempty}[3]{\ifthenelse{\equal{#1}{}}{#2}{#3}}%
+\newcommand{\ifpempty}[3]{\ifthenelse{\equal{\protect#1}{}}{#2}{#3}}%
+% \end{macrocode}
+% This is the actual section for openlfm.
+% \begin{macrocode}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\@open@lfm{%
+\def\ifta{0}%
+\txa{Start of the @open@lfm}%
+\ifthenelse{\boolean{@marg@Ruse}}% Here we set up right-side marginal notes
+{\setlength{\@utile}{-\@Hgt@Head+\@marg@rt@tp@d}% Adjust column top to leftmargintopdist
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Set margin par stuff printed in margin
+\normalmarginpar%
+\marginpar{\vspace*{\the\@utile}\hspace*{\@marg@rt@l}\hspace*{-\marginparsep}\@Rmarg}}{}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Print in the left margin?
+\ifthenelse{\boolean{@marg@Luse}}{% Here we set up left-side marginal notes
+\setlength{\@utile}{-\@Hgt@Head+\@marg@lt@tp@d}% Adjust column top to leftmargintopdist
+\reversemarginpar\txa{Left margin}% Switch margin printing to other side
+\marginpar{\vspace*{\the\@utile}\hspace*{\@marg@lt@l}\@Lmarg}}{}%
+\settoheight{\@utild}{Test testy}%
+\setlength{\@utile}{\headrulewidth}\addtolength{\@utile}{-3\@utild}
+\vspace*{\@utile}%
+\txa{Running memosec}% Memo processing
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Print memo block?
+\ifthenelse{\boolean{@memo@bl}}%
+{{\memosec}\setboolean{@dt@p}{false}\setboolean{@no@spc}{true}}{}%Memo
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Press release
+\txa{Running pressbegin}%
+\ifthenelse{\boolean{@pr@p}}%
+{\pressbegin% Press release processing
+\txa{here we go again - out of pressbegin}%
+\setboolean{@no@spc}{true}}{}% % Press Release
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Set the from info into a box - on first pass, measure - second pass, fit
+% parbox to the measure
+%A2%
+\txa{Fixing boxes}%
+\sbox{\b@addr@fr}{\noindent\setlength{\tabcolsep}{0pt}% Address-from into a box
+\raggedleft\begin{tabular}{l@{}}%
+\noindent\ignorespaces\@addr@fr%
+\ifthenelse{\boolean{@addr@fr@t}}{\\ \@phn@phr: \@phn@fr}{}%
+\ifthenelse{\boolean{@addr@fr@f}}{\\ \@fax@phr: \@fax@fr}{}%
+\ifthenelse{\boolean{@addr@fr@e}}{\\ \@email@phr: \@email@fr}{}%
+\end{tabular}}%
+\settowidth{\@utilc}{\usebox{\b@addr@fr}}%
+\sbox{\b@addr@fr}{\noindent\setlength{\tabcolsep}{0pt}%
+\parbox[t]{\@utilc}{\noindent\setlength{\tabcolsep}{0pt}%
+\ignorespaces\@addr@fr%
+\ifthenelse{\boolean{@addr@fr@t}}{\\ \@phn@phr: \@phn@fr}{}%
+\ifthenelse{\boolean{@addr@fr@f}}{\\ \@fax@phr: \@fax@fr}{}%
+\ifthenelse{\boolean{@addr@fr@e}}{\\ \@email@phr: \@email@fr}{}%
+}}%
+\txa{Done with box}%
+%B1%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Set the to info into a box - on first pass, measure - second pass, fit
+% parbox to the measure
+\sbox{\b@addr@to}{\noindent\setlength{\tabcolsep}{0pt}% Address-from into a box
+\raggedleft\begin{tabular}{l@{}}%
+\noindent\ignorespaces\@name@to\strut\\\@addr@to%
+\ifthenelse{\boolean{@addr@to@t}}{\\ \@phn@phr: \@phn@to}{}%
+\ifthenelse{\boolean{@addr@to@f}}{\\ \@fax@phr: \@fax@to}{}%
+\ifthenelse{\boolean{@addr@to@e}}{\\ \@email@phr: \@email@to}{}%
+\end{tabular}}%
+\settowidth{\@utilc}{\usebox{\b@addr@to}}%
+\sbox{\b@addr@to}{\noindent\setlength{\tabcolsep}{0pt}%
+\parbox[t]{\@utilc}{\noindent\setlength{\tabcolsep}{0pt}%
+\noindent\ignorespaces\@name@to\strut\\\@addr@to%
+\ifthenelse{\boolean{@addr@to@t}}{\\ \@phn@phr: \@phn@to}{}%
+\ifthenelse{\boolean{@addr@to@f}}{\\ \@fax@phr: \@fax@to}{}%
+\ifthenelse{\boolean{@addr@to@e}}{\\ \@email@phr: \@email@to}{}%
+}}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Now print the three components of the address in the three possible positions
+\ifthenelse{\boolean{@no@spc}}{}{\@center@stuff}% Meat of the routine
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\txa{End of @open@lfm}%
+\noindent\par
+}%
+\def\@center@stuff{\txa{centerstuff3}%
+% Set up date
+\sbox{\@xdateb}{\@xdate}%
+% Set up side-by-side
+\ifthenelse{\boolean{@s@b@s}}{\@d@pos{1}\@f@pos{2}\@t@pos{2}
+\setboolean{@at@c}{false}\setboolean{@af@c}{false}
+\setboolean{@at@l}{true}\setboolean{@af@l}{false}}{}
+\txa{\string\@intd@pos:\@intd@pos}
+\txa{\string\@intt@pos:\@intt@pos}
+\txa{\string\@intf@pos:\@intf@pos}
+% Set up the rows for printing of the date, from and to
+\ifthenelse{\@intd@pos=1}{\def\@r@d{b}}{}%
+\ifthenelse{\@intd@pos=2}{\def\@r@d{d}}{}%
+\ifthenelse{\@intd@pos=3}{\def\@r@d{f}}{}%
+\ifthenelse{\@intt@pos=1}{\def\@r@t{b}}{}%
+\ifthenelse{\@intt@pos=2}{\def\@r@t{d}}{}%
+\ifthenelse{\@intt@pos=3}{\def\@r@t{f}}{}%
+\ifthenelse{\@intf@pos=1}{\def\@r@f{b}}{}%
+\ifthenelse{\@intf@pos=2}{\def\@r@f{d}}{}%
+\ifthenelse{\@intf@pos=3}{\def\@r@f{f}}{}%
+% Set up the columns corresponding to the positions for header elements
+\ifthenelse{\boolean{@af@l}}{\def\@c@f{a}}{%
+\ifthenelse{\boolean{@af@c}}{\def\@c@f{b}}{\def\@c@f{c}}}%
+\ifthenelse{\boolean{@at@l}}{\def\@c@t{a}}{%
+\ifthenelse{\boolean{@at@c}}{\def\@c@t{b}}{\def\@c@t{c}}}%
+\ifthenelse{\boolean{@dt@l}}{\def\@c@d{a}}{%
+\ifthenelse{\boolean{@dt@c}}{\def\@c@d{b}}{\def\@c@d{c}}}%
+% Set up the columns for each of the specials, if specials there are%
+\txa{Here0}%
+\def\swtch{1}%
+\ifthenelse{\boolean{@use@spec@a}}%
+{\sbox{\@sp@box}{\@spec@a}%
+\@set@box{\@row@a}{\@col@a}{\@sp@box}{a}{\@sp@bef@a}{\@sp@aft@a}}{}%
+\ifthenelse{\boolean{@use@spec@b}}%
+{\sbox{\@sp@box}{\@spec@b}%
+\@set@box{\@row@b}{\@col@b}{\@sp@box}{b}{\@sp@bef@b}{\@sp@aft@b}}{}%
+\ifthenelse{\boolean{@use@spec@c}}%
+{\sbox{\@sp@box}{\@spec@c}%
+\@set@box{\@row@c}{\@col@c}{\@sp@box}{c}{\@sp@bef@c}{\@sp@aft@c}}{}%
+\ifthenelse{\boolean{@use@spec@d}}%
+{\sbox{\@sp@box}{\@spec@d}%
+\@set@box{\@row@d}{\@col@d}{\@sp@box}{d}{\@sp@bef@d}{\@sp@aft@d}}{}%
+\ifthenelse{\boolean{@use@spec@e}}%
+{\sbox{\@sp@box}{\@spec@e}%
+\@set@box{\@row@e}{\@col@e}{\@sp@box}{e}{\@sp@bef@e}{\@sp@aft@e}}{}%
+\ifthenelse{\boolean{@use@spec@f}}%
+{\sbox{\@sp@box}{\@spec@f}%
+\@set@box{\@row@f}{\@col@f}{\@sp@box}{f}{\@sp@bef@f}{\@sp@aft@f}}{}%
+\ifthenelse{\boolean{@use@spec@g}}%
+{\sbox{\@sp@box}{\@spec@g}%
+\@set@box{\@row@g}{\@col@g}{\@sp@box}{g}{\@sp@bef@g}{\@sp@aft@g}}{}%
+\ifthenelse{\boolean{@use@spec@h}}%
+{\sbox{\@sp@box}{\@spec@h}%
+\@set@box{\@row@h}{\@col@h}{\@sp@box}{h}{\@sp@bef@h}{\@sp@aft@h}}{}%
+\def\swtch{2}%
+\txa{HereA}%
+% Set up the columns for each of the components%
+\ifthenelse{\boolean{@af@p}}%
+{\@set@box{\@r@t}{\@c@t}{\b@addr@to}{}{\@addr@to@sk@b}{\@addr@to@sk@a}}{}%
+\ifthenelse{\boolean{@af@p}}%
+{\@set@box{\@r@f}{\@c@f}{\b@addr@fr}{}{\@addr@fr@sk@b}{\@addr@fr@sk@a}}{}%
+\ifthenelse{\boolean{@dt@p}}%
+{\@set@box{\@r@d}{\@c@d}{\@xdateb}{}{\@dt@sk@b}{\@dt@sk@a}}{}%
+\txa{HereB}%
+% Measure the columns for specification
+\setlength{\@utila}{0pt}%
+\setlength{\@utilb}{0pt}%
+\@set@col{@hblk@a}{\@hblk@aa}{\@hblk@ab}{\@hblk@ac}%
+\@set@col{@hblk@b}{\@hblk@ba}{\@hblk@bb}{\@hblk@bc}%
+\@set@col{@hblk@c}{\@hblk@ca}{\@hblk@cb}{\@hblk@cc}%
+\@set@col{@hblk@d}{\@hblk@da}{\@hblk@db}{\@hblk@dc}%
+\@set@col{@hblk@e}{\@hblk@ea}{\@hblk@eb}{\@hblk@ec}%
+\@set@col{@hblk@f}{\@hblk@fa}{\@hblk@fb}{\@hblk@fc}%
+\@set@col{@hblk@g}{\@hblk@ga}{\@hblk@gb}{\@hblk@gc}%
+% Define the lengths for the tabular - add just a tiny bit to each column
+\setlength{\@utilc}{1pt}%
+\addtolength{\@utila}{5\@utilc}%
+\addtolength{\@utilb}{5\@utilc}%
+\setlength{\@utild}{\textwidth-\@utila-\@utilb-10\@utilc}%
+\txa{Lengths: \the\@utila -- \the\@utilb -- \the\@utilc -- \the\@utild}
+%VALUE D
+{\setlength{\tabcolsep}{0pt}\setlength{\arraycolsep}{0pt}%
+\setboolean{@prnt@frm}{false}%
+\ifthenelse{\boolean{@prnt@frm}}%
+{\def\@tab@set{|p{\@utila}|p{\@utild}|p{\@utilb}|}\def\@tab@line{\hline}}%
+{\def\@tab@set{p{\@utila}p{\@utild}p{\@utilb}}\def\@tab@line{}}%
+%\rule{\textwidth}{.5pt}\par\nointerlineskip
+\txa{regarding}%
+\ifthenelse{\boolean{@pt@regard}}%
+{\setboolean{@hblk@h}{true}\sbox{\@hblk@ha}{\@regard@phr:\@regard@line}%
+\setlength{\@hblk@h@bef}{0pt}\setlength{\@hblk@h@aft}{0pt}}%
+{\setboolean{@hblk@h}{false}}%
+\txa{greeting}%
+\ifthenelse{\boolean{@greet@p}}%
+{\setboolean{@hblk@i}{true}\sbox{\@hblk@ia}{\@greet@to}%
+\setlength{\@hblk@i@bef}{\@greet@to@sk@a}\setlength{\@hblk@i@aft}{\@greet@to@sk@a}}%
+{\setboolean{@hblk@i}{false}}%
+%Here finally print the header section
+% Very ungainly here - multicolumn does not like the ifthenelse construction
+\txa{Dimens: baselineskip:\the\baselineskip,@marg@tp@b:\the\@marg@tp@b}
+{\setlength{\baselineskip}{0pt}
+\settoheight{\@utile}{Test Testy grinch}
+\renewcommand{\arraystretch}{0}
+\txa{table start}
+\txa{extrarulesep:\the\extrarulesep}
+\setlength{\extrarulesep}{0pt}
+\begin{flushleft}%
+\begin{tabular}{\@tab@set}\@tab@line
+\@prnt@boxa{@hblk@a}{\@hblk@a@bef}{1}{\@hblk@aa}{\@hblk@ab}{\@hblk@ac}%
+{\@hblk@a@aft}{\@tab@line}{A}%
+\@prnt@boxa{@hblk@b}{\@hblk@b@bef}{2}{\@hblk@ba}{\@hblk@bb}{\@hblk@bc}%
+{\@hblk@b@aft}{\@tab@line}{B}%
+\@prnt@boxa{@hblk@c}{\@hblk@c@bef}{3}{\@hblk@ca}{\@hblk@cb}{\@hblk@cc}%
+{\@hblk@c@aft}{\@tab@line}{C}%
+\@prnt@boxa{@hblk@d}{\@hblk@d@bef}{4}{\@hblk@da}{\@hblk@db}{\@hblk@dc}%
+{\@hblk@d@aft}{\@tab@line}{D}%
+\@prnt@boxa{@hblk@e}{\@hblk@e@bef}{5}{\@hblk@ea}{\@hblk@eb}{\@hblk@ec}%
+{\@hblk@e@aft}{\@tab@line}{E}%
+\@prnt@boxa{@hblk@f}{\@hblk@f@bef}{6}{\@hblk@fa}{\@hblk@fb}{\@hblk@fc}%
+{\@hblk@f@aft}{\@tab@line}{F}%
+\@prnt@boxa{@hblk@g}{\@hblk@g@bef}{7}{\@hblk@ga}{\@hblk@gb}{\@hblk@gc}%
+{\@hblk@g@aft}{\@tab@line}{G}%
+%\@prnt@mboxa{@hblk@h}{\@hblk@h@bef}{8}{\@hblk@ha}{\@hblk@hb}{\@hblk@hc}%
+%{\@hblk@h@aft}{\@tab@line}{H}%
+\end{tabular}%
+\end{flushleft}%
+\txa{Box a:Before-\the\@hblk@a@bef, After-\the\@hblk@a@aft}%
+\settoheight{\@utila}{\usebox{\@hblk@aa}}%
+\settoheight{\@utilb}{\usebox{\@hblk@ab}}%
+\settoheight{\@utilc}{\usebox{\@hblk@ac}}%
+\txa{Heights: \the\@utila, \the\@utilb, \the\@utilc}%
+\txa{Box b:Before-\the\@hblk@b@bef, After-\the\@hblk@b@aft}%
+\settoheight{\@utila}{\usebox{\@hblk@ba}}%
+\settoheight{\@utilb}{\usebox{\@hblk@bb}}%
+\settoheight{\@utilc}{\usebox{\@hblk@bc}}%
+\txa{Heights: \the\@utila, \the\@utilb, \the\@utilc}%
+\txa{Box c:Before-\the\@hblk@c@bef, After-\the\@hblk@c@aft}%
+\settoheight{\@utila}{\usebox{\@hblk@ca}}%
+\settoheight{\@utilb}{\usebox{\@hblk@cb}}%
+\settoheight{\@utilc}{\usebox{\@hblk@cc}}%
+\txa{Heights: \the\@utila, \the\@utilb, \the\@utilc}%
+\txa{Box d:Before-\the\@hblk@d@bef, After-\the\@hblk@d@aft}%
+\settoheight{\@utila}{\usebox{\@hblk@da}}%
+\settoheight{\@utilb}{\usebox{\@hblk@db}}%
+\settoheight{\@utilc}{\usebox{\@hblk@dc}}%
+\txa{Heights: \the\@utila, \the\@utilb, \the\@utilc}%
+\txa{Box e:Before-\the\@hblk@e@bef, After-\the\@hblk@e@aft}%
+\settoheight{\@utila}{\usebox{\@hblk@ea}}%
+\settoheight{\@utilb}{\usebox{\@hblk@eb}}%
+\settoheight{\@utilc}{\usebox{\@hblk@ec}}%
+\txa{Heights: \the\@utila, \the\@utilb, \the\@utilc}%
+\txa{Box f:Before-\the\@hblk@f@bef, After-\the\@hblk@f@aft}%
+\settoheight{\@utila}{\usebox{\@hblk@fa}}%
+\settoheight{\@utilb}{\usebox{\@hblk@fb}}%
+\settoheight{\@utilc}{\usebox{\@hblk@fc}}%
+\txa{Heights: \the\@utila, \the\@utilb, \the\@utilc}%
+\txa{Box g:Before-\the\@hblk@g@bef, After-\the\@hblk@g@aft}%
+\settoheight{\@utila}{\usebox{\@hblk@ga}}%
+\settoheight{\@utilb}{\usebox{\@hblk@gb}}%
+\settoheight{\@utilc}{\usebox{\@hblk@gc}}%
+\txa{Heights: \the\@utila, \the\@utilb, \the\@utilc}%
+\txa{table end}
+\settowidth{\@utila}{\usebox{\@hblk@ha}}%
+\settoheight{\@utilb}{\usebox{\@hblk@ha}}%
+\txa{Greeting: \the\@utila, \the\@utilb}
+\txa{Box h:Before-\the\@hblk@h@bef, After-\the\@hblk@h@aft}%
+\noindent\par\ifthenelse{\boolean{@hblk@h}}%
+{\parbox[b][\@hblk@h@bef+\@hblk@h@aft][b]{\@utila}
+{\strut\raisebox{\@hblk@h@aft}{\usebox{\@hblk@ha}}}}{}%
+\settowidth{\@utila}{\usebox{\@hblk@ia}}%
+\settoheight{\@utilb}{\usebox{\@hblk@ia}}%
+\txa{Greeting: \the\@utila, \the\@utilb}
+\txa{Box i:Before-\the\@hblk@i@bef, After-\the\@hblk@i@aft}%
+\noindent\par\ifthenelse{\boolean{@hblk@i}}%
+{\parbox[b][\@hblk@i@bef+\@hblk@i@aft][b]{\@utila}
+{\strut\raisebox{\@hblk@i@aft}{\usebox{\@hblk@ia}}}}{}%
+\txa{end of centerstuff}%
+}}}%
+\newcommand{\@prnt@boxa}[9]{%
+\ifthenelse{\boolean{#1}}{
+\strut\rule{0pt}{#2+\@utile}\usebox{#4}&\usebox{#5}&\usebox{#6}\\[#7]#8}{}}%
+\newcommand{\@prnt@mboxa}[9]{%
+\ifthenelse{\boolean{#1}}{
+\strut\rule{0pt}{#2+\@utile}\multicolumn{3}{l}{\usebox{#4}}\\[#7]#8}{}}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \end{macrocode}
+% \end{macro}
+% \subsection{Close of document section}
+% \begin{macro}{@clos@lfm}
+% In this section, the letter is terminated. Several things happen here:
+% \begin{enumerate}
+% \item If signature block is to be printed, it is printed
+% \item If signature itself is to be printed, it is printed; otherwise,
+% just skip a reasonable amount of vertical space, to allow document to
+% be signed
+% \item If sender name is to be printed, it is printed
+% \item For press releases, output |\PhrPRend| and blank the
+% ---more--- in the footer. The marking mechanism is the proper
+% way to do this, avoiding the unlikely case where we might blank the footer
+% and then have the previous page output.
+% \end{enumerate}
+% \begin{macrocode}
+\def\@fix@one@box{%
+\sbox{\@sig@box@b}{\begin{tabular}{l}%
+\ifthenelse{\boolean{@use@close}}{{\@closeline}\\}{}%
+\ifthenelse{\boolean{@use@sig}}%
+{{\@sig@fr}\\}{\parbox[t][\the\@sig@sp][t]{.1pt}{\vspace*{\@sig@sp}}\\}%
+\ifthenelse{\boolean{@use@sig@nm}}{\@sig@nm\\}{\@name@fr\\}%
+\end{tabular}}}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\@close@lfm{\def\ifta{0}\txa{In @close@lfm}%
+\setlength{\@utila}{\@sig@sk@b}\addtolength{\@utila}{-1.5\baselineskip}%
+\vspace*{\the\@utila}\noindent\setlength{\tabcolsep}{0pt}%
+\ifthenelse{\boolean{@pr@p}}%
+{\medskip\begin{center}\@PRend@phr\end{center}%
+ \markboth{}{}
+}% markboth mechanism resets center footer
+{}% note require {} to finish ifthenelse
+%%%%%
+\ifthenelse{\boolean{@mult@sig}}%
+{\begin{flushleft}%
+\ifthenelse{\equal{\the@sig@tot}{1}}{\def\@sig@tab{l}}{}% Set multiple columns
+\ifthenelse{\equal{\the@sig@tot}{2}}{\def\@sig@tab{ll}}{}%
+\ifthenelse{\equal{\the@sig@tot}{3}}{\def\@sig@tab{lll}}{}%
+\ifthenelse{\equal{\the@sig@tot}{4}}{\def\@sig@tab{llll}}{}%
+\setlength{\@utilb}{0pt}\setlength{\@utila}{0pt}% Reset counters to 0
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Loop thru signature abbreviations
+% Set flags
+% Set one signature, make box, measure
+% Find max heights and widths
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\@for\@one@sig:=\@sig@list\do%
+{\setboolean{@use@sig}{false}\setboolean{@use@close}{false}%
+\setboolean{@use@sig@nm}{false}%
+\expandafter\csname sig\@one@sig\endcsname%
+\@fix@one@box\settowidth{\@utild}{\usebox{\@sig@box@b}}%
+\ifthenelse{\lengthtest{\@utila<\@utild}}{\setlength{\@utila}{\@utild}}{}%
+\settoheight{\@utilc}{\usebox{\@sig@box@b}}\settodepth{\@utild}{\usebox{\@sig@box@b}}%
+\addtolength{\@utilc}{\@utild}% Find total depth
+\ifthenelse{\lengthtest{\@utilb<\@utilc}}{\setlength{\@utilb}{\@utilc}}{}}%
+\setcounter{@lab@cnt@col}{0}%
+\setlength{\@utile}{0pt}% Set up for number signatures across
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Loop thru signature abbreviations
+% Open new signature wrapper
+% Set flags
+% Set one signature, make box, measure
+% If number of sigs across at max, skip line
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\@for\@one@sig:=\@sig@list\do% Loop thru signature abbreviations
+{\setboolean{@use@sig}{false}\setboolean{@use@close}{false}%
+\setboolean{@use@sig@nm}{false}%
+\txa{\the\@utile}
+\ifthenelse{\equal{\the@lab@cnt@col}{0}}{~\vspace*{\the\@utile}\\\noindent}{}%
+\expandafter\csname sig\@one@sig\endcsname%
+\ignorespaces \@fix@one@box\settoheight{\@utilc}{\usebox{\@sig@box@b}}%
+\settodepth{\@utild}{\usebox{\@sig@box@b}}\addtolength{\@utilc}{\@utild}%
+\ifthenelse{\equal{\the@sig@tot}{1}}{\setlength{\@utilb}{\@utilc}}{}%
+\addtolength{\@utilc}{-\@utilb}%
+\raisebox{-\the\@utilc/2}{\parbox[t]{\the\@utila}{\usebox{\@sig@box@b}}}%
+\addtocounter{@lab@cnt@col}{1}%
+\ifthenelse{\equal{\the@lab@cnt@col}{\the@sig@tot}}%
+{\txa{else condition}
+\setcounter{@lab@cnt@col}{0}\setlength{\@utile}{\@sig@sk@r}}{\hspace*{\the\@sig@sk@c}}}%
+\vspace*{\the\@sig@sk@a}\end{flushleft}}%
+{% Print normal signature
+\@fix@one@box\settowidth{\@utila}{\usebox{\@sig@box@b}}% Set up box, measure
+\Prnt@Chk{@sig@p}{@sig@l}{@sig@c}%
+{\parbox{\@utila}{\usebox{\@sig@box@b}}}{}{\@sig@sk@b}{\@sig@sk@a}}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \subsection{Address \info}
+% \begin{macro}{@post@sig@bl}
+% This is an internal macro which prints blocks of text after the signature
+% in a hanging block fashion.
+%
+% \begin{macrocode}
+\def\@post@sig@bl#1#2#3{%
+\setlength{\@utilb}{\textwidth}%
+\settowidth{\@utila}{{\small\normalfont #1: }}%
+\addtolength{\@utilb}{-\@utila}%
+\ifthenelse{\equal{#2}{#3}}{}{%
+\vspace*{\the\@post@sig@sp@b} \hspace*{.01pt} \\ \noindent%
+\parbox[t]{\textwidth}{\@hangfrom{{\small\normalfont #1: }}%
+\ignorespaces \parbox[t]{\@utilb}{{\small#2}}\strut}\par%
+\vspace*{\the\@post@sig@sp@a}%
+}}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+%</package>
+%<*addrset>
+% \end{macrocode}
+% \begin{macro}{Commands}
+% These commands are either internal (begin with \verb|@|) or user-optional (do
+% not begin with \verb|@|). User-optional commands are defined in the text
+% above.
+% \begin{macrocode}
+\def\addr#1{\protect\def\@addrxx{#1}} \addr{}%
+\def\addrfr#1{\protect\def\@addr@fr{#1}} \addrfr{}%
+\def\addrfrom#1{\protect\def\@addr@fr{#1}} \addrfrom{}%
+\def\addrto#1{\protect\def\@addr@to{#1}} \addrto{}%
+\def\cclist#1{\protect\def\@cc@item{#1}} \cclist{---BLANK---}% cc list
+\def\city#1{\protect\def\@city{#1}} \city{}%
+\def\closeln#1{\protect\def\@closeline{#1}\setboolean{@use@close}{true}}% Letter closing line
+\def\closeline#1{\protect\def\@closeline{#1}\setboolean{@use@close}{true}}%
+\def\dateset#1{\protect\def\@xdate{#1}} \dateset{\today}% Letter date
+\def\dept#1{\protect\def\@dept{#1}} \dept{}%
+\def\degree#1{\protect\def\@degree{#1}} \degree{}%
+\def\email#1{\protect\def\@email{#1}} \email{}%
+\def\emailb#1{\protect\def\@emailb{#1}} \emailb{}%
+\def\emailc#1{\protect\def\@emailc{#1}} \emailc{}%
+\def\emailbto#1{\protect\def\@emailb@to{#1}} \emailbto{}%
+\def\emailcto#1{\protect\def\@emailc@to{#1}} \emailcto{}%
+\def\emailbfr#1{\protect\def\@emailb@fr{#1}} \emailbfr{}%
+\def\emailcfr#1{\protect\def\@emailc@fr{#1}} \emailcfr{}%
+\def\emailfr#1{\protect\def\@email@fr{#1}} \emailfr{}%
+\def\emailfrom#1{\protect\def\@email@fr{#1}} \emailfrom{}%
+\def\emailto#1{\protect\def\@email@to{#1}} \emailto{}%
+\def\encllist#1{\protect\def\@encl@item{#1}} \encllist{---BLANK---}%
+\def\fax#1{\protect\def\@fax{#1}} \fax{}%
+\def\faxto#1{\protect\def\@fax@to{#1}} \faxto{}%
+\def\faxfr#1{\protect\def\@fax@fr{#1}} \faxfr{}%
+\def\faxfrom#1{\protect\def\@fax@fr{#1}} \faxfrom{}%
+\def\faxmssg#1{\protect\def\@fax@mssg{#1}} \faxmssg{}%
+\def\fname#1{\protect\def\@f@name{#1}} \fname{}%
+\def\fnameto#1{\protect\def\@f@name@to{#1}} \fnameto{}%
+\def\fnamefr#1{\protect\def\@f@name@fr{#1}} \fnamefr{}%
+\def\greet#1{\protect\def\@greet{#1}} \greet{}%
+\def\greetto#1{\protect\def\@greet@to{#1}} \greetto{}%
+\def\greetfr#1{\protect\def\@greet@fr{#1}} \greetfr{}%
+\def\initials#1{\protect\def\@init@item{#1}} \initials{}%
+\def\institute#1{\protect\def\@institute{#1}} \institute{}%
+\def\jtitle#1{\protect\def\@jtitle{#1}} \jtitle{}%
+\def\lname#1{\protect\def\@l@name{#1}} \lname{}%
+\def\lnameto#1{\protect\def\@l@name@to{#1}} \lnameto{}%
+\def\lnamefr#1{\protect\def\@l@name@fr{#1}} \lnamefr{}%
+\def\mname#1{\protect\def\@m@name{#1}} \mname{}%
+\def\mnameto#1{\protect\def\@m@name@to{#1}} \mnameto{}%
+\def\mnamefr#1{\protect\def\@m@name@fr{#1}} \mnamefr{}%
+\def\name#1{\protect\def\@namev{#1}} \name{}%
+\def\namefr#1{\protect\def\@name@fr{#1}} \namefr{}%
+\def\namefrom#1{\protect\def\@name@fr{#1}} \namefrom{}%
+\def\nameto#1{\protect\def\@name@to{#1}} \nameto{}%
+\def\organization#1{\protect\def\@org{#1}} \organization{}%
+\def\pager#1{\protect\def\@pager{#1}} \pager{}%
+\def\pagerto#1{\protect\def\@pager@to{#1}} \pagerto{}%
+\def\pagerfrom#1{\protect\def\@pager@fr{#1}} \pagerfrom{}%
+\def\pagerfr#1{\protect\def\@pager@fr{#1}} \pagerfr{}%
+\def\phone#1{\protect\def\@phn{#1}} \phone{}% Phone
+\def\phonea#1{\protect\def\@phna{#1}} \phonea{}% Phone
+\def\phoneb#1{\protect\def\@phnb{#1}} \phoneb{}% Phone
+\def\phonec#1{\protect\def\@phnc{#1}} \phonec{}% Phone
+\def\phoned#1{\protect\def\@phnd{#1}} \phoned{}% Phone
+\def\phoneo#1{\protect\def\@phno{#1}} \phoneo{}% Phone
+\def\phoneh#1{\protect\def\@phnh{#1}} \phoneh{}% Phone
+\def\phonefr#1{\protect\def\@phn@fr{#1}} \phonefr{}% Phone from
+\def\phonefrom#1{\protect\def\@phn@fr{#1}} \phonefrom{}% Phone from
+\def\phoneafrom#1{\protect\def\@phn@fr{#1}} \phoneafrom{}% Phone from
+\def\phoneafr#1{\protect\def\@phn@fr{#1}} \phoneafrom{}% Phone from
+\def\phonebfrom#1{\protect\def\@phnb@fr{#1}} \phonebfrom{}% Phone from
+\def\phonecfrom#1{\protect\def\@phnc@fr{#1}} \phonecfrom{}% Phone from
+\def\phonedfrom#1{\protect\def\@phnd@fr{#1}} \phonedfrom{}% Phone from
+\def\phonebfr#1{\protect\def\@phnb@fr{#1}} \phonebfrom{}% Phone from
+\def\phonecfr#1{\protect\def\@phnc@fr{#1}} \phonecfrom{}% Phone from
+\def\phonedfr#1{\protect\def\@phnd@fr{#1}} \phonedfrom{}% Phone from
+\def\phoneto#1{\protect\def\@phn@to{#1}} \phoneto{}% Phone to
+\def\phoneoto#1{\protect\def\@phno@to{#1}} \phoneoto{}% Phone to
+\def\phonehfr#1{\protect\def\@phnh@fr{#1}} \phonehfr{}% Phone to
+\def\phoneofr#1{\protect\def\@phno@fr{#1}} \phoneofr{}% Phone to
+\def\phonehto#1{\protect\def\@phnh@to{#1}} \phonehto{}% Phone to
+\def\phoneato#1{\protect\def\@phn@to{#1}} \phoneto{}% Phone to
+\def\phonebto#1{\protect\def\@phnb@to{#1}} \phonebto{}% Phone to
+\def\phonecto#1{\protect\def\@phnc@to{#1}} \phonecto{}% Phone to
+\def\phonedto#1{\protect\def\@phnd@to{#1}} \phonedto{}% Phone to
+\def\plngadj#1{\protect\def\@f@f{#1}} \plngadj{0in}%
+\def\position#1{\protect\def\@position{#1}} \position{}%
+\def\ppsitem#1{\protect\def\@pps@item{#1}} \ppsitem{---BLANK---}%
+\def\pppsitem#1{\protect\def\@ppps@item{#1}} \pppsitem{---BLANK---}%
+\def\psitem#1{\protect\def\@ps@item{#1}} \psitem{---BLANK---}%
+\def\re#1{\protect\def\@re@line{#1}} \re{---BLANK---}%
+\def\regarding#1{\setboolean{@pt@regard}{true}\protect\def\@regard@line{#1}}%
+\def\role#1{\protect\def\@role{#1}} \role{}%
+\def\sender#1{\protect\def\@sender{#1}} \sender{}%
+\def\signature#1{\protect\def\@sig@fr{#1}\setboolean{@use@sig}{true}}%
+\def\sigacross#1{\setcounter{@sig@tot}{#1}}%
+\def\siglist#1{\protect\def\@sig@list{#1}\setboolean{@mult@sig}{true}%
+\setboolean{@sig@l}{true}\setboolean{@sig@c}{false}}%
+\def\signame#1{\protect\def\@sig@nm{#1}\setboolean{@use@sig@nm}{true}}%
+\def\socsec#1{\protect\def\@socsec{#1}} \socsec{}%
+\def\SSnumto#1{\protect\def\@SS@num@to{#1}} \SSnumto{}%
+\def\state#1{\protect\def\@state{#1}} \state{}%
+\def\staddr#1{\protect\def\@staddr{#1}} \staddr{}%
+\def\subre#1{\protect\def\@sub@re@line{#1}} \subre{}%
+\def\subdept#1{\protect\def\@subdept{#1}} \subdept{}%
+\def\zip#1{\protect\def\@zip{#1}} \zip{}%
+\def\byline#1{\setboolean{@pr@by}{true}\protect\def\@pr@byline{#1}}%
+\byline{}\setboolean{@pr@by}{false}%
+\def\headline#1{\protect\def\@pr@headline{#1}%
+ \protect\def\@pr@shorthead{#1}} \headline{---BLANK---}%
+\def\release#1{\protect\def\@pr@release{#1}} \release{\@release@phr}%
+\def\shorthead#1{\protect\def\@pr@shorthead{#1}} % set by headline
+\regarding{---BLANK---} \setboolean{@pt@regard}{false}%
+\siglist{}%
+\signature{}%
+\sigacross{1}%
+\closeline{}%
+\setboolean{@use@sig}{false}%
+\setboolean{@use@close}{false}%
+\setboolean{@mult@sig}{false}%
+\signame{}%
+\setboolean{@use@sig@nm}{false}%
+% \end{macro}
+% \begin{macrocode}
+% \end{macrocode}
+% \begin{macro}{Commands}
+% These commands are either internal (begin with |@|) or user-optional (do
+% not begin with |@|). User-optional commands are defined in the text
+% above.
+% \begin{macrocode}
+\def\fixadr#1{\expandafter\csname adr#1\endcsname}%
+\def\setadrto#1{\global\protect\let\@addrxx\@empty%
+\global\protect\let\@namev\@empty \global\protect\let\@phn\@empty%
+\global\protect\let\@phna\@empty \global\protect\let\@phnb\@empty%
+\global\protect\let\@phnc\@empty \global\protect\let\@phnd\@empty%
+\global\protect\let\@phno\@empty \global\protect\let\@phnh\@empty%
+\global\protect\let\@pager\@empty \global\protect\let\@fax\@empty%
+\global\protect\let\@greet\@empty \global\protect\let\@email\@empty%
+\global\protect\let\@emailb\@empty \global\protect\let\@emailc\@empty%
+\global\protect\let\@l@name\@empty \global\protect\let\@f@name\@empty%
+#1\txa{In setadrto - }\txa{Second}
+\txa{\@addrxx}
+\global\protect\let\@addr@to\@addrxx \txa{Z} \global\protect\let\@name@to\@namev%
+\txa{A1}
+\global\protect\let\@phn@to\@phn \global\protect\let\@phna@to\@phna%
+\global\protect\let\@phnb@to\@phnb \global\protect\let\@phnc@to\@phnc%
+\txa{A2}
+\global\protect\let\@phnd@to\@phnd \global\protect\let\@phno@to\@phno%
+\global\protect\let\@phnh@to\@phnh \global\protect\let\@pager@to\@pager%
+\txa{A3}
+\global\protect\let\@fax@to\@fax \global\protect\let\@greet@to\@greet%
+\global\protect\let\@email@to\@email \global\protect\let\@emailb@to\@emailb%
+\txa{A4}
+\global\protect\let\@emailc@to\@emailc \global\protect\let\@l@name@to\@l@name%
+\global\protect\let\@f@name@to\@f@name%
+\txa{End of setadrto}
+}%
+\def\setadrfr#1{\global\protect\let\@addrxx\@empty%
+\global\protect\let\@namev\@empty \global\protect\let\@phn\@empty%
+\global\protect\let\@phna\@empty \global\protect\let\@phnb\@empty%
+\global\protect\let\@phnc\@empty \global\protect\let\@phnd\@empty%
+\global\protect\let\@phno\@empty \global\protect\let\@phnh\@empty%
+\global\protect\let\@pager\@empty \global\protect\let\@fax\@empty%
+\global\protect\let\@greet\@empty \global\protect\let\@email\@empty%
+\global\protect\let\@emailb\@empty \global\protect\let\@emailc\@empty%
+\global\protect\let\@l@name\@empty \global\protect\let\@f@name\@empty%
+#1\txa{In setadrfr}%
+\global\protect\let\@addr@fr\@addrxx \global\protect\let\@name@fr\@namev%
+\global\protect\let\@phn@fr\@phn \global\protect\let\@phna@fr\@phna%
+\global\protect\let\@phnb@fr\@phnb \global\protect\let\@phnc@fr\@phnc%
+\global\protect\let\@phnd@fr\@phnd \global\protect\let\@phno@fr\@phno%
+\global\protect\let\@phnh@fr\@phnh \global\protect\let\@pager@fr\@pager%
+\global\protect\let\@fax@fr\@fax \global\protect\let\@greet@fr\@greet%
+\global\protect\let\@email@fr\@email \global\protect\let\@emailb@fr\@emailb%
+\global\protect\let\@emailc@fr\@emailc \global\protect\let\@l@name@fr\@l@name%
+\global\protect\let\@f@name@fr\@f@name%
+\txa{End of setadrfr}
+}%
+\DeclareRobustCommand*{\printnameto}{\@name@to}%
+\DeclareRobustCommand*{\printaddrto}{\@addr@to}%
+\DeclareRobustCommand*{\printphoneto}{\@phn@to}%
+\DeclareRobustCommand*{\printphoneato}{\@phna@to}%
+\DeclareRobustCommand*{\printphonebto}{\@phnb@to}%
+\DeclareRobustCommand*{\printphonecto}{\@phnc@to}%
+\DeclareRobustCommand*{\printphonedto}{\@phnd@to}%
+\DeclareRobustCommand*{\printphoneoto}{\@phno@to}%
+\DeclareRobustCommand*{\printphonehto}{\@phnh@to}%
+\DeclareRobustCommand*{\printpagerto}{\@pager@to}%
+\DeclareRobustCommand*{\printfaxto}{\@fax@to}%
+\DeclareRobustCommand*{\printgreetto}{\@greet@to}%
+\DeclareRobustCommand*{\printemailto}{\@email@to}%
+\DeclareRobustCommand*{\printemailbto}{\@emailb@to}%
+\DeclareRobustCommand*{\printemailcto}{\@emailc@to}%
+\DeclareRobustCommand*{\printlnameto}{\@l@name@to}%
+\DeclareRobustCommand*{\printfnameto}{\@f@name@to}%
+\DeclareRobustCommand*{\printnamefrom}{\@name@fr}%
+\DeclareRobustCommand*{\printaddrfrom}{\@addr@fr}%
+\DeclareRobustCommand*{\printphonefrom}{\@phn@fr}%
+\DeclareRobustCommand*{\printphoneafrom}{\@phna@fr}%
+\DeclareRobustCommand*{\printphonebfrom}{\@phnb@fr}%
+\DeclareRobustCommand*{\printphonecfrom}{\@phnc@fr}%
+\DeclareRobustCommand*{\printphonedfrom}{\@phnd@fr}%
+\DeclareRobustCommand*{\printphoneofrom}{\@phno@fr}%
+\DeclareRobustCommand*{\printphonehfrom}{\@phnh@fr}%
+\DeclareRobustCommand*{\printpagerfrom}{\@pager@fr}%
+\DeclareRobustCommand*{\printfaxfrom}{\@fax@fr}%
+\DeclareRobustCommand*{\printgreetfrom}{\@greet@fr}%
+\DeclareRobustCommand*{\printemailfrom}{\@email@fr}%
+\DeclareRobustCommand*{\printemailbfrom}{\@emailb@fr}%
+\DeclareRobustCommand*{\printemailcfrom}{\@emailc@fr}%
+\DeclareRobustCommand*{\printlnamefrom}{\@l@name@fr}%
+\DeclareRobustCommand*{\printfnamefrom}{\@f@name@fr}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+%</addrset>
+%<*package>
+% \end{macrocode}
+% \end{macro}
+% \subsection{Address book handling}
+% |newlfm| stores \info{} in a file |letrinfo.tex|. This \info{} is
+% stored in a series of wrapper macros. This are the macros |\makelth|,
+% |\makesig| and |\makeadr|. These are used in letters and memos by
+% issuing the commands |\adrXXX|, |\lthXXX| and |\sigXXX| {\it before} the
+% |\begin{newlfm}| statement:
+% \begin{verbatim}
+% \begin{document}
+% \ltrTST \sigABC \setadrto{\adrDEF} \setadrfr{\adrPWW}
+% \begin{newlfm}
+% \end{verbatim}
+% Alternatively, the wrapper macros may be included in the document using
+% the |letrh|, |addrt|, |addrf|, and |sigtr| commands in the |\newlfmP|
+% command as:
+% \begin{verbatim}
+% \begin{document}
+% \newlfmP{letrh=TST,sigtr=ABC,addrt=DEF,addrf=PWW}
+% \begin{newlfm}
+% \end{verbatim}
+% The wrapper macros function as a very generalized
+% hash table for addresses, letterheads and signature \info.
+% Each type of \info{} is keyed by the use of the appropriate value of XXX.
+% When |newlfm| starts up, the program reads in standard declarations of names,
+% addresses, signatures, header blocks, etc., stored in file
+% |letrinfo.tex|. This file will contain \info{} which is normally
+% included in a letter. That way, it need not be entered separately into
+% each different letter.
+%
+% \begin{macrocode}%
+\newif \if@read@one \@read@onetrue%
+\def\@ltr@info@name{letrinfo.tex}%
+%\DeclareOption{InfoFileName}[1]{\renewcommand{\@ltr@info@name}{#1}}
+\define@key{ov}{InfoFileName}{\def\@ltr@info@name{#1}}%
+\InputIfFileExists{\@ltr@info@name}%
+{\typeout{Reading default letter definitions from \@ltr@info@name}}%
+{\typeout{\@ltr@info@name\ not found. All letter definitions must be in newlfm.cls}}%
+% \end{macrocode}
+%
+% \subsection{Form letters}
+% \begin{macro}{doletter}
+% In this section, we set up the environment to prepare form letters.
+% This is done by:
+% \begin{enumerate}
+% \item Defining the body of the letter using the command
+% \verb|\letterbody|. The body may include macro items. The body
+% {\it should not} include the |newlfm| command,
+% which is invoked by the macro |\doletter| itself. Thus, do not
+% include the \verb|\begin{newlfm}| or \verb|\end{newlfm}| statements.
+% \item For each letter, use the construction \verb|\doletter{}|. The
+% required argument includes a specification of the address
+% information, usually. The required argument is used directly before
+% the {\tt newlfm} environment is specified, and the form letter
+% specified. Thus, the address for the several letters can easily be
+% listed.
+% \item |\doltr| and |\ltrbody| are previous forms of the form letter
+% commands, but are no longer supported.
+% \end{enumerate}
+% \begin{macrocode}
+\gdef\npind{0}
+\def\ltrbody#1{\protect\def\@ltr@body{#1}}%
+\DeclareRobustCommand{\letterbody}[1]{\def\@ltr@body{#1}}%
+\DeclareRobustCommand*{\doltr}[1]%
+{#1 \begin{newlfm} \@ltr@body \end{newlfm} \gdef\npind{B} % \newpage%
+\ifthenelse{\boolean{@env@open}}{}{}}%
+\DeclareRobustCommand*{\@env@label}[1]{#1\parbox[t][\@lab@bh][t]{\@lab@bw}%
+{{\@name@to \\ \@addr@to} \hfill}}%
+\DeclareRobustCommand*{\@env@oth}[2]{%
+\txa{box height:\the\@lab@bh, box width:\the\@lab@bw, between: \the\tabcolsep}%
+\parbox[t][\@lab@bh][t]{\@lab@bw}{\@lab@size \strut #1 \\ #2 \strut}}%
+\DeclareRobustCommand*{\@env@row}[4]{\settowidth{\@utila}{\@hnfr@phr:}%
+\setlength{\tabcolsep}{0pt}%
+\fbox{\parbox[t][\@lab@bh][t]{\@lab@bw}{%
+\@lab@size \begin{tabular}{ll}{\Large\@hnfr@phr:}&{\Large\@hnto@phr:}\\%
+\parbox[t]{2.0in}{#3\\#4}&\parbox[t]{2.0in}{#1\\#2}%
+\end{tabular}\hfill}}}%
+\DeclareRobustCommand*{\@env@col}[4]{\parbox[t][\@lab@bh][t]{\@lab@bw}{%
+{\@lab@size{\Large\@hnfr@phr:}\\#3\\#4\\{\Large\@hnto@phr:}\\#1\\#2}}}%
+\DeclareRobustCommand*{\x@env@col}[4]{\parbox[t][\@lab@bh][t]{\@lab@bw}{%
+{\@lab@size\begin{tabular}{p{.5in}p{3.25in}}{\Large\@hnfr@phr:}&#3\\&\parbox[t]{3.25in}{#4}%
+\vspace*{10pt}\\{\Large\@hnto@phr:}&#1\\&\parbox[t]{3.25in}{#2}\\\end{tabular}}}}%
+\def\multletter#1{\@for\@addr@x:=#1\do{{\oneletter{\@addr@x}}}}%
+\def\doletter#1{\setadrto{#1}\txa{ZA}%
+\begin{newlfm}\@ltr@body\end{newlfm}\gdef\npind{D}\newpage}%
+\def\oneletter#1{\txa{In oneletter}\setadrto{\csname adr#1\endcsname}\txa{ZB}\addrt{#1}%
+\begin{newlfm}\@ltr@body\end{newlfm}\gdef\npind{E}}%
+\DeclareRobustCommand*{\@env@ext}[1]{\txa{#1:1}%
+\setadrto{\csname adr#1\endcsname}\txa{ZC}\txa{#1:2}%
+\@env@oth{\@name@to}{\@addr@to}\txa{#1:3}}%
+\def\clearall{\def\@ltr@head{}\def\@adr@to{}\def\@adr@fr{}\def\@sig@blok{}%
+\setboolean{@over@setto}{false}\setboolean{@over@setfr}{false}}%
+\def\makeenvst{}%
+\def\makeenvfn{%
+ \def\ifta{0}%
+ \nolines\dateset{}\clearall\noheadline\@dim@resetfalse\def\headrulewidth{0pt}%
+ \@clear@box\def\footrulewidth{0pt}%
+ \setboolean{@over@all}{false}\setboolean{@fax@RA}{false}%
+ \setboolean{@fax@RU}{false}\setboolean{@fax@hdr@pg}{false}%
+ \setboolean{@no@spc}{true}\setboolean{@B@f}{false}%
+ \setboolean{@B@h}{false}\setboolean{@B@l}{false}%
+ \setboolean{@B@r}{false}\setboolean{@b@f}{false}%
+ \setboolean{@b@h}{false}\setboolean{@b@l}{false}%
+ \setboolean{@b@r}{false}\setboolean{@sig@p}{false}%
+ \setboolean{@sig@mp}{false}\setboolean{@env@open}{false}%
+ \ifthenelse{\lengthtest{\@lab@th<12pt}}{\setlength{\@lab@th}{12.1pt}}{}%
+ \ifthenelse{\boolean{@use@envlab}}{%
+ \def\ifta{0}%
+ \setpage{\@stock@height}{\@stock@width}{-1in}{72pt}{0in}{-1in}{120pt}{0in}{20pt}%
+ \txa{use@envlab true}%
+ }%
+ {%
+ \gdef\npind{A3}%
+ \setpage{\@lab@pl}{\@stock@width}{-1in}{\@lab@lm}{0in}{-1in}{\@lab@th}{0in}{20pt}%
+ \txa{use@envlab false}%
+ \txa{headheight:\the\@lab@th}%
+ }%
+ \setboolean{@in@makeenv}{true}%
+ \begin{newlfm}\pagestyle{empty}\thispagestyle{empty}%
+ \def\ifta{0}%
+ \showdim{Start of makeenvfn}%
+ \@nlfm@util=0%
+ \setcounter{@lab@cnt@col}{0} \setcounter{@lab@cnt@row}{0}%
+ \setboolean{@env@open}{true} \setboolean{@env@close}{true}%
+ \setboolean{@ztila}{false}%
+ \def\ifta{0}%
+ \txa{Count:\number\@nlfm@addr,Test:\number\@nlfm@util}%
+ \setboolean{@do@any}{false}%
+ \loop \ifnum\number\@nlfm@util<\number\@nlfm@addr%
+ \global\advance\@nlfm@util by1%
+ \txa{Loop S Count: \number\@nlfm@util}%
+ \setboolean{@do@any}{true}%
+ \def\@onet{\csname @aadr@t\number\@nlfm@util\endcsname}%
+ \def\@onef{\csname @aadr@f\number\@nlfm@util\endcsname}%
+ \txa{\string\@onet:\@onet -- \string\@onef:\@onef}%
+ \protect\setadrto{\csname adr\@onet\endcsname}\txa{ZD}%
+ \protect\setadrfr{\csname adr\@onef\endcsname}%
+ \def\ifta{0}%
+ \txa{To: adr\@onet,\@name@to --- From: \@name@fr,adr\@onef --- Just:\@tab@just}%
+ \txa{@aadr@t\number\@nlfm@util: \csname @aadr@t\number\@nlfm@util\endcsname}%
+ \ifthenelse{\boolean{@env@open}}%
+ {\setcounter{@lab@cnt@row}{0}\txa{New page}%
+ \setboolean{@env@open}{false} \setboolean{@env@close}{true}%
+ \def\ifta{0}%
+ \showdim{Checking values before newpage}%
+ \gdef\npind{C}%
+ \ifthenelse{\boolean{@ztila}}{\newpage}{}%
+ \setboolean{@ztila}{true}%
+ \showdim{Checking values after newpage}%
+ \def\ifta{0}%
+ \setlength{\tabcolsep}{\@lab@bl} \begin{table}[t] \begin{tabular}{\@tab@just}%
+ \txa{Starting table}%
+ }%
+ {}%
+ \ifthenelse{\boolean{@lab@t}}%
+ {\txa{Label to only}\@env@oth{\@name@to}{\@addr@to}}{}%
+ \ifthenelse{\boolean{@lab@rft}}%
+ {\txa{Label row from to}\@env@row{\@name@to}{\@addr@to}{\@name@fr}{\@addr@fr}}{}%
+ \ifthenelse{\boolean{@lab@cft}}%
+ {\txa{Label col from to}\@env@col{\@name@to}{\@addr@to}{\@name@fr}{\@addr@fr}}{}%
+ \addtocounter{@lab@cnt@col}{1}%
+ \ifthenelse{\equal{\the@lab@cnt@col}{\the@lab@tot@col}}%
+ {\addtocounter{@lab@cnt@row}{1}\setcounter{@lab@cnt@col}{0}%
+ \txa{Ending row}\\}%
+ {\txa{Ending column}&}%
+ \ifthenelse{\equal{\the@lab@cnt@row}{\the@lab@tot@row}}%
+ {\setcounter{@lab@cnt@row}{0}\setcounter{@lab@cnt@col}{0}%
+ \txa{Ending table}\\ \end{tabular}\end{table}%
+ \setboolean{@env@close}{false} \setboolean{@env@open}{true}%
+ }%
+ {}%
+ \def\ifta{0}%
+ \txa{Loop E Count: \number\@nlfm@util}%
+ \repeat%
+ \txa{Ending table}%
+ \txa{Out of big loop: \arabic{@lab@cnt@col}}%
+ \def\ifta{0}%
+ \global\@nlfm@uta=\value{@lab@cnt@row}%
+ \sbox{\@x@l}{\phantom{A}}%
+ \ifthenelse{\boolean{@env@close} \and \boolean{@do@any}}%
+ {\txa{\the@lab@cnt@col, \the@lab@cnt@row, \the@lab@tot@row}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Finish off current row first
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ifthenelse{\equal{\arabic{@lab@cnt@col}}{0}}{}%
+ {\whiledo{\the@lab@cnt@col<\the@lab@tot@col}%
+ {\@env@oth{\usebox{\@x@l}}{\usebox{\@x@l}}%
+ \addtocounter{@lab@cnt@col}{1}%
+ \ifthenelse{\the@lab@cnt@col<\the@lab@tot@col}{&}{}} \\%
+ \addtocounter{@lab@cnt@row}{1}%
+ }%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Add remaining rows, each with all columns
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \whiledo{\the@lab@cnt@row<\the@lab@tot@row}%
+ {\setcounter{@lab@cnt@col}{0}%
+ \whiledo{\the@lab@cnt@col<\the@lab@tot@col}%
+ {\@env@oth{\usebox{\@x@l}}{\usebox{\@x@l}}%
+ \addtocounter{@lab@cnt@col}{1}%
+ \ifthenelse{\the@lab@cnt@col<\the@lab@tot@col}{&}{\\}%
+ }%
+ \addtocounter{@lab@cnt@row}{1}%
+ \ifthenelse{\the@lab@cnt@row<\the@lab@tot@row}%
+ {}%
+ {\\ \end{tabular}\end{table} \newpage%
+ \showdim{At the end of the table}}%
+ \setboolean{@env@close}{false}%
+ \setboolean{@env@open}{true}%
+ }%
+ }%
+ {}%
+ \setboolean{@use@envlab}{false}%
+ \end{newlfm}%
+ \def\ifta{0}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \subsection{Main section}
+% \begin{macro}{newlfm}
+% This is the main section. In this section, we actually print a letter.
+% Here is how it is done:
+% \begin{enumerate}
+% \item Insert \info{} into environment
+% \item Determine sizes of header and footer largest pieces
+% \item Set all lengths to the height of the appropriate box
+% \item Set paperlength:
+% \begin{enumerate}
+% \item Begin with paperheight
+% \item Subtract |\@Hgt@Head|
+% \item Subtract |\footskip|, which includes |\@Hgt@Foot|
+% \item Take into account |voffset|, and 1 inch, which are designed to offset
+% one another
+% \item Subtract |headsep| and |headheight|
+% \end{enumerate}
+% \end{enumerate}
+% \begin{macrocode}
+\newenvironment{newlfm}{% Start of fax environment, in fax class%
+ \if@read@one \global\@read@onefalse \fi%
+ \def\ifta{0}\txa{Start of newlfm startup}%
+ \txa{nameto: \@name@to}%
+ \ifthenelse{\boolean{@over@all}}{\txa{overall: true}}{\txa{overall: false}}%
+ \ifthenelse{\boolean{@over@setto}}{\txa{oversetto: true}}{\txa{oversetto: false}}%
+ \txa{namefrom: \@name@fr}%
+ \ifthenelse{\boolean{@over@setfr}}{\txa{oversetfr: true}}{\txa{oversetfr: false}}%
+ \ifthenelse{\boolean{@over@all}}{%
+ \faxblocka%
+ }{}%
+ \ifthenelse{\boolean{@fax@RA}}%
+ {\ifthenelse{\boolean{@fax@bla}}{\Rheader{\usebox{\fba}}}{}%
+ \ifthenelse{\boolean{@fax@blb}}{\Rheader{\faxblockb}}{}}{}%
+ \ifthenelse{\boolean{@fax@RU}}%
+ {\txa{setting up ruh}%
+ \ifthenelse{\boolean{@fax@bla}}{\RUheader{\faxblocka}}{}%
+ \ifthenelse{\boolean{@fax@blb}}{\RUheader{\faxblockb}}{}}{}%
+ \ifthenelse{\boolean{@over@all}}{%
+ \expandafter\csname lth\@ltr@head \endcsname%
+ \ifthenelse{\boolean{@over@setto}}{%
+ \setadrto{\expandafter\csname adr\@adr@to \endcsname}}{}%
+ \ifthenelse{\boolean{@over@setfr}}{\txa{True}%
+ \setadrfr{\expandafter\csname adr\@adr@fr \endcsname}}{\txa{false}}%
+ \ifthenelse{\boolean{@over@sigbl}}{\txa{True}%
+ \expandafter\csname sig\@sig@blok \endcsname}{\txa{false}}%
+ \@set@em@up%
+ }{}%
+ \txa{setting up ruh}%
+ \def\ifta{0}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \txa{name@to:\@name@to}%
+ \ifthenelse{\boolean{@over@setto}}{\txa{oversetto:true}}{\txa{oversetto:false}}%
+ \txa{name@fr:\@name@fr}%
+ \ifthenelse{\boolean{@over@setfr}}{\txa{oversetfr:true}}{\txa{oversetfr:false}}%
+ \retdims%
+ \ifthenelse{\boolean{@fax@hdr@pg}}%
+ {{\txa{FAX Page Setup}%
+ \def\ifta{0}%
+ \showdim{Before resetting dimensions for fax}%
+ \faxpage%
+ \def\ifta{0}%
+ \showdim{After resetting dimensions for fax}%
+ \showdim{After restoring dimensions for fax}%
+ \txa{Before newpage issued}%
+ \txa{After newpage issued}%
+ \showdim{After fax page setup}%
+ }}{}%
+ \rstdims%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \def\ifta{0}\showdim{After fax page section closes}\gdef\npind{G}%
+ \if@twoside \ifodd\c@page%
+ \else\thispagestyle{empty}\null\newpage\fi \fi%
+ \c@page\@ne%
+ \interlinepenalty=200 % smaller than the TeXbook value%
+ \setlength{\headwidth}{\textwidth}%
+ \txa{Before Rfooter}\ifthenelse{\boolean{@B@f}}%
+ {\Cfooter{} \Rfooter{} \Lfooter{}} {}%
+% {\Cfooter{\phantom{\Cfooter}} \Rfooter{\phantom{\Rfooter}} \Lfooter{\phantom{\Lfooter}}} {}%
+ \txa{Before Rheader}\ifthenelse{\boolean{@B@h}}%
+ {\Rheader{} \Lheader{} \Cheader{}} {}%
+% {\Rheader{\phantom{\Rheader}} \Lheader{\phantom{\Lheader}} \Cheader{\phantom{\Cheader}}} {}%
+ \txa{Before Lmargin}\ifthenelse{\boolean{@B@l}}%
+ {\ifempty{\@Lmarg}{}{\Lmargin{}}}{}%
+% {\ifempty{\@Lmarg}{}{\Lmargin{\phantom{\Lmargin}}}}{}%
+ \txa{Before Rmargin}\ifthenelse{\boolean{@B@r}}%
+ {\ifempty{\@Rmarg}{}{\Rmargin{}}}{}%
+% {\ifempty{\@Rmarg}{}{\Rmargin{\phantom{\Rmargin}}}}{}%
+ \txa{Before rfooter}\ifthenelse{\boolean{@b@f}}%
+ {\rfooter{} \lfooter{} \cfooter{}} {}%
+% {\rfooter{\phantom{\rfooter}} \lfooter{\phantom{\lfooter}} \cfooter{\phantom{\cfooter}}} {}%
+ \txa{Before rheader}\ifthenelse{\boolean{@b@h}}%
+ {\rheader{} \lheader{} \cheader{}} {}%
+% {\rheader{\phantom{\rheader}} \lheader{\phantom{\lheader}} \cheader{\phantom{\cheader}}} {}%
+ \txa{Before lmargin}\ifthenelse{\boolean{@b@l}}%
+ {\lmargin{}} {}%
+% {\lmargin{\phantom{\lmargin}}} {}%
+ \txa{Before rmargin}\ifthenelse{\boolean{@b@r}}%
+ {\rmargin{}} {}%
+% {\rmargin{\phantom{\rmargin}}} {}%
+ \setlength{\textwidth}{\paperwidth-\@marg@rt-\@marg@lt-1pt}%
+ \txa{Before opening}%
+ \txa{\string\@marg@rt: \the\@marg@rt, \string\@marg@rt: \the\@marg@rt}%
+ \txa{\string\textwidth: \the\textwidth, \string\paperwidth: \the\paperwidth}%
+% \ifthenelse{\boolean{@over@all}}{%
+ \@open@lfm%
+% }{}
+ \def\ifta{0}%
+ \txa{nameto:\@name@to}%
+ \txa{namefr:\@name@fr}%
+ \txa{\string\@marg@rt: \the\@marg@rt, \string\@marg@rt: \the\@marg@rt}%
+ \txa{\string\textwidth: \the\textwidth, \string\paperwidth: \the\paperwidth}%
+ \txa{After opening}%
+ \def\ifta{0}%
+ \txa{\string\@marg@rt: \the\@marg@rt, \string\@marg@rt: \the\@marg@rt}%
+ \txa{\string\textwidth: \the\textwidth, \string\paperwidth: \the\paperwidth}%
+ \txa{Before pagestyle}%
+ \pagestyle{othhead}\thispagestyle{ltrhead}%
+ \def\ifta{0}%
+ \txa{After pagestyle}%
+ \ifthenelse{\boolean{@in@makeenv}}{\txa{makeenv true}}{\txa{makeenv false}%
+ \global\advance \@nlfm@addr by1%
+ \txa{Count: \number\@nlfm@addr -- To: \@adr@to -- From: \@adr@fr}
+ \expandafter\xdef\csname @aadr@t\number\@nlfm@addr\endcsname{\@adr@to}%
+ \expandafter\xdef\csname @aadr@f\number\@nlfm@addr\endcsname{\@adr@fr}%
+ \txa{Count: \number\@nlfm@addr -- To: \@adr@to -- From: \@adr@fr}%
+ \txa{@aadr@t\number\@nlfm@addr: \csname @aadr@t\number\@nlfm@addr\endcsname}%
+ \txa{To: \csname @aadr@t\number\@nlfm@addr\endcsname,\@adr@to}%
+ }%
+ \showdim{Dimensions at end of newlfm startup section}\def\ifta{0}%
+}%
+% \end{macrocode}
+% The next block of code defines the operation at the close of the
+% environment. This is a bit odd, since |closlfmp| seemingly already
+% catered to that case. As you will see below, there is quite a bit
+% more to do.
+%
+% Currently, press release and all others are handled quite
+% differently, raising the possibility that they should use different
+% macros. Currently, |closlfmp| does both. Close study is warranted,
+% as well as consideration of whether a press release might want to
+% repeat contact information at the bottom, or be combined with a fax,
+% letter, form letter/fax. There may be additional things the regular
+% code path does as well.
+%
+% \begin{macrocode}
+{% Here we are at the processing of the close of the newlfm env - start
+ \def\ifta{0}\txa{At the start of the close of newlfm env}%
+ \ifthenelse{\boolean{@pr@p}}{\@close@lfm}{}%
+ \ifthenelse{\boolean{@sig@p}}%
+ {\txa{Before closing}%
+ \ifthenelse{\boolean{@pr@p}}{}{\@close@lfm}%
+ \txa{After closing}%
+ \showdim{Current Dimensions}%
+ \@post@sig@bl{\@ps@phr}{\@ps@item}{---BLANK---}%
+ \@post@sig@bl{\@pps@phr}{\@pps@item}{---BLANK---}%
+ \@post@sig@bl{\@ppps@phr}{\@ppps@item}{---BLANK---}%
+ \@post@sig@bl{\@encl@phr}{\@encl@item}{---BLANK---}%
+ \@post@sig@bl{\@cc@phr}{\@cc@item}{---BLANK---}}{}%
+ \ifthenelse{\boolean{@sig@mp}}{%
+ \@post@sig@bl{\@ps@phr}{\@ps@item}{---BLANK---}%
+ \@post@sig@bl{\@pps@phr}{\@pps@item}{---BLANK---}%
+ \@post@sig@bl{\@ppps@phr}{\@ppps@item}{---BLANK---}%
+ \@post@sig@bl{\@encl@phr}{\@encl@item}{---BLANK---}%
+ \@post@sig@bl{\@cc@phr}{\@cc@item}{---BLANK---}}{}%
+ \ifthenelse{\boolean{@env@open}}{}{}%
+% \ifthenelse{\boolean{@use@envlab}}{\@make@big@env}{}%
+ \txa{Before the pagebreak}%
+ \gdef\npind{J}%
+ \stopletter\@@par\pagebreak\@@par%
+ \immediate\write\@auxout{\string\newlabel{totpage}{{\thepage}{0}}}%
+ \@clear@box%
+ \global\@read@onetrue%
+ \setboolean{@s@b@s}{false}%
+% \end{macrocode}
+% The end of the |doublespace| environment also destroys the
+% settings for the page headers (except for the the first page, which,
+% being global, persists and is not wanted). For that reason, one
+% {\em must} close the spacing environment here, after the
+% |\pagebreak|, rather than earlier.
+%
+% Only the press release uses that environment.
+% \begin{macrocode}
+\ifthenelse{\boolean{@pr@p}}{%
+\ifthenelse{\boolean{@space@d}}{\end{doublespace}}{\end{singlespace}}%
+}{}%
+}% Here we are at the processing of the close of the newlfm env - end
+\def\@make@big@env{%
+ \@nlfm@util=0%
+ \def\ifta{0}%
+ \txa{In @make@big@env}%
+ \txa{Count: \number\@nlfm@addr}%
+ \txa{ZI}%
+ \txa{@aadr@t\number\@nlfm@addr: \csname @aadr@t\number\@nlfm@addr\endcsname}%
+ \txa{To: \csname @aadr@t\number\@nlfm@addr\endcsname,\@adr@to}%
+ \loop \ifnum\@nlfm@util < \@nlfm@addr%
+ \advance\@nlfm@util by1%
+ \def\@onet{\expandafter\csname @aadr@t\number\@nlfm@util\endcsname}%
+ \def\@onef{\expandafter\csname @aadr@f\number\@nlfm@util\endcsname}%
+ \setadrto{\expandafter\csname adr\@onet\endcsname}\txa{ZF}%
+ \setadrfr{\expandafter\csname adr\@onef\endcsname}%
+ \gdef\npind{I}%
+ \newpage%
+ \def\ifta{0}%
+ \gdef\npind{A4}%
+ \setpage{\@stock@height}{\@stock@width}{1in}{1in}{0pt}{0in}{120in}{0in}{0in}%
+ \txa{Actually using the makeenvelope...}%
+ \startlabels%
+ \@capitalizeaddressfalse%
+ \txa{From: \@name@fr}%
+ \txa{To: \@name@to}%
+ \mlabel{\@name@fr \hspace*{.1pt} \\ \@addr@fr \hspace*{.1pt}}%
+ {\@name@to \hspace*{.1pt} \\ \@addr@to \hspace*{.1pt}}%
+ \txa{From: \@name@fr}%
+ \txa{To: \@name@to}%
+ \repeat%
+ \global\@nlfm@addr=0%
+ \txa{Count at end: \number\@nlfm@addr}%
+}%
+\def\@clear@box{%
+\Backgrd{} \backgrd{} \Lfooter{} \Cfooter{} \Rfooter{} \LOfooter{}%
+\COfooter{}\ROfooter{}\lfooter{} \cfooter{} \rfooter{} \Lheader{}%
+\Cheader{} \Rheader{} \LUheader{}\CUheader{}\RUheader{}\lheader{}%
+\cheader{} \rheader{} \Rmargin{} \Lmargin{} \rmargin{} \lmargin{}%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\newcommand{\pgrph}[1]{{\bf #1}}%
+\pagestyle{ltrhead}%
+\pagenumbering{arabic}%
+\raggedbottom%
+\providecommand{\@texttop}{}%
+\DeclareRobustCommand*{\@texttop}{\ifnum\c@page=1\vskip \z@ plus.00006fil\relax\fi}%
+\onecolumn%
+\def\@set@em@up{%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Here we put some information about the pressrelease stuff
+% Much of this is in contravention of the philosophy of newlfm - since
+% it displaces information that might have been placed into the blocks
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\txa{Real start}%
+\ifthenelse{\boolean{@pr@p}}{%
+\PhrMore{\thepage\ of \pageref{LastPage}}%
+\Cfooter{\@more@phr}\cfooter{\@more@phr}%
+}{}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Continue with the stuff for the @set@em@up
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\ifta{0}\txa{Start of @set@em@up}%
+\ifthenelse{\boolean{@set@env}}{\makeenvst\txa{Making envelope}}{}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% First, set the header and footer widths
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthenelse{\boolean{@hl}}{\def\headrulewidth{\the\@Hrw}}%
+ {\setlength{\@Hrw}{0pt}\def\headrulewidth{0pt}}%
+\ifthenelse{\boolean{@fl}}{\def\footrulewidth{\the\@Frw}}%
+ {\setlength{\@Frw}{0pt}\def\footrulewidth{0pt}}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Now, set the contents of the header and footer sections into boxes
+% Boxes can be measured
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\ifta{0}\txa{Here in the middle}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Check the heights and depths of boxes
+% Letterhead header section
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\sbox{\@x@c}{\@Cheader}\sbox{\@x@l}{\@Lheader}\sbox{\@x@r}{\@Rheader}%
+\ifthenelse{\boolean{@Ch@use}}%
+{\settoheight{\@Hgt@H@C}{\strut\usebox{\@x@c}\strut}%
+\settodepth{\@Dth@H@C}{\strut\usebox{\@x@c}\strut}%
+\addtolength{\@Hgt@H@C}{\@Dth@H@C}}{\setlength{\@Hgt@H@C}{0pt}}%
+\ifthenelse{\boolean{@Rh@use}}%
+{\settoheight{\@Hgt@H@R}{\strut\usebox{\@x@r}\strut}%
+\settodepth{\@Dth@H@R}{\strut\usebox{\@x@r}\strut}%
+\addtolength{\@Hgt@H@R}{\@Dth@H@R}}{\setlength{\@Hgt@H@R}{0pt}}%
+\ifthenelse{\boolean{@Lh@use}}%
+{\settoheight{\@Hgt@H@L}{\strut\usebox{\@x@l}\strut}%
+\settodepth{\@Dth@H@L}{\strut\usebox{\@x@l}\strut}%
+\addtolength{\@Hgt@H@L}{\@Dth@H@L}}{\setlength{\@Hgt@H@L}{0pt}}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Check the heights and depths of boxes
+% Non-letterhead header section
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\sbox{\@x@c}{\@cheader}\sbox{\@x@l}{\@lheader}\sbox{\@x@r}{\@rheader}%
+\ifthenelse{\boolean{@ch@use}}%
+{\settoheight{\@Hgt@h@c}{\strut\usebox{\@x@c}\strut}%
+\settodepth{\@Dth@h@c}{\strut\usebox{\@x@c}\strut}%
+\addtolength{\@Hgt@h@c}{\@Dth@h@c}}{\setlength{\@Hgt@h@c}{0pt}}%
+\ifthenelse{\boolean{@rh@use}}%
+{\settoheight{\@Hgt@h@r}{\strut\usebox{\@x@r}\strut}%
+\settodepth{\@Dth@h@r}{\strut\usebox{\@x@r}\strut}%
+\addtolength{\@Hgt@h@r}{\@Dth@h@r}}{\setlength{\@Hgt@h@r}{0pt}}%
+\ifthenelse{\boolean{@lh@use}}%
+{\settoheight{\@Hgt@h@l}{\strut\usebox{\@x@l}\strut}%
+\settodepth{\@Dth@h@l}{\strut\usebox{\@x@l}\strut}%
+\addtolength{\@Hgt@h@l}{\@Dth@h@l}}{\setlength{\@Hgt@h@l}{0pt}}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Check the heights and depths of boxes
+% Letterhead footer section
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\sbox{\@x@c}{\@Cfooter}\sbox{\@x@l}{\@Lfooter}\sbox{\@x@r}{\@Rfooter}%
+\ifthenelse{\boolean{@Cf@use}}%
+{\settoheight{\@Hgt@F@C}{\strut\usebox{\@x@c}\strut}%
+\settodepth{\@Dth@F@C}{\strut\usebox{\@x@c}\strut}%
+\addtolength{\@Hgt@F@C}{\@Dth@F@C}}{\setlength{\@Hgt@F@C}{0pt}}%
+\ifthenelse{\boolean{@Rf@use}}%
+{\settoheight{\@Hgt@F@R}{\strut\usebox{\@x@r}\strut}%
+\settodepth{\@Dth@F@R}{\strut\usebox{\@x@r}\strut}%
+\addtolength{\@Hgt@F@R}{\@Dth@F@R}}{\setlength{\@Hgt@F@R}{0pt}}%
+\ifthenelse{\boolean{@Lf@use}}%
+{\settoheight{\@Hgt@F@L}{\strut\usebox{\@x@l}\strut}%
+\settodepth{\@Dth@F@L}{\strut\usebox{\@x@l}\strut}%
+\addtolength{\@Hgt@F@L}{\@Dth@F@L}}{\setlength{\@Hgt@F@L}{0pt}}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Check the heights and depths of boxes
+% Non-letterhead footer section
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\sbox{\@x@c}{\@cfooter}\sbox{\@x@l}{\@lfooter}\sbox{\@x@r}{\@rfooter}%
+\ifthenelse{\boolean{@ch@use}}%
+{\settoheight{\@Hgt@f@c}{\strut\usebox{\@x@c}\strut}%
+\settodepth{\@Dth@f@c}{\strut\usebox{\@x@c}\strut}%
+\addtolength{\@Hgt@f@c}{\@Dth@f@c}}{\setlength{\@Hgt@f@c}{0pt}}%
+\ifthenelse{\boolean{@rh@use}}%
+{\settoheight{\@Hgt@f@r}{\strut\usebox{\@x@r}\strut}%
+\settodepth{\@Dth@f@r}{\strut\usebox{\@x@r}\strut}%
+\addtolength{\@Hgt@f@r}{\@Dth@f@r}}{\setlength{\@Hgt@f@r}{0pt}}%
+\ifthenelse{\boolean{@lh@use}}%
+{\settoheight{\@Hgt@f@l}{\strut\usebox{\@x@l}\strut}%
+\settodepth{\@Dth@f@l}{\strut\usebox{\@x@l}\strut}%
+\addtolength{\@Hgt@f@l}{\@Dth@f@l}}{\setlength{\@Hgt@f@l}{0pt}}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Determine the height of the letterhead header
+% Note: the minheight will be used to set up the cello window stuff
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\txa{Height of letterhead header}%
+\ifthenelse{\lengthtest{\@Hgt@H@L<\@Hgt@H@C}}%
+{\setlength{\@Hgt@Head}{\@Hgt@H@C}}{\setlength{\@Hgt@Head}{\@Hgt@H@L}}%
+\txa{1) @Hgt@Head: \the\@Hgt@Head,C:\the\@Hgt@H@C,L:\the\@Hgt@H@L,R:\the\@Hgt@H@R}%
+\ifthenelse{\lengthtest{\@Hgt@Head<\@Hgt@H@R}}%
+{\setlength{\@Hgt@Head}{\@Hgt@H@R}}{}%
+\txa{2) @Hgt@Head: \the\@Hgt@Head}%
+\ifthenelse{\lengthtest{\@Hgt@Head<\@Min@Hgt@Head}}%
+{\setlength{\@Hgt@Head}{\@Min@Hgt@Head}}{}%
+\txa{3) @Hgt@Head: \the\@Hgt@Head}%
+\ifthenelse{\lengthtest{\@Hgt@Head<1pt}}%
+{\setlength{\@Hgt@Head}{\@marg@tp}}%
+{%\ifthenelse{\lengthtest{\@marg@tp@a<\@unpr@tp}}%
+%{\setlength{\@marg@tp@a}{\@unpr@tp}}{}%
+\txa{5) @Hgt@Head: \the\@Hgt@Head}%
+\addtolength{\@Hgt@Head}{\@unpr@tp}%
+\txa{6) @Hgt@Head: \the\@Hgt@Head}%
+\addtolength{\@Hgt@Head}{\@marg@tp@a}%
+\txa{7) @Hgt@Head: \the\@Hgt@Head}%
+\addtolength{\@Hgt@Head}{\the\@Hrw+2.60005pt}%
+\ifthenelse{\lengthtest{\@Hrw<2pt}}{\addtolength{\@Hgt@Head}{2.0pt}}{}%
+\txa{8) @Hgt@Head: \the\@Hgt@Head,\the\@Hrw,\headrulewidth}%
+}%
+\txa{Left: \the\@Hgt@H@L, Center: \the\@Hgt@H@C, Right: \the\@Hgt@H@R}%
+\txa{Min: \the\@Min@Hgt@Head, Total: \the\@Hgt@Head}%
+\txa{Marg: \the\@marg@tp, Marga: \the\@marg@tp@a, Unpr: \the\@unpr@tp}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Determine the height of the non-letterhead header
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\txa{Height of non-letterhead header}%
+\ifthenelse{\lengthtest{\@Hgt@h@l<\@Hgt@h@c}}%
+{\setlength{\@Hgt@head}{\@Hgt@h@c}}%
+{\setlength{\@Hgt@head}{\@Hgt@h@l}}%
+\ifthenelse{\lengthtest{\@Hgt@head<\@Hgt@h@r}}%
+{\setlength{\@Hgt@head}{\@Hgt@h@r}}{}%
+\ifthenelse{\lengthtest{\@Hgt@head<\@Min@Hgt@head}}%
+{\setlength{\@Hgt@head}{\@Min@Hgt@head}}{}%
+% \addtolength{\@Hgt@head}{8pt}
+\ifthenelse{\lengthtest{\@Hgt@head<1pt}}%
+{\setlength{\@Hgt@head}{\@marg@tp}}%
+{%\ifthenelse{\lengthtest{\@marg@tp@a<\@unpr@tp}}%
+%{\setlength{\@marg@tp@a}{\@unpr@tp}}{}%
+\addtolength{\@Hgt@head}{\@marg@tp@a}%
+\addtolength{\@Hgt@head}{\the\@hrw+2.60005pt}%
+\ifthenelse{\lengthtest{\@hrw<2pt}}{\addtolength{\@Hgt@head}{2.0pt}}{}%
+}%
+\txa{Left: \the\@Hgt@h@l, Center: \the\@Hgt@h@c, Right: \the\@Hgt@h@r}%
+\txa{Min: \the\@Min@Hgt@head, Total: \the\@Hgt@head}%
+\txa{Marg: \the\@marg@tp, Marga: \the\@marg@tp@a, Unpr: \the\@unpr@tp}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Determine the height of the letterhead footer
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\txa{Height of letterhead footer}%
+\ifthenelse{\lengthtest{\@Hgt@F@L<\@Hgt@F@C}}%
+{\setlength{\@Hgt@Foot}{\@Hgt@F@C}}{\setlength{\@Hgt@Foot}{\@Hgt@F@L}}%
+\ifthenelse{\lengthtest{\@Hgt@Foot<\@Hgt@F@R}}%
+{\setlength{\@Hgt@Foot}{\@Hgt@F@R}}{}%
+\ifthenelse{\lengthtest{\@Hgt@Foot<\@Min@Hgt@Foot}}%
+{\setlength{\@Hgt@Foot}{\@Min@Hgt@Foot}}{}%
+\ifthenelse{\lengthtest{\@Hgt@Foot<1pt}}%
+{\setlength{\@Hgt@Foot}{\@marg@bt}}%
+{\ifthenelse{\lengthtest{\@marg@bt@b<\@unpr@bm}}%
+{\setlength{\@marg@bt@b}{\@unpr@bm}}{}%
+\addtolength{\@Hgt@Foot}{\@marg@bt@a}}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Determine the height of the non-letterhead footer
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\txa{Height of non-letterhead footer}%
+\ifthenelse{\lengthtest{\@Hgt@f@l<\@Hgt@f@c}}%
+{\setlength{\@Hgt@foot}{\@Hgt@f@c}} {\setlength{\@Hgt@foot}{\@Hgt@f@l}}%
+\ifthenelse{\lengthtest{\@Hgt@foot<\@Hgt@f@r}}%
+{\setlength{\@Hgt@foot}{\@Hgt@f@r}}{}%
+\ifthenelse{\lengthtest{\@Hgt@foot<\@Min@Hgt@foot}}%
+{\setlength{\@Hgt@foot}{\@Min@Hgt@foot}}{}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Check the under boxes here
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\setboolean{@ztila}{false}
+\ifthenelse{\boolean{@LUh@use}}{\txa{zorth}\sbox{\@hblk@aa}{\@LUheader}%
+\setboolean{@hblk@a}{true}\setboolean{@ztila}{true}}{}%
+\ifthenelse{\boolean{@CUh@use}}{\txa{zorth}\sbox{\@hblk@ab}{\@CUheader}%
+\setboolean{@hblk@a}{true}\setboolean{@ztila}{true}}{}%
+\ifthenelse{\boolean{@RUh@use}}{\txa{zorth}\sbox{\@hblk@ac}{\@RUheader}%
+\setboolean{@hblk@a}{true}\setboolean{@ztila}{true}}{}%
+\ifthenelse{\boolean{@ztila}}
+{\ifthenelse{\lengthtest{\@hblk@a@aft<\@marg@tp@b}}
+{\setlength{\@hblk@a@aft}{\@marg@tp@b}}{}
+\setlength{\@marg@tp@b}{0pt}}{}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Set the printable length as the difference of all those others
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthenelse{\lengthtest{\@marg@lt@tp@d<1pt}}%
+{\setlength{\@marg@lt@tp@d}{\@Hgt@Head+\@marg@tp@a}}{}%
+%\addtolength{\@Hgt@Head}{1pt}%
+%\addtolength{\@Hgt@head}{1pt}%
+\setlength{\@Plg}{\paperheight-\@Hgt@Head-\@Hgt@Foot-\@marg@tp@b-\@marg@tp@a-%
+\@marg@bt@a-\@marg@bt@b-\@f@f-\footrulewidth-\headrulewidth}%
+\setlength{\@plg}{\paperheight-\@Hgt@head-\@Hgt@foot-\@marg@tp@b-\@marg@tp@a-%
+\@marg@bt@a-\@marg@bt@b-\@f@f-\footrulewidth-\headrulewidth}%
+\ifthenelse{\lengthtest{\@text@height>.1pt}}{\setlength{\@Plg}{\@text@height}}{}%
+\ifthenelse{\boolean{@Bg@use}}{\AddToShipoutPicture*{\@Backgrd}}{}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Print feedback if requested
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\ifta{0}%
+\txa{\string\@Hgt@H@C: \the\@Hgt@H@C, \string\@Hgt@H@R: \the\@Hgt@H@R}%
+\txa{\string\@Hgt@H@L: \the\@Hgt@H@L, \string\@Hgt@Head: \the\@Hgt@Head}%
+\txa{\string\@Hgt@h@c: \the\@Hgt@h@c, \string\@Hgt@h@r: \the\@Hgt@h@r}%
+\txa{\string\@Hgt@h@l: \the\@Hgt@h@l, \string\@Hgt@head: \the\@Hgt@head}%
+\txa{\string\@Hgt@F@C: \the\@Hgt@F@C, \string\@Hgt@F@R: \the\@Hgt@F@R}%
+\txa{\string\@Hgt@F@L: \the\@Hgt@F@L, \string\@Hgt@Foot: \the\@Hgt@Foot}%
+\txa{\string\@Hgt@f@c: \the\@Hgt@f@c, \string\@Hgt@f@r: \the\@Hgt@f@r}%
+\txa{\string\@Hgt@f@l: \the\@Hgt@f@l, \string\@Hgt@foot: \the\@Hgt@foot}%
+\txa{\string\@Plg:\the\@Plg, \string\paperheight:\the\paperheight}%
+\txa{\string\@Hgt@Head:\the\@Hgt@Head, \string\@Hgt@head:\the\@Hgt@head}%
+\txa{\string\@f@f:\@f@f,\string\footskip:\the\footskip}%
+\txa{\string\@Hgt@foot:\the\@Hgt@Foot, \string\baselineskip:\the\baselineskip}%
+\txa{\string\@plg:\the\@plg, \string\paperheight:\the\paperheight}%
+\txa{\string\@Hgt@foot:\the\@Hgt@Foot, \string\baselineskip:\the\baselineskip}%
+\txa{\string\@Hgt@foot:\the\@Hgt@Foot}%
+\txa{\string\voffset:\the\voffset, \string\headsep:\the\headsep}%
+\txa{\string\footruleskip:\footruleskip, \string\footrulewidth:\footrulewidth}%
+\def\ifta{0}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Now set widths
+% Set margins to defaults, or to set values
+% If there marginal notes, set margins to 0in
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthenelse{\boolean{@marg@Luse}}%
+{\txa{Setting up left column...}%
+\settowidth{\@utile}{\@Lmarg}%
+\txa{Lt column width:\the\@utile}
+\ifthenelse{\lengthtest{\@unpr@lt>\@marg@lt@l}}{\setlength{\@marg@lt@l}{\@unpr@lt}}%
+{\addtolength{\@marg@lt@l}{\@unpr@lt}}%
+\addtolength{\@utile}{\@marg@lt@l}%
+\setlength{\marginparwidth}{\@utile}%
+\setlength{\marginparsep}{\@marg@lt@r}%
+\setlength{\@marg@lt}{\@utile}%
+% \addtolength{\@marg@lt}{\@marg@lt@r}%
+\txa{Lt Column width+edge:\the\@util,\the\@marg@lt@l}%
+\txa{\string\@util:\the\@util, width:\the\marginparwidth,sep:\the\marginparsep}%
+\ifthenelse{\lengthtest{\@marg@lt@tp@d<1pt}}{\setlength{\@marg@lt@tp@d}{\@Hgt@Head}}{}%
+\txa{Done!}
+}%
+{%
+\setlength{\marginparsep}{0in}%
+\setlength{\marginparwidth}{0in}%
+\ifthenelse{\lengthtest{\@unpr@lt>\@marg@lt}}{\setlength{\@marg@lt}{\@unpr@lt}}{}%
+}%
+\ifthenelse{\boolean{@marg@Ruse}}%
+{%
+\txa{Setting up right column...}%
+\settowidth{\@utile}{\@Rmarg}%
+\txa{Rt Column width:\the\@utile}%
+\ifthenelse{\lengthtest{\@marg@rt@l<.01pt}}{\setlength{\@marg@rt@l}{\@marg@lt@r}}{}%
+\ifthenelse{\lengthtest{\@marg@rt@r<.01pt}}{\setlength{\@marg@rt@r}{\@marg@lt@l}}{}%
+\txa{Unpr Rt:\the\@unpr@rt,Marg Rt R:\the\@marg@rt@r}
+\ifthenelse{\lengthtest{\@unpr@rt>\@marg@rt@r}}{\setlength{\@marg@rt@r}{\@unpr@rt}}{}%
+\txa{Unpr Rt:\the\@unpr@rt,Marg Rt R:\the\@marg@rt@r}%
+\addtolength{\@utile}{\@marg@rt@r}%
+\txa{Rt Column width+gutter:\the\@utile}%
+\addtolength{\@utile}{\@marg@rt@l}%
+\txa{Rt Column width+edge:\the\@utile}%
+%setlength{\marginparwidth}{\@utile}%
+%setlength{\marginparsep}{\@marg@rt@l}%
+\setlength{\@marg@rt}{\@utile}%
+\txa{\string\@util:\the\@util, \string\marginparwidth:\the\marginparwidth}%
+\ifthenelse{\lengthtest{\@marg@rt@tp@d<1pt}}%
+ {\setlength{\@marg@rt@tp@d}{\@Hgt@Head}}{}%
+\txa{Done!}%
+}%
+{%
+\txa{No right column}%
+\ifthenelse{\lengthtest{\@unpr@rt>\@marg@rt}}{\setlength{\@marg@rt}{\@unpr@rt}}{}%
+\ifthenelse{\lengthtest{\@unpr@rt>\@marg@rt}}{\setlength{\@marg@rt}{\@unpr@rt}}{}%
+}%
+% \ifthenelse{\lengthtest{\@unpr@rt>\@marg@rt}}{\setlength{\@marg@rt}{\@unpr@rt}}{}%
+\setlength{\@Pwd}{\paperwidth-\@marg@lt-\@marg@rt}%
+\txa{Page width:\the\@Pwd,paper:\the\paperwidth}%
+\txa{\string\@Hgt@H@C:\the\@Hgt@H@C, width:\the\marginparwidth,sep:\the\marginparsep}%
+\ifthenelse{\lengthtest{\@text@width>.1pt}}{\setlength{\@Pwd}{\@text@width}}{}%
+\showdim{At raggedbottom}%
+\raggedbottom%
+\def\ifta{0}%
+\showdim{Before setpage}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Now set dimensions of all page lengths
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\txa{\string\@marg@tp@a:\the\@marg@tp@a,\string\@Hgt@Head:\the\@Hgt@Head}%
+\txa{\string\@marg@tp@b:\the\@marg@tp@b,\string\@Hgt@Foot:\the\@Hgt@Foot}%
+\txa{\string\@marg@bt@a:\the\@marg@bt@a,\string\@Hgt@Head:\the\@Hgt@Head}%
+\txa{\string\@marg@bt@b:\the\@marg@bt@b,\string\@Hgt@Foot:\the\@Hgt@Foot}%
+\txa{\string\@unpr@bm:\the\@unpr@bm,\string\@unpr@tp:\the\@Hgt@Foot}%
+\txa{Before Setting page 1}%
+\settoheight{\@utile}{\@Rheader}%
+\settodepth{\@utilb}{\@Rheader}%
+\addtolength{\@utile}{\@utilb}%
+\txa{Right: \the\@utile}%
+\settoheight{\@utile}{\@Cheader}%
+\settodepth{\@utilb}{\@Cheader}%
+\addtolength{\@utile}{\@utilb}%
+\txa{Center: \the\@utile}%
+\settoheight{\@utile}{\@Lheader}%
+\settodepth{\@utilb}{\@Lheader}%
+\addtolength{\@utile}{\@utilb}%
+\txa{Left: \the\@utile}%
+\gdef\npind{A5}%
+\txa{Plg:\the\@Plg,Pwd:\the\@Pwd,marg@rt:\the\@marg@rt,marg@lt:\the\@marg@lt}
+\txa{marg@tp@a:\the\@marg@tp@a,Hgt@head:\the\@Hgt@head,marg@tp@b:\the\@marg@tp@b,Hgt@foot:\the\@Hgt@foot}
+\setpage{\@Plg}{\@Pwd}{\@marg@rt-1in}{\@marg@lt-1in}{10pt}%
+{\@marg@tp@a-1in}{\@Hgt@Head}{\@marg@tp@b}{\@Hgt@Foot}%
+\ifthenelse{\lengthtest{\@Hgt@head<10pt}}{\setlength{\@Hgt@head}{13pt}}{}%
+\txa{After Setting page 1}%
+\fixhh{\@Hgt@head}%
+\fixth{\@plg}%
+\showdim{After setpage}%
+\setlength{\headwidth}{\textwidth}%
+\def\ifta{0}%
+\ifthenelse{\boolean{@cello@win}} {
+\setlength{\@utila}{\@cello@d}%
+\txa{1. \the\@utila}
+\addtolength{\@utila}{-\@Hgt@Head}%
+\txa{2. \the\@utila,\the\@Hgt@Head}%
+\addtolength{\@utila}{-\@marg@tp@a}%
+\txa{3. \the\@utila,\the\@marg@tp@a}
+\addtolength{\@utila}{-\@marg@tp@b}%
+\txa{4. \the\@utila,\the\@marg@tp@b}
+\ifthenelse{\boolean{@dt@p}}{\txa{Fixing date}
+\ifthenelse{\@intd@pos<\@intt@pos}{%
+\addtolength{\@utila}{-\@dt@sk@b}%
+\txa{5. \the\@utila,\the\@dt@sk@b}
+\addtolength{\@utila}{-\@dt@sk@a}%
+\txa{6. \the\@utila,\the\@dt@sk@a}
+\settoheight{\@utile}{\@xdate}
+\addtolength{\@utila}{-\@utile}%
+\txa{7. \the\@utila,\the\@utile}
+}{}}{}%
+\ifthenelse{\boolean{@af@p}}{\txa{Fixing from address}
+\ifthenelse{\@intf@pos<\@intt@pos}{%
+\addtolength{\@utila}{-\@addr@fr@sk@b}%
+\addtolength{\@utila}{-\@addr@fr@sk@a}%
+\sbox{\b@addr@fr}{\noindent\setlength{\tabcolsep}{0pt}% Address-from into a box
+\raggedleft\begin{tabular}{l@{}}%
+\noindent\ignorespaces\@addr@fr%
+\ifthenelse{\boolean{@addr@fr@t}}{\\ \@phn@phr: \@phn@fr}{}%
+\ifthenelse{\boolean{@addr@fr@f}}{\\ \@fax@phr: \@fax@fr}{}%
+\ifthenelse{\boolean{@addr@fr@e}}{\\ \@email@phr: \@email@fr}{}%
+\end{tabular}}%
+\settoheight{\@utile}{\usebox{\b@addr@fr}}%
+\addtolength{\@utila}{-\@utile}%
+\txa{8. \the\@utila,\the\@utile}
+\sbox{\b@addr@fr}{\noindent\setlength{\tabcolsep}{0pt}% Address-from into a box
+\raggedleft\begin{tabular}{l@{}}%
+\noindent\ignorespaces\@addr@fr%
+\ifthenelse{\boolean{@addr@fr@t}}{\\ \@phn@phr: \@phn@fr}{}%
+\ifthenelse{\boolean{@addr@fr@f}}{\\ \@fax@phr: \@fax@fr}{}%
+\ifthenelse{\boolean{@addr@fr@e}}{\\ \@email@phr: \@email@fr}{}%
+\end{tabular}}%
+}{}}{}%
+\txa{9. \the\@utila}
+\setlength{\@utilb}{\@cello@l}%
+\txa{10. Horizontal position}
+\txa{11. Start: \the\@utilb}
+\addtolength{\@utilb}{-\@marg@lt}%
+\txa{12. \the\@utilb,\the\@marg@lt}
+\txa{13. \the\@utilb}
+\ifthenelse{\lengthtest{\@utila > 0pt}}{\setboolean{@ztila}{true}}
+{\typeout{Cello window requested, but cannot be used.}
+ \typeout{'To-address' cannot be placed vertically. Suggestions:}
+ \typeout{1. Make letterhead components smaller.}
+ \typeout{2. Eliminate date or 'from-address' from letter.}
+ \typeout{3. Move date or 'from-address' below 'to-address'.}
+ \setboolean{@ztila}{false}%
+}
+\ifthenelse{\lengthtest{\@utilb > 0pt}}{\setboolean{@ztilb}{true}}
+{\typeout{Cello window requested, but cannot be used.}
+ \typeout{'To-address' cannot be placed horizontally. Suggestions:}
+ \typeout{1. Make left-margin width smaller.}
+ \typeout{2. Eliminate margin components.}
+ \setboolean{@ztilb}{false}%
+}
+\ifthenelse{\boolean{@ztila} \and \boolean{@ztilb}}{
+\setlength{\@addr@to@sk@b}{\@utila}
+\setlength{\@extr@hor}{\@utila}}{}
+}{\setboolean{@cello@win}{false}\setlength{\@extr@hor}{0pt}}%
+\def\ifta{0}%
+\txa{End of @set@em@up}%
+}%
+\newif \if@dim@reset \@dim@resettrue%
+\newif \if@repth \@repthfalse%
+\newcommand{\@rep@th}{}%
+\newcommand{\fixth}[1]{\renewcommand{\@rep@th}{#1} \global\@repthtrue}%
+\newdimen \@rep@th%
+\newif \if@reptw \@reptwfalse%
+\newcommand{\@rep@tw}{}%
+\newcommand{\fixtw}[1]{\renewcommand{\@rep@tw}{#1} \global\@reptwtrue}%
+\newdimen \@rep@tw%
+\newif \if@repom \@repomfalse%
+\newcommand{\@rep@om}{}%
+\newcommand{\fixom}[1]{\renewcommand{\@rep@om}{#1} \global\@repomtrue}%
+\newdimen \@rep@om%
+\newif \if@repem \@repemfalse%
+\newcommand{\@rep@em}{}%
+\newcommand{\fixem}[1]{\renewcommand{\@rep@em}{#1} \global\@repemtrue}%
+\newdimen \@rep@em%
+\newif \if@repcs \@repcsfalse%
+\newcommand{\@rep@cs}{}%
+\newcommand{\fixcs}[1]{\renewcommand{\@rep@cs}{#1} \global\@repcstrue}%
+\newdimen \@rep@cs%
+\newif \if@reptm \@reptmfalse%
+\newcommand{\@rep@tm}{}%
+\newcommand{\fixtm}[1]{\renewcommand{\@rep@tm}{#1} \global\@reptmtrue}%
+\newdimen \@rep@tm%
+\newif \if@rephh \@rephhfalse%
+\newcommand{\@rep@hh}{}%
+\newcommand{\fixhh}[1]{\renewcommand{\@rep@hh}{#1} \global\@rephhtrue}%
+\newdimen \@rep@hh%
+\newif \if@rephs \@rephsfalse%
+\newcommand{\@rep@hs}{}%
+\newcommand{\fixhs}[1]{\renewcommand{\@rep@hs}{#1} \global\@rephstrue}%
+\newdimen \@rep@hs%
+\newif \if@repfs \@repfsfalse%
+\newcommand{\@rep@fs}{}%
+\newcommand{\fixfs}[1]{\renewcommand{\@rep@fs}{#1} \global\@repfstrue}%
+\newdimen \@rep@fs%
+%
+\def\@outputpage{%
+ \def\ifta{0}%
+ \txa{npind:\npind}%
+ \showdim{New page - before shipout}%
+ \begingroup% % the \endgroup is put in by \aftergroup
+ \let \protect \noexpand
+ \@resetactivechars
+ \global\let\@@if@newlist\if@newlist
+ \global\@newlistfalse
+ \@parboxrestore
+\txa{topmargin:\the\topmargin}
+\txa{Before shipout...}
+ \showdim{New page - immediately before shipout}
+ \shipout \vbox{%
+ \set@typeset@protect
+ \aftergroup \endgroup
+ \aftergroup \set@typeset@protect% correct? or just restore by ending the group
+ \if@specialpage
+ \global\@specialpagefalse\@nameuse{ps@\@specialstyle}%
+ \fi
+ \if@twoside
+ \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot
+ \let\@themargin\oddsidemargin
+ \else \let\@thehead\@evenhead
+ \let\@thefoot\@evenfoot \let\@themargin\evensidemargin
+ \fi
+ \fi
+ \reset@font
+ \normalsize
+\txa{Before normalsfcodes}
+ \normalsfcodes
+ \let\label\@gobble
+ \let\index\@gobble
+ \let\glossary\@gobble
+ \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@
+ \@begindvi
+ \vskip \topmargin
+ \moveright\@themargin \vbox {%
+ \setbox\@tempboxa \vbox to\headheight{%
+ \vfil
+ \color@hbox
+ \normalcolor
+ \hb@xt@\textwidth{\@thehead}%
+ \color@endbox
+ }% %% 22 Feb 87
+ \dp\@tempboxa \z@
+ \box\@tempboxa
+ \vskip \headsep
+ \box\@outputbox
+ \baselineskip \footskip
+ \color@hbox
+ \normalcolor
+ \hb@xt@\textwidth{\@thefoot}%
+ \color@endbox
+ }%
+ }%
+\txa{After shipout}
+\global\let\if@newlist\@@if@newlist
+\showdim{New page - before reset}
+\if@dim@reset
+\if@repth \global\textheight \@rep@th \global\@repthfalse \fi
+\fi
+\global \@colht \textheight
+\stepcounter{page}%
+\let\firstmark\botmark
+\if@dim@reset
+\if@repth \global\textheight \@rep@th \global\@repthfalse \fi
+\if@reptw \global\textwidth \@rep@tw \global\@reptwfalse \fi
+\if@repom \global\oddsidemargin \@rep@om \global\@repomfalse \fi
+\if@repem \global\evensidemargin \@rep@em \global\@repemfalse \fi
+\if@repcs \global\columnsep \@rep@cs \global\@repcsfalse \fi
+\if@reptm \global\topmargin \@rep@tm \global\@reptmfalse
+\txa{Fixing tm} \fi
+\if@rephh \global\headheight \@rep@hh \global\@rephhfalse \fi
+\if@rephs \global\headsep \@rep@hs \global\@rephsfalse \fi
+\if@repfs \global\footskip \@rep@fs \global\@repfsfalse \fi
+\fi
+\showdim{New page - after reset}
+\def\ifta{0}%
+\renewcommand{\headrulewidth}{\the\@Hrw}
+\renewcommand{\footrulewidth}{\the\@Frw}
+}
+\AtEndDocument{%
+\ifthenelse{\boolean{@set@env}}%
+{\@clear@box%
+\pagestyle{empty}\thispagestyle{empty}%
+\def\ifta{0}%
+\showdim{Before changeing dimensions}%
+\gdef\npind{A6}%
+\setpage{\@stock@height}{\@stock@width}{-1in}{-1in}{0in}{-1in}{0in}{0in}{0in}%
+\txa{Starting the call to makeenvfn}%
+\makeenvfn%
+\txa{After return from the call to makeenvfn}%
+}{}%
+\ifthenelse{\boolean{@use@envlab}}{\@make@big@env}{}%
+}%
+\AtBeginDocument{
+\def\ifta{0}%
+\txa{AtBeginDocument...}
+\@nlfm@addr=0
+\ifthenelse{\boolean{@use@envlab}}
+{
+\IfFileExists{envlab.sty}
+{\makelabels}
+{\typeout{The option <useenvlab> was issued. File <envlab.sty> cannot be found.}
+\typeout{Option <useenvlab> is disabled. Please install envlab system.}
+\setboolean{@use@envlab}{false}}}{}
+{}
+\txa{At the very very end...}
+}
+\endinput%
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/Master/texmf-dist/source/latex/newlfm/newlfm.ins b/Master/texmf-dist/source/latex/newlfm/newlfm.ins
new file mode 100644
index 00000000000..9d3f1b078c4
--- /dev/null
+++ b/Master/texmf-dist/source/latex/newlfm/newlfm.ins
@@ -0,0 +1,55 @@
+%%
+%% This file will generate fast loadable files and documentation
+%% driver files from the file `newlfm.cls' in this package when run through
+%% LaTeX or TeX.
+%%
+%% Copyright 1998 Paul A. Thompson
+%%
+%% IMPORTANT NOTICE:
+%%
+%% You are not allowed to change this file.
+%%
+%% If you do change the file, you must change the name.
+%
+% -----------------------------------------------------------------
+%%
+%% ---- Start of docstrip commands
+%%
+\input docstrip
+\preamble
+\endpreamble
+\keepsilent
+\askforoverwritefalse
+\Msg{*** Generating newlfm class file ***}
+\generate{\file{newlfm.cls}{\from{newlfm.dtx}{package}}}
+\generate{\file{addrset.sty}{\from{newlfm.dtx}{addrset}}}
+\generate{\file{setdim.sty}{\from{newlfm.dtx}{setdim}}}
+\ifToplevel{
+\Msg{***********************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* files into a directory searched by TeX:}
+\Msg{*}
+\Msg{* \space\space newlfm.cls}
+\Msg{* \space\space addrset.sty}
+\Msg{* \space\space setdim.sty}
+\Msg{*}
+\Msg{* This should be either the main install tree (if done automatically)}
+\Msg{* or the local tree (if done by user separately).}
+\Msg{*}
+\Msg{* Prefered location: root/tex/latex/newlfm}
+\Msg{*}
+\Msg{* After moving the files to the location, register the new files using}
+\Msg{* the installation configuration utility.}
+\Msg{*}
+\Msg{* To produce the documentation run the file `newlfm.dtx'}
+\Msg{* through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{***********************************************************}
+}
+
+\endbatchfile
+
+
+