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/hsetup.sty | |
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/hsetup.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/hletter/hsetup.sty | 233 |
1 files changed, 233 insertions, 0 deletions
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 |