Creating a Poster with TeX

By Jochen Voss, last updated 2012-02-18

This page contains some hints which may help to create a conference poster using LaTeX. The method described here is good if you want to do everything manually in order to have full control. If, instead, you just want to just get a usable result without spending too much effort, you probably will be better served by using one of the existing solutions like a0poster or sciposter.

Contents

Overview

The method described on this page takes the following approach:

Warning. Do not try to run TeX files using PostScript special commands through pdflatex. All PostScript code will be ignored and the result will not be useful. Instead, use latex and dvips and later convert the result if required.

A word about units. I wrote this text when producing a poster for a conference in the USA. The given constraints were that the poster board was 3 foot heigh and 4 foot wide and that I only could print on pages which were 11 inch heigh and 8.5 inch wide. Partially caused by this, I sometimes use strange units on this page:

Setting the Page Size

Two steps are required to set the page size manually: Firstly, one needs to set the page size inside TeX by setting the \paperwidth and \paperheight parameters, and second one needs to set the page size in PostScript using the \special{papersize=...} TeX command. Additionally you might want to set various TeX/LaTeX parameters affecting the layout.

When setting the page dimensions, one must consider TeX's default margins of 1″. By setting \textwidth and \textheight to values which are 2″ smaller than the physical pagesize, we get a 1″ margin around the page. Example 1 below shows a minimal LaTeX file for a 3ft×4ft poster.

\documentclass{minimal}

\special{papersize=48in,36in}
\setlength{\paperwidth}{48in}
\setlength{\paperheight}{36in}
\setlength{\textwidth}{46in}
\setlength{\textheight}{34in}

\topskip0pt
\setlength{\headheight}{0pt}
\setlength{\headsep}{0pt}
\setlength{\topmargin}{0pt}
\setlength{\oddsidemargin}{0pt}

\begin{document}
\hrule
\hbox to\textwidth{top left \hss top right}
\vfill
\hbox to\textwidth{bottom left \hss bottom right}
\hrule
\end{document}

Example 1. A minimal LaTeX file to set up a 4ft×3ft page with a 1″ outer margin.

Alternatively one can set \hoffset=-1in and \voffset=-1in to use the whole area of the page (the printer permitting). Example 2 shows how this can be used to create a black margin which extends all the way to the edge of the paper.

\documentclass{minimal}

\special{papersize=48in,36in}
\hoffset-1in
\voffset-1in
\setlength{\paperwidth}{48in}
\setlength{\paperheight}{36in}
\setlength{\textwidth}{48in}
\setlength{\textheight}{36in}

\topskip0pt
\setlength{\headheight}{0pt}
\setlength{\headsep}{0pt}
\setlength{\topmargin}{0pt}
\setlength{\oddsidemargin}{0pt}

\begin{document}
\hrule height1in
\hbox to\hsize{\vrule height34in width1in
\hfill
\vrule width 1in}
\hrule height1in
\end{document}

Example 2. A LaTeX file to generate 4ft×3ft page with an ugly, solid black 1″ margin.

Setting the Font Size

This section discusses how to get LaTeX to generate text with a font size big enough for use on a poster. General information about font selection in LaTeX can be found in the LaTeX font guide.

The standard TeX fonts come in a variety of sizes but the normally provided sizes are too small for use on a poster: the biggest available cmr font is 24pt in the OT1 encoding and 36pt in the T1 encoding. These sizes might be a good choice for paragraphs of text on a poster, but bigger fonts are needed for titles etc.

Using Scalable Fonts

There are several ways to create text in font sizes big enough for a poster. The easiest method is to use a scalable font, e.g. one of the standard PostScript fonts, which allows to set text in arbitrary sizes. You can find a list of free math fonts, including the PostScript fonts, in Stephen G. Hartke's excellent Free Math Font Survey. In example 3 below I use the txfonts package to set text in a 72pt font.

\documentclass{minimal}

\usepackage{txfonts}

\begin{document}
\fontsize{72pt}{90pt}\selectfont
\noindent This text is very big.
\end{document}

Example 3. Using the txfonts package to set text in a 72pt Times font with 90pt baseline distance.

Using the Standard TeX Fonts

An alternative approach to get big fonts is to generate the standard TeX cm fonts in non-standard sizes. This can be done using the \DeclareFontShape command as explained in the LaTeX font guide. The code in Example 4 below shows how this is done in a very simple case, namely when just setting text using only one font in one size. For real applications where different font sizes and maybe mathematical formulas are involved, you need several more declarations like the on in the example, and it might be easier to use one of the existing style files like a0size.sty from the a0poster package.

\documentclass{minimal}

\DeclareFontShape{OT1}{cmr}{m}{n}%
{<5><6><7><8><9><10><12>gen*cmr%
  <10.95>cmr10%
  <14.4>cmr12%
  <17.28><20.74><24.88>cmr17
  <72>cmr17}{}

\begin{document}
\fontsize{72pt}{90pt}\selectfont
\noindent This text is very big.
\end{document}

Example 4. Using the standard TeX cmr font at 72pt with 90pt baseline distance.

Matching Font Size and Layout

In order to get a nice layout, it is important to adjust the LaTeX parameters determining the layout of text to the choosen font size. This affects the usual LaTeX parameters for setting margins, font sizes, distances between paragraphs of text, etc. Example 5 illustrates how this can be done.

\setlength\abovecaptionskip{25pt}
\setlength\belowcaptionskip{0pt}
\setlength\abovedisplayskip{25pt plus 6pt minus 15pt}
\setlength\abovedisplayshortskip{0pt plus 6pt}
\setlength\belowdisplayshortskip{13pt plus 7pt minus 6pt}
\setlength\belowdisplayskip\abovedisplayskip

\renewcommand{\tiny}{\fontsize{12}{14}\selectfont}
\renewcommand{\scriptsize}{\fontsize{14.4}{18}\selectfont}
\renewcommand{\footnotesize}{\fontsize{17.28}{22}\selectfont}
\renewcommand{\small}{\fontsize{20.74}{25}\selectfont}
\renewcommand{\normalsize}{\fontsize{24.88}{30}\selectfont}
\renewcommand{\large}{\fontsize{29.86}{37}\selectfont}
\renewcommand{\Large}{\fontsize{35.83}{45}\selectfont}
\renewcommand{\LARGE}{\fontsize{43}{54}\selectfont}
\renewcommand{\huge}{\fontsize{51.6}{64}\selectfont}
\renewcommand{\Huge}{\fontsize{61.92}{77}\selectfont}
\normalsize

\DeclareMathSizes{24.88}{24.88}{20.74}{14.4}
\DeclareMathSizes{29.86}{29.86}{20.74}{14.4}
\DeclareMathSizes{35.83}{35.83}{24.88}{17.28}
\DeclareMathSizes{43.00}{43.00}{35.83}{24.88}
\DeclareMathSizes{51.6}{51.6}{35.83}{24.88}
\DeclareMathSizes{61.92}{61.92}{43}{29.86}

Example 5. Adjusting the layout for use with big fonts.

Global Layout via PostScript

A poster typically will have some light background color or shade and maybe a colored band near the top to highlight the title. Here we use raw PostScript commands to put these decorations on the page. If you don't know how to write PostScript code, you can find many tutorials on the web and you can look up all the technical details in Adobe's PostScript Language Reference (PDF, 7.4MB). To inject the PostScript code into the output file, we use TeX's \special{} command as described in the Literal PostScript section of the dvips manual.

Background Colour

In order to put decorations on the whole page, we need to make the PostScript output independent of TeX's current writing position. There are several ways to achieve this.

Layout

Another use of PostScript for our poster will be, to arrange blocks of LaTeX-generated text on the page. This can be done by shifting the coordinate origin as above and then inserting the LaTeX code before the final grestore:

\special{ps:gsave
-1 Resolution mul -1 Resolution mul translate
x Resolution mul y Resolution mul translate
}
This text is shifted.
\special{ps:grestore}

There are several issues to consider in this approach:

\documentclass{minimal}

\special{papersize=48in,36in}
\setlength{\paperwidth}{48in}
\setlength{\paperheight}{36in}
\topskip0pt

\usepackage{txfonts}

\long\def\shifted[#1,#2]#3{%
  \special{ps:gsave
  -1 Resolution mul -1 Resolution mul translate
  #1 Resolution mul #2 Resolution mul translate
  }%
  \nointerlineskip
  \hbox to 0pt{\vbox to0pt{#3\vss}\hss}%
  \special{ps:grestore}}

\def\square#1{\vbox to4in{\hsize4in\noindent\ignorespaces
  We can insert PostScript code directly.  This code uses the TeX page
  origin as the origin and has resolution dependent coordinate units.
  Marks created on the page by this code will overwrite earlier \TeX\
  output.  By default the origin is $1''$ down and $1''$ right
  from the top left corner of the page.
  \parfillskip0pt\vfil}}

\begin{document}
\fontsize{24.88pt}{30pt}\selectfont
\shifted[5,5]{\square}
\shifted[39,27]{\square}
\special{ps:gsave Resolution dup scale -1 -1 translate
  9 9 moveto 39 27 lineto 1 setlinewidth stroke
  grestore}
\end{document}

Example 6. This LaTeX file illustrates how embedded PostScript code can be used to control the global layout of a page. The output of this code consists of a 4ft×3ft page containing two squares of text (side length 4″) which are connected by a thick black line. Figure 1 below shows a preview of the result.

[Poster Example Preview]

Figure 1. A scaled down preview of the output resulting from the code in example 6. The full page is 4ft wide and 3ft hight.

References

Copyright © 2012, Jochen Voss. All content on this website (including text, pictures, and any other original works), unless otherwise noted, is licensed under a Creative Commons Attribution-Share Alike 3.0 License.