beamerbasedecode.sty
在套件的來源檔案中beamer
,有以下幾行:
\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}%
}%
}
\beamer@decode
真正的解碼宏在哪裡?但我沒有找到\box0
原始檔案中使用的位置。為什麼我們需要\beamer@decode
放入\box0
?
答案1
這個盒子是故意從未使用過的。這裡的想法是,其中\beamer@@@temp
可能包含經過排版的材料。在盒子內進行的任何最終排版材料都不會在文件內部產生任何問題,因為盒子會被丟棄。此程式碼之後所需要的只是解碼結果,這些結果是全域設定的,因此可用。