Skribilo is a free document production tool that takes a structured document representation as its input and renders that document in a variety of output formats: HTML and Info for on-line browsing, and Lout and LaTeX for high-quality hard copies.

The input document can use Skribilo's markup language to provide information about the document's structure, which is similar to HTML or LaTeX and does not require expertise. Alternatively, it can use a simpler, “markup-less” format that borrows from Emacs' outline mode and from other conventions used in emails, Usenet and text.

Last but not least, Skribilo can be thought of as a complete document programming framework for the Scheme programming language that may be used to automate a variety of document generation tasks. Technically, the Skribilo language/API is an embedded domain-specific language (EDSL), implemented via so-called “deep embedding”. Skribilo uses GNU Guile 2.2, 2.0, or 1.8 as the underlying Scheme implementation.

Features

Availability

Releases are available from the download area.

Skribilo is distributed under the terms of the GNU General Public Licence, version 3 or later. To use Skribilo, you need the following pieces of software:

Documentation

The user manual is available in the following formats:

Example

Here is a live example: the source code of this web page, colored using Skribilo's computer program coloring features.

Mailing List

If you want to complain or tell how bright and shining your life has become since you discovered Skribilo, then go ahead and subscribe to the skribilo-users mailing list! If you want to suggest improvements, that's also where they should go!

Development

Development is done using the Git distributed revision control system. You can fetch a copy of the source code repository using the following incantation:

git clone git://git.sv.gnu.org/skribilo.git

You can then happily hack on your side and eventually promote your changes on the mailing-list

The repository can also be browsed on-line.

A tentative list of milestones and to-do items is in the TODO file.

History

Skribilo is a direct descendant of Skribe, a document production tool written by Manuel Serrano for Bigloo and ported to STkLos by Érick Gallesio. Development of Skribe started around 2003 as a successor of Manuel's previous documentation system named Scribe.

Skribilo derives from Skribe 1.2d but it differs in a number of ways:

It contains new packages (pie charts, equation formatting) and a new engine (the Lout engine).

Symmetrically to the notion of engine (rendering back-ends), Skribilo has the concept of readers. A reader is the part that reads an input document in a specific syntax and returns an abstract syntax tree understandable by the core mechanisms. Skribilo currently comes with two readers: one that implements the standard Skribe syntax, and one that reads free form text with annotations similar to those found in Emacs' outline mode.

It's been reworked to be used as a framework or library, rather than as a stand-alone program. As a result, the logical separation of modules has been improved, the globally shared state has been significantly reduced, and SRFI-35 exceptions are used rather than plain error or exit calls. The idea is to expose all the core mechanisms of Skribilo to the user, thereby blurring the border between the user program or document and the core of the system.

or calls. The idea is to expose all the core mechanisms of Skribilo to the user, thereby blurring the border between the user program or document and the core of the system. Although Skribilo only runs on GNU Guile, care was taken to use mostly portable APIs (SRFIs) so that the code is intelligible to most Scheme programmers.

Related Links

The Name

Skribilo is an Esperanto noun, which literally means “a tool to write” (prefix “skrib” relates to writing, while suffix “-ilo” designates a tool). Interestingly, “skribe”, which is the name of the tool Skribilo is based on, is an adverb meaning “writing” in Esperanto.