[Xy-pic] [OS X TeX] Change in beamer ?

Ross Moore ross.moore at mq.edu.au
Thu Jun 5 00:57:24 CEST 2014


Hello Maria, and others,

On 05/06/2014, at 8:15 AM, Josep Maria Font wrote:

> As to Victor Ivrii's suggestion
> 
>> \usepackage{etex}
> 
> yes, this solves the problem, and further puzzles me, because, like Herb, I thought the present versions of TeX were actually etex... but now I recall a similar memory problem (not with beamer) a colleague had when editing a book, and which was solved also by loading etex...
> 
> Any ideas on this last issue ?


Certainly we are using  etex  already, but the LaTeX macros 
that allocate the extra \count  and \dimen  registers
need to be adapted to the increased number available,
and required to be used by Xy-pic.
Beamer also uses a lot, so you certainly need access to 
the extra registers when both are loaded.


Here is what  etex.sty  actually does, redefining \alloc@ .

viz.

>>> %% We don't change the LaTeX definitions of \newcount, etc., but the
>>> %% \alloc@ macro doing the actual work is redefined.
>>> 
>>> %% When the normal register pool for \count, \dimen, \skip, \muskip,
>>> %% \box, or \toks registers is exhausted, we switch to the extended pool.
>>> 
>>> \def\alloc@#1#2#3#4#5%
>>>  {\ifnum\count1#1<#4% make sure there's still room
>>>     \allocationnumber\count1#1
>>>     \global\advance\count1#1\@ne
>>>     \global#3#5\allocationnumber
>>>     \wlog{\string#5=\string#2\the\allocationnumber}%
>>>   \else\ifnum#1<6
>>>     \begingroup \escapechar\m at ne
>>>     \expandafter\alloc@@\expandafter{\string#2}#5%
>>>   \else\errmessage{No room for a new #2}\fi\fi
>>>  }
>>> 
>>> %% The \expandafter construction used here allows the generation of
>>> %% \newcount and \globcount from #1=count.
>>> 
>>> \def\alloc@@#1#2%
>>>  {\endgroup % restore \escapechar
>>>   \wlog{Normal \csname#1\endcsname register pool exhausted,
>>>     switching to extended pool.}%
>>>   \global\expandafter\let
>>>     \csname new#1\expandafter\endcsname
>>>     \csname glob#1\endcsname
>>>   \csname new#1\endcsname#2%
>>>  }


It is that fallback to  \alloc@@  that gives access
to more registers.

Here is the original \def\alloc@{...} in  latex.ltx :

>>> \def\alloc@#1#2#3#4#5{\global\advance\count1#1\@ne
>>>   \ch at ck#1#4#2% make sure there's still room
>>>   \allocationnumber\count1#1%
>>>   \global#3#5\allocationnumber
>>>   \wlog{\string#5=\string#2\the\allocationnumber}}
>>> 
>>> \gdef\ch at ck#1#2#3{%
>>>   \ifnum\count1#1<#2\else
>>>    \errmessage{No room for a new #3}%
>>>   \fi}


> 
> Best,
> 
> 
> JMaF


Hope this helps,

	Ross

------------------------------------------------------------------------
Ross Moore                                       ross.moore at mq.edu.au 
Mathematics Department                           office: E7A-206      
Macquarie University                             tel: +61 (0)2 9850 8955
Sydney, Australia  2109                          fax: +61 (0)2 9850 8114
------------------------------------------------------------------------

-------------- next part --------------
A non-text attachment was scrubbed...
Name: logo.png
Type: image/png
Size: 5257 bytes
Desc: not available
URL: <http://tug.org/pipermail/xy-pic/attachments/20140605/4da1f76a/attachment.png>
-------------- next part --------------



More information about the xy-pic mailing list