为什么 \insertauthor 会导致 \ifthenelse 语句中出现错误?

为什么 \insertauthor 会导致 \ifthenelse 语句中出现错误?

使用\insertauthorin\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}

相关内容