Tectonic is a modernized, complete, self-contained TeX/LaTeX engine, powered by XeTeX and TeXLive.
If you just want to compile TeX documents, you should probably click through to the main Tectonic website. This page is primarily aimed at folks interested in how Tectonic works “under the hood.”
If you’re interested in Tectonic as a software tool, you might also want to check out:
Much of the core code of Tectonic is derived from XeTeX, and we strive to track and maintain compatibility with upstream as much as possible. However, the nature of the Tectonic project is such that its source code is going to diverge from that of XeTeX over time. We can do our best to track the semantics of changes to XeTeX, but the expression of those changes in source form may well change greatly over time.
In this repository, the Git submodule reference_sources
links to the
“staging repository”
that tracks the XeTeX source
code that we use as a reference. In particular, the version of the reference
code in the submodule is the most recent code whose semantics are guaranteed
to be expressed in Tectonic, to the best of our efforts. You don’t need to
clone reference_sources
to build Tectonic (which is good because everyone is
always super confused by how Git submodules work!). It just provides a
convenient way for Git to track the exact reference code that we are using at
any given time.
Please see the tectonic-staging README for more information. (Or at least, more words on the topic.)
The Tectonic build can be customized with the following features:
This feature enables (de)serialization using the serde crate. At the moment, this is only used to read per-user configuration from a TOML file. If this feature is disabled, the per-user configuration file will be silently ignored.
This functionality is optional because it requires the serde_derive
crate,
which in turn uses Rust’s proc_macro
feature. The proc_macro
functionality
is not available on musl targets,
and so must be turned off if you wish to build a completely static Tectonic
executable.