测试“空虚”

测试“空虚”

有时,在 LaTeX 中,人们想对宏是否为空进行简单测试,例如

\def\foo{%
  This is...
  \ifx\baz\@empty
    Sparta!
  \else
    a pony farm.
  \fi
}

我感兴趣的是如何定义\baz才能获得期望的结果。一些想法表明,所有这三个定义

\def\baz{}
\edef\baz{\@empty}
\let\baz=\@empty

将导致真实情况。现在,我想知道,最佳做法是什么,或者是否存在任何差异(就而言\def\@empty{}),或者是否存在人们青睐的情况,(显然)取决于人们在做什么?(例子会非常好!)

答案1

如果你问的是定义(而不是前面问题关注的测试形式)

那么假设\@empty具有其通常含义

\def\baz{}
\edef\baz{\@empty}

就 的最终定义而言是相同的\baz

\let\baz=\@empty

理论上略有不同,因为 TeX 可以共享用于存储两个定义的内存,但由于这种情况下的定义是空的,所以这实际上并没有什么区别,并且在任何情况下都无法在 TeX 中检测到这种差异。

相关内容