下面是我用于演示的 beamer 样式文件的一部分的示例:
{
\nointerlineskip%
\begin{beamercolorbox}[wd=\paperwidth,ht=0.6cm,leftskip=.3cm,rightskip=.3cm]{frametitle}
\usebeamerfont*{frametitle}{\textbf{\insertframetitle}\textcolor{color1}{\insertframesubtitle}}\hfill \strut\par
\usebeamerfont{headline}%
\vskip.5ex
\end{beamercolorbox}
\nointerlineskip
\insertvrule{0.8pt}{black}
}
我想根据的内容创建一个条件语句\framesubtitle
,例如:
if \frametitle empty (or not defined)
% do something
else
% do this other thing
{
\nointerlineskip%
\begin{beamercolorbox}[wd=\paperwidth,ht=0.6cm,leftskip=.3cm,rightskip=.3cm]{frametitle}
\usebeamerfont*{frametitle}{\textbf{\insertframetitle}\textcolor{color1}{\insertframesubtitle}}\hfill \strut\par
\usebeamerfont{headline}%
\vskip.5ex
\end{beamercolorbox}
\nointerlineskip
\insertvrule{0.8pt}{black}
}
end
我尝试使用该\@ifempty
命令,但我无法找到使其工作的方法...您知道如何有效地处理这个问题吗?
答案1
egreg 的评论给了我正在寻找的答案,谢谢!最后,代码如下所示:
\defbeamertemplate*{frametitle}{smoothtree theme}{
\nointerlineskip%
\ifx\insertframesubtitle\@empty
\begin{beamercolorbox}[wd=\paperwidth,ht=0.6cm,leftskip=.3cm,rightskip=.3cm]{frametitle}
\usebeamerfont*{frametitle}{\textbf{\insertframetitle}\textcolor{color1}{\insertframesubtitle}}\hfill \strut\par%
\usebeamerfont{headline}%
\vskip.5ex
\end{beamercolorbox}%
\else
\begin{beamercolorbox}[wd=\paperwidth,ht=0.6cm,leftskip=.3cm,rightskip=.3cm]{frametitle}
\usebeamerfont*{frametitle}{\textbf{\insertframetitle}\textcolor{color1}{\insertframesubtitle}}\hfill \strut\par%
\usebeamerfont{headline}%
\vskip.5ex
\end{beamercolorbox}%
\fi
\nointerlineskip
\insertvrule{0.8pt}{black}}
而且之后的部分代码我也可以\else
随意修改……