[OS X TeX] Change in beamer ?
Joseph Wright
joseph.wright at morningstar2.co.uk
Thu Jun 5 10:28:26 EDT 2014
On 05/06/2014 14:07, Herbert Schulz wrote:
>
> On Jun 5, 2014, at 4:48 AM, Josep Maria Font <jmfont at ub.edu> wrote:
>
>> On 5 Jun 2014, at 04:19, Herbert Schulz <herbs at wideopenwest.com> wrote:
>>
>>> On Jun 4, 2014, at 5:57 PM, Ross Moore <ross.moore at mq.edu.au> wrote:
>>>
>>>> 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
>>>
>>> Howdy,
>>>
>>> I just added the xy package to a beamer test file I use (for testing the TeXShop latexmk engines) and I still don't have to explicitly load the etex package to avoid \dimen allocation errors. I need an example where that needs to be done.
>>
>> Here is one, using three of my most used packages
>> %%%%%%%%%%%%%%%%%%%%%%%%%%%
>> \documentclass{beamer}
>> %\usepackage{etex}
>> \usepackage[catalan]{babel}
>> \usepackage{mathtools}
>> \usepackage[all]{xy}
>> \begin{document}
>> \begin{frame}
>> Hola, m\'on\,!
>> \end{frame}
>> \end{document}
>> %%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
>> After experimenting, it is clear this is simply an issue of not enough room for \dimen s, because the problem disappears in the following cases:
>> - just deleting *any one* of the three packages;
>> - just deleting the [all] optional argument to xy; and
>> - just uncommenting the etex package.
>> Moreover, by changing the order in which the packages are loaded, the problem appears when loading the last of the three. Hence, this is not xy-specific either.
>>
>> Since with beamer 3.32 this does not happen, I assume that a significant number of \dimen s were added in 3.33.
>>
>> Finally, on the e-tex issue: Ross' explanation is clear, but still I don't understand that etex has to be added to modern TeX runs; I probably misunderstood what they say that etex is already incorporated. Actually, on the UK TeX FAQ <http://www.tex.ac.uk/cgi-bin/texfaq2html?label=etex> it says:
>>
>>> current TeX distributions are delivered with most formats built with an e-TeX-based system
>>
>> and
>>
>>> The extensions range from the seemingly simple (increasing the number of available registers from 256 to 32768) ...
>>
>> but it seems this is not enough, and to access some of the e-TeX functionalities in LaTeX one has to use the e-tex *package* ?
>>
>> Best,
>>
>>
>> JMaF
>
> Howdy,
>
> Ok, now I'm seeing the problem. I'm guessing that by default the etex extensions internal to pdftex are turned off and the etex package activates them.
>
> Good Luck,
>
> Herb Schulz
> (herbs at wideopenwest dot com)
The only change between 3.32 and 3.33 involving registers was to require
atbegshi package: this fixes some bugs where the code was assumed but
not loaded in edge cases. For me, deliberately forcing that package not
to load still gives the issue of running out of dimensions, when using
an up-to-date TeX system. (There are also a load of errors due to not
having it available!) Thus the issue must lie elsewhere.
Note: I *strongly* suggest loading the etex package as a matter of
routine. The LaTeX team are indeed talking about this sort of thing at
the moment (internal discussion)!
--
Joseph Wright
More information about the MacOSX-TeX
mailing list