Permalink
Switch branches/tags
Nothing to show
Find file Copy path
305 lines (275 sloc) 12 KB
% Copyright 2015 by
% Philippe Dreuw <philippe.dreuw@gmail.com> and
% Thomas Deselaers <deselaers@gmail.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.13 - bugfixes (papersizes and textheight)
% 1.12 - bugfixed fontscale/myfontscale indention calculation
% - added beamerposterarticle icon format
% 1.11 - removed incompatible paralist package, used beamer's leftmargin lengths instead for indention
% 1.10 - improved PackageWarning and PackageInfo outputs
% 1.09 - bugfixed the list indention problem, can be overwritten by user with the \setdefaultleftmargin command.
% - added 'printer' option for external printer definition files
% 1.08 - supports external printer definition files
% - added grid mode option
% - renamed beamer specific variables
% - added font size normalization, so that scale=1.0 is the default font size for all DIN-A(n) sizes
% 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@name{beamerposter}
\def\beamerposter@version{1.13}
\def\beamerposter@date{2018/04/23}
\def\beamerposter@msg{latex-beamer poster extension}
\def\beamerposter@releaseinfo{\beamerposter@date \space v.\beamerposter@version \space \beamerposter@msg}
\def\beamerposter@Error#1#2{\PackageError{\beamerposter@name}{#1}{#2}}
\def\beamerposter@Warning#1{\PackageWarning{\beamerposter@name}{#1}}
\def\beamerposter@Info#1{\PackageInfo{\beamerposter@name}{#1}}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{\beamerposter@name}[\beamerposter@releaseinfo]
\RequirePackage{xkeyval}[2006/11/18]
\RequirePackage{type1cm} %% get it from http://www.ctan.org/pkg/type1cm
\RequirePackage{fp}
\newif\if@beamerposter@portrait
\newif\if@beamerposter@customsize
\newif\if@beamerposter@extern
\newif\if@beamerposter@debug
\DeclareOptionX{size}[a0]{
\beamerposter@Info{checking size input, please wait.}
\XKV@cc*+[\val\nr]{#1}{a0b,a0,a1,a2,a3,a4,custom}{%
\beamerposter@Info{the input \val\ \nr\ was correct, we proceed.}
\ifcase\nr\relax
%a0b
\edef\paperwidthValue{119}
\edef\paperheightValue{88}
\edef\fontscale{1.0}
\or
%a0
\edef\paperwidthValue{118.9}
\edef\paperheightValue{84.1}
\edef\fontscale{1.0}
\or
%a1
\edef\paperwidthValue{84.1}
\edef\paperheightValue{59.4}
\edef\fontscale{0.70710678} % fontscale=(1/sqrt(2))^1
\or
%a2
\edef\paperwidthValue{59.4}
\edef\paperheightValue{42.0}
\edef\fontscale{0.5} % fontscale=(1/sqrt(2))^2
\or
%a3
\edef\paperwidthValue{42.0}
\edef\paperheightValue{29.7}
\edef\fontscale{0.35355339} % fontscale=(1/sqrt(2))^3
\or
%a4
\edef\paperwidthValue{29.7}
\edef\paperheightValue{21.0}
\edef\fontscale{0.25} % fontscale=(1/sqrt(2))^4
\or
\@beamerposter@customsizetrue
\fi
}{%
\beamerposter@Warning{the input \val\ was incorrect and was ignored.}
}%
\beamerposter@Info{finished size input check.}
}
\DeclareOptionX{orientation}[portrait]{
\beamerposter@Info{checking orientation input, please wait.}
\XKV@cc*+[\val\nr]{#1}{portrait,landscape}{%
\beamerposter@Info{the input \val\ \nr\ was correct, we proceed.}
\ifcase\nr\relax
\@beamerposter@portraittrue
\or
\@beamerposter@portraitfalse
\fi
}{%
\beamerposter@Warning{the input \val\ was incorrect and was ignored.}
}%
\beamerposter@Info{finished orientation check.}
}
\DeclareOptionX{scale}[1.0]{\edef\myfontscale{#1}\beamerposter@Info{myfontscale=\myfontscale}}
\DeclareOptionX{width}{\edef\customwidth{#1}\beamerposter@Info{custom poster width=\customwidth}}
\DeclareOptionX{height}{\edef\customheight{#1}\beamerposter@Info{custom poster height=\customheight}}
\DeclareOptionX{debug}{\beamerposter@Info{enabled debug mode}\@beamerposter@debugtrue}
\DeclareOptionX{grid}{\beamerposter@Info{enabling grid}\beamertemplategridbackground[1cm]}% Display a grid to help align images
\DeclareOptionX{printer}{\edef\printerToUse{#1}\@beamerposter@externtrue}
\DeclareOptionX*{\beamerposter@Warning{Unknown option ignored: \CurrentOption}}
%\DeclareOptionX*{\PassOptionsToClass{\CurrentOption}{beamer}}
\ExecuteOptionsX{size=a0,scale=1.0}
\ProcessOptionsX\relax
%% enable debug mode for fp package (mainly for upn functions)
\if@beamerposter@debug
\FPdebugtrue
\fi
%% normalize scale depending on poster size
\FPupn{\myfontscale}{myfontscale fontscale * 2 round}
%% overwrite dimensions if custom size
\if@beamerposter@customsize
\edef\paperheightValue{\customheight}
\edef\paperwidthValue{\customwidth}
\fi
%% Set paper{height,width}
%%% If portrait orientation, swap height and width
\if@beamerposter@portrait
\newdimen\tmp
\setlength{\tmp}{\paperwidthValue cm}
\setlength{\paperheight}{\tmp}
\setlength{\paperwidth}{\paperheightValue cm}
%%% Otherwise assign height and width directly
\else
\setlength{\paperheight}{\paperheightValue cm}
\setlength{\paperwidth}{\paperwidthValue cm}
\fi
%% Set text{height,width} to paper{height,width} - 1cm
\FPupn{\textheightValue}{1 paperheightValue -}
\FPupn{\textwidthValue}{1 paperwidthValue -}
\setlength{\textheight}{\textheightValue cm}
\setlength{\textwidth}{\textwidthValue cm}
%% 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
\beamerposter@Info{paperwidth=\the\paperwidth, paperheight=\the\paperheight}
\beamerposter@Info{textwidth=\the\textwidth, textheight=\the\textheight}
\beamerposter@Info{fontscale=\fontscale, myfontscale=\myfontscale}
\geometry{
paperwidth=\the\paperwidth,
paperheight=\the\paperheight,
hmargin=1cm,%
vmargin=0cm,%
head=0.5cm, %
headsep=0pt,%
foot=0.5cm %
}
%%
%% printer definition file example 'rwth-glossy-uv.df':
%% ----
%% \typeout{beamerposter: RWTH RZ printer, glossy paper, UV resistant, maximum settings}
%% \edef\printermaxwidthValue{108} %unit should be cm
%% \newlength{\printermaxwidth}
%% \setlength{\printermaxwidth}{\printermaxwidthValue cm}
%% ----
%%
%% now load printer definitions from file (e.g. \usepackage[printer=rwth-glossy-uv.df]{beamerposter}")
\if@beamerposter@extern
\InputIfFileExists{\printerToUse}{\typeout{load \printerToUse}}{\beamerposter@Error{\printerToUse\space not found!}{Please use another printer definition file}}
\ifx\printermaxwidthValue\@empty%
\relax%
\else%
%% @todo: calc poster ratios, scale to maximum printer size, and check if they still fit
%% this here is still very basic ...
\FPsub{\resultmaxwidth}{\printermaxwidthValue}{\paperwidthValue}
\FPifneg{\resultmaxwidth}
\beamerposter@Error{%
resultmaxwidth=\resultmaxwidth \MessageBreak
printermaxwidthValue=\printermaxwidthValue \MessageBreak
paperwidthValue=\paperwidthValue \MessageBreak
The specified poster dimensions might not be printable using
'\printerToUse'.
}{%
Try to reduce your poster dimension and have a look at the aspect ratio.
}
\else
\relax
\fi
\fi
%\fi
%% scalable vector fonts
\edef\fontSizeX{12}\edef\fontSizeY{14}
\FPupn{\resulttinyX}{myfontscale fontSizeX * 2 round}
\FPupn{\resulttinyY}{myfontscale fontSizeY * 2 round}
\renewcommand*{\tiny}{\fontsize{\resulttinyX}{\resulttinyY}\selectfont}
\edef\fontSizeX{14.4}\edef\fontSizeY{18}
\FPupn{\resultscriptsizeX}{myfontscale fontSizeX * 2 round}
\FPupn{\resultscriptsizeY}{myfontscale fontSizeY * 2 round}
\renewcommand*{\scriptsize}{\fontsize{\resultscriptsizeX}{\resultscriptsizeY}\selectfont}
\edef\fontSizeX{17.28}\edef\fontSizeY{22}
\FPupn{\resultfootnotesizeX}{myfontscale fontSizeX * 2 round}
\FPupn{\resultfootnotesizeY}{myfontscale fontSizeY * 2 round}
\renewcommand*{\footnotesize}{\fontsize{\resultfootnotesizeX}{\resultfootnotesizeY}\selectfont}
\edef\fontSizeX{20.74}\edef\fontSizeY{25}
\FPupn{\resultsmallX}{myfontscale fontSizeX * 2 round}
\FPupn{\resultsmallY}{myfontscale fontSizeY * 2 round}
\renewcommand*{\small}{\fontsize{\resultsmallX}{\resultsmallY}\selectfont}
\edef\fontSizeX{24.88}\edef\fontSizeY{30}
\FPupn{\resultnormalsizeX}{myfontscale fontSizeX * 2 round}
\FPupn{\resultnormalsizeY}{myfontscale fontSizeY * 2 round}
\renewcommand*{\normalsize}{\fontsize{\resultnormalsizeX}{\resultnormalsizeY}\selectfont}
\edef\fontSizeX{29.86}\edef\fontSizeY{37}
\FPupn{\resultlargeX}{myfontscale fontSizeX * 2 round}
\FPupn{\resultlargeY}{myfontscale fontSizeY * 2 round}
\renewcommand*{\large}{\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*{\huge}{\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}
\newcommand*{\veryHuge}{\fontsize{\resultveryHugeX}{\resultveryHugeY}\selectfont}
\edef\fontSizeX{89.16}\edef\fontSizeY{112}
\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}
% adapt list indention (e.g. itemize/enumeration/... see beamer docu)
\edef\labelWidthValue{1} % 1em label width
\edef\labelSepValue{1} % 1em label separator width
\edef\indentionLevelValuei{4} % 4em indention for first level for an A0 poster
\edef\indentionLevelValueii{2.2} % etc. ...
\edef\indentionLevelValueiii{1.87}
%\edef\indentionLevelValueiiii{1.7}
%\edef\indentionLevelValueiiiii{1}
%\edef\indentionLevelValueiiiiii{1}
\FPupn{\labelWidthValue}{labelWidthValue myfontscale * 2 round}
\FPupn{\labelSepValue}{labelSepValue myfontscale * 2 round}
\FPupn{\indentionLevelValuei}{indentionLevelValuei myfontscale * 2 round}
\FPupn{\indentionLevelValueii}{indentionLevelValueii myfontscale * 2 round}
\FPupn{\indentionLevelValueiii}{indentionLevelValueiii myfontscale * 2 round}
%\FPupn{\indentionLevelValueiiii}{indentionLevelValueiiii myfontscale * 2 round}
%\FPupn{\indentionLevelValueiiiii}{indentionLevelValueiiiii myfontscale * 2 round}
%\FPupn{\indentionLevelValueiiiiii}{indentionLevelValueiiiiii myfontscale * 2 round}
\setlength{\leftmargini}{\indentionLevelValuei em}%
\setlength{\leftmarginii}{\indentionLevelValueii em}%
\setlength{\leftmarginiii}{\indentionLevelValueiii em}%
\setlength{\labelwidth}{\labelWidthValue em}%
\setlength{\labelsep}{\labelSepValue em}%
% define bib item template with larger graphic
\edef\bibIconScaleValue{2} % begin with 2
\FPupn{\bibIconScaleValue}{bibIconScaleValue myfontscale * 2 round}
\defbeamertemplate{bibliography item}{beamerposterarticle}
{\lower5pt\hbox{\scalebox{\bibIconScaleValue}{\pgfuseimage{beamericonarticle}}}}