\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}、どちらの動作が望ましいかはわかりません)。

また、ビーマーで、例えばフットラインで特定の情報が利用可能かどうかをテストするために使用される2番目のアプローチも含めました。

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

関連情報