summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/FAQ-en/html/FAQ-noroom.html
blob: a1f154fd3c2b5ddbf87c501c99dced919459725d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<head>
<title>UK TeX FAQ -- question label noroom</title>
</head><body>
<h3>No room for a new &lsquo;<em>thing</em>&rsquo;</h3>
<p/>The technology available to Knuth at the time TeX was written is
said to have been particularly poor at managing dynamic storage; as a
result much of the storage used within TeX is allocated as fixed
arrays, in the reference implementations.  Many of these fixed arrays
are expandable in modern TeX implementations, but size of the
arrays of &ldquo;registers&rdquo; is written into the specification as being 256
(usually); this number may not be changed if you still wish to call
the result TeX

(see <a href="FAQ-triptrap.html">testing TeX implementations</a>).
<p/>If you fill up one of these register arrays, you get a TeX error
message saying
<blockquote>
<pre>
! No room for a new \&lt;thing&gt;.
</pre>
</blockquote><p>
The <code>\</code><code>thing</code>s in question may be <code>\</code><code>count</code> (the object underlying
LaTeX&rsquo;s <code>\</code><code>newcounter</code> command), <code>\</code><code>skip</code> (the object underlying
LaTeX&rsquo;s <code>\</code><code>newlength</code> command), <code>\</code><code>box</code> (the object underlying
LaTeX&rsquo;s <code>\</code><code>newsavebox</code> command), or <code>\</code><code>dimen</code>, <code>\</code><code>muskip</code>,
<code>\</code><code>toks</code>, <code>\</code><code>read</code>, <code>\</code><code>write</code> or <code>\</code><code>language</code> (all types of object
whose use is &ldquo;hidden&rdquo; in LaTeX; the limit on the number of
<code>\</code><code>read</code> or <code>\</code><code>write</code> objects is just 16).
<p/>There is nothing that can directly be done about this error, as you can&rsquo;t
extend the number of available registers without extending TeX
itself.
  Of course, <a href="FAQ-etex.html">e-TeX</a> and <a href="FAQ-omegaleph.html">Omega</a>

 both do this, as does <a href="FAQ-commercial.html">MicroPress Inc&rsquo;s VTeX</a>.
<p/>The commonest way to encounter one of these error messages is to have
broken macros of some sort, or incorrect usage of macros (an example
is discussed in <a href="FAQ-epsf.html">epsf problems</a>).
<p/>However, sometimes one just <em>needs</em> more than TeX can offer,
and when this happens, you&rsquo;ve just got to work out a different way of
doing things.  An example is the 
<a href="FAQ-usepictex.html">difficulty of loading PicTeX with LaTeX</a>.
In cases like PicTeX, it may be possible to use
<a href="FAQ-etex.html">e-TeX</a> (all modern distributions provide it).  The
LaTeX package <i>etex</i> modifies the register allocation
mechanism to make use of e-TeX&rsquo;s extended register sets (it&rsquo;s a
derivative of the Plain TeX macro file <i>etex.src</i>, which is
used in building the e-TeX Plain format; both files are part of the
e-TeX distribution).  Unfortunately, e-TeX doesn&rsquo;t help with
<code>\</code><code>read</code> or <code>\</code><code>write</code> objects.
<p/><p>This question on the Web: <a href="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=noroom">http://www.tex.ac.uk/cgi-bin/texfaq2html?label=noroom</a>
</body>