# How to use tex -ini, tex -fmt, initex and fmtutil?

What are the roles of each of these commands? What is the good command to create a new format ?

-

The initex command is on a modern system identical to tex -ini: I would favour the latter. This calls TeX in 'initex mode', which is the only way that TeX can be run to create a format as it enables the \dump primitive. Making a format 'by hand' is a simple case of running

tex -ini <filename>


where <filename> should be for a format file. For example, to build a LaTeX2e format

tex -ini latex.ltx


If you want to build a format with the e-TeX extensions enabled, you prepend a * to the file name (this requires appropriate shell escaping), and of course use a TeX derivative which has them. For example, for the LaTeX3 test material, I occasionally build a 'minimal format' with

pdftex -ini "*l3format.ltx"


Running tex -fmt requires a format name as an argument, and is used to get TeX to use whatever format you've created. So

tex -fmt=latex


would choose the LaTeX2e format (either the one I just created or the standard one installed in the main TeX tree). That will not be identical to running latex on a modern system, as the latter uses pdfTeX, so more like

pdftex -fmt=latex


Finally, fmtutil is a TeX Live tool for managing and building the large number of formats that a full TeX system has. It is used to generate the formats stored in the main TeX tree, which are used by default. For example, separate formats are needed for tex, pdftex, latex, pdflatex, xetex, xelatex, ..., and you would not want to have to change those all by hand. However, if you are building your own custom format then it's not needed.

-
Thanks, Very helpful answer as usual ! –  Alain Matthes Apr 15 '12 at 6:58

Another way to use initex is as a pure TeX. I use luatex --ini for my software because I don't need any extra macro definitions or a format such as plain.tex.

-