TutorialsIpe tricks

On this page, we collect some tricks and best practices for working with Ipe.

ALGA ipelet

If you are a member of our group, we heavily recommend you install and use the ALGA style files and ipelet. The style files add useful colors and set sensible defaults (dashing patterns, line caps, etc.)

To install, obtain the files from the the GitLab repository and follow the instructions provided there.


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 Fira Mono and Fira Math and make sure they are installed by putting them in C:\Windows\Fonts (Windows) or ~/.fonts (Linux).

In the Ipe document properties (Edit > Document properties) set the LaTeX engine to xetex, and put the following in the Ipe preamble:

\usepackage[sfdefault]{FiraSans}    % Fira Sans as the main font
\usepackage{FiraMono}               % Fira Mono as the monospaced font
\usepackage{firamath-otf}           % Fira Math as the math font

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


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. This does not give perfect output: it does not support Greek letters and special symbols in math mode.

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, set the preferences key prefs.close_distance (which is set to 48 by default) to something large. You can do that by creating a file called customize.lua in your ipelets directory, with the following line in it:

prefs.close_distance = 1e100

To find out where your ipelets directory is, use Help > Show configuration.

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:

prefs.developer = true

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