From: David A. <dra...@me...> - 2011-01-19 17:44:50
|
Ignasi Furió wrote: > El Wed, 19 Jan 2011 15:56:14 +0100, David Allsopp <dra...@me...> > vau escriure: > > > Ignasi Furió wrote: > >> this morning I've done a miktex update which updated packages tabu > >> and hyph-utf8. > >> > >> After that I have problems with a file that yesterday was working. > >> Next there is a 'minimal failing example'. > > > > <snipped excellent minimal example> > > > >> ----------- > >> ("D:\Documents and Settings\uib.UIB-22C4481E24B\Datos de > >> programa\MiKTeX\2.9\te x\context\base\supp-pdf.mkii" > >> [Loading MPS to PDF converter (version 2006.09.02).] ! No room for a > >> new \dimen . > >> \ch@ck ...\else \errmessage {No room for a new #3} > >> \fi > >> l.1253 \newdimen\MPscratchDim > >> % will be assigned global ? > > > > The error is that you've run out of \dimen registers - in other words, > > you've run out of memory (TeX only has 256 general \dimen registers). > > I'm using MiKTeX 2.8 here (I had to download tabu manually as my old > > MiKTeX 2.8 repository doesn't seem to include it) and though your > > example works - as it did for you yesterday - there are only 3 \dimen > > registers remaining (so if I put \newdimen\foo four times at the top > > of your file then I see the same error as you do now). > > > > The solution is to load etex as it enables access to the extended pool > > of registers in the e-TeX engine (it increases the number of \dimen's > > to > > 32768) - simply put \usepackage{etex} into your preamble as the first > > package you load. The other solution is to remove packages you don't > > need but of course you may well be using all of them! > > > > Thank you, that works, but it's the first time I must use it with miktex. > I thought that miktex's pdflatex format was already doing something > similar without the need of \usepackage{etex}. In miktex settings format > there is pdfetex (plain-e-TeX) and I believed that pdflatex was using > something similar, may be I'm wrong. MiKTeX changed to use etex as the default driver for the LaTeX format because the LaTeX dev team recommended it so that package authors would have access to its features - the LaTeX 2e kernel (and I think LaTeX3 as well) is not supposed to use or rely on anything from e-TeX. This means that its allocation mechanisms (\newdimen and so on - which are in fact just taken straight from Plain TeX) assume TeX's default 256 registers. One of the things which etex.sty does is to redefine those macros to use the additional registers available in e-TeX. I guess that packages only usually get more complicated over time and so the number of registers needed will increase! Equally, the presence of e-TeX means that TeX authors probably aren't using "tricks" to reduce the number of registers needed as you can just load etex.sty to fix it... David |