Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Patoline - A modern digital typesetting system

This repository contains the source code of Patoline, which homepage is hosted at


The minimal dependencies are

  • OCaml (version 4.03.0 or higher)
  • Opam (version 2.0.0 or higher)
  • Dune (version 1.2.0 or higher)
  • Ocamlfind
  • Earley (version 2.0.0)
  • Camlzip
  • Sqlite3
  • Imagelib
  • GNU make

To setup a suitable OCaml environment, the simplest possible solution is to use the Opam package manager. It can be installed by following instructions at You can then install an OCaml compiler and the required libraries as follows.

opam switch 4.05.0
eval $(opam env)
opam install dune earley.2.0.0 camlzip sqlite3 imagelib

You can optionally install more Opam packages (OCaml libraries) depending on the Patoline drivers that you want to use. For instance, you will need to install lablgl for our OpenGL driver, cairo2 for our Cairo driver, kryptokit for our Patonet driver.

Compilation from source

Patoline can be compiled from source as follows:

cd patoline-master
make install

First Patoline document

Here is a hello world patoline document (other examples can be found in the examples folder).

Hello, World!
Patoline newbies

-> Section with text

This is my //first// document! That's so **cool**!


-> Section with maths

Did you known that $(a + b)² = a² + 2ab + b²$?


If you copy-paste it in a file hello_world.txp, then you can compile it with the command patoline hello_world.txp. This will produce a PDF file called hello_world.pdf. Note that you can compile to other format drivers such as a webpage using SVG format or an OpenGL window. To do that, select a driver with the command patoline --driver DRIVER hello_world.txp. You can obtain the list of the existing drivers with patoline drivers (they may not all be installed).

List of developpers and contributors

Main developpers and contributors:

  • Pierre-Étienne Meunier
  • Christophe Raffalli
  • Rodolphe Lepigre
  • Tom Hirschowitz
  • Florian Hatat
  • Pierre Hyvernat
  • Guillaume Theyssier
  • Vincent Laporte
  • Alan Schmitt