TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

In the file plain.tex, in many places there are references like

% When INITEX (the TeX initializer) starts up,
% it has defined the following \catcode values:
% \catcode`\^^@=9 % ascii null is ignored


% INITEX sets up \mathcode x=x, for x=0..255, except that
% \mathcode x=x+"7100, for x = `A to `Z and `a to `z;
% \mathcode x=x+"7000, for x = `0 to `9.

, for instance.

Where are these INITEX definitions located at?

share|improve this question
Here's a start: What’s happened to initex? – Werner Mar 2 '12 at 17:36
@Werner: Thanks, but I've actually read that already. – morbusg Mar 2 '12 at 17:40
My LuaTeX based software is called with luatex --ini, because I don't need all the extra plain macros :) – topskip Mar 2 '12 at 17:48
@PatrickGundlach: Cool! :-) Does that mean you only use the primitives? – morbusg Mar 2 '12 at 17:50
@morbusg - actually the TeX file is only a few lines long. The rest is about manipulating Lua nodes to create a page (see TeX without TeX on the Lua wiki). So while I use TeX in the strict sense, I don't use the TeX programming language, and therefore I don't need any macros. Just a few PDF helpers (bookmarks and colorstack). – topskip Mar 2 '12 at 17:56
up vote 3 down vote accepted

INITEX is a slightly modified version of tex suitable for creating format definitions; as such, it starts with a very blank slate. Its starting state is described in the TeXbook, p.39:

There's a program called INITEX that is used to install TeX, starting from scratch; INITEX is like TeX except that it can do even more things....INITEX needs extra space to carry out such tasks [hyphenation tables, formats], so it generally has less memory available for typesetting....

When INITEX begins, it knows nothing but TeX's primitives. All 256 characters are initially of category 12, except that <return> has category 5, <space> has category 10, <null> has category 9, <delete> has category 15, the 52 letters A...Z and a...z have category 11, % and \ have the respective categories 14 and 0.

So the answer to your question is that these definitions are made in the TeX source code; I do not have TeX: the program at hand right now, so I can't give you a line number.

These days, there is may be no actual program called initex on your computer; instead, as the TeX FAQ explains, it is incorporated into tex itself via command-line options.

share|improve this answer
My distribution of TeX Live 2011 still carries initex.exe... – Werner Mar 2 '12 at 17:44
A-ha, no wonder I couldn't find it. Thanks! :-) – morbusg Mar 2 '12 at 17:45
With MikTeX you find both initex as well as virtex, which is something akin to his wife:) – Yiannis Lazarides Mar 2 '12 at 17:56
@Werner TeX Live binaries (and probably some other distributions too) have the ability to look at their name to deduce how to behave, e.g., if you link or copy the tex binary to initex it will behave like tex -ini which is the most distribution work these days. – Frank Mittelbach Mar 2 '12 at 17:57
@Ryan: By TeX: the program, do you mean the weaved result (i.e., tex.pdf)? – morbusg Mar 2 '12 at 18:13

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.