% make-env.tex
%
% J. Daniel Smith
% 12 January 1990
%
% Print an address on an envelope according to strict USPS standards.
%
% Usage:
%   Place the address in  a file with an extension of .adr.  The
%   address is set with the \setaddress command, and \\ is used to
%   break lines.  The \setattn command can be used if desired to
%   direct the letter to someones attention.
%
%   Since this file is also ususally included into a letter, it is
%   also an easy spot to set other things that pertain to the letter
%   itself such as \firstname, etc.
%
%   These macros use the "landscape" \special of dvips.  The exact
%   syntax for other drivers might be slightly different.
%
% Bugs:
%   The \fontdimen parameters aren't restored after the address is
%   set, so the Attn: line also uses the strict USPS spacing which I
%   don't think is really necesary.  The paremeters should be reset so
%   that the Attn: line will look better.
%
% various macros for setting up the information to appear on the
% envelope.  These are place in the lettermac.tex file so that the
% same .adr file can be used with both letters and envelopes.  The
% ones of primary importance for envelopes are \setaddress and \attn
%
\input lettermac 
\input zip   % ZIP code barcodes. This *must* be after lettermac.tex
%
% Hacks to get the size of the envelope right.  These are for a legal
% size envelope.  
\hsize=9.5true in\hoffset=0.5true in
\vsize=4.125true in\voffset=1.1875true in
%
\special{landscape}   % envelopes are printed in landscape mode
%
% The USPS has very specific guidelines about printing the address on
% an envelope.  Of course, they will take just about anything, but
% they like it if the address is in ALL CAPS with no punctuation.
% 10 point Helvetica (cmss) is one of the recommended fonts with a
% 14 point baseline.  If you want to override the default setting, the
% \envfont can be specified in the .adr file.
\font\envfont=cmss10 at 10.95true pt  % cmss10 is smaller than 10pt Helvetica
%\font\envfont=helv at 10true pt    % PostScript font Helvetica
\baselineskip=14true pt
%
% Remove punctuation.  This is done by making the punctuation 
% characters to be TeX's ignored characters.
% Hopefully setting TeX's font parameters right will increase the
% interword spaces to the 1em that the USPS likes.
%
% the \catcodes have to be set before the address is read in, since once it is
% read in, the \catcodes are fixed and can not be changed.
\catcode`.=9 \catcode`,=9    % 9 = ignored character
% read in the address
\getaddress{Letter address file}
% restore the \catcodes changed above
\catcode`\.=12 \catcode`\,=12
%
% uppercase the address (from page 331 of the TeXbook) to make it the
% way the USPS likes it.  \Xaddress where the lettermac macros store
% the address when it is read in.
\def\next#1\endname{\uppercase{\def\Xaddress{#1}}}
\expandafter\next\Xaddress\endname
%
%% for testing....
%%\vbox to \vsize{\hrule
%%                \centerline{top}
%%                \vfil
%%                \centerline{\vrule left\hfill right\vrule}
%%                \vfil
%%                \centerline{bottom}
%%                \hrule}
%%\eject\end
%
% put the address on the envelope in the correct font.
% The USPS wants the address in a box that extends from 5/8" from the
% bottom of the envelope to 2 1/4" from the bottom.  This works out to
% be 1.625 inches total.  With the font and baseline skip defined above,
% this is more than 8 lines (9 is too many).
%
% \leftline{\returnaddress}  % some type of return address
\ \vfil % fill up with blank space
\vbox to 2.25true in{
\vbox to 1.625true in{\envfont\leftskip=4.5true in 
                      % the \fontdimen parameters need to be changed
		      % here in case a different \envfont has been
		      % loaded.
		      \fontdimen6\envfont=10true pt  % size of an em
		      \fontdimen2\envfont=10true pt  % interword space
		      \fontdimen3\envfont=1true pt   % interword stretch
		      \fontdimen4\envfont=1true pt   % interword shrink
		      \fontdimen7\envfont=0pt        % extra space
		      % the address
		      \address\vfil}
%
% The USPS wants the start of the barcode no further than 4" from the
% right edge of the envelope and no less than than 3 1/4".  It
% prefers between 3 7/8" and 4".  In addition it must be 1/4" up
% from the bottom (plus/minus 1/16"). This 0.25" is provided by the
% Attn: line below. 
\vfil
\rightline{\hbox to 4true in{\box\zipbarcode\hfil}}
%
% The \attn line if used.  This is also set in the \envfont so
% that everything will be consistant (except perhaps the return
% address, but that should follow the format of the letterhead.)
% This is put in a 0.25in \vbox, so that the barcode will be up 0.25
% in from the bottom of the envelope.
\vbox to 0.25true in{\vfil\leftline{\envfont\enspace\Xattn}\vskip0.1true in}
} % \vbox to 2.25true in
\eject\end % not \bye, it has a \vfill in it

.
