\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}
、どちらの動作が望ましいかはわかりません)。
また、ビーマーで、例えばフットラインで特定の情報が利用可能かどうかをテストするために使用される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}