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

  1. % file: TXSmemo.tex                              TeXsis version 2.15
  2. % $Revision: 15.1 $  :  $Date: 92/05/31 21:30:08 $  :  $Author: myers $
  3. %======================================================================*
  4. %  This is a set of TeX macros for producing simple memos.
  5. %  The sytnax is:
  6. %
  7. %       \MemoFormat     (or simply \memo in TeXsis)
  8. %       \to <name>
  9. %       \from <name>
  10. %       \subj <whatever the memo is about> or \re is same as \subj
  11. %       \date <date of memo>
  12. %       \text
  13. %          <text of memo>
  14. %       \bye
  15. %
  16. %----------------------------------------------------------------------*
  17. \message{Memo Format.}
  18.  
  19. % ---------- Counters and such:
  20.  
  21. \newdimen\memoindent    \memoindent=2.54cm      % indent for \to, \from, etc.
  22. \newdimen\firstheadoffset       % \headlineoffset for first page only
  23. \firstheadoffset=0pt            % start with headline down for \ORGANIZATION
  24.  
  25. % ---------- Initialization: Memo document format for memoranda
  26.  
  27. \def\Memo{\ContentsSwitchfalse%         % no table of contents
  28.    \refswitchfalse                      % no reference list
  29.    \inittexsis                          % initialize TeXsis
  30.    \MemoFormat}%                        % Setup using \MemoFormat
  31. \def\memo{\Memo}                        % synonym
  32.  
  33. \def\MemoFormat{%
  34.     \voffset=0.125truein                % top margin
  35.     \hsize=6.5truein                    % width of text
  36.     \raggedbottom                       %
  37.     \advance \vsize by -\voffset        % subtract \voffset from vertical size
  38.     \nopagenumbers                      % no footlines
  39.     \let\makeheadline=\makememhed       % alternate way of making
  40.     \headline={\MemoHeadline}%          %   headlines for memos
  41.     \RunningHeadstrue                   % default 
  42.     \headlineoffset=0.8cm               % raise all following headlines
  43.     \firstheadoffset=0pt                % start with headline down for
  44.     \def\subjectline{}%                 % start with this null
  45.     \def\nopagenumbers{\RunningHeadsfalse}% redefine \nopagenumbers 
  46.     \def\pagenumbers{\RunningHeadstrue}%%  and \pagenumbers for this document
  47.     \twelvepoint                        % default is 12pt
  48.     \quoteon                            % enable easy quotes
  49.     \def\annotations{\annotatememo}%    % annotations for memo
  50.     \def\cc{\ccmemo}%                   % carbon copy for memo
  51.     \def\Encl{\enclmemo}%               % enclosure for memo
  52.     \def\ps{\psmemo}%                   % post script for memo
  53.     \def\endmode{\relax}%               % for first item
  54.     \def\to{\ifmmode\rightarrow\else\To\fi}%
  55.     \let\text=\memotext                 % enable \text
  56.     \let\Text=\memotext                 % \Text is a synonym
  57.     \let\body=\memotext                 % \body is synonym for \text
  58.     \memoheader                         % do headher at top
  59. }
  60.  
  61.  
  62. %     \ORGANIZATION names your institution.  Replace it with whatever you
  63. % want for your own institution.
  64.  
  65. \def\ORGANIZATION{\hbox{\space}}        % change this in TXSsite.tex!
  66.  
  67. %     \memoheader prints the word MEMORANDUM at the top of the page and
  68. % sets up for \to, \from, etc...
  69.  
  70. \def\memoheader{%                       % banner for top of first page
  71.     \pageno=1                           % begin on page 1
  72.     \centerline{\fourteenpoint          % 14 pt type centered
  73.        M E M O R A N D U M}%            %
  74.     \bigskip\bigskip                    % space
  75.     \relax}%                            %
  76.  
  77. %---------------------------------------
  78. % new def of \makeheadline for MEMOFORMAT, uses \firstheadoffset
  79.  
  80. \def\makememhed{\vbox to 0pt{\vskip-22.5pt
  81.    \ifnum\pageno>1\vskip-\headlineoffset
  82.       \else\vskip-\firstheadoffset\fi
  83.    \line{\vbox to 8.5pt{}\the\headline}\vss}\nointerlineskip}%
  84.  
  85. % \MemoHeadline prints the subject and page number at the top of each page
  86.  
  87. \def\MemoHeadline{%     headline for Memoranda
  88.    \ifnum\pageno>1                      % if not first page...
  89.      \ifRunningHeads                    % running headlines on top of page?
  90.        {\tenrm\subjectline\hfil Page~\folio}% % print subject line and page #
  91.      \else                              % no running headlines?  
  92.        {\hfil}%                         % then nothing  
  93.      \fi
  94.    \else                                % On the first page do header
  95.       {\hfil\twelvess\ORGANIZATION\hfil}% print name of organization
  96.    \fi}%
  97.  
  98. %-----------------------------------------------------------------------
  99. % \memoitem is the basic template for each field
  100.  
  101. \def\memoitem#1{\endmode                % end previous field
  102.     \def\endmode{\par\endgroup}%        % set up to end the field
  103.     \begingroup                         % begin a new field
  104.     \parskip=0pt                        % no \parskip
  105.     \singlespaced                       % no big space if several lines
  106.     \medskip\noindent                   % skip down a bit
  107.     \hangindent=\memoindent             % hanging indentation
  108.     \hangafter=1                        % after first line
  109.     \hbox to \memoindent{{\tenss #1}\hfil}% label the field
  110.     \nobreak}%                          % don't break after label
  111.  
  112. \def\endmode{\relax}                    % for first item
  113.  
  114. %---------------------------------------
  115. % TO: and FROM:
  116.  
  117. \def\To{\memoitem{TO:}}
  118. \def\TO:{\To}
  119. \def\From{\memoitem{FROM:}}
  120. \def\FROM:{\From}
  121. \def\from{\From}
  122.  
  123. %---------------------------------------
  124. % CC: (Carbon Copies)
  125.  
  126. \def\ccmemo{\endmode
  127.     \def\endmode{\vskip0pt\endgroup}%
  128.     \bigskip                            % skip down a bit
  129.     \begingroup\obeylines               % obey line ends
  130.     \parskip=0pt                        % no skip between items
  131.     \ccitem{cc:\ }%
  132.     }
  133. \def\CC{\cc}
  134.  
  135. % ---------- \ccitem does the work for \cc and other end of memo fields
  136.  
  137. \def\ccitem#1{\setbox0\hbox{#1\quad}%   % box0 = argument
  138.     \parindent=\wd0                     % get its width
  139.     \hang                               % hanging indentation
  140.     \rlap{\copy0}%                      % and write it
  141.     \vskip-\baselineskip\relax}%        % kill the skip
  142.  
  143. % ---------- \Distribution is like CC (\obeyines format)
  144.  
  145. \def\distribution{\endmode
  146.     \def\endmode{\vskip0pt\endgroup}%
  147.     \bigskip                            %
  148.     \begingroup\obeylines               % obey line ends
  149.     \def\n{\par}%                       % break lines at \n
  150.     \parskip=0pt                        %
  151.     \ccitem{Distribution:}%
  152.     }
  153. \def\Distribution{\distribution}%        % synonym
  154.  
  155. % ---------- \enclmemo is also like \cc (obeylines format)
  156.  
  157. \def\enclmemo{\endmode                  %
  158.     \def\endmode{\vskip0pt\endgroup}%   %
  159.     \bigskip                            % skip down a bit
  160.     \begingroup\obeylines               % obey line ends
  161.     \parskip=0pt                        % no skip between items
  162.     \ccitem{Encl:\ }%
  163.     }
  164.  
  165. % ---------- \annotatememo is \annotations for memo format
  166.  
  167. \def\annotatememo{\endmode              % end previous item
  168.    \def\endmode{\vskip0pt\endgroup}%    % set up new ending
  169.    \begingroup                          % changes local
  170.       \nobreak\bigskip\nobreak          % skip some
  171.       \parindent=0pt\parskip=0pt        % no indent or skip
  172.       \obeylines}%                      % obey line endings
  173.  
  174. % ---------- \psmemo does \ps for a memo
  175.  
  176. \def\psmemo{\endmode                    % end previous item
  177.    \def\endmode{\vskip0pt\endgroup}%    % set up ending
  178.    \begingroup                          % start a group
  179.       \nobreak\bigskip\nobreak          % skip some
  180.       \interlinepenalty 5000            % avoid breaks
  181.       \def\par{\endgraf\penalty 5000}}% % avoid breaks
  182.  
  183. %---------------------------------------
  184. % SUBJECT: and RE: (saves first line in \subjectline for tops of pages)
  185.  
  186. \def\subjectitem#1{\endmode     % close previous field
  187.     \def\endmode{\relax}%       % turn off \endmode before going to \memoitem
  188.     \gdef\@subjtype{#1}%        % label the field
  189.     \begingroup\obeylines       % obeylines is on to get first subject line
  190.     \getsubject}%               % get first line
  191. \def\Subj{\subjectitem{SUBJECT:}}%
  192. \def\SUBJ{\subjectitem{SUBJECT:}}%
  193. \def\subj{\subjectitem{SUBJECT:}}%
  194. \def\subject{\subjectitem{SUBJECT:}}%
  195. \def\Subject{\subjectitem{SUBJECT:}}%
  196.  
  197. \def\re{\subjectitem{RE:}}%
  198. \def\RE{\subjectitem{RE:}}%
  199.  
  200. % \getsubject gets the first line in the field in \subjectline
  201. % for use in the headline at the top of pages following
  202.  
  203. {\obeylines                             % first line of subject is \subjectline
  204.  \gdef\getsubject#1
  205. {\endgroup                              % end \obeylines
  206.  \gdef\subjectline{#1}                  % define \subjectline as the first line
  207.  \memoitem{\@subjtype}\subjectline\space}% print SUBJECT: line
  208. }% close obeylines
  209.  
  210. %---------------------------------------
  211. % \date takes what follows on the same line and uses it as the
  212. % date of the memo.  If nothing follows then today's date is used.
  213. % It is important for the date, if given, to be on the same line as \date.
  214.  
  215. \def\Date{\endmode              % close previous field
  216.    \def\endmode{\relax}%        % turn off \endmode before going to \memoitem
  217.    \begingroup\obeylines        %
  218.    \getdate}                    % get the date, or use today's
  219.  
  220. \def\DATE{\Date}                % synonym
  221. \def\date{\Date}
  222.  
  223. {\obeylines                     % look for a given date
  224.  \gdef\getdate#1
  225. {\endgroup                      % close \obeylines
  226.  \ifx?#1?\relax                 % if no date given, use today's
  227.   \gdef\memodate{\number\day\ \monthname{\month}\ \number\year}%
  228.  \else                          %
  229.   \gdef\memodate{#1}            % if date is given, use it
  230.  \fi                            %
  231.  \memoitem{DATE:}\memodate}%    %
  232. }% close \obeylines for definitions
  233.  
  234. \def\monthname#1{\ifcase #1 \errmessage{0 is not a month.}
  235.     \or January\or February\or March\or April\or May\or
  236.      June\or July\or August\or September\or October\or
  237.      November\or December%
  238.      \else \errmessage{#1 is not a month.}\fi}
  239.  
  240. %---------------------------------------
  241. % TEXT: \text sets up for text of memo
  242.  
  243. \def\memotext{\endmode                  % close last item
  244.    \def\endmode{\bigskip\vfil}%         % \endmode is now blank space
  245.    \bigskip\bigskip                     % skip down for text
  246.    \parskip=\normalbaselineskip         % \parskip is one blank line
  247.    \noindent                            % like a letter
  248.    }
  249. \def\text{\memotext}                    % start with \text = \memotext
  250. \def\Text{\memotext}                    % \Text is a synonym
  251.  
  252. % use \endmemo to end a memo, especially if you use \CC or similar.
  253.  
  254. \def\endmemo{\endmode\vfill\eject\end}  % ends CC: etc, then quits
  255.  
  256. %=======================================================================
  257. % Referee format for Referee Reports
  258. %
  259. \def\Referee{\ContentsSwitchfalse               % no table of contents
  260.    \auxswitchfalse                              % no need for an .AUX file
  261.    \refswitchfalse                              % no reference list
  262.    \inittexsis                                  % initialize
  263.    \RefReptFormat}                              % Setup using \MemoFormat
  264. \def\referee{\Referee}%                         % synonym
  265.  
  266. \def\RefReptFormat{%
  267.     \voffset = 0.125 true in            % top margin
  268.     \hsize   = 6.5 true in              % width of text
  269.     \raggedbottom                       %
  270.     \advance \vsize by -\voffset        % subtract \voffset from vertical size
  271.     \nopagenumbers                      % no footlines
  272.     \headlineoffset=0.8cm               % raise all following headlines
  273.     \firstheadoffset=0pt                % start with headline down for
  274.     \let\makeheadline=\makememhed       %
  275.     \def\ORGANIZATION{{\fourteenpoint\bf Referee Report}}% change \ORGANIZATION
  276.     \def\subjectline{Referee Report}%   % running head is ``Referee Report''
  277.     \headline={\MemoHeadline}%          % just like a memo
  278.     \def\nopagenumbers{\RunningHeadsfalse}% redefine \nopagenumbers 
  279.     \def\pagenumbers{\RunningHeadstrue}%%  and \pagenumbers for this document
  280.     \twelvepoint                        % default is 12pt
  281.     \singlespaced\whitespaced           % widely spaced, but not double
  282.     \parskip=\baselineskip              % extra space between paragraphs
  283.     \def\endmode{\relax}%               % for first item
  284.     \quoteon                            % enable easy quotes
  285.     \def\to{\ifmmode\rightarrow\else\To\fi}%
  286.     \def\From{\RefFrom}%                % say something about \From
  287.     \let\text=\memotext                 %
  288.     \let\body=\memotext                 %
  289.     \def\authors{\memoitem{AUTHORS:}}%
  290.     \def\author{\memoitem{AUTHOR:}}%
  291.     \def\title{\subjectitem{TITLE:}}%
  292.     \def\MSref{\memoitem{MANUSCRIPT:}}%
  293.     \def\manuscript{\@obsolete\manuscript\MSref\memoitem{MANUSCRIPT:}}%
  294.     \def\Number{\memoitem{NUMBER:}}%
  295.     \hbox{\space}\bigskip}              % space down from top a bit.
  296.  
  297. \def\RefFrom{\begingroup\obeylines      % obeylines to get first subject line
  298.     \getFrom}%                          % get first line
  299. {\obeylines                             % look for line endings
  300.  \gdef\getFrom#1
  301. {\endgroup                              % end \obeylines
  302.  \emsg{> Reminder: Referee Reports are usually anonymous.  This one says...}%
  303.  \emsg{FROM: #1}%                       % say something about FROM
  304.  \memoitem{From:}#1\space}%             % but do it anyway
  305. }                                       % close obeylines
  306.  
  307. %>>> EOF TXSmemo.tex <<<
  308.