Skip to content

Choosing an engine

yaz can typeset with an embedded engine or with a TeX distribution you already have. Neither is a fallback for the other, and the choice is per project rather than global, because journal templates frequently require a specific typesetter.

Which download do I want?

Two builds ship for every platform. The difference is only whether the LaTeX engine is inside the application.

DownloadInstallerTake this if
yaz~14 MBYou want it to work. No TeX installation needed
yaz-slim~3 MBYou already have TeX Live or MiKTeX, or you need pdflatex or lualatex

Not sure? Take yaz.

It compiles the moment you open it. yaz-slim saves about 11 MB of download and in exchange requires a TeX distribution that is typically a gigabyte or more.

They are the same application and install to the same place, so you have one yaz rather than two — and the updater keeps you on the build you chose, because moving a yaz installation to yaz-slim would take your LaTeX engine away.

yaz-slim is also the answer when a journal template specifically requires pdfTeX or LuaTeX, since the embedded engine is XeTeX-based and cannot be either. Nothing stops you installing a TeX distribution alongside the full build and using both — the engine picker will simply list more options.

The two options

Tectonic (embedded)

A complete TeX engine compiled into yaz. Nothing to install, and it fetches only the support files a document actually needs.

  • Requires nothing. A fresh install compiles immediately.
  • Native on every architecture, including ARM64 — which matters, because a system TeX distribution on Windows-on-ARM is typically an x86_64 build running under emulation.
  • It is XeTeX-based, and cannot be pdflatex. A template that specifically requires pdfTeX or LuaTeX needs the system engine.
  • The first compile of a document downloads support files, so it needs network access once. Later runs use the shared cache.

Tectonic is a compile-time feature. A build without it cannot be given it by changing a setting — the engine has to be linked in. The picker says so rather than hiding the option, because "not included in this build" is actionable and a silent absence is not.

System TeX (TeX Live, MiKTeX)

Whatever is installed on the machine, driven through latexmk when available so that multi-pass runs, BibTeX invocation and .aux settling are handled by a tool that has solved those problems well.

  • pdflatex, xelatex and lualatex all available, so publisher templates work as written.
  • Requires a TeX distribution — often a gigabyte or more.
  • On Windows-on-ARM it is usually emulated, so it is slower than it looks.

How the choice is stored

Selecting an engine writes yaz.toml into the project root:

toml
entry = "main.tex"
engine = "system:xelatex"

A flat string rather than a nested table, because the file is meant to be edited by hand. Valid values are tectonic or system:<binary>.

Because it lives with the project rather than in your personal settings, a co-author who opens the same directory compiles the same way you do. That is the point: a manuscript that builds differently depending on who opened it is a manuscript nobody can review.

Engines are refused, never substituted

If a project is pinned to lualatex and lualatex is not installed, the compile fails and says so. yaz will not quietly use a different engine, and an unrecognised name in a hand-edited yaz.toml is rejected rather than guessed at.

This looks unhelpful for about five seconds and is the right behaviour: a silently different engine produces a subtly different PDF — different fonts, different line breaks, sometimes different pagination — and discovering that after submission is considerably worse than an error message.

See ADR-0007.

Application AGPL-3.0-or-later · @yaz/api MIT · docs CC BY-SA 4.0