\ifbeamer@anotherslide и \ifbeamer@localanotherslide в beamerbasedecode.sty

\ifbeamer@anotherslide и \ifbeamer@localanotherslide в beamerbasedecode.sty

В начале исходного файла 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?

Связанный контент