如何检查通过 \csname 定义的某些宏是否为空?

如何检查通过 \csname 定义的某些宏是否为空?

我需要检查我的宏是否\csname creator1\endcsname为空。但我总是得到1(不为空)

\documentclass[]{article}

\makeatletter
\newcommand{\creator}[1]{%
    \expandafter\def\csname creator1\endcsname{#1}
}
\makeatother

\creator{}
\begin{document}

\makeatletter

    \csname creator1\endcsname

    \ifx\csname creator1\endcsname\@empty 0\else 1\fi

\makeatother

\end{document}

更新:

感谢评论,我意识到,我\expandafter之前忘记了\ifx。但如果我改用\expandafter\ifx\csname creator2\endcsname\@empty,我会not empty再次得到。有趣的是,\csname creator2\endcsname之前没有定义过。

相关内容