使用\insertauthor
in\ifthenelse
语句会引发错误(如果在文档的其他地方使用则不会出现错误)。\inserttitle
或\insertdate
工作正常。为什么当我使用如下时会出现错误\insertauthor
?您可以看到我正在尝试检查是否提供了作者信息。
\documentclass{beamer}
\usepackage{ifthen}
%\title{Title goes here}
\author{me}
\begin{document}
\ifthenelse{\equal{\insertauthor}{}}{empty}{not empty}
\end{document}
答案1
宏\insertauthor
的作用不仅仅是插入作者,因此您会遇到可扩展性问题。
相反,您可以检查\beamer@shortauthor
或\beamer@andstripped
是否为空(结果会因情况而异\author[]{me}
,不确定您想要哪种行为)。
我还介绍了第二种方法,该方法用于在 beamer 中测试某些信息是否可用,例如在 footlines 中
\documentclass{beamer}
\usepackage{ifthen}
\author{me}
\makeatletter
\newcommand{\fooooo}{\ifthenelse{\equal{\beamer@shortauthor}{}}{empty}{not empty}}
\newcommand{\foo}{\expandafter\ifblank\expandafter{\beamer@shortauthor}{empty}{not empty}}
\makeatother
\begin{document}
\begin{frame}
\fooooo
\foo
\end{frame}
\end{document}