在我的 Beamer 演示文稿中,我故意将宏保留\institute
为未定义/空白,当我测试自动设置的宏是否\insertinstitute
为空时,它确实产生了预期的结果,即它为空。
但是,在同一个文档中,另一个宏(短版本)\insertshortinstitute
似乎已设置,尽管它不应该设置。
这是一个错误吗?或者更一般地说,我该如何修复它以使其实际上为空?
以下是 MWE:
\documentclass[10pt,compress,
% draft,
xcolor={dvipsnames,table},
aspectratio=1610,
]{beamer}
\title[title]{The Title}
\subtitle[subtitle]{The Subtitle}
\author[author]{The Author}
% Not set:
%\institute[institute]{The Institute}
\makeatletter
\defbeamertemplate{title page}{my title page}
{
\usebeamerfont{normal text}%
\begin{beamercolorbox}%
[wd=1\paperwidth,sep=0.04\paperwidth,
leftskip=0.01\paperwidth,rightskip=0.01\paperwidth]%
{title}%
{\usebeamerfont{title}\inserttitle\strut\par}%
\ifx\insertsubtitle\@empty%
\else%
{\usebeamerfont{subtitle}\insertsubtitle\strut\par}%
\fi
\end{beamercolorbox}
\vspace{0.2\paperheight}
\parbox[b][0.25\paperheight]{0.5\textwidth}{%
{\usebeamerfont{author}\usebeamercolor[fg]{author}\insertauthor\strut\par}
\ifx\insertinstitute\@empty%
{no institute\strut\par}%
\else%
{\usebeamerfont{institute}\usebeamercolor[fg]{normal text}Institute: \insertinstitute\strut\par}
\fi
\ifx\insertshortinstitute\@empty%
{no short institute\strut\par}%
\else%
{\usebeamerfont{institute}\usebeamercolor[fg]{normal text}Short Institute: \insertshortinstitute\strut\par}
\fi%
\vfill
\ifx\insertdate\@empty%
{\usebeamerfont{date}\usebeamercolor[fg]{normal text}\today\strut\par}
\else%
{\usebeamerfont{date}\usebeamercolor[fg]{normal text}\insertdate\strut\par}
\fi
}\hfill%
}
\makeatother
\setbeamertemplate{title page}[my title page]
\begin{document}
\frame[plain]{\titlepage}
\end{document}
以下是输出结果:
我刚刚注意到,一个快速而肮脏的修复方法是手动重新定义它(在序言的末尾),例如:
\renewcommand*{\insertshortinstitute}{}
我仍然感兴趣这是否是一个错误,或预期的行为,或者我在某个地方犯了一个错误。
答案1
你可以从中寻找beamerouterthemeinfolines.sty
灵感并加以利用
\expandafter\ifblank\expandafter{\beamer@shortinstitute}{}{~~(\insertshortinstitute)}