Почему \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}

Связанный контент