Google Groups unterstützt keine neuen Usenet-Beiträge oder ‑Abos mehr. Bisherige Inhalte sind weiterhin sichtbar.

TeX capacity exceeded, sorry [save size=1000].

74 Aufrufe
Direkt zur ersten ungelesenen Nachricht

BS

ungelesen,
22.02.1999, 03:00:0022.02.99
an
Greetings,
My TeX program has instructed me to consult a TeX WiZarD.

I am trying to compile a large bibliography (668 items) .
I do not even get halfway through.
I do get many messages for underfull boxes fi this means anything.
I have looked in the FAQ to no avail. I have tried chopping up
into several small files and inputing them, doesn't help.

I am using the following:
\documentclass[12pt]{thesis}
\usepackage{psfig}
\usepackage[square]{natbib}
\bibliographystyle{plainnat}

How do I solve my problem?

Thanks!
Bob Stockwell


The following is my error message:
%%%%%%%%%%%
! TeX capacity exceeded, sorry [save size=1000].
\normalsfcodes ... `\;1500\sfcode `\,1250

l.158

If you really absolutely need more capacity,
you can ask a wizard to enlarge me.


Here is how much of TeX's memory you used:
968 strings out of 55906
16704 string characters out of 210664
58983 words of memory out of 262143
3905 multiletter control sequences out of 10000
6209 words of font info for 22 fonts, out of 81920 for 254
14 hyphenation exceptions out of 607
22i,4n,23p,255b,1001s stack positions out of 300i,100n,60p,5000b,1000s
Output written on bob_bib.dvi (46 pages, 81852 bytes).

%%%%%%%%%%%


More info on the latex i am using

This is emTeX (tex386), Version 3.14159 [4b] (preloaded format=latex
98.11.13) 22 FEB 1999 10:06
**&latex Bob_bib.tex
(bob_bib.tex
LaTeX2e <1998/06/01>
loaded.
(thesis.cls
Document Class: thesis 1997/08/12 v0.1 Nonstandard LaTeX document class
(c:/emtex/texinput/latex2e/size12.clo
File: size12.clo 1998/05/05 v1.3y Standard LaTeX file (size option)
)
\c@part=\count79
\c@chapter=\count80
\c@section=\count81
\c@subsection=\count82
\c@subsubsection=\count83
\c@paragraph=\count84
\c@subparagraph=\count85
\c@figure=\count86
\c@table=\count87
\abovecaptionskip=\skip41
\belowcaptionskip=\skip42
\bibindent=\dimen102
) (c:/emtex/texinput/psfig.sty
\@unused=\write3
\ps@stream=\read1
\p@intvaluex=\dimen103
\p@intvaluey=\dimen104

psfig/tex 1.10-dvips
) (c:/emtex/texinput/natbib.sty
Package: natbib 1997/07/05 6.6 (PWD)
\bibhang=\skip43
\bibsep=\skip44
LaTeX Info: Redefining \cite on input line 416.
\c@NAT@ctr=\count88
) (bob_bib.aux

Daniel Luecking

ungelesen,
22.02.1999, 03:00:0022.02.99
an
"BS" <Ple...@dont.email.me> writes:

>Greetings,
>My TeX program has instructed me to consult a TeX WiZarD.

This doesn't take a TeX wizard.

>The following is my error message:
>%%%%%%%%%%%
>! TeX capacity exceeded, sorry [save size=1000].
>\normalsfcodes ... `\;1500\sfcode `\,1250

You are lucky that save size is one of the memory array values that can
be set on the fly in emTeX.

>This is emTeX (tex386), Version 3.14159 [4b] (preloaded format=latex
>98.11.13) 22 FEB 1999 10:06
>**&latex Bob_bib.tex

If you run latex using a batch file you can edit the batch file, adding
the switch "/ms3000" after the program name "tex386" and before
"&latex",
OR
you can set EMTEXOPT to include this option. Change the number in "/ms3000"
to some number that works. The default is 1000, the maximum is 16000. I
have never run across a file that needed more than 3000.

Read tex.doc for further details. In particular, sections 3.3 and 6.

--
Dan Luecking Dept. of Mathematical Sciences
luec...@comp.uark.edu University of Arkansas
http://comp.uark.edu/~luecking/ Fayetteville, AR 72101

BS

ungelesen,
22.02.1999, 03:00:0022.02.99
an

> ...(snip)....

>If you run latex using a batch file you can edit the batch file, adding
>the switch "/ms3000" after the program name "tex386" and before
>"&latex",

>--
>Dan Luecking Dept. of Mathematical Sciences
>luec...@comp.uark.edu University of Arkansas
>http://comp.uark.edu/~luecking/ Fayetteville, AR 72101

Dan,
thank you very much for the pointer.
This nicely solves the problem.

cheers,
bob

Jeffrey Goldberg

ungelesen,
22.02.1999, 03:00:0022.02.99
an
On Mon, 22 Feb 1999, BS wrote:

> Date: Mon, 22 Feb 1999 10:11:37 -0700
> From: BS <Ple...@dont.email.me>
> Newsgroups: comp.text.tex
> Subject: TeX capacity exceeded, sorry [save size=1000].

In the case that you gave (partiailly quoted below) it is extremely likely
that you have some sort of macro loop.

\newcommand{\A}{stuff\B stuff}
\newcommand{\B}{stuff\C stuff}
\newcommand{\C}{stuff\A stuff}

which will lead to a stack overflow when you actually call any of those
macros. Look very carefully at the macros on or near line 158 of your
input file. No finite amount of memory could fix this problem.

-j

> %%%%%%%%%%%
> ! TeX capacity exceeded, sorry [save size=1000].
> \normalsfcodes ... `\;1500\sfcode `\,1250
>

> l.158
>
> If you really absolutely need more capacity,
> you can ask a wizard to enlarge me.
>
>
> Here is how much of TeX's memory you used:
> 968 strings out of 55906
> 16704 string characters out of 210664
> 58983 words of memory out of 262143
> 3905 multiletter control sequences out of 10000
> 6209 words of font info for 22 fonts, out of 81920 for 254
> 14 hyphenation exceptions out of 607
> 22i,4n,23p,255b,1001s stack positions out of 300i,100n,60p,5000b,1000s
> Output written on bob_bib.dvi (46 pages, 81852 bytes).


--
Jeffrey Goldberg +44 (0)1234 750 111 x 2826
Cranfield Computer Centre FAX 751 814
J.Gol...@Cranfield.ac.uk http://WWW.Cranfield.ac.uk/public/cc/cc047/
Relativism is the triumph of authority over truth, convention over justice.


Jeffrey Goldberg

ungelesen,
22.02.1999, 03:00:0022.02.99
an
On Mon, 22 Feb 1999, BS wrote:

> >the switch "/ms3000" after the program name

> >Dan Luecking

> Dan,
> thank you very much for the pointer.
> This nicely solves the problem.

In that case entirely ignore my posting on this. I was flatly and totally
wrong. I must have misremembered what the different stacks are and which
runs out with macro loops. Oh, well.

-j

Daniel Luecking

ungelesen,
22.02.1999, 03:00:0022.02.99
an
Jeffrey Goldberg <J.Gol...@Cranfield.ac.uk> writes:

>On Mon, 22 Feb 1999, BS wrote:

>> >the switch "/ms3000" after the program name
>> >Dan Luecking

>> Dan,
>> thank you very much for the pointer.
>> This nicely solves the problem.

>In that case entirely ignore my posting on this. I was flatly and totally
>wrong. I must have misremembered what the different stacks are and which
>runs out with macro loops. Oh, well.

You were not _totally_ wrong. The save size seems to be connected to
levels of grouping. This could have been caused by incorrect nesting of
macro calls. I only learned about this when I tried to TeX a .dtx
file (refman.dtx, a couple of years ago) that had 12(!) nested levels of
\begin{macrocode}...\end{macrocode} and this same error cropped up.
When I rewrote this as two separate instances nested to only 6 levels it
compiled OK in emTeX. I suspected that this macrocode environment was
being misused, but when I posed the question here I was told that
emTeX's default save size was on the small side.

Nevertheless, I maintain that code that overflows even emTeX's small
save size is at best inefficiently written. In my case the purpose
seemed to be purely to get all the 12 macro names into the margin of one
paragraph. In the poster's case, it seemed to be a problem with the
bibliography created by BibTeX, and therefore with natbib (or possibly
some interaction of packages). In any case, almost certainly beyond a
mere user's direct control.

Donald Arseneau

ungelesen,
23.02.1999, 03:00:0023.02.99
an
In article <7as32u$i...@falcon.ccs.uwo.ca>, "BS" <Ple...@dont.email.me> writes...
^^^^^^^^^^^^^^^^^^^^
*sigh*, but this is the type of question that deserves an email
response. At least I distributed only to canada.

>I am trying to compile a large bibliography (668 items) .
>I do not even get halfway through.

>! TeX capacity exceeded, sorry [save size=1000].


>\normalsfcodes ... `\;1500\sfcode `\,1250
>
>l.158

This does not look like halfway through a bibliography, it looks like
the beginning.

The underfull boxes don't cause such errors, but they indicate bad
formatting.

>) (bob_bib.aux

I presume this cut-off was for the posting only. If your error did occur
there it means you have an overrun in your aux file -- usually due to
unprotected fragile commands in captions or titles.

You should rerun, but with
\errorcontextlines=999
in the preamble, and quote at least 20 lines around line 158 of whatever
file is being read (probably thesis.bbl).

Donald Arseneau as...@triumf.ca

nos...@nowhere.erehwon.utp

ungelesen,
24.02.1999, 03:00:0024.02.99
an
writes
>Greetings,
>My TeX program has instructed me to consult a TeX WiZarD.
>

> I am trying to compile a large bibliography (668 items) .


>I do not even get halfway through.
>! TeX capacity exceeded, sorry [save size=1000].

This is almost certainly a bug in LaTeX, due to it not properly handling
a feature of TeX. It may arise in other contexts. I will explain.

The macro
\def\once
{\advance\count0 1 \csname xxx\number\count0 \endcsname \once }
is of course recursive. It creates an infinity of control sequences.

If called outside of a group, \once will cause TeX to bomb, because
TeX runs out of control sequence names.

If called inside a group, \once will cause TeX to bomb, because it runs
out of save space. Try it and see, if you don't believe me!

Why is this? Because \csname ... \endcsname has the side effect of
causing the formed control sequence, if otherwise undefined, to be set
to \relax. This assignment is restored at the end of the group, if
made in a group. (By the way, this is a way of making assignments in
the mouth of TeX. A dirty trick of course.) The save stack is where
such reassignments arestored, so they can be restored. Hence the
bombing.

What does this have to do with the bibliography problem?
Well, LaTeX uses \csname ... \endcsname to form control sequences as
it processes the "aux" file. And so it bombs like the second use of
\once if the bibliography is large enough.

This problem can be solved by confining the side-effect to a group.
For example, it the LaTeX macros had the fragment
\def\buggy#1{\expandafter #1\csname}
\def\doit#1{\buggy\dotheitem xx: #1\endcsname}
\def\dotheitem #1{\gdef #1{\undefinedref #1}}
then we would get the error. But if we replace \buggy by
\def\safety#1{%
\begingroup
\expandafter\endgroup
\expandafter #1\csname
}
then we would not get the error. You see, the restoration occurs within
the tiny little group, inside \safety.

All this, except the application to LaTeX biblographies, is explained in
my article in Baskerville 4(1) 1994), pages 16--17. Baskerville is the
jounral of the UK TeX Users Group.

---
Jonathan Fine
Remove insect to get email address fi...@bug.active-tex.demon.co.uk

David Carlisle

ungelesen,
24.02.1999, 03:00:0024.02.99
an fine.active-tex.demon.co.uk

> This is almost certainly a bug in LaTeX, due to it not properly handling
> a feature of TeX. It may arise in other contexts. I will explain.

> What does this have to do with the bibliography problem?


> Well, LaTeX uses \csname ... \endcsname to form control sequences as
> it processes the "aux" file.


This is not a bug in latex. (The csname behaviour is a mis feature of
tex, but that is another story)

On a normal sized tex installation, it is possible to have several
thousand cross references accessed via csname. This is enough for the
vast majority of documents (and for the rest you can make a bigger
tex).

If the lookup tables for cross references were implemented via token
lists rather than via csname, latex would be orders of magnitude
slower, for no apparent gain.

David

Donald Arseneau

ungelesen,
24.02.1999, 03:00:0024.02.99
an
In article <873e3vt...@dcarlisle.demon.co.uk>, David Carlisle <da...@dcarlisle.demon.co.uk> writes...

>> This is almost certainly a bug in LaTeX, due
>> LaTeX uses \csname ... \endcsname to form control sequences as
>> it processes the "aux" file.
>
>This is not a bug in latex.
>If the lookup tables for cross references were implemented via token
>lists rather than via csname, latex would be orders of magnitude
>slower, for no apparent gain.

I don't think that was Jonathan's point. Yes, you are committed to using
a lot of csname space, but there is no requirement to also tax the save stack.

However, LaTeX does *not* tax the save stack in its definition of \bibitem!
On the other hand, it is possible that natbib *does* construct some new
csnames for every bibitem. It could use a check.

Donald Arseneau as...@triumf.ca

0 neue Nachrichten