Usar a instrução \insertauthor
in \ifthenelse
gera um erro (nenhum erro se for usado em outra parte do documento). \inserttitle
ou \insertdate
funciona bem. Por que recebo um erro quando uso \insertauthor
o 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 \insertauthor
macro faz mais do que apenas inserir o autor, então você enfrenta um problema de expansibilidade.
Em vez disso, você pode verificar se \beamer@shortauthor
ou \beamer@andstripped
está 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}