在 LaTeX 中,如何声明一个新命令,该命令根据非整数测试的结果给出不同的输出?具体来说,我想要一个命令来将数字与 0.01 进行比较(这些数字来自不同的脚本):如果数字大于或等于 0.01,则打印p = 0.45
(或 p 的任何数字);如果数字小于 0.01,则打印p < 0.01
。
我已经查看过ifnumless
但etoolbox
它只需要整数和维度。
我该如何使用带小数点的数字来做到这一点?谢谢。
答案1
您几乎已经到达...如果您想比较实数,则必须比较维度,因此请使用\ifdimless
而不是\ifnumless
像以下示例中那样:
\documentclass{article}
\usepackage{etoolbox}
\newcommand{\checknum}[1]{%
\ifdimless{#1pt}{.01pt}{$p < 0.01$}{$p = #1$}%
}
\begin{document}
\checknum{0.45}
\checknum{0.01}
\checknum{0.005}
\end{document}
答案2
您可以使用l3fp
LaTeX3的模块:
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\fpcompare}{mmm}
{
\fp_compare:nTF { #1 } { #2 } { #3 }
}
\ExplSyntaxOff
\begin{document}
\newcommand{\checknum}[1]{%
\fpcompare{#1 < .01}{$p < 0.01$}{$p = #1$}%
}
\checknum{0.45}
\checknum{0.01}
\checknum{0.005}
\renewcommand{\checknum}[1]{%
\fpcompare{#1 >= .01}{$p = #1$}{$p < 0.01$}%
}
\checknum{0.45}
\checknum{0.01}
\checknum{0.005}
\end{document}
我举了两次例子,说明比较运算符可以是<
、=
、>
,也可以是<=
和>=
。结果是一样的,因为两个最后的参数互换了。