如何将投影仪模板设置为与另一个模板相同?

如何将投影仪模板设置为与另一个模板相同?

是否可以将 beamer 模板设置为与另一个模板相同?我定义了一个名为“myTemplate page”的模板,我希望该模板与“section page”模板相同。这样做的目的是,如果有人更改主题,可能会更改 section page 模板,我希望 myTemplate 也随之更改。例如,在 MWE 中,Frankfurt 主题将 section page 参数设置为colsep=-4bp,rounded=true,shadow=\beamer@themerounded@shadow。我如何在事先不知道的情况下将这些设置直接传递给“myTemplate page”?

\documentclass{beamer}
\usetheme{Frankfurt}

\AtBeginSection[]{%
\frame{\sectionpage}
}%

\def\myTemplatepage{\usebeamertemplate*{myTemplate page}}

\defbeamertemplate*{myTemplate page}{default}[1][]
{
    \begingroup
    \centering
    {\usebeamerfont{section name}
    \usebeamercolor[fg]{section name} Some text}
    \vskip1em\par
    \begin{beamercolorbox}[sep=12pt,center,#1]{section title}
    \usebeamerfont{section title} Some other text \par
    \end{beamercolorbox}
    \endgroup
}

\begin{document}
\section{First section}        
\begin{frame}{}
\myTemplatepage 
\end{frame}
    
\end{document}

更新

我尝试添加

\defbeamertemplateparent{section page}{myTemplate page}[1][default]{[#1]}

(按照 TobiBS 的建议)但似乎什么也没做。另外,我猜测模板修改应该在定义模板父级之后进行,所以我将 移到了 之后\usetheme{Frankfurt}\defbeamertemplateparent但没有任何结果。

我没有找到很多带有\defbeamertemplateparent或 的示例\defbeamertemplatealias。我可能不明白它们是如何工作的。但感觉它应该可以工作!

更新2

我查看了课堂上提供的主题beamer,我认为唯一会相互影响的section page template是圆角和阴影。所以我决定在序言中手动检查这两个内容并将其应用于myTemplate page。这真的不是我想要的解决方案,但这是我目前能做的最好的。我更喜欢更通用的东西。我使用该etoolbox包进行布尔测试。

\AtBeginDocument{%
\@ifpackageloaded{beamerinnerthemerounded}{%
\ifcsdef{beamer@themerounded@shadow}{%
\edef\x{\beamer@themerounded@shadow}%
\ifboolexpe{bool {\x}}{%
\setbeamertemplate{myTemplate page}[default][colsep=-4bp, rounded=true, 
shadow=true]%
}{\setbeamertemplate{myTemplate page}[default][colsep=-4bp, rounded=true]}
}{}%
}{}%
}%  

答案1

Beamer 的结构不适合处理章节。相反,我会将其用作\part节之上的下一个节级。“部分”一词可以轻松替换为“章节”或任何您想要的称呼。

\documentclass{beamer}
\usetheme{Frankfurt}

\renewcommand\partname{Chapter}

\AtBeginSection[]{%
\frame{\sectionpage}
}%

\AtBeginPart{
\frame{\partpage}
}

\begin{document}
\part{Chapter title}
\section{First section}
\begin{frame}
content...
\end{frame}       
\end{document}

在此处输入图片描述


如果确实想自己创建章节,您可以使用现有的section page并更改一些文字:

\documentclass{beamer}
\usetheme{Frankfurt}

\AtBeginSection[]{%
\frame{\sectionpage}
}%

\newcounter{chapter}
\setcounter{chapter}{42}

\newcommand{\chapterpage}[1]{
  \renewcommand{\sectionname}{Chapter}
  \renewcommand{\insertsectionnumber}{\thechapter}
  \renewcommand{\insertsection}{#1}
  \sectionpage
}


\begin{document}
\begin{frame}{}
\chapterpage{Some title}
\end{frame}
\section{First section}       
\end{document}

在此处输入图片描述

相关内容