# \ifbeamer@anotherslide and \ifbeamer@localanotherslide in beamerbasedecode.sty

At the beginning of the source file beamerbasedecode.sty of beamer class, two switches are defined:

\newif\ifbeamer@anotherslide
\newif\ifbeamer@localanotherslide

By reading beamerbasedecode.sty and beamerbaseframe.sty, I have some knowledge of \ifbeamer@anotherslide: In every frame environment, beamer calls \beamer@masterdecode, and \beamer@masterdecode would change the switch \ifbeamer@anotherslide. While it is true, beamer would calls \beamer@masterdecode again and again, and at last generates all slides in the frame.

Inside \beamerbasedecode.sty, It seems that \ifbeamer@anotherslide and \ifbeamer@localanotherslide always have the same value:

\global\beamer@anotherslidetrue\beamer@localanotherslidetrue

The only difference is the \global before the first one. But in the main macro \beamer@masterdecode, the second one is also made global.

\def\beamer@stoptexts{| stop:0| }
{
\catcode\|=13
\catcode\:=13
\catcode\,=13
\catcode\.=13
\catcode\+=13
\catcode\-=13
\catcode$$=13 \catcode$$=13
\catcode\ =13
\gdef\beamer@masterdecode#1{% must be called within a group
\ifnum\catcode\|=13\edef|{\string|}\fi%
\ifnum\catcode\:=13\edef:{\string:}\fi%
\ifnum\catcode\,=13\edef,{\string,}\fi%
\ifnum\catcode\.=13\edef.{\string.}\fi%
\ifnum\catcode\+=13\edef+{\string+}\fi%
\ifnum\catcode\-=13\edef-{\string-}\fi%
\ifnum\catcode$$=13\edef({\string(}\fi% \ifnum\catcode$$=13\edef){\string)}\fi%
\ifnum\catcode\ =13\edef {\string }\fi%
\edef\beamer@@@temp{#1\beamer@stoptexts}%
\beamer@localanotherslidefalse%
\setbox0=\hbox{%
\expandafter\beamer@decode\beamer@@@temp%
\ifbeamer@localanotherslide\global\beamer@localanotherslidetrue\fi}%
}%

This confuses me: what are the differences between \ifbeamer@anotherslide and \ifbeamer@localanotherslide? Why we needs \ifbeamer@localanotherslide?

• I think it's fair to say this is not really clear, certainly without any notes! It would be easy enough to do some tests but as there is no full suite for beamer I'd be extremely wary of altering it in the release version! – Joseph Wright Apr 27 '15 at 14:53