Al comienzo del archivo fuente beamerbasedecode.sty
de beamer
la clase, se definen dos modificadores:
\newif\ifbeamer@anotherslide
\newif\ifbeamer@localanotherslide
Al leer beamerbasedecode.sty
y beamerbaseframe.sty
, tengo algunos conocimientos sobre \ifbeamer@anotherslide
: En cada frame
entorno, beamer
llama \beamer@masterdecode
y \beamer@masterdecode
cambiaría el interruptor \ifbeamer@anotherslide
. Si bien es cierto, beamer
lo llama \beamer@masterdecode
una y otra vez, y al final genera todas las diapositivas en el marco.
Por dentro \beamerbasedecode.sty
, parece que \ifbeamer@anotherslide
y \ifbeamer@localanotherslide
siempre tienen el mismo valor:
\global\beamer@anotherslidetrue\beamer@localanotherslidetrue
La única diferencia es el \global
anterior al primero. Pero en la macro principal \beamer@masterdecode
, la segunda también se hace 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}%
}%
Esto me confunde: ¿cuáles son las diferencias entre \ifbeamer@anotherslide
y \ifbeamer@localanotherslide
? ¿Por qué necesitamos \ifbeamer@localanotherslide
?