home *** CD-ROM | disk | FTP | other *** search
/ Education Sampler 1992 [NeXTSTEP] / Education_1992_Sampler.iso / Mathematics / TeX / TeXsis-2.15 / TXSletr.tex < prev    next >
Text File  |  1992-08-04  |  11KB  |  246 lines

  1. % file: TXSletr.tex                              TeXsis version 2.15
  2. % $Revision: 15.2 $  :  $Date: 92/06/18 13:15:13 $  :  $Author: paige $
  3. %======================================================================*
  4. % LETTER FORMAT                                   E. Myers and F.E. Paige
  5. %
  6. %       Format for typing simple business letters.  Taken almost verbatim 
  7. %  from The TeXbook, but modified to be a TeXsis "layout".
  8. %
  9. %-----------------------------------------------------------------------
  10. %       The following format is appropriate for use with TeXsis and BNL 
  11. % stationary. It can easily be adopted for other stationary or even for 
  12. % use outside of TeXsis; simply replace the \letter command with the
  13. % proper initialization followed by \LetterFormat and use \letterhead or
  14. % \phoneletterhead.
  15. %
  16. %       \letter                         % initialize TeXsis and letter format
  17. %       \letterhead{xxxx}               % xxxx is BNL extension
  18. %       \address                        % get address in box
  19. %               <name and address>      % line endings are respected
  20. %       \body                           % begin text of letter
  21. %       Dear whoever,
  22. %
  23. %               <text of your letter>
  24. %
  25. %       \closing                        % begin closing
  26. %       Sincerely yours,                % or whatever, indented
  27. %       Your Name                       % indented, followed by a space
  28. %       Your Title                      % optional additional line(s)
  29. %       \annotations                    % initials, enclosures, etc.
  30. %               <text>                  % can also use \ps
  31. %       \cc <name>                      % carbon copies
  32. %           <name>                      % to more than one person
  33. %       \bye                            % end of letter
  34. %
  35. % -----------------------------------------------------------------------
  36. \message{Letter Format.}
  37.  
  38. %       dimensions, counters, and boxes: \hdimphone and \vdimphone are the 
  39. % positions relative to the page edge -- not the print boundaries -- of the 
  40. % telephone number in \phoneletterhead. They are correct here for BNL 
  41. % stationary. Similarly, \hdimdate and \vdimdate are the positions for the
  42. % date. These can be changed in TXSsite.tex to fit other stationary with 
  43. % a generally similar format.   
  44.  
  45. \newdimen\headlineoffset        \headlineoffset = 0.25 truein
  46. \newdimen\longindent            \longindent = 3.5 truein
  47.  
  48. \newdimen\hdimphone             \hdimphone = 6.2truein
  49. \newdimen\vdimphone             \vdimphone = 1.9truein
  50. \newdimen\hdimdate              \hdimdate = 5.5truein
  51. \newdimen\vdimdate              \vdimdate = 2.15truein
  52.  
  53. \newskip\bigletterskip
  54. \bigletterskip=1.0truein plus 1.0truein minus .75truein
  55.  
  56. \newbox\theaddress                      % to collect the address in
  57.  
  58. % -----------------------------------------------------------------------
  59. %       Initialization. \LetterFormat is called by \letter but can also be
  60. % called separately.
  61.  
  62. \def\LetterFormat{%                     %
  63.    \nopagenumbers                       % kill page numbers
  64.    \singlespaced                        % letters always begin \singlespaced
  65.    \quoteon                             % automatic open/close quotes
  66.    \longindent=3.5truein                % indentation for signature
  67.    \headline={\LetterHeadline}%         % running headline has addressee
  68.    \let\endmode=\par                    % start with this for \endmode
  69.    \let\body=\letterbody                % \body begins text of letter
  70.    \let\text=\letterbody                % \text is synonym
  71.    \let\date=\letterdate                % \date puts date on top of letter
  72.    \let\cc=\ccletr                      % carbon copy for letter
  73.    \def\addressee{\relax}%              % start with no addressee
  74. }
  75.  
  76. \def\Letter{%   document format for letters
  77.    \ContentsSwitchfalse                         % no table of contents
  78.    \refswitchfalse                              % no reference list
  79.    \auxswitchfalse                              % no forward references
  80.    \texsis                                      % initialize
  81.    \singlespaced                                % single space default
  82.    \LetterFormat}                               % Setup using \LetterFormat
  83.  
  84. \def\letter{\Letter}                            % synonym
  85.  
  86.  
  87. \def\LetterHeadline{%                   % headline for extra pages
  88.    \ifnum\pageno>1                      % headline placement and spacing
  89.       \ifx\addressee\relax\relax        % no addressee, so
  90.          {\tenrm\today\hfil Page \folio}% date and page
  91.       \else                             % otherwise addressee, date, page
  92.          {\tenrm\addressee\hfil\today\hfil Page \folio}%
  93.       \fi                       
  94.    \else\hfil\fi}                       % but nothing on page 1
  95.                                 
  96. %       \LetterWidth adjusts the width of the letter to allow long or
  97. % short letters to be fit nicely on the page.
  98.                                 
  99. \def\LetterWidth#1{%                    % set width for letter
  100.    \hsize=#1                            % set \hsize
  101.    \dimen0=#1                           % calculate horizontal shift ...
  102.    \advance \dimen0 by -6.5truein       % subtract default
  103.    \divide \dimen0 by 2                 % 
  104.    \advance \hoffset by -\dimen0        % center letter
  105.    \advance \longindent by \dimen0      % adjust closing
  106. }
  107.  
  108. \def\letterwidth{\LetterWidth}          % synonym
  109.  
  110.  
  111. \def\endletter{%\obsolete\endletter\bye  %
  112.     \endmode\vfil\eject\end} % to end a letter  
  113.  
  114. %-----------------------------------------------------------------------
  115. %       \today gives today's date. This is redundant in TeXsis but is 
  116. % included for completeness.
  117.  
  118. \def\today{\number\day\ 
  119.     \ifcase\month\or 
  120.     January\or February\or March\or April\or May\or June\or
  121.     July\or August\or September\or October\or November\or December\fi\
  122.     \number\year}
  123.  
  124. %-----------------------------------------------------------------------
  125. %   \beginlinemode ends the previous mode and starts a mode where 
  126. % \obeylines is in effect.  
  127.  
  128. \def\beginlinemode{\endmode\begingroup\parindent=0pt\parskip=0pt
  129.      \obeylines\def\endmode{\par\endgroup}}
  130.  
  131.  
  132. %  \beginparmode ends the previous mode and starts a mode where lines 
  133. % are concatenated.
  134.  
  135. \def\beginparmode{\endmode\begingroup\parskip=\medskipamount 
  136.    \def\endmode{\par\endgroup}}
  137.  
  138. %-----------------------------------------------------------------------
  139. %       \address gets the address in a box, as well as printing it at the 
  140. % top of the letter.  Line endings are respected here. The first line after 
  141. % \address is the \addressee, which is used in the heading on all pages 
  142. % after the first.
  143.  
  144. \def\address{%                  %
  145.    \vskip\bigletterskip         % skip down for address
  146.    \beginlinemode               % look for line ends in address 
  147.    \getaddress}                 % and get address
  148.  
  149. {\obeylines\gdef\getaddress #1
  150.    #2
  151.    {#1\gdef\addressee{#2}%
  152.       \global\setbox\theaddress=\vbox\bgroup
  153. %%%NOT \longindent      \hsize=\longindent 
  154.       \parskip=0pt
  155.       #2
  156.    \def\endmode{\egroup\endgroup \copy\theaddress}
  157. }% end \gdef
  158. }% end \obeylines for 
  159.  
  160. %-----------------------------------------------------------------------
  161. %   Use \body before typing the body of the letter. This is defined
  162. % to be \letterbody. \text is a synonym.
  163.  
  164. \def\letterbody{\bigskip                % skip some
  165.     \beginparmode                       % paragraph mode
  166.     \raggedright\tolerance=2500         % letters are not justified
  167.     \noindent}                          % don't indent salutation
  168.  
  169. %    Use \closing at the end of the letter.  It automatically puts a 
  170. % space for a signature between the 1st and 2nd lines after \closing.
  171.  
  172. \def\closing{\beginlinemode\getclosing}
  173.  
  174. {\obeylines\gdef\getclosing #1
  175.    #2
  176.    {#1\nobreak\bigskip\nobreak\bigskip \leftskip=\longindent #2
  177.    \nobreak\vskip .5truein
  178.    \def
  179.    {\endgraf\nobreak}}}
  180.  
  181.  
  182. %   \annotations and \ps are used at the end of the letter. \annotations
  183. % respects lines while \ps gives paragraph mode.
  184.     
  185. \def\annotations{\beginlinemode\nobreak\bigskip         % skip down some
  186.    \def\par{\endgraf\nobreak}\obeylines\par}
  187.     
  188. \def\ps{\beginparmode\nobreak\bigskip                   % skip down some
  189.   \interlinepenalty 5000\def\par{\endgraf\penalty 5000}}
  190.     
  191.  
  192. % \ccletr does \cc for a letter.
  193.     
  194. \def\ccletr{\beginlinemode%
  195.    \nobreak \bigskip%                   % skip down
  196.    \def\par{\endgraf\nobreak}%          % as for \annotations
  197.    \obeylines\par%                      % obey lines
  198.    \ccitem{cc:\ }}                      % print cc:
  199.     
  200. \def\cc{\ccletr}    
  201. \def\CC{\cc}    
  202.     
  203. \def\Encl{\beginlinemode%
  204.    \nobreak \bigskip%                   % skip down
  205.    \def\par{\endgraf\nobreak}%          % as for \annotations
  206.    \obeylines\par%                      % obey lines
  207.    \ccitem{Encl:\ }}                    % print cc:
  208. \def\encl{\Encl}                        % synonym
  209.     
  210. %   \ccitem does the work for \cc and \Encl
  211. \def\ccitem#1{\setbox0\hbox{#1\quad}%   % box0 = argument
  212.     \parindent=\wd0                     % get its width
  213.     \hang                               % hanging indentation
  214.     \rlap{\copy0}%                      % and write it
  215.     \nobreak%                           % forbid break
  216.     \vskip-\baselineskip\relax}         % kill the skip
  217.  
  218. \def\newpage{\vfill\eject}
  219.     
  220. %-----------------------------------------------------------------------
  221. %       \letterhead just spaces down and puts the date at the top of the 
  222. % page. \phoneletterhead puts in a phone number and the date at positions
  223. % given by \hdimphone, \vdimphone and \hdimdate, \vdimdate relative to
  224. % the true page boundaries.
  225.  
  226. \def\letterhead#1{%             %
  227.    \vbox{\vskip 0.5 truein}%    % skip down for the date
  228.    \line{\hfil\today}%          % right justify date
  229.    \vskip\bigletterskip}%       % space down to the address
  230.               
  231. \def\phoneletterhead#1{%                        % #1 is phone number
  232.    \vbox{\vskip-\voffset\vskip-\headlineoffset  % skip down to position
  233.       \vskip\vdimphone}                         % of phone number
  234.    \hbox{\hskip-\hoffset\hskip\hdimphone #1}%   % skip over to number
  235.    \vskip-\vdimphone\vskip\vdimdate             % skip down to date
  236.    \hbox{\hskip-\hoffset\hskip\hdimdate \today} % date 
  237.    }                                            %
  238.               
  239. \def\letterdate{%               % \letterdate just puts date on letters
  240.    \vbox{\vskip 0.5 truein}%    % skip down for the date
  241.    \line{\hfil\today}%          % right justify date
  242.    \bigskip}                    % space down to the address
  243.  
  244. % >>> EOF TXSletr.tex <<<
  245.  
  246.