我正在努力在与 beamer .tex 文件不同的文件中创建样式文件。配置时title page
使用:
\setbeamertemplate{title page}{
或使用:
\setbeamertemplate*{title page}{
我得到了不同的行为。似乎在使用时,asterisk
.tex 文档中的标题和其他框架标题信息会被使用,而没有它,所有信息都会被忽略。使用星号时,如果我包含任何对象(例如颜色框),我会收到错误,而不是将标题材料放在其上方。
(最后,我只想设置框架标题幻灯片的背景颜色。)
答案1
我认为这种说法\setbeamertemplate*
不存在,或者至少没有记录。beameruserguide
我们可以找到
我理解的是official
的定义\setbeamertemplate
。如您所见,没有可选的*
。
你可能混淆了这个命令和\defbeamertemplate
定义的命令
*
以及可选项的位置。关于此选项,我们可以阅读(第 171 页):
如果我看的不是问题正文,而是问题标题,投影仪中的星号起什么作用\setbeamercolor*{
?我必须说,\setbeamercolor*
和\setbeamerfont*
命令都定义了两个版本,带星号和不带星号。相应的定义可以在第 185 页和第 196 页找到。这两个命令的不带星号的版本会添加或替换相应模板的先前调用,而带星号的版本会在应用当前定义之前重置先前定义中的所有参数。
答案2
没有\setbeamertemplate*
变体。 的定义\setbeamertemplate
可以在 中找到beamerbasetemplates.sty
:
% beamerbasetemplates.sty, line 91:
\def\setbeamertemplate#1{%
\@ifnextchar[{\beamer@sbtchoose{#1}}{\beamer@sbtexec{#1}}}
这意味着该命令将把下一个标记或匹配的括号组作为第一个参数,然后检查后面的。让我们列出辅助宏和[
的定义。\beamer@sbtexec
\beamer@sbtchoose
% beamerbasetemplates.sty, line 93:
\long\def\beamer@sbtexec#1#2{%
\expandafter\long\expandafter\def\csname beamer@@tmpl@#1\endcsname{#2}%
\expandafter\ifx\csname beamer@@tmpgrp@#1\endcsname\relax%
\else%
\expandafter\expandafter\expandafter\def
\expandafter\expandafter\expandafter\beamer@sbt@group
\expandafter\expandafter\expandafter{\csname beamer@@tmpgrp@#1\endcsname}%
\@for\beamer@templ:=\beamer@sbt@group\do{\expandafter\setbeamertemplate\expandafter{\beamer@templ}{#2}}%
\fi%
}
% beamerbasetemplates.sty, line 103:
\long\def\beamer@sbtchoose#1[#2]{\def\beamer@@sbt@option{#2}%
\expandafter\ifx\csname beamer@@tmpop@#1@#2\endcsname\relax%
\expandafter\let\expandafter\beamer@@next\csname beamer@@tmpop@#1@*\endcsname%
\else%
\expandafter\let\expandafter\beamer@@next\csname beamer@@tmpop@#1@#2\endcsname%
\fi%
\beamer@@next%
}
因此我们看到假设的调用
\setbeamertemplate*{abc}{def}
将导致将传递*
给\beamer@sbtchoose
作为参数 的内容存储为参数#1
,并且不执行任何abc
操作,该内容将保留在输入流中(并且可能会导致错误)。#2
def