[XeTeX] Running out of memory in XeSearch while trying to XeIndex on largish latex files.

Heiko Oberdiek heiko.oberdiek at googlemail.com
Thu Feb 10 02:55:13 CET 2011


On Wed, Feb 09, 2011 at 10:17:54PM +0100, Paul Isambert wrote:

> Le 09/02/2011 20:52, Michael Joyner a écrit :

> >We are trying to use XeIndex/XeSearch on what we consider to be
> >some medium/small documents and are getting the following error:
> >
> >    ! TeX capacity exceeded, sorry [save size=80000].
> >    \pdfstringdef ... \let \GenericError \@gobblefour
> >                                                      \let
> >    \GenericWarning \@gob...
> >    l.5671
> >    Here is how much of TeX's memory you used:
> >     26308 strings out of 494522
> >     458137 string characters out of 503842
> >     738532 words of memory out of 3000000
> >     29310 multiletter control sequences out of 15000+200000
> >     9330 words of font info for 51 fonts, out of 3000000 for 9000
> >     670 hyphenation exceptions out of 8191
> >     40i,7n,43p,500b,80001s stack positions out of
> >    5000i,500n,10000p,200000b,80000s
> >    Output written on 000002944.pdf (79 pages).
> >
> >
> >I have tried increasing the 'save size' above 80000, but it
> >doesn't seem to go any higher. :(
> >
> >This occurs when the package is loaded, regardless as to whether
> >we specify words to index or not.
> >
> >We tested with just XeSearch loading, and the same error occurred.
> >
> >We would really appreciate any advice on this.
> 
> Without a minimal example, there isn't much I can do. But possible
> loops are described on page 5 of the doc. Are you sure you're not in
> such a case?

\documentclass{article}
\usepackage{xesearch}
\begin{document}
\tracingassigns=1
Hello World
\tracingassigns=0
\end{document}

The example shows that each word creates two command sequences,
example for "Hello":

  {changing \Hello at cs@xs at words=undefined}
  {into \Hello at cs@xs at words=\relax}
  {changing \hello at ncs@xs at words=undefined}
  {into \hello at ncs@xs at words=\relax}

I don't know the internals of xesearch.sty, but do you really need
the meaning \relax? Or it is just the usual side effect of TeX's
\csname?

In \xs@@F at Test you are using:

  \expandafter\ifx\csname\xs at String @cs at xs@words\endcsname\relax

Perhaps you can replace it by \ifcsname ...\endcsname?

Yours sincerely
  Heiko Oberdiek


More information about the XeTeX mailing list