如果我使用
\global\advance\itemno by 1%
\ifnum\itemno=4\the\itemno\fi
我得到 5。如果我使用
\global\advance\itemno by 1%
\itemno=\itemno%
\ifnum\itemno=4\the\itemno\fi
我得到了预期的 4。为什么这是必要的?
答案1
你的第一个例子
\newcount\itemno
\global\advance\itemno by 1%
\ifnum\itemno=4\the\itemno\fi
由 TeX 解释:\global\advance\itemno by 1...
\ifnum
因为数字扫描尚未完成,所以会扩展:会\ifnum\itemno=4...
扩展\the\itemno
为0
,所以\ifnum\itemno=40\fi
。因为\itemno
不是40,所以\ifnum
会扩展为空,所以\global\advance\itemno by 1<empty>
现在执行,这意味着\itemno
增量。仅此而已。恕我直言,这不是作者的本意。第二个例子类似。
锻炼:当你输入以下内容时会发生什么:
\newcount\itemno
\global\advance\itemno by 1%
\ifnum\itemno=4\the\itemno\fi
5
答案:\itemno
增量为15。
答案2
您需要一个逆向方程:不要放%
在线的末尾。
\global\advance\itemno by 1
\ifnum\itemno=4 \the\itemno\fi
否则,在分配完成之前\ifnum
寻找以 开头的数字的结尾时会扩展。1
此外,
\ifnum\itemno=4\the\itemno\fi
永远不会为真,因为如果\itemno
是 4,那么它相当于
\ifnum\itemno=44\fi
4
这当然是错误的。因此上面后面有空格。