Ipe tricks

On this page, we collect some tricks for working with Ipe. Also you can find some style sheets here.

Warning The material on this page is meant for use with Ipe 7.1.7 or newer. It may not work with older versions.


Ipe supports gradients, but they cannot be edited from the user interface (except if you use an ipelet). Instead, they need to be entered by hand in style files. Here is a style file with the gradient definitions for the cushion-style gradients used in this paper. To use it, draw a 16x16 rectangle in the lower-left corner of the paper, fill it, and set the gradient to one of the seven available colors. Alternatively use our example file.

Clipping paths

Clipping paths allow you to restrict the visible area of one object to an arbitrary area. Here is a tutorial about how to use them.

Using Fira Sans for labels

This section explains how to get Fira Sans working in Ipe. There are two basic approaches (xetex and pdftex). We recommend the xetex approach, as that produces nicer output, but this method does not work with older Ipe versions.

Fira Sans is our default font for presentations, but these instructions should work for other fonts as well.

With xetex (recommended)

Download Fira Sans and make sure that it is installed by putting it in C:\Windows\Fonts (Windows) or ~/.fonts (Linux).

Install XeTeX and the packages mathspec and mathastext. In the Ipe document properties (Edit > Document properties) set the LaTeX engine to xetex, and put the following in the Ipe preamble:

\setmainfont{Fira Sans}
\setmathfont(Digits,Latin,Greek,Symbols){Fira Sans}
\setmathrm{Fira Sans}

Now, all labels should be in Fira Sans. Here is an example:

Note You may be wondering why we are including both mathastext and mathspec. For some reason, this gives much better results for math mode than including just one of the two. (By the way, if you are not interested in math mode, just including fontspec and doing \setmainfont{Fira Sans} should do the trick already. The additional lines are just for getting math mode to render correctly.)


We experienced an issue (with TeX Live on Windows) where LaTeX rendering in Ipe would become extremely slow (> 30 seconds) when trying to load the fontspec / mathspec package, during which the Ipe interface hangs. As stated here, this can be solved by running c:\texlive\2016\bin\win32\fc-cache.exe from a terminal like this:

Note that it needs some time to create caches,
especially if there are many large font files.
Wait with patience.

As the output says, this can take a while. However, afterwards, Ipe should render much faster.

With pdftex (for older Ipe versions)

Older Ipe versions (< 7.2.1) do not support xetex; for those versions this alternative method can be used. It does not work for Greek letters, but otherwise seems to give similar output to the xetex method.

Install the packages fira and mathastext. In the Ipe document properties (Edit > Document properties) set the LaTeX engine to pdftex, and put the following in the Ipe preamble:

\usepackage[sfdefault, lining]{FiraSans}

Disabling selection in the translate mode

Assume that you are in the translate mode, and you want to move the currently selected object. If you start dragging at a position far away from the selected object, and near some other object, Ipe will instead select and move that other object. This can be undesirable, if you are starting the drag operation far away from the selected object on purpose, because you want to use that position as the translation origin.

To disable this behavior, in prefs.lua, set the key prefs.close_distance (which is set to 48 by default) to something large, for example

prefs.close_distance = 1e100

Useful ipelets

Ipelets are scripts written in Lua that extend Ipe's functionality. A list of ipelets is available here. We particularly encourage you to check out polyfillet, tangentline and the linear gradient ipelet.

For ipelet developers

If you are developing an ipelet yourself, set the following preference in prefs.lua:

prefs.developer = true

While developing you can now reload your ipelet without restarting Ipe entirely: use Help > Developer > Reload ipelets.