diff options
Diffstat (limited to 'macros/plain/contrib/misc/bellmac.tex')
-rw-r--r-- | macros/plain/contrib/misc/bellmac.tex | 235 |
1 files changed, 235 insertions, 0 deletions
diff --git a/macros/plain/contrib/misc/bellmac.tex b/macros/plain/contrib/misc/bellmac.tex new file mode 100644 index 0000000000..ea5f26f38b --- /dev/null +++ b/macros/plain/contrib/misc/bellmac.tex @@ -0,0 +1,235 @@ +% From: <BELL@UKANVAX.BITNET> +% Ed Bell +% BITnet: BELL@UKANVAX +% SPAN: KUPHSX::BELL +% +% \title AutoLetter: A \TeX\ form letter procedure. +% \\Edwin V. Bell, II\cr +% Department of Physics and Astronomy +% University of Kansas +% \endx +% +% \pagexref{bell} +% +% The inquiry from John Lee (\TUB, October 1986) concerning form letters was +% particularly interesting to me as I had recently completed such a procedure +% at the request of our office staff. The procedure (called AutoLetter) is +% a ``plain'' \TeX\ procedure which requires two files, one containing a +% delimited listing of names and addresses, the other a generic form letter. +% +% Each entry in the address file is followed by a line containing a single +% asterisk. The last entry must also be followed by this line, which in turn +% {\it must} be followed by the end-of-file mark. Each individual entry consists +% of six lines for the addressee's title, name, etc., followed by as many +% address lines as desired. The lines for the addressee's name are: +% +% \item{(1)}Title (Prof., Mr., Ms., etc.) +% \item{(2)}First name/initial +% \item{(3)}Name to be used as a familiar form of address. +% \item{(4)}Middle name(s)/initial(s) +% \item{(5)}Last/family name +% \item{(6)}Additional name information (Jr., II, Esq., etc.) +% +% \noindent +% These lines are then used to reconstruct the persons name for various forms +% of address(including for the address block) and to address the person formally +% (Sir, Madam, Sir or Madam), familiarly (by item (3) above or, if (3) is +% blank, by first name), or by title and last name. If any of these lines +% are left blank, AutoLetter doesn't mind, but if the entry is irrelevant +% or absent from the persons name, {\it it must still be left blank}. An example +% of an address entry might be: +% \begintt +% Mr. +% Edwin +% Ed +% V. +% Bell +% II +% Department of Physics \& Astronomy +% University of Kansas +% Lawrence, KS\ \ \ 66045 +% * +% \endtt +% +% The letter file is quite simple and used macros that are the same as or +% slight variations of those listed in Appendix E of {\sl The \TeX book}. +% AutoLetter takes care of the placement of the date and address block (and +% could as well the letterhead, although I have not yet implemented that here +% as yet), so the letter file might appear as: +% \begintt +% \letterbody +% Dear \person-- +% +% ...text... +% +% \closing +% Sincerely, +% ... +% +% \annotations... +% \ps... +% +% \endletter +% \endtt +% +% AutoLetter consists of two files, on the \TeX\ procedure itself, the other +% containing the letter-formatting macros (and local macros, if desired). +% The AutoLetter procedure looks like: +% \begintt +% \input letter_format +% +\message{+------------------------------------------+} +\message{| AutoLetter Version 1.1 -- 9 October 1986 |} +\message{+------------------------------------------+} + +\newread\addressfile + +\message{Enter name of file containing the addresses:} +\read-1 to\addfile +\openin\addressfile=\addfile + +\message{Enter name of file containing the body of the letter:} +\read-1 to\letfile + +%:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +% Now read in an entry containing the person to whom to send the letter +%:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +\endlinechar=-1 +\read\addressfile to\text \let\title=\text + +\loop + \read\addressfile to\text \let\firstname=\text + \read\addressfile to\text \let\nickname=\text + \read\addressfile to\text \let\middlename=\text + \read\addressfile to\text \let\lastname=\text + \read\addressfile to\text + \ifx\text\blank\def\jr{}\else\def\jr{, \text}\fi + \endlinechar='015 + \message{Now processing letter to \addressee.} + \getaddress + \doletter + \endlinechar=-1 + \read\addressfile to\text \let\title=\text + \ifeof\addressfile\endfalse\else\endtrue\fi + \ifend +\repeat + +\bye +% \endtt +% +% \noindent +% Our local letter-formatting macros are: +% \begintt +% \input whatever local macro package you wish here +% +% \twelvept % 12-point size is so much easier to read +% +% \hsize=6.5truein +% \vsize=8.0truein +% \hoffset=1.0truein +% \voffset=1.5truein +% +% \raggedbottom +% \interlinepenalty=1000 +% \parindent=0pt +% \parskip=0pt +% +% \nopagenumbers +% +%:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +% Define some stuff so that the headlines will come out the way +% we want them to be. +%:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +% +% \newbox\headbox +% \headline={\ifnum\pageno>1 +% {\twelverm +% \global\setbox\headbox=\vbox\bgroup% +% \leftline{\addressee} +% \leftline{\today} +% \leftline{Page \folio}\egroup}\copy\headbox +% \else\hfil\fi} +% +% \def\makeheadline{\vbox to 0pt{\vskip-70.6pt +% \line{\vbox to30.6pt{}\the\headline}\vss} +% \nointerlineskip} +% +% \newif\ifend +% +%:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +% Macros for reading in the address from the file. +%:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +% +% \def\blank{} +% +% \def\endletter{\endmode\vfill\eject\pageno=1} +% +% \newdimen\longindentation \longindentation=10truecm +% \newbox\theaddress +% \newif\ifast +% \def\aster{* } +% \def\getaddress{{\global\setbox\theaddress=\vbox\bgroup\raggedright% +% \hsize=\longindentation +% \everypar{\hangindent2em} +% \line{\vbox to10.2pt{}\addressee\hss}\egroup% +% {\loop{\read\addressfile to\text +% \ifx\text\aster\astfalse\else\asttrue\fi +% \ifast\global\setbox\theaddress=\vbox\bgroup\unvbox\theaddress +% \line{\vbox to 10.2pt{}\text\hss}\egroup}\repeat}}} +% +%:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +% Macros for formatting the letter. +%:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +% +% \def\letterbody{\beginparmode} +% \def\closing{\beginlinemode\getclosing} +% {\obeylines\gdef\getclosing #1 +% #2 +% {#1\nobreak\bigskip \leftskip=\longindentation #2 +% \nobreak\bigskip\bigskip\bigskip\bigskip % space for signature +% \def +% {\endgraf\nobreak}}} +% \def\annotations{\beginlinemode\def\par{\endgraf\nobreak}\obeylines\par} +% \def\ps{\beginparmode\nobreak +% \interlinepenalty5000\def\par{\endgraf\penalty5000} +% P.cS.\ } +% +% \def\address{\beginlinemode \copy\theaddress \endgroup} +% \def\doletter{{\leftskip=\longindentation% +% \rm\today\bigskip\address\bigskip} +% \input \letfile} +% +%:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +% Macros for setting up forms of salutation. +%:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +% +% \def\mr{Mr.} +% \def\ms{Ms.} +% \def\mrs{Mrs.} +% \def\miss{Miss} +% +% \def\addressee{\ifx\blank\title\else\title\space\fi% +% \firstname\space\ifx\blank\middlename\else\middlename\space\fi% +% \lastname\jr} +% \def\person{\ifx\blank\title Sir or Madam\else\title\space\lastname\fi} +% \def\familiar{\ifx\blank\nickname \firstname\else\nickname\fi} +% \def\formal{\ifx\mr\title Sir\else{\ifx\ms\title Madam\else% +% {\ifx\mrs\title Madam\else{\ifx\miss\title Madam\else{\person}\fi}% +% \fi}\fi}\fi} +% \endtt +% +% The AutoLetter procedure prompts the user for the names of the address and +% letter files and then goes to work. A similar procedure (called {\smc Labels}) +% can also be used with the address file to produce 33 labels/page (3 columns +% of 11 labels). This enables us to produce form letters with or without labels +% or to maintain mailing lists without requiring letters (for abstract mailings, +% for example). +% +%If anyone is interested in having these procedures, drop me a line. If response +% is high, I would be more than willing to provide them to the \TeX\ community +% at large. Mail may be sent to: +% +% \leftline{Bitnet: Bell@UKANVAX} +% \leftline{SPAN: KUPHSX::Bell} +% |