Beamer 模板:命令已定义

Beamer 模板:命令已定义

我发现投影仪模板我想使用。但是,它编译时

!LaTeX 错误:命令 \beamer@@tmpop@section page@default 已定义。或名称 \end... 非法,请参阅手册第 192 页。

错误可能位于以下某个位置。您能找到它吗?

\usecolortheme{crane}

\setbeamerfont{section title}{parent=title}
\setbeamercolor{section title}{parent=titlelike}
\defbeamertemplate*{section page}{default}[1][]
{
\centering
\begin{beamercolorbox}[sep=8pt,center,#1]{section title}
\usebeamerfont{section title}\insertsection\par
\end{beamercolorbox}
}
\newcommand*{\sectionpage}{\usebeamertemplate*{section page}}

\newcommand{\comment}[1]{}

%include polycode.fmt

\begin{document}
\title{Practical introduction to Agda}

编辑:有一个证人模板可能有效

答案1

据我所知,模板添加的某些代码除了导致错误外,什么也不做。其他部分确实尝试做一些事情,但方式不正确。这意味着它们会导致错误,并且可能没有任何区别,具体取决于 TeX 对错误的响应。

让我们看看它能做什么...

\setbeamerfont{section title}{parent=title}

默认是什么?

\setbeamerfont{section title}{size=\Large,parent=title}

好的。这样可以将节标题设置为与演示文稿标题相同大小的字体,而不是切换到\Large。如果您需要,这样做是可以的。

\setbeamercolor{section title}{parent=titlelike}

默认是什么?

\setbeamercolor{section title}{parent=titlelike}

因此模板中的代码不执行任何操作。然而,它是无害的。它只是毫无意义。

\defbeamertemplate*{section page}{default}[1][]
{
\centering
\begin{beamercolorbox}[sep=8pt,center,#1]{section title}
\usebeamerfont{section title}\insertsection\par
\end{beamercolorbox}
}

默认是什么?

\defbeamertemplate*{section page}{default}[1][]
{
  \begingroup
    \centering
    {\usebeamerfont{section name}\usebeamercolor[fg]{section name}\sectionname~\insertsectionnumber}
    \vskip1em\par
    \begin{beamercolorbox}[sep=12pt,center,#1]{part title}
      \usebeamerfont{section title}\insertsection\par
    \end{beamercolorbox}
  \endgroup
}

因此,模板会忽略由 定义的任何标题(\part{}如果有),减少间隔并Section <Number>从节标题上方消除 。所以这试图做一些事情。然而,它以错误的方式做到了这一点并导致错误。此外,这些错误意味着 Beamer 至少部分忽略了它试图实现的更改:

定制失败

如果您想要这些更改,请有效地进行并避免错误:

\defbeamertemplate*{section page}{mine}[1][]
{
\centering
\begin{beamercolorbox}[sep=8pt,center,#1]{section title}
\usebeamerfont{section title}\insertsection\par
\end{beamercolorbox}
}
\usebeamertemplate{mine}

有效定制

但请注意,模板不会尝试改变小节标题页:

非定制页面

因此,您的演示文稿的格式会有些不一致 - 这可能就是设计的一部分。

\newcommand*{\sectionpage}{\usebeamertemplate*{section page}}

这是默认设置:

\def\sectionpage{\usebeamertemplate*{section page}}

因此,此代码会创建一个与现有命令同名的新命令,但由于会导致错误,因此无法运行,但如果运行成功,其结果将与原始命令完全相同。太棒了。

去模板化代码:

\documentclass{beamer}
\usecolortheme{crane}
\newcommand{\comment}[1]{}
\begin{document}
  \title{Practical introduction to Agda}
  \begin{frame}
    \titlepage
  \end{frame}
  \section{Cooking without an Arga}
  \begin{frame}
    \sectionpage
  \end{frame}
  \subsection{The gas cooker}
  \begin{frame}
    \subsectionpage
  \end{frame}
\end{document}

去模板化输出:

阿格达与阿尔加

修正模板代码:

\setbeamerfont{section title}{parent=title}
\defbeamertemplate*{section page}{mine}[1][]
{
\centering
\begin{beamercolorbox}[sep=8pt,center,#1]{section title}
\usebeamerfont{section title}\insertsection\par
\end{beamercolorbox}
}
\usebeamertemplate{mine}
\newcommand{\comment}[1]{}

修正了(技术上 - 而非美学上)模板输出:

设计不一致

相关内容