Exscribe
Exscribe is a CL-based document authoring tool in the spirit of Manuel Serrano's Scribe.

Current Exscribe features (as of version 0.94.2) include: output to HTML or PDF, good support for HTML footnotes (endnotes only on PDF backend), ok support for table-of-contents and bibliography, and most importantly, programmability.

All that in a way largely compatible with Manuel Serrano's Scribe (given a published abstraction layer). These feature are few, but useful enough so that I (Fare Rideau) use Exscribe for all the pages I write.

Currently missing (intended future) features include: a better cl-typesetting backend (work in progress), Markdown/ReST/TeX syntax in addition/complement/combination with the Scribble syntax, cl-bibtex bridge, graphics, boxes, orphans, styles, etc.

Unlike most other document authoring systems, Exscribe is programmable: I casually compute content on-the-fly within documents. However, unlike the only widespread programmable document authoring system, namely (La)TeX, it's programmable in a decent language, namely Lisp.

Exscribe is directly inspired by Manuel Serrano's Scribe, and largely compatible with it. Actually, I use Exscribe as a drop-in replacement for Scribe, within the strictures of my programming style: with a small abstraction layer, my Scribe files run with both Scribe and Exscribe, with similar output as seen with a web browser (the output of Exscribe is actually cleaner).

I use Exscribe with Scribble syntax, but it is trivial to translate from your usual SEXP syntax, and there is a builtin mechanism to allow for arbitrary text filters (so you could embed a Markdown syntax within Exscribe documents).

I used to use Scribe, but Scribe was discontinued in favor of the slightly incompatible Skribe. Instead of learning Skribe and migrating my documents to it, and continue to cope with a few small limitations that really annoyed me, I opted to reimplement myself a variant of Scribe. The result is Exscribe. In many ways, it's a quick and dirty hack, thrown together in a few tens of hours of intensive work. But I like the architecture of it, and though it doesn't do much, it does just what I need for the time being, and it does it exactly the way I want. When it fails, I have noone to blame but myself. All my new web pages are written with it.

Exscribe currently mainly targets HTML and so currently is mainly a web authoring tool, and it can also be used as a Lisp Markup Language. But a CL-typesetting backend is already available, and will hopefully match and surpass the HTML backend Real Soon Now(tm).

At the time being, Exscribe is definitely not for non-hacker users: error checking and reporting is minimal, and documentation is almost absent. However, in its current state it is already fit for use by developers, and I'm open to collaboration to develop it. The Scribe documentation should be mostly valid, and an example that uses most of the capabilities present in Exscribe is here: http://fare.tunes.org/files/asdf-packages/exscribe-examples.tar.gz

Bitrot has made it impossible to get the native code Scribe running anymore (one probably could if willing to invest some substantial effort in either retrocomputing or porting). However, the unstable and slow JVM version of Scribe can still be run. Exscribe on CMUCL or SBCL compiles my documents much faster (performance is less good with other implementations, but always better than the JVM Scribe on my documents).

Exscribe depends on other packages: meta, fare-utils, fare-matcher, scribble and cl-launch. You will need cl-launch to run it from the unix command-line. The PDF backend uses cl-typesetting. You can also compile Exscribe with XCVB.

Exscribe source code is at: https://gitlab.common-lisp.net/frideau/exscribe

Note that the referred Scribe does not really have anything to do with the already established language Scribe from the early 1980's. That is why Manuel Serrano renamed it to Skribe in its new (slightly incompatible) incarnation. Though there were implementations of the old Scribe in Lisp, it didn't have a Lisp-related syntax. See Brian Reid, "Scribe: A Document Specification Language and its Compiler", Technical Report CMU-CS-81-100, 1981.


document preparation