В начале исходного файла beamerbasedecode.sty
класса beamer
определены два переключателя:
\newif\ifbeamer@anotherslide
\newif\ifbeamer@localanotherslide
Читая beamerbasedecode.sty
и beamerbaseframe.sty
, у меня есть некоторые знания о \ifbeamer@anotherslide
: В каждой frame
среде, beamer
вызовы \beamer@masterdecode
, и \beamer@masterdecode
изменил бы переключатель \ifbeamer@anotherslide
. Хотя это правда, beamer
вызовы \beamer@masterdecode
снова и снова, и в конце концов генерирует все слайды в кадре.
Внутри \beamerbasedecode.sty
, кажется, что \ifbeamer@anotherslide
и \ifbeamer@localanotherslide
всегда имеют одно и то же значение:
\global\beamer@anotherslidetrue\beamer@localanotherslidetrue
Единственное отличие — это \global
перед первым. Но в основном макросе \beamer@masterdecode
второй тоже сделан глобальным.
\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}%
}%
Это меня сбивает с толку: в чем разница между \ifbeamer@anotherslide
и \ifbeamer@localanotherslide
? Зачем нам \ifbeamer@localanotherslide
?