ConTeXt history

From Wiki
Jump to navigation Jump to search

A short history of ConTeXt

ConTeXt has been in constant development since the 1990s. It should not come as a surprise that over that time period, many things have changed. This page is a quick overview of the history of ConTeXt.

Prehistory: ConTeXt 'Mark I'

ConTeXt started as a macro package to aid in automating the typesetting of educational publications, with strong emphasis on ease of use as it targeted users that were not versed in TeX macro programming. Those first few years, ConTeXt was an internal tool used by Pragma ADE and its clients.

While the source code of ConTeXt has seen a lot of changes over the years, many of the early design decisions and features are still present in the newest releases:

  • A strong separation between input text and setup areas
  • Simple setups using key-value pairs
  • A monolithic design
  • A multi-lingual interface
  • A bias toward typesetting rather than portability of document sources
  • A feature set that is geared towards educational publishing, with early support for floats, columns, page composition, referencing, graphics, colors and external fonts
  • A command-line tool set to simplify the compilation process

This prehistoric version of ConTeXt was using Knuth’s TeX82 as the underlying compilation engine. Pragma ADE used the commercial Y&Y TeX distribution and the free IBM-PC port emTeX.

ConTeXt Mark II

Around 1995, a public release of ConTeXt was made, roughly coinciding with the availability of pdfTeX as underlying compilation engine (although that was not the default compilation engine at the start).

Over the next decade, lots of development took place, drastically changing and expanding the ConTeXt source code.

  • The command-line tools were ported from Modula-2 to Perl, and later Ruby
  • Support was added for using compilation engines other than TeX82: ε-TeX, pdfTeX, XeTeX, Aleph
  • Many extra command-line tools were added
  • Major features were added or improved: PDF interaction, layers & overlays, modes, mathematics, typescripts

ConTeXt Mark II is now obsolete and no longer actively maintained.

ConTeXt Mark IV

With the development of the LuaTeX compilation engine (that Pragma ADE was a big part of) and its addition of both the Lua programming language and MetaPost graphics, it became possible to redo quite a lot of the ConTeXt internals, in turn necessitating a new major version.

2005 saw the birth of ConTeXt Mark IV.

  • The command-line tools were rewritten in Lua, using the compilation engine also as the scripting engine
  • Support for compilation engines other than LuaTeX was dropped
  • Much of the internal TeX code was rewritten in Lua
  • All the command-line tools were consolidated into a single subsystem called mtxrun
  • Major features that were added or improved: Unicode, OpenType fonts, inline MetaPost graphics, HTML export, direct XML processing, Lua interface to typesetting
  • ConTeXt Mark IV was released in both 'current' (stable) and 'beta' (development) versions.

ConTeXt Mark IV is stable and still used as a production tool in many places.

ConTeXt LMTX

In 2019, work started on a new compilation engine: LuaMetaTeX. Once again, Pragma ADE was a driving force in its development, and the many internal engine changes resulted in the desire for a new major ConTeXt release: ConTeXt LMTX.

After about a year of internal rewrites, this has become the official development version of ConTeXt. In 2022, the source code of LuaMetaTeX was added to the distribution to make it self-sustained.

There is not much practical user-visible difference between ConTeXt Mark IV and ConTeXt LMTX, but newer features and further development happen only in the latter, most notably the completely rewritten subsystem for math typesetting.

For now at least, ConTeXt LMTX is distributed only in a 'latest' version, as there is no stable release yet.

See Installation if you want to try it out yourself!