我DeclareDocumentCommand
从数据包中发出了一个命令xparse
,但遇到了麻烦。我的问题是\ifmmode
(如果是数学模式)和else
无法正常工作,因为当我输入时,它会显示和$$ \num{}[] $$
中的内容。\ifmmode
\else
以下是部分代码
\DeclareDocumentCommand{\num}{m o o}{
\ifmmode
\text{mathmode}
\IfValueT{#1}{\text{#1}}
\IfValueT{#2}{
\IfNoValueTF{#3}{
\,\text{#2}
}
}
\else
\text{textmode}
\IfValueT{#1}{#1}
\IfValueT{#2}{
\IfValueT{#3}{#2/#3}
%\, % Espacio
\IfNoValueTF{#3}{\ \text{#2}}
}
\fi
}
答案1
您使用了\IfNoValueTF
但 仅提供了一个分支,而预期有两个分支。您可能想使用\IfNoValueT
。
\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}
\NewDocumentCommand{\num}{m o o}{%
\ifmmode
\text{mathmode}%
\IfValueT{#1}{\text{#1}}%
\IfValueT{#2}{%
\IfNoValueT{#3}{% <<< T instead of TF
\,\text{#2}%
}%
}%
\else
\text{textmode}%
\IfValueT{#1}{#1}%
\IfValueT{#2}{%
\IfValueT{#3}{#2/#3}%
%\, % Espacio
\IfNoValueT{#3}{\ \text{#2}}% <<< T instead of TF
}%
\fi
}
\begin{document}
\[ \num{}[] \]
\end{document}