整数随机函数给出小数

整数随机函数给出小数

我想要一个随机颜色存储在mycolor,所以我写了

\color_set:nnn{mycolor}{RGB}{
  \int_rand:n{256}-1,\int_rand:n{256}-1,\int_rand:n{256}-1}

但是,它不能正常工作,所以我使用以下方法检查了一下

\color_show:n {mycolor}

奇怪的是,终端显示

The color mycolor has the properties:
>  model  =>  rgb
>  rgb  =>  103.99608 177.99608 239.99608.
<recently read> }
                 
l.49 \color_show:n {mycolor}

这清楚地表明了原因——因为 RGB 值不是整数!

然后我将每个数字包裹在\int_eval:n{}命令中,

\color_set:nnn{mycolor}{RGB}{
  \int_eval:n{\int_rand:n{256}-1},
  \int_eval:n{\int_rand:n{256}-1},
  \int_eval:n{\int_rand:n{256}-1}}

现在它可以正常工作了。不过,我想知道为什么整数随机数函数\int_random:n{}会给出十进制数。

答案1

我没有预料到表达式在这里,作为xcolor“父母”的方法相当严格。(事实上,l3color实施起来更加轻松,因为它没有要求这些值实际上是整数。)然后出现问题,因为我没有在内部支撑抓取的值,所以不是将整个传递的值除以 255,而是只除以 1。我将在下一个expl3版本中调整代码。

目前,您只需在表达式周围使用括号即可。

相关内容