我想修改 Beamer 主题,以便在每张幻灯片中添加一些文本,但不在 ToC(内容表)页面中添加一些文本。
因此,我想我需要在我的主题中使用类似“if/then”的条件,如下所示(伪代码样式):
if(we are not in a ToC page)
addText()
else
do nothing
但是我完全不知道如何在 Beamer 中写入它,而且在互联网上也找不到它。
你知道我该怎么写吗?
谢谢!
为了回应我收到的评论,以下是一些精确信息:我想要修改的 Beamer 主题由我的公司提供。我想在每个幻灯片的顶部添加一个标题(就在顶部栏的下方,上面有公司徽标和标题)。所以我在 frametitle 部分编辑了 Beamer 主题的外部 .sty 文件,添加了一个 beamerbox。它看起来像这样:
\defbeamertemplate*{frametitle}{watermelon theme}
{
[...]
\begin{beamercolorbox}[wd=.95\paperwidth,ht=0.0cm,leftskip=.1\paperwidth]{section title}
\begin{flushleft}
{\usebeamercolor[fg]{frametitle}\usebeamerfont{framesubtitle}\insertsection\par}%
\end{flushleft}
\end{beamercolorbox}
[...]
}
但是,这个 beamerbox 在每个幻灯片中都会显示,甚至在 ToC 中也是如此。因此,我认为如果我有办法在这个 beamercolorbox 之前写一个“if(我们不在 ToC 页面中)”,这将是让它工作的最简单的方法。
够了吗?
根据 samcarter 的回答,我在代码中测试了以下解决方法(现在对我来说足够了,直到我终于找到时间学习 latex/beamer):在更改部分时,我写道:
\setbeamertemplate{frametitle}[default]
\section{My title}
\setbeamertemplate{frametitle}[My company theme]
谢谢 !
答案1
如果部分页面应使用不同于常规框架的其他框架标题模板,您可以将其添加到部分页面的定义中。为了保持其本地化,请将其包装到附加层中{}
。
\documentclass{beamer}
\defbeamertemplate*{frametitle}{watermelon}
{
\begin{beamercolorbox}[wd=.95\paperwidth,ht=0.0cm,leftskip=.1\paperwidth]{section page}
\begin{flushleft}
{\color{red} \usebeamerfont{framesubtitle}\insertsection\par}%
\end{flushleft}
\end{beamercolorbox}
}
\AtBeginSection{%
{
\setbeamertemplate{frametitle}[default]
\begin{frame}
\frametitle{toc}
\end{frame}
}
}
\begin{document}
\section{bla}
\begin{frame}
\frametitle{bla}
abc
\end{frame}
\section{blub}
\begin{frame}
\frametitle{blub}
abc
\end{frame}
\end{document}