anonymous
anonymous

Reputation: 2674

Latex - Is it possible to have text on top of images?

I want to create something like a leaflet/magazine using Latex. Is it possible to place text on top of an image and style the text freely?

Any links to examples of something like this?

Upvotes: 23

Views: 80817

Answers (8)

danijar
danijar

Reputation: 34195

You can also define the text after the image and then offset it using negative vertical space. Because it follows after the image in the LaTeX source, it will be drawn on top of the image instead of underneath it.

\includegraphics[...]{...}
\vspace*{-20ex}  % Tune this to the image height.
\begin{center}
Text
\end{center}
\vspace*{20ex}  % The spacing above but without the minus.

Upvotes: 9

Kyle
Kyle

Reputation: 765

I'd like to add on to @midtiby's answer...

You can also specify the text position using a relative position, like so:

\usepackage{tikz}
...
\begin{tikzpicture}
    \node[inner sep=0] (image) at (0,0) {\includegraphics[width=4cm]{imagefile.png}};
    \node[above=0 of image] {Hello world};
 \end{tikzpicture}

Upvotes: 1

f2cx
f2cx

Reputation: 531

As already suggested, you can annotate the different parts of the figure using TikZ. However, sometimes it might even better to use numbers to reference the different parts and explain them in the figure caption.

To easily get the precise relative positions (which is often tedious) and to generate LaTeX code automatically, you could use the new web-based LaTeX Overlay Generator, which I built for such cases. This is just a small interactive tool, which helps you to find the right locations.

Upvotes: 5

01es
01es

Reputation: 5410

I realise that the question is old and answer is accepted, but for completeness would like to propose an alternative approach for making leaflets in LaTeX.

Specifically, the leaflet document style served me really well for this purpose.

A good blog post wrt background image can be found here. There are a couple of packages that are required to use in order to make the proposed approach work, but were not mentioned in the blog post:

\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{transparent}

Upvotes: 3

Rob Hyndman
Rob Hyndman

Reputation: 31810

Another solution is the textpos package which allows you to specify boxes at absolute positions on the page. The boxes can overlap, so you can put the figure in one box, and text in another box on top of it.

Upvotes: 4

Seamus
Seamus

Reputation: 2111

Another way to do this, admittedly not using LaTeX, would simply be to edit the image with photoshop or gimp or something like that. I guess your option in terms of typesetting mathematics might be fairly limited doing it this way.

Otherwise I'd endorse using tikz.

Are you sure you want to do it in LaTeX? Desktop publishing software might be more suited to your needs... Something like scribus might be easier than tikz in terms of learning curve, depending on what you want to do.

Upvotes: 0

tonio
tonio

Reputation: 10541

A very good toolset for manipulating images is pgf/TikZ pdf doc.

See \pgfimage for examples. It allows to mix text and image freely. There are many ways to do it. One of them is to use layers (p. 220 of pgfmanual). The pgf manual contains many simple examples, and is very precise.

Another solution is to use the lpic package: the homepage contains some examples.

You can find other examples for pfg and TikZ here and here for many impressive examples.

Upvotes: 6

midtiby
midtiby

Reputation: 15116

I usually do something like

\usepackage{tikz}
...
\begin{tikzpicture}
    \draw (0, 0) node[inner sep=0] {\includegraphics[width=4cm]{imagefile.png}};
    \draw (1, 1) node {Hello world};
\end{tikzpicture}

Upvotes: 40

Related Questions