% Copyright 2007 by
% Philippe Dreuw <dreuw@cs.rwth-aachen.de> and
% Thomas Deselaers <deselaers@cs.rwth-aachen.de>
% Slight modifications made in August 2009 by Nathaniel Johnston (nathaniel@nathanieljohnston.com)
%
% This file may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU Public License.
%
%
% ChangeLog:
%
% 1.07 - bugfixed custom size handling, portrait or landscape settings are ignored now
% 1.06 - added the type1cm package for scalable math fonts
% 1.05 - added version check for xkeyval package
% 1.04 - added custom size handling
% 1.03 - improved predefined size handling
% 1.02 - minor bugfixes
% 1.01 - bugfixed size handling
% 1.00 - first beamerposter release
%
\def\beamerposter@version{1.07}
\def\beamerposter@date{2008/03/11}
\def\beamerposter@msg{beamerposter: latex-beamer poster extension}
\typeout{Package: \beamerposter@date. v.\beamerposter@version. \beamerposter@msg}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamerposter}[\beamerposter@date. v.\beamerposter@version. \beamerposter@msg]
\RequirePackage{xkeyval}[2006/11/18]
\RequirePackage{type1cm} %% get it from ftp://cam.ctan.org/tex-archive/macros/latex/contrib/type1cm.zip
\newif\ifportrait
\newif\ifcustomsize
\newif\ifdebug
\DeclareOptionX{size}[a0]{
\typeout{beamerposter: checking size input, please wait.}
\XKV@cc*+[\val\nr]{#1}{a0b,a0,a1,a2,a3,a4,custom}{%
\typeout{beamerposter: the input \val\ \nr\ was correct, we proceed.}
\ifcase\nr\relax
%a0b
\setlength{\paperheight}{119cm}
\setlength{\paperwidth}{88cm}
\setlength{\textheight}{116cm}
\setlength{\textwidth}{88cm}
\or
%a0
\setlength{\paperheight}{118.82cm}
\setlength{\paperwidth}{83.96cm}
\setlength{\textheight}{117.82cm}
\setlength{\textwidth}{82.96cm}
\or
%a1
\setlength{\paperheight}{83.96cm}
\setlength{\paperwidth}{59.4cm}
\setlength{\textheight}{82.96cm}
\setlength{\textwidth}{58.4cm}
\or
%a2
\setlength{\paperheight}{59.4cm}
\setlength{\paperwidth}{41.98cm}
\setlength{\textheight}{58.4cm}
\setlength{\textwidth}{40.98cm}
\or
%a3
\setlength{\paperwidth}{41.98cm}
\setlength{\paperheight}{29.7cm}
\setlength{\textwidth}{40.98cm}
\setlength{\textheight}{28.7cm}
\or
%a4
\setlength{\paperheight}{29.7cm}
\setlength{\paperwidth}{21.0cm}
\setlength{\textheight}{28.7cm}
\setlength{\textwidth}{20.0cm}
\or
\customsizetrue
\fi
}{%
\PackageWarning{beamerposter}{the input \val\ was incorrect and was ignored.}
}%
\typeout{beamerposter: finished size input check.}
}
\DeclareOptionX{orientation}[portrait]{
\typeout{beamerposter: checking orientation input, please wait.}
\XKV@cc*+[\val\nr]{#1}{portrait,landscape}{%
\typeout{beamerposter: the input \val\ \nr\ was correct, we proceed.}
\ifcase\nr\relax
\portraittrue
\or
\portraitfalse
\fi
}{%
\PackageWarning{beamerposter}{the input \val\ was incorrect and was ignored.}
}%
\typeout{beamerposter: finished orientation check.}
}
\DeclareOptionX{scale}[1.0]{\edef\myfontscale{#1}\typeout{beamerposter: myfontscale=\myfontscale}}
\DeclareOptionX{width}{\edef\customwidth{#1}\typeout{beamerposter: custom poster width=\customwidth}}
\DeclareOptionX{height}{\edef\customheight{#1}\typeout{beamerposter: custom poster height=\customheight}}
\DeclareOptionX{debug}{\typeout{beamerposter: enabled debug mode}\debugtrue}
\DeclareOptionX*{\PackageWarning{beamerposter}{Unknown option ignored: \CurrentOption}}
%\DeclareOptionX*{\PassOptionsToClass{\CurrentOption}{beamer}}
\ExecuteOptionsX{size=a0,scale=1.0}
\ProcessOptionsX\relax
\ifdebug
\RequirePackage[debug]{fp}
\else
\RequirePackage{fp}
\fi
%% swap sizes for portrait orientation
\ifportrait
\newdimen\tmp
\setlength{\tmp}{\paperwidth}
\setlength{\paperwidth}{\paperheight}
\setlength{\paperheight}{\tmp}
\setlength{\tmp}{\textwidth}
\setlength{\textwidth}{\textheight}
\setlength{\textheight}{\tmp}
\else\relax
\fi
%% overwrite dimensions if custom size
\ifcustomsize
\setlength{\paperwidth}{\customwidth cm}
\setlength{\paperheight}{\customheight cm}
\FPupn{\resulttextwidth}{1 customwidth -}
\FPupn{\resulttextheight}{1 customheight -}
\setlength{\textwidth}{\resulttextwidth cm}
\setlength{\textheight}{\resulttextheight cm}
\fi
%% Setting proper dimensions for a DIN A0 printer
\setlength{\headheight}{0 cm}
\setlength{\headsep}{0 cm}
\setlength{\topmargin}{-12.7 mm} % -1in +1.47cm
\setlength{\oddsidemargin}{-25.4 mm} % -1in +0.4cm
%% For the page layout
\ifdebug
\typeout{beamerposter: paperwidth=\the\paperwidth, paperheight=\the\paperheight}
\typeout{beamerposter: textwidth=\the\textwidth, textwidth=\the\textheight}
\fi
\geometry{
paperwidth=\the\paperwidth,
paperheight=\the\paperheight,
hmargin=1cm,%
vmargin=0cm,%
head=0.5cm, %
headsep=0pt,%
foot=0.5cm %
}
%% scalable vector fonts
\edef\fontSizeX{14.4}\edef\fontSizeY{18}
\FPupn{\resultscriptsizeX}{myfontscale fontSizeX * 2 round}
\FPupn{\resultscriptsizeY}{myfontscale fontSizeY * 2 round}
\renewcommand*{\tiny}{\fontsize{\resultscriptsizeX}{\resultscriptsizeY}\selectfont}
\edef\fontSizeX{17.28}\edef\fontSizeY{22}
\FPupn{\resultfootnotesizeX}{myfontscale fontSizeX * 2 round}
\FPupn{\resultfootnotesizeY}{myfontscale fontSizeY * 2 round}
\renewcommand*{\scriptsize}{\fontsize{\resultfootnotesizeX}{\resultfootnotesizeY}\selectfont}
\edef\fontSizeX{20.74}\edef\fontSizeY{25}
\FPupn{\resultsmallX}{myfontscale fontSizeX * 2 round}
\FPupn{\resultsmallY}{myfontscale fontSizeY * 2 round}
\renewcommand*{\footnotesize}{\fontsize{\resultsmallX}{\resultsmallY}\selectfont}
\edef\fontSizeX{24.88}\edef\fontSizeY{30}
\FPupn{\resultnormalsizeX}{myfontscale fontSizeX * 2 round}
\FPupn{\resultnormalsizeY}{myfontscale fontSizeY * 2 round}
\renewcommand*{\small}{\fontsize{\resultnormalsizeX}{\resultnormalsizeY}\selectfont}
\edef\fontSizeX{29.86}\edef\fontSizeY{37}
\FPupn{\resultlargeX}{myfontscale fontSizeX * 2 round}
\FPupn{\resultlargeY}{myfontscale fontSizeY * 2 round}
\renewcommand*{\normalsize}{\fontsize{\resultlargeX}{\resultlargeY}\selectfont}
\edef\fontSizeX{35.83}\edef\fontSizeY{45}
\FPupn{\resultLargeX}{myfontscale fontSizeX * 2 round}
\FPupn{\resultLargeY}{myfontscale fontSizeY * 2 round}
\renewcommand*{\large}{\fontsize{\resultLargeX}{\resultLargeY}\selectfont}
\edef\fontSizeX{43}\edef\fontSizeY{54}
\FPupn{\resultLARGEX}{myfontscale fontSizeX * 2 round}
\FPupn{\resultLARGEY}{myfontscale fontSizeY * 2 round}
\renewcommand*{\Large}{\fontsize{\resultLARGEX}{\resultLARGEY}\selectfont}
\edef\fontSizeX{51.6}\edef\fontSizeY{64}
\FPupn{\resulthugeX}{myfontscale fontSizeX * 2 round}
\FPupn{\resulthugeY}{myfontscale fontSizeY * 2 round}
\renewcommand*{\LARGE}{\fontsize{\resulthugeX}{\resulthugeY}\selectfont}
\edef\fontSizeX{61.92}\edef\fontSizeY{77}
\FPupn{\resultHugeX}{myfontscale fontSizeX * 2 round}
\FPupn{\resultHugeY}{myfontscale fontSizeY * 2 round}
\renewcommand*{\huge}{\fontsize{\resultHugeX}{\resultHugeY}\selectfont}
\edef\fontSizeX{74.3}\edef\fontSizeY{93}
\FPupn{\resultveryHugeX}{myfontscale fontSizeX * 2 round}
\FPupn{\resultveryHugeY}{myfontscale fontSizeY * 2 round}
\renewcommand*{\Huge}{\fontsize{\resultveryHugeX}{\resultveryHugeY}\selectfont}
\edef\fontSizeX{80.3}\edef\fontSizeY{101}
\FPupn{\resultVeryHugeX}{myfontscale fontSizeX * 2 round}
\FPupn{\resultVeryHugeY}{myfontscale fontSizeY * 2 round}
\newcommand*{\veryHuge}{\fontsize{\resultVeryHugeX}{\resultVeryHugeY}\selectfont}
\edef\fontSizeX{107}\edef\fontSizeY{134}
\FPupn{\resultVERYHugeX}{myfontscale fontSizeX * 2 round}
\FPupn{\resultVERYHugeY}{myfontscale fontSizeY * 2 round}
\newcommand*{\VeryHuge}{\fontsize{\resultVERYHugeX}{\resultVERYHugeY}\selectfont}
% set the normalfont (default)
\renewcommand*{\normalfont}{\normalsize}