Several solutions of differing quality exist, but the field is fragmented and no mature software satisfies all desirable requirements. Most recently, typst joined the competition.
You might also be interested in the website polytype.dev by the author of SILE. It shows different typesetting engines in different usecases.
Ecosystem
Plaintext approach
LaTeχ
Homepage (license: LaTeχ project public license v1.3c)
by Leslie Lamport since built with WEB/Pascal
converts custom syntax to DVI | PDF
Teχ
Homepage (license: public domain, rename on modification)
by Donald E. Knuth since built with WEB/Pascal
converts custom syntax to DVI
typst
Homepage (license: Apache 2)
by Martin Haug, Laurenz Mädje since built with rust
converts custom syntax to PDF | PNG
SILE
Homepage (license: MIT license)
by Simon Cozens, Caleb Maclennan since built with Lua/C++
converts custom language (Teχ-like), XML to PDF
speedata publisher
Homepage (license: AGPL-3.0)
by Patrick Gundlach since built with Go/Lua/LuaLaTeχ
converts XML to PDF
Patoline
Homepage (license: GPL-2.0)
by Tom Hirschowitz, Pierre-Etienne Meunier, Christophe Raffalli since built with OCaml
converts custom language to PDF | SVG
PageBot
Homepage (license: MIT)
by Buro Petr van Blokland, michielkauwatjoe, felipesanches, davelab6, thomgb since built with python3
converts python3 to PDF | PNG | JPG | SVG | animated GIF | MOV | XML
yex
Homepage (license: GPL-2.0)
by Marnanel Thurman since built with python3
converts custom language to HTML | SVG
Sphinx
Homepage (license: BSD-2-Clause)
by Adam Turner, Bénédikt Tran, Chris Sewell, François Freitag, Jakob Lykke Andersen, Jean-François Burnol, Stephen Finucane, Takayuki Shimizukawa, Takeshi Komiya since built with python/LaTeχ
converts to PDF | HTML
Antora
Homepage (license: )
by since built with
converts to
rstgen / Nim DocUtils
Homepage (license: )
by since built with
converts to
Quarto
Homepage (license: )
by since built with
converts to
Crowbook
Homepage (license: )
by since built with
converts to
pollen
Homepage (license: )
by since built with
converts to
naturaldocs
Homepage (license: )
by since built with
converts to
Lout
Homepage (license: )
by since built with
converts to
Apache FOP
Homepage (license: )
by since built with
converts to
quad
Homepage (license: )
by since built with
converts to
SATySFi
Homepage (license: )
by since built with
converts to
spandex
Homepage (license: )
by since built with
converts to
python-typesetting
Homepage (license: )
by brandon-rhodes since built with
converts to
imp
Homepage (license: )
by tux21b since built with
converts to
nroff
Homepage (license: )
by since built with
converts to
troff
Homepage (license: )
by since built with
converts to
groff
Homepage (license: )
by since built with
converts to
heirloom-doctools
Homepage (license: )
by since built with
converts to
χeTeχ
Homepage (license: )
by since built with
converts to
LuaLaTeχ
Homepage (license: )
by since built with
converts to
opTeχ
Homepage (license: )
by since built with
converts to
Weasyprint
Homepage (license: )
by since built with
converts to
PagedJS
Homepage (license: )
by since built with
converts to
Vivliostyle
Homepage (license: )
by since built with
converts to
“A digital typesetting system is a tool using digital means to arrange text and media into digital documents”
Desirable features
Global scripts
Unicode support to enable writing in as many writing systems as possible
Domain-specific notations
Representations for mathematical formulas, diagrams, chemical formulas, UML diagrams, music sheets, … should be supported out-of-the-box or through extension mechanisms
Single Source Publishing
One or more input formats; many output formats; different approaches are taken to account for format-specific features
Cross-platform
The software should run on a wide range of devices
Easy installation
Installing a sophisticated software stack with many dependencies can be cumbersome for non-tech-savy users. Static executables, tight integration into the OS package manager, Flatpak, Snapcraft, Homebrew, AppImage, WebAssembly with WASI, winget, … are various approaches to improve the situation
Separation of concerns
A separation between the declaration of content, layout, and program logic is desirable to make each component replaceable once it gets out-of-date. HTML5 (content), CSS3 (layout), and ECMAScript (program logic) showed how to do this on the web stack
Modern fonts
Implementation of the features in the OpenType standard
FOSS
free/open source software license according to OSI initiative
Automation
The data might come from a database, the network, a CRM or ERP software, or many other sources. Generation of documents should be possible for a wide range of input data
a11n, l10n, i18n
accessibility (e.g. images must provide alternative text representations for blind people), localization (e.g. numbers should be representable as ‘10,000’ as well as ‘10.000’ depending on the locale settings), internationalization (e.g. support for page size ‘letter’ as well as ‘JIS A’)
performance
Software architecture, algorithmic considerations, and concurrency are means to improve the performance which is desirable for users
web and print
Reflowable formats (HTML5 with CSS3 with WOFF) as well as paged formats (PDF 2.0, DjVu) shall be supported as output
Requirements for entering the ecosystem list
Supports at least Latin and Greek script
The Greek alphabet must be usable and inclusion of images must be possible
Produces HTML5, PostScript, or PDF 1.4 (or later) output
Works on at least two of the three major operating systems (namely Microsoft Windows 11, macOS 13, Linux 6)
A pre-compiled release or a installation guide is provided
A hyperlink to the description of the input language is provided
At least three choices for typefaces exist
The source code of the latest release is accessible for reading
Details
The last four “desirable features” are not reflected in the “requirements” list
This list does not cover: PDF viewers, web services without an option to run the application without connection to a network service, font editors, software which just transforms the input and supplies it to one of the typesetting systems above. Digital typesetting components like HarfBuzz which provide functionality but not I/O itself.
Maintained by the Austrian club “Verein zur Förderung von digitalem Textsatz” [transparency reports 2023]
Inspired by rust community's webpages: “Are we X yet?” where X ∈ {GUI, game, learning, distributed, …}
Latest update: