ETEX(1)

๐Ÿ“ฆ version 2026.0, in alpine 3.24

๐ŸŽ€ NAME ๐ŸŽ€

okay so this is the manual page for etex (etex - extended (plain) TeX) ๐Ÿ’– it lives in the General Commands Manual, so you know it's serious ๐Ÿงš

๐Ÿซถ SYNOPSIS ๐Ÿซถ

etex [options] [&format] [file|\commands]

๐Ÿ’… DESCRIPTION ๐Ÿ’…

okay so etex runs the e-TeX typesetter on a file, and by default it makes file.dvi as the output ๐Ÿ“„ if your file has no extension, .tex gets slapped onto the end automatically โœจ you can also skip the filename and type a set of e-TeX commands instead, and the first one has to start with a backslash ๐Ÿ”ฅ

if you use an &format argument, e-TeX grabs a different set of precompiled commands from format.fmt ๐Ÿฆ‹ but honestly it's usually better to just use the -fmt format option instead ๐Ÿ’œ

e-TeX is the first real result of an international research & development project called the NTS Project ๐ŸŒˆ it got started under the aegis of DANTE e.V. back in 1992 ๐ŸŒธ the whole goal is to keep the spirit and philosophy of TeX alive and kicking, while still respecting Knuth's wish that TeX should stay frozen ๐ŸงŠ (respect, honestly)

e-TeX can run in two modes ๐Ÿ‘‘ in compatibility mode it's supposed to be completely interchangeable with standard TeX ๐Ÿซถ in extended mode a bunch of new primitives get added, which help with (among other things) bidirectional typesetting ๐Ÿ”ฅ

an extended mode format gets made by putting an asterisk (*) in front of the name of the source file for the format โญ

and e-TeX's handling of its command-line arguments is basically the same as the other TeX programs in the web2c implementation ๐Ÿ“

๐ŸŽ€ OPTIONS ๐ŸŽ€

okay this version of e-TeX understands the following command line options, so let's get into them ๐Ÿ’–

  • -fmt format โ€” use format as the format name, instead of the name e-TeX was called by or a %& line ๐Ÿฆ‹
  • -enc โ€” turns on the encTeX extensions ๐ŸŒธ this only works together with -ini, and if you want the full documentation for them, check http://www.olsak.net/enctex.html ๐Ÿ”—
  • -etex โ€” turns on the e-TeX extensions โœจ only works together with -ini ๐Ÿ’œ
  • -file-line-error โ€” error messages come out as file:line:error, which is pretty similar to how a lot of compilers print theirs ๐Ÿ™ˆ
  • -no-file-line-error โ€” nope, turns off that file:line:error error style ๐Ÿšซ
  • -file-line-error-style โ€” this is the old name for -file-line-error ๐Ÿ‘ต
  • -halt-on-error โ€” exits with an error code the moment an error shows up during processing ๐Ÿ’€
  • -help โ€” prints a help message and then exits ๐Ÿงš
  • -ini โ€” starts in INI mode, which is what you use to dump formats ๐Ÿ“ INI mode can typeset, but no format is preloaded, so basic stuff like setting catcodes might be needed ๐Ÿซ 
  • -interaction mode โ€” sets the interaction mode ๐Ÿ’… the mode can be batchmode, nonstopmode, scrollmode, or errorstopmode โœจ they mean the same thing as the matching \commands ๐ŸŽ€
  • -ipc โ€” sends DVI output to a socket as well as the usual output file ๐Ÿ”Œ whether you actually get this option is up to the installer ๐Ÿคทโ€โ™€๏ธ
  • -ipc-start โ€” same as -ipc, but it also starts the server on the other end ๐Ÿš€ again, the installer decides if this one is available ๐Ÿ’œ
  • -jobname name โ€” uses name as the job name, instead of making one up from the input file's name ๐Ÿฆ‹
  • -kpathsea-debug bitmask โ€” sets the path searching debugging flags based on the bitmask ๐Ÿง for the details, go read the Kpathsea manual ๐Ÿ“–
  • -mktex fmt โ€” turns on mktexfmt, where fmt has to be either tex or tfm ๐Ÿ› ๏ธ
  • -mltex โ€” turns on the MLTeX extensions ๐ŸŒˆ only works together with -ini โœจ
  • -no-mktex fmt โ€” turns mktexfmt off, where fmt has to be either tex or tfm ๐Ÿ™…โ€โ™€๏ธ
  • -output-comment string โ€” uses string in the DVI file comment instead of the date ๐Ÿ“
  • -output-directory directory โ€” writes output files into directory instead of the current directory ๐Ÿ“‚ input files get looked up in directory first, and then along the normal search path ๐Ÿ”
  • -parse-first-line โ€” if the first line of the main input file starts with %&, it gets parsed to look for a dump name or a -translate-file option ๐Ÿ‘€
  • -no-parse-first-line โ€” disables parsing that first line of the main input file ๐Ÿ™…โ€โ™€๏ธ
  • -progname name โ€” pretends to be the program name ๐ŸŽญ this changes both the format that gets used and the search paths ๐Ÿ›ค๏ธ
  • -recorder โ€” turns on the filename recorder ๐Ÿ“ผ it leaves a trail of every file opened for input and output in a file with the .fls extension ๐Ÿ•ต๏ธโ€โ™€๏ธ
  • -shell-escape โ€” enables the \write18{command} construct ๐Ÿ’ป the command can be any shell command ๐Ÿ˜ณ this construct is normally disallowed for security reasons, so be careful bestie ๐Ÿ”
  • -no-shell-escape โ€” disables the \write18{command} construct, even if the texmf.cnf file has it turned on โ›”
  • -src-specials โ€” inserts source specials into the DVI file โœจ
  • -src-specials where โ€” inserts source specials in certain places of the DVI file ๐Ÿ“ where is a comma-separated value list, and the options are cr, display, hbox, math, par, parent, or vbox ๐Ÿงฉ
  • -translate-file tcxname โ€” uses the tcxname translation table to set the mapping of input characters and the re-mapping of output characters ๐Ÿ”
  • -default-translate-file tcxname โ€” basically -translate-file, except a %& line is allowed to overrule this setting ๐Ÿ’…
  • -version โ€” prints version information and exits ๐ŸŽ€

๐ŸŒˆ ENVIRONMENT ๐ŸŒˆ

okay so for the precise details on how the environment variables get used, check out the Kpathsearch library documentation (the Path specifications' node) ๐Ÿ“š and if you want to query what the variables are set to, the kpsewhich` utility is your bestie ๐Ÿ”

โš ๏ธ one caveat!! in most e-TeX formats, you cannot use ~ in a filename you give directly to e-TeX ๐Ÿ˜ญ that's because ~ is an active character, so it gets expanded instead of being treated as part of the filename ๐Ÿ’€ other programs, like Metafont, don't have this problem ๐Ÿ™„
  • TEXMFOUTPUT โ€” normally e-TeX puts its output files in the current directory ๐Ÿ“‚ if an output file can't be opened there, it tries the directory set in TEXMFOUTPUT instead ๐Ÿซถ there's no default value for that variable ๐Ÿคทโ€โ™€๏ธ for example, if you say etex paper and the current directory isn't writable, and TEXMFOUTPUT is /tmp, e-TeX tries to create /tmp/paper.log (and /tmp/paper.dvi, if any output is produced) ๐Ÿฆ‹ TEXMFOUTPUT also gets checked for input files, since TeX often generates files that need to be read later ๐Ÿ” for input, no suffixes (like ``.tex'') get added by default, so the input name is just checked exactly as given โœจ
  • TEXINPUTS โ€” the search path for \input and \openin files ๐Ÿ›ค๏ธ it should start with ., so user files get found before system files ๐Ÿ  an empty path component gets replaced with the paths defined in the texmf.cnf file ๐Ÿงฉ for example, setting TEXINPUTS to .:/home/user/tex: prepends the current directory and ``/home/user/tex'' to the standard search path ๐Ÿ’–
  • TEXFORMATS โ€” the search path for format files ๐Ÿ“ฆ
  • TEXPOOL โ€” the search path for etex internal strings ๐Ÿงต
  • TEXEDIT โ€” the command template for switching to an editor โœ๏ธ the default, usually vi, gets set when e-TeX is compiled ๐Ÿ› ๏ธ
  • TFMFONTS โ€” the search path for font metric (.tfm) files ๐Ÿ”ค

๐Ÿ“ FILES ๐Ÿ“

the location of the files below varies from system to system, so use the kpsewhich utility to find where they live ๐Ÿ”

  • etex.pool โ€” text file with e-TeX's internal strings ๐Ÿงต
  • texfonts.map โ€” filename mapping definitions ๐Ÿ—บ๏ธ
  • *.tfm โ€” metric files for e-TeX's fonts ๐Ÿ”ค
  • *.fmt โ€” predigested e-TeX format (.fmt) files ๐Ÿ“ฆ

๐Ÿ™ˆ NOTES ๐Ÿ™ˆ

okay so starting with version 1.40, pdfTeX incorporates the e-TeX extensions ๐Ÿ’œ which means in this installation eTeX might just be a symbolic link to pdfTeX ๐Ÿ”— see pdftex(1) for that one ๐Ÿซถ also, this manual page is not meant to be exhaustive ๐Ÿ™ƒ the complete documentation for this version of e-TeX lives in the info manual Web2C: A TeX implementation ๐Ÿ“–

๐Ÿ’€ BUGS ๐Ÿ’€

this version of e-TeX implements a bunch of optional extensions ๐ŸŒˆ but honestly, many of them conflict to a greater or lesser extent with the definition of e-TeX ๐Ÿ˜ฌ when those extensions are enabled, the banner printed at startup changes from e-TeX to e-TeXk ๐ŸŽ€

โš ๏ธ this version of e-TeX doesn't trap arithmetic overflow when dimensions get added or subtracted ๐Ÿ˜ญ it's rare, but when it happens the generated DVI file will be invalid ๐Ÿ’€

๐Ÿฆ‹ SEE ALSO ๐Ÿฆ‹

pdftex(1), tex(1), mf(1) ๐Ÿ’–

๐Ÿ‘‘ AUTHORS ๐Ÿ‘‘

e-TeX was developed by Peter Breitenlohner and the NTS team ๐Ÿซถ Peter later kept developing it outside of the team ๐ŸŒธ

TeX was designed by Donald E. Knuth, who implemented it using his Web system for Pascal programs ๐Ÿ‘‘ it was ported to Unix at Stanford by Howard Trickey, and at Cornell by Pavel Curtis ๐Ÿงš the version that comes with the Unix TeX distribution now is the one generated by the Web to C system (web2c), which was originally written by Tomas Rokicki and Tim Morgan ๐Ÿ’œ

the encTeX extensions were written by Petr Olsak โœจ


that's the whole tea, bestie!! ๐ŸŒˆ this page is from Web2C 2015, last touched 1 March 2011, and it's the ETEX(1) page ๐Ÿ’…๐ŸŽ€ love you, go be a main character ๐Ÿฆ‹๐Ÿ’–

๐Ÿ“ฆ where this page comes from
  • alpine 3.24: texmf-dist-doc 2026.0-r0 ยท LPPL-1.0 AND LPPL-1.1 AND LPPL-1.2 AND LPPL-1.3a AND LPPL-1.3c AND GPL-2.0-only
  • ๐Ÿ’– girlified by anthropic/claude-haiku-5.5 on : a language model's rewrite of the original, under its terms