条件表达式总是错误

条件表达式总是错误

尝试使用条件表达式,即使用这个简单的 if...

\def\testvar{testvalue}
\if\testvar{testvalue}{istrue}\else{isfalse}\fi

我总是isfalse……我认为我已经做了我应该做的一切,但我就是无法做到。

我看错了什么?

答案1

抱歉,但是你的语法和工作原理\if完全错误。

当 TeX 发现\if它开始扩展后面的 token 直到找到两个不可扩展的 token。然后它根据它们的字符代码比较这两个 token(控制序列被认为有自己的字符代码)。

因此你的\if\testvar立即变成\if testvar并且 TeXt与进行比较e,它们有不同的字符代码。

使用传统的 TeX 编程,您可以比较意义\ifx

\def\fixedvalue{testvalue}% for following comparisons

\def\testvar{testvalue}

% this will return true
\ifx\testvar\fixedvalue
  something (not in braces)%
\else
  something else (not in braces)%
\fi

\def\testvar{whatever}

% this will return false
\ifx\testvar\fixedvalue
  something (not in braces)%
\else
  something else (not in braces)%
\fi

相关内容