diff options
author | Karl Berry <karl@freefriends.org> | 2011-11-07 23:28:09 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2011-11-07 23:28:09 +0000 |
commit | c144f631148fc20d9c33eda228ef0207e1af3713 (patch) | |
tree | 2a321b12ac1b2df2065d4b7cd339c37061933465 /Master/texmf-dist/tex/latex/hletter | |
parent | 8f90b562b952a727453b13d8316c582285e9a312 (diff) |
new latex package hletter 4.1 (7nov11)
git-svn-id: svn://tug.org/texlive/trunk@24534 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/hletter')
-rw-r--r-- | Master/texmf-dist/tex/latex/hletter/hdefine.clo | 28 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/hletter/hhead.sty | 47 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/hletter/hlete.clo | 107 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/hletter/hletf.clo | 121 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/hletter/hletg.clo | 106 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/hletter/hletter.cls | 128 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/hletter/hsetup.sty | 233 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/hletter/mergeh.sty | 188 |
8 files changed, 958 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/hletter/hdefine.clo b/Master/texmf-dist/tex/latex/hletter/hdefine.clo new file mode 100644 index 00000000000..84472775c07 --- /dev/null +++ b/Master/texmf-dist/tex/latex/hletter/hdefine.clo @@ -0,0 +1,28 @@ +%% +%% This is an example of `hdefine.clo' which is part of the hletter package +%% it should be rewritten by the user +%% +%% Copyright (C) 2011 Brian Housley +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.2 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.2 or later is part of all distributions of LaTeX +%% version 1999/12/01 or later. +%% +%% Problems, bugs and comments to +%% brian.housley@gcs.ch +%% + +% Declare the various heading options, +% english (e), german (g) and french (f) are already defined. +% The definition file "hlet<lang>.clo" is input to define the fields +% +\logo{GCCS} + +\newoption{private}{1} +\newoption{signit}{2} +\newoption{bruni}{3} +\newoption{test}{4} diff --git a/Master/texmf-dist/tex/latex/hletter/hhead.sty b/Master/texmf-dist/tex/latex/hletter/hhead.sty new file mode 100644 index 00000000000..8a53cb9a59a --- /dev/null +++ b/Master/texmf-dist/tex/latex/hletter/hhead.sty @@ -0,0 +1,47 @@ +%% +%% This is file `hhead.sty' which is part of the hletter package +%% +%% Copyright (C) 2011 Brian Housley +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.2 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.2 or later is part of all distributions of LaTeX +%% version 1999/12/01 or later. +%% +%% Problems, bugs and comments to +%% brian.housley@gcs.ch +%% + +% hhead style -- Released 02nd. July, 2009 +% produces a head on the current page using the \head{ln} command: +% +\NeedsTeXFormat{LaTeX2e}[1995/12/01] + +\ProvidesPackage{hhead}[2009/07/02 v2.4 Brian heading class] + +\typeout{hhead style V2.4 <02/07/2009> hsy} + +\newif\ifhlet \hletfalse +\newcommand*{\sign}[2][]{} +\newcommand*{\address}[1]{} + +\newcount\hl@bar +\def\barlength#1{\dimen255=#1 \hl@bar=\dimen255% + \global\divide\hl@bar by\unitlength + \global\divide\hl@bar by2} + +\input hsetup.sty + +\barlength{180mm} + +% +\if@twocolumn +\newcommand{\heading}[1][\@empty]{\twocolumn[\dohead{#1}{\@empty}{\@empty}{\@empty}\setcounter{page}{1}]}\else +\newcommand{\heading}[1][\@empty]{\dohead{#1}{\@empty}{\@empty}{\@empty}\setcounter{page}{1}}\fi + +\endinput +% +% end of file HHEAD.STY diff --git a/Master/texmf-dist/tex/latex/hletter/hlete.clo b/Master/texmf-dist/tex/latex/hletter/hlete.clo new file mode 100644 index 00000000000..bdbfc29251e --- /dev/null +++ b/Master/texmf-dist/tex/latex/hletter/hlete.clo @@ -0,0 +1,107 @@ +%% +%% This is an example of `hlete.clo' which is part of the hletter package +%% it should be rewritten by the user +%% +%% Copyright (C) 2011 Brian Housley +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.2 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.2 or later is part of all distributions of LaTeX +%% version 1999/12/01 or later. +%% +%% Problems, bugs and comments to +%% brian.housley@gcs.ch +%% + +% Letter options for English +% +% private -> 1 +% signit -> 2 +% bruni -> 3 +% test -> 4 +% +\ifcase\hltype +% case = 0 (no option - GCCS) + \addressA{Largitzenstrasse 15} + \addressB{CH--4056 Basle} + \addressC{Switzerland} + \extraA{Telephone: +41 (61) 345 78 90} + \extraB{Telefax: +41 (61) 345 78 92} + \extraC{eMail: info@gccs.com} + \bottomL{Bank: VCT Unterwil, CH--4220 Unterwil/BL} + \bottomR{Account: 322--956123.02R} +\or +% case = 1 (private) + \address{Hauptstrasse 15\\ + \textbf{CH-4056 Basle}\\ + Switzerland\\[1ex] + \small Tel: +41 61 322 6382\\ + \small Fax: +41 61 383 8148\\ + \small Mobile: +41 76 337 4207\\ + \small eMail: brian.smith@epfl.ch} +\or +% case = 2 (signit) + \addressA{Largitzenstrasse 15} + \addressB{CH--4056 Basle} + \addressC{Switzerland} + \extraA{Telephone: +41 (61) 345 78 90} + \extraB{Telefax: +41 (61) 345 78 92} + \extraC{eMail: info@gccs.com} + \bottomL{Bank: VCT Unterwil, CH--4220 Unterwil/BL} + \bottomR{Account: 322--956123.02R} + \sign{signat} +\or +% case = 3 (bruni) + \addressA{The Church Tower} + \addressB{54, Main Street} + \addressC{Upper Throgmortondale} + \extraA{tel.: +44 187 3546} + \extraB{fax.: +44 187 3547} + \extraC{email: bruni@songs.flat.ac.uk} + \centreA{Songs written \& sung} + \centreB{Loudness no problem} + \centreC{Flats \& sharps used} + \centreD{\rule[.5ex]{16mm}{1pt}} + \centreE{Notes sometimes used} + \centreF{Spears may be hurled} + \centrepos{-10mm} + \bottomL{$\ast\ast\ast\ast\ast$} + \bottomC{Lullabies for children aged 7 to 70 our speciality} + \bottomR{$\ast\ast\ast\ast\ast$} + \sign[10mm]{signat} + \logo[50mm]{Bruennhilde} + \DeclareFixedFont{\newfa}{OT1}{phv}{m}{n}{12pt} + \DeclareFixedFont{\newfc}{OT1}{phv}{m}{sl}{10pt} +\or +% case = 4 (test --- run with draft) + \logo{test} + \addressA{\texttt{\char'134addressA}} + \addressB{\texttt{\char'134addressB}} + \addressC{\texttt{\char'134addressC}} + \extraA{\texttt{\char'134extraA}} + \extraB{\texttt{\char'134extraB}} + \extraC{\texttt{\char'134extraC}} + \centreA{\texttt{\char'134centreA}} + \centreB{\texttt{\char'134centreB}} + \centreC{\texttt{\char'134centreC}} + \centreD{\texttt{\char'134centreD}} + \centreE{\texttt{\char'134centreE}} + \centreF{\texttt{\char'134centreF}} + \centrepos{10mm} + \bottomL{\texttt{\char'134bottomL}} + \bottomC{\texttt{\char'134bottomC}} + \bottomR{\texttt{\char'134bottomR}} + \logo{test} + \sign{testsig} +\else +% all other cases (should never be used!) + \addressA{?} + \addressB{?} + \addressC{?} + \extraA{Telephone: ?} + \extraB{Telefax: ?} + \extraC{eMail: ?} +\fi diff --git a/Master/texmf-dist/tex/latex/hletter/hletf.clo b/Master/texmf-dist/tex/latex/hletter/hletf.clo new file mode 100644 index 00000000000..5ad0920e7de --- /dev/null +++ b/Master/texmf-dist/tex/latex/hletter/hletf.clo @@ -0,0 +1,121 @@ +%% +%% This is an example of `hletf.clo' which is part of the hletter package +%% it should be rewritten by the user +%% +%% Copyright (C) 2011 Brian Housley +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.2 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.2 or later is part of all distributions of LaTeX +%% version 1999/12/01 or later. +%% +%% Problems, bugs and comments to +%% brian.housley@gcs.ch +%% +%% +%% Copyright (C) 2011 Brian Housley +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.2 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.2 or later is part of all distributions of LaTeX +%% version 1999/12/01 or later. +%% +%% Problems, bugs and comments to +%% brian.housley@gcs.ch +%% + +% Letter options for French +% +% private -> 1 +% signit -> 2 +% bruni -> 3 +% test -> 4 +% +\ifcase\hltype +% case = 0 (no option - private) + \addressA{Largitzenstrasse 15} + \addressB{CH--4056 B\^ale} + \addressC{La Suisse} + \extraA{Tel\'ephone: +41 (61) 345 78 90} + \extraB{Tel\'efax: +41 (61) 345 78 92} + \extraC{eMail: info@gccs.com} + \bottomL{Bank: VCT Unterwil, CH--4220 Unterwil/BL} + \bottomR{Account: 322--956123.02R} +\or +% case = 1 (private) + \address{Rue principal 15\\ + \textbf{CH-4056 B\^ale}\\ + La Suisse\\[1ex] + \small Tel: +41 61 322 6382\\ + \small Fax: +41 61 383 8148\\ + \small Mobile: +41 76 337 4207\\ + \small eMail: brian.smith@epfl.ch} +\or +% case = 2 (signit) + \addressA{Largitzenstrasse 15} + \addressB{CH--4056 B\^ale} + \addressC{La Suisse} + \extraA{Tel\'ephone: +41 (61) 345 78 90} + \extraB{Tel\'efax: +41 (61) 345 78 92} + \extraC{eMail: info@gccs.com} + \bottomL{Bank: VCT Unterwil, CH--4220 Unterwil/BL} + \bottomR{Account: 322--956123.02R} + \sign{signat} +\or +% case = 3 (bruni) + \addressA{Le Beffroi} + \addressB{54, Main Street} + \addressC{Upper Throgmortondale} + \extraA{Tel\'ephone: +44 187 3546} + \extraB{Tel\'efax: +44 187 3547} + \extraC{email: bruni@songs.flat.ac.uk} + \centreA{Chanteuse forte} + \centreB{Volume sans problem} + \centreC{Flats \& sharps utilis\'{e}} + \centreD{\rule[.5ex]{16mm}{1pt}} + \centreE{Notes parfois utilis\'{e}} + \centreF{\'{E}pieus permis} + \centrepos{-10mm} + \bottomL{$\ast\ast\ast\ast\ast\ast$} + \bottomC{\emph{Lullabies for small and big children our speciality}} + \bottomR{$\ast\ast\ast\ast\ast\ast$} + \sign[10mm]{signat} + \logo[50mm]{Bruennhilde} + \DeclareFixedFont{\newfa}{OT1}{phv}{m}{n}{12pt} + \DeclareFixedFont{\newfc}{OT1}{phv}{m}{sl}{10pt} +\or +% case = 4 (test --- run with draft) + \logo{test} + \addressA{\texttt{\char'134addressA}} + \addressB{\texttt{\char'134addressB}} + \addressC{\texttt{\char'134addressC}} + \extraA{\texttt{\char'134extraA}} + \extraB{\texttt{\char'134extraB}} + \extraC{\texttt{\char'134extraC}} + \centreA{\texttt{\char'134centreA}} + \centreB{\texttt{\char'134centreB}} + \centreC{\texttt{\char'134centreC}} + \centreD{\texttt{\char'134centreD}} + \centreE{\texttt{\char'134centreE}} + \centreF{\texttt{\char'134centreF}} + \centrepos{10mm} + \bottomL{\texttt{\char'134bottomL}} + \bottomC{\texttt{\char'134bottomC}} + \bottomR{\texttt{\char'134bottomR}} + \logo{test} + \sign{testsig} +\else +% all other cases (should never be used!) + \addressA{?} + \addressB{?} + \addressC{?} + \extraA{Telephone: ?} + \extraB{Telefax: ?} + \extraC{eMail: ?} +\fi diff --git a/Master/texmf-dist/tex/latex/hletter/hletg.clo b/Master/texmf-dist/tex/latex/hletter/hletg.clo new file mode 100644 index 00000000000..b836cd09c03 --- /dev/null +++ b/Master/texmf-dist/tex/latex/hletter/hletg.clo @@ -0,0 +1,106 @@ +%% +%% This is an example of `hletg.clo' which is part of the hletter package +%% it should be rewritten by the user +%% +%% Copyright (C) 2011 Brian Housley +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.2 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.2 or later is part of all distributions of LaTeX +%% version 1999/12/01 or later. +%% +%% Problems, bugs and comments to +%% brian.housley@gcs.ch +%% + +% Letter options for German +% +% private -> 1 +% signit -> 2 +% bruni -> 3 +% test -> 4 +% +\ifcase\hltype +% case = 0 (no option - GCCS) + \addressA{Largitzenstrasse 15} + \addressB{CH--4056 Basel} + \addressC{Die Schweiz} + \extraA{Telefon: +41 (61) 345 78 90} + \extraB{Telefax: +41 (61) 345 78 92} + \extraC{eMail: info@gccs.com} + \bottomL{Bank: VCT Unterwil, CH--4220 Unterwil/BL} + \bottomR{Konto: 322--956123.02R} +\or +% case = 1 (private) + \address{Hauptstrasse 15\\ + \textbf{CH-4056 Basel}\\ + Die Schweiz\\[1ex] + \small Tel: +41 61 322 6382\\ + \small Fax: +41 61 383 8148\\ + \small Mobile: +41 76 337 4207\\ + \small eMail: brian.smith@epfl.ch} +\or +% case = 2 (signit) + \addressA{Largitzenstrasse 15} + \addressB{CH--4056 Basel} + \addressC{Die Schweiz} + \extraA{Telefon: +41 (61) 345 78 90} + \extraB{Telefax: +41\ (61) 345 78 92} + \extraC{eMail: info@gccs.com} + \bottomL{Bank: VCT Unterwil, CH--4220 Unterwil/BL} + \bottomR{Konto: 322--956123.02R} + \sign{signat} +\or +% case = 3 (bruni) + \addressA{Der Glockenturm} + \addressB{Hauptstrasse 54} + \addressC{Upper Throgmortondale} + \extraA{Telefon: +44 187 3546} + \extraB{Telefax: +44 187 3547} + \extraC{email: bruni@songs.flat.ac.uk} + \centreA{Songs written \& sung} + \centreB{Loudness no problem} + \centreC{Flats \& sharps used} + \centreD{\rule[.5ex]{16mm}{1pt}} + \centreE{Notes sometimes used} + \centreF{Spears may be hurled} + \centrepos{-10mm} + \bottomL{$\ast\ast\ast\ast\ast$} + \bottomC{Lullabies for children aged 7 to 70 our speciality} + \bottomR{$\ast\ast\ast\ast\ast$} + \sign[10mm]{signat} + \logo[50mm]{Bruennhilde} + \DeclareFixedFont{\newfa}{OT1}{phv}{m}{n}{12pt} + \DeclareFixedFont{\newfc}{OT1}{phv}{m}{sl}{10pt}\or +% case = 4 (test --- run with draft) + \logo{GlogoCol} + \addressA{\texttt{\char'134addressA}} + \addressB{\texttt{\char'134addressB}} + \addressC{\texttt{\char'134addressC}} + \extraA{\texttt{\char'134extraA}} + \extraB{\texttt{\char'134extraB}} + \extraC{\texttt{\char'134extraC}} + \centreA{\texttt{\char'134centreA}} + \centreB{\texttt{\char'134centreB}} + \centreC{\texttt{\char'134centreC}} + \centreD{\texttt{\char'134centreD}} + \centreE{\texttt{\char'134centreE}} + \centreF{\texttt{\char'134centreF}} + \centrepos{10mm} + \bottomL{\texttt{\char'134bottomL}} + \bottomC{\texttt{\char'134bottomC}} + \bottomR{\texttt{\char'134bottomR}} + \logo{test} + \sign{testsig} +\else +% all other cases (should never be used) + \addressA{?} + \addressB{?} + \addressC{?} + \extraA{Telephone: ?} + \extraB{Telefax: ?} + \extraC{eMail: ?} +\fi diff --git a/Master/texmf-dist/tex/latex/hletter/hletter.cls b/Master/texmf-dist/tex/latex/hletter/hletter.cls new file mode 100644 index 00000000000..f4b42a16e1f --- /dev/null +++ b/Master/texmf-dist/tex/latex/hletter/hletter.cls @@ -0,0 +1,128 @@ +%% +%% This is file `hletter.cls' which is part of the hletter package +%% +%% Copyright (C) 2011 Brian Housley +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.2 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.2 or later is part of all distributions of LaTeX +%% version 1999/12/01 or later. +%% +%% Problems, bugs and comments to +%% brian.housley@gcs.ch +%% + +% hletter document class +% +% Original: Copyright (C) 1991 by Leslie Lamport +% +% Modified version for Brian Housley -- V4.1 (2nd. July, 2011)/B. Housley +% A "from" address makes a private letter but +% if there is no "from" address the layout is: +% -------------------------------------------------------------------- +% | \centreA \addressA | +% | \centreB \addressB | +% | <the logo> \centreC \addressC | +% | \centreD \extraA | +% | \centreE \extraB | +% | \centreF \extraC | +% | | +% | | +% | <to-address> | +% | | +% | date | +% | opening | +% | | +% ................ +% | | +% | \bottomL \bottomC \bottomR | +% -------------------------------------------------------------------- +% . +% further options: +% \reference{<text>} bold text ontop for german and below for English +% \cc{<text>\\...} copies to +% \encl{<text>\\...} enclosure(s) +% \encls enclosures as mentioned +% \closingtwo{<text>} same as \closing but permits two names in \signature +% separated with &(s) +% +\NeedsTeXFormat{LaTeX2e}[1996/06/01] +\ProvidesClass{hletter}[2009/07/02 v4.0 Housley's letter class] + +\typeout{H-Letter class V4.0 <02/07/2009> hsy} + +\newif\ifhlet \hlettrue +\newdimen\signatureheight +\newcommand*{\sign}[2][15mm]{\global\signatureheight=#1 \gdef\signatureimage{#2}} \sign{} +% +\input hsetup.sty % input the definition of \heading +% +\setlength{\headsep}{25pt} +\setlength{\topmargin}{12pt} +\setlength{\parskip}{0pt plus 1pt} +\addtolength{\textwidth}{30pt} +\addtolength{\oddsidemargin}{-15pt} +\addtolength{\evensidemargin}{-15pt} +\raggedbottom + +\renewenvironment{letter}[1] + {\newpage + \if@twoside \ifodd\c@page + \else\thispagestyle{empty}\null\newpage\fi + \fi + \c@page \@ne + \c@footnote \z@ + \interlinepenalty=200 % smaller than the TeXbook value + \@processto{#1}} + {\stopletter\@@par\pagebreak\@@par + \if@filesw + \begingroup + \let\\=\relax + \let\protect\@unexpandable@protect + \immediate\write\@auxout{% + \string\@mlabel{\returnaddress}{\toname\\\toaddress}}% + \endgroup + \fi} + +\renewcommand*{\opening}[2][\@empty]{% +% parameters: 1- top right text; 2- introduction; 3- from address; 4- to address. + \dohead{#1}{#2}{\fromaddress}{\toname\\\toaddress} +% + \ifnum\hlangcnt=0\noindent #2\ifx\reftext\@empty\par\smallskip\else + \par\smallskip\noindent\parbox{\textwidth}{\centering\textbf{\reftext}}\par\smallskip\fi + \else + \ifx\reftext\@empty\else + \noindent\parbox{\textwidth}{\textbf{\reftext}}\par\medskip \fi + \noindent #2\par\medskip\fi} +% + +\renewcommand*{\closing}[1]{\par\medskip% + \ifx\undefined\sigbx \newbox\sigbx + \ifx\signatureimage\@empty + \global\setbox\sigbx\hbox{\rule{0pt}{15mm}}\else + \global\setbox\sigbx\hbox{\mbox{\rule[-7.5mm]{0pt}{15mm}\raisebox{-.5\height}% + {\includegraphics[height=\signatureheight]{\signatureimage}}}}\fi\fi +% \stopbreaks + \noindent + \hspace*{\fill}\begin{tabular}{c} + #1\\ + \copy\sigbx \\ + \fromsig\\ + \end{tabular}\hspace{.1\textwidth}% + \par\thispagestyle{empty}} + +\newcommand*{\closingtwo}[1]{\par\medskip% + \noindent + \hspace*{\fill}\begin{tabular}{@{}c@{\hspace{8\tabcolsep}}c@{}} + \multicolumn{2}{c}{#1}\\[15mm] + \fromsig\\ + \end{tabular}\hspace{.1\textwidth}% + \par\thispagestyle{empty}} + +\newcommand{\reference}[1]{\def\reftext{#1}} \reference{} +%\endinput +% +% end of file IDLETTER.CLS diff --git a/Master/texmf-dist/tex/latex/hletter/hsetup.sty b/Master/texmf-dist/tex/latex/hletter/hsetup.sty new file mode 100644 index 00000000000..a30401a3ac3 --- /dev/null +++ b/Master/texmf-dist/tex/latex/hletter/hsetup.sty @@ -0,0 +1,233 @@ +%% +%% This is file `hsetup.sty' which is part of the hletter package +%% +%% Copyright (C) 2011 Brian Housley +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.2 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.2 or later is part of all distributions of LaTeX +%% version 1999/12/01 or later. +%% +%% Problems, bugs and comments to +%% brian.housley@gcs.ch +%% + +% hsetup.sty +% ========== +% File to setup the headings for the hletter.cls and hhead.sty +% copyright - B. Housley, 2. July, 2011 +% You may make changes to this file if you rename it! +% +% +\RequirePackage{ifthen} +\RequirePackage{graphicx} +%\typeout{** hsetup.sty **} + +\newcount\hltype +\newlength{\logoheight} +\newcommand*{\logo}[2][24mm]{\setlength{\logoheight}{#1}\gdef\logoname{#2}} +\newcommand*{\newoption}[2]{\DeclareOption{#1}{\global\hltype=#2}% + \typeout{*** Option #2 has name #1}} +\newcommand*{\centrepos}[1]{\def\centreoffset{#1}} \centrepos{10mm} +% +% border parameters: +\newcommand*{\border}[3][40mm]{\logo[#2]{#3}% + \tmpdima=#1 \global\hl@logopos=\tmpdima + \global\divide \hl@logopos by\unitlength} +% +\newif\ifdraft \draftfalse +\def\hl@lang{e} +\newcount\hlangcnt +\newcount\hl@tmp +\newcount\hl@down +\newcount\hl@up +\newcount\hl@logopos \global\hl@logopos=30 +\newcount\hl@barpos \global\hl@barpos=3 +\newdimen\tmpdima +\newdimen\tmpdimb +\newdimen\hl@myln +% +\global\def\pindt{0pt} +% +\input hdefine.clo % read options for types of letter +% +\global\def\pindt{1.5em} +\DeclareOption{english}{\global\hlangcnt=0 \def\hl@lang{e}} +\DeclareOption{german}{\global\hlangcnt=1 \def\hl@lang{g}} +\DeclareOption{french}{\global\hlangcnt=2 \def\hl@lang{f}} +\DeclareOption{draft}{\drafttrue} +\ifhlet \DeclareOption*{\PassOptionsToClass{\CurrentOption}{letter}}\fi +\ProcessOptions\relax +\ifhlet \LoadClass[a4paper]{letter} +\ifdraft \setlength\overfullrule{5pt}\fi\fi +% +\ifnum\hlangcnt=0 \RequirePackage[french,german,british]{babel}% + \AtBeginDocument{\selectlanguage{british}}\fi +\ifnum\hlangcnt=1 \RequirePackage[english,french,german]{babel}\fi +\ifnum\hlangcnt=2 \RequirePackage[german,english,french]{babel}% + \addto\extrasfrench{\renewcommand{\enclname}{en annexe}% + \renewcommand{\ccname}{copie \`a}}\fi +% +\setlength{\parindent}{\pindt} +% +\setlength{\unitlength}{1mm} +% +% add some strange commands to use the to-address in a tabular even +% if it inside {..}'s (as in merge letters) +\def\dotoadd#1{\setbox0\hbox{\expandafter\cmda#1} \ifnum\myc=1\settoadd{#1}\else + \expandafter\settoadd#1\relax\fi} +\def\settoadd#1{\global\setbox\addrbox\hbox{\begin{tabular}{@{}l@{}}#1\end{tabular}}} + +\newcount\myc +\def\cmda#1{\global\myc=0 \cmdb#1\end} +\def\cmdb#1{\ifx#1\end \let\next=\relax + \else \global\advance\myc by1 \let\next=\cmdb\fi \next} +% +% declare some fonts for the header +% + \ifx\newfa\@undefined + \DeclareFixedFont{\newfa}{OT1}{phv}{bx}{n}{10pt} + \DeclareFixedFont{\newfb}{OT1}{phv}{bx}{n}{8pt} + \DeclareFixedFont{\newfc}{OT1}{phv}{m}{n}{8pt} \fi +% + \def\addressA#1{\def\hl@adda{#1}} \addressA{} + \def\addressB#1{\def\hl@addb{#1}} \addressB{} + \def\addressC#1{\def\hl@addc{#1}} \addressC{} + \def\extraA#1{\def\hl@extraa{#1}} \extraA{} + \def\extraB#1{\def\hl@extrab{#1}} \extraB{} + \def\extraC#1{\def\hl@extrac{#1}} \extraC{} + \def\centreA#1{\def\hl@centa{#1}} \centreA{} + \def\centreB#1{\def\hl@centb{#1}} \centreB{} + \def\centreC#1{\def\hl@centc{#1}} \centreC{} + \def\centreD#1{\def\hl@centd{#1}} \centreD{} + \def\centreE#1{\def\hl@cente{#1}} \centreE{} + \def\centreF#1{\def\hl@centf{#1}} \centreF{} + \def\bottomL#1{\def\hl@bottl{#1}} \bottomL{} + \def\bottomC#1{\def\hl@bottc{#1}} \bottomC{} + \def\bottomR#1{\def\hl@bottr{#1}} \bottomR{} + \InputIfFileExists{hlet\hl@lang.clo}{}{% + \typeout{**}\typeout{** clo file missing: substituting hlete.clo **}\typeout{**}% + \input hlete.clo} +% +\newbox\addrbox +%%%%%%%%%%%%%%%%%%%%%%% make the heading +\newcommand{\dohead}[4]{\cleardoublepage\thispagestyle{empty} +% parameters: 1- top right text; 2- introduction; 3- from address; 4- to address. +% + \let\oldbls=\baselinestretch % for the heading do not stretch the baseline + \renewcommand{\baselinestretch}{1.0}\small\normalsize + \global\hl@myln=79.6mm \global\advance\hl@myln by -\oddsidemargin\relax +% +%% \ifx#2\@empty \global\hl@down=3934474\else % used only in idhead.sty +%% \global\hl@down=12232300\fi % + \ifx#2\@empty \global\hl@down=3841240\else % 46mm - 1" used only in hhead.sty + \global\hl@down=12232300\fi % + \global\advance\hl@down by-\topmargin + \global\advance\hl@down by-\headheight + \global\advance\hl@down by-\headsep +% \global\advance\hl@down by-\topskip % should I use this? + \hl@tmp=\unitlength \divide\hl@tmp by2 + \global\advance\hl@down by \hl@tmp + \global\divide\hl@down by \unitlength +% + \ifx#2\@empty \ifnum\hl@logopos=30\dimen255=\logoheight \advance\dimen255 + by-24mm \count255=\dimen255 \divide\count255 by\unitlength + \ifnum\count255>0 \global\advance\hl@barpos by-\count255\else\count255=0\fi + \ifnum\hl@down<0 \global\hl@up=\hl@down \global\advance\hl@up by-\count255 + \global\hl@down=-\hl@down \global\advance\hl@down by \count255\else + \global\hl@up=-\count255 \global\advance\hl@down by\count255\fi\fi + \else + \ifnum\hl@down<0 \PackageWarningNoLine{hsetup}{** top-margin + seems to be too large **}\global\hl@down=0\fi + \fi +% + \noindent\hspace*{\hl@myln}% + \ifx#2\@empty + \begin{picture}(0,\hl@down)(0,\hl@up)\else + \begin{picture}(0,\hl@down)(0,-41)\fi +% +% un-comment next few lines to make a dash box around the picture contents +% +% \ifx#2\@empty \hl@tmp=\hl@down \advance\hl@tmp by 44 +% \put(-90,\hl@up){\dashbox{1}(180,\hl@tmp){}}\else +% \hl@tmp=\hl@down \advance\hl@tmp by 41 +% \put(-90,-41){\dashbox{1}(180,\hl@tmp){}}\fi +%% +% \ifx\@empty#1\else\put(95,40){\makebox(0,0)[tr]{\texttt{#1}}}\fi +%% +%\put(0,0){\circle*{1}} % when testing to see where the origin is +%\showthe\hl@down \showthe\hl@up % and what we calculated +% + \ifx#3\@empty +% +% header with logo +% + \ifx\logoname\@undefined\typeout{** no logo defined **}\else + \ifx\sealbx\@undefined \newbox{\sealbx} + \global\setbox\sealbx\hbox{\includegraphics[height=\logoheight]{\logoname}}\fi +% + \put(-90,\hl@logopos){\makebox(0,0)[tl]{\usebox{\sealbx}}}\fi + \put(90,30){\makebox(0,0)[tr]{% + \renewcommand{\arraystretch}{0.7}\begin{tabular}{@{}r@{}} + \ifx\@empty\hl@adda\else \newfa \hl@adda \\ \fi + \ifx\@empty\hl@addb\else \newfb \hl@addb \\ \fi + \ifx\@empty\hl@addc\else \newfb \hl@addc \\ \fi + \rule{0pt}{.8em}% + \ifx\@empty\hl@extraa\else \newfc \hl@extraa \\ \fi + \ifx\@empty\hl@extrab\else \newfc \hl@extrab \\ \fi + \ifx\@empty\hl@extrac\else \newfc \hl@extrac \\ \fi + \end{tabular}}} + \tmpdima=\centreoffset + \ifnum\tmpdima<0 \advance\tmpdima by-.5mm\else\advance\tmpdima by.5mm\fi + \hl@tmp=\tmpdima + \divide\hl@tmp by\unitlength + \put(\hl@tmp,30){\makebox(0,0)[tl]{% + \renewcommand{\arraystretch}{0.7}\begin{tabular}{@{}l@{}} + \ifx\@empty\hl@centa\else \newfa \hl@centa \\ \fi + \ifx\@empty\hl@centb\else \newfb \hl@centb \\ \fi + \ifx\@empty\hl@centc\else \newfb \hl@centc \\ \fi + \rule{0pt}{.8em}% + \ifx\@empty\hl@centd\else \newfc \hl@centd \\ \fi + \ifx\@empty\hl@cente\else \newfc \hl@cente \\ \fi + \ifx\@empty\hl@centf\else \newfc \hl@centf \\ \fi + \end{tabular}}} + \ifx\@empty\hl@bottl\else \put(-90,-244){\makebox(0,0)[bl]{\newfc\hl@bottl}}\fi + \ifx\@empty\hl@bottc\else \put(0,-244){\makebox(0,0)[b]{\newfc \hl@bottc}}\fi + \ifx\@empty\hl@bottr\else \put(90,-244){\makebox(0,0)[br]{\newfc\hl@bottr}}\fi +\else +% private letter + \hl@tmp=\hl@myln + \divide\hl@tmp by \unitlength% + \put(-\hl@tmp,20){\makebox(0,0)[tl]{\begin{tabular}{@{}l@{}}#3\end{tabular}}}\fi +% now do a bar if a header only otherwise the to-address + \ifx#2\@empty \thicklines + \ifnum\hl@bar=0\else\put(0,\hl@barpos){\line(1,0){\hl@bar}} + \put(0,\hl@barpos){\line(-1,0){\hl@bar}}\global\hl@barpos=3\fi + \end{picture}\par + \else + \dotoadd{#4} + \settowidth{\tmpdima}{\copy\addrbox} + \ifthenelse{\lengthtest{\tmpdima>94mm}}{% + \ClassWarningNoLine{hletter}{** Address too wide for window **}}% +% + {\settoheight{\tmpdima}{\copy\addrbox} + \settodepth{\tmpdimb}{\copy\addrbox} + \addtolength{\tmpdima}{\tmpdimb} +% + \ifthenelse{\lengthtest{\tmpdima>44mm}}{% + \ClassWarningNoLine{hletter}{** Address too high for window **}}{}% + } + \ifdraft\put(7,-41){\framebox(94,44){}}\fi + \put(53.5,-20.5){\makebox(0,0){\copy\addrbox}} + \linethickness{.2pt} + \put(-104.5,-105){\line(1,0){8}} + \put(-104.5,-63.5){\line(1,0){5}} + \end{picture}\par + \smallskip + \hfill\@date\par + \fi +\bigskip \renewcommand{\baselinestretch}{\oldbls}\small\normalsize +} % end of dohead diff --git a/Master/texmf-dist/tex/latex/hletter/mergeh.sty b/Master/texmf-dist/tex/latex/hletter/mergeh.sty new file mode 100644 index 00000000000..91de1cd949b --- /dev/null +++ b/Master/texmf-dist/tex/latex/hletter/mergeh.sty @@ -0,0 +1,188 @@ +%% [merge.sty] +%% +%% MERGE -- A Form Letter Option to the LaTeX Letter Style +%% +%% by +%% +%% Graeme McKinstry +%% Computing Services Centre +%% University of Otago +%% P O Box 56 +%% Dunedin, New Zealand +%% +%% graeme%otago.ac.nz@relay.cs.net +%% +%% This version has been slightly modified to ignore lines with a % in +%% the first column of the address data --- but after the first entry. +%% I renamed it 'mergeh.sty' Brian Housley, 27/07/09 +%% +%% A version of these macros appeared in TUGboat 8 #1, April 1987. +%% +%% Merge is a substyle [option] under the Latex style 'Letter' which +%% merges a standard letter with a separate file containing addresses +%% and opening lines. Merge will read {address}{opening} pairs from a +%% specified file and merge them with a form letter by producing a separate +%% letter environment (containing unique "\begin{letter}{address}" and +%% "\opening{opening}" commands) for each pair. +%% +%% Detailed instructions for preparation of the form letter and the +%% separate address file appear below, after the macros. +%% +%% +%% 27 July 1988 +%% Special Thanks go to B. Beeton (BNB@SEED.AMS.COM) for +%% -- supplying the raw TeX and documentation from the TUGBoat article; +%% -- adding some documentation; +%% -- and for placing this file in the <tex.tugboat> archives at score. +%% +%% 28 July 1988 +%% C. Roberson (csrobe@icase.[arpa|edu], csrobe@[wm]cs.wm.edu) +%% -- some additional documentation (mostly cleanup for .sty file); +%% -- changed ID message to a form more similar to LaTeX's; +%% -- changed "Could not open file" to "Could not open address file" +%% so user would better understand for which filename TeX +%% was prompting with the string "\@mergefile="; +%% -- tested merge.sty; It works! Thanks, Graeme! +%% -- submitted file to /public/latex-style archives @ cs.rochester.edu. +%% +%% 6 September 1988 +%% G. McKinstry +%% -- enhanced the macros to handle running headlines properly; +%% -- fixed some other problems from the original version not addressed +%% fully by C. Roberson; +%% -- submitted new file to the latex-style archives. +%% +%% 11 August 2011 +%% B. Housley +%% -- a small change to ignore line beginiing with a % AFTER the first address +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +% csr - changed next line to conform more to LaTeX greeting. +\typeout{Letter Sub-Style 'Merge'. Release 6 October 1986 by Graeme McKinstry} + +%% The basic algorithm is: +%% 1. Open the address file. +%% 2. Read the addresses file getting the address and opening line. +%% 3. Process the contents of the MERGE environment and store it +%% in a box (\@store). This is the standard part of the letter. +%% 4. Produce the start of the letter (your address (including date), +%% their address, and the opening line). +%% 5. Make a copy of the standard letter (\@store) and unbox this copy. +%% 6. Repeat steps 2, 4, and 5 (not 3) until there are no more addresses. + + +\newbox\@store +\long\def\@contents{\global\setbox\@store=\vbox\bgroup} % store the contents +\long\def\@endcontents{\egroup} % of the letter + +\def\@sendaddress{test} +\def\@openingtext{test} +\newif\if@firsttime % For storing the standard letter +\@firsttimetrue % the first time through. + +\newread\@addrfile % allocate an input stream + +\def\@openfile{\openin\@addrfile=\@mergefile % open the address file +\ifeof\@addrfile % i.e., didn't open successfully + \loop + \immediate\write16{Could not open address file \@mergefile} + \closein\@addrfile % close the input stream + \read16 to \@mergefile % get another file name + \openin\@addrfile=\@mergefile % open up input stream + \ifeof\@addrfile + \repeat % repeat until successfully opened +\fi} + +% The merge environment (used as the \begin{merge}. The argument (#1) is +% the name of the file containing the addresses (a default of .tex extension) +% This file is opened (\@openfile), read (\@readfile), and then the box +% containing the contents of the standard letter is started (\@contents). + +\def\merge#1{\def\@mergefile{#1 }\@openfile + \@readfile + \@contents} + +% Read address file getting the address and opening line. If this is the +% first through then there is no reason to call \endmerge as this will +% be called later on (when \end{merge} is used). + +\def\@getopeningline{\global\read\@addrfile + to\@openingtext} % get the opening line +\def\perc{\%} +\def\@readfile{\global\read\@addrfile to\@sendaddress % get the address + \ifeof\@addrfile + \let\next=\relax + \else + \ifcat\perc\@sendaddress \else + \@getopeningline + \if@firsttime + \let\next=\relax + \else + \let\next=\endmerge + \fi\fi + \fi\next} + +\newbox\@letterbox % For copy of \@store (the box containing the standard + % letter. +\def\endmerge{\if@firsttime\@endcontents\global\@firsttimefalse\fi % + % end contents if it is the first time + \bgroup\let\oldletter=\letter + \def\letter##1\@relax{\oldletter{##1}} % redefines letter + \expandafter\letter\@sendaddress\@relax % need to expand \@sendaddress +% \opening{\@openingtext\vskip2\parskip} % I do the spacing myself + \opening{\@openingtext} + \setbox\@letterbox=\copy\@store % copy the contents of the letter + \unvbox\@letterbox + \endletter\egroup + \ifeof\@addrfile + \message{End of file} + \let\next=\relax + \else + \let\next=\@readfile % loop round yet again + \fi\next} + +\endinput + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% A letter, say LETTER.TEX, would be set up as follows: + +%% \documentstyle[merge]{letter} +%% +%% \address{...} % your address +%% \signature{...} % your signature +%% +%% \begin{document} +%% \begin{merge}{myaddresses} % MYADDRESSES.TEX contains addresses+openings +%% +%% With regard to .... % letter starts +%% +%% \closing{...} % closing +%% \ps{...} % \ps, \encl, \cc, etc. +%% +%% \end{merge} +%% \end{document} + +%% The address file, MYADDRESSES.TEX, would contain: + +%% {Computing Services Centre, \\ % first address +%% University of Otago, \\ +%% Dunedin, \\ +%% New Zealand} +%% {Dear Graeme,} % \opening for first address +%% {Charles S. Roberson\\ % next address +%% Dept. of Computer Science\\ +%% College of William and Mary\\ +%% Williamsburg, VA 23185} +%% {Dear Chip,} % next \opening +%% .... % etc. + +%% NOTES: +%% Braces are matched, except that if the input is only one line then it +%% is not necessary to contain it within braces. +%% It is important to leave NO BLANK LINES at the end of the address file. +%% Be sure to supply the "\\" for breaking the addresses. -csr + +%% [merge.sty] |