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.
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:
1in
.
1bp
.
1pt
.
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.
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.
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.
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.
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.
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.
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.
bop-hook
as 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}
\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}
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:
scale
as in the code sniplets above, since
this would affect the size of the LaTeX output.
This text
is shifted
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.
The 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 shifted
in 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.
Copyright © 2012 Jochen Voss. All content on this website (including text, pictures, and any other original works), unless otherwise noted, is licensed under the CC BY-SA 4.0 license.