sile is a free, open source publishing project written in Lua and released under MIT. It has 1,784 GitHub stars, 106 forks and 287 open issues, and was last pushed 5 days ago. On this registry it ranks #26 of 46 tracked projects in Publishing, with 5 head-to-head comparisons available.

What is sile?

What it is

SILE is an open-source typesetting system for producing printed documents and PDF files. It lives in the Lua, publishing, and typesetting ecosystem, and its category is Content & Publishing / Publishing. The engine is written from the ground up, uses Lua, and borrows some concepts and algorithms from TeX while taking ideas from graphical systems such as InDesign.

The concrete problem it addresses is document layout and PDF output without relying on the TeX family or on XSL stylesheets for XML source. SILE produces printed documents through frames, grids, and programmable layout rules. It can be installed locally or run remotely as a CI job, which supports automated document builds as well as manual authoring.

Key capabilities

  • SILE produces PDF documents from typesetting input, as indicated by its pdf and pdf-generation topics.
  • It supports complex document layouts using frames, letting authors define structured regions for content.
  • It allows extension of the typesetting system in Lua, a high-level programming language.
  • It can process XML directly into PDF without requiring XSL stylesheets.
  • It can typeset text on a grid, giving authors control over regular typographic placement.
  • It runs on macOS, Linux, and Windows, with CI and Docker build indicators shown in the README.

Who uses it and how

  • Authors use SILE to create printed documents and PDF files from typesetting sources, especially when they need programmatic layout control.
  • XML publishers use SILE to convert XML content directly into PDF, avoiding an XSL stylesheet step.
  • Developers use Lua to extend the engine for specialized document requirements, such as frames or grid-based typography.
  • Publishing teams use CI jobs to build documents automatically, because the README describes remote CI execution and shows build status badges.
  • Linux and macOS users install SILE through package managers, then add fonts such as Gentium Book when packages do not provide them.

Getting started

Typical installation uses Homebrew on macOS, pacman on Arch Linux, dnf on Fedora, zypper on OpenSUSE, Nix on NixOS, and a PPA on Ubuntu; Docker packages and CI execution are also mentioned. Users may need to install fonts separately, for example with Homebrew Casks or Fedora font packages.

When to use it — and when not to

Use SILE when you want a Lua-based typesetting engine that can process XML directly to PDF and support frame and grid layouts, especially in automated publishing pipelines. It borrows ideas from InDesign and concepts from TeX, but the README presents it as a new engine rather than a TeX derivative. Avoid it if you need a setup that requires no local package or font management, because installation notes show that fonts may be separate and some Linux LuaRocks packages must match the LuaJIT variant.

project readme (upstream, from github) — read inline

Actions Build Status Docker Build Status Azure Build Status
Luacheck Lint Status Coveralls Coverage Status
Chat on Gitter Conventional Commits Commitizen Friendly

What is SILE?

SILE is a [typesetting][typesetting] system; its job is to produce beautiful printed documents. Conceptually, SILE is similar to [TeX][tex]—from which it borrows some concepts and algorithms—but the similarities end there. Rather than being a derivative of the TeX family SILE is a new typesetting and layout engine written from the ground up using modern technologies and borrowing some ideas from graphical systems such as [InDesign][indesign].

Where does it run?

SILE can be downloaded & installed to your system or run remotely as a CI job.

What can I do with SILE (that I can’t do with TeX)?

First, have a look at the [usage examples gallery][examples]. SILE allows you to:

  • Produce complex document layouts using frames.

  • Easily extend the typesetting system in a high-level programming language (Lua).

  • Directly process XML to PDF without the use of XSL stylesheets.

  • Typeset text on a grid.

Download and Installation

For macOS

A formula is available for [Homebrew][brew] that can install either stable or head versions. For the latest prebuilt stable release:

$ brew install sile

Or to build and install from the latest git commit:

$ brew install sile --HEAD

Note the Homebrew package does not automatically install the default font. The easiest way to install Gentium Book is through the [Homebrew Casks][casks]:

$ brew install font-gentium-book

For Linux

Arch Linux

Arch Linux has a prebuilt [SILE package][arch-sile] in the official package repository:

$ pacman -S sile

The official package uses LuaJIT. If you install LuaRocks for use with SILE via pacman, use the lua51-* variants to match LuaJIT.

Fedora

Fedora Linux has SILE in their official repositories. To install run:

$ dnf install sile

Not all the fonts are not installed by default, to install them:

$ dnf install sil-gentium-plus-fonts alerque-libertinus-fonts hack-fonts
OpenSUSE

OpenSUSE has official packages ready to install the usual way:

$ zypper install sile
NixOS

A [Nix sile package][nix] is available in both the stable and unstable channels; the unstable channel having the latest stable SILE releases and the stable channel being frozen on NixOS releases. You can use all the usual Nix tricks including adding SILE into a nix shell environment or executing it directly with nix run.

See additional usage notes in the Nix section.

Ubuntu

A [PPA][ppa] is available for Ubuntu users with packages of SILE and all the necessary dependencies. We introduced support starting with Bionic (18.04) and maintain packages for all Ubuntu release series since for as long as they are supported by Canonical.

$ add-apt-repository ppa:sile-typesetter/sile
$ apt-get update
$ apt-get install sile
Void Linux

Void Linux packages are available in the default package manager.

Other

Other Linux distros may install via source, via [Linux Brew][linuxbrew], or via Nix.

For BSD

Install from OpenBSD [ports][], via source, or via Nix.

For Windows

There is no installer yet (track the status in issue #410). Nobody is currently maintaining Windows compatibility in SILE and we expect the state to be a bit broken. Users of WSL (Windows Subsystem for Linux) may use the package manager of their choice depending on the system installed, including the respective Arch Linux or Ubuntu packages, [Linux Brew][linuxbrew], source, or via [Nix][#nixos].

Some early work is present in the repository that should enable builds via CMake and Visual Studio, see discussion in issue #567, but it needs a refresh for current dependencies. Prebuilt Windows binaries are supposed to be generated by the Azure [build pipeline][azure] and may be downloaded by selecting a build, opening the Windows job, selecting the artifact link from the final stage, and using the download button next to the sile folder.

Multi-Platform & Containers

Docker

Docker images are available as siletypesetter/sile. Released versions are available as tagged containers matching the release (e.g. v0.10.0). Additionally the latest release will be tagged latest, and a master tag is also available with the freshest development build.

In order to be useful you need to tell the Docker run command a way to reach your source documents. This is done by mounting your project directory inside the container. This also gives SILE a place to write the output. The user and group IDs of the Docker user will be automatically adjusted to match those of the directory you mounted.

You may find it easiest to do all this with an alias like this:

$ alias sile='docker run -it --volume "$(pwd):/data" siletypesetter/sile:latest'
$ sile input.sil

One notable issue with using SILE from a Docker container is that by default it will not have access to your system’s fonts. To work around this you can map a folder of fonts (in any organization usable by fontconfig) into the container. This could be your system’s default font directory, your user one, a folder with project specific resources, or anything of your choosing. You can see where fonts are found on your system using fc-list. The path of your choosing from the host system should be mounted as a volume on /fonts inside the container like this:

$ docker run -it --volume "/usr/share/fonts:/fonts" --volume "$(pwd):/data" siletypesetter/sile:latest
Nix

The nix package manager is available as a standalone package manager on many platforms other than NixOS including most Linux and BSD distributions, macOS, and even for Windows via WSL; and thus presents a viable alternative way to run SILE on most systems.

[Nix packages][nix] are available in both the stable and unstable channels. We recommend the unstable channel because all fresh packages (including stable SILE releases) land there first and eventually trickle down to the stable channel. You can use all the usual Nix tricks including launching a new shell with the sile command available or running it directly from any shell:

# Launch a new shell with SILE available
$ nix shell nixpkgs/nixpkgs-unstable#sile
$ sile <arguments>

# Run SILE directly as a single command
$ nix run nixpkgs/nixpkgs-unstable#sile -- <arguments>

The SILE source repository is also a [Nix Flake][nix-flakes]. This means you can run any arbitrary tagged version, branch, or commit with a single command. This is an easy way to run SILE on other platforms, but also to test other versions or run the latest development version of SILE.

# Explicitly run a tagged version
$ nix run github:sile-typesetter/sile/v0.14.13 -- <arguments>

# Use the master branch HEAD that will become the next minor release
$ nix run github:sile-typesetter/sile -- <sile arguments>

# Run the develop branch HEAD that will become the next major release
$ nix run github:sile-typesetter/sile/develop -- <sile arguments>

F

readme truncated — read the full docs on github

Frequently asked questions

Is sile free to use?

sile is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does sile do?

The SILE Typesetter — Simon’s Improved Layout Engine

What is sile written in?

sile is primarily written in Lua. Its source is publicly available at https://github.com/sile-typesetter/sile, and it has 1,784 GitHub stars.