# 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
In `makefmts.sh` script in `cyrplain` package, there is a command `pdftex -ini -fmt=cyrpdftex -progname=pdftex cyrtex.ini`. Could you tell what it is supposed to do? Is the use of `-fmt` here an error? When the script is run, no `cyrpdftex.fmt` exists, and the script produces a file named symply `cyrtex.fmt`. Is there a way to specify to `tex -ini` the desired output file name? –  Alexey 12 hours ago

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.

-