我想要一个随机颜色存储在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
版本中调整代码。
目前,您只需在表达式周围使用括号即可。