Creating a Poster with TeX
By Jochen Voss, last updated .
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:
- Use LaTeX to create a DVI file.
- Use dvips to convert this file to a PostScript file describing one big page. This PostScript file can then be split into smaller pages and/or converted to other formats (e.g. PDF) as needed.
- Embedded PostScript commands in the DVI file are used to control the overall page layout and to add decorative elements which extend over large areas of the page. LaTeX is used to add text and formulas to regions of the page.
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:
- One inch is 2.54cm.
The abbreviation is 1in or 1″. In TeX units this is
1in. - One foot is 12″ or 30.48cm. The abbreviation is 1ft or 1′.
- One PostScript point (the unit of length in the initial PostScript
coordinate system) is 1/72 inches. In TeX units this is
1bp. - One typographical point is 1/72.27 inches. In TeX units this is
1pt.
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.
- We can put the code in the
bop-hookas described in the PostScript hooks section of the dvips manual. This code is then excecuted before any of the TeX-generated content is added to the page and it uses PostScript units and the PostScript default coordinate system, i.e. the coordinate origin is at the lower left corner of the page and 72 units equal 1″ on the paper. For example, on a 3ft×4ft poster, the following commands can be used to add a light blue band to the top (3″ high) and a darker blue band to the bottom of the page (1″ high).\special{!userdict begin /bop-hook{gsave 72 72 scale 0.5 0.5 1.0 setrgbcolor 0 0 48 1 rectfill 0.8 0.8 1.0 setrgbcolor 0 33 48 3 rectfill grestore}def end} - We can insert PostScript code directly. This code uses the TeX page
origin as the origin and it 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 and y-coordinates are increasing downwards.
In order to get back to page relative coordinates we have to shift and
scale the output:
\special{ps:gsave Resolution dup scale -1 35 translate 1 -1 scale 0.5 0.5 1.0 setrgbcolor 0 0 48 1 rectfill 0.8 0.8 1.0 setrgbcolor 0 33 48 3 rectfill grestore}
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:
- We cannot use
scaleas in the code sniplets above, since this would affect the size of the LaTeX output. - The PostScript code generated by dvips for the
above includes commands to move the PostScript point to the position where TeX intends the text to be. Since TeX does not know about our change of coordinates on PostScript level, this shift ends up to be relative to the location where we wanted the text to appear.This text is shiftedThe easiest solution to this problem is to never let the TeX writing position move from the initial position. This can be done by adding all LaTeX text inside carefully wrapped boxes. The macro
shiftedin example 6 shows how this can be done.
\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.
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
- There are several ready made LaTeX packages to produce posters, e.g. a0poster and sciposter.
- Adobe offers several excellent manuals and specifications on its developers' page, in particular the PostScript Language Reference.
- the dvips manual
- The LaTeX font guide has a lot of information about LaTeX font selection.
- Stephen G. Hartke's Free Math Font Survey lists many different fonts to typeset mathematics. In the examples on this page I use the txfonts package.