投影仪中的星号'\setbeamercolor*{' 有什么作用?

投影仪中的星号'\setbeamercolor*{' 有什么作用?

我正在努力在与 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操作,该内容将保留在输入流中(并且可能会导致错误)。#2def

相关内容