Por que \insertauthor leva a um erro dentro da instrução \ifthenelse?

Por que \insertauthor leva a um erro dentro da instrução \ifthenelse?

Usar a instrução \insertauthorin \ifthenelsegera um erro (nenhum erro se for usado em outra parte do documento). \inserttitleou \insertdatefunciona bem. Por que recebo um erro quando uso \insertauthoro procedimento abaixo? Você pode ver que estou tentando verificar se as informações do autor foram fornecidas.

\documentclass{beamer}
\usepackage{ifthen}

%\title{Title goes here}
\author{me}

\begin{document}

\ifthenelse{\equal{\insertauthor}{}}{empty}{not empty}

\end{document}

Responder1

A \insertauthormacro faz mais do que apenas inserir o autor, então você enfrenta um problema de expansibilidade.

Em vez disso, você pode verificar se \beamer@shortauthorou \beamer@andstrippedestá vazio ou não (o resultado será diferente para o caso \author[]{me}, sem ter certeza de qual comportamento você gostaria).

Também incluí uma segunda abordagem que é usada no beamer para testar, por exemplo, nas linhas de rodapé se determinada informação está disponível

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

informação relacionada