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

Paul Isambert zappathustra at free.fr
Thu Feb 10 14:11:45 CET 2011


Le 10/02/2011 02:55, Heiko Oberdiek a écrit :
> 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?

The problem is I switched to LuaTeX not long after releasing XeSearch, 
so I haven't practised it much.
But I know I do such things generally to turn the control sequence into 
a switch:

\ifdefined\Hello at cs@xs at words
     % Somehting related to "Hello" is on.
\else
     % It's off.
\fi

> 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?

Oh yes I can, and I don't know why I didn't use \ifcsname in the first 
place.

Best,
Paul


More information about the XeTeX mailing list