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.
Best Answer
Introductory material
This is the part of the documentation where ConTeXt is indeed seriously lacking. There does not exist much in terms of good and complete introductory books for ConTeXt, while there exist literally hundreds of more or less good books for LaTeX. But do not despair, there is still a way for a beginner to start getting into ConTeXt and here is how.
When I first studied ConTeXt this book did not exist yet and I had to resort to other resources which even in hindsight I still consider very valuable:
git-walk
tool (instructions provided on Aditya's blog), or view all the details on a single page. This tutorial equipped me with the basic understanding of how to customize the most relevant elements of the document.\setuphead
? That is where the ConTeXt command reference comes in. This extremely minimalistic document is the most helpful I have encountered so far. On over 300 pages every setup command with all accepted keys is listed.This concludes the section on introductory material. From here on we dive into more complicated topics. Nevertheless after reading the references (1) and (2) and having (3) at hand you should be able to compose your first documents.
Advanced
I don't recommend that you try to read these references as a whole. There is no way you can memorize all that stuff. Just skim through it to get an idea of what is there, so you can come back and read in detail when you actually need it.
You have probably started writing your own macros and are getting in contact with the ConTeXt core and are wondering what all those weird
\s!
,\c!
,\v!
,\??
and\@@
are. Then you might enjoy the System Macros page in the ConTeXt Garden Wiki.Fonts
type-imp-*.mkiv
files and see how it's done there.Mathematics
amsmath
package. (This article appeared also in My Way)/=
is automatically converted to≠
), interplay with grid typesetting, custom numbering, and some tricks for deficient math fonts.Bibliographies (BibTeX)
\setupbibtex
in ConTeXt Mark IV an excursion. This mechanism has been superseded by the newbtx
mechanism which acts as a replacement for BibTeX, entirely implemented in Lua. Thanks tobtx
ConTeXt does not depend on external programs for processing bibliographies. However, it only provides two different styles:apa
as an author-year style andaps
as a numeric style. A verbose style namedieee
is in development.Interaction with Lua
Graphics
Metafun Metafun is a set of MetaPost macros, specifically tailored for the interaction with ConTeXt. You can do a lot of fun things, like overlays, drawing font outlines, or just basic shapes. A LaTeX user would use TikZ for that (which is also available in ConTeXt) but Metafun runs orders of magnitudes faster and integrates quite naturally with everything related to frames, such as backgrounds, tables, and plain frames of course.
Flowcharts Macro-level interfaces for drawing flow charts in Metafun. Flowcharts are not part of the core functionality and have to be imported using
\usemodule[chart]
.Nodes Macro-level and MetaPost interfaces for drawing commutative diagrams.
Layout
Expert
The progress reports A lot of features which get added to ConTeXt are rather minor or affect the core directly, so they do not have dedicated manuals. Nevertheless, Hans tirelessly documents these features in his progress reports on LuaTeX and ConTeXt development. In chronological order these are:
The history of LuaTeX has mostly historical relevance because a lot of features described in there are documented elsewhere in much more detail, like OpenType fonts, Metafun, and XML.
The other documents give a very in-depth view of all the internals of ConTeXt MkIV and LMTX and it is definitely worth skimming through them to see what is available. Whenever I open these manuals and read a few paragraphs I find new hidden features.
Further resources
All the manuals listed above are also shipped with the installation of ConTeXt standalone and TeX Live. The PDFs can be found in
doc/context/documents/general/manuals/
, the corresponding sources indoc/context/sources/general/manuals/
(the links point to the ConTeXt GitHub mirror).In TeX Live, manuals can also be opened using the
texdoc
tool by providing the name of the PDF as an argument, e.g.texdoc metafun-p
will open the MetaFun manual.There are two other manuals which I see mentioned in some places and I want to give my comments on these.
Typographic Programming This is supposed to grow into a manual about general aspects of document design and how to translate design into style by the means of automated typesetting. At the moment it is unfinished and is mostly about microtypographic features and page layout but doesn't go beyond the much more complete Fonts out of ConTeXt and It's in the details. It also hasn't been updated in a while.
ConTeXt reference manual This was supposed to be a comprehensive introduction to ConTeXt and could have evolved into a complete introductory user manual but got stuck somewhere halfway between MkII and MkIV with a few missing chapters. I don't recommend reading it before you have a solid understanding of the difference between MkII and MkIV, because otherwise it is just too confusing.
There is also the command reference on the ConTeXt Garden Wiki. This is a total hit and miss because some commands are documented really well, others not at all. The good thing is that it is publicly editable, so if you encounter bad documentation you should log in and fix it.