处理 \ifnum 的“!缺少数字,视为零。”

处理 \ifnum 的“!缺少数字,视为零。”

假设我有一个变量,它可能是也可能不是数字;当它不是数字时,我该如何处理,而不会因“!缺少数字,视为零”而崩溃。?

从实际角度来看,请考虑以下 MWE:

\documentclass{book}

\begin{document}

\def\mytestvar{4}

\ifnum\mytestvar=2 %
  \typeout{Test 1 true} %
\else %
  \typeout{Test 1 false (as expected)} %
\fi

\def\mytestvar{2}

\ifnum\mytestvar=2 %
  \typeout{Test 2 true (as expected)} %
\else %
  \typeout{Test 2 false} %
\fi

\def\mytestvar{ mistake}

\ifnum\mytestvar=2 %
  \typeout{Test 3 true} %
\else %
  \typeout{Test 3 false (as expected)} %
\fi

\def\mytestvar{2}

\ifnum\mytestvar=2 %
  \typeout{Test 4 true (as expected)} %
\else %
  \typeout{Test 4 false} %
\fi


\end{document}

输出结果如下:

Test 1 false (as expected)
Test 2 true (as expected)
! Missing number, treated as zero.
<to be read again> 
                   m
l.23 \ifnum\mytestvar
                     =2 %
?  

我怎样才能使测试 3 以错误通过(而不是崩溃),以便测试 4 在同一次运行中也能表现良好?希望不包括任何额外的软件包?

答案1

您可以使用\ifnum2=0\mytestvar。如果\mytestvar扩展为数字,则前导 0 无关紧要,但如果不是数字,则至少会有一个数字,这也会触发错误的分支。

相关内容