我正在从辅助文件中读取一个数字(作为文本),我想\ifnum
对其进行数值测试()。我可以使用\setcounter
和来执行它\value
,但我真的不想创建一个计数器只是为了做一个糟糕的测试。有没有更简单的方法?
无论如何,使用 pgfmath 并不简单。
\documentclass{article}
\newcount\test
\newcounter{test}
\begin{document}
\def\temp{1}
\setcounter{test}{\temp}
\ifnum\value{test}>0 Yea!
\else Boo!
\fi
\test=\temp
\ifnum\test>0 Yea!
\else Boo!
\fi
\end{document}
回想起来,我的错误是显而易见的。在这样的表达中
\test=1
行尾终止添加数字和将“1”转换为计数。但
\test=\temp
行尾被用作宏名的结束符。我怀疑这个的最终扩展实际上是
\test=1 Boo!
这是合法的,但为时已晚。最简单的解决方案
\test=\temp\relax
用于\relax
强制完成表达式。
答案1
正如我在评论中指出的那样,您可以省去计数器。只需使用\def
作为参数即可。如果您需要更复杂的计算,则可以使用\numexpr
,如我的第二个示例所示。
\documentclass{article}
\begin{document}
\def\temp{1}
\def\X{2}
\ifnum\temp>0 Yea!
\else Boo!
\fi
\ifnum\numexpr\temp-\X\relax>0 Yea!
\else Boo!
\fi
\end{document}
为了跟进 OP 关于混合代币和计数器难度的评论,我将发布适用于该混合的 MWE:
\documentclass{article}
\newcounter{mycount}
\setcounter{mycount}{0}
\begin{document}
\def\temp{1}
\ifnum\value{mycount}>\temp Yea!
\else Boo!
\fi
\end{document}