Compositor’s attempt on the Holy Grail of document processing

It’s not very often that we’re offered a completely new app which attempts one of the Holy Grails of computing. That is what Karl Traunmüller is attempting to do with his Compositor. Described succinctly as ‘a WYSIWYG LaTeX for Mac’, if you know LaTeX, you’ll know just what I mean.

Most document processing uses markup in some way – even popular word processors like Microsoft Word have moved from proprietary formats to XML. One of the original markup languages was TeX (pronounced tech with the ch as in a softened version of Scottish loch). Devised and implemented from 1977 by Stanford Professor Don Knuth, one of the greatest computer scientists and educators, it became the de facto standard throughout academic publishing.

TeX is extremely sophisticated, more like HTML, CSS, and JavaScript rolled into a single coherent language. Although there were, and still are, hardcore developers who’ll code you up everything you need in TeX for a beautifully typeset book or magazine, its most popular descendent is LaTeX, which offers easy-to-use stylesheets and templates. At one time, in most scientific fields, submitted papers for journals and conferences had to be set using the house LaTeX stylesheet.

In the days before display PostScript and PDF, marked up LaTeX documents would be rendered into a device-independent (DVI) file, which could be viewed onscreen. Just as in many modern HTML editors, the user wrote marked-up text, then periodically rendered it into DVI for checking.

When the Mac came along and introduced us all to ‘desktop publishing’, with Aldus PageMaker and the first affordable laser printers, many thought that TeX and LaTeX were dead. But the quality of their typesetting, and their continuing importance wherever there’s maths and other demanding requirements, have ensured their survival – as has the support provided by the TeX Users’ Group TUG.

My example of the power and performance of TeX, actually taken from linguistics, may appear pretty incomprehensible, but once you start setting up a few of these, it is surprisingly straightforward:
{\avmoptions{active}
\avm
{
[ \rm \it sort-label \\
phon & \rm /phonology/ \\
form & \< \rm \it word, list \> \\
syn & {[ \rm \it syn-obj \\
cat & {[\rm \it verb \\
vf & \rm \it fin \\
select & \rm \it none \\
xarg & \rm NP\[{\it nom}\]$_{i}$ \\
lid & {[\rm \it label-fr \\
label & \rm {\it l$_{n}$} \\
sit & \rm \it s \\
s-srce & \rm \it i \\
]} \\
]} \\
val & \< \> \\
mrkg & \rm \it unmk ]} \\
arg-st & <subj, dir-obj, indir-obj, obl, gen, obj-of-comp> \\
sem & {[ \rm \it sem-obj \\
ind & \rm \it s \\
ltop & @2 \\
frames & {<[\rm \it label-fr \\
label & \rm {\it l$_{n}$} \\
bv & \rm \it s \\
restr & \rm {\it l$_{n}$} \\
scope & \rm {\it l$_{n}$} \\
], ... >} \\
]} \\
cntxt & {[ \rm \it context-obj \\
backgrnd & {<[\rm \it label-fr \\
label & \rm {\it l$_{n}$} \\
entity & \rm \it i \\
name & \<\rm {\it name}\> \\
], ... >} \\
]} \\
]}
\endavm

which is magically rendered into this:

Try setting this up in InDesign - particularly when the book calls for several dozen of them.
Try setting this up in InDesign – particularly when the book calls for several dozen of them.

One major milestone accomplished on ‘classic’ Macs was Barry Smith and Gordon Lee’s unique real-time rendering in Textures. Tragically, the arrival of Mac OS X and the deaths of both developers left their work orphaned. Since then, TeX systems have generally adopted a two-window model, in which text content is marked up in one, and rendered very briskly in the other. But the dream of actually being able to work directly in the rendered version has never quite been realised.

As with SGML, XML, HTML, and other markup languages, the Holy Grail has been to deliver interactive real-time rendering, which allows users to work in either text source, or directly in the rendered form.

Some earlier apps, such as FrameMaker+SGML, have allowed WYSIWYG editing of marked-up content. As SGML is about content and not presentation, this has been much less of a challenge, and has had limited impact in specialist technical documentation.

Compositor is now available as a preview release, which demonstrates how tantalisingly close Karl Traunmüller is coming to this Holy Grail. Open a standard LaTeX marked-up text file, and it is immediately rendered into a single window. You can then edit its content directly in that rendered form, or select a passage and work in source.

compositor1

This gives the author the best of both worlds: when composing less demanding passages, they can type away as if it was a friendly word processor. A palette of headings, lists, special characters, and all the other trappings of documents makes light work of the editing process.

compositor2

Then, when it comes to more complex content such as equations, the author can switch in and out of modes to assemble the content in the most appropriate way. For simple in-line formulae, they may remain in the rendered version, but can always hit Command-S and work directly in source.

Compositor still has a way to go before it will be ready for final release, and even then I suspect will continue to evolve and extend its support of Knuth’s expressive and powerful language. For now, you can try a free 90-day demo, or encourage Karl Traunmüller by buying an early-adopter’s licence for a mere $10. It is already sufficiently functional to create and develop a good range of LaTeX documents, and works in conjunction with most other TeX and LaTeX tools.

I eagerly look forward to seeing and experiencing Compositor’s continuing development, and suggest that whoever has that Holy Grail gets it cleaned and polished in readiness.

(Thanks to Michael Tsai for alerting us to Compositor.)