简单的 ifthenelse 包含在命令中时会失败

简单的 ifthenelse 包含在命令中时会失败

我有这个测试用例,\ifthenelse当我将其直接放入我的文档中时,它按预期工作。

\ifthenelse{\equal{x}{y}}{XXX}{YYY}

如果我将其放入新命令的定义中,它仍然有效。

\newcommand{\tmpcmd}[1]
{
    \textsf{#1}
    \ifthenelse{\equal{x}{y}}{XXX}{YYY}
}

\tmpcmd{C}

但是,如果我将该命令的名称更改为pn,则会出现错误。

! Undefined control sequence.
<argument> \equal 
                  {x}{y}

该命令\pn已在我的文档中建立。其先前的定义是

\newcommand{\pn}[1]
{
    \textsf{#1}
}

但通过将其改为

\newcommand{\pn}[1]
{
    \textsf{#1}
    \ifthenelse{\equal{x}{y}}{XXX}{YYY}
}

现在我收到了错误信息。

这对我来说毫无意义。为什么\ifthenelse\pn函数各自独立工作,而一个不能在另一个内部工作?

答案1

问题在于在诸如和之\pn类的命令内部调用了它。\chapter\section

相关内容