<br><br><div class="gmail_quote">On Thu, Feb 10, 2011 at 8:21 AM, Paul Isambert <span dir="ltr"><<a href="mailto:zappathustra@free.fr">zappathustra@free.fr</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Le 10/02/2011 04:39, Ross Moore a écrit :<div><div></div><div class="h5"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Michael, and Heiko,<br>
<br>
On 10/02/2011, at 1:49 PM, Michael Joyner wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
On Wed, Feb 9, 2011 at 9:30 PM, Ross Moore<<a href="mailto:ross.moore@mq.edu.au" target="_blank">ross.moore@mq.edu.au</a>>  wrote:<br>
<br>
<br>
See how large you can set the  "save size" parameter.<br>
Multiply by 10, or 100, or 1000... .<br>
<br>
I'd say you are exploring to the boundaries of what XeTeX<br>
is capable of doing.<br>
<br>
<br>
save size won't go over 80,000 :(<br>
</blockquote>
OK.<br>
<br>
But we don't need it now.<br>
Here's the cause of the problem.<br>
<br>
The package source  xesearch.sty   has a technical problem.<br>
The macros  \xs@String  and  \xs@Stack  are used as variables,<br>
repeatedly changing their expansions. However, sometimes the code<br>
uses \edef\xs@String{...} but mostly it uses \xdef\xs@String{...}.<br>
<br>
This mixture of local/global scope is what causes the loss of<br>
string space, because an \edef instance requires the previous \xdef<br>
instance to be retained, not discarded. Then comes another \xdef<br>
which may release the previous \edef's memory, but not that of the<br>
  \xdef  prior to the \edef .  Hence memory usage grows.<br>
<br>
By making all instances become global, I now get your document to<br>
finish, along with the Index page.<br>
<br>
Here's the memory usage:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Here is how much of TeX's memory you used:<br>
  26092 strings out of 494542<br>
  451878 string characters out of 3157455<br>
  480737 words of memory out of 3000000<br>
  29083 multiletter control sequences out of 15000+200000<br>
  8574 words of font info for 51 fonts, out of 3000000 for 9000<br>
  669 hyphenation exceptions out of 8191<br>
  40i,7n,43p,1687b,9339s stack positions out of 5000i,500n,10000p,200000b,50000s<br>
</blockquote></blockquote></blockquote>
<br>
<br>
<br>
Here's the patch needed to modify  xesearch.sty .<br>
<br>
<br></blockquote></div></div></blockquote><div><br></div><div>Does this look right?</div><div><br></div><div>diff -u xesearch*sty</div><div>--- xesearch-orig.sty<span class="Apple-tab-span" style="white-space:pre">        </span>2011-02-10 09:56:49.000000000 -0500</div>
<div>+++ xesearch.sty<span class="Apple-tab-span" style="white-space:pre">      </span>2011-02-10 09:56:25.000000000 -0500</div><div>@@ -166,7 +166,7 @@</div><div>         \xdef\xs@Stack{%</div><div>           \xs@String\noexpand\xs@end\xs@unexpanded\expandafter{\xs@Stack}%</div>
<div>           }%</div><div>-        \edef\xs@String{\xs@unexpanded\expandafter{\xs@String} }%</div><div>+        \xdef\xs@String{\xs@unexpanded\expandafter{\xs@String} }%</div><div>         \XeTeXinterchartokenstate1</div>
<div>       \else</div><div>         \expandafter\xs@Lowercase\expandafter{\xs@String}\xs@lcString</div><div>@@ -175,7 +175,7 @@</div><div>           \xdef\xs@Stack{%</div><div>             \xs@String\noexpand\xs@end\xs@unexpanded\expandafter{\xs@Stack}%</div>
<div>             }%</div><div>-          \edef\xs@String{\xs@unexpanded\expandafter{\xs@String} }%</div><div>+          \xdef\xs@String{\xs@unexpanded\expandafter{\xs@String} }%</div><div>           \XeTeXinterchartokenstate1</div>
<div>         \else</div><div>           \expandafter\expandafter\expandafter\xs@EndString</div><div>@@ -684,16 +684,16 @@</div><div>     \fi</div><div>   \fi\xs@next</div><div>   }</div><div>-\def\xs@Stack{}</div><div>+\xdef\xs@Stack{}</div>
<div> \def\xs@Remainder{}</div><div> \def\xs@StartString{%</div><div>   \xs@Stringtrue</div><div>   \let\xs@StartString\relax</div><div>-  \def\xs@String{}%</div><div>+  \xdef\xs@String{}%</div><div>   \def\PrefixFound{}%</div>
<div>   \def\SuffixFound{}%</div><div>   \def\AffixFound{}%</div><div>-  \def\xs@Stack{}%</div><div>+  \xdef\xs@Stack{}%</div><div>   \def\xs@Remainder{}%</div><div>   \xs@Phrasefalse</div><div>   \setbox\xs@Box=\hbox\bgroup</div>
<div>@@ -908,7 +908,7 @@</div><div>           \let\xs@next\xs@Evaluate</div><div>         \else</div><div>           \ifxs@Phrase</div><div>-            \def\xs@Stack{}%</div><div>+            \xdef\xs@Stack{}%</div><div>
             \def\xs@next{\xs@String\xs@Restore}%</div><div>           \else</div><div>             \def\xs@next{\unhbox\xs@Box\xs@Restore}%</div><div>@@ -975,7 +975,7 @@</div><div>   \XeTeXinterchartokenstate=1</div><div>
   }</div><div> \def\xs@PopWord#1\xs@end#2\xs@end{%</div><div>-  \def\xs@String{#2}%</div><div>+  \xdef\xs@String{#2}%</div><div>   \def\xs@@PopWord#2##1\xs@end{%</div><div>     \edef\xs@Remainder{##1\xs@unexpanded\expandafter{\xs@Remainder}%</div>
<div>       }%</div><div>@@ -983,7 +983,7 @@</div><div>   \xs@@PopWord#1\xs@end</div><div>   }</div><div> \def\xs@PopStack#1\xs@end#2\xs@@end{%</div><div>-  \def\xs@Stack{#2}%</div><div>+  \xdef\xs@Stack{#2}%</div><div>   \expandafter\xs@PopWord\xs@String\xs@end#1\xs@end</div>
<div>   }</div><div> \def\SortByLength#1{%</div><div>[seeksort@www sty]$ </div><div> </div></div>