LLEENE-Latex-Templates/impletter.cls
Lieuwe B. Leene 0370c5ba1c
Merge to git (#1)
* Minor cleanup and added new beamer style

* minor update to file organization

* Use unix line endings

---------

Co-authored-by: Lieuwe Leene <lieuwe@leene.dev>
2024-01-02 19:06:28 +01:00

218 lines
6.3 KiB
TeX

% Imperial College London letterhead class
% LdC Foulkes January 2003
%
% Modified by James Keirstead, June 2014
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{impletter}[2014/06/19 Imperial College Letter]
\LoadClass[a4paper]{article}
\RequirePackage{fancyhdr}
\RequirePackage{ifthen}
% Load last because it has the hyperref loading in it
\RequirePackage{imperial-common}
\RequirePackage{lastpage}
% Blank paper
\DeclareOption{blank}{%
\pagestyle{fancy}
\lhead{%
\resizebox{52.5mm}{!}{\placelogocmd}}%
\renewcommand\headrulewidth{0pt}
\lfoot{%
\vspace*{10.5mm}
\hspace*{-1.8mm}
\fontsize{9}{11pt}%\usefont{OT1}{cmss}{m}{n}
\Organisation}%
\cfoot{}
\rfoot{%
\vspace*{10.5mm}
\fontsize{9}{11pt}%\usefont{OT1}{cmss}{m}{n}
\FirstName~\LastName~\:\:
\thepage{}\,/\,\pageref*{LastPage}}%
}%
% % Personalised letterhead paper
\DeclareOption{headed}{%
\pagestyle{empty}
}%
% Logo only paper
\DeclareOption{logo}{%
\pagestyle{empty}
}
\DeclareOption{landscape}{\OptionNotUsed}
\DeclareOption{twoside}{\OptionNotUsed}
\DeclareOption{titlepage}{\OptionNotUsed}
\DeclareOption{twocolumn}{\OptionNotUsed}
\DeclareOption{openbib}{\OptionNotUsed}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
% Use the \pagestyle{empty} option as the default if nothing is given.
\ExecuteOptions{headed}
\ProcessOptions\relax
% Set the appropriate font type, font size, and lengths
%\renewcommand{\normalsize}{\fontsize{12}{16pt}}%\usefont{OT1}{cmss}{m}{n}}
\setlength{\paperheight}{297mm}
\setlength{\paperwidth}{210mm}
\setlength{\voffset}{-25.4mm}
\setlength{\topmargin}{9mm}
\setlength{\evensidemargin}{-1pt}
\setlength{\oddsidemargin}{-1pt}
\setlength{\textheight}{220mm}
\setlength{\textwidth}{160mm}
\setlength{\headheight}{15.5mm}
\setlength{\headsep}{23mm}
\setlength{\footskip}{10.6mm}
\setlength{\parindent}{0mm}
\setlength{\parskip}{3mm}
%%%%%%%%%%%%%%%% Adjustment Parameters %%%%%%%%%%%%%%%%%%%%%%%%%%%
% The letter has to have have the following (measured from the top):
% The bottom of the word 'Imperial' in the logo at 15mm
% The bottom of the date at 51mm
% The bottom of the 1st address line at 63mm
% The bottom of the salutation at 105mm
% The bottom of the department line (top right) at 12mm
% The bottom of the statutory footer 5.5mm from the bottom
% The bottom of the first line of text on the second page at 51mm
% The margin at the left of the text should be 25mm
% The sender's detail (top right block) should be 90mm from the
% right edge.
% The following are adjustable parameters to account for printer
% differences. The values can be given in mm or pt
% (a point is about .35 of a mm).
% To move the printed page up (minus value) or down (plus value):
\addtolength{\topmargin}{0mm}
% To move the printed text to the right (plus) or left (minus).
\addtolength{\evensidemargin}{0pt}
\addtolength{\oddsidemargin}{0pt}
% To move the statutory footer up (minus) or down (plus) - useful
% if the printer will not print so close to the bottom of the page
\addtolength{\footskip}{0mm}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% TeX parameters to account for odd formatting of headers
\hbadness=10000 % Ignore underfull boxes
\hfuzz=28mm % Allow over the margin text - needed for sender details
%\informal is like ragged right, but allows hyphen breaks and does not
%produce such extreme differences in line lengths.
\def\informal{\rightskip\z@ plus\tw@ em\dimen@\the\fontdimen4\the
\font\spaceskip\the\fontdimen\tw@\the\font minus .6\dimen@\xspaceskip
\spaceskip\multiply\xspaceskip\thr@@\divide\xspaceskip\tw@
\hyphenpenalty\@medpenalty\exhyphenpenalty\@highpenalty\let\informal\relax}
\newcommand{\@dept}{}
\newcommand{\dept}[1]{\renewcommand{\@dept}{#1}}
\newcommand{\@address}{}
\newcommand{\address}[1]{\renewcommand{\@address}{#1}}
\newcommand{\@telephone}{}
\newcommand{\telephone}[1]{\renewcommand{\@telephone}{#1}}
\newcommand{\@fax}{}
\newcommand{\fax}[1]{\renewcommand{\@fax}{#1}}
\newcommand{\@email}{}
\newcommand{\email}[1]{\renewcommand{\@email}{#1}}
\newcommand{\@web}{}
\newcommand{\web}[1]{\renewcommand{\@web}{#1}}
\newcommand{\@nametitle}{}
\newcommand{\nametitle}[1]{\renewcommand{\@nametitle}{#1}}
\newcommand{\@postnoms}{}
\newcommand{\postnoms}[1]{\renewcommand{\@postnoms}{#1}}
\newcommand{\@jobtitle}{}
\newcommand{\jobtitle}[1]{\renewcommand{\@jobtitle}{#1}}
\newcommand{\@signature}{}
\newcommand{\signature}[1]{\renewcommand{\@signature}{#1}}
\newlength{\sigwidth}
\setlength{\sigwidth}{2in}
% Header for personalised letterhead consists of a table with
% one paragraph box
\newcommand{\header}[2]{
\begin{tabular}{@{}p{95mm}}
% left box with date, address and salutation
\vspace*{-3.5mm}
\begin{minipage}[t]{95mm}
\fontsize{12}{16pt}%\usefont{OT1}{cmss}{m}{n}
\today\\ % date at 51mm
\vspace*{1mm}
#1 % addressee at 63mm
\vspace*{8mm}
#2 % salutation at 105
\end{minipage}
\end{tabular}
}
\newcommand{\phoneicon}{\includegraphics[width=10pt]{Style/phone.pdf}}
\newcommand{\emailicon}{\includegraphics[width=10pt]{Style/envelope.pdf}}
% Header for logo and blank paper consists of a table with two paragraph boxes.
\newcommand{\headers}[2]{
\begin{tabular}{@{}p{95mm}@{}p{90mm}}
% left box with date, address and salutation
\vspace*{-3.5mm}
\begin{minipage}[t]{95mm}
\fontsize{12}{16pt}%\usefont{OT1}{cmss}{m}{n}
\today\\ % date at 51mm
\vspace*{1mm}
#1 % addressee at 63mm
\vspace*{8mm}
#2 % salutation at 105
\end{minipage}
&
% right box with college details of sender
\begin{minipage}[t]{90mm}
\vspace*{-41.3mm}
\fontsize{9}{11pt}%\usefont{OT1}{cmss}{m}{n}
\@dept\\
\college\\
\@address\\
\phoneicon\ \@telephone\ifthenelse{\equal{\@fax}{}}{}{, Fax \@fax}\\
\emailicon\ \href{mailto:\@email}{\textcolor{black}{\@email}}\\
\href{http://\@web}{\textcolor{black}{\@web}}\\
% \vspace*{4mm}\\
\fontsize{11}{11pt}%\usefont{OT1}{cmss}{m}{n}
\textbf{\@nametitle\ \@author}
\fontsize{7}{11pt}%\usefont{OT1}{cmss}{m}{n}
\textsc{\@postnoms}\\
\fontsize{9}{11pt}%\usefont{OT1}{cmss}{m}{n}
\@jobtitle\\
\end{minipage}
\end{tabular}
}
% Command to add the closing and sender's name
\newcommand{\close}[1]{
\begin{minipage}[t]{100mm}
#1
\ifthenelse{\equal{\@signature}{}}{%
\vspace{18mm}
}{%
\includegraphics[width=\sigwidth]{\@signature}
}
\@author
\end{minipage}
}
% Added flexibility to keep vertical formatting constant
\raggedbottom