28

I've spent quite a bit of time over the last few days getting up to speed with current developments in the TeX world. Like all of us here I sometimes get frustrated with the clunky and outdated nature of LaTeX 2e, so I'll save my complaining for another time, but here are my observations:

  • Tagging, accessibility and the separation of form from content are key areas of development. It looks like there is general consensus that future versions of LaTeX should follow a paradigm similar to HTML/CSS.
  • The ConTeXt project has already implemented this. The ConTeXt project is largely lead by Hans Hagen. The LuaTeX project is closely linked to ConTeXt. ConTeXt is closely linked to Pragma ADE, a commercial company in the Netherlands
  • There are current efforts to modernize LaTeX via the L3 programming interface. A big part of this new plumbing is geared towards enabling an HTML/CSS-like paradigm.

The glaring question which I can't really avoid is the following:

Why on earth are ConTeXt and LaTeX two different things if everyone is trying to go in similar directions?

I can think of a few explanations:

  • Pragma ADE is a commercial company, so being as "open" as LaTeX would hurt their ability to earn a living. If so, I would disagree with this attitude, but not all share my point of view of course.
  • The ConTeXt developers decided they didn't care about backwards compatibility or breaking packages, viewing this as a necessary step for progress and a hamper to LaTeX's development. So they went off and did their own thing. One result of course is that ConTeXt's module ecosystem is far inferior to LaTeX's. It shines in other areas, but that's not my point.
  • Personality mismatch between lead developers

Does anyone know the real reason? Is it a combination of all the above?

11
  • 5
    I am not sure a truly objective answer is doable here, but will try
    – Joseph Wright
    Commented Apr 19, 2022 at 13:02
  • 3
    ConTeXt is developed exclusively by PRAGMA ADE for their own purposes. There is zero guarantee that documents composed with one version of ConTeXt will work with another because the entire thing is constantly in flux. The developers do not hesitate to break fundamental functionality if they want to improve it or adapt it to their current business case. This is bad for compatibility but very good for innovation. ConTeXt has a lot of advanced features that LaTeX users are waiting for for decades. Commented Apr 19, 2022 at 13:14
  • 4
    Why would you only expect 1? why is there Java if there is C, or Julia or Python or Rust, Why speak German if you could speak English? The surprising thing is not that there are two main formats, so much as there are only two main formats (opmac trying to be a third) but other formats, amstex, lamstex, lollipop, more or less faded away. Commented Apr 19, 2022 at 13:32
  • 2
    In terms of license, I think it's fair to say that Hans likes these legal things even less that Frank, and Frank will regal you with his famous 1600 mails to the Debian Legal list ...
    – Joseph Wright
    Commented Apr 19, 2022 at 13:38
  • 5
    @JosephWright I think it's closer to say they are two languages (usually) implemented in tex, so it's not so different from asking why there are multiple languages sitting over JVM (other than for keeping Paulo busy) or why F#, C#, C++/clr all exist over the .NET system. Commented Apr 19, 2022 at 13:47

1 Answer 1

46

There are elements of history and philosophy here. LaTeX was first written by Leslie Lamport to provide a 'user' interface to TeX that abstracted away some of the 'bare metal' of the typesetting. Lamport handed over the the current team in the late 1980s, by which time LaTeX was already popular in some academic circles. The integration of ideas from AMS-TeX into amsmath, and the (N)FSS font selection scheme, both occurred in the mid-to-late 1990s. These developments helped LaTeX to attract a significant audience in academia. It also means that 'LaTeX' ~ 'TeX' is used as a way to describe math mode markup well outside typesetting, e.g. MathJaX.

ConTeXt is as the question states also the original product of one person, here Hans Hagen. Hans started with in some ways less desire to abstract from TeX. For example, ConTeXt does not try to have any 'required' approach to defining document design, in contrast to LaTeX's document class concept. ConTeXt also started with a much richer interface setup, of course at the time with performance implications: these are no longer anything to worry about. ConTeXt was first developed long after LaTeX, and has not had significant take-up for academic publications.

LaTeX has attracted a large number of third-part package authors. In part this is arguably as the kernel was and still is very small in terms of functionality. ConTeXt by contrast has a lot of modules written by Hans and others at Pragma, but relatively few third-party extensions.

The two formats have historically different approaches to stability. Whilst LaTeX does change, there is a lot of work done by the team to try to keep existing documents unchanged. Also, the large number of third-party packages means that there are (internal) interfaces that are very difficult to adjust. This means there is a tendencies to avoid change, or at least to manage it very carefully. ConTeXt, with a small team responsible for most of the code, can be freer in terms of change. At the same time, ConTeXt users do know that the core is in active development and can require more active document management. That is not to say that ConTeXt deliberately breaks documents - the basic syntax for ConTeXt is the same in Mark II, Mark IV and Mark XL. But for example ConTeXt has moved from pdfTeX to LuaTeX to LuaMetaTeX, and that means that a user who used some primitives directly in their source will have had to update it: a LaTeX user might complain loudly if the same happened to them.

The LaTeX team had a rather fallow period in terms of kernel development for various reasons. One was that after the launch of LaTeX2e, the thinking was to freeze the kernel code entirely (for stability), and to aim to write a new LaTeX ('LaTeX3') to address long term desires. However, the large number of both users and particularly packages makes that a very challenging proposition. There is no doubt that ideas developed in ConTeXt over that period could and should be picked up by LaTeX: one can only though work on the situation now, not what hindsight suggests. (The LaTeX team had for example something a bit like CSS before CSS was invented, but it was not workable when developed and now has to work in a world that does have CSS.)

Work by the LaTeX team at present is focussed on adding things like tagging, which as the question notes is achievable using ConTeXt today. The constraint for LaTeX is of course in a sense self-imposed: that users do not have to update their documents at all. There is also the question of detailed engine outcomes. ConTeXt uses LuaMetaTeX, which like LuaTeX deliberately breaks some outcomes predictable for TeX90/pdfTeX/XeTeX/... For example, hyphenation is not tied to font, which may change line breaking and therefore typeset output. Similarly, using 8-bit fonts is non-trivial with LuaMetaTeX/LuaTeX, while for existing pdfTeX documents, keeping the font identical may be very important.

As noted at the start, there are some differences in philosophy between LaTeX and ConTeXt. For example, even if the 'LaTeX3' plans had been fully implemented, LaTeX would still pre-define design in classes or similar. ConTeXt does not do that, and that is a reasonable but contrasting position. As such, there are places that 'marrying the two' would be hard.

8
  • 6
    Thanks for the detailed response and your time.
    – user32882
    Commented Apr 19, 2022 at 13:41
  • 6
    Probably worth noting that Hans does keep the font loader for LuaTeX workable for LaTeX/plain, in as far as it can be convinced to work as luaotfload (Marcel and Ulrike can say a lot more about that).
    – Joseph Wright
    Commented Apr 19, 2022 at 13:46
  • 3
    Slight nit: It's Mark XL not LX. The new engine is LuaMetaTeX, LMTX is the entire distribution (LMTX = Lua + MetaPost + TeX + XML). Commented Apr 19, 2022 at 18:50
  • 9
    It's maybe also worth mentioning that the source code for LuaMetaTeX is not publicly available (at least as of today). Commented Apr 19, 2022 at 18:55
  • 4
    @HenriMenke I guess from a user interface POV though that's not really important, and I'm not sure it impacts one way or the other on development (several members of the LaTeX team do significant work in Lua)
    – Joseph Wright
    Commented Apr 20, 2022 at 18:55

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .