summaryrefslogtreecommitdiff
path: root/macros/plain/contrib/misc/bellmac.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/plain/contrib/misc/bellmac.tex')
-rw-r--r--macros/plain/contrib/misc/bellmac.tex235
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}
+%