Использование оператора \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}
, не уверен, какое поведение вам нужно).
Я также включил второй подход, который используется в проекторе для проверки, например, в нижних строках, доступна ли определенная информация.
\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}