ConTeXt, autorstwa Hansa Hagena, jest stosunkowo nowym systemem składu i opisu dokumentów opartym o program TeX (a ściślej PDFTeX). Służy on do tworzenia dokumentów, które mają być prezentowane zarówno w wersji papierowej, jak i elektronicznej (przede wszystkim .pdf-ów prezentowanych za pomocą AcrobatReadera).
Prace nad systemem trwają i należy się liczyć z koniecznością częstego ściągania nowych wersji plików. Zapewne, również z tego powodu instalacja jest dosyć uciążliwa, a dokumentacja (w szczególności instalacyjna i techniczna) niedostateczna. Na szczęście powstaje już wyczerpująca dokumentacja w języku angielskim (do pobrania ze stron firmy PRAGMA)
ConTeXt jest ciekawym językiem opisu dokumentu (składem zajmuje się TeX) o ideologii odmiennej niż LaTeX, a zbliżonej do koncepcji HTML + CSS.
W LaTeX-u zdefiniowano szereg typowych obiektów, których skład (wizualizacja) jest zakodowany za pomocą języka TeX-a. Konwersja opisu struktury dokumentu jest prosta, ale praktycznie niemożliwa jest automatyczna konwersja opisu własności (sposobu składu) używanych w nim obiektów na inny język. Wadą jest również trudność modyfikacji własności składu przez ,,normalnego'' użytkownika. Za wyjątkiem banalnych przypadków (np. zmiana wartości rejestru) potrzebna jest wiedza programistyczna i doświadczenie w programowaniu w języku TeX-a. Zaletą jest natomiast ,,otwartość'' i łatwość wzbogacania systemu o nowe obiekty.
W Języku ConTeXt-a mamy łatwość tworzenia obiektów i sterowania ich własnościami (sposobem składu) poprzez wybór odpowiednich opcji i określeniu ich wartości (ale tylko z góry określonej listy). Biorąc pod uwagę, że lista typowych problemów spotykanych w publikacjach jest skończona, zdefiniowano listę typowych obiektów oraz stworzono mechanizmy do tworzenia nowych obiektów (ale nie o dowolnych cechach). Należy podkreślić, że cały system jest wyjątkowo dobrze przemyślany i spójny koncepcyjnie, ale zamknięty i hermetyczny.
Do wad możemy zaliczyć niedostateczną kontrolę błędów (np. użycie nieznanego atrybutu lub nadanie atrybutowi niedopuszczalnej wartości nie pozostawia śladu nawet w zbiorze komunikatów) lub generowanie błędu na poziomie języka TeX-a, a nie języka ConTeXt-a oraz niedostateczną (jeszcze) dokumentację.