In der Quelldatei beamerbasedecode.sty
des beamer
Pakets befinden sich die folgenden Zeilen:
\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}%
}%
}
Wo \beamer@decode
ist das eigentliche Dekodierungsmakro? Aber ich finde nicht, wo \box0
in der Quelldatei das verwendet wird. Warum müssen wir das \beamer@decode
in das einfügen \box0
?
Antwort1
Die Box wird ganz bewusst nie verwendet. Die Idee dahinter ist, dass sie \beamer@@@temp
Material enthalten könnte, das gesetzt wird. Wird dies innerhalb einer Box durchgeführt, verursacht alles, was als gesetztes Material endet, kein Problem im Dokument, da die Box weggeworfen wird. Alles, was nach diesem Code benötigt wird, sind die Ergebnisse der Dekodierung, die global festgelegt sind und daher verfügbar sind.