\NeedsTeXFormat{LaTeX2e} \ProvidesClass{wmletterhead}[2014/12/15 provides LaTeX WM letter head class] % Created by Eugeniy E. Mikhailov % v1.0 2014/12/15 % Note logo files belong to W&M % 'wmletterhead' class accepts all options of the 'letter' class and the following % additional options which specify the header logo % prior2014dec - old logo prior 2014 % fullcolor - (default) full color logo with yellowish WM cypher % black - all black logo % green - all green logo % white - all white logo (quite use less on white background) % nologo - do not show logo image % DEFAULT options: [fullcolor] % Recomended use: % \documentclass[12pt,fullcolor]{wmletterhead} \RequirePackage{xcolor} \RequirePackage{ifthen} % -------------------------------------------------- % Global flag \newif\iflogo % by default we want logo \logotrue % -------------------------------------------------- % Tagline color since December 2014 \definecolor{WMgold}{rgb}{0.73,0.59,0.36} % -------------------------------------------------- % New length to be used for WM specific things % Page layout specific \newlength{\wmtopmargin} % start position for address or logo \newlength{\wmleftmargin} \newlength{\wmrightmargin} \newlength{\wmbottommargin} \newlength{\wmlogoseparation} % distance between logo/from address to the main letter % WM logos parameters \newlength{\wmlogoheight} \newlength{\wmlogoWhpos} % distance from the left logo edge to the 'W' in William \newlength{\wmlogoWvpos} % distance from the top logo edge to the 'W' in William % -------------------------------------------------- % internal use sizes to lineup logo and from (W&M) address \newlength{\wmaddressheight} % to be calculated at the opening % -------------------------------------------------- % set page layout for one-line template \newcommand*{\setonelinelayout}[1]{ % first parameter intended to be used for layout switch \def\@layout{#1}% % -------------------------------------------------- % logo related settings \setlength{\wmlogoheight}{0.65in} \setlength{\wmlogoWhpos}{0in}% same as above \setlength{\wmlogoWvpos}{0in}% same as above % default page layout parameters \setlength{\wmlogoseparation}{0.5in} % header text from main text separation \setlength{\wmleftmargin}{1.0in} \setlength{\wmrightmargin}{1.0in} \setlength{\wmbottommargin}{1.0in} % guessed \setlength{\wmtopmargin}{1.0in} \colorlet{wmtaglinecolor}{black} % -------------------------------------------------- % Now let's define/modify a particular layout % esssentially this programs a 'switch' construct \ifthenelse{\equal{\@layout}{prior2014dec}}{ %use defaults }{ % nothing to do in the else case } \ifthenelse{\equal{\@layout}{2014}}{ % below are measured in the Word template \setlength{\wmlogoheight}{0.65in} \setlength{\wmlogoWhpos}{0.82in}% same as above \setlength{\wmlogoWvpos}{.15in}% same as above % -------------------------------------------------- % Required by WM \setlength{\wmlogoseparation}{0.5in} % header text from main text separation \setlength{\wmleftmargin}{1.64in} \setlength{\wmrightmargin}{1.0in} \setlength{\wmbottommargin}{1.0in} % guessed \setlength{\wmtopmargin}{1.0in} \colorlet{wmtaglinecolor}{WMgold} }{ % nothing to do in the else case } } \setonelinelayout{default} % set page layout defaults %-------------- define WM header logo file --------------------------------- \providecommand{\wmheaderlogo}{}% no logo % this is prior December 2014 logo with Wren building \DeclareOption{nologo}{% \renewcommand{\wmheaderlogo}{}% no logo \logofalse \setonelinelayout{default}% } % this is prior December 2014 logo with Wren building \DeclareOption{prior2014dec}{% \renewcommand{\wmheaderlogo}% {wmlogos/wmheader2012}% \setonelinelayout{prior2014dec}% } % full colored logo starting from December 2014 \DeclareOption{fullcolor}{% \renewcommand{\wmheaderlogo}% {wmlogos/wm_horizontal_single_line_full_color}% \setonelinelayout{2014}% } % green logo starting from December 2014 \DeclareOption{green}{% \renewcommand{\wmheaderlogo}% {wmlogos/wm_horizontal_single_line_green}% \setonelinelayout{2014}% } % black logo starting from December 2014 \DeclareOption{black}{% \renewcommand{\wmheaderlogo}% {wmlogos/wm_horizontal_single_line_black}% \setonelinelayout{2014}% } % black logo starting from December 2014 \DeclareOption{white}{% \renewcommand{\wmheaderlogo}% {wmlogos/wm_horizontal_single_line_white}% \setonelinelayout{2014}% } %-------------- end of define WM header logo file ------------------------------ % by default all unknown options are passed to 'letter' class \DeclareOption*{\PassOptionsToClass{\CurrentOption}{letter}} % DEFAULT options \ExecuteOptions{fullcolor} \ProcessOptions\relax \LoadClass{letter} \RequirePackage{calc} \RequirePackage{graphicx} \RequirePackage{geometry} % easy page layout manipulation \RequirePackage{fancyhdr} % Headers ! \colorlet{wmtaglinecolor}{black} % -------------------------------------------------- % Change the letter class default for signature indent \setlength{\longindentation}{0pt} % this is indent of signature % -------------------------------------------------- % Let's calculate/set page layout \geometry{ letterpaper, top=\wmtopmargin, left=\wmleftmargin, right=\wmrightmargin, bottom=\wmbottommargin, marginparwidth=0in, marginparsep=0in, %showframe % this shows layout frames } % ------------------------------------------------------------------- %% WM fancy letter head definition \newcommand{\wmaddress}{ \ifx\@empty\fromaddress {} \else \begin{tabular}{l@{}}\ignorespaces \fromaddress% \end{tabular}% \fi } \newcommand{\setwmaddresssizes}{ \settoheight{\wmaddressheight}{\hbox{\wmaddress}}% } \newcommand{\wmfromwithlogo}{ \setwmaddresssizes \iflogo \raisebox{\wmaddressheight-\wmlogoheight+\wmlogoWvpos}[\wmaddressheight]{ \hskip -\wmlogoWhpos% \includegraphics[height=\wmlogoheight{},keepaspectratio=true]{\wmheaderlogo}% } \else% % do nothing \fi% \hfill\wmaddress{}% } % ------------------------------------------------------------------- % This takes care of WM tagline which we will put in the central footer \newcommand*{\tagline}[1]{\def\lettertagline{#1}} \tagline{} % ------------------------------------------------------------------- % fancyheader definitions \fancypagestyle{empty}{% looks like this has no effect for the letter class \renewcommand{\headrulewidth}{0pt} \fancyfoot[C]{\thepage}% } \fancypagestyle{plain}{% this takes care of the 2nd and the following pages \renewcommand{\headrulewidth}{0pt} \fancyfoot[C]{\thepage}% } \fancypagestyle{firstpage}{% this is the very first page style \renewcommand{\headrulewidth}{0pt} \ifx\lettertagline\@empty \fancyfoot[C]{\thepage}% \else \fancyfoot[C]{{\color{wmtaglinecolor}\lettertagline}\\\thepage}% \fi } % Important! if changed expect trouble with pages 2, 3, ... headers/footers \pagestyle{plain} % ------------------------------------------------------------------- % Now let redefine opening so address goes to the right of logo \renewcommand*{\opening}[1]{ \setwmaddresssizes \thispagestyle{firstpage}% \wmfromwithlogo \vskip \wmlogoseparation {\raggedleft\@date\par}% {\raggedright \toname \\ \toaddress \par}% %\vspace{2\parskip}% #1\par\nobreak} % ------------------------------------------------------------------- % vim: tabstop=2 shiftwidth=2 expandtab