為什麼 \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},不確定您想要哪種行為)。

我還包括了第二種方法,用於在投影機中測試例如在腳註中是否有某些資訊可用

\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}

相關內容